blob: 1225f0f63ff078b71cbd2abbb75e32204fe58bd9 [file] [log] [blame]
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +02001.. SPDX-License-Identifier: GPL-2.0
Linus Torvalds1da177e2005-04-16 15:20:36 -07002
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +02003====================================
4HOWTO for the linux packet generator
5====================================
Linus Torvalds1da177e2005-04-16 15:20:36 -07006
Ben Hutchings4e081e02015-02-24 02:33:29 +00007Enable CONFIG_NET_PKTGEN to compile and build pktgen either in-kernel
8or as a module. A module is preferred; modprobe pktgen if needed. Once
Ben Hutchingsca5b5422015-02-24 02:31:52 +00009running, pktgen creates a thread for each CPU with affinity to that CPU.
10Monitoring and controlling is done via /proc. It is easiest to select a
11suitable sample script and configure that.
Linus Torvalds1da177e2005-04-16 15:20:36 -070012
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020013On a dual CPU::
Linus Torvalds1da177e2005-04-16 15:20:36 -070014
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020015 ps aux | grep pkt
16 root 129 0.3 0.0 0 0 ? SW 2003 523:20 [kpktgend_0]
17 root 130 0.3 0.0 0 0 ? SW 2003 509:50 [kpktgend_1]
Linus Torvalds1da177e2005-04-16 15:20:36 -070018
19
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020020For monitoring and control pktgen creates::
21
Linus Torvalds1da177e2005-04-16 15:20:36 -070022 /proc/net/pktgen/pgctrl
23 /proc/net/pktgen/kpktgend_X
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020024 /proc/net/pktgen/ethX
Linus Torvalds1da177e2005-04-16 15:20:36 -070025
26
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020027Tuning NIC for max performance
28==============================
29
Ben Hutchingsca5b5422015-02-24 02:31:52 +000030The default NIC settings are (likely) not tuned for pktgen's artificial
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020031overload type of benchmarking, as this could hurt the normal use-case.
32
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020033Specifically increasing the TX ring buffer in the NIC::
34
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020035 # ethtool -G ethX tx 1024
36
37A larger TX ring can improve pktgen's performance, while it can hurt
38in the general case, 1) because the TX ring buffer might get larger
Ben Hutchingsca5b5422015-02-24 02:31:52 +000039than the CPU's L1/L2 cache, 2) because it allows more queueing in the
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020040NIC HW layer (which is bad for bufferbloat).
41
Ben Hutchingsca5b5422015-02-24 02:31:52 +000042One should hesitate to conclude that packets/descriptors in the HW
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020043TX ring cause delay. Drivers usually delay cleaning up the
Ben Hutchingsca5b5422015-02-24 02:31:52 +000044ring-buffers for various performance reasons, and packets stalling
45the TX ring might just be waiting for cleanup.
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020046
Ben Hutchingsca5b5422015-02-24 02:31:52 +000047This cleanup issue is specifically the case for the driver ixgbe
48(Intel 82599 chip). This driver (ixgbe) combines TX+RX ring cleanups,
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020049and the cleanup interval is affected by the ethtool --coalesce setting
50of parameter "rx-usecs".
51
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020052For ixgbe use e.g. "30" resulting in approx 33K interrupts/sec (1/30*10^6)::
53
Jesper Dangaard Brouer9ceb87f2014-06-26 13:16:27 +020054 # ethtool -C ethX rx-usecs 30
55
56
Jesper Dangaard Brouer2a1ddf22015-05-21 12:16:40 +020057Kernel threads
58==============
59Pktgen creates a thread for each CPU with affinity to that CPU.
60Which is controlled through procfile /proc/net/pktgen/kpktgend_X.
Linus Torvalds1da177e2005-04-16 15:20:36 -070061
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020062Example: /proc/net/pktgen/kpktgend_0::
Linus Torvalds1da177e2005-04-16 15:20:36 -070063
Jesper Dangaard Brouer2a1ddf22015-05-21 12:16:40 +020064 Running:
65 Stopped: eth4@0
66 Result: OK: add_device=eth4@0
67
68Most important are the devices assigned to the thread.
69
70The two basic thread commands are:
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020071
Jesper Dangaard Brouer2a1ddf22015-05-21 12:16:40 +020072 * add_device DEVICE@NAME -- adds a single device
73 * rem_device_all -- remove all associated devices
74
Eric Engestromedb9a1b2016-04-25 07:36:56 +010075When adding a device to a thread, a corresponding procfile is created
Jesper Dangaard Brouer2a1ddf22015-05-21 12:16:40 +020076which is used for configuring this device. Thus, device names need to
77be unique.
78
79To support adding the same device to multiple threads, which is useful
Eric Engestromedb9a1b2016-04-25 07:36:56 +010080with multi queue NICs, the device naming scheme is extended with "@":
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020081device@something
Jesper Dangaard Brouer2a1ddf22015-05-21 12:16:40 +020082
83The part after "@" can be anything, but it is custom to use the thread
84number.
Linus Torvalds1da177e2005-04-16 15:20:36 -070085
86Viewing devices
87===============
88
Ben Hutchingsca5b5422015-02-24 02:31:52 +000089The Params section holds configured information. The Current section
90holds running statistics. The Result is printed after a run or after
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020091interruption. Example::
Linus Torvalds1da177e2005-04-16 15:20:36 -070092
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020093 /proc/net/pktgen/eth4@0
Linus Torvalds1da177e2005-04-16 15:20:36 -070094
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +020095 Params: count 100000 min_pkt_size: 60 max_pkt_size: 60
96 frags: 0 delay: 0 clone_skb: 64 ifname: eth4@0
97 flows: 0 flowlen: 0
98 queue_map_min: 0 queue_map_max: 0
99 dst_min: 192.168.81.2 dst_max:
100 src_min: src_max:
101 src_mac: 90:e2:ba:0a:56:b4 dst_mac: 00:1b:21:3c:9d:f8
102 udp_src_min: 9 udp_src_max: 109 udp_dst_min: 9 udp_dst_max: 9
103 src_mac_count: 0 dst_mac_count: 0
104 Flags: UDPSRC_RND NO_TIMESTAMP QUEUE_MAP_CPU
105 Current:
106 pkts-sofar: 100000 errors: 0
107 started: 623913381008us stopped: 623913396439us idle: 25us
108 seq_num: 100001 cur_dst_mac_offset: 0 cur_src_mac_offset: 0
109 cur_saddr: 192.168.8.3 cur_daddr: 192.168.81.2
110 cur_udp_dst: 9 cur_udp_src: 42
111 cur_queue_map: 0
112 flows: 0
113 Result: OK: 15430(c15405+d25) usec, 100000 (60byte,0frags)
114 6480562pps 3110Mb/sec (3110669760bps) errors: 0
Linus Torvalds1da177e2005-04-16 15:20:36 -0700115
Jesper Dangaard Brouer2a1ddf22015-05-21 12:16:40 +0200116
117Configuring devices
118===================
Ben Hutchings7c95a9d2015-02-24 02:32:07 +0000119This is done via the /proc interface, and most easily done via pgset
120as defined in the sample scripts.
Dmitry Safonovd2ee7972018-01-18 18:31:33 +0000121You need to specify PGDEV environment variable to use functions from sample
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200122scripts, i.e.::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700123
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200124 export PGDEV=/proc/net/pktgen/eth4@0
125 source samples/pktgen/functions.sh
126
127Examples::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700128
Dmitry Safonovd2ee7972018-01-18 18:31:33 +0000129 pg_ctrl start starts injection.
130 pg_ctrl stop aborts injection. Also, ^C aborts generator.
131
Linus Torvalds1da177e2005-04-16 15:20:36 -0700132 pgset "clone_skb 1" sets the number of copies of the same packet
133 pgset "clone_skb 0" use single SKB for all transmits
Alexei Starovoitov38b2cf22014-09-30 17:53:21 -0700134 pgset "burst 8" uses xmit_more API to queue 8 copies of the same
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200135 packet and update HW tx queue tail pointer once.
136 "burst 1" is the default
Linus Torvalds1da177e2005-04-16 15:20:36 -0700137 pgset "pkt_size 9014" sets packet size to 9014
138 pgset "frags 5" packet will consist of 5 fragments
139 pgset "count 200000" sets number of packets to send, set to zero
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200140 for continuous sends until explicitly stopped.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700141
142 pgset "delay 5000" adds delay to hard_start_xmit(). nanoseconds
143
144 pgset "dst 10.0.0.1" sets IP destination address
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200145 (BEWARE! This generator is very aggressive!)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700146
147 pgset "dst_min 10.0.0.1" Same as dst
148 pgset "dst_max 10.0.0.254" Set the maximum destination IP.
149 pgset "src_min 10.0.0.1" Set the minimum (or only) source IP.
150 pgset "src_max 10.0.0.254" Set the maximum source IP.
151 pgset "dst6 fec0::1" IPV6 destination address
152 pgset "src6 fec0::2" IPV6 source address
153 pgset "dstmac 00:00:00:00:00:00" sets MAC destination address
154 pgset "srcmac 00:00:00:00:00:00" sets MAC source address
155
Eric Dumazet896a7cf2009-10-02 20:24:59 +0000156 pgset "queue_map_min 0" Sets the min value of tx queue interval
157 pgset "queue_map_max 7" Sets the max value of tx queue interval, for multiqueue devices
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200158 To select queue 1 of a given device,
159 use queue_map_min=1 and queue_map_max=1
Eric Dumazet896a7cf2009-10-02 20:24:59 +0000160
Jesper Dangaard Brouerd0128272015-05-21 12:15:56 +0200161 pgset "src_mac_count 1" Sets the number of MACs we'll range through.
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200162 The 'minimum' MAC is what you set with srcmac.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700163
164 pgset "dst_mac_count 1" Sets the number of MACs we'll range through.
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200165 The 'minimum' MAC is what you set with dstmac.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700166
167 pgset "flag [name]" Set a flag to determine behaviour. Current flags
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200168 are: IPSRC_RND # IP source is random (between min/max)
169 IPDST_RND # IP destination is random
170 UDPSRC_RND, UDPDST_RND,
171 MACSRC_RND, MACDST_RND
172 TXSIZE_RND, IPV6,
173 MPLS_RND, VID_RND, SVID_RND
174 FLOW_SEQ,
175 QUEUE_MAP_RND # queue map random
176 QUEUE_MAP_CPU # queue map mirrors smp_processor_id()
177 UDPCSUM,
178 IPSEC # IPsec encapsulation (needs CONFIG_XFRM)
179 NODE_ALLOC # node specific memory allocation
180 NO_TIMESTAMP # disable timestamping
Dmitry Safonovd2ee7972018-01-18 18:31:33 +0000181 pgset 'flag ![name]' Clear a flag to determine behaviour.
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200182 Note that you might need to use single quote in
183 interactive mode, so that your shell wouldn't expand
184 the specified flag as a history command.
Eric Dumazet896a7cf2009-10-02 20:24:59 +0000185
Dmitry Safonovd2ee7972018-01-18 18:31:33 +0000186 pgset "spi [SPI_VALUE]" Set specific SA used to transform packet.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700187
188 pgset "udp_src_min 9" set UDP source port min, If < udp_src_max, then
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200189 cycle through the port range.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700190
191 pgset "udp_src_max 9" set UDP source port max.
192 pgset "udp_dst_min 9" set UDP destination port min, If < udp_dst_max, then
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200193 cycle through the port range.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700194 pgset "udp_dst_max 9" set UDP destination port max.
195
Steven Whitehouseca6549a2006-03-23 01:10:26 -0800196 pgset "mpls 0001000a,0002000a,0000000a" set MPLS labels (in this example
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200197 outer label=16,middle label=32,
Steven Whitehouseca6549a2006-03-23 01:10:26 -0800198 inner label=0 (IPv4 NULL)) Note that
199 there must be no spaces between the
200 arguments. Leading zeros are required.
201 Do not set the bottom of stack bit,
Matt LaPlantefa00e7e2006-11-30 04:55:36 +0100202 that's done automatically. If you do
Steven Whitehouseca6549a2006-03-23 01:10:26 -0800203 set the bottom of stack bit, that
204 indicates that you want to randomly
205 generate that address and the flag
206 MPLS_RND will be turned on. You
207 can have any mix of random and fixed
208 labels in the label stack.
209
210 pgset "mpls 0" turn off mpls (or any invalid argument works too!)
211
Francesco Fondellif0e82fd2006-09-27 16:33:05 -0700212 pgset "vlan_id 77" set VLAN ID 0-4095
213 pgset "vlan_p 3" set priority bit 0-7 (default 0)
214 pgset "vlan_cfi 0" set canonical format identifier 0-1 (default 0)
215
216 pgset "svlan_id 22" set SVLAN ID 0-4095
217 pgset "svlan_p 3" set priority bit 0-7 (default 0)
218 pgset "svlan_cfi 0" set canonical format identifier 0-1 (default 0)
219
220 pgset "vlan_id 9999" > 4095 remove vlan and svlan tags
221 pgset "svlan 9999" > 4095 remove svlan tag
222
223
224 pgset "tos XX" set former IPv4 TOS field (e.g. "tos 28" for AF11 no ECN, default 00)
225 pgset "traffic_class XX" set former IPv6 TRAFFIC CLASS (e.g. "traffic_class B8" for EF no ECN, default 00)
226
Daniel Turull43d28b62010-06-09 22:49:57 +0000227 pgset "rate 300M" set rate to 300 Mb/s
228 pgset "ratep 1000000" set rate to 1Mpps
Linus Torvalds1da177e2005-04-16 15:20:36 -0700229
Alexei Starovoitov62f64ae2015-05-07 16:35:32 +0200230 pgset "xmit_mode netif_receive" RX inject into stack netif_receive_skb()
231 Works with "burst" but not with "clone_skb".
232 Default xmit_mode is "start_xmit".
233
Ben Hutchings7c95a9d2015-02-24 02:32:07 +0000234Sample scripts
235==============
Linus Torvalds1da177e2005-04-16 15:20:36 -0700236
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200237A collection of tutorial scripts and helpers for pktgen is in the
238samples/pktgen directory. The helper parameters.sh file support easy
Eric Engestromedb9a1b2016-04-25 07:36:56 +0100239and consistent parameter parsing across the sample scripts.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700240
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200241Usage example and help::
242
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200243 ./pktgen_sample01_simple.sh -i eth4 -m 00:1B:21:3C:9D:F8 -d 192.168.8.2
244
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200245Usage:::
246
247 ./pktgen_sample01_simple.sh [-vx] -i ethX
248
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200249 -i : ($DEV) output interface/device (required)
250 -s : ($PKT_SIZE) packet size
Juhee Kang246b1842021-08-25 19:57:17 +0900251 -d : ($DEST_IP) destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200252 -m : ($DST_MAC) destination MAC-addr
Juhee Kang246b1842021-08-25 19:57:17 +0900253 -p : ($DST_PORT) destination PORT range (e.g. 433-444) is also allowed
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200254 -t : ($THREADS) threads to start
Juhee Kang246b1842021-08-25 19:57:17 +0900255 -f : ($F_THREAD) index of first thread (zero indexed CPU number)
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200256 -c : ($SKB_CLONE) SKB clones send before alloc new SKB
Juhee Kang246b1842021-08-25 19:57:17 +0900257 -n : ($COUNT) num messages to send per thread, 0 means indefinitely
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200258 -b : ($BURST) HW level bursting of SKBs
259 -v : ($VERBOSE) verbose
260 -x : ($DEBUG) debug
Juhee Kang246b1842021-08-25 19:57:17 +0900261 -6 : ($IP6) IPv6
262 -w : ($DELAY) Tx Delay value (ns)
263 -a : ($APPEND) Script will not reset generator's state, but will append its config
Jesper Dangaard Brouer6f094792015-05-21 12:17:33 +0200264
265The global variables being set are also listed. E.g. the required
266interface/device parameter "-i" sets variable $DEV. Copy the
267pktgen_sampleXX scripts and modify them to fit your own needs.
268
Linus Torvalds1da177e2005-04-16 15:20:36 -0700269
270Interrupt affinity
271===================
Ben Hutchingsca5b5422015-02-24 02:31:52 +0000272Note that when adding devices to a specific CPU it is a good idea to
273also assign /proc/irq/XX/smp_affinity so that the TX interrupts are bound
274to the same CPU. This reduces cache bouncing when freeing skbs.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700275
Jesper Dangaard Brouer2a1ddf22015-05-21 12:16:40 +0200276Plus using the device flag QUEUE_MAP_CPU, which maps the SKBs TX queue
277to the running threads CPU (directly from smp_processor_id()).
278
Fan Due5f79d12014-01-03 11:18:34 +0800279Enable IPsec
280============
Ben Hutchingsca5b5422015-02-24 02:31:52 +0000281Default IPsec transformation with ESP encapsulation plus transport mode
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200282can be enabled by simply setting::
Fan Due5f79d12014-01-03 11:18:34 +0800283
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200284 pgset "flag IPSEC"
285 pgset "flows 1"
Fan Due5f79d12014-01-03 11:18:34 +0800286
287To avoid breaking existing testbed scripts for using AH type and tunnel mode,
Ben Hutchingsca5b5422015-02-24 02:31:52 +0000288you can use "pgset spi SPI_VALUE" to specify which transformation mode
Fan Due5f79d12014-01-03 11:18:34 +0800289to employ.
290
Linus Torvalds1da177e2005-04-16 15:20:36 -0700291
292Current commands and configuration options
293==========================================
294
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200295**Pgcontrol commands**::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700296
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200297 start
298 stop
299 reset
Linus Torvalds1da177e2005-04-16 15:20:36 -0700300
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200301**Thread commands**::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700302
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200303 add_device
304 rem_device_all
Linus Torvalds1da177e2005-04-16 15:20:36 -0700305
306
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200307**Device commands**::
Linus Torvalds1da177e2005-04-16 15:20:36 -0700308
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200309 count
310 clone_skb
311 burst
312 debug
Linus Torvalds1da177e2005-04-16 15:20:36 -0700313
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200314 frags
315 delay
Linus Torvalds1da177e2005-04-16 15:20:36 -0700316
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200317 src_mac_count
318 dst_mac_count
Linus Torvalds1da177e2005-04-16 15:20:36 -0700319
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200320 pkt_size
321 min_pkt_size
322 max_pkt_size
Linus Torvalds1da177e2005-04-16 15:20:36 -0700323
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200324 queue_map_min
325 queue_map_max
326 skb_priority
Jesper Dangaard Brouer91db4b32015-05-21 12:16:26 +0200327
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200328 tos (ipv4)
329 traffic_class (ipv6)
Jesper Dangaard Brouer91db4b32015-05-21 12:16:26 +0200330
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200331 mpls
Steven Whitehouseca6549a2006-03-23 01:10:26 -0800332
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200333 udp_src_min
334 udp_src_max
Linus Torvalds1da177e2005-04-16 15:20:36 -0700335
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200336 udp_dst_min
337 udp_dst_max
Linus Torvalds1da177e2005-04-16 15:20:36 -0700338
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200339 node
Jesper Dangaard Brouer91db4b32015-05-21 12:16:26 +0200340
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200341 flag
342 IPSRC_RND
343 IPDST_RND
344 UDPSRC_RND
345 UDPDST_RND
346 MACSRC_RND
347 MACDST_RND
348 TXSIZE_RND
349 IPV6
350 MPLS_RND
351 VID_RND
352 SVID_RND
353 FLOW_SEQ
354 QUEUE_MAP_RND
355 QUEUE_MAP_CPU
356 UDPCSUM
357 IPSEC
358 NODE_ALLOC
359 NO_TIMESTAMP
Linus Torvalds1da177e2005-04-16 15:20:36 -0700360
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200361 spi (ipsec)
Jesper Dangaard Brouer91db4b32015-05-21 12:16:26 +0200362
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200363 dst_min
364 dst_max
Linus Torvalds1da177e2005-04-16 15:20:36 -0700365
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200366 src_min
367 src_max
Linus Torvalds1da177e2005-04-16 15:20:36 -0700368
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200369 dst_mac
370 src_mac
Linus Torvalds1da177e2005-04-16 15:20:36 -0700371
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200372 clear_counters
Linus Torvalds1da177e2005-04-16 15:20:36 -0700373
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200374 src6
375 dst6
376 dst6_max
377 dst6_min
Linus Torvalds1da177e2005-04-16 15:20:36 -0700378
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200379 flows
380 flowlen
Linus Torvalds1da177e2005-04-16 15:20:36 -0700381
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200382 rate
383 ratep
Daniel Turull43d28b62010-06-09 22:49:57 +0000384
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200385 xmit_mode <start_xmit|netif_receive>
Alexei Starovoitov62f64ae2015-05-07 16:35:32 +0200386
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200387 vlan_cfi
388 vlan_id
389 vlan_p
Jesper Dangaard Brouer91db4b32015-05-21 12:16:26 +0200390
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200391 svlan_cfi
392 svlan_id
393 svlan_p
Jesper Dangaard Brouer91db4b32015-05-21 12:16:26 +0200394
Alexei Starovoitov62f64ae2015-05-07 16:35:32 +0200395
Linus Torvalds1da177e2005-04-16 15:20:36 -0700396References:
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200397
398- ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/
Juhee Kang246b1842021-08-25 19:57:17 +0900399- ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/examples/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700400
401Paper from Linux-Kongress in Erlangen 2004.
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200402- ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/pktgen_paper.pdf
Linus Torvalds1da177e2005-04-16 15:20:36 -0700403
404Thanks to:
Mauro Carvalho Chehabc1e4535f2020-04-30 18:04:13 +0200405
Linus Torvalds1da177e2005-04-16 15:20:36 -0700406Grant Grundler for testing on IA-64 and parisc, Harald Welte, Lennert Buytenhek
407Stephen Hemminger, Andi Kleen, Dave Miller and many others.
408
409
Steven Whitehouseca6549a2006-03-23 01:10:26 -0800410Good luck with the linux net-development.