From 1b5b59231b1bc6a750837370ccb964fedc971e97 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Tue, 11 Aug 2020 19:16:15 +0000 Subject: [PATCH] derp: break down received packets by kind (disco vs. wireguard). Signed-off-by: David Anderson --- derp/derp_server.go | 12 ++++++++++++ go.sum | 2 ++ 2 files changed, 14 insertions(+) diff --git a/derp/derp_server.go b/derp/derp_server.go index acc7c5866..a3b18deca 100644 --- a/derp/derp_server.go +++ b/derp/derp_server.go @@ -26,6 +26,7 @@ import ( "golang.org/x/crypto/nacl/box" "golang.org/x/sync/errgroup" + "tailscale.com/disco" "tailscale.com/metrics" "tailscale.com/types/key" "tailscale.com/types/logger" @@ -62,6 +63,9 @@ type Server struct { _ [pad32bit]byte packetsSent, bytesSent expvar.Int packetsRecv, bytesRecv expvar.Int + packetsRecvByKind metrics.LabelMap + packetsRecvDisco *expvar.Int + packetsRecvWireguard *expvar.Int packetsDropped expvar.Int packetsDroppedReason metrics.LabelMap packetsDroppedUnknown *expvar.Int // unknown dst pubkey @@ -136,6 +140,7 @@ func NewServer(privateKey key.Private, logf logger.Logf) *Server { privateKey: privateKey, publicKey: privateKey.Public(), logf: logf, + packetsRecvByKind: metrics.LabelMap{Label: "kind"}, packetsDroppedReason: metrics.LabelMap{Label: "reason"}, clients: map[key.Public]*sclient{}, clientsEver: map[key.Public]bool{}, @@ -145,6 +150,8 @@ func NewServer(privateKey key.Private, logf logger.Logf) *Server { watchers: map[*sclient]bool{}, sentTo: map[key.Public]map[key.Public]int64{}, } + s.packetsRecvDisco = s.packetsRecvByKind.Get("disco") + s.packetsRecvWireguard = s.packetsRecvByKind.Get("wireguard") s.packetsDroppedUnknown = s.packetsDroppedReason.Get("unknown_dest") s.packetsDroppedFwdUnknown = s.packetsDroppedReason.Get("unknown_dest_on_fwd") s.packetsDroppedGone = s.packetsDroppedReason.Get("gone") @@ -751,6 +758,11 @@ func (s *Server) recvPacket(br *bufio.Reader, frameLen uint32) (dstKey key.Publi } s.packetsRecv.Add(1) s.bytesRecv.Add(int64(len(contents))) + if disco.LooksLikeDiscoWrapper(contents) { + s.packetsRecvDisco.Add(1) + } else { + s.packetsRecvWireguard.Add(1) + } return dstKey, contents, nil } diff --git a/go.sum b/go.sum index 3db39980e..91b9d592a 100644 --- a/go.sum +++ b/go.sum @@ -113,6 +113,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -133,6 +134,7 @@ golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191003212358-c178f38b412c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfruoXZIrh4YBgqVHtDvw0= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=