EIGRP:Enhanced Interior Gateway Routing Protocol 即 增强内部网关路由协议。也翻译为 加强型内部网关路由协议。 EIGRP是Cisco公司的私有协议(2013年已经公有化)。 EIGRP结合了链路状态和距离矢量型路由选择协议的Cisco专用协议,采用弥散修正算法(DUAL)来实现快速收敛,可以不发送定期的路由更新信息以减少带宽的占用。
EIGRP使用多种参数计算去往目标网络的Metric值,包括带宽(Bandwidth)、延迟(delay)、可靠性(reliability)、
负载(loading)、最大传输单元(MTU),这5个参数分别使用K值来表示,即K1、K2、K3、K4、K5,所以如果两台EIGRP路由器之间的5个K值不同,则代表双方计算Metric值的方法不同;无论是EIGRP还是其它协议,在需要使用带宽计算Metric时,只计算接口出方向的带宽,而接口进方向的是不计算在内的,也就是一条链路上,只有一个出接口的带宽会被计算,而进接口的带宽是被忽略的。
EIGRP Metric的5个标准:
带宽:
10的7次方除以源和目标之间最低的带宽乘以256(10的7次方除以以Kbit/s为单位的最小带宽,然后加上延迟之和除以10,最后乘于256)。
延迟:
接口的累积延迟乘以256,单位是10微秒。
可靠性:
根据keepalive而定的源和目的之间最不可靠的可靠度的值。
负载:
根据包速率和接口配置带宽而定的源和目的之间最不差的负载的值。
最大传输单元:
路径中最小的MTU.MTU包含在EIGRP的路由更新里,但是一般不参与EIGRP度的运算。
EIGRP Metric的计算
一般情况下,K5=0;EIGRP度量值的计算公式为:256*{K1(107/带宽)+K2(107/带宽)/(256-负载)+K3(延迟)}
由于默认情况下,K1和K3是1,其他的K值都是0,所以通常情况下,度量值=256×(10^7/最小带宽+累积延时/10)。
如果修改K值,使K5不等于0,则 Metric 计算式变成:256*[K1(107/带宽)+K2(107/带宽)/(256-负载)+K3(延迟)]*[K5 / (可靠性+K4)]
EIGRP 要求两台路由器的K值必须相同才能成为邻居。另外,K2,K4,K5最好不要设置,因为这些参数设置为非零之后,会导致计算度量值时会考虑接口的负载和可靠性,而负载和可靠性会随时间变化,这将导致EIGRP重新泛洪拓扑数据,还可能导致路由器不断地选择不同的路由,由此导致网络不稳定。
在EIGRP协议中,总共会使用5种类型的数据包,分别为Hello、Update、 Query、Reply、Ack,下面介绍各种数据包的功能与用途:
Hello
是用来发现和维护EIGRP邻居关系的,目标地址为224.0.0.10,Hello包在邻居收到后不需要确认。
Update
发给邻居的路由表,通过组播发送Update数据包,邻居收到后必须回复确认消息。
Query
当路由信息丢失并没有备用路由时,使用Query数据包向邻居查询,邻居必须回复确认。
Reply
是对邻居Query数据包的回复,也需要邻居回复确认。
Ack
是对收到的数据包的确认,告诉邻居自己已经收到数据包了,收到Ack后,不需要再对Ack做回复,因为这是没有意义的,并且可能造成死循环。
EIGRP协议的特点:
1.通过发送和接收Hello包来建立和维持邻居关系,并交换路由信息;
2.采用组播(224.0.0.10)或单播进行路由更新;
3.EIGRP的管理距离为90或170;
4.采用增量更新,减少带宽占用;
5.支持可变长子网掩码(VLSM),默认开启自动汇总功能;
6.支持IP、IPX和AppleTalk等多种网络层协议;
7.对每一种网络协议,EIGRP都维持独立的邻居表、拓扑表和路由表;
8.EIGRP使用Diffusing Update算法(DUAL)来实现快速收敛并确保没有路由环路;
9.存储整个网络拓扑结构的信息,以便快速适应网络变化;
10.支持等价和非等价的负载均衡;
11.使用可靠传输协议(RTP)保证路由信息传输的可靠性。
12.无缝连接数据链路层协议和拓扑结构,EIGRP不要求对OSI参考模型的2层协议进行特别的配置。
弥散更新算法:
(弥散更新算法可以保证路由100%无环路loopfree)为了能够让DUAL正确的操作,低层协议必须满足以下几个条件:
1.一个节点要在有限的时间里检测到新邻居的存在或和一个邻居的连接的丢失。
2.在链路上传输的所有信息必须在有限的时间里按正确的顺序收到。
3.所有的消息,包括链路cost的更改,链路故障,和新邻居的发现,都应该是在有限时间里,一个一个的依次处理Cisco的EIGRP使用邻居的发现/恢复和RTP来确保上述前提条件。
不足:
定时发送HELLO报文。运行EIGRP的路由器之间必须通过定时发送HELLO报文来维持邻居关系,这种邻居关系即使在拨号网络上,也需要定时发送HELLO报文,这样在按需拨号的网络上,无法定位这是有用的业务报文还是EIGRP发送的定时探询报文,从而可能误触发按需拨号网络发起连接,尤其在备份网络上,引起不必要的麻烦。所以,一般运行EIGRP的路由器,在拨号备份端口还需配置Dialer list和Dialer group,以便过滤不必要的报文,或者运行TRIP协议,这样做增加路由器运行的开销。而OSPF可以提供对拨号网络按需拨号的支持,只用一种路由协议就可以满足各种专线或拨号网络应用的需求。
基于分布式的DUAL算法。EIGRP的无环路计算和收敛速度是基于分布式的DUAL算法的,这种算法实际上是将不确定的路由信息散播(向邻居发query报文),得到所有邻居的确认后(reply报文)再收敛的过程,邻居在不确定该路由信息可靠性的情况下又会重复这种散播,因此某些情况下可能会出现该路由信息一直处于活动状态(这种路由被称为活动路由栈),并且,如果在活动路由的这次DUAL计算过程中,出现到该路由的后继(successor)的测量发生变化的情况,就会进入多重计算,这些都会影响DUAL算法的收敛速度。而OSPF算法则没有这种问题,所以从收敛速度上看,虽然整体相近,但在某种特殊情况下,EIGRP还有不理想的情况。
EIGRP是Cisco公司的私有协议。Cisco公司是该协议的发明者和唯一具备该协议解释和修改权的厂商。如果要支持EIGRP协议需向Cisco公司购买相应版权,并且Cisco公司修改该协议没有义务通知任何其他厂家和使用该协议的用户。而OSPF是开放的协议,是IETF组织公布的标准。世界上主要的网络设备厂商都支持该协议,所以它的互操作性和可靠性由于公开而得到保障,并且在众多的厂商支持下,该协议也会不断走向更加完善。
助教:马季