TCP輻輳制御アルゴリズムについての簡単な説明

TCP輻輳制御アルゴリズムについての簡単な説明

最近、TCP/IP プロトコルの学習に時間を費やしました。主な理由は、TCP/IP に関する私の理解が長い間 3 ウェイ ハンドシェイクと 4 ウェイ ブレークアップに限定されていたため、より深い理解を得たいと思ったからです。さらに、TCP/IP および Linux システム レベルの多くの設計をミドルウェア システム アーキテクチャで使用できます。たとえば、TCP 輻輳制御アルゴリズムは、応答時間に基づいてフローを制限するミドルウェアでも使用できます。さらに深いレベルでは、TCP/IP プロトコルなどの基礎知識や原理技術は長い時間をかけてテストされ、先人たちの知恵の結晶であり、多くのインスピレーションと助けをすべての人に提供することができます。

この記事には略語がいくつかあります。スペースの都合上、一つ一つ説明することは不可能です。意味が分からない場合は自分で調べて、積極的に知識を求める人になってください。

TCP プロトコルには、フロー制御とブロッキング制御という 2 つの重要な制御アルゴリズムがあります。

TCP プロトコルは、スライディング ウィンドウを通じてフロー制御を実行し、送信者の送信速度を制御して、受信者が受信して処理する時間を確保します。輻輳制御はネットワーク全体に作用します。過剰なパケットがネットワークに送信されるのを防ぎ、ネットワークの過負荷やネットワークの輻輳を回避します。

輻輳アルゴリズムでは、ステート マシンと 4 つのアルゴリズムを習得する必要があります。輻輳制御ステート マシンには、Open、Disorder、CWR、Recovery、Loss の 5 つの状態があります。 4 つのアルゴリズムは、スロー スタート、輻輳回避、輻輳発生アルゴリズム、高速回復です。

輻輳制御ステートマシン

TCP と同様に、輻輳制御アルゴリズムにもステート マシンがあります。送信者が ACK を受信すると、Linux TCP はステート マシンの状態を使用して、輻輳ウィンドウ cwnd のサイズを縮小するか、cwnd を変更せずに維持するか、または cwnd を増やし続けるかの次の動作を決定します。適切に処理されない場合、パケット損失やタイムアウトが発生する可能性があります。

1 オープン状態

オープン状態は、輻輳制御ステート マシンのデフォルト状態です。この状態では、ACK が到着すると、送信者は、輻輳ウィンドウ cwnd (輻輳ウィンドウ) がスロー スタートしきい値 ssthresh (スロー スタートしきい値) より小さいか大きいかに基づいて、スロー スタートまたは輻輳回避アルゴリズムに従って輻輳ウィンドウを調整します。

2 障害の状態

送信者が DACK (重複確認応答) または SACK (選択確認応答) を検出すると、ステート マシンは Disorder 状態に遷移します。この状態では、送信者はインフライト パケット保存の原則に従います。つまり、古いパケットがネットワークを離れた後にのみ新しいパケットが送信されます。つまり、送信者は古いパケットの ACK を受信した後にのみ新しいパケットを送信します。

3 CWRステータス

送信側が明示的な輻輳通知を受信すると、輻輳ウィンドウ cwnd をすぐに減らすのではなく、ウィンドウ サイズが半分になるまで、受信した 2 つの ACK ごとに 1 セグメントずつ減らします。 cwnd が減少し、ネットワーク内に再送パケットがない場合、この状態は CWR (輻輳ウィンドウ減少) 状態と呼ばれます。 CWR 状態は、回復状態または損失状態に変更できます。

4 回復状態

送信者が十分な数(3 つを推奨)の DACK(重複した確認応答)を受信すると、この状態になります。この状態では、輻輳ウィンドウ cnwd は、cwnd がスロー スタートしきい値 ssthresh と等しくなるまで、受信された 2 つの ACK ごとに 1 セグメントずつ削減されます。スロー スタートしきい値 ssthresh は、回復状態に入ったときの cwnd の半分のサイズです。 送信者は、リカバリ状態に入るときに送信されているすべてのデータ セグメントが正常に確認されるまでリカバリ状態のままになり、その後、オープン状態に戻ります。再送信タイムアウトにより、リカバリ状態が中断され、ロス状態に入る場合があります。

5 損失ステータス

RTO (再送信タイムアウト) が期限切れになると、送信者は Loss 状態になります。送信中のすべてのデータは失われたものとしてマークされ、輻輳ウィンドウ cwnd はセグメントに設定され、送信者はスロー スタート アルゴリズムを使用して輻輳ウィンドウ cwnd を再度増加します。

