linux/samples/pktgen/README.rst
<<
>>
Prefs
   1Sample and benchmark scripts for pktgen (packet generator)
   2==========================================================
   3This directory contains some pktgen sample and benchmark scripts, that
   4can easily be copied and adjusted for your own use-case.
   5
   6General doc is located in kernel: Documentation/networking/pktgen.rst
   7
   8Helper include files
   9====================
  10This directory contains two helper shell files, that can be "included"
  11by shell source'ing.  Namely "functions.sh" and "parameters.sh".
  12
  13Common parameters
  14-----------------
  15The parameters.sh file support easy and consistant parameter parsing
  16across the sample scripts.  Usage example is printed on errors::
  17
  18 Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
  19  -i : ($DEV)       output interface/device (required)
  20  -s : ($PKT_SIZE)  packet size
  21  -d : ($DEST_IP)   destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
  22  -m : ($DST_MAC)   destination MAC-addr
  23  -p : ($DST_PORT)  destination PORT range (e.g. 433-444) is also allowed
  24  -t : ($THREADS)   threads to start
  25  -f : ($F_THREAD)  index of first thread (zero indexed CPU number)
  26  -c : ($SKB_CLONE) SKB clones send before alloc new SKB
  27  -n : ($COUNT)     num messages to send per thread, 0 means indefinitely
  28  -b : ($BURST)     HW level bursting of SKBs
  29  -v : ($VERBOSE)   verbose
  30  -x : ($DEBUG)     debug
  31  -6 : ($IP6)       IPv6
  32  -w : ($DELAY)     Tx Delay value (ns)
  33  -a : ($APPEND)    Script will not reset generator's state, but will append its config
  34
  35The global variable being set is also listed.  E.g. the required
  36interface/device parameter "-i" sets variable $DEV.
  37
  38"-a" parameter may be used to create different flows simultaneously.
  39In this mode script will keep the existing config, will append its settings.
  40In this mode you'll have to manually run traffic with "pg_ctrl start".
  41
  42For example you may use:
  43
  44    source ./samples/pktgen/functions.sh
  45    pg_ctrl reset
  46    # add first device
  47    ./pktgen_sample06_numa_awared_queue_irq_affinity.sh -a -i ens1f0 -m 34:80:0d:a3:fc:c9 -t 8
  48    # add second device
  49    ./pktgen_sample06_numa_awared_queue_irq_affinity.sh -a -i ens1f1 -m 34:80:0d:a3:fc:c9 -t 8
  50    # run joint traffic on two devs
  51    pg_ctrl start
  52
  53Common functions
  54----------------
  55The functions.sh file provides; Three different shell functions for
  56configuring the different components of pktgen: pg_ctrl(), pg_thread()
  57and pg_set().
  58
  59These functions correspond to pktgens different components.
  60 * pg_ctrl()   control "pgctrl" (/proc/net/pktgen/pgctrl)
  61 * pg_thread() control the kernel threads and binding to devices
  62 * pg_set()    control setup of individual devices
  63
  64See sample scripts for usage examples.
  65