TL

輻輳制御の公平性とRTT不公平問題

同じ回線でなぜ近いサーバーほど速度が出るのか、その正体が数式で腑に落ちる。AIMDが公平を生む理屈とRTT不公平の構造、CUBIC/BBRの対処を原理から解説します。

応用輻輳制御公平性RTTCUBICBBR最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.AIMD が公平へ収束するのは乗法減少がフロー間の差を比例的に縮めるから。ただし収束先は全フローが同条件のときの「等分」にすぎない。
  • 2.Reno/CUBIC のスループットは RTT に反比例するため、短RTTフローが帯域を多く取る。RTT比 1:2 なら取り分はおおむね 2:1 に偏る。
  • 3.CUBIC は窓更新を実時間の三次関数にして RTT 依存を弱め、BBR はロスでなく帯域・RTT実測で動くため AIMD 由来の RTT 不公平を構造的に回避する。

公平性とは何を等しくするのか

「輻輳制御が公平」と言うとき、まず何を等しくするのかを定義しないと議論が空回りします。ネットワーク研究では主に 2 つの公平性基準が使われます。

  • max-min 公平性: 最も取り分の少ないフローの割り当てを最大化し、それ以上増やすには他の誰かを削るしかない、という状態。直感的な「弱者優先の等分」。
  • 比例公平性(proportional fairness): 各フローの割り当て対数和 Σ log(x_i) を最大化する配分。1 ボトルネックなら等分だが、複数ボトルネックを経由する長経路フローには取り分を少なめに割り当てる。

単一ボトルネックを n フローが共有する素朴なケースでは、両基準とも答えは「容量 CC/n ずつ等分」で一致します。実際の TCP がこの理想にどれだけ近いかを測る物差しが Jain の公平性指標です。各フローのスループットを x_i として (Σx_i)^2 / (n · Σx_i^2) で計算し、値は 1/n から 1 を取ります。全フロー均等なら 1、1 本が独占すれば 1/n です。重要なのは、この指標が「等分からのズレ」を測るのであって、後述するように TCP の収束先がそもそも等分でない条件では、指標が低いこと自体は制御の故障を意味しません。

公平性は効率とトレードオフしうる

比例公平性が長経路フローを冷遇するのは意地悪ではなく、長経路は途中の各リンクで容量を消費するため、そこに多く割り当てると全体スループットが下がるからです。完全な max-min 等分が常に最善とは限らない、という点が設計の出発点になります。

AIMD はなぜ等分へ収束するのか

AIMD(Additive Increase / Multiplicative Decrease)が公平点へ収束する仕組みは、AIMD と輻輳制御の数理 で扱う Chiu-Jain のベクトル図に集約されます。要点だけ再掲すると、加法増加は全フローに同じ量 a を足すのでフロー間の差 x1 − x2 を一定に保ち、乗法減少は同じ率 b を掛けるので差を b 倍に縮めます。輻輳のたびに差が b 倍されて単調に 0 へ向かうため、点は公平線(等分線)へ吸い寄せられます。

ただしこの収束証明には決定的な前提が隠れています。「全フローが同じ a、同じ b、そして同じ RTT を持つ」という同質性です。ベクトル図の「両者に同量 a を加える」という操作が成り立つのは、両フローが同じ実時間内に同じ回数だけ加法増加できる場合に限られます。RTT が違えばこの前提が崩れ、収束先は等分からずれます。これが RTT 不公平問題の数学的な根です。

RTT 不公平の導出

なぜ短い RTT のフローが帯域を多く取るのか。AIMD の定常スループットを表す式から定量的に導けます。Reno の平均スループットは、損失率を p、1 パケットあたりのデータ量を MSS として次の逆数平方根則で近似されます。

スループット ≈ MSS / (RTT · sqrt(2·p / 3))

この式でスループットが 1/RTT に比例する点が決定的です。同じボトルネックを共有する 2 フローは、定常では同じ損失率 p(同じバッファを溢れさせている)をほぼ共有します。すると 2 フローのスループット比は RTT の逆比になります。

x_short / x_long ≈ RTT_long / RTT_short

直感的な理由はシンプルです。加法増加は「1 RTT ごとに窓を a 増やす」制御なので、RTT が半分のフローは同じ実時間に 2 倍の回数だけ窓を伸ばせます。ロス後の回復速度も RTT に律速されるため速い。結果、定常状態の取り分はおおむね RTT に反比例します。

RTT比(短:長)Reno系の帯域比(短:長)Jain指標(2フロー)
1 : 1約 1 : 11.00(完全均等)
1 : 2おおむね 2 : 1約 0.90
1 : 4おおむね 4 : 1 に近づく約 0.74
1 : 1010 : 1 に近づく約 0.60 へ低下

この偏りは制御のバグではなく、AIMD が「窓更新を RTT 回数で刻む」設計の必然的な帰結です。だからこそ、近いサーバーやキャッシュ(CDN)へのフローが、遠隔のフローよりボトルネックで有利になる、という実務上の非対称が生まれます。RTT そのものの構成要素と回線容量の関係は 帯域遅延積(BDP) を、スループットと遅延の基礎は 帯域・レイテンシ・スループット を参照してください。

バッファが深いほど RTT 不公平は悪化する

