TRex

TRex

Realistic Traffic Generator

TRex is an open source, low cost, stateful and stateless traffic generator fuelled by DPDK. It generates L3-7 traffic and provides in one tool capabilities provided by commercial tools.

TRex Stateless functionality includes support for multiple streams, the ability to change any packet field and provides per stream/group statistics, latency and jitter.

Advanced Stateful functionality includes support for emulating L7 traffic with fully-featured scalable TCP/UDP support.

TRex Emulation functionality includes client side L3 protocols i.e ARP, IPv6, ND, MLD, IGMP, ICMP, DOT1X in order to simulate a scale of clients and servers.

TRex can scale up to 200Gb/sec with one server.



Stateless Mode - STL

  • Large scale - Supports about 10-30 million packets per second (Mpps) per core, scalable with the number of cores
  • Each profile can support multiple streams, scalable to 10K parallel streams
  • Each stream supports:
    • Packet template - ability to build any packet (including malformed) using Scapy (example: MPLS/IPv4/Ipv6/GRE/VXLAN/NSH)
    • Ability to change any field inside the packet
    • Ability to change the packet size
    • Mode - Continuous/Burst/Multi-burst
    • Rate specification in pps, line rate percentage or L1/L2 bandwidth
    • Action - stream can trigger a stream
  • Interactive support - Fast Console, GUI
  • Statistics per interface or per stream supported in hardware/software
  • Latency and Jitter per stream
  • Blazingly fast Python automation API
  • Capture/Monitor traffic with BPF filters - no need for Wireshark
  • Capture network traffic by redirecting the traffic to Wireshark
  • PCAP file import/export with huge pcap file transmission support (e.g. 1TB pcap file) for DPI
  • Multi-user support

Advanced Stateful Mode - ASTF

  • Emulate L7 applications, e.g. HTTP/HTTPS/Citrix
  • Performance and scale:
    • High bandwidth - 200 Gb/sec
    • High connection rate - order of MCPS
    • Scale to millions of active established flows
  • Benchmark and Stress features/devices like:
    • NAT
    • DPI
    • Load Balancer
    • Network cache devices
    • Firewalls

Emulation Server - EMU

  • Emulate the client side of L3 protocols in order to simulate a scale of clients
  • Fast client creation/teardown at about 3K clients/sec for each thread
  • Number of active clients/namespaces is limited only by the memory on the server
  • Packet per second (PPS) in the range of 3-5 MPPS
  • Python 2.7/3.0 Client API exposed through JSON-RPC
  • Interactive support - Integrated with the TRex console
  • Modular design. Each plugin is self contained and can be tested on its own
  • TRex-EMU supports the following protocols:
    • ARP - RFC 826
    • ICMP - RFC 777
    • DHCP - RFC 2131 client side
    • IGMP - IGMP v3/v2/v1 RFC3376
    • IPv6 - IPv6 ND, RFC 4443, RFC 4861, RFC 4862 and MLD and MLDv2 RFC 3810
    • DHCPv6 - RFC 8415 client side
    • DOT1X - EAP-MD5/EAP-MSCHAPv2 RFC 3748, IEEE 802.1X-2001

Bird Integration

  • Bird is an open-source implementation for routing Internet Protocol packets on Unix-like operating systems.
  • Scale of Millions of routes (depends on the protocol scale e.g. BGP) in a few seconds
  • Integration with Multi-RX software model to support dynamic filters for BIRD protocols while keeping high rates of traffic
  • Support up to 10K virtual interfaces each with different QinQ/VLAN configuration
  • Simple automation Python API for pushing configuration and reading statistics
  • Among other features, BIRD supports:
    • Both IPv4 and IPv6
    • Multiple routing tables
    • Border Gateway Protocol (BGPv4
    • Open Shortest Path First protocol (OSPFv2, OSPFv3)
    • Routing Information Protocol (RIPv2, RIPng)
    • Babel Routing Protocol (Babel)
    • Bidirectional Forwarding Detection (BFD)
    • IPv6 router advertisements
    • Static routes
    • Inter-table protocol
    • Soft reconfiguration