<commit_before>TRex 
====
:author: hhaim 
:email: <<EMAIL>> 
:revnumber: 1.77-0.0
:quotes.++:
:numbered:
:web_server_url: http://trex-tgn.cisco.com/trex
:local_web_server_url: csi-wiki-01:8181/trex


== Change log

[options="header",cols="^1,^h,3a"]
|=================
| Version |  name   |  meaning
| 1.77-0.0    |  <NAME> (hhaim) |
- initail versions
| 1.77.1    | <NAME> (danklei)
|
- fixed ISO images references and supported linux supported OS

|=================


== Introduction

=== A word on traffic generators

Traditionally, routers have been tested using commercial traffic generators, while performance
typically has been measured using packets per second (PPS) metrics. As router functionality and
services have become more complex, stateful traffic generators have become necessary to
provide more realistic application traffic scenarios.
The advantages of realistic traffic generators are:

* Providing more accurate performance numbers
* Finding real bottlenecks

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

=== Overview of TRex

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

* 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 ( using Intel 40Gb/sec NICS)
* 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
** Cisco LaaS
** TRex on your laptop
** Self-contained packaging that can be easily installed and deployed


.TRex Hardware 
[options="header",cols="1^,1^"]
|=================
|Cisco UCS Platform | Intel NIC 
| image:images/ucs200_2.png[title="generator"] | image:images/Intel520.png[title="generator"]  
|=================

=== Purpose of this guide

This guide explains the use of TRex internals and the use of TRex in conjunction with Cisco ASR1000 Series routers. The examples illustrate novel traffic generation techniques made possible by TRex. 

== Download and installation

=== Hardware recommendation

TRex operates in a Linux application environment, interacting with Linux kernel modules. 
TRex curretly works on x86 architecture and can operates well on Cisco UCS hardware. The following platforms have been tested and are recommended for operating TRex. 

[NOTE]
=====================================
 A high-end UCS platform is not required for operating TRex in its current version, but may be required for future versions.
=====================================
 

.Preferred UCS 
[options="header",cols="1,3"]
|=================
| UCS Type | Comments 
| UCS C220 M3/M4  | Supports up to 40Gb/sec with 540-D2 and with newer Intel NIC 80Gb/sec with 1RU, recommended
| UCS C200| Early UCS model
| UCS C210 M2 | Supports up to 40Gb/sec  PCIe3.0
| UCS C240 M3 | Supports up to 200Gb/sec  using Intel XL710 NICS
| UCS C260M2 | Supports up to 30Gb/sec due to V2 PCIe. 
|=================

.Internal Components
[options="header",cols="1,2",width="60%"]
|=================
| Components |  Details 
| CPU  | 2x CPU E5-2620 
| CPU Configuration | 2-Socket CPU configurations (can also work with one CPU)	 
| Memory | 2x4 banks for each CPU. Total of 8 BANKS ==> 32GB	 
| NO RAID | NO RAID
|=================
 
.Intel NICS supported
[options="header",cols="1,1,2",width="50%"]
|=================
| Bandwidth | Chipset |  Example
| 1Gb/sec  | Intel I350 | Intel 4x1GE 350-T4 NIC
| 10Gb/sec | Intel 82599  | Intel x520-D2  Cisco Order tool 2X Intel N2XX-AIPCI01, Intel X520 Dual Port 10Gb SFP+ Adapter
| 40Gb/sec | Intel XL710  | QSFP+
| VMXNET   | VMware paravirtualize  | connect using vmWare vSwitch
| E1000    | paravirtualize  | vmWare/KVM/VirtualBox 
|=================

IMPORTANT: Intel SFP+ 10Gb/Sec is the only one supported by default on the standard Linux driver. TRex also supports Cisco 10Gb/sec SFP+. 

.Sample order for UCSC-C220-M3S with 4x10Gb ports
[options="header",cols="2,1^",width="50%"]
|=================
| Component  | Amount
| UCSC-C220-M3S     |  1
| UCS-CPU-E5-2650   |  2
|  UCS-MR-1X041RY-A |  8
|  A03-D500GC3      |  1
|  N2XX-AIPCI01     |  2
|  UCSC-PSU-650W    |  1
|  SFS-250V-10A-IS  |  1
|  UCSC-CMA1        |  1
|  UCSC-HS-C220M3   |  2
|  N20-BBLKD        |  7
|  UCSC-PSU-BLKP    |  1
|  UCSC-RAIL1       |  1
|========================  

NOTE: You should buy seperatly the 10Gb/sec SFP+, Cisco would be fine with TRex ( but not for plain Linux driver ).

=== Install OS 

==== Supported versions

Fedora 18-20, and Ubuntu 14.04.1 LTS are the Linux OS supported. 
More OS could be supported by compiling the drivers.

==== Download ISO file 
<commit_msg>64bit kernels are supported<commit_after>TRex 
====
:author: hhaim 
:email: <<EMAIL>> 
:revnumber: 1.77-0.0
:quotes.++:
:numbered:
:web_server_url: http://trex-tgn.cisco.com/trex
:local_web_server_url: csi-wiki-01:8181/trex


