为了持续testing的目的,我希望有一个Apache服务器提供至less20毫秒延迟的静态文件。
我试图find一个类似的能力,但失败的Apacheconfiguration设置或插件。
tc和iptables的组合可能工作,但我只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