Changes in Pktgen

This section shows changes and bug fixes in the Pktgen application.

Pktgen - Traffic Generator powered by DPDK

Pktgen is a traffic generator powered by DPDK at wire rate traffic with 64 byte frames.

** (Pktgen) Sounds like ‘Packet-Gen’**

=== Modifications ===
  • 3.4.2 - Fix a build problem with older DPDK versions.
  • 3.4.1 - Fix ARP packet processing and a fe minor cfg file changes.
  • 3.4.0 - Fix bonding polling and other minor changes.
  • 3.3.9 - PCI Whitelist and Blacklist should be the original defines and
    does not require a ifdef for the version. Convert the run.py to dpdk-run.py script and convert the scripts to /bin/sh.
  • 3.3.8 - reverse change causing TX to stop sending traffic.
  • 3.3.7 - Fix BLACKLIST and WHITELIST macro change for 17.08 DPDK
  • 3.3.6 - Add flag to enable bonding PMD to do TX calls with zero packets.
    New command ‘enable|disable bonding’ Cleanup some of the copyright dates to use 2017
  • 3.3.5 - fix sequeuce command be truncated and fix run.py to fix strings in cfg file.
  • 3.3.4 - Minor fixes for help and run.py scipt.
  • 3.3.3 - Make sure the mbuf data size is at least 2K in size
  • 3.3.2 - Fix set pkt types and fix setting the pkt size for IPv6
  • 3.3.1 - Update the help for range and add compact commands for range
  • 3.3.0 - Add new run configs and run.py script to setup and run pktgen
  • 3.2.12- Rework the src/dst IP address again and fix the reset command
  • 3.2.11- Fixed location of libs for per v17.05 releases
  • 3.2.10- Fixed the problem with set <portlist> src/dst ip <addr> needing /XX for subnet
    mask values. Add a test for using the master lcore for a port and error out.
  • 3.2.9 - fixed a number of problems and some code cleanup
    Fixed the problem when running a lua script the ports stats were not updated. The problem is a rte_timer_manage() call was remove my mistake.
  • 3.2.8 - fixed ‘set <portlist> type ipv4|ipv6’ used ip4|ip6 instead.
  • 3.2.7 - Fix pktgen.seq() lua function Ethertype and protocol were swapped doc is correct.
  • 3.2.6 - Fix the pcap page not displaying.
    Fix standalone builds to include Lua headers.
  • 3.2.5 - Fix setting of the seq_cnt in lua. Now you can use seqCnt or seq_cnt strings
    for setting the sequeuce count value.
  • 3.2.4 - Fix setting of MAC and IP addresses in single mode.
  • 3.2.3 - Allow pktgen to build on DPDK 14.04
    fix the new commands to use the correct syntax
  • 3.2.2 - fix the clear stats command.
    fix range commands to match help text.
  • 3.2.1 - Update the readme file.
  • 3.2.0 - Add support for decimal point rate values, like 10.1, 20.54, 90.6, ...
    Convert over to use CLI interface instead of cmdline interface. CLI is a directory like command line tool and please read the .rst file in the lib/cli directory Many bug fixes.
  • 3.1.2 - Convert spaces to tabs and add pktgen-cfg.[ch] page
    Converting the spaces to tabs to allow for editing the code with tabs set to 4 or 8 columns per tab. Changed to allow people who are stuck on a tab=8 columns. We have modern computers tabs=4 columns seems reasonable.
  • 3.1.1 - Minor cleanup of top level directory and code.
  • 3.1.0 - Rename functions and files.
    When files are written change the file modes to 0666 as they are owned by root. More general cleanup of the display refresh. loading command or lua files is faster because of the screen updates fixed.
  • 3.0.17- Fixed a formating issue on sequence page for port numbers.
    Save of lua code wrong for pktgen.range() should be pktgen.set_range().
  • 3.0.16- Add command line option to strip CRC in hardware one RX.
    Option is ‘–crc-strip’ which strips the CRC on RX for all ports.
  • 3.0.15- Update Lua to 5.3.3 version187
    Change lua pktgen.range() to pktgen.set_range() plus added the range commands from pktgen.dst_mac() to pktgen.range.dst_mac(). Still support the old commands for now. Now polls the RX and TX queues to support eth_bond interfaces using mode 4 or LACP.
  • 3.0.14- Fix crash in saving configuration and random is not setup.
  • 3.0.13- Fix seq only sending the first sequence packet and some cleanup.
  • 3.0.12- Map port/queue pair stats to the correct lcore.
  • 3.0.11- Fix compile problem with 16.04
  • 3.0.10- Added the ‘pdump <portlist>’ command to hex dump the first packet to be
    send on the given ports. Only the single packet mode is supported.
  • 3.0.09- Add Fix for PCAP corruption.
  • 3.0.08- Add Lua support for rnd and latency commands.
    Now if latency is enable on a port then getting the stats will get the latency values via lua table.
  • 3.0.07- Fixed crash on exit when using more then one core per port.
  • 3.0.06- Fix PCI null pointer when using virtual devices.
    Removed the C11 constructs to compile on C99 compilers. Fix the bug of old packets after changes for new run. The problem is DPDK holds on to the mbufs in the TX done queue and those can not be changed. With 16.07 we can find all of the mbufs and changed them to correct format/sizes.
  • 3.0.05- New Latency/Jitter page ‘page latency’
    Need to adjust the packet size to 96 to allow for latency timestamp. type: page latency latency 0 on set 0 size 96 start 0
  • 3.0.04- Display reported the wrong rate in Mbits because the counters were not
    including the FCS bytes in the value as it was before. Minor cleanup of the code for formating.
  • 3.0.03- General clean up of scripts
    Add support for share library builds Clean up formating Add PCI info screen GUI 1.0 support
  • 3.0.02- Fix up the IPv6 address macros for musl libc support
    Fix the missing pthread.h include in lua socket header. Add the rnd lua support APIs Fix the checksum issue with rnd changes.
  • 3.0.01- Fixed the Range sequence and VLAN problem.
  • 3.0.00- Fixed code to ifdef the imcasts counters that were deprecated.
  • 2.9.18- Fix the range command to set IP proto value and be able to save that value.
  • 2.9.17- Fix PCAP crash when using multiple tx queues.
  • 2.9.16- Fix include problems with cmdline_parse.h file.
    missing cmdline_parse_token_hdr_t define and looks like the header was not included in the pktgen-seq.h file for DPDK v2.2.0 and pktgen-2.9.15
  • 2.9.15- Update Lua to version 5.3.2
  • 2.9.14- Fix compiler error for gcc-4.9 and inet_ntop() routine
  • 2.9.13- Add max last seen RX/TX packets to display.
  • 2.9.12- Was not able to set IP protocol type for range packets.
    New command range.proto <portlist> udp|tcp|icmp Lua command is pktgen.ip_proto(“all”, “udp”)
  • 2.9.11- Fix version string for new version style in DPDK.
  • 2.9.10- Reformat the code and get ready for the next release of DPDK.
  • 2.9.9 - Update the init screen output to not screw up DPDK screen output.
  • 2.9.8 - Fixed the crash when using the sequence packets.
  • 2.9.7 - Changed all rte_zmalloc to rte_zmalloc_socket calls and change seq_pkt support.
    The fix for multiple cores accessing seq_pkts was to allocate memory and copy into a private area. This sometimes caused memory allocation problems, so I removed the allocation and used spinlocks around the code. Most likely slower in some areas but better then allocating memory.
  • 2.9.6 - Add support for different pattern types and a user patten string.
    New commands are ‘pattern <portlist> type’. Types are abc, none, zero or user New command ‘user.pattern <portlist> <string>’ The string can not contain a space which is a limitation of the rte_cmdline code. Added new Lua command for the above ‘pattern(<portlist>, <type>)’ and ‘userPatten(<portlist>, <string>)’
  • 2.9.5 - Fixed sequence packet race condition for multiple senders.
  • 2.9.4 - Fixed the ARP sends were not being flushed
  • 2.9.3 - Remove change log and comment out the eth stop when done sending.
    This will most likely screw up the pcap and others, but stopping the port is not good.
  • 2.9.1 - Fix up the sequeue help to remove vlan option with ipv4/ipv6
  • 2.9.0 - Update to DPDK 2.0.0 and Lua 5.3.0 with README update.
  • 2.8.6 - Fix argument for rte_mempool_create, which caused a crash.
  • 2.8.5 - Fix compat problem with latest Pktgen and DPDK 1.8.0
  • 2.8.4 - Minor updates for comments.
  • 2.8.3 - Updated the Makefiles to use rte.extXYZ.mk files.
    Updated the code to build with DPDK 2.0.0-rc1 as some function prototype changed.
  • 2.8.2 - Fix bug in pktgen_main_receive routine not using the correct port number.
  • 2.8.1 - Add a new docs directory using Sphinx format and update version numbers.
  • 2.8.0 - Update to release 1.8.0 of DPDK.
  • 2.7.7 - Update Lua to 5.2.3 and fixed setting vlan ID on single ports plus added new Lua functions
    New Lua functions are pktgen.portCount() and pktgen.totalPorts() portCount() is the number of port used by Pktgen and totalPorts() is the total number seen by DPDK.
  • 2.7.6 - Update code from dpdk.org version of Pktgen, which hopefull fixes the send foreve problem.
  • 2.7.5 - Update to latest dpdk.org and move scrn to lib directory with name changes.
  • 2.7.4 - Removed old printf_info() calls for printf_status() calls.
  • 2.7.3 - Fixed race condition with updating the TX count value with a small count.
  • 2.7.1 - Add a command line option ‘-T’ to enable themes and set themes off by default.
  • 2.7.0 - Update to DPDK 1.7.0, Note: DPDK 1.7.0 changed how ports are detected and blacklisted,
    which means the port index is now different. You will need to blacklist or whitelist ports with the DPDK ‘-b’ or ‘–pci-blacklist or –pci-whitelist’ options. Pktgen does not blacklist ports anymore. - Moved pktgen to the examples directory plus removed the libwr_* from the lib directory - Pktgen now supports ANSI color terminals only the main screen ATM, but more later. - Best viewed on a black background display, unless you want to change it with the new theme commands. - More supported generator types, checkout the help screens.
  • 2.6.8 - Fixed a transmit problem when count is set to one. Plus increase the link down delays.
  • 2.6.7 - Add more support for GRE packets, log support and more testing code.
  • 2.6.6 - Fix compile problem when not SSE4.2 instructions are not supported. Allowing QEMU and other
    systems to build and run. Also added a patch to take into account huge reserved pages.
  • 2.6.5 - Added support for logging packet information.
  • 2.6.4 - It consists of 3 commits: improvements to the pktgen-random.c unit tests,
    the real CentOS compilation fixes and a small update to tap.{c,h} so they are identical to those from zorgnax/libtap on github.
  • 2.6.3 - Add a delay when traffic stops to make sure all packets are sent.
    Remove the rte_hash_crc.h include in wr_pcap.c file.
  • 2.6.2 - Fixup GRE and ARP problems
  • 2.6.1 - Add random bits support and more cleanup
  • 2.6.0 - Split up the code for testing to be added later
  • 2.5.2 - Remove extra ethertypes.h file.
  • 2.5.1 - Added the following updates.
    • Implement-Rx-packet-dump-functionality
    • Add-packet-capture-functionality
    • Add-MPLS-functionality
    • Add-Q-in-Q-802.11ad-functionality
    • Add-GRE-header-generation
    • Fix-UDP-TCP-ICMP-protocol-selection
    • Add-ARP-protocol
  • 2.5.0 - Update to DPDK 1.6.0 plus a few bug fixes.
  • 2.4.1 - Fixed a bug in range packets when ‘inc’ value is zero use start values.
  • 2.4.0 - Add support for TX tap packets. Change ‘tap’ command to rxtap and txtap.
  • 2.3.4 - Minor update to help eliminate RX errors and be able to receive at wire rate.
  • 2.3.3 - Update to minor release 1.5.2
  • 2.3.2 - Fixed VLAN detection problem in ARP and special GARP support.
  • 2.3.1 - Getting closer to line rate tx speed.
  • 2.3.0 - Now supports the VLAN encapsulated packets for ARP replies
    Also added a special GARP processing to update the destination MAC address to help support a special request for failover support. Added support for DPDK 1.5.1
  • 2.2.7 - Updated the code to handle multiple TX queues per port.
  • 2.2.6 - Fixed a crash if the port is not up with link status
  • 2.2.5 - Remove the flow control code as some systems it does not work.
  • 2.2.4 - Fix the inet_h64tom and inet_mtoh64 functions to account for endianness
  • 2.2.3 - range packet fixes for packet size and source/destination mac
  • 2.2.2 - Minor performance changes for receive packet performance.
  • 2.2.1 - Change MAC address from XXXX:XXXX:XXXX to XX:XX:XX:XX:XX:XX format
    Fixed Pktgen to allow packet changes without having to restart the tool.
  • 2.2.0 - Update to DPDK 1.5.0

=====================