MPLS LSR 是否需要第 3 层 IP 路由协议?

网络工程 路由 ipv4 第3层 聚光灯
2021-07-19 10:55:56

最近我一直在尝试了解 MPLS,它是我们正在做的项目的一部分。在我们的一次会议中,一位参与者提出了一个问题:

由于 LSR 在转发数据包时不检查 IP 路由表。如果我们确定每个数据包都通过 MPLS 而不是普通的 IP 网络,是否有必要在 LSR 上运行 IP 协议?

我一直试图得到这个问题的答案,但似乎找不到足够明确的答案。我能找到的最接近的就在这里。 MPLS 可以重新路由,但它可以路由吗?. 这个问题说 MPLS 需要第 3 层协议才能正常工作。

但是如果整个网络从端到端都是MPLS网络,IP协议还需要吗?我的猜测是它仍然是必要的,但我对 MPLS 的理解还不够清楚,所以我可以指出这种情况是行不通的。

2个回答

理论上,您可以在没有 IGP 的情况下运行 MPLS,但任何理智的网络管理员都不会。MPLS 标签可以通过以下方式分配:

LDP
RSVP-TE

通常,路由器运行 IGP 来填充路由信息库 (RIB)。这是控制平面,然后将路由安装到转发信息库 (FIB) 中。这是数据平面转发,取决于平台,线路卡上也可能有分布式转发,因此线路卡将具有本地数据库。

运行 LDP 时,基于 RIB 向相邻路由器发布标签。然后将标签存储在标签信息库 (LIB) 中。这是控制平面,相当于 RIB,但包含标签。LIB 是用于构建标签转发信息库 (LFIB) 的组件之一,LFIB 相当于 FIB。

运行 LDP,没有 IGP,标签不会被分配,因为 RIB 中没有路由。这可以通过输入静态路由来解决,但这显然不是一个可扩展的解决方案。

使用 RSVP-TE 时,标签不通过 RIB 分配。隧道是手动定义的,头端和尾端之间仍然需要连接,这通常通过 IGP 完成,但也可以通过静态路由完成。

在某些特殊情况下,RSVP-TE 不需要路由,因为邻居是静态定义的,例如在以下配置中:

interface FastEthernet1/0
ip address 20.0.23.2 255.255.255.0
mpls traffic-eng tunnels
mpls traffic-eng passive-interface nbr-te-id 3.3.3.3 nbr-if-addr 20.0.23.3

上面的例子来自没有 IGP 的 RSVP-TE

所以这种配置是可能的,但绝对不推荐。为了能够远程访问路由器进行管理,您需要运行 IGP,当然也可以通过静态路由解决。最后,它是关于可扩展性以及每个解决方案出错的可能性。

CovaraC:MPLS 是一种交换 (S) 协议,它不是 MPLR (R) 路由,它不知道 2 3 路由器中的子网,它只知道连接的接口。它也不知道哪条路径是 X 子网的最佳路径。MPLS 只是为任何到任何路由的传出数据包贴上标签,它并不关心这个数据包是否去最佳路由,路由协议将决定哪条路径是最好的。在路由协议(OSPF、EIGRP、ISIS 等)决定哪个接口和下一跳是最好的之后,MPLS 将为该下一跳插入一个标签。为什么 ?这样,一旦 mpls 知道所有标签和下一个希望,下一个路由器就不需要打开数据包并查看第 3 层 ip 的内部内容,这是 MPLS 的主要目的,减少 CPU 和内存使用。其次,当在第 3 层之前将标签插入低层时,您可以将任何信息和子网甚至 ipv6 放在第 3 层,具有 MPLS 的路由器不关心那里有什么。他们现在知道标签。