(57)【要約】【課題】  本発明はＵＰｎＰ技術とＳＴＵＮ技術を組み合わせることに基づくＮＡＴ越えの方法に関する。【解決手段】  当該方法は、ＵＰｎＰとＳＴＵＮを効果的に組み合わせることにより、ＵＰｎＰを利用したＮＡＴ越えが失敗した場合に、ＳＴＵＮ方法で再びＮＡＴを越えるものであり、当該二種類の越える方法の各々の特徴を汲み取ることにより越え成功率を向上させる。また、対称型ＮＡＴの越えについては、第三者のプロキシ転送による欠陥や、シンプルなポート逓増推測方法における盲目性を避けるために、ＮＡＴ追加ポートがマッピングしたサンプル値に基づくポートマッピングの分布を推定する方法でポートを推測する方案を提出する。また、Ｐ２Ｐストリーミングメディアシステムにおいて、通信の両方ともＮＡＴの裏側にある場合については、中継サーバの負荷を分散するために、一部の帯域幅に余裕がある外部ネットワークにあった普通の通信ノードを補助中継ノードとする方法を提出し、システムのボトルネックを有効的に解除することができる。【選択図】図２
2011517545.tif 000002
【特許請求の範囲】
【請求項１】
以下のステップを備えた、ＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法。
（１）Ｐ２Ｐストリーミングメディアシステムに加入したユーザノードは、まずSimple Service Discovery ProtocolであるＳＳＤＰにより、ＬＡＮ内でＵＰｎＰデバイスを検索するメッセージをブロードキャストするステップ：
Void Search(char* name, const char* type)
ここで、ＵＰｎＰの基準により、nameは“WANIPConnection”であり、typeは“service”であり、typeは“service”であり、ＵＰｎＰサービスを検索することを示す。
（２）ＵＰｎＰサービスの検索に成功した場合は、Simple Object Access ProtocolであるＳＯＡＰにより、ＮＡＴゲートウェイの制御ＵＲＬにポートマッピングを追加する要求を送信するステップ：
InvokeCommand(char* name, char* args)
ここで、nameはＵＰｎＰデバイスに指示した制御指令AddPortMappingであり、argsはＵＰｎＰ基準に従う必要がある複数のパラメーターであり、ポートマッピングが追加された後に、ユーザノードはＷＡＮにあるノードと接続し、データを送受信することができ、ＮＡＴ越えを実現できる。
（３）検索に失敗した場合は、ユーザノードはＳＴＵＮ機能ブロックを起動し、再びＮＡＴ越えを行うステップ：
void GetMapAddr(int& extIP, int& extPort, NatType& natType)
ここで、extIPとextPortはＳＴＵＮ越えによって取得したＮＡＴの外部ＩＰとポートであり、natTypeは越えによって判定されたＮＡＴタイプである。
【請求項２】
前記ステップ（３）はさらに以下のステップを備えたことを特徴とする請求項１に記載のＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法。
１）ＮＡＴはコーン型ＮＡＴである場合に、該ユーザノードは、取得した外部アドレスポートを利用して他のノードと通信し、ＮＡＴ越えを実現するステップ。
２）ＮＡＴは対称型ＮＡＴである場合に、該ユーザノードは、ポート追加サンプル推定方法を利用してＮＡＴ越えを実行するステップ。
前記ポート追加サンプル推定方法は、さらに以下のステップを含む：
対称型ＮＡＴの裏側にあるノードは、ＷＡＮにあるＳＴＵＮサーバに順次に三回の接続を行い、サーバのフィードバックから三回の接続毎に追加された３つのマッピングポートを取得してそれぞれＰ１，Ｐ２，Ｐ３とし、該３つの数字の変化規律に基づいて、下記の処理を実行するステップ： 
２ａ）Ｐ１，Ｐ２，Ｐ３が等差数列であれば、対称型ＮＡＴが追加したポートマッピングは、順次に等差数列の公差ｄを逓増したものであり、対称型ＮＡＴの裏側にあるノードは、元の外部ポートにｄを逓増したものを新たな外部通信ポートとして、データ送受信の負荷に追加し、他のノードとの通信ができる。
２ｂ）Ｐ１，Ｐ２，Ｐ３が等差数列でなければ、追加されたポートマッピングはランダムであり、ユーザノードは追加ポートのサンプル値によりポートマッピングの総数Ｘを下記のように評価する：
ユーザノードは、再びＳＴＵＮサーバにＮ−３回の接続を行い、前述した初めて取得した３つのマッピングポートと合計がＮ個になるようサンプルの観測値を取得し、該サンプルの観測値が[ａ，ｂ]の区間内に含まれていると設定し、当該区間をＭ個のサブ区間（Ｍ＜Ｎ）に分割する：
ａ＝ｎ０<ｎ１<…<ｎＭ−１<ｎＭ
さらに、サブ区間[ｎｉ，ｎｉ＋ｌ](ｉ=０，１，…Ｍ−１)がｔｉ個の観測値を含むと設定し、ベルヌーイの大数の法則及び確率密度の定義によって下記の式を得られる：
φＮ（ｘ）＝ｔｉ／ＮΔｎｉ（Δｎｉ＝ｎｉ＋１−ｎｉ）
φＮ（ｘ）のパターンは、ポートマッピングの総数Ｘが[ａ，ｂ]上に分布のヒストグラムであり、φＮ（ｘ）のパターンがより大きな値を有する際のΔｎｉ区間を分析することで、ＮＡＴマッピングポートが通常該サブ区間に分布されると判断され、当該縮まったサブ区間内にエルゴード理論を利用して、対称型ＮＡＴの次の通信に追加するポートマッピングを推測し、推測のヒット率を向上させる。
【請求項３】
Ｐ２Ｐストリーミングメディアシステムにおいて、通信の双方ともＮＡＴの裏側にある場合に、ユーザノードは、一部の帯域幅に余裕を有するＷＡＮにある普通の通信ノードを中継補助ノードとして利用するノード中継補助方法、
をさらに備えたことを特徴とする請求項１に記載のＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法。
【請求項４】
前記ノード中継補助方法は、
１）Ｐ２Ｐストリーミングメディアシステムに加入したＷＡＮノードは、先ず中継サーバに登録し、中継サーバは、前記ＷＡＮノードのリストを保存するステップと、
２）中継サーバは、ハートビートメカニズムを利用して、登録済みのＷＡＮノードを測定し、往復時間の遅延が最も短いＭ個のＷＡＮノードを中継補助候補ノードとするステップと、
３）ＬＡＮにあるユーザノードは中継サーバに登録し、中継サーバはユーザノード情報を登録するとともに、ＷＡＮノードのリストをユーザノードに送信するステップと、
４）ユーザノードは、ランダムにＮ個（Ｎ＜Ｍ）のＷＡＮノードを選択して接続を行い、往復時間の遅延が最も短いノードを自分の補助中継ノードとして選択するとともに、当該補助中継ノードに登録情報を送信するステップと、
５）ユーザノードは、補助中継ノードを決めると同時に、当該補助中継ノードに登録された他の通信ノードの情報を取得し、ユーザノードは他のＮＡＴの裏側にあるノードと通信する際に、先ず自分の中継補助ノードの登録リストと照合し、当該通信するノードが中継補助ノードの登録リストに存在する場合は、当該補助中継ノードを利用して中継し、そうではない場合は、中継サーバで中継するステップと、
を備えたこと特徴とする請求項３に記載のＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークのＰ２Ｐストリーミングメディア技術に関し、特に、ＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法に関するものである。
【背景技術】
【０００２】
インターネットの発展及びブロードバンドアプリケーションの普及に伴い、ネットワークを利用してストリーミング生中継を行うことはネットワークアプリケーションの中心になっている。従来において、クライアント／サーバ構造のストリーミングシステムにおいては、サーバの帯域幅と処理能力の制限により拡張性が低下する。近年においては、Ｐ２Ｐ（Peer-to-Peer）ネットワークは、上記問題を効果的に解決する方案として極めて普及されている。Ｐ２Ｐモードにおいて、それぞれのノードはクライアントとサーバの機能を有し、それぞれのノードは他のノードからデータを受信するとともに他のノードにデータを送信する。このように、クライアントのアップロード機能を利用して、ストリーミングサーバの負荷を極めて抑制することができる。
【０００３】
一方、ネットワークのアドレススペースを節約するために、またはネットワークのセキュリティーを保障するために、従来において、インターネットにおいてはＮＡＴ（Network Address Translation：ネットワークアドレス変換）技術が多くに採用されている。この技術は、ＩＰアドレスを１つのアドレッシングレルム（addressing realm）から他のアドレッシングレルムにマッピングする方法であり、例えば、ＲＦＣ１９１８により定義されたプライベート未登録アドレスの内部の隔離されたアドレッシングレルムを、インターネットにおいてルーティング可能な全ワークで一括登録したアドレスの外部アドレッシングレルムにマッピングする。ＮＡＴデバイスは、ＬＡＮアドレッシングレルムとＷＡＮアドレッシングレルムとの間のそれぞれのネットワーク接続に、ダイナミックＩＰアドレスの変換を実施し、対応するパケットフィルタリング規則を設定して、条件を満たさないパケットに対しＮＡＴを越えさせない。
【０００４】
ＮＡＴにより、Ｗｅｂサイトを見る等の基本的なインターネットアプリケーションをよくサポートできる。ＨＴＴＰ等のポートが固定されている一般的なアプリケーションプロトコルに対し、ＴＣＰ／ＵＤＰヘッドを変換するだけで越えを実現できる。しかし、以下の原因により、Ｐ２Ｐストリーミングアプリケーションをサポートすることは難くなる。
（１）ＮＡＴの特徴により、ＮＡＴ内部のホストから主動的にＮＡＴ外部のホストに接続を行うことしかできない。外部のホストが直接にＮＡＴ内部のホストと接続を行うことが許容されない。したがって、ＷＡＮにあるホストがＬＡＮにあるホストにメディアデータを請求したいときに接続ができず、両ホストの間はデータのやり取りができない。
（２）ＮＡＴのポートマッピングは、静的ポートマッピングと動的ポートマッピングの二種類があり、静的マッピングは、静的に内部(IPinner,Portinner)と外部(IPouter,Portouter)のマッピング関係を追加することであり、動的マッピングは、ＬＡＮにあるホストとＷＡＮにあるホストが通信するたびにマッピングを行うことであるが、同じ通信であっても、必ずしも同じマッピングを追加するとは限らない。Ｐ２Ｐストリーミングシステムにおいて、通信ノードがマルチメディアの通信に使用する通信ポートは、接続を行う際に両方が動的に協議したものであるので、どのマッピング追加方式にしても、Ｐ２Ｐストリーミングアプリケーションにおける対等なノードの間の動的な通信を行う要求を満たすことができない。
【０００５】
したがって、Ｐ２Ｐストリーミングアプリケーションには、ある程度ＮＡＴを越える課題を解決する必要があり、さもなければ、通信システムが正常に作動できない。伝統的なＮＡＴは、ポートマッピングの方式により、下記の典型的な種類を含む。すなわち、フルコーンＮＡＴ（Full Cone）、制限付ＮＡＴ（Restricted Cone）、ポート制限付ＮＡＴ（Port Restricted Cone）、対称型ＮＡＴ（Symmetric NAT）を含む。そのうち、前の三種のＮＡＴは、コーン型ＮＡＴ（Cone NAT）とも通称される。これらの違いは、ＮＡＴを通るパケットに対するフィルタリング規則が相違している点である。
【０００６】
従来において、通常使われるＮＡＴ越え方法は下記の種類がある。
（１）トンネルによるＮＡＴ越え：越える必要があるデータストリーミングをトンネルにカプセリングすることにより、ＮＡＴを回避する。これは、トンネルにより越える基本的な技術的思想であり、マルチメディアとサーバの両方ともトンネルに対応することが必要であるので、大きく制限されている。
（２）ＵＰｎＰ：ＵＰｎＰとは、プラグ＆プレイ技術をネットワーク領域で拡張したものであり、ユーザ制御ノードがＮＡＴデバイスに制御情報を送信することでポートマッピングを追加し、ＮＡＴ越えを実現する。ＵＰｎＰによれば、既存のデバイスを変更する必要がないが、ＮＡＴ機能を搭載したゲートウェイ、またはルータがＵＰｎＰ機能をサポートする必要がある。従来において、数多くの大型ゲートウェイはＵＰｎＰをサポートしており、しかも簡単に配置することができる。従って、多くのＰ２Ｐアプリケーションは、ＵＰｎＰ技術を利用してＮＡＴ越えを解決している。しかし、ＵＰｎＰ機能は、一部のゲートウェイにサポートされない、または管理者に無効にされる場合もある。
（３）ＳＴＵＮ：ＳＴＵＮは他の構想からＮＡＴ越えを実現したものであり、ＬＡＮにあるホストは、ＷＡＮにある越えサーバから予めＮＡＴ外側のグローバル（開放）アドレスを得て、他のノードと通信する際に直接的に当該グローバルアドレスを自分の通信アドレスとして、ＮＡＴ越えを実現できる。ＳＴＵＮプロトコルの顕著なメリットは、従来のＮＡＴデバイスについて、なんらの変更する必要がないこと、及び、複数のＮＡＴが直列したネットワークで用いることができることである。但し、ＳＴＵＮ方式は、ＴＣＰ接続のＮＡＴ越えをサポートすることができず、また、ＳＴＵＮプロトコルは対称型ＮＡＴ越えもサポートしない点において、制限されている。
【０００７】
また、プロキシ越え（proxy traverse）、転送サーバ（TURN）及びアプリケーション層ゲートウェイ（ＡＬＧ）などによる複数種類の越え方法がある。近年においては、多くのＰ２Ｐストリーミングメディアシステムは単一のＮＡＴ越え方法を使用しており、種類ごとに制限される場合があるとともに、いくつかの方法を組み合わせると、数種類の方法がうまく動ける適当な組み合わせを得るのが難しいので、越えの成功率を保障できない。
【０００８】
また、対称型ＮＡＴ越えについては、効率的な越え方法がないので、第三者のプロキシ越えからの協力により越えを行い、または簡単なポート逓増推測方法が必要である。この中、第三者からメディアデータを転送するときにパケットの遅延が大きくなり、紛失の可能性も高まると同時に、システム配置のコストも増える。また、従来において通用しているポート逓増推測方法は、経験によりＮＡＴに追加されたマッピングポート番号に１を加えて、次のＮＡＴに追加されるポートマッピングの推測結果としている。この方法は、ＮＡＴが追加したポートがマッピングしたサンプル値に基づいて充分に分析されていないので、統計的には最適なものではないと思われる。同時に、通信の双方がＮＡＴの裏側にある場合に、双方とも相手のＮＡＴがマッピングしたＷＡＮのＩＰアドレス及びポート番号を知らないので、主動的に接続を行うことができない。この問題を解決するために、従来においては中継サーバによる越えの方式が多く使われているが、各中継サーバに通信負荷の上限があるので、ネットワークのノード通信量がサーバ負荷の上限値を超えると、中継サーバの過負荷（停止）を招く恐れがある。また、サーバの帯域幅にも上限があるので、併発したネットワーク通信量はサーバネットワークをブロックし、パケットを損失させるので、通信のボルトネックになる。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、上記の課題を鑑みてなされたものであり、従来の単一の越え方法と異なり、ＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法を提案した。当該方法は、ＵＰｎＰとＳＴＵＮを効果的に組み合わせることにより、越えの成功率を向上させる。また対称型ＮＡＴの越えについては、第三者のプロキシ転送による欠陥や、シンプルなポート逓増推測方法における盲目性を避けるために、ＮＡＴ追加ポートがマッピングしたサンプル値に基づくポートマッピングの分布を推定する方法（ポート追加サンプル推定と称する。）でポートを推測する方案を提出する。また、Ｐ２Ｐストリーミングメディアシステムにおいて、通信の両方ともＮＡＴの裏側にある場合については、中継サーバの負荷を分散するために、一部の帯域幅に余裕がある外部ネットワークにある普通の通信ノードを補助中継ノードとする方法（ノード中継補助と称する。）を提出し、システムのボトルネックを有効に解除することができる。
【課題を解決するための手段】
【００１０】
上記の目的を実現するために、本発明は、ＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法であって、下記のステップを備える：
（１）Ｐ２Ｐストリーミングメディアシステムに加入したユーザノードは、先ずSimple Service Discovery ProtocolであるＳＳＤＰにより、ＬＡＮ内でＵＰｎＰデバイスを検索するメッセージをブロードキャストするステップ：
void Search(char* name, const char* type)
ここで、ＵＰｎＰの基準により、nameは“WANIPConnection”であり、typeは“service”であり、ＵＰｎＰサービスを検索することを示す。
（２）ＵＰｎＰサービスの検索に成功した場合は、Simple Object Access ProtocolであるＳＯＡＰにより、ＮＡＴゲートウェイの制御ＵＲＬにポートマッピングを追加する要求を送信するステップ：
InvokeCommand(char* name, char* args)
ここで、nameはＵＰｎＰデバイスに指示した制御指令AddPortMappingであり、argsはＵＰｎＰ基準に従う必要とする複数のパラメーターであり、ポートマッピングが追加された後に、ユーザノードはＷＡＮにあるノードと接続し、データを送受信することができて、ＮＡＴ越えを実現できる。
（３）検索が失敗した場合は、ユーザノードはＳＴＵＮ機能ブロックを起動し、再びＮＡＴ越えを行うステップ：
void GetMapAddr(int& extIP, int& extPort, NatType& natType)
ここで、extIPとextPortはＳＴＵＮ越えによって取得したＮＡＴの外部ＩＰとポートであり、natTypeは越えによって判定されたＮＡＴタイプである。
【００１１】
また、前記ステップ（３）はさらに下記のステップを備える：
１）ＮＡＴがコーン型ＮＡＴである場合に、該ユーザノードは、取得した外部アドレスポートを利用して他のノードと通信し、ＮＡＴ越えを実現するステップ。
２）ＮＡＴが対称型ＮＡＴである場合に、該ユーザノードは、ポート追加サンプル推定方法を利用してＮＡＴ越えを実行するステップ。
なお、前記ポート追加サンプル推定方法はさらに以下のステップを含む：
対称型ＮＡＴの裏側にあるノードは、ＷＡＮにあるＳＴＵＮサーバに順次三回の接続を行い、サーバのフィードバックから三回の接続毎に追加された３つのマッピングポートを取得してそれぞれをＰ１，Ｐ２，Ｐ３とし、ユーザノードは該３つの数字の変化規律に基づいて、下記の処理を実行するステップ：
２ａ）Ｐ１，Ｐ２，Ｐ３が等差数列であれば、対称型ＮＡＴが追加したポートマッピングの方法は、順次に等差数列の公差ｄを逓増したものであると推定し、対称型ＮＡＴの裏側にあるノードは、元の外部ポートにｄを逓増したものを新たな外部通信ポートとして、データ送受信の負荷に追加し、他のノードとの通信ができる。
２ｂ）Ｐ１，Ｐ２，Ｐ３が等差数列でなければ、追加されたポートマッピングはランダムであり、この場合は、追加ポートのサンプル値によりポートマッピングの総数Ｘを下記のように評価する：
ユーザノードは、再びＳＴＵＮサーバにＮ−３回の接続を行い、前述した初めて取得した３つのマッピングポートと合計がＮ個になるようサンプルの観測値を取得し、該サンプルの観測値が[ａ，ｂ]の区間内に含まれているものと設定し、当該区間をＭ個のサブ区間（Ｍ＜Ｎ）に分割する：
ａ＝ｎ０<ｎ１<…<ｎＭ−１<ｎＭ
【００１２】
さらに、サブ区間[ｎｉ，ｎｉ＋ｌ](ｉ=０，１，…Ｍ−１)がｔｉ個の観測値を含むと設定し、ベルヌーイの大数の法則及び確率密度の定義によって下記の式を得られる：
φＮ（ｘ）＝ｔｉ／ＮΔｎｉ（Δｎｉ＝ｎｉ＋１−ｎｉ）
φＮ（ｘ）のパターンは、ポートマッピングの総数Ｘが[ａ，ｂ]上に分布するヒストグラムであり、φＮ（ｘ）のパターンがより大きな値を有する際のΔｎｉ区間を分析することで、ＮＡＴマッピングポートが通常そのサブ区間に分布すると判断され、当該縮まったサブ区間内にエルゴード理論を利用して、対称型ＮＡＴの次の通信に追加するポートマッピングを推測し、推測のヒット率を向上させる。
【００１３】
前記本発明のＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法は、さらにノード中継補助の方法を備える。Ｐ２Ｐストリーミングメディアシステムにおいて、通信の双方ともＮＡＴの裏側にある場合に、ユーザノードは、一部の帯域幅に余裕を有するＷＡＮにある普通の通信ノードを中継補助ノードとして利用する。これはノード中継補助と称し、中継サーバの負荷を分散できる。
【００１４】
前記ノード中継補助の方法は、下記のステップを含む：
１）Ｐ２Ｐストリーミングメディアシステムに加入したＷＡＮノードは、まず中継サーバに登録し、中継サーバは、前記ＷＡＮノードのリストを保存するステップ。
２）中継サーバは、ハートビートメカニズムを利用して、登録済みのＷＡＮノードを測定し、往復時間の遅延（ＲＴＴ）が最も短いＭ個のノードを中継補助候補ノードとするステップ。
３）ＬＡＮにあるユーザノードを中継サーバに登録する際に、中継サーバは該ユーザノードの情報を登録するとともに、ＷＡＮノードのリストを該ユーザノードに送信するステップ。
４）ＬＡＮにあるユーザノードは、ランダムにＮ個（Ｎ＜Ｍ）のＷＡＮノードを選択して接続を行い、往復時間の遅延（ＲＴＴ）が最も短いノードを自分の補助中継ノードとして選択するとともに、当該補助中継ノードに登録情報を送信するステップ。
５）ユーザノードは、補助中継ノードを決めると同時に、当該中継ノードに登録した他の通信ノードの情報を取得する。ユーザノードは他のＮＡＴの裏側にあるノードと通信する際に、先ず自分の中継補助ノードの登録リストと照合し、当該通信するノードが中継補助ノードの登録リストに存在する場合は、当該補助中継ノードを利用して中継し、そうではない場合は、中継サーバで中継するステップ。
【発明の効果】
【００１５】
本発明によれば、
１）ＵＰｎＰとＳＴＵＮを有効に組み合わせることにより、ＵＰｎＰを利用したＮＡＴ越えが失敗した場合に、ＳＴＵＮ方法で再びＮＡＴ越えを行い、二種類の越え方法の長所を汲み取ることにより越えの成功率を向上させる。
２）対称型ＮＡＴの越えについては、第三者のプロキシ転送による欠陥や、シンプルなポート逓増推測方法における盲目性を避けるために、ＮＡＴ追加ポートがマッピングしたサンプル値に基づくポートマッピングの分布を推定する方法（単に、ポート追加サンプル推定と称する。）でポートを推測する方案を提出する。
３）Ｐ２Ｐストリーミングメディアシステムにおいて、通信の両方ともＮＡＴの裏側にある場合については、中継サーバの負荷を分散するために一部の帯域幅に余裕がある外部ネットワークにある普通の通信ノードを補助中継ノードとする方法（単に、ノード中継補助と称する。）を提案し、システムのボトルネックを有効に解除することができる。
【図面の簡単な説明】
【００１６】
【図１】従来のＮＡＴを含むＰ２Ｐストリーミングメディアシステムの構成図である。
【図２】本発明に係るＵＰｎＰとＳＴＵＮを組み合わせることに基づくＮＡＴ越え方法を説明するためのフローチャートである。
【図３】本発明に係るポート追加サンプル推定方法により取得したサンプル分布を示すヒストグラムである。
【図４】本発明に係るノード中継補助方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
本発明は組み合わせたＮＡＴ越え方法を提案する。従来において通用される二種類の越え方法であるＵＰｎＰとＳＴＵＮを有効に組み合わせ、ＵＰｎＰを利用したＮＡＴ越えが失敗した場合に、ＳＴＵＮ方法で再びＮＡＴ越えを行い、当該二種類の越え方法の各々の長所を汲み取ることにより越えの成功率を向上させる。
【００１８】
図１は、ＮＡＴを含むＰ２Ｐストリーミングメディアシステムの構成を示す。同図に、データソースサーバとデータ中継サーバはメディアデータのストリーミングと転送の機能を担当する。インデックスサーバは、所属領域のＰ２Ｐネットワークのメインインデックスサーバとして、該領域のＰ２Ｐネットワークにおける全部のノードの情報を保存している。ユーザ通信ノードＡとＢは、ＮＡＴ機器Ａの裏側にある内部ＬＡＮ内に設けられており、ユーザ通信ノードＣとＤは、ＮＡＴ機器Ｂの裏側にある別の内部ＬＡＮ内に設けられており、ユーザ通信ノードＥはＷＡＮにあるノードである。
【００１９】
通信ノードＥは通信ノードＡのデータを請求しようとしても、ＮＡＴの存在により、直接的に接続を行うことができない。通信ノードＥのデータ請求はＮＡＴ機器Ａにより濾過されるので、通信ノードＡはＮＡＴの越えを行う必要がある。
【００２０】
本発明の方法による具体的なフローチャートは、図２に示すように、通信ノードＡは、先ずＵＰｎＰの方法を利用したポートマッピングを追加し、ポートマッピングが成功すると、ＷＡＮにあるノードＥとの接続を行うことができる。具体的には、下記３つのステップを含む。
（１）Ｐ２Ｐストリーミングメディアシステムに新たに追加されたユーザノードＡは、先ずSimple Service Discovery ProtocolであるＳＳＤＰにより、ＬＡＮ内でＵＰｎＰデバイスを検索するメッセージをブロードキャストする：
void Search(char* name, const char* type)
ここで、ＵＰｎＰ基準により、nameは“WANIPConnection”であり、typeは“service”であり、ＵＰｎＰサービスを検索することを示す。
（２）ＵＰｎＰサービスの検索が成功した場合は、ノードＡはSimple Object Access ProtocolであるＳＯＡＰにより、ＮＡＴゲートウェイの制御ＵＲＬにポートマッピングを追加する要求を送信する：
InvokeCommand(char* name, char* args)
ここで、nameはＵＰｎＰデバイスに指示した制御指令AddPortMappingであり、argsはＵＰｎＰ基準に従う必要とする複数のパラメーターである。このように、ポートマッピングが追加された後に、ユーザノードＡはＷＡＮにあるノードＥと接続し、データを送受信することができ、ＮＡＴ越えを実現できる。
（３）検索が失敗した場合は、ユーザノードＡはＳＴＵＮ機能ブロックを起動し、再びＮＡＴ越えを行う：
GetMapAddr(int& extIP, int& extPort, NatType& natType)
ここで、extIPとextPortはＳＴＵＮ越えによって取得したＮＡＴの外部ＩＰとポートであり、natTypeは越えによって判断されたＮＡＴタイプである。
【００２１】
また、前記ステップ（３）は、さらに下記のステップを含む。
１）ＮＡＴが対称型ＮＡＴ（Symmetric NAT）を除く他の三種類のコーン型ＮＡＴ（cone NAT）のいずれか１つである場合に、ユーザノードＡは取得した外部アドレスポートを利用してＷＡＮノードＥと通信し、ＮＡＴ越えを実現できる。
２）ＮＡＴが対称型ＮＡＴである場合に、ノードＡはポート追加サンプル推定方法を利用してＮＡＴ越えを実行する。
【００２２】
当該ポート追加サンプル推定方法は、以下のステップを含む：
対称型ＮＡＴの裏側にあるノードＡは、ＷＡＮにあるＳＴＵＮサーバに順次三回の接続を行い、サーバのフィードバックから三回の接続で追加された３つのマッピングポートを取得してそれぞれＰ１，Ｐ２，Ｐ３とし、該３つの数字の変化規律に基づいて、下記の処理を実行するステップ：
２ａ）Ｐ１，Ｐ２，Ｐ３が等差数列であれば、対称型ＮＡＴが追加したポートマッピングの方法は順次に等差数列の公差ｄを逓増したものであると推定する。これから対称型ＮＡＴの裏側にあるノードＡは、元の外部ポートにｄを逓増したものを新たな外部通信ポートとして、データ送受信の負荷に追加し、他のノードＥとの通信ができる。
２ｂ）Ｐ１，Ｐ２，Ｐ３が等差数列でなければ、追加されたポートマッピングはランダムであり、この時、追加ポートのサンプル値によりポートマッピングの総数Ｘを下記のように評価する：
ノードＡは、再びＳＴＵＮサーバにＮ−３回の接続を行い、前記初めて取得した３つのマッピングポートと合計がＮ個になるようサンプルの観測値を取得し、該サンプルの観測値が[ａ，ｂ]の区間内に含まれているものと設定し、当該区間をＭ個のサブ区間（Ｍ＜Ｎ）に分割する：
ａ＝ｎ０<ｎ１<…<ｎＭ−１<ｎＭ
【００２３】
さらに、サブ区間[ｎｉ，ｎｉ＋ｌ](ｉ=０，１，…Ｍ−１)がｔｉ個の観測値を含むと設定し、ベルヌーイの大数の法則（Bernoulli’s law of large numbers）及び確率密度の定義によって、下記の式を得られる：
φＮ（ｘ）＝ｔｉ／ＮΔｎｉ（Δｎｉ＝ｎｉ＋１−ｎｉ）
φＮ（ｘ）のパターンは、ポートマッピングの総数Ｘが[ａ，ｂ]上に分布するヒストグラムであり（図３を参照）、φＮ（ｘ）のパターンがどのΔｎｉ区間内により大きな値を有するかを分析して、ＮＡＴマッピングポートは通常どのサブ区間に分布するかが判断できる。当該縮まった区間内にエルゴード理論を利用して対称型ＮＡＴの次の通信に追加するポートマッピングを推測し、推測のヒット率を有効に向上させる。
【００２４】
また、通信ノードＡは通信ノードＣにデータを請求しようとすると、双方ともＮＡＴの裏側に位置しているので、直接的に接続を行うことができない。ここで、本発明は中継補助方法を提案し、通信ノードＥを中継補助ノードとして両方の接続請求を転送する。具体的には、下記のステップを含む：
１）Ｐ２Ｐストリーミングメディアシステムに加入したＷＡＮノードＥは、先ず中継サーバに登録し、中継サーバは、ＷＡＮノードＥを含むリストを保持する。
２）ＬＡＮノードＡを中継サーバに登録する際に、中継サーバはノードＡの情報を登録するとともに、ノードＡにＷＡＮノードＥを含むリストを送信する。
３）その後、ＬＡＮノードＡは、往復時間の遅延が最も短いノードＥを自分の中継補助ノードとして選択するとともに、当該ノードＥに登録情報を送信する。
４）他のＮＡＴの裏側にあるノード（例えば、Ｃ、Ｄ）と通信するときに、まず、自分の中継補助ノードＥが登録されたリストと照合し、通信するＮＡＴの裏側にあるノード（Ｃ、Ｄ）がリストに存在する場合は、該補助中継ノードを利用して中継を行い、そうではない場合は、中継サーバで中継する。これにより、図４に示すような数多くのほかのノードからの接続が要求されたときに、効率的にＮＡＴ越えの中継サーバの負荷を低減することができる。
【図１】
2011517545.tif 000003
【図２】
2011517545.tif 000004
【図３】
2011517545.tif 000005
【図４】
2011517545.tif 000006
【国際調査報告】
2011517545.tif 000007
2011517545.tif 000008
2011517545.tif 000009
2011517545.tif 000010