IP : 增强的内部网关路由选择协议 (EIGRP)

EIGRP 介绍

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

本文是Cisco系统设计、开发的内部网关路由协议(IGRP)套件的简要介绍。本文应当作提供技术简介的信息文件,不提供协议规格描述或产品说明。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

什么是 IGRP?

IGRP 用于 TCP/IP 和开放式系统互联 (OSI) 互联网。原始 IP 版本于 1986 年设计并成功部署。它被当作IGP但也被广泛地当作外部 网关 协议(EGP),用于领域间路由。IGRP 采用距离矢量路由技术。其概念便是每台路由器都不需要知道整个网络的所有路由器/链路的关系。每个路由器以相应的距离通告目标。每个收到信息的路由器会对距离进行调整,并将其传播至相邻路由器。

IGRP的距离信息表示为可用带宽、延迟、负载利用率和链路可靠性的组合。这样可以调整链路特性,以实现最佳路径。

什么是 EIGRP?

EIGRP 是 IGRP 的增强版本。在IGRP中发现的相同距离矢量技术也可用于EIGRP,并且基本的距离信息保持不变。此协议的收敛属性和运行效率有了显著改善。当保留在IGRP时的现有投资,这允许改进的体系结构。

收敛技术的基础是在 SRI International 进行的研究。Diffusing Update Algorithm (DUAL)是一种算法,用于获取路由计算过程中每一瞬间的自由回路。这使拓扑更改所涉及的所有路由器可以同时得到同步。未受拓扑更改影响的路由器不参与重新计算。在收敛时间这一方面,采用 DUAL 时可以与其他所有现有路由协议相匹敌。

EIGRP已经扩展为独立的网络层协议,因此允许DUAL支持其他协议组。

EIGRP 如何工作?

EIGRP 有四个基本组成部分:

  • 邻居发现/恢复

  • 可靠传输协议

  • DUAL 有限状态机

  • 协议相关模块

邻居发现/恢复程序是路由器动态获悉他们的直接连接网络上的其他路由器的程序。路由器还必须发现何时无法访问邻居或邻居无法正常操作。通过周期性发送小型 hello 数据包,能够以较低的开销完成此过程。只要收到hello信息包,路由器便能够确定邻居是否存活或运行。确定状态后,相邻路由器即可交换路由信息。

可靠的传输是为了确保可靠、有序地将EIGRP信息包交付到所有邻居那里。它支持混合传输组播或单播数据包。有些 EIGRP 数据包需要进行可靠的传输,有些则不需要。为提高效率,只在必要时提供可靠性。例如,在具有组播功能(如以太网)的多路访问网络中,无需向所有邻居单独发送可靠的问候(Hello)信息。所以EIGRP发送单个组播Hello,数据包有暗示通知接收方无需认证数据包。其他类型的信息包(例如更新)要求应答,并且显示在信息包里。有未确认的信息包待定时,可靠传输将迅速发送组播信息包。这有助于确保在存在不同速度的链路时仍能保持较短的收敛时间。

DUAL 有限状态机包含所有路由计算的决策过程。它会对所有邻居通告的全部路由都进行跟踪。DUAL 使用距离信息(称为度量)来选择高效的无环路路径。DUAL 根据可行后继路由器选择要插入路由表中的路由。后继是用于信息包转发的相邻路由器,它拥有通往目的地的成本最低的路径。该目的地不属于路由环路的一部分。没有可行后继者,但有邻居广播目的地时,必然会发生重新计算。这是确定新的后继路由器的过程。重新计算路由所花的时间会影响收敛时间。即使重计算不是密集型处理器,即使没有必要,避免重计算也有利。出现拓扑更改时,DUAL 将对可行后继路由器进行测试。如果有可行后继路由器,为了避免任何不必要的重复计算,它将使用它所找到的任何后继路由器。本文档稍后会更详细地定义可行后继路由器。

协议相关模块负责处理网络层特定于协议的要求。例如,IP-EIGRP模块负责发送和接收封装在IP中的EIGRP信息包。IP-EIGRP负责解析EIGRP信息包,并通知DUAL所收到的最新信息。IP-EIGRP请求DUAL提供IP路由表存储的路由决策和结果。IP-EIGRP 负责重新分配其他 IP 路由协议获知的路由。

EIGRP 概念

本部分介绍一些关于 Cisco EIGRP 实施的详细信息。数据结构和 DUAL 概念都会有所涉及。

邻居表

每个路由器都会保存关于邻接邻居的状态信息。获知最新发现的相邻时,将记录相邻的地址和接口。此信息存储于邻居数据结构中。邻居表会保存这些条目。每个协议相关模块都有一个邻居表。当邻居发送 hello 消息时,会通告 HoldTime。HoldTime 是指路由器将某个邻居视为可到达且可操作的时间长度。换句话说,如果在 HoldTime 时段内未收到 hello 数据包,则 HoldTime 结束。HoldTime 结束后,将向 DUAL 告知拓扑更改。

