MNAの世界

ブログをリニューアルしました!コメント、リンク、ツイートなどはお気軽にどうぞ。

PC、技術系

UDPでNAT越え 備忘録

投稿日:2009年6月21日 更新日:

最近は同人ゲームでもネット対戦を備えていることが多くなってきました。
対応ゲームはこれからどんどん増えていくことでしょう。
しかし、ほとんどの接続ユーザーがルータ越しに繋いでいる昨今ではNAT越えというとても大きな壁があります。
他の人たちはこれをどうやってクリアしているのか?
ちょっと気になったので、当サークルでもそのうちネット対応した場合に備えて調べてみました。

いくつかのゲームの体験版を落として説明書を読んでみたところ、大抵のゲームはホスト側がポートを空けておけばゲストは基本的には何も設定はいらないようです。
ゲストがホストに接続に行った時点で ホスト⇔ゲスト 間の情報がルータにマッピングされるので、UDPの双方向通信が成り立つわけです。
もっとも実装がお手軽、かつ確実な方法ですね。
ただし、ホストになる人は少しだけですがポートの設定などのネットワークの知識が必要になります。

では、ポート開放の煩わしさを避けて接続するにはどうすればいいか?
UDPの特性を利用したもののひとつにUDPホールパンチングという技があります。
Skypeが採用しているということでも有名ですね。

参考記事 : Skypeの高い接続性の秘密

これならコーン型NATであれば外部にSTUN鯖さえ用意しておけば大体は繋がりそうです。
そのSTUN鯖を用意するってのが大変なんですけどね・・・
httpとかを駆使してやるのも可能っちゃ可能ですが。
実装もテストも大変そうです(´・ω・`)

しかし、この手法では「シンメトリックNAT ⇔ シンメトリックNAT」または「ポート制限コーンNAT ⇔ シンメトリックNAT」の通信はかなり絶望的です。
さらに困難なことに、相手がどんな特性のNATかを詳しく調査するには鯖側にグローバルIPが最低3つぐらいは必要です。

天下のマイクロソフトでさえ、この組み合わせの通信は困難としています。
個人ではポート制限ありかどうかぐらいの判定が関の山でしょうねぇ・・・
最後の手段としてどっかのノードにトンネルさせるってのがありますが、個人でそこまで負担する人は普通いないでしょう。

参考記事 : Xbox 360 LIVE サポート情報 – 回線/接続機器動作確認リスト
参考記事 : Xbox Liveの接続診断について

一応、XBOXで繋がらない組み合わせでも通信できるという「NAT Traversal SDK」というものがあるみたいですが、個人が同人で使えるようなシロモノじゃないんだろうなぁ・・・

参考記事 : NATを越えて”接続するP2Pアプリ用モジュール「NAT Traversal SDK」

ある程度妥協して、「繋がらないルータを使っている人はポートを開けてください。」レベルまでいければ個人では及第点といえるでしょう。
これでも1対1の対戦モノとかであれば話はまだ簡単です。
これが複数人でプレイするゲームとなった日には・・・
俺の脳みそがオーバーフロウ!!!

てか複数人のゲームってどうやってテストするんだ?
ひとりで全部操作するのか?
あひーん。

-PC、技術系


comment

リンクが多数含まれていると表示されないのでご注意ください。(スパム対策)

関連記事

no image

iPodにトラブル発生?

会社の帰り道、いつものようにiPodで曲を聴いていると、いきなり再生が中断!!! しばらくしてまた曲の先頭から再生が再開されました。 むむ・・・?リードエラーでも起きたのか? 一応再生が止まった箇所に… 続きを読む

no image

今流行りのセキュリティ

会社でセキュリティ研修を受けました。 実は去年も受けているのですが、認定書みたいなのが1年の有効期限付きなので毎年更新しないといけないんですよね。 話の大筋は去年とほぼ同じでしたが、今年はそれに加えて… 続きを読む

no image

玄箱 復活!!!のはずが・・・

CDを買いに日本橋まで来たため、HDがクラッシュした玄箱を 復活させるためにHDを購入しました。 容量は前回と同じく200G。 そして、これまでの反省も考慮し、奮発してバックアップ用に USBの外付け… 続きを読む

no image

玄箱 レスポンスをアップせよ

WAN経由での接続を試したかったので会社から玄箱へ接続してみる。 httpは問題無し。 ftpは初回接続時にそこそこ時間がかかるようだ。 恐らくDNSのルックアップを毎回やる設定になってしまっているの… 続きを読む

no image

RAID1対応NAS選定&ポチった!

なんやかんやで3年間稼動し続けた玄箱による鯖ですが、先日いきなりご臨終しました。 多分今回も死んだのはHDDでしょうから、HDDを交換すれば大丈夫だと思いますが、どうせならこの機会にもっと鯖強化をして… 続きを読む