2

特定の ipoib IP アドレスに対して、関連する IB ノードがインフィニバンド スイッチに接続されているかどうかを確認する必要があります。

アイデアは、IP パケットが送信される IB ポートの GUID を取得し、ポートが接続/到達可能かどうかを ibnodes のようなコマンドで確認することです。

ユーザー空間Cまたはコマンドラインでこれを実現する方法を知っている人はいますか? 特に、IP を GUID に解決することに興味があります。

ありがとう

4

1 に答える 1

4

ここでの答えは少しトリッキーです。残念ながら、あなたがやりたいことは実際には不可能です。しかし、あなたが本当に何をしたいのか正確にはわからないので、何ができるかを説明しましょう。

IPoIB が IP アドレスを GID に解決する方法は ARP 経由です。イーサネットは ARP にブロードキャストを使用しますが、IPoIB は InfiniBand マルチキャストを使用しますが、どちらの場合も ARP 要求は IP サブネット内のすべてのノードに送信されます。アドレスの実際の所有者は、IPoIB の場合は QP 番号 (気にする必要はありません) と GID であるリンクレベルのアドレスで応答します。

たとえば、IPoIB 経由で 192.168.1.3 に到達できるシステムでは、ip neighコマンドは次のように表示されます。

# ip neigh
192.168.1.3 dev ib0 lladdr 80:00:04:04:fe:80:00:00:00:00:00:00:00:02:c9:02:00:21:70:d1 REACHABLE

その lladdr の最後の 16 バイトは GID です。192.168.1.3 で構成されているリモート システムでは、GID を確認できます。

# cat /sys/class/infiniband/mthca0/ports/1/gids/0 
fe80:0000:0000:0000:0002:c902:0021:70d1

これが役に立たないと思う理由は、IP アドレスに到達できない場合、ARP がアドレスを解決できないため、確認する GID を取得できないためです。IP アドレスと IB ポートの関連付けが固定されていないため、ある意味では、あなたの質問は適切ではありません。必要な IP アドレスを任意の IPoIB インターフェイスに配置し、いつでも変更できます。

于 2012-02-01T18:39:35.557 に答える