与OSPF之类的链路状态协议相比,EIGRP通过保留一些基本的拓扑信息来避免循环,同时保留的信息要少得多 。EIGRP会记录每个可能的下一跳路由器的备用路由,与这些路由相关的一些度量标准详细信息,以及有关下一跳路由器以外的拓扑的一些信息。
这种稀疏的拓扑信息不需要复杂的最短路径优先(SPF)算法,但可以快速收敛到无环路由。
EIGRP可行距离和报告距离
使用EIGRP,本地路由器需要为每个路由考虑其自己的计算量度,但是与此同时,本地路由器会考虑同一目标子网的下一跳路由器的计算量度。EIGRP对于这些度量标准有特殊的术语,如下所示:
- 可行距离(FD):这是在本地路由器上计算的到达子网的最佳路由的本地路由器度量。
- 报告的距离(RD):针对同一子网的下一跳路由器的最佳度量。
下图显示了R1完成的两个计算。一种计算为子网10.1.3.0/24的一条路由找到R1自己的度量标准(FD)。另一个使用从R2收到的更新中的度量标准组件,来计算R2为达到相同子网而要为R2的度量标准计算的内容。
R1根据R2的信息进行的第二次计算(最慢的100,000 Kbps带宽和100毫秒的累积延迟)是该路由的R1的RD。
遵循图中的步骤:
- R2基于100,000 Kbps的带宽和100微秒的延迟,为10.1.3.0/24计算R2路由的度量标准(其FD)。
- R2发送EIGRP更新,列出具有这些相同度量标准组件的10.1.3.0/24。
- R1使用步骤2中更新消息中的信息,使用与步骤1中使用的R2相同的数学计算该路由的RD。
- R1通过考虑R1的S0 / 1接口的带宽和延迟来计算自己的度量。
实际上,根据上图所示的信息,可以很容易地计算出到达子网10.1.3.0/24的R2的FD(也是到达10.1.3.0/24的R1的RD)。
EIGRP收敛过程根据失败的路由是否具有可行的后继路由,在其逻辑中使用两个分支之一。路由器是否具有可行的后继路由的决定取决于到达给定子网的竞争路由的FD和RD值。
EIGRP继任者和可行继任者
EIGRP计算到达每个子网的每个路由的度量。对于特定子网,具有最佳度量标准的路由称为后继路由,路由器将使用此后继路由填充IP路由表。此后继路线的度量标准称为可行距离。
在到达同一子网的其他路由中(度量标准大于后继路由的FD的路由),EIGRP需要确定如果当前最佳路由发生故障,可以立即使用哪个备用路由,而不会引起路由循环。
EIGRP运行一种简单的算法来识别可以使用的路由,将这些无环备份路由保留在其拓扑表中,并在当前最佳路由失败时使用它们。
这些替代的,立即可用的路由称为可行的后继路由,因为当先前的后继路由发生故障时,它们可以可行地用作新的后继路由。
可行性条件
如果非后继路由的RD小于FD,则该路由是可行的后继路由。尽管从技术上讲它是正确的,但使用示例可以更容易理解此定义。
下图以一个示例为例,其中路由器E选择到子网1的最佳路由。路由器E获悉到子网1的三个路由,这些路由经过路由器B,C和D。
该图显示了在路由器E上计算的指标,这些指标在路由器E的EIGRP拓扑表中列出。路由器E发现通过路由器D的路由的度量最低,从而使该路由E为子网1的后继路由。路由器E将该路由添加到其路由表中,如下所示。FD是为此路线计算的指标,在这种情况下,值为14,000。
同时,如果通过路由器D的路由出于任何原因失败,则路由器E上的EIGRP会决定是否可以立即使用到子网1的其他两条路由之一。只能使用可行的后继路线。为了满足可行性条件,备用路由的RD必须小于后继路由的FD。
下图显示了先前图像的更新版本。路由器E使用以下逻辑确定通过路由器B的路由不是可行的后继路由,但通过路由器C的路由如下:
- 路由器E将14,000的FD与通过B的路由的RD相比较(19,000)。RD比FD差,因此这条路线不是可行的后继路线。
- 路由器E将14,000的FD与通过C的路由的RD相比较(13,000)。RD比FD更好,这条路线是可行的后继路线。
如果通过路由器D到达子网1的路由失败,则路由器E可以立即将通过路由器C的路由放入路由表,而不必担心会形成环路。在这种情况下,收敛几乎立即发生。
查询和回复过程
当路由失败并且该路由没有可行的后继路由时,EIGRP使用一种称为扩散更新算法(DUAL)的分布式算法来选择替代路由。DUAL发送查询以寻找到所讨论子网的无环路路由。
找到新路由后,DUAL将其添加到路由表中。EIGRP DUAL流程仅使用消息来确认路由存在,并且不会创建环路,然后再决定将故障路由替换为替代路由。
例如,在上图中,假设路由器C和D都发生故障。路由器E没有为子网1保留任何剩余的可行后继路由,但是存在通过路由器B的明显的物理可用路径。
要使用该路由,路由器E将EIGRP查询消息发送到其工作的邻居(在本例中为路由器B)。路由器B到子网1的路由仍然可以正常工作,因此路由器B用EIGRP答复消息答复路由器E,只需说明到子网1的工作路由的详细信息并确认其仍然可行。然后,路由器E可以将到子网1的新路由添加到其路由表中,而不必担心出现环路。
用可行的后继替换故障路由需要很短的时间,通常少于一两秒钟。当需要查询和答复时,收敛可能会花费稍长的时间,但是在大多数网络中,收敛仍会在不到10秒的时间内发生。