Section outline

  • 弹出图片

    多协议标签交换(MPLS)是新一代宽带(IP)公共网络的关键技术。它可以被视为一种协议架构(或协议套件),用于控制不同的子协议。

    MPLS工作在一个通常被认为位于传统第2层(数据链路层)和第3层(网络层)之间的层级。

    优势

    MPLS的引入简化了传统的“庞大洋葱”(指复杂的网络协议堆栈)。

    IP协议最初是为了研究目的开发的,并未设计为一种可销售的服务。它是所谓的“尽力而为协议”,这意味着它没有明确保证可靠服务(如速度、延迟等)的目的。

    当IP开始成为商业产品时,国际电信联盟(ITU)开始开发一些协议(如ATM、帧中继等),以保证服务的可靠性和稳定性,认为它们将在计算机通信世界中普遍应用。然而,最终用户仍然继续使用IP,因此如今的服务提供商必须处理许多协议,以便将IP传输到最终用户。这种“庞大洋葱”对服务提供商而言几乎毫无意义,因为为了确保互操作性,需要高昂的维护、设备和软件开发成本。

    思科系统是第一个将标签交换(Tag Switching)引入路由器的厂商,随后IETF采用了这一协议并将其命名为MPLS。

    MPLS结合了无连接协议和面向连接协议的最佳特点,解决了“庞大洋葱”问题,原因有二:

    • MPLS为基于IP的网络提供了更大的服务可靠性,并且有一个更为独立的、统一的控制平面;
    • 在IP中,控制平面和数据平面在每次网络变化时都会不断更新;
    • 在MPLS中,更新仅发生在建立新LSP(标签交换路径)时;由于数据平面和控制平面分离,可以设置具有独立约束的路径;
    • MPLS允许通过简单地更新软件来重用传统的ATM设备。

    主要特点

    • 流量工程:通过分配流量负载以避免网络拥堵;
    • 协议独立性(多协议支持):有助于IPv4向IPv6过渡;
    • 质量保障设计:虽然尚未完全支持;
    • 统一控制平面:它可以应用于除IP外的任何网络(例如,光纤网络中的MPLS);
    • 快速故障恢复:可以在两个节点之间创建两条路径,因此在第一条路径出现故障时,LSR可以快速通知并将流量偏移到第二条路径(而在IP中,插入两条路径到路由表中比较困难,且若链路失败,路由器需要交换路由信息并执行复杂算法来找到另一条路径)。

    网络架构

    MPLS网络的示例。


    标签交换路由器(LSR)是负责切换用于路由数据包的标签的设备。当LSR位于MPLS云的边缘时,它们被称为标签边缘路由器(LER)。LSR结合了路由器的智能性和交换机的速度:它们能够像路由器一样智能地进行路由,但避免了交换机那样复杂的数据结构和算法。

    MPLS云可以逐步部署:它们可以扩展并相互集成。

    数据平面

    数据平面是根据数据包标签进行交换的能力。

    包含单个标签堆栈条目的数据包格式。MPLS标签交换示例。

    MPLS头部

    IP数据包前面会附加一个包含一个或多个标签堆栈条目的MPLS头部。每个标签堆栈条目包含四个字段:

    • 标签:路由依据这个字段,而非IP目的地址;
    • 流量类(exp):用于质量服务(QoS)优先级和显式拥塞通知(ECN);
    • 堆栈底部标志(S):若设置,当前标签为堆栈中的最后一个标签;
    • 生存时间(TTL)

    标签交换

    MPLS标签交换示例。


    标签交换路径(LSP)是由信令协议建立的路径,将源标签边缘路由器(入口)与排水路由器(出口)连接起来:

    • 当入口LSR接收到一个数据包时,它会为数据包添加标签,并将其转发到先前创建的LSP的下一个跳点;
    • 当出口LSR接收到数据包时,它会去掉标签并将数据包从MPLS云中转发出去。

    转发等效类(FEC) 是一组可以以相同方式转发的数据包,即它们可以绑定到相同的MPLS标签。标签在整个MPLS云中并不唯一,但在每个跳点上都会改变(标签交换)。请注意,确保标签在网络中的唯一性会导致过于复杂的协议和过长的标签。

    使用标签使得MPLS能够提供两种服务:

    1. 快速查找:IP路由使用“最长前缀匹配”算法,算法复杂,难以优化,并且在处理大量路由时速度不足。
      MPLS相对于IP提供了更快的查找,因为数据包转发决策仅依赖标签,这些标签被放置在IP数据包之前,无需检查数据包本身的内容:每个标签实际上可以作为键来访问路由表,如数组或哈希表,以加快路由发现。

    2. 流量工程:IP倾向于将流量聚集在一起,但大量数据包通过同一路径传输并不能提供高效的服务。这种现象不容易避免,因为这需要静态路由配置 → 昂贵且不可扩展。
      MPLS能够像面向连接的协议一样控制流量:MPLS路由同时涉及源和目标标签,路由器可以为新的数据包流分配标签,选择负载最小的路径,以避免拥堵并实现流量分配。此外,由于非工作节点导致路径故障不会影响其他路径。

    层次性和可扩展性

    LSP中的标签层次。


    MPLS具有很好的可扩展性:在一个大型的MPLS云域(域1)内,可以以层次化的方式定义一个更小的MPLS云域(域2)等,多个标签堆栈条目可以并排存储在堆栈数据结构中。当数据包进入更高域的云时,标签堆栈条目会从内到外添加;当数据包退出较低域的云时,标签堆栈条目会从外到内移除,而不在云边缘的LSR始终处理最外层的标签堆栈条目。这个标签层次结构可以对应于服务提供商的层次结构,标签的数量仅受以太网帧大小的限制。

    这种技术带来了一些优势:

    • 减少了路由和转发表的大小,因为它们不需要全面;
    • 允许重用现有的交换硬件(如ATM、帧中继等):MPLS头部直接放入二层头部,因此可以通过升级软件处理现有硬件。

    控制平面

    控制平面是选择要插入数据包中的标签的能力。

    为特定FEC创建转发表(以及更广义上的LSP)分为三步:

    1. 标签绑定:始终由下游节点执行,下游节点为FEC选择标签,这可以通过两种方式进行(非互斥):
      • 无请求:下游节点可以随时选择标签,即使网络中没有流量;
      • 按需:上游节点请求下游节点选择一个固定标签;
    2. 标签分发:下游节点将选择的标签通知给上游节点;
    3. 标签映射:上游节点通过将来自特定端口、特定标签的入站数据包映射到出站数据包(从特定端口、特定标签发出),在其转发表中创建新条目。

    标签可以通过两种方式分配:

    • 静态分配:网络管理员手动设置LSP,就像在面向连接的技术中设置永久虚拟电路(PVC)一样 → 这种解决方案无法扩展,并且限制了不同服务提供商之间的互操作性;
    • 动态分配:标签绑定、分发和映射由LSR自动执行,无需手动干预:
      • 数据驱动:LSP的创建由接收到的数据包触发,每个LSR根据流量自主选择标签;
      • 控制驱动:在某些情况下,LSR会分配标签,即使没有流量;
      • 拓扑驱动(或协议驱动):每当发现新的目的地时,会创建到该目的地的LSP → 没有流量工程,网络的工作方式

    与IP网络相同;

    • 显式驱动:LSP的创建通常由标签边缘路由器通过数据驱动或手动配置显式信令发起。

    协议

    标签分发协议
    下游节点可以使用三种不兼容的协议来通知上游节点标签绑定:

    • 标签分发协议(LDP):专门为标签分发设计;
    • 扩展边界网关协议(BGP):下游节点在BGP路由消息中包括一个新字段,用于通知上游节点选择的标签(仅适用于协议驱动标签绑定);
    • 扩展资源预留协议(RSVP):下游节点在RSVP消息中包括一个新字段,用于通知上游节点选择的标签(用于质量服务)。

    路由协议
    传统的路由协议可以增强以支持流量工程,因为它们携带有关路由约束的信息。

    借助OSPF-TE和IS-IS-TE等路由协议(基于OSPF、IS-IS、BGP-4),每个节点可以收集网络拓扑信息,以便了解哪些节点是其上游节点,以便通知标签绑定。

    有两种可能的路由策略:

    • 逐跳路由(如IP路由中):分布式路由协议,每个LSR根据最短路径准则自行决定路由,因此可能所有路由器都选择同一路径 → 拥堵风险;
    • 显式路由(支持基于约束的路由):集中式路由协议,出口LSR被通知哪些链路当前最为繁忙,并选择负载最小的链路以创建新的LSP,从而使路径尽可能不重叠。

    为了支持显式路由,基本分配标签应扩展:

    • **基于约束的路由LDP(CR-LDP)**是LDP的扩展;
    • **RSVP流量工程(RSVP-TE)**是RSVP的扩展。