:author: hhaim 
:email: <hhaim@cisco.com> 


ifndef::backend-docbook[]
++++++++++++++
<div id="header-pic"   style="padding:50px;margin-top:0px;position:absolute;left:0px;width:100%;">
    <img src="images/trex_logo.png" alt="Smiley face" height="80" width="270"/>
</div>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
++++++++++++++

== TRex release notes ==
endif::backend-docbook[]

ifdef::backend-docbook[]

== TRex release notes  ==
:numbered:

endif::backend-docbook[]

== Release 1.95  ==

* TUI support per stream stats (press s to get to this window)
* per stream statistic API examples 
* Add Python API automatic documentation scripts 
* Fix issue with a packet smaller than 64 bytes

=== Known issue 

* High speed of start/stop of per stream stats give zero in statistics
 

== Release 1.94  ==

* Fix Python API stop/sync issue. Now TX counters are synced in case of stop API 
* Improve performance of Python API, ~2000 cycles/sec of load/start/stop
* Add per stream Tx/Rx statistics for XL710/X710 NICS work in flow-director hardware

[source,python]
----
class STLS1(object):

    def get_streams (self, direction = 0):
        return [STLStream(packet = 
                          STLPktBuilder(
                          pkt ="stl/yaml/udp_64B_no_crc.pcap"), 
                          mode = STLTXCont(pps=10),
                          rx_stats = STLRxStats(user_id = 7))   <1> 
               ]
----
<1> Configure this stream to be count on all RX ports as user_id=7

* Add HTLAPI full example (examples `examples/hlt_udp_simple.py`)
* Add user manual draft for Stateless functionality link:draft_trex_stateless.html[here]


== Release 1.93  ==

* Support port attribute API and Console command.  See `$portattr -a --prom`
* Support random seed per Stream attribute - see specification for more info
* Add more sample/profiles (stl/hlt) from real use cases
* Enhance Field Engine with new instructions
* TUI now shows L1 and L2 bandwidth. Console support L1 and L2 and %%
* Stream rate can be configured with PPS/bps_L1/bps_L2/port_percentage 
* Update Stateless JSON-RPC specification  
* HLT fixes and support split_by variable 
* First phase of per stream rx/tx statistic - XL710/X710 hardware support

=== fix issues: ===

* Fix some typo in Python API stl/example folder 
* Fix Field Engine IPv4 checksum issue with big packet size  
* Fix Field Engine issue with random variables 
* Fix `streams -a` crash 
* Fix X710 issue. Now return speed of 10gb instead of 40gb for Stateless port speed 


== Release 1.92  ==

** Stream can set static Source/Destination MAC-Address as oppose to the default (TRex port from /etc/trex_config.yaml)

[source,python]
----
def create_stream (self):
 base_pkt =  Ether(src="00:00:dd:dd:00:01")/IP()/UDP() 
 pad = max(0, size - len(base_pkt)) * 'x'
----

** Stream support action_count. Loop of streams can end after action_count number. The push command uses this new feature to import pcap to streams and stop after x iteration. 

[source,python]
----
STLStream(  self_start = False, 
            name   ='S2',
            packet = STLPktBuilder(pkt = base_pkt2/pad),
            mode = STLTXSingleBurst( pps = 10, total_pkts = 3 ),
            action_count = 2, # loop 2 times 
            next    = 'S0' 
           )
----

** Support new Field-Engine instructions (variable with step and write with mask). See new sample folder and specification for more info

[source,python]
----
def create_stream (self):

    # 2 MPLS label the internal with  s=1 (last one)
    pkt =  Ether()/MPLS(label=17,cos=1,s=0,ttl=255)/MPLS(label=0,cos=1,s=1,ttl=12)/IP()/UDP()/('x'*20)

    vm = CTRexScRaw( [ STLVmFlowVar(name="mlabel", min_value=1, max_value=2000, size=2, op="inc"), 
                       STLVmWrMaskFlowVar(fv_name="mlabel", pkt_offset= "MPLS:1.label",pkt_cast_size=4, mask=0xFFFFF000,shift=12) # write mask
                      ]
                   )
----

[source,python]
----
 vm = CTRexScRaw( [ STLVmFlowVar(name="mac_src", min_value=1, max_value=30, size=1, op="dec",step=7), # step 
                STLVmWrFlowVar(fv_name="mac_src", pkt_offset= 11) 
               ]
            )
----

** More profile samples (native/hlt)


== Release 1.91  ==

* Convert Stateless traffic profile to Scapy see `stl/*.py` sample folder
* Add HLTAPI tests and profile `stl/hlt/*.py`
* Fix simulator path issue fix
* The Stateless python library is not self-contained.  in `automation/trex_control_plane/stl/` library is `automation/trex_control_plane/stl/trex_stl_lib/` (import trex_stl_lib)

How to run the simulator 
[source,bash]
----
./stl-sim -f stl/udp_1pkt_range_clients_split.py -o b.pcap -l 100 -c 2
----

* Add push command to convert pcap to streams 

-------------------
TRex > push --help
usage: push [-h] -f FILE [--port PORTS [PORTS ...] | -a] [-d TIME]
            [-i IPG_USEC] [-s SPEEDUP] [--force]

