名词简介:
EIGRP Databases(EIGRP数据库)存在三张表如下:
1、邻居表neighbor table:EIGRP路由器会在启动后发送HELLO包来寻找和维持邻居关系
2、拓扑表topology table:EIGRP路由器会把从邻居那里收到的路由路径信息加载到自己的拓扑表中,形成对全网络拓扑的认知
3、路由表routing table:路由器依靠它来进行数据的转发处理,该表中的内容是通过运行算法通过对topology table进行计算得出的一条或多条successor加入路由表。

DUAL算法:差分更新算法
 
EIGRP为了维护successor和feasible successor,采用了AD和FD
1、AD-advertised distance:从EIGRP的邻居到达目标网络的度量
2、FD-feasible distance:本地到邻居路由器的度量+AD
如何选择出successor和feasible successor呢?
EIGRP通过比较所有到达目标网络路径的FD,选择出最低的FD加入路由表中成为successor,次低的成为feasible successor。
因为有了feasible successor,当successor失效后,feasible successor马上可以取而代之,不用等待holddown超时,所以EIGRP可以在网络发生改变时很快速的收敛


EIGRP metric
前面在IGRP一篇中已经谈到了IGRP的度量值的衡量
其实IGRP和EIGRP的度量计算差不多,只是IGRP的度是24位的格式,而EIGRP却是32位的格式,所以是256倍。那么按照计算IGRP度量的办法计算出来一个值,然后乘以256就是EIGRP的度量啦
常用的两个衡量度量的参数:
1、带宽:10的七次方除以某条路由路径中的最低带宽值,然后乘以256
2、时延:所有接口的时延和乘以256,单位是微秒
前面IGRP中已经提到过,不可以随意的去修改权重……K值。
如果有必要,建议在经过周密的计算后,再来根据实际情况修改,在EIGRP中也是同样,而且当K值不匹配,那么他们无法形成邻居


EIGRP packet
在IGRP中谈到了三种路由:内部路由、系统路由、外部路由
在EIGRP中有5种包类型:
1、hello包:EIGRP路由器使用HELLO包来发现邻居和keep-alive
2、update包:通常采用多播(224.0.0.10)和单播来发送,发生在网络状态改变,拓扑变化,路由器加入和状态变化
3、query包:查询包----询问包,即路由器刚启动时或者还未计算出FD时,它向邻居发送该包来查询是否有到达目的地的FD,通常用多播地址
4、reply包:query包的回应包,以单播方式回应
5、ACK包:对一些特殊包确认,是单播方式发送。Update,query,reply三种包都需要确认,而hello包不需要。
关于一个确认的问题:网络中,A有两个邻居分别是B和C,当它向B和C发送了update包后,将会等待来自B和C的ACK包(stop-and-wait),如果此时C因为有了点问题,并没有发送ACK给A,而A只收到了来自B的ACK,那么A将等待下去,等到收到C的ACK后,才会继续传送下一条update。这样做的话,非常影响效率,那么EIGRP采用了对未经过确认的多播包使用单播地址来发送解决了这个问题。

当网络中的EIGRP路由器启动后,会从每个启用了EIGRP的接口周期性的向外发送组播报文——hello,在同一个AS之内,运行EIGRP的其他路由器收到该包后,会和其建立邻居关系,并加入到各自的neighbor table中。这里,如果不在一个AS内,或者K值不匹配,它们将无法形成邻居!
EIGRP的hello周期分两种情况:
1、高速链路上:T1以上,广播型网络,点对点……这些链路中5s一次
2、低速链路上:T1以下,ISDN BRI,FR等……为60s一次

邻居的失效:每台路由器会周期性的发送hello包,来维持和其他路由器之间的邻居关系,如果某台路由器在一定时间内,还未受到来自邻居的hello包,那么将宣告邻居失效,这个等待失效的时间为hold time,该时间是hello时间的三倍!

一般建议不修改这些参数,但是如果有特殊需要,比如说在低速链路上,hello频率过高,会造成拥塞,我们可以通过命令:
Ip hello-interval eigrp {AS-num} {seconds}------------修改hello时间
Ip hold-time eigrp {AS-num} {seconds}----------修改hold-time
这里如果你修改了hello时间的话,hold-time也要进行相应的改动,因为,默认hold-time是hello时间的3倍。


