コンテンツにスキップ

FreeBSD/CUBIC Congestion Control Algorithm

出典: フリー教科書『ウィキブックス(Wikibooks)』

CUBIC Congestion Control AlgorithmはTCPの輻輳制御アルゴリズムの一つで、特にFreeBSDで実装されているバージョンについて説明します。

CUBICは、ウィンドウサイズの調整に3次関数を使用することが特徴です。輻輳イベントの発生から次の輻輳イベントまでの時間を基に、ウィンドウ増加率を決定します。これにより、高速かつ高遅延のネットワーク(Long Fat Networks)でも効率的な通信が可能となっています。

FreeBSDでのCUBIC実装は、LinuxのCUBICを基にしていますが、いくつかの最適化が施されています。特にメモリ使用効率の改善と、FreeBSDのネットワークスタックとの統合に焦点が当てられています。ウィンドウサイズの増加は、最後の輻輳イベントからの経過時間に基づいて計算され、3次関数の特性により、輻輳イベント直後は緩やかに、その後急速に、そして輻輳ウィンドウが以前の最大値に近づくにつれて再び緩やかになります。

また、FreeBSDのCUBICは、RTT(往復遅延時間)に依存しない設計となっています。これにより、異なるRTTを持つフローの間での公平性が向上し、特にグローバルなインターネット環境での使用に適しています。さらに、バッファブロート問題への対応も考慮されており、過度なバッファリングを防ぐ機能も備えています。

CUBICは特に、高帯域・高遅延のネットワークでの性能に優れており、データセンター間通信やクラウドサービスなどの現代的なネットワーク環境で広く採用されています。FreeBSDの実装は、これらの特性を維持しながら、システム全体のパフォーマンスと安定性のバランスを考慮した設計となっています。