(58)【調査した分野】(Int.Cl.,DB名)
前記通信制御装置は、前記端末と前記通信相手端末との間の通信が、所定の通信網を経由して行われるように、前記アドレスの集合における各アドレスに付加された優先度を示すスコアのうち、少なくとも1つのアドレスのスコアを変換する
ことを特徴とする請求項2に記載の通信システム。
第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムにおいて、前記第1通信網に備えられる前記第1アドレス通知装置として機能するアドレス通知装置であって、
前記第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末であって、前記第2アドレス通知装置にアドレス要求を送信するとともに、前記第1アドレス通知装置にアドレス要求を送信する端末から、当該アドレス要求を受信し、当該アドレス要求から送信元アドレスを取得する取得手段と、
前記送信元アドレスを含む応答を前記端末に向けて送信するアドレス通知手段と
を備えることを特徴とするアドレス通知装置。
通信制御装置と、第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムにおいて使用される前記通信制御装置であって、
前記第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末からアドレスの集合を受信し、当該アドレスの集合を当該端末の通信相手となる通信相手端末に送信する中継手段を備え、
前記アドレスの集合は、前記端末から前記第1アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレス、及び、前記端末から前記第2アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレスを含む
ことを特徴とする通信制御装置。
前記端末と前記通信相手端末との間の通信が、所定の通信網を経由して行われるように、前記アドレスの集合における各アドレスに付加された優先度を示すスコアのうち、少なくとも1つのアドレスのスコアを変換する変換手段
を更に備えることを特徴とする請求項7に記載の通信制御装置。
通信制御装置と、第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムとの間で制御通信を行う端末であって、
前記第1アドレス通知装置にアドレス要求を送信し、当該アドレス要求の送信元アドレスを含む応答を当該第1アドレス通知装置から受信し、当該応答から送信元アドレスを取得する手段と、
前記第2アドレス通知装置にアドレス要求を送信し、当該アドレス要求の送信元アドレスを含む応答を当該第2アドレス通知装置から受信し、当該応答から送信元アドレスを取得する手段と、
前記第1アドレス通知装置及び前記第2アドレス通知装置から受信した各応答から取得したアドレスを含むアドレスの集合を前記通信制御装置に送信する手段と、を備え、
前記通信制御装置は、前記端末から受信したアドレスの集合を、当該端末の通信相手となる通信相手端末に送信する
ことを特徴とする端末。
前記通信相手端末により取得されたアドレスの集合を前記通信制御装置から受信し、当該アドレスの集合と、前記端末が取得したアドレスの集合とに基づいて、前記通信相手端末との間の通信に使用するアドレスのペアを決定する手段
を更に備えることを特徴とする請求項10に記載の端末。
第1通信網に備えられる第1通信制御装置及び第1アドレス通知装置と、第2通信網に備えられる第2通信制御装置及び第2アドレス通知装置とを含む通信システムであって、
前記第1通信制御装置と前記第2通信制御装置はそれぞれ、前記第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末からアドレスの集合を受信し、当該アドレスの集合を当該端末の通信相手となる通信相手端末に送信する中継手段を備え、
前記アドレスの集合は、前記端末から前記第1アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレス、及び、前記端末から前記第2アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレスを含む
ことを特徴とする通信システム。
前記第1通信制御装置と前記第2通信制御装置はそれぞれ、前記端末と前記通信相手端末との間の通信が、所定の通信網を経由して行われるように、前記アドレスの集合における各アドレスに付加された優先度を示すスコアのうち、少なくとも1つのアドレスのスコアを変換する変換手段
を更に備えることを特徴とする請求項14に記載の通信システム。
【発明を実施するための形態】
【0016】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0017】
本実施の形態で説明するP2P通信では、通信の宛先等の指定のために、IPアドレスとポート番号の組が用いられるが、以下では、便宜上、IPアドレスとポート番号の組を「アドレス」と呼ぶことにする。これを「トランスポートアドレス」と称してもよい。「IPアドレス」に言及する場合には、IPアドレス、IPv4アドレス、IPv6アドレス等と記述する。
【0018】
(システム構成)
図1は、本発明の実施の形態に係る通信システムの全体構成図である。
図1に示すように、本実施の形態における通信システムは、第1通信網10、第2通信網20を備える。第1通信網10と第2通信網20では、パケットのルーティングに使用されるIPアドレスが異なる。ここでの「IPアドレスが異なる」場合としては、例えば、一方が「IPv4アドレス」を使用し、他方が「IPv6アドレス」を使用する場合、一方が「IPアドレス」の特定のアドレス帯を使用し、他方が同じ種類の「IPアドレス」の別のアドレス帯を使用する場合、等がある。また、一方が、インターネット等のグローバルネットワークで使用される「IPアドレス」であり、他方が、物理的あるいは論理的にグローバルネットワークから分離されたNW、例えばVPNなどの閉域網で使用される「IPアドレス」である場合も「IPアドレスが異なる」場合に相当する。
【0019】
第1通信網10と第2通信網20はそれぞれ特定の種類の網に限定されないが、本実施の形態では、一例として、第1通信網10はアクセス網(例:NGN網)であり、第2通信網20は、アクセス網に接続されたインターネットであることを想定している。ただし、他のユースケースもあり、それについては後述する。なお、
図1では、便宜上、第1通信網10と第2通信網20を分離して描いている。また、通信網の数は2つに限られず、3つ以上の通信網が備えられていてもよい。
【0020】
図1に示すように、本通信システムには、P2P通信を行う端末である端末40Aと端末40Bが備えられている。本実施の形態では、各端末はブラウザあるいはブラウザに相当するWebRTC通信機能を持つソフトウェアを備える一般的なPCあるいはスマートフォン、携帯電話機、またはセンサ・アクチュエータ等のIoT・M2Mデバイス等の端末であり、WebRTCを用いてP2P通信によりビデオ通話等を行うことを想定しているが、これは一例に過ぎず、P2P通信によりデータの通信を行ってもよい。また、P2P通信により音声通話を行ってもよい。本明細書の説明においては、これらビデオ、データ、音声等を総称して「メディア」と呼ぶ。
【0021】
また、端末40Aが備えられる拠点にはNAT装置50Aが設置され、端末40Bが備えられる拠点にはNAT装置50Bが設置されている。NAT装置50A/50Bは、基本的に、端末40A/40Bにおいてローカルに割り当てられているアドレス(内部アドレスと呼ぶ)と、第1通信網10/第2通信網20の側で使用されるアドレス(外部アドレスと呼ぶ)とを相互に変換する機能を備える装置である。なお、NAT装置50A/50Bを備えることは必須ではなく、NAT装置50A/50Bを備えないこととしてもよい。なお、第1通信網10/第2通信網20が閉域網である場合でも、第1通信網10/第2通信網20の側で使用されるアドレスを外部アドレスと呼ぶ。
【0022】
図1に示すように、本通信システム30には、シグナリングサーバ30が備えられる。シグナリングサーバ30は、端末40Aと端末40Bが、P2P通信のための通信経路(チャネル)を確立するために、端末40Aと端末40Bとの間の制御信号の中継を行う装置である。詳細は後述するが、より具体的には、端末40Aと端末40BがP2P通信のためのアドレスペアを決定する際に、シグナリングサーバ30は、端末40Aと端末40Bとの間で、各端末により収集されたアドレス候補の交換等を行う。端末40Aと端末40Bはそれぞれ、シグナリングサーバ30に登録を行って、シグナリングサーバ30と通信を行う。
【0023】
端末40Aと端末40Bとの間のシグナリングを実行できるのであれば、シグナリングサーバ30はどこに設置されていてもよい。例えば、シグナリングサーバ30は、第1通信網10に設置されてもよいし、第2通信網20に設置されてもよいし、その他の網に設置されてもよい。なお、シグナリングサーバ30を「通信制御装置」と称してもよい。
【0024】
更に、
図1に示すように、第1通信網10にSTUNサーバ11が備えられ、第2通信網20にSTUNサーバ21が備えられる。STUNサーバ11とSTUNサーバ21は、STUNサーバとしての機能は同じである。ただし、STUNサーバ11には第1通信網10のアドレスが割り当てられ、STUNサーバ21には第2通信網20のアドレスが割り当てられている。なお、STUNサーバを「アドレス通知装置」と称してもよい。また、各網に複数のSTUNサーバが備えられていてもよい。また、STUNサーバ11とSTUNサーバ21とを有する構成を「通信システム」と称してもよい。
【0025】
各STUNサーバは、例えば非特許文献1に記載されたSTUNの機能を有するサーバである。基本的な機能として、各STUNサーバは、端末から送信されたバインディングリクエスト(アドレス要求)を受信したら、当該リスエストのパケットから送信元アドレスを取得し、当該送信元アドレスをバインディングレスポンス(アドレス応答)に含め、当該バインディングレスポンスを送信元アドレス宛に送信する機能を備える。本実施の形態では、上記の送信元アドレスは、例えばNAT変換後の外部アドレスである。これにより、端末は、自身の外部アドレスを知ることができ、これを通信相手に通知することで、通信相手は、当該端末への宛先アドレスを知ることができる。なお、NAT装置が存在しない場合、端末自身に割り当てられたホストアドレスがバインディングレスポンスに含められて、返されることとしてもよい。
【0026】
バインディングレスポンスに含められて端末に返されるアドレスは「Reflexive Transport Address」と呼ばれる。
【0027】
STUNは、NAT越えを行う際に使用できる技術の1つであり、その他の技術として、例えば、TURN(Traversal Using Relays around NAT)がある。TURNは、メディアのパケットを中継するためのTURNサーバを通信網内に配置し、TURNサーバを経由して端末間の通信を可能とする技術である。
【0028】
(ICEについて)
端末40Aと端末40Bとの間でP2P通信を行うためには、両端末はお互いのアドレスを知る必要がある。そこで、本実施の形態における各端末は、非特許文献2に記載されているICE(Interactive Connectivity Establishment)と呼ばれるプロトコルを使用して、P2P通信に使用するアドレスを決定する。
【0029】
ICEでは、各端末が、STUNやTURN等で利用可能なアドレスを収集し、端末間で、収集されたアドレスを交換して、お互いに接続チェック(ホールパンチング)を行い、通信可能なアドレスのうち最も優先度の高いアドレスを選択して通信を行う。選択の優先順位は、例えば、自身のアドレスが最も高く(つまりNAT装置を介さないローカル通信を行う場合)、次にSTUNサーバにより通知された外部アドレス、その次にTURNサーバを経由して通信するためのアドレスとなる。より具体的な例については後述する。なお、本実施の形態では、便宜上、TURNを考慮しないものとする。
【0030】
上記の端末自身のアドレスの種別(Type)を「host」と呼び、STUNのアドレスの種別(Type)を、「server reflexive」と呼ぶ。「server reflexive」は、一部を省略して、「srflx」と記述してもよい。
【0031】
(基本的な手順例)
図2を参照して、本実施の形態における、端末40Aと端末40Bとの間で実行されるICEの基本的な手順例を説明する。なお、この手順は一例である。
図2に示す手順に代えて、例えば、取得した候補をすぐに相手に送り、すぐに接続チェックを行うような手順を用いてもよい。また、
図2に示す手順は、シグナリングサーバ30を介して実行されるが、シグナリングサーバ30の記載は省略している。
【0032】
ステップS101において、端末40Aは、アドレス収集を行う。具体的には、端末40Aは、まず、自身に割り当てられているアドレスを取得する。このアドレスを、端末40A側のhostのアドレスという意味で、「アドレス(host)A」と記述する。以下、同様の記述方式を用いる。また、以下では、第1通信網10側のアドレスを「第1アドレス」、第2通信網20側のアドレスを「第2アドレス」と呼ぶことにする。
【0033】
端末40Aには、STUNサーバ11のアドレスとSTUNサーバ21のアドレスが予め設定(格納)されており、端末40Aは、STUNサーバ11にバインディングリクエストを送信し、バインディングレスポンスを受信することで、第1アドレス(srflx)Aを取得し、STUNサーバ21にバインディングリクエストを送信し、バインディングレスポンスを受信することで、第2アドレス(srflx)Aを取得する。
【0034】
上記の例は、STUNサーバのアドレス(IPアドレス)を直接指定することでバインディングリクエストを送信する方法の例であるが、このような方法の他、例えば、宛先とするSTUNサーバをFQDNで指定して、IPアドレスをDNSサーバによって解決してもらう方法を使用してもよい。
【0035】
上記のようにして、端末40Aは、アドレス(host)A、第1アドレス(srflx)A、及び、第2アドレス(srflx)Aを取得する。
図1において、例えば、Cで示されるポートのアドレスがアドレス(host)Aに相当し、Dで示されるポートのアドレスが第2アドレス(srflx)Aに相当し、Eで示されるポートのアドレスが第1アドレス(srflx)Aに相当する。なお、hostのアドレスであるアドレス(host)Aは、第1通信網10と第2通信網20のそれぞれに対して存在しても良い。つまり、hostのアドレスとして、第1アドレス(host)Aと第2アドレス(host)Aが取得されてもよい。本例では、hostのアドレスとして1つのアドレス(host)Aが取得された場合を例として示している。
【0036】
次に、端末40Aは、収集した各アドレスの優先度(Priority)に相当するスコアを算出する。スコアの算出方法は、非特許文献2の4.1.2章に記載されている方法を使用することができる。具体的には、種別(host、srflx等)に応じたhost preferenceの値(例:host:128、srflx:100)と、アドレスファミリ(IPv4、IPv6)に応じたLocal Preferenceの値などからスコアを算出する。ただし、スコアの算出方法は、非特許文献2の4.1.2章に記載されている方法に限られるわけではない。Local preferenceの値に関し、非特許文献2において、IPv6のほうがIPv4よりも高い値とすることが推奨されており、本実施の形態では、この推奨に従う。
【0037】
次に、ステップS102において、端末40Aは、ステップS101で収集されたアドレス(アドレス候補と呼ぶ)を、算出したスコアとともに端末40Bに送信する。ここでは、例として、SDP(Session Description Protocol)オファーのメッセージを使用する。
【0038】
具体的には、ステップS102において、端末40Aは、「アドレス(host)Aとスコア、第1アドレス(srflx)Aとスコア、第2アドレス(srflx)Aとスコア」をアドレス候補として端末40Bに送信する。
【0039】
アドレス候補を含むSDPオファーを受信した端末40Bは、ステップS103において、端末40A側でのアドレス収集及びスコア算出と同様にして、アドレス(host)B、第1アドレス(srflx)B、及び、第2アドレス(srflx)Bを取得して、それぞれのスコアを算出する。
【0040】
そして、ステップS104において、端末40Bは、SDPアンサーとして、「アドレス(host)Bとスコア、第1アドレス(srflx)Bとスコア、第2アドレス(srflx)Bとスコア」を端末40Aに送信する。
【0041】
これにより、端末40Aと端末40Bはそれぞれ、自身のアドレス候補と、相手のアドレス候補を持つ。そして、端末40Aと端末40Bはそれぞれ、自身のアドレス1つと相手のアドレス1つをペアにしたアドレスペアの組み合わせ(集合)を作成するとともに、アドレスペア毎のスコアを算出し、優先度順に並べる(これをチェックリストと呼ぶことにする)。ここでのスコアリングは、非特許文献2の5.7.2に記載された方法を用いることができる。この方法では、基本的に、ペアを構成する各アドレスのスコアが高ければ、高いスコアが得られる。ただし、非特許文献2の5.7.2に記載された方法でスコアリングを行うことは一例に過ぎず、他の方法でスコアリングを行ってもよい。
【0042】
ステップS105では、端末40Aと端末40Bはそれぞれ、アドレスペア毎に接続チェックを行う。接続チェックでは、STUNのバインディングリクエストを使用したホールパンチングが実行される。例えば、端末40Aから、あるアドレスペアにおける端末40Bの宛先アドレス(これをアドレスBと呼ぶ)宛にバインディングリクエストを送信し、バインディングレスポンスを受信した場合、バインディングレスポンスに含まれるアドレス(reflexive address)(これをアドレスAと呼ぶ)を取得する。そして、アドレスAとアドレスBのペアと一致する、チェックリストの中のアドレスペアがあれば、当該アドレスペアは接続チェックが成功したことになる。なお、接続チェックは、端末40A(controlling agent)からのみ行うこととしてもよい。
【0043】
上記のような方法で接続チェックを行い、例えば、端末40A(controlling agent)が、接続チェックが成功したアドレスペアのうち、最も優先度の高いアドレスペアを、メディアの送信のために使用することを決定して、当該アドレスペアを端末40B(controlled agent)に通知する。端末40Bは、当該アドレスペアを使用できる場合(例:端末40Bからの接続チェックが成功したアドレスペアに含まれるアドレスペアである場合)、端末40Bは当該アドレスペアを使用することを決定してよい。また、端末40Bにおいても端末40Aと同様の処理を実行し、端末40Bが端末40Bからの送信のためのアドレスペアを決定してもよい。その後、決定したアドレスペアを使用したP2P通信が実行される(ステップS106)。例えば、端末40Aは決定したアドレスペアの送信先のアドレスにメディアを送信し、端末40Bは決定したアドレスペアの送信先のアドレスにメディアを送信する。
【0044】
なお、端末40Aからの送信に用いられるアドレスペアと、端末40Bからの送信に用いられるアドレスペアは、同じでもよいし、異なっていてもよい。
【0045】
なお、上記のようなアドレスの決定方法は一例に過ぎず、他の方法でアドレスを決定してもよい。以下では、より具体的な動作例である第1の実施例と第2の実施例を説明する。
【0046】
(第1の実施例)
第1の実施例において、端末40Aと端末40Bとの間で実行される動作を
図3を参照しながら説明する。基本的な手順は
図2で説明したとおりであるが、第1の実施例では、第1通信網10と第2通信網20が特定のIPアドレスを使用する場合において、各網にSTUNサーバを備えた構成により、従来技術の課題が解決されることを説明する。なお、
図2と同様に、
図3でもシグナリングサーバ30の記載を省略している。
【0047】
第1の実施例では、第1通信網10は、パケットのルーティングをIPv6アドレスを使用して行う網(例:NGN網)であり、第2通信網20は、パケットのルーティングをIPv4アドレスを使用して行う網(例:インターネット)であるとする。
【0048】
ステップS201において、端末40Aは、アドレス収集を行う。ここでは、例えば、端末40Aには、NAT装置50Aからプライベート(ローカル)のIPv4のアドレスと、プライベートのIPv6のアドレスが割り当てられており、hostのアドレスとしてIPv4とIPv6のアドレスが取得されるものとする。これらを「IPv4(host)A」、「IPv6(host)A」と記述する。更に、端末40Aは、STUNサーバ21とSTUNサーバ11のそれぞれにバインディングリクエストを送信し、それぞれからバインディングレスポンスを受信することで、IPv4(srflx)A、及びIPv6(srflx)Aを取得する。
【0049】
端末40Aは、収集した各アドレスのスコアを算出する。ここでは、「IPv6(host)A>IPv4(host)A>IPv6(srflx)A>IPv4(srflx)A」に示す大きさの順番でスコアが算出される。
【0050】
次に、ステップS202において、端末40Aは、ステップS201で収集されたアドレス候補を、算出したスコアとともに端末40Bに送信する。具体的には、ステップS202において、端末40Aは、「IPv6(host)Aとスコア、IPv4(host)Aとスコア、IPv6(srflx)Aとスコア、IPv4(srflx)Aとスコア」を含むメッセージを端末40Bに送信する。
【0051】
ステップS203では、端末40Bにおいてアドレス収集が行われ、ステップS204において、端末40Bは、「IPv6(host)Bとスコア、IPv4(host)Bとスコア、IPv6(srflx)Bとスコア、IPv4(srflx)Bとスコア」を含むメッセージを端末40Aに送信する。
【0052】
これにより、端末40Aと端末40Bはそれぞれ、自身のアドレス候補と、相手のアドレス候補を持つ。そして、端末40Aと端末40Bはそれぞれ、自身のアドレス1つと相手のアドレス1つをペアにしたアドレスペアの集合を作成するとともに、アドレスペア毎のスコアを算出し、優先度順に並べ、チェックリストとする。
【0053】
その後、ステップS205で接続チェックが行われる。ここでは、例えば端末40Aにおいて、IPv6(srflx)AとIPv6(srflx)Bのペアと、IPv4(srflx)AとIPv4(srflx)Bのペアの両方で接続チェックに成功したとする。同じ種別(srflx)であれば、IPv6のほうが優先度のスコアが高いため、ステップS206において、端末40Aは、IPv6(srflx)AとIPv6(srflx)Bのペアをメディアの送信のためのアドレスペアとして決定する。端末40Bにおいても同様の手順で、アドレスペアが決定され、ステップS207においてP2P通信が開始される。あるいは、端末40Aにより決定されたアドレスペアが端末40Bに通知され、端末40Bは当該アドレスペアを使用することとしてもよい。
【0054】
一般に、インターネットではIPv4が使用され、また、NAT装置配下の端末同士でhostのアドレスでのP2P接続チェックは成功しないことが想定されるから、上記の第1の実施例のケースは高い可能性で発生し得るケースであるといえる。
【0055】
そして、第1の実施例では、第1通信網10と第2通信網20のそれぞれにSTUNサーバを備えるという従来にない構成を採用したことで、端末40Aと端末40Bとの間のP2P通信を、第1通信網10(例:NGN網)を経由した経路で実行させることを可能としている。
【0056】
また、第1通信網10と第2通信網20のそれぞれにSTUNサーバを備えるという従来にない構成を採用したことで、仮に片方の通信網でP2P通信が出来なかった場合でも、他方の通信網にフォールバックしてP2P通信を行うことができるという効果もある。
【0057】
(第2の実施例)
次に、第2の実施例における端末40Aと端末40Bとの間で実行される動作を
図4を参照しながら説明する。基本的な手順は
図2で説明したとおりであるが、第2の実施例では、シグナリングサーバ30が、スコアの変換を行うことで、従来技術の課題が解決される例を説明する。
【0058】
第2の実施例では、第1通信網10は、パケットのルーティングをIPv6アドレス(これを第1IPv6アドレスと呼ぶ)を使用して行う網(例:NGN網)であり、第2通信網20は、パケットのルーティングを、第1IPv6アドレスとは異なるアドレス帯のIPv6アドレス(これを第2IPv6アドレスと呼ぶ)を使用して行う網(例:インターネット)であるとする。
【0059】
ステップS301において、端末40Aは、アドレス収集を行う。ここでは、例えば、端末40Aには、第2通信網20で使用される第2IPv6のアドレスが割り当てられており、hostのアドレスとして第2IPv6のアドレスが取得されるものとする。これを「第2IPv6(host)A」と記述する。他も同様の形式を用いることとする。更に、端末40Aは、STUNサーバ21とSTUNサーバ11のそれぞれにバインディングリクエストを送信し、それぞれからバインディングレスポンスを受信することで、第2IPv6(srflx)A、及び第1IPv6(srflx)Aを取得する。
【0060】
ここで、本実施例では、NAT装置50Aは第1通信網10へのパケットについて送信元アドレスの変換を行う(第2IPv6−>第1IPv6の変換)が、第2通信網20へのパケットについて送信元アドレスの変換を行わない。よって、第2IPv6(srflx)Aは、第2IPv6(host)Aと同じであり、結果として、hostのアドレスとして取得されるものは、第2IPv6(host)Aのみである。なお、このような場合には、STUNサーバ21が、第2IPv6(srflx)Aを返さずに、送信元アドレスが、hostのアドレスであることを示す情報を返すこととしてもよい。
【0061】
端末40Aは、収集した各アドレスのスコアを算出する。ここでは、「第2IPv6(host)A>第1IPv6(srflx)A」に示す大きさの順番でスコアが算出される。ここでは、便宜上の例として、第2IPv6(host)Aのスコアが200であり、第1IPv6(srflx)Aのスコアが100であるとする。
【0062】
次に、ステップS302において、端末40Aは、ステップS301で収集されたアドレス候補を、算出したスコアとともに送信する。具体的には、ステップS302において、端末40Aは、「第2IPv6(host)Aとスコア200、第1IPv6(srflx)Aとスコア100」をアドレス候補として含むメッセージを送信する。
【0063】
シグナリングサーバ30は、上記のメッセージを受信し、アドレス候補を確認する。シグナリングサーバ30は、アドレス候補として、第2IPv6(host)Aと第1IPv6(srflx)Aがあり、スコアの大小関係が「第2IPv6(host)A>第1IPv6(srflx)A」であることを検知する。
【0064】
シグナリングサーバ30は、端末間のP2P通信ができるだけ第1通信網10(例:NGN網)を経由するよう、第2通信網20のアドレスのスコアが第1通信網10のアドレスのスコアよりも小さくなるように、スコアの変換を行う機能を有している。シグナリングサーバ30は、当該機能により、例えば、第2IPv6(host)Aのスコアを200から100に変換し、第1IPv6(srflx)Aのスコアを100から200に変換する(ステップS303)。そして、シグナリングサーバ30は、変換後のスコアが付されたアドレス候補「第2IPv6(host)Aとスコア100、第1IPv6(srflx)Aとスコア200」を端末40Bに転送する(ステップS304)。
【0065】
なお、シグナリングサーバ30は、変換後のスコアが付されたアドレス候補「第2IPv6(host)Aとスコア100、第1IPv6(srflx)Aとスコア200」を端末40Aにも送信することとしてもよい。これにより、端末40Aは、アドレスペアのスコアリングにあたって、送信元アドレス(自身のアドレス)についてもスコア変換後のスコアを用いることができる。ただし、変換後のスコアが付されたアドレス候補の端末40Aへの送信を行わないこととしてもよい。この場合、送信元アドレスについてスコア変換後のスコアを用いなくても、スコア変換が有効に機能するように、スコアの変換が行われる。例えば、後述するステップS307において、送信先アドレス(第1IPv6(srflx)B)のスコアを十分に大きい値に変換することで、端末40Aにおいて、送信先アドレスと送信元アドレスのペアでスコアリングの計算がなされる場合に、必ず、第1IPv6(srflx)Bを送信先アドレスとして含むペアが最も高いスコアになるようにする。
【0066】
ステップS305では、端末40Bにおいてアドレス収集が行われ、ステップS306において、端末40Bは、「第2IPv6(host)Bとスコア200、第1IPv6(srflx)Bとスコア100」をアドレス候補として含むメッセージを送信する。
【0067】
ステップS307において、シグナリングサーバ30は、ステップS303と同様にスコア変換を行い、変換後のスコアが付されたアドレス候補「第2IPv6(host)Bとスコア100、第1IPv6(srflx)Bとスコア200」を端末40Aに転送する(ステップS308)。
【0068】
なお、シグナリングサーバ30は、変換後のスコアが付されたアドレス候補「第2IPv6(host)Bとスコア100、第1IPv6(srflx)Bとスコア200」を端末40Bにも送信することとしてもよい。これにより、端末40Bは、アドレスペアのスコアリングにあたって、送信元アドレス(自身のアドレス)についてもスコア変換後のスコアを用いることができる。ただし、変換後のスコアが付されたアドレス候補の端末40Bへの送信を行わないこととしてもよい。この場合、送信元アドレスについてスコア変換後のスコアを用いなくても、スコア変換が有効に機能するように、スコアの変換が行われる。例えば、前述したステップS303において、送信先アドレス(第1IPv6(srflx)A)のスコアを十分に大きい値に変換することで、端末40Bにおいて、送信先アドレスと送信元アドレスのペアでスコアリングの計算がなされる場合に、必ず、第1IPv6(srflx)Aを送信先アドレスとして含むペアが最も高いスコアになるようにする。
【0069】
これにより、端末40Aと端末40Bはそれぞれ、自身のアドレス候補と、相手のアドレス候補を持つ。そして、端末40Aと端末40Bはそれぞれ、自身のアドレス1つと相手のアドレス1つをペアにしたアドレスペアの集合を作成するとともに、アドレスペア毎のスコアを算出し、優先度順に並べ、チェックリストとする。
【0070】
その後、ステップS309で接続チェックが行われる。ここでは、例えば端末40Aにおいて、第1IPv6(srflx)Aと第1IPv6(srflx)Bのペアと、第2IPv6(host)Aと第2IPv6(host)Bのペアの両方で接続チェックに成功したとする。前述したように、シグナリングサーバ30においてスコア変換がなされているため、第1IPv6(srflx)Aと第1IPv6(srflx)Bのペアのほうが、第2IPv6(host)Aと第2IPv6(host)Bのペアよりもスコアが高いため、ステップS310において、端末40Aは、第1IPv6(srflx)Aと第1IPv6(srflx)Bのペアをメディアの送信のためのアドレスペアとして決定する。端末40Bにおいても同様の手順で、アドレスペアが決定され、ステップS311においてP2P通信が開始される。あるいは、端末40Aにより決定されたアドレスペアが端末40Bに通知され、端末40Bは当該アドレスペアを使用することとしてもよい。
【0071】
なお、上述したスコアの変換方法は一例に過ぎない。例えば、P2P通信を経由させたい網に該当する1つのアドレスのスコアを高くする(例:最高優先度のスコアにする)といった変換方法でもよい。
【0072】
第2の実施例では、シグナリングサーバ30においてスコア変換を行うことで、端末40Aと端末40Bとの間のP2P通信を、第1通信網10(例:NGN網)を経由した経路で実行させることを可能としている。
【0073】
第1通信網10(例:NGN網)を経由した経路でP2P通信を実行させることは一例に過ぎない。例えば、一部又は全部のP2P通信を第2通信網20(インターネット)経由で行わせるような制御も実現することができる。P2P通信を第2通信網20(インターネット)経由で行わせるためには、シグナリングサーバ30が、第2通信網20側のアドレスのスコアが高くなるようにアドレス変換を行えばよい。また、例えば、インターネットのトラフィック状況に応じて、P2P通信の実行を第2通信網20(インターネット)経由から第1通信網10(NGN)経由にしたい場合には、シグナリングサーバ30における設定を、第1通信網10側のアドレスのスコアが高くなるようにアドレス変換を行うよう変更すればよい。具体的には、後述するシグナリングサーバ30のデータ記憶部33に格納されるスコア変換基準情報を、第1通信網10側のアドレスのスコアが高くなるようにアドレス変換を行うことを示す情報にすればよい。
【0074】
なお、第1の実施例でも、第2の実施例の機能を持つシグナリングサーバ30を用いてもよい。この場合、第1の実施例の状況においては、シグナリングサーバ30は、第1通信網10のアドレスのほうがスコアが高いことを確認し、スコアの変換は不要であると判断し、スコア変換を行うことなくアドレス候補の転送を行う。
【0075】
なお、これまでに説明した
図1の構成は、一例として、第1通信網10がアクセス網であり、第2通信網20がインターネットである場合に該当する。この場合、端末40Aと端末40Bともに同じアクセス網(第1通信網10)に属する。
【0076】
本実施の形態に係る技術は、このように、端末40Aと端末40Bが同じアクセス網に属する場合に限らずに適用可能である。例えば、両端末が異なるアクセス網に属しており、それらアクセス網を通じてインターネットに接続している場合にも適用可能である。
【0077】
この場合、両端末がそれぞれのアクセス網内STUNサーバから取得したアドレス情報は、シグナリングサーバ30を用いて交換され、P2P接続チェックが行われる。そして、例えばアクセス網同士の相互接続などがされていれば、アクセス網を経由したP2P通信が実行される。一方、相互接続等がなされていない場合、その他のアドレス(例えばインターネットアドレス)によるP2P接続チェックが行われ、通信が可能であれば当該アドレスの網を経由した接続が確立する。つまり、フォールバック先として、接続可能な網(例:インターネット)経由の通信を自動で確立することができ、サービスの可用性が高まる。
【0078】
(P2P接続チェックの例(第1通信網10で接続できない場合の例))
例えば第1の実施例の場合のように、第1通信網10のアドレスのスコアが第2通信網20のアドレスのスコアより高くなる場合でも、第1通信網10での接続チェックに成功しなければ、第1通信網10でのP2P通信を行うことはできない。例えば
図5に示すように、第1通信網10経由の接続が拒否される場合がある。このような場合の例としては、例えば、第1通信網10のポリシーとして、第1通信網10経由のP2P通信を許可しない場合がある。
【0079】
図5に示すように、本実施の形態の技術を用いることにより、このような場合でも、その他のアドレスによるP2P接続が可能であれば、接続が確立する。つまり、本実施の形態により、フォールバック先として第2通信網20(例:インターネット)経由の通信を自動で確立することができ、サービスの可用性が高まる。
【0080】
(他のユースケース)
これまでに説明した例では、第1通信網10がNGN網等のアクセス網であり、第2通信網20がインターネットであることを想定していたが、このようなユースケースは一例に過ぎない。他のユースケースとして、例えば、
図6に示すように、第1通信網10がVPN等の閉域網であり、第2通信網20がインターネットであってもよい。なお、VPNの例として、MPLS技術を用いたIP−VPNがある。使用されるアドレスに関しては、第1通信網10と第2通信網20がともにIPv4であってもよいし、ともにIPv6であってもよいし、一方がIPv4であり他方がIPv6であってもよい。
【0081】
本ユースケースの場合、第1の実施例で説明したようにスコア変換を行わない動作とすることも可能であるし、第2の実施例で説明したようにスコア変換を行う動作とすることも可能であるが、スコア変換を行う動作とすることで、下記のようなトラフィック経路の制御を行うことができる。
【0082】
すなわち、
図6に示すユースケースにおいて、スコア変換を行うことで、例えば、一部又は全部のP2P通信を第2通信網20(インターネット)経由で行わせるような制御を実現することができる。第2の実施例で説明したとおり、P2P通信を第2通信網20(インターネット)経由で行わせるためには、シグナリングサーバ30が、第2通信網20側のアドレスのスコアが高くなるようにアドレス変換を行えばよい(
図4のS303、S307でのスコア変換)。また、例えば、インターネットのトラフィック状況に応じて、P2P通信の実行を第2通信網20(インターネット)経由から第1通信網10(閉域網)経由にしたい場合には、シグナリングサーバ30における設定を、第1通信網10側のアドレスのスコアが高くなるようにアドレス変換を行うよう変更すればよい。具体的には、後述するシグナリングサーバ30のデータ記憶部33に格納されるスコア変換基準情報を、第1通信網10側のアドレスのスコアが高くなるようにアドレス変換を行うことを示す情報にすればよい。
【0083】
上記のように、本実施の形態に係る技術を使用することで、シグナリングサーバ30を制御するだけで、SD−WAN(Software Defined WAN)技術によって実現されるユースケースであるハイブリッドWAN等と同様のトラフィック経路の制御を行うことが可能となる。このようなトラフィック経路制御は、SD−WANコントローラ及びSD−WANエッジを配備した上でのSDN(Software-Defined Network)による実現も可能ではあるが、本実施の形態に係る技術により、NW設備及びアプリケーションへのインパクトを最小限にこれを行うことが可能となる。
【0084】
(変形例1)
本実施の形態に係る通信システムにおいて、
図7に示すように、第1通信網10(例:アクセス網)のみにSTUNサーバ11を配備することとしてもよい。
【0085】
図7に示す構成の場合、端末間でのP2P接続チェックは、hostのアドレス、及び、第1通信網10内のSTUNサーバ11から収集できるアドレスによって行われることになる。通常想定されるように、端末がNAT装置の配下にある場合、hostのアドレスを用いたP2Pの通信を行うことはできない。従って、この場合、第1通信網10を経由したP2P通信が制限されていない限り、STUNサーバ11から収集できるアドレスによるP2P通信、すなわち、第1通信網10を経由したP2P通信が行われる。
【0086】
なお、第1通信網10を経由したP2P通信が制限されている場合でも、各端末に、hostのアドレスとしてIPv6のグローバルインターネットアドレスが付与されている場合には、前述したフォールバックによる第2通信網20(例:インターネット)経由のP2P通信を行うことが可能である。
【0087】
(変形例2)
これまでに説明した例では、シグナリングサーバ30の設置場所を限定せずに1つ備えることとしていたが、
図8に示すように、シグナリングサーバ30を各網に備えることとしてもよい。すなわち、
図8に示す例では、第1通信網10にシグナリングサーバ30−1が備えられ、第2通信網20にシグナリングサーバ30−2が備えられる。変形例2において、第1通信網10は、NGN網等のアクセス網であってもよいし、
図6を参照して説明したような閉域網であってもよいし、その他の網であってもよい。また、第2通信網20は、インターネットであることを想定しているが、インターネット以外の網であってもよい。使用されるアドレスに関しては、第1通信網10と第2通信網20がともにIPv4であってもよいし、ともにIPv6であってもよいし、一方がIPv4であり他方がIPv6であってもよい。
【0088】
シグナリングサーバ30−1とシグナリングサーバ30−2は、いずれもこれまでに説明したシグナリングサーバ30と同じ機能を備える。すなわち、仮に、シグナリングサーバ30−1とシグナリングサーバ30−2のうちのシグナリングサーバ30−1のみが設置された場合において、シグナリングサーバ30−1は、第1の実施例及び第2の実施例で説明したシグナリングサーバ30と同じ動作を実行することができる。また、仮に、シグナリングサーバ30−1とシグナリングサーバ30−2のうちのシグナリングサーバ30−2のみが設置された場合において、シグナリングサーバ30−2は、第1の実施例及び第2の実施例で説明したシグナリングサーバ30と同じ動作を実行することができる。
【0089】
変形例2において、第1の実施例で説明したスコア変換を行わない動作と、第2の実施例で説明したスコア変換を行う動作のいずれも適用できる。
【0090】
変形例2では、端末40Aと端末40Bはいずれもシグナリングサーバ30−1とシグナリングサーバ30−2のそれぞれに登録を行って、それぞれと通信を行う。例えば、第1の実施例で説明したスコア変換を行わない動作を適用する場合において、端末40Aと端末40Bは、シグナリングサーバ30−1を使用して、
図3を参照して説明したシーケンスの動作を実行するとともに、シグナリングサーバ30−2を使用して、
図3を参照して説明したシーケンスの動作を実行する。なお、端末自身の側のアドレス収集(S201、S203)に関しては、シグナリングサーバ30−1とシグナリングサーバ30−2のそれぞれに対して行ってもよいし、シグナリングサーバ30−1とシグナリングサーバ30−2に対して、1回行うこととしてもよい。
【0091】
シグナリングサーバ30−1を使用するシーケンスと、シグナリングサーバ30−2を使用するシーケンスの両方が正常に実行された場合、シグナリングサーバ30−1を使用するシーケンスにより端末40Aと端末40B間に確立されるP2P通信接続と、シグナリングサーバ30−2を使用するシーケンスにより端末40Aと端末40B間に確立されるP2P通信接続との2つのP2P通信接続(セッション)が発生することになる。
【0092】
シグナリングサーバ30−1と30−2が、スコア変換を行わずに同じ動作を行った場合には、同じ通信網を経由する2つの異なるP2P通信接続が確立される。この場合、端末40A(又は端末40B)は、2つの異なるP2P通信接続のうち、どちらかを切断する。例えば、2つの異なるP2P通信接続間でアドレスペアのスコアが同じであると予想されるので、ランダムでいずれか1つを切断する。
【0093】
上記のような動作に代えて、端末40A(及び端末40B)は、シグナリングサーバ30−1を使用するシーケンスにより決定したアドレスペアと、シグナリングサーバ30−2を使用するシーケンスにより決定したアドレスペアのうちのスコアの高いほうのアドレスペアを使用して1つのP2P通信接続を行うこととしてもよい。
【0094】
また、第2の実施例で説明したスコア変換を行う動作を適用する場合において、端末40Aと端末40Bは、シグナリングサーバ30−1を使用して、
図4を参照して説明したシーケンスの動作を実行するとともに、シグナリングサーバ30−2を使用して、
図4を参照して説明したシーケンスの動作を実行する。なお、端末自身の側のアドレス収集(S301、S305)に関しては、シグナリングサーバ30−1とシグナリングサーバ30−2のそれぞれに対して行ってもよいし、シグナリングサーバ30−1とシグナリングサーバ30−2に対して、1回行うこととしてもよい。
【0095】
シグナリングサーバ30−1を使用するシーケンスと、シグナリングサーバ30−2を使用するシーケンスの両方が正常に実行された場合、シグナリングサーバ30−1を使用するシーケンスにより端末40Aと端末40B間に確立されるP2P通信接続と、シグナリングサーバ30−2を使用するシーケンスにより端末40Aと端末40B間に確立されるP2P通信接続との2つのP2P通信接続が発生することになる。
【0096】
例えば、シグナリングサーバ30−1と30−2が同じスコア変換を行った場合、同じ通信網を経由する2つの異なるP2P通信接続が確立される。この場合、端末40A(又は端末40B)は、2つの異なるP2P通信接続のうち、どちらかを切断する。例えば、2つの異なるP2P通信接続間でアドレスペアのスコアも同じであると予想されるので、ランダムでいずれか1つを切断する。
【0097】
シグナリングサーバ30−1と30−2が、異なるルールでスコア変換を行った場合において、2つの異なるP2P通信接続が確立される場合には、端末40A(又は端末40B)は、例えば、2つの異なるP2P通信接続間でアドレスペアのスコアの低いほうを切断する。また、異なる通信網を経由する2つの異なるP2P通信接続が確立される場合には、スコアに基づき1つのP2P通信接続を切断してもよいし、予め切断する側の通信網を定めておき、当該通信網経由のP2P通信接続を切断してもよい。
【0098】
上記のような動作に代えて、端末40A(及び端末40B)は、シグナリングサーバ30−1を使用するシーケンスにより決定したアドレスペアと、シグナリングサーバ30−2を使用するシーケンスにより決定したアドレスペアのうちのスコアの高いほうのアドレスペアを使用して1つのP2P通信接続を行うこととしてもよい。
【0099】
第1の実施例の動作を適用する場合と第2の実施例の動作を適用する場合のいずれの場合も、例えば、端末40A(端末40B)から第2通信網20への接続ができない場合には、シグナリングサーバ30−1を使用するシーケンスにより決定したアドレスペアに基づくP2P通信接続が確立される。このようなケースで、仮にシグナリングサーバ30が第2通信網20のみに備えられていたとした場合、シグナリングの実行が不可能なので、第1通信網10と第2通信網20のいずれについてもP2P通信接続を行うことができなくなる。一方、変形例2のように、各網にシグナリングサーバ30を備えることで、一方の網に接続できない場合でも、他方の網を利用したP2P通信接続を行うことができる。
【0100】
(装置構成例)
以下、本実施の形態で用いられる装置の構成例を説明する。以下で図面を参照して説明する各装置の構成は、本実施の形態に関わる主要な構成のみを示すものであり、各装置には、当該装置が実際に動作するために必要な図示しない既存機能が含まれる。
【0101】
<端末>
図9に、本実施の形態で説明した処理を実行する端末40(A,B)の構成例を示す。端末40Aと端末40Bは同じ構成を備えるため、端末40(A,B)と記載している。以下の説明では、端末40と記載する。
【0102】
図9に示すとおり、端末40は、制御通信部41、メディア通信部42、及びデータ記憶部43を含む。制御通信部41は、これまでに説明したように、STUNサーバ11、21やシグナリングサーバ30、30−1、30−2と制御信号の送受信を行って、メディア(ビデオ、音声、データ等)のP2P通信で使用するアドレスを決定する。メディア通信部42は、制御通信部41により決定されたアドレスを用いることにより、P2P通信を実行する。
【0103】
データ記憶部43には、例えば、制御通信部41がアクセスするべきSTUNサーバ11、21のアドレス、シグナリングサーバ30、30−1、30−2のアドレス、DNSサーバのアドレス等が格納されている。制御通信部41は、STUNサーバ11、21のアドレス、シグナリングサーバ30、30−1、30−2のアドレスを用いて、STUNサーバ11、21や、シグナリングサーバ30、30−1、30−2と通信を行う。
【0104】
また、STUNサーバ11、21をFQDNで指定する場合には、例えば、ユーザが制御通信部41に対して当該FQDNを入力する。あるいは、データ記憶部43にFQDNを格納しておき、制御通信部41がデータ記憶部43からFQDNを取得する。そして、制御通信部41は、データ記憶部43に格納されているDNSサーバのアドレスを用いて、DNSサーバにアクセスすることでアドレス解決を行ってSTUNサーバ11、21にアクセスする。
【0105】
本実施の形態に係る端末40は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、端末40が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、端末40で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【0106】
なお、例えばP2P通信の技術としてWebRTCを用いる場合、端末40は、ブラウザあるいはブラウザに相当するWebRTC通信機能を持つソフトウェアを備える端末により実現できる。当該端末は、例えば、PCあるいはスマートフォン、携帯電話、またはセンサ・アクチュエータなどのIoT・M2Mデバイス等である。WebRTCを用いる場合、端末40は、まず、第1通信網10、第2通信網20、あるいはその他の網に備えられるサーバ等からプログラム(Webアプリ)を取得し、当該プログラムが端末40で実行されることで、制御通信等が実行される。
【0107】
<シグナリングサーバ>
図10に、本実施の形態で説明した処理を実行するシグナリングサーバ30の構成例を示す。なお、シグナリングサーバ30−1、30−2は、シグナリングサーバ30と同じ構成を有する。
図10に示すように、シグナリングサーバ30は、メッセージ中継部31、スコア変換部32、データ記憶部33を有する。
【0108】
メッセージ中継部31は、端末間でやりとりされるアドレス候補等を含むメッセージの中継を行う。スコア変換部32は、第2の実施例で説明したスコア変換を行う。すなわち、端末間でのP2P通信が所定の通信網(例:第1通信網10)を経由するようスコアの変換を行う。なお、第1通信網10を経由するようスコアの変換を行うことは一例に過ぎず、どのよなスコア変換を行うかは設定により変更可能である。
【0109】
一例として、P2P通信が経由し得る網として網1、網2、網3の3つの網があった場合において、網2を優先して経由させるようにしたい場合、網2のアドレスの情報(例:網2のアドレス帯)、及び、網2のアドレスについては他の網のアドレスよりもスコアが高くなるようにスコア変換を行う旨の命令を設定する。これにより、スコア変換部32は、端末から受信するアドレス候補の中のアドレスをチェックし、網2のアドレス帯に該当するアドレスを検知した場合に、当該アドレスのスコアの変換を行う。なお、変換を行うまでもなく、網2を経由するようなスコアであれば、変換を行わない。
【0110】
データ記憶部33は、例えば、上記の設定に係る情報(アドレス情報、スコア変換ルール等)を格納する。当該情報は、スコア変換にあたっての基準となる情報であるから、スコア変換基準情報と呼ぶ。スコア変換部32は、データ記憶部33に格納されたスコア変換基準情報を参照することで、適切にスコア変換を行うことができる。なお、データ記憶部33に相当する機能部は、シグナリングサーバ30の外部に別サーバ(外部サーバ)として備えてもよく、その場合、シグナリングサーバ30は、通信網を介して当該外部サーバにアクセスして、当該外部サーバからスコア変換基準情報を取得し、当該スコア変換基準情報に基づいてスコア変換を実施する。
【0111】
本実施の形態に係るシグナリングサーバ30は、例えば、1つ又は複数のコンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、シグナリングサーバ30が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、シグナリングサーバ30で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【0112】
<STUNサーバ>
図11に、STUNサーバ11の構成図を示す。STUNサーバ21も同様の構成を備えるため、代表としてSTUNサーバ11を
図11に示す。
図11に示すように、STUNサーバ11は、アドレス取得部15、及びアドレス通知部16を含む。
【0113】
アドレス取得部15は、端末から送信されたバインディングリクエストを受信し、当該バインディングリクエストの送信元アドレス(例:NAT経由の場合、NATの外側のアドレス)を取得する。アドレス通知部16は、アドレス取得部15により取得した送信元アドレスを含むバインディングレスポンスを作成し、当該送信元アドレスに向けて(つまり、送信元の端末に向けて)バインディングレスポンスを送信する。
【0114】
本実施の形態に係るSTUNサーバ11は、例えば、1つ又は複数のコンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、STUNサーバ11が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、STUNサーバ11で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【0115】
<ハードウェア構成例>
図12は、上述した各装置(端末40、シグナリングサーバ30、STUNサーバ11)をコンピュータで実現する場合における当該装置のハードウェア構成例を示す図である。
図12に示す装置(端末40、シグナリングサーバ30、又はSTUNサーバ11)は、それぞれバスBで相互に接続されているドライブ装置150、補助記憶装置152、メモリ装置153、CPU154、インタフェース装置155、表示装置156、及び入力装置157等を有する。
【0116】
当該装置での処理を実現するプログラムは、例えば、CD−ROM又はメモリカード等の記録媒体151によって提供される。プログラムを記憶した記録媒体151がドライブ装置150にセットされると、プログラムが記録媒体151からドライブ装置150を介して補助記憶装置152にインストールされる。但し、プログラムのインストールは必ずしも記録媒体151より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置152は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0117】
メモリ装置153は、プログラムの起動指示があった場合に、補助記憶装置152からプログラムを読み出して格納する。CPU154(プロセッサ)は、メモリ装置153に格納されたプログラムに従って当該装置に係る機能を実現する。インタフェース装置155は、ネットワークに接続するためのインタフェースとして用いられる。表示装置156はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置157はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
【0118】
(実施の形態のまとめ)
以上、説明したように、本実施の形態において、第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムであって、前記第1アドレス通知装置は、当該第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末から、アドレス要求を受信し、当該アドレス要求から送信元アドレスを取得し、当該送信元アドレスを含む応答を前記端末に向けて送信する手段を備え、
前記第2アドレス通知装置は、前記端末からアドレス要求を受信し、当該アドレス要求から送信元アドレスを取得し、当該送信元アドレスを含む応答を前記端末に向けて送信する手段を備えることを特徴とする通信システムが提供される。
【0119】
前記通信システムは通信制御装置を備えてもよく、当該通信制御装置は、例えば、前記第1アドレス通知装置及び前記第2アドレス通知装置から前記端末に対して通知されたアドレスを含むアドレスの集合を、前記端末から受信し、当該アドレスの集合を当該端末の通信相手となる通信相手端末に送信する。
【0120】
前記通信制御装置は、前記端末と前記通信相手端末との間の通信が、所定の通信網を経由して行われるように、前記アドレスの集合における各アドレスに付加された優先度を示すスコアのうち、少なくとも1つのアドレスのスコアを変換することとしてもよい。このときに、前記通信制御装置は、外部サーバからスコア変換基準情報を取得し、当該スコア変換基準情報に基づいて、スコアの変換を行うこととしてもよい。
【0121】
また、本実施の形態により、第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムにおいて、前記第1通信網に備えられる前記第1アドレス通知装置として機能するアドレス通知装置であって、前記第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末であって、前記第2アドレス通知装置にアドレス要求を送信するとともに、前記第1アドレス通知装置にアドレス要求を送信する端末から、当該アドレス要求を受信し、当該アドレス要求から送信元アドレスを取得する取得手段と、前記送信元アドレスを含む応答を前記端末に向けて送信するアドレス通知手段とを備えることを特徴とするアドレス通知装置が提供される。
【0122】
また、本実施の形態により、通信制御装置と、第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムにおいて使用される前記通信制御装置であって、前記第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末からアドレスの集合を受信し、当該アドレスの集合を当該端末の通信相手となる通信相手端末に送信する中継手段を備え、前記アドレスの集合は、前記端末から前記第1アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレス、及び、前記端末から前記第2アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレスを含むことを特徴とする通信制御装置が提供される。
【0123】
前記通信制御装置は、前記端末と前記通信相手端末との間の通信が、所定の通信網を経由して行われるように、前記アドレスの集合における各アドレスに付加された優先度を示すスコアのうち、少なくとも1つのアドレスのスコアを変換する変換手段を備えてもよい。
【0124】
また、本実施の形態により、通信制御装置と、第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムとの間で制御通信を行う端末であって、前記第1アドレス通知装置にアドレス要求を送信し、当該アドレス要求の送信元アドレスを含む応答を当該第1アドレス通知装置から受信し、当該応答から送信元アドレスを取得する手段と、前記第2アドレス通知装置にアドレス要求を送信し、当該アドレス要求の送信元アドレスを含む応答を当該第2アドレス通知装置から受信し、当該応答から送信元アドレスを取得する手段と、前記第1アドレス通知装置及び前記第2アドレス通知装置から受信した各応答から取得したアドレスを含むアドレスの集合を前記通信制御装置に送信する手段と、を備え、前記通信制御装置は、前記端末から受信したアドレスの集合を、当該端末の通信相手となる通信相手端末に送信することを特徴とする端末が提供される。
【0125】
前記端末は、前記通信相手端末により取得されたアドレスの集合を前記通信制御装置から受信し、当該アドレスの集合と、前記端末が取得したアドレスの集合とに基づいて、前記通信相手端末との間の通信に使用するアドレスのペアを決定する手段を備えてもよい。
【0126】
また、本実施の形態により、第1通信網に備えられる第1通信制御装置及び第1アドレス通知装置と、第2通信網に備えられる第2通信制御装置及び第2アドレス通知装置とを含む通信システムであって、前記第1通信制御装置と前記第2通信制御装置はそれぞれ、前記第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末からアドレスの集合を受信し、当該アドレスの集合を当該端末の通信相手となる通信相手端末に送信する中継手段を備え、前記アドレスの集合は、前記端末から前記第1アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレス、及び、前記端末から前記第2アドレス通知装置に対して送信されたアドレス要求に対する応答から取得したアドレスを含むことを特徴とする通信システムが提供される。
【0127】
前記第1通信制御装置と前記第2通信制御装置はそれぞれ、前記端末と前記通信相手端末との間の通信が、所定の通信網を経由して行われるように、前記アドレスの集合における各アドレスに付加された優先度を示すスコアのうち、少なくとも1つのアドレスのスコアを変換する変換手段を更に備えることとしてもよい。
【0128】
(実施の形態の効果)
以上、説明した本実施の形態に係る技術により、端末間のP2P通信に使用される通信経路が適切に選択されるようになる。その結果、例えば、P2P通信の品質を高めることができる。また、最優先で選択された通信経路が接続不可の場合でも、他の通信経路にフォールバックしてP2P通信を行うことができるので、サービスの可用性を高めることができる。
【0129】
また、シグナリングサーバを各通信網に備える構成を採用することで、例えば、インターネットへの接続を行うことができない場合に、P2P通信接続が全くできなくなってしまうことを回避することができる。
【0130】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【解決手段】第1通信網に備えられる第1アドレス通知装置と、第2通信網に備えられる第2アドレス通知装置とを含む通信システムにおいて、前記第1アドレス通知装置は、当該第1アドレス通知装置及び前記第2アドレス通知装置と通信可能な端末から、アドレス要求を受信し、当該アドレス要求から送信元アドレスを取得し、当該送信元アドレスを含む応答を前記端末に向けて送信する手段を備え、前記第2アドレス通知装置は、前記端末からアドレス要求を受信し、当該アドレス要求から送信元アドレスを取得し、当該送信元アドレスを含む応答を前記端末に向けて送信する手段を備えるように構成する。