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: Daniel T. Lee <danieltimlee@gmail.com> Acked-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
226b96c25d
commit
6e32a74a6f
@ -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() {
|
|||||||
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() {
|
|||||||
|
|
||||||
## --- 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
|
|||||||
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
|
|||||||
[ -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
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
|||||||
# 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"
|
|||||||
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
|
|||||||
[ -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
|
|||||||
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
|
|||||||
[ -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
|
|||||||
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
|
|||||||
[ -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
|
|||||||
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
|
|||||||
[ -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
|
|||||||
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
|
|||||||
[ -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
|
|||||||
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"
|
||||||
|
Loading…
Reference in New Issue
Block a user