 |
|
| |
PKT-GEN(8) |
FreeBSD System Manager's Manual |
PKT-GEN(8) |
pkt-gen — Packet
generator for use with
netmap(4)
-
pkt-gen |
[-h46XzZNIWvrAB ] [-i
interface] [-f
function] [-n
count] [-l
pkt_size] [-b
burst_size] [-d
dst_ip[:port[-dst_ip:port]]]
[-s
src_ip[:port[-src_ip:port]]]
[-D dst_mac]
[-S src_mac]
[-a cpu_id]
[-c cpus]
[-p threads]
[-T report_ms]
[-P file]
[-w wait_for_link_time]
[-R rate]
[-H len]
[-F num_frags]
[-M frag_size]
[-C port_config] |
pkt-gen leverages
netmap(4)
to generate and receive raw network packets in batches. The arguments are as
follows:
-h
- Show program usage and exit.
-i
interface
- Name of the network interface that
pkt-gen
operates on. It can be a system network interface (e.g., em0), the name of
a
vale(4)
port (e.g., valeSSS:PPP), the name of a netmap pipe or monitor, or any
valid netmap port name accepted by the nm_open
library function, as documented in
netmap(4)
(NIOCREGIF section).
-f
function
- The function to be executed by
pkt-gen . Specify
tx for transmission, rx
for reception, ping for client-side ping-pong
operation, and pong for server-side ping-pong
operation.
-n
count
- Number of iterations of the
pkt-gen function (with
0 meaning infinite). In case of tx or
rx , count is the number of
packets to receive or transmit. In case of ping or
pong , count is the number of
ping-pong transactions.
-l
pkt_size
- Packet size in bytes excluding CRC. If passed a second time, use random
sizes larger or equal than the second one and lower than the first
one.
-b
burst_size
- Transmit or receive up to burst_size packets at a
time.
-4
- Use IPv4 addresses.
-6
- Use IPv6 addresses.
-d
dst_ip[:port[-dst_ip:port]]
- Destination IPv4/IPv6 address and port, single or range.
-s
src_ip[:port[-src_ip:port]]
- Source IPv4/IPv6 address and port, single or range.
-D
dst_mac
- Destination MAC address in colon notation (e.g., aa:bb:cc:dd:ee:00).
-S
src_mac
- Source MAC address in colon notation.
-a
cpu_id
- Pin the first thread of
pkt-gen to a particular
CPU using
pthread_setaffinity_np(3).
If more threads are used, they are pinned to the subsequent CPUs, one per
thread.
-c
cpus
- Maximum number of CPUs to use (0 means to use all the available
ones).
-p
threads
- Number of threads to use. By default, only a single thread is used to
handle all the netmap rings. If threads is larger
than one, each thread handles a single TX ring (in
tx mode), a single RX ring (in
rx mode), or a TX/RX ring pair. The number of
threads must be less than or equal to the number of
TX (or RX) rings available in the device specified by
interface.
-T
report_ms
- Number of milliseconds between reports.
-w
wait_for_link_time
- Number of seconds to wait before starting the
pkt-gen function, useful to make sure that the
network link is up. A network device driver may take some time to enter
netmap mode, or to create a new transmit/receive ring pair when
netmap(4)
requests one.
-R
rate
- Packet transmission rate. Not setting the packet transmission rate tells
pkt-gen to transmit packets as quickly as
possible. On servers from 2010 onward
netmap(4)
is able to completely use all of the bandwidth of a 10 or 40Gbps link, so
this option should be used unless your intention is to saturate the
link.
-X
- Dump payload of each packet transmitted or received.
-H
len
- Add empty virtio-net-header with size len. Valid
sizes are 0, 10 and 12. This option is only used with Virtual Machine
technologies that use virtio as a network interface.
-P
file
- Load the packet to be transmitted from a pcap file rather than
constructing it within
pkt-gen .
-z
- Use random IPv4/IPv6 src address/port.
-Z
- Use random IPv4/IPv6 dst address/port.
-N
- Do not normalize units (i.e., use bps, pps instead of Mbps, Kpps,
etc.).
-F
num_frags
- Send multi-slot packets, each one with num_frags
fragments. A multi-slot packet is represented by two or more consecutive
netmap slots with the NS_MOREFRAG flag set (except
for the last slot). This is useful to transmit or receive packets larger
than the netmap buffer size.
-M
frag_size
- In multi-slot mode, frag_size specifies the size of
each fragment, if smaller than the packet length divided by
num_frags.
-I
- Use indirect buffers. It is only valid for transmitting on VALE ports, and
it is implemented by setting the NS_INDIRECT flag in
the netmap slots.
-W
- Exit immediately if all the RX rings are empty the first time they are
examined.
-v
- Increase the verbosity level.
-r
- In
tx mode, do not initialize packets, but send
whatever the content of the uninitialized netmap buffers is (rubbish
mode).
-A
- Compute mean and standard deviation (over a sliding window) for the
transmit or receive rate.
-B
- Take Ethernet framing and CRC into account when computing the average bps.
This adds 4 bytes of CRC and 20 bytes of framing to each packet.
-C
tx_slots[, rx_slots[, tx_rings[, rx_rings]]]
- Configuration in terms of number of rings and slots to be used when
opening the netmap port. Such configuration has an effect on software
ports created on the fly, such as VALE ports and netmap pipes. The
configuration may consist of 1 to 4 numbers separated by commas:
“tx_slots,rx_slots,tx_rings,rx_rings”. Missing numbers or
zeroes stand for default values. As an additional convenience, if exactly
one number is specified, then this is assigned to both
tx_slots and rx_slots. If
there is no fourth number, then the third one is assigned to both
tx_rings and rx_rings.
pkt-gen is a raw packet generator that can
utilize either
netmap(4)
or bpf(4)
but which is most often used with
netmap(4).
The interface name used depends upon how the
underlying Ethernet driver exposes its transmit and receive rings to
netmap(4).
Most modern network interfaces that support 10Gbps and higher speeds have
several transmit and receive rings that are used by the operating system to
balance traffic across the interface. pkt-gen can
peel off one or more of the transmit or receive rings for its own use
without interfering with packets that might otherwise be destined for the
host. For example on a system with a Chelsio Network Interface Card (NIC)
the interface specification of -i netmap:ncxl0 gives
pkt-gen access to a pair of transmit and receive
rings that are separate from the more commonly known cxl0 interface, which
is used by the operating system's TCP/IP stack.
Capture and count all packets arriving on the operating system's
cxl0 interface. Using this will block packets from reaching the operating
system's network stack.
Send a stream of fake DNS packets between two hosts with a packet
length of 128 bytes. You must set the destination MAC address for packets to
be received by the target host.
pkt-gen -i netmap:ncxl0 -f tx -s 172.16.0.1:53 -d 172.16.1.3:53 \
-D 00:07:43:29:2a:e0
This manual page was written by George V.
Neville-Neil ⟨gnn@FreeBSD.org⟩.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
|