# Copyright (c) 2016-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. # [lua] lpm4 = dofile("ipv4_bng.lua") user_table = dofile("gre_table.lua") dscp_table = dofile("dscp.lua") [eal options] -n=4 ; $sut_memory_channels no-output=no ; disable DPDK debug output [variables] $master =0 $core_lb_cpe0 =1 $core_inet0 =2 $core_lb_cpe1 =3 $core_inet1 =4 $core_workers =13-14,15-16,17-18,19-20 $core_qos_cpe0 =5 $core_tx_cpe0 =6 $core_qos_cpe1 =7 $core_tx_cpe1 =8 $core_tx_inet0 =9 $core_cpe0 =10 $core_tx_inet1 =11 $core_cpe1 =12 [port 0] name=cpe0 mac=hardware rx desc=2048 tx desc=2048 [port 1] name=inet0 mac=hardware rx desc=2048 tx desc=2048 [port 2] name=cpe1 mac=hardware rx desc=2048 tx desc=2048 [port 3] name=inet1 mac=hardware rx desc=2048 tx desc=2048 [defaults] mempool size=142K memcache size=512 qinq tag=0xa888 [global] start time=20 name=BNG + QoS [core $master] mode=master ; IPv4 ;***************************************************************************************** ;##### Load Balancing receiving from CPE and from Internet #### [core $core_lb_cpe0] name=LB-cpe task=0 mode=lbqinq rx ring=yes tx cores=(${core_workers})t0 proto=ipv4 tx cores=(${core_workers})t0 proto=arp drop=no [core $core_inet0] name=LB-inet task=0 mode=lbnetwork rx port=inet0 untag mpls=yes tx cores=(${core_workers})t1 proto=ipv4 drop=no [core $core_lb_cpe1] name=LB-cpe task=0 mode=lbqinq rx ring=yes tx cores=(${core_workers})t0 proto=ipv4 tx cores=(${core_workers})t0 proto=arp drop=no [core $core_inet1] name=LB-inet task=0 mode=lbnetwork rx port=inet1 untag mpls=yes tx cores=(${core_workers})t1 proto=ipv4 drop=no ;***************************************************************************************** ;#### Workers receiving from LB ;#### Task 0: QinQ decapsulation + gre encapsulation + routing ;#### Task 1: ARP ;#### Task 2: GRE depcapsulation + QinQ encapsulation + use learned mac [core $core_workers] name=Worker task=0 mode=qinqdecapv4 rx ring=yes tx cores from routing table=${core_tx_inet0},${core_tx_inet1} drop=no route table=lpm4 local ipv4=21.22.23.24 handle arp=yes user table=user_table fast path handle arp=yes task=1 mode=qinqencapv4 rx ring=yes tx cores from cpe table=${core_qos_cpe0},${core_qos_cpe1} remap=cpe0,cpe1 ;map packets going to cpe0 to 3s0 and cpe1 to 4s0 drop=no user table=user_table dscp=dscp_table classify=yes ;***************************************************************************************** ;#### Downstream QoS receiving from workers ;#### classification done by workers ;#### Downstream QoS = QoS core and TX core [core $core_qos_cpe0] name=txqos0 task=0 mode=qos rx ring=yes tx cores=(${core_tx_cpe0})t0 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table [core $core_tx_cpe0] name=txnop0 task=0 mode=l2fwd rx ring=yes dst mac=@@tester_p0 tx port=cpe0 drop=no [core $core_qos_cpe1] name=txqos1 task=0 mode=qos rx ring=yes tx cores=(${core_tx_cpe1})t0 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table [core $core_tx_cpe1] name=txnop1 task=0 mode=l2fwd rx ring=yes dst mac=@@tester_p2 tx port=cpe1 drop=no ;***************************************************************************************** ;#### upstream QoS receiving from CPE ;#### classification done by RX, QoS core ;#### upstream QoS = RX core (classify) + QoS core [core $core_tx_inet0] name=rxcl0 task=0 mode=l2fwd rx ring=yes dst mac=@@tester_p1 tx port=inet0 drop=no [core $core_cpe0] name=rxqos0 task=0 mode=qos rx port=cpe0 tx cores=(${core_lb_cpe0})t0 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table dscp=dscp_table classify=yes [core $core_tx_inet1] name=rxcl1 task=0 mode=l2fwd rx ring=yes dst mac=@@tester_p3 tx port=inet1 drop=no [core $core_cpe1] name=rxqos1 task=0 mode=qos rx port=cpe1 tx cores=(${core_lb_cpe1})t0 drop=no pipe tc rate=125000 pipe tb rate=125000 user table=user_table dscp=dscp_table classify=yes