説明

通信装置、および通信方法

【課題】送信元ポート番号を的確に予測させて、通信装置間の複数のセッションを確実に確立することができる通信装置、および通信方法を提供する。
【解決手段】PCは、新規にセッションの確立開始の要求対象となるセッションを抽出する(S1)。抽出したセッションの中に、複数のポート検出用パケットを用いたNATルータの送信元ポート番号の予測を行うUHPによって確立されるセッションが存在するか否かを、NATルータの特性に基づいて判断する(S3、S4)。PCは、新規にセッションの確立開始の要求対象となるセッションが複数存在する場合に、UHPによって確立されるセッションが存在するか否かの判断の結果に基づいて、複数のセッションの各々の確立開始を要求する複数の要求信号の送信タイミングを制御する(S4〜9)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の通信装置からなる通信システムにおいて、各通信装置間でP2P通信を実行するための通信装置、および通信方法に関する。
【背景技術】
【0002】
従来、複数の通信装置がP2Pで通信を行うために、複数の通信装置間でセッションを確立する技術が知られている。プライベートネットワーク内の通信装置が、グローバルネットワークに接続するためには、ネットワークアドレス変換機能またはネットワークアドレスポート変換機能を有する装置(NATルータ等。以下、「NAT装置」という。)を介する必要がある。特許文献1は、通信装置にNAT装置が接続されている場合にセッションを確立する手法の1つを開示している。
【0003】
特許文献1が開示している手法は、UDP Hole Punching(以下、「UHP」という。)と呼ばれている。特許文献1に記載のUHPでは、第一の通信装置は、NAT装置に送信履歴を残すためのパケットであるバブルパケットを、第二の通信装置に送信する。さらに、第一の通信装置は、バブルパケットの送信の前後に、ポート検出用パケットをサーバへ送信する。ポート検出用パケットの送信元ポートの番号から、2つのポート検出用パケットの間に送信されたバブルパケットの送信元ポート(第二の通信装置との間の通信に使用されるポート)の番号が予測される。第二の通信装置は、予測された送信元ポートにパケットを送信する。その結果、第一の通信装置と第二の通信装置との間でセッションが確立する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−157941号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ポート検出用パケットを用いてバブルパケットの送信元ポート番号を予測する場合、2つのポート検出用パケットがサーバに送信される間に、バブルパケット以外のパケットがNAT装置を通過すると、問題が生じる場合がある。例えば、一の通信装置から1つ目のポート検出用パケットがサーバに送信されてから、2つ目のポート検出用パケットがサーバに送信されるまでの間に、他の通信装置からも、NAT装置を通過するパケットがサーバに送信される場合がある。サーバは、2つのポート検出用パケットの送信元ポートの間にあるポートのうち、どちらが一の通信装置によって使用されたバブルパケットの送信元ポートであり、またどちらが他の通信装置によって使用された送信元ポートであるかを区別することができない。その結果、意図しない通信装置間でセッションが確立する等の不具合が生じるという問題点があった。
【0006】
本発明は、送信元ポート番号を的確に予測させて、通信装置間の複数のセッションを確実に確立することができる通信装置、および通信方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第一の態様に係る通信装置は、2つの通信装置間でP2P通信を行うためのセッションの確立開始を要求する信号である要求信号を他の通信装置に送信することが可能な通信装置であって、新規に前記セッションの確立開始の要求対象となるセッションを抽出するセッション抽出手段と、前記セッション抽出手段によって抽出されたセッションの中に、複数のポート検出用パケットを用いたNAT装置の送信元ポート番号の予測を行うUHPによって確立されるセッションが存在するか否かを、前記セッション抽出手段によって抽出されたセッションにおいてデータが通過するNAT装置の特性に基づいて判断する第一判断手段と、前記セッション抽出手段によって抽出されたセッションが複数存在する場合に、前記第一判断手段による判断の結果に基づいて、前記複数のセッションの各々の確立開始を要求する複数の前記要求信号の送信タイミングを制御する送信制御手段とを備えている。
【0008】
第一の態様に係る通信装置は、UHPによって確立されるセッションが存在するか否かに基づいて、複数の要求信号を適切なタイミングで送信することで、送信元ポートを予測するためのパケットの送受信の合間に他のパケットが送受信されることを防止することができる。よって、送信元ポート番号の予測が失敗することを防止することができる。
【0009】
前記通信装置は、前記UHPによって確立されるセッションが存在すると前記第一判断手段によって判断された場合に、前記UHPによって確立されるセッションにおいてデータが通過するNAT装置を特定するNAT装置特定手段と、前記セッション抽出手段によって抽出されたセッションの中に、前記NAT装置特定手段によって特定された一のNAT装置にデータを通過させる複数のセッションが存在するか否かを判断する第二判断手段とをさらに備えてもよい。前記送信制御手段は、前記第二判断手段によって複数のセッションが存在すると判断された場合に、前記NAT装置特定手段によって特定された前記一のNAT装置にデータを通過させる複数のセッションの各々の確立開始を要求する前記複数の要求信号を、所定条件に基づいてそれぞれ異なるタイミングで送信する第一送信制御手段を備えるとよい。
【0010】
複数のセッションが同一のNAT装置にデータを通過させる場合に、要求信号をずらして送信することで、UHPにおけるパケットの送受信の合間に他のパケットが送受信されることを防止することができる。従って、セッションの確立を仲介するサーバは、複数のセッションが同一のNAT装置にデータを通過させる場合であっても、バブルパケットの送信元ポートの番号を的確に予測することができる。その結果、サーバは、複数のセッションを確実に確立することができる。
【0011】
前記通信装置は、前記要求信号を送信した送信先の通信装置との間で、確立開始を要求したセッションの確立が完了したことを示す信号である完了信号の通信を行う通信手段をさらに備えてもよい。前記第一送信制御手段は、前記通信手段によって前記完了信号の通信が行われてから次の前記要求信号を送信するとよい。通信装置は、一のセッションの確立が完了してから次のセッションの確立開始を要求することができる。従って、送信元ポート番号を予測するためのパケットの送受信の合間にバブルパケット以外の他のパケットが送受信されることを、効率よく且つ確実に防止することができる。
【0012】
前記送信制御手段は、前記NAT装置特定手段によって特定されたNAT装置にデータを通過させるセッションが複数存在しないと前記第二判断手段によって判断された場合に、前記第一送信制御手段によって送信される複数の前記要求信号の送信間隔よりも短い送信間隔で複数の前記要求信号を送信する第二送信制御手段をさらに備えてもよい。一のNAT装置にデータを通過させるセッションが複数存在しなければ、UHPが重複して行われても、サーバは送信元ポート番号を的確に予想することができる。従って、通信装置は複数の要求信号を短い間隔で送信することで、送信元ポート番号の予測に不具合を生じさせることなく、全セッションの確立に要する時間を短縮することができる。
【0013】
前記要求信号は、他の通信装置との間でのセッションの確立開始を要求するために前記他の通信装置に送信される信号であるセッション開始信号、および、他の2つの通信装置間でのセッションの確立開始を要求するために前記2つの通信装置の一方から他方へ前記セッション開始要求信号を送信させる指示を行う信号であるセッション転送要求信号の少なくともいずれかであるとよい。通信装置は、セッション開始信号(例えば、SIPに準拠している場合はINVITEメッセージ)、およびセッション転送要求信号(例えば、SIPに準拠している場合はREFERメッセージ)の少なくともいずれかの送信タイミングを制御することで、セッション確立の不具合を的確に防止することができる。
【0014】
本発明の第二の態様に係る通信方法は、2つの通信装置間でP2P通信を行うためのセッションの確立開始を要求する信号である要求信号を他の通信装置に送信することが可能な通信装置によって行われる通信方法であって、新規に前記セッションの確立開始の要求対象となるセッションを抽出するセッション抽出ステップと、前記セッション抽出ステップによって抽出されたセッションの中に、複数のポート検出用パケットを用いたNAT装置の送信元ポート番号の予測を行うUHPによって確立されるセッションが存在するか否かを、前記セッション抽出ステップによって抽出されたセッションにおいてデータが通過するNAT装置の特性に基づいて判断する第一判断ステップと、前記セッション抽出ステップによって抽出されたセッションが複数存在する場合に、前記第一判断ステップによる判断の結果に基づいて、前記複数のセッションの各々の確立開始を要求する複数の前記要求信号の送信タイミングを制御する送信制御ステップとを備えている。
【0015】
第二の態様に係る通信方法によると、通信装置は、UHPによって確立されるセッションが存在するか否かに基づいて、複数の要求信号を適切なタイミングで送信することで、送信元ポートを予測するためのパケットの送受信の合間に他のパケットが送受信されることを防止することができる。よって、送信元ポート番号の予測が失敗することを防止することができる。
【図面の簡単な説明】
【0016】
【図1】会議システム100のシステム構成を示す図である。
【図2】PC1の電気的構成を示すブロック図である。
【図3】PC1〜4が行う送信制御処理のフローチャートである。
【図4】会議システム100においてPC1〜4がセッションを確立する際の処理の一例を示すシーケンス図である。
【図5】図4に示すシーケンス図の続きである。
【発明を実施するための形態】
【0017】
以下、本発明に係る通信装置を具現化した一実施の形態であるパーソナルコンピュータ(以下、「PC」という。)1〜4について、図面を参照して説明する。参照する図面は、本発明が採用し得る技術的特徴を説明するために用いられるものである。図面に記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【0018】
図1を参照して、会議システム100のシステム構成について説明する。会議システム100は、複数のPCと、サーバ6とを備える。以下の説明では、4つのPC1〜4を用いて会議が実行される場合を例に挙げる。しかし、PCの数が4つに限られないことは言うまでもない。PCの代わりに、テレビ会議専用の端末等を通信装置として使用することも可能である。
【0019】
各拠点に配置されたPC1〜4は、インターネット等の外部ネットワーク8を介してサーバ6に接続することができる。サーバ6は、複数のPC間におけるセッションを確立する。セッションとは、一般に、通信装置間の接続の開始から終了までをいう。特に、本実施の形態では、RTP(Real−time Transport Protocol)によって複数のPCが音声データおよび画像データを相互に直接送受信できる状態をいう。PC1〜4は、セッションの確立後に音声データおよび画像データを相互に送受信することで、遠隔会議を実行する。なお、会議システム100では、複数のPC1〜4が外部ネットワーク8上で通信を開始するための双方向通信プロトコルとして、SIP(RFC3261)が用いられる。SIP(Session Initiation Protocol)は、外部ネットワーク8上でエンド・トゥ・エンドのセッションを確立するためのプロトコルであり、リアルタイムコミュニケーションを容易に実現できる。
【0020】
図1に示す例では、拠点AにいるAliceは、PC1を使用して会議に参加する。拠点Bには、BobおよびCarolがいる。BobはPC2を使用し、CarolはPC3を使用する。拠点CにいるDaveは、PC4を使用して会議に参加する。拠点BのPC2およびPC3は、共にNAT(Network Address Translation)ルータ9を介して外部ネットワーク8に接続する。拠点CのPC4は、NATルータ10を介して外部ネットワーク8に接続する。拠点AのPC1は、NATルータを介さずに直接外部ネットワーク8に接続する。
【0021】
NATルータ9,10は、ローカルなネットワーク(例えば、LAN)内で使用されるプライベートIPアドレスと、外部ネットワーク8で使用されるグローバルIPアドレスとを相互変換する。詳細には、拠点BのNATルータ9は、アドレス制限ConeNATに分類される。アドレス制限ConeNATは、NATルータの外側の外部ネットワーク8側からホストを特定することで通信することができるという特性を有する。拠点CのNATルータ10は、ポート制限ConeNATに分類される。ポート制限ConeNATは、外部ネットワーク8側からホストおよびポートを特定することで通信することができるという特性を有する。
【0022】
UHPについて説明する。例えば、図1に示す例では、NATルータ9に接続するPC2,3と、NATルータ10に接続するPC4との間にセッションを確立するために、UHPが用いられる。UHPとは、ローカルネットワーク内にある通信装置が、外部ネットワーク8を経由して他の通信装置と双方向のUDPコネクションを確立する手法である。本実施の形態で行われるUHPでは、サーバ6は、複数のポート検出用パケットを用いて、PCが通信相手のPCとの通信に使用するNATルータ9,10の送信元ポートの番号を予測する。予測された番号の送信元ポートに、通信相手のPCがパケットを送信することで、セッションが確立する。
【0023】
具体的に、PC2に接続されたNATルータ9の送信元ポート番号をサーバ6が予測する手順について説明する。PC2は、NATルータ9に送信履歴を残すためのパケットであるバブルパケットを、通信相手となる通信装置に送信する。図1に示す例では、PC2の通信相手となる通信装置がPC4であれば、PC4が接続しているNATルータ10はポート制限ConeNATである。よって、PC2は、NATルータ10の特定のポートへバブルパケットを送信する。さらに、PC2は、バブルパケットの送信の前後に、ポート検出用パケットをサーバ6へ送信する。サーバ6は、ポート検出用パケットの送信元ポートの番号から、2つのポート検出用パケットの間に送信されたバブルパケットの送信元ポートの番号を予測する。PC2の通信相手となる通信装置は、サーバ6が予測した番号の送信元ポートにパケットを送信する。その結果、セッションが確立する。
【0024】
サーバ6がバブルパケットの送信元ポート番号を予測する場合、2つのポート検出用パケットが送信される間にバブルパケット以外のパケットがNATルータ9を通過すると、問題が生じる場合がある。サーバ6は、2つのポート検出用パケットの送信元ポートの間にあるポートのうち、どれがバブルパケットの送信元ポートであり、どれがポート番号の予測に関係ないパケットの送信元ポートであるかを区別することができない可能性があるためである。サーバ6が送信元ポート番号の予測に失敗すると、意図しない通信装置間でセッションが確立する等の不具合が生じる。本実施の形態のPC1〜4は、サーバ6にバブルパケットの送信元ポート番号を的確に予測させることができる点に特徴を有する。
【0025】
図2を参照して、PC1の電気的構成について説明する。図2に示すように、PC1は、PC1の制御を司るCPU20を備えている。CPU20には、ROM21、RAM22、ハードディスクドライブ(以下、「HDD」という。)23、および入出力インターフェース25が、バス24を介して接続されている。ROM21は、PC1を動作させるためのプログラムおよび初期値等を記憶している。RAM22は、制御プログラムで使用される各種の情報を一時的に記憶する。HDD23は、各種の情報を記憶する不揮発性の記憶装置である。
【0026】
本実施の形態では、HDD23には、PC1〜4のそれぞれのNATの特性を示す情報が記憶されている。NATの特性を示す情報とは、PCがNATルータを介して外部ネットワーク8に接続されているか否か、および、NATルータを介している場合におけるNATルータの分類を示す情報である。
【0027】
入出力インターフェース25には、音声入力処理部41、音声出力処理部42、映像入力処理部43、映像出力処理部44、操作部45、および外部通信インターフェース26が接続されている。音声入力処理部41は、音声を入力するマイク31からの音声データの入力を処理する。音声出力処理部42は、音声を出力するスピーカ32の動作を処理する。映像入力処理部43は、映像を撮像するカメラ33からの画像データの入力を処理する。映像出力処理部44は、映像を表示する表示装置34の動作を処理する。操作部45は、ユーザがPC1に各種指示を入力するために用いられる。外部通信インターフェース26は、PC1を外部ネットワーク8に接続する。
【0028】
なお、PC3,4の電気的構成はPC1と同じである。デスクトップ型のPC2は、外部に設けられたマイク31、スピーカ32、カメラ33、および表示装置34に接続する点のみが、ノート型のPC1と異なる。サーバ6の電気的構成は、デスクトップ型のPC2の電気的構成と同じである。従って、PC2〜4およびサーバ6の電気的構成の説明は省略する。通信装置として、PCの代わりにテレビ会議専用の端末等を用いる場合でも、基本的な電気的構成は同じである。
【0029】
以下、PC1〜4が行う処理について、図3から図5を参照して説明する。PC1〜4における処理は、自装置内のROM21およびHDD23に記憶されているプログラムに従ってCPU20が実行する。
【0030】
まず、図3を参照して、PC1〜4のそれぞれが実行する送信制御処理について説明する。送信制御処理は、セッションの確立開始を要求する信号である要求信号を送信する指示が、ユーザまたは他の通信装置から入力された場合に、要求信号が送信される前に実行される。PC1〜4は、送信制御処理で要求信号の送信タイミングを設定することで、UHPにおけるバブルパケットの送信元ポート番号の予測が失敗することを防止する。要求信号には、セッション開始信号およびセッション転送要求信号がある。セッション開始信号は、信号を送信する通信装置と送信先の通信装置との間におけるセッションの確立開始を要求するための信号である。本実施の形態では、セッション開始信号はSIPメッセージの呼出要求「INVITE」に相当する。セッション転送要求信号は、信号を送信する通信装置とは異なる2つの通信装置間におけるセッションの確立開始を要求する信号である。セッション転送要求信号は、セッションの確立を開始する2つの通信装置の一方に送信され、セッション開始信号を送信させる指示を行う。本実施の形態では、セッション転送要求信号はSIPメッセージ「REFER」に相当する。
【0031】
送信制御処理では、まず、新規に確立開始の要求対象となるセッションが抽出される(S1)。具体的には、新規に送信される呼出要求「INVITE」およびSIPメッセージ「REFER」の数が抽出される。複数のセッションが抽出されたか否かが判断される(S2)。抽出されたセッションが1つであれば(S2:NO)、抽出されたセッションを確立するためにUHPが必要である場合でも、複数のポート検出用パケットが送信される間にバブルパケット以外のパケットが送受信されることはない。従って、送信制御処理はそのまま終了し、要求信号が通常通り送信される。
【0032】
抽出されたセッションが複数であれば(S2:YES)、抽出された複数のセッションの各々の確立方法が判定される(S3)。セッションの確立方法は、PC1〜4の各々のHDD23に記憶されている各PCのNATの特性を示す情報によって判断される。例えば、本実施の形態では、NATルータを介さずに外部ネットワーク8に接続されるPC1と、他のPC2〜4との間のセッションは、UHPを用いずに直接確立することができる。アドレス制限ConeNATを介するPC2,3と、ポート制限ConeNATを介するPC4との間のセッションは、UHPを用いて確立する必要がある。セッションの確立方法は、セッションを確立する2つの通信装置のNATの特性に応じて一意に決定される。
【0033】
確立開始を要求する複数のセッションのうち、UHPを実行する必要のあるセッションが存在するか否かが判断される(S4)。UHPを実行する必要のあるセッションが1つも存在しなければ(S4:NO)、送信される複数の要求信号の送信間隔が、送信タイミングをずらす場合(後述する)よりも短い送信間隔に設定されて(S5)、送信制御処理は終了する。複数の要求信号の送信間隔を短くすることで、全セッションの確立が完了するまでに要する時間を短縮することができる。UHPが必要なセッションが存在しなければ、複数の要求信号の送信間隔を短くしても不具合は生じない。
【0034】
UHPを実行する必要のあるセッションが1つでも存在する場合には(S4:YES)、UHPによって確立されるセッションにおいてデータが通過し、且つUHPの実行中にバブルパケットおよびポート検出用パケットが通過するNATルータが特定される(S7)。つまり、S7では、ポート予測によってポートが予測される対象となるNATルータが特定される。特定された1または複数のNATルータのそれぞれに対し、2以上のセッションにおいてデータが通過するNATルータであるか否かが判断される(S8)。2以上のセッションにおいてデータが通過するNATルータがあれば(S8:YES)、複数の要求信号の送信タイミングをずらすように設定される(S9)。詳細には、少なくとも当該NATルータにデータを通過させる2以上の新規セッションの確立開始を要求する複数の要求信号を、異なるタイミングで送信するように設定される。その後、送信制御処理は終了し、要求信号が送信される(図4および図5参照)。送信タイミングをずらす設定が行われると、一の新規セッションの確立が完了してから次の要求信号が送信されるが、この詳細は後述する。
【0035】
UHPを実行する必要のあるセッションが存在する場合でも、S7で特定された全てのNATルータのそれぞれを通過するセッションが1つであれば(S8:NO)、UHPで行われるバブルパケットの送信元ポート番号の予測は失敗しない。よって、複数の要求信号の送信間隔が短い間隔に設定されて(S5)、送信制御処理は終了する。
【0036】
次に、図4および図5を参照して、会議システム100の全体で行われる処理の一例について説明する。図4および図5は、PC1〜4がセッションを確立する際の処理の一例を示す。具体的に、AliceがBob、Carol、Daveの順で他のユーザを遠隔会議に招待する場合の処理を示す。なお、RTPによる直接通信が可能となるまでは、2つのPC間において送受信されるSIPメッセージはサーバ6を介する。しかし、説明を簡略化するため、以下の説明ではSIPメッセージがサーバ6を介する旨の記載を省略する。
【0037】
図4に示す例では、Aliceが、BobのPC2との間のセッションの確立開始の指示をPC1に入力する。PC1は、確立開始の要求指示が入力されると、前述した送信制御処理(図3参照)を実行する(S11)。S11では、新規に確立開始の要求対象となるセッションは、PC1−PC2間のセッションの1つのみである。従って、要求信号はすぐに送信される。詳細には、PC1からPC2へ呼出要求「INVITE」が送信される(S12)。PC2は、状況通知「180Ringing」をPC1に送信し(S13)、次に成功応答「200 OK」をPC1に送信する(S14)。PC1は、確認応答「ACK」をPC2に送信する(S15)。その結果、PC1とPC2との間のセッションが確立する。PC1およびPC2は、RTPによって音声データおよび画像データを相互に直接送受信できる状態となる。
【0038】
次いで、Aliceは、CarolのPC3との間のセッションの確立開始の指示をPC1に入力する。PC1は、確立開始の要求指示が入力されると送信制御処理(図3参照)を実行するが(S16)、新規に確立されるセッションは今回も1つである。従って、S12〜S15と同様のSIPメッセージの送受信がPC1とPC3との間で行われて(S17〜S20)、PC1とPC3との間のセッションが確立する。
【0039】
PC1は、PC3から「200 OK」を受信し(S19)、「ACK」を返送することを契機として(S20)、PC2とPC3との間のセッションの確立開始を要求する。つまり、PC3から受信する「200 OK」(S19)を、セッションの確立開始の要求指示として入力する。従って、PC1は、「ACK」をPC3に送信すると(S20)、送信制御処理(図3参照)を実行する(S21)。新規に確立されるセッションはPC2―PC3間のセッションの1つのみである。よって、PC1は、SIPメッセージ「REFER」を通常通りPC2に送信する(S22)。S22で送信される「REFER」は、「INVITE」をPC2からCarolのPC3に送信するように、PC2に対する指示を行うためのメッセージである。PC2は、成功応答「202 Accepted」をPC1に返送する(S23)。
【0040】
PC2が受信する「REFER」は、セッションの確立開始の要求を指示するメッセージである。よって、PC2は送信制御処理(図3参照)を行う(S24)。新規に確立されるセッションは1つであるため、「INVITE」が通常のタイミングでPC2からPC3に送信される(S25)。PC3は「180 Ringing」を返送し(S26)、さらに「200 OK」をPC2に送信する(S27)。「ACK」がPC2からPC3へ送信されて(S28)、PC2−PC3間のセッションが確立する。PC2からPC1へ通知メッセージ「NOTIFY」が送信されることで(S29)、PC1は、PC2−PC3間のセッションの確立が完了したことを認識する。
【0041】
図5の説明に移行する。次いで、Aliceは、DaveのPC4との間のセッションの確立開始の指示をPC1に入力する。PC1は、送信制御処理(図3参照)を行うが(S31)、新規に確立されるセッションは1つである。よって、「INVITE」(S32)、「180 Ringing」(S33)、「200 OK」(S34)、および「ACK」(S35)の各メッセージが通常のタイミングで送受信されて、PC1−PC4間のセッションが確立する。
【0042】
PC1は、PC4から「200 OK」を受信し(S34)、「ACK」を返送することを契機として(S35)、PC2−PC4間、およびPC3−PC4間の2つのセッションの確立開始を要求する。まず、PC1は、送信制御処理を行う。図3に示すように、新規に確立開始を要求するセッションが2つであれば(S2:YES)、セッションの確立方法が判定される(S3)。前述したように、PC2およびPC3は、アドレス制限ConeNATであるNATルータ9に接続している。PC4は、ポート制限ConeNATであるNATルータ10に接続している。従って、PC2−PC4間のセッション、およびPC3−PC4間のセッションは、共にUHPを実行することが必要なセッションであると判定される(S4:YES)。UHPが必要なセッションが通過するNATルータ9,10のうち、バブルパケットおよびポート検出用パケットが通過することになるNATルータ9が特定される(S7)。NATルータ9は2つのセッションが通過するため(S8:YES)、2つの要求信号を異なるタイミングで送信するように設定される(S9)。
【0043】
図5に示すように、PC1は、2つの要求信号を異なるタイミングで送信する場合、まず一方の要求信号のみを送信する。具体的には、PC1は、PC2に送信する「REFER」、およびPC3に送信する「REFER」の2つの要求信号のうち、PC2に送信する「REFER」のみを先に送信する(S38)。S38で送信される「REFER」は、「INVITE」をPC2からDaveのPC4に送信するように、PC2に対する指示を行うためのメッセージである。PC2は、「202 Accepted」を返送する(S39)。PC2は送信制御処理(図3参照)を行うが、送信する「INVITE」は1つであるため、「INVITE」を通常のタイミングでPC4に送信する(S42)。PC4は「180 Ringing」を返送し(S43)、次いで「200 OK」をPC2に送信する(S44)。PC2は「ACK」を返送し(S45)、PC2−PC4間のセッションが確立する。PC2−PC4間のセッションを確立するために必要なUHPは、送信制御処理(S41)が終了してからRTPによる直接通信が行われる前までに実行される。セッションが確立すると、PC2からPC1へ「NOTIFY」が送信される(S46)。その結果、PC1は、PC2−PC4間のセッションが確立したことを認識する。
【0044】
PC1は、PC2から「NOTIFY」を受信し(S46)、PC2−PC4間のセッションが確立したことを認識した以後に、次の要求信号「REFER」をPC3に送信する(S48)。PC3は、「202 Accepted」を返送し(S49)、送信制御処理を行う(S51)。「INVITE」(S52)、「180 Ringing」(S53)、「200 OK」(S54)、および「ACK」(S55)がPC3−PC4間で送受信されて、PC3−PC4間のセッションが確立する。PC3−PC4間のセッションを確立するために必要なUHPは、送信制御処理(S51)が終了してからRTPによる直接通信が行われる前までに実行される。従って、PC2−PC4間のセッションを確立するためのUHPの実行タイミングと、PC3−PC4間のセッションを確立するためのUHPの実行タイミングとは、重複しない。よって、UHPの実行中に行われる送信元ポート番号の予測が失敗することはない。PC3がPC2に「NOTIFY」を送信することで(S56)、4つのPC1〜PC4における相互のセッションの確立が完了する。
【0045】
以上説明したように、本実施の形態の会議システム100は、NATルータの送信元ポート番号の予測をUHPの実行中に行うことで、効率よく的確にセッションを確立することができる。PC1〜4は、新規に確立開始を要求するセッションが複数存在する場合に、UHPによって確立されるセッションが存在するか否かに基づいて、複数の要求信号の送信タイミングを制御する。UHPは、要求信号の送信を契機として行われる。従って、PC1〜4は、複数のUHPの実行タイミングが重複することを防止することができるため、バブルパケットの送信元ポート番号を予測するためのパケットの送受信の合間に他のパケットがサーバ6に送信されることを防止することができる。よって、PC1〜4は、サーバ6による送信元ポート番号の予測が失敗することを防止することができる。
【0046】
PC1〜4は、UHPを実行することが必要なセッションを含む複数のセッションが同一のNATルータにデータを通過させるか否かを判断する。通過させると判断された場合に、少なくとも当該複数のセッションの確立開始を要求する複数の要求信号を、異なるタイミングで送信する。具体的には、PC1〜4は、一のセッションの確立が完了してから、次のセッションの確立開始を要求する要求信号を送信する。従って、PC1〜4は、UHPにおけるパケットの送受信の合間に他のパケットが送受信されることを、効率よく且つ確実に防止することができる。
【0047】
一方、PC1〜4は、UHPを実行することが必要なセッションを含む複数のセッションが同一のNATルータにデータを通過させないと判断した場合、通過させると判断した場合に比べて短い間隔で要求信号を送信する。従って、PC1〜4は、バブルパケットの送信元ポート番号の予測が失敗しないことを的確に把握して、全セッションの確立に要する時間を短縮することができる。PC1〜4は、セッション開始信号である「INVITE」、およびセッション転送要求信号である「REFER」の少なくともいずれかの送信タイミングを制御することで、バブルパケットの送信元ポート番号の予測が失敗することを的確に防止することができる。
【0048】
上記実施の形態において、PC1〜4のそれぞれが本発明の「通信装置」に相当する。図3のS1で新規に確立開始の要求対象となるセッションを抽出するCPU20が、本発明の「セッション抽出手段」として機能する。図3のS3およびS4で、送信元ポート番号の予測を行うUHPによって確立されるセッションが存在するか否かを判断するCPU20が、本発明の「第一判断手段」として機能する。図3のS3〜S9で要求信号の送信タイミングを制御するCPU20が「送信制御手段」として機能する。
【0049】
図3のS7でNATルータを特定するCPU20が「NAT装置特定手段」として機能する。図3のS8で、複数のセッションが特定のNATルータにデータを通過させるか否かを判断するCPU20が「第二判断手段」として機能する。図3のS9および図5のS38,S48で要求信号を異なるタイミングで送信するCPU20が「第一送信制御手段」として機能する。図4および図5で、セッションの確立が完了したことを示す「ACK」および「NOTIFY」の通信を行うCPU20が「通信手段」として機能する。図3のS5で要求信号の送信間隔を短く設定し、且つ短い間隔で要求信号を送信するCPU20が、本発明の「第二送信制御手段」として機能する。
【0050】
図3のS1で新規に確立開始の要求対象となるセッションを抽出する処理が、本発明の「セッション抽出手段」に相当する。図3のS3およびS4で、送信元ポート番号の予測を行うUHPによって確立されるセッションが存在するか否かを判断する処理が、本発明の「第一判断手段」に相当する。図3のS3〜S9で要求信号の送信タイミングを制御する処理が「送信制御手段」に相当する。
【0051】
本発明は、上記実施の形態に限定されることはなく、様々な変形が可能であることは言うまでもない。上記実施の形態では、複数のPC1〜4がP2P通信を行う場合を例示したが、他の形態の会議システムにおいても本発明を適用できる。例えば、遠隔会議を管理する会議サーバを会議システムに備え、会議サーバが要求信号の送信タイミングを制御してもよい。つまり、会議サーバを本発明の「通信装置」として用いることも可能である。この会議サーバは、PC間のセッションを確立するためのサーバとは異なるサーバであってもよい。1つのサーバが、セッションを確立するための機能(上記実施の形態におけるサーバ6の機能)と遠隔会議を管理する機能とを兼ねてもよい。会議サーバを備えた会議システムであっても、上記実施の形態と異なるのは、システム全体におけるメッセージの送受信の順序のみである。会議サーバが行う特徴的な処理は、図3に示す送信制御処理と同じである。
【0052】
上記実施の形態のPC1〜4は、UHPによって確立されるセッションにおいてデータが通過し、且つUHPの実行中にバブルパケットおよびポート検出用パケットが通過するNATルータを特定する(S7、図3参照)。従って、UHPによって確立されるセッションがデータを通過させる2つのNATルータのうちの一方に対してのみポート予測が行われる場合には、他方のNATルータ(ポート予測が行われないNATルータ)は特定されない。よって、ポート予測が失敗する可能性があるNATルータのみを適切に特定することができる。しかし、PC1〜4は、バブルパケットおよびポート検出用パケットが通過するか否かに関わらず、UHPによって確立されるセッションにおいてデータが通過するNATルータを全て特定してもよい。UHPによって確立されるセッションにおいてデータが通過するNATルータには、バブルパケットおよびポート検出用パケットが通過するNATルータが必ず含まれる。よって、上記実施の形態と同様に、ポート予測が失敗することを防止することができる。
【0053】
上記実施の形態のPC1〜4は、UHPを実行することが必要なセッションを含む複数のセッションが同一のNATルータにデータを通過させるか否かを判断する。通過させると判断された場合に、少なくとも当該複数のセッションの確立開始を要求する複数の要求信号を異なるタイミングで送信する。しかし、要求信号の送信タイミングの制御方法は適宜変更できる。例えば、PC1〜4は、新規に確立開始の要求対象となるセッションが複数存在した場合、UHPが必要なセッションが1つでも存在するか否かを判断する。UHPが必要なセッションが1つでも存在した時点で、NATルータの特定(S7、図3参照)等の処理を経ることなく、全ての要求信号が互いに異なるタイミングで送信されるように制御してもよい。この場合でも、PC1〜4は、UHPが必要なセッションが存在するか否かに基づいて要求信号のタイミングを制御することで、バブルパケットの送信元ポート番号の予測が失敗することを防止することができる。
【0054】
上記実施の形態のPC1〜4は、複数の要求信号を異なるタイミングで送信する場合、2回目以降に送信される要求信号を、前回送信された要求信号によるセッションの確立が完了することを条件に送信する。しかし、複数の要求信号を異なるタイミングで送信する場合の送信の条件は、これに限られない。例えば、セッションの確立に要する時間を考慮して、要求信号の送信間隔をあらかじめ定めておき、定められた送信間隔で1つずつ要求信号を送信することを条件としてもよい。つまり、PC1〜4は、UHPの実行中に次の要求信号が送信されることを排除できる送信条件に従えばよい。上記実施の形態では、複数の要求信号の送信タイミングが短い送信間隔に設定された場合には、複数の要求信号はほぼ同時に送信される。その結果、セッションの確立が完了するまでの時間を短縮させている。しかし、複数の要求信号を同時に送信することで処理遅延等の問題が生じる場合には、間隔を空けて複数の要求信号を送信してもよい。
【0055】
図4および図5に示す例では、S38およびS48の2つの「REFER」のみが異なるタイミングで送信されている。しかし、上記実施の形態のPC1〜4は、セッション開始信号である「INVITE」の送信タイミング、およびセッション転送要求信号である「REFER」の送信タイミングの両方を制御できる。従って、1人のユーザが2つの通信装置を用いて会議に参加する場合等は、複数の「INVITE」が異なるタイミングで送信される場合もある。一方で、1人のユーザが使用できる通信装置が1つのみである場合には、「REFER」の送信タイミングのみを制御すれば、送信元ポート番号の予測が失敗することを防止できる。「REFER」の送信タイミングのみを制御する場合には、PC1〜4は、「REFER」の送信前にのみ送信制御処理(図3参照)を実行すればよい。
【0056】
上記実施の形態では、PC1〜4のそれぞれのNATの特性を示す情報が、あらかじめ各PC1〜4のHDD23に記憶されている。PC1〜4は、HDD23に記憶されている情報に基づいて、セッションの確立方法を判定している。しかし、NATの特性を示す情報はあらかじめ記憶されている必要はない。例えば、セッションの確立を開始する際に、各PCからNATの特性を示す情報を受信してもよい。PC1〜4は、セッションの確立開始時に、公知の処理であるNATの特性の判別処理を行い、NATの特性の情報を取得してもよい。上記実施の形態では、セッション開始プロトコルとして汎用的なSIPプロトコルが使用されている。しかし、これは一例に過ぎず、他の技術を用いて遠隔会議を実行する会議システムにも本発明は適用できる。
【符号の説明】
【0057】
1〜4 PC
9,10 NATルータ
20 CPU
21 ROM
23 HDD
100 会議システム

