要約

  • RFC 3234は、中継ボックスの停止を通常のルーター障害とは異なる問題として扱った。別のIP経路で故障を迂回できても、その装置が保持していたセッション状態は自動的に戻らない。
  • 22種類の例示的な分類のうち、著者は16種類をハード状態、21種類を障害時にセッション再起動が必要なものとして数えた。

経路が戻っても会話は戻らない

よくある復旧の図はルーティングから始まる。ルーターが停止し、ネットワークが別経路を選び、パケットが再び往復する。両端は残っているので、セッションも続くように見える。

Brian CarpenterとScott Brimによる情報提供文書RFC 3234は、その直感に境界を引いた。中継ボックス(middlebox)は、通常のIPルーティングを超える経路上の機能を指す。専用の機器だけでなく、別の装置内に仮想的に実装された機能も含む。アドレス変換、フィルタリング、プロキシなどはセッションの終端ではないが、その通信に不可欠なことがある。

中継ボックスが一つのフローを終端し、別のフローを開始するなら、障害の単位は経路図だけでは捉えられない。ルーティングで到達性を戻しても、装置が覚えていた対応付けやセッション状態は復元されない場合がある。道は開通しても、既存の会話は続けられない。

RFC 3234はソフト状態とハード状態を区別した。ソフト状態なら装置がなくてもセッションは性能を落として継続し、必要情報を再構築できる。キャッシュがその例だ。失われても本来は遅くなるだけで、アプリケーションの会話まで切るべきではない。ハード状態は情報を失うと機能も失う。迅速に切り替えるには、待機系に利用可能な状態複製がすでに必要だ。あるいは両端が障害を検知して、待機系を通じて新しいセッションを始める。

これは「予備機を一台用意する」だけの話ではない。ソフト状態は再生成可能性を求める。フェイルオーバーは切り替え先の複製とその鮮度を問う。再起動は両端に旧セッションの終了を認識させ、新たな開始を調整させる。中断と責任の置き場所はそれぞれ異なる。

分類表は調査統計ではない

著者は22種類の中継ボックスを挙げ、16種類がハード状態、21種類が障害時にセッション再起動を要すると数えた。この数字は設計問題を見えやすくするが、著者自身の分類表の集計であり、インターネット全体の導入率や実障害の測定値ではない。RFC 3234は分類に主観が含まれること、完全でも最終的でもないことを明記している。

一方、提案は明快だ。中継機能には障害時の仕組みを明示しなければならない。また、異なるプロトコル層が自動的に協調するとは想定できない。下位層の装置は、アプリケーション層の中継機能が止まったことを知らず、適切な待機系へセッションを動かす方法も持たないかもしれない。

後年のRFC 8517は、運用者の視点から伝送層中心の機能と、アプリケーション障害を診断するためのフロー可視性を扱う。これは問題の文脈を補うが、2002年の分類が現在の導入状況を予測した証明ではない。RFC 1958はアーキテクチャの背景、RFC 1812は標準的なIPv4ルーターの役割を示す。

中継ボックスを一律に善悪で裁くことが教訓ではない。RFC 3234自身、その二分法を退けている。重要なのは、経路の回復とセッションの継続が別の主張だという点だ。到達性の確認だけでは、状態が復旧・複製されたのか、あるいは整合性のある新しいセッションに置き換わったのかは証明できない。

参考資料