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


12

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

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

正確には、pfSenseの下では、リンク集約(LAG)仮想インターフェースでALTQを使用できないようです。

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

回答:


7

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

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

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

これは、ハードディスクなど、BSD Unixの他の部分でも見られます。

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

番号。

Linuxの価値は、同様の道を進んでいます。イーサネットアダプターの単純な命名規則の時代は、ネットワークがより複雑になるにつれて消えています。


ありがとうございました。リンク集約でALTQを使用できない理由を知っていますか?
トーター

質問ごとに1つの質問をお願いします。これをBSDデバイスの命名に焦点を当てましょう。
ウォーレンヤング

BSDへの同様のパスを指定して、新しいudevネットワークデバイスを呼び出すことはありません。私の知る限り、デフォルトの方法は、バス番号を使用してデバイスを識別することであり、ランダムな番号付けスキームを使用したドライバー名ではありません。
パベルシメルダ

@PavelŠimerda:このスキームを使用するLinuxシステムがeth0thruを使用しないことを意味しましたethINFINITY。あなたは、もはや単にタイプすることができなくなりifconfig eth0、あなたがいずれかを必要とするのFreeBSDへのユーザ・インタフェースの観点から機能的に類似なLinuxシステムになり最初のイーサネット・インタフェース、で見ることになりますことを期待先験的の名前の知識をシステム上のインターフェイス、またはifconfig最初に修飾されていないコマンドのリストを取得する必要があります。基になるカーネルメカニズムは、もちろん完全に異なります。
ウォーレンヤング

5

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

それは主に化粧品の選択です。総称名を使用することには、ほとんど常に無関係な情報を隠すという利点があります。ネットワークインターフェースは、誰が作成したかに関係なく、ネットワークインターフェースです。デバイスの機能は、使用されているドライバーではなく、正確なモデルとその構成に依存します。特定の名前の利点は、管理者にとってのことです。エラーメッセージにeth0(わかりました、つまり、どれが0で、どれが1であるか)言及している場合、wlan0(ああ、それはwifiインターフェースです)またはbcm0(ああ、それはBroadcomインターフェース)。

FreeBSDでは、ネットワーク設定操作ioctlはUnixソケットを呼び出すことで機能します。このioctlは汎用ネットワークコードによって処理され、ioctlがこれを要求した場合、関連するドライバーに細流化されます。

ALTQがリンクアグリゲーションと相互作用する方法がわかりません。これは以前は動作しませんでしたが、現在は動作しているため、必ず最新バージョンのFreeBSDを使用してください。


3

どのネットワークカードと通信しているかを簡単に確認できます。

Intel(igb0)とRealtek(rl0)nicをお持ちの場合は、すぐに区別できます。

また、さまざまなドライバーがさまざまな機能をサポートしています。一部のドライバーはサポートpollingしていますが、一部はサポートしていません。いくつかのサポートLROTSOおよびRSSなどのそれらがすべてただ名前が付けられていないときにサポート追跡することが容易ですeth

eth 他の種類のネットワークインターフェースがたくさんある場合は理にかなっているかもしれませんが、そうすることはめったにありません。


+1、私はあなたが誰であるかを知っているからです。:) ポッドキャストをありがとう!
ウォーレンヤング

1

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

物事をシンプルにするため。名前の付いたインターフェイスを見てbge0マニュアルを見るか、ニーモニックリンクシステムを使用すると、このドライバーがBroadcom Gigabit Etherhetであることをすぐに思い出すでしょう。このドキュメントも役立ちます。

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

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

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

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

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

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

正確には、pfSenseの下では、リンク集約(LAG)仮想インターフェースでALTQを使用できないようです。

今日は動作するはずです:

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.