diff options
author | Dave Barach <dave@barachs.net> | 2018-12-06 10:20:14 -0500 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2018-12-06 18:28:47 +0000 |
commit | 10c5ff143a86d15e78cb1f8625eb0ab8bf72b6ce (patch) | |
tree | 00afabf7ca2ccd4042b2315b38fa6fb1bf5902c2 /docs | |
parent | 995ff06fb73a2d1ac8472977cf3089d763f17d33 (diff) |
nsim: add packet loss simulation, docs
Change-Id: Ic9747541aad8148ebf7d520b525b99c4cc3961f3
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'docs')
-rw-r--r-- | docs/usecases/index.rst | 2 | ||||
-rw-r--r-- | docs/usecases/networksim.md | 90 |
2 files changed, 91 insertions, 1 deletions
diff --git a/docs/usecases/index.rst b/docs/usecases/index.rst index 735947cd994..3dabd78ca06 100644 --- a/docs/usecases/index.rst +++ b/docs/usecases/index.rst @@ -14,5 +14,5 @@ extensive list, but should give a sampling of the many features contained in FD. vhost/index.rst homegateway contiv/index.rst - + networksim diff --git a/docs/usecases/networksim.md b/docs/usecases/networksim.md new file mode 100644 index 00000000000..817ddf82a29 --- /dev/null +++ b/docs/usecases/networksim.md @@ -0,0 +1,90 @@ +Network Simulator Plugin +======================== + +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 <nnnnn>" 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 +``` |