optional arguments:
  -h, --help            show this help message and exit
  -f FILE               File path to load
  --port PORTS [PORTS ...]
                        A list of ports on which to apply the command
  -a                    Set this flag to apply the command on all available
                        ports
  -d TIME               Set duration time for job.
  -i IPG_USEC, --ipg IPG_USEC
                        IPG value in usec between packets. default will be
                        from the pcap
  -s SPEEDUP, --speedup SPEEDUP
                        Factor to accelerate the injection. effectively means
                        IPG = IPG / SPEEDUP
  --force               Set if you want to stop active ports before appyling
                        command.
TRex >push -f cap2/dns.pcap  --port 0 -i 10  
-------------------



== Release 1.90  ==

* Missing file in the pkg

== Release 1.89  ==

* Integrate Scapy as a packet builder see `stl/profiles` folder 
* Improve Python API, samples can be seen link:https://github.com/cisco-system-traffic-generator/trex-core/tree/master/scripts/api/stl/examples[here] 
* Add Stateless simulator into the package 

Example how to run 
[source,bash]
----
./stl-sim -f stl/profiles/udp_1pkt.py -l 10 -o a.pcap            #<1>
./stl-sim -f stl/profiles/udp_1pkt_tuple_gen.py -l 20 -o a.pcap  #<2>
./stl-sim -f stl/profiles/imix.py -l 100 -o a.pcap  --json       #<3>
----
<1> Limit the number of packets to 10 
<2> Tuple generator example 
<3> imix 

The simulator takes Stateless profile,YAML or Py and output pcap file or json  

* Console can load the new Python profile 

[source,bash]
----
TRex > start -f stl/profiles/udp_1pkt.py -a -m 1mbps 
----

* Basic Python HLTAPI support 

=== fix issues: ===

* Dependent streams (e.g. `stl/burst_1000_pkt.yaml`) can be loaded 

== Release 1.88  ==

* Add the Python API to the package 
* Remove mock support 

== Release 1.87  ==

* Fix some 82599 ierror in case of high rate 
* First Stateless API examples under api folder (not part of the package)


== Release 1.86  ==

* NAT Cisco ASA support 
** Add support for learning using TCP-ACK field see more here link:trex_manual.html#_nat_support[here] and link:trex_manual.html#_trex_with_asa_5585[here]
* More stateless support 

== Release 1.85  ==

* Upgrade to DPDK 2.2.0  
** Some XL710/X710 NIC phy issues solved
** VMXNET3 driver is optimized 
** Cisco VIC should be supported, not tested yet
* Jumbo packet size is supported for 1/10/40 Intel NIC  up to 9K for both stateless and stateful 
* youTrack is public now, can be seen here link:http://trex-tgn.cisco.com/youtrack[here] 
* More stateless support 
** Support random packet size trim instruction - see stl/udp_rand_size_9k.yaml for an example
** Move Python Regression to trex-core 
** Add Coverity scripts 
** Console/Python API can be call from Cisco CEL now (ZMQ Python library is compiled to an old glibc)
** Add simulator for stateless 

=== fix issues: ===

* The infamous DPDK error is not seen in case of a wrong core argument see here link:http://trex-tgn.cisco.com/youtrack/issue/trex-147[trex-147] 

== Release 1.84  ==

* more stateless support
** Add splitter range support see "split_by_var" in style/imix_1pkt_vm. yaml
** Add more samples see stl/syn_attack_sample.yaml. Improve random performance 
** more improvement with TUI window


== Release 1.83  ==

* more stateless support
** Add basic Packet Field engine see stl/imin_1pkt_vm.yaml
** some improvement with TUI window. Can be run in parallel with --tui option

== Release 1.82  ==

* more stateless support
** console stats/tui function works now 
** R/W support. only one client has R/W capability 
* XL710/X710 support ICMP filter 

=== fix issues: ===

* link:http://trex-tgn.cisco.com/youtrack/trex-110[trex-110]


== Release 1.81  ==

* more stateless support and fixes 
** change the JSON-RPC result format 
* Support for specifying different modes for the packets used for latency measurement. Details link:trex_manual.html#_measure_jitter_latency[here].

=== fix issues: ===

* link:http://trex-tgn.cisco.com/youtrack/issue/trex-149[trex-149]

== Release 1.80  ==

* more stateless support
** All type of streams are supported (Continues/Burst/Multi-burst)
** Stream can call to other streams
** start/stop/pause/resume work from the Console
** -m[rate] is supported for example -m10gbps or -m10kpps from console 
** update XL710 installation support 

== Release 1.79  ==

* Initial support for stateless 
** Only continues streams are supported 
** more info how to enable the interactive shell link:trex_console.html[here]

== Release 1.78  ==

* some clean up in tuple generator 
* trex stateles console works with trex-mock

=== fix issues: ===

Python API fixup see here  

* link:http://trex-tgn.cisco.com/youtrack/issue/trex-126[trex-126] 
* link:http://trex-tgn.cisco.com/youtrack/issue/trex-123[trex-122] 

Check for 64bit Kernel

* link:http://trex-tgn.cisco.com/youtrack/issue/trex-123[trex-123] 

== Release 1.77  ==

* improve tuple generator capability now it is more flexiable see more link:trex_manual.html#_clients_servers_ip_allocation_scheme[here]

== Release 1.76  ==

=== fix issues: ===

* minor pcap loader issues  
* plugin cleanup 
                 

== Release 1.75  ==

=== fix issues: ===

* First version that works from GitHub/Git - init script are in the output package 

== Release 1.72  ==


