思科eigrp技术总结

来源:本站原创 网络技术详解 超过1,578 views围观 1条评论

Operation of EIGRP

EIGRP 是一个距离向量路由协议,但是它还具有链路状态路由协议的一些特征。距离向量的路由协议一般都是基于Bellman-Ford(或 Ford-Fulkerson)算法的。这样的算法容易引起路由循环(loop)和计数无穷大(counting to infinity),所以就必须采取些减少和避免上述问题的措施比如水平分割、holddown timer、毒性反转等。

在距离向量路由协议环境里,由于路由器在给别的邻居(neighbor)传输它所接收到的路由之前,先要进行路由的计算,所以在大型网络里,收敛会比较慢,并且一旦链路变化,又会引起大量的路由被宣告和距离向量路由协议相比,链路状态路由协议受上述问题的影响就小的多。

1.链路状态包(Link-State Packet,LSP)的转发是不依靠路由计算的,所以大型网络可以较为快速的进行收敛.

2.它只宣告链路和链路状态,而不宣告路由,所以即使链路发生了变化,不会引起该链路的路由被宣告。但是链路状态路由协议使用的是Dijkstra算法,该算法比较复杂,并且较占CPU和内存资源。和其他路由协议单独计算路由相比,链路状态路由协议采用种扩散计算(diffusing computations ),通过多个路由器并行的记性路由计算,这样就可以在无环路产生的情况下快速的收敛

EIGRP 的路由 update(更新)的发送周期的不固定的,它只在网络链路发生变化以后才被发送,并且更新中可以只包含发生变化了的路由条目,而且只发给受到影响的路由器.这样就对链路带宽进行了节约。在WAN低速链路上,EIGRP可能会占用大量带宽,默认只占用链路带宽50%,使用命令ip bandwidth-percent eigrp 来修改这一默认值。

EIGRP是一种基于无类的路由协议, EIGRP packet只能用MD5加密的方式进行验证

EIGRP支持IP,IPX和AppleTalk

EIGRP使用和IGRP相同的公式来计算metric,然而,这个metric要在IGRP算出来的metric 之上乘以1个256

clip_image002

EIGRP的4个组件如上图:

1. Protocol-Dependent Module (PDM)

2.可靠传输协议(Reliable Transport Protocol,RTP)

3.邻居的发现/恢复

4.扩散更新算法(Diffusing Update Algorithm, DUAL)

Reliable Transport Protocol

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

EIGRP使用多种类型的packet,这些packet通过IP包头信息里的协议号 88 来标识:

1. Hello packet:用来发现和恢复邻居,通过组播的方式发送,使用不可靠的发送

2. ACK(acknowledgement) packet:不包含数据的Hello包,使用unicast的方式,不可靠的发送

3. Update packet:传播路由更新信息,不定期的通过可靠的方式发送(比如网络链路发生变化)。当只有一台路由器需要路由更新时,update通过unicast的方式发送;当有多个路由器需要路由更新的时候,通过组播的方式发送

4. Query(查询) & Reply(应答) packet:是 DUAL finite state machine 用来管理扩散计算用的,查询包可以是组播或unicast;应答包是通过unicast的方式发送,并且方式都是可靠的

5. Request(请求) packet:最初是打算提供给路由服务器(server)使用的,但是从来没实现过

如果packet通过可靠的组播方式发送出去,并且没有收到邻居反馈的ACK包,那么这个 packet会再次以unicast的方式发送给那个未响应的邻居,如果经过16次的重传unicast,仍然没有收到ACK包的话,那么这个邻居就宣告为无效。

在从组播切换到 unicast 之前,等待ACK包的时间可以由multicast flow timer(MFT)指定,后续的重新传unicast的发送间隔可以由 RTO(retransmission timeout)指定。每个邻居的 MFT 和 RTO 都可以通过 SRTT(smooth round-trip time)来计算,SRTT的单位是(毫秒)ms,用来衡量路由器从发送EIGRP packet到某个邻居并接收到这个邻居的ACK包所花费的平均时间。

Neighbor Discovery/Recovery

