EIGRP理论
简介
EIGRP是Cisco私有协议,它是由距离矢量和链路状态两种路由协议混合而成的一种协议。即像距离矢量协议那样,EIGRP从它的相邻路由器那里得到更新信息;也像链路状态协议那样,保存着一个拓扑表,然后通过自己的DUAL算法选择一个最优的无环路径。EIGRP不像传统的距离矢量协议,EIGRP有着很快的收敛时间,而且不用发送定期的路由更新;也不像链路状态协议,EIGRP并不知道整个网络是什么样的,它只能靠邻居公布的信息。EIGRP使用与IGRP相同的路由算法DUAL(扩散更新算法),DUAL机制是EIGRP的核心,通过它来实现无环路径。内部EIGRP管理距离为90,外部EIGRP管理距离为170,支持等价和非等价负载均衡。IP数据包中,EIGRP的协议字段为88。
名词解释:
度量值:EIGRP使用带宽(bandwidth)、延迟(delay)、可靠性(reliability)、负载(loading)、最大传输单元
(MTU)这五个值来计算度量,默认情况下只有带宽和延迟起作用。计算公式为——EIGRP度量=[(10^7/路径
上的较低带宽)+(所有延迟之和)]×256;EIGRP度量=IGRP度量×256。
可行距离(Feasible Distance):到达一个目的地的最小度量值。
通告距离(Advertise
Distance):相邻路由器所通告的它自己到达某个目的地的最小度量值。
可行条件(Feasible
Condition):通告距离(AD)小于可行距离的条件即AD
地的度量必须比本地路由器到达目的地的度量小。这个条件可以保证一条路径无环。
EIGRP
后继(Successor):一个直接连接的邻居路由器,它满足FC,通过它具有到达目的地的最小度量值的路
由器。后继路由器被用作下一跳来将报文转发到目的地。
可行后继(Feasible
Successor):一个邻居路由器,它满足FC,具有到目的地第二低度量值的路由器。当主
路由S不可用时,FS被用来替代主路由,因而被保存在拓扑表中,当做备用路由。
活跃状态/主动路由(active
state):是一种正在搜索FS的状态,当路由器丢失了S,并且没有FS可用时,该
路由进入活跃状态,是一条不可用的路由。当一条路由处于活跃状态时,路由器向所有邻居发送查询来寻
找另外一条到达该目的地的路由。
被动状态/被动路由(passive
state):是一种目前有正确的路由到达目的地的状态,当路由器失去了S而有一
个FS时,或者再找到一个S时,该路由进入被动状态,是一条可用路由。
邻居关系:EIGRP通过hello包来建立邻居关系,在低速链路上hello包的发送间隔为60秒、高速链路上为5秒。
在一段时间内如果没有收到hello包则重置邻居关系,这个时间为保持时间(hold time),默认的保持时间
是hello时间的三倍。这两种时间均可以手动修改,在建立邻居关系时,K值和自制系统号必须一样。可以
通过show ip eigrp neighbor查看邻居关系。
DUAL(扩散更新算法):
(暂无)
EIGRP的优点:
100%无环:如果整个网络包含在一个自制系统中,EIGRP使用DUAL能保证一张100%无环路由转发表;
快速收敛:EIGRP使用DUAL,通过备份路由而实现,当S不可用时,快速切换到FS上从而达到快速收敛的目的;
使用多播、单播:使用组播(224.0.0.10)或单播进行路由更新,节省链路带宽;
增大了网络规模:RIP最大只能是15跳;而EIGRP最大可支持255跳,IGRP为224跳,他们两个默认都为100跳;
支持三种网络层协议:EIGRP支持IP、IPX、Apple
Talk三种网络层协议,这也就增大了EIGRP的使用范围;
支持VLSM和非连续的网络:RIP和IGRP则不支持;
减少了带宽的消耗、更好地利用带宽:EIGRP不像RIP和IGRP那样,每隔一段时间就交换一次路由信息,它使用
触发式更新和增量更新,仅当某个目的网络的路由状态改变或路由的度量发生变化时,才向邻居发送路由
更新,因此其更新路由所需要的带宽比RIP和EIGRP小得多。EIGRP从EIGRP分组即将发出的接口上获得带宽
参数,这个参数值是基于接口指定的。例如:默认情况下,所有串行接口都有1544kb/s的带宽,不过这个
带宽值是可以配置的,EIGRP最多可以使用50%的接口带宽来承载EIGRP分组(可以使用ip bandwidth-
percent eigrp来修改),这就保证了EIGRP分组不会在主要的网络收敛过程中“饿死”常规的数据分组。
RIP和IGRP没有这种特性,所以大量的RIP和IGRP更新分组可能会阻止常规的分组通过。
组播MAC地址是:01-00-5E-00-00-0A。
说明:EIGRP是Cisco专有协议,当Cisco设备和其他厂商的设备互连时,不能使用EIGRP协议。
EIGRP形成邻居的条件:
1.AS号相同;
2.度量计算的K值相同;
3.认证相同(EIGRP只支持密文认证);
4.对端通告的Neighbor ID必须在本端的直连网段中存在。
注意:路由协议都是通过端口的Primary IP传输数据流并形成Neighbor
ID(代表一个接口)。EIGRP路由器在接收到Hello后会用自己的Primary IP的子网掩码与Hello中的Neighbor
ID进行与运算,得出网络地址后与自己路由表中的直连网段进行匹配,有则认为对方是邻居,并将其放入邻居表中,没有就会以不在同一子网为由来拒绝形成邻居。
说明:IGRP和EIGRP在相同的自制系统中可以自动再发布路由信息,但是也可以关闭自动再发布路由信息。
EIGRP详解
EIGRP的三张表:Neighbor Table、Topology Table、Routing
Table
初始运行EIGRP的路由器都要经历发现邻居、了解网络及选择路由的过程,在这个过程中同时建立三张独立的表格:Neighbor
Table、Topology Table、Routing Table。其中Neighbor
Table保存了和路由器建立了邻居关系的且直连的路由器;Topology
Table包含路由器学习到的到达目的地的所有路由条目;Routing Table则是最佳路径的路由表。
以路由器R4为例介绍Neighbor Table、Topology Table、Routing Table
1、R4的Neighbor Table中的每个邻居都转发一份IP路由表的备份给R4;
2、R4把从邻居处收到的路由表存储在自己的Topology
Table中,如图,R4分别收到R2和R3到网络172.16.1.0/24
通告,通告距离为110和160,R4收到后加上自己到R2和R3的度量后就得到了计算距离210和260;
3、R4检查Topology Table,然后选择出一条到达目的地的最佳路由,确定最佳的Successor
routers为R2,然后
把它放在Routing
Table中。
EIGRP的Routing
Table:
D:在本自制系统里学到的路由。
D EX:从外面发布进来的路由。
EIGRP的Neighbor
Table:
Address:邻居路由器的地址。
Interface:本地到邻居的接口。
Hold time:等待米有从邻居处接受到任何数据报文的最大时间,当收到新的报文后Hold
time复位。
SRTT(Smooth round-trip
time)顺利往返时间:一个EIGRP报文发送给邻居然后到本地路由器从邻居处接收
到确认报文所花费的时间,单位是ms。
RTO(Retransmission
timeout)重传超时:重新传输报文之前等待确认报文的时间,单位是ms。
Q Cnt(Queue
count)队列计数:等待发送的EIGRP报文数,如果这个数值持续高于0,说明网络发生了拥塞。
EIGRP的Topology
Table:
P:passive,表示网络处于稳定状态。
A:active,表示当前网络不可用,正处于发送查询状态。
U:update,表示网络处于等待update包的确认状态。
Q:query,表示网络处于等待query包的确认状态。
SIA:stuck-in-active,表示网络持续处于active状态,说明EIGRP网络的收敛发生了问题。
EIGRP路由的Traffic
Table(接收和发送信息表):
EIGRP的报文类型:
EIGRP使用可靠传输协议RTP(Reliable Transport
Protocl),RTP确保每一个EIGRP分组都必须得到确认,只有前一个分组得到确认之后才会发送下一个分组,RTP的重传机制使得发送给邻居可靠的报文在RTO(Retransmit
Time
Out)超出以后,还没得到确认的话,RTP会将分组重传(重传为单播,目的是为了不影响那些已经正常确认的路由),最多重传16次,如果16次之后还没有确认则重置邻居关系,直到邻居关系保持时间(hold
time)超出,宣布邻居不可达。接收者需要对update、reply和query这些有序号的报文进行确认,不需要可靠性的报文(如Hello和ACK)则没有必要确认。
Hello:以多播的方式发送,用于发现邻居路由器,并维持邻居关系。
更新(update):当路由器收到某个邻居路由器的第一个Hello报文时,以单点传送方式回送一个包含它所知道的
路由信息的更新报文。当路由信息发生变化时,以多播的方式发送一个只包含变化信息的更新报文。注
意,两个更新报文的内容不一样。
查询(query):当一条链路失效,路由器重新进行路由计算。但在拓扑表中没有可行的后继路由时,路由器就以
多播的方式向它的邻居发送一个查询报文,以询问它们是否有一条到目的地的可行后继路由。
答复(reply):以单点的方式回传给查询方,对查询数据报文进行应答。
确认(ACK):以单点的方式传送,用来确认update、query、reply数据报文,以确保传输的可靠性。
说明:OSPF要求邻居必须具有相同的Hello和Down的判定间隔才能进行通信,而EIGRP没有这种限制。在实际应用中,将EIGRP的保持时间设为Hello间隔的3倍,而在OSPF中将保持时间设为Hello间隔的4倍。
EIGRP路由维护过程:
1.建立相邻关系:运行EIGRP的路由器自开始运行起,就不断地用多播地址224.0.0.10从参与EIGRP的各个接口
向外发送Hello报文。当路由器之间彼此都收到Hello报文后,这时双方建立起邻居关系。
2.发现网络拓扑,选择最短路由:当路由器通过Hello报文动态地发现了一个新邻居时,也获得了来自这个新
邻居update通告的路由信息。路由器将获得的路由更新信息首先与拓扑表中所记录的信息进行比较,FD最小的
为S,如果有相同的FD的话,路由表可以存在多个S,默认可以存在4个。符合FC的路由被放入拓扑表,作为FS
备选路由器,如果S因故无效,而有效的FS存在的话,FS将代替S并无需进行重新计算。EIGRP的Topology
Table一次可以存在多个有效地FS。
3.路由查询、更新:当路由信息没有变化时,EIGRP邻居间只是通过发送Hello报文,来维持邻居关系,以减少
对网络带宽的占用。在发现一个邻居丢失、一条链路不可用时,EIGRP立即会从拓扑表中寻找FS,启用备选路
由器。如果拓扑表中没有FS,将该路由设置为活跃状态,向所有邻居发送查询数据报文,除了失效邻居。如果
某个邻居有一条到达目的地的路由,那么它将对这个查询进行答复,并且不再扩散这个查询。否则,相邻路由
器将进一步向它自己的每个邻居查询,只有所有查询都得到答复后,EIGRP才重新计算路由,重置FD,选择新
的后继路由器。如果相邻路由器没有可替换的路由,也没有相邻的邻居路由器,那么它就向请求路由器发回一
个度量为无穷大的回复报文。