From ad4426e565e4066a9af4ac8058a0efb6cf29db42 Mon Sep 17 00:00:00 2001 From: jdenisco Date: Mon, 26 Nov 2018 15:15:09 -0500 Subject: [PATCH] docs: Add more on trex Change-Id: Ifb5eabe30e1b0ba911ddf455573cc346ff4bec85 Signed-off-by: jdenisco --- docs/about.rst | 4 +- docs/usecases/index.rst | 2 + docs/usecases/simpleperf/index.rst | 2 + docs/usecases/simpleperf/trex.rst | 8 -- docs/usecases/simpleperf/trex1.rst | 12 --- docs/usecases/simpleperf/trex2.rst | 192 +++++++++++++++++++++++++++++++++++++ docs/usecases/simpleperf/trex3.rst | 27 ++++++ 7 files changed, 225 insertions(+), 22 deletions(-) create mode 100644 docs/usecases/simpleperf/trex2.rst create mode 100644 docs/usecases/simpleperf/trex3.rst diff --git a/docs/about.rst b/docs/about.rst index 092da576abf..91c907b3585 100644 --- a/docs/about.rst +++ b/docs/about.rst @@ -4,6 +4,6 @@ About ===== -**VPP Version:** 19.01-rc0~238-g2419508 +**VPP Version:** 19.01-rc0~326-g162989e -**Built on:** Tue Nov 13 17:37:07 GMT 2018 +**Built on:** Mon Nov 26 20:07:23 GMT 2018 diff --git a/docs/usecases/index.rst b/docs/usecases/index.rst index e6287f38931..735947cd994 100644 --- a/docs/usecases/index.rst +++ b/docs/usecases/index.rst @@ -14,3 +14,5 @@ extensive list, but should give a sampling of the many features contained in FD. vhost/index.rst homegateway contiv/index.rst + + diff --git a/docs/usecases/simpleperf/index.rst b/docs/usecases/simpleperf/index.rst index 0f1d30737eb..c1cbf58cde1 100644 --- a/docs/usecases/simpleperf/index.rst +++ b/docs/usecases/simpleperf/index.rst @@ -11,6 +11,8 @@ VPP with Iperf3 and TRex iperf31 trex trex1 + trex2 + trex3 diff --git a/docs/usecases/simpleperf/trex.rst b/docs/usecases/simpleperf/trex.rst index 3dffcab4675..996ed156d10 100644 --- a/docs/usecases/simpleperf/trex.rst +++ b/docs/usecases/simpleperf/trex.rst @@ -66,13 +66,6 @@ information on the configuration file, please refer to the `TRex Manual `_. + +In this section we show some simple examples using TRex stateless mode. These examples use +the configuration as shown in the section :ref:`trex`. These examples we will be using VMWare VMs. + +To use TRex stateless mode we use 2 terminals on the TRex traffic generator node. One terminal will +be used for the TRex console and one to monitor the traffic. + +In one of terminals start TRex in stateless mode. Use *Ctrl-C* to stop. + +.. code-block:: console + + # cd v2.46/ + # ./trex -i + -Per port stats table + ports | 0 | 1 | 2 | 3 + ----------------------------------------------------------------------------------------- + opackets | 0 | 0 | 0 | 0 + obytes | 0 | 0 | 0 | 0 + ipackets | 6 | 6 | 5 | 5 + ibytes | 384 | 384 | 320 | 320 + ierrors | 0 | 0 | 0 | 0 + oerrors | 0 | 0 | 0 | 0 + Tx Bw | 0.00 bps | 0.00 bps | 0.00 bps | 0.00 bps + + -Global stats enabled + Cpu Utilization : 0.0 % + Platform_factor : 1.0 + Total-Tx : 0.00 bps + Total-Rx : 238.30 bps + Total-PPS : 0.00 pps + Total-CPS : 0.00 cps + + Expected-PPS : 0.00 pps + Expected-CPS : 0.00 cps + Expected-BPS : 0.00 bps + + Active-flows : 0 Clients : 0 Socket-util : 0.0000 % + Open-flows : 0 Servers : 0 Socket : 0 Socket/Clients : -nan + drop-rate : 0.00 bps + current time : 21.4 sec + test duration : 0.0 sec + *** TRex is shutting down - cause: 'CTRL + C detected' + All cores stopped !! + +In the other terminal start the TRex console. With this console we will execute the TRex commands. + +.. code-block:: console + + # cd v2.46/ + # ./trex -console + + Using 'python' as Python interpeter + + + Connecting to RPC server on localhost:4501 [SUCCESS] + + + Connecting to publisher server on localhost:4500 [SUCCESS] + + + Acquiring ports [0, 1, 2, 3]: [SUCCESS] + + + Server Info: + + Server version: v2.46 @ STL + Server mode: Stateless + Server CPU: 2 x Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz + Ports count: 4 x 10Gbps @ VMXNET3 Ethernet Controller + + -=TRex Console v3.0=- + + Type 'help' or '?' for supported actions + trex> + +Start some traffic using the **stl/imix.py** traffic profile. + +.. code-block:: console + + trex>start -f ./stl/imix.py -p 0 1 2 3 -m 9475mbps + + Removing all streams from port(s) [0, 1, 2, 3]: [SUCCESS] + + + Attaching 3 streams to port(s) [0]: [SUCCESS] + + + Attaching 3 streams to port(s) [1]: [SUCCESS] + + + Attaching 3 streams to port(s) [2]: [SUCCESS] + + + Attaching 3 streams to port(s) [3]: [SUCCESS] + + + Starting traffic on port(s) [0, 1, 2, 3]: [SUCCESS] + + 80.94 [ms] + + trex> + +The **-f ./stl/imix.py** argument specifies the file that is used to create the +traffic profile. The argument **-p 0 1 2 3** specifies the ports to be used. +The argument **-m 9475mbps** the number of packets/sec to be used. +All the arguments can be displayed with the **-h** argument. + +In the other terminal the display shows the statistics related the traffic flows. + +.. code-block:: console + + -Per port stats table + ports | 0 | 1 | 2 | 3 + ----------------------------------------------------------------------------------------- + opackets | 789907304 | 789894738 | 790017701 | 790017132 + obytes | 285397726750 | 285392406754 | 285406864578 | 285405883070 + ipackets | 1563501970 | 45 | 1563504693 | 44 + ibytes | 564870783050 | 2880 | 564873491682 | 2816 + ierrors | 15728759 | 0 | 15732451 | 0 + oerrors | 0 | 0 | 0 | 0 + Tx Bw | 606.55 Mbps | 606.19 Mbps | 606.25 Mbps | 606.51 Mbps + + -Global stats enabled + Cpu Utilization : 100.0 % 2.4 Gb/core + Platform_factor : 1.0 + Total-Tx : 2.43 Gbps + Total-Rx : 2.40 Gbps + Total-PPS : 841.44 Kpps + Total-CPS : 0.00 cps + + Expected-PPS : 0.00 pps + Expected-CPS : 0.00 cps + Expected-BPS : 0.00 bps + + Active-flows : 0 Clients : 0 Socket-util : 0.0000 % + Open-flows : 0 Servers : 0 Socket : 0 Socket/Clients : -nan + Total_queue_full : 6529970196 + drop-rate : 0.00 bps + current time : 4016.8 sec + test duration : 0.0 sec + +More statistics can be displayed on the TRex console using the **tui** command. + +.. code-block:: console + + trex>tui + + Global Statistitcs + + connection : localhost, Port 4501 total_tx_L2 : 2.45 Gb/sec + version : STL @ v2.46 total_tx_L1 : 2.59 Gb/sec + cpu_util. : 99.89% @ 2 cores (1 per port) total_rx : 2.42 Gb/sec + rx_cpu_util. : 4.03% / 837.39 Kpkt/sec total_pps : 846.96 Kpkt/sec + async_util. : 0.05% / 1.76 KB/sec drop_rate : 0 b/sec + queue_full : 42,750,771 pkts + + Port Statistics + + port | 0 | 1 | 2 | 3 | total + -----------+-------------------+-------------------+-------------------+-------------------+------------------ + owner | root | root | root | root | + link | UP | UP | UP | UP | + state | TRANSMITTING | TRANSMITTING | TRANSMITTING | TRANSMITTING | + speed | 10 Gb/s | 10 Gb/s | 10 Gb/s | 10 Gb/s | + CPU util. | 99.89% | 99.89% | 99.89% | 99.89% | + -- | | | | | + Tx bps L2 | 612.76 Mbps | 613.07 Mbps | 612.52 Mbps | 612.77 Mbps | 2.45 Gbps + Tx bps L1 | 646.64 Mbps | 646.96 Mbps | 646.4 Mbps | 646.64 Mbps | 2.59 Gbps + Tx pps | 211.72 Kpps | 211.8 Kpps | 211.73 Kpps | 211.71 Kpps | 846.96 Kpps + Line Util. | 6.47 % | 6.47 % | 6.46 % | 6.47 % | + --- | | | | | + Rx bps | 1.21 Gbps | \u25bc\u25bc\u25bc 23.03 bps | 1.21 Gbps | 5.94 bps | 2.42 G bps + Rx pps | 418.59 Kpps | 0.04 pps | 418.77 Kpps | 0.01 pps | 837.36 Kpps + ---- | | | | | + opackets | 5227126 | 5227271 | 5432528 | 5432354 | 21319279 + ipackets | 10526000 | 5 | 10527054 | 4 | 21053063 + obytes | 1890829910 | 1891039152 | 1965259162 | 1965124338 | 7712252562 + ibytes | 3807894454 | 320 | 3808149896 | 256 | 7616044926 + tx-pkts | 5.23 Mpkts | 5.23 Mpkts | 5.43 Mpkts | 5.43 Mpkts | 21.32 Mpkts + rx-pkts | 10.53 Mpkts | 5 pkts | 10.53 Mpkts | 4 pkts | 21.05 Mpkts + tx-bytes | 1.89 GB | 1.89 GB | 1.97 GB | 1.97 GB | 7.71 GB + rx-bytes | 3.81 GB | 320 B | 3.81 GB | 256 B | 7.62 GB + ----- | | | | | + oerrors | 0 | 0 | 0 | 0 | 0 + ierrors | 133,370 | 0 | 132,529 | 0 | 265,899 diff --git a/docs/usecases/simpleperf/trex3.rst b/docs/usecases/simpleperf/trex3.rst new file mode 100644 index 00000000000..e1014e52e2f --- /dev/null +++ b/docs/usecases/simpleperf/trex3.rst @@ -0,0 +1,27 @@ +.. _trex3: + +Examples +======== + +There are many examples of how to create traffic flows in the directories below the +TRex root directory. The stateless examples are written in Python and are found in +the **./stl** directory. Examine the directories **./avl/, ./stl and ./cap2**. A few +simple examples are as follows: + +* ./cap2/dns.yaml - Used in the first example +* ./avl/sfr_delay_10_1g.yaml - Used in the second example +* ./cap2/imix*.yaml - Uses some imix traffic profiles. +* ./stl/udp_1pkt.py - UDP example +* ./stl/imix.py - Simple imix example + +Summary +======= + +This tutorial showed how to download, compile, and install the VPP binary on an +Intel® Architecture platform. Examples of /etc/sysctl.d/80-vpp.conf and +/etc/vpp/startup.conf/startup.conf configuration files were provided to get the +user up and running with VPP. The tutorial also illustrated how to detect and bind +the network interfaces to a DPDK-compatible driver. You can use the VPP CLI to assign +IP addresses to these interfaces and bring them up. Four examples using iperf3 +and TRex were included, to show how VPP processes packets in batches. We +also showed how to use TRex in stateless mode and examine traffic flow statistics. -- 2.16.6