付録 A. 強いパケット保存境界 (Strong Packet Conservation Bound)
強いパケット保存境界 (Strong Packet Conservation Bound) は、PRR-CRB に対して確立できる形式的な特性です。これは、リカバリ中のすべての条件とイベントシーケンスにおいて、PRR-CRB が送信されるデータを受信者に配信されたデータ量以下に厳密に制限することを述べています。
A.1. 形式的定義 (Formal Definition)
次のように定義します:
- D(t) = 時刻 t で受信者に配信された累積データ
- S(t) = 時刻 t でリカバリ中に送信者が送信した累積データ
- R = リカバリ開始時の inflight の初期値 (RecoverFS)
すると、PRR-CRB は以下を保証します:
S(t) - S(0) ≤ D(t) - D(0)
これはリカバリフェーズ中のすべての t に対して成り立ち、S(0) および D(0) はリカバリ開始時の値です。
A.2. 直感的理解 (Intuition)
強いパケット保存境界は、リカバリ中に以下を保証します:
-
配信されたデータを超えるバースト送信なし: 送信者は、受信者に配信されたことが確認されたデータ量を超えて、ネットワークに新しいデータを送信することは決してありません。
-
一定のキュー長特性: クロストラフィックのないボトルネックに定常キューが存在する場合、キューはリカバリ期間中、パケットの到着時刻と出発時刻の差による ±1 セグメントの変動を除いて、完全に一定の長さを維持します。
-
セルフクロッキングの保持: この境界は、Van Jacobson のパケット保存原理を最も強い形で保持します - 配信された各パケットは、最大で1つのパケットの送信をトリガーします。
A.3. 数学的証明概要 (Mathematical Proof Sketch)
PRR-CRB は不変条件を維持します:
prr_out ≤ prr_delivered
inflight ≤ ssthresh の場合、PRR-CRB は以下を計算します:
SndCnt = MAX(prr_delivered - prr_out, DeliveredData)
これにより以下が保証されます:
- 基本ケース
prr_delivered - prr_outが保存境界を維持 DeliveredData項が前進を保証- 最終的な
MIN(ssthresh - inflight, SndCnt)クランプがターゲットウィンドウの超過を防止
A.4. ネットワーク動作への影響 (Implications for Network Behavior)
キュー安定性 (Queue Stability)
強いパケット保存境界の下では:
- 安定したボトルネックキュー: フローがボトルネックに定常キューを持つ場合、PRR-CRB はリカバリ中にそのキューを増加させません
- 輻輳増幅なし: リカバリは既存の輻輳を悪化させません
- 予測可能な動作: ネットワークオペレータは最悪ケースのキュー占有について推論できます
トレードオフ (Trade-offs)
強いパケット保存境界は強い保証を提供しますが:
利点:
- 再送信による輻輳崩壊を排除
- 予測可能で保守的な動作を提供
- キュー安定性を維持しながら前進を保証
欠点:
- 一部のシナリオでは過度に保守的になる可能性があります (セクション 7 およびセクション 8 の例を参照)
- 実際の損失がターゲットウィンドウ削減を超える場合、より長いリカバリ時間につながる可能性があります
- リカバリ中に利用可能な帯域幅を十分に活用できない場合があります
A.5. PRR-SSRB との関係 (Relationship to PRR-SSRB)
PRR-SSRB は、ACK ごとに1つの追加セグメントを許可することで (SafeACK が真の場合)、強いパケット保存境界をわずかに緩和します:
SndCnt = MAX(prr_delivered - prr_out, DeliveredData) + SMSS
これは、PRR-SSRB が一時的に厳密な境界を最大で以下だけ違反できることを意味します:
(ACK の数) × SMSS
ただし、この違反は有界で制御されています:
inflight < ssthreshの場合にのみ発生- SafeACK が良好なリカバリ進行を示す場合のみ
- 通常、最小限のリスクでより速いリカバリをもたらします
A.6. 歴史的背景 (Historical Context)
強いパケット保存境界は、Van Jacobson の元のパケット保存原理 [Jacobson88] を形式化し強化したものです。元の原理では「損失と推定される」パケットがネットワークを離れたと見なすことが許可されていましたが、強い境界は実際に受信者に配信されたパケットのみをカウントします。
このより厳格な解釈により、以下が保証されます:
- pipe 計算の推定誤差がバーストを引き起こさない
- 並び替えの下でもアルゴリズムが保守的なままである
- リカバリ動作が実際の受信者フィードバックに基づいて自己修正される
A.7. 実践的考慮事項 (Practical Considerations)
実装上の注意 (Implementation Notes)
実装者は以下に注意する必要があります:
- 境界は概念的アルゴリズムに適用されます; 実装の最適化は特性を保持する必要があります
- (セグメントカウントではなく) バイトカウントは、より良い粒度を提供し、ACK 分割攻撃に対する防御を提供します
- 境界は、他の推定器 (pipe、cwnd など) の精度に関係なく成立します
パフォーマンスへの影響 (Performance Implications)
実際には:
- PRR-CRB の厳格な境界は、重度の損失シナリオでは過度に保守的である可能性があります
- 適応的な SafeACK ヒューリスティック (PRR-SSRB への切り替え) は、より良い実世界のパフォーマンスを提供します
- 境界の価値は、すべてのケースで最適なパフォーマンスを提供することではなく、安全性の保証を提供することにあります
A.8. 形式的不変条件 (Formal Invariants)
PRR-CRB は、リカバリ全体を通じて以下の不変条件を維持します:
不変条件 1 (保存):
prr_out ≤ prr_delivered
不変条件 2 (ターゲット収束):
lim (prr_out) = ssthresh
t→end
(最小限の損失とアプリケーションストールがないと仮定)
不変条件 3 (単調性):
prr_delivered(t₁) ≤ prr_delivered(t₂) すべての t₁ < t₂ に対して
prr_out(t₁) ≤ prr_out(t₂) すべての t₁ < t₂ に対して
これらの不変条件により以下が保証されます:
- 前進 (単調性)
- 保存 (不変条件 1)
- 正しい最終状態 (不変条件 2)
A.9. 結論 (Conclusion)
強いパケット保存境界は PRR-CRB に厳密な基盤を提供し、TCP リカバリが既存の輻輳を増幅しないことを保証します。PRR-SSRB と SafeACK ヒューリスティックはより良いパフォーマンスのためにこの境界を緩和しますが、強い境界は最悪ケースのシナリオでも安全な動作を保証する重要な理論的ベースラインであり続けます。