tailscale/cmd/tailscaled
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>
2022-11-28 15:59:33 -08:00
..
childproc cmd/tailscaled/childproc: add be-child registration mechanism 2022-02-24 14:20:20 -08:00
debug.go all: remove old +build tags 2022-11-04 07:25:42 -07:00
depaware.txt net/connstats: invert network logging data flow (#6272) 2022-11-28 15:59:33 -08:00
generate.go cmd/{tailscale,tailscaled}: embed manifest into Windows binaries 2022-11-21 18:15:51 -05:00
install_darwin.go all: remove old +build tags 2022-11-04 07:25:42 -07:00
install_windows.go all: remove old +build tags 2022-11-04 07:25:42 -07:00
manifest_windows_386.syso cmd/{tailscale,tailscaled}: embed manifest into Windows binaries 2022-11-21 18:15:51 -05:00
manifest_windows_amd64.syso cmd/{tailscale,tailscaled}: embed manifest into Windows binaries 2022-11-21 18:15:51 -05:00
manifest_windows_arm64.syso cmd/{tailscale,tailscaled}: embed manifest into Windows binaries 2022-11-21 18:15:51 -05:00
manifest_windows_arm.syso cmd/{tailscale,tailscaled}: embed manifest into Windows binaries 2022-11-21 18:15:51 -05:00
proxy.go all: remove old +build tags 2022-11-04 07:25:42 -07:00
required_version.go all: remove old +build tags 2022-11-04 07:25:42 -07:00
ssh.go ssh/tailssh: add Tailscale SSH (server) support on FreeBSD 2022-11-10 20:25:23 -08:00
taildrop.go ipn/ipnserver: change Server to let LocalBackend be supplied async 2022-11-28 09:48:33 -08:00
tailscaled_bird.go cmd/tailscaled, net/tstun: add build tags to omit BIRD and TAP 2022-11-07 11:13:14 -05:00
tailscaled_notwindows.go all: remove old +build tags 2022-11-04 07:25:42 -07:00
tailscaled_test.go cmd/tailscaled: add a no-op test for profiling init-time memory allocs 2022-02-24 14:58:12 -08:00
tailscaled_windows.go cmd/tailscaled: unify the two Windows paths + separate IPN server path 2022-11-28 13:31:49 -08:00
tailscaled.defaults cmd/tailscaled: rename relaynode reference in defaults file comment 2020-03-13 14:38:04 -07:00
tailscaled.go cmd/tailscaled: unify the two Windows paths + separate IPN server path 2022-11-28 13:31:49 -08:00
tailscaled.openrc tstest/integration/vms: use an in-process logcatcher (#2360) 2021-07-08 14:39:45 -04:00
tailscaled.service cmd/tailscaled: use explicit equal sign in --port=$PORT in tailscaled.service 2022-09-22 11:54:22 -07:00
windows-manifest.xml cmd/{tailscale,tailscaled}: embed manifest into Windows binaries 2022-11-21 18:15:51 -05:00
with_cli.go all: remove old +build tags 2022-11-04 07:25:42 -07:00