;; ;; Copyright (c) 2010-2017 Intel Corporation ;; ;; Licensed under the Apache License, Version 2.0 (the "License"); ;; you may not use this file except in compliance with the License. ;; You may obtain a copy of the License at ;; ;; http://www.apache.org/licenses/LICENSE-2.0 ;; ;; Unless required by applicable law or agreed to in writing, software ;; distributed under the License is distributed on an "AS IS" BASIS, ;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ;; See the License for the specific language governing permissions and ;; limitations under the License. ;; ;; ; Compared to config/bng-4ports.cfg, this configuration sets up a BNG with QoS ; functionality. In total, an extra eight cores (four physical cores) are needed ; to run this configuration. Four cores are used for QoS, two cores are assigned ; with the task of classifying upstream packets and two cores are assigned with ; transmitting downstream packets. ;; [eal options] -n=4 ; force number of memory channels no-output=no ; disable DPDK debug output [port 0] name=cpe0 mac=hardware [port 1] name=inet0 mac=hardware [port 2] name=cpe1 mac=hardware [port 3] name=inet1 mac=hardware [variables] ;uncomment one of the following to change the number of workers ;$wk=7s0,7s0h; 2 workers ;$wk=7s0-8s0,7s0h-8s0h; 4 workers $wk=7s0-9s0,7s0h-9s0h; 6 workers ;$wk=7s0-10s0,7s0h-10s0h; 8 workers [defaults] mempool size=128K qinq tag=0xa888;0x0081 [lua] lpm4 = dofile("ipv4.lua") dscp_table = dofile("dscp.lua") user_table = dofile("user_table-65K-bng.lua") [global] start time=20 name=BNG + QoS [core 0s0] mode=master ; IPv4 ;***************************************************************************************** ;##### Load Balancing receiving from CPE and from Internet #### [core 1s0] name=LB-cpe task=0 mode=lbqinq rx ring=yes tx cores=(${wk})t0 proto=ipv4 tx cores=(${wk})t0p proto=arp drop=no [core 1s0h] name=LB-inet task=0 mode=lbnetwork rx port=inet0 untag mpls=yes tx cores=(${wk})t1 proto=ipv4 [core 2s0] name=LB-cpe task=0 mode=lbqinq rx ring=yes tx cores=(${wk})t0 proto=ipv4 tx cores=(${wk})t0p proto=arp drop=no [core 2s0h] name=LB-inet task=0 mode=lbnetwork untag mpls=yes rx port=inet1 tx cores=(${wk})t1 proto=ipv4 ;***************************************************************************************** ;#### Workers receiving from LB ;#### Task 0: QinQ decapsulation + gre encapsulation + routing ;#### Task 1: ARP ;#### Task 2: GRE depcapsulation + QinQ encapsulation + use learned mac [core $wk] name=Worker task=0 mode=qinqdecapv4 rx ring=yes tx ports from routing table=inet0,inet1 route table=lpm4 local ipv4=21.22.23.24 handle arp=yes drop=no user table=user_table task=1 mode=qinqencapv4 rx ring=yes tx cores from cpe table=3s0,4s0 remap=cpe0,cpe1 ;map packets going to cpe0 to 3s0 and cpe1 to 4s0 classify=yes dscp=dscp_table user table=user_table ;***************************************************************************************** ;#### Downstream QoS receiving from workers ;#### classification done by workers ;#### Downstream QoS = QoS core and TX core [core 3s0] name=txqos0 task=0 mode=qos rx ring=yes tx cores=3s0ht0 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table [core 3s0h] name=txnop0 task=0 mode=nop rx ring=yes tx port=cpe0 drop=no [core 4s0] name=txqos1 task=0 mode=qos rx ring=yes tx cores=4s0ht0 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table [core 4s0h] name=txnop1 task=0 mode=nop rx ring=yes tx port=cpe1 drop=no ;***************************************************************************************** ;#### upstream QoS receiving from CPE ;#### classification done by RX, QoS core ;#### upstream QoS = RX core (classify) + QoS core [core 5s0h] name=rxcl0 task=0 mode=classify rx port=cpe0 tx cores=5s0t0 dscp=dscp_table drop=no user table=user_table [core 5s0] name=rxqos0 task=0 mode=qos rx ring=yes tx cores=1s0t0 pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table [core 6s0h] name=rxcl1 task=0 mode=classify rx port=cpe1 tx cores=6s0t0 dscp=dscp_table drop=no user table=user_table [core 6s0] name=rxqos1 task=0 mode=qos rx ring=yes tx cores=2s0t0 pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table