ネットワークカードのブランドによって、インターフェイス名が異なることに気付きました(ドライバーによって異なります)。
正確には、pfSenseの下では、リンクアグリゲーション(LAG)仮想インターフェイスでALTQを使用できないようです。
適切な抽象化レイヤーがないため、これはBSDの内部制限ですか?
* BSDがネットワークインターフェイスにドライバー固有の名前を使用するのはなぜですか?
それは単なる歴史的な選択です。名前の文字はカードと通信するドライバーからのものであるため、同じドライバーを使用する場合、2つの別々のインターフェイスで同じになります。
これには1つの実用的な利点があります。BSDでは、ネットワークドライバのセクション4に独自のマニュアルページがあります。したがって、 dc(4)
は、DEC21143ドライバについて説明します。 dc0
ネットワークアダプター。
これは、ハードディスクなど、BSDUnixの他の部分でも見られます。
適切な抽象化レイヤーがないため、これはBSDの内部制限ですか?
番号。
その価値については、 Linuxは同様の道を進んでいます 。ネットワークがより複雑になるにつれて、イーサネットアダプタの単純な命名規則の時代は終わりつつあります。
総称名またはドライバー固有の名前を使用するという選択は、ドライバーの制限とは何の関係もありません。
それは主に化粧品の選択です。総称名を使用すると、ほとんどの場合無関係な情報を非表示にするという利点があります。ネットワークインターフェイスは、誰が作成したかに関係なく、ネットワークインターフェイスです。デバイスの機能は、使用されているドライバーではなく、正確なモデルとその構成によって異なります。特定の名前の利点は、管理者にとってです。エラーメッセージにeth0
が記載されている場合(わかりました。どちらが0で、どちらが1か)、wlan0
に記載されている場合よりも情報量が少なくなります(ああ、それはwifiインターフェースです)またはbcm0
(ああ、それはBroadcomインターフェースです)。
FreeBSDでは、ネットワークセットアップ操作はUnixソケットで ioctl
を呼び出すことによって機能します。このioctlは、汎用ネットワークコードによって処理され、ioctlがこれを要求した場合、関連するドライバーに細流化します。
ALTQがリンクアグリゲーションとどのように相互作用するのかわかりません。必ず最新バージョンのFreeBSDを使用してください。 これは以前は機能していませんでしたが、現在は機能しています 。
話しているネットワークカードを簡単に見分けることができます。
Intel(igb0)とRealtek(rl0)nicをお持ちの場合は、すぐに区別できるようになりました。
また、さまざまなドライバーがさまざまな機能をサポートしています。一部のドライバーはpolling
をサポートし、一部はサポートしません。 LRO
、TSO
、RSS
などをサポートするものもあります。すべてがeth
という名前ではない場合、どのサポートを追跡する方が簡単です。
eth
は、他の種類のネットワークインターフェイスがたくさんある場合は意味があるかもしれませんが、そうすることはめったにありません。
* BSDがネットワークインターフェイスにドライバー固有の名前を使用するのはなぜですか?
物事を簡単にするため。 bge0
という名前のインターフェイスを見て、マニュアルを参照するか、 ニーモニックリンクシステム を使用すると、このドライバーがBroadcom Gigabit Etherhet。 This ドキュメントも便利です。
カーネルに「汎用ネットワークインターフェイス」を記述する抽象化レイヤーがないため、各ドライバーは独自のAPIを介して内部的にアドレス指定されるということですか?
ここでのルールは次のとおりです。
抽象化レイヤーは必要ありません。とても簡単です。
(どのように)リンクアグリゲーション、トラフィックシェーピング、QoS(ALTQ)、フィルタリングなどのサブシステムに影響しますか?
インターフェイス名は、トラフィックのシャッピングに干渉しないようにする必要があります。
正確には、pfSenseの下では、リンクアグリゲーション(LAG)仮想インターフェイスでALTQを使用できないようです。
今日それはうまくいくはずです:
適切な抽象化レイヤーがないため、これはBSDの内部制限ですか?
これを処理するための適切なレイヤーがないわけではありません。これは、マザーボードのセットアップで インターフェイス名の作成 (/etc/rc.conf
)、または pci idの変更 などの他のリソースを使用してこれらの名前を処理できるためです。 。そして、この質問で他の人が言ったように、Linuxでさえbiosdevname
でこの道を進んでいます。