在这里,邻居是指网络中直连的通告EIGRP的路由器。EIGRP的Hello包在一般的网络中(比如点到点,point-to-point)是每5秒组播1次(要随机减去 1 个很小的时间防止同步);在多点(multipoint)X.25,帧中继(Frame Relay,FR)和 ATM 接口(比如 ATM SVC)和ISDN PRI接口上,Hello包的发送间隔是60秒。在所有的情况中,Hello包是不需要确认的。可以在接口配置模式下修改该接口的Hello包默认的发送间隔,命令为ip hello-interval eigrp

当一个路由器收到从邻居发来的Hello包的时候,这个Hello包包含了一个hold time,这个hold time告诉这个路由器等待后续 Hello 包的最大时间。如果在超出这个 hold time 之前没有收到后续 Hello 包,那么这个邻居就会被宣告为不可达,并通知DUAL这个邻居已丢失。默认hold time是3倍于Hello包发送间隔的, 可以在接口配置模式下修改这个默认的hold time,命令为ip hold-time eigrp

EIGRP邻居信息都记录在邻居表(neighbor table)中,使用show ip eigrp neighbors命令查看IP EIGRP的邻居

The Diffusing Update Algorithm

DUAL: Preliminary Concepts(预备概念)

为了能够让DUAL正确的操作,低层协议必须满足以下几个条件:

1.一个节点要在有限的时间里检测到新邻居的存在或和一个邻居的连接的丢失

2.在链路上传输的所有信息必须在有限的时间里按正确的顺序收到

3.所有的消息,包括链路cost的更改、链路故障和新邻居的发现,都应该是在有限时间里,一个一个的依次处理

Cisco的EIGRP 使用邻居的发现/恢复和RTP 来确保上述前提条件

adjacency(邻接):

在刚启动的时候,路由器使用 Hello 包来发现邻居并标识自己用于邻居的识别。当邻居被发现以后,EIGRP 会在它们之间形成一种邻接关系。邻接是指在这 2 个邻居之间形成一条交换路由信息的虚链路(virtual link)。当邻接关系形成以后,它们之间就可以相互发送路由update,这些update包括路由器它所知道的所有的路由及其metric。对于每个路由,路由器都会基于它邻居宣告的距离(distance)和到达那个邻居的链路的cost来计算出一个距离

Feasible Distance(FD,可行距离):

到达每个目标网络的最小的 metric 将作为那个目标网络的 FD。比如,路由器可能有 3 条到达网络 172.16.5.0 的路由,metric分别为380672,12381440和660868,那么380672 就成了FD

Feasible Condition(FC,可行条件):

邻居宣告到达目标网络的的距离小于本地路由器到达目标网络的FD

Feasible Successor(FS,可行后继路由器):

如果一个邻居宣告到达目标网络的距离满足FC,那么这个邻居就成为FS。比如,路由器到达目标网络172.16.5.0的FD为 380672,而他邻居所宣告到达目标网络的距离为 355072,这个邻居路由器满足 FC,它就成为 FS;如果邻居路由器宣告到达目标网络的距离为380928,即不满足FC,那么这个邻居路由器就不能成为FS

注意:FSFC是避免环路的核心技术,FS也是downstream router(下游路由器),因为从FS到达目标网络的距离比本地路由器到达目标网络的FD要小

Successor(后继路由器):

对于列举在拓扑表里的每个目标网络,将选取 metric 最小的的路由放置在路由表里,宣告这条路由的邻居就成为Successor,或者是下一跳路由器

命令show ip eigrp topology 可查看每个目标网络及相应的FD、FS和Successor

如果FS宣告的路由的metric比当前Successor的metric小的话,那么这个FS就将成为新的Successor,如下几种情况可能会引起这个现象的发生:

1.发现一条新的路由

2.现有Successor的metric增加,超过了FS的metric,或现有FS的metric减小到小于现有Successor的metric

