私が理解しているように、Infinibandネットワークのサブネットマネージャーは、ネットワーク上のノードの各ペア間の最適なルートを計算し、ノードが通信するときにこれらのルートをノードに提供します。サブネットマネージャー(特にOpenSM)にこれらのルーティングテーブルを人間が読める形式で印刷させる方法はありますか?
現時点では、これは純粋に私自身の好奇心のためですが、これがデバッグに役立つ場合を想像することができます。
OpenFabricsのinfiniband-diagsパッケージには、「ibroute」と呼ばれるツールが付属しており、要求どおりの処理を実行できます。 infiniband-diagsには、ibrouteをラップアラウンドし、ファブリック内のすべてのスイッチのルーティングテーブルを出力する「dump_lfts.sh」というスクリプトがあります。
さらなるデバッグ/ルーティング分析のためにこれらをラップする他のスクリプトがありますが、それは別の答えのために残しておきます。
更新:
同僚は、OpenSMにもこれを行うメカニズムがあることを思い出しました。個人的には使用していませんが、完全を期すために、OpenSMのマンページの関連部分を以下に示します。
スイッチリッドマトリックス(別名min Hopsテーブル)をファイルにダンプし、後でこれらをロードする機能もサポートされています。
使用法は、lftsファイル(「file」ルーティングエンジンによって導入された)からロードするユニキャスト転送テーブルに似ていますが、新しいリッドマトリックスファイル名は-Mまたは--lid_matrix_fileオプションで指定する必要があります。例えば:
opensm -R file -M ./opensm-lid-matrix.dump
ダンプファイルの名前はopensm-lid-matrix.dumpで、OSM_LOG_ROUTINGロギングフラグが設定されている場合、標準のopensmダンプディレクトリ(デフォルトでは/ var/log)に生成されます。
ルーティングエンジンの「ファイル」がアクティブ化されているが、lftsファイルが指定されていないか、開くことができない場合、デフォルトのリッドマトリックスアルゴリズムが使用されます。
Dump_lfts.sh出力と互換性のあるファイルを生成するスイッチ転送テーブルダンパーもあります。このファイルは、「ファイル」ルーティングエンジンによってロードされるテーブルを転送するための入力として使用できます。オプション-Uと-Mの両方または一方を-Rファイルと一緒に指定できます。
コマンド
ibdiagnet --routing
すべてのスイッチのユニキャストルーティングテーブルを含むファイル/var/tmp/ibdiagnet2/ibdiagnet2.fdbs
と、すべてのスイッチのマルチキャストルーティングテーブルを含むファイル/var/tmp/ibdiagnet2/ibdiagnet2.mcfdbs
を作成します。解釈を容易にするために、UNREACHABLEで終わるすべての行を削除する必要があります。