跳过导航链接 | |
退出打印视图 | |
管理 Oracle Solaris 11.1 网络性能 Oracle Solaris 11.1 Information Library (简体中文) |
为确保网络可持续用于发送或接收通信流量,IPMP 在 IPMP 组的底层 IP 接口上执行故障检测。出现故障的接口在修复之前不可用。其余活动接口继续工作,同时根据需要部署任何现有的备用接口。
基于探测器的故障检测包括使用 ICMP 探测器检查接口是否已经出现故障。此故障检测方法的实现取决于是否使用了测试地址。
这种故障检测方法涉及发送和接收使用测试地址的 ICMP 探测器消息。这些消息也称为探测器通信或测试通信,它们通过接口发送到同一本地网络上的一个或多个目标系统。in.mpathd 守护进程通过已为基于探测器的故障检测配置的所有接口分别探测所有目标。如果给定接口对五个连续的探测器未做出任何响应,则 in.mpathd 认为该接口已出现故障。探测速率取决于故障检测时间 (failure detection time, FDT)。故障检测时间的缺省值是 10 秒。不过,您可以在 IPMP 配置文件中调整 FDT。有关说明,请转到如何配置 IPMP 守护进程的行为。
要优化基于探测器的故障检测,您必须将多个目标系统设置为接收来自 in.mpathd 守护进程的探测器。通过使用多个目标系统,您可以更好地确定报告的故障的性质。例如,唯一定义的目标系统没有响应,则表示故障可能在目标系统中,也可能在 IPMP 组的接口之一中。相比之下,如果几个目标系统中只有一个系统没有响应探测器,则故障可能在目标系统中,而不在 IPMP 组本身中。
in.mpathd 守护进程确定要动态探测哪些目标系统。首先,守护进程在路由表中搜索与 IPMP 组的接口相关联的测试地址所在子网中的目标系统。如果找到这样的目标,则守护进程使用它们作为探测目标。如果没有发现位于同一子网上的目标系统,则该守护进程将发送多播包以探测链路上的相邻主机。多播包将发送到所有主机多播地址(在 IPv4 中为 224.0.0.1,在 IPv6 中为 ff02::1),以确定要用作目标系统的主机。对回显包作出响应的前五个主机将被选作探测目标。如果守护进程找不到响应多播探测器的路由器或主机,则该守护进程将无法检测基于探测器的故障。在这种情况下,ipmpstat -i 命令将探测器状态报告为 unknown。
可以使用主机路由明确配置 in.mpathd 守护进程要使用的目标系统的列表。有关说明,请参阅配置基于探测器的故障检测。
在没有测试地址的情况下,使用两种类型的探测器实现此方法:
ICMP 探测器
ICMP 探测器由 IPMP 组中的活动接口发送,用于探测在路由表中定义的目标。活动接口是可以接收发送到该接口的链路层 (L2) 地址的传入 IP 包的底层接口。ICMP 探测器使用数据地址作为探测器的源地址。如果 ICMP 探测器到达目标并从目标获得响应,则活动接口能正常工作。
传递式探测器
传递式探测器由 IPMP 组中的备用接口发送,用于探测活动接口。备用接口是不主动接收任何传入 IP 包的底层接口。
以包含四个底层接口的一个 IPMP 组为例。对该组配置了一个数据地址,但没有配置测试地址。在此配置中,传出包可以使用所有底层接口。然而,传入包只能由绑定到该数据地址的接口接收。其余三个不能接收传入包的底层接口就是备用接口。
如果备用接口可以成功地将探测器发送到活动接口并收到响应,则活动接口能正常工作,同时也推断出该备用接口发送了探测器。
当 IPMP 组中的所有接口同时出现故障时,则发生组故障。在这种情况下,没有可用的底层接口。此外,如果所有目标系统同时出现故障并且启用了基于探测器的故障检测,in.mpathd 守护进程会刷新其所有当前目标系统并探测新的目标系统。
在没有测试地址的 IPMP 组中,将可以探测活动接口的单一接口指定为探测器。此指定的接口会同时设置 FAILED 标志和 PROBER 标志。数据地址绑定到此接口,从而允许接口继续探测目标以检测恢复。
只要接口支持基于链路的故障检测,会始终启用该类故障检测。
要确定一个第三方接口是否支持基于链路的故障检测,请使用 ipmpstat -i 命令。如果给定接口的输出中的 LINK 列包含 unknown 状态,则该接口不支持基于链路的故障检测。参考制造商的文档,了解有关设备的更多特定信息。
支持基于链路的故障检测的网络驱动程序会监视接口的链路状态,并在该链路状态变化时通知网络子系统。收到更改通知后,网络子系统会根据需要设置或清除该接口的 RUNNING 标志。如果 in.mpathd 守护进程检测到接口的 RUNNING 标志已被清除,会立即使该接口失效。
IPMP 支持匿名组中的故障检测。缺省情况下,IPMP 只监视属于 IPMP 组的接口的状态。但是,可以将 IPMP 守护进程配置为同时跟踪不属于任何 IPMP 组的接口的状态。因此,这些接口被视为属于某个“匿名组”。当发出 ipmpstat -g 命令时,匿名组将显示双短划线 (--)。在匿名组中,接口的数据地址也用作测试地址。由于这些接口不属于任何指定的 IPMP 组,这些地址对应用程序是可见的。要启用对不属于 IPMP 组的接口的跟踪,请参见如何配置 IPMP 守护进程的行为。