2 ##############################################################################
3 # Copyright (c) 2017 ZTE corporation and others.
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
14 # Commandline arguments
15 SRC_IP=$1 # source IP address of sender in VM A
16 DST_IP=$2 # destination IP address of receiver in VM A
17 FWD_REV_MAC=$3 # MAC address of forwarding receiver in VM B
18 FWD_SEND_MAC=$4 # MAC address of forwarding sender in VM B
19 RATE=$5 # packet rate in percentage
20 PKT_SIZE=$6 # packet size
25 if lsmod | grep "uio" &> /dev/null ; then
26 echo "uio module is loaded"
31 if lsmod | grep "igb_uio" &> /dev/null ; then
32 echo "igb_uio module is loaded"
34 insmod /dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
37 if lsmod | grep "rte_kni" &> /dev/null ; then
38 echo "rte_kni module is loaded"
40 insmod /dpdk/x86_64-native-linuxapp-gcc/kmod/rte_kni.ko
46 chmod 777 /sys/bus/pci/drivers/virtio-pci/*
47 chmod 777 /sys/bus/pci/drivers/igb_uio/*
50 add_interface_to_dpdk(){
51 interfaces=$(lspci |grep Eth |tail -n +2 |awk '{print $1}')
52 /dpdk/tools/dpdk-devbind.py --bind=igb_uio $interfaces
56 create_pktgen_config_lua()
58 touch /home/ubuntu/pktgen_latency.lua
59 lua_file="/home/ubuntu/pktgen_latency.lua"
63 cat << EOF > "/home/ubuntu/pktgen_latency.lua"
64 package.path = package.path ..";?.lua;test/?.lua;app/?.lua;"
67 function pktgen_config()
71 pktgen.set_ipaddr("0", "dst", "$DST_IP");
72 pktgen.set_ipaddr("0", "src", "$SRC_IP/24");
73 pktgen.set_mac("0", "$FWD_REV_MAC");
74 pktgen.set_ipaddr("1", "dst", "$SRC_IP");
75 pktgen.set_ipaddr("1", "src", "$DST_IP/24");
76 pktgen.set_mac("1", "$FWD_SEND_MAC");
77 pktgen.set(0, "rate", $RATE);
78 pktgen.set(0, "size", $PKT_SIZE);
79 pktgen.set_proto("all", "udp");
80 pktgen.latency("all","enable");
81 pktgen.latency("all","on");
93 touch /home/ubuntu/pktgen.exp
94 expect_file="/home/ubuntu/pktgen.exp"
95 chmod 777 $expect_file
98 cat << 'EOF' > "/home/ubuntu/pktgen.exp"
101 set blacklist [lindex $argv 0]
102 set log [lindex $argv 1]
105 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
113 send "page latency\n"
115 timeout { send "\n" }
117 set result "${result}$expect_out(0,string)"
123 set count [expr $count-1]
130 set file [ open $log w ]
138 blacklist=$(lspci |grep Eth |awk '{print $1}'|head -1)
140 touch /home/ubuntu/result.log
141 result_log="/home/ubuntu/result.log"
142 sudo expect /home/ubuntu/pktgen.exp $blacklist $result_log
149 create_pktgen_config_lua
151 add_interface_to_dpdk