bd26dfbf6f92889e71df7f396f247b7daede98ca
[kvmfornfv.git] / ci / envs / setup_ovsdpdk.sh
1 #!/bin/bash
2
3 #############################################################################
4 #Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
5 #
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 ##############################################################################
11
12 source host-config
13 OVSLOGFILE="/usr/local/var/run/openvswitch/ovs-vswitchd.log"
14 HOME='/home/jenkins'
15 VSPERF="${HOME}/vswitchperf"
16
17 function install_ovsdpdk() {
18  #Installing ovs dpdk using vsperf environment
19  echo "Installing ovs dpdk using vsperf environment"
20  install_vsperf
21  setup_ovsdpdk
22 }
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"
28     exit 1
29  fi
30 }
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
35
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
40  kill -SIGTERM 39424
41
42  rm -f /usr/local/var/run/openvswitch/vhost-user*
43  rm -f /usr/local/etc/openvswitch/conf.db
44
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"
52     exit 1
53  fi
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"
57     exit 1
58  fi
59  #Start OVS
60  echo "Start OVS"
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
66  
67  echo "Setting Huge pages on Node0"
68  node0_pages=10
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}
72
73  echo "Setting Huge pages on Node1"
74  node1_pages=10
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}
78
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}"
83
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"
88     exit 1
89  fi
90  sleep 180
91  #Configure the bridge
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
99 }
100 install_ovsdpdk