计算机网络技术和服务/MPLS
多协议标签交换 (MPLS) 是新宽带 (IP) 公共网络的使能技术。它可以被认为是控制不同子协议的协议架构(或一套协议)。
MPLS 在通常被认为位于传统定义的第 2 层(数据链路层)和第 3 层(网络层)之间的层上运行。
IP 协议是为研究目的而开发的,并没有设计成一种服务。它是一种所谓的“尽力而为协议”,这意味着没有明确的目的在于提供保证可靠的服务(速度、延迟…)。
当 IP 开始成为一种商业产品时,国际电信联盟 (ITU) 开始开发协议(如 ATM、帧中继等),针对服务可靠性和稳定性,认为它们将渗透到计算机电信领域。然而,最终用户一直使用 IP,因此,如今服务提供商必须处理大量协议才能将 IP 传输给最终用户:这种“大洋葱”由于高维护成本、设备和软件开发成本,为了保证互操作性,对服务提供商来说毫无意义。
思科系统是第一个在其路由器中实现标签交换的供应商,然后 IETF 采用了该协议,并将其命名为 MPLS。
MPLS 结合了无连接协议的最佳特性和面向连接协议的最佳特性,代表了“大洋葱”问题的解决方案,原因有两个
- MPLS 为基于 IP 的网络提供了更高的服务可靠性和更单一的统一控制平面,该平面与数据平面隔离
- 在 IP 中,控制平面和数据平面在网络中每次发生变化时都会不断更新;
- 在 MPLS 中,更新仅在建立新的 LSP 时发生;由于数据平面和控制平面之间存在分离,因此可以使用独立的约束来设置路径;
- MPLS 允许通过简单地更新其软件来重用传统的 ATM 设备。
- 主要功能
- 可能性\ul{流量工程}: 在网络上分发流量负载以避免拥塞;
- 协议独立性 (多协议) → 对从 IPv4 过渡到 IPv6 有用;
- 旨在授予服务质量 (尚未支持);
- 统一控制平面: 它可用于除 IP 之外的任何网络(例如,MPλS 用于光网络);
- 快速故障恢复: 可以创建一对节点之间的两条路径,因此,如果第一条路径出现故障,LSR 就可以通知故障并快速将流量转移到第二条路径[1] (相反,在 IP 中很难将两条路径插入路由表,如果链路出现故障,路由器需要交换路由信息并执行复杂的算法来查找另一条路径).
标签交换路由器 (LSR) 是负责交换用于路由数据包的标签的设备。LSR 被称为标签边缘路由器,当放置在 MPLS 云的边缘时。LSR 结合了路由器的智能性和交换机的速度:它们能够像路由器一样以巧妙的方式进行路由,避免了像交换机一样复杂的數據结构和算法。
MPLS 云可以逐步部署:它们可以增长并可以相互集成。
数据平面是根据标签交换数据包的能力。
IP 数据包以包含一个或多个标签堆栈条目的 MPLS 头部为前缀。每个标签堆栈条目包含四个字段
- 标签: 路由基于此字段,而不是 IP 目的地址;
- 流量类别 (exp): 用于服务质量 (QoS) 优先级和显式拥塞通知 (ECN);
- 堆栈底部 标志 (S): 如果设置,当前标签是堆栈中的最后一个标签;
- 生存时间 (TTL).
标签交换路径 (LSP) 是由信令协议设置的路径,该路径将源标签边缘路由器 (入口) 连接到一个排放路由器 (出口)
- 当入口 LSR 接收数据包时,它会向其添加标签,并将其转发到之前创建的 LSP 的下一个跃点;
- 当出口 LSR 接收数据包时,它会剥离其标签,并将其转发到 MPLS 云的外部。
转发等效类 (FEC) 是可以以相同方式转发的数据包集;也就是说,它们可能绑定到相同的 MPLS 标签。标签在整个 MPLS 云上不是唯一的,但在每个跃点上都会更改(标签交换)。请注意,在整个网络中保证标签的唯一性将需要过于复杂的协议和过长的标签。
使用标签使 MPLS 能够提供两种服务
- 快速查找: 基于“最长前缀匹配”算法的 IP 路由很复杂,难以优化,并且在处理大量路由时不够快。
- MPLS 提供了比 IP 更快的查找,因为数据包转发决策完全基于标签,标签位于 IP 数据包之前,无需检查数据包本身的内容:实际上,每个标签都可以用作访问路由表的键,如数组或哈希表,以加快路由发现;
- 流量工程: IP 倾向于聚合流量,但大量数据包通过相同的路径并不提供有效的服务。由于这将需要静态路由配置 → 昂贵且不可扩展,因此无法轻松避免这种情况。
- MPLS 能够像面向连接的协议一样控制流量:MPLS 路由涉及源和目标标签,路由器可以将与负载最轻的路径相对应的标签分配给新的数据包流,以避免拥塞并允许流量分发。此外,由于节点不可用而导致的路径故障不会影响其他路径。
MPLS 具有很高的可扩展性:在一个大型 MPLS 云(域 1)内部,可以分层定义一个更小的 MPLS 云(域 2)等等,并且可以在一个堆栈数据结构中将多个标签堆栈条目存储在一起。当数据包进入更高域的云时,标签堆栈条目从内部添加到外部;当数据包退出更低域的云时,标签堆栈条目从外部剥离到内部。不在云边缘的 LSR 始终处理外部标签堆栈条目。这种标签的层次结构可以对应于提供商的层次结构,并且标签的数量仅受以太网帧大小的限制。
这种技术带来了一些优势
- 它减小了路由和转发表的大小,因为它们不必是全面的;
- 它允许重新使用现有的交换硬件(ATM、帧中继等):MPLS 报头直接放置在 2 级报头中,因此它们可以由现有的硬件处理,而现有的硬件现在通过升级其软件来处理 2 级。
控制平面
[edit | edit source]控制平面是选择要插入数据包的标签的功能。
为特定 FEC 创建转发表(从更广泛的意义上讲,创建 LSP)分三步完成
- 标签绑定:始终由下游节点执行,下游节点选择 FEC 的标签,并且可以通过两种方式执行(不是相互排斥的)
- 主动:下游节点可以随时决定分配标签,即使网络中没有流量;
- 按需:上游节点可以向下游节点请求固定标签;
- 标签分发:下游节点将选择的标签传达给上游节点;
- 标签映射:上游节点通过将来自特定端口的具有特定标签的传入数据包绑定到从特定端口发出的具有特定标签的传出数据包,在其转发表中创建一个新条目。
标签可以通过两种方式分配
- 静态:网络管理员手动设置 LSP,就像连接导向型技术(如 ATM)中的永久虚拟电路 (PVC) 一样→ 此解决方案不可扩展,并限制了不同服务提供商之间的互操作性;
- 动态:标签绑定、分发和映射由 LSR 自动执行,无需手动干预
- 数据驱动:LSP 的创建由接收数据包触发,每个 LSR 根据流量自主选择标签;
- 控制驱动:在某些时候,LSR 会分配标签,即使没有流量;
- 拓扑驱动(或协议驱动):只要发现新的目的地,就会向该目的地创建 LSP→ 没有流量工程:网络的工作方式与 IP 网络完全相同;
- 显式:LPS 的创建通常由标签边缘路由器发起,无论是数据驱动的还是通过手动配置,都是通过显式信令完成的。
协议
[edit | edit source]标签分发协议
[edit | edit source]下游节点可以使用三种相互不兼容的协议来将标签绑定传达给上游节点
- 标签分发协议 (LDP):专门为标签分发而设计;
- 扩展的边界网关协议 (BGP):下游节点在 BGP 路由消息中包含用于宣传新目的地的一个新字段,该字段告诉上游节点选择的标签(仅适用于协议驱动的标签绑定);
- 扩展的资源预留协议 (RSVP):下游节点在 RSVP 消息中包含用于通知数据包流的服务质量的流量类型的字段,该字段告诉上游节点选择的标签: Computer network technologies and services/Quality of service.
路由协议
[edit | edit source]传统的路由协议可以增强以支持流量工程,因为它们携带有关路由约束的信息。
得益于诸如 OSPF-TE 和 IS-IS-TE(基于 OSPF、IS-IS、BGP-4)之类的路由协议,每个节点都可以收集有关网络拓扑的信息,以了解哪些节点是其上游节点,需要向其通知标签绑定。
有两种可能的路由策略
- 逐跳(就像 IP 路由一样):分布式路由协议,其中每个 LSR 根据最短路径标准自行决定,因此可能会发生所有路由器选择相同的路径→ 拥塞风险;
- 显式(基于约束的路由的可能性):集中式路由协议,其中将宣传出口 LSR 以了解哪些链路目前负载最重,并选择负载最轻的链路来创建新的 LSP,以便它们尽可能地与其他路径分离。
- 为了支持显式路由,应扩展基本分发标签
- 基于约束的路由 LDP (CR-LDP) 是 LDP 的扩展;
- 用于流量工程的 RSVP (RSVP-TE) 是 RSVP 的扩展。
参考资料
[edit | edit source]- ↑ 需要开销才能为相同的 FEC 保持两个 LSP 可用。