VXLAN 隧道 DSCP 操作

Cumulus Linux 提供了配置选项,用于控制 VXLAN 封装和解封装期间的 DSCP 操作,特别是对于需要端到端服务质量的解决方案,例如融合以太网上的 RDMA

配置选项根据 RFC 6040 在底层和叠加网络之间传播 ECN,该 RFC 描述了如何在 IP-in-IP 隧道的入口和出口处构造 ECN 字段的 IP 标头。

配置 DSCP 操作

您可以设置以下 DSCP 操作

  • VXLAN 封装 DSCP 操作。如果内部数据包是 IP,则该操作可以是 copyset 用于配置特定值;或者 derive 用于从交换机优先级派生值。默认设置为 derive
  • VXLAN 解封装 DSCP 或 COS 操作。该操作可以是 copy,用于从外部数据包(底层网络)复制 DSCP 值;preserve,用于保留内部数据包(叠加网络)中配置的值;或者 derive,用于从交换机优先级派生值。默认设置为 derive

以下示例将 VXLAN 封装 DSCP 操作设置为 copy

cumulus@switch:~$ nv set nve vxlan encapsulation dscp action copy
cumulus@switch:~$ nv config apply

以下示例将 VXLAN 封装 DSCP 值设置为 16。

cumulus@switch:~$ nv set nve vxlan encapsulation dscp action set
cumulus@switch:~$ nv set nve vxlan encapsulation dscp value 16
cumulus@switch:~$ nv config apply

以下示例将 VXLAN 解封装 DSCP 值设置为 preserve

cumulus@switch:~$ nv set nve vxlan decapsulation dscp action preserve
cumulus@switch:~$ nv config apply

编辑 /etc/cumulus/switchd.conf 文件,然后重新加载 switchd

以下示例将 VXLAN 封装 DSCP 操作设置为 copy

cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
# vxlan encapsulation update
vxlan.def_encap_dscp_action = copy
# default vxlan encap dscp value, only applicable if action is 'set'
#vxlan.def_encap_dscp_value =

# vxlan decapsulation update
#vxlan.def_decap_dscp_action = derive

以下示例将 VXLAN 封装 DSCP 值设置为 16。

cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
# vxlan encapsulation update
vxlan.def_encap_dscp_action = set
# default vxlan encap dscp value, only applicable if action is 'set'
vxlan.def_encap_dscp_value = 16

# vxlan decapsulation update
#vxlan.def_decap_dscp_action = derive

以下示例将 VXLAN 解封装 DSCP 值设置为 preserve

cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
# vxlan encapsulation update
#vxlan.def_encap_dscp_action = derive
# default vxlan encap dscp value, only applicable if action is 'set'
#vxlan.def_encap_dscp_value =

# vxlan decapsulation update
vxlan.def_decap_dscp_action = preserve
...

修改 /etc/cumulus/switchd.conf 文件后,您必须使用 sudo systemctl reload switchd.service 命令重新加载 switchd

显示 DSCP 设置

要显示 VXLAN 封装 DSCP 设置,请运行 nv show nve vxlan encapsulation dscp 命令

cumulus@switch:~$ nv show nve vxlan encapsulation dscp 
       operational  applied
------  -----------  -------
action  copy         copy

要显示 VXLAN 解封装 DSCP 设置,请运行 nv show nve vxlan decapsulation dscp 命令。

cumulus@switch:~$ nv show nve vxlan decapsulation dscp
        operational  applied
------  -----------  --------
action  preserve     preserve

注意事项

您只能全局设置 VXLAN 封装和解封装 DSCP 操作。Cumulus Linux 不支持每个 VXLAN 或每个隧道的设置。