思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍如何使用称为“增强型内部网关路由协议 (EIGRP)”的内部网关协议。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
EIGRP的一些优势包括:
EIGRP是一种增强的距离矢量协议,它依靠扩散更新算法(DUAL)来计算到达网络中目的地的最短路径。
EIGRP有两个主要版本:版本0和版本1。早于10.3(11)、11.0(8)和11.1(3)的Cisco IOS®版本运行EIGRP的早期版本;此信息中有些不适用于早期版本。建议使用EIGRP中的更高版本,因为它包含许多性能和稳定性增强功能。
典型的距离矢量协议在计算到达目的地的最佳路径时保存此信息:距离(总度量或距离,如跳数)和矢量(下一跳)。例如,图1中网络中的所有路由器都运行路由信息协议(RIP)。路由器2通过检查每条可用路径的跳数来选择到达网络A的路径。
图 1
由于通过路由器3的路径是三跳,通过路由器1的路径是两跳,路由器2选择通过路由器1的路径,同时丢弃从路由器3获得的信息。如果路由器1和网络A之间的路径断开,路由器2丢失所有与目的地的连接,直至路由表的路由结束为止(3次更新时间,或90秒),并且路由器3重新通告路由(RIP中每30秒发生一次)。如果不包括任何抑制时间,路由器2需要花费90到120秒将路径从路由器1切换到路由器3。
EIGRP并不依靠完全的定期更新来重新收敛,而是使用其每个邻居通告构建拓扑表(数据不会被丢弃),并通过在拓扑表中搜索可能存在的无环路由进行收敛,或者,如果它没有找到其他路由,则会查询其邻居。路由器 Two 保存它从路由器 One 和 Three 收到的信息。它把通过路由器1的路径选为最佳路径(后继路由),把通过路由器3的路径选为无环回路径(可行后继路由)。当通过路由器1的路径不可用时,路由器2检查其拓扑表,当发现可行后继路由时,立即开始使用通过路由器3的路径。
从此简要说明中,显而易见 EIGRP 必须提供以下内容:
一种确定路由器获知哪些路径是无环路径的方法
一个从网络上所有路由器的拓扑表中清除不良路由的进程
搜索邻居以查找通往已丢失目标的路径的过程
依次涵盖上述每项要求。
为了在整个网络中分配路由信息,EIGRP 使用非周期性的增量路由更新。也就是说,EIGRP 只在这些路径更改时发送有关已更改路径的路由更新。
如果仅发送路由更新,则无法发现通过相邻路由器的路径何时不再可用。您不能使路由超时并期望从邻居接收新的路由表。EIGRP依靠邻居关系在整个网络中传播路由表更改;当两台路由器在公用网络上看到hello数据包时,它们就会成为邻居。
EIGRP 在高带宽链路上每隔 5 秒发送一次 hello 数据包;而在低带宽多点链路上则每隔 60 秒发送一次。
5 秒 hello:
广播介质,如以太网、令牌环和 FDDI
点对点串行链路,例如PPP或HDLC租用电路、帧中继点对点子接口和ATM点对点子接口
高带宽(大于 T1)多点电路,如 ISDN PRI 和帧中继
60 秒 hello:
T1 带宽或更慢的多点电路,如帧中继多点接口、ATM 多点接口、ATM 交换虚拟电路和 ISDN BRI
EIGRP 发送 hello 数据包的速率称为 hello 间隔,您可以使用 ip hello-interval eigrp 命令,根据每个接口对它进行调整。保持时间是路由器在未收到hello数据包时认为邻居处于活动状态的时间量。保持时间通常是hello间隔的三倍,默认情况下为15秒和180秒。您可以使用 ip hold-time eigrp 命令调整保持时间。
即使 hello 和保持计时器不匹配,两个路由器也可能成为 EIGRP 邻居。保持时间包含在hello数据包中,因此即使hello间隔和保持计时器不匹配,每个邻居也能保持活动状态。 尽管没有直接的方法可以确定路由器上的hello间隔时间,但您可以从邻接路由器上的show ip eigrp neighbors命令的输出中推断出该间隔。
命令输出的Hold列中的值决不能超过保持时间,并且决不能小于保持时间减去hello间隔(当然,除非丢失hello数据包)。如果Hold列的范围通常介于10和15秒之间,则hello间隔为5秒,保持时间为15秒。如果Hold列的范围通常更宽(介于120和180秒之间),则hello间隔为60秒,保持时间为180秒。如果数字似乎不适合某个默认计时器设置,请检查相邻路由器上的相关接口。Hello计时器和保持计时器可能是手动配置的。
对于 EIGRP 可以支持的邻居数量,没有任何限制。支持的邻居的实际数量取决于设备功能,例如:
内存容量
处理能力
交换信息的量,如发送的路由数
拓扑复杂性
网络稳定性
现在这些路由器彼此通信,它们又在谈论什么?当然是它们的拓扑表!EIGRP 不同于 RIP 和 IGRP,它不依靠路由器中的路由(或转发)表来保留其运行所需的所有信息。但是,它会建立第二个表(拓扑表),并从该表将路由安装在路由表中。
要查看运行EIGRP的路由器上拓扑表的基本格式,请发出show ip eigrp topology命令。拓扑表包含构建到达每个可到达网络的一组距离和矢量所需的信息,以及:
上游邻居报告的到此目标的路径上的最低带宽
总延迟
路径可靠性
路径负载
最短路径最大传输单元 (MTU)
可行距离
报告距离
路由源(外部路由将被标记)
EIGRP 使用到目标网络的路径上的最低带宽和总延迟计算路由度量。建议不要配置其他度量,因为这样会导致网络中出现路由环路。带宽和延迟度量是根据到目标网络的路径中的路由器接口上所配置的值决定的。
例如,在图2中,路由器One计算到达网络A的路径。
图 2
它从两个到此网络的通告开始:一个通过路由器Four,最小带宽为56,总延迟为2200;另一个通过路由器Three,最小带宽为128,延迟为1200。路由器 One 选择度量最小的路径。
计算指标。EIGRP在扩展带宽和延迟度量时计算总度量。EIGRP使用以下公式扩展带宽:
带宽 = (10000000/bandwidth(i)) * 256
其中,bandwidth(i) 是到目标网络的路由上所有传出接口的最低带宽(以千位为单位表示)。
EIGRP使用以下公式来扩展延迟:
延迟 = delay(i) * 256
其中,delay(i) 是在到目标网络的路由上的接口上配置的延迟的总和,单位为十微秒。show ip eigrp topology 或 show interface 命令中显示的延迟以微秒为单位,因此在此公式中使用该值前必须将其除以 10。使用延迟是因为它显示在接口上。
EIGRP使用这些标度值,来确定到网络的总度量值:
度量= ([K1 *带宽+ (K2 *带宽) / (256 -负载) + K3 *延迟] * [K5 / (可靠性+ K4)]) * 256
K 的默认值如下:
K1 = 1
K2 = 0
K3 = 1
K4 = 0
K5 = 0
对于默认行为,您可以简化公式,如下所示:
Cisco 路由器不执行浮点运算,因此在每个计算阶段,都需要四舍五入到最接近的整数才能正确计算度量。
在本示例中,通过路由器 Four 的总成本为:
通过路由器 Three 的总成本为:
要到达网络A,路由器One选择通过路由器Three的路由。
可行距离是通往目的网络的路径的最佳度量,其中包括通往通告该路径的邻居的度量。报告距离是沿到目标网络的路径的总度量,由上游邻居通告。可行后继路由是报告距离小于可行距离(当前最佳路径)的路径。图 3 说明了此过程:
图 3
路由器One看到它有两条通往网络A的路由:一条通过路由器Three,另一条通过路由器Four。
通过路由器 Four 的路由成本为 46277376,报告距离为 307200。
通过路由器 Three 的路由成本为 20307200,报告距离为 307200。
当路由器 1和 3之间的链路断开时,路由器1 会对它所知道的通往网络 A 的每条路径进行检查,并发现它有一个通过路由器 4 的可行后继路由。路由器1使用此路由,它使用通过路由器4的度量作为新的可行距离。网络立即收敛,并且对下游邻居的更新将是路由协议中的唯一流量。
图4所示场景更为复杂。
图 4
从路由器One到网络A有两个路由:一个通过路由器Two,度量为46789376,另一个通过路由器Three,度量为20307200。路由器One选择这两个度量中最小的作为通往网络A的路由,此度量成为可行距离。查看通过路由器Two的路径,看看它是否符合成为可行后继路由器的条件。路由器 2 的报告距离为 46277376,该距离大于可行距离,因此该路径不是可行后继路由。如果您此时在路由器1的拓扑表中查看(使用show ip eigrp topology),您只会看到一个有关网络A的条目-通过路由器3。(实际上,路由器One的拓扑表中有两个条目,但只有一个是可行后继,因此另一个条目不会显示在show ip eigrp topology中;使用show ip eigrp topology all-links可以显示不是可行后继路由的路由)。
假设路由器1和路由器3之间的链路断开。路由器 One 看到它丢失了到网络 A 的唯一路由,并查询它的每个邻居(在本例中,只有路由器 Two)以查看它们是否具有到网络 A 的路由。由于路由器 Two 确实具有一个到网络 A 的路由,因此它会对查询做出响应。由于路由器One不再具有通过路由器Three的更好路由,因此它接受通过路由器Two到网络A的路由。
EIGRP 如何使用可行距离、报告距离和可行后继路由的概念来确定路径是否有效且不是环路?在图 4a 中,路由器 Three 检查到网络 A 的路由。由于水平分割已禁用(例如,如果这些是多点帧中继接口),因此路由器3显示通向网络A的三个路由:通过路由器4、通过路由器2(路径为2、1、3、4)和通过路由器1(路径为1、2、3、4)。
图4a
如果路由器 Three 接受所有这些路由,将导致路由环路。路由器 Three 认为它能通过路由器 Two 到达网络 A,但是通过路由器 Two 的路径经过路由器 Three 才能到达网络 A。如果路由器4和路由器3之间的连接断开,路由器3认为它可以通过其他路径之一到达网络A,但由于确定可行后继路由的规则,它绝不会使用这些路径作为备用路径。查看指标以了解原因:
通过路由器4到达网络A的总度量:20281600
通过路由器2到达网络A的总度量:47019776
通过路由器One到达网络A的总度量:47019776
由于通过路由器4的路径具有最佳度量,因此路由器3将此路由安装在转发表中,并使用20281600作为其到达网络A的可行距离。路由器3然后计算通过路由器2和1到达网络A的报告距离:通过路由器2的路径为47019776,通过路由器1的路径为47019776。由于这两个度量都大于可行距离,因此路由器 Three 不会将其中任何一个路由作为网络 A 的可行后继路由进行安装。
假设路由器 Three 和 Four 之间的链路断开。路由器 3向它的每个邻居查询通向网络 A 的替代路由。路由器 2 收到查询,由于该查询来自其后继路由,因此它会在其拓扑表中搜索其他每个条目以查看是否存在可行后继路由。拓扑表中唯一的其他条目来自路由器 1,其报告距离等于最后获知的通过路由器 3 的最佳度量。由于通过路由器1的报告距离不小于最后获知的可行距离,因此路由器2将此路由标记为不可达,并向它的每个邻居(在本例中,只有路由器1)查询通向网络 A 的路径。
路由器 Three 也向路由器 One 发送针对网络 A 的查询。路由器 1检查其拓扑表,并发现到网络 A 的唯一其他路径是通过路由器 2的路径,其报告距离等于最后获知的通过路由器3的可行距离。再一次,由于通过路由器 2 的报告距离不小于最后获知的可行距离,因此此路由不是可行后继路由。路由器 1将此路由标记为不可达,并向其唯一的其他邻居(路由器2)查询通向网络 A 的路径。
这是第一个级别的查询。路由器Three已查询其每个邻居,以尝试找到通向网络A的路由。反过来,路由器One和路由器Two将路由标记为不可达,并查询各自的其它邻居,尝试找到通向网络A的路径。当路由器 Two 收到路由器 One 的查询时,它会检查其拓扑表,并注意到该目标已被标记为不可达。路由器 Two 向路由器 One 回复网络 A 不可达。当路由器 One 收到路由器 Two 的查询时,它也发送回网络 A 不可达的回复。路由器 One 和 Two 都已得出网络 A 不可达的结论,然后它们回复原始路由器 Three 的查询。网络已收敛,所有路由都返回被动状态。
在上一个示例中,水平分割没有显示EIGRP如何使用可行距离和报告距离来确定路由是否可能是环路。但是,在某些情况下,EIGRP 也使用水平分割来防止路由环路。在检查EIGRP如何使用水平分割的详细内容之前,请先检查水平分割的定义及其工作方式。水平分割规则规定:
永远不从通过其获知路由的接口通告该路由。
例如,在图4a中,如果路由器1通过单个多点接口(例如帧中继)连接到路由器2和路由器3,并且路由器1从路由器2获知网络A,则它不会将到网络A的路由从同一接口通告回路由器3。路由器 One 假设路由器 Three 将直接从路由器 Two 获知网络 A。
图4a
毒性反转是避免路由环路的另一种方法。其规则规定:
一旦通过某个接口获知路由,便通过该同一接口将其通告回为不可达路由。
例如,图4a中的路由器启用了毒性反转。当路由器 1 从路由器 2 获知网络 A 时,它会通过其到路由器 2 和 3 的链路通告网络 A 为不可达网络。如果路由器3显示通过路由器1到网络 A 的任何路径,它将由于不可达通告删除该路径。EIGRP 结合这两个规则来帮助防止路由环路。
在下列情况下,EIGRP 使用水平分割或将路由通告为不可达路由:
两台路由器处于启动模式(它们第一次交换拓扑表)
通告拓扑表更改
查询已发送
查看每个案例。
当两个路由器首次成为邻居时,它们在启动模式期间交换拓扑表。对于路由器在启动模式期间收到的每个表条目,它都将以最大度量(毒化路由)向其新邻居通告回同一条目。
在图5中,路由器1使用变量在两个串行链路之间平衡发往网络A的流量;即路由器2和路由器4之间的56k链路和路由器3和路由器4之间的128k链路。
图 5
路由器 Two 将通过路由器 Three 的路径视为可行后继路由。如果路由器2和4之间的链路断开,路由器2只需在通过路由器3的路径重新融合即可。由于水平分割规则规定切勿从获知路由的接口向外通告路由,因此路由器Two通常不会发送更新。但是,这为路由器 One 留下了一个无效的拓扑表条目。
当路由器更改其拓扑表时,如果路由器到达网络所经过的接口发生更改,它会关闭水平分割,毒药会使旧路由从所有接口转发出去。在本例中,路由器2 将关闭此路由的水平分割,并将网络 A 通告为不可达网络。路由器 One 听到此通告,并将其通过路由器 Two 到网络 A 的路由从其路由表中清除。
只有当路由器收到来自用于查询中目标的后继路由的查询或更新时,查询才会导致水平分割。请看图6中的网络。
图 6
路由器3收到来自路由器4的有关10.1.2.0/24的查询(它通过路由器1到达该查询)。如果由于链路抖动或其他临时网络情况导致Three没有该目标的后继路由器,则会向它的每个邻居发送查询;在本例中是路由器One、路由器Two和路由器Four。但是,如果路由器Three收到来自路由器One的针对目标10.1.2.0/24的查询或更新(如度量更改),它不会将查询发送回路由器One,因为路由器One是该网络的后继路由器。它只向路由器 Two 和 Four 发送查询。
回答查询可能需要较长时间。如果是,发出查询的路由器将放弃并清除与未应答的路由器的连接,这样将重新启动邻居会话。这被称为停滞在活动状态 (SIA) 的路由。如果只是查询到达网络另一端的时间和回复返回的时间过长,将发生最基本的 SIA 路由。例如,在图7中,路由器1记录来自路由器2的大量SIA路由。
图 7
在经过一些调查后,问题范围缩小到路由器2和3之间的卫星链路上的延迟。对于此类问题,有两种可行的解决方案。第一种是增加路由器在声明路由SIA之前发送查询后等待的时间。可使用timers active-time命令更改此设置。
但是,更好的解决方案是重新设计网络,以减小查询的范围(以便只有极少的查询通过卫星链路)。查询范围将在本文的查询范围部分介绍。但是,查询范围本身不是报告的 SIA 路由的常见原因。更常见的是,网络中的某些路由器由于以下原因之一无法回答查询:
路由器太忙,无法回答查询(通常是因为高CPU使用率)。
路由器存在内存问题,无法分配内存来处理查询或生成应答数据包。
两台路由器之间的电路状况不佳;没有足够的数据包能够保持邻居关系正常运转,但路由器之间会丢失一些查询或应答。
单向链路(由于故障,数据包只能向一个方向流动的链路)
当您排除SIA路由故障时,请使用以下三步过程:
查找始终报告为SIA的路由。
查找始终无法回答这些路由查询的路由器。
查找路由器不接收或应答查询的原因。
第一步很简单。如果您记录控制台消息,快速浏览日志将显示通常标记为SIA的路由。第二步稍微困难。用于收集此信息的命令是 show ip eigrp topology active:
显示 R 的所有邻居尚未回复(活动计时器显示路由已处于活动状态的时间长度)。这些邻居不会显示在Remaining replies部分中;它们会出现在其他RDB中。请特别注意那些具有未处理回复且已处于活动状态一段时间(通常为两到三分钟)的路由。多次运行此命令,您会开始看到哪些邻居未响应查询(或者哪些接口似乎有许多未响应的查询)。检查此邻居,查看它是否始终等待任何邻居的回复。重复此过程,直至找到始终不回答查询的路由器。您可以查找有关到此邻居的链路、内存或 CPU 使用率的问题,或此邻居的其他问题。
如果问题出在查询范围,请勿增加SIA计时器;相反,应减小查询范围。
本节探讨涉及重分发的不同方案。所列示例显示了配置重分发所需的最低要求。重分配可能会潜在地导致问题,如不理想的路由、路由环路或缓慢的收敛。要避免这些问题,请参阅“避免由于重分发引起的问题”部分。
图8显示路由器配置为:
图 8
路由器 One
路由器 Two
路由器 Three
路由器Three通过自治系统1000将网络10.1.2.0/24通告给路由器Two;路由器Two将此路由重分布到自治系统2000并将其通告给路由器One。
对于路由器One:
请注意,虽然路由器1和2之间的链路带宽为 1.544 Mb,但是该拓扑表条目中显示的最低带宽为 56k。这意味着EIGRP会在两个EIGRP自治系统之间重分配时保留所有度量。
EIGRP和其他协议(例如RIP和OSPF)之间的重分发与所有重分发的工作方式相同。在协议之间进行重分发时,请使用默认度量。在EIGRP和其他协议之间进行重分发时,您需要了解以下两个问题:
重分配到EIGRP中的路由并不总会被汇总,有关说明,请参阅“汇总”部分。
外部 EIGRP 路由的管理距离为 170。
当您在某个接口上安装静态路由,并使用router eigrp配置包括该静态路由的network语句时。EIGRP重分布此路由,就好像它是直连接口一样。
图 9
在图9中,路由器One通过接口Serial 0配置了到网络172.16.1.0/24的静态路由:
并且路由器 One 还有一条针对此静态路由目标的 network 语句:
路由器One重分布此路由,即使它不重分布静态路由,因为EIGRP认为此网络是直连网络。在Router Two上,如下所示:
通向172.16.1.0/24的路由在路由器2上显示为内部EIGRP路由。
EIGRP中有两种汇总形式:自动汇总和手动汇总。
EIGRP 每次穿过两个不同的主要网络之间的边界时会执行自动汇总。例如,在图10中,路由器2仅向路由器1通告10.0.0.0/8网络,因为路由器2用于到达路由器1的接口位于不同的主要网络中。
图 10
在路由器One上,它如下所示:
此路由未以任何方式标记为汇总路由;它看起来像一个内部路由。度量是汇总路由中的最佳度量。尽管10.0.0.0网络中有些链路的带宽为56k,但此路由的最低带宽为256k。
在带有汇总的路由器上,将汇总地址建立到null0的路由:
到 10.0.0.0/8 的路由被标记为通过 Null0 的汇总。该总结路由的拓扑表条目如下所示:
要让路由器 Two 通告 10.0.0.0 网络的组件,而不是汇总,请在路由器 Two 上的 EIGRP 进程中配置 no auto-summary:
在路由器 Two 上:
关闭自动汇总后,路由器1现在可以看到 10.0.0.0 网络的所有组件:
有关外部路由汇总的一些警告,将在后面的“外部路由的自动汇总”一节中介绍。
EIGRP允许您使用手动总结来总结几乎任何位边界上的内部路由和外部路由。例如,在图11中,路由器Two将192.168.1.0/24、192.168.2.0/24和192.168.3.0/24总结为CIDR块192.168.0.0/22。
图 11
路由器Two上的配置如下所示:
请观察接口Serial0下的ip summary-address eigrp命令和通过Null0的汇总路由。在Router One上,这被视为内部路由:
EIGRP不会自动汇总外部路由,除非同一个主网的某个组件是内部路由。图12说明了以下内容:
图 12
路由器3使用redistribute connected命令将到192.168.2.0/26和192.168.2.64/26的外部路由注入EIGRP,如列出配置所示。
路由器 Three
对应于路由器 Three 上的此配置,路由器 One 上的路由表显示:
虽然自动汇总一般会导致路由器 Three 将 192.168.2.0/26 和 192.168.2.64/26 路由汇总到一个主要网络目标 (192.168.2.0/24),但它不会执行该操作,因为两个路由都是外部路由。但是,如果将路由器2和路由器3之间的链路重新配置为192.168.2.128/26,并在路由器2和路由器3上为此网络添加network语句,则在路由器2上生成192.168.2.0/24 auto-summary。
路由器 Three
现在路由器 Two 生成 192.168.2.0/24 的汇总:
并且路由器 One 仅显示汇总路由:
当路由器处理来自邻居的查询时,这些规则将如表中所示适用。
邻居(非当前后继路由)
被动
回复当前后继路由信息.
后继路由器
被动
尝试查找新的后继路由器;如果成功,则回复新信息;如果不成功,则标记目标不可达并查询除上一个后继路由器外的所有邻居。
任何邻居
查询前没有通过此邻居的路径
回复当前已知的最佳路径.
任何邻居
查询前不知道
回复目标不可达.
邻居(非当前后继路由)
主用
如果没有到达这些目标的当前后继路由器(通常情况下为真),则以无法到达的目标进行回复。
如果有好的后继路由,则回复当前路径信息.
后继路由器
主用
尝试查找新的后继路由器;如果成功,则回复新信息;如果不成功,则标记目标不可达并查询除上一个后继路由器外的所有邻居。
当上表中的操作发现网络在新拓扑上收敛之前接收和回复查询的路由器数量时,它会影响网络中的查询范围。要查看这些规则如何影响查询的管理方式,请观察图13中的网络,该网络在正常条件下运行。
图 13
对于网络192.168.3.0/24(最右侧),这是预期结果:
路由器 One 有两条到 192.168.3.0/24 的路径:
通过路由器 Two,距离为 46533485,报告距离为 20307200
通过路由器 Three,距离为 20563200,报告距离为 20307200
路由器1选择通过路由器 3的路径,并将通过路由器2 的路径保留为可行后继路由
路由器 Two 和 Three 显示一条通过路由器 Four 到 192.168.3.0/24 的路径
假设 192.168.3.0/24 发生故障。此网络上预期的活动是图13a到图13h说明了此过程。
路由器 Five 将 192.168.3.0/24 标记为不可达,并查询路由器 Four:
图13a
当路由器4收到来自其后继路由器的查询时,它会尝试找出通向此网络的新可行后继路由器。它找不到匹配项,因此将192.168.3.0/24标记为不可达,并查询路由器2和3:
图13b
路由器2和路由器3会看到它们丢失了通往192.168.3.0/24的唯一可行路由,并将其标记为不可达;它们都会向路由器1发送查询:
图13c
假设路由器One首先收到来自路由器Three的查询,并将路由标记为不可达。然后,路由器 One 收到来自路由器 Two 的查询。虽然有另一种可能,但最终结果都是一样的。
图13d
路由器One以不可达信息回复这两个查询;路由器One现在对于192.168.3.0/24处于被动状态:
图13e
路由器2和3回复来自路由器4的查询;路由器2和3现在对192.168.3.0/24处于被动状态:
图13f
当路由器5收到来自路由器4的应答时,它会将网络192.168.3.0/24从其路由表中删除;此时路由器5对网络192.168.3.0/24处于被动状态。路由器5将更新发送回路由器4,以便从其他路由器的拓扑和路由表中删除该路由。
图13g
虽然可以有其他查询路径或订单需要处理,但是当该链路断开时,网络中的所有路由器都会处理对网络192.168.3.0/24的查询。某些路由器可以处理多个查询(本示例中为Router One)。实际上,如果查询以不同的顺序到达路由器,则某些路由器会处理三四个查询。这是 EIGRP 网络中无限查询的很好示例。
查看同一网络中通往10.1.1.0/24的路径:
路由器2有10.1.1.0/24网络的拓扑表条目,通过路由器1的成本为46251885。
路由器3有10.1.1.0/24网络的拓扑表条目,通过路由器1的成本为20281600。
路由器4通过路由器3拥有适用于10.0.0.0/8网络的拓扑表条目(因为路由器2和路由器3自动汇总到主网络边界),度量为20307200(通过路由器2的报告距离高于通过路由器3的总度量,因此通过路由器2的路径不是可行后继路由)。
图 14
如果 10.1.1.0/24 断开,路由器1会将其标记为不可达,然后向它的每个邻居(路由器 2 和3)查询通向该网络的新路径:
图14a
路由器Two收到来自路由器One的查询时,将该路由标记为不可达(因为该查询来自其后继路由器),然后查询路由器Four和Three:
图14b
路由器3在收到来自路由器1的查询时,会将目标标记为不可达,并查询路由器2和4:
图14c
路由器4在接收到路由器2和3的查询时,会回复说10.1.1.0/24不可达(路由器4不知道该子网,因为它只拥有10.0.0.0/8路由):
图14d
路由器 Two 和 Three 相互回复 10.1.1.0/24 不可达:
图14e
由于路由器2和 3现在没有未处理的查询,因此它们都向路由器1回复 10.1.1.0/24 不可达:
图14f
在本例中,查询由路由器Two和Three上的自动总结限定。路由器5不参与查询过程,也不参与网络的重新收敛。查询还可能受到手动汇总、自治系统边界和分配列表的限制。
如果路由器在两个EIGRP自治系统之间重分布路由,它将在进程的正常规则内回复查询,并向另一个自治系统发起新的查询。例如,如果到与路由器3连接的网络的链路断开,路由器 3会将路由标记为不可达,并向路由器 2查询新的路径:
图15a
路由器 2回复此网络不可达,并且在自治系统 200 中向路由器1发送查询。一旦路由器3收到其原始查询的回复,它将从其表中删除该路由。路由器 Three 现在对于此网络处于被动状态:
图15b
路由器 One 回复路由器 Two,路由进入被动状态:
图15c
当原始查询未在整个网络中传播时(受到自治系统边界的限制),原始查询将以新查询的形式渗进第二个自治系统。这可以防止网络中陷入活动(SIA)问题,因为它限制了查询在被应答之前必须通过的路由器的数量。但是,它并不能解决每个必须处理查询的路由器的整体问题。此方法会使问题更严重并阻止自动汇总本来要汇总的路由(除非主网络中有一个外部组件,否则不会汇总外部路由)。
EIGRP 中的分配列表不会阻塞查询的传播,而是将所有查询回复都标记为不可达。以图16为例。
图 16
在图16中:
路由器3有一个在其串行接口上应用的分配列表,只允许该路由器通告网络 B。
路由器 One 和 Two 不知道网络 A 通过路由器 Three 可达(路由器 Three 不用作路由器 One 和 Two 之间的中转点)。
路由器3使用路由器1作为通向网络A的首选路径,而不使用路由器2作为可行后继路由器。
当路由器1丢失了与网络 A 的连接时,它会将该路由标记为不可达,并向路由器 3发送查询。由于其串行端口上的分配列表,路由器 Three 不会通告到网络 A 的路径。
图16a
路由器 Three 将此路由标记为不可达,然后查询路由器 Two:
图16b
路由器 Two 检查其拓扑表并发现它有一个到网络 A 的有效连接。查询未受路由器Three中的分发列表的影响:
图16c
路由器Two回复网络A可访问;路由器Three现在拥有有效路由:
图16d
路由器3对路由器1的查询进行回复,但分配表会让路由器3发送网络A不可达的回复,即使路由器3具有到达网络A的有效路由:
图16e
有些路由协议在收敛时(根据网络的变化)会占用低带宽链路上的所有可用带宽。EIGRP可避免这种拥塞,并管理数据包在网络上传输的速度,因此它仅使用部分可用带宽。EIGRP的默认配置是使用可用带宽的50%,但此值可通过以下命令进行更改:
ip bandwidth-percent eigrp 2
(8 * 100 * 以字节为单位的数据包大小) / (以 kbps 为单位的带宽 * 带宽百分比)
例如,如果 EIGRP 在 56k 带宽的串行接口上对数据包排队,并且数据包大小为 512 字节,则 EIGRP 将等待:
(8 * 100 * 512 字节) / (56000 比特/秒 * 50% 带宽) (8 *100 * 512) / (56000 * 50) 409600 / 2800000 0.1463 秒
这样,在EIGRP发送数据包之前,至少512字节的数据包(或数据包组)就可以通过该链路传输。定步计时器确定发送数据包的时间,以毫秒为单位。上一个示例中数据包的步调时间为0.1463秒。show ip eigrp interface的输出中有一个显示步调计时器的字段:
显示的时间是最大传输单元 (MTU)(可在接口上发送的最大数据包)的步调间隔。
有两种方法可将默认路由加入EIGRP:重分发静态路由或汇总到0.0.0.0/0。如果您希望将流向未知目标的所有流量引向网络核心处的默认路由,请使用第一种方法。此方法通告与Internet的连接。例如:
重新分配到EIGRP的静态路由不必一定是网络0.0.0.0。如果使用另一个网络,则必须使用 ip default-network 命令将该网络标记为默认网络。
如果汇总,则默认路由仅在您想要为远程站点提供默认路由时有效。由于摘要是按接口配置的,因此您可以使用分发列表或其他机制来防止默认路由扩散到网络的核心。请注意,到 0.0.0.0/0 的汇总会覆盖从任何其他路由协议获知的默认路由。使用此方法在路由器上配置默认路由的唯一方法是配置指向0.0.0.0/0的静态路由。(以Cisco IOS软件12.0(4)T开头,而且您也可以在ip summary-address eigrp命令末尾配置管理距离,以便本地汇总不会覆盖0.0.0.0/0路由)。
EIGRP在路由表中最多放置四个等价路由,然后路由器对其执行负载均衡。负载均衡的类型(每个数据包或每个目标)取决于路由器中完成的交换类型。但是,EIGRP也可以通过不等价链路实现负载均衡。
如果有四条路径指向给定目标,并且这些路径的度量为:
路径1:1100
路径2:1100
路径3:2000
路径4:4000
路由器如何在这些路径之间分配流量?它用通过每条路径的度量来除最大度量,四舍五入到最接近的整数,然后使用此数字作为流量份数。
对于本示例,流量份数如下:
对于路径1和2:4000/1100 = 3
对于路径3:4000/2000 = 2
对于路径4:4000/4000 = 1
路由器在路径 1 上发送前三个数据包,在路径 2 上发送接下来的三个数据包,在路径 3 上发送再接下来的两个数据包,然后在路径 4 上发送下一个数据包。当路由器通过路径1发送接下来的三个数据包并继续此模式时,路由器将重新启动。
最初配置EIGRP时,如果您尝试影响EIGRP度量,请记住以下两条基本规则:
带宽必须始终设置为接口的实际带宽;多点串行链路和其他不匹配的介质速度情况是此规则的例外情况。
延迟必须始终用于影响EIGRP路由决策。
由于 EIGRP 使用接口带宽确定发送数据包的速率,因此正确设置这些值非常重要。如果有必要影响 EIGRP 选择的路径,则始终使用延迟来实现此目的。
带宽越低,带宽对总度量影响越大;带宽越高,延迟对总度量影响越大。
外部管理标记可以中断EIGRP和其他协议之间的路由环路重分布。如果在路由重分配到EIGRP时对其进行标记,则可以阻止从EIGRP重分配到外部协议。不能修改从外部路由获知的默认网关的管理距离,因为在 EIGRP 中,管理距离的修改只适用于内部路由。为了提高度量,请使用带有前缀列表的路由映射;请勿更改管理距离。接下来是配置这些标记的基本示例,但本示例不显示用于中断重分布循环的整个配置。
图 17
路由器Three将连接的路由重分布到EIGRP中,它显示:
路由器Two将路由从EIGRP重分发到RIP,它显示:
请注意172.19.1.0/24上的标记1。
路由器One收到路由器2重分发的RIP路由,它显示:
请注意,172.19.1.0/24已不存在。
此命令用于显示有关EIGRP命名配置和EIGRP自治系统(AS)配置的信息。此命令的输出显示了相邻EIGRP路由器之间交换的信息。表格后面是每个输出字段的说明。
show ip eigrp traffic
Hello sent/received显示发送和接收的hello数据包(发送-1927/接收- 1930)数。
Updates sent/received显示发送和接收的更新数据包数(sent-20/received-39)。
Queries sent/received表示发送和接收的查询数据包数(sent-10/received-18)。
Replies sent/received显示发送和接收的应答数据包数(sent-18/received-16)。
Acks sent/received表示发送和接收的确认数据包数(sent-66/received-41)。
SIA查询发送/接收表示发送和接收的活动查询数据包中卡住的数量(sent-0/received-0)。
SIA-Replies sent/received显示在发送和接收的活动应答数据包中卡住的数量(sent-0/received-0)。
Hello Process ID是Hello进程标识符(270)。
Socket Queue显示IP to EIGRP Hello Process套接字队列计数器(current-0/max-2000/highest-1/drops-0)。
Input Queue显示到EIGRP PDM套接字队列计数器的EIGRP Hello进程(current-0/max-2000/highest-1/drops-0)。
此命令只显示可行后继路由。要显示拓扑表中的所有条目,请使用 show ip eigrp topology all-links 命令。表3+后面是每个输出字段的说明
show ip eigrp topology
配置说明
A 表示活动。这也可以显示P,表示被动。
10.2.4.0/24 是目标或掩码。
0 successors显示可用于此目标的后继路由器(或路径)的数量;如果后继路由器被大写,则表明路由正在转换。
FD is 512640000 显示可行距离,这是到达此目标的最佳度量或当路由进入活动状态时已知的最佳度量。
tag is 0x0可以通过set tag和match tag命令,使用路由映射来设置和/或过滤。
Q 表示查询挂起。此字段也可以是:U,表示更新挂起;或R,表示回复挂起。
1 replies 显示未处理的回复数。
查询源:本地源显示此路由发起查询。该字段也可以是多源地址,这意味着多个邻居已发送有关此目的地的查询,但后继路由器没有发送;或者后继路由器,意味着后继路由器已发送此查询。
via 10.1.2.2显示此路由是从IP地址为10.1.2.2的邻居获知的。此字段也可以是:Connected(已连接),如果网络直接连接到此路由器;Redistributed(已重分配),如果此路由在此路由器上重分配到EIGRP;或Summary(汇总),如果此路由在此路由器上生成汇总路由。
(Infinity/Infinity)显示到达通过第一个字段相邻设备的路径度量和通过第二字段相邻设备的报告距离。
r显示已查询此邻居,并等待回复。
Q是此路由的发送标记,表示存在挂起的查询。此字段也可以是U,表示更新挂起;或R,表示回复挂起。
Serial1 是通过其可到达此邻居的接口。
Via 10.1.1.2显示查询邻居并希望收到回复。
r显示此邻居被查询有关路由的信息,但尚未收到回复。
Serial0 是通过其可到达此邻居的接口。
通过10.1.2.2 (512640000/128256),Serial1显示已使用此路由(表示当存在多条等价路由时,下一条路径/目的地采用哪条路径)。
此命令显示拓扑表中针对此目标的所有条目,而不只是显示可行后继路由。表格后面是每个输出字段的说明。
show ip eigrp topology network
2后继路由器表示有两个到此网络的可行路径。
Routing Descriptor Blocks每个条目描述一条到网络的路径。
10.1.1.2 (Ethernet1)流到网络和接口(下一跳通过该接口到达)的下一跳。
from 10.1.2.2 是此路径信息的源。
Send flag is:
0x1:此路由器收到了对此网络的查询,需要发送单播应答。
0x2:此路由处于活动状态,必须发送组播查询。
0x3:此路由已更改,必须发送组播更新。
Composite metric is (307200/281600) 显示到网络的总计算成本。括号中的第一个数字是通过该路径到达网络的总开销,以及到下一跳的开销。括号中的第二个数字是报告距离,或者换句话说,是下一跳路由器使用的成本。
Route is Internal 表示此路由在此 EIGRP 自治系统 (AS) 内发起。如果路由被重分配到此 EIGRP AS 中,此字段将指示该路由是外部路由。
向量权值显示EIGRP用于计算网络成本的个别权值。EIGRP不在整个网络中传播总开销信息;传播矢量度量,每台路由器分别计算开销和报告距离。
Minimum bandwidth is 10000 Kbit 显示到此网络的路径上的最低带宽。
Total delay is 2000 microseconds 显示到此网络的路径上的延迟总和。
Minimum MTU is 1500 此字段不在度量计算中使用。
跳数为2,这不在度量计算中使用,但确实可以限制 EIGRP AS 的最大大小。默认情况下,EIGRP接受的最大跳数为100,不过通过度量最大跳数可以将最大值配置为220。
如果路由是外部路由,则包含此信息。表格后面是每个输出字段的说明。
外部路由
始发路由器显示,这台路由器将该路由注入到EIGRP AS。
External AS 显示此路由来自的自治系统(如果有一个)。
External Protocol 显示此路由来自的协议(如果有一个)。
external metric 显示外部协议中的内部度量。
Administrator Tag可以通过set tag和match tag命令,使用路由映射来设置和/或过滤。
输出格式与 show ip eigrp topology 一样,但它还显示拓扑表的某个部分。
输出格式与 show ip eigrp topology 一样,但它还显示拓扑表中的所有链路,而不仅是可行后继路由。