BBR、CUBIC、NewRenoの3つに絞って調べています。
各実装のレポジトリを、BBR、CUBIC、Reno、congestion、でキーワード検索して、出てきた情報から判断しています。詳細な実装を確認したわけではないので、実際には実装されていてもキーワード検索時に引っかからなかった場合は見落としている可能性がありますのでご注意ください。
もし間違っていたらご連絡いただけると助かります。
implementation | language | 実装されている輻輳制御アルゴリズム | コメント |
---|---|---|---|
aioquic | python | ? | コードとissueを検索してみましたが、何が実装されてるかまではわかりませんでした |
AppleQUIC | C, Objective-C | ? | closed sourceのため詳細不明 |
ats | c++ | NewReno | このコミットログを見ると draft-19にあわせたと書いているので、NewRenoの可能性が高いと思います |
f5 | c | ? | closed sourceのため不明 |
kwik | java | NewReno | ソースコードを検索したら、NewRenoCongestionController.java というのがありました |
lsquic | c | BBR, CUBIC | ソースコードを検索したら、BBRとCUBICの実装がありました |
msquic | c | ? | closed sourceのため不明 |
mvfst | c++ | BBR, CUBIC, NewReno, COPA | BBR, CUBIC, NewNewRenoに加え、昨年論文が発表されたCOPAまで実装されていました。参考情報: COPAの論文 FaceBookの記事 |
Neqo | Rust | ? | コードとissueを検索してみましたが、何が実装されてるかまではわかりませんでした |
ngtcp | c | ? | コードとissueを検索した限りでは、何が実装されてるかまではわかりませんでした |
nginx_quic | c | ? | quicheの拡張なので、quicheと同じだと思います |
Pandora | c | ? | closed sourceのためわかりませんでした |
picoquic | c | CUBIC, NewReno | ソースコードを検索したら、CUBICとNewRenoの実装がありました |
quant | c11 | ? | コードとissueを検索した限りでは、何が実装されてるかまではわかりませんでした |
quiche | Rust | NewReno | このissueによると 今はNewRenoしか実装していないようです |
quicker | TypeScript | ? | コードとissueを検索してみましたが、何が実装されてるかまではわかりませんでした |
quicly | c | Reno | コードを検索した限りでは、Renoが実装されているようでした |
Quincy | Java | ? | コードとissueを検索してみましたが、何が実装されてるかまではわかりませんでした |
quinn | Rust | ? | コードとissueを検索してみましたが、何が実装されてるかまではわかりませんでした |
sora_quic | Erlang/OTP | ? | closed sourceのためわかりませんでした |
quic-go | Go | CUBIC | コードを検索した限りでは、CUBICが実装されているようでした |
単純なキーワード検索のみだと、不明なものが多かったです。個人的な予想ですが、そういう場合は、IDに従ってNewRenoを実装しているのではないかと思います。
もし、QUICのライブラリを実際に利用する場合は、ネットワークエミュレータなどで挙動を確認して、どの輻輳制御アルゴリズムを使っているか推定するのもありだと思います。