77package netstack
88
99import (
10- "github.com/celzero/firestack/intra/settings"
1110 "gvisor.dev/gvisor/pkg/tcpip"
1211 "gvisor.dev/gvisor/pkg/tcpip/network/ipv4"
1312 "gvisor.dev/gvisor/pkg/tcpip/network/ipv6"
@@ -19,38 +18,37 @@ func SetNetstackOpts(s *stack.Stack) {
1918 // TODO: other stack otps?
2019 // github.com/xjasonlyu/tun2socks/blob/31468620e/core/option/option.go#L69
2120
22- if settings .GetDialerOpts ().LowerKeepAlive {
23- // TODO: setup protocol opts?
24- // github.com/google/gvisor/blob/ef9e8d91/test/benchmarks/tcp/tcp_proxy.go#L233
25- sack := tcpip .TCPSACKEnabled (true )
26- _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & sack )
27-
28- // from: github.com/telepresenceio/telepresence/blob/ab7dda7d55/pkg/vif/stack.go#L232
29- // Enable Receive Buffer Auto-Tuning, see: github.com/google/gvisor/issues/1666
30- bufauto := tcpip .TCPModerateReceiveBufferOption (true )
31- _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & bufauto )
32-
33- // coder.com/blog/delivering-5x-faster-throughput-in-coder-2-12-0
34- ccopt := tcpip .CongestionControlOption ("cubic" )
35- _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & ccopt )
36-
37- ttl := tcpip .DefaultTTLOption (128 )
38- s .SetNetworkProtocolOption (ipv4 .ProtocolNumber , & ttl )
39- s .SetNetworkProtocolOption (ipv6 .ProtocolNumber , & ttl )
40-
41- // github.com/tailscale/tailscale/blob/c4d0237e5c/wgengine/netstack/netstack_tcpbuf_default.go
42- tcpRXBufOpt := tcpip.TCPReceiveBufferSizeRangeOption {
43- Min : tcp .MinBufferSize ,
44- Default : tcp .DefaultSendBufferSize ,
45- Max : 8 << 20 , // 8MiB
46- }
47- tcpTXBufOpt := tcpip.TCPSendBufferSizeRangeOption {
48- Min : tcp .MinBufferSize ,
49- Default : tcp .DefaultReceiveBufferSize ,
50- Max : 6 << 20 , // 6MiB
51- }
52- // github.com/tailscale/tailscale/blob/c4d0237e5c/wgengine/netstack/netstack.go#L329
53- _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & tcpRXBufOpt )
54- _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & tcpTXBufOpt )
21+ // TODO: setup protocol opts?
22+ // github.com/google/gvisor/blob/ef9e8d91/test/benchmarks/tcp/tcp_proxy.go#L233
23+ sack := tcpip .TCPSACKEnabled (true )
24+ _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & sack )
25+
26+ // from: github.com/telepresenceio/telepresence/blob/ab7dda7d55/pkg/vif/stack.go#L232
27+ // Enable Receive Buffer Auto-Tuning, see: github.com/google/gvisor/issues/1666
28+ bufauto := tcpip .TCPModerateReceiveBufferOption (true )
29+ _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & bufauto )
30+
31+ // probably a bad idea? github.com/tailscale/tailscale/blob/9d9a70d81d/wgengine/netstack/netstack.go#L330
32+ // coder.com/blog/delivering-5x-faster-throughput-in-coder-2-12-0
33+ // ccopt := tcpip.CongestionControlOption("cubic")
34+ // _ = s.SetTransportProtocolOption(tcp.ProtocolNumber, &ccopt)
35+
36+ ttl := tcpip .DefaultTTLOption (128 )
37+ s .SetNetworkProtocolOption (ipv4 .ProtocolNumber , & ttl )
38+ s .SetNetworkProtocolOption (ipv6 .ProtocolNumber , & ttl )
39+
40+ // github.com/tailscale/tailscale/blob/c4d0237e5c/wgengine/netstack/netstack_tcpbuf_default.go
41+ tcpRXBufOpt := tcpip.TCPReceiveBufferSizeRangeOption {
42+ Min : tcp .MinBufferSize ,
43+ Default : tcp .DefaultSendBufferSize ,
44+ Max : 8 << 20 , // 8MiB
5545 }
46+ tcpTXBufOpt := tcpip.TCPSendBufferSizeRangeOption {
47+ Min : tcp .MinBufferSize ,
48+ Default : tcp .DefaultReceiveBufferSize ,
49+ Max : 6 << 20 , // 6MiB
50+ }
51+ // github.com/tailscale/tailscale/blob/c4d0237e5c/wgengine/netstack/netstack.go#L329
52+ _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & tcpRXBufOpt )
53+ _ = s .SetTransportProtocolOption (tcp .ProtocolNumber , & tcpTXBufOpt )
5654}
0 commit comments