summaryrefslogtreecommitdiffstats
path: root/src/vppinfra/test_ptclosure.c
AgeCommit message (Expand)AuthorFilesLines
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion1-0/+212
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
Stateless Traffic Gen with VPP
==============================

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