mirror of
https://github.com/netbirdio/netbird.git
synced 2026-03-31 06:34:14 -04:00
[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:
@@ -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 {
|
||||||
|
|||||||
@@ -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})
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user