邻居表条目还包括可靠传输机制所需的信息。将会用到序列号,以使确认信息与数据包相匹配。从邻居接收到的最后序号被记录,因此无序信息包能够被发现。传输列表用于根据每个邻居的可能重发,排队信息包。往返时间计时器保存在邻居数据结构中,用于估测最佳重传间隔。

拓扑表

拓扑表由协议相关模块填充,并由 DUAL 有限状态机操作。它包含相邻路由器通告的所有目标。与每个条目相关的是目的地地址和通告目的地邻居列表。对于每个邻居,都会记录所通告的度量。这就是邻居存储在其路由表中的度量。如果邻居正在通告此目的地,则必须使用路由,转发信息包。这是距离矢量协议必须遵循的重要规则。

与目的地相关的还有路由器用于到达目的地的权值。这是来自所有邻居的最佳通告的度量标准和到最佳邻居标准的链路开销。这是路由器在路由表中使用并向其他路由器通告的权值。

可行后继

当有可行后继者时,目的地条目则从拓扑表转移到路由表。指向目标的所有最低成本路径共同形成一个集合。在这个集合中,通告度量标准低于当前路由表度量指标的邻居,视为可行后继路由器。

可行的后继被路由器看作目的地的下行邻居。这些邻居和关联度量存放在转发表中。

当邻居更改其通告的权值时,或者网络进行拓扑更改时,必须对可行后继路由器组进行重新评估。然而,这并非属于路由重新计算。

路由状态

目标拓扑表条目的状态共有两种。当路由器不执行路由重算时,路由视为被动状态。路由器正执行路由重新计算时,则处于活动状态。如果这里总能提供可行后继,路由必须进入激活状态,并避免路由器重计算。

没有可行后继者,路由处于活动状态时,就会发生路由重新计算。路由重新计算始于路由器向所有相邻发送查询信息包。如果它们有目的地的可行后继,相邻路由器可以进行回复或者可以随意回送问询,表明它们在执行路由重计算。处于活动状态时,路由器不能更改它正在使用的下一条邻居,来转发信息包。一旦某个已发送的问询的所有回复都接收完毕时,目的地可以转换成被动状态,并且可以选择新后继。

当通往相邻设备的唯一一条可行后继链路断开时,所有通过相邻设备的路由开始路由重计算,并进入活动状态。

数据包格式

EIGRP 使用五种类型的数据包:

  • Hello/Ack

  • 更新

  • 查询

  • 回复

  • 请求

如前所述,对于邻居发现/恢复,hello 数据包采取组播形式。这类数据包不需要确认。不含数据的 hello 数据包也用作“确认”(ack) 数据包。发送 Ack 数据包时始终采用单播地址,而且包含一个不为零的确认号。

“更新”数据包用于传达目标的可达性。发现新邻居时,将发送更新数据包,这样邻居便能够建立它的拓扑表。在这种情况下,“更新”数据包采用单播形式。其他情况下,例如链路成本更改,“更新”数据包采用组播形式。对于“更新”数据包的传输,始终采用可靠的机制。

目标进入活动状态时,将发送“查询”数据包和“应答”数据包。除非是为了响应接收到的“查询”数据包,否则“查询”数据包在多数情况下都采用组播形式来发送。在上述例外情况下,“查询”数据包将以单播形式发回到发起查询的后继路由器中。发送回复是为了响应问询请求,向创建人表明由于有可行的后继。它不需要进入活动状态。“应答”数据包以单播形式发至查询的发送方。“查询”数据包和“应答”数据包的传输均采用可靠的机制。

“请求”数据包用于从一个或多个邻居处获取特定信息。“请求”数据包用于路由服务器应用程序。这类数据包可以采用组播形式,也可以采用单播形式。“请求”数据包的传输并不采用可靠机制。

路由标记

EIGRP 拥有内部路由和外部路由这两个概念。内部路由是指在 EIGRP 自治系统 (AS) 内部发起的路由。所以,配置运行EIGRP的直连网络被当作内部路由,并且在EIGRP AS中还传播此信息。外部路由器已经由另一个路由协议获知,或者贮留在路由表中充当静态路由。这些路由单独标有各自的发送方标识。

外部路由标有以下信息:

  • 重新分配路由的 EIGRP 路由器所带有的路由器 ID。

  • 目标所在位置的 AS 编号。

  • 可配置的管理员标记。

  • 外部协议的协议 ID。

  • 来自外部协议的度量。

  • 用于默认路由的位标志。

例如,假设某个 AS 有三个边界路由器。其中一个边界路由器运行多个协议。AS 将 EIGRP 用作路由协议。假设二台边界路由器BR1和BR2,使用开放式最短路径优先(OSPF);其他边界路由器BR3,使用路由信息协议(RIP)。

其中一个OSPF边界路由器获知的路由BR1,可以有条件地重分布到EIGRP。这意味着BR1中运行的EIGRP在它自己的AS内部通告OSPF路由。当它这样操作时,它通告并标记它为OSPF已学习到的路由,它的度量等于OSPF路由的路由表度量。router-id 设置为 BR1。EIGRP 路由传播到其他边界路由器中。假设 BR3(RIP 边界路由器)通告的目标与 BR1 相同。因此,BR3 将 RIP 路由重新分配到 EIGRP AS 中。然后,BR2有足够的信息确定路由、已用原始路由协议和权值的AS进入点。而且再分布路由时,网络管理员可能将标记值分配到特定目的地。BR2可以使用任何此类信息,以使用路由或重新通告它回到OSPF。

