ネットワーク容量が増加すると、TCPの従来の動作モードのいくつかは最適な性能を発揮できなくなる。特に、TCPなどはのコネクション指向プロトコルは、コネクション設定のオーバーヘッドが大きく、バッファが大きいネットワークでは性能が低下する可能性がある。
QUIC スループットと遅延特性を改善する
QUICは当初Quick UDP Internet Connectionsとして提案されたものであり、TCPのスループットと遅延とく性を改善することを目的としたトランスポート・プロトコルである。
QUICはUDP上で実行され、主な目標は、Webプロトコルなどのアプリケーション・プロトコル高速化することであった。
QUICは単一のUDPフローとしてこれらのコネクションを多重化する。また一つのWebオブジェクト転送が遅れた場合には、他のオブジェクトの転送をブロックしないようにする
QUICはUDPに基づいているため、それ自体は信頼性の高いトランスポートを実現できない。しかし、あるストリームで一部のデータがロスした場合でも、他のストリームにデータを転送し続けることが可能である。これにより、結果的に伝送誤り率の高いリンクの性能を上げられる
- 多重化とは
- ブロックとは
- ピギーバックとは
バッファブローでバッファがいっぱいになって輻輳になる
ボトルネック・バッファが大きい場合、前述のようにロスベースの輻輳制御アルゴリズムでは、バッファを埋めることは、結局バッファブローと(bufferbloat:バッファ膨張)と呼ばれる現象を起こす。
伝送速度が速くなりすぎてバッファがいっぱいになって返すべき通知を返せない
ネットワーク経路に沿ったネットワーク・デバイスのバッファが大きすぎると場合、輻輳ウインドウが大きいTCP送信者は、ロスの通知を受け取るまでに、ネットワークの容量を遥かに超える速度で送信する。ネットワーク中にあるバッファがいっぱいになると、送信速度が早すぎるという送信者への輻輳通知が遅れる。(つまり、パケットがドロップしに)。重要な点は、大きなバッファ内で送信者へのパケットが他のパケットの後ろに並んでいて遅延が増加する点である。
BBRはボトルネックとなる帯域と往復の伝搬遅延を測定、推測している
BBRの背後にある主な考え方は、ボトルネックとなる帯域(ボトルネック帯域:bottleneck bandwidth)と往復の伝搬遅延(round trip propagation delay)を測定し、これらのパラメータの推定値を使用して、正確に適切な動作点を送信することである。従って、BBRは、ボトルネック帯域と往復の伝搬遅延を"継続的"に追跡する。TCPではすでに往復時間を追跡している。一方、BBRはこれを拡張してトランスポート・プロトコルの配信速度(delivery rate)を追跡する。BBRは、ボトルネック帯域を、特定の時間枠(通常は6~10往復)で測定された配信速度の最大値として計算する。
常に情報を更新している
BBRの鍵は、ボトルネック帯域とそれに応じた往復時間お見積りを常に更新できるかにある。確認通知の一つ一つは、往復時間と平均配信速度に関する情報を更新すると同時に、配信速度が(リクエスト・レスポンス・プロトコルの場合のように)アプリケーションによって制限されていないことを確認する。
ボトルネック帯域レートに合わせる
ボトルネック帯域レートに一致するようにデータの送信感覚、すなわちペースを調整する方法である。この速度であるページングレート(pacing rate)は、BBRベースの輻輳制御の重要なパラメータである。定常状態では、BBRが送信する速度は、単にボトルネック帯域と往復時間の関数である。BBRはボトルネック帯域レートにペースレートを正確に合わせて、転送中のデータに有用な帯域・遅延積になる時間が長くなるようにして、遅延を最小化する。ボトルネック・レートへは非常に早く収束する。
- ボトルネック帯域とは
- ペースレートとは
感想
しっかり理解できるようになる