3 #############################################################################
4 #Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
13 OVSLOGFILE="/usr/local/var/run/openvswitch/ovs-vswitchd.log"
15 VSPERF="${HOME}/vswitchperf"
17 function install_ovsdpdk() {
18 #Installing ovs dpdk using vsperf environment
19 echo "Installing ovs dpdk using vsperf environment"
23 function install_vsperf() {
24 echo "Installing vsperf....."
25 ( cd $VSPERF/systems ; ./build_base_machine.sh )
26 if [ ${?} -ne 0 ]; then
27 echo "Execution of build_base_machine.sh failed"
31 function setup_ovsdpdk() {
32 sudo mkdir -p /usr/local/var/run/openvswitch
33 sudo mkdir -p /usr/local/etc/openvswitch
34 sudo modprobe openvswitch
36 #Kill the ovsswitch and ovsdbserver
37 cd $VSPERF/src/ovs/ovs
38 ps aux | grep 'ovsdb-server.pid' | awk '{print $2}' | head -1 | xargs kill -SIGTERM
39 ps aux | grep 'ovs-vswitchd.pid' | awk '{print $2}' | head -1 | xargs kill -SIGTERM
42 rm -f /usr/local/var/run/openvswitch/vhost-user*
43 rm -f /usr/local/etc/openvswitch/conf.db
45 #Start database server
46 echo "Start ovs database server"
47 export DB_SOCK=/usr/local/var/run/openvswitch/db.sock
48 cd $VSPERF/src/ovs/ovs/ovsdb
49 sudo ./ovsdb-tool create /usr/local/etc/openvswitch/conf.db $VSPERF/src/ovs/ovs/vswitchd/vswitch.ovsschema
50 if [ ${?} -ne 0 ] ; then
51 echo "Creation of db and schema files failed"
54 sudo ./ovsdb-server --remote=punix:$DB_SOCK --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach
55 if [ ${?} -ne 0 ] ; then
56 echo "Starting of DB server failed"
61 cd $VSPERF/src/ovs/ovs/utilities
62 sudo ./ovs-vsctl --no-wait init
63 sudo ./ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-lcore-mask=0xf
64 sudo ./ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem=1024
65 sudo ./ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
67 echo "Setting Huge pages on Node0"
69 node0_dir="/sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages"
70 node0_pages+=`cat $node0_dir`
71 echo ${node0_pages} > ${node0_dir}
73 echo "Setting Huge pages on Node1"
75 node1_dir="/sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages"
76 node1_pages+=`cat $node1_dir`
77 echo ${node1_pages} > ${node1_dir}
79 free_hp0=`cat /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/free_hugepages`
80 free_hp1=`cat /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/free_hugepages`
81 echo "Free Hugepages:${free_hp0}"
82 echo "Free_Hugepages:${free_hp1}"
84 cd $VSPERF/src/ovs/ovs/vswitchd
85 sudo ./ovs-vswitchd unix:$DB_SOCK --pidfile --detach --log-file=$OVSLOGFILE
86 if [ ${?} -ne 0 ] ; then
87 echo "ovs-vswitchd not started"
92 echo "configure OVS Bridge"
93 cd $VSPERF/src/ovs/ovs/utilities
94 sudo ./ovs-vsctl add-br ovsbr0 -- set bridge ovsbr0 datapath_type=netdev
95 sudo ./ovs-vsctl add-port ovsbr0 vhost-user1 -- set Interface vhost-user1 type=dpdkvhostuser
96 sudo ./ovs-vsctl add-port ovsbr0 vhost-user2 -- set Interface vhost-user2 type=dpdkvhostuser
97 sudo ./ovs-vsctl add-port ovsbr0 vhost-user3 -- set Interface vhost-user3 type=dpdkvhostuser
98 sudo ./ovs-vsctl add-port ovsbr0 vhost-user4 -- set Interface vhost-user4 type=dpdkvhostuser