一.EIGRP路由协议简介


  
  是Cisco的私有路由协议,它综合了距离矢量和链路状态2者的优点,它的特点包括:
  1.快速收敛:链路状态包(Link-State Packet,LSP)的转发是不依靠路由计算的,所以大型网络可以较为快速的进行收敛.它只宣告链路和链路状态,而不宣告路由,所以即使链路发生了变化,不会引起该链路的路由被宣告.但是链路状态路由协议使用的是Dijkstra算法,该算法比较复杂,并且较占CPU和内存资源和其他路由协议单独计算路由相比,链路状态路由协议采用种扩散计算(diffusingcomputations ),通过多个路由器并行的记性路由计算,这样就可以在无环路产生的情况下快速的收敛.
  2.减少带宽占用:EIGRP不作周期性的更新,它只在路由的路径和度发生变化以后做部分更新.当路径信息改变以后,DUAL只发送那条路由信息改变了的更新,而不是发送整个路由表.和更新传输到一个区域内的所有路由器上的链路状态路由协议相比,DUAL只发送更新给需要该更新信息的路由器。 在WAN低速链路上,EIGRP可能会占用大量带宽,默认只占用链路带宽50%,之后发布的IOS允许使用命令ip bandwidth-percent eigrp来修改这一默认值 .
  3.支持多种网络层协议:EIGRP通过使用“协议相关模块”(即protocol-dependentmodule<PDM>),可以支持IPX,ApplleTalk,IP,IPv6NovellNetware等协议.
  4.无缝连接数据链路层协议和拓扑结构:EIGRP不要求对OSI参考模型的层2协议做特别是配置.不像OSPF,OSPF对不同的层2协议要做不同配置,比如以太网和帧中继总之,EIGRP能够有效的工作在LAN和WAN中,而且EIGRP保证网络不会产生环路(loop-free);而且配置起来很简单;支持VLSM;它使用多播和单播,不使用广播,这样做节约了带宽;它使用和IGRP一样的度的算法,但是是32位长的;它可以做非等价的路径的负载平衡.
  

二.EIGRP的四个组件


  
  1.Protocol-Dependent Module(PDM)
  2.可靠传输协议(Reliable Transport Protocol,RTP)
  3.邻居的发现/恢复
  4.弥散更新算法(Diffusing Update Algorithm,DUAL)
  
  

三.RTP-EIGRP的可靠传输协议


  

  RTP负责EIGRP packet(下面有讲)的按顺序(可靠)的发送和接收,这个可靠的保障是通过Cisco私有的一个算法,reliable multicast实现的,使用组播地址224.0.0.10,每个邻居接收到这个可靠的组播包的时候就会以一个unicast作为确认按顺序的发送是通过packet里的2个序列号实现的,每个packet都包含发送方分配的1个序列号,发送方每发送1个packet,这个序列号就递增1.另外,发送方也会把最近从目标路由器接收到的packet的序列号放在这个要发送的packet里,在某些情况下,RTP也可以使用无需确认的不可靠的发送,并且使用这种不可靠发送的packet中不包含序列号.
  

四.EIGRP-Metric计算方法


  
  EIGRP选择一条主路由(最佳路由)和一条备份路由放在topology table(EIGRP到目的地支持最多6条链路).它支持几种路由类型:内部,外部(非EIGRP)和汇总路由.EIGRP使用混合度.
  i.EIGRP Metric的5个标准
  1.带宽:10的7次方除以源和目标之间最低的带宽乘以256
  2.延迟(delay):接口的累积延迟乘以256,单位是微秒
  3.可靠性(reliability):根据keepalive而定的源和目的之间最不可靠的可靠度的值
  4.负载(loading):根据包速率和接口配置带宽而定的源和目的之间最不差的负载的值
  5.最大传输单元(MTU):路径中最小的MTU.MTU包含在EIGRP的路由更新里,但是一般不参与EIGRP度的运算
  ii. EIGRP Metric的计算:EIGRP使用DUAL来决定到达目的地的最佳路由(successor).当最佳路由出问题的时候,EIGRP不使用
  holddown timer而立即使用备份路由(feasible successor),这样就使得EIGRP可以进行快速收敛
  EIGRP计算度的公式,K是常量,公式如下:
  metric=[K1*bandwidth+(K2*bandwidth)/(256–load)+K3*delay]*[K5/reliability+K4]
  默认:K1=1,K2=0,K3=1,K4=1,K5=0 不推荐修改K值.K值通过EIGRP的hello包运载.如果两个路由器的K值不匹配的话它们是
  不会形成邻居关系的 Metric weight Tos K1 K2 K3 K4 K5 来修改K值,Tos 默认为0.
  
  

