Skip to content

Commit ca0eba4

Browse files
committed
netstack/stackopts: disable tcp opts
1 parent 23b6a2a commit ca0eba4

1 file changed

Lines changed: 32 additions & 28 deletions

File tree

intra/netstack/stackopts.go

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package netstack
88

99
import (
10+
"github.com/celzero/firestack/intra/settings"
1011
"gvisor.dev/gvisor/pkg/tcpip"
1112
"gvisor.dev/gvisor/pkg/tcpip/network/ipv4"
1213
"gvisor.dev/gvisor/pkg/tcpip/network/ipv6"
@@ -15,40 +16,43 @@ import (
1516
)
1617

1718
func SetNetstackOpts(s *stack.Stack) {
19+
loopback := settings.Loopingback.Load()
1820
// TODO: other stack otps?
1921
// github.com/xjasonlyu/tun2socks/blob/31468620e/core/option/option.go#L69
2022

2123
// TODO: setup protocol opts?
2224
// github.com/google/gvisor/blob/ef9e8d91/test/benchmarks/tcp/tcp_proxy.go#L233
23-
sack := tcpip.TCPSACKEnabled(true)
25+
sack := tcpip.TCPSACKEnabled(loopback)
2426
_ = s.SetTransportProtocolOption(tcp.ProtocolNumber, &sack)
2527

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
28+
if loopback {
29+
// from: github.com/telepresenceio/telepresence/blob/ab7dda7d55/pkg/vif/stack.go#L232
30+
// Enable Receive Buffer Auto-Tuning, see: github.com/google/gvisor/issues/1666
31+
bufauto := tcpip.TCPModerateReceiveBufferOption(true)
32+
_ = s.SetTransportProtocolOption(tcp.ProtocolNumber, &bufauto)
33+
34+
// probably a bad idea? github.com/tailscale/tailscale/blob/9d9a70d81d/wgengine/netstack/netstack.go#L330
35+
// coder.com/blog/delivering-5x-faster-throughput-in-coder-2-12-0
36+
// ccopt := tcpip.CongestionControlOption("cubic")
37+
// _ = s.SetTransportProtocolOption(tcp.ProtocolNumber, &ccopt)
38+
39+
ttl := tcpip.DefaultTTLOption(128)
40+
s.SetNetworkProtocolOption(ipv4.ProtocolNumber, &ttl)
41+
s.SetNetworkProtocolOption(ipv6.ProtocolNumber, &ttl)
42+
43+
// github.com/tailscale/tailscale/blob/c4d0237e5c/wgengine/netstack/netstack_tcpbuf_default.go
44+
tcpRXBufOpt := tcpip.TCPReceiveBufferSizeRangeOption{
45+
Min: tcp.MinBufferSize,
46+
Default: tcp.DefaultSendBufferSize,
47+
Max: 8 << 20, // 8MiB
48+
}
49+
tcpTXBufOpt := tcpip.TCPSendBufferSizeRangeOption{
50+
Min: tcp.MinBufferSize,
51+
Default: tcp.DefaultReceiveBufferSize,
52+
Max: 6 << 20, // 6MiB
53+
}
54+
// github.com/tailscale/tailscale/blob/c4d0237e5c/wgengine/netstack/netstack.go#L329
55+
_ = s.SetTransportProtocolOption(tcp.ProtocolNumber, &tcpRXBufOpt)
56+
_ = s.SetTransportProtocolOption(tcp.ProtocolNumber, &tcpTXBufOpt)
4557
}
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)
5458
}

0 commit comments

Comments
 (0)