== Change log

[options="header",cols="^1,^h,3a"]
|=================
| Version |  name   |  meaning
| 1.77-0.0    |  <NAME> (hhaim) |
- initail versions
| 1.77.1    | <NAME> (danklei)
|
- fixed ISO images references and supported linux supported OS

|=================


== Introduction

=== A word on traffic generators

Traditionally, routers have been tested using commercial traffic generators, while performance
typically has been measured using packets per second (PPS) metrics. As router functionality and
services have become more complex, stateful traffic generators have become necessary to
provide more realistic application traffic scenarios.
The advantages of realistic traffic generators are:

* Providing more accurate performance numbers
* Finding real bottlenecks

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

=== Overview of TRex

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

* 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 ( using Intel 40Gb/sec NICS)
* 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
** Cisco LaaS
** TRex on your laptop
** Self-contained packaging that can be easily installed and deployed


.TRex Hardware 
[options="header",cols="1^,1^"]
|=================
|Cisco UCS Platform | Intel NIC 
| image:images/ucs200_2.png[title="generator"] | image:images/Intel520.png[title="generator"]  
|=================

=== Purpose of this guide

This guide explains the use of TRex internals and the use of TRex in conjunction with Cisco ASR1000 Series routers. The examples illustrate novel traffic generation techniques made possible by TRex. 

== Download and installation

=== Hardware recommendation

TRex operates in a Linux application environment, interacting with Linux kernel modules. 
TRex curretly works on x86 architecture and can operates well on Cisco UCS hardware. The following platforms have been tested and are recommended for operating TRex. 

[NOTE]
=====================================
 A high-end UCS platform is not required for operating TRex in its current version, but may be required for future versions.
=====================================
 

.Preferred UCS 
[options="header",cols="1,3"]
|=================
| UCS Type | Comments 
| UCS C220 M3/M4  | Supports up to 40Gb/sec with 540-D2 and with newer Intel NIC 80Gb/sec with 1RU, recommended
| UCS C200| Early UCS model
| UCS C210 M2 | Supports up to 40Gb/sec  PCIe3.0
| UCS C240 M3 | Supports up to 200Gb/sec  using Intel XL710 NICS
| UCS C260M2 | Supports up to 30Gb/sec due to V2 PCIe. 
|=================

.Internal Components
[options="header",cols="1,2",width="60%"]
|=================
| Components |  Details 
| CPU  | 2x CPU E5-2620 
| CPU Configuration | 2-Socket CPU configurations (can also work with one CPU)	 
| Memory | 2x4 banks for each CPU. Total of 8 BANKS ==> 32GB	 
| NO RAID | NO RAID
|=================
 
.Intel NICS supported
[options="header",cols="1,1,2",width="50%"]
|=================
| Bandwidth | Chipset |  Example
| 1Gb/sec  | Intel I350 | Intel 4x1GE 350-T4 NIC
| 10Gb/sec | Intel 82599  | Intel x520-D2  Cisco Order tool 2X Intel N2XX-AIPCI01, Intel X520 Dual Port 10Gb SFP+ Adapter
| 40Gb/sec | Intel XL710  | QSFP+
| VMXNET   | VMware paravirtualize  | connect using vmWare vSwitch
| E1000    | paravirtualize  | vmWare/KVM/VirtualBox 
|=================

IMPORTANT: Intel SFP+ 10Gb/Sec is the only one supported by default on the standard Linux driver. TRex also supports Cisco 10Gb/sec SFP+. 

.Sample order for UCSC-C220-M3S with 4x10Gb ports
[options="header",cols="2,1^",width="50%"]
|=================
| Component  | Amount
| UCSC-C220-M3S     |  1
| UCS-CPU-E5-2650   |  2
|  UCS-MR-1X041RY-A |  8
|  A03-D500GC3      |  1
|  N2XX-AIPCI01     |  2
|  UCSC-PSU-650W    |  1
|  SFS-250V-10A-IS  |  1
|  UCSC-CMA1        |  1
|  UCSC-HS-C220M3   |  2
|  N20-BBLKD        |  7
|  UCSC-PSU-BLKP    |  1
|  UCSC-RAIL1       |  1
|========================  

NOTE: You should buy seperatly the 10Gb/sec SFP+, Cisco would be fine with TRex ( but not for plain Linux driver ).

=== Install OS 

==== Supported versions

Fedora 18-20 , and Ubuntu 14.04.1 LTS are the Linux OS supported. 
You should install the *64bit* Kernel version.
More 64bit OS could be supported by compiling the drivers.

WARNING: Only *64bit* Kernels are supported 

To verify that your kernel is 64bit version try this

[source,bash]
----
$uname -m
x86_64   #<1>
----
<1> x86_64 is the desired output 


==== Download ISO file 

{'fraction_non_alphanumeric': 0.126823408271838, 'fraction_numerical': 0.04067273039299811, 'mean_word_length': 4.254733994589721, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2533212', 'n_tokens_mistral': 3895, 'n_tokens_neox': 3456, 'n_words': 1390}