注:EIGRP是不会使用第二地址(secondary address次要地址)来记录邻居关系,它会使用接口的主地址!
EIGRP的全名是Enhance Interio Gateway Routing Protocol从字面就可以看出是加强型的IGRP,也就是再度改良IGRP而成EIGRP,EIGRP结合了距离向量(distance Vector)和连结——状态(Link-State)的优点以加快收敛,所使用的方法是DUAL(Diffusing Update Aigorithm),当路径更改时DUAL会传送变动的部分而不是整个路径表,而Router都有储存邻近的路径表,当路径变动时,Router可以快速地反应,EIGRP也不会周期性地传送变动讯息以节省频宽的使用,另外值得特别指出的是EIGRP具有支持多个网络层的协议,例如IP层对:IP层、IPX层对IPX层、AppleTalk的RTMP对RTMP,如下图:
   1170143396_ddvip_3875.jpg
  EIGRP整合(Integrated)了IP、AppleTalk和IPX三种协议。
  EIGRP是最典型的平衡混合路由选择协议,它融合了距离矢量和链路状态两种路由选择协、议的优点,使用散射更新算法 (DUAL),实现了很高的路由性能。
  EIGRP协议的特点如下。
  运行EIGRP的路由器之间形成邻居关系,并交换路由信息。相邻路由器之间通过发送和接收Hello包来保持联系,维持邻居关系。Hello包的发送间隔默认值为5s钟。
  ●运行EIGRP的路由器存储所有与其相邻路由器的路由表信息,以便快速适应路由变化;
  ●如果没有合适的路由存在,EIGRP将查询其相邻的路由器,以便发现可以替换的路由。
  ●采用不定期更新,即只在路由器改变计量标准或拓扑出现变化时发送部分更新信息。
  ●支持可变长子网掩码 (VLSM)和不连续的子网,艾持对自动路由汇总功能的设定。
  ●支持多种网络层协议,除IP协议外,还支持IPX、AppleTalk等协议。
         ●在运行EIGRP的路由器内部,有一个相邻路由器表、一个拓扑结构表和一个路由表。
  ●使用DUAL算法,具有很好的路由收敛特性。
  ●具有相同自治系统号的EIGRP和IGRP之间彼此交换路由
EIGRP概述
  加强型内部网关路由协议(以下简称“EIGRP”)是Cisco公司开发的距离矢量路由协议,支持IP、IPX等多种网络层协议。由于TCP/IP是当今网络中最常用的协议,故本文只讨论IP网络环境中的EIGRP。
  EIGRP是一个平衡混合型路由协议(Cisco公司创造的术语),既有传统的距离矢量协议的特点:路由信息依靠邻居路由器通告,遵守路由水平分割和反向毒化规则,路由自动归纳,配置简单,又有传统的链路状态路由协议的特点:没有路由跳数的限制,当路由信息发生变化时,采用增量更新的方式,保留对所有可能路由(网络的拓扑结构)的了解、支持变长子网掩码、路由手动归纳。该协议同时又具有自己独特的特点:支持非等成本路由上的负载均衡,采用差分更新算法(DUAL)在确保无路由环路的前提下,收敛迅速。因而适用于中大型网络。
EIGRP的术语和概念
  1.在EIGRP中,有五种类型的数据包:
  HELLO:以组播的方式发送,用于发现邻居路由器,并维持邻居关系。
  更新(update):当路由器收到某个邻居路由器的第一个HELLO包时,以单点传送方式回送一个包含它所知道的路由信息的更新包。当路由信息发生变化时,以组播的方式发送一个只包含变化信息的更新包。注意,两个更新包的内容不一样。
 
