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