增强型内部网关路由协议

加强型网关间选径协议(英语:Enhanced Interior Gateway Routing Protocol,缩写为EIGRP),又译增强型内部网关路由协议,一种内部网关协议(IGP)。在内部网关路由协议(IGRP)的基础上,由思科公司发展而成,于2013年Cisco将此标准公开,不再是私有的路由协议[1],在同样。EIGRP是一种高级距离矢量路由协议(也称混合型路由协议)。

EIGRP的基本操作

编辑

EIGRP所收集的信息存放在以下三个表中:

  • 邻居表(Neighbor Table):用来存放和邻居路由器相关的数据。如邻居路由器IP地址、与邻居路由器相连的本地接口、保持时间等。
  • 拓扑表(Topology Table):该表用来存放所有从邻居路由器学习到的路径信息。拓扑表中的每一条路径都至少有一个后继(Successor)。该表中的每一条路径信息可以被标记为被动(Passive)状态或者活动(Active)状态。被动状态说明此路径处于稳定状态,并且路由器知道如何到达该目的地。活动状态则说明网络拓扑发生变化,并且路由器正在处理相关信息,以得到一条新的到达该目的地的最佳路径。
  • 路由表(Routing Table):拓扑表中的后继(Successor)会被放入路由表,路由器根据路由表来转发数据包。

EIGRP有以下四个基本组件:

  • 邻居发现和恢复(Neighbor discovery/recovery):邻居发现和恢复机制使得运行EIGRP的路由器可以自动的发现与之直接相连的其他运行EIGRP的路由器,并与它们建立邻居关系。邻居发现和恢复机制还维护路由器与其他路由器之间的邻居关系。EIGRP路由器通过发送Hello包来建立和维护邻居关系,如果在一定的时间间隔内没有收到邻居路由器发来的Hello包,则认为该邻居已经死亡,并中断邻居关系,将邻居从邻居表中清除。
  • 可靠传输协议(Reliable Transport Protocol RTP):可靠传输协议的作用是保障EIGRP协议数据包的可靠的、有序的传送。RTP同时使用单播和组播来传送EIGRP协议数据包。有些类型的EIGRP数据包必须被可靠的传送,有些则无需可靠的传送。所谓可靠的传送,即发送的数据包需要被接收方显示或隐式的确认。
  • DUAL有限状态机(DUAL finite-state machine DUAL FSM):DUAL有限状态机是EIGRP用来计算最佳路径的机制。
  • 协议相关模块(Protocol-dependent modules PDMs ):协议相关模块的引进,使得EIGRP可以支持不同的网络层协议,如IPXAppleTalkIPv6,而不仅仅是IPv4协议。

混合度量值

编辑

EIGRP同时考虑了链路的带宽、延迟、可靠性、负载4个因素来计算路由的度量值:

Router>show ip eigrp topology 10.0.0.1 255.255.255.255
IP-EIGRP topology entry for 10.0.0.1/32
  State is Passive, Query origin flag is 1, 1 Successor(s) , FD is 40640000
  Routing Descriptor Blocks:
  10.0.0.1 (Serial0/0/0) , from 10.0.0.1, Send flag is 0x0
      Composite metric is (40640000/128256) , Route is Internal
      Vector metric:
        Minimum bandwidth is 64 Kbit
        Total delay is 25000 microseconds
        Reliability is 255/255
        Load is 197/255
        Minimum MTU is 576
        Hop count is 1
  • 带宽(Bandwidth):源和目的地之间的链路的最小带宽,单位为kbp。
  • 负载(Load):源和目的地之间的链路的最重负载,该负载基于分组速率和接口的配置带宽。
  • 延时(Delay):源和目的地之间接口的累计延时,单位为ms。
  • 可靠性(Reliability):源和目的地之间的最低可靠性,该可靠性基于存活消息。

EIGRP在计算混合度量值的时候还引入了5个K值:K1到K5。注意K值在计算的时候仅仅作为一个乘数,而不等于所对应的真实值,如K1的数值不等于带宽的数值。

默认情况下,EIGRP在计算混合度量值的时候只考虑了带宽和延迟(即K1和K3)两个因素,但是可以人工的修改K值来控制所考虑的因素。

EIGRP的混合度量值根据以下公式来计算:

 

公式中K1到K5的值可以手工的设为0~255之间任意整数。

默认情况下K1和K3设为1,其他K值设为0,公式可以简化为(Bandwidth + Delay) * 256。

EIGRP域内所有路由器的K值都必须设为相同的值,否则可能会产生路由环路。Cisco规定如果两台EIGRP路由器的K值不同,那么它们不会建立邻居关系。

EIGRP使用以下公式来计算带宽:

Bandwidth for EIGRP = 107 / Interface Bandwidth

其中:Interface Bandwidth为使用链路(由目的到源)所有区间上的最小带宽,使用千比特每秒(kilobits per second/kbps)为计量单位; Interface Delay为各链路总延迟,单位为10μs(tens of microseconds)。[2]

在Cisco路由器上,带宽和延时都是可以手工设置的。