【特許請求の範囲】
【請求項1】
2つの通信装置間でP2P通信を行うためのセッションの確立開始を要求する信号である要求信号を他の通信装置に送信することが可能な通信装置であって、
新規に前記セッションの確立開始の要求対象となるセッションを抽出するセッション抽出手段と、
前記セッション抽出手段によって抽出されたセッションの中に、複数のポート検出用パケットを用いたNAT装置の送信元ポート番号の予測を行うUHP(UDP Hole Punching)によって確立されるセッションが存在するか否かを、前記セッション抽出手段によって抽出されたセッションにおいてデータが通過するNAT装置の特性に基づいて判断する第一判断手段と、
前記セッション抽出手段によって抽出されたセッションが複数存在する場合に、前記第一判断手段による判断の結果に基づいて、前記複数のセッションの各々の確立開始を要求する複数の前記要求信号の送信タイミングを制御する送信制御手段と
を備えたことを特徴とする通信装置。
【請求項2】
前記UHPによって確立されるセッションが存在すると前記第一判断手段によって判断された場合に、前記UHPによって確立されるセッションにおいてデータが通過するNAT装置を特定するNAT装置特定手段と、
前記セッション抽出手段によって抽出されたセッションの中に、前記NAT装置特定手段によって特定された一のNAT装置にデータを通過させる複数のセッションが存在するか否かを判断する第二判断手段とをさらに備え、
前記送信制御手段は、
前記第二判断手段によって複数のセッションが存在すると判断された場合に、前記NAT装置特定手段によって特定された前記一のNAT装置にデータを通過させる複数のセッションの各々の確立開始を要求する前記複数の要求信号を、所定条件に基づいてそれぞれ異なるタイミングで送信する第一送信制御手段を備えたことを特徴とする請求項1に記載の通信装置。
【請求項3】
前記要求信号を送信した送信先の通信装置との間で、確立開始を要求したセッションの確立が完了したことを示す信号である完了信号の通信を行う通信手段をさらに備え、
前記第一送信制御手段は、前記通信手段によって前記完了信号の通信が行われてから次の前記要求信号を送信することを特徴とする請求項2に記載の通信装置。
【請求項4】
前記送信制御手段は、
前記NAT装置特定手段によって特定されたNAT装置にデータを通過させるセッションが複数存在しないと前記第二判断手段によって判断された場合に、前記第一送信制御手段によって送信される複数の前記要求信号の送信間隔よりも短い送信間隔で複数の前記要求信号を送信する第二送信制御手段をさらに備えたことを特徴とする請求項2または3に記載の通信装置。
【請求項5】
前記要求信号は、
他の通信装置との間でのセッションの確立開始を要求するために前記他の通信装置に送信される信号であるセッション開始信号、および、他の2つの通信装置間でのセッションの確立開始を要求するために前記2つの通信装置の一方から他方へ前記セッション開始要求信号を送信させる指示を行う信号であるセッション転送要求信号の少なくともいずれかであることを特徴とする請求項1から4のいずれかに記載の通信装置。
【請求項6】
2つの通信装置間でP2P通信を行うためのセッションの確立開始を要求する信号である要求信号を他の通信装置に送信することが可能な通信装置によって行われる通信方法であって、
新規に前記セッションの確立開始の要求対象となるセッションを抽出するセッション抽出ステップと、
前記セッション抽出ステップによって抽出されたセッションの中に、複数のポート検出用パケットを用いたNAT装置の送信元ポート番号の予測を行うUHP(UDP Hole Punching)によって確立されるセッションが存在するか否かを、前記セッション抽出ステップによって抽出されたセッションにおいてデータが通過するNAT装置の特性に基づいて判断する第一判断ステップと、
前記セッション抽出ステップによって抽出されたセッションが複数存在する場合に、前記第一判断ステップによる判断の結果に基づいて、前記複数のセッションの各々の確立開始を要求する複数の前記要求信号の送信タイミングを制御する送信制御ステップと
を備えたことを特徴とする通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate