保留 VLAN 范围和限制

Cumulus 保留一组连续的 VLAN ID(保留 VLAN 范围)用于内部数据平面操作。如果配置的 VLAN ID 在保留 VLAN 范围内,则会发生称为 *保留 VLAN 重叠* 的情况,这可能会导致意外的流量模式。

为了防止保留 VLAN 重叠,您可能需要更改保留 VLAN 范围。

配置 VLAN 时请谨慎;Cumulus Linux 不会阻止保留 VLAN 重叠。

保留 VLAN 计数

保留 VLAN 范围中所需的最小 VLAN ID 数量取决于 Cumulus Linux 版本和您配置的功能。您可能需要更改保留 VLAN 范围,以增加为某些功能保留的 VLAN 数量。

  • 保留 VLAN 范围是您在配置交换机时不能使用的一组连续的 VLAN ID。
  • NVIDIA 不建议您更改保留 VLAN 的数量,除非绝对必要。
  • 不要将 VLAN 的数量减少到低于默认值。
  • 保留 VLAN 范围要求(基于您的平台、Cumulus Linux 版本和配置)不得超过配置的保留 VLAN 总数。下表显示了每个 Cumulus Linux 版本的默认范围。
  • 更改保留 VLAN 的数量时请谨慎:Cumulus Linux 不会阻止您配置可能超过保留 VLAN 数量的功能。
  • 更改保留 VLAN 范围需要重启 switchd

默认保留 VLAN 范围

版本默认范围默认保留计数
5.x3725-3999275
4.4.x3725-3999275
4.3.x3600-3999400

确定保留 VLAN 范围

  • 运行 Cumulus Linux 5.0 及更高版本的 NVIDIA Spectrum 交换机需要为每个网桥和 QinQ 网桥保留一个 VLAN,外加两个。
  • 运行 Cumulus Linux 4.4 及更早版本的 NVIDIA Spectrum 交换机需要为每个网桥、物理接口、第 3 层子接口和 QinQ 网桥保留一个 VLAN,外加一个。
  • 运行 Cumulus Linux 4.3 及更早版本的 Broadcom 交换机需要为每个网桥、物理接口、第 3 层子接口和 QinQ 网桥保留一个 VLAN,外加一个。

