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.ja)は、イーサネットハードウェアにVLAN情報を通知するためにどのようなメカニズムを使用しますか?

ハードウェアにVLANを設定するためのイーサネットドライバへの特別なAPI呼び出しですか、それともVLANドライバはパケットにVLANタグを追加する必要がありますか?

VLANの実装に関する情報も役に立ちます。

ベストアンサー1

おすすめ記事