samples/pktgen: Add sample scripts for pktgen facility
These are Robert Olsson's samples which used to be available from <ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/examples/> but currently are not. Change the documentation to refer to these consistently as 'sample scripts', matching the directory name used here. Cc: Robert Olsson <robert@herjulf.se> Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
ca5b542cce
Коммит
7c95a9d962
|
@ -92,8 +92,8 @@ Result: OK: 13101142(c12220741+d880401) usec, 10000000 (60byte,0frags)
|
|||
|
||||
Configuring threads and devices
|
||||
================================
|
||||
This is done via the /proc interface, and most easily done via pgset in
|
||||
the scripts.
|
||||
This is done via the /proc interface, and most easily done via pgset
|
||||
as defined in the sample scripts.
|
||||
|
||||
Examples:
|
||||
|
||||
|
@ -192,11 +192,11 @@ Examples:
|
|||
pgset "rate 300M" set rate to 300 Mb/s
|
||||
pgset "ratep 1000000" set rate to 1Mpps
|
||||
|
||||
Example scripts
|
||||
===============
|
||||
Sample scripts
|
||||
==============
|
||||
|
||||
A collection of small tutorial scripts for pktgen is in the examples
|
||||
directory:
|
||||
A collection of small tutorial scripts for pktgen is in the
|
||||
samples/pktgen directory:
|
||||
|
||||
pktgen.conf-1-1 # 1 CPU 1 dev
|
||||
pktgen.conf-1-2 # 1 CPU 2 dev
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
|
||||
# device config
|
||||
# delay 0 means maximum speed.
|
||||
|
||||
CLONE_SKB="clone_skb 1000000"
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 60"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst 10.10.11.2"
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth1
|
|
@ -0,0 +1,74 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
|
||||
# device config
|
||||
# delay 0
|
||||
# We need to do alloc for every skb since we cannot clone here.
|
||||
|
||||
CLONE_SKB="clone_skb 0"
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 60"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
# Random address with in the min-max range
|
||||
pgset "flag IPDST_RND"
|
||||
pgset "dst_min 10.0.0.0"
|
||||
pgset "dst_max 10.255.255.255"
|
||||
|
||||
# 8k Concurrent flows at 4 pkts
|
||||
pgset "flows 8192"
|
||||
pgset "flowlen 4"
|
||||
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth1
|
|
@ -0,0 +1,67 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.
|
||||
# IPv6. Note increase in minimal packet length
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
|
||||
# device config
|
||||
# delay 0
|
||||
|
||||
CLONE_SKB="clone_skb 1000000"
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 66"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst6 fec0::1"
|
||||
pgset "src6 fec0::2"
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth1
|
|
@ -0,0 +1,70 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.
|
||||
# IPv6. Note increase in minimal packet length
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
|
||||
# device config
|
||||
# delay 0 means maximum speed.
|
||||
|
||||
# We need to do alloc for every skb since we cannot clone here.
|
||||
CLONE_SKB="clone_skb 0"
|
||||
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 66"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst6_min fec0::1"
|
||||
pgset "dst6_max fec0::FFFF:FFFF"
|
||||
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth1
|
|
@ -0,0 +1,71 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
|
||||
# device config
|
||||
# delay 0
|
||||
|
||||
# We need to do alloc for every skb since we cannot clone here.
|
||||
|
||||
CLONE_SKB="clone_skb 0"
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 60"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
# Random address with in the min-max range
|
||||
pgset "flag IPDST_RND"
|
||||
pgset "dst_min 10.0.0.0"
|
||||
pgset "dst_max 10.255.255.255"
|
||||
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth1
|
|
@ -0,0 +1,76 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# One CPU means one thread. One CPU exammple. We add eth1, eth2 respectivly.
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Adding eth2"
|
||||
pgset "add_device eth2"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
|
||||
# device config
|
||||
# delay 0 means maximum speed.
|
||||
|
||||
CLONE_SKB="clone_skb 1000000"
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 60"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst 10.10.11.2"
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth2
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst 192.168.2.2"
|
||||
pgset "dst_mac 00:04:23:08:91:de"
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth[1,2]
|
|
@ -0,0 +1,72 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
# We need to remove old config since we dont use this thread. We can only
|
||||
# one NIC on one CPU due to affinity reasons.
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_1
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
|
||||
# device config
|
||||
# delay 0 means maximum speed.
|
||||
|
||||
CLONE_SKB="clone_skb 1000000"
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 60"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst 10.10.11.2"
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth1
|
|
@ -0,0 +1,82 @@
|
|||
#! /bin/sh
|
||||
|
||||
#modprobe pktgen
|
||||
|
||||
|
||||
function pgset() {
|
||||
local result
|
||||
|
||||
echo $1 > $PGDEV
|
||||
|
||||
result=`cat $PGDEV | fgrep "Result: OK:"`
|
||||
if [ "$result" = "" ]; then
|
||||
cat $PGDEV | fgrep Result:
|
||||
fi
|
||||
}
|
||||
|
||||
function pg() {
|
||||
echo inject > $PGDEV
|
||||
cat $PGDEV
|
||||
}
|
||||
|
||||
# Config Start Here -----------------------------------------------------------
|
||||
|
||||
|
||||
# thread config
|
||||
# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_0
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth1"
|
||||
pgset "add_device eth1"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
PGDEV=/proc/net/pktgen/kpktgend_1
|
||||
echo "Removing all devices"
|
||||
pgset "rem_device_all"
|
||||
echo "Adding eth2"
|
||||
pgset "add_device eth2"
|
||||
echo "Setting max_before_softirq 10000"
|
||||
pgset "max_before_softirq 10000"
|
||||
|
||||
|
||||
# device config
|
||||
# delay 0 means maximum speed.
|
||||
|
||||
CLONE_SKB="clone_skb 1000000"
|
||||
# NIC adds 4 bytes CRC
|
||||
PKT_SIZE="pkt_size 60"
|
||||
|
||||
# COUNT 0 means forever
|
||||
#COUNT="count 0"
|
||||
COUNT="count 10000000"
|
||||
DELAY="delay 0"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth1
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst 10.10.11.2"
|
||||
pgset "dst_mac 00:04:23:08:91:dc"
|
||||
|
||||
PGDEV=/proc/net/pktgen/eth2
|
||||
echo "Configuring $PGDEV"
|
||||
pgset "$COUNT"
|
||||
pgset "$CLONE_SKB"
|
||||
pgset "$PKT_SIZE"
|
||||
pgset "$DELAY"
|
||||
pgset "dst 192.168.2.2"
|
||||
pgset "dst_mac 00:04:23:08:91:de"
|
||||
|
||||
# Time to run
|
||||
PGDEV=/proc/net/pktgen/pgctrl
|
||||
|
||||
echo "Running... ctrl^C to stop"
|
||||
pgset "start"
|
||||
echo "Done"
|
||||
|
||||
# Result can be vieved in /proc/net/pktgen/eth[1,2]
|
Загрузка…
Ссылка в новой задаче