David Anderson
58b8ebd290
derp: add per-reason packet drop counter.
...
In parallel with the summed counter for now, for dashboard migration.
Signed-off-by: David Anderson <dave@natulte.net>
2020-03-20 15:14:01 -07:00
David Anderson
1e031001db
derp: move write timeout to package constant.
...
Signed-off-by: David Anderson <dave@natulte.net>
2020-03-20 15:14:01 -07:00
David Anderson
dbfc916273
derp: add short queues between reader and writer, drop on overload.
...
This avoids the server blocking on misbehaving or heavily contended
clients. We attempt to drop from the head of the queue to keep
overall queueing time lower.
Also:
- fixes server->client keepalives, which weren't happening.
- removes read rate-limiter, deferring instead to kernel-level
global limiter/fair queuer.
Signed-off-by: David Anderson <dave@natulte.net>
2020-03-20 15:14:01 -07:00
David Crawshaw
131541c06d
derp: deflake test
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-03-18 16:33:25 +11:00
David Crawshaw
72dbf26f63
derp: test that client a->b and a->c relaying do not interfere
...
Without the recent write deadline introduction, this test fails.
They still do interfere, but the interference is now bound by
the write deadline. Many improvements are possible.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-03-12 14:42:48 -04:00
David Crawshaw
e838b3fb59
derp: use a write timeout when sending to clients
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-03-12 14:42:48 -04:00
David Crawshaw
3df1b97ea8
derp: do not treat failure to relay as the fault of the sender
...
If Alice attempts to send a packet to Bob and the DERP server
encounters an error on the socket to Bob, we should not disconnect
Alice for that.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-03-12 14:42:48 -04:00
David Crawshaw
43aa8595dd
derp: introduce Conn interface
...
This lets us test with something other than a net.Conn.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-03-12 14:42:48 -04:00
Brad Fitzpatrick
4fd29349b9
derp: add clients_replaced counter
...
Updates #109
2020-03-11 11:55:43 -07:00
Brad Fitzpatrick
39c0ae1dba
derp/derpmap: new DERP config package, merge netcheck into magicsock more
...
Fixes #153
Updates #162
Updates #163
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-03-10 10:37:25 -07:00
Brad Fitzpatrick
5d8001d0ad
derp: add varz for home moves
...
Updates #162
Updates #163 (maybe)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-03-09 11:09:27 -07:00
Brad Fitzpatrick
e733fa6f7e
derp: add some varz tests for active/home conns
2020-03-05 20:29:07 -08:00
Brad Fitzpatrick
dd456f04c5
derp: actually record client's preferred bit
2020-03-05 19:02:54 -08:00
Brad Fitzpatrick
6978b93bdd
derp, magicsock: track home (preferred) vs visiting connections for stats
2020-03-05 15:00:56 -08:00
Brad Fitzpatrick
cf4aacde57
derp/derphttp: appease staticcheck
2020-03-05 12:34:57 -08:00
Brad Fitzpatrick
2cff9016e4
net/dnscache: add overly simplistic DNS cache package for selective use
...
I started to write a full DNS caching resolver and I realized it was
overkill and wouldn't work on Windows even in Go 1.14 yet, so I'm
doing this tiny one instead for now, just for all our netcheck STUN
derp lookups, and connections to DERP servers. (This will be caching a
exactly 8 DNS entries, all ours.)
Fixes #145 (can be better later, of course)
2020-03-05 12:23:37 -08:00
Brad Fitzpatrick
bf704a5218
derp: protocol negotiation, add v2: send src pub keys to clients in packets
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-03-04 09:55:13 -08:00
David Crawshaw
9be9738f62
derphttp: add TLSConfig field
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-03-04 12:40:33 -05:00
Brad Fitzpatrick
e371520cc5
tsweb, derp: add expvar http.Handler for Prometheus's format
...
And add some opinions.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-03-03 13:59:16 -08:00
Brad Fitzpatrick
517a91de75
derp/derphttp: fix reconnect behavior
...
I broke it in today's 752146a70f
.
Added some comments to prevent recurrences.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-28 13:39:48 -08:00
Brad Fitzpatrick
d59d0576af
derp: don't log on all dropped packets; super spammy
...
Signed-off-by: Brad Fitzpatrick <brad@danga.com>
2020-02-28 13:33:47 -08:00
Brad Fitzpatrick
38acccad09
derp: remove some debug noise I left in
...
:(
2020-02-28 13:20:56 -08:00
Brad Fitzpatrick
752146a70f
derp: clean up derphttp client code, use contexts
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-28 13:18:59 -08:00
Brad Fitzpatrick
3317531021
derp: fix JSON field typo, sort fields to make it easier to see inconsistencies
2020-02-21 14:18:09 -08:00
Brad Fitzpatrick
6cd81d5d1f
derp: add more derp stats for dropped and received packets
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-21 14:13:50 -08:00
Brad Fitzpatrick
2612e54ad1
derp, cmd/derper: add debug handlers, stats
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-21 09:35:53 -08:00
Brad Fitzpatrick
379a3125fd
derp, wgengine/magicsock: support more than just packets from Client.Recv
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 22:08:13 -08:00
Brad Fitzpatrick
88f1cc0c98
derp, cmd/derper: add rate limiting support, add default 5Mbps limit
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 15:26:30 -08:00
Brad Fitzpatrick
1166c34f6c
derp: fix staticcheck warning
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 14:49:47 -08:00
Brad Fitzpatrick
322cb58b14
derp: deflake test I flaked up in earlier change
...
I broke an invariant in 11048b8932
(it was even nicely
documented then).
Also clean up the test a bit from while I was debugging it.
Fixes #84
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 14:41:39 -08:00
Brad Fitzpatrick
f029c4c82d
derp: change the protocol framing to always include a length
...
Addresses one of crawshaw's TODOs.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 13:37:44 -08:00
Brad Fitzpatrick
11048b8932
derp: add docs on current protocol overview, break accept apart a bit
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 09:57:05 -08:00
Brad Fitzpatrick
79af6054bf
derp: don't start sending keepalives to client until after serverInfo sent
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 09:34:01 -08:00
Brad Fitzpatrick
1155716318
derp: rename some things in the client, add some docs
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-20 09:11:56 -08:00
Brad Fitzpatrick
4b461c2e77
derp: rename some things in the server, add some docs
2020-02-20 08:50:25 -08:00
Brad Fitzpatrick
619697063e
derp: more misc cleanups
...
And add an explicit derphttp.Client.Connect in the test now that it's
done lazily.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-18 10:09:37 -08:00
Brad Fitzpatrick
e06ca40650
wgengine, magicsock, derp: misc cleanups, docs
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-18 08:58:00 -08:00
Brad Fitzpatrick
259406e797
derp: move away from [32]byte key types
...
And some minor cleanup in the process.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-17 14:18:09 -08:00
Brad Fitzpatrick
769e25e37b
derp: use new types/key package
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-17 13:29:49 -08:00
Brad Fitzpatrick
2896be60db
Move "logger" package to under types, now that we have it.
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-14 20:23:05 -08:00
Brad Fitzpatrick
a59dc5f155
Use logger.Logf consistently. It was used in most places.
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-11 09:38:32 -08:00
Earl Lee
a8d8b8719a
Move Linux client & common packages into a public repo.
2020-02-09 09:32:57 -08:00