損失状態と回復状態の違いは、損失状態では、送信者がセグメントに設定した後に輻輳ウィンドウが増加するのに対し、回復状態では輻輳ウィンドウは減少することしかできないことです。 Loss 状態は他の状態によって中断されることはありません。したがって、送信者は、Loss の開始時に送信されていたすべてのデータが正常に確認された後にのみ、Open 状態に戻ることができます。

4つの主要なアルゴリズム

輻輳制御は、主に 1) スロースタート、2) 輻輳回避、3) 輻輳発生、4) 高速回復の 4 つのアルゴリズムで構成されます。これら 4 つのアルゴリズムは 1 日で開発されたわけではありません。開発には長い時間がかかり、現在も最適化が続けられています。

スロースタートアルゴリズム

いわゆるスロースタートとは、TCP 接続が確立された直後に、ネットワーク チャネルの秩序を直接乱さないように、ネットワークの負荷能力をテストするために速度を少しずつ上げることを意味します。

スロースタートアルゴリズム:

1) 接続が確立されると、輻輳ウィンドウ cwnd サイズが 1 に初期化され、MSS サイズのデータ​​が送信可能であることを示します。

2) ACK が受信されるたびに、cwnd のサイズが 1 ずつ増加し、線形に増加します。

3) 往復遅延時間 RTT (ラウンドトリップ時間) が経過するたびに、cwnd のサイズは直接 2 倍になり、2 倍になり、指数関数的に増加します。

4) 上限値である ssthresh (スロー スタートしきい値) もあります。cwnd >= ssthresh の場合、「輻輳回避アルゴリズム」が開始されます (このアルゴリズムについては後で説明します)

混雑回避

前述のように、輻輳ウィンドウ サイズ cwnd がスロー スタートしきい値 ssthresh 以上になると、輻輳回避アルゴリズムが開始されます。アルゴリズムは次のとおりです。

1) ACK を受信すると、cwnd = cwnd + 1 / cwnd になります。2) 往復遅延時間 RTT が経過するたびに、cwnd のサイズが 1 つ増加します。

スロー スタートしきい値を超えると、輻輳回避アルゴリズムによって、ウィンドウが急速に拡大してウィンドウ輻輳が発生するのを防ぎ、代わりにウィンドウをネットワークに最適な値までゆっくりと増加させることができます。

混雑のアルゴリズム

一般的に、TCP 輻輳制御では、ネットワーク パケット損失はネットワーク輻輳によって発生するとデフォルトで想定されるため、一般的な TCP 輻輳制御アルゴリズムでは、パケット損失をネットワークが輻輳状態になったことを示す信号として使用します。パケット損失を判定する方法は 2 つあります。1 つは再送信タイムアウト (RTO) が経過したとき、もう 1 つは 3 つの繰り返し確認応答 (ACK) が受信されたときです。

タイムアウト再送信は、データの信頼性を確保するための TCP プロトコルの重要なメカニズムです。その原理は、データを送信した後にタイマーを開始することです。送信したデータグラムに対して一定時間内に ACK メッセージが受信されない場合は、データが正常に送信されるまで再送信されます。

ただし、送信者が重複した ACK を 3 つ以上受信した場合、TCP はデータが失われたと認識し、再送信が必要になります。このメカニズムは、再送タイマーがタイムアウトするまで待つ必要がないため、高速再送と呼ばれます。高速再送後は、スロースタートアルゴリズムは使用されず、輻輳回避アルゴリズムが使用されるため、高速回復アルゴリズムとも呼ばれます。

RTO [再送信タイムアウト] がタイムアウトすると、TCP はデータ パケットを再送信します。 TCP はこの状況が非常に悪いと考えており、強く反応しています。

  • パケット損失のため、スロー スタートしきい値 ssthresh は現在の cwnd の半分、つまり ssthresh = cwnd / 2 に設定されます。
  • cwndは1にリセットされます
  • スロースタートプロセスの開始

最も初期の TCP Tahoe アルゴリズムでは上記の処理方法が使用されていましたが、パケットが失われるとすべてを再開する必要があったため、cwnd は 1 にリセットされ、ネットワーク データの安定した送信にはつながりませんでした。

したがって、TCP Reno アルゴリズムが最適化されます。重複した ACK が 3 つ受信されると、TCP は再送信前に RTO がタイムアウトするまで待つのではなく、高速再送信アルゴリズムを開始します。

  • cwnd のサイズは現在のサイズの半分に縮小されます。
  • ssthreshは縮小されたcwndサイズに設定されます
  • 次に、高速回復アルゴリズム「Fast Recovery」を入力します。

高速回復アルゴリズム

