Linux模拟控制网络时延

Posted Winstone

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux模拟控制网络时延相关的知识,希望对你有一定的参考价值。

之前以为可以使用Linux自带的工具模拟控制网络时延,所以上网找了一些资料。后来发现,找到的资料目前只支持在一个网卡上模拟发送报文的时延,而不能 设置有差别的网络时延,或者说当要模拟的向A发送的时延与要模拟的向B发送的时延不一致时,Linux的tc功能就无能为力了。记录一下在网上查到的有用 的资料:

  1. TC带宽管理规则排版最好的链接:http://www.tuicool.com/articles/7zYzey
  2. TC 命令的man手册:http://wenku.baidu.com /link?url=o0CPVzuBDLJMt0_7Qph1T7TtdFOzu7O-apIpvaWbIYMz8ZWqBneGqI8LGtLdqpuKHbUoZ-eXcguONVJ9ruTQN1JuV6xC0b-okqu7b7Ro-oW
  3. TC详细说明及应用实例:http://wenku.baidu.com/view/f02078db50e2524de5187e45.html
  4. TC控制网络时延:http://blog.csdn.net/blade2001/article/details/7163316


------------------------------------------------------------
后来仔细回顾资料,发现TC控制网络时延的netem关键字不在man手册中,然后发现控制网络时延的不是原生的tc功能,而是tc调用了netem模块。 在netem官网 http://www.linuxfoundation.org/collaborate/workgroups/networking/netem#Delaying_only_some_traffic 发现了控制某个ip的网络时延的shell命令,亲测可用。

------------------------------------------------------------


在10.10.10.133,10.10.10.134,10.10.10.135上配置的:

tc qdisc add dev ib0 root handle 1: prio
tc qdisc add dev ib0 parent 1:3 handle 30: tbf rate 1000mbit burst 100mbit latency 1000ms mtu 100kbit
tc qdisc add dev ib0 parent 30:1 handle 31: netem delay 9.4ms
tc filter add dev ib0 protocol ip parent 1:0 prio 3 u32 match ip dst 10.10.10.136/32 flowid 1:3
tc filter add dev ib0 protocol ip parent 1:0 prio 3 u32 match ip dst 10.10.10.137/32 flowid 1:3
tc filter add dev ib0 protocol ip parent 1:0 prio 3 u32 match ip dst 10.10.10.138/32 flowid 1:3


在10.10.10.136,10.10.10.137,10.10.10.138上配置的:

tc qdisc add dev ib0 root handle 1: prio
tc qdisc add dev ib0 parent 1:3 handle 30: tbf rate 1000mbit burst 100mbit latency 1000ms mtu 100kbit
tc qdisc add dev ib0 parent 30:1 handle 31: netem delay 9.4ms
tc filter add dev ib0 protocol ip parent 1:0 prio 3 u32 match ip dst 10.10.10.133/32 flowid 1:3
tc filter add dev ib0 protocol ip parent 1:0 prio 3 u32 match ip dst 10.10.10.134/32 flowid 1:3
tc filter add dev ib0 protocol ip parent 1:0 prio 3 u32 match ip dst 10.10.10.135/32 flowid 1:3


查看:
tc -s qdisc ls dev ib0

删除:
tc qdisc del dev ib0 root handle 1: prio

 
































以上是关于Linux模拟控制网络时延的主要内容,如果未能解决你的问题,请参考以下文章

网络控制系统的时延相关状态反馈控制器设计_爱学术

IDC网络低时延无阻塞拥塞控制随想

论文精选 |基于时延和负载均衡的多控制器部署策略

Linux 网络故障模拟工具TC

matlab simulink实现模糊pid对中央空调时延温度控制系统控制

tc和netem模拟动态网络