二つの図は、それぞれ別のパケットを描いているかもしれないため、どちらも正しく、違って見えることがある。ネゴシエーションメッセージとアプリケーションデータのパケットは、同じセッションの内部でも同じレイアウトを共有せず、トランスポートモードとトンネルモードも同様だ。どちらがどのパケットとどのモードを表しているかを示さずに図を比べると、本来は一致するはずのないヘッダーについての議論になる。比較を始める前に四つのラベルがこれを確定させる。

それぞれの図の脇に、実装とモード、チャネル、外側のトランスポート、運ばれるペイロードを書き添える。

トランスポートモードとトンネルモードはヘッダーを異なる形で移動させる

トランスポートモードでは、ESPはIPヘッダーの後ろ、運ばれるプロトコルの前に位置するため、元のIPヘッダーは保護の外に残る。トンネルモードでは、新しい外側のIPヘッダーが二台のIPsecピアを宛先とし、保護された内側のパケットは自身のIPヘッダーを保つ。どちらもRFC 4303で定義されており、どちらもそのモードにとって正しい。トレーラーと整合性フィールドを省いた簡略図は配置の説明には向くが、バイト数の計算には使えない。

トランスポートは、特にTCPやUDPを意味するわけではない。運ばれる次層のプロトコルは何でもよく、トランスポートモードを一つのプロトコルと同一視する図は、ある前提を黙って足している。

制御メッセージはデータメッセージではない

L2TPは、PPPフレームを運ぶデータメッセージと、トンネルとその呼を設定・維持・切断する制御メッセージという二種類のメッセージを分けている。制御チャネルは信頼できるが、失われたデータメッセージはL2TPが再送しない。したがってPPPを含む図は、データメッセージが運ぶペイロードを表しているのであり、保護されたすべてのセッションが備えるべきヘッダーを表しているのではない。L2TPを保護と組み合わせると、選んだセキュリティ構成が上に加わるだけで、すべてのメッセージが同一になるわけではない。

図が二種類のメッセージは同じに見えると主張しているなら、それは別のプロトコルか別の範囲を描いている。

等価なキャプチャ地点を比べる

外側のインターフェースでのキャプチャは保護とトランスポートのヘッダーを示し、カプセル化解除の後に取った内側のキャプチャは運ばれるパケットを示す。どちらも誤りではなく、一方を他方と比べるとヘッダーが欠けているか重複しているように見える。NAT通過のために定義されたUDPカプセル化は、ネイティブESPの図にはない外側の層をもう一つ加える。二つの図は、異なるトランスポート構成の妥当な記述でありうる。

図とともにキャプチャ地点を明記し、等価なモードの等価なメッセージを比べる。ヘッダーの欠落が障害の証拠になるのは、二つの図が同じ地点と同じパケット種別を主張している場合だけだ。

ラベルは図と一緒に保つ

ラベルのない図は、次の読み手が自分なりの前提を持ち込むため、早く古びる。四つのラベルを加え、保護の境界を示し、その図が配置のためか寸法のためかを記す。寸法のためなら、略図ではなく完全な仕様を使う。ラベルの代償は一分であり、それが防ぐ議論の代償は半日だ。

二つの文書が一致しないときは、まずそのラベルを比べる。モードやチャネルの水準での不一致は違いを完全に説明しており、実際にはどのヘッダーも欠けていない。

図がどのパケット、どのモード、どのキャプチャ地点を示しているかを記録する。その記録が図のもう半分だ。

関連記事