Ethernet over USBは、 USBリンクをEthernetネットワークの一部として使用し、 PCIやPCIeなどの代わりに USB 経由で Ethernet 接続を実現します。
USB over Ethernet ( USB over NetworkまたはUSB over IPとも呼ばれる) は、USB ベースのデバイスを Ethernet、 Wi-Fi 、またはインターネット経由で共有し、ネットワーク経由でデバイスにアクセスできるようにするシステムです。USB over Ethernet ハブを使用することで、複数のネットワーク デバイス間でこれを実行できます。
プロトコル
USB 経由のイーサネット スタイルのネットワークには、多数のプロトコルがあります。これらのプロトコルを使用すると、ビデオやMTP (メディア転送プロトコル)などの特殊なプロトコルの代わりに、アプリケーションに依存しない USB デバイスとのデータの交換が可能になります。USB は物理的なイーサネットではありませんが、すべての主要なオペレーティング システムのネットワーク スタックは、特定の基盤となるトランスポートを必要とせずにIEEE 802.3フレームを転送するように設定されています。
主な業界プロトコルは、リモート NDIS (RNDIS、Microsoft ベンダー プロトコル)、イーサネット コントロール モデル (ECM)、イーサネット エミュレーション モデル (EEM)、およびネットワーク コントロール モデル (NCM) です。最後の 3 つは、USB Implementers Forum (USB-IF) のより大規模なCommunications Device Class (CDC) プロトコル グループの一部です。これらは、USB-IF (下記参照) からダウンロードできます。RNDIS 仕様は、Microsoft の Web サイトから入手できます。デファクトスタンダードに関しては、ECM などの一部の標準では、初期のシステムになかった USB リソースの使用が指定されています。ただし、標準サブセットを少し変更するだけで、このようなプラットフォームで実用的な実装が可能になります。驚くべきことに、最新のプラットフォームでも、若干の調整が必要なため、これらのサブセットのサポートが依然として必要です。
これらのプロトコルのうち、ECM は最も単純なものとして分類できます。つまり、フレームは変更されることなく 1 つずつ送受信されるだけです。これは、64 バイト パケットを使用する USB 1.1 システム (プロトコルが発行された時点での最新システム) では満足できる戦略でしたが、512 バイト パケットを使用する USB 2.0 システムでは満足できませんでした。
重大な問題の 1 つは、イーサネット フレームのサイズが約 1500 バイト (USB 2.0 パケット約 3 個、USB 1.1 パケット約 23 個) であることです。USB システムは、各パケットが転送として送信されることで機能します。転送は、短いパケットまたは特別な ZLP (ゼロ長パケット) で終了する最大長パケットのシリーズです。この後、バス レイテンシが発生し、別の転送を開始できるまで何も送信されません。これによりバスの占有率が低下し、バス時間のかなりの部分で何も送信されないことになります。23 フレームごとのギャップは目立ちませんが、3 フレームごとのギャップはスループットに非常に大きな負担がかかると考えられます。
USB が高速化するにつれて、デバイスが利用するデータ量が増え、デバイスに保存するかワイヤレス リンクを介して中継するかのいずれかの方法で大量のデータを送信する需要が高まっています ( 3GPP Long Term Evolution を参照)。
これらの新しいデバイスは、デスクトップ PC に比べて消費電力がはるかに低いため、デバイス上の DMA リソースを最大限に活用し、データのコピー (ゼロコピー) を最小限に抑える (または排除する) ために、慎重なデータ処理の問題が生じます。NCM プロトコルには、これに関する詳細な規定があります。プロトコルの比較については、以下のリンクを参照してください。
Linux専用ドライバー
Linux の USB-eth モジュールは、それを実行するコンピューターを、USB を物理媒体として使用するイーサネット デバイスのバリエーションにします。これにより、Linux ネットワーク インターフェイスが作成され、IP アドレスを割り当てることができ、それ以外は実際のイーサネット インターフェイスと同じように扱うことができます。実際のイーサネット インターフェイスで動作するアプリケーションは、適切なイーサネット ハードウェアと不適切なイーサネット ハードウェアの区別がないため、変更せずに USB-Ethernet インターフェイスで動作します。[1] [2]
Linuxホストでは、対応するEthernet-over-USBカーネルモジュールはusbnetと呼ばれます。Bahiaネットワークドライバー[3]は、Win32ホストで使用できるusbnetスタイルのドライバーです。
このアプローチにより、通信ハードウェアが非常に限られているデバイスでも IP ネットワーク上で動作できるようになります。iPAQの Linux カーネルでは、 iPAQ ハードウェアにはアクセス可能なレガシー (RS-232/ RS-422 ) シリアル ポートも専用のネットワーク インターフェイスも ないため、この通信戦略のみが使用されます。
参考文献
- ^ Embedded.com—Linux ベースの USB デバイス
- ^ 「USB デバイス ネットワーキングの使用方法 | Linux USB ネットワーク」。developer.ridgerun.com。2018年 8 月 13 日。2022 年 10 月 17 日閲覧。
- ^ BND—バイアネットワークドライバー
外部リンク
- イーサネット エミュレーション モデル デバイス 1.0 の CDC サブクラス仕様
