-
188d64e7 :Anonymous
2015-11-15 13:42
-
テキトーな新月nat traversal案
自ノードS:self.com:8000/server.cgi
・まずはuPnPでポート開放(デフォルトON)
・通常のjoin
・join数0なら、
・init_nodeから数回リカーシブに/node実行後、ランダムなノードR(relay.com:8000)取得
・ノードRに
http://relay.com:8000/server.cgi/relay/self.com:8000+server.cgi
で自ノードリレー要求
・NGなら戻る
・再度join、以降通常動作。ただし自ノードは
relay.com:8000/server.cgi/relay/self.com:8000/server.cgi (自ノードリレー名)
とする。
以降、他ノードからノードSは(自ノードリレー名)に見える。
・relay.comは例えば10分間10個以内、APIコールを保存
・self.comは例えば1分ごとにself.comに確認
ex)
self.comへのping API:
http://relay.com:8000/server.cgi/relay/self.com:8000/server.cgi/ping
self.comからanother.com:8000へのjoin
http://another.com:8000/server.cgi/join/relay.com:8000+server.cgi+relay+self.com:8000+server.cgi
リレー機能のない朔が受け取れば、相手ノードは(自ノードリレー名)に見えて、
http://relay.com:8000/server.cgi/relay/self.com:8000/server.cgi/pingにpingするはず(要確認)。
欠点:
リレーノードの負荷
リレー機能のない朔が多い状況で、無駄にリレー要求必要
Powered by shinGETsu.