查询(query):当一条链路失效,路由器重新进行路由计算但在拓扑表中没有可行的后继路由时,路由器就以组播的方式向它的邻居发送一个查询包,以询问它们是否有一条到目的地的可行后继路由。
  答复(reply):以单点的方式回传给查询方,对查询数据包进行应答。
  确认(ACK):以单点的方式传送,用来确认更新、查询、答复数据包,以确保更新、查询、答复传输的可靠性。
  2.可行距离(feasible distance):到达一个目的地的最短路由的度量值。
  3.后继 ( successor):后继是一个直接连接的邻居路由器,通过它具有到达目的地的最短路由。通过后继路由器将包转发到目的地。
  4.通告距离(advertise distance):相邻路由器所通告的相邻路由器自己到达某个目的地的最短路由的度量值。
  5.可行后继 (feasible successor):可行后继是一个邻居路由器,通过它可以到达目的地,不使用这个路由器是因为通过它到达目的地的路由的度量值比其他路由器高,但它的通告距离小于可行距离,因而被保存在拓扑表中,用做备择路由。
  6.可行条件 (feasible conditon) :上述四个术语,构成了可行条件,是EIGRP路由器更新路由表和拓扑表的依据。可行条件可以有效地阻止路由环路,实现路由的快速收敛。
  7.活跃状态 (active state):当路由器失去了到达一个目的地的路由,并且没有可行后继可利用时,该路由进入活跃状态,是一条不可用的路由。当一条路由处于活跃状态时,路由器向所有邻居发送查询来寻找另外一条到达该目的地的路由。
  8.被动状态 (passive state):当路由器失去了一条路由的后继而有一个可行后继,或者再找到一个后继时,该路由进入被动状态,是一条可用的路由。
EIGRP的运行
  初始运行EIGRP的路由器都要经历发现邻居、了解网络、选择路由的过程,在这个过程中同时建立三张独立的表:列有相邻路由器的邻居表、描述网络结构的拓扑表、路由表,并在运行中网络发生变化时更新这三张表。
  1.建立相邻关系
  运行EIGRP的路由器自开始运行起,就不断地用组播地址从参与EIGRP的各个接口向外发送HELLO包。当路由器收到某个邻居路由器的第一个HELLO包时,以单点传送方式回送一个更新包,在得到对方路由器对更新包的确认后,这时双方建立起邻居关系。
  2.发现网络拓扑,选择最短路由
  当路由器动态地发现了一个新邻居时,也获得了来自这个新邻居所通告的路由信息,路由器将获得的路由更新信息首先与拓扑表中所记录的信息进行比较,符合可行条件的路由被放入拓扑表,再将拓扑表中通过后继路由器的路由加入路由表,通过可行后继路由器的路由如果在所配置的非等成本路由负载均衡的范围内,则也加入路由表,否则,保存在拓扑表中作为备择路由。如果路由器通过不同的路由协议学到了到同一目的地的多条路由,则比较路由的管理距离,管理距离最小的路由为最优路由。
  3.路由查询、更新
  当路由信息没有变化时,EIGRP邻居间只是通过发送HELLO包,来维持邻居关系,以减少对网络带宽的占用。在发现一个邻居丢失、一条链路不可用时,EIGRP立即会从拓扑表中寻找可行后继路由器,启用备择路由。如果拓扑表中没有后继路由器,由于EIGRP 依靠它的邻居来提供路由信息,在将该路由置为活跃状态后,向所有邻居发送查询数据包。
  如果某个邻居有一条到达目的地的路由,那么它将对这个查询进行答复,并且不再扩散这个查询,否则,它将进一步地向它自己的每个邻居查询,只有所有查询都得到答复后,EIGRP 才重新计算路由,选择新的后继路由器。
  EIGRP运行的验证
  在下图所示的网络拓扑中,路由器进行了基本的EIGRP配置,所有路由器都属于EIGRP自治系统1,未配置其他路由协议,我们用运行EIGRP的相关命令获得的有关信息来验证EIGRP的运行。
   1170143397_ddvip_3825.jpg
  我们以路由器R2为例来验证EIGRP是如何了解网络、选择路由的。
  对于目的地192.168.1.0、172.16.1.4,路由器R2都分别收到了它的两个邻居路由器R3(10.1.1.3)和R4(172.16.1.2)通告的路由。到目的地192.168.1.0的最短路由是通过R3,可行距离是20563200,但是R4的通告距离(281600)小于可行距离,符合可行条件,因而R4是该路由的可行后继路由器。到目的地172.16.1.4的最短路由是通过R3,可行距离是20537600,通过R4的通告距离(20537600)等于(注意:不小于)可行距离,不符合可行条件,因而R4不能作为该路由的可行后继路由器。
  EIGRP在缺省情况下,是等成本路由上的负载均衡,因而在路由表中到目的地 192.168.1.0的路由只有通过路由器R3(10.1.1.3)一条,备择路由(R4)保存在拓扑表中。因为是通过内部EIGRP学到的路由,故路由的管理距离为90。如果配置了非等成本负载均衡,备择路由也将被加入路由表。
  最后要强调的是,由于EIGRP是Cisco公司私有的路由协议,因而本文所探讨的内容都是基于Cisco公司的路由器。