This demo/lab will guide you to install and configure FD.io Vector Packet Processing (VPP) on Intel® Architecture (AI) Server. You will also learn to install TRex* on another AI Server to send packets to the VPP, and use some VPP commands to forward packets back to the TRex*.
Speaker: Loc Nguyen. Loc is a Software Application Engineer in Data Center Scale Engineering Team. Loc joined Intel in 2005, and has worked in various projects. Before joining the network group, Loc worked in High-Performance Computing area and supported Intel® Xeon Phi™ Product Family. His interest includes computer graphics, parallel computing, and computer networking.
6. 6
Vector Packet Processing (VPP) Introduction
Vector Packet Processing is the open source high-performance packet
processing software, in development since 2002.
Open source version of Cisco’s VPP Technology.
The VPP platform provides a production-quality switch/router functionality.
It uses Data Plane Development Kit (DPDK) to take advantage of fast I/O.
DPDK provides fast packet processing libraries and user space drivers. It can
receive and send packets with the minimum number of CPU cycle by
bypassing the kernel and use a user poll mode driver.
7. 7
Vector Packet Processing (continued)
• Packet Processing Graph: VPP reads a large number of packets (called
vector) from the network I/O layer (DPDK input), then passes it to the packet
processing graph where each node provides a specific network function to
packets and each directed edge indicates the next network function that
handle the packets.
• Handle packet processing in batches, up to 256 packets at a time. The whole
vector of packets is processed by a graph node. When done, the whole vector
is moved to the next graph node.
• When a vector of packets is handled by a node, only the first packet in the
batch needs to load the CPU’s instructions to the cache; the rest of the
packets can benefit the from the instruction already in the cache.
8. 8
Vector Packet Processing (continued)
VPP architecture is flexible to allow users to create new nodes, enter them into
the packet processing graph, and rearrange the graph.
Run in user space.
VPP can be used on bare metal, virtual machines (VMs), or containers.
Run on x86, ARM, Power* architecture.
10. 10
Cisco’s TRex*
• An open source traffic generator (Realistic Traffic Generator).
• Run on Intel® processor.
• Based on DPDK.
• Work with Intel® NICs.
• Can generate L4-L7 traffic based on pre-processing of real traffic templates.
11. 11
Stateful Feature sets
DPDK 1/2.5/5/10/25/40/50/100Gbps
interfaces support
High scale of realistic traffic, up to 200-
400Gb/sec with one Cisco UCS
Latency/Jitter measurements
Flow ordering checks
NAT, PAT dynamic translation learning
Stateless Feature sets
Crafting and generating stateless traffic
streams
Large scale - Supports up to 20 million
packets per second (mpps)
Multiple streams support
Ability to change any field inside the packet
Continuous/Burst/Multi-burst support
Interactive support - Console, GUI
Per stream statistics, latency and Jitter
Python API for automation
Some TRex Features
(source https://trex-tgn.cisco.com/ )
12. • Download and build VPP
• Download Trex*
• Configure VPP and TRex
• Test
13. 13
The Lab Environment
• Two servers are used: Intel® Xeon® Gold 6140 CPU processor @ 2.30GHz,
two sockets with 18 cores/socket; and E5-2699 v4 @ 2.2 GHz, two sockets
with 22 cores/socket. 64-bit Ubuntu* 16.04 LTS are installed.
• On each server, a dual port 25-GbE Intel® Ethernet Controller XXV710 are
used to connect these systems. Refer to the following Figure for the setting.
15. 15
Login
• Use an ssh client to connect to the jump server at 207.108.8.164. (PuTTY is a
good ssh client for Windows machines.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html )
• Use the username and password provided for the jump server.
• Once connected to the jump server, you can connect via SSH to the server
dskl10 where you will install VPP.
• $ ssh ubuntu@dskl10 , password: ubuntu .
• From the jump server, you can connect via SSH to your second server,
dbdw01 where you will install TRex.
• $ ssh ubuntu@dbdw01 , password: ubuntu .
16. 16
VPP Configuration
• After VPP is installed, two VPP configuration files are created.
o The /etc/sysctl.d/80-vpp.conf file is used to configure huge pages.
o The /etc/vpp/startup.conf file is used to configure how the worker
thread are allocated.
• You can use VPP CLI (vppctl) to configure Network cards, add route in the
VPP, etc.
17. 17
TRex Configuration
• By default, a configuration file located at /etc/trex_cfg.yaml, is used by
TRex when it starts (configure the Network ports).
• Each test is executed by calling a corresponding traffic configuration file. In
this lab, we use the following sample traffic configuration files:
o cap2/dns.yaml
o sfr_delay_10_1g.yaml
18. 18
References
• VPP Overview https://www.youtube.com/watch?v=ifzv-V_ec30
• FDIO Quick Start Guide
https://docs.google.com/document/d/1zqYN7qMavgbdkPWIJIrsPXlxNOZ_Gh
EveHQxpYr3qrg/edit
• Data Plane Development Kit (DPDK) Documentation http://dpdk.org/doc
• TRex* Documentation https://trex-tgn.cisco.com/trex/doc/
• Building a Fast Network Stack with Vector Packet Processing (VPP) on an
Intel® Architecture Server https://software.intel.com/en-us/articles/build-a-
fast-network-stack-with-vpp-on-an-intel-architecture-server