
funnysyc
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
💡 摘要 (Powered by OpenAI)
本节将主要介绍 BIRD 中的 MPLS 标签交换实现,包括 MPLS 的定义、转发原理、优势、路由选择流程、路由等网络基本概念。
多协议标签交换 (Multiprotocol Label Switching, MPLS) 是一种网络技术,工作在 IP 路由之下,但在链路层(如以太网)之上。它由 RFC 3031 描述。
在常规的 IP 转发中,每一跳独立地检查数据包的目的地址,并在路由表中选出匹配前缀最长的路由,然后据其处理数据包。总体上说,对于 IP 转发,边界路由器和内部路由器间没有差异。
在 MPLS 转发中,当数据包进入网络,它会被(基于目的地址,入站接口和其他因素)归类到某个 转发等价类 (Forwarding Equivalence Class, FEC) 中,然后标识这个 FEC 的 MPLS 标签会以包头的形式附加到数据包前,最后数据包被转发。
内部路由器只检查 MPLS 标签,并从 MPLS 路由表中选出匹配的 MPLS 路由,然后据其处理数据包。MPLS 标签的具体值只在本地有意义,并且可以在不同跳间改变(这就是为什么它叫做标签交换)。当数据包离开网络时,MPLS 标签会被移除。
MPLS 这种方式的优势是可以考虑除目的地址之外的因素,并且在整个网络中一致地使用这些因素。例如,多个重叠的专用地址段的 IP 流量可以混合在一起,可以为特定的流定义特定的路径。
另一个优势是内部路由的 MPLS 转发可以比 IP 转发简单得多,因为相较于 IP 的最长前缀匹配算法,MPLS 路由选择算法使用更简单的完全匹配。劣势是信令中的额外复杂性。更多细节见 RFC 3031。
在 BIRD 中,整个流程大体上这样工作:
在分配新的 MPLS 标签时,启用了 MPLS 的协议自动产生相应的 MPLS 路由。在特定的本地 MPLS 标签标记的所有路由都被撤回后,相应的 MPLS 路由也被撤回。
启用了 MPLS 的路由协议不仅分发 IP 路由信息,还分发标签。因此,它们产生带标签的路由——此类路由表示贯穿 MPLS 域的 标签交换路径 (Label Switched Path, LSP)。
带标签的路由像常规的(不带标签的)路由一样,有 IP 前缀和下一跳地址,但是它们还有本地 MPLS 标签(在路由属性 mpls_label 中)和出站 MPLS 标签(作为下一跳的一部分)。它们存储在常规的 IP 路由表中。
带标签的路由用于路由协议间路由信息的交换和进入 MPLS 域时 (IP -> MPLS) 的转发,但不直接用于 MPLS 转发。那一目的使用 MPLS 路由实现。它们是以本地 MPLS 标签为主键,存储于 MPLS 路由表中的路由。
BIRD 中有三个重要的 MPLS 概念:
MPLS 域表示一个独立的标签空间,所有启用了 MPLS 的协议都与某个 MPLS 域关联。它负责标签管理,和处理来自启用了 MPLS 的协议的标签分配请求。
MPLS 表就是 MPLS 路由的路由表。路由器通常有一个 MPLS 域和一个 MPLS 表,并通过 Kernel 协议将 MPLS 路由导出到内核 FIB。
MPLS 频道使协议启用 MPLS,它们负责追踪活动的 FEC(和对应的分配的标签),为带标签的路由选择 FEC / 本地标签,和维护带标签的路由与 MPLS 路由间的对应关系。
注意本地标签是分配给各个独立的启用了 MPLS 的协议的,因此不可能实现在不同协议间共享本地标签。
译者
校对
原文作者 <Ondrej Filip>
, <Martin Mares>
, <Maria Matejka>
, <Ondrej Zajicek>
原文链接: https://bird.network.cz/?get_doc&v=20&f=bird-2.html#ss2.5
原文标题: 2.5 MPLS
遵循协议: CC BY-NC-SA 4.0
译者: funnysyc
校对: hat
翻译时间: 2023-11-13
更新时间: 2024-09-16
本文链接: https://bird.xmsl.dev/docs/user-guide/2-5-mpls.html