2.1. Use of Retransmission Timers (再送タイマの使用)
2.1. Use of Retransmission Timers (再送タイマの使用)
IKE のすべてのメッセージはリクエストとレスポンスの対で存在する. IKE SA のセットアップは通常 2 回の交換からなる. IKE SA 確立後, Security Association (SA) のどちらの端からもいつでもリクエストを開始でき, 任意の時点で複数のリクエストとレスポンスが "飛行中" になりうる. ただし各メッセージはリクエストかレスポンスのいずれかにラベル付けされ, 各交換について SA の一方が initiator, 他方が responder である.
すべての IKE メッセージの対について, タイムアウト時の再送は initiator の責任である. responder は, リクエストの再送を受信しない限りレスポンスを再送してはならない. その場合 responder は, レスポンスの再送を引き起こす範囲を除き, 再送されたリクエストを無視しなければならない. initiator は対応するレスポンスを受信するまで各リクエストを記憶しなければならない. responder は, レスポンス内のシーケンス番号に自身のウィンドウサイズを加えた値以上のシーケンス番号を持つリクエストを受信するまで各レスポンスを記憶しなければならない (2.3 節). メモリ節約のため, responder は数分のタイムアウト後にレスポンスを忘れてもよい. responder が既に忘れたレスポンスに対する再送リクエストを受信した場合, そのリクエストを無視しなければならない (例: 新しいレスポンスの構築を試みてはならない).
IKE は信頼性のあるプロトコルである: initiator は対応するレスポンスを受信するか IKE SA が失敗したと判断するまでリクエストを再送しなければならない. 後者の場合 initiator はその IKE SA およびそれで交渉された Child SA に関連するすべての状態を破棄する. initiator からの再送は元のリクエストとビット単位で同一でなければならない. つまり IKE ヘッダ (IKE SA initiator の SPI 以降) から先はすべてビット同一であり, それ以前 (IP や UDP ヘッダなど) は同一でなくてよい.
IKE_SA_INIT リクエストの再送には特別な扱いが必要である. responder が IKE_SA_INIT リクエストを受信すると, パケットが既存の "half-open" IKE SA に属する再送か (同一レスポンスを再送), 新規リクエストか (新 IKE SA を作成し新しいレスポンスを送る), あるいは IKE_AUTH を既に受信した既存 IKE SA に属するか (無視する) を判定しなければならない.
単一 NAT の背後にいる 2 つの異なるピアが同じ initiator SPI を選びうるため, initiator の SPI や IP アドレスだけではこの 3 ケースを区別するには不十分である. 頑健な responder はパケット全体, そのハッシュ, または Ni ペイロードで IKE SA 検索を行う.
一方向メッセージの再送方針は通常メッセージとはやや異なる. 確認応答が一切送られないため, 一方向メッセージを無意味に再送する理由はない. これらはすべてエラーであるため, "違反" パケットごとに 1 回だけ送り, さらに違反パケットを受信したときだけ再送するのが妥当である. それでもこの種エラーメッセージの再送は制限するのが妥当である.