Optimizing HTTP/2 prioritization with BBR and tcp_notsent_lowat

https://blog.cloudflare.com/http-2-prioritization-with-nginx/

 

BBRとtcp_notsetn_Iowatを使って、HTTP/2の優先度制御を最適化する話。

 

# サーバ側のバッファサイズの課題

優先度が低いリソースのリクエストの後に、優先度が高いリソースのリクエストが来ることがある。バッファサイズが大きいと、優先度が低いリソースがリクエスト順にすべてカーネルに渡された後に、優先度が高いリソースが渡される。その結果、優先度が高いリソースが届くのが遅くなる。それを、tcp_notsent_lowatを設定することで調整する

 

# inflightのバッファサイズ

従来のTCP輻輳制御の方法だと、ロスが起きてからウィンドウサイズを減らしている。それに対してBBRはそういうウィンドウサイズの減らし方はしない。その結果優先度が低いリソースがたくさんネットワーク上にいる状態を避けて、優先度が高いリソースのリクエストが来たらそれを先に送信できるようにする。