EIGRP中AD与FD的区别

 在构建大型网络时,尤其是全Cisco的设备的时候,我们更加喜欢使用EIGRP而胜过OSPF。

      这是因为好多EIGRP中的Features在OSPF里面我们无法实现,比如:EIGRP是唯一一个支持非等值负载均衡技术的路由协议,或者说我们更加乐意去用Cisco的设备去搭配Cisco的Protocol。

      那么,是什么决定着EIGRP在转发数据包的时候的路径规则呢?这就需要用到FD、AD,后继和可行后继的关系了。

      AD,下一跳节点到目标网络之间的大家开销,这个大家比较好理解,就是以目前你所站的路由器开始算,下一跳与目标网络之间的cost。

      FD=从本地路由器开始算起到目标网络之间的cost,

      这样换算下来:

      FD=下一跳路由器的AD+本地路由器到下一跳路由器之间的cost。这点对于初学者来说是一个不好理解的地方,不过没关系,画个TOP,然后慢慢看看就会明白的。

      那么由此可以得出,最佳路径=最小开销=最小开销的FD

      后继=现在EIGRP所用的最佳的路径,那么为什么说EIGRP的汇聚速度是很快的呢?那就是,当EIGRP在计算路径的时候会一次性的计算2条路径,一条最佳的称作后继,那么另外一条backup路径,称为FS,即:可行后继,EIGRP会同时算出这两条路径,一个现在用,一个留着以后备用,所以EIGRP的汇聚速度是非常快的。

      那么,是不是任何的路径都可以成为FS呢?其实不是的,成为FS需要一个条件,那就是(FS的AD必须要小于后继的FD)

      所以,在构建EIGRP网络的时候,需要考虑的因素就有,FD,后继,可行后继(当然,是在大型冗余网络中)


关于DUAL:
DUAL为每个目标网络选择低开销值,无环路的路径
AD:邻居到目的网络的开销(cost)叫做AD,
FD:自身通过该邻居到达目的网络的开销(cost)叫做FD。
Successor:FD最低的路由器叫做successor,successor用来转发数据包,如果FD相同,可以存在多个successor。默认情况下,最多4个successor会添加进路由表(可以被配置到最多6个)。
Feasible successor :DUAL还会保留备份路径,备份路由器被叫做可行后继。成为可行后继路由器的条件是,这台路由器的AD比当前后继路由器的FD小。
 

DUAL是一个有限状态机,用于选择将哪些信息存储到拓扑表和路由选择表中。因此,DUAL内嵌了用于完成所有EIGRP路由计算的决策进程。它记录邻居通告的所有路由,根据度量值来选择到每个目的地的有效的,无环路路径,并将其加入到路由选择表中。
    
    通告距离和可行距离
    AD是邻居路由器前往特定网络的EIGRP度量值,这是下一跳路由器到目标网络的路径的度量值。
    FD是当前路由器前往特定网络的EIGRP度量值,它是从EIGRP邻居获悉的AD和当前路由器前往该邻居的EIGRP度量值之和。

    后继站和可行后继站
    后继站是一台用于转发分组的路由器,它有一条成本最低且没有环路的到目的地的路径。
    如果EIGRP拓扑表中有多条前往给定目标网络的路径的FD相同,则所有这些后继站(默认最多4条)都将被加入到路由选择表中。注意,是FD而不是AD决定了哪条路径是最佳的,并被加入到路由选择表中;AD只是被用来计算FD。
    可行后继站(FS)是提供备用路由的路由器。经由可行后继站的路由必须是无环路的,换句话说,它不能环回到当前的后继站。
    在确定后继站的同时也选定可行后继站。要成为FS,下一跳路由器前往特定网络的AD必须小于当前后继路由的FD。可行后继路由存储在拓扑表中,可同时存储多条前往同一个网络的可行后继路由。

    DUAL运算过程
    确保FS没有环路的数学公式要求备用路由的AD小于后继路由的FD。如果次优路由的AD大于或等于后继路由的FD,将没有FS。在这种情况下,将使用发现过程来查找到网络的替代路由,该过程使用EIGRP查询和应答。
    当DUAL确定需要给邻居传输一个分组时,并没有实际生成分组,而是直到传输的那一刻才生成。传输队列中包含一些小型号的定长数据结构,指出了传输分组时应将拓扑表的哪些部分包含在分组中,这意味着传输队列并不会占用大量内存,同时分组中包含的是最新的信息,如果某条路由多次改变状态,分组只指出其最后的状态,从而减少了占用的链路带宽。


本文转自zcm8483 51CTO博客,原文链接:http://blog.51cto.com/haolun/993158


上一篇:如何解决2012年7月1日增加闰秒后引起linux系统重启问题


下一篇:SAP WebIDE里UI5应用的隐藏文件project.json