概述

当在报文上附加MPLS标签时,报文长度增加32比特(4字节)。这32位分解如下:

  • 标签值本身(20位)

  • EXP(“实验”)字段(3位)

  • 生存域时间(8位)

  • 栈底字段(1位)

MPLS标准没有规定“实验”位的使用,但最常见的用途是承载QoS信息,类似于VLAN标签中的802.1q优先级。注意,EXP字段只有3位,因此它只能携带0到7的值,允许有8个流量类。

EXP在RouterOS中的字段处理

当RouterOS收到一个MPLS报文时,它会将该报文的“入站优先级”设置为顶部标签内的优先级。注意,“入站优先级”并不是包头中的一个字段,它可以认为是路由器在处理数据包时分配给数据包的额外标记。当RouterOS标记MPLS报文时,它将EXP位设置为分配给该报文的“优先级”(而不是“入站优先级”!)。当RouterOS交换MPLS报文时,“入站优先级”自动复制为“优先级”,这样常规的MPLS交换就可以在整个标签交换路径上交换优先级信息。

关于“入站优先级”和“优先级”处理的其他信息也见于 WMM和VLAN优先级

因此EXP字段发生的情况取决于对数据包采取的操作:

  • 如果数据包是MPLS交换的(通过从数据包中弹出标签并推送新标签),新标签中的EXP字段将与接收到的标签中的EXP字段相同,因为:

  • RouterOS将入站优先级设置为接收标签中的EXP位

切换自动将“优先级”设置为“入站优先级”

  • RouterOS给报文贴上新的标签,并将其EXP位设置为priority值。

  • 如果数据包是通过倒数第二跳跳交换的MPLS(收到的标签被弹出,没有新的标签被推送),收到的优先级的EXP字段保留在数据包的“优先级”字段中,并且可能被其他MAC协议使用,例如WMM或802.1q VLAN,例如:

  • RouterOS将入站优先级设置为接收标签中的EXP位

切换自动将“优先级”设置为“入站优先级”

  • 在VLAN接口上,RouterOS将报文切换到下一跳(不推送标签)

  • VLAN接口将VLAN头中的802.1q优先级设置为报文的“priority”值。

请注意,倒数第二跳弹出会丢失在最后一跳的标签交换路径上携带的QoS信息。如果不希望出现这种情况,则应该通过对标签交换路径中的最后一跳使用显式NULL标签而不是隐式NULL标签来禁用倒数第二跳弹出行为。对最后一跳使用显式NULL标签是MPLS TE隧道的默认行为。

  • 如果数据包应该通过标签交换路径发送(第一个标签将被推送到数据包上),EXP位将被设置为“优先级”的值,这反过来可以使用防火墙规则或其他方法(例如,从IP报头中的DSCP字段)来正确设置

  • 如果接收到本地处理的数据包,则将“入站优先级”设置为接收到的数据包的EXP字段,因此可以用来更新数据包的DSCP字段,或者使用防火墙规则将“入站优先级”设置为“优先级”