延迟特定 IPv6 地址的服务器响应

延迟特定 IPv6 地址的服务器响应

我有 3 台配置了 IPv6 地址的服务器,我想为几台服务器(例如 S1 和 S3)添加一些延迟。对于 IPv4,我使用“tc”命令,它运行良好。

用于 IPv4 地址的命令:

tc qdisc ls dev eth1 
tc qdisc add dev eth1 root handle 1: prio
tc qdisc add dev eth1 parent 1:1 handle 2: netem delay 1000ms
tc filter add dev eth1 parent 1:0 protocol ip pref 55 handle ::55 u32 match ip 
   src 20.1.1.1 flowid 2:1
 tc filter add dev eth1 parent 1:0 protocol ip pref 55 handle ::55 u32 match 
   ip src 20.1.1.3 flowid 2:1

我想将相同的策略添加到 Ipv6 地址。任何帮助都将不胜感激。提前致谢

答案1

由于这些过滤器适用于传出数据包并匹配源 IP,而且最后两个 tc 命令由于重复使用相同的句柄而发生冲突,我理解规则是直接添加到每个服务器的,或者如果句柄发生变化,则添加到路由器的。在答案中这并不重要,因为句柄不会被指定,因此让系统来选择它们。

切换到等效的 IPv6 规则非常简单:protocol ip替换为protocol ipv6match ip替换为match ip6。感谢不一致!切换协议时不能使用相同的 pref/prio。参考前两点:将 tc 与 IPv6 和 IPv4 结合使用。如果需要,只需添加一个句柄(具有唯一的::节点 ID在同一个前缀中)。

因此,为了为两个附加地址2001:db8::10和添加延迟2001:db8::20,请保留问题中的所有先前规则并添加这两条规则:

tc filter add dev eth1 parent 1:0 protocol ipv6 pref 56 u32 match ip6 src 2001:db8::10 flowid 2:1
tc filter add dev eth1 parent 1:0 protocol ipv6 pref 56 u32 match ip6 src 2001:db8::20 flowid 2:1

被调用的过滤器u32实际上意味着它在 32 位上运行。因此,每条规则实际上将使用 4 个匹配,因为 IPv6 地址使用的是 128 位。

相关内容