一、协议特性
1.使用hello保文建立并维护邻居关系 2.触发更新和部分更新 3.运行DUAL算法,快速收敛,且无环 4.支持路由聚合 5.支持路由引入 6.支持路由策略 7.支持不等价负载分担 8.适应较大范围网络
二、 EIGRP拓扑表
EIGRP将邻居通告的路径信息保存在拓扑表中,形成对全网的认知,并从中优选出最优路径。 EIGRP拓扑表中包含了如下信息:
-
目标网络地址。 -
FD(Feasible Distance,可行距离):本地路由器到达目的网络的最小开销。 -
CD(Computed Distance,计算距离):本地路由器通过每一个邻居路由器到达目的网络的开销。 -
邻居通告的路径信息:
- 邻居地址及所在接口。
- RD(Reported Distance,通告距离):邻居路由器通告的到达目的网络的开销。
-
路由状态:对于特定的目的网络,当至少有一个邻居提供的路径满足FC(Feasibility Condition,可行性后继条件),即邻居通告的RD值小于本地路由器计算的FD值,则该路由为Passive状态;否则,为Active状态。处于Passive状态的路由无需进行路由重计算,可以用于流量转发;处于Active状态的路由不能用于转发流量,需要和邻居交互,计算出开销值最小的无环路径,从而回到Passive状态。 -
FS(Feasible Successor,可行后继路由器):如果邻居路由器所通告的到达目的网络的RD值满足FC条件,那么这些邻居路由器就成为本地路由器到达该目的网络的可行后继路由器。通过可行后继路由器到目的网络的路径并不一定是最优的,但能保证无环。 -
Successor:后继路由器。如果本地路由器通过某个邻居路由器到达目的网络的开销值最小,则该邻居路由器就成为本地到达该目的网络的后继路由器。
三、报文格式
EIGRP使用RTP(Reliable Transport Protocol,可靠传输协议)管理报文的发送和接收,RTP协议包含可靠和不可靠两种传输方式: 可靠传输:本端有序地发送序列号不为零的报文,并要求对端对收到的每个报文进行确认,本端只有收到确认后才继续发送下一个报文;否则,重传未确认的报文。 不可靠传输:是指发送序列号为零的报文,无需确认。
EIGRP协议报文直接封装为IP报文,协议号为88。 EIGRP的协议报文包括如下几种: 1.Hello报文:用来发现和维持EIGRP邻居关系,以组播形式周期性进行发送,使用不可靠传输方式。 2.ACK报文:用于对可靠传输的报文进行确认,以单播形式进行发送,使用不可靠传输方式。 3.Query报文和Reply报文:Query报文用于向邻居查询是否存在到达目的网络的路径;Reply报文用于对Query报文进行应答。Query报文以组播形式进行发送,Reply报文以单播形式进行发送。这两种报文均使用可靠传输方式。 4.SIA-Query和SIA-Reply报文:SIA-Query报文用于向邻居确认指定路由是否仍处于收敛中;SIA-Reply报文用于对SIA-Query报文进行应答。这两种报文使用可靠传输方式,以单播形式发送。 5.Update报文:用于在EIGRP邻居之间交换路由信息。当两台路由器首次建立邻居关系时,路由器以单播方式发送包含本地所有路由信息的Update报文;之后,当路由发生变化时,路由器将以组播方式向所有的邻居路由器发送包含路由更新信息的Update报文。Update报文使用可靠传输方式。 6.Request报文:最初打算提供给路由服务器使用,目前并没有使用。
四、EIGRP运行机制
EIGRP的工作过程为: (1) 建立邻居关系:路由器启动EIGRP后,便会使用组播地址224.0.0.10向相邻的路由器发送Hello报文。EIGRP邻居路由器检查Hello报文中携带的AS号、系数K值是否与自己的一致。如果一致,则建立邻居关系。 (2) 发现网络拓扑,选择最短路径:邻居关系建立后,路由器通过Update报文将本地拓扑表中的路由发送给邻居,邻居将接收到的信息保存到自己的拓扑表中,并根据该信息计算出最优路由。 (3) 维护邻居关系:EIGRP通过周期性发送Hello报文,来维持邻居关系。 (4) 路由的更新和查询:当路由信息发生变化且当前使用的Successor失效时,如果拓扑表中存在FS,且通过FS到达目的网络的开销最小,则选择该FS所在的路径作为当前的流量转发路径,并通过Upadte报文将路由更新消息发送给邻居;如果拓扑表中不存在FS,或者存在FS但通过这些FS到达目的网络的开销不是最小,则路由器会向所有的邻居发送Query报文,寻找到达目的网络的路由。
五、EIGRP路由的计算过程
EIGRP通过DUAL算法进行路由计算,确保路由的收敛。当路由器感知到网络变化(例如直连链路的状态或开销变化、收到Update报文)时,针对某条受影响的路由,路由器会计算到达目的网络的开销,从中选出CD最小的路径,判断该路径是否满足FC条件:
- 如果满足FC条件,则发布该路由的邻居作为后继路由器,该路由的CD作为FD。如果更新后的FD与网络变化前的FD不同,则会向所有的邻居发送Update报文。
- 如果不满足FC条件,拓扑表中关于指定目的网络的路由进入Active状态,路由器会向所有邻居路由器发送Query报文,进行扩散更新计算,查找到达目的网络的路由。
当邻居路由器收到Query报文之后,将执行本地计算,按照如下规则进行处理:
- 如果被查询的路由处于Passive状态,那么接收路由器将检查这条路由所在的路径是否满足FC:如果满足FC,路由器会选择出最优的可行后继,并马上向查询者发送Reply报文;如果不满足FC,拓扑表中的路由会进入Active状态,并将查询搁置起来,向所有的邻居路由器发出Query报文,直到路由收敛,回到Passive状态,才会对搁置的查询进行应答,即向查询者发送Reply报文。
- 如果被查询的路由正处于Active状态,那么接收路由器将检查查询者是否为这条路由目前正在使用的后继路由器:若查询者不是后继路由器,那么立即向查询路由器发送Reply报文;若查询者是后继路由器,那么搁置查询,向其他路由器发送Query报文,待这条路由收敛,回到Passive状态时,再对查询者发送Reply报文。
路由器在发起查询后,在收到所有邻居路由器的Reply报文之前不会改变路由的后继路由器、FD及发送报文中通告给邻居路由器的开销。收到所有邻居的Reply报文后,EIGRP路由器重新检查FC条件,如果条件满足,那么路由收敛,回到Passive状态;否则,发起新的查询,重新开始扩散计算,直至路由收敛。
六、EIGRP SIA状态
通常情况下,当路由进入Active状态,向外发送Query报文后,能够在较短的时间内收到所有邻居发送的Reply报文,从而收敛并回到Passive状态。但是,在某些特殊的网络环境中,例如:在拥有很多低速带宽或质量较差的链路的大型网络中,路由器在收敛等待时间内没有收到Reply报文,导致路由长时间滞留在Active状态,无法收敛,这种情况称之为SIA(Stuck In Active,陷入失效状态)。 EIGRP使用收敛等待定时器及SIA报文来防止路由长时间处于Active状态。具体过程为: (1) 路由器向外发送Query报文后,会同步启动收敛等待定时器,等待邻居应答。 (2) 在二分之一收敛等待时间内还未收到应答,则向没有应答的邻居发送SIA-Query报文,如果邻居此时仍未完成路由收敛,则使用SIA-Reply报文进行应答。 (3) 路由器收到SIA-Reply报文之后,则认为该邻居仍然在进行扩散计算,因此重置收敛等待定时器,重复步骤2,继续等待应答。 (4) 当满足以下条件之一,路由器认为邻居失效,视作其应答了一个无穷大度量的消息,同时删除该邻居:
- 发出SIA-Query报文后,在收敛等待定时器超时前,未收到SIA-Reply报文。
- 发出3个SIA-Query报文后,仍然未收到Reply报文。
七、DUAL算法
eigrp运行DUAL算法,散播更新算法,他是一种D-V距离-矢量算法,它的基本思想是:要找一台路由器到目标网络的距离,那么把它到邻居的距离和邻居到目标网络的距离相加,得到经由某个邻居到目标网络的距离,然后对所有的邻居进行计算并从中取最小值,就得到了路由器到目标网络的最短距离。所有采用D-V算法的路由协议都必须考虑如何避免环路的生成。 就路由器A而言,对一个目标网络,“可靠后继”(Feasible Successor,简称FS)是指 这样的邻居路由器B:通过B到达目标网络有一条路经,并且B到目标网络的距离小于A到目标网络的距离。而“后继”指的是某条路由当前正在使用的下一跳。 如果B是A的可靠后继,那么我们可以确信:路由器A通过路由器B到达目标网络不会有环路。也就是说,可靠后继是没有环路的充分条件。 DUAL算法被称为一种散播算法,是因为它采用一种“分布的”、“扩散的”计算方式。具体说来,当一台路由器对某条路由找不到可靠后继,开始进行路由重算时,它会向所有的邻居路由器提出“查询”(Query),这时我们称这条路由进入了active状态;等到所有的邻居路由器都对查询做出“应答”(Reply)后,这台路由器才会根据这些应答计算出新的可靠后继和新的最佳路由,这时我们称这条路由回到了passive状态,这个过程称之为“收敛”。 当邻居路由器收到查询时,它也会检查自己的可靠后继条件:若条件满足,可靠后继存在,那么它将马上对查询做出应答;若条件不满足,找不到可靠后继,那么它只好先将查询搁置起来。然后它也会启动路由重算的过程,会向它所有的邻居发出查询,直到它的所有邻居应答后,它才会收敛并计算出新的可靠后继,这时它才会对先前搁置的查询做出应答。 伴随着DUAL计算,有许多报文在相邻路由器之间传送,这些报文携带者EIGRP的路由信息。EIGRP使用Raw IP在相邻路由器之间传送报文,因为Raw IP一种不可靠的传输,所以EIGRP必须建立自身的可靠传输体系。EIGRP使用的序号确认、超时重传等机制确保报文的可靠送达。
|