You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/net/tstun
Joe Tsai 2e5d08ec4f
net/connstats: invert network logging data flow (#6272)
Previously, tstun.Wrapper and magicsock.Conn managed their
own statistics data structure and relied on an external call to
Extract to extract (and reset) the statistics.
This makes it difficult to ensure a maximum size on the statistics
as the caller has no introspection into whether the number
of unique connections is getting too large.

Invert the control flow such that a *connstats.Statistics
is registered with tstun.Wrapper and magicsock.Conn.
Methods on non-nil *connstats.Statistics are called for every packet.
This allows the implementation of connstats.Statistics (in the future)
to better control when it needs to flush to ensure
bounds on maximum sizes.

The value registered into tstun.Wrapper and magicsock.Conn could
be an interface, but that has two performance detriments:

1. Method calls on interface values are more expensive since
they must go through a virtual method dispatch.

2. The implementation would need a sync.Mutex to protect the
statistics value instead of using an atomic.Pointer.

Given that methods on constats.Statistics are called for every packet,
we want reduce the CPU cost on this hot path.

Signed-off-by: Joe Tsai <joetsai@digital-static.net>
2 years ago
..
constants.go wgengine/netstack: make netstack MTU be 1280 also 3 years ago
fake.go go.mod: upgrade wireguard-windows, de-fork wireguard-go 4 years ago
ifstatus_noop.go all: remove old +build tags 2 years ago
ifstatus_windows.go go.mod: upgrade wireguard-windows, de-fork wireguard-go 4 years ago
linkattrs_linux.go net/tstun: set link speed to SPEED_UNKNOWN 3 years ago
linkattrs_notlinux.go all: remove old +build tags 2 years ago
tap_linux.go cmd/tailscaled, net/tstun: add build tags to omit BIRD and TAP 2 years ago
tap_unsupported.go cmd/tailscaled, net/tstun: add build tags to omit BIRD and TAP 2 years ago
tun.go cmd/tailscaled, net/tstun: add build tags to omit BIRD and TAP 2 years ago
tun_linux.go net/tstun: diagnose /dev/net/tun fd leak, give better failure message 2 years ago
tun_macos.go all: remove old +build tags 2 years ago
tun_notwindows.go all: remove old +build tags 2 years ago
tun_windows.go net/tstun: update tun_windows for wintun 0.14 API revisions, update wireguard-go dependency to 82d2aa87aa623cb5143a41c3345da4fb875ad85d 3 years ago
wrap.go net/connstats: invert network logging data flow (#6272) 2 years ago
wrap_test.go net/connstats: invert network logging data flow (#6272) 2 years ago