五.EIGRP Packet


  

  EIGRP使用多种类型的packet,这些packet通过IP头部信息里的协议号88来标识:
  1. Hello packet:用来发现和恢复邻居,通过组播的方式发送,使用不可靠的发送.
  2. ACK(acknowledgement) packet:不包含数据(data)的Hello包,使用unicast的方式,不可靠的发送.
  3. Update packet:传播路由更新信息,不定期的,通过可靠的方式发送(比如网络链路发生变化).当只有一台路由器需要路由更新 时,update通过unicast的方式发送;当有多个路由器需要路由更新的时候,通过组播的方式发送.
  4. Query(查询) & Reply(应答) packet:是DUAL finite state machine用来管理扩散计算用的,查询包可以是组播或unicast;应答包是通过unicast的方式发送,并且方式都是可靠的.
  5. Request(请求) packet:最初是打算提供给路由服务器(server)使用的,但是从来没实现过.
  

六.EIGRP的邻居发现/恢复协议


  
  EIGRP的Update包是非周期性发送的,
  1.Hello包在一般的网络中(比如点到点,point-to-point)是每5秒组播1次(要随机减去1个很小的时间防止同步);
  2.在多点(multipoint)X.25,帧中继(Frame Relay,FR)和ATM接口(比如ATM SVC)和ISDN PRI接口上,Hello包的发送间隔是60
  秒.
  在所有的情况中,Hello包是不需要确认的.可以在接口配置模式下修改该接口的Hello包默认的发送间隔,命令为
  ip hello-interval eigrp
  当一个路由器收到从邻居发来的Hello包的时候,这个Hello包包含了一个holdown time,这个holdown time告诉这个路由器等待后续Hello包的最大时间.如果在超出这个holdown time之前没有收到后续Hello包,那么这个邻居就会被宣告为不可达,并通知DUAL这个邻居已丢失.默认hold time是3倍于Hello包发送间隔的, 更高链路 -- 默认Hello间隔和保持时间是5s和15s T1或低于T1链路 -- 分别是60s和180s 可以在接口配置模式下修改这个默认的holdown time, 命令为
  ip hold-time eigrp.
  EIGRP邻居信息都记录在邻居表(neighbor table)中,使用show ip eigrp neighbors命令查看IP EIGRP的邻居.
  
  

七. EIGRP的术语定义


  
  
1.弥散更新算法简介 (弥散更新算法可以保证路由100%无环路loopfree)为了能够让DUAL正确的操作,低层协议必须满足以下几个条件:
  1. 一个节点要在有限的时间里检测到新邻居的存在或和一个邻居的连接的丢失
  2. 在链路上传输的所有信息必须在有限的时间里按正确的顺序收到
  3. 所有的消息,包括链路cost的更改,链路故障,和新邻居的发现,都应该是在有限时间里,一个一个的依次处理Cisco的EIGRP使用邻居的发现/恢复和RTP来确保上述前提条件
  2.adjacency(邻接): 在刚启动的时候,路由器使用Hello包来发现邻居并标识自己用于邻居的识别.当邻居被发现以后,EIGRP会在它们之间形成一种邻接关系.邻接是指在这2个邻居之间形成一条交换路由信息的虚链路(virtual link).当邻接关系形成以后,它们之间就可以相互发送路由update,这些update包括路由器它所知道的所有的链路及其metric.对于每个路由,路由器都会基于它邻居宣告的距离(distance)和到达那个邻居的链路的cost来计算出一个距离
  3.Feasible Distance(FD,可行距离): 到达每个目标网络的最小的metric将作为那个目标网络的FD.比如,路由器可能有3条到达网络172.16.5.0的路由,metric分别为380672,12381440和660868,那么380672就成了FD.
  4. Feasible Condition(FC,可行条件): 邻居宣告到达目标网络的的距离小于本地路由器到达目标网络的FD AD < FD => FC=ture.
  5.Feasible Successor(FS,可行后继路由): 如果一个邻居宣告到达目标网络的距离满足FC,那么这个邻居就成为FS.比如,路由器到达目标网络172.16.5.0的FD为380672,而他邻居所宣告到达目标网络的距离为355072,这个邻居路由器满足FC,它就成为FS;如果邻居路由器宣告到达目标网络的距离为 380928,即不满足FC,那么这个邻居路由器就不能成为FS,FS和FC是避免环路的核心技术,FS也是downstream router(下游路由器),因为从FS到达目标网络的距离比本地路由器到达目标网络的FD要小,存在一个或多个FS的目标网络被记录在拓扑表中。
  6.拓扑表(Topological Table)
  拓扑表包括以下内容:
  目标网络的FD.
  所有的FD.
  每一个FS所宣告的到达目标网络的距离.
  本地路由器计算出的,经过每个FS到达目标网络的距离,即基于FS所宣告到达目标网络的距离和本地路由器到达那个FS的链路的cost.
  发现FS的网络相连的接口.
  7.邻居表(Neighbor Table):每个路由器的RAM中都保存有关于邻居的地址和接口信息的表。
  8.后继路由(Successor):又称成功者(Secessful),是到达远程网络的最佳路由。是EIGRP用于转发业务量的路由,它被存储在路由表中。
  

