5 # Commandline arguments
6 SRC_IP=$1 # source IP address of sender in VM A
7 DST_IP=$2 # destination IP address of receiver in VM A
8 FWD_REV_MAC=$3 # MAC address of forwarding receiver in VM B
9 FWD_SEND_MAC=$4 # MAC address of forwarding sender in VM B
10 RATE=$5 # packet rate in percentage
11 PKT_SIZE=$6 # packet size
16 if lsmod | grep "uio" &> /dev/null ; then
17 echo "uio module is loaded"
22 if lsmod | grep "igb_uio" &> /dev/null ; then
23 echo "igb_uio module is loaded"
25 insmod /dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
28 if lsmod | grep "rte_kni" &> /dev/null ; then
29 echo "rte_kni module is loaded"
31 insmod /dpdk/x86_64-native-linuxapp-gcc/kmod/rte_kni.ko
37 chmod 777 /sys/bus/pci/drivers/virtio-pci/*
38 chmod 777 /sys/bus/pci/drivers/igb_uio/*
41 add_interface_to_dpdk(){
42 interfaces=$(lspci |grep Eth |tail -n +2 |awk '{print $1}')
43 /dpdk/tools/dpdk-devbind.py --bind=igb_uio $interfaces
47 create_pktgen_config_lua()
49 touch /home/ubuntu/pktgen_latency.lua
50 lua_file="/home/ubuntu/pktgen_latency.lua"
54 cat << EOF > "/home/ubuntu/pktgen_latency.lua"
55 package.path = package.path ..";?.lua;test/?.lua;app/?.lua;"
58 function pktgen_config()
62 pktgen.set_ipaddr("0", "dst", "$DST_IP");
63 pktgen.set_ipaddr("0", "src", "$SRC_IP/24");
64 pktgen.set_mac("0", "$FWD_REV_MAC");
65 pktgen.set_ipaddr("1", "dst", "$SRC_IP");
66 pktgen.set_ipaddr("1", "src", "$DST_IP/24");
67 pktgen.set_mac("1", "$FWD_SEND_MAC");
68 pktgen.set(0, "rate", $RATE);
69 pktgen.set(0, "size", $PKT_SIZE);
70 pktgen.set_proto("all", "udp");
71 pktgen.latency("all","enable");
72 pktgen.latency("all","on");
84 touch /home/ubuntu/pktgen.exp
85 expect_file="/home/ubuntu/pktgen.exp"
86 chmod 777 $expect_file
89 cat << 'EOF' > "/home/ubuntu/pktgen.exp"
92 set blacklist [lindex $argv 0]
93 set log [lindex $argv 1]
96 spawn ./app/app/x86_64-native-linuxapp-gcc/pktgen -c 0x07 -n 4 -b $blacklist -- -P -m "1.0, 2.1" -f /home/ubuntu/pktgen_latency.lua
104 send "page latency\n"
106 timeout { send "\n" }
108 set result "${result}$expect_out(0,string)"
114 set count [expr $count-1]
121 set file [ open $log w ]
129 blacklist=$(lspci |grep Eth |awk '{print $1}'|head -1)
131 touch /home/ubuntu/result.log
132 result_log="/home/ubuntu/result.log"
133 sudo expect /home/ubuntu/pktgen.exp $blacklist $result_log
140 create_pktgen_config_lua
142 add_interface_to_dpdk