;;
;; 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.
;;

[eal options]
-n=4 ; force number of memory channels
no-output=no ; disable DPDK debug output

[port 0]
name=if0
mac=hardware
[port 1]
name=inet0
mac=hardware
[port 2]
name=if1
mac=hardware
[port 3]
name=inet1
mac=hardware
[port 4]
name=if2
mac=hardware
[port 5]
name=inet2
mac=hardware
[port 6]
name=if3
mac=hardware
[port 7]
name=inet3
mac=hardware
[lua]
lpm4 = dofile("ipv4-2.lua")
dscp_table = dofile("dscp2.lua")
cpe_table = dofile("cpe_table.lua")
acl_table = dofile("rules-2.lua")
user_table = dofile("user_table-pe.lua")
[defaults]
mempool size=65K
[global]
start time=5
name=PE
cpe table map=if0,if1,if2,if3

[variables]
$wkd=5s1-6s1,5s1h-6s1h; 4 workers
$wku=7s1-9s1,7s1h-9s1h; 6 workers
;$wkd=5s1-6s1,5s1h-6s1h; 6 workers
;$wku=7s1-9s1,7s1h-9s1h; 10 workers
[core 0s1]
task=0
mode=master
tx cores=(${wku})t3m

[core 1s1]
name=LB-inet0
task=0
mode=lbnetwork
rx port=inet0
untag mpls=yes
tx cores=(${wkd})t0 proto=ipv4

task=1
mode=lbnetwork
rx port=inet2
untag mpls=yes
tx cores=(${wkd})t0 proto=ipv4

[core 1s1h]
name=LB-inet1
task=0
mode=lbnetwork
untag mpls=yes
rx port=inet1
tx cores=(${wkd})t0 proto=ipv4

task=1
mode=lbnetwork
untag mpls=yes
rx port=inet3
tx cores=(${wkd})t0 proto=ipv4

[core 2s1]
name=LB-c0
task=0
mode=lbnetwork
rx port=if0
mempool size=16K
untag mpls=no
tx cores=(${wku})t0 proto=ipv4

task=1
mode=lbnetwork
rx port=if2
mempool size=16K
untag mpls=no
tx cores=(${wku})t0 proto=ipv4

[core 2s1h]
name=LB-c1
task=0
mode=lbnetwork
mempool size=16K
untag mpls=no
rx port=if1
tx cores=(${wku})t0 proto=ipv4

task=1
mode=lbnetwork
mempool size=16K
untag mpls=no
rx port=if3
tx cores=(${wku})t0 proto=ipv4

[core $wkd]
name=W-down
task=0
mode=qinqencapv4
sub mode=pe
rx ring=yes
tx cores from cpe table=3s1,4s1,3s1h,4s1h remap=if0,if1,if2,if3
user table=user_table
cpe table=cpe_table
classify=yes
dscp=dscp_table

[core $wku]
name=W-up
task=0
mode=acl
rx ring=yes
rules=acl_table
tx cores=${self}t1
max rules=32768

task=1
mode=police
sub mode=trtcm
police action=yellow io=green,green
police action=drop io=green,yellow
police action=drop io=green,red
police action=drop io=yellow,yellow
police action=drop io=yellow,red
police action=drop io=red,red
cir=4000000000
pir=4000000000
cbs=20480
pbs=20480
classify=yes
rx ring=yes
tx cores=${self}t2
users=256
mark=yes
user table=user_table

task=2
mode=untag
ether type=0xa888
rx ring=yes
tx cores=${self}t3

task=3
mode=routing
add mpls=yes
rx ring=yes
tx ports from routing table=inet0,inet1,inet2,inet3
route table=lpm4
mark=yes
mark green=1
mark yellow=2
mark red=3

[core 3s1]
name=qos1
task=0
rx ring=yes
mode=qos
tx port=if0
pipes=256
pipe tb rate=6250000
pipe tc rate=6250000
drop=no
user table=user_table

[core 4s1]
name=qos1
rx ring=yes
task=0
mode=qos
tx port=if1
pipes=256
pipe tb rate=6250000
pipe tc rate=6250000
drop=no
user table=user_table

[core 3s1h]
name=qos1
task=0
rx ring=yes
mode=qos
tx port=if2
pipes=256
pipe tb rate=6250000
pipe tc rate=6250000
drop=no
user table=user_table

[core 4s1h]
name=qos1
rx ring=yes
task=0
mode=qos
tx port=if3
pipes=256
pipe tb rate=6250000
pipe tc rate=6250000
drop=no
user table=user_table