(57)【特許請求の範囲】
【請求項１】
NAT装置の配下に備えられる端末装置であって、
前記NAT装置の外部の通信ネットワークに接続された所定の装置に向けてUDP透過判定メッセージを送信し、前記UDP透過判定メッセージに対する前記所定の装置からの応答メッセージを受信するか否かを判定するUDP透過判定手段と、
前記UDP透過判定手段により、前記所定の装置からの応答メッセージを受信しなかったと判定された場合に、前記NAT装置の外部の通信ネットワークに接続されたHTTPトンネリング装置との間にHTTPトンネルを設定するHTTPトンネル設定手段と、
前記HTTPトンネルを経由して、他の端末装置との間でメディア通信のためのシグナリングメッセージの送受信を行うシグナリングメッセージ通信手段と
を備えたことを特徴とする端末装置。
【請求項２】
前記端末装置は、前記端末装置において前記シグナリングメッセージを用いる機能の動作が終了したことを検知した場合に、前記HTTPトンネルを終了させる手段を有することを特徴とする請求項１に記載の端末装置。
【請求項３】
前記端末装置は、前記NAT装置の外部の通信ネットワークに接続された外部装置と通信を行うための外部通信用アドレスの割り当てを前記HTTPトンネリング装置に要求するアドレス割り当て要求手段を有し、
前記端末装置は、前記外部装置から前記端末装置への通信のための宛先アドレスとして、前記HTTPトンネリング装置により割り当てられた前記外部通信用アドレスを前記シグナリングメッセージの内部に含めることを特徴とする請求項１又は２に記載の端末装置。
【請求項４】
前記HTTPトンネル設定手段は、前記HTTPトンネリング装置との間にメディア通信用のHTTPトンネルを設定する手段を有し、
前記端末装置は、
前記他の端末装置からメディア通信データを受信するための候補となるアドレスとして、少なくとも前記端末装置自身のアドレスと、前記HTTPトンネリング装置において前記端末装置のメディア通信用に割り当てられた外部通信用アドレスとを前記他の端末装置に対して送信する送信手段と、
ICE機能を有する前記他の端末装置において、前記メディア通信用の外部通信用アドレスが前記端末装置へのメディア送信用のアドレスとして選択されなかった場合に、前記メディア通信用のHTTPトンネルを終了させる手段と
を有することを特徴とする請求項１ないし３のうちいずれか1項に記載の端末装置。
【請求項５】
NAT装置の配下に備えられる端末装置が実行するNAT越え方法であって、
前記NAT装置の外部の通信ネットワークに接続された所定の装置に向けてUDP透過判定メッセージを送信し、前記UDP透過判定メッセージに対する前記所定の装置からの応答メッセージを受信するか否かを判定するUDP透過判定ステップと、
前記UDP透過判定ステップにより、前記所定の装置からの応答メッセージを受信しなかったと判定された場合に、前記NAT装置の外部の通信ネットワークに接続されたHTTPトンネリング装置との間にHTTPトンネルを設定するHTTPトンネル設定ステップと、
前記HTTPトンネルを経由して、他の端末装置との間でメディア通信のためのシグナリングメッセージの送受信を行うシグナリングメッセージ通信ステップと
を備えたことを特徴とするNAT越え方法。
【請求項６】
コンピュータを、NAT装置の配下に備えられる端末装置として機能させるプログラムであって、前記コンピュータを、
前記NAT装置の外部の通信ネットワークに接続された所定の装置に向けてUDP透過判定メッセージを送信し、前記UDP透過判定メッセージに対する前記所定の装置からの応答メッセージを受信するか否かを判定するUDP透過判定手段、
前記UDP透過判定手段により、前記所定の装置からの応答メッセージを受信しなかったと判定された場合に、前記NAT装置の外部の通信ネットワークに接続されたHTTPトンネリング装置との間にHTTPトンネルを設定するHTTPトンネル設定手段、
前記HTTPトンネルを経由して、他の端末装置との間でメディア通信のためのシグナリングメッセージの送受信を行うシグナリングメッセージ通信手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、NAT(Network Address Translation)装置の配下にある端末装置が、NAT装置を通過して他の端末装置と通信を行うNAT越え技術に関するものである。
【背景技術】
【０００２】
プライベートIPアドレスとグローバルIPアドレスとを相互に変換することにより、プライベートIPアドレスが割り当てられた端末からインターネットへのアクセスを可能とするNAT装置（NATルータ等）が普及している。
【０００３】
さて、VoIP技術等を利用したIPメディア通信サービスが普及しているが、家庭内網や社内網等のプライベートネットワークの中にある端末装置は一般にNAT装置の配下にあるため、そのような端末装置はNAT装置を介して外部の端末装置と通信を行うことになる。なお、本明細書及び特許請求の範囲において、NATはNAPT(Network Address Port Translation)を含む意味で使用している。
【０００４】
ここで、現在普及しているVoIP技術を利用したメディア通信サービスでは一般的にシグナリングプロトコルとしてSIP（Session Initiation Protocol）が使われる。しかし、SIPでは、SIPメッセージ送受信に使用するアドレスや、メディア通信に使用するアドレスをSIPメッセージの内部に書き込んでいるため、IPパケットのアドレスがNAT装置により変換されても、SIPメッセージ内部のアドレスが変換されないことから、NAT装置を介して端末装置同士でSIPに基づくメディア通信を行うことは通常は困難である。なお、SIPメッセージの送受信、及びメディアの送受信はUDP（User Datagram Protocol）により行われる。
【０００５】
NAT装置を経由してSIPを利用した通信を可能とするための主な技術として、STUN-bis（Session Traversal Utilities for NAT、非特許文献１）、TURN（Traversal Using Relays around NAT、非特許文献２）、HTTPトンネリング等がある。以下、STUN-bisは単にSTUNと記載することにする。
【０００６】
STUNは、端末装置がNAT装置の外側のグローバルIPアドレスとポート番号を取得することを可能にする技術であり、これにより、端末装置は、通信の相手にグローバルIPアドレスとポート番号を伝えることができる。
【０００７】
TURNは、メディア（UDPデータ）を中継するためのTURNサーバをグローバルネットワーク側に配置し、NAT装置配下の端末装置と、外部の端末装置とがTURNサーバを経由して通信可能とする技術である。
【０００８】
HTTPトンネリングは、メディア（UDPデータ）を中継するためのHTTPトンネリングサーバをグローバルネットワーク側に配置し、実際に通信したいデータ（UDPデータ等）をHTTPヘッダでカプセリングすることにより、NAT装置配下の端末装置と、外部の端末装置とがHTTPトンネリングサーバを経由して通信可能とする技術である。NAT装置からは通常のHTTP通信のように見せかけて通信を行うことになる。
【０００９】
また、上記以外にも例えば、NAT装置配下に存在する各端末装置が内部からUDPパケットを送信し、NAT装置に穴を開けて、NAT装置配下に存在する端末装置同士が第三者を介さずにUDP通信を行うためのUDP Hole Punchingという技術がある。
【００１０】
しかし、STUNやUDP Hole Punchingでは、UDPパケットを透過させないNAT装置、及びシンメトリックNAT装置に適用できない。また、TURNはシンメトリックNAT装置には適用できるがUDPパケットを透過させないNAT装置には適用できない。HTTPトンネリングは一般にどのようなNAT装置にも適用できる。
【００１１】
一方、HTTPトンネリング技術は、通信データをサーバを中継させる処理、及び、カプセリング／デカプセリング処理が必要となるため、直接端末装置間でメディア通信を行うことが可能なSTUN-bisやUDP Hole Punchingよりも遅延が大きくなる。また、TURNについても、通信データをサーバを中継させる処理の分、STUN-bisやUDP Hole Punchingよりも遅延が大きくなる。また、TURNやHTTPトンネリングではサーバに負荷がかかり、当該サーバにアクセスが集中する場合は、遅延が更に大きくなる。なお、NAT越えの方式としてUPnP(Universal Plug and Play)と呼ばれる技術もあるが、当該機能を実装していないあるいは出荷時に当該機能がデフォルト停止している機器が多く、SIPのNAT越えの方式としては一般的でない。
【特許文献１】特開2005-198181号公報
【非特許文献１】RFC3489bis
【非特許文献２】平成２０年２月２４日検索、インターネット、<URL: http://tools.ietf.org/html/draft-ietf-behave-turn-06>
【非特許文献３】平成２０年２月２４日検索、インターネット、<URL: http://tools.ietf.org/html/draft-ietf-mmusic-ice-19
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記の背景技術から、NAT装置の種類等に応じて、適切なNAT越えの方式を選択することが必要である。NAT越えの方式のうちTURNとSTUNに関しては、これらのうち最適なものを選択することが可能なICE（Interactive Connectivity Establishment、非特許文献３）と呼ばれる技術が存在する。
【００１３】
ICEでは、SIP機能を備えた端末装置が、通信を開始する前に、STUNやTURNで利用可能なアドレス情報を取得し、得られたアドレス情報及び自身のアドレス情報をSIPメッセージの中に含めて送信し、そのメッセージを受け取ったICEをサポートする相手端末装置が、どのアドレスと通信可能かを調べ、所定のルールに基づき通信可能なアドレスのうち最も効率的なアドレスを選択して通信を行う。通信の効率から考えて、選択の優先順位は、自身のアドレスが最も高く（つまりNAT装置を介さないローカル通信を行う場合）、次にSTUNのアドレス、その次にTURNのアドレスとなるのが一般的である。
【００１４】
しかしながら、従来技術では、NAT越え方式の選択肢としてHTTPトンネリングは考慮されていない。従って、従来技術では、HTTPトンネリングが基本的にどのようなNAT装置配下でも通信を可能としてくれることを理由に、他の方式の利用可能性にかかわらず、HTTPトンネリング方式のみを利用する方式としてしまうことがあり得る。しかし、前述したように、HTTPトンネリング方式はサーバへの負荷や通信遅延が大きくなる方式であり、IP電話等のリアルタイムのメディア通信への使用は、他のより遅延の小さい方式でメディア通信が可能であるのであればできるだけ避けたほうが望ましい。
【００１５】
本発明は上記の点に鑑みてなされたものであり、SIPに基づくVoIP等のメディア通信をNAT装置を介して端末装置間で行う場合において、NAT越え方式としてHTTPトンネリングを必要に応じて選択することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記の課題を解決するために、本発明は、NAT装置の配下に備えられる端末装置であって、前記NAT装置の外部の通信ネットワークに接続された所定の装置に向けてUDP透過判定メッセージを送信し、前記UDP透過判定メッセージに対する前記所定の装置からの応答メッセージを受信するか否かを判定するUDP透過判定手段と、前記UDP透過判定手段により、前記所定の装置からの応答メッセージを受信しなかったと判定された場合に、前記NAT装置の外部の通信ネットワークに接続されたHTTPトンネリング装置との間にHTTPトンネルを設定するHTTPトンネル設定手段と、前記HTTPトンネルを経由して、他の端末装置との間でメディア通信のためのシグナリングメッセージの送受信を行うシグナリングメッセージ通信手段とを備えたことを特徴とする端末装置として構成される。
【００１７】
前記端末装置は、前記端末装置において前記シグナリングメッセージを用いる機能の動作が終了したことを検知した場合に、前記HTTPトンネルを終了させる手段を有することとしてもよい。  
また、前記端末装置は、前記NAT装置の外部の通信ネットワークに接続された外部装置と通信を行うための外部通信用アドレスの割り当てを前記HTTPトンネリング装置に要求するアドレス割り当て要求手段を有し、前記端末装置は、前記外部装置から前記端末装置への通信のための宛先アドレスとして、前記HTTPトンネリング装置により割り当てられた前記外部通信用アドレスを前記シグナリングメッセージの内部に含めることとしてもよい。
【００１８】
また、前記HTTPトンネル設定手段は、前記HTTPトンネリング装置との間にメディア通信用のHTTPトンネルを設定する手段を有し、前記端末装置は、前記他の端末装置からメディア通信データを受信するための候補となるアドレスとして、少なくとも前記端末装置自身のアドレスと、前記HTTPトンネリング装置において前記端末装置のメディア通信用に割り当てられた外部通信用アドレスとを前記他の端末装置に対して送信する送信手段と、ICE機能を有する前記他の端末装置において、前記メディア通信用の外部通信用アドレスが前記端末装置へのメディア送信用のアドレスとして選択されなかった場合に、前記メディア通信用のHTTPトンネルを終了させる手段とを有することとしてもよい。
【００１９】
また、本発明は、上記端末装置が実行するNAT越え方法として構成することができ、上記端末装置における各手段をコンピュータに実現させるためのプログラムとして構成することもできる。
【発明の効果】
【００２０】
本発明によれば、UDP透過判定手段によりUDP非透過であると判定した場合にHTTPトンネルを設定し、当該HTTPトンネルを経由して、他の端末装置との間でメディア通信のためのシグナリングメッセージの送受信を行うこととしたため、NAT越え方式としてHTTPトンネリングを必要に応じて選択することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して、本発明の実施の形態について説明する。なお、以下の説明において、特に断らない限り、アドレスとはIPアドレスのことであり、ポートとはポート番号のことである。
【００２２】
（システム構成）
図１に、本実施の形態におけるシステムの全体構成を示す。図１に示すように、本実施の形態のシステムは、NAT装置N1、NAT装置N1配下にある端末装置T1、NAT装置N2、NAT装置N2配下にある端末装置T2、SIPサーバS1、STUNサーバST1、HTTPトンネリングサーバHP1（TURNサーバを兼ねる）、及びHTTPトンネリングサーバHP2（TURNサーバを兼ねる）を有する。SIPサーバS1とSTUNサーバST1は同一装置内に設けることとしてもよい。また、HTTPトンネリングサーバの機能を持たないTURNサーバを備えることとしてもよい。
【００２３】
本システムにおいて、NAT装置N1は、グローバルネットワークであるインターネット６に接続されるとともに、プライベートネットワーク７に接続される。また、端末装置T1はプライベートネットワーク７に接続される。NAT装置N2は、インターネット６に接続されるとともに、プライベートネットワーク８に接続される。また、端末装置T2はプライベートネットワーク８に接続される。
【００２４】
また、HTTPトンネリングサーバHP1は、端末装置T1側にサービスを提供するものとし、HTTPトンネリングサーバHP2は、端末装置T2側にサービスを提供するものとする。
【００２５】
本システムにおけるSIPサーバS1は、SIPの中継処理を行うサーバである。STUNサーバST1は、STUNの仕様に準拠した機能を有するサーバであり、端末装置からの要求に基づき、NAT装置外部のアドレス情報を返す機能等を有するサーバである。HTTPトンネリングサーバHP1は、端末装置T1との間でHTTPトンネルを形成する機能と、TURNの仕様に準拠して、端末装置からの要求に基づき、データ中継用のアドレス情報を割り当て、それを端末装置に返す機能、アドレスのバインディング情報を保持し、データの中継を行う機能等を有するサーバである。HTTPトンネリングサーバHP2もHTTPトンネリングサーバH1と同様の機能を有する。つまり、HTTPトンネリングサーバHP1、HP2はそれぞれ、HTTPトンネリングサーバ機能とTURNサーバ機能を有している。
【００２６】
図２に、端末装置T1の機能構成図を示す。なお、端末装置T2も端末装置T1と全く同じ構成であるため、端末装置T1のみについて説明する。図２に示すように、端末装置T1は、通信インタフェース部１１、制御部１２、HTTPトンネリング機能部１３、メディア通信部１４、SIP機能部１５、STUN機能部１６、TURN機能部１７、ICE機能部１８を有する。通信インタフェース部１１は、外部装置と通信ネットワークを介してデータ通信を行うための機能部である。制御部１２は、UDP透過判定機能、SIP通信終了判定機能、HTTPトンネル終了判定機能等を含み、各機能部の動作を制御したり、各機能部間の連携をとるための機能部である。HTTPトンネリング機能部１３は、HTTPトンネリングサーバHP1との間にHTTPトンネルを構築し、当該HTTPトンネルを用いてデータ通信を行うための機能部である。メディア通信部１４は、他の端末装置との間で音声通信等のメディア通信を行うための機能部である。SIP機能部１５は、SIPの仕様における端末側の機能を有する機能部である。STUN機能部１６は、STUNの仕様における端末側の機能を有する機能部である。TURN機能部１７は、TURNの仕様における端末側の機能を有する機能部である。ICE機能部１８は、ICEの仕様に従った動作をする機能部である。また、図示していないが、端末装置T1には、SIPを利用するアプリケーションが搭載されているものとする。
【００２７】
端末装置T1は、CPU、記憶装置等を有するコンピュータに上記の各機能を実現するためのプログラムを実行させることにより実現できる。当該プログラムは可搬メモリ等の記録媒体からコンピュータにインストールすることとしてもよいし、ネットワーク上のサーバからダウンロードすることとしてもよい。
【００２８】
（動作の概要）
次に、本実施の形態における端末装置T1の動作概要を、図３を参照して説明する。なお、端末装置T2についても同じ動作を行うので、端末装置T1のみについて説明する。前提として、端末装置T1のユーザは端末装置T1を用いて、他の端末装置と音声通信等のメディア通信を行おうとしているものとする。
【００２９】
ユーザからの操作に基づき、まず、端末装置T1は、NAT装置N1を介して外部の装置とUDPデータの送受信が可能かどうかの試験を行う。つまり、端末装置T1は、NAT装置N1がUDPデータを透過するかどうかの判定を行う（ステップ１）。
【００３０】
NAT装置N1がUDP透過である場合（ステップ２におけるYes）、端末装置T1は、従来と同様にしてSIPメッセージ（シグナリングメッセージ）を用いて呼接続処理を行って、他の装置とメディア通信を行う（ステップ３）。ステップ３の中では、適宜ICE機能に基づく処理が行われ、端末装置T1は、決定されたNAT越え方式に基づくアドレス及びポートを用いて上記他の装置とメディア通信を行うことになる。
【００３１】
ステップ２における判定結果がUDP非透過である場合（ステップ２におけるNo)、端末装置T1は、SIPメッセージの送受信等のUDP通信を行うためのHTTPトンネルをHTTPトンネリングサーバHP１との間に構築する（ステップ４）。HTTPトンネリング通信は、実際に通信したいデータにHTTPヘッダを付加して通信するものであり、HTTPトンネルを構築（設定）するとは、そのようなHTTPトンネリング通信を行うための準備を行うことである。例えば、HTTPトンネリング通信用のプログラムモジュール（HTTPトンネリング機能部１３に相当）を起動し、HTTPトンネリングサーバHP1にアクセスしてHTTPトンネル構築を要求すること等が含まれる。なお、HTTPトンネリング技術自体は既存技術である。
【００３２】
そして、端末装置T1は、ステップ４で構築したHTTPトンネルを用いて他の装置との間でSIPメッセージの交換を行って、メディア通信を行う（ステップ５）。ステップ５の中で、ICE機能に基づく処理が実行される。また、ステップ５の中では、メディア通信用のHTTPトンネルがHTTPトンネリングサーバHP1との間に構築されるが、ICEの機能によりHTTPトンネルを使用しない経路がメディア通信用に選択されたり、メディア通信が終了（通話が終了）した場合にはメディア通信用のHTTPトンネルは終了される。HTTPトンネルを終了するとは、例えば、端末装置T1がHTTPトンネリングサーバHP１にHTTPトンネルを終了する旨の要求を送り、HTTPトンネリングサーバHP１が、HTTPトンネルのための設定を解除したり、リソースを解放したりすることである。
【００３３】
そして、端末装置T1は、制御部１２においてSIPを利用するアプリケーションの終了を検知した場合等、SIPメッセージの送受信動作が終了したと判定した場合に（ステップ６のYes)、ステップ４で構築したHTTPトンネルを終了させる（ステップ７）。
【００３４】
（動作の詳細）
以下、端末装置T1の動作をより詳細に説明する。
【００３５】
＜UDP透過判定処理＞
まず、UDP透過判定処理について図４のフローチャートを参照して説明する。まず、端末装置T1は、制御部１３の機能により、STUNに基づくアドレス要求メッセージ（UDPデータ）をSTUNサーバST1に対して送信する（ステップ１１）。もしくは、SIPに基づくRegisterメッセージ又はINVITEメッセージ（いずれもUDPデータ）をSIPサーバS1に送信する（ステップ１１）。なお、これらのメッセージをUDP透過判定メッセージと呼ぶ。そして、端末装置T1は、送信したメッセージに対する応答があるか否かを判定し（ステップ１２）、応答があればNAT装置N1はUDP透過であると判断し（ステップ１３）、送信したメッセージに対する応答がなければNAT装置N1はUDP非透過であると判定する（ステップ１４）。
【００３６】
図５に、上記の処理の一例を示すシーケンスチャートを示す。図５に示すシーケンスチャート、及び以降のシーケンスチャートにおいて、システムの構成は図１に示したとおりのものとする。また、以下の各シーケンスチャートでは、SIPサーバS1とSTUNサーバST1のアドレス及びポートが同一であり、また、端末装置T1、T2のそれぞれにおいてSIPメッセージ、STUNメッセージを送受信するポートは同一であるものとする。従って、シーケンスチャートにおいてSTUNサーバST1のアドレスはS1、ポートはSP1と記載してある。
【００３７】
また、各シーケンスチャートにおいて、メッセージの下側に記載されたA:B=>C:Dは、該当メッセージの送信元アドレスがA、送信元ポートがB、送信先アドレスがC、送信先ポートがDであることを示している。また、装置の参照符号がその装置のアドレスを示す。例えば、端末装置T1のアドレスはT1と標記される。そして、当該参照符号にPと括弧を付したものはポートを示す。例えば、TP(SIP)１は、端末装置T1におけるSIP通信のために用いるポートであることを示している。ただし、上記のとおり、STUNサーバST1のアドレスはS1、ポートはSP1である。
【００３８】
図５（ａ）に示す例では、STUNのアドレス要求メッセージであるBinding RequestをSTUNサーバに送信し（ステップ２１）、その応答であるBinding Responseが端末装置T1に返されている（ステップ２２）。図５（ａ）に示すとおり、Binding Requestメッセージの送信元アドレス及びポートは、NAT装置N1を通過するときにNAT装置N1のアドレス及びポートに変換されている。
【００３９】
図５（ａ）に示す場合は応答が返されているので、端末装置T1は、自身が存在するネットワーク（つまりNAT装置N1）はUDP透過であると判定する。図５（ｂ）はSTUNサーバから応答が返されなかった場合の例を示す。この場合、端末装置T1は、NAT装置N1はUDP非透過であると判定する。
【００４０】
＜HTTPトンネル構築、アドレス割り当て等＞
図６に、HTTPトンネル構築、アドレス割り当て等に関するシーケンスチャートを示す。UDPが非透過である場合、前述したように端末装置T1とHTTPトンネリングサーバHP1との間にHTTPトンネルが構築される。ここでは、端末装置T1がHTTPトンネリングサーバHP1にトンネル接続要求を送り（ステップ２４）、HTTPトンネリングサーバHP1においてHTTPトンネル通信に必要な設定がなされ、トンネル接続応答が返される（ステップ２５）。
【００４１】
その後、端末装置T1は、HTTPトンネリングサーバHP1を経由してSIPサーバ等の他の装置とSIP通信を行うことを可能とするために、HTTPトンネリングサーバHP1に対してアドレス割り当て要求を送信し（ステップ２６）、応答を受ける（ステップ２７）。このアドレス割り当て要求を行い、アドレスの割り当てを受けることは、TURNにおいてTURNサーバにアドレス割当要求を行い、アドレスの割り当てを受けることと全く同様である。つまり、このアドレス要求、割り当て動作は、端末装置T1のTURN機能部１７及びHTTPトンネリングサーバHP1におけるTURN機能により行われる。
【００４２】
図６のステップ２７においてHTTPトンネリングサーバHP1から返されるメッセージの内部には、SIP通信用にHTTPトンネリングサーバHP1において割り当てられた端末装置T1の外部通信用のアドレス（AT（SIP）１）と、ポート（ATP（SIP）１）が含まれる。なお、プロトコルX用にHTTPトンネリングサーバHP1で割り当てた外部通信用のアドレス及びポートをそれぞれAT（X)１、ATP(X)１と標記するものとする。
【００４３】
このアドレス割り当ての概念を図７に示す。図７に示すように、HTTPトンネリングサーバHP1にAT（SIP)１、ATP(SIP)１が割り当てられるとともに、外部装置（SIPサーバ等）は、端末装置T1と通信を行う際には、送信先アドレスとしてAT（SIP)１、ATP(SIP)１を指定する。また、HTTPトンネルサーバHP１内には、少なくとも割り当てたアドレス／ポート（AT（SIP)1:ATP(SIP)１）と、HTTP通信におけるNAT装置N1の外側のアドレス／ポート（N1:NP(HTTP)1）と、端末装置T1のアドレス／ポート（T１:TP(SIP)１）とが対応付けられ、記憶装置に保持される。
【００４４】
図６において、続いてSIP通信を行おうとする端末装置T1は、HTTPトンネルを利用してREGISTERメッセージをSIPサーバS1に送信し（ステップ２８、２９）、SIPサーバS1においては端末装置T1のものとしてのアドレス（AT（SIP)１：ATP(SIP)１）の登録がなされ、その応答が端末装置T1に返される（ステップ３０、３１）。
【００４５】
図６に示すように、端末装置T1から送出されるREGISTERメッセージの送信先アドレス／ポートはHTTPトンネリングサーバHP1のアドレス／ポートである。また、REGISTERメッセージにはcontact及びviaの値としてHTTPトンネリングサーバHP1により割り当てられたアドレス／ポートが設定される。なお、contactにおけるA＠AT(SIP)1:ATP(SIP)1における"A"はユーザ名を示す。これにより、SIPサーバS1は、応答メッセージ（200 OK）をHTTPトンネリングサーバHP1のAT（SIP)１:ATP(SIP)１宛に返し、HTTPトンネリングサーバHP1はHTTPトンネルを利用して応答メッセージ（200 OK）を端末装置T1に返す。
【００４６】
＜SIP通信についての詳細処理＞
図３に示したステップ２においてUDP透過であると判定された場合は、ICE処理を含むSIP通信処理が行われる。
【００４７】
以下では、UDP非透過であると判定された場合におけるICE処理を含むSIPメッセージ通信処理について、図８のフローチャート、及び図９〜１４のシーケンスチャートを用いて説明する。
【００４８】
図８において、例えば、端末装置T1においてREGISTERが終了し、IP電話機能の使用を開始する操作を検知したことを契機に、もしくは、他の通信相手端末からINVITEを受信したことを契機にICE機能が起動される（ステップ４１）。ICE機能を起動するとは、ICE機能を実現するためのソフトウェアモジュールを起動することを意味する。
【００４９】
また、端末装置T1は、メディア通信用のHTTPトンネルをHTTPトンネリングサーバHP1との間に構築しておく（ステップ４２）。なお、ここでHTTPトンネルを構築せずに、既に構築してあるSIP用のHTTPトンネルをメディア通信用に使用することとしてもよい。既に構築してあるSIP用のHTTPトンネルをメディア通信用に使う場合でも、メディア通信はSIP通信に比べて大きな帯域を使用するので、メディア通信用に帯域を割り当てる旨の要求を端末装置T1からHTTPトンネリングサーバHP１の送り、その要求を受けてHTTPトンネリングサーバHP１がHTTPトンネルにおけるメディア通信用の帯域を割り当ててもよい。なお、このように帯域を割り当てることもメディア通信用にHTTPトンネルを構築（設定）することに含まれるものとする。
【００５０】
その後、図３のステップ４で構築したSIP通信用のHTTPトンネル、及びHTTPトンネリングサーバHP１に割り当てられた外部通信用のアドレス／ポートを利用して、メディア通信を行うための前提となるSIPメッセージの交換がなされるとともに、その中でICEに基づき複数候補のうちどのアドレスを使用してメディア通信を行うかの判断が行われる（ステップ４３）。
【００５１】
ここで、ICEの機能により、端末装置T1が、HTTPトンネリングを利用したメディア通信を行わないと判断した場合（ステップ４３のNo)、メディア通信用に構築したHTTPトンネルを終了する（ステップ４４）。メディア通信用に構築したHTTPトンネルを終了するとは、メディア通信用にSIP用とは別にHTTPトンネルを構築した場合はそれを終了させることであり、SIP用のHTTPトンネルをメディア通信用にも使用している場合は、例えば当該HTTPトンネルにおいてメディア通信用に割り当てられた帯域を解放することである。メディア通信用に構築したHTTPトンネルを終了させるためには、例えば端末装置T1が当該HTTPトンネルを終了させるための要求をHTTPトンネリングサーバHP1に送信し、HTTPトンネリングサーバHP1では帯域の解放、設定の解除等を行って、応答を端末装置T1に返す。
【００５２】
HTTPトンネリングを利用したメディア通信を行うと判定した場合（ステップ４３のYes）、HTTPトンネリングを利用したメディア通信（通話）を行い、メディア通信が終了すれば（ステップ４５のYes）、メディア通信用のHTTPトンネルを終了する（ステップ４６）。なお、メディア通信が終了したことは、例えば、端末装置T1の制御部１２においてメディア通信の終了を通知するメッセージ（Bye等）を検知（自分で送信、もしくは受信）することにより判定できる。
【００５３】
次に、図１のシステムにおいてNAT装置N1がUDP非透過であり、NAT装置N2がUDP透過である場合におけるINVITEメッセージ送信及びその応答受信に係るシーケンスチャートを図９〜図１１に示す。なお、端末装置T2も端末装置T1と同様の機能を備えており、端末装置T2側においてUDP透過であればSIP通信用のHTTPトンネルをHTTPトンネリングサーバHP2との間に構築せず、UDP非透過であればSIP通信用のHTTPトンネルをHTTPトンネリングサーバHP2との間に構築しているものとする。なお、以下の説明におけるUDP非透過の側にある端末装置とHTTPトンネリングサーバ間のメッセージ送受信はHTTPトンネルを用いてなされている。
【００５４】
また、図９〜１１においては、UDP透過である端末装置T2側では、TURNサーバTUが用いられているが、このTURNサーバTUは、HTTPトンネリングサーバHP2と同一装置でもよい。
【００５５】
図９において、端末装置T１は、ICEの制御に基づきTURN機能を用いて、メディア通信用の外部通信用アドレスの割り当てをHTTPトンネリングサーバHP1に対して要求する（ステップ６１）。当該要求には、端末装置T1におけるメディア通信用のアドレス／ポート（T1:TP（RTP）1）が含まれる。HTTPトンネリングサーバHP1は、当該要求に対してメディア通信用の外部通信用アドレス（AT(RTP)1:ATP（RTP）1）を割り当て、それを、端末装置T1におけるメディア通信用のアドレス（T1:TP（RTP）1）と、HTTPトンネル通信におけるNAT装置N1の外部アドレス（N1:NP（HTTP）1）とともに保持しておく。
【００５６】
そして、HTTPトンネリングサーバHP1は、割り当てたアドレス／ポート（AT(RTP)1:ATP（RTP）１）を含む割り当て応答を端末装置T１に返す（ステップ６２）。
【００５７】
その後、端末装置T１は、INVITEメッセージをHTTPトンネルを用いて送信する（ステップ６３、６４）。このINVITEメッセージには、REGISTERメッセージと同様に、contact及びviaの値としてSIP通信用の外部通信用アドレス／ポートが設定される。
【００５８】
また、ICEの機能により、INVITEメッセージの内部に、host candidateアドレスとして端末装置T1のメディア通信用の（T1：TP（RTP）１）が含められ、relayed candidateアドレスとしてHTTPトンネリングサーバHP1に割り当てられたメディア用の外部通信用アドレスが含められる。
【００５９】
ここで、一般的なICEの機能について説明する。図１５に示す構成において、ICE機能をサポートする端末装置１０は端末装置１０自身のアドレス／ポート、NAT装置３０の外側のアドレス／ポート（STUNを使用して取得）、TURNサーバ５０において割り当てられる外部通信用のアドレス／ポートを取得し、それを相手側の端末装置２０にSIPメッセージを用いて通知する。ICE機能をサポートする端末装置２０も端末装置２０自身のアドレス／ポート、NAT装置４０の外側のアドレス／ポート（STUNを使用して取得）、TURNサーバ５０において割り当てられる外部通信用のアドレス／ポートを取得し、それを相手側の端末装置１０に通知する。そして、相手側についてのアドレス情報を受け取った各端末装置は、受け取ったアドレスに対する通信を試み、通信が可能であるアドレスのうち優先度の高いアドレスに対してメディア通信を行うこととしている。ここで、端末装置自身のアドレスをHost Candidateと呼び、NAT装置の外側のアドレスをServer Reflexive candidate と呼び、TURNサーバで割り当てられた外部通信用のアドレスをRelayed Candidateと呼んでいる。
【００６０】
図９に示すUDP非透過におけるINVITE送信においては、Server Reflexive candidateを含めていないが、それはUDP非透過の場合はそもそもServer Reflexive candidateを用いた通信を行うことはできないからである。
【００６１】
端末装置T1から送信されたINVITEメッセージは、HTTPトンネリングサーバHP1を経由してSIPサーバS1に送られる（ステップ６４）。SIPサーバS1は、当該INVITEメッセージを端末装置T2に向けて送信する（ステップ６５）。なお、端末装置T2側ではUDP透過であるため、SIPサーバS1は、端末装置T2へのメッセージ送信先としてNAT装置N2の外部アドレスを保持しているものとする。
【００６２】
INVITEメッセージを受信した端末装置T2は、ICE機能に基づく制御により、Server Reflexive candidateを取得し（図１０のステップ６６、６７）、更にRelayed Candidateを取得する（ステップ６８、６９）。そして、host candidate、Server Reflexive candidate、Relayed Candidateを含む200 OKメッセージをSIPサーバS1に向けて送信する（図１１のステップ７０）。SIPサーバS1は、当該200 OKメッセージを、端末装置T1の外部通信用のアドレス宛に送信する（ステップ７１）。そして、HTTPトンネリングサーバHP1は、HTTPトンネルを用いて、200 OKメッセージを端末装置T1に対して送信する（ステップ７２）。200 OKメッセージを受信した端末装置T1は、ACKを返す（ステップ７３〜７５）。
【００６３】
その後、ICEの仕様に基づき、最適なアドレスが決定される。つまり、ICEに規定されたNominationによって通信経路が決定される。なお、ここでは、HTTPトンネリングサーバHP1に割り当てられた端末装置T1用の外部通信アドレスは、ICEに規定されているTURNサーバでの外部通信用のアドレス（Relayed Candidate)と同じ位置付けでICEに規定された選択処理が行われる。ここで、HTTPトンネリングサーバHP1と端末装置TP１間のHTTPトンネルを使う経路が選択された場合には、当該HTTPトンネルが継続して使用される。また、例えば、端末装置T1と端末装置T2のhost candidate間での通信が可能である場合には、HTTPトンネルを使う経路は選択されないので、メディア通信用のHTTPトンネルは終了される。例えば、端末装置T1は、HTTPトンネルを使う経路が選択されなかったことを、端末装置T2からHTTPトンネルを使う経路を用いた（relayed candidateを用いた）通信確認メッセージを受信しなかったことで判断できる。
【００６４】
次に、端末装置T1側、端末装置T2側の両方がUDP非透過である場合におけるINVITEメッセージ送信、応答受信のシーケンスを図１２〜１４に示す。この場合、端末装置T2側では、端末装置T1側と同様にして、SIP通信用のHTTPトンネルがHTTPトンネリングサーバHP2との間で構築され、REGISTERも済んでいるものとする。
【００６５】
図１２に示すシーケンスのステップ８１〜ステップ８４は図９のステップ６１〜ステップ６４と同じである。図１２のステップ８５、８６においては、図９の場合と異なり、SIPサーバS1から送信されたINVITEメッセージは、HTTPトンネリングサーバHP2を介してHTTPトンネル経由で端末装置T2に送信される。その後の端末装置T2は、図１３のステップ８７、８８において端末装置T1がINVITEを送信するときと同様にしてrelayed candidateの割り当てを受け、host candidateとrelayed candidateを含む200 OKメッセージをHTTPトンネルを介して送信する（図１４のステップ８９、９０）。
【００６６】
200 OKメッセージを受信したSIPサーバS1は、図１１の場合と同様にして200 OKメッセージを端末装置T1側に送信する（ステップ９１、９２）。そして、端末装置T１からACKが返される（ステップ９３〜９６）。
【００６７】
この場合も、その後、通信経路の選択処理が行われ、HTTPトンネリングサーバHP1と端末装置T１間のHTTPトンネルを使う経路が選択された場合には、端末装置T1の側において当該HTTPトンネルが継続して使用される。また、HTTPトンネリングサーバHP2と端末装置T２間のHTTPトンネルを使う経路が選択された場合には、端末装置T2の側において当該HTTPトンネルが継続して使用される。また、端末装置T１の側、端末装置TP１の側、のそれぞれにおいて、HTTPトンネルを使う経路が選択されない場合には、メディア通信用のHTTPトンネルは終了する。
【００６８】
上述したように、本実施の形態のシステムによれば、SIPに基づくVoIP等のメディア通信をNAT装置を介して端末装置間で行う場合において、NAT越え方式としてHTTPトンネリングを必要に応じて選択することを可能とする技術を提供することが可能となる。また、本実施の形態によれば、常にHTTPトンネルを張ることはなくなり、HTTPトンネルを利用する時間が抑制され、HTTPトンネリングサーバのコスト負担を抑えられる。
【００６９】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。    
【図面の簡単な説明】
【００７０】
【図１】本発明の実施の形態におけるシステムの全体構成図である。
【図２】端末装置の機能構成図である。
【図３】端末装置の動作の概要を説明するためのフローチャートである。
【図４】UDP透過判定処理を説明するためのフローチャートである。
【図５】UDP透過判定処理を説明するためのシーケンスチャートである。
【図６】HTTPトンネル構築、アドレス割り当て等に関するシーケンスチャートである。
【図７】外部通信用アドレス割り当ての概念を示す図である。
【図８】UDP非透過であると判定された場合の処理を説明するためのフローチャートである。
【図９】メッセージ通信処理を説明するためのシーケンスチャート（１）である。
【図１０】メッセージ通信処理を説明するためのシーケンスチャート（２）である。
【図１１】メッセージ通信処理を説明するためのシーケンスチャート（３）である。
【図１２】メッセージ通信処理を説明するためのシーケンスチャート（４）である。
【図１３】メッセージ通信処理を説明するためのシーケンスチャート（５）である。
【図１４】メッセージ通信処理を説明するためのシーケンスチャート（６）である。
【図１５】ICEの機能を説明するための図である。
【符号の説明】
【００７１】
N1、N2、３０、４０  NAT装置
T1、T2、１０、２０  端末装置
S1  SIPサーバ
ST1  STUNサーバ
HP1、HP2  HTTPトンネリングサーバ
６  インターネット
７、８  プライベートネットワーク
１１  通信インタフェース部
１２  制御部
１３  HTTPトンネリング機能部
１４  メディア通信部
１５  SIP機能部
１６  STUN機能部
１７  TURN機能部
１８  ICE機能部  
５０  TURNサーバ
【図１】
0004961368.tif 000002
【図２】
0004961368.tif 000003
【図３】
0004961368.tif 000004
【図４】
0004961368.tif 000005
【図５】
0004961368.tif 000006
【図６】
0004961368.tif 000007
【図７】
0004961368.tif 000008
【図８】
0004961368.tif 000009
【図９】
0004961368.tif 000010
【図１０】
0004961368.tif 000011
【図１１】
0004961368.tif 000012
【図１２】
0004961368.tif 000013
【図１３】
0004961368.tif 000014
【図１４】
0004961368.tif 000015
【図１５】
0004961368.tif 000016