sockstats: add validation for TCP socket stats
We can use the TCP_CONNECTION_INFO getsockopt() on Darwin to get OS-collected tx/rx bytes for TCP sockets. Since this API is not available for UDP sockets (or on Linux/Android), we can't rely on it for actual stats gathering. However, we can use it to validate the stats that we collect ourselves using read/write hooks, so that we can be more confident in them. We do need additional hooks from the Go standard library (added in tailscale/go#59) to be able to collect them. Updates tailscale/corp#9230 Updates #3363 Signed-off-by: Mihai Parparita <mihai@tailscale.com>
This commit is contained in:

committed by
Mihai Parparita

parent
6eca47b16c
commit
f4f8ed98d9
@ -42,10 +42,14 @@ const (
|
||||
)
|
||||
|
||||
type SockStat struct {
|
||||
TxBytes int64
|
||||
RxBytes int64
|
||||
TxBytesByInterface map[string]int64
|
||||
RxBytesByInterface map[string]int64
|
||||
TxBytes uint64
|
||||
RxBytes uint64
|
||||
TxBytesByInterface map[string]uint64
|
||||
RxBytesByInterface map[string]uint64
|
||||
|
||||
// NOCOMMIT
|
||||
ValidationTxBytes uint64
|
||||
ValidationRxBytes uint64
|
||||
}
|
||||
|
||||
func WithSockStats(ctx context.Context, label Label) context.Context {
|
||||
|
Reference in New Issue
Block a user