The tc boxes are just little linux boxes with bridged interfaces set up to forward traffic. Plus we apply tc rules to shape the outgoing traffic.
The question then becomes: “What values should I use?” How do you know what type of network you are simulating?
To answer that question, we went and measured the delay and jitter in various network environments. We took those numbers and came up with the tc commands below.
Remember that tc only applies to outgoing traffic, which is why there are two commands each for WAN and LAN.
The sample commands below are for the Ubuntu version of tc. If you are using CentOS, unfortunately the rate parameter cannot be applied with the netem discipline. Also, don’t forget to adjust your interface names as needed.
Without further ado, here are the different scenarios:
Enterprise Wi-Fi
WAN
tc qdisc add dev eth2 root netem delay 5ms 1ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 5ms 1ms rate 1000000kbit
LAN
tc qdisc add dev eth2 root netem delay 5ms 4ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 5ms 4ms rate 1000000kbit
Enterprise Branch Office
WAN
tc qdisc add dev eth2 root netem delay 20ms 8ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 20ms 8ms rate 1000000kbit
LAN
tc qdisc add dev eth2 root netem delay 5ms 4ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 5ms 4ms rate 1000000kbit
Site-to-Site VPN
WAN
tc qdisc add dev eth2 root netem delay 20ms 15ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 20ms 15ms rate 1000000kbit
LAN
tc qdisc add dev eth2 root netem delay 5ms 4ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 5ms 4ms rate 1000000kbit
Remote User VPN
WAN
tc qdisc add dev eth2 root netem delay 20ms 15ms rate 100000kbit
tc qdisc add dev eth3 root netem delay 20ms 15ms rate 100000kbit
LAN
tc qdisc add dev eth2 root netem delay 2.5ms 0.5ms rate 600000kbit
tc qdisc add dev eth3 root netem delay 2.5ms 0.5ms rate 600000kbit
Coffee Shop Wi-Fi
WAN
tc qdisc add dev eth2 root netem delay 5ms 1ms rate 100000kbit
tc qdisc add dev eth3 root netem delay 5ms 1ms rate 100000kbit
LAN
tc qdisc add dev eth2 root netem delay 5ms 4ms rate 600000kbit
tc qdisc add dev eth3 root netem delay 5ms 4ms rate 600000kbit
Hotel / Airport Wi-Fi
WAN
tc qdisc add dev eth2 root netem delay 5ms 1ms rate 100000kbit
tc qdisc add dev eth3 root netem delay 5ms 1ms rate 100000kbit
LAN
tc qdisc add dev eth2 root netem delay 8ms 6ms rate 600000kbit
tc qdisc add dev eth3 root netem delay 8ms 6ms rate 600000kbit
Stadium / Event Wi-Fi
WAN
tc qdisc add dev eth2 root netem delay 5ms 1ms rate 100000kbit
tc qdisc add dev eth3 root netem delay 5ms 1ms rate 100000kbit
LAN
tc qdisc add dev eth2 root netem delay 10ms 9ms rate 600000kbit
tc qdisc add dev eth3 root netem delay 10ms 9ms rate 600000kbit
Congested ISP Core
WAN
tc qdisc add dev eth2 root netem delay 20ms 8ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 20ms 8ms rate 1000000kbit
LAN
tc qdisc add dev eth2 root netem delay 2.5ms 1ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 2.5ms 1ms rate 1000000kbit
Cellular LTE Edge
WAN
tc qdisc add dev eth2 root netem delay 2.5ms 1ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 2.5ms 1ms rate 1000000kbit
LAN
tc qdisc add dev eth2 root netem delay 17.5ms 4.5ms rate 1000000kbit
tc qdisc add dev eth3 root netem delay 17.5ms 4.5ms rate 1000000kbit