simulnet
aims to make testing how your software and hardware perform in adverse network conditions easier. Originally used to test Google Congestion Control,
but designed to be generally useful.
For Go users a net implementation is provided. For non-Go users it can be used via TUN/TAP. Your application can listen on the TUN/TAP interface and doesn't need to be modified. simulnet then provides two set of APIs to influence the network.
The first is a imperative API to influence the state of the network allowing you to set things like.
- Packets Per Second
- Bytes Per Second
- Overuse Behavior
- Packet Loss
- Delay
The second is a declarative API where you provide a list of rules.
- Modify Bytes Per Second to be between 800 and 1500 every 30 seconds
- Set Packet Loss to 5% for 2 seconds every 5 minutes
simulnet will announce when modifications are made to the network. Then you can easily understand what network condition in particular caused your software to fail/have problems.
Check out the contributing wiki to join the group of amazing people making this project possible:
MIT License - see LICENSE for full text