Josh Bleecher Snyder
ae2f24ec4e
remove some TODOs, make ip address extraction equally awful
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
ba49da429a
simplify change point
...
at the cost of some very, very naughty unsafe
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
83742afabf
convert manual tests into automated tests
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
b668e5d185
tewak
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
5410042dcd
start cleaning up code
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
75efd794a3
ipv6 support, UNTESTED, super hacky
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
36a4741bc5
comments
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
208e6eb0db
fix io_uring tun device reads
...
Well that's an interesting one!
Apparently if you issue multiple concurrent preadv calls on
a TUN device using io_uring, the TUN device falls over.
Possibly corrupting memory along the way.
Which might be why the kernel hung on shutdown...
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
fec66b4100
make it easy to toggle uring on/off
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
eff65381f2
switch file.go to test reads instead of writes
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
a8df9fa7cc
simpler init
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
78fd2b7880
stick closer to upstream tun reading code
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
001dec84de
make cgo pointer rules happy
...
well that was a mess
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
a8a7208dbd
use io_uring for sendmsg
...
and clean up some dead code and unify some things
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
f254f779b5
disable polling for now
...
we'll maybe bring it back with a token bucket or something.
and/or do multi-sqe submission.
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
3d91c5b369
they work with extra junk
...
thanks, dave
no thanks, kernel devs
write no work
use writev
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
2a2ed7cd17
tun writes...not working yet (but why not??)
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
55c1ce00be
use polling instead of syscall
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
4013c0edbb
smush together two return values from C
...
avoids a per-packet alloc
i will atone for my sins later
if only C let you return multiple values.
or Go let you pass in a pointer w/o it being on the heap.
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
783d2d4327
keep 8 requests in the queue at all times
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
71f35bda1a
remove all allocs
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
b83ac004f1
remove all allocations
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
59512181b5
mve sockaddr_in to Go
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
1ee40d1670
move iovec to go
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
bbccf68a76
sheesh
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
d7a7e2d17d
move msghdr to Go
2021-07-08 12:56:49 -07:00
Josh Bleecher Snyder
f26c0fcbd5
use io_uring
2021-07-08 12:56:49 -07:00
Christine Dodrill
1e83b97498
tstest/integration/vms: outgoing SSH test ( #2349 )
...
This does a few things:
1. Rewrites the tests so that we get a log of what individual tests
failed at the end of a test run.
2. Adds a test that runs an HTTP server via the tester tailscale node and
then has the VMs connect to that over Tailscale.
3. Dials the VM over Tailscale and ensures it answers SSH requests.
4. Other minor framework refactoring.
Signed-off-by: Christine Dodrill <xe@tailscale.com>
2021-07-08 11:38:01 -04:00
Christine Dodrill
97279a0fe0
tstest/integration/vms: add Oracle Linux image ( #2328 )
...
Oracle Linux[1] is a CentOS fork. It is not very special. I am adding it
to the integration jungle because I am adding it to pkgs and the website
directions.
[1]: https://www.oracle.com/linux/
Signed-off-by: Christine Dodrill <xe@tailscale.com>
2021-07-08 10:26:20 -04:00
Brad Fitzpatrick
a9fc583211
cmd/tailscale/cli: document the web subcommand a bit more
...
Fixes #2326
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-07 21:16:33 -07:00
Josh Bleecher Snyder
0ad92b89a6
net/tstun: fix data races
...
To remove some multi-case selects, we intentionally allowed
sends on closed channels (cc23049cd2
).
However, we also introduced concurrent sends and closes,
which is a data race.
This commit fixes the data race. The mutexes here are uncontended,
and thus very cheap.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2021-07-07 16:15:29 -07:00
Brad Fitzpatrick
7d417586a8
tstest/integration: help bust cmd/go's test caching
...
It was caching too aggressively, as it didn't see our deps due to our
running "go install tailscaled" as a child process.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-07 13:14:21 -07:00
Brad Fitzpatrick
3dcd18b6c8
tailcfg: note RegionID 900-999 reservation
2021-07-07 12:23:41 -07:00
Brad Fitzpatrick
ddb8726c98
util/deephash: don't reflect.Copy if element type is a defined uint8
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-07 11:58:04 -07:00
Brad Fitzpatrick
df176c82f5
util/deephash: skip alloc test under race detector
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-07 11:40:28 -07:00
Brad Fitzpatrick
6dc38ff25c
util/deephash: optimize hashing of byte arrays, reduce allocs in Hash
...
name old time/op new time/op delta
Hash-6 173µs ± 4% 101µs ± 3% -41.69% (p=0.000 n=10+9)
HashMapAcyclic-6 101µs ± 5% 105µs ± 3% +3.52% (p=0.001 n=9+10)
TailcfgNode-6 29.4µs ± 2% 16.4µs ± 3% -44.25% (p=0.000 n=8+10)
name old alloc/op new alloc/op delta
Hash-6 3.60kB ± 0% 1.13kB ± 0% -68.70% (p=0.000 n=10+10)
HashMapAcyclic-6 2.53kB ± 0% 2.53kB ± 0% ~ (p=0.137 n=10+8)
TailcfgNode-6 528B ± 0% 0B -100.00% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
Hash-6 84.0 ± 0% 40.0 ± 0% -52.38% (p=0.000 n=10+10)
HashMapAcyclic-6 202 ± 0% 202 ± 0% ~ (all equal)
TailcfgNode-6 11.0 ± 0% 0.0 -100.00% (p=0.000 n=10+10)
Updates tailscale/corp#2130
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-07 11:30:49 -07:00
Brad Fitzpatrick
3962744450
util/deephash: prevent infinite loop on map cycle
...
Fixes #2340
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-07 10:57:46 -07:00
Brad Fitzpatrick
aceaa70b16
util/deephash: move funcs to methods
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-07 08:17:18 -07:00
Irshad Pananilath
9288e0d61c
build_docker.sh: use build_dist.sh to inject version information
...
version.sh was removed in commit 5088af68
. Use `build_dist.sh shellvars`
to provide version information instead.
Signed-off-by: Irshad Pananilath <pmirshad+code@gmail.com>
2021-07-07 06:38:04 -07:00
Christine Dodrill
a8360050e7
tstest/integration/vms: make first end to end test ( #2332 )
...
This makes sure `tailscale status` and `tailscale ping` works. It also
switches goexpect to use a batch instead of manually banging out each
line, which makes the tests so much easier to read.
Signed-off-by: Christine Dodrill <xe@tailscale.com>
2021-07-06 12:50:19 -04:00
David Crawshaw
805d5d3cde
ipnlocal: move log line inside if statement
...
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2021-07-06 09:35:01 -07:00
Brad Fitzpatrick
14f901da6d
util/deephash: fix sync.Pool usage
...
Whoops.
From yesterday's 9ae3bd0939
(not yet
used by anything, fortunately)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-05 22:21:44 -07:00
Brad Fitzpatrick
e0258ffd92
util/deephash: use keyed struct literal, fix vet
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-05 21:31:30 -07:00
Brad Fitzpatrick
bf9f279768
util/deephash: optimize CPU a bit by by avoiding fmt in more places
...
name old time/op new time/op delta
Hash-6 179µs ± 5% 173µs ± 4% -3.12% (p=0.004 n=10+10)
HashMapAcyclic-6 115µs ± 3% 101µs ± 5% -11.51% (p=0.000 n=9+9)
TailcfgNode-6 30.8µs ± 4% 29.4µs ± 2% -4.51% (p=0.000 n=10+8)
name old alloc/op new alloc/op delta
Hash-6 3.60kB ± 0% 3.60kB ± 0% ~ (p=0.445 n=9+10)
HashMapAcyclic-6 2.53kB ± 0% 2.53kB ± 0% ~ (p=0.065 n=9+10)
TailcfgNode-6 528B ± 0% 528B ± 0% ~ (all equal)
name old allocs/op new allocs/op delta
Hash-6 84.0 ± 0% 84.0 ± 0% ~ (all equal)
HashMapAcyclic-6 202 ± 0% 202 ± 0% ~ (all equal)
TailcfgNode-6 11.0 ± 0% 11.0 ± 0% ~ (all equal)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-05 21:28:54 -07:00
Brad Fitzpatrick
58f2ef6085
util/deephash: add a benchmark and some benchmark data
...
No code changes.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-05 21:21:52 -07:00
Brad Fitzpatrick
9ae3bd0939
util/deephash: export a Hash func for use by the control plane
...
name old time/op new time/op delta
Hash-6 69.4µs ± 6% 68.4µs ± 4% ~ (p=0.286 n=9+9)
HashMapAcyclic-6 115µs ± 5% 115µs ± 4% ~ (p=1.000 n=10+10)
name old alloc/op new alloc/op delta
Hash-6 2.29kB ± 0% 1.88kB ± 0% -18.13% (p=0.000 n=10+10)
HashMapAcyclic-6 2.53kB ± 0% 2.53kB ± 0% ~ (all equal)
name old allocs/op new allocs/op delta
Hash-6 58.0 ± 0% 54.0 ± 0% -6.90% (p=0.000 n=10+10)
HashMapAcyclic-6 202 ± 0% 202 ± 0% ~ (all equal)
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-07-05 11:41:44 -07:00
Brad Fitzpatrick
700badd8f8
util/deephash: move internal/deephash to util/deephash
...
No code changes. Just a minor package doc addition about lack of API
stability.
2021-07-02 21:33:02 -07:00
Josh Bleecher Snyder
7f095617f2
internal/deephash: 8 bits of output is not enough
...
Running hex.Encode(b, b) is a bad idea.
The first byte of input will overwrite the first two bytes of output.
Subsequent bytes have no impact on the output.
Not related to today's IPv6 bug, but...wh::ps.
This caused us to spuriously ignore some wireguard config updates.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2021-07-02 13:48:27 -07:00
Josh Bleecher Snyder
c35a832de6
net/tstun: add inner loop to poll
...
This avoids re-enqueuing to t.bufferConsumed,
which makes the code a bit clearer.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2021-07-02 11:02:12 -07:00
Josh Bleecher Snyder
a4cc7b6d54
net/tstun: simplify code
...
Calculate whether the packet is injected directly,
rather than via an else branch.
Unify the exit paths. It is easier here than duplicating them.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2021-07-02 11:02:12 -07:00