是否存在考虑链路容量和负载的路由协议?
为了说明这个问题,假设源主机 A 和目标主机 B 之间有多条路径。如果路径的开销相等,OSPF 将逐个流地进行负载均衡,但如果链路是非- 成本相等,OSPF 将只加载成本较低的链路。更重要的是,即使在等成本路径的情况下,OSPF 也不会考虑来自其他源-目标对的链路负载,因此仍可能会选择(严重)次优的路径分配流。我们看到 OSPF 不考虑链路容量和负载,而只考虑静态“成本”。
是否存在考虑链路容量和负载的路由协议?
为了说明这个问题,假设源主机 A 和目标主机 B 之间有多条路径。如果路径的开销相等,OSPF 将逐个流地进行负载均衡,但如果链路是非- 成本相等,OSPF 将只加载成本较低的链路。更重要的是,即使在等成本路径的情况下,OSPF 也不会考虑来自其他源-目标对的链路负载,因此仍可能会选择(严重)次优的路径分配流。我们看到 OSPF 不考虑链路容量和负载,而只考虑静态“成本”。
是否存在考虑链路容量和负载的路由协议?
有两种方法可以处理您描述的问题:
带 RSVP 的 MPLS TE:
MPLS 流量工程不完全是路由协议,但它增加了 OSPF 或 ISIS 的功能,可以使用特定于 MPLS-TE 的 IGP 扩展(OSPF 不透明 LSA或ISIS 子 TLV)根据提供的负载计算成本。
根据沿 MPLS TE 路径提供的负载,有两种正常的流量调整方式:
MPLS TE w/ RSVP沿整个路径保留带宽,然后每个 MPLS TE 路由器可以配置为定期宣布更新,甚至在每跳执行这些带宽限制;Pete Templin 的 NANOG 演示很好地概述了它是如何工作的。有人说思科并没有沿路径强制实施 MPLS TE 带宽限制;然而,这实际上只是故事的一部分。如果您使用Diffserv-aware TE (DS-TE),您可以对隧道实施带宽限制(取决于平台/IOS 支持)。
结束语:您的问题描述了链路加载问题,MPLS TE 当然可以处理;然而,MPLS TE 更像是一个路径管理框架。MPLS TE 旨在管理路由器之间的多条路径……每条路径都不止一条链路。
EIGRP :
当然,EIGRP 有能力根据提供的负载调整 IGP 成本;但是,此功能在 EIGRP 中默认禁用(有充分的理由)。启用它的命令是metric weights,它使用这个公式。该K2参数的缺省值为0; 当它不为零时,它将考虑 Cisco 的接口“负载平均”参数。
EIGRP Metric = 256*((K1*Bw) + (K2*Bw)/(256-Load) + (K3*Delay) + (K5/(Reliability + K4)))
然而,EIGRP不会仅仅因为负载间隔改变而发送更新,它只会在有另一个拓扑改变时发送更新。最终结果是,在拓扑发生变化之前,本地路由器将根据负载做出决策;但是,在 EIGRP 被迫发送更新之前,其他路由器不会知道这些决定。实际上,这个 EIGRP 负载平均功能可以解决一些点问题,但在我看来不如 MPLS TE 有用。
EIGRP 使用 IOS 指示的负载作为其计算的一部分。EIGRP 还可以在不等成本的路径上相对适当地进行负载平衡。