Skip to content
Snippets Groups Projects
  • Daniel T. Lee's avatar
    40f843ee
    samples: pktgen: allow to specify destination IP range (CIDR) · 40f843ee
    Daniel T. Lee authored
    
    Currently, kernel pktgen has the feature to specify destination
    address range for sending packet. (e.g. pgset "dst_min/dst_max")
    
    But on samples, each pktgen script doesn't have any option to achieve this.
    
    This commit adds the feature to specify the destination address range with CIDR.
    
        -d : ($DEST_IP)   destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
    
        # ./pktgen_sample01_simple.sh -6 -d fe80::20/126 -p 3000 -n 4
        # tcpdump ip6 and udp
        05:14:18.082285 IP6 fe80::99.71 > fe80::23.3000: UDP, length 16
        05:14:18.082564 IP6 fe80::99.43 > fe80::23.3000: UDP, length 16
        05:14:18.083366 IP6 fe80::99.107 > fe80::22.3000: UDP, length 16
        05:14:18.083585 IP6 fe80::99.97 > fe80::21.3000: UDP, length 16
    
    Signed-off-by: default avatarDaniel T. Lee <danieltimlee@gmail.com>
    Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    40f843ee
    History
    samples: pktgen: allow to specify destination IP range (CIDR)
    Daniel T. Lee authored
    
    Currently, kernel pktgen has the feature to specify destination
    address range for sending packet. (e.g. pgset "dst_min/dst_max")
    
    But on samples, each pktgen script doesn't have any option to achieve this.
    
    This commit adds the feature to specify the destination address range with CIDR.
    
        -d : ($DEST_IP)   destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
    
        # ./pktgen_sample01_simple.sh -6 -d fe80::20/126 -p 3000 -n 4
        # tcpdump ip6 and udp
        05:14:18.082285 IP6 fe80::99.71 > fe80::23.3000: UDP, length 16
        05:14:18.082564 IP6 fe80::99.43 > fe80::23.3000: UDP, length 16
        05:14:18.083366 IP6 fe80::99.107 > fe80::22.3000: UDP, length 16
        05:14:18.083585 IP6 fe80::99.97 > fe80::21.3000: UDP, length 16
    
    Signed-off-by: default avatarDaniel T. Lee <danieltimlee@gmail.com>
    Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
README.rst 1.87 KiB

Sample and benchmark scripts for pktgen (packet generator)

This directory contains some pktgen sample and benchmark scripts, that can easily be copied and adjusted for your own use-case.

General doc is located in kernel: Documentation/networking/pktgen.txt

Helper include files

This directory contains two helper shell files, that can be "included" by shell source'ing. Namely "functions.sh" and "parameters.sh".

Common parameters

The parameters.sh file support easy and consistant parameter parsing across the sample scripts. Usage example is printed on errors:

Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
 -i : ($DEV)       output interface/device (required)
 -s : ($PKT_SIZE)  packet size
 -d : ($DEST_IP)   destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
 -m : ($DST_MAC)   destination MAC-addr
 -p : ($DST_PORT)  destination PORT range (e.g. 433-444) is also allowed
 -t : ($THREADS)   threads to start
 -f : ($F_THREAD)  index of first thread (zero indexed CPU number)
 -c : ($SKB_CLONE) SKB clones send before alloc new SKB
 -n : ($COUNT)     num messages to send per thread, 0 means indefinitely
 -b : ($BURST)     HW level bursting of SKBs
 -v : ($VERBOSE)   verbose
 -x : ($DEBUG)     debug

The global variable being set is also listed. E.g. the required interface/device parameter "-i" sets variable $DEV.

Common functions

The functions.sh file provides; Three different shell functions for configuring the different components of pktgen: pg_ctrl(), pg_thread() and pg_set().

These functions correspond to pktgens different components.
  • pg_ctrl() control "pgctrl" (/proc/net/pktgen/pgctrl)
  • pg_thread() control the kernel threads and binding to devices
  • pg_set() control setup of individual devices

See sample scripts for usage examples.