| Feature | IXExplorer |TRex | Description
| Line rate | Yes |Almost ~15MPPS/core|
| Multi stream | 255 | [green]*Unlimited* |
-| Packet build flexibility | Limited | [green]*Scapy- Ulimited* | e.g GRE/VXLAN/NSH is supported. Can be extended to future protocols
+| Packet build flexibility | Limited | [green]*Scapy- Unlimited* | e.g GRE/VXLAN/NSH is supported. Can be extended to future protocols
| Packet Field engine | limited | [green]*Unlimited* |
- | Tx Mode | Continues/Burst/Multi burst | Continues/Burst/Multi burst|
+ | Tx Mode | Continuous/Burst/Multi burst | Continuous/Burst/Multi burst|
| ARP Emulation | Yes | Not yet - workaround |
| Automation | TCL/Python wrapper to TCL | [green]*native Python/Scapy* |
| Automation speed sec| 30sec | [green]*1msec* | test of load/start/stop/get counters
image::images/stateless_objects.png[title="TRex Entities",align="left",width={p_width_1}, link="images/stateless_objects.png"]
-* *TRex*: Each TRex instance includes a number of interfaces
-* *Interface*: For each Interface it is possible to add/remove a number of traffic profiles (TP)
-* *Traffic profile*: Each traffic profile includes a number of streams. This is the basic building block of activation. It is possible to add/remove to an interface a profile while other profile already exists. A profile can be looked as a "program" with dependency between streams. It is not possible to change a profile while it is running except changing the rates.
-* *Stream*: Each stream includes
+* *TRex*: Each TRex instance includes a number of interfaces
+* *Interface*: For each Interface it is possible to add/remove a number of traffic profiles (TP)
+* *Traffic profile*: Each traffic profile includes a number of streams. This is the basic building block of activation. It is possible to add/remove traffic profiles on an interface while other traffic profiles are active on the interface. A profile can be looked as a "program" with dependency between it's streams. It is not possible to change a profile while it is running except for changing the rates
+* *Stream*: Each stream includes:
** *Packet*: Packet template up to 9K bytes
-** *Field Engine*: which field to change, do we want to change packet size
-** *Mode*: how to send the packet. Continuous/Burst/Multi Burst
-** *Rx Stats* Which Statstistic to collect for each stream
+** *Field Engine*: which field to change, do we want to change the packet size
+** *Mode*: How to send the packet. Continuous/Burst/Multi Burst
+** *Rx Stats*: Which Statstistic to collect for each stream
** *Rate*: Specified in Packet Per Second (pps) or bandwidth (bps)
- ** *Action*: The next stream to go after this stream is finished. Valid for Burst/Continues mode
+ ** *Action*: The next stream to go after this stream is finished. Valid for Burst/Continuous mode
- ==== TRex package folders
+ === Statful vs Stateless
+
+ TRex Stateless support is basic L2/L3 tests more for Switch/Router.
+ With Stateless it is possible to define a Stream that has a *one* packet template, define a program to change any fields in the packet and run it in continues/burst/multi-burst mode.
+ With Statless you *can't* learn NAT translation because there is no context of flow/client/server. In Stateful the basic building block is a flow/application (That compose from many packets).
+ However, Using Stateless mode, it is much more flexible as you can define any type of packets and build simple program and in a way you can mimic Stateful but not everything.
+ For example, you can load a pcap with the number of packets as a link of streams
+ a->b->c->d-> back to a
+ And create a program for each stream to change src_ip=10. 0.0.1-10.0.0.254 this will create something similar to Stateful but the underline is totally different.
+ If you are confused you probably need Stateless.
+
+ .Statful vs Stateless
+ [cols="1^,3^,3^", options="header"]
+ |=================
+ | Feature | Stateless |Statful
+ | Flow base | No | Yes
+ | NAT | No | Yes
+ | Tunnel | Yes | Only specific
+ | L7 App emulation | No | Yes
+ | Any type of packet | Yes | No
+ | Latency Jitter | Per Stream | Global/Per flow
+ |=================
+
+
+ === TRex package folders
[cols="5,5", options="header",width="100%"]
|=============================