sipcap/netmap/LINUX/scripts/linux-pktgen.sh
farrokhi ccdba9490b - add netmap-libpcap
- add netmap (FreeBSD header files need to be updated with this)
- move prototype perl scripts to prototype/ folder
- create basic structure for sipcap app (no code yet)
2014-07-10 17:04:13 +04:30

83 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
#set -x
function pgset()
{
local result
echo $1 > ${PGDEV}
result=$(cat $PGDEV | fgrep "Result: OK:")
if [ "$result" = "" ]; then
cat $PGDEV | fgrep "Result:"
fi
}
##################### Script configuration ######################
N="$1" # number of TX kthreads minus one
if [ -z "$1" ]; then
N=0
fi
NCPUS="7" # number of CPUs on your machine minus one
IF="enp1s0f1" # network interface to test
DST_IP="10.216.8.1" # destination IP address
DST_MAC="00:1b:21:80:e7:d9" # destination MAC address
PKT_SIZE="60" # packet size
PKT_COUNT="10000000" # number of packets to send
CLONE_SKB="10000" # how many times a sk_buff is recycled
# Load pktgen kernel module
modprobe pktgen
# Clean the configuration for all the CPU-kthread (from 0 to ${NCPUS})
IDX=$(seq 0 1 ${NCPUS})
for cpu in ${IDX}; do
PGDEV="/proc/net/pktgen/kpktgend_${cpu}"
echo "Removing all devices (${cpu})"
pgset "rem_device_all"
done
IDX=$(seq 0 1 ${N})
for cpu in ${IDX}; do
# kthread-device configuration
PGDEV="/proc/net/pktgen/kpktgend_${cpu}"
echo "Configuring $PGDEV"
echo "Adding ${IF}@${cpu}"
pgset "add_device ${IF}@${cpu}"
# Packets/mode configuration
PGDEV="/proc/net/pktgen/${IF}@${cpu}"
echo "Configuring $PGDEV"
pgset "count ${PKT_COUNT}"
pgset "clone_skb ${CLONE_SKB}"
pgset "pkt_size ${PKT_SIZE}"
pgset "delay 0"
pgset "dst $DST_IP"
pgset "dst_mac $DST_MAC"
pgset "flag QUEUE_MAP_CPU"
echo ""
done
# Run
PGDEV="/proc/net/pktgen/pgctrl"
echo "Running... Ctrl-C to stop"
pgset "start"
echo "Done."
# Show results
NUMS=""
for cpu in ${IDX}; do
TMP=$(cat /proc/net/pktgen/${IF}@${cpu} | grep -o "[0-9]\+pps" | grep -o "[0-9]\+")
echo "$cpu $TMP"
NUMS="${NUMS} ${TMP}"
done
echo "Total TX rate: $(echo $NUMS | tr ' ' '+' | bc)"