Skip to content

Commit 6e32a74

Browse files
DanielTimLeedavem330
authored andcommitted
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 <[email protected]> Acked-by: Jesper Dangaard Brouer <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 226b96c commit 6e32a74

10 files changed

+95
-2
lines changed

samples/pktgen/README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ across the sample scripts. Usage example is printed on errors::
2020
-s : ($PKT_SIZE) packet size
2121
-d : ($DEST_IP) destination IP
2222
-m : ($DST_MAC) destination MAC-addr
23+
-p : ($DST_PORT) destination PORT range (e.g. 433-444) is also allowed
2324
-t : ($THREADS) threads to start
2425
-f : ($F_THREAD) index of first thread (zero indexed CPU number)
2526
-c : ($SKB_CLONE) SKB clones send before alloc new SKB

samples/pktgen/parameters.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ function usage() {
1010
echo " -s : (\$PKT_SIZE) packet size"
1111
echo " -d : (\$DEST_IP) destination IP"
1212
echo " -m : (\$DST_MAC) destination MAC-addr"
13+
echo " -p : (\$DST_PORT) destination PORT range (e.g. 433-444) is also allowed"
1314
echo " -t : (\$THREADS) threads to start"
1415
echo " -f : (\$F_THREAD) index of first thread (zero indexed CPU number)"
1516
echo " -c : (\$SKB_CLONE) SKB clones send before alloc new SKB"
@@ -23,7 +24,7 @@ function usage() {
2324

2425
## --- Parse command line arguments / parameters ---
2526
## echo "Commandline options:"
26-
while getopts "s:i:d:m:f:t:c:n:b:vxh6" option; do
27+
while getopts "s:i:d:m:p:f:t:c:n:b:vxh6" option; do
2728
case $option in
2829
i) # interface
2930
export DEV=$OPTARG
@@ -41,6 +42,10 @@ while getopts "s:i:d:m:f:t:c:n:b:vxh6" option; do
4142
export DST_MAC=$OPTARG
4243
info "Destination MAC set to: DST_MAC=$DST_MAC"
4344
;;
45+
p) # PORT
46+
export DST_PORT=$OPTARG
47+
info "Destination PORT set to: DST_PORT=$DST_PORT"
48+
;;
4449
f)
4550
export F_THREAD=$OPTARG
4651
info "Index of first thread (zero indexed CPU number): $F_THREAD"

