;; ;; 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. ;; ;; ; This configuration sets up a system that handles the same workload as ; config/bng-qos-4ports.cfg, but on 8 ports instead of 4 and on CPU socket 1 ; instead of socket 0. ;; [eal options] -n=6 ; force number of memory channels no-output=no ; disable DPDK debug output [port 0] name=cpe0 mac=00:00:01:00:00:01 tx desc=$txd promiscuous=$promiscuous [port 1] name=inet0 mac=00:00:01:00:00:02 rx desc=$rxd tx desc=$txd promiscuous=$promiscuous [port 2] name=cpe1 mac=00:00:01:00:00:03 tx desc=$txd promiscuous=$promiscuous [port 3] name=inet1 mac=00:00:01:00:00:04 tx desc=$txd rx desc=$rxd promiscuous=$promiscuous [port 4] name=cpe2 mac=00:00:02:00:00:01 tx desc=$txd rx desc=$rxd promiscuous=$promiscuous [port 5] name=inet2 mac=00:00:02:00:00:02 tx desc=$txd promiscuous=$promiscuous [port 6] name=cpe3 mac=00:00:02:00:00:03 tx desc=$txd promiscuous=$promiscuous [port 7] name=inet3 mac=00:00:02:00:00:04 rx desc=$rxd tx desc=$txd promiscuous=$promiscuous [variables] $wk=0s0h,15s0-20s0,7s0h-20s0h $lb_drop=no $wt_drop=no $rxd=256 $txd=256 $promiscuous=yes $mcs=128 $rs=1024 $tx1=21s0 $tx2=22s0 $tx3=23s0 $tx4=24s0 [defaults] mempool size=256K qinq tag=0xa888 [lua] lpm4 = dofile("ipv4-4ports.lua") dscp_table = dofile("dscp.lua") user_table = dofile("user_table-131K-bng.lua") [global] start time=20 name=BNG + QoS unique mempool per socket=yes mp rings=yes enable bypass=yes [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=$lb_drop memcache size=$mcs ring size=$rs [core 1s0h] name=LB-cpe task=0 mode=lbqinq rx ring=yes tx cores=(${wk})t0 proto=ipv4 tx cores=(${wk})t0p proto=arp drop=$lb_drop memcache size=$mcs ring size=$rs [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=$lb_drop memcache size=$mcs ring size=$rs [core 2s0h] name=LB-cpe task=0 mode=lbqinq rx ring=yes tx cores=(${wk})t0 proto=ipv4 tx cores=(${wk})t0p proto=arp drop=$lb_drop memcache size=$mcs ring size=$rs [core 3s0] name=LB-inet task=0 mode=lbnetwork rx port=inet0 untag mpls=yes tx cores=(${wk})t1 proto=ipv4 drop=$lb_drop memcache size=$mcs ring size=$rs [core 3s0h] name=LB-inet task=0 mode=lbnetwork rx port=inet1 untag mpls=yes tx cores=(${wk})t1 proto=ipv4 drop=$lb_drop memcache size=$mcs ring size=$rs [core 4s0] name=LB-inet task=0 mode=lbnetwork untag mpls=yes rx port=inet2 tx cores=(${wk})t1 proto=ipv4 drop=$lb_drop memcache size=$mcs ring size=$rs [core 4s0h] name=LB-inet task=0 mode=lbnetwork untag mpls=yes rx port=inet3 tx cores=(${wk})t1 proto=ipv4 drop=$lb_drop memcache size=$mcs ring size=$rs [core 5s0] name=classify1 task=0 mode=classify rx port=cpe0 tx cores=11s0 dscp=dscp_table pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table memcache size=$mcs [core 5s0h] name=classify2 task=0 mode=classify rx port=cpe1 tx cores=12s0 dscp=dscp_table pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table memcache size=$mcs [core 6s0] name=classify3 task=0 mode=classify rx port=cpe2 tx cores=13s0 dscp=dscp_table pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table memcache size=$mcs [core 6s0h] name=classify4 task=0 mode=classify rx port=cpe3 tx cores=14s0 dscp=dscp_table pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table memcache size=$mcs ;***************************************************************************************** ;#### 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,inet2,inet3 route table=lpm4 local ipv4=21.22.23.24 drop=$wt_drop handle arp=yes cpe table timeout ms=15000000 ctrl path polling frequency=10000 user table=user_table task=1 mode=qinqencapv4 rx ring=yes tx cores from cpe table=7s0,8s0,9s0,10s0 remap=cpe0,cpe1,cpe2,cpe3 ;map packets going to cpe0 to 3s0 and cpe1 to 4s0 classify=yes drop=$wt_drop ctrl path polling frequency=10000 user table=user_table dscp=dscp_table ring size=$rs ;***************************************************************************************** ;#### Downstream QoS receiving from workers ;#### classification done by workers ;#### Downstream QoS = QoS core and TX core [core 7s0] name=txqos0 task=0 mode=qos rx ring=yes ;tx port=cpe0 tx cores=$tx1 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table [core 8s0] name=txqos0 task=0 mode=qos rx ring=yes ;tx port=cpe1 tx cores=$tx2 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table [core 9s0] name=txqos2 task=0 mode=qos rx ring=yes ;tx port=cpe2 tx cores=$tx3 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table [core 10s0] name=txqos3 task=0 mode=qos rx ring=yes drop=no ;tx port=cpe3 tx cores=$tx4 pipe tc rate=125000 pipe tb rate=125000 user table=user_table ;***************************************************************************************** ;#### upstream QoS receiving from CPE ;#### classification done by RX, QoS core ;#### upstream QoS = RX core (classify) + QoS core [core 11s0] name=rxqos0 task=0 mode=qos ;rx port=cpe0 rx ring=yes tx cores=1s0 ;classify=yes ;dscp=dscp_table pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table [core 12s0] name=rxqos0 task=0 mode=qos ;rx port=cpe1 rx ring=yes ;classify=yes ;dscp=dscp_table tx cores=1s0h pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table [core 13s0] name=rxqos2 task=0 mode=qos ;rx port=cpe2 rx ring=yes tx cores=2s0 ;classify=yes ;dscp=dscp_table pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table [core 14s0] name=rxqos3 task=0 mode=qos ;rx port=cpe3 rx ring=yes tx cores=2s0h ;classify=yes ;dscp=dscp_table pipe tc rate=125000 pipe tb rate=125000 drop=no user table=user_table dscp=dscp_table [core $tx1] name=tx1 task=0 mode=read rx ring=yes tx port=cpe0 ring size=$rs drop=no [core $tx2] name=tx2 task=0 mode=read rx ring=yes tx port=cpe1 ring size=$rs drop=no [core $tx3] name=tx3 task=0 mode=read rx ring=yes tx port=cpe2 ring size=$rs drop=no [core $tx4] name=tx4 task=0 mode=read rx ring=yes tx port=cpe3 ring size=$rs drop=no