EIGRP 指标说明

网络工程 思科 路由 eigrp
2021-07-15 23:05:51

我希望了解 EIGRP 中指标的结构方式,这包括路由表和拓扑表。我敢肯定,我不是唯一一个觉得 EIGRP 的概念有点难以掌握的人。

我的小型网络已创建,并且我已在 EIGRP 相邻关系的两个连接上启用 AS 为 1。这是路由表和拓扑表的输出:

Router#sh ip ro ei
     192.168.1.0/30 is subnetted, 1 subnets
D    192.168.2.0/24 [90/30720] via 192.168.1.2, 00:09:13, FastEthernet0/0

我知道 90 是管理距离,但 30720 的度量似乎很高,通过快速以太网到只有一跳。例如,与 OSPF 相比,为什么它如此之高?我知道这可能是苹果和橙子是两个独立的路由协议的一个简单案例,但我很想知道这是如何计算的。

Router#sh ip ei top
IP-EIGRP Topology Table for AS 1/ID(192.168.1.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - Reply status

P 192.168.0.0/24, 1 successors, FD is 28160
         via Connected, FastEthernet0/1
P 192.168.1.0/30, 1 successors, FD is 28160
         via Connected, FastEthernet0/0
P 192.168.2.0/24, 1 successors, FD is 30720
         via 192.168.1.2 (30720/28160), FastEthernet0/0

从上面可以看出,计算结果是30720/28160。这个计算的第二部分似乎也是可行距离 28160,第一部分是路由表中的度量 30720。

有人可以向我解释这个计算的目的吗?这个数字会随着时间的推移而改变吗?或者这是现在一成不变?

提前致谢。

3个回答

EIGRP 指标公式

EIGRP 度量标准是整个路径累积延迟的测量值和整个路径上的最小带宽的组合。延迟值是根据该接口的速度分配给每个“跳跃”的值。

该指标可以包括考虑接口的负载和可靠性,但这通常被禁用。

这一切都由所谓的“K 值”控制,每个“k 值”控制天气,在 EIGRP 度量计算中考虑以下各项。

     K1 = Bandwidth  
     K2 = Load       
     K3 = Delay      
K4 & K5 = Reliability

默认情况下,K1 和 K3 值设置为 1,K2/K4/K5 值设置为 0。然后可以将这些值插入到完整的(相当复杂的)EIGRP 复合度量计算中:

256 * { K1*BW + [(K2*BW)/(256-load)] + (K3*delay) } * { K5/(reliability+K4) }

如果你用不同的间距重写它并添加漂亮的颜色并应用默认的 K 值,你可以看到它是如何简化为延迟和带宽的:

EIGRP 默认指标计算

这意味着简化的公式,只应用默认的 K 值最终是这样的:

**256 * (Bandwidth + Delay)**

带宽和延迟的值

带宽

带宽值基于整个路径上的最小带宽链接但是因为任何路由协议中的度量值都认为较低的值更好,所以必须使用一个公式将较高的带宽转换为较低的结果度量。该公式如下:

Bandwidth = 10^7 / BW in Kbps

因此,最小带宽为 100 Mbps 链路的路径相当于 100,000 Kbps,其计算如下:

Bandwidth value = 10,000,000 / 100,000 = 100 Delay

延迟

延迟应该是计算将比特传输到相邻邻居所需的时间。但实际上它只是一个基于接口带宽的常数值。但是,由于该因素是可加的,因此它本质上用作跳数。或者也许我们应该说智能跳数,因为它也会影响每个跳的带宽。

每个接口速度和延迟值的完整列表可以在这里找到:https :
//datatracker.ietf.org/doc/html/draft-savage-eigrp-00#section-5.5.1.2

请注意,此表以皮秒(万亿分之一秒)show interface为单位显示值,而延迟值以 usec 或微秒(百万分之一秒)显示。

公式中使用的延迟值是微秒值除以 10。例如,由两条链路组成的路径每条 100mbps 将等于 usec 中的总延迟为 200:

Delay Value = 200 / 10 = 20

最终计算

我们可以采用上面确定的带宽值 (100) 和上面确定的延迟值 (20) 并将它们代入简化公式,以获得最小路径带宽为 100mbps 的链路的最终 EIGRP 指标,以及谁的完整路径交叉两个 100mbps 链接:

EIGRP Metric = 256 * (Bandwidth + Delay)
EIGRP Metric = 256 * (100 + 20)
EIGRP Metric = 256 * 120
EIGRP Metric = 30720

有趣的是,这与您在问题中列出的值完全相同:

Router#sh ip ro ei
     192.168.1.0/30 is subnetted, 1 subnets
D    192.168.2.0/24 [90/30720] via 192.168.1.2, 00:09:13, FastEthernet0/0

可行距离与报告距离

这让我们回到了另一个您可能会感到困惑的概念。也就是说,它与此命令的输出有关:

Router#sh ip ei top
...
P 192.168.2.0/24, 1 successors, FD is 30720
         via 192.168.1.2 (30720/28160), FastEthernet0/0

192.168.2.0/24通过的路由提供了两个值192.168.1.23072028160理解这两个值需要理解EIGRP 用来描述成本的两个术语

第一个值是所谓的可行距离这是到达最终目的地的 EIGRP 总成本。我们上面计算的 30720 的值是到 192.168.2.0/24 网络的可行距离。

第二个值 (28160) 是所谓的报告距离(有时也称为广告距离)。该值表示我的邻居到达目标网络的总 EIGRP 成本这是邻居在向本地路由器通告路由时共享的值。

可以反向解构 28160 的报告距离(也称为邻居的成本)值。

我们知道 EIGRP 指标的值为 256 * (BW+Delay)。如果我们取 28160 并除以256,我们得到 110。这意味着 BW+Delay 等于 110。

我们也知道完整路径是两个 100mbps 的链接,所以很明显,到目标网络的邻居路径是一个 100mbps 的链接,或者总延迟值为 10。这意味着带宽值必须加起来为 100,我们知道它确实如此在分解 100mbps 链接时。

这证实了邻居是一个,距离目标网络 100mbps 跳——这意味着邻居通过 100mbps 链接直接连接到目标网络。


最后让我们谈谈您的具体问题。至少上面还没有回答的那些:

例如,与 OSPF 相比,为什么它如此之高?

Metric 值是一个 32 位的值,这意味着它可以是 0 到 42 亿之间的任何数字。只有当网络大小相同,并且路由是从相同的路由协议中获知时,才考虑 Metric。这意味着 EIGRP 视为度量的内容永远不会与 OSPF 视为网络的内容进行比较。

所以它们的相对差异是无关紧要的。因为如果从 OSPF 和 EIGRP 获知路由,则 EIGRP 路由将始终是首选,因为它的管理距离较低(90 对 110)。

我知道这可能是苹果和橙子是两个独立的路由协议的一个简单案例,但我很想知道这是如何计算的

正确,EIGRP 和 OSPF 指标计算是苹果和橘子——不可比较。EIGRP 计算在上面有详尽的描述,或者在本文中有更详细的描述

如果您想简化 OSPF 指标计算,我建议您提出一个新问题。

从上面可以看出,计算结果是30720/28160。这个计算的第二部分似乎也是可行距离 28160,第一部分是路由表中的度量 30720。

几乎。所述第一部分是可行距离(30720)。所述第二部分是报告距离(28160)。EIGRP 拓扑表将跟踪这两个值。并且路由表将只考虑可行距离

有人可以向我解释这个计算的目的吗?

跟踪可行距离以及报告的距离与 EIGRP 的环路预防机制(称为可行性条件)一起发挥作用如果多个 EIGRP 路由器共享有关同一网络的信息,则可以将每条传入路由的报告距离与路由器已知的最佳可行距离进行比较,以确定新获知的路径是否包含路由环路。

这个数字会随着时间的推移而改变吗?或者这是现在一成不变?

除非接口上升或下降、接口速度改变或跳数改变,否则度量不会改变。由于这些是计算中的内容,因此这些值将影响重新计算。在稳定的网络中,这些通常不会改变,因此数字通常不会改变。

例如,与 OSPF 相比,为什么它如此之高?

您根本无法比较不同路由协议之间的指标。这就是产生行政距离的原因。

有人可以向我解释这个计算的目的吗?

EIGRP 使用复杂的计算来提出其度量标准。它涉及到一条链路的带宽、时延、可靠性、负载和MTU,但默认情况下,它只使用带宽和时延。计算可以包括其他路由协议根本不包括的许多内容,因此您可以获得非常精细的度量标准,即最佳路径。

这个数字会随着时间的推移而改变吗?或者这是现在一成不变?

EIGRP 的度量标准自 IGRP 以来没有改变(它是 IGRP 值的 256 倍),因此它不太可能改变。

Cisco 在 EIGRP 上提供了许多文档。例如,增强型内部网关路由协议

EIGRP 指标

EIGRP 使用通往目标网络的路径上的最小带宽和总延迟来计算路由度量。虽然您可以配置其他指标,但我们不建议这样做,因为它可能会导致您的网络中出现路由循环。带宽和延迟度量由在到目标网络的路径中路由器接口上配置的值确定。

例如,在下面的图 2 中,路由器 1 正在计算到网络 A 的最佳路径。

在此处输入图片说明

它从这个网络的两个广告开始:一个通过路由器四,最小带宽为 56,总延迟为 2200;另一个通过路由器三,最小带宽为 128,延迟为 1200。路由器 1 选择度量值最低的路径。

让我们计算指标。EIGRP 通过缩放带宽和延迟度量来计算总度量。EIGRP 使用以下公式来扩展带宽:

  • bandwidth = (10000000/bandwidth(i)) * 256

    其中,bandwidth(i) 是通往目标网络的路由上所有传出接口的最小带宽,以千比特表示。

EIGRP 使用以下公式来缩放延迟:

  • delay = delay(i) * 256

    其中 delay(i) 是在接口上配置的延迟总和,在到目标网络的路由上,以几十微秒为单位。show ip eigrp topologyshow interface命令中显示的延迟以微秒为单位,因此在此公式中使用它之前必须除以 10。在本文中,我们使用延迟,因为它在界面上配置和显示。

EIGRP 使用这些缩放值来确定网络的总指标:

  • metric = ([K1 * bandwidth + (K2 * bandwidth) / (256 - load) + K3 * delay] * [K5 / (reliability + K4)]) * 256

注意:这些K值应在仔细规划后使用。不匹配的K值会阻止建立邻居关系,这会导致您的网络无法收敛。

注意:如果K5 = 0,则公式简化为Metric = ([k1 * bandwidth + (k2 * bandwidth)/(256 - load) + k3 * delay]) * 256

K 的默认值是:

  • K1 = 1
  • K2 = 0
  • K3 = 1
  • K4 = 0
  • K5 = 0

对于默认行为,您可以将公式简化如下:

metric = bandwidth + delay

Cisco 路由器不执行浮点数学运算,因此在计算的每个阶段,您都需要向下舍入到最接近的整数以正确计算指标。在本例中,通过路由器四的总成本为:

在本例中,通过路由器四的总成本为:

minimum bandwidth = 56k 

total delay = 100 + 100 + 2000 = 2200 

[(10000000/56) + 2200] x 256 = (178571 + 2200) x 256 = 180771 x 256 = 46277376  

通过路由器三的总成本为:

minimum bandwidth = 128k 

total delay = 100 + 100 + 1000 = 1200 

[(10000000/128) + 1200] x 256 = (78125 + 1200) x 256 = 79325 x 256 = 20307200  

所以为了到达网络 A,路由器 1 选择通过路由器 3 的路由。

请注意,我们使用的带宽和延迟值是在路由器到达其下一跳到达目标网络的接口上配置的值。例如,路由器 2 通告网络 A,并在其以太网接口上配置延迟;路由器 4 添加了在其以太网上配置的延迟,路由器 1 添加了在其串行上配置的延迟。

您的带宽是100000K因此计算使用的带宽是10000000 / 100000 = 100延迟是200微秒,因此计算使用的延迟是20这将我们带到120 * 256 = 30720,这就是您报告的价值。

将您的数字插入 Cisco 上面给出的示例中:

[(10000000/100000) + 20] x 256 = (100 + 20) x 256 = 120 x 256 = 30720

我知道 90 是管理距离,但 30720 的度量似乎很高,通过快速以太网到只有一跳。例如,与 OSPF 相比,为什么它如此之高?我知道这可能是苹果和橙子是两个独立的路由协议的一个简单案例,但我很想知道这是如何计算的。

你是对的 - 这就像比较苹果和橙子 :) 例如,RIP 的最大指标是 15,但与 30720 的 EIGRP 指标相比没有任何意义。

关于 EIGRP 指标如此之高 - 部分原因是因为 EIGRP 将其指标乘以 256,以便向后兼容 IGRP(EIGRP 的前身)。根据此维基百科条目:

IGRP 使用相同的基本公式来计算整体度量,唯一的区别是在 IGRP 中,该公式不包含缩放因子 256。实际上,引入这个缩放因子是为了方便 EIGRP 和IGRP:在 IGRP 中,整体度量是一个 24 位值,而 EIGRP 使用 32 位值来表示此度量。通过将 24 位值乘以因子 256(有效地将其向左移动 8 位),该值被扩展为 32 位,反之亦然。这样,在 EIGRP 和 IGRP 之间重新分配信息涉及简单地将度量值除以或乘以 256 的因子,这是自动完成的

关于如何计算指标,我不久前写了一篇关于它的详细博客文章简而言之,该指标是使用以下公式计算的:

256*[(10000000/)+(/10)]

当我们通过此公式运行您提供的数字(向量度量:最小带宽为 100000 Kbit 总延迟为 200 微秒)时,我们得到正确的度量:

10000000 / 100000 = 100

200 / 10 = 20

100 + 20 = 120

256 * 120 = 30720