-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Jesper Dangaard Brouer says: ==================== pktgen samples: new scripts and removing older samples This patchset is adding some pktgen sample scripts that I've been using for a while[1], and they seams to relevant for more people. Patchset also remove some of the older style pktgen samples. [1] https://github.com/netoptimizer/network-testing/tree/master/pktgen ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Showing
4 changed files
with
174 additions
and
131 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
#!/bin/bash | ||
# | ||
# Script example for many flows testing | ||
# | ||
# Number of simultaneous flows limited by variable $FLOWS | ||
# and number of packets per flow controlled by variable $FLOWLEN | ||
# | ||
basedir=`dirname $0` | ||
source ${basedir}/functions.sh | ||
root_check_run_with_sudo "$@" | ||
|
||
# Parameter parsing via include | ||
source ${basedir}/parameters.sh | ||
# Set some default params, if they didn't get set | ||
[ -z "$DEST_IP" ] && DEST_IP="198.18.0.42" | ||
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff" | ||
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" | ||
|
||
# NOTICE: Script specific settings | ||
# ======= | ||
# Limiting the number of concurrent flows ($FLOWS) | ||
# and also set how many packets each flow contains ($FLOWLEN) | ||
# | ||
[ -z "$FLOWS" ] && FLOWS="8000" | ||
[ -z "$FLOWLEN" ] && FLOWLEN="10" | ||
|
||
# Base Config | ||
DELAY="0" # Zero means max speed | ||
COUNT="0" # Zero means indefinitely | ||
|
||
if [[ -n "$BURST" ]]; then | ||
err 1 "Bursting not supported for this mode" | ||
fi | ||
|
||
# General cleanup everything since last run | ||
pg_ctrl "reset" | ||
|
||
# Threads are specified with parameter -t value in $THREADS | ||
for ((thread = 0; thread < $THREADS; thread++)); do | ||
dev=${DEV}@${thread} | ||
|
||
# Add remove all other devices and add_device $dev to thread | ||
pg_thread $thread "rem_device_all" | ||
pg_thread $thread "add_device" $dev | ||
|
||
# Base config | ||
pg_set $dev "flag QUEUE_MAP_CPU" | ||
pg_set $dev "count $COUNT" | ||
pg_set $dev "clone_skb $CLONE_SKB" | ||
pg_set $dev "pkt_size $PKT_SIZE" | ||
pg_set $dev "delay $DELAY" | ||
pg_set $dev "flag NO_TIMESTAMP" | ||
|
||
# Single destination | ||
pg_set $dev "dst_mac $DST_MAC" | ||
pg_set $dev "dst $DEST_IP" | ||
|
||
# Randomize source IP-addresses | ||
pg_set $dev "flag IPSRC_RND" | ||
pg_set $dev "src_min 198.18.0.0" | ||
pg_set $dev "src_max 198.19.255.255" | ||
|
||
# Limit number of flows (max 65535) | ||
pg_set $dev "flows $FLOWS" | ||
# | ||
# How many packets a flow will send, before flow "entry" is | ||
# re-generated/setup. | ||
pg_set $dev "flowlen $FLOWLEN" | ||
# | ||
# Flag FLOW_SEQ will cause $FLOWLEN packets from the same flow | ||
# being send back-to-back, before next flow is selected | ||
# incrementally. This helps lookup caches, and is more realistic. | ||
# | ||
pg_set $dev "flag FLOW_SEQ" | ||
|
||
done | ||
|
||
# Run if user hits control-c | ||
function print_result() { | ||
# Print results | ||
for ((thread = 0; thread < $THREADS; thread++)); do | ||
dev=${DEV}@${thread} | ||
echo "Device: $dev" | ||
cat /proc/net/pktgen/$dev | grep -A2 "Result:" | ||
done | ||
} | ||
# trap keyboard interrupt (Ctrl-C) | ||
trap true SIGINT | ||
|
||
echo "Running... ctrl^C to stop" >&2 | ||
pg_ctrl "start" | ||
|
||
print_result |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
#!/bin/bash | ||
# | ||
# Script will generate one flow per thread (-t N) | ||
# - Same destination IP | ||
# - Fake source IPs for each flow (fixed based on thread number) | ||
# | ||
# Useful for scale testing on receiver, to see whether silo'ing flows | ||
# works and scales. For optimal scalability (on receiver) each | ||
# separate-flow should not access shared variables/data. This script | ||
# helps magnify any of these scaling issues by overloading the receiver. | ||
# | ||
basedir=`dirname $0` | ||
source ${basedir}/functions.sh | ||
root_check_run_with_sudo "$@" | ||
|
||
# Parameter parsing via include | ||
source ${basedir}/parameters.sh | ||
# Set some default params, if they didn't get set | ||
[ -z "$DEST_IP" ] && DEST_IP="198.18.0.42" | ||
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff" | ||
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" | ||
[ -z "$BURST" ] && BURST=32 | ||
|
||
|
||
# Base Config | ||
DELAY="0" # Zero means max speed | ||
COUNT="0" # Zero means indefinitely | ||
|
||
# General cleanup everything since last run | ||
pg_ctrl "reset" | ||
|
||
# Threads are specified with parameter -t value in $THREADS | ||
for ((thread = 0; thread < $THREADS; thread++)); do | ||
dev=${DEV}@${thread} | ||
|
||
# Add remove all other devices and add_device $dev to thread | ||
pg_thread $thread "rem_device_all" | ||
pg_thread $thread "add_device" $dev | ||
|
||
# Base config | ||
pg_set $dev "flag QUEUE_MAP_CPU" | ||
pg_set $dev "count $COUNT" | ||
pg_set $dev "clone_skb $CLONE_SKB" | ||
pg_set $dev "pkt_size $PKT_SIZE" | ||
pg_set $dev "delay $DELAY" | ||
pg_set $dev "flag NO_TIMESTAMP" | ||
|
||
# Single destination | ||
pg_set $dev "dst_mac $DST_MAC" | ||
pg_set $dev "dst $DEST_IP" | ||
|
||
# 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" | ||
|
||
# Setup burst, for easy testing -b 0 disable bursting | ||
# (internally in pktgen default and minimum burst=1) | ||
if [[ ${BURST} -ne 0 ]]; then | ||
pg_set $dev "burst $BURST" | ||
else | ||
info "$dev: Not using burst" | ||
fi | ||
|
||
done | ||
|
||
# Run if user hits control-c | ||
function print_result() { | ||
# Print results | ||
for ((thread = 0; thread < $THREADS; thread++)); do | ||
dev=${DEV}@${thread} | ||
echo "Device: $dev" | ||
cat /proc/net/pktgen/$dev | grep -A2 "Result:" | ||
done | ||
} | ||
# trap keyboard interrupt (Ctrl-C) | ||
trap true SIGINT | ||
|
||
echo "Running... ctrl^C to stop" >&2 | ||
pg_ctrl "start" | ||
|
||
print_result |