TCP Tahoe は初期のアルゴリズムであるため、Reno アルゴリズムとは異なり、高速回復アルゴリズムはありません。高速回復に入る前に、cwnd と ssthresh は元の cwnd の半分に変更されています。高速回復アルゴリズムのロジックは次のとおりです。

  • cwnd = cwnd + 3 * MSS。3 * MSS を追加する理由は、3 つの重複した ACK が受信されるためです。
  • DACK で指定されたパケットを再送信します。
  • さらに多くの DACK が受信されると、cwnd サイズは 1 つ増加します。
  • 再送信されたパケットが成功したことを示す新しい ACK が受信された場合、高速回復アルゴリズムは終了します。 cwnd を ssthresh に設定し、輻輳回避アルゴリズムに入ります。

図に示すように、5 番目のパケットが失われているため、受信側は 3 つの重複した ACK、つまり ACK5 を受信します。したがって、ssthresh をその時点の cwnd の半分、つまり 6/2 = 3 に設定し、cwnd を 3 + 3 = 6 に設定します。次に、5 番目のパケットを再送信します。新しい ACK、つまり ACK11 が受信されると、高速回復フェーズが終了し、cwnd が現在の ssthresh、つまり 3 にリセットされ、輻輳回避アルゴリズム フェーズに入ります。

追記

この記事では、TCP 輻輳制御のいくつかのメカニズムについて簡単に説明します。ただし、これらの輻輳制御にはまだ多くの欠陥があり、最適化の余地があります。業界では、Google の BBR など、新しい輻輳制御アルゴリズムも絶えず導入されています。これらについては今後も議論を続けていきますので、ご注目ください。

<<:  カリフォルニア州の自動運転路上試験規則が変更され、軽輸送車両も許可範囲に含まれる可能性がある

>>:  機械学習がゲーム・オブ・スローンズの結末を「ネタバレ」:3人の愚か者が最初に死に、ドラゴン・マザーとティリオンが最後に笑う

ブログ    
ブログ    
ブログ    

推薦する

海外のJavaエンジニアがGPT-4が論理パズルを解くことはできないが推論能力はあることを証明

GPT-4 または LLM には推論機能がありますか?これは長年議論されてきた問題です。 LLM は...

自動化によってセキュリティアナリストがいなくなる可能性はありますか?

否定できない現実として、私たちは自動化の時代に入り、それに伴い人工知能 (AI)、機械学習 (ML)...

アリババDAMOアカデミーが自動運転の技術的困難を突破:3D物体検出の精度と速度の両方を実現

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

テンセント・ユートゥと厦門大学は、トレーニングを必要としないViT構造検索アルゴリズムを提案した。

最近、ViT はコンピューター ビジョンの分野で強力な競争力を発揮し、複数のタスクで驚くべき進歩を遂...

AIがAIを攻撃、サイバーセキュリティ戦争が激化

最近のサイバーセキュリティ会議では、調査対象となった業界専門家100人のうち62人が、AIを活用した...

IT リーダーが避けるべき 6 つの生成 AI の危険性

多くの場合、さまざまな組織がさまざまな方法で生成 AI テクノロジーを適用しますが、それがもたらす悪...

5G+AI: 未来に影響を与える新たなトレンド

7月9日、2020年世界人工知能会議クラウドサミットが正式に開幕しました。 AI という SF 用語...

あなたはまだ顔認識精度指標に騙されていませんか?

導入ハードウェアの性能向上と顔データ量の増加に伴い、顔認識はますます成熟し、商業的な用途もますます増...

2020 年に爆発的に増加する 9 つの AI マーケティング トレンド

マーケティングに AI を使用すると、代理店の専門家の作業がさまざまな点で楽になります。消費者に合わ...

今後5年間の人工知能における5つのブレークスルー

会話ができるスマートスピーカーであれ、自分で絵を描くことができるバーチャルアーティストであれ、農家が...

データ構造と区間マージアルゴリズム、貪欲

[[439314]]マージ間隔LeetCode の問題へのリンク: https://leetcode...

CoBEVFlow: 車両と道路の協調認識におけるタイミングの非同期の問題を解決

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

マイクロソフト、警察への顔認識サポート提供を禁止される企業リストに加わる

マイクロソフトはIBMとアマゾンに続き、米警察への顔認識ソフトウェアの販売を停止した最新のテクノロジ...

今後3年間で、人工知能は全国の小売業界に影響を与える大きな嵐となるでしょう。排除されてしまうのでしょうか?

10 年前、ほとんどの人は、今日では現金やカードを持ち歩かずに携帯電話だけを持って街を歩き回り、買...

人工知能と IoT – 進化する 5 つのユースケース

AI(人工知能)とIoT(モノのインターネット)の融合により、世界中の企業に大きな可能性がもたらされ...