2015-05-21 13:17:19 +03: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-04-30 19:04:13 +03:00
General doc is located in kernel: Documentation/networking/pktgen.rst
2015-05-21 13:17:19 +03: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 11:25:09 +03:00
-d : ($DEST_IP) destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
2015-05-21 13:17:19 +03:00
-m : ($DST_MAC) destination MAC-addr
2019-06-29 16:33:58 +03:00
-p : ($DST_PORT) destination PORT range (e.g. 433-444) is also allowed
2015-05-21 13:17:19 +03:00
-t : ($THREADS) threads to start
2017-06-15 19:07:22 +03:00
-f : ($F_THREAD) index of first thread (zero indexed CPU number)
2015-05-21 13:17:19 +03:00
-c : ($SKB_CLONE) SKB clones send before alloc new SKB
2017-06-15 19:07:21 +03:00
-n : ($COUNT) num messages to send per thread, 0 means indefinitely
2015-05-21 13:17:19 +03:00
-b : ($BURST) HW level bursting of SKBs
-v : ($VERBOSE) verbose
-x : ($DEBUG) debug
2021-03-11 13:32:53 +03:00
-6 : ($IP6) IPv6
2021-03-11 13:32:52 +03:00
-w : ($DELAY) Tx Delay value (ns)
2021-03-11 13:32:53 +03:00
-a : ($APPEND) Script will not reset generator's state, but will append its config
2015-05-21 13:17:19 +03:00
The global variable being set is also listed. E.g. the required
interface/device parameter "-i" sets variable $DEV.
2021-03-11 13:32:53 +03: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 13:17:19 +03: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.