TailscaleとOSIモデル
最終検証日:
翻訳: 竹洞 陽一郎
OSI(Open Systems Interconnection)モデルは、ネットワーク通信がどのように機能するかを説明するための理論的なフレームワークです。
このモデルは、プロセスを7つの階層的なレイヤーに分割し、各レイヤーには固有の特性があり、直接上下に隣接するレイヤーと相互作用します。
次の表は、これらの各レイヤーをまとめたものです。
| # | レイヤー | 説明 |
|---|---|---|
| 7 | アプリケーション層 | アプリケーション層は、アプリケーションが他のアプリケーションとデータをやり取りできるようにする、ネットワークサービスとプロトコルを提供します。エンドユーザーに最も近いレイヤーです。 |
| 6 | プレゼンテーション層 | プレゼンテーション層は、データのエンコーディング、フォーマット、圧縮、解凍、およびアプリケーション層とネットワーク間でのデータ変換に関連するものすべてを表すカテゴリです。 |
| 5 | セッション層 | セッション層は、アプリケーション間のセッションや接続に関連するものすべてを扱うカテゴリです。これには、セッションの確立、維持、終了、およびセッションの回復とエラー処理が含まれます。 |
| 4 | トランスポート層 | トランスポート層は、エラーチェックとデータフロー制御によって、完全なデータ転送を保証します。TCPやUDPなどのプロトコルが関わります。 |
| 3 | ネットワーク層 | ネットワーク層は、パケットのルーティングとIPアドレス(IPv4およびIPv6)の管理を行い、ネットワーク間のデータ伝送を実現します。 |
| 2 | データリンク層 | データリンク層は、データのカプセル化(フレーミングと呼ばれます)、直接接続された2つのデバイス間のデータ転送、およびエラーの検出と訂正を管理します。論理リンク制御(LLC)層とメディアアクセス制御(MAC)層という2つの主要なサブレイヤーが含まれます。 |
| 1 | 物理層 | 物理層は、ケーブル、スイッチ、その他のネットワークインターフェースカード(NIC)など、デバイス間の物理的な接続に関わります。 |
OSIモデルは、ネットワークアーキテクチャを理解し議論するための有用なツールですが、特にTailscaleのような最新のネットワーク技術を考える場合、実際の実装と完全に一致することはほとんどありません。
Tailscaleは、主にネットワーク層のソリューションであり、特定のアプリケーションへの直接的なサポートと、他のアプリケーションが利用できる汎用的なネットワーク層を提供します。
この機能は、効率性とシンプルさで知られる最新の仮想プライベートネットワーク(VPN)プロトコルであるWireGuardを活用することで実現しています。
TailscaleはWireGuardプロトコルを活用しており、これはネットワーク層から始まります。
しかし、WireGuardはデータリンク層と物理層を抽象化する仮想インターフェースであるため、物理層からアプリケーション層までの完全なOSIモデルの仮想インスタンスを使っていると考えることもできます。
この抽象化により、あるネットワーク層が別のネットワーク層の中で動作する状況が生まれます。
その結果、WireGuardとTailscaleの文脈では、物理層とデータリンク層をどう分類するかについて、あいまいさが生じます。
TailscaleとWireGuardが、データリンク層ではなく主にネットワーク層で動作することの重要な影響として、他のデバイスへのブロードキャストやマルチキャストなど、特定のネットワーク操作が従来のローカルエリアネットワーク(LAN)とは異なる動作をする場合があることが挙げられます。
そのため、LAN環境向けに設計された一部のプロトコルは、Tailscaleネットワーク(tailnetと呼ばれます)上で使用すると、予期しない動作をすることがあります。
OSIモデルは、TailscaleやWireGuardのようなネットワーク技術を議論するための有用なフレームワークですが、その限界と、これらの最新のソリューションが従来のモデルからどのように逸脱したり、それを複雑にしたりするのかを理解しておくことが重要です。
tailnet上で動作するシステムを実装、設計、またはトラブルシューティングする際には、こうしたニュアンスを理解しておくことが欠かせません。
以下のセクションでは、TailscaleとそれをベースとするテクノロジーがOSIモデルの各レイヤーとどのように関連しているかについて説明します。
アプリケーション層
Tailscaleは、アプリケーションが依存するネットワークサービスを提供し、アプリケーション層で動作するさまざまな機能を提供します。
アプリケーション層で動作するTailscaleの機能には、MagicDNS、Tailscale SSH、Taildrop、Taildrive、Webインターフェース、Tailscale CLI、Tailscale API、ロギングと監視、Tailscale Serve、Tailscale Funnelがあります。
プレゼンテーション層
プレゼンテーション層は、データのエンコーディング、圧縮、暗号化を扱います。
Tailscaleは、WireGuardを使ってtailnetデバイス間のパケットを暗号化し、(コントロールサーバーへの通信などの)インフラストラクチャのパケットも暗号化します。
例えば、ピアツーピアのNATトラバーサルとリレー操作に使われるdiscoプロトコルを使った接続も暗号化されます。
また、TailscaleはNoiseプロトコルの内部実装を使って、コントロールプレーンへの通信も暗号化します。
セッション層
セッション層では、Tailscaleは、サブネットルーティングやDERPリレーサーバーを使ったNATトラバーサルなどの機能のために、接続の追跡とセッション管理を実装しています。
また、Tailscaleは、デバイス間の接続プロセスを簡素化し、tailnetデバイス間の自動的なピアリングを処理し、デバイス間の永続的な接続を維持することで、間接的にもセッション層に影響を与えています。
セッション層で動作するTailscaleの機能には、DERPサーバー、サブネットルーター、Exit Node、アプリコネクタ、MagicDNS、NATトラバーサルがあります。
トランスポート層
トランスポート層では、TailscaleはWireGuardプロトコルを使って、デバイス間に安全な暗号化トンネルを確立します。
WireGuardの暗号化アルゴリズムは強固な暗号化を提供し、tailnet上で伝送されるデータの安全性と完全性を保証します。
Tailscaleは、これらの安全な接続の確立、維持、切断を管理し、信頼性の低い可能性があるネットワーク上でも、信頼性の高いデータ伝送を実現します。
トランスポート層で動作するTailscaleの機能には、DERPサーバー、アクセス制御(グラントとACL)、サブネットルーター、Exit Node、アプリコネクタ、MagicDNS、NATトラバーサルがあります。
ネットワーク層
ネットワーク層では、TailscaleはIPアドレス管理とパケットルーティングを扱います。
Tailscaleは、tailnet内の各デバイスに一意のTailscale IPアドレスを割り当て、仮想プライベートネットワーク(VPN)を作成することで、データパケットがtailnet内の正しい宛先に到達することを保証します。
ネットワーク層で動作するTailscaleの機能には、パケットルーティング、IPアドレスの割り当て、IPv4およびIPv6のサポート、スプリットトンネリング、コーディネーションサーバー、アクセス制御(グラントとACL)、サブネットルーター、Exit Node、NATトラバーサルがあります。
データリンク層
デバイスにTailscaleクライアントをインストールすると、Tailscaleはデータリンク層のトラフィックを扱うTUN/TAP仮想ネットワークインターフェースを作成します。
Tailscaleは、データリンク層に関する事項のほとんどを意図的に抽象化している点に注意してください。
Tailscaleの設計は、基盤となる物理層やデータリンク層のインフラストラクチャに関わらず、ネットワーク層の接続性を提供することに重点を置いています。
この抽象化により、Tailscaleは、各デバイスのデータリンク層の詳細を直接管理することなく、さまざまな基盤ネットワークインフラストラクチャにわたって一貫したネットワーク機能を提供できます。
物理層
Tailscaleは物理層に依存していますが、物理層でのパケットやシグナリングを直接操作するわけではありません。
ただし、Tailscaleは特定の方法で物理層を認識しています。
例えば、TailscaleはWi-Fi接続とセルラー接続の違いを認識しています。