How to Control the Bandwidth of a Network?
Network emulation is used for testing the performance of real applications over a virtual network. It is the act of introducing a device to a test network that alters packet flow in such a way as to mimic the behavior of a network. Netem is a network emulator tool provides functionality for testing protocols. It will emulate the network properties of wide-area networks.
Netem is already enabled in the kernel and a current version of iproute2. The netem kernel component is enabled under:
- Networking
- Networking Options
- QoS and/or fair queuing
- Network emulator
Iproute2 is a collection of utilities for controlling TCP/IP networking and traffic control in Linux. Netem is controlled by the command line tool 'tc' and it is part of the iproute2 package of tools.
Commands for network emulation:
Note: Here, I have used ethe1 for the interface in the examples below; you should use the name of your specific Ethernet card
- To add constant delay to every packet going out through a specific interface:
$tc qdisc add dev ethe1 root netem delay 80ms
A ping test to this host should show an increase of 80ms in the delay to replies.
- To add random variance
$tc qdisc change dev ethe1 root netem delay 80ms 10ms
- The following command will add +/- 10 ms of jitter to the 80ms of delay:
$tc qdisc add dev ethe1 root netem delay 80ms 10ms
- To turn off/delete the qdisc from a specific interface (in this case, ethe1):
$tc qdisc del dev ethe1 root
- Typically, the delay in a network is not uniform. It is more common to use a normal distribution to describe the variation in delay. Netem can accept a non-uniform distribution:
$tc qdisc change dev ethe1 root netem delay 100ms 20ms distribution normal
Please get in touch with us if any queries