最终目标是通过在 lo 接口上设置相同的 /128 来实现每个数据包的 ipv6 udp 负载平衡。首先,尝试让它与静态路由一起工作,然后开始使用 Quagga 或类似的包探索 BGP。这必须在 100% 虚拟环境中完成。
根据我的搜索,发行说明似乎说它是在 Linux 内核 3.6 左右添加的。但我无法设置此功能的成功演示。
使用 ip 命令,我应该能够向同一个 IPv6 子网添加多个具有相同权重的路由。例如:
ip -6 route add badd:badd:badd:1::1/128 nexthop via badd:badd:badd:2::1 nexthop via badd:badd:badd:2::2
我的服务器连接到 badd:badd:badd:2::/64,可以同时访问 badd:badd:badd:2::1 和 badd:badd:badd:2::2。另外两台服务器在 lo 接口上都有 badd:badd:badd:1::1/128。每次我看到的情况是数据包仅通过路由表中的最后一个条目进行路由。如果我用 IPv4 复制此设置,我会看到数据包通过表中的两个条目进行路由,每隔一个数据包进行一次切换。
我尝试了多个内核 3.10、4.4、4.6,但每次都得到相同的结果。是我做错了什么,还是它还不支持?谢谢!
答案1
您可以尝试以下两件事:
- 为每个下一跳设置一个不同的接口,因此你的 ip 命令将更改为:
ip -6 route add badd:badd:badd:1::1/128 nexthop via badd:badd:badd:2::1 dev eth0 ... dev eth1
- 尝试子网路由器任播地址:关联,你可以在路由器上禁用它
ip -6 route del badd:badd:badd:2:: table local