cisco-system-traffic-generator / trex-core

trex-core site
https://trex-tgn.cisco.com/
Other
1.32k stars 464 forks source link
dpdk python-3 scaleable stateful stateless traffic-generation

== TRex Low-Cost, High-Speed Stateful Traffic Generator

TRex is a traffic generator for Stateful and Stateless use cases.

Traditionally, network infrastructure devices have been tested using commercial traffic generators, while the performance was measured using metrics like packets per second (PPS) and No Drop Rate (NDR). As the network infrastructure functionality has become more complex, stateful traffic generators have become necessary in order to test with more realistic application traffic pattern scenarios. Realistic and Stateful traffic generators are needed in order to:

=== Current Challenges

=== Implications

TRex addresses these problems through an innovative and extendable software implementation and by leveraging standard and open SW and working on COTS x86/ARM server.

=== TRex Stateful/Stateless in a Nutshell

=== Current TRex DPDK interfaces supported

=== Current Stateful TRex Feature sets (STF)

This feature is for stateful features that inspect the traffic.

=== TRex Stateless feature sets (STL)

This feature is for Stateless features that do routing/switching e.g. Cisco VPP/OVS. It is more packet based.

The following example shows three streams configured for Continuous, Burst, and Multi-burst traffic.

image::doc/images/stl_streams_example_02.png[title="",align="center",width=600, link="https://trex-tgn.cisco.com/trex/doc/images/stl_streams_example_02.png"]

A new JSON-RPC2 Architecture provides support for interactive mode

image::doc/images/trex_architecture_01.png[title="",align="center",width=600, link="https://trex-tgn.cisco.com/trex/doc/images/trex_architecture_01.png"]

more info can be found here link:https://trex-tgn.cisco.com/trex/doc/index.html[Documentation]

=== TRex Advance Stateful feature sets (ASTF)

With the new advanced scalable TCP/UDP support, TRex uses TCP/UDP layer for generating the L7 data. This opens the following new capabilities:

more information can be found here:

=== What you can do with it

==== Stateful

==== Stateless

=== Presentation

link:https://www.slideshare.net/HanochHaim/trex-realistic-traffic-generator-stateless-support[New Stateless support]

link:https://www.slideshare.net/harryvanhaaren/trex-traffig-gen-hanoch-haim[DPDK summit 2015]

link:https://www.youtube.com/watch?v=U0gRalB7DOs[Video DPDK summit 2015]

link:https://trex-tgn.cisco.com/trex/doc/trex_preso.html[Presentation]

link:https://packetpushers.net/podcast/heavy-networking-482-test-your-limits-with-the-trex-oss-traffic-generator/[Heavy Networking 482: Test Your Limits With The TRex OSS Traffic Generator]

=== Documentation

link:https://trex-tgn.cisco.com/trex/doc/index.html[Documentation]

=== Wiki

Internal link:https://github.com/cisco-system-traffic-generator/trex-core/wiki[Wiki]

=== How to build

Internal link:https://github.com/cisco-system-traffic-generator/trex-core/wiki[Wiki]

=== YouTrack

Our old report bug/request tool link:https://trex-tgn.cisco.com/youtrack/issues[YouTrack] Better to use github issues

=== Blogs

blogs can be found TRex link:https://communities.cisco.com/community/developer/trex/blog[blog]

=== Stateless Client GUI

Github is here link:https://github.com/cisco-system-traffic-generator/trex-stateless-gui[trex-stateless-gui]

image::doc/images/t_g1.gif[title="",align="center",width=300, link="https://github.com/cisco-system-traffic-generator/trex-core/tree/master/doc/images/t_g1.gif"]

=== TRex EMU

The objective is to implement client side L3 protocols i.e ARP, IPv6, ND, MLD, IGMP in order to simulate a scale of clients and servers. This project is not limited to client protocols, but it is a good start. The project provides a framework to implement and use client protocols.

The framework is fast enough for control plane protocols and will work with TRex server. Very fast L7 applications (on top of TCP/UDP) will run on TRex server. One single thread of TRex-EMU can achieve a high rate of client creation/teardown. Each of the aforementioned protocol is implemented as a plugin. These plugins are self contained and can signal events one to the other, or to the framework, using an event-bus. (e.g. DHCP signals that it has a new IPv6 address). The framework has an event driven architecture, this way it can scale. The framework also provides to a protocol plugin infrastructure, for example RPC, timers, packet parsers, simulation and more.

The main properties:

[options="header",cols="1,2",width="60%"] |================= | Plug-in | Description | ARP | RFC 826 | ICMP | RFC 777 | DHCPv4 | 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 |=================

more infor here link:https://github.com/cisco-system-traffic-generator/trex-emu[trex-emu]

== TRex BIRD integration

Bird Internet Routing Daemon is a project aimed to develop a fully functional linux dynamic IP routing daemon. It was integrated into TRex to run alongside in order to exploit it’s features together with Python automation API.

=== Sandbox for evaluation

Try the new Devnet Sandbox link:https://devnetsandbox.cisco.com/RM/Topology[TRex Sandbox]

=== Contact Us

Follow us on https://groups.google.com/forum/#!forum/trex-tgn[TRex traffic generator google group], Or contact via: mailto:trex-tgn@googlegroups.com[Group mailing list (trex-tgn@googlegroups.com)]

=== Who is using TRex?