八.EIGRP路由协议优缺点


  
(1)EIGRP路由协议主要优点
  精确路由计算和多路由支持。EIGRP协议继承了IGRP协议的最大的优点是矢量路由权。EIGRP协议在路由计算中要对网络带宽、网络时延、信道占用率和信道可信度等因素作全面的综合考虑,所以EIGRP的路由计算更为准确,更能反映网络的实际情况。同时EIGRP协议支持多路由,使路由器可以按照不同的路径进行负载分担。
  较少带宽占用。使用EIGRP协议的对等路由器之间周期性的发送很小的hello报文,以此来保证从前发送报文的有效性。路由的发送使用增量发送方法,即每次只发送发生变化的路由。发送的路由更新报文采用可靠传输,如果没有收到确认信息则重新发送,直至确认。EIGRP还可以对发送的EIGRP报文进行控制,减少EIGRP报文对接口带宽的占用率,从而避免连续大量发送路由报文而影响正常数据业务的事情发生。
  快速收敛。路由计算的无环路和路由的收敛速度是路由计算的重要指标。EIGRP协议由于使用了DUAL算法,使得EIGRP协议在路由计算中不可能有环路路由产生,同时路由计算的收敛时间也有很好的保证。因为,DUAL算法使得EIGRP在路由计算时,只会对发生变化的路由进行重新计算;对一条路由,也只有此路由影响的路由器才会介入路由的重新计算。
  MD5认证。为确保路由获得的正确性,运行EIGRP协议进程的路由器之间可以配置MD5认证,对不符合认证的报文丢弃不理,从而确保路由获得的安全。
  路由聚合。EIGRP协议可以通过配置,对所有的EIGRP路由进行任意掩码长度的路由聚合,从而减少路由信息传输,节省带宽。
  实现负载分担。去往同一目的的路由表项,可根据接口的速率、连接质量和可靠性等属性,自动生成路由优先级,报文发送时可根据这些信息自动匹配接口的流量,达到几个接口负载分担的目的。
  配置简单。使用EIGRP协议组建网络,路由器配置非常简单,它没有复杂的区域设置,也无需针对不同网络接口类型实施不同的配置方法。使用EIGRP协议只需使用router eigrp命令在路由器上启动EIGRP 路由进程,然后再使用network 命令使能网络范围内的接口即可。
  (2)EIGRP路由协议主要缺点
  没有区域概念。EIGRP没有区域的概念,而OSPF在大规模网络的情况下,可以通过划分区域来规划和限制网络规模。所以EIGRP适用于网络规模相对较小的网络,这也是矢量-距离路由算法(RIP协议就是使用这种算法)的局限所在。
  定时发送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组织公布的标准。世界上主要的网络设备厂商都支持该协议,所以它的互操作性和可靠性由于公开而得到保障,并且在众多的厂商支持下,该协议也会不断走向更加完善。