当前位置: 首页 > >

linux 模拟端口占用,linux-使用tc模拟特定端口上的网络延迟

发布时间:

尝试这个:


sudo tc qdisc add dev eth1 root handle 1: prio priomap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


sudo tc qdisc add dev eth1 parent 1:2 handle 20: netem delay 3000ms


sudo tc filter add dev eth1 parent 1:0 protocol ip u32 match ip sport 7000 0xffff flowid 1:2


>我在prio中添加了全零的priomap,因此所有常规流量都将流过一个频段


>默认情况下,prio根据数据包的DSCP值将流量分配到不同的频段


>这意味着某些与您的过滤器不匹配的流量可能会与延迟的流量归为同一类


>然后我将netem分配给以下类别之一-1:2


>最后,我添加了您的过滤器,因此它将为匹配的数据包分配流ID 1:2


>这可能是您出错的地方


>您需要将过滤器分配给有级prio qdisc的1:2,而不是无级netem.


为了测试它,我将过滤器更改为dport 80而不是sport 7000,并连接到checkip.amazonaws.com花了我6秒钟的时间(TCP Syn的延迟为3秒,HTTP GET的延迟为3秒):


malt@ubuntu:~$wget -O - checkip.amazonaws.com


--2016-10-23 06:21:42-- http://checkip.amazonaws.com/


Resolving checkip.amazonaws.com (checkip.amazonaws.com)... 75.101.161.183, 54.235.71.200, 107.20.206.176, ...


Connecting to checkip.amazonaws.com (checkip.amazonaws.com)|75.101.161.183|:80... connected.


HTTP request sent, awaiting response... 200 OK


Length: 10


Saving to: ‘STDOUT’


- 0%[ ] 0 --.-KB/s X.X.X.X


- 100%[===========================================================>] 10 --.-KB/s in 0s


2016-10-23 06:21:48 (3.58 MB/s) - written to stdout [10/10]


不过,连接到其他端口(例如443-HTTPS,22-SSH等)的速度要快得多.您也可以运行sudo tc -s qdisc show dev eth1以确保netem处理的数据包数量合理.



友情链接: