通信方法、通信システム、端末装置
【課題】異なるNAT装置の配下にある端末間でRTP/RTCPに基づいて通信を行うことが可能な通信方法、通信システム、端末装置を提供する。
【解決手段】端末装置6は、端末装置7に対して接続要求パケットを送信する(101)。NAT装置3では、変換後のポート番号「23456」が履歴情報としてNAT装置3に記憶される(104)。通信制御装置2は、NAT装置3,4のポート番号をNAT情報として端末装置6に対して送信する(119)。端末装置6は、NAT装置3に記憶されているポート番号が「23456」(偶数)であるので、ポート調整パケットを送信する(127)。NAT装置3には、「23456」に1加算された「23457」(奇数)が記憶される(130)。端末装置6は、ポート番号「23458」「23459」を使用してRTP/RTCPに基づいた通信ができる。
【解決手段】端末装置6は、端末装置7に対して接続要求パケットを送信する(101)。NAT装置3では、変換後のポート番号「23456」が履歴情報としてNAT装置3に記憶される(104)。通信制御装置2は、NAT装置3,4のポート番号をNAT情報として端末装置6に対して送信する(119)。端末装置6は、NAT装置3に記憶されているポート番号が「23456」(偶数)であるので、ポート調整パケットを送信する(127)。NAT装置3には、「23456」に1加算された「23457」(奇数)が記憶される(130)。端末装置6は、ポート番号「23458」「23459」を使用してRTP/RTCPに基づいた通信ができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は通信方法、通信システム、端末装置に関する。より詳細には、RTP/RTCPに基づいて通信を行う通信方法、通信システム、端末装置に関する。
【背景技術】
【0002】
NAT(Network Address Translation)機能を備えた装置(NATルータなど。以下「NAT装置」という。)では、LAN側からインターネット側に向かう方向の通信が行われた場合に、所定のポート番号が記憶される。NAT装置は、記憶されたポート番号宛てのパケットをインターネット側から受信した場合にのみ、受信したパケットをLAN側に転送する。従って端末装置が、NAT装置の配下にある他の端末装置とのセッションを確立させるためには、NAT装置に記憶されているポート番号を検出し、このポート番号宛てにパケットを送信する必要がある。
【0003】
異なるNAT装置の配下にある端末装置間でセッションを確立させる為の技術として、例えばUDP Hole Punchingが知られている。また例えば特許文献1に記載の通信システムでは、LANに接続された端末装置からインターネット側に向かってバブルパケットが送信され、インターネット側との通信を行うためのポート番号がNAT装置に記憶される。記憶されたポート番号が、サーバを介し、別のNAT装置の配下にある端末装置に通知される。通知を受けた端末装置は、通知されたポート番号を宛先としてパケットを送信する。このようにして、異なるNAT装置の配下にある端末装置間でセッションを確立させている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−136030号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
異なるNAT装置の配下にある端末間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うためには、RTPパケットの宛先ポート番号を偶数としなければならない。また、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数の値にしなければならない。しかしながら上述した技術及び装置では、NAT装置に記憶された偶数と奇数の連続したポート番号を、端末装置に通知することができない。従って、偶数と奇数の連続したポート番号をRTPパケットとRTCPパケットの宛先ポート番号として指定できないので、RTP/RTCPに基づいて通信を行うことができないという問題点があった。
【0006】
本発明は上述の問題点を解決するためになされたものであり、異なるNAT装置の配下にある端末間でRTP/RTCPに基づいて通信を行うことが可能な通信方法、通信システム、端末装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第一態様に係る通信方法では、NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信方法であって、通信を行う少なくとも二つの前記端末装置の其々が、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信ステップと、前記第一送信ステップにおいて送信された前記第一パケットに基づいて、前記第一パケットを転送した前記NAT装置の其々に前記履歴情報として記憶された前記ポート番号を少なくとも含む第二パケットを、前記通信制御装置が前記少なくとも二つの端末装置の其々に対して送信する第二送信ステップと、前記第二送信ステップにおいて送信された前記第二パケットを前記少なくとも二つの端末装置の其々が受信する第一受信ステップと、前記第一受信ステップにおいて前記少なくとも二つの端末装置の其々が受信した前記第二パケットに含まれる前記ポート番号のうち、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号が奇数であるか偶数であるかを判断する第一判断ステップと、前記第一判断ステップにおいて前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断ステップにおいて前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信ステップとを備えている。
【0008】
第一の態様に係る通信方法では、偶数と奇数の連続したポート番号をRTPパケット及びRTCPパケットの宛先ポート番号に割り当てることができる。これによって端末装置は、他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【0009】
また第一態様において、前記第一受信ステップにおいて前記第二パケットを受信した場合に、前記第二パケットに含まれる前記ポート番号のうち、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号が奇数であるか偶数であるかを判断する第二判断ステップと、前記第二判断ステップにおいて前記第二ポート番号が偶数であると判断された場合に、前記NAT装置に記憶された前記第二ポート番号を更新するための第三パケットを、前記端末装置が前記NAT装置を介して送信する第四送信ステップを備えていてもよい。第三パケットによって、NAT装置に記憶させるポート番号を調整し、奇数と偶数の連続したポート番号をNAT装置に記憶させることができる。ユーザは、手動でNAT装置にポート番号を記憶させる手間を省くことができる。
【0010】
また第一態様において、前記NAT装置が、Cone NAT機能を備えたNAT装置である場合に、前記第四送信ステップは、前記端末装置が前記第一パケットを送信する際に使用した前記端末装置のポート番号と異なるポート番号を使用して、前記外部ネットワークに接続される機器に前記第三パケットを送信してもよい。NAT種別が汎用的なCone NATであるNAT装置では、端末装置の同一ポート番号から送信されたパケットが転送される場合に、NAT装置には新たなポート番号が記憶されず、既に記憶されているポート番号が使用される。これに対し第一態様では、端末装置の異なる送信元ポート番号からパケットが送信されるので、NAT装置には新たなポート番号が記憶される。このようにして、新たなポート番号がNAT装置に記憶されるようにできるので、NAT種別がCone NATである端末装置であっても、偶数と奇数の連続したポート番号が記憶されるように調整することができる。
【0011】
また第一態様において、三つ以上の前記端末装置間で通信を行う場合において、前記第一送信ステップでは、前記三つ以上の端末装置の其々が前記通信制御装置に対して前記第一パケットを送信し、前記第二送信ステップでは、前記通信制御装置が前記三つ以上の端末装置の其々に対して前記第二パケットを送信し、前記第一受信ステップでは、前記三つ以上の端末装置の其々が前記第二パケットを受信し、前記第一判断ステップは、複数の前記第一ポート番号の其々が奇数であるか偶数であるかを判断し、前記第三送信ステップは、其々の前記第一ポート番号から、前記RTPパケット及び前記RTCPパケットの宛先の前記ポート番号を算出し、算出した其々の前記ポート番号宛てに前記RTPパケット及び前記RTCPパケットを送信してもよい。これによって端末装置は、複数の他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【0012】
また第一態様において、前記NAT装置において、前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に前記ポート番号が1ずつ加算され前記履歴情報として記憶されるか否かを判断する第三判断ステップを備え、前記第一送信ステップ及び前記第三送信ステップのうち少なくともいずれかは、前記第三判断ステップにおいて前記ポート番号が1ずつ加算されると判断された場合に、前記第一パケット、前記RTPパケット、及び前記RTCPパケットのうち少なくともいずれかを送信してもよい。NAT装置においてポート番号が更新される場合の変化量(ポート幅)が1ずつ加算されている場合にのみ、以後の通信が行われる。NAT装置のポート幅が1でない場合に、RTP/RTCPに基づいた通信を行わせないようにすることができる。
【0013】
本発明の第二態様に係る通信システムでは、NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムであって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信システムであって、前記端末装置は、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段とを備え、前記通信制御装置は、少なくとも二つの前記端末装置の其々から送信された前記第一パケットを受信する第二受信手段と、前記第二受信手段において受信された前記第一パケットに基づいて、前記第二パケットを前記少なくとも二つの端末装置の其々に対して送信する第二送信手段とを備えている。
【0014】
第二態様に係る通信システムでは、偶数と奇数の連続したポート番号をRTPパケット及びRTCPパケットの宛先ポート番号に割り当てることができる。これによって端末装置は、他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【0015】
本発明の第三態様に係る端末装置では、NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置の配下の内部ネットワークに接続される端末装置であって、前記外部ネットワークに接続する通信制御装置と通信を行うことによって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行う端末装置であって、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段とを備えている。
【0016】
第三態様に係る端末装置では、偶数と奇数の連続したポート番号をRTPパケット及びRTCPパケットの宛先ポート番号に割り当てることができる。これによって端末装置は、他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【図面の簡単な説明】
【0017】
【図1】通信システム1を示す模式図である。
【図2】通信制御装置2の電気的構成を示すブロック図である。
【図3】NAT装置5の電気的構成を示すブロック図である。
【図4】端末装置8の電気的構成を示すブロック図である。
【図5】端末装置処理を示すフローチャートである。
【図6】発呼側端末処理を示すフローチャートである。
【図7】発呼側端末処理を示すフローチャートである。
【図8】被呼側端末処理を示すフローチャートである。
【図9】被呼側端末処理を示すフローチャートである。
【図10】通信制御処理を示すフローチャートである。
【図11】端末装置8間の通信を示す通信シーケンス図である。
【図12】端末装置8間の通信を示す通信シーケンス図である。
【図13】変形例における発呼側端末処理を示すフローチャートである。
【図14】変形例における発呼側端末処理を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明に係る通信システム1について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている端末の構成、各種処理のフローチャートなどは、それのみに限定する趣旨ではなく、単なる説明例である。
【0019】
図1を参照し、通信システム1の概要について説明する。通信システム1は、通信制御装置2、端末装置6,7(以下、これらを区別しない場合、「端末装置8」という。)、及びNAT装置3,4(以下、これらを区別しない場合、「NAT装置5」という。)を少なくとも備えている。通信制御装置2とNAT装置5とは、インターネット9に接続している。NAT装置5は、配下のLAN11,12(以下、これらを区別しない場合、「LAN13」という。)に接続している。端末装置8は、LAN13に接続している。図1に示す例では、NAT装置3の配下のLAN11に端末装置6が接続している。NAT装置4の配下のLAN12に端末装置7が接続している。
【0020】
通信制御装置2は、端末装置8間での通信を可能とするために必要な情報を、端末装置8に提供する。通信制御装置2としては、例えば呼制御サーバやSTUNサーバが使用できる。端末装置8は、通信制御装置2から提供される情報に基づいて、他の端末装置8との間で通信を行う。端末装置8としては、例えばPC(パーソナルコンピュータ)が使用できる。
【0021】
NAT装置5は、NAT(Network Address Translation)機能を備えた装置である。NAT装置5は、LAN13側からインターネット9側に向かう方向のパケットを端末装置8から受信した場合に、パケットの送信元IPアドレスとポート番号とを変換する。変換後のポート番号は、履歴情報としてNAT装置5に記憶される。記憶されたポート番号は、インターネット9側からLAN13側に向かう方向のパケットを受信した場合において、該パケットをLAN13側に転送するか否かを判断する場合に使用される。インターネット9側から受信したパケットの宛先ポート番号と同じポート番号が、履歴情報として記憶されている場合、受信したパケットをLAN13側に転送する。一方、インターネット9側から受信したパケットの宛先ポート番号と同じポート番号が、履歴情報として記憶されていない場合、受信したパケットはLAN13側に転送しない。このようにして、LAN13側に不特定者がアクセスできないようにしている。なお本実施の形態では、NAT装置5がパケットのポート番号を変換する場合、ポート番号を1ずつ加算することによって得られるポート番号が割り当てられるものとする。
【0022】
なおNAT装置5としては、NAT種別がCone NATやSymmetric NATであるNAT装置が使用できる。
【0023】
本実施の形態では、異なるNAT装置5の配下のLAN13に接続された端末装置8間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信が行われる。例えば、NAT装置3の配下のLAN11に接続された端末装置6と、NAT装置4の配下のLAN12に接続された端末装置7との間で、RTP/RTCPに基づいた通信が行われる。
【0024】
RTPは、音声や動画などのデータストリームをリアルタイムに配送する為のデータ転送プロトコルである。RTCPは、RTPでデータを送受信する為のセッションを制御するプロトコルである。RTP/RTCPを使用したデータの送受信を行うためには、(1)RTPパケットの宛先ポート番号は偶数が使用されること、(2)RTCPパケットの宛先ポート番号は、RTPパケットの宛先ポート番号に1加算した奇数が使用されること、という条件を満たす必要がある。
【0025】
本実施の形態では、端末装置8間でのRTP/RTCPに基づいた通信に際し、通信制御装置2及び端末装置8とが所定の通信を行う。この通信によって端末装置8は、RTPパケットとRTCPパケットとにそれぞれ割り当てる宛先ポート番号を特定する。端末装置8は、所謂「NAT越え」の問題を解消しつつ、他の端末装置8との間でRTP/RTCPに基づいた通信を行うことができる。
【0026】
なお、図1におけるインターネット9が、本発明の「外部ネットワーク」に相当し、LAN13が本発明の「内部ネットワーク」に相当する。なお本発明は、外部ネットワークとしてインターネット9の他に従来周知の様々なネットワーク(LAN、WAN、専用回線など)が使用できる。同様に、内部ネットワークとしてLAN13の他に従来周知のネットワーク(インターネット、WAN、専用回線など)が使用できる。
【0027】
図2を参照し、通信制御装置2の電気的構成について説明する。通信制御装置2は、CPU21、ROM22、RAM23、HDD24を備えている。CPU21は、NAT装置5や端末装置8との通信を制御する。ROM22には、Bootプログラムや初期設定パラメータが少なくとも記憶される。RAM23には、CPU21の処理時に発生する一時的なデータが少なくとも記憶される。HDD24は、CPU21のプログラムが少なくとも記憶される。CPU21は、ROM22、RAM23、及びHDD24と電気的に接続している。CPU21は、ROM22、RAM23、及びHDD24の記憶領域にアクセスできる。
【0028】
通信制御装置2は、入力ドライバ25を備えている。入力ドライバ25は、キーボード251を介して入力された情報を検出する。CPU21は、入力ドライバ25と電気的に接続している。入力ドライバ25は、キーボード251と電気的に接続する。CPU21は、キーボード251を介して入力された情報を認識できる。通信制御装置2は、表示ドライバ26を備えている。表示ドライバ26は、ディスプレイ261に像を表示させるための制御を行う。CPU21は、表示ドライバ26と電気的に接続している。表示ドライバ26は、ディスプレイ261と電気的に接続する。CPU21は、ディスプレイ261に所望の像を表示させることができる。
【0029】
通信制御装置2は、通信モジュール27を備えている。通信モジュール27は、インターネット9を介した通信を可能とする。CPU21は、通信モジュール27と電気的に接続している。CPU21は、インターネット9を介して通信を行うことができる。通信制御装置2は、ディスクドライブ28を備えている。ディスクドライブ28は、記憶媒体281に記憶された情報にアクセスする為の駆動装置である。CPU21は、ディスクドライブ28と電気的に接続している。CPU21は、ディスクドライブ28に挿入された記憶媒体281に記憶された情報にアクセスできる。記憶媒体281には、例えば、CPU21が実行するプログラムが記憶される。記憶媒体281の導入時には、プログラムが記憶媒体281からHDD24にセットアップされる。
【0030】
図3を参照し、NAT装置5の電気的構成について説明する。NAT装置5は、CPU51、ROM52、RAM53、フラッシュメモリ57を備えている。CPU51は、通信制御装置2や端末装置8との通信を制御する。ROM52には、CPU51のプログラムが少なくとも記憶される。RAM53には、CPU51の処理時に発生する一時的なデータが少なくとも記憶される。フラッシュメモリ57には、ポート番号が履歴情報として記憶される。CPU51は、ROM52、RAM53、及びフラッシュメモリ57と電気的に接続している。CPU51は、ROM52、RAM53、及びフラッシュメモリ57の記憶領域にアクセスできる。
【0031】
NAT装置5は、表示部54を備えている。表示部54は、NAT装置5の状態等を表示することができる。CPU51は、表示部54と電気的に接続している。CPU51は、表示部54に所望の情報を表示させることができる。表示部54としては、例えばLEDが使用できる。NAT装置5は、入力部55を備えている。入力部55は、ユーザによるNAT装置5への入力操作を受け付ける。CPU51は、入力部55と電気的に接続している。CPU51は、入力部55を介して入力された情報を認識できる。入力部55としては、例えばスイッチやタッチセンサが使用できる。
【0032】
NAT装置5は、通信モジュール58を備えている。通信モジュール58は、インターネット9を介した通信を可能とする。CPU51は、通信モジュール58と電気的に接続している。CPU51は、インターネット9を介して通信を行うことができる。NAT装置5は、通信モジュール59を備えている。通信モジュール59は、LAN13を介した通信を可能とする。CPU51は、通信モジュール59と電気的に接続している。CPU51は、LAN13を介して通信を行うことができる。
【0033】
図4を参照し、端末装置8の電気的構成について説明する。端末装置8は、CPU81、ROM82、RAM83、HDD84を備えている。CPU81は、NAT装置5や通信制御装置2との通信を制御する。ROM82には、Bootプログラムや初期パラメータが少なくとも記憶される。RAM83は、CPU81の処理時に発生する一時的なデータが少なくとも記憶される。HDD84は、CPU81のプログラムが少なくとも記憶される。CPU81は、ROM82、RAM83、及びHDD84と電気的に接続している。CPU81は、ROM82、RAM83、及びHDD84の記憶領域にアクセスできる。
【0034】
端末装置8は、入力ドライバ85を備えている。入力ドライバ85は、キーボード851を介して入力された情報を検出する。CPU81は、入力ドライバ85と電気的に接続している。入力ドライバ85は、キーボード851と電気的に接続する。CPU81は、キーボード851を介して入力された情報を認識できる。端末装置8は、表示ドライバ86を備えている。表示ドライバ86は、ディスプレイ861に像を表示させるための制御を行う。CPU81は、表示ドライバ86と電気的に接続している。表示ドライバ86は、ディスプレイ861と電気的に接続する。CPU81は、ディスプレイ861に所望の像を表示させることができる。
【0035】
端末装置8は、通信モジュール87を備えている。通信モジュール87は、LAN13を介した通信を可能とする。CPU81は、通信モジュール87と電気的に接続している。CPU81は、LAN13を介して通信を行うことができる。端末装置8は、ディスクドライブ88を備えている。ディスクドライブ88は、記憶媒体881に記憶された情報にアクセスする為の駆動装置である。CPU81は、ディスクドライブ88と電気的に接続している。CPU81は、ディスクドライブ88に挿入された記憶媒体881に記憶された情報にアクセスできる。記憶媒体881には、例えば、CPU81が実行するプログラムが記憶される。記憶媒体881の導入時には、プログラムが記憶媒体881からHDD84にセットアップされる。
【0036】
図5〜図9を参照し、端末装置8のCPU81において実行される端末装置処理について説明する。端末装置処理は、端末装置8の電源が投入された場合に、CPU81において起動され実行される。なお端末装置8は、端末装置処理が実行されるに際し、事前に通信制御装置2のIPアドレスを認識しているものとする。また、端末装置8と直接接続するNAT装置5には、端末装置8と通信制御装置2とが通信を行うためのポート番号が履歴情報として既に記憶されているものとする。通信制御装置2は、NAT装置5に履歴情報として記憶されているポート番号を認識しているものとする。また通信制御装置2は、NAT装置5の種別(Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT、Symmetric NATのいずれか)や、NAT装置5がパケットのポート番号を変換する場合においてポート番号に加算される値(以下「ポート幅」という。)を認識しているものとする。このため端末装置処理では、端末装置8と通信制御装置2とが通信を開始させるために必要な通信処理は省略されている。
【0037】
図5に示すように、端末装置処理が起動されると、他の端末装置との通信を開始させるための操作がキーボード851(図4参照)を介して行われたかが判断される(S11)。ユーザによってキーボード851が操作され、他の端末装置との通信を開始させる指示がなされた場合(S11:YES)、発呼側の端末装置8(「発呼側端末」という。)として駆動するために、発呼側端末処理(S13、図6、図7参照)が実行される。発呼側端末処理の詳細は後述する。発呼側端末処理が終了した後、S11の処理に戻り、上述の処理が繰り返し実行される。
【0038】
キーボード851が操作されない場合(S11:NO)、発呼側端末から送信される接続要求パケット(後述)を受信したかが判断される(S15)。発呼側端末から接続要求パケットを受信した場合(S15:YES)、接続要求パケットに含まれているNAT情報が取得される。そして、被呼側の端末装置8(「被呼側端末」という。)として駆動するために、被呼側端末処理(S17、図8、図9参照)が実行される。被呼側端末処理の詳細は後述する。被呼側端末処理が終了した後、S11の処理に戻り、上述の処理が繰り返し実行される。発呼側端末から接続要求パケットを受信していない場合(S15:NO)、S11にの処理に戻り、上述の処理が繰り返し実行される。
【0039】
発呼側端末処理について、図6及び図7を参照して説明する。以下、発呼側端末が図1における端末装置6に相当し、被呼側端末が図1における端末装置7に相当するものとして説明する。
【0040】
図6に示すように、発呼側端末処理では、はじめに、ポート番号を用いた通信を行うためにソケットが作成される(S21)。一つのソケットに一つのポート番号が割り当てられる。S21の処理では、通信制御装置2との通信用、及びポート調整パケット(詳細後述)通信用の合計二つのソケットが作成される。以下の説明では、通信制御装置2との通信用のソケットを「第一ソケット」という。ポート調整パケット通信用のソケットを「第二ソケット」という。次いで、作成されたソケットに対してポート番号が割り当てられる(S23)。第一ソケットに対して偶数のポート番号が割り当てられ、第二ソケットに対して、第一ソケットに割り当てたポート番号に1加算した奇数のポート番号が割り当てられる。
【0041】
なお本実施の形態では、第一ソケット及び第二ソケットに対して上述のようにポート番号を割り当てているが、本発明はこの方法に限定されず、ランダムなポート番号を割り当ててもよい。
【0042】
第一ソケットを使用し、通信制御装置2に対して、端末装置7との通信開始を要求する接続要求パケットが送信される(S25)。送信された接続要求パケットは、NAT装置3を経由して通信制御装置2に到達する。NAT装置3では、接続要求パケットが転送された場合に、接続要求パケットの送信元ポート番号が変換される。変換後の送信元ポート番号は、ポート番号の履歴情報として、NAT装置3のフラッシュメモリ57に記憶される。
【0043】
通信制御装置2では、接続要求パケットが受信される。通信制御装置2では、受信した接続要求パケットの送信元IPアドレス及び送信元ポート番号が、NAT種別及びポート幅とともに、NAT装置3のNAT情報として接続要求パケットに付加される。情報が付加された接続要求パケットが、端末装置7に対して転送される(S107、図10参照)。通信制御装置2では、端末装置7から送信される接続応答パケット(S65、図8参照)が受信される(S109、図10参照)。通信制御装置2では、端末装置6から受信した接続要求パケットと、端末装置7から受信した接続応答パケットとから、NAT装置3、4に履歴情報として記憶されているポート番号、及び、NAT装置3、4のIPアドレスが少なくとも取得される(S111、S113、図10参照)。取得されたこれらの情報と、NAT装置3,4のNAT種別及びポート幅とを含むNAT情報パケットが、通信制御装置2から端末装置6に対して送信される(S117、図10参照)。
【0044】
端末装置6では、通信制御装置2から送信されたNAT情報パケットを、NAT装置3を介して受信したかが監視される(S27)。NAT情報パケットを受信していない場合(S27:NO)、S27の処理に戻り、上述の処理が繰り返し実行される。NAT情報パケットを受信した場合(S27:YES)、NAT情報に含まれているNAT装置3、4のポート幅が参照される(S28)。ポート幅が「1」でない場合(S28:NO)、端末装置6は端末装置7とRTP/RTCPに基づいた通信を行うことができないので、そのまま端末装置処理(図5参照)に戻る。一方、ポート幅が「1」である場合(S28:YES)、S29の処理に進む。
【0045】
S29の処理では、NAT情報パケットに含まれている情報のうち、NAT装置3、4に記憶されたポート番号が取得される(S29)。自身と直接接続するNAT装置3に記憶されたポート番号が偶数であるかが判断される(S31)。ポート番号が偶数である場合(S31:YES)、NAT装置3の履歴情報に奇数のポート番号を記憶させるために、ポート調整パケットが第二ソケットを使用して通信制御装置2に対して送信される(S33)。ポート調整パケットは、NAT装置3の履歴情報に記憶されているポート番号が更新されて奇数のポート番号が記憶されるように、端末装置7から送信される。そしてS35の処理に進む。ポート調整パケットをNAT装置3が受信した場合、送信元のポート番号が異なるパケットであるので、記憶されているポート番号にポート幅「1」が加算されて更新され、ポート調整パケットに割り当てられる。そしてポート調整パケットは、NAT装置3において転送され、通信制御装置2に到達する。一方、取得されたポート番号が奇数である場合(S31:NO)、そのままS35に進む。
【0046】
次いで、S21において作成されたポート調整パケット通信用のソケット(第二ソケット)がクローズされる。新たに、RTPプロトコルに基づく端末装置7との通信用のソケットを、及び、RTCPプロトコルに基づく端末装置7との通信用のソケットが作成される。以下の説明では、RTPプロトコルに基づく通信用のソケットを「第三ソケット」という。RTCPプロトコルに基づく端末装置7との通信用のソケットを「第四ソケット」という。作成された第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S35)。其々に割り当てられるポート番号は、偶数から始まる連続した値とされる。
【0047】
なお本実施の形態では、第三ソケット及び第四ソケットに対して上述のようにポート番号を割り当てているが、本発明はこの方法に限定されず、ランダムなポート番号を割り当ててもよい。しかしながらNAT装置が、端末装置の送信元ポート番号をそのまま履歴情報として記憶する動作を行う場合には、上述のように、偶数/奇数の連続したポート番号を割り当てることによって、NAT装置に偶数/奇数の連続したポート番号を記憶させることが可能となる。
【0048】
端末装置7から送信される(S85、図9参照)終了通知パケットを受信したかが監視される(S37)。終了通知パケットを受信していない場合(S37:NO)、S37に戻り、終了通知パケットの受信が継続して監視される。終了通知パケットを受信した場合(S37:YES)、S39の処理(図7参照)に進む。
【0049】
図7に示すように、S39〜S43の処理では、通信相手方である端末装置7と直接接続するNAT装置4に記憶されているポート番号に基づいて、RTPパケット及びRTCPパケットを送信する場合の宛先ポート番号が特定される。RTPパケットの宛先ポート番号を偶数とし、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数とするために、以下の処理が実行される。
【0050】
NAT装置4に記憶されているポート番号が、偶数であるかが判断される(S39)。偶数である場合(S39:YES)、NAT装置4に記憶されているポート番号に2加算した値を、RTPパケットの宛先ポート番号とする(S41)。またRTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号にさらに1加算した値とする。そしてS45の処理に進む。一方、NAT装置4に記憶されているポート番号が奇数である場合(S39:NO)、NAT装置4に記憶されているポート番号に1加算した値を、RTPパケットの宛先ポート番号とする(S43)。またRTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号にさらに1加算した値とする。そしてS45の処理に進む。
【0051】
なお上述では、NAT装置4に記憶されているポート番号が偶数である場合に2加算し、奇数である場合に1加算する算出方法とした。しかしながら本発明はこの方法に限定されない。RTPパケット/RTCPパケットの宛先ポート番号が偶数/奇数の連続した値となればよいので、例えば、NAT装置4に記憶されているポート番号が偶数である場合には、「2n」(nは1以上の整数)加算した値をRTPパケットの宛先ポート番号とし、「2n+1」加算した値をRTCPパケットの宛先ポート番号としてもよい。同様に、奇数である場合には、「2n−1」加算した値をRTPパケットの宛先ポート番号とし、「2n」加算した値をRTCPパケットの宛先ポート番号としてもよい。
【0052】
S45の処理では、端末装置7から送信されるRTPパケット及びRTCPパケットを、NAT装置3を介して受信可能なように、NAT装置3にポート番号を記憶させる。S35(図6参照)において準備された第三ソケット及び第四ソケットが使用される。第三ソケットを使用して、端末装置7宛てにパンチパケット(一回目)が送信される。パンチパケット(一回目)の宛先ポート番号は、S39〜S45の処理によって特定されたRTPパケットの宛先ポート番号とされる。次いで、第四ソケットを使用して、端末装置7宛てにパンチパケット(二回目)が送信される。パンチパケット(二回目)の宛先ポート番号は、S39〜S45の処理によって特定されたRTCPパケットの宛先ポート番号とされる(S45)。
【0053】
二つのパケットが、NAT装置3を経由して端末装置7に対して送信される。NAT装置3の履歴情報にポート番号を記憶させるために送信されるこれらのパケットを、以下「パンチパケット」という。二つのパンチパケットは、異なるポート番号から送信されているので、NAT装置3は、記憶されているポート番号を更新し、双方のパンチパケットに割り当てる。割り当てられたポート番号は、履歴情報としてNAT装置3のフラッシュメモリ57に記憶される。なお端末装置7では、これらのポート番号がRTPパケット及びRTCPパケットの宛先ポート番号として設定される(後述)。
【0054】
パンチパケットが送信された後、端末装置7から送信されるパンチ応答パケットを受信したかが監視される(S47)。パンチ応答パケットを受信した場合(S47:YES)、RTPパケット及びRTCPパケットの通信が可能な状態となっていることになる。また後述するように、端末装置7側でも同様の処理が実行され、RTPパケット及びRTCPパケットの通信が可能な状態となっている。以後、RTP/RTCPに基づく通信が端末装置6と端末装置7との間で実行される(S49)。RTPパケット及びRTCPパケットの宛先ポート番号は、S41及びS43において特定されたポート番号に設定される。
【0055】
ユーザがキーボード851を介して何ら入力操作を行わない状態では(S53:NO)、継続してRTP/RTCPに基づく通信が実行される。一方、キーボード851を介して通信を終了させる指示が入力された場合(S53:YES)、RTP/RTCPに基づく通信を終了させる(S55)。そして発呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0056】
一方、パンチパケット送信後、所定時間が経過してもパンチ応答パケットを受信できない場合(S47:NO)、通信エラーが発生しているので、端末装置7との間で継続して通信を行うことができない。この場合、ユーザに通信エラーが発生したことを通知するために、ディスプレイ861にエラー通知を表示し、通信を終了させるために必要な処理が行われる(S51)。そして発呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0057】
被呼側端末処理について、図8及び図9を参照して説明する。なお、発呼側端末処理と同一の処理部分については、説明を簡略化する。被呼側端末処理では、はじめにソケットが2つ(第一ソケット、第二ソケット)作成される(S61)。通信制御装置2との通信用のソケットとして第一ソケットが使用される。ポート調整パケット通信用のソケットとして第二ソケットが使用される。次いで、作成されたソケットにポート番号が割り当てられる(S63)。
【0058】
第一ソケットを使用し、通信制御装置2に対して、接続要求パケットを受信したことを示す接続応答パケットが送信される(S65)。送信された接続応答パケットは、NAT装置4を経由して、通信制御装置2に到達する。NAT装置4では、接続応答パケットが転送された場合に、接続応答パケットの送信元ポート番号が変換される。変換後の送信元ポート番号は、転送可能なポート番号の履歴情報として、NAT装置4のフラッシュメモリ57に記憶される。
【0059】
通信制御装置2では、接続応答パケットが受信される(S109、図10参照)。通信制御装置2では、NAT情報パケットが端末装置7に対して送信される(S121、図10参照)。
【0060】
端末装置7では、通信制御装置2から送信されるNAT情報パケットを受信したかが監視される(S67)。受信していない場合(S67:NO)、S67に戻り、上述の処理が繰り返される。NAT情報パケットを受信した場合(S67:YES)、S15(図5参照)において接続要求パケットとともに受信したNAT情報と、今回受信したNAT情報とに含まれているNAT装置3、4のポート幅が参照される(S68)。ポート幅が「1」でない場合(S68:NO)、そのまま端末装置処理(図5参照)に戻る。ポート幅が「1」である場合(S68:YES)、S69の処理に進む。
【0061】
NAT装置3、4に記憶されたポート番号が取得される(S69)。自身と直接接続するNAT装置4に記憶されたポート番号が偶数であるかが判断され(S71)、偶数である場合には(S71:YES)、ポート調整パケットが第二ソケットを使用して通信制御装置2に対して送信される(S73)。そしてS75の処理に進む。これに対し、取得されたポート番号が奇数である場合(S71:NO)、そのままS75に進む。S75では、新たに第三ソケット及び第四ソケットが作成される。作成された第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S75)。そしてS77の処理(図9参照)に進む。
【0062】
図9に示すように、S77〜S81の処理では、通信相手方の端末装置6と直接接続するNAT装置3に記憶されたポート番号に基づいて、RTPパケット及びRTCPパケットを送信する場合の宛先ポート番号が特定される。NAT装置3に記憶されたポート番号が偶数であるかが判断される(S77)。偶数である場合(S77:YES)、該ポート番号に2加算した値を、RTPパケットの宛先ポート番号とする(S79)。また、RTPパケットの宛先ポート番号にさらに1加算した値を、RTCPパケットの宛先ポート番号とする。そしてS83の処理に進む。一方奇数である場合(S77:NO)、該ポート番号に1加算した値を、RTPパケットの宛先ポート番号とする(S81)。また、RTPパケットの宛先ポート番号にさらに1加算した値を、RTCPパケットの宛先ポート番号とする。そしてS83の処理に進む。
【0063】
なお本発明は上述の算出方法に限定されず、例えば、NAT装置3に記憶されているポート番号が偶数である場合には、「2n」(nは1以上の整数)加算し、奇数である場合に「2n−1」加算する算出方法としてもよい。
【0064】
S83の処理では、端末装置6から送信されるRTPパケット及びRTCPパケットを、NAT装置4を介して受信可能なように、NAT装置4にポート番号を記憶させる。通信時には、パケットが経由可能なルータの数に相当するTTL(Time To Live)の小さいパケット(TTL調整パケット)が使用される。TTLの値は、パケットがNAT装置4を通過し、且つNAT装置3に到達しないように調整される。TTL調整パケットはNAT装置3に到達する前にTTLが0となり、破棄される。TTL調整パケットはNAT装置3に到達しないので、NAT装置3の履歴情報を乱したり、NAT装置3のフィルタリング機能が有効となったりすることを防止できる。
【0065】
第三ソケットを使用して、端末装置6宛てにTTL調整パケット(一回目)が送信される。TTL調整パケット(一回目)の宛先ポート番号は、S77〜S81の処理によって特定されたRTPパケットの宛先ポート番号とされる。次いで、第四ソケットを使用して、端末装置6宛てにTTL調整パケット(二回目)が送信される。TTL調整パケット(二回目)の宛先ポート番号は、S77〜S81の処理によって特定したRTCPパケットの宛先ポート番号とされる(S83)。
【0066】
二つのTTL調整パケットが、NAT装置4を経由して端末装置6に対して送信される。NAT装置4では、二つのTTL調整パケットを転送する場合に双方に割り当てたポート番号が、履歴情報としてフラッシュメモリ57に記憶される。なお端末装置6では、これらのポート番号がRTPパケット及びRTCPパケットの宛先ポート番号として設定されている(S41,S43、図7参照)。
【0067】
TTL調整パケットが送信された後、RTP/RTCPに基づく通信が可能になったことを端末装置6に対して通知するために、終了通知パケットが端末装置6に対して送信される(S85)。終了通知パケットが送信された後、端末装置6から送信されるパンチパケットを受信したかが監視される(S87)。パンチパケットは、TTL調整パケットによってNAT装置4に記憶されたポート番号宛てに送信されるので、NAT装置4を経由して端末装置7に届く。パンチパケットを受信した場合(S87:YES)、端末装置6に対してパンチ応答パケットを送信する(S89)。
【0068】
パンチ応答パケットの送信後、端末装置7はRTPパケット及びRTCPパケットの受信が可能な状態となっていることになる。また既述のように、発呼側端末側でも同様の処理が実行され、RTPパケット及びRTCPパケットの受信が可能な状態となっている。RTP/RTCPに基づく通信が端末装置6と端末装置7との間で実行される(S93)。キーボード851を介して通信を終了させる指示が入力されたかが監視される(S95)。終了指示が入力された場合(S95:YES)、RTP/RTCPに基づく通信を終了させる(S97)。そして被呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0069】
一方、終了通知パケットが送信された後、所定時間が経過してもパンチパケットを受信できない場合には(S87:NO)、ユーザに通信エラーが発生したことを通知するために、ディスプレイ861にエラー通知を表示し、通信を終了させるために必要な処理が行われる(S91)。そして被呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0070】
以上のようにして、端末装置6と端末装置7とはRTP/RTCPに基づいた通信を行うことが可能となる。RTP/RTCPに基づいて通信を行うためには、RTPパケットの宛先ポート番号を偶数とし、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数としなければならない。そして、NAT装置3、4がこれらのパケットを配下の端末装置8に転送するためには、連続した「偶数」「奇数」の値を履歴情報として記憶している必要がある。これに対し、上述のS31(図6参照)、S33(図6参照)、S71(図8参照)、S73(図8参照)の処理によって、NAT装置3、4に記憶されるポート番号のうち最も新しい番号は奇数となる。従って、S45において送信されるパンチパケットや、S83において送信されるTTL調整パケットによって、NAT装置3、4に連続した「偶数」「奇数」のポート番号が履歴情報として記憶される。端末装置6,7は、RTPパケット及びRTCPパケットの宛先ポート番号を、NAT装置3、4に履歴情報として記憶されたポート番号とすることができる。これによって端末装置6,7は、RTP/RTCPに基づいた通信を行うことが可能となる。
【0071】
図10を参照し、通信制御装置2のCPU21において実行される通信制御処理について説明する。通信制御処理は、通信制御装置2の電源が投入された場合に、CPU21において起動され実行される。なお通信制御装置2は、通信制御処理が実行されるに際し、事前にNAT装置5のIPアドレスを認識しているものとする。またNAT装置5には、通信制御装置2と端末装置8とが通信を行うために必要なポート番号が履歴情報として既に記憶されているものとする。通信制御装置2は、NAT装置5に履歴情報として記憶されているポート番号を認識しているものとする。また通信制御装置2は、NAT装置5の種別(Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT、Symmetric NATのいずれか)やポート幅を認識しているものとする。このため、図10に示す通信制御処理では、端末装置8と通信を開始するために必要な処理は省略されている。
【0072】
図10に示すように、通信制御処理が起動されると、端末装置6から接続要求パケットを受信したかが判断される(S101)。接続要求パケットを受信している場合(S101:YES)、接続要求パケットの送信元IPアドレス、及び送信元ポート番号が取得される(S103)。取得された送信元IPアドレスは、NAT装置3のIPアドレスに相当する。送信元ポート番号は、NAT装置3に履歴情報として記憶されたポート番号に相当する。取得された上述の情報が、NAT装置3のNAT種別及びポート幅の情報とともに、受信した接続要求パケットに付加され、新たな接続要求パケットが作成される(S105)。作成された接続要求パケットは、端末装置7に対して送信される(S107)。そしてS101の処理に戻り、上述の処理が繰り返し実行される。
【0073】
一方、端末装置6から接続要求パケットを受信していない場合(S101:NO)、端末装置7から接続応答パケットを受信したかが判断される(S109)。接続応答パケットを受信している場合(S109:YES)、S101において受信した接続要求パケットの送信元IPアドレス、及び送信元ポート番号が取得される(S111)。取得された送信元IPアドレスは、NAT装置3のIPアドレスに相当する。送信元ポート番号は、NAT装置3に履歴情報として記憶されたポート番号に相当する。また、受信した接続応答パケットの送信元IPアドレス、及び送信元ポート番号が取得される(S113)。取得された送信元IPアドレスは、NAT装置4のIPアドレスに相当する。送信元ポート番号は、NAT装置4に履歴情報として記憶されたポート番号に相当する。
【0074】
S111及びS113において取得された情報と、NAT装置3,4のNAT種別及びポート幅とを含むNAT情報パケットが作成される(S115)。作成されたNAT情報パケットは、端末装置6(接続要求パケット送信側)に対して送信される(S117)。また、S113において取得された情報を含むNAT情報パケットが作成される(S119)。作成されたNAT情報パケットは、端末装置7(接続要求パケット受信側)に対して送信される(S121)。そしてS101の処理に戻り、上述の処理が繰り返し実行される。
【0075】
一方、端末装置7から接続応答パケットを受信していない場合(S109:NO)、端末装置7から終了通知パケットを受信したかが判断される(S123)。終了通知パケットを受信している場合(S123:YES)、終了通知パケットの宛先IPアドレス及びポート番号が取得される(S125)。取得された宛先IPアドレス及びポート番号に基づき、終了通知パケットが端末装置6に対して送信される(S127)。そしてS101に戻り、上述の処理が繰り返し実行される。
【0076】
一方、端末装置7から終了通知パケットを受信していない場合(S123:NO)、その他のパケットを端末装置6,7から受信しているかが判断される(S129)。その他のパケットを受信している場合(S129:YES)、受信したパケットを破棄する(S131)。そしてS101の処理に戻り、上述の処理が繰り返し実行される。一方、何れのパケットも受信していない場合には(S129:NO)、そのままS101の処理に戻り、上述の処理が繰り返し実行される。
【0077】
図11及び図12を参照し、通信制御装置2、NAT装置3,4、及び端末装置6、7を介して実行される通信のシーケンスについて、既述のフローチャートを参照しつつ説明する。
【0078】
端末装置6のキーボード851を介し、端末装置7との通信を開始させるための操作がなされた場合、端末装置6においてソケットが作成される(S21、図6参照)。通信制御装置2との通信用として使用される第一ソケットに「10000」、ポート調整パケット通信用として使用される第二ソケットに「10001」がポート番号として其々割り当てられる。
【0079】
第一ソケット(ポート番号:10000)を使用し、NAT装置3を介して端末装置7に対して接続要求パケットが送信される(101、S25(図6参照))。NAT装置3において、接続要求パケットが通信制御装置2に対して転送される(103)。NAT装置3において、送信元ポート番号が「10000」から「23456」に変更される。変換後の送信元ポート番号「23456」が、NAT装置3のフラッシュメモリ57に記憶される(104)。
【0080】
通信制御装置2では、端末装置6から接続要求パケットが受信される(105、S101(図10参照))。受信した接続要求パケットに基づいて、NAT装置3のIPアドレスとポート番号「23456」が取得される(S103(図10参照))。取得されたIPアドレス及びポート番号と、NAT装置3のNAT種別及びポート幅の情報は、接続要求パケットに付加され、端末装置7に対して送信される(107、S107(図10参照))。送信された接続要求パケットは、NAT装置4において転送され(109)、端末装置7において受信される(111、S15(図5参照))。
【0081】
端末装置7においてソケットが作成される(S61(図8参照))。第一ソケットに「2000」、第二ソケットに「2001」が其々割り当てられる。第一ソケット(ポート番号:2000)を使用し、通信制御装置2に対してNAT装置4を介して接続応答パケットが送信される(113、S65(図8参照))。NAT装置4において、接続応答パケットが通信制御装置2に対して転送される(115)。NAT装置4において、送信元ポート番号が「2000」から「54321」に変更される。変更後の送信元ポート番号が、NAT装置4のフラッシュメモリ57に記憶される(116)。
【0082】
通信制御装置2において、接続応答パケットが受信される(117、S109(図10参照))。NAT装置3、4のIPアドレス、ポート番号、NAT種別、及びポート幅の情報を含むNAT情報パケットが、ポート番号「23456」を宛先ポート番号とし、NAT装置3を介して端末装置6に対して送信され(119、S117(図10参照))、端末装置6において受信される(123、S27(図6参照))。また、NAT装置4のIPアドレス、ポート番号、NAT種別、及びポート番号を含むNAT情報が、ポート番号「54321」を宛先ポート番号とし、NAT装置4を介して端末装置7に対して送信され(121、S121(図10参照))、端末装置7において受信される(125、S67(図8参照))。
【0083】
端末装置6では、NAT情報に含まれているNAT装置3のポート番号の情報に基づいて、ポート調整パケットを送信するか否かが判断される(S31(図6参照))。104において、NAT装置3にはポート番号「23456」(偶数)が履歴情報として記憶されている。この場合、NAT装置3に履歴情報として奇数のポート番号を記憶させるために、ポート調整パケットが第二ソケット(ポート番号:10001)を使用してNAT装置3を介して通信制御装置2に対して送信される(127、S33(図6参照))。NAT装置3では、受信したポート調整パケットの送信元ポート番号が、103において受信した接続要求パケットの送信元ポート番号と異なるので、ポート調整パケットの送信元ポート番号が、「10001」から、「23456」に1加算した「23457」に変換される(129)。NAT装置3には、ポート番号「23457」が履歴情報として記憶される(130)。以上のようにして、NAT装置3に記憶されるポート番号のうち最も新しい番号が奇数となるように調整される。
【0084】
端末装置7でも同様に、NAT情報に含まれているNAT装置4のポート番号の情報に基づいて、ポート調整パケットを送信するか否かが判断される(S71(図8参照))。116において、NAT装置4にはポート番号「54321」(奇数)が履歴情報として記憶されている。この場合、ポート調整パケットは送信されない。
【0085】
端末装置6において、第二ソケットがクローズされる。次いで、新たに第三ソケット及び第四ソケットを作成し、作成した第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S35(図6参照))。割り当てられるポート番号は、偶数から始まる連続した値とされる。第三ソケットに対して「10002」が割り当てられる。第四ソケットに対して「10003」が割り当てられる。
【0086】
端末装置7において、第二ソケットがクローズされる。次いで、新たに第三ソケット及び第四ソケットを作成し、作成した第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S75(図8参照))。割り当てられるポート番号は、偶数から始まる連続した値とされる。第三ソケットに対して「2002」が割り当てられる。第四ソケットに対して「2003」が割り当てられる。
【0087】
端末装置7において、RTPパケット及びRTCPパケットの宛先ポート番号が特定される(S77〜S81(図9参照))。104において、NAT装置3にポート番号「23456」(偶数)が記憶されているので、この値に2加算(S79(図9参照))した「23458」を、RTPパケットの宛先ポート番号とし、さらに1加算した「23459」を、RTCPパケットの宛先ポート番号とする。
【0088】
第三ソケット(ポート番号:2002)を使用してTTL調整パケット(一回目)が送信される(131、S83(図9参照))。TTL調整パケット(一回目)の宛先ポート番号は、特定されたRTPパケットの宛先ポート番号(23458)とされる。次いで、第四ソケット(ポート番号:2003)を使用してTTL調整パケット(二回目)が送信される(133、S83(図9参照))。TTL調整パケット(二回目)の宛先ポート番号は、特定されたRTCPパケットの宛先ポート番号(23459)とされる。
【0089】
2つのTTL調整パケットは、NAT装置4において転送される(135、137)。NAT装置4では、TTL調整パケット(一回目)の送信元ポート番号が、履歴情報として記憶されているポート番号のうち最も新しいポート番号「54321」(115参照)に1加算した「54322」に変換される(135)。変換後のポート番号「54322」が履歴情報として記憶される(136)。また、TTL調整パケット(二回目)の送信元ポート番号が、ポート番号「54322」に1加算した「54323」に変換される(137)。また、変換後のポート番号「54323」が履歴情報として記憶される(138)。なお、いずれのパケットも、発呼側の端末である端末装置6に到達する前に、TTLが0となって破棄される(139、141)。
【0090】
TTL調整パケットが端末装置7から送信する段階では、NAT装置3の履歴情報に「23458」「23459」は記憶されていない。このため、TTL調整パケットがNAT装置3に届いても、NAT装置3はTTL調整パケットを端末装置6に転送しない。ここで本実施の形態では、TTL調整パケットのTTLを小さな値としている。これによって、TTL調整パケットがNAT装置3に届く前に破棄されるようにしている。
【0091】
端末装置7からNAT装置3、4及び通信制御装置2を介して端末装置6に対して、終了通知パケットが送信される(143、S85(図9参照))。通信制御装置2では、105において端末装置6から接続要求パケットを受信した場合の送信元ポート番号「23456」が宛先ポート番号となるように、終了通知パケットの宛先ポート番号が変換される。通信制御装置2を経由した終了通知パケットは、端末装置6において受信される(145、S37(図6参照))。
【0092】
端末装置6において、RTPパケット及びRTCPパケットの宛先ポート番号が特定される(S39〜S43(図7参照))。NAT装置4にポート番号「54321」(奇数)が記憶されている(116)ので、この値に1加算(S43(図7参照))した「54322」を、RTPパケットの宛先ポート番号とし、さらに1加算した「54323」を、RTCPパケットの宛先ポート番号とする。なおこれらのポート番号は、端末装置7から送信されたTTL調整パケットによってNAT装置4に記憶された(136、138)ポート番号「54322」「54323」と一致する。
【0093】
図12に示すように、第三ソケットを使用してパンチパケット(一回目)が送信される(151、S45(図7参照))。パンチパケット(一回目)の宛先ポート番号は、特定されたRTPパケットの宛先ポート番号(54322)とされる。次いで、第四ソケットを使用して、パンチパケット(二回目)が送信される(153、S45(図7参照))。パンチパケット(二回目)の宛先ポート番号は、特定されたRTCPパケットの宛先ポート番号(54323)とされる。
【0094】
2つのパンチパケットがNAT装置3を経由する(155、157)。NAT装置3では、パンチパケット(一回目)の送信元ポート番号が、履歴情報として記憶されているポート番号のうち最も新しいポート番号「23457」(130(図11参照))に1加算した「23458」に変換される(155)。また、変換後のポート番号「23458」が履歴情報として記憶される(154)。また、パンチパケット(二回目)の送信元ポート番号が、パンチパケット(1回目)の送信元ポート番号とされた「23458」に1加算した「23459」に変換される(157)。また、変換後のポート番号「23459」が履歴情報として記憶される(156)。なおこれらのポート番号は、端末装置7において特定された(S77〜S81(図9参照))RTPパケットの宛先ポート番号「23458」、及びRTCPパケットの宛先ポート番号「23459」と一致する。
【0095】
いずれのパンチパケットも、NAT装置4に履歴情報として記憶されているポート番号「54322」「54323」宛てに送信しているので、NAT装置4はこれらのパンチパケットを端末装置7に対して転送する(158、159)。
【0096】
端末装置7において、パンチパケットが受信される(160、161、S87(図9参照))。端末装置7は、パンチパケットの其々に対してパンチ応答パケットを送信する(163、165、S89(図9参照))。パンチ応答パケットの宛先ポート番号は、S77〜S81(図9参照)において特定されたRTPパケットの宛先ポート番号(23458)及びRTCPパケットの宛先ポート番号(23459)とされる。いずれの宛先ポート番号も、NAT装置3がパンチパケットを転送した場合に履歴情報として記憶されたポート番号「23458」「23459」と一致している。従って、NAT装置3はこれらのパンチ応答パケットを端末装置6に対して転送する(166、167)。端末装置6において、パンチ応答パケットが受信される(168、169、S47(図7参照))。
【0097】
以後、端末装置6は、特定したRTPパケットの宛先ポート番号「54322」及びRTCPパケットの宛先ポート番号「54323」に基づいてRTPパケット及びRTCPパケットを送信する(171、173)。また図示されていないが、端末装置7は、特定したRTPパケットの宛先ポート番号「23458」及びRTCPパケットの宛先ポート番号「23459」に基づいてRTPパケット及びRTCPパケットを送信する。なおこれらの宛先ポート番号は、それぞれNAT装置3、4に履歴情報として記憶されている値と一致するので、NAT装置3,4は、受信したRTPパケット及びRTCPパケットを端末装置6,7に転送する。また、これらの宛先ポート番号は、RTPパケットの宛先ポート番号が偶数であり、RTCPパケットの宛先ポート番号が、RTPパケットの宛先ポート番号に1加算した奇数であるという条件を満たす。従って、RTP/RTCPに基づいた通信が実行可能となる。
【0098】
以上説明したように、本実施の形態では、NAT装置5に偶数と奇数の連続したポート番号を履歴情報として記憶させることができる。従って、それぞれのポート番号をRTPパケット及びRTCPパケットの宛先ポート番号とすることによって、端末装置8同士がRTP/RTCPに基づいた通信を行うことが可能となる。
【0099】
端末装置6では、ソケットに割り当てるポート番号を調整することによって、接続要求パケット、ポート調整パケット、及びパンチパケットの送信元ポート番号が其々異なるようにしている。端末装置7でも同様に、接続応答パケット、ポート調整パケット、及びTTL調整パケットの送信元ポート番号が其々異なるようにしている。これによって、NAT装置3,4の種別がCone NATである場合にも、パケットに割り当てられるポート番号が1ずつ更新されるので、RTP/RTCPに基づいた通信を行うことが可能となる。
【0100】
また、NAT装置のポート幅が1である場合に、第一パケットが送信される。これによって、NAT装置のポート幅が1であることを確認し、第一パケットを送信することができる。
【0101】
なお、図6のS25、図8のS65の処理が本発明の「第一送信ステップ」に相当する。図10のS117、S121の処理が本発明の「第二送信ステップ」に相当する。図6のS27、及び図8のS67の処理が本発明の「第一受信ステップ」に相当する。図6のS31及び図8のS71の処理が本発明の「第二判断ステップ」に相当する。図7のS39及び図9のS77の処理が本発明の「第一判断ステップ」に相当する。図7のS49及び図9のS93の処理が本発明の「第三送信ステップ」に相当する。図6のS33及び図8のS73の処理が本発明の「第四送信ステップ」に相当する。図6のS28及び図8のS68の処理が本発明の「第三判断ステップ」に相当する。
【0102】
図6のS25及び図8のS65の処理を行うCPU81が本発明の「第一送信手段」に相当する。図6のS27及び図8のS67の処理を行うCPU81が本発明の「第一受信手段」に相当する。図6のS31及び図8のS71の処理を行うCPU81が本発明の「第一判断手段」に相当する。図7のS39及び図9のS77の処理を行うCPU81が本発明の「第一判断手段」に相当する。図7のS49及び図9のS93の処理を行うCPU81が本発明の「第三送信手段」に相当する。図10のS101の処理を行うCPU21が本発明の「第二受信手段」に相当し、S117及びS121の処理を行うCPU21が本発明の「第二送信手段」に相当する。
【0103】
なお、本発明は上記実施の形態に限定されるものではなく、種々の変更が可能である。上述の実施の形態では、NAT情報パケットに含まれているポート幅に基づいて、端末装置8はポート調整パケットやパンチパケット、TTL調製用パケットを送信していた。しかしながら本発明はこの構成に限定されない。例えば端末装置8は、接続要求パケットの送信前にポート幅の情報を通信制御装置2から受信し、ポート幅が1でない場合には、接続要求パケットを送信しない構成としてもよい。また例えば端末装置8は、接続要求パケットを受信した場合にポート幅の情報を通信制御装置2から受信し、ポート幅が1でない場合には、接続応答パケットを送信しない構成としてもよい。
【0104】
上述の実施の形態では、RTP/RTCPに基づいた通信を行う端末装置が2台(端末装置6,7)である場合を想定していたが、本発明はこの構成に限定されない。RTP/RTCPに基づいた通信を行う端末装置は3台以上であってもよい。以下、本発明の変形例について説明する。
【0105】
図13及び図14を参照し、本発明の変形例における発呼側端末処理について説明する。変形例では、n台(nは1以上の整数)の端末装置8によって互いにRTP/RTCPに基づいた通信が行われる。なお、被呼側端末、及び通信制御装置2において実行される他の処理(端末装置処理、被呼側端末処理、通信制御処理)については、上述の実施の形態と同様であるので、以下では説明を省略している。また、発呼側端末処理のうち、上述の実施の形態と同様の部分については、説明を省略し又は簡略している。
【0106】
図13に示すように、変形例における発呼側端末処理では、はじめに、ポート番号を用いた通信を行うためのソケットが作成される(S171)。ソケットは、合計「n+1」作成される。通信制御装置2と通信を行うためのソケットが一つ(「第Aソケット」という。)と、ポート調整パケット通信を行うためのソケットが「n」(「第Bソケット」「第Cソケット」・・・「第n+1ソケット」という。)である。次いで、作成されたソケットに対してポート番号が割り当てられる(S23)。其々に割り当てられるポート番号は、偶数から始まる連続した値とされる。
【0107】
第Aソケットを使用し、n台の被呼側端末宛ての接続要求パケットが、通信制御装置2に対して送信される(S25)。NAT装置3では、接続要求パケットが転送された場合に、接続要求パケットの送信元ポート番号が変換される。変換後の送信元ポート番号がポート番号の履歴情報として記憶される。
【0108】
通信制御装置2では、受信した接続要求パケットが、n台の被呼側端末に転送される。通信制御装置2では、被呼側端末の其々から送信される接続応答パケット(S65、図8参照)が受信される(S109、図10参照)。通信制御装置2では、被呼側端末から受信した接続要求パケットに基づいて作成されたNAT情報パケットが、発呼側端末に対して送信される(S117、図10参照)。NAT情報パケットには、n台の被呼側端末と直接接続する其々のNAT装置5のIPアドレス、ポート番号、NAT種別、及びポート幅が含まれている。
【0109】
発呼側端末では、通信制御装置2から送信されたNAT情報パケットを、NAT装置3を介して受信したかが監視される(S27)。NAT情報パケットを受信した場合(S27:YES)、NAT情報に含まれているNAT装置5のポート幅が参照される(S173)。ポート幅が「1」でないNAT装置5が含まれている場合(S173:NO)、発呼側端末は被呼側端末とRTP/RTCPに基づいた通信を行うことができないので、該当するNAT装置5を記憶しておくために、フラグ情報(通信不可フラグ)を対応付けてRAM83に記憶する(S175)。そしてS29の処理に進む。一方、すべてのNAT装置5のポート幅が「1」である場合(S173:YES)、S29の処理に進む。
【0110】
S29の処理では、通信不可フラグが対応付けられていないNAT装置5のポート番号が、受信したNAT情報から取得される(S29)。自身と直接接続するNAT装置5に記憶されたポート番号が偶数であるかが判断される(S31)。偶数である場合(S31:YES)、ポート調整パケットが第Bソケットを使用して通信制御装置2に対して送信される(S33)。そしてS35の処理に進む。これに対し、取得されたポート番号が奇数である場合(S31:NO)、そのままS35に進む。
【0111】
次いで、S171において作成されたポート調整パケット通信用のソケットがクローズされる。新たにソケットが作成される。ソケットは、合計「2n」作成される。RTP/RTCPの其々に基づく通信に使用されるソケット(「第aソケット」「第bソケット」〜「第2nソケット」という。)である。作成されたソケットに対してポート番号が割り当てられる(S35)。其々に割り当てられるポート番号は、偶数から始まる連続した値とされる。
【0112】
端末装置7から送信される終了通知パケットを受信したかが監視される(S37)。終了通知パケットを受信した場合(S37:YES)、S39の処理(図14参照)に進む。
【0113】
図14に示すように、S39〜S43の処理では、通信相手方の複数の被呼側端末と直接接続する其々のNAT装置5に記憶されているポート番号に基づいて、RTPパケット及びRTCPパケットを送信する場合の宛先ポート番号が特定される。RTPパケットの宛先ポート番号が偶数とされ、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数とされる。RTPパケット及びRTCPパケットの宛先ポート番号は、複数のNAT装置5毎に其々特定される。そしてS45の処理に進む。
【0114】
S45の処理では、n台の被呼側端末から送信されるRTPパケット及びRTCPパケットを、自身と直接接続するNAT装置5を介して受信可能なように、NAT装置5にポート番号を記憶させる。S35(図13参照)において準備された第aソケット〜第2nソケットが使用される。第aソケット及び第bソケットを使用して、一の被呼側端末宛てにパンチパケット(一回目及び二回目)が送信される。パンチパケットの宛先ポート番号は、特定されたRTPパケットの宛先ポート番号及びRTCPパケットの宛先ポート番号とされる(S45)。
【0115】
二つのパンチパケットが、NAT装置5を経由して被呼側端末に対して送信される。NAT装置5では、二つのパンチパケットを転送する場合に双方に割り当てたポート番号が、履歴情報としてフラッシュメモリ57に記憶される。
【0116】
パンチパケットが送信された後、被呼側端末から送信されるパンチ応答パケットを受信したかが監視される(S47)。パンチ応答パケットを受信した場合(S47:YES)、
パンチパケットを送信していない他の被呼側端末が存在するかが判断される(S177)。存在する場合(S177:YES)、第cソケット及び第dソケットが選択され(S179)、S45に戻る。そして未だパンチパケットを送信していない被呼側端末宛てに、パンチパケット(一回目及び二回目)が送信される。以上のように、使用されるソケットを随時更新しながら、被呼側端末の全てに対してパンチパケット(一回目及び二回目)を送信する処理が繰り返し実行される。全ての被呼側端末に対してパンチパケットを送信した場合(S177:NO)、S49の処理に進む。
【0117】
一方、パンチパケット送信後、所定時間が経過してもパンチ応答パケットを受信できない場合(S47:NO)、通信エラーが発生しているので、被呼側端末との間で継続して通信を行うことができない。この場合、ユーザに通信エラーが発生したことを通知するために、ディスプレイ861にエラー通知を表示し、通信を終了させるために必要な処理が行われる(S51)。そして発呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0118】
S49の処理では、RTP/RTCPに基づき、複数の被呼側端末と通信が可能な状態であるので、以後、RTP/RTCPに基づく通信が発呼側端末と被呼側端末との間で実行される(S49)。
【0119】
以上説明した処理を実行することによって、発呼側端末は、n台の被呼側端末とRTP/RTCPに基づいた通信を行うことが可能となる。発呼側端末に直接接続するNAT装置5には、被呼側端末の其々と通信を行うためのポート番号(RTPパケット通信用及びRTCPパケット通信用)が履歴情報として記憶される。複数の被呼側端末は、其々、NAT装置5に記憶されたポート番号宛てにRTPパケット及びRTCPパケットを送信する。RTPパケット通信用のポート番号は偶数となり、RTCPパケット通信用のポート番号は、RTPパケット通信用のポート番号に1加算した奇数となっているので、被呼側端末から送信されたRTPパケット及びRTCPパケットは、NAT装置5を通過して発呼側端末に到達する。
【符号の説明】
【0120】
1 通信システム
2 通信制御装置
3,4,5 NAT装置
6,7,8 端末装置
21 CPU
81 CPU
【技術分野】
【0001】
本発明は通信方法、通信システム、端末装置に関する。より詳細には、RTP/RTCPに基づいて通信を行う通信方法、通信システム、端末装置に関する。
【背景技術】
【0002】
NAT(Network Address Translation)機能を備えた装置(NATルータなど。以下「NAT装置」という。)では、LAN側からインターネット側に向かう方向の通信が行われた場合に、所定のポート番号が記憶される。NAT装置は、記憶されたポート番号宛てのパケットをインターネット側から受信した場合にのみ、受信したパケットをLAN側に転送する。従って端末装置が、NAT装置の配下にある他の端末装置とのセッションを確立させるためには、NAT装置に記憶されているポート番号を検出し、このポート番号宛てにパケットを送信する必要がある。
【0003】
異なるNAT装置の配下にある端末装置間でセッションを確立させる為の技術として、例えばUDP Hole Punchingが知られている。また例えば特許文献1に記載の通信システムでは、LANに接続された端末装置からインターネット側に向かってバブルパケットが送信され、インターネット側との通信を行うためのポート番号がNAT装置に記憶される。記憶されたポート番号が、サーバを介し、別のNAT装置の配下にある端末装置に通知される。通知を受けた端末装置は、通知されたポート番号を宛先としてパケットを送信する。このようにして、異なるNAT装置の配下にある端末装置間でセッションを確立させている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−136030号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
異なるNAT装置の配下にある端末間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うためには、RTPパケットの宛先ポート番号を偶数としなければならない。また、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数の値にしなければならない。しかしながら上述した技術及び装置では、NAT装置に記憶された偶数と奇数の連続したポート番号を、端末装置に通知することができない。従って、偶数と奇数の連続したポート番号をRTPパケットとRTCPパケットの宛先ポート番号として指定できないので、RTP/RTCPに基づいて通信を行うことができないという問題点があった。
【0006】
本発明は上述の問題点を解決するためになされたものであり、異なるNAT装置の配下にある端末間でRTP/RTCPに基づいて通信を行うことが可能な通信方法、通信システム、端末装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第一態様に係る通信方法では、NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信方法であって、通信を行う少なくとも二つの前記端末装置の其々が、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信ステップと、前記第一送信ステップにおいて送信された前記第一パケットに基づいて、前記第一パケットを転送した前記NAT装置の其々に前記履歴情報として記憶された前記ポート番号を少なくとも含む第二パケットを、前記通信制御装置が前記少なくとも二つの端末装置の其々に対して送信する第二送信ステップと、前記第二送信ステップにおいて送信された前記第二パケットを前記少なくとも二つの端末装置の其々が受信する第一受信ステップと、前記第一受信ステップにおいて前記少なくとも二つの端末装置の其々が受信した前記第二パケットに含まれる前記ポート番号のうち、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号が奇数であるか偶数であるかを判断する第一判断ステップと、前記第一判断ステップにおいて前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断ステップにおいて前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信ステップとを備えている。
【0008】
第一の態様に係る通信方法では、偶数と奇数の連続したポート番号をRTPパケット及びRTCPパケットの宛先ポート番号に割り当てることができる。これによって端末装置は、他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【0009】
また第一態様において、前記第一受信ステップにおいて前記第二パケットを受信した場合に、前記第二パケットに含まれる前記ポート番号のうち、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号が奇数であるか偶数であるかを判断する第二判断ステップと、前記第二判断ステップにおいて前記第二ポート番号が偶数であると判断された場合に、前記NAT装置に記憶された前記第二ポート番号を更新するための第三パケットを、前記端末装置が前記NAT装置を介して送信する第四送信ステップを備えていてもよい。第三パケットによって、NAT装置に記憶させるポート番号を調整し、奇数と偶数の連続したポート番号をNAT装置に記憶させることができる。ユーザは、手動でNAT装置にポート番号を記憶させる手間を省くことができる。
【0010】
また第一態様において、前記NAT装置が、Cone NAT機能を備えたNAT装置である場合に、前記第四送信ステップは、前記端末装置が前記第一パケットを送信する際に使用した前記端末装置のポート番号と異なるポート番号を使用して、前記外部ネットワークに接続される機器に前記第三パケットを送信してもよい。NAT種別が汎用的なCone NATであるNAT装置では、端末装置の同一ポート番号から送信されたパケットが転送される場合に、NAT装置には新たなポート番号が記憶されず、既に記憶されているポート番号が使用される。これに対し第一態様では、端末装置の異なる送信元ポート番号からパケットが送信されるので、NAT装置には新たなポート番号が記憶される。このようにして、新たなポート番号がNAT装置に記憶されるようにできるので、NAT種別がCone NATである端末装置であっても、偶数と奇数の連続したポート番号が記憶されるように調整することができる。
【0011】
また第一態様において、三つ以上の前記端末装置間で通信を行う場合において、前記第一送信ステップでは、前記三つ以上の端末装置の其々が前記通信制御装置に対して前記第一パケットを送信し、前記第二送信ステップでは、前記通信制御装置が前記三つ以上の端末装置の其々に対して前記第二パケットを送信し、前記第一受信ステップでは、前記三つ以上の端末装置の其々が前記第二パケットを受信し、前記第一判断ステップは、複数の前記第一ポート番号の其々が奇数であるか偶数であるかを判断し、前記第三送信ステップは、其々の前記第一ポート番号から、前記RTPパケット及び前記RTCPパケットの宛先の前記ポート番号を算出し、算出した其々の前記ポート番号宛てに前記RTPパケット及び前記RTCPパケットを送信してもよい。これによって端末装置は、複数の他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【0012】
また第一態様において、前記NAT装置において、前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に前記ポート番号が1ずつ加算され前記履歴情報として記憶されるか否かを判断する第三判断ステップを備え、前記第一送信ステップ及び前記第三送信ステップのうち少なくともいずれかは、前記第三判断ステップにおいて前記ポート番号が1ずつ加算されると判断された場合に、前記第一パケット、前記RTPパケット、及び前記RTCPパケットのうち少なくともいずれかを送信してもよい。NAT装置においてポート番号が更新される場合の変化量(ポート幅)が1ずつ加算されている場合にのみ、以後の通信が行われる。NAT装置のポート幅が1でない場合に、RTP/RTCPに基づいた通信を行わせないようにすることができる。
【0013】
本発明の第二態様に係る通信システムでは、NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムであって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信システムであって、前記端末装置は、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段とを備え、前記通信制御装置は、少なくとも二つの前記端末装置の其々から送信された前記第一パケットを受信する第二受信手段と、前記第二受信手段において受信された前記第一パケットに基づいて、前記第二パケットを前記少なくとも二つの端末装置の其々に対して送信する第二送信手段とを備えている。
【0014】
第二態様に係る通信システムでは、偶数と奇数の連続したポート番号をRTPパケット及びRTCPパケットの宛先ポート番号に割り当てることができる。これによって端末装置は、他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【0015】
本発明の第三態様に係る端末装置では、NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置の配下の内部ネットワークに接続される端末装置であって、前記外部ネットワークに接続する通信制御装置と通信を行うことによって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行う端末装置であって、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段とを備えている。
【0016】
第三態様に係る端末装置では、偶数と奇数の連続したポート番号をRTPパケット及びRTCPパケットの宛先ポート番号に割り当てることができる。これによって端末装置は、他の端末装置との間でRTP/RTCPに基づいた通信を行うことができる。
【図面の簡単な説明】
【0017】
【図1】通信システム1を示す模式図である。
【図2】通信制御装置2の電気的構成を示すブロック図である。
【図3】NAT装置5の電気的構成を示すブロック図である。
【図4】端末装置8の電気的構成を示すブロック図である。
【図5】端末装置処理を示すフローチャートである。
【図6】発呼側端末処理を示すフローチャートである。
【図7】発呼側端末処理を示すフローチャートである。
【図8】被呼側端末処理を示すフローチャートである。
【図9】被呼側端末処理を示すフローチャートである。
【図10】通信制御処理を示すフローチャートである。
【図11】端末装置8間の通信を示す通信シーケンス図である。
【図12】端末装置8間の通信を示す通信シーケンス図である。
【図13】変形例における発呼側端末処理を示すフローチャートである。
【図14】変形例における発呼側端末処理を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明に係る通信システム1について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている端末の構成、各種処理のフローチャートなどは、それのみに限定する趣旨ではなく、単なる説明例である。
【0019】
図1を参照し、通信システム1の概要について説明する。通信システム1は、通信制御装置2、端末装置6,7(以下、これらを区別しない場合、「端末装置8」という。)、及びNAT装置3,4(以下、これらを区別しない場合、「NAT装置5」という。)を少なくとも備えている。通信制御装置2とNAT装置5とは、インターネット9に接続している。NAT装置5は、配下のLAN11,12(以下、これらを区別しない場合、「LAN13」という。)に接続している。端末装置8は、LAN13に接続している。図1に示す例では、NAT装置3の配下のLAN11に端末装置6が接続している。NAT装置4の配下のLAN12に端末装置7が接続している。
【0020】
通信制御装置2は、端末装置8間での通信を可能とするために必要な情報を、端末装置8に提供する。通信制御装置2としては、例えば呼制御サーバやSTUNサーバが使用できる。端末装置8は、通信制御装置2から提供される情報に基づいて、他の端末装置8との間で通信を行う。端末装置8としては、例えばPC(パーソナルコンピュータ)が使用できる。
【0021】
NAT装置5は、NAT(Network Address Translation)機能を備えた装置である。NAT装置5は、LAN13側からインターネット9側に向かう方向のパケットを端末装置8から受信した場合に、パケットの送信元IPアドレスとポート番号とを変換する。変換後のポート番号は、履歴情報としてNAT装置5に記憶される。記憶されたポート番号は、インターネット9側からLAN13側に向かう方向のパケットを受信した場合において、該パケットをLAN13側に転送するか否かを判断する場合に使用される。インターネット9側から受信したパケットの宛先ポート番号と同じポート番号が、履歴情報として記憶されている場合、受信したパケットをLAN13側に転送する。一方、インターネット9側から受信したパケットの宛先ポート番号と同じポート番号が、履歴情報として記憶されていない場合、受信したパケットはLAN13側に転送しない。このようにして、LAN13側に不特定者がアクセスできないようにしている。なお本実施の形態では、NAT装置5がパケットのポート番号を変換する場合、ポート番号を1ずつ加算することによって得られるポート番号が割り当てられるものとする。
【0022】
なおNAT装置5としては、NAT種別がCone NATやSymmetric NATであるNAT装置が使用できる。
【0023】
本実施の形態では、異なるNAT装置5の配下のLAN13に接続された端末装置8間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信が行われる。例えば、NAT装置3の配下のLAN11に接続された端末装置6と、NAT装置4の配下のLAN12に接続された端末装置7との間で、RTP/RTCPに基づいた通信が行われる。
【0024】
RTPは、音声や動画などのデータストリームをリアルタイムに配送する為のデータ転送プロトコルである。RTCPは、RTPでデータを送受信する為のセッションを制御するプロトコルである。RTP/RTCPを使用したデータの送受信を行うためには、(1)RTPパケットの宛先ポート番号は偶数が使用されること、(2)RTCPパケットの宛先ポート番号は、RTPパケットの宛先ポート番号に1加算した奇数が使用されること、という条件を満たす必要がある。
【0025】
本実施の形態では、端末装置8間でのRTP/RTCPに基づいた通信に際し、通信制御装置2及び端末装置8とが所定の通信を行う。この通信によって端末装置8は、RTPパケットとRTCPパケットとにそれぞれ割り当てる宛先ポート番号を特定する。端末装置8は、所謂「NAT越え」の問題を解消しつつ、他の端末装置8との間でRTP/RTCPに基づいた通信を行うことができる。
【0026】
なお、図1におけるインターネット9が、本発明の「外部ネットワーク」に相当し、LAN13が本発明の「内部ネットワーク」に相当する。なお本発明は、外部ネットワークとしてインターネット9の他に従来周知の様々なネットワーク(LAN、WAN、専用回線など)が使用できる。同様に、内部ネットワークとしてLAN13の他に従来周知のネットワーク(インターネット、WAN、専用回線など)が使用できる。
【0027】
図2を参照し、通信制御装置2の電気的構成について説明する。通信制御装置2は、CPU21、ROM22、RAM23、HDD24を備えている。CPU21は、NAT装置5や端末装置8との通信を制御する。ROM22には、Bootプログラムや初期設定パラメータが少なくとも記憶される。RAM23には、CPU21の処理時に発生する一時的なデータが少なくとも記憶される。HDD24は、CPU21のプログラムが少なくとも記憶される。CPU21は、ROM22、RAM23、及びHDD24と電気的に接続している。CPU21は、ROM22、RAM23、及びHDD24の記憶領域にアクセスできる。
【0028】
通信制御装置2は、入力ドライバ25を備えている。入力ドライバ25は、キーボード251を介して入力された情報を検出する。CPU21は、入力ドライバ25と電気的に接続している。入力ドライバ25は、キーボード251と電気的に接続する。CPU21は、キーボード251を介して入力された情報を認識できる。通信制御装置2は、表示ドライバ26を備えている。表示ドライバ26は、ディスプレイ261に像を表示させるための制御を行う。CPU21は、表示ドライバ26と電気的に接続している。表示ドライバ26は、ディスプレイ261と電気的に接続する。CPU21は、ディスプレイ261に所望の像を表示させることができる。
【0029】
通信制御装置2は、通信モジュール27を備えている。通信モジュール27は、インターネット9を介した通信を可能とする。CPU21は、通信モジュール27と電気的に接続している。CPU21は、インターネット9を介して通信を行うことができる。通信制御装置2は、ディスクドライブ28を備えている。ディスクドライブ28は、記憶媒体281に記憶された情報にアクセスする為の駆動装置である。CPU21は、ディスクドライブ28と電気的に接続している。CPU21は、ディスクドライブ28に挿入された記憶媒体281に記憶された情報にアクセスできる。記憶媒体281には、例えば、CPU21が実行するプログラムが記憶される。記憶媒体281の導入時には、プログラムが記憶媒体281からHDD24にセットアップされる。
【0030】
図3を参照し、NAT装置5の電気的構成について説明する。NAT装置5は、CPU51、ROM52、RAM53、フラッシュメモリ57を備えている。CPU51は、通信制御装置2や端末装置8との通信を制御する。ROM52には、CPU51のプログラムが少なくとも記憶される。RAM53には、CPU51の処理時に発生する一時的なデータが少なくとも記憶される。フラッシュメモリ57には、ポート番号が履歴情報として記憶される。CPU51は、ROM52、RAM53、及びフラッシュメモリ57と電気的に接続している。CPU51は、ROM52、RAM53、及びフラッシュメモリ57の記憶領域にアクセスできる。
【0031】
NAT装置5は、表示部54を備えている。表示部54は、NAT装置5の状態等を表示することができる。CPU51は、表示部54と電気的に接続している。CPU51は、表示部54に所望の情報を表示させることができる。表示部54としては、例えばLEDが使用できる。NAT装置5は、入力部55を備えている。入力部55は、ユーザによるNAT装置5への入力操作を受け付ける。CPU51は、入力部55と電気的に接続している。CPU51は、入力部55を介して入力された情報を認識できる。入力部55としては、例えばスイッチやタッチセンサが使用できる。
【0032】
NAT装置5は、通信モジュール58を備えている。通信モジュール58は、インターネット9を介した通信を可能とする。CPU51は、通信モジュール58と電気的に接続している。CPU51は、インターネット9を介して通信を行うことができる。NAT装置5は、通信モジュール59を備えている。通信モジュール59は、LAN13を介した通信を可能とする。CPU51は、通信モジュール59と電気的に接続している。CPU51は、LAN13を介して通信を行うことができる。
【0033】
図4を参照し、端末装置8の電気的構成について説明する。端末装置8は、CPU81、ROM82、RAM83、HDD84を備えている。CPU81は、NAT装置5や通信制御装置2との通信を制御する。ROM82には、Bootプログラムや初期パラメータが少なくとも記憶される。RAM83は、CPU81の処理時に発生する一時的なデータが少なくとも記憶される。HDD84は、CPU81のプログラムが少なくとも記憶される。CPU81は、ROM82、RAM83、及びHDD84と電気的に接続している。CPU81は、ROM82、RAM83、及びHDD84の記憶領域にアクセスできる。
【0034】
端末装置8は、入力ドライバ85を備えている。入力ドライバ85は、キーボード851を介して入力された情報を検出する。CPU81は、入力ドライバ85と電気的に接続している。入力ドライバ85は、キーボード851と電気的に接続する。CPU81は、キーボード851を介して入力された情報を認識できる。端末装置8は、表示ドライバ86を備えている。表示ドライバ86は、ディスプレイ861に像を表示させるための制御を行う。CPU81は、表示ドライバ86と電気的に接続している。表示ドライバ86は、ディスプレイ861と電気的に接続する。CPU81は、ディスプレイ861に所望の像を表示させることができる。
【0035】
端末装置8は、通信モジュール87を備えている。通信モジュール87は、LAN13を介した通信を可能とする。CPU81は、通信モジュール87と電気的に接続している。CPU81は、LAN13を介して通信を行うことができる。端末装置8は、ディスクドライブ88を備えている。ディスクドライブ88は、記憶媒体881に記憶された情報にアクセスする為の駆動装置である。CPU81は、ディスクドライブ88と電気的に接続している。CPU81は、ディスクドライブ88に挿入された記憶媒体881に記憶された情報にアクセスできる。記憶媒体881には、例えば、CPU81が実行するプログラムが記憶される。記憶媒体881の導入時には、プログラムが記憶媒体881からHDD84にセットアップされる。
【0036】
図5〜図9を参照し、端末装置8のCPU81において実行される端末装置処理について説明する。端末装置処理は、端末装置8の電源が投入された場合に、CPU81において起動され実行される。なお端末装置8は、端末装置処理が実行されるに際し、事前に通信制御装置2のIPアドレスを認識しているものとする。また、端末装置8と直接接続するNAT装置5には、端末装置8と通信制御装置2とが通信を行うためのポート番号が履歴情報として既に記憶されているものとする。通信制御装置2は、NAT装置5に履歴情報として記憶されているポート番号を認識しているものとする。また通信制御装置2は、NAT装置5の種別(Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT、Symmetric NATのいずれか)や、NAT装置5がパケットのポート番号を変換する場合においてポート番号に加算される値(以下「ポート幅」という。)を認識しているものとする。このため端末装置処理では、端末装置8と通信制御装置2とが通信を開始させるために必要な通信処理は省略されている。
【0037】
図5に示すように、端末装置処理が起動されると、他の端末装置との通信を開始させるための操作がキーボード851(図4参照)を介して行われたかが判断される(S11)。ユーザによってキーボード851が操作され、他の端末装置との通信を開始させる指示がなされた場合(S11:YES)、発呼側の端末装置8(「発呼側端末」という。)として駆動するために、発呼側端末処理(S13、図6、図7参照)が実行される。発呼側端末処理の詳細は後述する。発呼側端末処理が終了した後、S11の処理に戻り、上述の処理が繰り返し実行される。
【0038】
キーボード851が操作されない場合(S11:NO)、発呼側端末から送信される接続要求パケット(後述)を受信したかが判断される(S15)。発呼側端末から接続要求パケットを受信した場合(S15:YES)、接続要求パケットに含まれているNAT情報が取得される。そして、被呼側の端末装置8(「被呼側端末」という。)として駆動するために、被呼側端末処理(S17、図8、図9参照)が実行される。被呼側端末処理の詳細は後述する。被呼側端末処理が終了した後、S11の処理に戻り、上述の処理が繰り返し実行される。発呼側端末から接続要求パケットを受信していない場合(S15:NO)、S11にの処理に戻り、上述の処理が繰り返し実行される。
【0039】
発呼側端末処理について、図6及び図7を参照して説明する。以下、発呼側端末が図1における端末装置6に相当し、被呼側端末が図1における端末装置7に相当するものとして説明する。
【0040】
図6に示すように、発呼側端末処理では、はじめに、ポート番号を用いた通信を行うためにソケットが作成される(S21)。一つのソケットに一つのポート番号が割り当てられる。S21の処理では、通信制御装置2との通信用、及びポート調整パケット(詳細後述)通信用の合計二つのソケットが作成される。以下の説明では、通信制御装置2との通信用のソケットを「第一ソケット」という。ポート調整パケット通信用のソケットを「第二ソケット」という。次いで、作成されたソケットに対してポート番号が割り当てられる(S23)。第一ソケットに対して偶数のポート番号が割り当てられ、第二ソケットに対して、第一ソケットに割り当てたポート番号に1加算した奇数のポート番号が割り当てられる。
【0041】
なお本実施の形態では、第一ソケット及び第二ソケットに対して上述のようにポート番号を割り当てているが、本発明はこの方法に限定されず、ランダムなポート番号を割り当ててもよい。
【0042】
第一ソケットを使用し、通信制御装置2に対して、端末装置7との通信開始を要求する接続要求パケットが送信される(S25)。送信された接続要求パケットは、NAT装置3を経由して通信制御装置2に到達する。NAT装置3では、接続要求パケットが転送された場合に、接続要求パケットの送信元ポート番号が変換される。変換後の送信元ポート番号は、ポート番号の履歴情報として、NAT装置3のフラッシュメモリ57に記憶される。
【0043】
通信制御装置2では、接続要求パケットが受信される。通信制御装置2では、受信した接続要求パケットの送信元IPアドレス及び送信元ポート番号が、NAT種別及びポート幅とともに、NAT装置3のNAT情報として接続要求パケットに付加される。情報が付加された接続要求パケットが、端末装置7に対して転送される(S107、図10参照)。通信制御装置2では、端末装置7から送信される接続応答パケット(S65、図8参照)が受信される(S109、図10参照)。通信制御装置2では、端末装置6から受信した接続要求パケットと、端末装置7から受信した接続応答パケットとから、NAT装置3、4に履歴情報として記憶されているポート番号、及び、NAT装置3、4のIPアドレスが少なくとも取得される(S111、S113、図10参照)。取得されたこれらの情報と、NAT装置3,4のNAT種別及びポート幅とを含むNAT情報パケットが、通信制御装置2から端末装置6に対して送信される(S117、図10参照)。
【0044】
端末装置6では、通信制御装置2から送信されたNAT情報パケットを、NAT装置3を介して受信したかが監視される(S27)。NAT情報パケットを受信していない場合(S27:NO)、S27の処理に戻り、上述の処理が繰り返し実行される。NAT情報パケットを受信した場合(S27:YES)、NAT情報に含まれているNAT装置3、4のポート幅が参照される(S28)。ポート幅が「1」でない場合(S28:NO)、端末装置6は端末装置7とRTP/RTCPに基づいた通信を行うことができないので、そのまま端末装置処理(図5参照)に戻る。一方、ポート幅が「1」である場合(S28:YES)、S29の処理に進む。
【0045】
S29の処理では、NAT情報パケットに含まれている情報のうち、NAT装置3、4に記憶されたポート番号が取得される(S29)。自身と直接接続するNAT装置3に記憶されたポート番号が偶数であるかが判断される(S31)。ポート番号が偶数である場合(S31:YES)、NAT装置3の履歴情報に奇数のポート番号を記憶させるために、ポート調整パケットが第二ソケットを使用して通信制御装置2に対して送信される(S33)。ポート調整パケットは、NAT装置3の履歴情報に記憶されているポート番号が更新されて奇数のポート番号が記憶されるように、端末装置7から送信される。そしてS35の処理に進む。ポート調整パケットをNAT装置3が受信した場合、送信元のポート番号が異なるパケットであるので、記憶されているポート番号にポート幅「1」が加算されて更新され、ポート調整パケットに割り当てられる。そしてポート調整パケットは、NAT装置3において転送され、通信制御装置2に到達する。一方、取得されたポート番号が奇数である場合(S31:NO)、そのままS35に進む。
【0046】
次いで、S21において作成されたポート調整パケット通信用のソケット(第二ソケット)がクローズされる。新たに、RTPプロトコルに基づく端末装置7との通信用のソケットを、及び、RTCPプロトコルに基づく端末装置7との通信用のソケットが作成される。以下の説明では、RTPプロトコルに基づく通信用のソケットを「第三ソケット」という。RTCPプロトコルに基づく端末装置7との通信用のソケットを「第四ソケット」という。作成された第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S35)。其々に割り当てられるポート番号は、偶数から始まる連続した値とされる。
【0047】
なお本実施の形態では、第三ソケット及び第四ソケットに対して上述のようにポート番号を割り当てているが、本発明はこの方法に限定されず、ランダムなポート番号を割り当ててもよい。しかしながらNAT装置が、端末装置の送信元ポート番号をそのまま履歴情報として記憶する動作を行う場合には、上述のように、偶数/奇数の連続したポート番号を割り当てることによって、NAT装置に偶数/奇数の連続したポート番号を記憶させることが可能となる。
【0048】
端末装置7から送信される(S85、図9参照)終了通知パケットを受信したかが監視される(S37)。終了通知パケットを受信していない場合(S37:NO)、S37に戻り、終了通知パケットの受信が継続して監視される。終了通知パケットを受信した場合(S37:YES)、S39の処理(図7参照)に進む。
【0049】
図7に示すように、S39〜S43の処理では、通信相手方である端末装置7と直接接続するNAT装置4に記憶されているポート番号に基づいて、RTPパケット及びRTCPパケットを送信する場合の宛先ポート番号が特定される。RTPパケットの宛先ポート番号を偶数とし、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数とするために、以下の処理が実行される。
【0050】
NAT装置4に記憶されているポート番号が、偶数であるかが判断される(S39)。偶数である場合(S39:YES)、NAT装置4に記憶されているポート番号に2加算した値を、RTPパケットの宛先ポート番号とする(S41)。またRTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号にさらに1加算した値とする。そしてS45の処理に進む。一方、NAT装置4に記憶されているポート番号が奇数である場合(S39:NO)、NAT装置4に記憶されているポート番号に1加算した値を、RTPパケットの宛先ポート番号とする(S43)。またRTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号にさらに1加算した値とする。そしてS45の処理に進む。
【0051】
なお上述では、NAT装置4に記憶されているポート番号が偶数である場合に2加算し、奇数である場合に1加算する算出方法とした。しかしながら本発明はこの方法に限定されない。RTPパケット/RTCPパケットの宛先ポート番号が偶数/奇数の連続した値となればよいので、例えば、NAT装置4に記憶されているポート番号が偶数である場合には、「2n」(nは1以上の整数)加算した値をRTPパケットの宛先ポート番号とし、「2n+1」加算した値をRTCPパケットの宛先ポート番号としてもよい。同様に、奇数である場合には、「2n−1」加算した値をRTPパケットの宛先ポート番号とし、「2n」加算した値をRTCPパケットの宛先ポート番号としてもよい。
【0052】
S45の処理では、端末装置7から送信されるRTPパケット及びRTCPパケットを、NAT装置3を介して受信可能なように、NAT装置3にポート番号を記憶させる。S35(図6参照)において準備された第三ソケット及び第四ソケットが使用される。第三ソケットを使用して、端末装置7宛てにパンチパケット(一回目)が送信される。パンチパケット(一回目)の宛先ポート番号は、S39〜S45の処理によって特定されたRTPパケットの宛先ポート番号とされる。次いで、第四ソケットを使用して、端末装置7宛てにパンチパケット(二回目)が送信される。パンチパケット(二回目)の宛先ポート番号は、S39〜S45の処理によって特定されたRTCPパケットの宛先ポート番号とされる(S45)。
【0053】
二つのパケットが、NAT装置3を経由して端末装置7に対して送信される。NAT装置3の履歴情報にポート番号を記憶させるために送信されるこれらのパケットを、以下「パンチパケット」という。二つのパンチパケットは、異なるポート番号から送信されているので、NAT装置3は、記憶されているポート番号を更新し、双方のパンチパケットに割り当てる。割り当てられたポート番号は、履歴情報としてNAT装置3のフラッシュメモリ57に記憶される。なお端末装置7では、これらのポート番号がRTPパケット及びRTCPパケットの宛先ポート番号として設定される(後述)。
【0054】
パンチパケットが送信された後、端末装置7から送信されるパンチ応答パケットを受信したかが監視される(S47)。パンチ応答パケットを受信した場合(S47:YES)、RTPパケット及びRTCPパケットの通信が可能な状態となっていることになる。また後述するように、端末装置7側でも同様の処理が実行され、RTPパケット及びRTCPパケットの通信が可能な状態となっている。以後、RTP/RTCPに基づく通信が端末装置6と端末装置7との間で実行される(S49)。RTPパケット及びRTCPパケットの宛先ポート番号は、S41及びS43において特定されたポート番号に設定される。
【0055】
ユーザがキーボード851を介して何ら入力操作を行わない状態では(S53:NO)、継続してRTP/RTCPに基づく通信が実行される。一方、キーボード851を介して通信を終了させる指示が入力された場合(S53:YES)、RTP/RTCPに基づく通信を終了させる(S55)。そして発呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0056】
一方、パンチパケット送信後、所定時間が経過してもパンチ応答パケットを受信できない場合(S47:NO)、通信エラーが発生しているので、端末装置7との間で継続して通信を行うことができない。この場合、ユーザに通信エラーが発生したことを通知するために、ディスプレイ861にエラー通知を表示し、通信を終了させるために必要な処理が行われる(S51)。そして発呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0057】
被呼側端末処理について、図8及び図9を参照して説明する。なお、発呼側端末処理と同一の処理部分については、説明を簡略化する。被呼側端末処理では、はじめにソケットが2つ(第一ソケット、第二ソケット)作成される(S61)。通信制御装置2との通信用のソケットとして第一ソケットが使用される。ポート調整パケット通信用のソケットとして第二ソケットが使用される。次いで、作成されたソケットにポート番号が割り当てられる(S63)。
【0058】
第一ソケットを使用し、通信制御装置2に対して、接続要求パケットを受信したことを示す接続応答パケットが送信される(S65)。送信された接続応答パケットは、NAT装置4を経由して、通信制御装置2に到達する。NAT装置4では、接続応答パケットが転送された場合に、接続応答パケットの送信元ポート番号が変換される。変換後の送信元ポート番号は、転送可能なポート番号の履歴情報として、NAT装置4のフラッシュメモリ57に記憶される。
【0059】
通信制御装置2では、接続応答パケットが受信される(S109、図10参照)。通信制御装置2では、NAT情報パケットが端末装置7に対して送信される(S121、図10参照)。
【0060】
端末装置7では、通信制御装置2から送信されるNAT情報パケットを受信したかが監視される(S67)。受信していない場合(S67:NO)、S67に戻り、上述の処理が繰り返される。NAT情報パケットを受信した場合(S67:YES)、S15(図5参照)において接続要求パケットとともに受信したNAT情報と、今回受信したNAT情報とに含まれているNAT装置3、4のポート幅が参照される(S68)。ポート幅が「1」でない場合(S68:NO)、そのまま端末装置処理(図5参照)に戻る。ポート幅が「1」である場合(S68:YES)、S69の処理に進む。
【0061】
NAT装置3、4に記憶されたポート番号が取得される(S69)。自身と直接接続するNAT装置4に記憶されたポート番号が偶数であるかが判断され(S71)、偶数である場合には(S71:YES)、ポート調整パケットが第二ソケットを使用して通信制御装置2に対して送信される(S73)。そしてS75の処理に進む。これに対し、取得されたポート番号が奇数である場合(S71:NO)、そのままS75に進む。S75では、新たに第三ソケット及び第四ソケットが作成される。作成された第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S75)。そしてS77の処理(図9参照)に進む。
【0062】
図9に示すように、S77〜S81の処理では、通信相手方の端末装置6と直接接続するNAT装置3に記憶されたポート番号に基づいて、RTPパケット及びRTCPパケットを送信する場合の宛先ポート番号が特定される。NAT装置3に記憶されたポート番号が偶数であるかが判断される(S77)。偶数である場合(S77:YES)、該ポート番号に2加算した値を、RTPパケットの宛先ポート番号とする(S79)。また、RTPパケットの宛先ポート番号にさらに1加算した値を、RTCPパケットの宛先ポート番号とする。そしてS83の処理に進む。一方奇数である場合(S77:NO)、該ポート番号に1加算した値を、RTPパケットの宛先ポート番号とする(S81)。また、RTPパケットの宛先ポート番号にさらに1加算した値を、RTCPパケットの宛先ポート番号とする。そしてS83の処理に進む。
【0063】
なお本発明は上述の算出方法に限定されず、例えば、NAT装置3に記憶されているポート番号が偶数である場合には、「2n」(nは1以上の整数)加算し、奇数である場合に「2n−1」加算する算出方法としてもよい。
【0064】
S83の処理では、端末装置6から送信されるRTPパケット及びRTCPパケットを、NAT装置4を介して受信可能なように、NAT装置4にポート番号を記憶させる。通信時には、パケットが経由可能なルータの数に相当するTTL(Time To Live)の小さいパケット(TTL調整パケット)が使用される。TTLの値は、パケットがNAT装置4を通過し、且つNAT装置3に到達しないように調整される。TTL調整パケットはNAT装置3に到達する前にTTLが0となり、破棄される。TTL調整パケットはNAT装置3に到達しないので、NAT装置3の履歴情報を乱したり、NAT装置3のフィルタリング機能が有効となったりすることを防止できる。
【0065】
第三ソケットを使用して、端末装置6宛てにTTL調整パケット(一回目)が送信される。TTL調整パケット(一回目)の宛先ポート番号は、S77〜S81の処理によって特定されたRTPパケットの宛先ポート番号とされる。次いで、第四ソケットを使用して、端末装置6宛てにTTL調整パケット(二回目)が送信される。TTL調整パケット(二回目)の宛先ポート番号は、S77〜S81の処理によって特定したRTCPパケットの宛先ポート番号とされる(S83)。
【0066】
二つのTTL調整パケットが、NAT装置4を経由して端末装置6に対して送信される。NAT装置4では、二つのTTL調整パケットを転送する場合に双方に割り当てたポート番号が、履歴情報としてフラッシュメモリ57に記憶される。なお端末装置6では、これらのポート番号がRTPパケット及びRTCPパケットの宛先ポート番号として設定されている(S41,S43、図7参照)。
【0067】
TTL調整パケットが送信された後、RTP/RTCPに基づく通信が可能になったことを端末装置6に対して通知するために、終了通知パケットが端末装置6に対して送信される(S85)。終了通知パケットが送信された後、端末装置6から送信されるパンチパケットを受信したかが監視される(S87)。パンチパケットは、TTL調整パケットによってNAT装置4に記憶されたポート番号宛てに送信されるので、NAT装置4を経由して端末装置7に届く。パンチパケットを受信した場合(S87:YES)、端末装置6に対してパンチ応答パケットを送信する(S89)。
【0068】
パンチ応答パケットの送信後、端末装置7はRTPパケット及びRTCPパケットの受信が可能な状態となっていることになる。また既述のように、発呼側端末側でも同様の処理が実行され、RTPパケット及びRTCPパケットの受信が可能な状態となっている。RTP/RTCPに基づく通信が端末装置6と端末装置7との間で実行される(S93)。キーボード851を介して通信を終了させる指示が入力されたかが監視される(S95)。終了指示が入力された場合(S95:YES)、RTP/RTCPに基づく通信を終了させる(S97)。そして被呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0069】
一方、終了通知パケットが送信された後、所定時間が経過してもパンチパケットを受信できない場合には(S87:NO)、ユーザに通信エラーが発生したことを通知するために、ディスプレイ861にエラー通知を表示し、通信を終了させるために必要な処理が行われる(S91)。そして被呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0070】
以上のようにして、端末装置6と端末装置7とはRTP/RTCPに基づいた通信を行うことが可能となる。RTP/RTCPに基づいて通信を行うためには、RTPパケットの宛先ポート番号を偶数とし、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数としなければならない。そして、NAT装置3、4がこれらのパケットを配下の端末装置8に転送するためには、連続した「偶数」「奇数」の値を履歴情報として記憶している必要がある。これに対し、上述のS31(図6参照)、S33(図6参照)、S71(図8参照)、S73(図8参照)の処理によって、NAT装置3、4に記憶されるポート番号のうち最も新しい番号は奇数となる。従って、S45において送信されるパンチパケットや、S83において送信されるTTL調整パケットによって、NAT装置3、4に連続した「偶数」「奇数」のポート番号が履歴情報として記憶される。端末装置6,7は、RTPパケット及びRTCPパケットの宛先ポート番号を、NAT装置3、4に履歴情報として記憶されたポート番号とすることができる。これによって端末装置6,7は、RTP/RTCPに基づいた通信を行うことが可能となる。
【0071】
図10を参照し、通信制御装置2のCPU21において実行される通信制御処理について説明する。通信制御処理は、通信制御装置2の電源が投入された場合に、CPU21において起動され実行される。なお通信制御装置2は、通信制御処理が実行されるに際し、事前にNAT装置5のIPアドレスを認識しているものとする。またNAT装置5には、通信制御装置2と端末装置8とが通信を行うために必要なポート番号が履歴情報として既に記憶されているものとする。通信制御装置2は、NAT装置5に履歴情報として記憶されているポート番号を認識しているものとする。また通信制御装置2は、NAT装置5の種別(Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT、Symmetric NATのいずれか)やポート幅を認識しているものとする。このため、図10に示す通信制御処理では、端末装置8と通信を開始するために必要な処理は省略されている。
【0072】
図10に示すように、通信制御処理が起動されると、端末装置6から接続要求パケットを受信したかが判断される(S101)。接続要求パケットを受信している場合(S101:YES)、接続要求パケットの送信元IPアドレス、及び送信元ポート番号が取得される(S103)。取得された送信元IPアドレスは、NAT装置3のIPアドレスに相当する。送信元ポート番号は、NAT装置3に履歴情報として記憶されたポート番号に相当する。取得された上述の情報が、NAT装置3のNAT種別及びポート幅の情報とともに、受信した接続要求パケットに付加され、新たな接続要求パケットが作成される(S105)。作成された接続要求パケットは、端末装置7に対して送信される(S107)。そしてS101の処理に戻り、上述の処理が繰り返し実行される。
【0073】
一方、端末装置6から接続要求パケットを受信していない場合(S101:NO)、端末装置7から接続応答パケットを受信したかが判断される(S109)。接続応答パケットを受信している場合(S109:YES)、S101において受信した接続要求パケットの送信元IPアドレス、及び送信元ポート番号が取得される(S111)。取得された送信元IPアドレスは、NAT装置3のIPアドレスに相当する。送信元ポート番号は、NAT装置3に履歴情報として記憶されたポート番号に相当する。また、受信した接続応答パケットの送信元IPアドレス、及び送信元ポート番号が取得される(S113)。取得された送信元IPアドレスは、NAT装置4のIPアドレスに相当する。送信元ポート番号は、NAT装置4に履歴情報として記憶されたポート番号に相当する。
【0074】
S111及びS113において取得された情報と、NAT装置3,4のNAT種別及びポート幅とを含むNAT情報パケットが作成される(S115)。作成されたNAT情報パケットは、端末装置6(接続要求パケット送信側)に対して送信される(S117)。また、S113において取得された情報を含むNAT情報パケットが作成される(S119)。作成されたNAT情報パケットは、端末装置7(接続要求パケット受信側)に対して送信される(S121)。そしてS101の処理に戻り、上述の処理が繰り返し実行される。
【0075】
一方、端末装置7から接続応答パケットを受信していない場合(S109:NO)、端末装置7から終了通知パケットを受信したかが判断される(S123)。終了通知パケットを受信している場合(S123:YES)、終了通知パケットの宛先IPアドレス及びポート番号が取得される(S125)。取得された宛先IPアドレス及びポート番号に基づき、終了通知パケットが端末装置6に対して送信される(S127)。そしてS101に戻り、上述の処理が繰り返し実行される。
【0076】
一方、端末装置7から終了通知パケットを受信していない場合(S123:NO)、その他のパケットを端末装置6,7から受信しているかが判断される(S129)。その他のパケットを受信している場合(S129:YES)、受信したパケットを破棄する(S131)。そしてS101の処理に戻り、上述の処理が繰り返し実行される。一方、何れのパケットも受信していない場合には(S129:NO)、そのままS101の処理に戻り、上述の処理が繰り返し実行される。
【0077】
図11及び図12を参照し、通信制御装置2、NAT装置3,4、及び端末装置6、7を介して実行される通信のシーケンスについて、既述のフローチャートを参照しつつ説明する。
【0078】
端末装置6のキーボード851を介し、端末装置7との通信を開始させるための操作がなされた場合、端末装置6においてソケットが作成される(S21、図6参照)。通信制御装置2との通信用として使用される第一ソケットに「10000」、ポート調整パケット通信用として使用される第二ソケットに「10001」がポート番号として其々割り当てられる。
【0079】
第一ソケット(ポート番号:10000)を使用し、NAT装置3を介して端末装置7に対して接続要求パケットが送信される(101、S25(図6参照))。NAT装置3において、接続要求パケットが通信制御装置2に対して転送される(103)。NAT装置3において、送信元ポート番号が「10000」から「23456」に変更される。変換後の送信元ポート番号「23456」が、NAT装置3のフラッシュメモリ57に記憶される(104)。
【0080】
通信制御装置2では、端末装置6から接続要求パケットが受信される(105、S101(図10参照))。受信した接続要求パケットに基づいて、NAT装置3のIPアドレスとポート番号「23456」が取得される(S103(図10参照))。取得されたIPアドレス及びポート番号と、NAT装置3のNAT種別及びポート幅の情報は、接続要求パケットに付加され、端末装置7に対して送信される(107、S107(図10参照))。送信された接続要求パケットは、NAT装置4において転送され(109)、端末装置7において受信される(111、S15(図5参照))。
【0081】
端末装置7においてソケットが作成される(S61(図8参照))。第一ソケットに「2000」、第二ソケットに「2001」が其々割り当てられる。第一ソケット(ポート番号:2000)を使用し、通信制御装置2に対してNAT装置4を介して接続応答パケットが送信される(113、S65(図8参照))。NAT装置4において、接続応答パケットが通信制御装置2に対して転送される(115)。NAT装置4において、送信元ポート番号が「2000」から「54321」に変更される。変更後の送信元ポート番号が、NAT装置4のフラッシュメモリ57に記憶される(116)。
【0082】
通信制御装置2において、接続応答パケットが受信される(117、S109(図10参照))。NAT装置3、4のIPアドレス、ポート番号、NAT種別、及びポート幅の情報を含むNAT情報パケットが、ポート番号「23456」を宛先ポート番号とし、NAT装置3を介して端末装置6に対して送信され(119、S117(図10参照))、端末装置6において受信される(123、S27(図6参照))。また、NAT装置4のIPアドレス、ポート番号、NAT種別、及びポート番号を含むNAT情報が、ポート番号「54321」を宛先ポート番号とし、NAT装置4を介して端末装置7に対して送信され(121、S121(図10参照))、端末装置7において受信される(125、S67(図8参照))。
【0083】
端末装置6では、NAT情報に含まれているNAT装置3のポート番号の情報に基づいて、ポート調整パケットを送信するか否かが判断される(S31(図6参照))。104において、NAT装置3にはポート番号「23456」(偶数)が履歴情報として記憶されている。この場合、NAT装置3に履歴情報として奇数のポート番号を記憶させるために、ポート調整パケットが第二ソケット(ポート番号:10001)を使用してNAT装置3を介して通信制御装置2に対して送信される(127、S33(図6参照))。NAT装置3では、受信したポート調整パケットの送信元ポート番号が、103において受信した接続要求パケットの送信元ポート番号と異なるので、ポート調整パケットの送信元ポート番号が、「10001」から、「23456」に1加算した「23457」に変換される(129)。NAT装置3には、ポート番号「23457」が履歴情報として記憶される(130)。以上のようにして、NAT装置3に記憶されるポート番号のうち最も新しい番号が奇数となるように調整される。
【0084】
端末装置7でも同様に、NAT情報に含まれているNAT装置4のポート番号の情報に基づいて、ポート調整パケットを送信するか否かが判断される(S71(図8参照))。116において、NAT装置4にはポート番号「54321」(奇数)が履歴情報として記憶されている。この場合、ポート調整パケットは送信されない。
【0085】
端末装置6において、第二ソケットがクローズされる。次いで、新たに第三ソケット及び第四ソケットを作成し、作成した第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S35(図6参照))。割り当てられるポート番号は、偶数から始まる連続した値とされる。第三ソケットに対して「10002」が割り当てられる。第四ソケットに対して「10003」が割り当てられる。
【0086】
端末装置7において、第二ソケットがクローズされる。次いで、新たに第三ソケット及び第四ソケットを作成し、作成した第三ソケット及び第四ソケットに対してポート番号が割り当てられる(S75(図8参照))。割り当てられるポート番号は、偶数から始まる連続した値とされる。第三ソケットに対して「2002」が割り当てられる。第四ソケットに対して「2003」が割り当てられる。
【0087】
端末装置7において、RTPパケット及びRTCPパケットの宛先ポート番号が特定される(S77〜S81(図9参照))。104において、NAT装置3にポート番号「23456」(偶数)が記憶されているので、この値に2加算(S79(図9参照))した「23458」を、RTPパケットの宛先ポート番号とし、さらに1加算した「23459」を、RTCPパケットの宛先ポート番号とする。
【0088】
第三ソケット(ポート番号:2002)を使用してTTL調整パケット(一回目)が送信される(131、S83(図9参照))。TTL調整パケット(一回目)の宛先ポート番号は、特定されたRTPパケットの宛先ポート番号(23458)とされる。次いで、第四ソケット(ポート番号:2003)を使用してTTL調整パケット(二回目)が送信される(133、S83(図9参照))。TTL調整パケット(二回目)の宛先ポート番号は、特定されたRTCPパケットの宛先ポート番号(23459)とされる。
【0089】
2つのTTL調整パケットは、NAT装置4において転送される(135、137)。NAT装置4では、TTL調整パケット(一回目)の送信元ポート番号が、履歴情報として記憶されているポート番号のうち最も新しいポート番号「54321」(115参照)に1加算した「54322」に変換される(135)。変換後のポート番号「54322」が履歴情報として記憶される(136)。また、TTL調整パケット(二回目)の送信元ポート番号が、ポート番号「54322」に1加算した「54323」に変換される(137)。また、変換後のポート番号「54323」が履歴情報として記憶される(138)。なお、いずれのパケットも、発呼側の端末である端末装置6に到達する前に、TTLが0となって破棄される(139、141)。
【0090】
TTL調整パケットが端末装置7から送信する段階では、NAT装置3の履歴情報に「23458」「23459」は記憶されていない。このため、TTL調整パケットがNAT装置3に届いても、NAT装置3はTTL調整パケットを端末装置6に転送しない。ここで本実施の形態では、TTL調整パケットのTTLを小さな値としている。これによって、TTL調整パケットがNAT装置3に届く前に破棄されるようにしている。
【0091】
端末装置7からNAT装置3、4及び通信制御装置2を介して端末装置6に対して、終了通知パケットが送信される(143、S85(図9参照))。通信制御装置2では、105において端末装置6から接続要求パケットを受信した場合の送信元ポート番号「23456」が宛先ポート番号となるように、終了通知パケットの宛先ポート番号が変換される。通信制御装置2を経由した終了通知パケットは、端末装置6において受信される(145、S37(図6参照))。
【0092】
端末装置6において、RTPパケット及びRTCPパケットの宛先ポート番号が特定される(S39〜S43(図7参照))。NAT装置4にポート番号「54321」(奇数)が記憶されている(116)ので、この値に1加算(S43(図7参照))した「54322」を、RTPパケットの宛先ポート番号とし、さらに1加算した「54323」を、RTCPパケットの宛先ポート番号とする。なおこれらのポート番号は、端末装置7から送信されたTTL調整パケットによってNAT装置4に記憶された(136、138)ポート番号「54322」「54323」と一致する。
【0093】
図12に示すように、第三ソケットを使用してパンチパケット(一回目)が送信される(151、S45(図7参照))。パンチパケット(一回目)の宛先ポート番号は、特定されたRTPパケットの宛先ポート番号(54322)とされる。次いで、第四ソケットを使用して、パンチパケット(二回目)が送信される(153、S45(図7参照))。パンチパケット(二回目)の宛先ポート番号は、特定されたRTCPパケットの宛先ポート番号(54323)とされる。
【0094】
2つのパンチパケットがNAT装置3を経由する(155、157)。NAT装置3では、パンチパケット(一回目)の送信元ポート番号が、履歴情報として記憶されているポート番号のうち最も新しいポート番号「23457」(130(図11参照))に1加算した「23458」に変換される(155)。また、変換後のポート番号「23458」が履歴情報として記憶される(154)。また、パンチパケット(二回目)の送信元ポート番号が、パンチパケット(1回目)の送信元ポート番号とされた「23458」に1加算した「23459」に変換される(157)。また、変換後のポート番号「23459」が履歴情報として記憶される(156)。なおこれらのポート番号は、端末装置7において特定された(S77〜S81(図9参照))RTPパケットの宛先ポート番号「23458」、及びRTCPパケットの宛先ポート番号「23459」と一致する。
【0095】
いずれのパンチパケットも、NAT装置4に履歴情報として記憶されているポート番号「54322」「54323」宛てに送信しているので、NAT装置4はこれらのパンチパケットを端末装置7に対して転送する(158、159)。
【0096】
端末装置7において、パンチパケットが受信される(160、161、S87(図9参照))。端末装置7は、パンチパケットの其々に対してパンチ応答パケットを送信する(163、165、S89(図9参照))。パンチ応答パケットの宛先ポート番号は、S77〜S81(図9参照)において特定されたRTPパケットの宛先ポート番号(23458)及びRTCPパケットの宛先ポート番号(23459)とされる。いずれの宛先ポート番号も、NAT装置3がパンチパケットを転送した場合に履歴情報として記憶されたポート番号「23458」「23459」と一致している。従って、NAT装置3はこれらのパンチ応答パケットを端末装置6に対して転送する(166、167)。端末装置6において、パンチ応答パケットが受信される(168、169、S47(図7参照))。
【0097】
以後、端末装置6は、特定したRTPパケットの宛先ポート番号「54322」及びRTCPパケットの宛先ポート番号「54323」に基づいてRTPパケット及びRTCPパケットを送信する(171、173)。また図示されていないが、端末装置7は、特定したRTPパケットの宛先ポート番号「23458」及びRTCPパケットの宛先ポート番号「23459」に基づいてRTPパケット及びRTCPパケットを送信する。なおこれらの宛先ポート番号は、それぞれNAT装置3、4に履歴情報として記憶されている値と一致するので、NAT装置3,4は、受信したRTPパケット及びRTCPパケットを端末装置6,7に転送する。また、これらの宛先ポート番号は、RTPパケットの宛先ポート番号が偶数であり、RTCPパケットの宛先ポート番号が、RTPパケットの宛先ポート番号に1加算した奇数であるという条件を満たす。従って、RTP/RTCPに基づいた通信が実行可能となる。
【0098】
以上説明したように、本実施の形態では、NAT装置5に偶数と奇数の連続したポート番号を履歴情報として記憶させることができる。従って、それぞれのポート番号をRTPパケット及びRTCPパケットの宛先ポート番号とすることによって、端末装置8同士がRTP/RTCPに基づいた通信を行うことが可能となる。
【0099】
端末装置6では、ソケットに割り当てるポート番号を調整することによって、接続要求パケット、ポート調整パケット、及びパンチパケットの送信元ポート番号が其々異なるようにしている。端末装置7でも同様に、接続応答パケット、ポート調整パケット、及びTTL調整パケットの送信元ポート番号が其々異なるようにしている。これによって、NAT装置3,4の種別がCone NATである場合にも、パケットに割り当てられるポート番号が1ずつ更新されるので、RTP/RTCPに基づいた通信を行うことが可能となる。
【0100】
また、NAT装置のポート幅が1である場合に、第一パケットが送信される。これによって、NAT装置のポート幅が1であることを確認し、第一パケットを送信することができる。
【0101】
なお、図6のS25、図8のS65の処理が本発明の「第一送信ステップ」に相当する。図10のS117、S121の処理が本発明の「第二送信ステップ」に相当する。図6のS27、及び図8のS67の処理が本発明の「第一受信ステップ」に相当する。図6のS31及び図8のS71の処理が本発明の「第二判断ステップ」に相当する。図7のS39及び図9のS77の処理が本発明の「第一判断ステップ」に相当する。図7のS49及び図9のS93の処理が本発明の「第三送信ステップ」に相当する。図6のS33及び図8のS73の処理が本発明の「第四送信ステップ」に相当する。図6のS28及び図8のS68の処理が本発明の「第三判断ステップ」に相当する。
【0102】
図6のS25及び図8のS65の処理を行うCPU81が本発明の「第一送信手段」に相当する。図6のS27及び図8のS67の処理を行うCPU81が本発明の「第一受信手段」に相当する。図6のS31及び図8のS71の処理を行うCPU81が本発明の「第一判断手段」に相当する。図7のS39及び図9のS77の処理を行うCPU81が本発明の「第一判断手段」に相当する。図7のS49及び図9のS93の処理を行うCPU81が本発明の「第三送信手段」に相当する。図10のS101の処理を行うCPU21が本発明の「第二受信手段」に相当し、S117及びS121の処理を行うCPU21が本発明の「第二送信手段」に相当する。
【0103】
なお、本発明は上記実施の形態に限定されるものではなく、種々の変更が可能である。上述の実施の形態では、NAT情報パケットに含まれているポート幅に基づいて、端末装置8はポート調整パケットやパンチパケット、TTL調製用パケットを送信していた。しかしながら本発明はこの構成に限定されない。例えば端末装置8は、接続要求パケットの送信前にポート幅の情報を通信制御装置2から受信し、ポート幅が1でない場合には、接続要求パケットを送信しない構成としてもよい。また例えば端末装置8は、接続要求パケットを受信した場合にポート幅の情報を通信制御装置2から受信し、ポート幅が1でない場合には、接続応答パケットを送信しない構成としてもよい。
【0104】
上述の実施の形態では、RTP/RTCPに基づいた通信を行う端末装置が2台(端末装置6,7)である場合を想定していたが、本発明はこの構成に限定されない。RTP/RTCPに基づいた通信を行う端末装置は3台以上であってもよい。以下、本発明の変形例について説明する。
【0105】
図13及び図14を参照し、本発明の変形例における発呼側端末処理について説明する。変形例では、n台(nは1以上の整数)の端末装置8によって互いにRTP/RTCPに基づいた通信が行われる。なお、被呼側端末、及び通信制御装置2において実行される他の処理(端末装置処理、被呼側端末処理、通信制御処理)については、上述の実施の形態と同様であるので、以下では説明を省略している。また、発呼側端末処理のうち、上述の実施の形態と同様の部分については、説明を省略し又は簡略している。
【0106】
図13に示すように、変形例における発呼側端末処理では、はじめに、ポート番号を用いた通信を行うためのソケットが作成される(S171)。ソケットは、合計「n+1」作成される。通信制御装置2と通信を行うためのソケットが一つ(「第Aソケット」という。)と、ポート調整パケット通信を行うためのソケットが「n」(「第Bソケット」「第Cソケット」・・・「第n+1ソケット」という。)である。次いで、作成されたソケットに対してポート番号が割り当てられる(S23)。其々に割り当てられるポート番号は、偶数から始まる連続した値とされる。
【0107】
第Aソケットを使用し、n台の被呼側端末宛ての接続要求パケットが、通信制御装置2に対して送信される(S25)。NAT装置3では、接続要求パケットが転送された場合に、接続要求パケットの送信元ポート番号が変換される。変換後の送信元ポート番号がポート番号の履歴情報として記憶される。
【0108】
通信制御装置2では、受信した接続要求パケットが、n台の被呼側端末に転送される。通信制御装置2では、被呼側端末の其々から送信される接続応答パケット(S65、図8参照)が受信される(S109、図10参照)。通信制御装置2では、被呼側端末から受信した接続要求パケットに基づいて作成されたNAT情報パケットが、発呼側端末に対して送信される(S117、図10参照)。NAT情報パケットには、n台の被呼側端末と直接接続する其々のNAT装置5のIPアドレス、ポート番号、NAT種別、及びポート幅が含まれている。
【0109】
発呼側端末では、通信制御装置2から送信されたNAT情報パケットを、NAT装置3を介して受信したかが監視される(S27)。NAT情報パケットを受信した場合(S27:YES)、NAT情報に含まれているNAT装置5のポート幅が参照される(S173)。ポート幅が「1」でないNAT装置5が含まれている場合(S173:NO)、発呼側端末は被呼側端末とRTP/RTCPに基づいた通信を行うことができないので、該当するNAT装置5を記憶しておくために、フラグ情報(通信不可フラグ)を対応付けてRAM83に記憶する(S175)。そしてS29の処理に進む。一方、すべてのNAT装置5のポート幅が「1」である場合(S173:YES)、S29の処理に進む。
【0110】
S29の処理では、通信不可フラグが対応付けられていないNAT装置5のポート番号が、受信したNAT情報から取得される(S29)。自身と直接接続するNAT装置5に記憶されたポート番号が偶数であるかが判断される(S31)。偶数である場合(S31:YES)、ポート調整パケットが第Bソケットを使用して通信制御装置2に対して送信される(S33)。そしてS35の処理に進む。これに対し、取得されたポート番号が奇数である場合(S31:NO)、そのままS35に進む。
【0111】
次いで、S171において作成されたポート調整パケット通信用のソケットがクローズされる。新たにソケットが作成される。ソケットは、合計「2n」作成される。RTP/RTCPの其々に基づく通信に使用されるソケット(「第aソケット」「第bソケット」〜「第2nソケット」という。)である。作成されたソケットに対してポート番号が割り当てられる(S35)。其々に割り当てられるポート番号は、偶数から始まる連続した値とされる。
【0112】
端末装置7から送信される終了通知パケットを受信したかが監視される(S37)。終了通知パケットを受信した場合(S37:YES)、S39の処理(図14参照)に進む。
【0113】
図14に示すように、S39〜S43の処理では、通信相手方の複数の被呼側端末と直接接続する其々のNAT装置5に記憶されているポート番号に基づいて、RTPパケット及びRTCPパケットを送信する場合の宛先ポート番号が特定される。RTPパケットの宛先ポート番号が偶数とされ、RTCPパケットの宛先ポート番号を、RTPパケットの宛先ポート番号に1加算した奇数とされる。RTPパケット及びRTCPパケットの宛先ポート番号は、複数のNAT装置5毎に其々特定される。そしてS45の処理に進む。
【0114】
S45の処理では、n台の被呼側端末から送信されるRTPパケット及びRTCPパケットを、自身と直接接続するNAT装置5を介して受信可能なように、NAT装置5にポート番号を記憶させる。S35(図13参照)において準備された第aソケット〜第2nソケットが使用される。第aソケット及び第bソケットを使用して、一の被呼側端末宛てにパンチパケット(一回目及び二回目)が送信される。パンチパケットの宛先ポート番号は、特定されたRTPパケットの宛先ポート番号及びRTCPパケットの宛先ポート番号とされる(S45)。
【0115】
二つのパンチパケットが、NAT装置5を経由して被呼側端末に対して送信される。NAT装置5では、二つのパンチパケットを転送する場合に双方に割り当てたポート番号が、履歴情報としてフラッシュメモリ57に記憶される。
【0116】
パンチパケットが送信された後、被呼側端末から送信されるパンチ応答パケットを受信したかが監視される(S47)。パンチ応答パケットを受信した場合(S47:YES)、
パンチパケットを送信していない他の被呼側端末が存在するかが判断される(S177)。存在する場合(S177:YES)、第cソケット及び第dソケットが選択され(S179)、S45に戻る。そして未だパンチパケットを送信していない被呼側端末宛てに、パンチパケット(一回目及び二回目)が送信される。以上のように、使用されるソケットを随時更新しながら、被呼側端末の全てに対してパンチパケット(一回目及び二回目)を送信する処理が繰り返し実行される。全ての被呼側端末に対してパンチパケットを送信した場合(S177:NO)、S49の処理に進む。
【0117】
一方、パンチパケット送信後、所定時間が経過してもパンチ応答パケットを受信できない場合(S47:NO)、通信エラーが発生しているので、被呼側端末との間で継続して通信を行うことができない。この場合、ユーザに通信エラーが発生したことを通知するために、ディスプレイ861にエラー通知を表示し、通信を終了させるために必要な処理が行われる(S51)。そして発呼側端末処理を終了し、端末装置処理(図5参照)に戻る。
【0118】
S49の処理では、RTP/RTCPに基づき、複数の被呼側端末と通信が可能な状態であるので、以後、RTP/RTCPに基づく通信が発呼側端末と被呼側端末との間で実行される(S49)。
【0119】
以上説明した処理を実行することによって、発呼側端末は、n台の被呼側端末とRTP/RTCPに基づいた通信を行うことが可能となる。発呼側端末に直接接続するNAT装置5には、被呼側端末の其々と通信を行うためのポート番号(RTPパケット通信用及びRTCPパケット通信用)が履歴情報として記憶される。複数の被呼側端末は、其々、NAT装置5に記憶されたポート番号宛てにRTPパケット及びRTCPパケットを送信する。RTPパケット通信用のポート番号は偶数となり、RTCPパケット通信用のポート番号は、RTPパケット通信用のポート番号に1加算した奇数となっているので、被呼側端末から送信されたRTPパケット及びRTCPパケットは、NAT装置5を通過して発呼側端末に到達する。
【符号の説明】
【0120】
1 通信システム
2 通信制御装置
3,4,5 NAT装置
6,7,8 端末装置
21 CPU
81 CPU
【特許請求の範囲】
【請求項1】
NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信方法であって、
通信を行う少なくとも二つの前記端末装置の其々が、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信ステップと、
前記第一送信ステップにおいて送信された前記第一パケットに基づいて、前記第一パケットを転送した前記NAT装置の其々に前記履歴情報として記憶された前記ポート番号を少なくとも含む第二パケットを、前記通信制御装置が前記少なくとも二つの端末装置の其々に対して送信する第二送信ステップと、
前記第二送信ステップにおいて送信された前記第二パケットを前記少なくとも二つの端末装置の其々が受信する第一受信ステップと、
前記第一受信ステップにおいて前記少なくとも二つの端末装置の其々が受信した前記第二パケットに含まれる前記ポート番号のうち、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号が奇数であるか偶数であるかを判断する第一判断ステップと、
前記第一判断ステップにおいて前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断ステップにおいて前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信ステップと
を備えたことを特徴とする通信方法。
【請求項2】
前記第一受信ステップにおいて前記第二パケットを受信した場合に、前記第二パケットに含まれる前記ポート番号のうち、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号が奇数であるか偶数であるかを判断する第二判断ステップと、
前記第二判断ステップにおいて前記第二ポート番号が偶数であると判断された場合に、前記NAT装置に記憶された前記第二ポート番号を更新するための第三パケットを、前記端末装置が前記NAT装置を介して送信する第四送信ステップを備えたことを特徴とする請求項1に記載の通信方法。
【請求項3】
前記NAT装置が、Cone NAT機能を備えたNAT装置である場合に、
前記第四送信ステップは、
前記端末装置が前記第一パケットを送信する際に使用した前記端末装置のポート番号と異なるポート番号を使用して、前記外部ネットワークに接続される機器に前記第三パケットを送信することを特徴とする請求項2に記載の通信方法。
【請求項4】
三つ以上の前記端末装置間で通信を行う場合において、
前記第一送信ステップでは、
前記三つ以上の端末装置の其々が前記通信制御装置に対して前記第一パケットを送信し、
前記第二送信ステップでは、
前記通信制御装置が前記三つ以上の端末装置の其々に対して前記第二パケットを送信し、
前記第一受信ステップでは、
前記三つ以上の端末装置の其々が前記第二パケットを受信し、
前記第一判断ステップは、
複数の前記第一ポート番号の其々が奇数であるか偶数であるかを判断し、
前記第三送信ステップは、
其々の前記第一ポート番号から、前記RTPパケット及び前記RTCPパケットの宛先の前記ポート番号を算出し、算出した其々の前記ポート番号宛てに前記RTPパケット及び前記RTCPパケットを送信することを特徴とする請求項1から3のうちいずれかに記載の通信方法。
【請求項5】
前記NAT装置において、前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に前記ポート番号が1ずつ加算され前記履歴情報として記憶されるか否かを判断する第三判断ステップを備え、
前記第一送信ステップ及び前記第三送信ステップのうち少なくともいずれかは、
前記第三判断ステップにおいて前記ポート番号が1ずつ加算されると判断された場合に、前記第一パケット、前記RTPパケット、及び前記RTCPパケットのうち少なくともいずれかを送信することを特徴とする請求項1から4のいずれかに記載の通信方法。
【請求項6】
NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムであって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信システムであって、
前記端末装置は、
前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、
自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、
前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、
前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段と
を備え、
前記通信制御装置は、
少なくとも二つの前記端末装置の其々から送信された前記第一パケットを受信する第二受信手段と、
前記第二受信手段において受信された前記第一パケットに基づいて、前記第二パケットを前記少なくとも二つの端末装置の其々に対して送信する第二送信手段と
を備えたことを特徴とする通信システム。
【請求項7】
NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置の配下の内部ネットワークに接続される端末装置であって、前記外部ネットワークに接続する通信制御装置と通信を行うことによって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行う端末装置であって、
前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、
自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、
前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、
前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段と
を備えたことを特徴とする端末装置。
【請求項1】
NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信方法であって、
通信を行う少なくとも二つの前記端末装置の其々が、前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信ステップと、
前記第一送信ステップにおいて送信された前記第一パケットに基づいて、前記第一パケットを転送した前記NAT装置の其々に前記履歴情報として記憶された前記ポート番号を少なくとも含む第二パケットを、前記通信制御装置が前記少なくとも二つの端末装置の其々に対して送信する第二送信ステップと、
前記第二送信ステップにおいて送信された前記第二パケットを前記少なくとも二つの端末装置の其々が受信する第一受信ステップと、
前記第一受信ステップにおいて前記少なくとも二つの端末装置の其々が受信した前記第二パケットに含まれる前記ポート番号のうち、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号が奇数であるか偶数であるかを判断する第一判断ステップと、
前記第一判断ステップにおいて前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断ステップにおいて前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信ステップと
を備えたことを特徴とする通信方法。
【請求項2】
前記第一受信ステップにおいて前記第二パケットを受信した場合に、前記第二パケットに含まれる前記ポート番号のうち、自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号が奇数であるか偶数であるかを判断する第二判断ステップと、
前記第二判断ステップにおいて前記第二ポート番号が偶数であると判断された場合に、前記NAT装置に記憶された前記第二ポート番号を更新するための第三パケットを、前記端末装置が前記NAT装置を介して送信する第四送信ステップを備えたことを特徴とする請求項1に記載の通信方法。
【請求項3】
前記NAT装置が、Cone NAT機能を備えたNAT装置である場合に、
前記第四送信ステップは、
前記端末装置が前記第一パケットを送信する際に使用した前記端末装置のポート番号と異なるポート番号を使用して、前記外部ネットワークに接続される機器に前記第三パケットを送信することを特徴とする請求項2に記載の通信方法。
【請求項4】
三つ以上の前記端末装置間で通信を行う場合において、
前記第一送信ステップでは、
前記三つ以上の端末装置の其々が前記通信制御装置に対して前記第一パケットを送信し、
前記第二送信ステップでは、
前記通信制御装置が前記三つ以上の端末装置の其々に対して前記第二パケットを送信し、
前記第一受信ステップでは、
前記三つ以上の端末装置の其々が前記第二パケットを受信し、
前記第一判断ステップは、
複数の前記第一ポート番号の其々が奇数であるか偶数であるかを判断し、
前記第三送信ステップは、
其々の前記第一ポート番号から、前記RTPパケット及び前記RTCPパケットの宛先の前記ポート番号を算出し、算出した其々の前記ポート番号宛てに前記RTPパケット及び前記RTCPパケットを送信することを特徴とする請求項1から3のうちいずれかに記載の通信方法。
【請求項5】
前記NAT装置において、前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に前記ポート番号が1ずつ加算され前記履歴情報として記憶されるか否かを判断する第三判断ステップを備え、
前記第一送信ステップ及び前記第三送信ステップのうち少なくともいずれかは、
前記第三判断ステップにおいて前記ポート番号が1ずつ加算されると判断された場合に、前記第一パケット、前記RTPパケット、及び前記RTCPパケットのうち少なくともいずれかを送信することを特徴とする請求項1から4のいずれかに記載の通信方法。
【請求項6】
NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置と、前記NAT装置の配下の前記内部ネットワークに接続される端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムであって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行うための通信システムであって、
前記端末装置は、
前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、
自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、
前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、
前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段と
を備え、
前記通信制御装置は、
少なくとも二つの前記端末装置の其々から送信された前記第一パケットを受信する第二受信手段と、
前記第二受信手段において受信された前記第一パケットに基づいて、前記第二パケットを前記少なくとも二つの端末装置の其々に対して送信する第二送信手段と
を備えたことを特徴とする通信システム。
【請求項7】
NAT機能を備えたNAT装置であって、配下の内部ネットワーク側から外部ネットワーク側に向かう方向のパケットを受信した場合に、変換後のポート番号に1ずつ加算し、算出された前記ポート番号を、転送を許可するポート番号の履歴情報として記憶するNAT装置の配下の内部ネットワークに接続される端末装置であって、前記外部ネットワークに接続する通信制御装置と通信を行うことによって、異なる前記NAT装置の配下の前記内部ネットワークに接続された前記端末装置間で、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)に基づいた通信を行う端末装置であって、
前記NAT装置を介して前記通信制御装置に第一パケットを送信する第一送信手段と、
自身が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第二ポート番号と、通信相手の前記端末装置が送信した前記第一パケットを前記NAT装置が転送した場合に前記NAT装置に記憶された前記ポート番号である第一ポート番号とを少なくとも含む前記第二パケットを、前記通信制御装置から受信する第一受信手段と、
前記第一受信手段において受信された前記第二パケットに含まれる前記第一ポート番号が奇数であるか偶数であるかを判断する第一判断手段と、
前記第一判断手段において前記第一ポート番号が奇数であると判断された場合に、RTPに基づいたパケットであるRTPパケットを、前記第一ポート番号に2n−1(nは1以上の整数)加算したポート番号宛てに送信し、次いで、RTCPに基づいたパケットであるRTCPパケットを、前記第一ポート番号に2n加算したポート番号宛てに送信し、前記第一判断手段において前記第一ポート番号が偶数であると判断された場合には、前記第一ポート番号に2n加算したポート番号宛てに前記RTPパケットを送信し、次いで、前記第一ポート番号に2n+1加算したポート番号宛てに前記RTCPパケットを送信する第三送信手段と
を備えたことを特徴とする端末装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2011−71745(P2011−71745A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願番号】特願2009−221104(P2009−221104)
【出願日】平成21年9月25日(2009.9.25)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願日】平成21年9月25日(2009.9.25)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
[ Back to top ]