如何给传入stream量添加延迟?

为了持续testing的目的,我希望有一个Apache服务器提供至less20毫秒延迟的静态文件。

我试图find一个类似的能力,但失败的Apacheconfiguration设置或插件。

tciptables的组合可能工作,但我只find一个方法来添加基于传出端口的延迟(这是每个客户端不同)。

 variables
 IF = 1.0
 IFSPEED = 100Mbps#从sudo / sbin / ethtool $ IF获取
 DELAY = 1000毫秒


 #
 #创buildHTB对象树
 #
 sudo / sbin / tc qdisc add dev $ IF handle 1:root htb

 #
 #用classid创build一个有类的子桶
 #
 sudo / sbin / tc class add dev $ IF parent 1:classid 1:11 htb rate $ IFSPEED

 #
 #创build一个qdisc(classless)netem子节点,为这个“桶”中的数据包提供延迟
 #
 sudo / sbin / tc qdisc add dev $ IF parent 1:11 handle 11:netem delay $ DELAY

 #
 #过滤掉/损坏的stream量到上面的类
 #
 sudo / sbin / tc filter add dev $ IF parent 1:0 prio 1 protocol ip handle 11 fw flowid 1:11

 #
 #使用iptables将TCP数据包压入端口4001,并将数据包标记为tc过滤
 #
 sudo / sbin / iptables -A OUTPUT -t mangle -p tcp --dport 4001 -j MARK --set-mark 11

因此,以前的代码片段工作,但如何改变政策,使每个传入数据包与destinatiom端口80延迟? – 试图尝试与PREROUTING的iptables,但仍然没有工作?

添加延迟可以在传入(入口)或传出(出口)数据包(或两者)上完成。 延迟入口数据包有点难(导致数据包已经到达),但是可以用中间function块设备实现(查看这里 ,search“inputstream量”)。

因为你的目标可以通过延迟入口或出口stream量来实现,并且延迟出口更容易,所以我build议这样做。 你的configuration几乎是正确的:你只需要replaceiptables的mangle行

 sudo iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 80 -j MARK --set-mark 11