采用 EIGRP 路由标记能够让网络管理员灵活地控制策略,并且有助于自定义路由。路由标记在传输ASes时特别有用,EIGRP通常在ASes时将与实施全局路策略的域间路由协议进行相互结合。这样就结合了扩展性极强的基于策略的路由。

兼容模式

通过 EIGRP 能够兼容 IGRP 路由器,并能与其进行无缝式互操作。这一点很重要,因为这样用户就能够同时发挥这两种协议的优势。兼容性功能不要求用户采用标志日来启用EIGRP。可以仔细地在具有战略意义的位置启用 EIGRP,同时还不必干扰 IGRP 的性能。

有一种自动重分配机制可供使用,如此一来,IGRP 路由可以导入到 EIGRP 中,反之亦然。因为两个协议的度量都是可以直接转换的,如果它们是源于自己AS的路由,则极易对比。此外,EIGRP的IGRP被当作外部路由处理。因此,标记功能可用于自定义调整。

默认情况下,IGRP 路由优先于 EIGRP 路由。这可以通过使用配置命令来更改,该命令不需要重启路由进程。

DUAL 示例

以下网络图展示了 DUAL 的收敛方式。示例仅着重于目标 N。每个节点均显示了其到达 N 的成本(以跳数计算)。箭头表示节点的后继路由器。例如,C 通过 A 到达 N,成本是 2。

/image/gif/paws/13669/1a.gif

如果A和B之间的链路发生故障,B则发送问询,通知邻居它已经丢失可行后继。D 收到“查询”数据包,并确定是否有其他任何可行后继路由器。否则必须开始路由计算,进入活动状态。但在这种情况下C是可行后继,因为其成本(2)低于到达目的地N的D的当前成本(3)。 D可以将C切换成它自己的后继。注意A和C没有参与,因为它们未受更改的影响。

现在,我们来看发生路由计算的情况。在这种情况下,我们假设 A 和 C 之间的链路发生故障。C.确定它是够丢失其后继路由器,以及是够具有其他可行后继路由器。D不被认为是一个可行的后继,因为它通告的度量标准(3)高于到达目的地N的C的当前成本(2)。 C必须进行目的地N的路由计算。C向唯一的邻居D发送问询信息。 由于D的后继没有进行更改,所以D会进行回复。D 不需要执行路由计算。C 收到“应答”数据包时,就了解了所有的邻居都已处理关于无法到达 N 的消息。此时,C 可以选择新的可行后继路由器 D 来到达目标位置 N,成本为 4。请注意,A 和 B 未受拓扑更改的影响,而 D 只需应答 C。

常见问题

配置 EIGRP 是否象配置 IGRP 一样容易?

是的,您可以按照 IGRP 的方式来配置 EIGRP。您要配置路由进程,以及应该通过哪些网络运行协议。可以使用现有的配置文件。

有象对 IGRP 那样的调试能力吗?

是,这里有同时向您通告协议正在进行什么操作的协议独立和协议从属调试命令。有一套 show 命令可用于显示邻居表状态、拓扑表状态和 EIGRP 流量统计信息。

IP-EIGRP 和 IP-IGRP 的功能相同吗?

EIGRP可以提供您在IGRP中使用的所有功能。值得注意的一项功能是多路由进程。您可以使用单个进程同时运行 IGRP 和 EIGRP,也可以使用多个进程同时运行这两种协议,甚至还可以使用一个进程运行 IGRP,而另一个进程运行 EIGRP。您可以进行混合搭配。这有助于随着需求的变化对路由进行自定义,以采用特定的协议。

EIGRP 使用多少带宽和处理器资源?

通过实施部分更新和增量更新,带宽利用率的问题得以解决。因此,只有当拓扑结构发生变化时,才会发送路由信息。关于处理器利用率,可行后继技术只需要路由器,可以极大降低AS总的处理器利用率。如要执行路由重计算,路由器会受到拓扑更改的影响。此外,只会对受影响的路由进行路由重新计算。只访问和使用这些特定的数据结构。这就显著缩短了在复杂数据结构中所花费的搜索时间。

IP-EIGRP 是否支持会聚和变长子网掩码?

是的,支持。IP-EIGRP 执行路由聚合的方式与 IGRP 相同。即,IP 网络的子网不会在另一个 IP 网络上通告。子网路由可汇总为单个网络编号聚合。另外,IP-EIGRP 允许在 IP 地址的所有比特边界提供聚合功能,并能对网络接口粒度进行配置。

EIGRP 是否支持区域?

不支持,单个 EIGRP 进程类似于链路状态协议的一个区域。然而运行程序时,信息可以被过滤并聚集在任何接口边界。如果你想要限制路由信息的传播,多个路由进程可以配置为分层结构。由于 DUAL 本身限制路由传播,多个路由进程通常用于定义组织的边界。


相关信息


Document ID: 13669