本节书摘来自异步社区《深入解析IPv6(第3版)》一书中的第10章,第10.5节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
10.5 失效网关检测
Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7和Windows Vista中TCP/IP的TCP组件会通过失效网关检测来检测默认路由器是否失效,并且当存在多个配置过的默认路由器时,调整IPv6路由表以使用下一个默认路由器。失效网关检测有两种形式。
- 通过使用邻居节点不可达进行检测,IPv6主机可以判断出默认邻居路由器已经不再可达。如果邻居节点不可达检测判断出了列表中的下一个默认路由器不可达,失效网关检测就会试图使用列表中的下一个默认路由器,在循环过整个列表后就返回到第一个默认路由器。
- 当通过默认路由器转发的TCP连接的TCP段重发了3次以后,失效网关检测就修改远程IPv6地址在目的缓存中的条目并使用列表中的下一个默认路由器作为下一跳地址。目的缓存条目就是在目的缓存中的表项,它保存的是目的IPv6地址的下一跳IPv6地址。当通过默认路由器进行路由的TCP连接中,有1/4都调整为下一个默认路由器时,失效网关检测就会通知IPv6修改计算机的默认路由器,使用调整后的连接正在使用的路由器。如果TCP连接继续失败,失效网关检测就会再次尝试使用列表中下一个默认路由器,当循环完整个列表后就返回第一个默认路由器。
Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7和Windows Vista中的TCP/IP也支持针对默认路由器进行修改的故障恢复行为。如果不支持对于默认路由器的故障恢复行为,就会导致拥有两台路由器(一个高性能的主要路由器和一个低性能的备用路由器)的子网出现吞吐量问题。子网主机将高性能路由器作为它们首选的默认路由器,而将备用路由器作为它们备选的默认路由器。如果高性能路由器暂时失效,子网主机则会切换到备用路由器。而当高性能路由器又变得可用时,网络上的主机都不使用它,因为主机已经切换到备份路由器。
Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7和Windows Vista中的TCP/IP通过周期性地尝试向先前的路由器发送TCP流量来实现针对路由器修改的故障恢复。如果主机成功通过先前的路由器发送了TCP流量,那么Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7和Windows Vista中的TCP/IP就会将默认路由器切换回前一个路由器。
在高性能路由器和备用路由器的例子中,如果相邻的高性能路由器失效,子网主机会使用邻居节点不可达检测,将默认路由器切换为备用路由器。接着,主机会周期性地尝试通过高性能路由器发送TCP流量。当高性能路由器变得可用并且主机确定TCP流量成功通过高性能路由器进行发送时,主机就会将默认路由器切换回高性能路由器。
支持故障恢复到首选默认路由器,使得子网可以使用首选默认路由器发送流量以实现更大的吞吐量。