我需要模拟一个stream量减慢到某个服务。 这意味着我需要在特定的端口上减慢连接。 我有这个脚本,在所有的端口上引入了一个特定的IP延迟,但其他服务在该系统上运行,我不能放慢速度。
echo "simulating slowdown infrstructure on interface $DEV to IP:$IP for port:$PORT"; tc qdisc del dev $DEV root tc qdisc add dev $DEV handle 1: root htb tc class add dev $DEV parent 1: classid 1:15 htb rate 1000Mbps tc qdisc add dev $DEV parent 1:15 handle 11 netem delay 4000ms 2000ms distribution normal tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 11 fw flowid 1:15 iptables -A OUTPUT -t mangle -d "$IP" -j MARK --set-mark 11
我无法弄清楚这里的最后一行是什么,因为它似乎没有它。
((撤销脚本在这里:))
iptables -D OUTPUT -t mangle -d "$IP" -j MARK --set-mark 11 tc qdisc del dev $DEV root
最后一行将所有数据包捕获到特定IP(在所有端口上),并在其上添加一个标记(仅在内核中)。
每个带有标记的数据包都将变慢。 你只需要在这个规则中指定一个目标端口,它应该没问题:
iptables -A OUTPUT -t mangle -d "$IP" -p tcp -- dport ${Port} -j MARK --set-mark 11