分ロングファットパイプにおけるReno/NewRenoの課題インターネットの普及に伴って日常的にTCPが利用されるようになって以来,輻輳制御アルゴリズムとしてはReno/NewRenoが標準的に用いられてきました。これらのアルゴリズムは代表的なLoss-basedアルゴリズムであり,提案された当時のネットワーク環境では有効に機能していたのですが,時が過ぎ,技術の進展によるネットワーク環境の変化とともに,当初は思いもよらなかったような課題が顕在化してきました。このような環境においては,Reno/NewRenoでは高速リカバリによるスループット回復に要する時間が長くなってしまい,広帯域を十分に活用できないのです。通信環境の変化とロングファットパイプこれは,輻輳ウィンドウサイズの増加幅がリンク速度に対して遅過ぎる,という点に起因します。図2に示すように,輻輳回避フェーズにおける高速リカバリによるスループット回復に要する時間は,リンク速度が大きくなるほど長くなるため,輻輳ウィンドウサイズが相対的に小さい時間が長くなってしまいます。TCPといったロングファットパイプ向けの輻輳制御アルゴリズムがいくつか提案されました。これらのアルゴリズムでは,高速リカバリ時の輻輳ウインドウサイズ増加の高速化を図ることで,輻輳ウインドウサイズを大きく保つことが可能でした。Loss-based輻輳制御は基本的にパケットロスが発生するまでは徐々に輻輳ウィンドウサイズを増加させ,パケットロスが発生すると大きくを減少させる仕組み(図3,AIMD:Additive-Increase/Multiplicative-Decreaseと呼ばれます)で動作しますが,この増加速度を上げ,減少幅を小さくすることで,上記の特性を実現しています。輻輳ウインドウサイズを大きく保とうとする傾向が強すぎて(=アグレッシブ過ぎて⁠)⁠,Reno/NewRenoとの親和性が低いという課題がありました。TCPが帯域を独占してしまうため,Reno/NewRenoと併用することができませんでした。インターネットでは不特定多数の人々/モノによる通信データが転送されるため,このようなアグレッシブ性の高すぎるアルゴリズムは適していません。一つの観点として,RTT公平性が低いという課題もありました。RTT公平性とは,RTTが大きく異なるフロー間でのスループットの公平性を指す概念です。TCPでは,RTTが異なるフローがボトルネックリンクを共有した際に,RTTが小さいフローがRTTが大きいフローを追い出し,ほとんど通信できなくしてしまうという問題がありました。TCP)は,2004年に発表された後,Linux2.6.8から2.6.18まで,つまりCUBIC-TCPに置き換わるまで標準搭載されていたアルゴリズムです。BIC-TCPも基本的にはロングファットパイプへの適用を前提に開発されたアルゴリズムであり,安定性とスケーラビリティに優れます。先ほど述べた既存アルゴリズムとの親和性にも配慮されています。BIC-TCPが開発された最大の目的が,RTT公平性の改善です。BIC-TCPにおける輻輳ウインドウサイズ増加イメージを図4に示します。searchという2つのフェーズによって輻輳ウインドウサイズを増加させます。直前にパケット廃棄が発生した時点の輻輳ウインドウサイズ(W_max)に対する,現在の輻輳ウインドウサイズの大きさに応じてフェーズを切り替えます。increaseにより輻輳ウインドウサイズを急速に増加させることで,スケーラビリティとRTT公平性を高めます。searchにより徐々に輻輳ウインドウサイズを増加させ,過剰なパケット廃棄を起こさないようにします。probingと呼ばれるフェーズとなり,輻輳ウインドウサイズ増加関数がW_maxとなる点に対して対称となるように輻輳ウインドウサイズを増加させることで,次のパケット廃棄を探索します。BIC-TCPにもいくつかの課題がありました。狭帯域であったり低遅延なネットワーク環境において帯域幅を不当に消費してしまうという点や,そして上記のような複雑なフェーズ制御により解析が困難であり,性能の予測やネットワークの設計が困難である点です。CUBIC-TCPの登場CUBIC-TCPは,Linux2.6.19以降で標準搭載されている輻輳制御アルゴリズムであり,現在主流となっているアルゴリズムの一つであると言えます。CUBIC-TCPは,BIC-TCPの改良バージョンという位置づけであり,BIC-TCPの複雑な輻輳ウインドウサイズ制御手法を大幅に簡略化したものです。function)で置き換えることで,フェーズ切り替えなどを省略し,シンプル化しています。CUBIC-TCPにおける輻輳ウインドウサイズ増加関数を図5に示します。CUBICにおける輻輳ウィンドウサイズ増加これを見ると,BIC-TCPの輻輳ウインドウサイズ増加の様子と非常によく似ていることが分かります。これはつまり,高速リカバリ開始からの経過時間を変数とした三次関数を用いることで,BIC-TCPの複雑な輻輳ウインドウサイズ制御を上手く近似できている,ということを表しています。結果として,輻輳ウインドウサイズの増加量が二つの連続した輻輳イベント間の時間間隔のみで表される,という点が大きな特徴として挙げられます。これはつまり,輻輳ウインドウサイズ増加速度がRTTに依存しない,ということを意味し,RTT公平性の向上に寄与します。RTTが小さい場合には輻輳ウインドウサイズ増加量を抑えるように設計されているため,既存TCPとの親和性が高いという長所があります。RTTが小さい場合には輻輳ウインドウサイズ増加量を抑えるように設計されているため,既存TCPとの親和性が高いという長所もあります。CUBIC-TCPは,これまでのLoss-based輻輳制御アルゴリズムの集大成とも言えます。モバイルコンピューティング,低遅延ネットワーク,IoT等の研究に取り組む。Things),自動運転をはじめ,ネットワークにまつわるサービスは飛躍的な発展を遂げつつあります。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。