MacBook with USB Type-C Charger and Connector

USB4のルーティング制御について

USB4規格が公開されてから1年余りが経過し、少しずつ対応製品がリリースされています。現時点で対応製品はPCが多いですが、これから周辺機器が増えてくることが期待されます。

そのUSB4ですがこれまでのUSB 3.xやUSB 2.0とは異なることが知られてきているかと思います。

USB 3.x以前でもMSC(Mass Storage Class)やHID(Human Interface Device) Classといった、クラスという形で様々な種類のデータの通信に対応していましたがあくまでもUSB規格の範囲内でした。一方、USB4はプロトコルトンネリングと呼ばれるようにDisplayPort(DP)やPCI Express(PCIe)などのUSB以外の規格をサポートしている点でこれまでのUSBとは思想が異なっています。もっとも、DPやPCIeもUSBと同様にIntel社の影響が強いという点では共通点があります。

ルータとは

USB4では様々な規格に対応するための仕組みが備わっており、そのための重要な構成要素がルータと呼ばれるものになります。ルータはUSB 3.2、DP、PCIeといった規格のデータをUSB4パケットにカプセル化し、それを適切なアダプタまで届けるための要素です。ルータが担っているのはあくまでもデータの中継のみでUSB 3.2、DP、PCIeのコントローラはルータ外に存在していることになっています。(実際のUSB4対応チップとしてはいくつかのコントローラを内蔵したUSB4ルータも登場するのではないかと思います)

将来的にDPやPCIe以外をサポートする予定があるかは不明ですが、理論的には様々な規格に対応できるような拡張性が持たされています。

以下にUSB4機器の接続例を示します。USB4仕様書のFigure5-9をアレンジしたものです。


図1: USB4接続例(画像をクリックすると大きなサイズで開きます)

PCに搭載されているルータXがホストルータと呼ばれ、USB4ハブ、USBメモリ、DPモニタに搭載されているルータA、B、Cはデバイスルータと呼ばれます。ハブルータというものは存在しません。

各ルータにはアダプタと呼ばれるインタフェースが複数用意されており、ルータ外とデータの送受信を行います。例えばルータXのアダプタ2はルータAのアダプタ1とデータを送受信します。ルータAのアダプタ4、5、6は(内蔵の)Enhanced SuperSpeed Hubとデータを送受信します。

アダプタの役割ごとに名称が異なっており、例えば以下のようになっています。

ルータXのアダプタ1: ホストインタフェースアダプタ
ルータXのアダプタ2やルータAのアダプタ1: レーンアダプタ
ルータAのアダプタ4、5、6: USB3アダプタ
ルータCのアダプタ3: DPアダプタ

ルーティング

パケットがどの経路を通るのか制御することをルーティングと呼び、その制御の元となるデータがルーティングテーブルと呼ばれるものになります。ルーティングテーブルはUSB4ホストで動作しているコネクションマネージャが生成します。また、アダプタへの入力ごとにそれぞれ生成されます。


図2: USB 3.2パケットのルーティング例


図3: ルーティングテーブル例

ルーティングテーブルには入力HopID、出力アダプタ、出力HopIDの3つのデータが格納されており、入力HopIDはテーブルを検索するためのインデックスの役割を果たします。


図4: USB4ハブに入力されたパケットのルーティング例

パケットがアダプタに入力されると、アダプタはパケットヘッダ内のHopIDを入力HopIDとしてルーティングテーブルを検索し、入力HopIDに対応する出力アダプタと出力HopIDを割り出します。パケットヘッダのHopIDを出力HopIDに書き換えたうえで出力アダプタへ転送します。

今回の例ではルータAのアダプタ1に入力されたHopID=8のパケットはHopID=10に更新した上でアダプタ3に転送され、さらにルータCのアダプタ1へ入力されます。ルータCのアダプタ1は入力HopID=10で自身のルーティングテーブルを検索し処理を進めます。

HopID=9のパケットはHopID=11に更新されたうえでアダプタ4に転送され、内蔵のEnhanced SuperSpeed Hubに入力されます。パケットはルータAのアダプタ5へ入力され、HopID=12に更新されたうえでアダプタ2を経由してルータBへ送られていきます。

おわりに・USB4接続で問題が発生したときにどうするか

USB4で接続問題が発生した際にルーティングやHopIDの仕様を把握しておくと効率よくデバッグができるかもしれません。

例としては、1. USB4仕様ではHopID=0~7は制御パケットやリンク管理パケットとして予約されており、USB 3.2パケットやDPパケットには割り当てられない、2. アダプタごとに設定可能なHopIDの範囲が決まっており、そこから外れているHopIDのパケットは無視される、といったものがあります。各径路でパケットをキャプチャし、HopID等を確認することでどこでパケットが消えているのかがわかるかもしれません。

しかしながらルーティングテーブルや各アダプタのHopIDを必ずしも知り得るとは限らず、ルーティングのデバッグは基本的に困難と思われるため、やはり認証を取得したルータやコントローラを使用することが推奨されます。こうすることで、問題が発生した場合にはルーティングテーブルの生成やルーティング制御は正しいとの仮定のもとで、物理層に絞ってデバッグを行うことができます。

Check Also

オシロスコープのCSV波形Fileはなぜ大きい? CSV波形FileとBinary波形Fileの構造を詳しく解説します

読者の中に評価でオシロスコープ

Leave a Reply

Subscribe to get MCPC Technical Paper.
Subscribe
close-image
Subscribe to get the UHD Technical Paper.
Subscribe
close-image
Subscribe to get HDMI Technical Paper.
Subscribe
close-image
Subscribe to get Wi-Fi Technical Paper.
Subscribe
close-image
Subscribe to get USB Technical Paper.
Subscribe
close-image