TCP Slow Startを改善する HyStart++について

20190725追記
draft-01 で計算式に変更が入っています


TCP Slow Startを改善する 「HyStart++: Modified Slow Start for TCP」というdraftがMicrosoftの方より提出されている。

HyStart++はすでにWindowsで実装されている他、HyStartもLinuxのCubicに実装されている。

Slow StartとHyStart++

TCPはコネクション開始直後は送信するデータ量は少なく、徐々に2倍にしていく。パケットロスが発生したタイミングでこのスロースタートは終わることになる。

2倍, 2倍で送信するデータ量を増やしていくと適切な送信量を大幅に超えてしまいうる。大きく超えると多くのパケットロスが発生してしまい、デメリットが大きいため適切なタイミングで線型的にデータ量を増やしていきたい。特定の閾値ではなく、RTTの悪化をトリガーとして線型増加するLimited Slow-Start(RFC3742)に移行するのがHyStart++です。

f:id:ASnoKaze:20190712222721p:plain

各ラウンド毎に、前回のRTTよりもEta(今回のRTT/8 を 4~16msec 以内に収めた値) msec RTTが悪化していた場合はLimited Slow-Startに移行する。

      MIN_SSTHRESH = 16
      MIN_ETA = 4 msec
      MAX_ETA = 16 msec
         if (cwnd is >= MIN_SSTHRESH)
            Eta = clamp(MIN_ETA, currentRoundMinRTT / 8, MAX_ETA)
            if (currentRoundMinRTT >= (lastRoundMinRTT + Eta))
               exit slow start and enter LSS

HyStart++?

参照されているHyStartのドキュメントが有料で読めず、Kernelに貼られているURLもリンク切れになっていた

HyStartで定義されているアルゴリズムが2つあるが、有効だったそのうち一つがHyStart++として改良されている?わからなかった。