Linux Traffic ControlTraffic control (tc) is a very useful Linux utility that gives you the ability to configure the kernel packet scheduler. If you are looking for reasons to mess with the kernel scheduler, here are a few: Firstly, it’s fun to play with the different options and become familiar of all of Linux’s features. In addition, you can utilize Linux’s helpful tools to simulate packet delay and loss for UDP or TCP applications, or limit the bandwidth usage of a particular service to simulate Internet connections (DSL, Cable, T1, etc). On Debian Linux, tc comes bundled with iproute, so in order to install it you have to run: Network DelayThe first example is how to add constant delay to an interface. The syntax is as follows (run this as root): Here is what each option means: qdisc: modify the scheduler (aka queuing discipline) Note: this adds a delay of 200 ms to the egress scheduler, exclusively. If it were to add the delay to both the ingress and egress schedulers, the total delay would have totaled 400 ms. In general, all of these traffic control rules are applied to the egress scheduler only. Here is how ping looks like before: Here is what ping looks like after applying this rule: In order to display the active rules use: You can see that details of the existing rules that adds 200.0 ms of latency. To delete all rules use the following command: And now we can see what are the default rules of the linux scheduler: Without going into too much detail, we see that the scheduler works under First In First Out (FIFO) rules which is the most basic and fair rule if you don’t want to set any priorities on specific packets. You can think about it like the line at the bank: customers are being taken care off in the order they arrive. Note that if you have an existing rule you can change it by using “ tc qdisc change…” and if you don’t have any rules you add rules with “ tc qdisc add...” Here are some other examples: -Delay of 100ms and random +-10ms uniform distribution: |
|