diff options
Diffstat (limited to 'nfvbenchvm/dib/elements/nfvbenchvm/static/etc')
4 files changed, 104 insertions, 0 deletions
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg new file mode 100644 index 0000000..7d46ed7 --- /dev/null +++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg @@ -0,0 +1,2 @@ +network: {config: disabled} + diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local new file mode 100644 index 0000000..114dd54 --- /dev/null +++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local @@ -0,0 +1,86 @@ +#!/bin/bash + +touch /var/lock/subsys/local + +# Waiting for cloud-init to generate $TESTPMD_CONF, retry 60 seconds +NFVBENCH_CONF=/etc/nfvbenchvm.conf +retry=30 +until [ $retry -eq 0 ]; do + if [ -f $NFVBENCH_CONF ]; then break; fi + retry=$[$retry-1] + sleep 2 +done +if [ ! -f $NFVBENCH_CONF ]; then + exit 0 +fi + +# Parse and obtain all configurations +echo "Generating configurations for forwarder..." +eval $(cat $NFVBENCH_CONF) +touch /nfvbench_configured.flag +NICS=`lspci -D | grep Ethernet | cut -d' ' -f1 | xargs` +PCI_ADDRESS_1=`echo $NICS | awk '{ print $1 }'` +PCI_ADDRESS_2=`echo $NICS | awk '{ print $2 }'` +CPU_CORES=`grep -c ^processor /proc/cpuinfo` +CPU_MASKS=0x`echo "obase=16; 2 ^ $CPU_CORES - 1" | bc` +WORKER_CORES=`expr $CPU_CORES - 1` + +# CPU isolation optimizations +echo 1 > /sys/bus/workqueue/devices/writeback/cpumask +echo 1 > /sys/devices/virtual/workqueue/cpumask +echo 1 > /proc/irq/default_smp_affinity +for irq in `ls /proc/irq/`; do + echo 1 > /proc/irq/$irq/smp_affinity +done +tuna -c $(seq -s, 1 1 $WORKER_CORES) --isolate + +# Configure the forwarder +if [ "$FORWARDER" == "testpmd" ]; then + echo "Configuring testpmd..." + if [ -z "`lsmod | grep igb_uio`" ]; then + modprobe uio + insmod /dpdk/igb_uio.ko + fi + # Binding ports to DPDK + /dpdk/dpdk-devbind.py -b igb_uio $PCI_ADDRESS_1 + /dpdk/dpdk-devbind.py -b igb_uio $PCI_ADDRESS_2 + screen -dmSL testpmd /dpdk/testpmd \ + -c $CPU_MASKS \ + -n 4 \ + -- \ + --burst=32 \ + --txd=256 \ + --rxd=1024 \ + --txqflags=0xf00 \ + --disable-hw-vlan \ + --eth-peer=0,$TG_MAC1 \ + --eth-peer=1,$TG_MAC2 \ + --forward-mode=mac \ + --nb-cores=$WORKER_CORES\ + --max-pkt-len 9000 +else + echo "Configuring vpp..." + cp /vpp/startup.conf /etc/vpp/startup.conf + cp /vpp/vm.conf /etc/vpp/vm.conf + + sed -i "s/{{PCI_ADDRESS_1}}/$PCI_ADDRESS_1/g" /etc/vpp/startup.conf + sed -i "s/{{PCI_ADDRESS_2}}/$PCI_ADDRESS_2/g" /etc/vpp/startup.conf + sed -i "s/{{WORKER_CORES}}/$WORKER_CORES/g" /etc/vpp/startup.conf + service vpp start + + INTFS=`vppctl show int | grep Ethernet | xargs` + INTF_1=`echo $INTFS | awk '{ print $1 }'` + INTF_2=`echo $INTFS | awk '{ print $4 }'` + sed -i "s/{{INTF_1}}/${INTF_1//\//\/}/g" /etc/vpp/vm.conf + sed -i "s/{{INTF_2}}/${INTF_2//\//\/}/g" /etc/vpp/vm.conf + sed -i "s/{{VNF_GATEWAY1_CIDR}}/${VNF_GATEWAY1_CIDR//\//\/}/g" /etc/vpp/vm.conf + sed -i "s/{{VNF_GATEWAY2_CIDR}}/${VNF_GATEWAY2_CIDR//\//\/}/g" /etc/vpp/vm.conf + sed -i "s/{{TG_MAC1}}/${TG_MAC1}/g" /etc/vpp/vm.conf + sed -i "s/{{TG_MAC2}}/${TG_MAC2}/g" /etc/vpp/vm.conf + sed -i "s/{{TG_NET1}}/${TG_NET1//\//\/}/g" /etc/vpp/vm.conf + sed -i "s/{{TG_NET2}}/${TG_NET2//\//\/}/g" /etc/vpp/vm.conf + sed -i "s/{{TG_GATEWAY1_IP}}/${TG_GATEWAY1_IP}/g" /etc/vpp/vm.conf + sed -i "s/{{TG_GATEWAY2_IP}}/${TG_GATEWAY2_IP}/g" /etc/vpp/vm.conf + + service vpp restart +fi diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/sysconfig/network-scripts/ifcfg-eth0 b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/sysconfig/network-scripts/ifcfg-eth0 new file mode 100644 index 0000000..c1ed6a7 --- /dev/null +++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/sysconfig/network-scripts/ifcfg-eth0 @@ -0,0 +1,8 @@ +DEVICE="eth0" +BOOTPROTO="dhcp" +ONBOOT="no" +TYPE="Ethernet" +USERCTL="yes" +PEERDNS="yes" +IPV6INIT="no" +PERSISTENT_DHCLIENT="0" diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/sysconfig/network-scripts/ifcfg-eth1 b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/sysconfig/network-scripts/ifcfg-eth1 new file mode 100644 index 0000000..c5cd837 --- /dev/null +++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/sysconfig/network-scripts/ifcfg-eth1 @@ -0,0 +1,8 @@ +DEVICE="eth1" +BOOTPROTO="dhcp" +ONBOOT="no" +TYPE="Ethernet" +USERCTL="yes" +PEERDNS="yes" +IPV6INIT="no" +PERSISTENT_DHCLIENT="0" |