IGRP也使用相同的基本公式来计算混合度量值,唯一不同的是该公式没有乘数256。

EIGRP同样也使用了跳数(Hop),不过在计算混合度量值的时候跳数并没有包括在其中。在Cisco路由器上,默认的跳数最大值为100,任何跳数超过100的路由都将被视为不可达。当然亦可调整每台Cisco路由器上头的EIGR跳数来增加网络路由的范围,最大跳数为244。

后继

编辑

后继(Successor),是指从当前路由器到目的路由器路径最优的路由。后继必须同时满足以下两个条件:

  • 它到某目的地的路径具有最低的度量值。
  • 它不是路由环路的一部分。

第一个条件可以通过比较所有从邻居路由器接收到的到相同目的地的路由的度量值,来选出具有最低度量值的路由器。 第二个条件可以通过可行条件(Feasibility Condition,FC)来保证。对于去往同一个目的地的路由,若有多个相同的目的地路由度量质,则会有多个后继,以达到负载平衡(Load Balance)。

后继会被加载到路由表以供路由器转发数据,并且EIGRP路由器会将加载到路由表中的路由通告给其他EIGRP邻居。

可行后继

编辑

除了度量值最低的路径外,拓扑表还会存储前往每个目的地的后备路径。要成为可行后继,下一跳路由器的通告距离(Advertisement Distance)必须小于当前路由的可行距离(Feasible Distance),即AD<FD。可行后继比当前路由器离目的地更近,但不是度量值最小的路径,所以不会加载到路由表中,只会存储在拓扑表中。和后继一样,对于同一个目的地,可以有多个可行后继。

通告距离和可行距离

编辑

通告距离(Advertised Distance,AD)是到目的地的下一跳路由器到该目的地的度量值。通告距离的英文也可写作Reported Distance(RD)。

可行距离(Feasible Distance,FD)是路由器到某目的地的最低度量值。FD等于AD加上从当前路由器到下一跳路由器的度量值。

可行条件

编辑

eigrp的可行条件为: 路由的AD< successor的FD

路由的状态

编辑

被动(Passive)状态:EIGRP网络收敛完成后,并能提供无路由环路(Loop-Free Route)路由状态。当前网络为可用。

活动(Active)状态:当前的网络正处于发送查询状态,当前网络不可用。若拓朴表一直出现此状态,则EIGRP这条路由已经进入到 Stuck-in-Active (SIA)的状态,提示EIGRP网络的收敛发生了问题。

更新(Update)等待状态:当前网络正处于等待更新包的回应状态。(较少看见)

查询(Query)等待状态:当前网络正处于等待查询包的回应的状态。(较少看见)

EIGRP的路由协议类型

编辑

EIGRP其他特性

编辑

⒈支持 Classful 与 Classless 路由特性: EIGRP一改以往IGRP不支持Classless的缺点。在于发送路由更新的时候,亦携带该路径的子网遮罩(submask)。而支持自动路由汇总(auto-summary)的功能,而这项功能是默认激活。不过通常在于专业的网管人员使用EIGRP的时候,会强烈建议关闭该项自动路由汇总的功能。

⒉支持不点对点路径度量负载平衡(Unequal Cost Path Load Balancing): 虽然EIGRP支持不点对点路径度量负载平衡;但于Cisco路由器上仍需手动激活此项功能。而要使用此项功能的要求在于拓朴表(topology table)当中必须拥有可行后继(Feasible Sucessor)才可激活此功能。而可行后继路由路径度量必须小于或等于所设置的变量(variance)的倍数值(1-128)才能激活负载平衡的功能,符合该倍数值的可行后继路由则会出现在路由表当中。目前此特性是所有路由协议(除IGRP外)望尘莫及。

⒊路由更新占用较少的接口带宽(interface bandwidth): EIGRP默认情况下,最多占用接口或子接口配置带宽的50%。由于在早期的网络带宽较少的状况下,EIGRP协议能够减少路由协议之间的沟通所占用的带宽。至今带宽较大的今日,这个功能也就显得没有那么重要。目前此特性是独一无二。当然亦可在Cisco路由器上的接口上配置带宽或者调整占用的百分比等等。

⒋Stuck-in-Active: EIGRP的路由环境在于中小型的路由环境中(小于20台)的路由收敛速度是首屈一指(由于使用DUAL算法,并且拥有自身的拓朴表。);但是在于大型的的路由环境中(大于50台)的路由收敛速度反而会因为DUAL算法而导致路由收敛产生SIA(Stuck-in-Active)的问题发生。而这个问题的解决方案就是限制EIGRP查询范围,并且在路由器的接口(interface)上设置路由汇总(route summary),如此才能够阻止EIGRP的SIA状况。

参考文献

编辑

TCP/IP路由技术(第一卷)(第二版)(美)多伊尔,(美)卡罗尔 著,葛建立,吴剑章 译 / 人民邮电出版社

外部链接

编辑
  1. ^ Cisco公開EIGRP路由協議. [2014-09-18]. (原始内容存档于2014-09-07). 
  2. ^ IETF RFC7868 文档页面存档备份,存于互联网档案馆) 5.6.1.1