コンテンツへスキップ
uencoder

Hole Punching

ホールパンチング(Hole Punching、穴あけ)は P2P の NAT トラバーサル技法である。両ピアが互いの公開エンドポイントへパケットを送り合い、各 NAT にアウトバウンドマッピングを作らせることで、相手ピアの着信パケットを通す。

目的

リレーサーバーなしで NAT 背後の 2 つのピアが直接 P2P 接続を確立できるようにし、レイテンシとサーバー負荷を削減する。

メカニズム

両ピアは STUN で自分の公開エンドポイントを知り、それを交換する。各ピアが相手の公開エンドポイントへ送信する(自分の NAT にアウトバウンドマッピングが作られる)。相手の NAT はマッピング済みエンドポイントから到着したパケットを通過させる。

ユースケース

  • 直接の P2P 接続
  • WebRTC の ICE
  • ゲームと VoIP

関連ツール

References