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.