;; ;; 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 is provided for virtualized environments running on top of ; a soft-switch. Specifically, ingredients are Open vSwitch (openvswitch.org) ; and Qemu version 1.6.2. Note that since the currently supported version of ; Open vSwitch does not handle all the protocols that are used in the full BNG, ; PROX has to be recompiled to use different packet processing paths as a ; workaround. DPDK version 1.8.0 should be used with this configuration and it ; has to be compiled with COMBINE_LIBS enabled: ; make install T=$RTE_TARGET CONFIG_RTE_BUILD_COMBINE_LIBS=y CONFIG_RTE_LIBRTE_VHOST=y ; The following commands demonstrate how to set up Open vSwitch: ; git clone https://github.com/openvswitch/ovs.git ; cd ovs ; git checkout 5c62a855c7bb24424cbe7ec48ecf2f128db8b102 ; ./boot.sh && ./configure --with-dpdk=$RTE_SDK/$RTE_TARGET --disable-ssl && make ; This configuration is intended to be used in a VM with 4 virtual ports. This ; means that 4 virtual ports (with type dpdkvhost) and 4 physical ports (with ; type dpdk) will need to be added and connected through open-flow commands in ; Open vSwitch. After Open vSwitch has been set up on the host, PROX needs to be ; recompiled in the VM as follows before running it with this configuration: ; make BNG_QINQ=n MPLS_ROUTING=n ;; [eal options] -n=4 ; force number of memory channels no-output=no ; disable DPDK debug output [port 0] name=cpe0 mac=00:00:00:00:00:01 [port 1] name=inet0 mac=00:00:00:00:00:03 [port 2] name=cpe1 mac=00:00:00:00:00:02 [port 3] name=inet1 mac=00:00:00:00:00:04 [variables] $wk=5s0,6s0 [defaults] mempool size=16K [lua] lpm4 = dofile("ipv4.lua") user_table =dofile("user_table-65K-bng.lua") [global] start time=20 name=BNG (OVS) [core 0s0] mode=master ; IPv4 ;***************************************************************************************** ;##### Load Balancing receiving from CPE and from Internet #### [core 1s0] name=LB-cpe task=0 mode=nop rx ring=yes tx port=cpe0 task=1 mode=lbqinq rx port=cpe0 tx cores=(${wk})t0 proto=ipv4 [core 2s0] name=LB-inet task=0 mode=nop rx ring=yes tx port=inet0 task=1 mode=lbnetwork rx port=inet0 untag mpls=yes tx cores=(${wk})t1 proto=ipv4 [core 3s0] name=LB-cpe task=0 mode=nop rx ring=yes tx port=cpe1 task=1 mode=lbqinq rx port=cpe1 tx cores=(${wk})t0 proto=ipv4 [core 4s0] name=LB-inet task=0 mode=nop rx ring=yes tx port=inet1 task=1 mode=lbnetwork untag mpls=yes rx port=inet1 tx cores=(${wk})t1 proto=ipv4 ;***************************************************************************************** ;#### Workers receiving from LB ;#### Task 0: Upstream traffic ;#### Task 1: Downstream traffic [core $wk] name=Worker task=0 mode=qinqdecapv4 rx ring=yes tx cores from routing table=2s0,4s0 route table=lpm4 local ipv4=21.22.23.24 handle arp=no user table=user_table task=1 mode=qinqencapv4 rx ring=yes tx cores from cpe table=1s0,3s0 remap=cpe0,cpe1 user table=user_table