chore: update quic-go to 0.44.0

This commit is contained in:
wwqgtxx 2024-05-21 00:47:59 +08:00
parent bd43eca09d
commit 3195c678c7
7 changed files with 19 additions and 40 deletions

2
go.mod
View File

@ -19,7 +19,7 @@ require (
github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40
github.com/mdlayher/netlink v1.7.2 github.com/mdlayher/netlink v1.7.2
github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759
github.com/metacubex/quic-go v0.43.2-0.20240518033621-2c3d14c6b38e github.com/metacubex/quic-go v0.44.1-0.20240521004242-fcd70d587e22
github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72
github.com/metacubex/sing-shadowsocks v0.2.6 github.com/metacubex/sing-shadowsocks v0.2.6
github.com/metacubex/sing-shadowsocks2 v0.2.0 github.com/metacubex/sing-shadowsocks2 v0.2.0

4
go.sum
View File

@ -104,8 +104,8 @@ github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 h1:cjd4biTvO
github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759/go.mod h1:UHOv2xu+RIgLwpXca7TLrXleEd4oR3sPatW6IF8wU88= github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759/go.mod h1:UHOv2xu+RIgLwpXca7TLrXleEd4oR3sPatW6IF8wU88=
github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec h1:HxreOiFTUrJXJautEo8rnE1uKTVGY8wtZepY1Tii/Nc= github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec h1:HxreOiFTUrJXJautEo8rnE1uKTVGY8wtZepY1Tii/Nc=
github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec/go.mod h1:8BVmQ+3cxjqzWElafm24rb2Ae4jRI6vAXNXWqWjfrXw= github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec/go.mod h1:8BVmQ+3cxjqzWElafm24rb2Ae4jRI6vAXNXWqWjfrXw=
github.com/metacubex/quic-go v0.43.2-0.20240518033621-2c3d14c6b38e h1:Nzwe08FNIJpExWpy9iXkG336dN/8nJqn69yijB7vJ8g= github.com/metacubex/quic-go v0.44.1-0.20240521004242-fcd70d587e22 h1:hsQ0b2A509b6ubnLtLOcUgZ8vOb+d/667zVEJ1T2fao=
github.com/metacubex/quic-go v0.43.2-0.20240518033621-2c3d14c6b38e/go.mod h1:uXHODgJFUfUnkkCMWLd5Er6L5QY/LFRZb9LD5jyyhsk= github.com/metacubex/quic-go v0.44.1-0.20240521004242-fcd70d587e22/go.mod h1:88wAATpevav4xdy5N8oejQ2cbbI6EcLYEklFeo+qywA=
github.com/metacubex/sing v0.0.0-20240518125217-e63d65a914d1 h1:7hDHLTmjgtRoAp59STwPQpe5Pinwi4cWex+FB3Ohvco= github.com/metacubex/sing v0.0.0-20240518125217-e63d65a914d1 h1:7hDHLTmjgtRoAp59STwPQpe5Pinwi4cWex+FB3Ohvco=
github.com/metacubex/sing v0.0.0-20240518125217-e63d65a914d1/go.mod h1:+60H3Cm91RnL9dpVGWDPHt0zTQImO9Vfqt9a4rSambI= github.com/metacubex/sing v0.0.0-20240518125217-e63d65a914d1/go.mod h1:+60H3Cm91RnL9dpVGWDPHt0zTQImO9Vfqt9a4rSambI=
github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 h1:Wr4g1HCb5Z/QIFwFiVNjO2qL+dRu25+Mdn9xtAZZ+ew= github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 h1:Wr4g1HCb5Z/QIFwFiVNjO2qL+dRu25+Mdn9xtAZZ+ew=

View File

@ -22,7 +22,7 @@ func SetCongestionController(quicConn quic.Connection, cc string, cwnd int) {
quicConn.SetCongestionControl( quicConn.SetCongestionControl(
congestion.NewCubicSender( congestion.NewCubicSender(
congestion.DefaultClock{}, congestion.DefaultClock{},
congestion.GetInitialPacketSize(quicConn.RemoteAddr()), congestion.GetInitialPacketSize(quicConn),
false, false,
), ),
) )
@ -30,7 +30,7 @@ func SetCongestionController(quicConn quic.Connection, cc string, cwnd int) {
quicConn.SetCongestionControl( quicConn.SetCongestionControl(
congestion.NewCubicSender( congestion.NewCubicSender(
congestion.DefaultClock{}, congestion.DefaultClock{},
congestion.GetInitialPacketSize(quicConn.RemoteAddr()), congestion.GetInitialPacketSize(quicConn),
true, true,
), ),
) )
@ -38,7 +38,7 @@ func SetCongestionController(quicConn quic.Connection, cc string, cwnd int) {
quicConn.SetCongestionControl( quicConn.SetCongestionControl(
congestion.NewBBRSender( congestion.NewBBRSender(
congestion.DefaultClock{}, congestion.DefaultClock{},
congestion.GetInitialPacketSize(quicConn.RemoteAddr()), congestion.GetInitialPacketSize(quicConn),
c.ByteCount(cwnd)*congestion.InitialMaxDatagramSize, c.ByteCount(cwnd)*congestion.InitialMaxDatagramSize,
congestion.DefaultBBRMaxCongestionWindow*congestion.InitialMaxDatagramSize, congestion.DefaultBBRMaxCongestionWindow*congestion.InitialMaxDatagramSize,
), ),
@ -49,7 +49,7 @@ func SetCongestionController(quicConn quic.Connection, cc string, cwnd int) {
quicConn.SetCongestionControl( quicConn.SetCongestionControl(
congestionv2.NewBbrSender( congestionv2.NewBbrSender(
congestionv2.DefaultClock{}, congestionv2.DefaultClock{},
congestionv2.GetInitialPacketSize(quicConn.RemoteAddr()), congestionv2.GetInitialPacketSize(quicConn),
c.ByteCount(cwnd), c.ByteCount(cwnd),
), ),
) )

View File

@ -5,34 +5,23 @@ package congestion
import ( import (
"fmt" "fmt"
"math" "math"
"net"
"time" "time"
"github.com/metacubex/quic-go"
"github.com/metacubex/quic-go/congestion" "github.com/metacubex/quic-go/congestion"
"github.com/zhangyunhao116/fastrand" "github.com/zhangyunhao116/fastrand"
) )
const ( const (
// InitialMaxDatagramSize is the default maximum packet size used in QUIC for congestion window computations in bytes. // InitialMaxDatagramSize is the default maximum packet size used in QUIC for congestion window computations in bytes.
InitialMaxDatagramSize = 1252 InitialMaxDatagramSize = 1280
InitialPacketSizeIPv4 = 1252 InitialPacketSize = 1280
InitialPacketSizeIPv6 = 1232
InitialCongestionWindow = 32 InitialCongestionWindow = 32
DefaultBBRMaxCongestionWindow = 10000 DefaultBBRMaxCongestionWindow = 10000
) )
func GetInitialPacketSize(addr net.Addr) congestion.ByteCount { func GetInitialPacketSize(quicConn quic.Connection) congestion.ByteCount {
maxSize := congestion.ByteCount(1200) return congestion.ByteCount(quicConn.Config().InitialPacketSize)
// If this is not a UDP address, we don't know anything about the MTU.
// Use the minimum size of an Initial packet as the max packet size.
if udpAddr, ok := addr.(*net.UDPAddr); ok {
if udpAddr.IP.To4() != nil {
maxSize = InitialPacketSizeIPv4
} else {
maxSize = InitialPacketSizeIPv6
}
}
return congestion.ByteCount(maxSize)
} }
var ( var (

View File

@ -21,7 +21,7 @@ const (
cubeCongestionWindowScale = 410 cubeCongestionWindowScale = 410
cubeFactor congestion.ByteCount = 1 << cubeScale / cubeCongestionWindowScale / maxDatagramSize cubeFactor congestion.ByteCount = 1 << cubeScale / cubeCongestionWindowScale / maxDatagramSize
// TODO: when re-enabling cubic, make sure to use the actual packet size here // TODO: when re-enabling cubic, make sure to use the actual packet size here
maxDatagramSize = congestion.ByteCount(InitialPacketSizeIPv4) maxDatagramSize = congestion.ByteCount(InitialPacketSize)
) )
const defaultNumConnections = 1 const defaultNumConnections = 1

View File

@ -4,9 +4,9 @@ package congestion
import ( import (
"fmt" "fmt"
"net"
"time" "time"
"github.com/metacubex/quic-go"
"github.com/metacubex/quic-go/congestion" "github.com/metacubex/quic-go/congestion"
"github.com/zhangyunhao116/fastrand" "github.com/zhangyunhao116/fastrand"
@ -30,7 +30,7 @@ const (
// Constants based on TCP defaults. // Constants based on TCP defaults.
// The minimum CWND to ensure delayed acks don't reduce bandwidth measurements. // The minimum CWND to ensure delayed acks don't reduce bandwidth measurements.
// Does not inflate the pacing rate. // Does not inflate the pacing rate.
defaultMinimumCongestionWindow = 4 * congestion.ByteCount(congestion.InitialPacketSizeIPv4) defaultMinimumCongestionWindow = 4 * congestion.ByteCount(congestion.InitialPacketSize)
// The gain used for the STARTUP, equal to 2/ln(2). // The gain used for the STARTUP, equal to 2/ln(2).
defaultHighGain = 2.885 defaultHighGain = 2.885
@ -931,16 +931,6 @@ func bdpFromRttAndBandwidth(rtt time.Duration, bandwidth Bandwidth) congestion.B
return congestion.ByteCount(rtt) * congestion.ByteCount(bandwidth) / congestion.ByteCount(BytesPerSecond) / congestion.ByteCount(time.Second) return congestion.ByteCount(rtt) * congestion.ByteCount(bandwidth) / congestion.ByteCount(BytesPerSecond) / congestion.ByteCount(time.Second)
} }
func GetInitialPacketSize(addr net.Addr) congestion.ByteCount { func GetInitialPacketSize(quicConn quic.Connection) congestion.ByteCount {
// If this is not a UDP address, we don't know anything about the MTU. return congestion.ByteCount(quicConn.Config().InitialPacketSize)
// Use the minimum size of an Initial packet as the max packet size.
if udpAddr, ok := addr.(*net.UDPAddr); ok {
if udpAddr.IP.To4() != nil {
return congestion.InitialPacketSizeIPv4
} else {
return congestion.InitialPacketSizeIPv6
}
} else {
return congestion.MinInitialPacketSize
}
} }

View File

@ -21,8 +21,8 @@ type Pacer struct {
func NewPacer(getBandwidth func() congestion.ByteCount) *Pacer { func NewPacer(getBandwidth func() congestion.ByteCount) *Pacer {
p := &Pacer{ p := &Pacer{
budgetAtLastSent: maxBurstPackets * congestion.InitialPacketSizeIPv4, budgetAtLastSent: maxBurstPackets * congestion.InitialPacketSize,
maxDatagramSize: congestion.InitialPacketSizeIPv4, maxDatagramSize: congestion.InitialPacketSize,
getBandwidth: getBandwidth, getBandwidth: getBandwidth,
} }
return p return p