ad4426e565
Change-Id: Ifb5eabe30e1b0ba911ddf455573cc346ff4bec85 Signed-off-by: jdenisco <jdenisco@cisco.com>
126 lines
4.5 KiB
ReStructuredText
126 lines
4.5 KiB
ReStructuredText
.. _trex:
|
|
|
|
Using VPP with TRex
|
|
===================
|
|
|
|
In this example we use only two systems, *csp2s22c03* and *net2s22c05*, to run
|
|
**TRex** VPP is installed on **csp2s22c03** and run as a packet forwarding
|
|
engine. On *net2s22c05*, TRex is used to generate both client and server-side
|
|
traffic. **TRex** is a high-performance traffic generator. It leverages DPDK and
|
|
run in user space. Figure 2 illustrates this configuration.
|
|
|
|
VPP is set up on *csp2s22c03* exactly as it was in the previous example. Only
|
|
the setup on *net2s22c05* is modified slightly to run TRex preconfigured traffic
|
|
files.
|
|
|
|
.. figure:: /_images/trex.png
|
|
|
|
Figure 2: The TRex traffic generator sends packages to the host that has VPP running.
|
|
|
|
|
|
First we install **TRex**.
|
|
|
|
.. code-block:: console
|
|
|
|
NET2S22C05$ wget --no-cache http://trex-tgn.cisco.com/trex/release/latest
|
|
NET2S22C05$ tar -xzvf latest
|
|
NET2S22C05$ cd v2.37
|
|
|
|
Then show the devices we have.
|
|
|
|
.. code-block:: console
|
|
|
|
NET2S22C05$ sudo ./dpdk_nic_bind.py -s
|
|
|
|
Network devices using DPDK-compatible driver
|
|
============================================
|
|
0000:87:00.0 'Ethernet Controller XL710 for 40GbE QSFP+' drv=vfio-pci unused=i40e
|
|
0000:87:00.1 'Ethernet Controller XL710 for 40GbE QSFP+' drv=vfio-pci unused=i40e
|
|
|
|
Network devices using kernel driver
|
|
===================================
|
|
0000:03:00.0 'Ethernet Controller 10-Gigabit X540-AT2' if=enp3s0f0 drv=ixgbe unused=vfio-pci *Active*
|
|
0000:03:00.1 'Ethernet Controller 10-Gigabit X540-AT2' if=enp3s0f1 drv=ixgbe unused=vfio-pci
|
|
0000:81:00.0 '82599 10 Gigabit TN Network Connection' if=ens787f0 drv=ixgbe unused=vfio-pci
|
|
0000:81:00.1 '82599 10 Gigabit TN Network Connection' if=ens787f1 drv=ixgbe unused=vfio-pci
|
|
|
|
Other network devices
|
|
=====================
|
|
<none>
|
|
|
|
Create the */etc/trex_cfg.yaml* configuration file. In this configuration file,
|
|
the port should match the interfaces available in the target system, which is
|
|
*net2s22c05* in our example. The IP addresses correspond to Figure 2. For more
|
|
information on the configuration file, please refer to the `TRex Manual <http://trex-tgn.cisco.com/trex/doc/index.html>`_.
|
|
|
|
.. code-block:: console
|
|
|
|
NET2S22C05$ cat /etc/trex_cfg.yaml
|
|
- port_limit: 2
|
|
version: 2
|
|
interfaces: ['87:00.0', '87:00.1']
|
|
port_bandwidth_gb: 40
|
|
port_info:
|
|
- ip: 10.10.2.2
|
|
default_gw: 10.10.2.1
|
|
- ip: 10.10.1.2
|
|
default_gw: 10.10.1.1
|
|
|
|
Stop the previous VPP session and start it again in order to add a route for new
|
|
IP addresses 16.0.0.0/8 and 48.0.0.0/8, according to Figure 2. Those IP addresses
|
|
are needed because TRex generates packets that use these addresses. Refer to the
|
|
`TRex Manual <http://trex-tgn.cisco.com/trex/doc/index.html>`_ for details on
|
|
these traffic templates.
|
|
|
|
.. code-block:: console
|
|
|
|
csp2s22c03$ sudo service vpp stop
|
|
csp2s22c03$ sudo service vpp start
|
|
csp2s22c03$ sudo vppctl
|
|
_______ _ _ _____ ___
|
|
__/ __/ _ \ (_)__ | | / / _ \/ _ \
|
|
_/ _// // / / / _ \ | |/ / ___/ ___/
|
|
/_/ /____(_)_/\___/ |___/_/ /_/
|
|
|
|
vpp# sho int
|
|
Name Idx State Counter Count
|
|
FortyGigabitEthernet82/0/0 1 down
|
|
FortyGigabitEthernet82/0/1 2 down
|
|
local0 0 down
|
|
|
|
vpp#
|
|
vpp# set interface ip address FortyGigabitEthernet82/0/0 10.10.1.1/24
|
|
vpp# set interface ip address FortyGigabitEthernet82/0/1 10.10.2.1/24
|
|
vpp# set interface state FortyGigabitEthernet82/0/0 up
|
|
vpp# set interface state FortyGigabitEthernet82/0/1 up
|
|
vpp# ip route add 16.0.0.0/8 via 10.10.1.2
|
|
vpp# ip route add 48.0.0.0/8 via 10.10.2.2
|
|
vpp# clear run
|
|
|
|
Now, you can generate a simple traffic flow from *net2s22c05* using the traffic
|
|
configuration file "cap2/dns.yaml".
|
|
|
|
.. code-block:: console
|
|
|
|
NET2S22C05$ sudo ./t-rex-64 -f cap2/dns.yaml -d 1 -l 1000
|
|
summary stats
|
|
--------------
|
|
Total-pkt-drop : 0 pkts
|
|
Total-tx-bytes : 166886 bytes
|
|
Total-tx-sw-bytes : 166716 bytes
|
|
Total-rx-bytes : 166886 byte
|
|
|
|
Total-tx-pkt : 2528 pkts
|
|
Total-rx-pkt : 2528 pkts
|
|
Total-sw-tx-pkt : 2526 pkts
|
|
Total-sw-err : 0 pkts
|
|
Total ARP sent : 4 pkts
|
|
Total ARP received : 2 pkts
|
|
maximum-latency : 35 usec
|
|
average-latency : 8 usec
|
|
latency-any-error : OK
|
|
|
|
On *csp2s22c03*, the *show run* command displays the graph runtime statistics.
|
|
|
|
.. figure:: /_images/build-a-fast-network-stack-terminal-2.png
|