[relay] reduce QUIC initial packet size to 1280 (IPv6 min MTU) (#5374)

* [relay] reduce QUIC initial packet size to 1280 (IPv6 min MTU)

* adjust QUIC initial packet size to 1232 based on RFC 9000 §14
This commit is contained in:
Zoltan Papp
2026-02-18 10:58:14 +01:00
committed by GitHub
parent e9b2a6e808
commit 318cf59d66
3 changed files with 9 additions and 2 deletions

View File

@@ -11,6 +11,7 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"github.com/netbirdio/netbird/relay/protocol" "github.com/netbirdio/netbird/relay/protocol"
nbRelay "github.com/netbirdio/netbird/shared/relay"
) )
const Proto protocol.Protocol = "quic" const Proto protocol.Protocol = "quic"
@@ -27,7 +28,7 @@ type Listener struct {
func (l *Listener) Listen(acceptFn func(conn net.Conn)) error { func (l *Listener) Listen(acceptFn func(conn net.Conn)) error {
quicCfg := &quic.Config{ quicCfg := &quic.Config{
EnableDatagrams: true, EnableDatagrams: true,
InitialPacketSize: 1452, InitialPacketSize: nbRelay.QUICInitialPacketSize,
} }
listener, err := quic.ListenAddr(l.Address, l.TLSConfig, quicCfg) listener, err := quic.ListenAddr(l.Address, l.TLSConfig, quicCfg)
if err != nil { if err != nil {

View File

@@ -12,6 +12,7 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
nbnet "github.com/netbirdio/netbird/client/net" nbnet "github.com/netbirdio/netbird/client/net"
nbRelay "github.com/netbirdio/netbird/shared/relay"
quictls "github.com/netbirdio/netbird/shared/relay/tls" quictls "github.com/netbirdio/netbird/shared/relay/tls"
) )
@@ -42,7 +43,7 @@ func (d Dialer) Dial(ctx context.Context, address string) (net.Conn, error) {
KeepAlivePeriod: 30 * time.Second, KeepAlivePeriod: 30 * time.Second,
MaxIdleTimeout: 4 * time.Minute, MaxIdleTimeout: 4 * time.Minute,
EnableDatagrams: true, EnableDatagrams: true,
InitialPacketSize: 1452, InitialPacketSize: nbRelay.QUICInitialPacketSize,
} }
udpConn, err := nbnet.ListenUDP("udp", &net.UDPAddr{IP: net.IPv4zero, Port: 0}) udpConn, err := nbnet.ListenUDP("udp", &net.UDPAddr{IP: net.IPv4zero, Port: 0})

View File

@@ -3,4 +3,9 @@ package relay
const ( const (
// WebSocketURLPath is the path for the websocket relay connection // WebSocketURLPath is the path for the websocket relay connection
WebSocketURLPath = "/relay" WebSocketURLPath = "/relay"
// QUICInitialPacketSize is the conservative initial QUIC packet size (bytes)
// for unknown-path PMTU, per RFC 9000 §14: 1280 (IPv6 min MTU) 40 (IPv6
// header) 8 (UDP header) = 1232. DPLPMTUD may probe larger sizes later.
QUICInitialPacketSize = 1232
) )