当有多个VLAN子接口时,服务器如何识别帧?

当有多个VLAN子接口时,服务器如何识别帧?

当我在 Linux 中创建 VLAN 子接口时,它会获得与其父接口相同的 MAC 地址。例如,使用ip link add link eth0 name eth0.333 type vlan id 333命令,eth0.333获得与 相同的 MAC eth0。我是否正确地认为服务器根据 VLAN 标记识别接收到的帧,或者如果 VLAN 标记丢失,则来自交换机的帧是发送给eth0其自身的?

答案1

默认行为是添加一个仅接受 802.1q 字段与 802.1q 字段相同的数据包的接口。vlan id此给定接口相同的数据包。

在一个非常简单的方式,Mac 地址将与父地址相同,因此数据包被传递到 phy 接口,并由内核处理,搜索源 mac 地址字段后面的 802.1q 标记字段。该字段将被标识为0x8100 以太类型。最后 12 位定义 vlan id。

在此输入图像描述

该以太网帧将去除标签并传送到 vlan 接口。您可以在两个接口上使用 tcpdump 并 ping 的 IP 地址来仔细检查这一点eth0.333。您只能在以下位置看到输出eth0

# tcpdump -ni eth0 vlan 333
# tcpdump -ni eth0.333 vlan 333

反向流量方向的默认行为将是标记和传递(可以配置)。

如果您想创建具有与父级不同的 Mac 地址的虚拟接口,则必须使用macvlaniputils2 选项。请记住,您的交换机可能有一些与 MAC 相关的限制,并阻止来自此新创建的接口的流量。

是的,你是对的。如果没有标签,流量将传送到您的物理接口。您的配置将定义数据包是否被接受。

相关内容