FS减少了扩散计算的次数,提高了网络性能,同时也降低了收敛的次数.如果到达Successor的链路出故障,或者链路的 cost 增加,并超过了 FD,那么路由器会先在它的拓扑表中查找 FS,如果有 FS 的话,这个FS将成为新的Successor;如果找不到可用的FS,它才重新进行扩散计算

The DUAL Finite Machine

当 EIGRP 路由器不进行扩散计算的时候,所有的路由都处于被动(passive)状态。当发生输入事件(input event)的时候,路由器会对路由的FS列表进行重新评估,输入事件的源:

1.直连链路的cost发生变化

2.直连链路状态的变化(比如up或down)

3.收到更新包

4.收到查询包

5.收到应答包

路由器重新评估的第一步是在本地路由器上执行本地计算(local computation),可能的结果如下:

1.如果FS的metric最小,并且和现有Successor不同的话,那这个FS就成为新的Successor

2.如果新的距离(distance)小于FD,FD将被更新

3.如果新的距离和已经存在的距离不同,将向所有邻居发送更新包

当路由器执行本地计算的时候,路由仍然处于被动状态,如果本地路由器在它的拓扑表里发现可用的 FS,更新包将发送给它所有的邻居,但是路由状态不会改变;如果没有发现可用的 FS,路由器将进行扩散计算并且路由会进入活跃(active)状态。

在路由器扩散计算完成和路由状态返回为被动状态之前,路由器:

1.不能更改路由的Successor

2.不能更改正在宣告的路由的距离

3.不能更改路由的FD

4.不能开始进行路由的另一个扩散计算

路由器是通过向它所有邻居发送一个查询来开始一个扩散计算的。查询包包含了本地路由器计算出来的到达目标地址的新的距离,当每个邻居收到这个查询包的时候,就开始进行自己的本地计算:

1. 如果邻居有到达目标地址的一个或多个 FS,它就反馈应答包给产生这个查询包的路由器。这个应答包包含了这个邻居所计算出的它到达目标地址的最小的距离

2. 如果邻居没有FS,它就把路由更改为活跃状态并进行扩散计算

扩散计算在查询的时候,范围是扩大,在应答的时候,范围是缩小

对于每一台接收查询的邻居路由器,本地路由器会设置一个答复状态标记(reply status flag,r)来不断地跟踪这些所有未处理的查询包。当本地路由器接收到所有发出去的查询包的应答的时候,扩散计算就完成了

在扩散计算的开始,active timer 设置为3分钟(早期 IOS版本设置为 1分钟),如果在这个 active timer 超时之前仍然没有收到发出去的查询包的所反馈的所有的应答包的时候,那么这些没有收到应答包的路由就被标记为stuck-in-active(SIA),这些没有反馈应答的邻居将从邻居表中被删除,而且扩散计算会认为是这个邻居反馈了一个为无穷大的metric。active timer的修改命令为timers active-time

在扩散计算完成后,最初发送查询包的路由器会把FD设置为无穷大,这样确保了任何反馈应答包的路由器都满足FC并且能够成为 FS。对于这些应答包,metric 的计算是基于应答包中宣告的距离加上到达这个反馈应答包的邻居路由器的链路cost。metric 最小的成为Successor,并且FD就设置为这个最低的 metric。任何不满足 FC的 FS 将从拓扑表中被删除。注意在收到所有的应答之前是不会选择Successor的

扩散计算的核心思想如下:

1.任何时间发生了IE的话,将执行本地计算

2.如果在拓扑表里发现了多个FS,metric 最低的作为新的Successor

3.如果没有找到可用的FS,路由进入活跃状态,并向邻居发出查询包,寻找新的FS

4.当所有发出去的查询包都被应答包响应,或者在active timer超出之前,路由会一直处于活跃状态

5.如果扩散计算结果没有找到新的可用FS 的话,那么将宣告目标不可达

EIGRP packet 的活动可以通过命令 debug eigrp packets 来跟踪,默认情况下会显示所有的 EIGRP packet,由于 Hello 包和 ACK 包的数量可能过大导致不便于跟踪,所以可以使用关键字来指定跟踪的 EIGRP packet 类型:debug eigrp packet query reply update

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=3040转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
下篇文章: