要約
- RFC 7413では、サーバーから得たcookieを持つクライアントがSYNにアプリケーションデータを載せ、サーバーが3ウェイ・ハンドシェイク完了前に処理できる。
- 最大1往復を短縮できる一方、SYNデータは複数回アプリケーションへ渡る可能性があり、重複に耐えられない操作には使えない。
- 実運用では、cookie鍵の更新、未確認要求の上限、経路ごとの失敗記憶、通常のTCPへの復帰までが一つの機能になる。
通常のTCPで最初のパケットが運ぶのは、まず「接続を始めたい」という意思だ。TCP Fast Openでは、その同じSYNが「最初の要求はこれだ」という内容まで運ぶ。cookieが有効なら、サーバーは3番目のハンドシェイク・パケットを待たずに、データをアプリケーションへ渡せる。距離を縮めるのではなく、待つ順番を変える方式である。
RFC 7413は2014年12月、標準化過程のインターネット標準ではなく実験的仕様として公開された。この位置付けは、普及や効果を自動的に証明しない。規定されているのは、以前に接続した相手、SYNに収まる最初のデータ、そして対応する経路という条件がそろったとき、最大1 RTTを省くための仕組みと安全境界である。
最初の接続では、クライアントが空のFast Openオプションでcookieを要求する。サーバーはSYN-ACKに不透明な認証タグを入れて返し、クライアントが保存する。次回の接続で、クライアントはcookieとデータをSYNに載せる。検証に成功すれば、サーバーはSYNとデータを確認し、アプリケーションへ渡し、ハンドシェイク完了前に応答データを送ることもできる。失敗すれば早期データを捨て、SYNだけを確認して通常の手順を続ける。
このcookieは利用者の身元や取引権限を示すものではない。以前にその送信元IPアドレスへ到達できたことを示す、サーバー生成のMACタグである。長さは4〜16バイトで、クライアントは内容を解釈しない。鍵の生成、検証、有効期限はサーバーが管理する。鍵を切り替えれば古いcookieを無効にでき、移行中に複数鍵を受理する設計も可能だ。したがって鍵更新は暗号手順であると同時に、接続成功率を左右する運用手順でもある。
最大の意味上の代償は再実行だ。3ウェイ・ハンドシェイクは、古いSYNや重複SYNを新しい接続から区別する助けになる。Fast Openはその確認が終わる前にSYNデータをアプリケーションへ渡すため、過去の状態が失われた後に古いSYNが届くと、最初のデータが再度処理される可能性がある。RFCはTFOを既定で有効にすることを禁じ、サービス・ポート単位でアプリケーションが明示的に選ぶよう求めている。
ここで冪等性が転送層の前提になる。読み取りなら繰り返しても結果が変わらない場合が多い。一方、課金、作成、状態変更を行う保護されていないPOSTは、一度届いたことを一度だけ実行された保証にできない。アプリケーションの取引IDで重複を見つけることはできるが、Fast Open cookie自体はexactly-onceを提供しない。
サーバー側の費用も早まる。有効なcookieを受けると、送信元がハンドシェイクを完了する前にCPUやメモリーを使い、応答を作り始められる。RFC 7413は未完了Fast Open要求を数え、設定上限を超えたら新しい要求に対してTFOを止めるよう定める。その際は早期データを捨て、通常のSYN処理へ戻す。cookieだけでなく、「信用を止める上限」が防御になる。
エンドポイントの間にある機器も成否を決める。データ付きSYNや未知のTCPオプションを破棄するファイアウォール、中間装置は存在し得る。タイマーが切れたクライアントは、データもFast OpenオプションもないSYNを再送する。早期データが確認されない、ICMPエラーが返る、SYN-ACKが来ない、といった否定的な結果は保存し、該当する送受信アドレスとポートの経路では一時的にTFOを止める。
この失敗記憶がなければ、新しい接続のたびにタイムアウトを支払ってから通常TCPへ戻ることになる。逆に長く記憶しすぎれば、一時障害が恒久的な無効化に変わる。再試行時期と経路単位の状態には、観測可能な寿命が必要だ。
最初のアプリケーション単位が初期セグメントに収まることも条件である。TCPオプションが使う領域と保存済みMSSが上限を決める。残りのデータをハンドシェイク後に待つなら、短縮効果は小さくなる。確立済み接続の再利用も依然として重要で、短命接続を増やすだけでは輻輳制御が働く前に接続が終わり、ネットワーク全体の費用を増やしかねない。
TCP Fast Openの歴史的な価値は、単に接続を速くしたことではない。1 RTTを先取りするために必要な状態を明示したことにある。どのアドレスが到達可能だったか、どのcookieが有効か、どの操作が再実行可能か、未確認の仕事をどこまで許すか、どの経路から撤退するか。これらを測定し、制限し、元に戻せるときだけ、先に届く要求は本当に速い。
Sources
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
