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 實施的任何資訊也會有所幫助。

相關內容