假设我们有一个支持 VLAN 的 4 端口交换机。
1 2 3 4
Port 1 is TAGGED to VLAN10` and `UNTAGGED to Default_VLAN(1)
Port 2 is UNTAGGED to VLAN10
Port 3 is UNTAGGED to VLAN10
对于这个问题,我们有一个进入端口 1 的数据包,该数据包带有 VID 10 标记。端口 1 保留该标记。
恰好它需要将数据包发送到的设备连接到端口 2。交换机是否从数据包中删除 VLAN 10 标记,因为它将数据包从未标记端口发送到该 VID?
此外,假设这是一个 ICMP 数据包,端口 2 上的设备发送回复,该回复未标记到端口 2,并成为 VLAN 10 的一部分。当它离开端口 1 到其目标设备时,它是否被标记为 VID 10因为 Port1 被标记到该 VID?(为了交换机正在执行第 3 层 IP 路由的问题,我们还做一个很大的假设)。
开关根据端口的设置剥离或添加标签。您假设的数据包标记 VLAN 10 进入端口 1 将被剥离其标记,并且当它离开端口 2(或端口 3,因为两者都是 VLAN 10 的未标记成员)。
同样,根据您问题的第二部分,当数据包进入端口 2 时,它将在离开端口 1 之前被标记为 VLAN 10。
我知道至少有一种以太网交换机实现,它在未标记端口的入口上标记帧,将所有帧在交换机内作为标记帧移动。仅当帧传出未标记端口时,该特定开关才会剥离标记。
我会假设这种类型的行为可能相当普遍,因为交换机需要某种方式来跟踪帧的原始 VLAN,因为它们在交换机内移动。不过,由于我只知道一个(现在非常过时且不再生产)开关的低级细节,因此我不会做出无法支持的全面概括。
标记仅应用于帧,因为帧在两个网络设备之间的介质上传送。标签在发送到接口时添加,并在被第二个设备接收时剥离。
该标签仅在收到时才需要,以识别应在何处处理流量。它在被网络设备本身处理(路由/交换)时不会被保留。
所以对于你的例子/问题:
P1 不保留标签。它在接收到帧时被剥离,因此当它将帧转发到 P2 时,没有标签。
由于 VLAN 10 在 P1 上被标记,因此 VLAN 10 上从 P1 流出的所有流量都将被标记。交换机是否在做 L3 与 802.1Q 标记的功能完全没有关系。
它比您想象的要简单,基本上任何到达交换机的数据包都被剥离了任何标签并放在正确的 VLAN 上(除非它被标记为无论如何都不是由该端口承载的 VLAN)。
因此,在您的场景中,一个数据包进入带有 VLAN 10 标记的端口 1,被剥离该标记并放置到 VLAN 10 上。CAM 表指出目标 MAC 在端口 2 上,并且数据包被发送到该端口未标记。就这么简单。
至于您的第二个问题,数据包将在从端口 1 出来的路上被标记为 VLAN 10 是的。