- 论坛徽章:
- 0
|
EIGRP是一个CISCO的私有协议,它同时具备了链路状态和距离向量路由协议的一些特点。但是还是将其看作一种高级的距离向量路由协议。其具有如下的特点:
1、 快速收敛。EIGRP使用DUAL来实现快速的收敛。对于某个目标地址,路由器存储了所有可用的备用路由;如果没有可用的备用路由,那么它请求自己的邻居来发现一个替代的路由。
2、 简化了路由更新。EIGRP不使用定期更新,当路径信息发生变化时,其只发送与该链路有关的更新信息。并且DUAL只向需要该信息的路由器发送此更新,而链路状态路由协议则向在同一域内的所有的链路状态的路由器发送更新。
3、 支持多种网络层协议。支持IP/IP、Appletalk、NetWare。
4、 无缝链接各种数据链接层的协议和拓扑。
5、 EIGRP是一个无类路由协议,其支持不连续的子网和VLSM。
6、 EIGRP在路由更新时采用组播和单播。
7、 EIGRP支持不等价路径上的负载均衡。
EIGRP协议维护了三张表:邻居表、拓扑表和路由表。EIGRP为其支持的所有的网络层协议单独维护这些表。
EIGRP的neighbor table:包含了所有的直接连接的EIGRP的路由器的列表;
EIGRP的Topology table:
EIGRP路由器向其相邻的邻居发送自己的路由表;
接收到该路由表的邻居将这些路由表存储在EIGRP的拓扑表中;
EIGRP检查拓扑表,寻找最佳的路由,并将其放置在路由表中。
为了确认到某个目标网络的最佳路由和备份路由,EIGRP使用如下两个参数:
advertised distance:某个EIGRP路由器到达特定网络的metric
feasible distance:学习到的EIGRP邻居到特定网络的advertised distance加上到达这个 邻居路由器的metric。
EIGRP的metric的计算:
EIGRP选择出首选路由和备份路由,并将它们存储在拓扑表中(每个目标网络最多可以有6个),并且将首选路由存储在路由表中。
EIGRP的metric基于5个标准:带宽、延迟、可靠性、负载和MTU。
其中:
带宽:从源到目标的整个链路上的最小带宽;
计算方法:[10,000,000 / (bandwidth in kbps)] x 256
延迟:整个链路上的延迟的累积;
计算方法:[delay in tens of microseconds] x 256
Metric=[K1*BW+(K2*BW)/(256-load)+K3*delay]
默认情况下,K1=1,K2=0,K3=1,K4=0,K5=0,
也就是Metric=BW(lowest link)+Delay(sum of links)
EIGRP与IGRP的Metric的换算:
EIGRP以32bit的格式表示其的metric,而IGRP用24bit表示。
IGRP metric=EIGRP metric/256
EIGRP metric= IGRP metric*256
EIGRP协议的数据包
EIGRP协议一共有5种数据包:Hello、Update、Query、reply、ACK。
HELLO:以多播方式发送,用来发现邻居路由器,其携带的ACK数目为零。
UPDATE:只发送给受影响的路由器的可靠的路由改变信息。可以单播只某个特定的路由器或组播至一组连接的路由器。Update发生在路由器启动、Metric或topology发生变化以及路由器有active转换为passive状态时。
Query:当路由器执行路由计算或没有备用路由时,其向邻居路由器发送query数据包以确认邻居是否有到目标地址的备用路由。Query通常是组播的,但某些特定状态下可以是单播。
Reply:响应于query数据包。以单播形式发送给query的源。
ACK:用于确认一个可靠的数据包。
在上述的这些数据包中,Update、Query和Reply需要显性地确认ACK。
当在一个接口上配置EIGRP协议时,其定期地以组播方式向外发送HELLO数据包。当直接相连的邻居路由器发现该HELLO数据包后,通过三次握手的双向通信,两者建立邻居关系。
当两台路由器的系数K(metric计算)以及自治系统号不匹配的时候,无法建立邻居关系。
Hello和Hold定时器
HELLO数据包的发送间隔取决于所连接的介质类型。默认情况下,在LAN、高速WAN(包括以太网、令牌环和FDDI,以及点对点的串行链路:PPP和HDLC,点对点的子接口:帧中继和ATM,带宽大于T1的多点线路:SMDS、帧中继、ATM以及ISDN PRI)上的间隔为5秒。而在带宽小于等于T1的多点线路上的时间间隔为60秒。
在EIGRP的邻居表中,也维护着一个hold time的项。默认情况下,hold time是hello time的3倍。
当hold time过期之后,路由器宣布该邻居的状态为不可用。该邻居路由器将从邻居表中被删除,同时所有相关的拓扑也将从拓扑表中被删除。
可以使用如下命令修改路由器的hello定时器:
Router(config-if)#ip hello-interval eigrp as-number seconds
可以使用如下命令修改路由器的hold定时器,其不随hello定时器的变化而自动调整:
Router(config-if)#ip hold-time eigrp as-number seconds
即使两台相邻路由器的hello和hold定时器不一致,也可以形成邻居关系。
EIGRP不使用接口的第二地址建立邻居关系,所有的路由器使用接口的主IP地址作为EIGRP数据包的源地址。
EIGRP的邻居表的结构
n 邻居地址:邻居的网络层地址
n 接口地址:连接该邻居路由器的本地接口
n 队列:队列中将被发送的数据包的数量。如果总是大于1,表示存在拥塞问题。
n 平滑环回时间SRTT (Smoothed round trip time):向邻居发送并接收返回的数据包的平均时间。用于判定传输超时(RTO)。
n RTO:传输超时
n Hold时间
可以使用如下命令查看EIGRP的邻居表:
Router#show ip eigrp neighbors
EIGRP数据包重新传输的原则:
快速传输协议RTP(Rapid Transport Protocol)为每个邻居维护着一个重新传输列表,该列表用来跟踪所有已被发送但未被确认的可靠数据包。
在某些情况下,在接收到ACK之前回发生传输超时,EIGRP重新传输可靠数据包的另一个拷贝,最多进行16次或者直到hold定时器超时。
EIGRP的传输机制
EIGRP的传输窗口大小为1。
在下一个数据包被发送之前,已发送的数据包必须被显性地确认。如果一个或多个邻居在发送ack时较慢,则所有其他的邻居都要受影响。为了解决这一问题,未被确认的多播数据包以单播的方式重新发送至较慢的邻居。
验证EIGRP的连接
可以使用debug eigrp packets和debug ip eigrp命令用来验证EIGRP的连接,其显示发送和接收到的EIGRP数据包。
也可以使用
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13654/showart_77375.html |
|