2015-05-21 18:17:19 +08:00
|
|
|
Sample and benchmark scripts for pktgen (packet generator)
|
|
|
|
==========================================================
|
|
|
|
This directory contains some pktgen sample and benchmark scripts, that
|
|
|
|
can easily be copied and adjusted for your own use-case.
|
|
|
|
|
2020-05-01 00:04:13 +08:00
|
|
|
General doc is located in kernel: Documentation/networking/pktgen.rst
|
2015-05-21 18:17:19 +08:00
|
|
|
|
|
|
|
Helper include files
|
|
|
|
====================
|
|
|
|
This directory contains two helper shell files, that can be "included"
|
|
|
|
by shell source'ing. Namely "functions.sh" and "parameters.sh".
|
|
|
|
|
|
|
|
Common parameters
|
|
|
|
-----------------
|
|
|
|
The parameters.sh file support easy and consistant parameter parsing
|
|
|
|
across the sample scripts. Usage example is printed on errors::
|
|
|
|
|
|
|
|
Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
|
|
|
|
-i : ($DEV) output interface/device (required)
|
|
|
|
-s : ($PKT_SIZE) packet size
|
2019-10-05 16:25:09 +08:00
|
|
|
-d : ($DEST_IP) destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
|
2015-05-21 18:17:19 +08:00
|
|
|
-m : ($DST_MAC) destination MAC-addr
|
2019-06-29 21:33:58 +08:00
|
|
|
-p : ($DST_PORT) destination PORT range (e.g. 433-444) is also allowed
|
2015-05-21 18:17:19 +08:00
|
|
|
-t : ($THREADS) threads to start
|
2017-06-16 00:07:22 +08:00
|
|
|
-f : ($F_THREAD) index of first thread (zero indexed CPU number)
|
2015-05-21 18:17:19 +08:00
|
|
|
-c : ($SKB_CLONE) SKB clones send before alloc new SKB
|
2017-06-16 00:07:21 +08:00
|
|
|
-n : ($COUNT) num messages to send per thread, 0 means indefinitely
|
2015-05-21 18:17:19 +08:00
|
|
|
-b : ($BURST) HW level bursting of SKBs
|
|
|
|
-v : ($VERBOSE) verbose
|
|
|
|
-x : ($DEBUG) debug
|
2021-03-11 18:32:53 +08:00
|
|
|
-6 : ($IP6) IPv6
|
2021-03-11 18:32:52 +08:00
|
|
|
-w : ($DELAY) Tx Delay value (ns)
|
2021-03-11 18:32:53 +08:00
|
|
|
-a : ($APPEND) Script will not reset generator's state, but will append its config
|
2015-05-21 18:17:19 +08:00
|
|
|
|
|
|
|
The global variable being set is also listed. E.g. the required
|
|
|
|
interface/device parameter "-i" sets variable $DEV.
|
|
|
|
|
2021-03-11 18:32:53 +08:00
|
|
|
"-a" parameter may be used to create different flows simultaneously.
|
|
|
|
In this mode script will keep the existing config, will append its settings.
|
|
|
|
In this mode you'll have to manually run traffic with "pg_ctrl start".
|
|
|
|
|
|
|
|
For example you may use:
|
|
|
|
|
|
|
|
source ./samples/pktgen/functions.sh
|
|
|
|
pg_ctrl reset
|
|
|
|
# add first device
|
|
|
|
./pktgen_sample06_numa_awared_queue_irq_affinity.sh -a -i ens1f0 -m 34:80:0d:a3:fc:c9 -t 8
|
|
|
|
# add second device
|
|
|
|
./pktgen_sample06_numa_awared_queue_irq_affinity.sh -a -i ens1f1 -m 34:80:0d:a3:fc:c9 -t 8
|
|
|
|
# run joint traffic on two devs
|
|
|
|
pg_ctrl start
|
|
|
|
|
2015-05-21 18:17:19 +08:00
|
|
|
Common functions
|
|
|
|
----------------
|
|
|
|
The functions.sh file provides; Three different shell functions for
|
|
|
|
configuring the different components of pktgen: pg_ctrl(), pg_thread()
|
|
|
|
and pg_set().
|
|
|
|
|
|
|
|
These functions correspond to pktgens different components.
|
|
|
|
* pg_ctrl() control "pgctrl" (/proc/net/pktgen/pgctrl)
|
|
|
|
* pg_thread() control the kernel threads and binding to devices
|
|
|
|
* pg_set() control setup of individual devices
|
|
|
|
|
|
|
|
See sample scripts for usage examples.
|