*BSD がネットワーク インターフェイスにドライバー固有の名前を使用するのはなぜですか? それは制限を意味しますか?

*BSD がネットワーク インターフェイスにドライバー固有の名前を使用するのはなぜですか? それは制限を意味しますか?

ネットワーク カードのブランドによって、インターフェイス名が異なることに気付きました (ドライバーに依存すると思われます)。

  • *BSD がネットワーク インターフェイスにドライバー固有の名前を使用するのはなぜですか?
  • これは、カーネル内に「汎用ネットワーク インターフェイス」を記述する抽象化レイヤーが存在しないために、各ドライバーが独自の API を介して内部的にアドレス指定されることを意味しますか?
  • リンクアグリゲーション、トラフィックシェーピング、QoSなどのサブシステムにどのように影響するか(アルトク)、フィルタリングなどはどうでしょうか?

正確には、pfSense では、リンク アグリゲーション (LAG) 仮想インターフェイスで ALTQ を使用できないようです。

これは適切な抽象化レイヤーがないため BSD の内部制限なのでしょうか?

答え1

*BSD がネットワーク インターフェイスにドライバー固有の名前を使用するのはなぜですか?

これは単なる歴史的な選択です。名前の文字はカードと通信するドライバーから取得されるため、同じドライバーを使用する場合、2 つの異なるインターフェイスで同じになります。

実用的な利点が1つあります。BSDでは、ネットワークドライバにはセクション4に独自のマニュアルページがあります。つまり、dc(4)ネットワーク アダプタを制御する DEC 21143 ドライバについて説明しますdc0

ハードディスクなど、BSD Unix の他の部分でも同様の現象が見られます。

これは適切な抽象化レイヤーがないため BSD の内部制限なのでしょうか?

いいえ。

参考までに、Linuxも同様の道を歩んでいるネットワークが複雑になるにつれ、イーサネット アダプタの命名規則が単純な時代は終わりつつあります。

答え2

汎用名またはドライバー固有の名前の使用の選択は、ドライバーの制限とはまったく関係ありません。

これは主に見た目上の選択です。汎用名を使用すると、ほとんどの場合無関係な情報を非表示にできるという利点があります。ネットワーク インターフェイスは、誰が作成したかに関係なく、ネットワーク インターフェイスです。デバイスの機能は、使用されているドライバーではなく、正確なモデルとその構成によって異なります。特定の名前の利点は管理者向けです。エラー メッセージに (では、どれが 0 でどれが 1 か) と記載されている場合、(ああ、それは WiFi インターフェイスです) または(ああ、それは Broadcom インターフェイスです)eth0と記載されている場合よりも情報量が少なくなります。wlan0bcm0

FreeBSDでは、ネットワーク設定操作は次のように呼び出されます。ioctlUnix ソケット上。この ioctl は汎用ネットワーク コードによって処理され、ioctl がこれを呼び出すと関連するドライバーに伝達されます。

ALTQがリンクアグリゲーションとどのように相互作用するかはわかりません。最新バージョンのFreeBSDを使用してください。以前は機能しなかったが、今は機能する

答え3

どのネットワーク カードと通信しているかが簡単にわかります。

Intel (igb0) NIC と Realtek (rl0) NIC をお持ちの場合は、すぐに区別できるようになります。

また、ドライバーが異なればサポートされる機能も異なります。 をサポートするドライバーもあればpolling、 をサポートしないドライバーもあります。LROTSOなどをサポートするドライバーもあります。RSSすべてに という名前が付けられていない場合、どれがどれをサポートしているかを追跡しやすくなりますeth

eth他の種類のネットワーク インターフェイスが多数ある場合は意味があるかもしれませんが、そのようなことはめったにありません。

答え4

*BSD がネットワーク インターフェイスにドライバー固有の名前を使用するのはなぜですか?

簡単に言うと、bge0マニュアルをご覧いただくか、記憶リンクシステムこのドライバーはBroadcom ギガビット イーサネットこれドキュメントも役に立ちます。

これは、カーネル内に「汎用ネットワーク インターフェイス」を記述する抽象化レイヤーが存在しないために、各ドライバーが独自の API を介して内部的にアドレス指定されることを意味しますか?

ここでのルールは次のとおりです。

  • ドライバーの名前を使用してデバイス名を作成します。
  • 最も小さい PCI ID を使用して、デバイス名の直後の番号を作成します。

抽象化レイヤーは必要ありません。とても簡単です。

リンク アグリゲーション、トラフィック シェーピング、QoS (ALTQ)、フィルタリングなどのサブシステムに (どのように) 影響しますか?

インターフェース名はトラフィックシェーピングに干渉してはなりません。

正確には、pfSense では、リンク アグリゲーション (LAG) 仮想インターフェイスで ALTQ を使用できないようです。

今日はうまくいくはずです:

これは適切な抽象化レイヤーがないため BSD の内部制限なのでしょうか?

これを処理するための適切なレイヤーがないわけではありません。他のリソースを使用してこれらの名前を処理できるからです。インターフェース名の作成/etc/rc.conf)、 またはPCI IDを変更するマザーボードの設定について。そして、この質問で他の人が言ったように、Linux もこの方向に進んでいますbiosdevname

関連情報