Commit 6e32a74a authored by Daniel T. Lee's avatar Daniel T. Lee Committed by David S. Miller

samples: pktgen: allow to specify destination port

Currently, kernel pktgen has the feature to specify udp destination port
for sending packet. (e.g. pgset "udp_dst_min 9")

But on samples, each of the scripts doesn't have any option to achieve this.

This commit adds the DST_PORT option to specify the target port(s) in the script.

    -p : ($DST_PORT)  destination PORT range (e.g. 433-444) is also allowed
Signed-off-by: default avatarDaniel T. Lee <danieltimlee@gmail.com>
Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 226b96c2
...@@ -20,6 +20,7 @@ across the sample scripts. Usage example is printed on errors:: ...@@ -20,6 +20,7 @@ across the sample scripts. Usage example is printed on errors::
-s : ($PKT_SIZE) packet size -s : ($PKT_SIZE) packet size
-d : ($DEST_IP) destination IP -d : ($DEST_IP) destination IP
-m : ($DST_MAC) destination MAC-addr -m : ($DST_MAC) destination MAC-addr
-p : ($DST_PORT) destination PORT range (e.g. 433-444) is also allowed
-t : ($THREADS) threads to start -t : ($THREADS) threads to start
-f : ($F_THREAD) index of first thread (zero indexed CPU number) -f : ($F_THREAD) index of first thread (zero indexed CPU number)
-c : ($SKB_CLONE) SKB clones send before alloc new SKB -c : ($SKB_CLONE) SKB clones send before alloc new SKB
......
...@@ -10,6 +10,7 @@ function usage() { ...@@ -10,6 +10,7 @@ function usage() {
echo " -s : (\$PKT_SIZE) packet size" echo " -s : (\$PKT_SIZE) packet size"
echo " -d : (\$DEST_IP) destination IP" echo " -d : (\$DEST_IP) destination IP"
echo " -m : (\$DST_MAC) destination MAC-addr" echo " -m : (\$DST_MAC) destination MAC-addr"
echo " -p : (\$DST_PORT) destination PORT range (e.g. 433-444) is also allowed"
echo " -t : (\$THREADS) threads to start" echo " -t : (\$THREADS) threads to start"
echo " -f : (\$F_THREAD) index of first thread (zero indexed CPU number)" echo " -f : (\$F_THREAD) index of first thread (zero indexed CPU number)"
echo " -c : (\$SKB_CLONE) SKB clones send before alloc new SKB" echo " -c : (\$SKB_CLONE) SKB clones send before alloc new SKB"
...@@ -23,7 +24,7 @@ function usage() { ...@@ -23,7 +24,7 @@ function usage() {
## --- Parse command line arguments / parameters --- ## --- Parse command line arguments / parameters ---
## echo "Commandline options:" ## echo "Commandline options:"
while getopts "s:i:d:m:f:t:c:n:b:vxh6" option; do while getopts "s:i:d:m:p:f:t:c:n:b:vxh6" option; do
case $option in case $option in
i) # interface i) # interface
export DEV=$OPTARG export DEV=$OPTARG
...@@ -41,6 +42,10 @@ while getopts "s:i:d:m:f:t:c:n:b:vxh6" option; do ...@@ -41,6 +42,10 @@ while getopts "s:i:d:m:f:t:c:n:b:vxh6" option; do
export DST_MAC=$OPTARG export DST_MAC=$OPTARG
info "Destination MAC set to: DST_MAC=$DST_MAC" info "Destination MAC set to: DST_MAC=$DST_MAC"
;; ;;
p) # PORT
export DST_PORT=$OPTARG
info "Destination PORT set to: DST_PORT=$DST_PORT"
;;
f) f)
export F_THREAD=$OPTARG export F_THREAD=$OPTARG
info "Index of first thread (zero indexed CPU number): $F_THREAD" info "Index of first thread (zero indexed CPU number): $F_THREAD"
......
...@@ -41,6 +41,10 @@ fi ...@@ -41,6 +41,10 @@ fi
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff" [ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
[ -z "$BURST" ] && BURST=1024 [ -z "$BURST" ] && BURST=1024
[ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely [ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# Base Config # Base Config
DELAY="0" # Zero means max speed DELAY="0" # Zero means max speed
...@@ -69,6 +73,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do ...@@ -69,6 +73,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
pg_set $dev "dst_mac $DST_MAC" pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst$IP6 $DEST_IP" pg_set $dev "dst$IP6 $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $dev "flag UDPDST_RND"
pg_set $dev "udp_dst_min $DST_MIN"
pg_set $dev "udp_dst_max $DST_MAX"
fi
# Inject packet into RX path of stack # Inject packet into RX path of stack
pg_set $dev "xmit_mode netif_receive" pg_set $dev "xmit_mode netif_receive"
......
...@@ -24,6 +24,10 @@ if [[ -n "$BURST" ]]; then ...@@ -24,6 +24,10 @@ if [[ -n "$BURST" ]]; then
err 1 "Bursting not supported for this mode" err 1 "Bursting not supported for this mode"
fi fi
[ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely [ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# Base Config # Base Config
DELAY="0" # Zero means max speed DELAY="0" # Zero means max speed
...@@ -52,6 +56,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do ...@@ -52,6 +56,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
pg_set $dev "dst_mac $DST_MAC" pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst$IP6 $DEST_IP" pg_set $dev "dst$IP6 $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $dev "flag UDPDST_RND"
pg_set $dev "udp_dst_min $DST_MIN"
pg_set $dev "udp_dst_max $DST_MAX"
fi
# Inject packet into TX qdisc egress path of stack # Inject packet into TX qdisc egress path of stack
pg_set $dev "xmit_mode queue_xmit" pg_set $dev "xmit_mode queue_xmit"
done done
......
...@@ -22,6 +22,10 @@ fi ...@@ -22,6 +22,10 @@ fi
# Example enforce param "-m" for dst_mac # Example enforce param "-m" for dst_mac
[ -z "$DST_MAC" ] && usage && err 2 "Must specify -m dst_mac" [ -z "$DST_MAC" ] && usage && err 2 "Must specify -m dst_mac"
[ -z "$COUNT" ] && COUNT="100000" # Zero means indefinitely [ -z "$COUNT" ] && COUNT="100000" # Zero means indefinitely
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# Base Config # Base Config
DELAY="0" # Zero means max speed DELAY="0" # Zero means max speed
...@@ -59,6 +63,13 @@ pg_set $DEV "flag NO_TIMESTAMP" ...@@ -59,6 +63,13 @@ pg_set $DEV "flag NO_TIMESTAMP"
pg_set $DEV "dst_mac $DST_MAC" pg_set $DEV "dst_mac $DST_MAC"
pg_set $DEV "dst$IP6 $DEST_IP" pg_set $DEV "dst$IP6 $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $DEV "flag UDPDST_RND"
pg_set $DEV "udp_dst_min $DST_MIN"
pg_set $DEV "udp_dst_max $DST_MAX"
fi
# Setup random UDP port src range # Setup random UDP port src range
pg_set $DEV "flag UDPSRC_RND" pg_set $DEV "flag UDPSRC_RND"
pg_set $DEV "udp_src_min $UDP_MIN" pg_set $DEV "udp_src_min $UDP_MIN"
......
...@@ -29,6 +29,10 @@ if [ -z "$DEST_IP" ]; then ...@@ -29,6 +29,10 @@ if [ -z "$DEST_IP" ]; then
[ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1" [ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
fi fi
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff" [ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# General cleanup everything since last run # General cleanup everything since last run
pg_ctrl "reset" pg_ctrl "reset"
...@@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do ...@@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
pg_set $dev "dst_mac $DST_MAC" pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst$IP6 $DEST_IP" pg_set $dev "dst$IP6 $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $dev "flag UDPDST_RND"
pg_set $dev "udp_dst_min $DST_MIN"
pg_set $dev "udp_dst_max $DST_MAX"
fi
# Setup random UDP port src range # Setup random UDP port src range
pg_set $dev "flag UDPSRC_RND" pg_set $dev "flag UDPSRC_RND"
pg_set $dev "udp_src_min $UDP_MIN" pg_set $dev "udp_src_min $UDP_MIN"
......
...@@ -33,6 +33,10 @@ fi ...@@ -33,6 +33,10 @@ fi
[ -z "$BURST" ] && BURST=32 [ -z "$BURST" ] && BURST=32
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" # No need for clones when bursting [ -z "$CLONE_SKB" ] && CLONE_SKB="0" # No need for clones when bursting
[ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely [ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# Base Config # Base Config
DELAY="0" # Zero means max speed DELAY="0" # Zero means max speed
...@@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do ...@@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
pg_set $dev "dst_mac $DST_MAC" pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst$IP6 $DEST_IP" pg_set $dev "dst$IP6 $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $dev "flag UDPDST_RND"
pg_set $dev "udp_dst_min $DST_MIN"
pg_set $dev "udp_dst_max $DST_MAX"
fi
# Setup burst, for easy testing -b 0 disable bursting # Setup burst, for easy testing -b 0 disable bursting
# (internally in pktgen default and minimum burst=1) # (internally in pktgen default and minimum burst=1)
if [[ ${BURST} -ne 0 ]]; then if [[ ${BURST} -ne 0 ]]; then
......
...@@ -17,6 +17,10 @@ source ${basedir}/parameters.sh ...@@ -17,6 +17,10 @@ source ${basedir}/parameters.sh
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff" [ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" [ -z "$CLONE_SKB" ] && CLONE_SKB="0"
[ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely [ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# NOTICE: Script specific settings # NOTICE: Script specific settings
# ======= # =======
...@@ -56,6 +60,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do ...@@ -56,6 +60,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
pg_set $dev "dst_mac $DST_MAC" pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst $DEST_IP" pg_set $dev "dst $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $dev "flag UDPDST_RND"
pg_set $dev "udp_dst_min $DST_MIN"
pg_set $dev "udp_dst_max $DST_MAX"
fi
# Randomize source IP-addresses # Randomize source IP-addresses
pg_set $dev "flag IPSRC_RND" pg_set $dev "flag IPSRC_RND"
pg_set $dev "src_min 198.18.0.0" pg_set $dev "src_min 198.18.0.0"
......
...@@ -22,7 +22,10 @@ source ${basedir}/parameters.sh ...@@ -22,7 +22,10 @@ source ${basedir}/parameters.sh
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" [ -z "$CLONE_SKB" ] && CLONE_SKB="0"
[ -z "$BURST" ] && BURST=32 [ -z "$BURST" ] && BURST=32
[ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely [ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# Base Config # Base Config
DELAY="0" # Zero means max speed DELAY="0" # Zero means max speed
...@@ -50,6 +53,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do ...@@ -50,6 +53,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
pg_set $dev "dst_mac $DST_MAC" pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst $DEST_IP" pg_set $dev "dst $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $dev "flag UDPDST_RND"
pg_set $dev "udp_dst_min $DST_MIN"
pg_set $dev "udp_dst_max $DST_MAX"
fi
# Setup source IP-addresses based on thread number # Setup source IP-addresses based on thread number
pg_set $dev "src_min 198.18.$((thread+1)).1" pg_set $dev "src_min 198.18.$((thread+1)).1"
pg_set $dev "src_max 198.18.$((thread+1)).1" pg_set $dev "src_max 198.18.$((thread+1)).1"
......
...@@ -35,6 +35,10 @@ if [ -z "$DEST_IP" ]; then ...@@ -35,6 +35,10 @@ if [ -z "$DEST_IP" ]; then
[ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1" [ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
fi fi
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff" [ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
if [ -n "$DST_PORT" ]; then
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
validate_ports $DST_MIN $DST_MAX
fi
# General cleanup everything since last run # General cleanup everything since last run
pg_ctrl "reset" pg_ctrl "reset"
...@@ -77,6 +81,13 @@ for ((i = 0; i < $THREADS; i++)); do ...@@ -77,6 +81,13 @@ for ((i = 0; i < $THREADS; i++)); do
pg_set $dev "dst_mac $DST_MAC" pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst$IP6 $DEST_IP" pg_set $dev "dst$IP6 $DEST_IP"
if [ -n "$DST_PORT" ]; then
# Single destination port or random port range
pg_set $dev "flag UDPDST_RND"
pg_set $dev "udp_dst_min $DST_MIN"
pg_set $dev "udp_dst_max $DST_MAX"
fi
# Setup random UDP port src range # Setup random UDP port src range
pg_set $dev "flag UDPSRC_RND" pg_set $dev "flag UDPSRC_RND"
pg_set $dev "udp_src_min $UDP_MIN" pg_set $dev "udp_src_min $UDP_MIN"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment