Poor performance between tailnet devices
The most common cause of performance issues between two devices on a Tailscale network (known as a tailent) is that Tailscale couldn't establish direct connections between the two devices. When that happens, Tailscale connects them through a DERP relay server. DERP relay servers are how Tailscale circumvents NAT traversal problems to allow devices to connect when they otherwise wouldn't have been able to do so. However, using a DERP relay server results in additional latency because the packets sent between the devices go through the DERP server before reaching their destination. DERP servers also limit throughput to ensure fairness between everyone using the DERP server.
Use the following steps to help you troubleshoot why tailnet devices experience network performance issues when connecting to each other.
-
Gather basic information about the connection between the two devices.
You can use the
tailscale pingcommand to gather network information about the connection between two tailnet devices. The output shows useful information like whether a connection is possible, the latency in milliseconds, and the DERP servers used.The output also indicates other information about the connection between the two devices. All tailnet connects start using a relayed connection and transition to a direct connection (if one is possible). However, it might take a long time to establish a direct connection, or the devices might establish a direct connection and then revert to a relayed one.
-
Determine the connection types each device is using.
You can determine the connection types between two tailnet devices using the
tailscale statuscommand. Running the command lists all the connections and connection types between the current device and the other devices in the tailnet.If the current device only uses relay connections, it likely can't establish direct connections. If the current device uses direct and relay connections, it indicates that the NAT traversal problem likely originates from the other device.
-
Get a report of each device's network conditions.
You can determine the network conditions of a device using the
tailscale netcheckcommand. The command's output includes useful information like whether the device supports UDP or port mapping and the latency information for the nearest DERP servers. Refer to troubleshooting withnetcheckfor more information and help interpreting the output.If both devices use a direct connection and you didn't uncover any problems with the
tailscale ping,tailscale status, ortailscale netcheckcommands, the issue might be the connection to the internet.
