Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> グーグルBBR TCP輻輳制御4つの速エンジンアルゴリズム

グーグルBBR TCP輻輳制御4つの速エンジンアルゴリズム

  
        二つは、ほぼ一晩台風海馬の出現夜の前に、私は海馬を満たすためにBBRアルゴリズムについての記事を使用しました!深センで会社をシャットダウンする応答の最後の夜は、ホームオフィス(休日ではなく、注意してください...)の通知をリリース電話を閉じた...実際に、私はパワーが王だと思う、あなたは思いますか?旧BBRアルゴリズムについての記事「GoogleからのTCP BBRの輻輳制御アルゴリズムを解決するために。」(これは、記事を関連記事BBRアルゴリズムの最初の中国語版でもよい)、Iは、フレームワークBBRアルゴリズムは、一般的な導入とみなすことができる概説しましたA。本論文では、私はいくつかの詳細BBRアルゴリズムパイプステートマシンで探求したいが、私は使用&'していきません。ステート・マシン'この用語は、私は現代の高速TCPの高速エンジンを表示するには、可変速エンジン引数を使用することにしましたデータ伝送のための強力な推進力を提供する方法について説明します。 BBRエンジンのアルゴリズムから生成された完全に抽象のこのセットは、アイデアは我々が実行したり、駆動プロセスから来て、突然、我々はBBRアルゴリズムを考えるの本質は単純であることを発見し、完全に高速道路を運転するとき、私たちは混雑した滑走路やアイデアを実行します一貫ああ!私は助けることがため息とすべてのものの虚無の団結を呪い、この記事で完了するとき、ちょっとポジティブ胃の灼熱感することはできません!我々が始まろうとしています!これまでの

1.Linux TCP輻輳制御機構
後、私は他のプラットフォームにTCPの輻輳制御アルゴリズムを知らないが、私は、Linuxは、これまでのところ、ちょうどBBRに導入されたLinuxの輻輳制御アルゴリズムを知っています2つのカテゴリに分ける:

リノ、NewRenoの、...ほとんど同じ原理を含め、リノベースと保守モード
BBR前に、これらのアルゴリズムは、二つの特徴があります。たとえばリノに1)貧困層のフィードバックを、ACKを受信した後、送信側のTCPの輻輳回避フェーズは、無条件に1をcwndをスロースタートの増加を受けた後、1 /CWND、ACKを高めるCWND、それは根拠のないですが、リノとは良い方法はありません唯一の推測!その後ウェストウッド、ラスベガス、BICアルゴリズム、相対リノ/NewRenoのよりインテリジェントなステップが、それでも馬鹿!博士'その後、CUBICが凸と凹カーブ三次方程式の選択肢との背の高い成長窓メカニズムに従事し、それは非常に地面&'ようだ、と徹底的に'マネージャー'、まだ効率的に無料のインターネットを使用しません帯域幅は、そのような反応はあまりにも保守的であり、パケットロス、輻輳等コントラスト遭遇異常に、すなわち、より一層残念ながら、減少し、ウィンドウのこのプロセスを輻輳ウィンドウ激しい保守的に低減、保守的なルートでより強い成長しましたこれらのアルゴリズムは、制御されていません。 2)輻輳アルゴリズムは(すなわちN回またはRTOがACK、等重複)損失を発見したTCP輻輳制御機構引き継がれる、TCPの輻輳制御アルゴリズムが完全に引き継ぐ、輻輳ウィンドウは、自身を制御します。問題は、このいわゆる損失は本当に、パケットロス、TCPはそれだけで、それをドロップだと思わないかもしれないということです、まだドロップするメカニズムを決定するために、本当に... 30年前の損失でしたか?必ずしもそうではありませんああ!しかし、TCPパケット損失が信じるならば、(少なくともLinux上でそうです...)輻輳制御アルゴリズムを引き継ぎます。これは、ヤン、私は満足していないになります!私は...このドロップのためのLinuxのTCPウィンドウは、そのような半減レート、PRRので、残念ながら、乾燥などのプログラム、各種て努力行ってきましたされ、ウィンドウプロシージャがそれほど激しいないだけでダウン、LinuxのTCP PRRロジックを変更しましたまあ、直接輻輳制御アルゴリズムにそれを持っていませんか? ?

一般的に、輻輳制御ロジックBBR実装プロセス、すなわち、通常のステージと異常な段階、2つの段階に分割される前に。順相で、TCP輻輳制御調整アルゴリズムモジュラー支配的なウィンドウ、異常な相において、輻輳制御アルゴリズムは以下のロジックで構成されているLinuxの実装では、ウィンドウの計算を引き継ぐために、そこからTCPの輻輳制御状態マシンコアで表される:

静的ボイドtcp_cong_control(構造体靴下*のSK、U32のACK、U32はacked_sacked、INTフラグ){IF(tcp_in_cwnd_reduction(SK)){//異常なパターン/* CWNDを減らすと状態義務* ///ウィンドウに入る前にロジックを落とし、また、あなたはtcp_fastretrans_alert例外処理と例外処理の情報を収集する必要があります。 tcp_cwnd_reduction(SK、acked_sacked、フラグ);}そうでない場合(tcp_may_raise_cwnd(SK、フラグ)){//通常モードまたはセキュアモード例外! /*アドバンスCWND状態(SK、ACK、acked_sacked)* /tcp_cong_avoidを許可する場合;} tcp_update_pacing_rate(SK);例外モードtcp_cwnd_reductionが表されているかどうかを決定するために、以下の論理によって}:SK((tcp_ack_is_dubious場合
フラグ)){is_dupack =(フラグ&(FLAG_SND_UNA_ADVANCED 
						
Copyright © Windowsの知識 All Rights Reserved