1

Im developing a software product that uses networking features like device bonding an multi-homing protocols. As with any protocol development, test-code needs to take latency, package-dropping etc. into account. I am therefore trying to create a virtual network environment in which I can do controllable, reproducible tests.

The two main features I want to test(ie. measure performance, stability etc.):

  • SCTP multihoming associations where the client uses several endpoints.
  • Device bonding of several devices.

As mentioned, I want to be able to do traffic control between the nodes in the network, as well as traffic filtering to simulate legacy NATs etc.

Example test:

This test is supposed to emulate a client with four NICs (wifi, usb, bluetooth, ethernet) communicating over the internet with a single-interface server.

I would like to create a virtual network that emulates this layout. One device emulates a WAN node, and four others represents the clients interfaces. There is a bandwidth limit on 1 Mb/s between the client interfaces and the server interface and a package-loss of 1%.

A bonding device of the four client interfaces is created. A iperf server is bound to the WAN address and a client is bound to the bonding device address and connected to the WAN server.

prinsen
  • 162

1 Answers1

0

Sounds like you want to use something like 'tc' (se http://www.linuxcommand.org/man_pages/tc8.html for more detail) on the various interfaces, using the 'netem' kernel component.

An example would be:

tc qdisc add dev eth1 root handle 1: netem delay 500ms 125ms reorder 3% loss 2%

See http://man.he.net/man8/tc for the manpage on 'tc'.

See http://www.linuxfoundation.org/collaborate/workgroups/networking/netem for info on how to use the netem module with tc.