linux traffic control
Traffic Control 技术实现的基本原理就是 Queue(队列),通过在网络设备(包括:主机网卡、交换机、路由器等)的 Ingress 和 Egress 处使用一系列的 Queues 来对数据报文进行排队,继而控制它们的发送优先顺序和速率。同时,还可以针对不同的 Queues 施加相应的 Policy(策略),实现更灵活的功能特性。
首先,要使用tc指令,先要用sudo apt-get install iproute2
下载包
Add constant delay
我们可以通过tc指令为ping增加延迟。
首先我们可以通过sudo lshw -C network | grep 'logical name'
来获得当前机器的网卡。
首先我们来看没有增加延迟的时候,ping baidu.com的结果
然后我们通过指令增加延迟
sudo tc qdisc add dev ens160 root netem delay 200ms
此时可以用sudo tc qdisc show dev ens160
来查看当前网卡的延时
同样的,可以使用 sudo tc qdisc del dev ens160 root
来删除这个延时
Add random delay
1 | tc class add dev eth0 parent 1: classid 1:20 htb rate 8mibit |
Add packet loss
我们可以用sudo tc qdisc add dev ens160 root netem loss 10%
来设置一个丢包率
1 | # Define variables |