summaryrefslogtreecommitdiffstats
path: root/README.asciidoc
blob: 8f12092a735df833b743e1ff7183a0874e0d20cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
== TRex Low-Cost, High-Speed Stateful Traffic Generator 


*New*  Stateless support was released see more in the folowing section 

Traditionally, network infrastructure devices have been tested using commercial traffic generators, while 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:

* Test and provide more realistic performance numbers
* Design and architecture of SW and HW based on realistic use cases 

=== Current Challenges

* *Cost* : Commercial State-full traffic generators are expensive
* *Scale* : Bandwidth does not scale up well with features complexity
* *Standardization* : Lack of standardization of traffic patterns and methodologies
* *Flexibility* : Commercial tools do not allow agility when flexibility and changes are needed

=== Implications

* High capital expenditure (capex) spent by different teams
* Testing in low scale and extrapolation became a common practice, it is not accurate, and hides real life bottlenecks and quality issues
* Different feature / platform teams benchmark and results methodology
* Delays in development and testing due to testing tools features dependency
* Resource and effort investment in developing different ad hoc tools and test methodologies

TRex addresses these problems through an innovative and extendable software implementation and by leveraging standard and open SW and x86/UCS HW.

=== TRex Stateful in a Nutshell

* Fueled by DPDK 
* Generates and analyzes L4-7 traffic and able to provide in one tool capabilities provided by commercial L7 tools.
* Stateful traffic generator based on pre-processing and smart replay of real traffic templates.
* Generates and *amplifies* both client and server side traffic.
* Customized functionality can be added.
* Scale to 200Gb/sec for one UCS 
* Low cost
* Virtual interfaces support, enable TRex to be used in a fully virtual environment without physical NICs and the following example use cases:
** Amazon AWS
** TRex on your laptop
** Self-contained packaging 
* Cisco Pioneer Award Winner 2015

=== Current General TRex Feature sets 

* Support DPDK 1/2.5/10/25/50/40/100Gbps interfaces 
* Virtualization interfaces support (virtio/VMXNET3/E1000)

=== Current Stateful TRex Feature sets 

* High scale of realistic traffic (number of clients, number of server, bandwidth)-up to 200Gb/sec in one UCS
* Latency/Jitter measurements
* Flow ordering checks
* NAT, PAT dynamic translation learning
* Learn TCP SYN sequence randomization - vASA use case
* Cluster mode for Controler tests
* IPV6 inline replacement 
* Some cross flow support (e.g RTSP/SIP)
* Python automation API 

=== *New* TRex Stateless feature sets 

* Large scale - Supports about 10-30 million packets per second (mpps) per core, scalable with the number of cores 
* Profile can support multiple streams, scalable to 10K parallel streams 
* Supported for each stream:
** Packet template - ability to build any packet (including malformed) using link:https://en.wikipedia.org/wiki/Scapy[Scapy] (example: MPLS/IPv4/Ipv6/GRE/VXLAN/NSH) 
** Field engine program
*** Ability to change any field inside the packet (example: src_ip = 10.0.0.1-10.0.0.255)
*** Ability to change the packet size (example: random packet size 64-9K)
** Mode - Continuous/Burst/Multi-burst support
** Rate can be specified as:
*** Packets per second (example: 14MPPS)
*** L1/L2 bandwidth (example: 500Mb/sec)
*** Interface link percentage (example: 10%)
** Support for HLTAPI-like profile definition  
** Action - stream can trigger a stream 
* Interactive support - Fast Console,  GUI 
* Statistics per interface
* Statistics per stream done in hardware
* Latency and Jitter per stream
* Blazingly fast automation support (Python 2.7/3.4)
* Multi-user support 

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

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

A new JSON-RPC2 Architecture  provides support for interactive mode

image::https://trex-tgn.cisco.com/trex/doc/images/trex_architecture_01.png[title="",align="center",width=600, link="http://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]


=== What it�s not

* There is no routing emulation support, for example, BGP/ISIS/ARP 
* There is no TCP stack.  
* Client only or Server Only. 

=== What you can do with it 

==== Stateful 

* Beanchmark/Stress stateful features :
** NAT
** DPI
** Load Balancer 
** Network cache devices 
** FireWall
** IPS/IDS 
* Mixing Application level traffic/profile (HTTP/SIP/Video) 
* Unlimited concurent flows, limited only by memory 

==== Stateless

* Beanchmark/Stress vSwitch RFC2544 
 
=== Presentation 

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

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

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

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


=== 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]

=== YouTrack

Report bug/request feature link:http://trex-tgn.cisco.com/youtrack/issues[YouTrack]

=== Windows Stateful Client GUI

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

=== 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)]

Or via Cisco Devnet portal link:http://communities.cisco.com/community/developer/trex/[Devnet]

*TRex team,Cisco Systems Inc* 


=== Roadmap 

* High speed TCP stack support 
* Intel FM10K support