要約
- RFC 3366は、リンク層ARQの持続性を、あきらめるまでにフレームの回復へ費やす時間の予算として扱った。信頼性が無料で増えるという話ではない。
- 再送は一つのフローを助ける一方、経路全体の遅延、ジッター、後続パケットの滞留を増やすことがある。フレームACKは、アプリケーションへの時間内の配送を証明しない。
フレームはパケット全体ではない
話はIPより下の層から始まる。自動再送要求(Automatic Repeat reQuest、ARQ)は、欠落または破損したリンクフレームを検出し、再送する。リンクの方式によって、フレームはIPパケットの一部、パケット全体、あるいは複数のパケットの断片を運ぶ。リンクACKが答えるのは、「このリンクプロトコルの条件でフレームを受理したか」という狭い問いだ。パケットが端から端まで届いたことも、アプリケーションがまだ使える時刻に届いたことも保証しない。
Best Current Practice 62として公開されたRFC 3366は、この境界を設計者に意識させた。特定の無線方式を定義したり、試行回数を一律に命じたりする文書ではない。リンク内の回復ループが、その上を流れるインターネット通信にどう作用するかを説明する。
再送予算が使うのは共有された時間
RFCは、再試行を続ける意欲を「持続性」と呼ぶ。リンクは試行回数を固定できるし、タイマーやリンク障害の判定で打ち切りを決めることもできる。回数は時計ではない。伝搬時間、共有媒体でのバックオフ、キュー、フレーム長、処理が経過時間を左右する。
だから信頼性には条件が付く。ローカルなリンク制御ループはTCPの端から端までのループより速く、送信側が再送する前にチャネルエラーを直すことがある。だが、回復したフレームの到着が遅れて、トランスポートのタイマーに影響する場合もある。順序を保つリンクでは、まだ再送中のフレームの後ろで、すでに完全に受信したパケットが止まることがある。共有チャネルでは、その試行が他のノードの送信時間も消費する。
「完全な持続性」は対比を明確にする。受信側がまだフレームを受け取れる可能性があれば、無期限に再送し続ける。確実な配送が目的の転送なら有用かもしれない。しかし複数リンクを通る経路では、何度もの回復が端点間の機能と重複しうる。端末間トランスポートと同じ信頼性を保証するものでもない。ストリーミングなど時間に敏感なUDP通信では、遅れて届くパケットが、欠落したパケットより役に立たないこともある。
リンクが安全に分かること、推測すべきでないこと
「信頼性が必要そうな」通信だけ再送を長くする発想は自然に見える。RFC 3366は、観測だけでは不十分だと説明する。リンクは輻輳制御の挙動を見ても、アプリケーションの締切や、完全性と新しさのどちらが重要かを知らないかもしれない。ポート番号は誤解を招き、アドレス変換で変更されることもある。トンネルは異なるフローを一つにまとめ、暗号化は内容の検査を妨げ、サービス標識は上書きされたり、ローカルな意味しか持たなかったりする。
したがって勧告は条件付きだ。サービスクラスを安全に識別できるなら、異なる再送方針が役立つことがある。できなければ全フローが同じリンク挙動を受ける。安全な分類が困難なリンクでは、BCPは概して低い持続性を勧める。一つの未完了パケットが後続をいつまでも塞がないようにしつつ、回復できるフレームは回復する。文書は例外も残す。エラー率が大きく変わる条件や一時的な停止からの復旧では、高い持続性がTCPに有利な場合がある。万能の設定はない。
2004年のRFC 3819は、より広いサブネット設計の指針として、損失、平均遅延、遅延の変動という三つのコストの関係に議論を広げた。そこでも柔軟性が重視されるが、RFC 3366の「2〜5回」という例が現代の一律ルールや導入実態の計測に変わるわけではない。
ACKはリンク内の受領証
RFC 3366の教訓は性能だけでなく、証拠の層にもある。フレームACKが記録するのはローカルな出来事だ。パケットがリンクを出たこと、トランスポートがデータを受け入れたこと、アプリケーションが間に合う時刻に受け取ったことは後続の別々の出来事であり、それぞれに証拠が要る。再送はチャネル起因の損失を減らす一方、ジッターを増やし、輻輳情報を遅らせ、他フローの時間を奪うことがある。
設計者が決めるのはローカルな予算で、その影響は経路全体に積み重なる。経路の残りやアプリケーションの鮮度要件を知らない装置が、「試行を増やす」ことを「サービス改善」の保証に変えることはできない。BCP 62は、その不確実さを信頼性というラベルの下に隠さず、設計に含めるよう求めた。
出典
- RFC 3366 / BCP 62 — Advice to Link Designers on Link ARQ
- RFC 3366のメタデータと公開状況
- IETF DatatrackerのRFC 3366記録
- RFC 3819 — Advice for Internet Subnetwork Designers
- RFC 3155 — 損失のあるリンクでのTCP端末間動作
- RFC 3135 — パフォーマンス向上プロキシ
- RFC 5681 — TCP輻輳制御
- RFC 6298 — TCP再送タイマーの計算
- RFC 8985 — RACK-TLP損失検出
- RFC 2475 — DiffServアーキテクチャ
- RFC 3260 — DiffServ用語と明確化
- RFC 2406 — IPsec Encapsulating Security Payload
- RFC 3022 — 従来型IPネットワークアドレス変換
- RFC 3935 — IETFの使命声明
- Lu Heng, “Running-Code Primacy”
- Lu Heng, “Reality Layers”
Lu HengはRFC 3366の著者ではない。これらのエッセイは、勧告、稼働中の実装、設定、観測結果を分けるための分析視点として明示している。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
