I was using zerotier before, and start to use tailscale these days. I quickly realized that tailscale is much slower than zerotier in p2p connection(very hard to have a direct connection). tailscale used relay at the most of time. but zerotier always can direct connect successfully at the first second.
Here is some info of my network status.
Device A:
$ tailscale netcheck
Report:
* UDP: true
* IPv4: yes, **masked**
* IPv6: yes, **masked**
* MappingVariesByDestIP: false
* HairPinning: false
* PortMapping: UPnP, NAT-PMP, PCP
* Nearest DERP: Tokyo
* DERP latency:
- tok: 98ms (Tokyo)
- syd: 159.1ms (Sydney)
- lhr: 187.1ms (London)
$ tailscale ping -verbose device-b
lookup "**masked**" => "**masked**"
pong from **masked** (**masked**) via DERP(sfo) in 1.842s
pong from **masked** (**masked**) via DERP(sfo) in 1.365s
pong from **masked** (**masked**) via DERP(sfo) in 619ms
pong from **masked** (**masked**) via DERP(sfo) in 708ms
pong from **masked** (**masked**) via DERP(sfo) in 356ms
pong from **masked** (**masked**) via DERP(sfo) in 756ms
pong from **masked** (**masked**) via DERP(sfo) in 362ms
pong from **masked** (**masked**) via DERP(sfo) in 1.049s
pong from **masked** (**masked**) via DERP(sfo) in 364ms
pong from **masked** (**masked**) via DERP(sfo) in 358ms
Device B:
$ tailscale netcheck
Report:
* UDP: true
* IPv4: yes, **masked**
* IPv6: no
* MappingVariesByDestIP: false
* HairPinning: false
* PortMapping: UPnP
* Nearest DERP: San Francisco
* DERP latency:
- sfo: 151.5ms (San Francisco)
- tok: 168.1ms (Tokyo)
- dfw: 168.3ms (Dallas)
$ tailscale ping -verbose device-a
lookup "**masked**" => "**masked**"
pong from **masked** (**masked**) via DERP(sfo) in 1.113s
pong from **masked** (**masked**) via DERP(sfo) in 360ms
pong from **masked** (**masked**) via DERP(sfo) in 1.499s
pong from **masked** (**masked**) via DERP(sfo) in 1.141s
pong from **masked** (**masked**) via DERP(sfo) in 365ms
pong from **masked** (**masked**) via DERP(sfo) in 407ms
pong from **masked** (**masked**) via DERP(sfo) in 369ms
pong from **masked** (**masked**) via DERP(sfo) in 361ms
pong from **masked** (**masked**) via DERP(sfo) in 604ms
pong from **masked** (**masked**) via DERP(tok) in 253ms
device A is behind one NAT and have a working UPnP, it should be able to connect directly.
I also tried to ping another device continuously. sometimes the tailscale can make direct connection after hundreds of pings, sometimes it will require thousands of pings.