There is a (what seems to be) very experimental PR that implements BBR congestion control for quic-go: https://github.com/lucas-clemente/quic-go/pull/1888
It might be worth looking into it and see how it improves v2ray's performance.
Worth trying
我有点看不懂了,拥塞控制是 TCP 协议才会实现的事情吧,为什么可以把拥塞控制的算法用在基于 UDP 的 QUIC 协议上?😂
我有点看不懂了,拥塞控制是 TCP 协议才会实现的事情吧,为什么可以把拥塞控制的算法用在基于 UDP 的 QUIC 协议上?😂
因为QUIC跟BBR都是谷歌家的,所以...
我有点看不懂了,拥塞控制是 TCP 协议才会实现的事情吧,为什么可以把拥塞控制的算法用在基于 UDP 的 QUIC 协议上?😂
并不是,本身QUIC支持调用TCP的拥塞算法(或者说QUIC本身就是想在UDP实现一个用户态的类TCP),更何况BBR和QUIC都是同一家的产品。
确实QUIC没有mKCP快(看YouTube),也许加入BBR可以有性能提升
试了一下,效果显著,性能可以超越同配置的tcp bbr。
quic就是超慢的 很怕丢包.
所以这个看起来是非常必要的.
刚试了latest https://github.com/fbzhong/quic-go
编译不通过
会报错:
_build/src/v2ray.com/core/external/github.com/lucas-clemente/quic-go/internal/handshake/crypto_setup.go:120:5: cannot use &cryptoSetup literal (type *cryptoSetup) as type qtls.RecordLayer in assignment:
*cryptoSetup does not implement qtls.RecordLayer (wrong type for SetReadKey method)
have SetReadKey(*qtls.CipherSuite, []byte)
want SetReadKey(qtls.EncryptionLevel, *qtls.CipherSuite, []byte)
_build/src/v2ray.com/core/external/github.com/lucas-clemente/quic-go/internal/handshake/crypto_setup.go:220:35: cannot use cs (type *cryptoSetup) as type qtls.RecordLayer in argument to tlsConfigToQtlsConfig:
*cryptoSetup does not implement qtls.RecordLayer (wrong type for SetReadKey method)
have SetReadKey(*qtls.CipherSuite, []byte)
want SetReadKey(qtls.EncryptionLevel, *qtls.CipherSuite, []byte)
然后去latest github.com/lucas-clemente/quic-go/internal/handshake/crypto_setup.go 检查了一下,发现,latest的代码中,SetReadKey的参数都是错的。
qtls里面RecordLayer Interface里的SetReadKey多了一个参数qtls.EncryptionLevel,然而,在crypto_setup.go里面的实现,并没有这个参数。
所以,完全不知道上游开发者,提交上去的代码是什么样的东西。
用的0.11.2版本编译,bbr补丁+internal/handshake/qtls.go补丁
在v2ray v4.19.1上稳定使用中。
希望v2ray能支持一下
用的0.11.2版本编译,bbr补丁+internal/handshake/qtls.go补丁
在v2ray v4.19.1上稳定使用中。
求个教程
用的0.11.2版本编译,bbr补丁+internal/handshake/qtls.go补丁
在v2ray v4.19.1上稳定使用中。
或者希望能够提供下最新版编译好的v2ray-linux-64,拜托了大神。
代码在这:https://github.com/Windendless/v2ray-core
启动v2ray之前,记得添加环境变量以启用quic的bbr:
GODEBUG="bbr=1,tls13=1"
GODEBUG="bbr=1,tls13=1"
多谢!
@Windendless 这个如果只有服务器改了效果怎么样?方便的话可以Merge到这边吗?
效果肯定非凡啊 bbr不是单边的么!!!!
v2ray 下quic开bbr到底怎么玩?能科普一下小白么?
我有点看不懂了,拥塞控制是 TCP 协议才会实现的事情吧,为什么可以把拥塞控制的算法用在基于 UDP 的 QUIC 协议上?😂
Google 的 bbr repository 里面就有官方的 quic 版本 bbr 实现。
这篇文章也说明了 quic 版本的 bbr 实现与 tcp bbr 之间的关系及其先导性。
@Windendless 请问为什么我没法成功编译您现在的QUICwithBBR分支呢,用的官方的脚本编译的。
https://github.com/v2ray/v2ray-core/blob/master/release/user-package.sh
感觉这个对quic的提升应该比较大,可惜quic-go现在似乎短时间内都不会搞这个方向。
This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days