{"slug":"tailscale-ping-message-types","title":"Tailscale ping message types","tags":["tailscale"],"agent_summary":"Last validated: Jan 13, 2026","trigger_phrases":[],"runnable":false,"markdown":"\r\n# Tailscale ping message types\r\n\r\nLast validated: Jan 13, 2026\r\n\r\nThe standard `ping` command uses [Internet Control Message Protocol](https://www.rfc-editor.org/rfc/rfc792.html) (ICMP) echo request and echo reply messages to test connectivity between two devices on a network. When you run a standard ping command, your system:\r\n\r\n1. Sends ICMP echo request packets to the target IP address.\r\n2. Waits for ICMP echo reply packets from the target.\r\n3. Measures the round-trip time.\r\n4. Reports packet loss statistics.\r\n\r\nThe standard `ping` command primarily tests basic IP connectivity and measures latency. Many firewalls and network configurations block ICMP traffic, which can cause standard `ping` commands to fail even when other types of connectivity exist.\r\n\r\nThe Tailscale ping command extends beyond standard ICMP ping functionality. It lets you test [connectivity](https://tailscale.com/docs/reference/device-connectivity) using multiple protocols to provide more comprehensive information about your Tailscale network (known as a [tailnet](https://tailscale.com/docs/concepts/tailnet)) to help troubleshoot Tailscale-specific connectivity issues.\r\n\r\nYou can use the [Tailscale CLI](https://tailscale.com/docs/reference/tailscale-cli) ( [`tailscale ping`](https://tailscale.com/docs/reference/tailscale-cli#ping)) to send Tailscale ping messages. Tailscale ping supports four distinct ping message types, each serving a specific purpose in [diagnosing network connectivity](https://tailscale.com/docs/reference/troubleshooting/connectivity). The supported ping types are DISCO, ICMP, TSMP, and peer API.\r\n\r\n## [DISCO](https://tailscale.com/docs/reference/ping-types\\#disco)\r\n\r\nDISCO (discovery) is Tailscale's protocol for peer-to-peer path discovery and [NAT traversal](https://tailscale.com/blog/how-tailscale-works). By default, the Tailscale ping command uses the DISCO protocol. DISCO ping messages test direct connectivity between tailnet devices.\r\n\r\nTo send a DISCO ping message, use [`tailscale ping`](https://tailscale.com/docs/reference/tailscale-cli#ping) command without any flags.\r\n\r\n```shell\r\ntailscale ping device-name\r\npong from device-name  (100.100.100.123) via DERP(nue) in 20ms\r\npong from device-name  (100.100.100.123) via 1.2.3.4:56126 in 20ms\r\n```\r\n\r\nThe ping output also shows the path taken to reach the target device, which starts off as a [DERP connection](https://tailscale.com/docs/reference/derp-servers), then establishes either a direct connection or a peer relay connection. The following is an example of a DERP connection followed by a [peer relay](https://tailscale.com/docs/features/peer-relay) connection, then a direct connection:\r\n\r\n```shell\r\ntailscale ping device-name\r\npong from device-name (100.100.100.123) via DERP(iad) in 39ms\r\npong from device-name (100.100.100.123) via peer-relay(198.51.100.167:7777:vni:7) in 35ms\r\npong from device-name (100.100.100.123) via peer-relay(198.51.100.167:7777:vni:7) in 36ms\r\npong from device-name (100.100.100.123) via peer-relay(198.51.100.167:7777:vni:7) in 35ms\r\npong from device-name (100.100.100.123) via 203.0.113.5:37597 in 41ms\r\n```\r\n\r\nFor more information about Tailscale connection types, refer to [connection types in Tailscale](https://tailscale.com/docs/reference/connection-types).\r\n\r\n## [ICMP](https://tailscale.com/docs/reference/ping-types\\#icmp)\r\n\r\nTailscale ICMP ping messages send a normal ICMP ping message over Tailscale's [encrypted](https://tailscale.com/docs/concepts/tailscale-encryption) WireGuard connection. Tailscale ICMP ping message test end-to-end IP connectivity between Tailscale devices.\r\n\r\nTo send a ICMP ping message, use the `--icmp` flag with the [`tailscale ping`](https://tailscale.com/docs/reference/tailscale-cli#ping) command.\r\n\r\n```shell\r\ntailscale ping --icmp device-name\r\npong from device-name (100.100.100.123) via ICMP in 20ms\r\n```\r\n\r\n## [TSMP (Tailscale Message Protocol)](https://tailscale.com/docs/reference/ping-types\\#tsmp-tailscale-message-protocol)\r\n\r\nTSMP is a Tailscale-specific protocol designed to test connectivity when ICMP might be blocked. Tailscale TSMP ping messages test end-to-end IP connectivity over Tailscale's encrypted [WireGuard](https://tailscale.com/docs/concepts/wireguard) tunnel but they bypass the device's operating system's IP stack.\r\n\r\nTo send a TSMP ping message, use the `--tsmp` flag with the [`tailscale ping`](https://tailscale.com/docs/reference/tailscale-cli#ping) command.\r\n\r\n```shell\r\ntailscale ping --tsmp device-name\r\npong from device-name (100.100.100.123, 12345) via TSMP in 20ms\r\n```\r\n\r\n## [Peer API](https://tailscale.com/docs/reference/ping-types\\#peer-api)\r\n\r\nPeer API ping tests the HTTP-based peer API connectivity between tailnet devices. It's useful when troubleshooting Tailscale features like [Serve](https://tailscale.com/docs/features/tailscale-serve), [Taildrive](https://tailscale.com/docs/features/taildrive), and [Taildrop](https://tailscale.com/docs/features/taildrop).\r\n\r\nTo send a peer API ping message, use the `--peerapi` flag with the [`tailscale ping`](https://tailscale.com/docs/reference/tailscale-cli#ping) command.\r\n\r\n```shell\r\ntailscale ping --peerapi device-name\r\nhit peerapi of 100.100.100.123 (device-name.corp.ts.net.) at http://100.100.100.123:12345 in 20ms\r\n```\r\n","html":"<h1>Tailscale ping message types</h1>\n<p>Last validated: Jan 13, 2026</p>\n<p>The standard <code>ping</code> command uses <a href=\"https://www.rfc-editor.org/rfc/rfc792.html\">Internet Control Message Protocol</a> (ICMP) echo request and echo reply messages to test connectivity between two devices on a network. When you run a standard ping command, your system:</p>\n<ol>\n<li>Sends ICMP echo request packets to the target IP address.</li>\n<li>Waits for ICMP echo reply packets from the target.</li>\n<li>Measures the round-trip time.</li>\n<li>Reports packet loss statistics.</li>\n</ol>\n<p>The standard <code>ping</code> command primarily tests basic IP connectivity and measures latency. Many firewalls and network configurations block ICMP traffic, which can cause standard <code>ping</code> commands to fail even when other types of connectivity exist.</p>\n<p>The Tailscale ping command extends beyond standard ICMP ping functionality. It lets you test <a href=\"https://tailscale.com/docs/reference/device-connectivity\">connectivity</a> using multiple protocols to provide more comprehensive information about your Tailscale network (known as a <a href=\"https://tailscale.com/docs/concepts/tailnet\">tailnet</a>) to help troubleshoot Tailscale-specific connectivity issues.</p>\n<p>You can use the <a href=\"https://tailscale.com/docs/reference/tailscale-cli\">Tailscale CLI</a> ( <a href=\"https://tailscale.com/docs/reference/tailscale-cli#ping\"><code>tailscale ping</code></a>) to send Tailscale ping messages. Tailscale ping supports four distinct ping message types, each serving a specific purpose in <a href=\"https://tailscale.com/docs/reference/troubleshooting/connectivity\">diagnosing network connectivity</a>. The supported ping types are DISCO, ICMP, TSMP, and peer API.</p>\n<h2><a href=\"https://tailscale.com/docs/reference/ping-types#disco\">DISCO</a></h2>\n<p>DISCO (discovery) is Tailscale's protocol for peer-to-peer path discovery and <a href=\"https://tailscale.com/blog/how-tailscale-works\">NAT traversal</a>. By default, the Tailscale ping command uses the DISCO protocol. DISCO ping messages test direct connectivity between tailnet devices.</p>\n<p>To send a DISCO ping message, use <a href=\"https://tailscale.com/docs/reference/tailscale-cli#ping\"><code>tailscale ping</code></a> command without any flags.</p>\n<pre><code class=\"language-shell\">tailscale ping device-name\r\npong from device-name  (100.100.100.123) via DERP(nue) in 20ms\r\npong from device-name  (100.100.100.123) via 1.2.3.4:56126 in 20ms\n</code></pre>\n<p>The ping output also shows the path taken to reach the target device, which starts off as a <a href=\"https://tailscale.com/docs/reference/derp-servers\">DERP connection</a>, then establishes either a direct connection or a peer relay connection. The following is an example of a DERP connection followed by a <a href=\"https://tailscale.com/docs/features/peer-relay\">peer relay</a> connection, then a direct connection:</p>\n<pre><code class=\"language-shell\">tailscale ping device-name\r\npong from device-name (100.100.100.123) via DERP(iad) in 39ms\r\npong from device-name (100.100.100.123) via peer-relay(198.51.100.167:7777:vni:7) in 35ms\r\npong from device-name (100.100.100.123) via peer-relay(198.51.100.167:7777:vni:7) in 36ms\r\npong from device-name (100.100.100.123) via peer-relay(198.51.100.167:7777:vni:7) in 35ms\r\npong from device-name (100.100.100.123) via 203.0.113.5:37597 in 41ms\n</code></pre>\n<p>For more information about Tailscale connection types, refer to <a href=\"https://tailscale.com/docs/reference/connection-types\">connection types in Tailscale</a>.</p>\n<h2><a href=\"https://tailscale.com/docs/reference/ping-types#icmp\">ICMP</a></h2>\n<p>Tailscale ICMP ping messages send a normal ICMP ping message over Tailscale's <a href=\"https://tailscale.com/docs/concepts/tailscale-encryption\">encrypted</a> WireGuard connection. Tailscale ICMP ping message test end-to-end IP connectivity between Tailscale devices.</p>\n<p>To send a ICMP ping message, use the <code>--icmp</code> flag with the <a href=\"https://tailscale.com/docs/reference/tailscale-cli#ping\"><code>tailscale ping</code></a> command.</p>\n<pre><code class=\"language-shell\">tailscale ping --icmp device-name\r\npong from device-name (100.100.100.123) via ICMP in 20ms\n</code></pre>\n<h2><a href=\"https://tailscale.com/docs/reference/ping-types#tsmp-tailscale-message-protocol\">TSMP (Tailscale Message Protocol)</a></h2>\n<p>TSMP is a Tailscale-specific protocol designed to test connectivity when ICMP might be blocked. Tailscale TSMP ping messages test end-to-end IP connectivity over Tailscale's encrypted <a href=\"https://tailscale.com/docs/concepts/wireguard\">WireGuard</a> tunnel but they bypass the device's operating system's IP stack.</p>\n<p>To send a TSMP ping message, use the <code>--tsmp</code> flag with the <a href=\"https://tailscale.com/docs/reference/tailscale-cli#ping\"><code>tailscale ping</code></a> command.</p>\n<pre><code class=\"language-shell\">tailscale ping --tsmp device-name\r\npong from device-name (100.100.100.123, 12345) via TSMP in 20ms\n</code></pre>\n<h2><a href=\"https://tailscale.com/docs/reference/ping-types#peer-api\">Peer API</a></h2>\n<p>Peer API ping tests the HTTP-based peer API connectivity between tailnet devices. It's useful when troubleshooting Tailscale features like <a href=\"https://tailscale.com/docs/features/tailscale-serve\">Serve</a>, <a href=\"https://tailscale.com/docs/features/taildrive\">Taildrive</a>, and <a href=\"https://tailscale.com/docs/features/taildrop\">Taildrop</a>.</p>\n<p>To send a peer API ping message, use the <code>--peerapi</code> flag with the <a href=\"https://tailscale.com/docs/reference/tailscale-cli#ping\"><code>tailscale ping</code></a> command.</p>\n<pre><code class=\"language-shell\">tailscale ping --peerapi device-name\r\nhit peerapi of 100.100.100.123 (device-name.corp.ts.net.) at http://100.100.100.123:12345 in 20ms\n</code></pre>\n"}