通信回線上で輻輳が発生した場合は,ネットワーク機器のどれかのバッファがオーバフローを起こすため,受信側のバッファに格納されるはずのUDPパケットが破棄されます。
輻輳が頻繁に起こる場合は,受信側から見ると連続してパケットロスが発生するため,再送要求の回数が増えます。また,送信側がこの再送要求どおりに再送を行うと,ネットワークのトラフィックをさらに増加させるため,輻輳が解消できません。
そのため,XTCでは送信側が輻輳制御を行うことで輻輳を解消します。なお,輻輳制御は,送信元スレッド単位に行われます。
輻輳制御の開始と終了について説明します。
再送パケット比率が0%→100%→0%と遷移し,かつ,パケットロス上限に70,パケットロス下限に30が指定された場合の輻輳状態の遷移例を次の図に示します。
図2-21 輻輳状態の遷移例
輻輳を検知した直後に輻輳制御を開始します。輻輳制御を開始した時点で仕掛かり中のメッセージについても輻輳制御によって再送します。輻輳制御では,次に示す方法によって,トラフィックを軽減します。