IPv6:在HA故障转移中使用浮动IP停止接口IP操作

use*_*986 8 network-programming ipv6 linux-kernel openstack openstack-nova

当主节点发生故障时,其IP(IPv6)将浮动到备用节点.备用节点应该在该IP上提供服务.

鉴于这两个节点共存于同一LAN中,通常可以看出备用节点变得无法访问.接口为UP和RUNNING,并分配了IPv6地址,但所有IP操作都已停止.

一种可能性是当IP配置为待机时,重复地址检测(DAD)正在开始.RFC表示必须停止所有IP操作.

我的问题是关于Linux内核IPv6实现的细节.以前,从内核代码来看,我认为必须设置sysctl变量"disable_ipv6".但是内核没有禁用IPv6,它只是停止该接口上的所有IP操作.

任何人都可以解释Linux内核IPv6在DAD失败时"禁用这些IP操作"时的作用吗?如果不进行DOWN&UP接口,可以重置为正常吗?代码中的任何指针都将非常有用.

use*_*986 2

本文详细阐述了有关 IPv6 实现和浮动 IP 配置的内核中实际发生的情况的规范和行为。它还提出了一个解决方案: http://riticindirection.com/2015/06/30/ipv6_dad_floating_ips/

它提到对于“用户分配的本地链路”,IPv6 分配陷入暂定状态,在内核中由 IFA_F_TENTATIVE 标记。此状态意味着 DAD 正在进行,并且 IP 尚未验证。对于“自动分配的本地链路”,如果 DAD 失败,它会重试 Accept_DAD 次(每次都使用新的自动生成的 IP),然后在该接口上禁用 IPv6。

它建议的解决方案是:在配置浮动IP之前禁用DAD,并在其脱离暂定状态时重新启用它。

有关更多详细信息,请参阅上面的链接。