本文へ
ハクソク

世界を動かす技術を、日本語で。

Tailscaleをより速くする方法

元記事: 原文(tailscale.com)

概要

  • Tailscale はNATトラバーサルとネットワーク高速化に注力
  • Linux/Android 向けのメモリ・スループット最適化を進行中
  • マルチキュー技術 でサブネットルーターやアプリコネクタの性能向上
  • netmapキャッシュ による起動高速化と不安定なネットワーク対応
  • 今後は パフォーマンステストツール の開発にも注力予定

Tailscaleのネットワーク高速化への取り組み

  • NATトラバーサル を独自技術で実現し、幅広いネットワーク条件下で接続性を確保
  • TCP/UDPスループット 向上のため、Linuxデバイスでの最適化やwireguard-goの改良を実施
  • Tailscale Peer Relays などのネットワークプリミティブを開発し、困難な環境でも性能を維持
  • パフォーマンス重視のワークロード (CI、エージェントワークフロー、リモート開発、ロボティクス、テレメトリ等)にも対応可能な実用性を実現

メモリオーバーヘッド削減とキュー最適化

  • 小パケット (1KiB程度)が大半だが、LinuxのGRO利用には64KiBバッファが必要
  • 従来は各パケットを64KiBバッファにコピーしていたが、 直接大きなバッファ内で管理 することでメモリ効率化
  • 多数の小パケットが1つの割り当てで済み、コピー回数も削減
  • 5%程度の速度向上 を多くのネットワーク構成で実現
  • パケットキュー長の短縮 により、待機時間とメモリオーバーヘッドも削減
  • 解放されたメモリ資源を サブネットルーターやアプリコネクタ に還元

マルチキュー技術の導入

  • サブネットルーター や アプリコネクタ、 エグジットノード でマルチキュー化を実現
    • 複数の独立したストリームを 単一スレッドで順序維持 して処理していた従来方式から進化
    • 各ストリームごとに 専用レーン を割り当て、CPUコア全体で並列処理
  • レイテンシ低減 と スループット向上 を両立
  • ハードウェアリソースの有効活用による 体感速度の大幅向上
  • 特に 多ユーザー・短命接続 が多い環境で効果を発揮

writevによるスループット向上

  • Linuxのwritev機能 を活用し、複数のパケットデータを一括でカーネルに渡す最適化
  • データコピー回数や書き込み操作の削減 によりメモリ効率とスループットを向上

netmapキャッシュによる起動高速化

  • Linux/Android で先行導入、他OSにも展開予定
  • ネットワークマップ(netmap) をディスクにキャッシュし、コントロールプレーン到達前でも接続開始可能
  • 悪条件下(不安定Wi-Fi・ホテルネット等) でも迅速な起動を実現
  • キャッシュは一度でも接続経験がある場合のみ有効、ディスク常駐が必須
  • 大規模tailnetやSDカード等の記憶媒体 では利用推奨外の場合あり
  • ウォームキャッシュ起動 により、通常より1~2桁速い接続確立が可能

今後のリリース予定

  • バッファ変更によるメモリ削減 (Linux/Android):v1.104クライアントで提供予定
  • マルチキュー対応 :v1.104以降のリリースで提供
  • writev等によるスループット向上 :2026年春に一部実装済、追加最適化はv1.104以降
  • netmapキャッシュ :現行クライアントでfeature flagとして利用可能。v1.104でデフォルト化予定、モバイルはv1.104以降を予定

パフォーマンステストツールへの課題と展望

  • 現状のパフォーマンステストツール の課題
    • 配布の手間 :エンドポイントごとにツール導入が必要
    • ワークフローの硬直化 :誤ったテストや誤判定のリスク
    • 新プロトコル未対応 :QUICやHTTP/3等をサポートしないツールが多い
    • Tailscale固有情報の非対応 :DERP利用やピアリレー有無、経路変化の可視化不可
  • Tailscaleネイティブなパフォーマンスツール の開発を検討中
    • ユーザー自身が ネットワーク状態を正確に把握・診断 できる仕組みの提供を目指す

Tailscale は今後もネットワーク高速化とユーザー体験向上のため、技術革新とツール開発を継続予定

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

投稿がLinux/Androidに焦点を当てているのは、単にそこから始まったからなのか、それともLinux/Androidでしかできない技術を活用しているからなのか、気になるな。

└

どうやら、DarwinやNTには1:1で存在しないLinuxの機能を活用しているみたいだね。

私たちのユースケースでは、250セッションでトンネルを通して60mb/sしか流せないのに、レイテンシが急上昇したよ。

エグジットノードでのバッテリー消費を減らしたいな。

└

バッテリー駆動のデバイスを出口ノードとして使ってるの?

以前はTailscaleが大好きだったんだけど、インターネットにさらされた自宅のネットワークにWireGuardを導入して、ダイナミックDNSプロバイダーを使ったら、すぐに意味がなくなっちゃった。生のWireGuardの方が安定してるし(スマホのDNS問題に悩まされることもないし)、速く感じるし、設定もめちゃくちゃ簡単なんだよね。

└

セットアップを教えてくれない?自分のNucやRaspberry Pi用にWireGuardを自己ホスティングしようと調べたけど、結局Tailscaleにしたのは、デバイスの追加や削除が自己ホスティングのWireGuardよりもずっと簡単で、証明書やメンテナンスに悩まされることがなかったからなんだ。

└

Tailscaleの一番好きなところは、ポートを開けなくてもサーバーにSSH/RDPできるところだね。

└

Tailscaleの設定は2分で終わるし、デバイスを追加するのも全く設定なしでできるよ。WireGuardは設定に30分から1時間かかって、ポートフォワーディングやDDNSの設定、各デバイス用のキーを作って手動で追加しなきゃいけない。でも、その分100%のコントロールがある。パフォーマンスに関しては、違いは感じてないな。俺のインターネット接続は、Tailscaleがパフォーマンスの限界に達する前にもう限界に達しちゃうから。便利さで言えばTailscaleの勝ちだね。

└

いや、もし生のWireGuardがめちゃくちゃ簡単に設定できると思ってるなら、ちょっと誤解してるよ。確かにIPSecよりは簡単だけど、Tailscaleより簡単ってことは絶対ない。生のWireGuardの設定からTailscaleに移行したのは、数ヶ月いじらないと設定の詳細を忘れちゃうから。Tailscaleに任せた方が楽だと思ったんだ。

└

使い方次第だね…俺は母国に出口ノードとして動いてるラズベリーパイを2台持ってるんだ。1台は母の家、もう1台は義理の家に。どちらも普通のインターネットプロバイダーのルーターを使ってて、少なくとも1台のルーターはポートフォワーディングをちゃんとサポートできない。Tailscaleのおかげで、家で全部設定して、5分でネットワークに接続できたよ。

└

普通のWireGuardから始めて、Tailscaleに移行したんだけど、俺の使い方では: - パートナーにアプリをインストールしてログインするように言ったら、Tailnetに参加できた。彼女はWireGuardが何か知らないし、気にもしてないけど、今は自分のホストしたサービスにスマホからアクセスできるようになった。 - CIジョブなど、マシンを簡単に動的にTailnetに登録できる。 - DNSリゾルバーを自ホストして、Tailnetに接続されたデバイスのためだけに機能させることができる。普通のWireGuardでもこれらの目標は達成できたと思うけど、かなりの複雑さをTailscaleに任せられた気がするよ。

Hacker Newsで議論の続きを見る

同じ出典の記事