CCIE学习(33)―― EIGRP的路由收敛

当路由发生改变时, EIGRP 需要重新收敛路由,这个过程由三个部分组成:输入事件、局部计算(包括查找可行的成功者路由)和使用动态查询来查找替代路由。
与路由收敛相关的 EIGRP 特性:
EIGRP 收敛功能
描述
报告距离( RD
邻接路由器报告的路由 metric
可行距离( FD
到达特定子网的最小 metric 路径的 metric
可行性条件
当存在到达同一子网的多条路由时,有 RD FD 更小的情形
成功者路由
到达目的前缀 metric 最小的路由
可行成功者 FS
非成功者路由但满足可行性条件;可以在成功者路由失效后使用,这样可以避免环路
输入事件
任何可能改变路由 EIGRP 拓扑表的事件
局部计算
EIGRP 路由器对输入时间的响应,接下来可能使用可行成功者或进行路由动态查询
 
输入事件和局部计算
典型的输入事件是:路由器从新的更新中学习到新的路由;路由器接口失效;邻接路由器失效。
局部计算的原理:当输入事件发生时,看路由器是否能够在局部找到替代路由。其步骤如下:
1 )如果存在 FS 路由,则将最小 metric FS 路由载入路由表,并发送更新到邻接路由器以通知新的路由。
2 )如果没有 FS 路由,动态查询邻接路由器以获得新的路由。
要成为 FS 路由,首先需要满足可行性条件,其定义为:路由的 RD 值必须小于当前 FD 值。
如上拓扑结构,在 R4 上,最初选出的到 172.31.211.0/24 的成功者路由是经由 R1 FD 为( 3+2+3 *256 = 2048 (这里计算 metric 仅考虑 delay ),来自 R1 RD = 3+2 *256 = 1280 R4 到达 172.31.211.0/24 的另一条路由是通过 R2 ,其 RD = 3+4 *256 = 1792 。如果 R1 失效, R4 会首先检查局部是否有满足可行性条件的路由,显然,通过 R2 的路由的 RD 值( 1792 )小于当前 FD 值( 2048 ),所以这时就可以选择这条路由为 FS ,将其载入路由表,并对外发布包含新路由的更新。
 
动态查询路由
当通过局部计算无法找出 FS 路由时, EIGRP 路由器就只能采用动态方式向邻接路由器查询新路由。首先路由器会改变其状态为 active ,此时 EIGRP 会多点传送查询( Query )消息到邻接路由器,邻接路由器接收到查询消息后,会返回单点 EIGRP 响应( Reply )包,在包中会标明是否它们存在到该子网的无环路由。路由器学习接收到的所有 Reply 消息,更新其拓扑表,并重新计算已知路由和选择新的成功者。如果仍然无法找到新的替代路由,路由器即认为到该子网无路由。
对邻接路由器而言,它们将任何接收到的 Query 消息看作输入事件,然后它们会采取如下步骤:
1 )如果路由器在其拓扑表中没有到那个子网的记录,它会发送 EIGRP Reply 包以表示其无路由。
2 )如果路由器到那个子网的成功者未改变,或者发现 FS ,邻接路由器会发送包含该路由详细信息(原成功者或 FS )的 EIGRP Reply 包。
3 )如果 1 )和 2 )条件均不满足,邻接路由器也进入 active 状态,并在其邻接路由器发送响应之后再传送 EIGRP 响应给源 Query
注意到第 3 )条可能导致动态查询过程无限循环,停止在动态阶段过长的路由称为“ stuck-in-active ”路由。
举例:
仍然以上面的拓扑图为例,如果 R1 R4 的接口失效,现在 R4 要查找到 172.31.151.0/24 的替代路由, R4 172.31.151.0/24 的当前 FD = 3+3 *256 = 1536 ,而发自 R2 的到 172.31.151.0/24 RD = 3+4 *256 = 1792 ,由于 RD 大于当前 FD ,所以不满足可行性条件, R4 进入 active 状态,发送 Query 消息到邻接路由器 R2 R2 会将其到 172.31.151.0/24 的成功者路由作为响应发送回 R4 R4 使用学习到的响应消息更新拓扑,并载入新的通过 R2 172.31.151.0/24 的路由(此时 FD = 3+4+3 *256 = 2560 ),然后再发送更新到邻接路由器。
(注: Query 消息是通过 RTP 可靠传输,多点传送; Reply 消息也是可靠的,单点传送。它们都用 Ack 消息应答)
 
关于 stuck-in-active
在某些特殊情形下, EIGRP 的动态查询会一直进行下去,导致路由长时期无法收敛。对这类情况, EIGRP 使用了一个 Active 定时器,它可以限制路由停留在 active 状态的时间。如果 Active 定时器超时,路由器就将该路由置为 stuck-in-active 状态。但是这样也会有副效应,因为在置 stuck-in-active 状态的同时,路由器也会认为未发送 Reply 消息的邻接路由器失效了。如果你希望避免这种局面发生,可以采用 router eigrp 下的 timers active-time disabled 子命令来屏蔽 Active 定时器。
 
限制查询范围
相比于 Active 定时器,另一种更有效的解决方案是将 Query 消息限制在一定范围内。你可以限制接收消息的邻接路由器个数,或者限制 Query 消息流的跳数,这些都能大大缩短等待时间。具体来说,两种方法可以用来限制查询范围:
1 )路由汇总。当到达路由器的查询发现一条汇总路由,但没有找到精确匹配路由,那么路由器立即响应其没有该路由。例如,路由器的拓扑表中已有到 172.31.0.0/16 的路由,此时接收查询到 172.31.151.0/24 的路由,那么路由器立即回应 Reply 声明自己没有到 172.31.151.0/24 的路由。这样可以限制查询的跳数。
2 )使用 EIGRP 的桩路由器( stub router )。桩路由器是非流量传输的路由器(如上图中的 R5 就是一个比较好的桩路由器选择)。非桩路由器不能发送 Query 消息到桩路由器,这样就可以限制接收 Query 消息的邻接路由器的个数。

你可能感兴趣的:(学习,Cisco,休闲,EIGRP,CCIE)