Linux 中模拟延时和丢包的实现

来源:互联网 发布:所有香烟条形码数据库 编辑:程序博客网 时间:2024/06/12 18:27
Linux 中使用 tc 进行流量管理。具体命令的使用请参考 tc 的 man 手册。

本文简单记录一下使用 tc 模拟延时和丢包的命令。



1. 延时
(1)设置延时
  1. # tc qdisc add dev eth0 root netem delay 30ms
上面的命令实现了给 eth0 口发包时添加 30ms 的延时。

(2)显示延时的设置
  1. # tc qdisc show
结果如下:
  1. [root@Kernel-Test test]# tc qdisc show
  2. qdisc pfifo_fast 0: dev eth1 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
  3. qdisc netem 8003: dev eth0 root limit 1000 delay 30.0ms
(3)修改延时
  1. # tc qdisc change dev eth0 root netem delay 40ms
(4)删除延时的配置
  1. # tc qdisc del dev eth0 root netem delay 40ms


2. 丢包

设置丢包命令如下:
  1. # tc qdisc add dev eth0 root netem loss 10%
如果你是通过 SSH 登陆设备进行配置丢包的话,配置完这条命令就会感觉到机器访问时有点一卡一卡的。这说明,设备已经开始丢包了,可以通过具体抓包查看。

其他诸如修改、查看、删除的命令,都可以参考上面延时的设置。

最后一点需要注意的是,这两个命令应该都是控制的网卡出口的流量。如果想控制网卡入口的流量,应该是需要确认内核是否明确支持了,如果不支持的话,就需要修改内核配置文件,并重新编译内核。