New Features
Updated Twister to latest DPDK
- Twister updated to support the latest current version of DPDK (16.04). Future releases of Twister will support the most current version of Intel DPDK
Built Twister and DPDK into a single package
- Intel DPDK has been integrated within the Twister directory as a single package, and now DPDK does not have to be downloaded and build separately
Added more targets into Makefile
- Users now have more options for compiling Twister with different makefile targets as needed and as per the requirements of the user
Added support for a configuration file
- Hard-coded arguments have been replaced with a configuration file, and now the configurations can be loaded from this file which provides more flexibility to Twister
Added continuous integration using Travis
- Support for Travis CI, a hosted and distributed continuous integration service, has been added to build and test code contributions to the Twister project
PPS Limit Configuration
- The Packets-Per-Second limit in the Twister UDP Send sample application can now be configured
- Added post-install script to insert module in kernel
- Added free packet in arp/arplogic.c to avoid segmentation fault
Refactored code for all example applications
- Code for all sample applications has been cleaned up and refactored according to GNU coding standards
- Included stats.h in the tw_api.h
Added ARP resolve logic as part of the API
- The logic for resolving Address Resolution Protocol packets has now been built as part of the API
Added logic to differentiate types of ICMP packets
- Various types of ICMP packets can now be differentiated and separated according to application requirements.
Standardized the code format
- Code for the Twister API and its sample applications has been standardized according to the GNU coding standards for writing C
Added debug functionality
- Debug functionality added in the API, which can be triggered using the
-d
debug flag. Example added in PING application - TWARP entry function replaced arp search table
- Created Debian Package for Ubuntu
Sample Applications
The following sample Twister applications have been provided:
Ping
- This application sends the ICMP packets (ping), it takes IP from console, and sends the ICMP packets to this machine. When it gets the ICMP reply packet, it displays the ICMP parameters to user, like TTL, RTT, sequence number etc.
ICMP Echo
- This application responds for the ICMP(Ping) packets.
ARP Application
- This application implements the address resolution protocol. It sends the ARP request and displays the resolved MAC address.
IPERF Application
- This application provides functionality to measure maximum achievable bandwidth on IP connection.
Resolved Issues
Better Multiple engine support added
- The
tw_launch_engine
code has been re-written to better run multiple engines
"Abort core (Core dumped)" issue resolved
When an application couldn't get hugepages information, a "Core dumped" error was seen. This has been fixed to make the application exit normally in such a case.
HW dependencies removed
The source-code has been rearranged to remove HW dependencies, and has been rebuilt into a new Twister package. This removes dependency on ALL HW dependencies, allowing Twister to be run on any setup that fulfills the requirements. This includes public clouds such as AWS, Google, Microsoft Azure, and so on.
DPDK Updated
Intel's DataPlane Development Kit has been upgraded and Twister now runs with DPDK 16.04.
- Warnings during compilation of example applications removed
Debug information removed from Twister commands
- Twister commands printed out all the EAL and PMD debug information by default. This has been fixed to only display when debug flag is set.
Client sent/recv bandwidth loss and high latency bug fixed.
- This issue has been resolved by adding a bandwidth flag. Now the client can be run with the
-b
flag to specify packet rate and the-n
flag to specify packet size. E.g.sudo twiperf -n 64 -c -b 75000
Tested platforms
- AWS with Xen Hypervisor & SR-IOV NICs
- Dell R-610/R-620 with Intel x540 NICs
- ESXi 5.5 with VMXNET NICs
- VirtualBox/KVM with E1000 & VirtIO Virtual NICs
Tested Operating Systems
- Ubuntu Server 14.04 LTS - 64 bit
- Amazon Linux AMI 2016.03.1
- CentOS 7.0 - 64 bit
Known Issues/Limitations
IP Stack support
- Twister currently only supports ARP and Layer 2 functionality. For writing applications beyond layer 2 that require socket-level programming, a TCP/IP Stack is required. Twister currently supports no IP Stack. Integration of a high-performance IP Stack has been planned for the next release of Twister
Multi-core support
- Currently, Twister applications can only run on a single core. Multi-core functionality is yet to be implemented to support multi threaded applications for better performance.
- Deb package for Ubuntu not very stable
Support for running concurrent applications
- Support for running multiple Twister applications concurrently is not supported. This feature will require Twister to be run as a Daemon, which is planned for the next release of Twister.
Support for logging
- As of right now, Twister has no logging functionality which will help debug and troubleshoot Twister applications.