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
|
||||
-d : ($DEST_IP) destination IP
|
||||
-m : ($DST_MAC) destination MAC-addr
|
||||
-p : ($DST_PORT) destination PORT range (e.g. 433-444) is also allowed
|
||||
-t : ($THREADS) threads to start
|
||||
-f : ($F_THREAD) index of first thread (zero indexed CPU number)
|
||||
-c : ($SKB_CLONE) SKB clones send before alloc new SKB
|
||||
|
|
|
@ -10,6 +10,7 @@ function usage() {
|
|||
echo " -s : (\$PKT_SIZE) packet size"
|
||||
echo " -d : (\$DEST_IP) destination IP"
|
||||
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 " -f : (\$F_THREAD) index of first thread (zero indexed CPU number)"
|
||||
echo " -c : (\$SKB_CLONE) SKB clones send before alloc new SKB"
|
||||
|
@ -23,7 +24,7 @@ function usage() {
|
|||
|
||||
## --- Parse command line arguments / parameters ---
|
||||
## 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
|
||||
i) # interface
|
||||
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
|
||||
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)
|
||||
export F_THREAD=$OPTARG
|
||||
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 "$BURST" ] && BURST=1024
|
||||
[ -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
|
||||
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$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
|
||||
pg_set $dev "xmit_mode netif_receive"
|
||||
|
||||
|
|
|
@ -24,6 +24,10 @@ if [[ -n "$BURST" ]]; then
|
|||
err 1 "Bursting not supported for this mode"
|
||||
fi
|
||||
[ -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
|
||||
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$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
|
||||
pg_set $dev "xmit_mode queue_xmit"
|
||||
done
|
||||
|
|
|
@ -22,6 +22,10 @@ fi
|
|||
# Example enforce param "-m" for dst_mac
|
||||
[ -z "$DST_MAC" ] && usage && err 2 "Must specify -m dst_mac"
|
||||
[ -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
|
||||
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$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
|
||||
pg_set $DEV "flag UDPSRC_RND"
|
||||
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"
|
||||
fi
|
||||
[ -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
|
||||
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$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
|
||||
pg_set $dev "flag UDPSRC_RND"
|
||||
pg_set $dev "udp_src_min $UDP_MIN"
|
||||
|
|
|
@ -33,6 +33,10 @@ fi
|
|||
[ -z "$BURST" ] && BURST=32
|
||||
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" # No need for clones when bursting
|
||||
[ -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
|
||||
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$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
|
||||
# (internally in pktgen default and minimum burst=1)
|
||||
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 "$CLONE_SKB" ] && CLONE_SKB="0"
|
||||
[ -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
|
||||
# =======
|
||||
|
@ -56,6 +60,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
|
|||
pg_set $dev "dst_mac $DST_MAC"
|
||||
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
|
||||
pg_set $dev "flag IPSRC_RND"
|
||||
pg_set $dev "src_min 198.18.0.0"
|
||||
|
|
|
@ -22,7 +22,10 @@ source ${basedir}/parameters.sh
|
|||
[ -z "$CLONE_SKB" ] && CLONE_SKB="0"
|
||||
[ -z "$BURST" ] && BURST=32
|
||||
[ -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
|
||||
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 $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
|
||||
pg_set $dev "src_min 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"
|
||||
fi
|
||||
[ -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
|
||||
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$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
|
||||
pg_set $dev "flag UDPSRC_RND"
|
||||
pg_set $dev "udp_src_min $UDP_MIN"
|
||||
|
|
Loading…
Reference in New Issue