下面的示例提供了 Linux 类型的 shell 命令,以帮助您确定正在使用和配置的 VLAN 计数和值。这些命令仅供参考。请按照以下指南确定如何最好地计算这些值。

  1. 如果您的交换机运行的是 Cumulus Linux 5.0 或更高版本,请转到步骤 2。如果您的交换机运行的是 Cumulus Linux 4.4 或更早版本,请确定您的平台支持的物理接口总数。例如,NVIDIA SN2700 交换机共有 32 个 QSFP 端口,您可以将其拆分为 2x 或 4x。

    在最大拆分 (4x) 时,共有 128 个物理端口。无论配置如何,Cumulus Linux 始终使用此数量的保留 VLAN

    • 32 x 1 = 32 个保留 VLAN ID(在未拆分的交换机上)
    • 32 x 2 = 64 个保留 VLAN ID(在所有端口以 2x 模式拆分的交换机上)
    • 16 x 4 = 64 个保留 VLAN ID(在所有端口以 4x 模式拆分的交换机上)
  2. 确定配置中网桥的总数。下面的示例使用 bridge-ports 语句作为计数键。

    cumulus@switch:~$ sudo cat /etc/network/interfaces | grep "bridge-ports" | wc -l
    cumulus@switch:~$ sudo cat /etc/network/interfaces.d/*.intf | grep "bridge-ports" | wc -l
    cumulus@switch:~$ sudo cat /etc/network/interfaces | grep "bridge-ports" | wc -l
    cumulus@switch:~$ sudo cat /etc/network/interfaces.d/*.intf | grep "bridge-ports" | wc -l
    
  3. 如果您使用双标记 Q-in-Q,请确定配置中未定义的隐式网桥总数。下面的示例使用唯一的 interfaces+inner 标签 (swpX.Y) 作为计数键。

    cumulus@switch:~$ sudo grep -o -h "iface swp.*\.[[:digit:]]*\." /etc/network/interfaces | sort -u |    wc -l
    cumulus@switch:~$ sudo grep -o -h "iface swp.*\.[[:digit:]]*\." /etc/network/interfaces.d/*.intf |    sort -u | wc -l
    
  4. 如果您的交换机运行的是 Cumulus Linux 5.0 或更高版本,请转到步骤 5。如果您的交换机运行的是 Cumulus Linux 4.4 或更早版本,请确定配置中第 3 层子接口的总数。下面的示例使用 vlan-raw-device 语句作为计数键。

    cumulus@switch:~$ sudo cat /etc/network/interfaces | grep "vlan-raw-device" | wc -l
    cumulus@switch:~$ sudo cat /etc/network/interfaces.d/*.intf | grep "vlan-raw-device" | wc -l
    
  5. 将步骤 1 到步骤 4 的总数相加。

    • 对于运行 5.0 及更高版本的 NVIDIA Spectrum 交换机:网桥 +(隐式 QinQ 网桥)+ 2 = 配置的最小值。
    • 对于运行 4.4 及更早版本的 NVIDIA Spectrum 交换机:接口 + 网桥 +(隐式 QinQ 网桥)+ 第 3 层子接口 + 1 = 配置的最小值。
    • 对于运行 4.3 及更早版本的 Broadcom 交换机:接口 + 网桥 +(隐式 QinQ 网桥)+ 第 3 层子接口 + 1 = 配置的最小值。

永远不要超过此计数,即使是暂时的,以便您为未来的扩展、正在进行的操作和自动化留有空间。例如,自动化系统可以通过添加然后删除旧网桥来修改网桥。Cumulus 不保证在执行多步骤操作时保留 VLAN 的最小使用量。

  1. 选择一个连续的 VLAN 范围,该范围覆盖步骤 5 中所需的计数,并且不与配置中的 VLAN ID 重叠。下面的示例确定配置中哪些 VLAN ID

    cumulus@switch:~$ grep -h "iface swp" /etc/network/interfaces | grep -iv "\#" | cut -s -d '.' -f 2- |    tr '.' '\n' | sort -u | sort -n
    cumulus@switch:~$ grep -h "iface swp" /etc/network/interfaces.d/*.intf | grep -iv "\#" | cut -s -d '.   ' -f 2- | tr '.' '\n' | sort -u | sort -n
    

更改保留 VLAN 范围

要更改保留 VLAN 范围,请运行以下命令。

  • 对于 Cumulus Linux 5.3 及更高版本,您可以运行 NVUE 或 Linux 命令。
  • 对于 Cumulus Linux 5.2 及更早版本,您必须运行 Linux 命令。

以下示例将保留 VLAN 范围更改为 4064 到 4094 之间。

cumulus@switch:~$ nv set system global reserved vlan internal range 4064-4094
cumulus@switch:~$ nv config apply

NVUE 重启 switchd 服务。

  1. 编辑 /etc/cumulus/switchd.conf 文件,取消注释 resv_vlan_range 行并指定新范围。

    cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
    ...
    # global reserved vlan internal range
    resv_vlan_range = 4064-4094
    
  2. 保存文件后,您必须重启 switchd

    cumulus@switch:~$ sudo systemctl restart switchd.service
    

保留的第 3 层 VNI VLAN

除了内部保留 VLAN 范围外,Cumulus Linux 还在 EVPN 对称路由部署中为第 3 层 VNI 分配一个保留 VLAN 范围。当您在 MLAG 环境中使用 NVUE 命令配置第 3 层 VNI 时,请使用此保留 VLAN 范围。您可以使用 nv show system global reserved vlan l3-vni-vlan 命令显示该范围

cumulus@switch:~$ nv show system global reserved vlan l3-vni-vlan
operational  applied
-----  -----------  -------
begin  4000         4000
end    4064         4064

不要在与您的 MLAG 接口和第 3 层 VNI 相同的网桥中使用此 VLAN 范围。您可以使用 nv set system global reserved vlan l3-vni-vlan begin <vlan>nv set system global reserved vlan l3-vni-vlan end <vlan> 命令配置该范围。有关更多信息,请参阅对称路由

全局保留的第 3 层 VNI VLAN 范围不适用于您使用 Linux 命令而不是 NVUE 手动配置的交换机,也不适用于没有 MLAG 的对称路由部署。