「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2025.01.11
XML
カテゴリ: ネットワーク


**TCPの輻輳制御アルゴリズム**は、ネットワークの輻輳を回避し、TCP接続におけるデータ送信の効率を最大化するための重要な機能です。TCP(Transmission Control Protocol)は、信頼性の高いデータ転送を保証するため、送信するデータ量をネットワークの状態に応じて調整します。輻輳制御アルゴリズムは、パケットロスや遅延を検出し、それに応じて送信のレートを調整します。


以下は代表的なTCPの輻輳制御アルゴリズムです。



スロースタートは、TCP接続の開始時に適用されるアルゴリズムで、最初は送信ウィンドウサイズを小さく設定し、輻輳を避けながら徐々に送信量を増加させます。


- **送信ウィンドウサイズ**(`cwnd`)は、初めは1 MSS(最大セグメントサイズ)から始まり、毎回の応答(ACK)の受信ごとに倍増します。

- 送信ウィンドウサイズが急激に増えるため、ネットワークが輻輳していない限り、効率的に帯域幅を使用できます。


### **2. 輻輳回避(Congestion Avoidance)**

スロースタートが進むと、送信ウィンドウのサイズは非常に大きくなり、ネットワークの輻輳が発生する可能性が高くなります。そのため、スロースタートの後に輻輳回避アルゴリズムに移行します。


- **増加方式**:`cwnd`の増加率は、スロースタートの倍増から、より緩やかな線形増加に変更されます。通常、1 MSSの増加で1ラウンドトリップタイム(RTT)ごとに増加します。

- この段階では、ウィンドウサイズの増加が控えめで、輻輳を避けることが目的です。


### **3. 減衰(Congestion Detection)**

ネットワークで輻輳が発生した場合、TCPは輻輳を検出して送信ウィンドウを調整します。


- **パケットロスの検出**:TCPは、パケットが消失した場合、3重確認応答(Triple Duplicate ACK)やタイムアウトを使用して輻輳を検出します。

- **3重確認応答**:同じACKが3回受信されると、パケットロスが発生したと見なし、`cwnd`を半分に減少させ、スロースタートに戻ります(**高速回復**)。

- **タイムアウト**:タイムアウトが発生した場合、`cwnd`を1 MSSにリセットし、再度スロースタートを行います。


### **4. 高速回復(Fast Recovery)**

TCPは、パケットロスを検出した場合でも、すぐにスロースタートに戻るのではなく、一定の回復手順を実行します。これを高速回復と呼びます。


- パケットのロスを3重確認応答で検出した場合、`cwnd`を半分に減らし、その後、送信ウィンドウサイズを徐々に回復させます。

- 高速回復の最中に送信ウィンドウが拡大することなく、慎重に進み、ネットワークの状態を再評価します。


### **5. 高速再送(Fast Retransmit)**

TCPでは、パケットロスが発生した際に、失われたパケットをすぐに再送するためのメカニズムとして高速再送を使用します。


- **3重確認応答**を受信した時点で、失われたパケットをすぐに再送します。これにより、タイムアウトを避け、再送の遅延を最小限に抑えます。


### **6. CUBIC(キュービック)**

CUBICは、特に高帯域幅・高遅延のネットワークにおいて使用される、Linuxなどで採用されているアルゴリズムです。


- CUBICは、送信ウィンドウサイズをキュービック関数に基づいて調整します。具体的には、スロースタートと輻輳回避をよりスムーズに行い、ウィンドウの増加を非線形で行います。

- 高帯域幅ネットワークにおいて、パフォーマンスが向上するよう設計されています。


### **7. BBR(Bottleneck Bandwidth and RTT)**

BBRは、Googleが開発した新しい輻輳制御アルゴリズムで、遅延と帯域幅を利用して最適な送信速度を決定します。


- BBRは、ネットワークの帯域幅とRTT(ラウンドトリップタイム)を測定し、それをもとに送信ウィンドウを調整します。輻輳を回避しながら、できるだけ効率的に帯域幅を使用することが目標です。

- BBRは従来のアルゴリズムと異なり、パケットロスがなくてもウィンドウサイズを調整できる特徴を持っています。


### **まとめ**

TCPの輻輳制御アルゴリズムは、ネットワークの状態に応じて送信ウィンドウを動的に調整し、ネットワークの輻輳を回避することを目的としています。代表的なアルゴリズムには、スロースタート、輻輳回避、減衰、急速回復、BBRなどがあります。これらのアルゴリズムを駆使することで、効率的で信頼性の高いデータ転送が可能になります。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2025.01.11 14:09:16


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: