Linux VLAN 感知网桥和中继端口

Linux VLAN 感知网桥和中继端口

我有一个连接到网桥的以太网端口:

$ brctl show
bridge name bridge id       STP enabled interfaces
eth0_bridge     8000.6a612bcc4723   yes     eth0

网桥可识别 VLAN(即/sys/class/net/eth0_bridge/bridge/vlan_filtering1。我希望能够将其他接口添加到该网桥并为其分配 VLAN,如下所示:

ip link set eth1 master eth0_bridge
bridge vlan add dev eth1 vid 10 pvid untagged

这应该将 eth1 上的未标记流量连接到 eth0 上的 VLAN 10。但没有流量通过,直到我:

bridge vlan add dev eth0 vid 10

完成此操作后,一切都会按需要进行。但是有没有办法告诉它这是网桥上应该承载的eth0中继端口eth0_bridge全部VLAN,然后在网桥的出口上进行 VLAN 过滤?

答案1

当使用bridge vlan命令,您可以一次性添加(或删除)一系列 VLAN ID。例如:

# bridge vlan add vid 2-4094 dev eth0

将所有可用的 VLAN 添加到中继接口以太网0(0 和 4095 在协议中保留,不能(也不能)使用,1 默认设置为 PVID 未标记的 VLAN ID,因此应该避免,或者最好删除)。

# bridge vlan show dev eth0
eth0     1 PVID Egress Untagged
         2
         3
[...]
         4093
         4094

# bridge -c vlan show dev eth0
port    vlan ids
eth0     1 PVID Egress Untagged
         2-4094

这里-c代表-c[ompressvlans]而不是-c[olor]:桥手册页(至少到 iproute2-ss191125)完全缺乏有关此选项的信息。

删除范围正如人们所期望的那样:

# bridge vlan del vid 100-200 dev eth0
# bridge -c vlan show
port    vlan ids
bridge0  1 PVID Egress Untagged

eth1     1 Egress Untagged
         10 PVID Egress Untagged

eth0     1 PVID Egress Untagged
         2-99
         201-4094

在内部,所有内容都使用 (散列的) 各个 VLAN 的列表。


注1

Cumulus Networks(已知主要在其网络设备上使用 Linux 的本机网络堆栈)有一些老的(和较新的)有关此的示例:

考虑以下桥接示例:

auto bridge
iface bridge
  bridge-vlan-aware yes
  bridge-ports swp1 swp9
  bridge-vids 2-100
  bridge-pvid 101
  bridge-stp on

以下是该配置的 VLAN 成员身份:

cumulus@switch$ bridge -c vlan show
portvlan ids
swp1 101 PVID Egress Untagged
 2-100

swp9 101 PVID Egress Untagged
 2-100

bridge 101

使用的配置文件是接口来自 ifupdown2 的文件(及其插件),实际上由 Cumulus Networks 开发来取代如果向上向下,具有大部分兼容的语法,但大大改进了桥接和 VLAN 支持。


笔记2

我没有发现任何特殊标志自动将所有 VLAN 淹没到桥接端口的证据。这内核提交告诉 VID 4095 在 IEEE 802.1Q 中记录有限制但允许使用用于管理操作作为VID的通配符匹配,但Linux似乎没有使用这种方法。

相关内容