Generating traffic with VPP
===========================

Vpp includes a fairly capable network simulator plugin, which can
simulate real-world round-trip times and a configurable network packet
loss rate. It’s perfect for evaluating the performance of a TCP stack
under specified delay/bandwidth/loss conditions.

The “nsim” plugin cross-connects two physical interfaces at layer 2,
introducing the specified delay and network loss parameters.
Reconfiguration on the fly is OK, with the proviso that packets held in
the network simulator scheduling wheel will be lost.

Configuration
-------------

Configuration by debug CLI is simple. First, specify the simulator
configuration: unidirectional delay (half of the desired RTT), the link
bandwidth, and the expected average packet size. These parameters allow
the network simulator allocate the right amount of buffering to produce
the requested delay/bandwidth product.

::

       set nsim delay 25.0 ms bandwidth 10 gbit packet-size 128

To simulate network packet drops, add either “packets-per-drop ” or
“drop-fraction [0.0 … 1.0]” parameters:

::

       set nsim delay 25.0 ms bandwidth 10 gbit packet-size 128 packets-per-drop 10000

Remember to configure the layer-2 cross-connect:

::

       nsim enable-disable <interface-1> <interface-2>

Packet Generator Configuration
------------------------------

Here’s a unit-test configuration for the vpp packet generator:

::

     loop cre
     set int ip address loop0 11.22.33.1/24
     set int state loop0 up

     loop cre
     set int ip address loop1 11.22.34.1/24
     set int state loop1 up

     set nsim delay 1.0 ms bandwidth 10 gbit packet-size 128 packets-per-drop 1000
     nsim enable-disable loop0 loop1

     packet-generator new {
         name s0
         limit 10000
         size 128-128
         interface loop0
         node ethernet-input
         data { IP4: 1.2.3 -> 4.5.6
                UDP: 11.22.33.44 -> 11.22.34.44
                UDP: 1234 -> 2345
                incrementing 114
         }
     }

For extra realism, the network simulator drops any specific packet with
the specified probability. In this example, we see that slight variation
from run to run occurs as it should.

::

       DBGvpp# pa en
       DBGvpp# sh err
          Count                    Node                  Reason
             9991                  nsim                  Packets buffered
                9                  nsim                  Network loss simulation drop packets
             9991             ethernet-input             l3 mac mismatch

       DBGvpp# clear err
       DBGvpp# pa en
       DBGvpp# sh err
       sh err
          Count                    Node                  Reason
             9993                  nsim                  Packets buffered
                7                  nsim                  Network loss simulation drop packets
             9993             ethernet-input             l3 mac mismatch