samples/pktgen/pktgen_bench_xmit_mode_netif_receive.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ fi
4141
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
4242
[ -z "$BURST" ] && BURST=1024
4343
[ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely
44+
if [ -n "$DST_PORT" ]; then
45+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
46+
validate_ports $DST_MIN $DST_MAX
47+
fi
4448

4549
# Base Config
4650
DELAY="0" # Zero means max speed
@@ -69,6 +73,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
6973
pg_set $dev "dst_mac $DST_MAC"
7074
pg_set $dev "dst$IP6 $DEST_IP"
7175

76+
if [ -n "$DST_PORT" ]; then
77+
# Single destination port or random port range
78+
pg_set $dev "flag UDPDST_RND"
79+
pg_set $dev "udp_dst_min $DST_MIN"
80+
pg_set $dev "udp_dst_max $DST_MAX"
81+
fi
82+
7283
# Inject packet into RX path of stack
7384
pg_set $dev "xmit_mode netif_receive"
7485

samples/pktgen/pktgen_bench_xmit_mode_queue_xmit.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ if [[ -n "$BURST" ]]; then
2424
err 1 "Bursting not supported for this mode"
2525
fi
2626
[ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely
27+
if [ -n "$DST_PORT" ]; then
28+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
29+
validate_ports $DST_MIN $DST_MAX
30+
fi
2731

2832
# Base Config
2933
DELAY="0" # Zero means max speed
@@ -52,6 +56,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
5256
pg_set $dev "dst_mac $DST_MAC"
5357
pg_set $dev "dst$IP6 $DEST_IP"
5458

59+
if [ -n "$DST_PORT" ]; then
60+
# Single destination port or random port range
61+
pg_set $dev "flag UDPDST_RND"
62+
pg_set $dev "udp_dst_min $DST_MIN"
63+
pg_set $dev "udp_dst_max $DST_MAX"
64+
fi
65+
5566
# Inject packet into TX qdisc egress path of stack
5667
pg_set $dev "xmit_mode queue_xmit"
5768
done

samples/pktgen/pktgen_sample01_simple.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ fi
2222
# Example enforce param "-m" for dst_mac
2323
[ -z "$DST_MAC" ] && usage && err 2 "Must specify -m dst_mac"
2424
[ -z "$COUNT" ] && COUNT="100000" # Zero means indefinitely
25+
if [ -n "$DST_PORT" ]; then
26+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
27+
validate_ports $DST_MIN $DST_MAX
28+
fi
2529

2630
# Base Config
2731
DELAY="0" # Zero means max speed
@@ -59,6 +63,13 @@ pg_set $DEV "flag NO_TIMESTAMP"
5963
pg_set $DEV "dst_mac $DST_MAC"
6064
pg_set $DEV "dst$IP6 $DEST_IP"
6165

66+
if [ -n "$DST_PORT" ]; then
67+
# Single destination port or random port range
68+
pg_set $DEV "flag UDPDST_RND"
69+
pg_set $DEV "udp_dst_min $DST_MIN"
70+
pg_set $DEV "udp_dst_max $DST_MAX"
71+
fi
72+
6273
# Setup random UDP port src range
6374
pg_set $DEV "flag UDPSRC_RND"
6475
pg_set $DEV "udp_src_min $UDP_MIN"

samples/pktgen/pktgen_sample02_multiqueue.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ if [ -z "$DEST_IP" ]; then
2929
[ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
3030
fi
3131
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
32+
if [ -n "$DST_PORT" ]; then
33+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
34+
validate_ports $DST_MIN $DST_MAX
35+
fi
3236

3337
# General cleanup everything since last run
3438
pg_ctrl "reset"
@@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
6064
pg_set $dev "dst_mac $DST_MAC"
6165
pg_set $dev "dst$IP6 $DEST_IP"
6266

67+
if [ -n "$DST_PORT" ]; then
68+
# Single destination port or random port range
69+
pg_set $dev "flag UDPDST_RND"
70+
pg_set $dev "udp_dst_min $DST_MIN"
71+
pg_set $dev "udp_dst_max $DST_MAX"
72+
fi
73+
6374
# Setup random UDP port src range
6475
pg_set $dev "flag UDPSRC_RND"
6576
pg_set $dev "udp_src_min $UDP_MIN"

samples/pktgen/pktgen_sample03_burst_single_flow.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ fi
3333
[ -z "$BURST" ] && BURST=32
3434
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" # No need for clones when bursting
3535
[ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely
36+
if [ -n "$DST_PORT" ]; then
37+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
38+
validate_ports $DST_MIN $DST_MAX
39+
fi
3640

3741
# Base Config
3842
DELAY="0" # Zero means max speed
@@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
6064
pg_set $dev "dst_mac $DST_MAC"
6165
pg_set $dev "dst$IP6 $DEST_IP"
6266

67+
if [ -n "$DST_PORT" ]; then
68+
# Single destination port or random port range
69+
pg_set $dev "flag UDPDST_RND"
70+
pg_set $dev "udp_dst_min $DST_MIN"
71+
pg_set $dev "udp_dst_max $DST_MAX"
72+
fi
73+
6374
# Setup burst, for easy testing -b 0 disable bursting
6475
# (internally in pktgen default and minimum burst=1)
6576
if [[ ${BURST} -ne 0 ]]; then

samples/pktgen/pktgen_sample04_many_flows.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ source ${basedir}/parameters.sh
1717
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
1818
[ -z "$CLONE_SKB" ] && CLONE_SKB="0"
1919
[ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely
20+
if [ -n "$DST_PORT" ]; then
21+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
22+
validate_ports $DST_MIN $DST_MAX
23+
fi
2024

2125
# NOTICE: Script specific settings
2226
# =======
@@ -56,6 +60,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
5660
pg_set $dev "dst_mac $DST_MAC"
5761
pg_set $dev "dst $DEST_IP"
5862

63+
if [ -n "$DST_PORT" ]; then
64+
# Single destination port or random port range
65+
pg_set $dev "flag UDPDST_RND"
66+
pg_set $dev "udp_dst_min $DST_MIN"
67+
pg_set $dev "udp_dst_max $DST_MAX"
68+
fi
69+
5970
# Randomize source IP-addresses
6071
pg_set $dev "flag IPSRC_RND"
6172
pg_set $dev "src_min 198.18.0.0"

samples/pktgen/pktgen_sample05_flow_per_thread.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ source ${basedir}/parameters.sh
2222
[ -z "$CLONE_SKB" ] && CLONE_SKB="0"
2323
[ -z "$BURST" ] && BURST=32
2424
[ -z "$COUNT" ] && COUNT="0" # Zero means indefinitely
25-
25+
if [ -n "$DST_PORT" ]; then
26+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
27+
validate_ports $DST_MIN $DST_MAX
28+
fi
2629

2730
# Base Config
2831
DELAY="0" # Zero means max speed
@@ -50,6 +53,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
5053
pg_set $dev "dst_mac $DST_MAC"
5154
pg_set $dev "dst $DEST_IP"
5255

56+
if [ -n "$DST_PORT" ]; then
57+
# Single destination port or random port range
58+
pg_set $dev "flag UDPDST_RND"
59+
pg_set $dev "udp_dst_min $DST_MIN"
60+
pg_set $dev "udp_dst_max $DST_MAX"
61+
fi
62+
5363
# Setup source IP-addresses based on thread number
5464
pg_set $dev "src_min 198.18.$((thread+1)).1"
5565
pg_set $dev "src_max 198.18.$((thread+1)).1"

samples/pktgen/pktgen_sample06_numa_awared_queue_irq_affinity.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ if [ -z "$DEST_IP" ]; then
3535
[ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
3636
fi
3737
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
38+
if [ -n "$DST_PORT" ]; then
39+
read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
40+
validate_ports $DST_MIN $DST_MAX
41+
fi
3842

3943
# General cleanup everything since last run
4044
pg_ctrl "reset"
@@ -77,6 +81,13 @@ for ((i = 0; i < $THREADS; i++)); do
7781
pg_set $dev "dst_mac $DST_MAC"
7882
pg_set $dev "dst$IP6 $DEST_IP"
7983

84+
if [ -n "$DST_PORT" ]; then
85+
# Single destination port or random port range
86+
pg_set $dev "flag UDPDST_RND"
87+
pg_set $dev "udp_dst_min $DST_MIN"
88+
pg_set $dev "udp_dst_max $DST_MAX"
89+
fi
90+
8091
# Setup random UDP port src range
8192
pg_set $dev "flag UDPSRC_RND"
8293
pg_set $dev "udp_src_min $UDP_MIN"

0 commit comments

Comments
 (0)