Wire Speed Traffic Generation


PF_RING ZC is able to generate traffic at wire rate, any packet size. This means that you can:

  • Generate synthetic packets: you forge packets with meaningless content, just to fill up the wire with data.
  • Reproduce packets stored on a pcap file you previously captured on a network (or forged). You can decide to reproduce them at the original speed, or at wire rate.
  • Enhance your favorite open-source traffic generator such as Ostinato, and not only be able to flexibly generate packets, but also to reproduce them at high rates.

The PF_RING suite comes with some example applications. One of those is named pfsend.

pfsend -i out_dev [-a] [-f ] [-g <core_id>] [-h]
 [-l] [-n][-r] [-m] [-v]-a Active send retry
 -f Send packets as read from a pcap file
 -g <core_id> Bind this app to a code (only with -n 0)
 -h Print this help
 -i Device name. Use device
 -l Packet length to send. Ignored with -f
 -n Num pkts to send (use 0 for infinite). With -f it
 specifies the number of times the file will be sent
 -r Rate to send (example -r 2.5 sends 2.5 Gbit/sec)
 -m Reforge destination MAC (format AA:BB:CC:DD:EE:FF)
 -v Verbose

Use Cases


Suppose that you have loaded the PF_RING ZC driver, and that you use the interface eth1 as egress interface.

  • Fill up the wire with 64 bytes (60 bytes packet + 4 bytes IFG) at wire rate
    pfsend -i zc:eth1 -n 0
  • Reproduce a pcap file at wire rate
    pfsend -i zc:eth1 -f dummy.pcap
  • Reproduce a pcap file at 2 Gbit/sec
    pfsend -i zc:eth1 -f dummy.pcap -r 2