vlan 驱动程序如何将 vlan 信息传递给硬件以太网驱动程序

vlan 驱动程序如何将 vlan 信息传递给硬件以太网驱动程序

我正在尝试以编程方式在目标上实施 VLAN。

但首先我想手动设置 VLAN,以帮助更好地了解 VLAN 设置。因此,我使用 vconfig/ifconfig 命令组合在我的开发系统 (ubuntu) 上手动设置 VLAN,但在预期目标上使用相同的命令组合不起作用。

两个系统都使用相同的 8021q 驱动程序,因此向较低层以太网驱动程序通知 vlan 信息的方法应该是相同的(我认为)。查看 vlan 驱动程序源代码后,它似乎收集了 vlan 信息并将信息添加到 sk_buff 结构中,最终传递给以太网驱动程序,但 vlan 魔法应该发生在哪里(以太网驱动程序或 8021q 驱动程序)并不明显。

我查看了目标系统以太网驱动程序的源代码,它支持设置 vlan 的 ioctl 方法。但这看起来不像 Linux 在以太网驱动程序中设置 VLAN 的传统方式。

vlan 驱动程序 (8021q.ko) 通过什么机制告诉以太网硬件有关 vlan 的信息?

是否是对以太网驱动程序的特殊 api 调用以在硬件中设置 VLAN,或者 VLAN 驱动程序是否应该将 VLAN 标记添加到数据包中?

有关 VLAN 实施的任何信息也会有所帮助。

相关内容