diff options
author | Dave Barach <dave@barachs.net> | 2021-01-20 12:20:13 -0500 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2021-01-22 14:02:27 +0000 |
commit | b8f6122b4f4c828dee103d1f3116d27e6e3e6f3a (patch) | |
tree | 959988ea721b6539ab4c9e28ccc97d77eb3dce2b /docs/usecases/trafficgen.md | |
parent | 9fecbe1841dbdb6d29fbeae4c3d7ebc728e9692a (diff) |
docs: vpp stateless traffic generator
Add a use-case writeup.
Type: docs
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ib6e79e80455edbdeedcc96943dd98f16c57c559e
Diffstat (limited to 'docs/usecases/trafficgen.md')
-rw-r--r-- | docs/usecases/trafficgen.md | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/docs/usecases/trafficgen.md b/docs/usecases/trafficgen.md new file mode 100644 index 00000000000..fe3d4c98904 --- /dev/null +++ b/docs/usecases/trafficgen.md @@ -0,0 +1,105 @@ +Vpp Stateless Traffic Generation +================================ + +It's simple to configure vpp as a high-performance stateless traffic +generator. A couple of vpp worker threads running on an older system +can easily generate 20 MPPS' worth of traffic. + +In the configurations shown below, we connect a vpp traffic generator +and a vpp UUT using two 40 gigabit ethernet ports on each system: + +``` + +-------------------+ +-------------------+ + | traffic generator | | UUT | + | port 0 | <=======> | port 0 | + | 192.168.40.2/24 | | 192.168.40.1/24 | + +-------------------+ +-------------------+ + + +-------------------+ +-------------------+ + | traffic generator | | UUT | + | port 1 | <=======> | port 1 | + | 192.168.41.2/24 | | 192.168.41.1/24 | + +-------------------+ +-------------------+ +``` + +Traffic Generator Setup Script +------------------------------ + +``` + set int ip address FortyGigabitEthernet2/0/0 192.168.40.2/24 + set int ip address FortyGigabitEthernet2/0/1 192.168.41.2/24 + set int state FortyGigabitEthernet2/0/0 up + set int state FortyGigabitEthernet2/0/1 up + + comment { send traffic to the VPP UUT } + + packet-generator new { + name worker0 + worker 0 + limit 0 + rate 1.2e7 + size 128-128 + tx-interface FortyGigabitEthernet2/0/0 + node FortyGigabitEthernet2/0/0-output + data { IP4: 1.2.40 -> 3cfd.fed0.b6c8 + UDP: 192.168.40.10 -> 192.168.50.10 + UDP: 1234 -> 2345 + incrementing 114 + } + } + + packet-generator new { + name worker1 + worker 1 + limit 0 + rate 1.2e7 + size 128-128 + tx-interface FortyGigabitEthernet2/0/1 + node FortyGigabitEthernet2/0/1-output + data { IP4: 1.2.4 -> 3cfd.fed0.b6c9 + UDP: 192.168.41.10 -> 192.168.51.10 + UDP: 1234 -> 2345 + incrementing 114 + } + } + + comment { delete return traffic on sight } + + ip route add 192.168.50.0/24 via drop + ip route add 192.168.51.0/24 via drop +``` + +Note 1: the destination MAC addresses shown in the configuration (e.g. +3cfd.fed0.b6c8 and 3cfd.fed0.b6c9) **must** match the vpp UUT port MAC +addresses. + +Note 2: this script assumes that /etc/vpp/startup.conf and/or the +command-line in use specifies (at least) two worker threads. Uncomment +"workers 2" in the cpu configuration section of /etc/vpp/startup.conf: + +``` + ## Specify a number of workers to be created + ## Workers are pinned to N consecutive CPU cores while skipping "skip-cores" CPU core(s) + ## and main thread's CPU core + workers 2 +``` + +Any plausible packet generator script - including one which replays +pcap captures - can be used. + + +UUT Setup Script +---------------- + +The vpp UUT uses a couple of static routes to forward traffic back to +the traffic generator: + +``` + set int ip address FortyGigabitEthernet2/0/0 192.168.40.1/24 + set int ip address FortyGigabitEthernet2/0/1 192.168.41.1/24 + set int state FortyGigabitEthernet2/0/0 up + set int state FortyGigabitEthernet2/0/1 up + + ip route add 192.168.50.10/32 via 192.168.41.2 + ip route add 192.168.51.10/32 via 192.168.40.2 +``` |