如何增加传入流量的延迟?

如何增加传入流量的延迟?

为了进行持续测试,我希望 apache 服务器至少以 20ms 的延迟提供静态文件。

我尝试寻找一个 apache 配置设置或者具有类似功能的插件,但是失败了。

tc 和 iptables 的组合可能有效,但我只找到了一种基于传出端口添加延迟的方法(每个客户端都不同)。

变量
如果=低
IFSPEED=100Mbps #从 sudo /sbin/ethtool $IF 获取
延时=1000毫秒


#
# 创建有类 HTB 对象树
#
sudo /sbin/tc qdisc 添加 dev $IF 句柄 1: root htb

#
# 创建一个有类子桶,其类标识为 1:11
#
sudo /sbin/tc class add dev $IF parent 1: classid 1:11 htb rate $IFSPEED

#
# 创建一个 qdisc(无类)netem 子进程来为这个“bucket”中的数据包提供延迟
#
sudo /sbin/tc qdisc add dev $IF parent 1:11 handle 11: netem delay $DELAY

#
# 将损坏/标记的流量过滤到上述类别
#
sudo /sbin/tc filter add dev $IF parent 1:0 prio 1 protocol ip handle 11 fw flowid 1:11

#
# 使用 iptables 处理发往 4001 端口的 TCP 数据包,并标记数据包以进行 tc 过滤
#
sudo /sbin/iptables -A OUTPUT -t mangle -p tcp --dport 4001 -j MARK --set-mark 11

因此,前面的代码片段有效,但是如何改变策略以便每个目标端口为 80 的传入数据包都被延迟? - 尝试使用 PREROUTING 尝试 iptables ,但仍然不起作用?

答案1

可以对传入 (入口) 或传出 (出口) 数据包(或两者)添加延迟。延迟传入数据包有点困难(因为数据包已经到达),但可以使用中级功能块设备(看看这里.搜索“netem on coming fromcoming Traffic”)。

由于可以通过延迟入口或出口流量来实现目标,并且延迟出口更容易,因此我建议这样做。您的配置几乎是正确的:您只需将 iptables mangle 行替换为

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

相关内容