MPLS标签

本文可帮助您了解MPLS的工作方式。在完成本文时,您将对MPLS的构建块有扎实的了解。

标签交换表示交换时的数据包不再是IPv4数据包,IPv6数据包,甚至不再是第2层帧,而是被标记了。MPLS最重要的项目是标签。

MPLS标签字段

一个MPLS标签是具有特定结构的32位字段。下图显示了一个MPLS标签的语法。

一个MPLS标签的语法

前20位是标签值。该值可以在0到220–1之间,或在1,048,575之间。但是,前16个值不受正常使用;也就是说,它们具有特殊的意义。比特20至22是三个实验(EXP)比特。这些位仅用于服务质量(QoS)。

位23是堆栈底部(BoS)位。除非这是堆栈中的底部标签,否则它为0。如果是这样,则BoS位设置为1。堆栈是在数据包顶部找到的标签的集合。堆栈可以仅包含一个标签,也可以包含更多标签。您可以在堆栈中找到的标签数量(即32位字段)是无限的,尽管您很少会看到包含四个或更多标签的堆栈。

位24到31是用于生存时间(TTL)的8位。此TTL与IP标头中的TTL具有相同的功能。在每个跃点上将其简单地减少1,其主要功能是避免数据包卡在路由环路中。如果路由循环发生并且不存在TTL,则数据包将永远循环。如果标签的TTL达到0,则丢弃该数据包。

MPLS标签堆叠

具有MPLS能力的路由器可能需要在数据包顶部放置多个标签,才能将该数据包路由到MPLS网络。这是通过将标签打包到堆栈中来完成的。堆栈中的第一个标签称为顶部标签,最后一个标签称为底部标签。在这两者之间,可以有任意数量的标签。下图显示了标签堆栈的结构。

MPLS标签栈

请注意,上图中的标签堆栈显示所有标签(底部标签除外)的BoS位均为0。对于底部标签,BoS位设置为1。

某些MPLS应用程序实际上需要标签堆栈中的多个标签来转发已标记的数据包。这种MPLS应用的两个示例是MPLS VPN和AToM。MPLS VPN和AToM都在标签堆栈中放置了两个标签。

MPLS编码

标签堆栈位于第3层数据包的前面,即在传输协议的标头之前,但在第2层标头之后。MPLS标签栈由于其位置而经常被称为填充头。下图显示了带有标签的数据包的标签堆栈的位置。

链路的第2层封装几乎可以是Cisco IOS支持的任何封装:PPP,高级数据链路控制(HDLC),以太网等。假设传输的协议为IPv4,并且链路的封装为PPP,则标签堆栈位于PPP标头之后但在IPv4标头之前。 

由于第2层帧中的标签栈位于第3层标头或其他传输的协议之前,因此对于数据链路层协议字段,您必须具有新值,指示在第2层标头之后的是MPLS标有标签的数据包。数据链路层协议字段是一个值,指示第2层帧所携带的有效负载类型。

本文的此部分简要说明了在网络中运行MPLS的好处。这些好处包括:

  • 使用一个统一的网络基础架构
  • 无边界网关协议(BGP)的核心
  • 最佳交通流量
  • 交通工程(TE)

标签交换路由器(LSR)

标签交换路由器(LSR)是支持MPLS的路由器。它能够理解MPLS标签,并能够在数据链路上接收和发送已标记的数据包。MPLS网络中存在三种LSR:

  • 入口LSR:入口LSR接收尚未标记的数据包,在数据包的前面插入一个标签(堆栈),然后通过数据链路发送它。
  • 出口LSR:出口LSR接收带标签的数据包,删除标签,然后在数据链路上发送它们。入口和出口LSR是边缘LSR。
  • 中间LSR:中间LSR接收传入的标记数据包,对其进行操作,交换数据包,然后在正确的数据链路上发送数据包。 

LSR可以执行以下三种操作:弹出,推送或交换。在将数据包切换出之前,它必须能够弹出一个或多个标签(从标签堆栈的顶部删除一个或多个标签)。LSR还必须能够将一个或多个标签推送到接收到的数据包上。如果接收到的数据包已被标记,则LSR将一个或多个标签压入标签堆栈,然后切换出该数据包。

如果该数据包尚未标记,则LSR将创建一个标签堆栈并将其压入该数据包。LSR还必须能够交换标签。这仅表示接收到带标签的数据包时,将标签堆栈的顶部标签替换为新标签,然后在输出数据链路上切换数据包。

将标签推入尚未标记的数据包的LSR称为强加LSR,因为它是第一个将标签施加到数据包上的LSR。正在进行强加的一种是入口LSR。在切换出数据包之前先从已标记的数据包中删除所有标签的LSR是可处置LSR。进行配置的一个是出口LSR。

标签交换路径(LSP)

标签交换路径(LSP)是一系列LSR,这些LSR通过MPLS网络或MPLS网络的一部分交换标记的数据包。基本上,LSP是数据包通过MPLS网络或其一部分的路径。LSP的第一个LSR是该LSP的入口LSR,而LSP的最后一个LSR是出口LSR。入口和出口LSR之间的所有LSR都是中间LSR。

在下图中,由于LSP是单向的,所以顶部的箭头指示方向。在相同的边缘LSR之间,从右到左的另一个方向的标记数据包流将是另一个LSP。

LSP通过MPLS网络

LSP的入口LSR不一定是第一个标记数据包的路由器。该数据包可能已经被前面的LSR标记了。这种情况将是嵌套的LSP,即另一个LSP内部的LSP。

转发等效类

转发等效类(FEC)是沿同一路径转发并在转发处理方面得到相同对待的一组数据包或数据包流。属于同一FEC的所有数据包都具有相同的标签。但是,并非所有具有相同标签的数据包都属于同一FEC,因为它们的EXP值可能会有所不同。转发处理可能不同,并且它们可能属于不同的FEC。

决定哪些数据包属于哪个FEC的路由器就是入口LSR。这是合乎逻辑的,因为入口LSR会对数据包进行分类和标记。以下是FEC的一些示例:

  • 第3层目标IP地址与特定前缀匹配的数据包\
  • 属于某个组的组播报文
  • 基于优先级或IP DiffServ代码点(DSCP)字段的转发处理相同的数据包
  • 跨MPLS网络承载的第2层帧在入口LSR的一个VC或(子)接口上接收,并在出口LSR的一个VC或(子)接口上传输
  • 具有属于一组边界网关协议(BGP)前缀的第3层目标IP地址的数据包,所有这些数据包都具有相同的BGP下一跳

入口LSR上目标IP地址指向路由表中的一组BGP 路由的所有数据包 (均具有相同的BGP下一跳地址)均属于一个FEC。这意味着进入MPLS网络的所有数据包都将获得标签,具体取决于BGP下一跳是什么。下图显示了一个MPLS网络,其中所有边缘LSR都运行内部BGP(iBGP)。

进入入口LSR的所有IP数据包的目标IP地址将在IP转发表中查找。所有这些地址都属于一组前缀,在路由表中称为BGP前缀。路由表中的许多BGP前缀都具有相同的BGP下一跳地址,即一个出口LSR。路由表中的IP查找递归到同一BGP下一跳地址的所有具有目标IP地址的数据包都将映射到同一FEC。如前所述,属于同一FEC的所有数据包都将由入口LSR施加相同的标签。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