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のうらにいるノード
- プライベートアドレスを広告しない
- リレーにつなげて、リレーのアドレスをアドバイスする
- パブリックなノード
- リレーとしての役割も担う