# Q&A: Hostping: Diagnosing Intra-host Network Bottlenecks in RDMA Servers
Navigation: [[index]] | [[wiki/sources/@2023__NSDI__Hostping - Diagnosing Intra-host Network Bottlenecks in RDMA Servers|Hostping (source)]]
対応する source ページについての軽い質問と回答を、日付ごとに蓄積するノート。深掘りが必要になった問いは `wiki-thesis` や `wiki-query` へ昇格させ、その旨をここに一行残す。
## 2026-09-14
**Q. binary network tomographyとはなにか?**
**binary network tomography** は、内部の各リンクを直接測る代わりに、複数経路の「正常 / 異常」という二値の測定結果から、どのリンクに障害があるかを逆算する方法だ。CTが断面画像から内部構造を推定するのに似た発想で、ネットワークのパス単位の観測からリンク単位の状態を復元する。
Hostpingでは、RNICと各GPU・メモリノード間のループバックを測り、パスが正常ならその経路上のリンクは正常とみなす。異常パスが複数重なると共通するリンクを障害候補に絞り込み、式 $y_j = \prod_{i: link_i \in path_j} x_i$ で「パスは経路上の全リンクが正常なときだけ正常」と表す。全リンクが正常に見えるのにパスだけ異常な場合はフラッピング候補として `gray` にし、3回連続で確認して確定する。
つまりHostpingは、ホスト内トポロジを一本ずつ計装するのではなく、RNICから各エンドポイントへの経路測定の組合せで障害箇所を推定している。ただしサービストラフィックで混雑していると単純な二値判定が難しいため、同一 `root port` 配下の相対比較とバス使用率監視を併用する。
**Q. binary network tomographyのアルゴリズムを解説して。**
これは、リンクそのものを一本ずつ直接調べるのではなく、経路全体の測定結果からリンクの状態を推定するアルゴリズムだ。「binary」は、各リンクと各経路を正常 / 異常の二値で扱うことを意味する。
1. **状態を二値で表す**。リンク `i` の状態を $x_i \in \{0,1\}$、経路 `j` の状態を $y_j \in \{0,1\}$ とし、`1` を正常、`0` を異常とする。
2. **経路状態をリンク状態の積で表す**。Hostpingでは $y_j = \prod_{i: link_i \in path_j} x_i$ と置くため、経路上のリンクがすべて正常なときだけ経路が正常になり、どれか一つでも異常なら経路全体が異常になる。
3. **複数経路を測定する**。アイドル時に RNIC と各GPU・メモリノード間のループバックを全経路で実行し、各経路の帯域・レイテンシから `y_j` を得る。
4. **正常経路から正常リンクを確定する**。ある経路が正常なら、その経路上のリンクはすべて正常とマークできる。
5. **異常経路から障害候補を絞る**。異常経路上でまだ正常と確定していないリンクを候補として扱い、別の経路の結果や `abnormal_cnt` と突き合わせて、どのリンクが共通して影響しているかを推定する。
例えば、経路A-Bが正常ならAとBは正常である。そのうえで経路A-Cが異常なら、Aは正常と分かっているため、Cが障害候補になる。このように、異なるリンクの組合せを通る経路を比較して、パス単位の異常をリンク単位の候補へ変換する。
Hostpingにはフラッピングへの処理もある。すべてのリンクが正常に見えるのに経路だけが異常な場合は、固定的なリンク障害と断定せず `gray` として保留し、3回連続で同じ状態が出たときにフラッピングするリンクと確定する。
この方法の前提は、測定した経路の正常 / 異常がリンク状態を十分に反映することだ。サービストラフィックで混雑している場合は輻輳でも経路が異常に見えるため、Hostpingは全経路の単純な二値推論ではなく、同じ `root port` 配下の相対比較とバス使用率監視を併用する。
## 出典
- [[wiki/sources/@2023__NSDI__Hostping - Diagnosing Intra-host Network Bottlenecks in RDMA Servers|Hostping]]