ロスベース制御はバッファを満杯近くまで埋めて競うため、深いバッファ(バッファ肥大)では実効 RTT が膨らみます。RTT が大きいほど逆数平方根則の分母が増え、もともと不利な長 RTT フローがさらに削られる悪循環になります。AQM でキュー占有を抑えることは、遅延短縮だけでなく RTT 公平性の改善にもつながります(詳細は バッファブロートと AQM)。

CUBIC は RTT 依存をどう弱めるか

CUBIC は窓の増加を「RTT 回数」でなく前回ロスからの経過実時間 t の三次関数で決めます。窓は次の形で更新されます。

W(t) = C · (t − K)^3 + W_max     # K = (W_max · (1 − β) / C)^(1/3)

W_max は前回ロス時の窓、β は減少係数(標準 0.7)、C は積極性を決める定数です。鍵は、増加が経過時間 t の関数であって RTT 回数の関数でないことです。短 RTT フローは 1 秒間に多くの ACK を受け取りますが、窓の到達点は実時間で決まるため、ACK の頻度差がそのまま窓の差に直結しません。これにより RTT 依存性が Reno より弱まり、長 RTT フローも実時間ベースで窓を伸ばせます。

ただし RTT 不公平が完全に消えるわけではありません。CUBIC には実装上、窓が小さい領域で Reno と同等の挙動に切り替える「TCP-friendly region」があり、また ACK クロックそのものは依然 RTT に依存します。CUBIC は不公平を緩和する設計であって根絶ではない、というのが正確な評価です。内部動作は CUBIC の三次関数ウィンドウ制御 にまとまっています。

方式増加の刻みRTT不公平公平性の課題
Reno (AIMD)1 RTT ごとに +1大きい(1/RTT に比例)短RTTが独占しやすい
CUBIC実時間 t の三次関数緩和(実時間ベース)TCP-friendly領域で再発、大BDPで攻撃的
BBRBtlBw×RTprop を直接狙う構造的に小さい最大値推定ゆえの配分偏り、ロスベースと競合時に侵食

BBR は公平性をどう扱うか

BBR はそもそもロスを輻輳信号に使いません。ボトルネック帯域 BtlBw と最小 RTT(RTprop)を直接推定し、その積である BDP ちょうどを送信ペースの目標にします(モデルは BBR の帯域・RTT推定モデル)。逆数平方根則は損失率 p を前提とする式なので、ロスを信号にしない BBR には RTT への 1/RTT 依存がそのままの形では現れません。よって AIMD 由来の RTT 不公平は構造的に回避されます。

しかし BBR が無条件に公平なわけではありません。公平性の課題は別の場所に移動します。

BBRの公平性は別の偏りを抱える

BBRv1 には 2 つの偏りがあります。第一に、複数の BBR フローが同居すると BtlBw を最大値で推定する性質から推定がフロー間で食い違い、帯域配分が偏ることがある。第二に、深いバッファでロスベースと競合すると、BBR はキューを埋めても減速しないため、ロスを待つ CUBIC 側が先に減速して帯域を奪われがちです。これを是正するため、ロス率や ECN も補助信号に取り込む BBRv2/v3 が開発されています。「BBR は RTT 不公平に強いが、全方位で公平ではない」が正確な理解です。

ECN(明示的輻輳通知)を使う系統は、ロスやキュー満杯を待たずにルータがマークを付けるため、信号の発生をバッファ占有から切り離せます。これにより RTT 不公平の悪化要因だった「深いキューでの実効 RTT 膨張」を避けられます(詳細は ECN と L4S)。

まとめと系統的視点

公平性の議論は「何を等しくするか(max-min か比例公平か)」「測る物差し(Jain 指標)」「収束の前提(同質 RTT)」を分けて捉えると見通せます。AIMD の等分収束は同質 RTT を仮定した理想であり、現実の RTT 差は逆数平方根則を通じて構造的な不公平を生みます。CUBIC は実時間ベースで依存を弱め、BBR は信号自体を置換して回避しますが、いずれも別の偏りや競合の課題を残します。何を輻輳信号にするかで挙動が割れる全体像は TCP輻輳制御の系譜 に、競合の時系列観測は 輻輳制御の公平性とバッファ占有の可視化 にあります。

試験・面接で問われる急所

「RTT 不公平の原因は何か」に一言で答えること。答えは「AIMD の加法増加が毎 RTT 刻みなので、スループットが逆数平方根則で 1/RTT に比例し、短 RTT フローが多く取るから」。あわせて「CUBIC は窓更新を実時間 t の三次関数にして RTT 依存を弱める」「BBR はロスを信号にせず BtlBw×RTprop を狙うので AIMD 由来の不公平は出ないが、最大値推定の配分偏りとロスベース競合時の侵食という別課題を持つ」を区別できれば十分です。

ネットワーク Article

輻輳制御の公平性とRTT不公平問題を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

輻輳制御

比較で見る軸

難易度: advanced / カテゴリ: ネットワーク / タグ数: 5

導入後に効く点

Reno/CUBIC のスループットは RTT に反比例するため、短RTTフローが帯域を多く取る。RTT比 1:2 なら取り分はおおむね 2:1 に偏る。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
ネットワーク
タグ数
5

判断チェックリスト

  • 自社の用途が「輻輳制御 / 公平性」に近いか確認する。
  • 強みである「AIMD が公平へ収束するのは乗法減少がフロー間の差を比例的に縮めるから。ただし収束先は全フローが同条件のときの「等分」にすぎない。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

輻輳制御公平性RTTCUBICBBR輻輳制御公平性RTT
参考: 公式情報