https://docs.libp2p.io/concepts/nat/autonat/ https://github.com/libp2p/specs/blob/master/autonat/README.md

  • libp2pが実装している、ノードがNATの後ろにいるかどうか判断するプロトコル

    • すげーシンプル(kekeho)
  • P2Pシステムに於いて、NATの裏にいて到達不可能なアドレスを広告すると、他のノードがそのアドレスにダイヤルしようとして失敗し、無駄なリソースを消費してしまう。→ NATの裏にいるかどうか判別する必要

プロトコル (ノードが、自身がNATの裏にいるかどうか確かめたいシーン)

  • ノードはMultiaddrのリストを含むDialメッセージを他のピアに送る
  • ピアはそれらのアドレスへ接続を試みる
  • 少なくとも1つの接続が成功した場合、StatusがSUCCESSなDialResponseを返す
  • 失敗した場合、StatusがERRORなDialResponseを返す
  • ノードはDialResponseを見て自身がNATのうらにいるかチェックできる

P2Pシステムにおいて、こんな感じでやるとよい

  • NATのうらにいるノード
    • プライベートアドレスを広告しない
    • リレーにつなげて、リレーのアドレスをアドバイスする
  • パブリックなノード
    • リレーとしての役割も担う