通信システム
【課題】サーバに通信負荷をかけずに端末装置間でP2P通信を開始させることが可能な通信システムを提供する。
【解決手段】通信制御装置では、複数のNAT装置のNAT種別を特定する処理が実行される(S11)。特定されたNAT種別に基づいて、NAT装置の配下にある端末装置の中から主端末装置を選択する(S17)。主端末装置は、NAT種別がFull Cone NATであるか、又はAddress-Restricted Cone NATであるNAT装置と直接接続する端末装置の中かから選択される。選択された主端末装置に対し、主端末装置を除く従端末装置間で実行される通信の制御を依頼するために、依頼通知パケットが送信される(S21)。また従端末装置に対し、主端末装置が選択されたことを通知する変更通知パケットが送信される(S25)。従端末装置では、主端末装置による通信制御に従い通信を行うことで、他の従端末装置間でP2P通信を行うことが可能となる。
【解決手段】通信制御装置では、複数のNAT装置のNAT種別を特定する処理が実行される(S11)。特定されたNAT種別に基づいて、NAT装置の配下にある端末装置の中から主端末装置を選択する(S17)。主端末装置は、NAT種別がFull Cone NATであるか、又はAddress-Restricted Cone NATであるNAT装置と直接接続する端末装置の中かから選択される。選択された主端末装置に対し、主端末装置を除く従端末装置間で実行される通信の制御を依頼するために、依頼通知パケットが送信される(S21)。また従端末装置に対し、主端末装置が選択されたことを通知する変更通知パケットが送信される(S25)。従端末装置では、主端末装置による通信制御に従い通信を行うことで、他の従端末装置間でP2P通信を行うことが可能となる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は通信システムに関する。より詳細には、NAT装置の配下にある端末装置間で通信を行う通信システムに関する。
【背景技術】
【0002】
NAT(Network Address Translation)機能を備えた装置(以下「NAT装置」という。)では、LAN側からインターネット側に向かう方向の通信が行われた場合に、所定のポート番号が記憶される。セキュリティ機能が高いNAT装置は、記憶されたポート番号宛てのパケットをインターネット側から受信した場合にのみ、受信したパケットをLAN側に転送するタイプのものがある。従って、それらのNAT装置の配下にある端末装置とのセッションを確立させるためには、NAT装置に記憶されているポート番号を検出し、このポート番号宛てにパケットが送信される必要がある。
【0003】
ポート番号を検出し、異なるNAT装置の配下にある端末装置同士でP2P(Peer to Peer)通信を開始させる為の技術として、例えばUDP Hole Punchingや、UDP Multi Hole Punchingが知られている。また例えば特許文献1に記載の通信システムでは、端末装置からバブルパケットが複数送信され、NAT装置にポート番号が複数記憶される。別のNAT装置の配下にある端末装置は、NAT装置に記憶されたポート番号を特定するために、予想されるポート番号を送信先に設定してパケットを送信する。通信に成功した場合、パケットの送信先として設定されているポート番号が、NAT装置に記憶されているポート番号として特定される。以後、このポート番号を送信先としてパケットが送信される。このようにして、異なるNAT装置の配下にある端末間でP2P通信が開始される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−157941号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら特許文献1に記載の通信システムでは、バブルパケットの送信に際し、基準ポート検出用パケットやポート幅検出用パケットをサーバに対して送信しなければならない。従って、端末装置の数が多くなると、サーバが受信するパケットの数が多くなって通信処理の負荷が増大するという問題点がある。
【0006】
本発明の目的は、サーバの通信処理負荷の増大を抑制しつつ端末装置間でP2P通信を開始させることが可能な通信システムを提供することにある。
【課題を解決するための手段】
【0007】
本発明の第一態様に係る通信システムは、NAT(Network Address Translation)機能を備えたNAT装置の配下の前記内部ネットワークに接続する端末装置と、外部ネットワークを介して前記NAT装置に接続する通信制御装置とを備え、複数の前記NAT装置と、前記NAT装置の配下の端末装置とで構成されるグループである通信グループ内で、異なる前記NAT装置の配下の前記端末装置間で相互にP2P(Peer to Peer)通信が行われる通信システムであって、前記通信制御装置は、前記NAT装置におけるポートマッピングやパケットフィルタリング方法毎に前記NAT装置を種別したNAT種別を、前記NAT装置の配下にある前記端末装置と通信を行うことによって特定する種別特定手段と、前記種別特定手段によって特定された前記NAT種別が所定のNAT種別であるかを判断する種別判断手段と、前記種別判断手段において前記NAT種別が所定のNAT種別であると判断された前記NAT装置の配下の端末装置のうち一の端末装置を、主端末装置として選択する主端末選択手段と、前記主端末選択手段において選択された前記主端末装置に対して、前記通信グループを構成する前記端末装置のうち前記主端末装置以外の端末装置である従端末装置のアドレス情報を少なくとも含む第一通知信号を送信する第一送信手段と、前記従端末装置に対して、前記主端末装置のアドレス情報を少なくとも含む第二通知信号を送信する第二送信手段とを備え、前記端末装置は、前記通信制御装置から送信された前記第一通知信号又は前記第二通知信号を受信する第一受信手段と、前記第一通知信号及び前記第二通知信号に含まれるアドレス情報に基づき、前記第一受信手段において前記第一通知信号を受信した前記主端末装置が、前記第二通知信号を受信した前記従端末装置間の通信制御を行う通信制御手段であって、前記従端末装置同士の通信を行うために前記NAT装置にポート番号を記憶させる通信を前記従端末装置間で実行させる通信制御手段と、前記通信制御手段によって前記従端末装置間で通信が行われることで前記NAT装置に記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行う通信手段とを備えている。
【0008】
第一態様に係る通信システムでは、主端末装置が従端末装置間の通信制御を実行することによって、従端末装置間でP2P通信が可能となる。通信制御装置が従端末装置間の通信制御を行わずに済むので、通信制御装置の通信処理負荷の増大を抑制できる。また、ネットワークのトラフィック集中を抑制できる。
【0009】
また、第一態様において、前記NAT装置は、配下の前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に、基準ポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、パケットの転送を許可する履歴情報として記憶する場合において、前記通信制御手段は、前記従端末装置と直接接続するNAT装置である従NAT装置の前記基準ポート番号及び前記ポート幅を前記主端末装置が取得する取得手段と、前記取得手段において取得された前記基準ポート番号及び前記ポート幅と、前記通信グループ内の複数の前記従NAT装置の其々に対して一意的に割り当てられる順番であって、前記従端末装置から前記従NAT装置を介して他の前記従端末装置に対してパケットが送信される場合の順番である送信順とに基づいて、前記パケットの送信先ポート番号を前記主端末装置が決定する送信先決定手段と、前記送信先決定手段において決定された前記送信先ポート番号と前記送信順とを、前記主端末装置が前記従端末装置に対して送信する第三送信手段と、前記第三送信手段において送信された前記送信先ポート番号と前記送信順とを、前記従端末装置が受信する第二受信手段と、前記第二受信手段において受信した前記送信先ポート番号と前記送信順とに基づいて、前記従端末装置が他の前記従端末装置に対して前記パケットを送信する第四送信手段とを備え、前記通信手段は、前記第四送信手段において送信された前記パケットによって前記従NAT装置の前記履歴情報として記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行ってもよい。このように、主端末装置からの通信制御によって、従端末装置は、P2P通信のために必要となるポート番号のみ従NAT装置に記憶させることができる。従NAT装置に記憶される不要なポート番号宛てに不特定多数のユーザがアクセスすることを防止できるので、従NAT装置のセキュリティ機能が弱まってしまうことを防止できる。また従端末装置は、主端末装置から通知された送信先ポート番号に対してのみパンチパケットを送信すればよいので、パンチパケット通信に要する時間を短縮できる。このため、従端末装置間でP2P通信が可能となる迄の時間を短縮できる。
【0010】
また、第一態様において、前記送信先決定手段は、前記ポート幅と前記送信順とを乗算した値を、前記基準ポート番号に加算することによって、前記送信先ポート番号を決定してもよい。これによって通信制御装置は、簡易な算出方法によって送信先ポート番号を決定することができる。また送信先ポート番号は、従NAT装置毎に一意的に決定されるので、従NAT装置に記憶されるポート番号を最小限に抑えつつ、従端末装置間で確実に通信を行うことができる。
【0011】
また、第一態様において、前記種別判断手段は、前記NAT種別が、送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制約され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであるかを判断してもよい。NAT種別がFull Cone NATまたはAddress-Restricted Cone NATである場合、NAT装置はパケット転送を行う場合に送信元IPアドレスによって制約を受けない。このため、一旦履歴情報としてポート番号が記憶された後は、任意の端末装置が記憶されたポート番号を使用して通信を行うことができる。このため、主端末装置と従端末装置との間で容易に通信を開始することができる。主端末装置は、従端末装置間の通信制御を容易に実行できる。
【0012】
また、第一態様において、前記主端末選択手段は、前記種別判断手段の判断によって前記NAT種別がFull Cone NATであると判断されたNAT装置と、Address-Restricted Cone NATであると判断されたNAT装置との両方が存在する場合には、前記NAT種別がFull Cone NATであるNAT装置の配下にある端末装置のうち一を前記主端末装置として選択してもよい。NAT種別がFull Cone NATである場合、NAT装置はパケット転送を行う場合に送信元IPアドレス及び送信元ポート番号によって制約を受けない。このため、主端末装置と従端末装置杜の間で通信を開始する場合において、特段の開始手順(UDP Hole Punchingなど)を経なくてもよい。従って、NAT種別がFull Cone NATであるNAT装置の配下の端末装置から主端末装置を選択することによって、主端末装置と従端末装置との間で迅速かつ容易に通信を開始させることができる。主端末装置は、従端末装置間の通信制御を迅速に実行できる。
【0013】
また、第一態様において、前記種別判断手段は、前記NAT種別が、送信元IPアドレスもしくは送信元ポート番号によってパケット転送が制約されるPort-Restricted Cone NATであるかを判断し、前記主端末選択手段は、前記種別判断手段の判断によって通信グループの前記端末装置が直接接続されるNAT装置のNAT種別が全てPort-Restricted Cone NATであると判断された場合には、前記NAT種別がPort-Restricted Cone NATであるNAT装置の配下にある前記端末装置のうち一を前記主端末装置として選択してもよい。これによって、前記通信グループ内の前記端末装置が直接接続されるNAT装置のNAT種別が全てPort-Restricted Cone NATである場合であっても、このNAT装置の配下にある端末装置を主端末装置として選択することができる。NAT種別がFull Cone NATまたはAddress-Restricted Cone NATであるNAT装置が存在しない場合であっても、主端末装置に従端末装置間の通信制御を実行させることができるので、通信制御装置に通信負荷がかかってしまうことを防止できる。
【0014】
また、第一態様において、前記主端末選択手段は、前記種別判断手段の判断によってNAT種別が送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制限され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであると判断された前記NAT装置の配下にある端末装置のうち、通信グループ内の端末装置を優先して前記主端末装置として選択してもよい。これによって、他の通信グループ内にある端末装置に通信負荷がかかってしまうことを防止できる。また、通信グループ内の端末装置のみで通信制御のための通信が行われるので、セキュリティを向上させることができる。
【図面の簡単な説明】
【0015】
【図1】通信システム1の概要を示す模式図である。
【図2】通信制御装置16の電気的構成を示すブロック図である。
【図3】第一テーブル3411を示す模式図である。
【図4】NAT装置2の電気的構成を示すブロック図である。
【図5】端末装置9の電気的構成を示すブロック図である。
【図6】第二テーブル5411を示す模式図である。
【図7】第三テーブル5421を示す模式図である。
【図8】通信制御処理を示すフローチャートである。
【図9】NAT種別特定処理を示すフローチャートである。
【図10】主端末選択処理を示すフローチャートである。
【図11】依頼通知パケットに含まれる情報の一例を示す模式図である。
【図12】変更通知パケットに含まれる情報の一例を示す模式図である。
【図13】端末装置処理を示すフローチャートである。
【図14】端末装置処理を示すフローチャートである。
【図15】通信確立処理を示すフローチャートである。
【図16】ポート幅特定処理(端末装置)を示すフローチャートである。
【図17】ポート通知パケットに含まれる情報の一例を示す模式図である。
【図18】送信順決定処理を示すフローチャートである。
【図19】端末装置間でパンチパケットの通信が行われた状態を示す図である。
【図20】端末装置間でP2P通信が行われた状態を示す図である。
【図21】第一の変形例における通信制御処理を示すフローチャートである。
【図22】第一の変形例におけるポート幅特定処理(制御装置)を示すフローチャートである。
【図23】第二の変形例における主端末選択処理を示すフローチャートである。
【図24】第三の変形例における主端末選択処理を示すフローチャートである。
【図25】第四の変形例における主端末選択処理を示すフローチャートである。
【図26】依頼通知パケットに含まれる情報の一例を示す模式図である。
【発明を実施するための形態】
【0016】
以下、本発明に係る通信システム1について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている通信制御装置や端末装置の構成、各種処理のフローチャートなどは、それのみに限定する趣旨ではなく、単なる説明例である。
【0017】
図1を参照し、通信システム1の概要について説明する。通信システム1は、通信制御装置16、NAT装置2〜8、及び端末装置9〜15等を少なくとも備えている。通信制御装置16は、インターネット17と接続している。NAT装置2〜8は、WAN18,19を介してインターネット17と接続している。なおインターネット17とWAN18,19との間には、ファイヤーウォール等が接続されていてもよい。NAT装置2〜8は、配下のLAN21〜27を介して端末装置9〜15等と接続している。
【0018】
図1に示す例では、WAN18にNAT装置2〜5が接続している。NAT装置2は、端末装置9を含む複数の端末装置とLAN21を介して接続している。NAT装置3は、端末装置10を含む複数の端末装置とLAN22を介して接続している。NAT装置4は、端末装置11を含む複数の端末装置とLAN23を介して接続している。NAT装置5は、端末装置12を含む複数の端末装置とLAN24を介して接続している。WAN19にNAT装置6〜8が接続している。NAT装置6は、端末装置13を含む複数の端末装置とLAN25を介して接続している。NAT装置7は、端末装置14を含む複数の端末装置とLAN26を介して接続している。NAT装置8は、端末装置15を含む複数の端末装置とLAN27を介して接続している。
【0019】
また、端末装置9〜12等は、共通のWAN18に接続する端末装置のグループ(以下「通信グループ」という。)Aを形成している。同様に、端末装置13〜15は、共通のWAN19に接続する通信グループBを形成している。通信グループ内にある端末装置間で、P2P(Peer to Peer)通信が行われる。これによって例えば、共通の通信グループ内にある端末装置間でテレビ会議等が実行される。
【0020】
なお本実施の形態では、共通のWAN18,19に接続する端末装置が通信グループを形成しているが、本発明はこの構成に限定されない。互いに離れた場所に配置され、インターネットを介して接続するような端末装置同士が通信グループを形成させてもよい。
【0021】
通信制御装置16は、端末装置9〜15等の間でP2P通信を行うために必要な通信制御を行う。通信制御装置16としては、例えば呼制御サーバやSTUNサーバが使用できる。端末装置9〜15等は、通信制御装置16による通信制御に基づいて、他の端末装置との間でP2P通信を行う。端末装置9〜15等としては、例えばPC(パーソナルコンピュータ)が使用できる。
【0022】
NAT装置2〜8は、NAT(Network Address Translation)機能を備えた装置である。NAT装置2〜8は、LAN21〜27側からWAN18,19側に向かう方向のパケットを端末装置9〜15等から受信した場合に、パケットのヘッダに含まれている送信元IPアドレスと送信元ポート番号とを変換する。変換後の送信元ポート番号は、履歴情報としてNAT装置2〜8に記憶される。記憶されたポート番号は、WAN18,19側からLAN21〜27側に向かう方向のパケットを受信した場合において、該パケットをLAN21〜27側に転送するか否かを判断する場合に使用される。なお本実施の形態では、LAN21〜27側からWAN18,19側に向かう方向のパケットをNAT装置2〜8が受信した場合、この時点で履歴情報に記憶されている最新のポート番号に所定の変化量(以下「ポート幅」という。)を加算する演算が行われる。算出されたポート番号は、変換後の送信元ポート番号としてパケットのヘッダに格納されるとともに、履歴情報として記憶される。
【0023】
NAT装置2〜8としては、ポートマッピングやパケットフィルタリング方法毎に種別したNAT種別がCone NAT(Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT)やSymmetric NATであるNAT装置が使用できる。Full Cone NATであるNAT装置は、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、受信したパケットのヘッダに含まれている送信元IPアドレス及び送信元ポート番号の制約を受けない。Address-Restricted Cone NATであるNAT装置は、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、送信元ポート番号の制約を受けないが、送信元IPアドレスに基づいてパケットをブロックする。Port-Restricted Cone NATは、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、送信元IPアドレスの制約を受けないが、送信元ポート番号に基づいてパケットをブロックする。Symmetric NATであるNAT装置は、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、送信元IPアドレス及び送信元ポート番号に基づいてパケットをブロックする。
【0024】
異なるNAT装置2〜8の配下にある端末装置9〜15等の間でP2P通信を行うためには、通信相手方の端末装置と直接接続するNAT装置2〜8に履歴情報として記憶されているポート番号(NAT装置2〜8がLAN21〜27側からWAN18,19側にパケットを転送した場合において、NAT装置2〜8がパケットのヘッダに格納したポート番号に相当)を、端末装置が知る必要がある。NAT装置2〜8は、履歴情報として記憶されているポート番号と同一の送信先ポート番号がヘッダに格納されたパケットをWAN18,19側から受信した場合にのみ、受信したパケットをLAN21〜27側に転送するためである。
【0025】
端末装置9〜15がNAT装置2〜8に記憶されているポート番号を認識する為の手段として、例えば次の周知な方法が使用できる。端末装置9〜15等は、NAT装置2〜8を介してLAN21〜27側からWAN18,19側にパケットを送信することによって、NAT装置2〜8にポート番号を記憶させる(NAT装置2〜8にポート番号を記憶させるために、端末装置9〜15等から送信されるパケットを、以下「パンチパケット」という。)。実際に端末装置9〜15等の間でP2P通信が行われる場合には、パンチパケットをNAT装置2〜8が転送した場合にNAT装置2〜8に記憶されたポート番号に対して、他のNAT装置2〜8の配下にある端末装置9〜15からパケットが送信される。
【0026】
ここで本実施の形態では、通信制御装置16によって選択された特定の端末装置(以下「主端末装置」という。)によって、通信グループ内でのパンチパケットの通信制御が行われる。これによって、効率的にNAT装置2〜8にポート番号を記憶させることができる。また、通信制御装置16の代わりに主端末装置がパンチパケットの通信制御を行うことによって、通信制御装置16に通信負荷が集中してしまうことを防止している。
【0027】
なお、図1におけるインターネット17及びWAN18,19が、本発明の「外部ネットワーク」に相当し、LAN21〜27が本発明の「内部ネットワーク」に相当する。なお本発明は、外部ネットワークとしてインターネット17及びWAN18,19の他に従来周知の様々なネットワーク(LAN、WAN、専用回線など)が使用できる。同様に、内部ネットワークとしてLAN21〜27の他に従来周知のネットワーク(インターネット、WAN、専用回線など)が使用できる。
【0028】
図2を参照し、通信制御装置16の電気的構成について説明する。通信制御装置16は、CPU31、ROM32、RAM33、HDD34を備えている。CPU31は、NAT装置2〜8や端末装置9〜15との通信を制御する。ROM32には、Bootプログラムや初期設定パラメータが少なくとも記憶される。RAM33には、CPU31の処理時に発生する一時的なデータが少なくとも記憶される。HDD34は、第一テーブル記憶領域341、プログラム記憶領域342、及びその他の情報記憶領域343を少なくとも備えている。第一テーブル記憶領域341には、端末装置9〜15と通信を行うために必要となるNAT装置2〜8のアドレス情報やNAT種別等に関する情報が格納された第一テーブルが記憶される。プログラム記憶領域342には、CPU31のプログラムが記憶される。その他の情報記憶領域343には、上述の情報以外の情報が記憶される。CPU31は、ROM32、RAM33、及びHDD34と電気的に接続している。CPU31は、ROM32、RAM33、及びHDD34の記憶領域にアクセスできる。
【0029】
通信制御装置16は、入力ドライバ35を備えている。入力ドライバ35は、キーボード351を介して入力された情報を検出する。CPU31は、入力ドライバ35と電気的に接続している。入力ドライバ35は、キーボード351と電気的に接続する。CPU31は、キーボード351を介して入力された情報を認識できる。通信制御装置16は、表示ドライバ36を備えている。表示ドライバ36は、ディスプレイ361に像を表示させるための制御を行う。CPU31は、表示ドライバ36と電気的に接続している。表示ドライバ36は、ディスプレイ361と電気的に接続する。CPU31は、ディスプレイ361に所望の像を表示させることができる。
【0030】
通信制御装置16は、通信モジュール37を備えている。通信モジュール37は、インターネット17を介した通信を可能とする。CPU31は、通信モジュール37と電気的に接続している。CPU31は、インターネット17を介して通信を行うことができる。通信制御装置16は、ディスクドライブ38を備えている。ディスクドライブ38は、記憶媒体381に記憶された情報にアクセスする為の駆動装置である。CPU31は、ディスクドライブ38と電気的に接続している。CPU31は、ディスクドライブ38に記憶媒体381が挿入された状態で、記憶媒体381に記憶された情報にアクセスできる。記憶媒体381には、例えば、CPU31が実行するプログラムが記憶される。記憶媒体381の導入時には、プログラムが記憶媒体381からHDD34のプログラム記憶領域342にセットアップされる。
【0031】
図3を参照し、第一テーブルの一例である第一テーブル3411について説明する。第一テーブル3411には、NAT装置2〜8を特定するID情報(「NAT ID」という。)、NAT装置2〜8のIPアドレス、ポート番号、及びNAT種別が、通信グループ毎に格納される。IPアドレスとしては、NAT装置2〜8のWAN18,19側に設定されるIPアドレスが格納される。ポート番号としては、通信制御装置16が端末装置9〜15等と通信を行う場合に使用可能なポート番号が格納される。なお図3のNAT種別のうち、「FC NAT」は「Full Cone NAT」を示している。同様に、「ARC NAT」はAddress-Restricted Cone NATを示している。「Sym NAT」はSymmetric NATを示している。第一テーブル3411に記憶されている情報は、端末装置9〜15と通信を行うために必要なアドレス情報として参照される。
【0032】
図3に示す例では、通信グループAに属するNAT装置として「2」「3」「4」「5」が格納され、通信グループBに属するNAT装置として「6」「7」「8」が格納されている。なおこれらのNAT IDにて特定されるNAT装置は、図1におけるNAT装置2〜8にそれぞれ相当する。NAT装置2(NAT ID:2)のIPアドレスは「G2」であり、ポート番号は「Pa2」である。NAT種別はARC NATである。
【0033】
なお以下、Full Cone NATを「FC NAT」と呼ぶ。Address-Restricted Cone NATを「ARC NAT」と呼ぶ。Port-Restricted Cone NATを「PRC NAT」と呼ぶ。Symmetric NATを「Sym NAT」と呼ぶ。
【0034】
図4を参照し、NAT装置2の電気的構成について説明する。なお、NAT装置3〜8の電気的構成についても同様である。NAT装置2は、CPU41、ROM42、RAM43、フラッシュメモリ44を備えている。CPU41は、通信制御装置16や端末装置9〜15との通信を制御する。ROM42には、CPU41のプログラムが少なくとも記憶される。RAM43には、CPU41の処理時に発生する一時的なデータが少なくとも記憶される。フラッシュメモリ44には、ポート番号が履歴情報として記憶される。CPU41は、ROM42、RAM43、及びフラッシュメモリ44と電気的に接続している。CPU41は、ROM42、RAM43、及びフラッシュメモリ44の記憶領域にアクセスできる。
【0035】
NAT装置2は、表示部45を備えている。表示部45は、NAT装置2の状態等を表示することができる。CPU41は、表示部45と電気的に接続している。CPU41は、表示部45に所望の情報を表示させることができる。表示部45としては、例えばLEDが使用できる。NAT装置2は、入力部46を備えている。入力部46は、ユーザによるNAT装置2への入力操作を受け付ける。CPU41は、入力部46と電気的に接続している。CPU41は、入力部46を介して入力された情報を認識できる。入力部46としては、例えばスイッチやタッチセンサが使用できる。
【0036】
NAT装置2は、通信モジュール47を備えている。通信モジュール47は、WAN18,19を介した通信を可能とする。CPU41は、通信モジュール47と電気的に接続している。CPU41は、WAN18,19を介して通信を行うことができる。NAT装置2は、通信モジュール48を備えている。通信モジュール48は、LAN21〜27を介した通信を可能とする。CPU41は、通信モジュール48と電気的に接続している。CPU41は、LAN21〜27を介して通信を行うことができる。
【0037】
図5を参照し、端末装置9の電気的構成について説明する。なお、端末装置10〜15等の電気的構成についても同様である。端末装置9は、CPU51、ROM52、RAM53、HDD54を備えている。CPU51は、NAT装置2〜8や通信制御装置16との通信を制御する。ROM52には、Bootプログラムや初期パラメータが少なくとも記憶される。RAM53は、CPU51の処理時に発生する一時的なデータが少なくとも記憶される。HDD54には、第二テーブル記憶領域541、第三テーブル記憶領域542、プログラム記憶領域543、及びその他の情報記憶領域544を少なくとも備えている。
【0038】
第二テーブル及び第三テーブルは、主端末装置として選択された端末装置において作成され、第二テーブル記憶領域541及び第三テーブル記憶領域542に記憶される。第二テーブル記憶領域541には、自身が通信制御を行う通信グループ内にあるNAT装置のポート幅等に関する情報が第二テーブルとして記憶される。第三テーブル記憶領域542には、自身が通信制御を行う通信グループ内にある端末装置9〜15から送信されるパンチパケットの送信先の情報が第三テーブルとして記憶される。プログラム記憶領域543には、CPU51のプログラムが記憶される。CPU51は、ROM52、RAM53、及びHDD54と電気的に接続している。CPU51は、ROM52、RAM53、及びHDD54の記憶領域にアクセスできる。
【0039】
端末装置9は、入力ドライバ55を備えている。入力ドライバ55は、キーボード551を介して入力された情報を検出する。CPU51は、入力ドライバ55と電気的に接続している。入力ドライバ55は、キーボード551と電気的に接続する。CPU51は、キーボード551を介して入力された情報を認識できる。端末装置9は、表示ドライバ56を備えている。表示ドライバ56は、ディスプレイ561に像を表示させるための制御を行う。CPU51は、表示ドライバ56と電気的に接続している。表示ドライバ56は、ディスプレイ561と電気的に接続する。CPU51は、ディスプレイ561に所望の像を表示させることができる。
【0040】
端末装置9は、通信モジュール57を備えている。通信モジュール57は、LAN21〜27を介した通信を可能とする。CPU51は、通信モジュール57と電気的に接続している。CPU51は、LAN21〜27を介して通信を行うことができる。端末装置9は、ディスクドライブ58を備えている。ディスクドライブ58は、記憶媒体581に記憶された情報にアクセスする為の駆動装置である。CPU51は、ディスクドライブ58と電気的に接続している。CPU51は、ディスクドライブ58に記憶媒体581が挿入された状態で、記憶媒体581に記憶された情報にアクセスできる。記憶媒体581には、例えば、CPU51が実行するプログラムが記憶される。記憶媒体581の導入時には、プログラムが記憶媒体581からHDD54にセットアップされる。
【0041】
図6を参照し、第二テーブルの一例である第二テーブル5411について説明する。第二テーブル5411は、通信グループAの主端末装置として端末装置9が選択された場合において、端末装置9によって作成される第二テーブルを示している。第二テーブル5411には、NAT ID、NAT装置2〜8のIPアドレス、ポート幅、及び基準ポート番号が格納される。基準ポート番号は、パンチパケットが送信される場合に基準となるポート番号を示す(詳細は後述する。)。
【0042】
図6に示す例では、NAT IDとして、通信グループA内にあるNAT装置のNAT ID「3」「4」「5」が格納される(端末装置9と直接接続するNAT装置2は除かれる)。NAT装置3(NAT ID:3)のIPアドレスは「G3」である。ポート幅は「W3」である。基準ポート番号は「Pb3」である。
【0043】
図7を参照し、第三テーブルの一例である第三テーブル5421について説明する。第三テーブル5421は、通信グループAの主端末装置として端末装置9が選択された場合において、端末装置9によって作成される第三テーブルを示している。第二テーブルには、NAT ID、パンチパケットの送信先として指定するNAT装置2〜8のNAT ID(第一送信先ID、第二送信先ID)、各送信先IDにて特定されるNAT装置2〜8に対してパンチパケットを送信する場合にヘッダに格納される送信先IPアドレス及び送信先ポート番号が格納される。なお、第一送信先ID及び第二送信先IDは、パンチパケットの送信順を示している。はじめに第一送信先IDのNAT装置2〜8に対してパンチパケットが送信され、次いで第二送信先IDのNAT装置2〜8に対してパンチパケットが送信される(後述)ので、第一送信先IDが「送信順:1」に相当し、第二送信先IDが「送信順:2」に相当する。
【0044】
図7に示す例では、NAT IDとして、通信グループA内にあるNAT装置のNAT ID「3」「4」「5」が格納されている。NAT IDが「3」に対応するNAT装置3の第一送信先IDとして「4」(NAT装置4)が記憶されている。NAT装置4宛てにパンチパケットを送信する場合の送信先IPアドレスは「G4」であり、送信先ポート番号は「Pb4+W4」である。また、NAT装置3の第二送信先IDとして「5」(NAT装置5)が記憶されている。NAT装置5宛てにパンチパケットを送信する場合の送信先IPアドレスは「G5」であり、送信先ポート番号は「Pb5+W5」である。
【0045】
なお図7には、第一送信先ID及び第二送信先IDが格納された第三テーブル5421が示されているが、本発明はこの構成に限定されない。端末装置の台数に応じて、格納される送信先IDの数は変化する。
【0046】
通信制御装置16のCPU31において実行される通信制御処理について、図8〜10を参照して説明する。通信制御処理は、通信制御装置16の電源が投入された場合に、CPU31によって起動され実行される。
【0047】
なおNAT装置2〜8には、通信制御装置16と端末装置9〜15等とが通信を行うためのポート番号が履歴情報として予め記憶されているものとする。通信制御装置16は、NAT装置2〜8に履歴情報として記憶されているポート番号と、NAT装置2〜8のIPアドレスとを予め認識しているものとする。また通信制御装置16は、通信グループと、通信グループ内にあるNAT装置2〜8及び端末装置9〜15等を認識しているものとする。なおこれらの情報は第一テーブルに記憶される。例えば図3のうち、NAT ID、及びIPアドレス/ポート番号の情報が格納された状態の第一テーブル3411が、予め第一テーブル記憶領域341に記憶されていることになる。
【0048】
通信制御処理が起動されると、はじめに、NAT装置2〜8のNAT種別を特定する処理(NAT種別特定処理)が実行される(S11)。図9を参照し、NAT種別特定処理について説明する。はじめに、端末装置9〜15等からNAT装置2〜8を介して通信制御装置16に対して送信される二つのパケット(「第一パケット」及び「第二パケット」という。)を受信したかが判断される(S41)。端末装置9〜15は、第一パケット及び第二パケットのパケットヘッダの送信先IPアドレスに同一のIPアドレス(通信制御装置16のIPアドレス)を設定し、且つパケットヘッダの送信先ポート番号に、其々異なるポート番号(通信制御装置16のポート番号)を設定する(S131:図13)。第一パケット及び第二パケットを受信していない場合(S41:NO)、S41に戻る。継続して第一パケット及び第二パケットの受信が監視される。
【0049】
第一パケット及び第二パケットを受信した場合(S41:YES)、受信した第一パケット及び第二パケットのヘッダに含まれている送信元ポート番号に基づいて、第一パケット及び第二パケットを転送したNAT装置(以下「対象NAT装置」という。)におけるWAN18,19側のポート番号が特定される。特定されたポート番号に基づいて、対象NAT装置のNAT種別の特定が試みられる。送信元ポート番号は、第一パケット及び第二パケットを対象NAT装置が転送する場合に変換されるので、特定されるポート番号の態様から、対象NAT種別が特定可能となる。
【0050】
第一パケット及び第二パケットのヘッダに含まれている送信元ポート番号が一致するかが判断される(S43)。送信元ポート番号が一致しない場合(S43:NO)、対象NAT装置は、送信先ポート番号の異なる2つのパケットをLAN21〜27側からWAN18,19側に転送する場合に、異なるポート番号を割り当てたことになる。従って、このようなポート番号の変換を行うNAT種別としてSym NATが特定される(S49)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0051】
一方、第一パケット及び第二パケットのヘッダに含まれている送信元ポート番号が一致する場合(S43:YES)、該送信元ポート番号(対象NAT装置において第一パケット及び第二パケットが転送された場合に、対象NAT装置に記憶されたポート番号に相当)を送信先ポート番号に設定したパケット(「第三パケット」という。)が作成される。作成された第三パケットが、対象NAT装置を介して端末装置9〜15等に対して送信される。第三パケットは、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスとは異なるIPアドレスがヘッダの送信元IPアドレスとして格納され、第一パケット及び第二パケットのヘッダに含まれていた送信先ポート番号とは異なるポート番号がヘッダの送信元ポート番号として格納され、送信される(S45)。第三パケットに対する応答パケットの受信の有無を判断することによって、対象NAT種別の特定が試みられる。
【0052】
第三パケットを送信してからの経過時間を監視するために、タイマの更新がスタートされる(S47)。次いで、第三パケットを受信した端末装置9〜15等から返信される応答パケットを、対象NAT装置を介して受信したかが判断される(S51)。受信していない場合(S51:NO)、タイマの値に基づき、第三パケットを送信してからの経過時間が所定時間以上となったかが判断される(S53)。タイマの値が所定値未満であり、経過時間が所定時間未満である場合(S53:NO)、S51の処理に戻る。継続して応答パケットの受信が監視される。
【0053】
経過時間が所定時間未満の状態で、対象NAT装置を介して応答パケットを受信した場合(S51:YES)、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスとは異なるIPアドレスが送信元IPアドレスとして格納された第三パケットを、対象NAT装置がWAN18,19側からLAN21〜27側に転送していることになる。従って。このような動作を行うNAT種別としてFC NATが特定される(S55)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0054】
一方、第三パケットを送信してから所定時間経過しても応答パケットを受信できない場合(S53:YES)、第一パケット及び第二パケットの送信元ポート番号を送信先ポート番号に設定したパケット(「第四パケット」という。)が作成される。作成された第四パケットが、対象NAT装置を介して端末装置9〜15等に対して送信される。第四パケットは、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスと同一のIPアドレスがヘッダの送信元IPアドレスとして格納され、第一パケット及び第二パケットのヘッダに含まれていた送信先ポート番号とは異なるポート番号がヘッダの送信元ポート番号として格納され、送信される(S57)。第四パケットに対する応答パケットの受信の有無を判断することによって、対象NAT装置2〜8のNAT種別の特定が試みられる。
【0055】
第四パケットを送信してからの経過時間を監視するために、タイマの更新がスタートされる(S59)。次いで、第四パケットを受信した端末装置9〜15等から返信される応答パケットを、対象NAT装置を介して受信したかが判断される(S61)。受信していない場合(S61:NO)、タイマの値に基づき、第四パケットを送信してからの経過時間が所定時間以上となったかが判断される(S63)。タイマの値が所定値未満であり、経過時間が所定時間未満である場合(S63:NO)、S61に戻る。継続して応答パケットの受信が監視される。
【0056】
経過時間が所定時間未満の状態で、対象NAT装置を介して応答パケットを受信した場合(S61:YES)、対象NAT装置は、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスとは異なるIPアドレスが送信元IPアドレスとして格納された第三パケットは、WAN18,19側からLAN21〜27側に転送しない。しかしながら、第一パケット及び第二パケットのヘッダに含まれていた送信先IPドレスと同一のIPアドレスが送信元IPアドレスとして格納された第四パケットは、WAN18,19側からLAN21〜27側に転送している。従って、このような動作を行うNAT種別としてARC NATが特定される(S65)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0057】
一方、第四パケットを送信してから所定時間経過しても応答パケットを受信できない場合(S63:YES)、第一パケット及び第二パケットのヘッダに含まれていた送信先ポート番号とは異なるポート番号を送信元ポート番号に設定した第三パケット及び第四パケットは、いずれも対象NAT装置においてブロックされていることになる。従って、このような動作を行うNAT種別としてPRC NATが特定される(S67)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0058】
図8に示すように、NAT種別特定処理(S11)の後、特定された対象NAT装置のNAT種別が第一テーブルに記憶される(S13)。次いで、通信システム1内の全てのNAT装置2〜8のNAT種別が特定されたかが判断される(S15)。NAT種別を特定できていないNAT装置2〜8が残存する場合(S15:NO)、S11に戻る。そして残りのNAT装置2〜8のNAT種別を特定する為に上述の処理が繰り返される。一方、すべてのNAT装置2〜8のNAT種別が特定された場合(S15:YES)、次いで、端末装置9〜15の中から、通信グループA及びBに対して主端末装置を其々選択する処理(主端末選択処理)が実行される(S17)。
【0059】
図10を参照し、主端末選択処理について説明する。主端末選択処理では、NAT装置2〜8のNAT種別に基づいて主端末装置が選択される。NAT種別がPRC NATやSym NATであるNAT装置の場合、受信したパケットのヘッダに含まれている送信元ポート番号に基づいて、該パケットを転送するか否かが判断される。送信元ポート番号は、NAT装置によって変換される可能性があるので、通信グループ内の他の端末装置(以下「従端末装置」という。)から送信されたパケットが主端末装置に到達せず、主端末装置が従端末装置の通信制御を行うことができない可能性がある。これに対し、NAT種別がFC NATやARC NATであるNAT装置の場合、受信したパケットの送信元ポート番号に依存せず、該パケットをWAN18,19側からLAN21〜27側に転送することができる。従端末装置から送信されたパケットは確実に主端末装置に到達する。従って本実施の形態では、NAT種別がFC NATやARC NATであるNAT装置を抽出し、抽出したNAT装置の配下にある端末装置を主端末装置として選択する。これによって、存在するNAT種別に応じて最適な端末装置を主端末装置として選択することができる。
【0060】
NAT種別がFC NATであるか、又はARC NATであるNAT装置が、通信システム1内に存在するかが、第一テーブルのNAT種別に基づいて判断される(S71)。いずれのNAT種別のNAT装置も通信システム1内に存在しない場合(S71:NO)、主端末装置を特定できないので、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0061】
NAT種別がFC NATであるか、又はARC NATであるNAT装置が存在する場合(S71:YES)、通信グループA及びBの其々に一台ずつ割り当てるNAT装置が、上述の条件に該当するNAT装置から任意で抽出される。抽出されたNAT装置の配下にある端末装置のうち一台が、任意で選択される。選択された端末装置が主端末装置とされる(S73)。このようにして、通信グループAの主端末装置知と、通信グループBの主端末装置とが選択される。そしてS75の処理に進む。
【0062】
S75の処理では、選択された主端末装置と直接接続するNAT装置(以下「主NAT装置」という。)のNAT種別がFC NATであるかが判断される(S75)。FC NATである場合(S75:YES)、主NAT装置に記憶されたポート番号は、任意の端末装置が送信先ポート番号として使用することができる。このため、パンチパケットによる通信が不要であるとされる(S77)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、FC NATでない(ARC NATである)場合(S75:NO)、主NAT装置では、受信したパケットのヘッダに含まれている送信元IPアドレスに基づいてパケット転送の可否が判断されるので、パンチパケットによる通信が必要であるとされる(S79)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0063】
図3の第一テーブル3411に基づき主端末装置が選択される場合を例示して説明する。NAT種別がFC NATであるか、又はARC NATであるNAT装置として、NAT装置2及びNAT装置7が該当する。通信グループAにNAT装置2が割り当てられる。通信グループBにNAT装置7が割り当てられる。NAT装置2の配下にある端末装置のうち端末装置9が、通信グループAの主端末装置として選択される(以下、主端末装置として選択された端末装置9を「主端末装置9」という。)。NAT装置7の配下にある端末装置のうち端末装置14が、通信グループBの主端末装置として選択される(以下、主端末装置として選択された端末装置14を「主端末装置14」という。)。
【0064】
選択された主端末装置9に接続されたNAT装置2(以下「主NAT装置2」という。)のNAT種別はARC NATである。従って、主端末装置9と従端末装置とが通信を行う場合には、パンチパケットによる通信が必要であるとされる。一方、選択された主端末装置14の主NAT装置のNAT種別はFC NATである。従って、主端末装置14と従端末装置とが通信を行う場合には、パンチパケットによる通信が不要であるとされる。
【0065】
なお上述の例では、通信グループの主端末装置を選択する場合、対象とする通信グループに属する端末装置が選択されていた。しかしながら本発明はこの方法に限定されない。一の通信グループの主端末装置を、他の通信グループ内にある端末装置の中から選択してもよい。
【0066】
図8に示すように、通信制御処理では、主端末選択処理(S17)が終了した後、主端末装置として動作することを依頼する依頼通知パケットが、選択された主端末装置に対して送信される(S21)。依頼通知パケットには、主端末装置が対象とする通信グループ内にあるNAT装置(但し、主NAT装置を除く。以下「従NAT装置」という。)のIPアドレスと、パンチパケットによる通信の要否を示す情報とが格納される。これらの情報は、主端末装置が従端末装置と通信を行うためのアドレス情報(従端末装置のアドレス情報)に相当する。
【0067】
依頼通知パケットに格納される情報について、図11を参照して説明する。図11では、通信グループAの主端末装置として選択されたことを端末装置9に対して通知する依頼通知パケットに格納される情報が示されている。依頼通知パケットには、通信グループA内にあるNAT装置2〜5のうち、主NAT装置2を除くNAT装置3〜5のIPアドレス(NAT装置3:G3、NAT装置4:G4、NAT装置5:G5)が格納される。なおこれらの情報は、図3の第一テーブル3411に格納された情報に基づいている。また、主NAT装置2のNAT種別はARC NATであるので、パンチパケットによる通信が必要である旨を示す情報が格納される。依頼通知パケットを受信した主端末装置9では、従NAT装置であるNAT装置3〜5(以下「従NAT装置3〜5」という。)に関する情報を認識できるので、従NAT装置3〜5を介して通信グループA内の従端末装置である端末装置10〜12(以下、「従端末装置10〜12」という。)と通信を行うことが可能となる。
【0068】
図8に示すように、依頼通知パケットが主端末装置に対して送信された後、依頼通知パケットに応じて主端末装置から返信される応答パケットの受信が監視される(S23)。受信しない場合(S23:NO)、S23に戻り、応答パケットの受信が継続して監視される。一方、応答パケットを受信した場合(S23:YES)、次いで、従端末装置に対して、主端末装置が選択されたことを通知する変更通知パケットが送信される(S25)。変更通知パケットには、主NAT装置のIPアドレスとポート番号とが格納される。これらの情報は、従端末装置が主端末装置と通信を行うためのアドレス情報(主端末装置のアドレス情報)に相当する。そして通信制御処理は終了する。
【0069】
変更通知パケットに格納される情報について、図12を参照して説明する。図12では、主端末装置9が選択されたことを通知するために、通信グループAに属する従端末装置10〜12に対して送信される変更通知パケットに格納される情報が示されている。変更通知パケットには、主NAT装置2のIPアドレス(G2)及びポート番号(Pa2)が格納される。なおこれらの情報は、図3の第一テーブル3411に格納された情報に基づいている。変更通知パケットを受信した従端末装置10〜12では、主NAT装置2に関する情報を認識できるので、主NAT装置2を介して主端末装置9と通信を行うことが可能となる。
【0070】
図13〜図17を参照し、端末装置9〜15のCPU51において実行される端末装置処理について説明する。端末装置処理は、端末装置9〜15の電源が投入された場合において、CPU51において起動され実行される。図13に示すように、端末装置処理が起動されると、はじめに、通信制御装置16に対して第一パケット及び第二パケットが送信される。第一パケット及び第二パケットは、通信制御装置16の有するIPアドレスのうち共通のIPアドレスをパケットヘッダの送信先IPアドレスに設定し、且つ、其々異なるポート番号をパケットヘッダの送信先ポート番号に設定して送信される(S131)。
【0071】
通信制御装置16から返信される第三パケット及び第四パケットを、NAT装置2〜8を介して受信したかが判断される(S135)。いずれかのパケットを受信した場合(S135:YES)、NAT装置2〜8を介して通信制御装置16に対して応答パケットが送信される(S137)。そしてS135の処理に戻り、上述の処理が繰り返される。通信制御装置16では、応答パケットの受信の有無に基づいて、パケットを転送したNAT装置のNAT種別が特定される(図9参照)。
【0072】
いずれのパケットも受信していない場合(S135:NO)、第一パケット及び第二パケットを送信してから所定時間が経過したかが判断される(S138)。所定時間が経過していない場合(S138:NO)、S135の処理に戻り、上述の処理が繰り返される。
【0073】
第一パケット及び第二パケットを送信してから所定時間経過した場合(S138:YES)、通信制御装置16からNAT装置2〜8を介して依頼通知パケットを受信したかが判断される(S139)。受信した場合(S139:YES)、自身が主端末装置として選択されたことになる。従端末装置間の通信制御を行う通信確立処理(S141)が実行される。
【0074】
図15を参照し、通信確立処理について説明する。なお以下、端末装置9が通信グループAの主端末装置として選択されたことを想定し、主端末装置9のCPU51において実行される処理について説明する。通信グループAに属する他の端末装置10〜12が、従端末装置10〜12に相当する。
【0075】
通信確立処理では、はじめに、S139(図13参照)において受信した依頼通知パケットに含まれている情報(図11参照)に基づいて、第二テーブル記憶領域541に記憶されている第二テーブルが更新される(S181)。具体的には、依頼通知パケットに含まれているNAT IDとIPアドレスとが、第二テーブルに格納される。
【0076】
例えば、図11に示す情報が依頼通知パケットに含まれていた場合には、これらの情報のうちNAT ID「3」「4」「5」とIPアドレス「G3」「G4」「G5」の情報が、第二テーブルのNAT ID及びIPアドレスとして格納される。結果、第二テーブルは、図6に示す第二テーブル5411のうちNAT ID及びIPアドレスが格納された状態になる。
【0077】
次いで、主端末装置9が従端末装置10〜12と通信を行うに際し、パンチパケットによる通信が必要であるかが、依頼通知パケットに含まれている情報に基づいて判断される(S183)。パンチパケットによる通信が不要である旨の情報が依頼通知パケットに格納されている場合(S183:NO)、そのままS187の処理に進む。
【0078】
一方、パンチパケットによる通信が必要である旨の情報が依頼通知パケットに格納されている場合(S183:YES)、主NAT装置2、及び従NAT装置3〜5を介して従端末装置10〜12に対してパンチパケットを送信し、主NAT装置2にポート番号を記憶させる必要がある。従端末装置10〜12に対してパンチパケットが送信される(S185)。送信されたパンチパケットは、主NAT装置2及び従NAT装置3〜5を経由して、従端末装置10〜12に到達する。主NAT装置2には、主端末装置9が従端末装置10〜12と通信を行うためのポート番号が記憶される。同様に、従端末装置10〜12から、従NAT装置3〜5、及び主NAT装置2を介して主端末装置9に対してパンチパケットが送信される。従NAT装置3〜5には、従端末装置10〜12が主端末装置9と通信を行うためのポート番号が記憶される。これによって、主端末装置9と従端末装置10〜12とは、互いに通信を行うことが可能な状態となる。そしてS187の処理に進む。
【0079】
S187では、依頼通知パケットに対する応答パケットが通信制御装置16に対して送信される(S187)。次いで、従NAT装置3〜5のポート幅を特定する処理(ポート幅特定処理(端末装置))が実行される(S189)。
【0080】
図16を参照し、ポート幅特定処理(端末装置)について説明する。はじめに、従端末装置10〜12から送信されるポート通知依頼パケットを、従NAT装置3〜5及び主NAT装置2を介して受信したかが判断される(S201)。ポート通知依頼パケットは、変更通知パケットを受信した従端末装置10〜12から送信される(S147:図13)。ポート通知依頼パケットを受信した場合(S201:YES)、ポート通知依頼パケットを送信した従端末装置10〜12に対して、送信先ポート番号を複数通知する為のポート通知パケットが送信される(S203)。そしてS201に戻り、上述の処理が繰り返される。
【0081】
主端末装置9から送信されるポート通知パケットの一例について、図17を参照して説明する。ポート通知パケットには、ポート番号が複数格納されている。図17では、通知するポート番号として「Pa2+1」「Pa2+2」「Pa2+3」「Pa2+4」が示されている。これらのポート番号は、従端末装置10〜12が主端末装置9に対してポート幅検出パケットを送信する場合に参照される(詳細後述)。
【0082】
一方、ポート通知依頼パケットを受信していない場合(S201:NO)、従端末装置10〜12から送信されるポート幅検出パケットを、従NAT装置3〜5及び主NAT装置2を介して受信したかが判断される(S205)。なおポート幅検出パケットは、主端末装置9において従NAT装置3〜5のポート幅を検出させるために、従端末装置10〜12から複数送信される。ポート幅検出パケットは、受信したポート通知パケットに含まれている複数のポート番号(図17参照)をパケットヘッダの送信先ポート番号に設定して送信される(S153:図14)。
【0083】
主端末装置9においてポート幅検出パケットが受信された場合(S205:YES)、受信されたポート幅検出パケットのヘッダに含まれている送信元ポート番号(ポート幅検出パケットを従NAT装置3〜5がLAN22〜24側からWAN18側に転送した場合において、従NAT装置3〜5に記憶されたポート番号に相当)に基づいて、従NAT装置3〜5のポート幅が算出される(S207)。
【0084】
従端末装置10〜12から送信されたポート幅検出パケットが、従NAT装置3〜5において、LAN22〜24側からWAN18側に転送される場合、ポート幅ずつ加算処理が行われる。算出されたポート番号がポート幅検出パケットに割り当てられる。このため主端末装置9では、受信した一のポート幅検出パケットの送信元ポート番号を、次に受信したポート幅検出パケットの送信元ポート番号から減算する。この演算を、受信したポート幅検出パケットの数分繰り返す。このようにして算出した値をポート幅とする。
【0085】
算出されたポート幅に基づいて、第二テーブル記憶領域541に記憶されている第二テーブルが更新される(S209)。具体的には、算出されたポート幅が、ポート幅検出パケットを転送した従NAT装置3〜5のNAT IDに対応付けられて格納される。例えば図6に示す例では、算出されたポート幅「W3」「W4」「W5」が第二テーブル5411に格納されている。そしてS201に戻り、上述の処理が繰り返される。
【0086】
一方、ポート幅検出パケットを受信していない場合(S205:NO)、通信グループA内の全ての従端末装置10〜12からポート幅検出パケットを受信し、すべての従NAT装置3〜5のポート幅が特定されたかが判断される(S211)。ポート幅を特定できていない従NAT装置3〜5が残存する場合(S211:NO)、S201に戻り、上述の処理が繰り返される。通信グループA内に属する全ての従NAT装置3〜5のポート幅が特定された場合(S211:YES)、ポート幅特定処理(端末装置)を終了して通信確立処理(図15参照)の処理に戻る。
【0087】
図15に示すように、ポート幅特定処理(端末装置)(S189)が終了した場合、次いで、パンチパケットの送信順を決定して第三テーブルを作成する処理(送信順決定処理)が実行される(S191)。
【0088】
図18を参照し、送信順決定処理について説明する。はじめに、主NAT装置2及び従NAT装置3〜5を介して従端末装置10〜12に対して、基準ポート通知パケットの送信を要求する基準ポート要求パケットが送信される(S111)。基準ポート通知パケットは、従NAT装置3〜5の基準ポートを主端末装置9に認識させるために、従端末装置10〜12から送信される(S157:図14)。
【0089】
従NAT装置3〜5及び主NAT装置2を介して基準ポート通知パケットを受信したかが判断される(S113)。受信した場合(S113:YES)、受信した基準ポート通知パケットのヘッダに含まれている送信元ポート番号(基準ポート通知パケットを従NAT装置3〜5がLAN22〜24側からWAN18側に転送した場合において、従NAT装置3〜5に記憶されたポート番号)が抽出される。抽出された送信元ポート番号が基準ポート番号とされる。得られた基準ポート番号に基づいて、第二テーブル記憶領域541の第二テーブルが更新される(S115)。そしてS113に戻り、上述の処理が繰り返される。例えば図6に示す例では、基準ポート番号「Pb3」「Pb4」「Pb5」が第二テーブル5411に格納されている。
【0090】
従端末装置10〜12から送信される基準ポート通知パケットは、従NAT装置3〜5を経由して主端末装置9に到達する。従NAT装置3〜5が基準ポート通知パケットをLAN22〜24側からWAN18側に転送する際、基準ポート通知パケットのヘッダに含まれている送信元ポート番号が所定の値に変換される。変換されたポート番号は、従NAT装置3〜5に履歴情報として記憶される。主端末装置9では、受信した基準ポート通知パケットの送信元ポート番号を基準ポートとして認識している。従って主端末装置9では、この時点で従NAT装置3〜5に記憶されているポート番号のうち最も新しいポート番号が基準ポート番号として認識されたことになる。
【0091】
一方、基準ポート通知パケットを受信していない場合(S113:NO)、従端末装置10〜12の全てから基準ポート通知パケットを受信したかが判断される(S117)。基準ポート通知パケットを受信していない従端末装置10〜12が残存する場合(S117:NO)、S113の処理に戻り、上述の処理が繰り返される。
【0092】
一方、従端末装置10〜12のすべてから基準ポート通知パケットを受信した場合(S117:YES)、この時点で第二テーブル記憶領域541に記憶されている第二テーブルに基づいて、第三テーブルが作成される(S119〜S121)。はじめに、送信順が決定されることによって、第三テーブルのうち第一送信先IDと第二送信先IDとが決定される(S119)。送信順は、例えばNAT IDが降順となるように決定される。なお、本発明はこの方法に限定されず、例えばNAT IDが昇順となるように決定してもよいし、従NAT装置3〜5のMACアドレスやIPアドレスに基づいて送信順を決定してもよい。また、端末装置の通信履歴に基づき、直近に通信した端末装置同士が優先されるように送信順を決定してもよい。次いで、第三テーブルのうち送信先IPアドレス及び送信先ポート番号が決定される(S121)。
【0093】
図6に示す第二テーブル5411に基づいて送信順及び送信先情報が決定され、図7に示す第三テーブル5421が作成される場合を例示して説明する。NAT装置3の通信相手先のNAT装置は、NAT装置4(NAT ID:4)とNAT装置5(NAT ID:5)ということになる。送信先IDはNAT IDの降順に決定されるので、送信順は、NAT装置4:送信順1、NAT装置5:送信順2のように決定される。この送信順に基づき、第一送信先IDが「4」とされ、第二送信先IDが「5」とされる。同様に、NAT装置4の通信相手先のNAT装置は、NAT装置3(NAT ID:3)とNAT装置5(NAT ID:5)であるので、送信順は、NAT装置3:送信順1、NAT装置5:送信順2のように決定される。この送信順に基づき、第一送信先IDが「3」とされ、第二送信先IDが「5」とされる。以上のようにして、送信順、及び、第一送信先IDと第二送信先IDとが決定される。
【0094】
次いで、送信先情報が決定される。送信先IPアドレスは、第二テーブル5411に記憶されているIPアドレスとされる。送信先ポート番号は、次のようにして決定される。従NAT装置3と直接接続する従端末装置10が、第一送信先IDにて特定される従NAT装置4と直接接続する従端末装置11との間でパケットの送受信を行うために、従NAT装置3に記憶させるポート番号が決定される。ポート番号は、従NAT装置3のポート幅「W3」に送信順「1」を乗算した値を、基準ポート「Pb3」に加算した値「Pb3+W3(*1)」とされる。算出されたポート番号「Pb3+W3」は、NAT装置4がNAT装置3に対してパケットを送信する場合の送信先ポート番号とされる。このポート番号は、第三テーブルのうち、NAT装置4に対応付けられている第一送信先ID「3」の送信先ポート番号として記憶される。
【0095】
次いで、従NAT装置3と直接接続する従端末装置10が、第二送信先IDにて特定されるNAT装置5と直接接続する従端末装置12との間でパケットの送受信を行うために、従NAT装置3に記憶させるポート番号が決定される。ポート番号は、従NAT装置3のポート幅「W3」に送信順「2」を乗算した値を、基準ポート「Pb3」に加算した値「Pb3+W3*2」とされる。算出されたポート番号「Pb3+W3*2」は、従NAT装置5がNAT装置3に対してパケットを送信する場合の送信先ポート番号とされる。このポート番号は、第三テーブルのうち、従NAT装置5に対応付けられている第一送信先ID「3」の送信先ポート番号として記憶される。
【0096】
例えば、第三テーブル5421のうちNAT ID「4」には、第一送信先IDとして「3」が記憶されており、第二送信先IDとして「5」が記憶されている。従NAT装置4と直接接続する従端末装置11と、従NAT装置3と直接接続する従端末装置12とが通信を行うために、従NAT装置4に記憶させるポート番号は、従NAT装置4のポート幅「W4」に送信順「1」を乗算した値を、基準ポート「Pb4」に加算した値「Pb4+W4」となる。算出されたポート番号「Pb4+W4」は、送信先ポート番号(NAT ID:3、第一送信先ID:4に対応付けられている送信先ポート番号)に格納される。従NAT装置4と直接接続する従端末装置11と、従NAT装置5と直接接続する従端末装置12との通信を行うために記憶するポート番号は、従NAT装置4のポート幅「W4」に送信順「2」を乗算した値を、基準ポート「Pb4」に加算した値「Pb4+(W4*2)」となる。算出されたポート番号「Pb4+(W4*2)」は、送信先ポート番号(NAT ID:5、第一送信先ID:4に対応付けられている送信先ポート番号)に格納される。
【0097】
S119の処理によって決定された第一送信元ID及び第二送信元IDと、S121の処理によって決定された送信先IPアドレス及び送信先ポート番号とは、第三テーブル記憶領域542の第三テーブルに記憶される(S123)。そしてS125の処理に進む。S125の処理では、パンチパケットの送信を指示する送信指示パケットが、従端末装置10〜12に対して送信される(S125)。送信指示パケットには、S123において作成された第三テーブルの情報が付加される。そして送信順決定処理を終了し、通信確立処理(図15参照)に戻る。図15に示すように、送信順決定処理(S191)の後、通信確立処理を終了して端末装置処理(図13参照)に戻る。
【0098】
図13に示すように、通信確立処理(S141)が終了した後、主端末装置9及び従端末装置10〜12は相互に通信可能な状態となっているので、主端末装置9及び従端末装置10〜12間でP2P通信が実行される(S142)。そして端末装置処理は終了する。
【0099】
以上のように、通信制御装置16は、通信グループ毎に主端末装置を選択する。主端末装置に対して、従端末装置間で実行されるパンチパケット通信の制御を依頼する。パンチパケット通信の制御が主端末装置によって実行されることになるので、通信制御時の通信負荷が通信制御装置16に集中してしまうことを防止できる。
【0100】
図13に示すように、通信制御装置16から依頼通知パケットを受信しておらず、主端末装置として選択されていない場合(S139:NO)、通信制御装置16からNAT装置2〜8を介して変更通知パケットを受信したかが判断される(S143)。受信していない場合(S143:NO)、S151(図14参照)の処理に進む。
【0101】
一方、通信制御装置16から変更通知パケットを受信した場合(S143:YES)他の端末装置が主端末装置として選択されたということになるので、従端末装置としての処理が実行される。以下、端末装置10が変更通知パケットを受信したことを想定し、端末装置10のCPU51において実行される端末装置処理について説明する。端末装置9が主端末装置として選択されているものとする。
【0102】
選択された主端末装置9に関する情報は、変更通知パケットに含まれている情報(図12参照)に基づいて認識できる。変更通知パケットに含まれている情報(主NAT装置2のNAT ID、IPアドレス、ポート番号)が、主端末装置9に関するアドレス情報としてHDD54のその他の情報記憶領域544に記憶される(S145)。以後、主端末装置9との通信は、記憶されたアドレス情報に基づいて実行される。次いで、ポート幅検出パケットの送信先とするポート番号を主端末装置9に対して問い合わせるポート通知依頼パケットが、従NAT装置3及び主NAT装置2を介して主端末装置9に対して送信される(S147)。そしてS135の処理に戻る。なお主端末装置9では、ポート幅検出パケットに応じてポート通知パケットが返信される(S203:図16)。
【0103】
上述の処理が繰り返される中で、図14に示すように、主端末装置9から送信されるポート通知パケットを、主NAT装置2及び従NAT装置3を介して受信したかが判断される(S151)。受信していない場合(S151:NO)、S155の処理に進む。一方、ポート通知パケットを受信した場合(S151:YES)、ポート通知パケットに含まれている複数のポート番号(図17参照)が参照される。これらのポート番号をパケットヘッダの送信先ポート番号に設定し、従NAT装置3及び主NAT装置2を介して主端末装置9に対してポート幅検出パケットが複数送信される(S153)。そしてS135(図13参照)の処理に戻る。なお、送信されたポート幅検出パケットに基づき、主端末装置9において従NAT装置3のポート幅が特定される(S207:図16)。
【0104】
上述の処理が繰り返される中で、主端末装置9から送信された基準ポート要求パケットを、主NAT装置2及び従NAT装置3を介して受信したかが判断される(S155)。受信していない場合(S155:NO)、S169の処理に進む。一方、基準ポート要求パケットを受信した場合(S155:YES)、従NAT装置3の基準ポート番号を認識させるための基準ポート通知パケットが、従NAT装置3及び主NAT装置2を介して主端末装置9に対して送信される(S157)。そしてS135(図13参照)の処理に戻る。なお、送信された基準ポート番号通知パケットに基づき、主端末装置9において従NAT装置3の基準ポートが特定される(S115:図18)。
【0105】
上述の処理が繰り返される中で、主端末装置9から送信された送信指示パケットを、主NAT装置2及び従NAT装置3を介して受信したかが判断される(S169)。受信していない場合(S169:NO)、S135(図13参照)の処理に戻る。送信指示パケットを受信した場合(S169:YES)、送信指示パケットに付加されている第三テーブルの情報がRAM53に記憶される(記憶された情報を「送信先情報」という。)。記憶された送信先情報に基づいて、パンチパケットが送信される(S171)。パンチパケットは、第一送信先ID→第二送信先IDの順で、其々の送信先IPアドレス及び送信先ポート番号をヘッダの送信先に対して送信される。
【0106】
なお、従端末装置10がパンチパケットを送信する場合、パンチパケットのTTL(Time to Live)には小さい値が設定される。これによってパンチパケットは、WAN18内で中継転送が繰り返される中でTTLが0となり、破棄される。
【0107】
従NAT装置3が従端末装置10から送信されたパンチパケットを転送する際、送信元ポート番号が変換される。変換後のポート番号が、履歴情報として従NAT装置3に記憶される。記憶されたポート番号は、従端末装置10が通信グループA内の他の従端末装置11,12に対してパケットを送信する場合にヘッダに設定される送信先ポート番号として使用される。
【0108】
パンチパケットによる通信が行われた後、主端末装置9及び従端末装置10〜12間で相互に通信を行うことが可能な状態となっているので、主端末装置9及び従端末装置10〜12間でP2P通信が実行される(S173)。そして端末装置処理は終了する。
【0109】
従端末装置10〜12が、図7の第三テーブル5421の情報に基づいてパンチパケットを送信する場合の様子について、図19を参照して説明する。図のうち101は、従端末装置10のRAM53に記憶された送信先情報を示している。102は、従端末装置11のRAM53に記憶された送信先情報を示している。103は、従端末装置12のRAM53に記憶された送信先情報を示している。
【0110】
図19に示すように、従端末装置10では、送信先情報101に基づいてパンチパケットが送信される。はじめに、送信先情報101のうち第一送信先IDの情報が参照される。パンチパケットのヘッダに含まれる送信先IPアドレスとして「G4」が設定され、送信先ポート番号として「Pb4+W4」が設定される。このようにして作成されたパンチパケットが、従NAT装置3を介して送信される(111)。
【0111】
従NAT装置3では、受信したパンチパケットのヘッダに含まれている送信元ポート番号を、所定のポート番号に変換する。また、変換後のポート番号を履歴情報として記憶する。ここで変換後のポート番号は、現時点で従NAT装置3の履歴情報に記憶されているポート番号のうち最も新しいポート番号にポート幅「W3」だけ加算された値とされる。最も新しいポート番号は、基準ポート通知パケットを介して主端末装置9に通知した基準ポート「Pb3」に相当する。従って従NAT装置3では、ポート番号「Pb3+W3」が履歴情報として記憶される(111)。
【0112】
続いて従端末装置10では、送信先情報101のうち第二送信先IDの情報が参照される。パンチパケットのヘッダに含まれる送信先IPアドレスとして「G5」が設定され、送信先ポート番号として「Pb5+W5」が設定される。このようにして作成されたパンチパケットが、従NAT装置3を介して送信される(112)。
【0113】
従NAT装置3は、パンチパケットの送信元ポート番号を、現時点でNAT装置3に記憶されているポート番号のうち最も新しい「Pb3+W3」にさらに「W3」だけ加算したポート番号「Pb3+(W3*2)」に変換する。変換したポート番号「Pb3+(W3*2)」は、従NAT装置3に履歴情報として記憶される。結果、従NAT装置3には、履歴情報として「Pb3+W3」「Pb3+(W3*2)」が少なくとも記憶された状態となる。
【0114】
なお、送信されたパンチパケットは、WAN18内で破棄されるので、相手先の端末装置(及びNAT装置)に到達しない。
【0115】
同様に従端末装置11では、送信先情報102に基づいてパンチパケットが送信される(113,114)。従NAT装置4では、基準ポート「Pb4」に「W4」だけ加算したポート番号「Pb4+W4」と、「Pb4+W4」にさらに「W4」だけ加算したポート番号「Pb4+(W4*2)」とが、履歴情報として記憶される。従端末装置12では、送信先情報103に基づいてパンチパケットが送信される(115,116)。従NAT装置5では、「Pb5+W5」と「Pb5+(W5*2)」とが履歴情報として記憶される。
【0116】
図20を参照して、従端末装置10〜12間でP2P通信が行われる場合の様子について説明する。図19に示すパンチパケット通信を行うことによって、従端末装置10〜12は、送信先情報101〜103に基づいて他の端末装置と互いにP2P通信を行うことが可能となる。従端末装置10が従端末装置11とP2P通信を行う場合、送信先情報101に基づき、パケットのヘッダに含まれる送信先IPアドレスを「G4」に設定し、送信先ポート番号を「Pb4+W4」に設定する。このパケットは、従NAT装置3を介して従NAT装置4に到達する。従NAT装置4には、上述のパンチパケット通信によって、履歴情報として「Pb4+W4」が記憶されている。従NAT装置4は、従端末装置10から受信したパケットを従端末装置11に対して転送する(121)。
【0117】
また例えば、従端末装置12が従端末装置10とP2P通信を行う場合、送信先情報103に基づき、パケットのヘッダに含まれる送信先IPアドレスを「G3」に設定し、送信先ポート番号を「Pb3+(W3*2)」に設定する。このパケットは、従NAT装置5を介して従NAT装置3に到達する。従NAT装置3には、上述のパンチパケット通信によって、履歴情報として「Pb3+(W3*2)」が記憶されている。従NAT装置3は、従端末装置12から受信したパケットを従端末装置10に対して転送する(122)。
【0118】
このように端末装置10〜12は、パンチパケット通信によって従NAT装置3〜5に履歴情報として記憶させたポート番号宛てにパケットを送信することができる。これによって、従端末装置10〜12間でP2P通信を行うことが可能となる。なお、主端末装置9は、通信確立処理(図15参照)によって既に従端末装置10〜12と通信可能な状態となっている。従って、以上の通信を経ることによって、通信グループA内にある端末装置9〜12間でP2P通信を行うことが可能となる。
【0119】
以上説明したように、通信制御装置16によって選択された主端末装置9が、従端末装置10〜12間で行われるパンチパケット通信を制御するので、通信制御装置16におけるパンチパケット通信の制御が不要となる。これによって、通信制御装置16に通信負荷が集中してしまうことを防止できる。通信制御装置16は、P2P通信を開始させるために必要な端末装置間の通信を極力抑制できるように、NAT種別に応じて最適な端末装置を主端末装置として選択することができる。
【0120】
主端末装置9は、送信順と基準ポートとポート幅とに基づいて送信先ポート番号を決定し、IPアドレスとともに従端末装置10〜12に通知する。従端末装置10〜12では、通知されたIPアドレスと送信先ポート番号とに基づいてパンチパケットを送信する。従端末装置10〜12間でP2P通信を行うために必要なポート番号のみ従NAT装置3〜5に記憶させることができる。このため、従NAT装置3〜5に記憶される不要なポート番号宛てに不特定多数のユーザがアクセスすることを防止できるので、NAT装置のセキュリティ機能が弱まってしまうことを防止できる。
【0121】
主端末装置9では、ポート幅に送信順を乗算した値を基準ポートに加算することによって送信先ポート番号が決定されるので、簡易な方法で送信先ポート番号を決定することができる。また送信先ポート番号は、従端末装置10〜12毎に一意的に決定されるので、NAT装置3〜5に記憶されるポート番号を最小限に抑えつつ、端末装置間で確実に通信を行うことができる。
【0122】
なお、図9の処理を行うCPU31が本発明の「種別特定手段」に相当する。図10のS71の処理を行うCPU31が本発明の「種別判断手段」に相当し、S73の処理を行うCPU31が本発明の「主端末選択手段」に相当する。図8のS21の処理を行うCPU31が本発明の「第一送信手段」に相当し、S25の処理を行うCPU31が本発明の「第二送信手段」に相当する。図13のS139及びS143の処理を行うCPU51が本発明の「第一受信手段」に相当し、S141の処理を行うCPU51が本発明の「通信制御手段」に相当し、図13のS142、及び図14のS173の処理を行うCPU51が本発明の「通信手段」に相当する。図8のS21において、図11に示す情報とともに送信されるパケットが、本発明の「第一通知信号」に相当する。図8のS25において、図12に示す情報とともに送信されるパケットが、本発明の「第二通知信号」に相当する。
【0123】
図16のS207、及び図18のS115の処理を行うCPU51が本発明の「取得手段」に相当する。図18のS121の処理を行うCPU51が本発明の「送信先決定手段」に相当し、S125の処理を行うCPU51が本発明の「第三送信手段」に相当する。図14のS169の処理を行うCPU51が本発明の「第二受信手段」に相当し、S171の処理を行うCPU51が本発明の「第四送信手段」に相当する。
【0124】
なお、本発明は上記実施の形態に限定されるものではなく、種々の変更が可能である。以下、本実施の形態の変形例について説明する。
<第一の変形例>
【0125】
本発明の第一の変形例について説明する。第一の変形例では、通信システム1内に主端末装置の候補となる端末装置が存在しない場合に、通信制御装置16が端末装置間の通信制御を行う。これによって、主端末装置が選択できない場合であっても、端末装置間でのP2P通信が可能となる。
【0126】
なお第一の変形例では、上述した第二テーブル及び第三テーブルが、通信制御装置16のHDD34のその他の情報記憶領域343に記憶される。通信制御装置16では、第一テーブル記憶領域341に記憶されている第一テーブル等の情報に基づいて、第二テーブル及び第三テーブルが作成される。
【0127】
図21及び図22を参照し、第一の変形例における通信制御処理について説明する。通信制御処理は、通信制御装置16の電源が投入された場合に、CPU31において起動され実行される。なお、上述の実施の形態と同様の処理部分については、説明を簡略化している。
【0128】
通信制御処理が開始されると、はじめにNAT種別特定処理が実行される(S11)。NAT種別特定処理では、通信システム1内にあるNAT装置2〜8のNAT種別が特定される(図9参照)。NAT種別特定処理の後、特定されたNAT種別が第一テーブルに記憶される(S13)。次いで、通信システム1内の全てのNAT装置2〜8のNAT種別が特定されたかが判断される(S15)。すべてのNAT装置2〜8のNAT種別が特定された場合(S15:YES)、次いで、端末装置9〜15の中から、通信グループA及びBの主端末装置を其々選択する主端末選択処理が実行される(S17)。
【0129】
主端末選択処理(S17)の後、主端末装置が通信システム1内から選択できたかが判断される(S211)。NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在する場合、このNAT装置と直接接続する端末装置のうち一台が主端末装置として選択できる。主端末装置が選択できた場合(S211:YES)、選択された主端末装置に対して依頼通知パケットが送信され(S21)、従端末装置間の通信制御が依頼される。依頼通知パケットに対する応答パケットを受信した場合(S23:YES)、従端末装置に対して変更通知パケットが送信される(S25)。そして通信制御処理を終了する。
【0130】
一方、NAT種別がFC NATであるNAT装置、及びARC NATであるNAT装置のいずれも通信システム1内に存在せず、主端末装置を選択できなかった場合(S211:NO)、通信制御装置16自身によって端末装置9〜15間の通信制御が実行される。はじめに、NAT装置2〜8のポート幅を特定するポート幅特定処理(制御装置)が実行される(S213)。
【0131】
図22を参照し、ポート幅特定処理(制御装置)について説明する。はじめに、NAT装置2〜8を介して通信システム1内にある端末装置9〜15に対して、送信先ポート番号を複数通知する為のポート通知パケットが送信される(S91)。次いで、ポート通知パケットを受信した端末装置9〜15から送信されるポート幅検出パケットを、NAT装置2〜8を介して受信したかが判断される(S93)。ポート幅検出パケットが受信された場合(S93:YES)、受信されたポート幅検出パケットのヘッダに含まれている送信元ポート番号に基づいて、NAT装置2〜8のポート幅が算出される(S95)。算出されたポート幅に基づいて、その他の情報記憶領域343に記憶された第二テーブルが更新される(S97)。そしてS93に戻り、上述の処理が繰り返される。
【0132】
一方、ポート幅検出パケットを受信していない場合(S93:NO)、全ての端末装置9〜15からポート幅検出パケットを受信し、すべてのNAT装置2〜8のポート幅が特定されたかが判断される(S99)。ポート幅を特定できていないNAT装置2〜8が残存する場合(S99:NO)、S93に戻り、上述の処理が繰り返される。全ての従NAT装置2〜8のポート幅が特定された場合(S99:YES)、ポート幅特定処理(制御装置)を終了して通信制御処理(図21参照)の処理に戻る。
【0133】
図21に示すように、ポート幅特定処理(制御装置)(S213)が終了した後、パンチパケットの送信順を決定して第三テーブルを作成する処理(送信順決定処理)が実行される(S215)。
【0134】
送信順決定処理では、図18に示すように、はじめに端末装置9〜15に対して基準ポート要求パケットが送信される(S111)。次いで、基準ポート通知パケットを受信したかが判断される(S113)。受信した場合(S113:YES)、受信した基準ポート通知パケットの送信元ポート番号が基準ポート番号として第二テーブルに記憶される(S115)。端末装置9〜15のすべてから基準ポート通知パケットを受信した場合(S117:YES)、第二テーブルに基づいて、第三テーブルが作成される(S119〜S121)。パンチパケットの送信を指示する送信指示パケットが、端末装置9〜15に対して送信される(S125)。送信指示パケットには、S123において作成された第三テーブルの情報が付加される。そして送信順決定処理を終了する。
【0135】
以上説明したように、第一の変形例では、所定のNAT種別であるNAT装置が通信システム1内に存在せず、主端末装置が選択できない場合であっても、通信制御装置16が端末装置9〜15間のパンチパケット通信制御を行う。これによって、主端末装置が選択されない場合であっても、端末装置9〜15間でP2P通信を行うことが可能となる。
<第二の変形例>
【0136】
本発明の第二の変形例について説明する。第二の変形例では、通信グループの主端末装置が選択される場合、同一の通信グループ内にある端末装置が優先して主端末装置として選択される。同一WAN内にある端末装置のうち一台が主端末装置として選択される。
【0137】
図23を参照し、第二の変形例における主端末選択処理について説明する。主端末選択処理は、通信制御装置16のCPU31において実行される通信制御装置から呼び出される。なお、上述の実施の形態と同様の処理部分については、説明を簡略化している。
【0138】
通信制御処理(図8参照)において主端末選択処理(S17)が呼び出されると、はじめに、第一テーブルに記憶されたNAT種別に基づき、NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在するかが判断される(S221)。いずれのNAT種別のNAT装置も通信システム1内に存在しない場合(S221:NO)、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0139】
NAT種別がFC NATであるか、又はARC NATであるNAT装置が存在する場合(S221:YES)、通信グループA及び通信グループB内に、上述の条件に該当するNAT装置が存在するかが判断される(S223)。存在する場合(S223:YES)、該当するNAT装置のうち通信グループA内にあるNAT装置のうち一台が任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、通信グループAの主端末装置として選択される。同様に、上述の条件に該当するNAT装置のうち通信グループB内にあるNAT装置のうち一台が任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、通信グループBの主端末装置として選択される(S255)。そしてS229の処理に進む。
【0140】
一方、上述の条件に該当するNAT装置が通信グループ内に含まれていない場合(S223:NO)、通信グループ外にあるNAT装置から、上述の条件を満たすNAT装置が抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S227)。そしてS229の処理に進む。
【0141】
S229の処理では、主NAT装置のNAT種別がFC NATであるかが判断される(S229)。FC NATである場合(S229:YES)、パンチパケットによる通信が不要であるとされる(S231)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、主NAT装置のNAT種別がFC NATでない場合(S229:NO)、パンチパケットによる通信が必要であるとされる(S233)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0142】
以上説明したように、第二の変形例では、通信グループの主端末装置を選択する場合、同一通信グループ内にある端末装置が優先して選択される。これによって、他の通信グループに属する端末装置が主端末装置として選択されてしまって、該主端末装置に通信負荷がかかってしまうことを防止できる。また、通信グループ内の端末装置のみで通信制御のための通信が行われるので、セキュリティを向上させることができる。
<第三の変形例>
【0143】
本発明の第三の変形例について説明する。第三の変形例では、NAT種別がFC NATであるNAT装置と直接接続する端末装置が、優先して主端末装置として選択される。これによって、主端末装置と従端末装置との間で実行されるパンチパケット通信が不要となるので、ネットワークの通信トラフィックを抑制できる。図24を参照し、第三の変形例における主端末選択処理について説明する。
【0144】
通信制御処理(図8参照)から主端末選択処理(S17)が呼び出されると、はじめに、第一テーブルに記憶されたNAT種別に基づき、NAT種別がFC NATであるNAT装置が通信システム1内に存在するかが判断される(S230)。存在する場合(S230:YES)、通信グループA及びBの其々に対して一台ずつ割り当てるNAT装置が、FC NATのNAT装置の中から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S232)。そしてS239の処理に進む。
【0145】
一方、NAT種別がFC NATであるNAT装置が存在しない場合(S230:NO)、次いで、NAT種別がARC NATであるNAT装置が通信システム1内に存在するかが判断される(S235)。存在する場合(S235:YES)、通信グループA及びBの其々に一台ずつ割り当てらるNAT装置が、ARC NATのNAT装置の中から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S237)。そしてS239の処理に進む。これに対し、NAT種別がARC NATであるNAT装置が通信システム1内に存在しない場合(S235:NO)、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0146】
S239の処理では、主NAT装置のNAT種別がFC NATであるかが判断される(S239)。FC NATである場合(S239:YES)、パンチパケットによる通信が不要であるとされる(S241)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、FC NATでない場合(S239:NO)、パンチパケットによる通信が必要であるとされる(S243)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0147】
以上説明したように、第三の変形例では、NAT種別がFC NATであるNAT装置と直接接続する端末装置が、優先して主端末装置として選択される。NAT種別がFC NATである場合、主端末装置と従端末装置との間でパンチパケットによる通信を行わなくても、主端末装置と従端末装置とはP2P通信を行うことができる。このため、パンチパケットによる通信が不要となるので、パンチパケット通信によってネットワークのトラフィックが増大することを抑制できる。
<第四の変形例>
【0148】
本発明の第四の変形例について説明する。第四の変形例では、NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在しない場合であっても、所定の条件を満たす場合に、主端末装置を選択することが可能となる。図25を参照し、第四の実施の形態における主端末選択処理について説明する。
【0149】
通信制御処理から主端末選択処理が呼び出されると、はじめに、第一テーブルに記憶されたNAT種別に基づき、NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在するかが判断される(S251)。存在する場合(S251:YES)、通信グループA及びBの其々に対して一台ずつ割り当てるNAT装置が、上述の条件を満たすNAT装置から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S253)。そしてS259の処理に進む。
【0150】
S259の処理では、上述において抽出されたNAT装置のNAT種別がFC NATであるかが判断される(S259)。FC NATである場合(S259:YES)、パンチパケットによる通信が不要であるとされる(S261)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、FC NATでない場合(S259:NO)、パンチパケットによる通信が必要であるとされる(S263)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0151】
一方、上述の条件を満たすNAT装置が通信システム1内に存在しない場合(S251:NO)、通信グループ内のNAT装置のNAT種別がすべてPRC NATであるかが判断される(S255)。Sym NATであるNAT装置が含まれている場合には(S255:NO)、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0152】
通信グループ内のNAT装置のNAT種別が全てPRC NATである場合(S255:YES)、通信グループA及びBの其々に対して一台ずつ割り当てるNAT装置が、NAT種別がPRC NATであるNAT装置の中から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S257)。そして、パンチパケットによる通信が必要と特定され(S263)、主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0153】
主端末選択処理が終了した後、通信制御処理(図8参照)において、選択された主端末装置に対して依頼通知パケットが送信される(S21)。ここで上述のように、NAT種別がPRC NATであるNAT装置に基づいて主端末装置が選択された場合には、従NAT装置のNAT ID及びIPアドレスと共に、従NAT装置のポート番号の情報が依頼通知パケットに格納される。図26を参照し、格納される情報について説明する。図26に示すように、NAT ID(「2」「3」「4」)、IPアドレス(「G2」「G3」「G4」)、ポート番号(「Pa2」「Pa3」「Pa4」)、及びパンチパケット通信の要否(「必要」)の情報が、依頼通知パケットに格納される。
【0154】
主端末装置から従端末装置宛てにパンチパケット(主→従)が送信される。パンチパケット(主→従)は、依頼通知パケットによって通知されたポート番号を送信先ポート番号に設定して送信される。次いで、従端末装置から主端末装置に対してパンチパケット(従→主)が送信される。パンチパケット(従→主)は、依頼通知パケットによって通知されたポート番号を送信元ポート番号に設定して送信される。主NAT装置がこのパンチパケット(従→主)を受信する。ここで、主NAT装置が受信したパンチパケット(従→主)のポート番号と、自身が従端末装置に対して転送したパンチパケット(主→従)のポート番号とは一致する。このため主NAT装置は、受信したパンチパケットを主端末装置に対して転送する。これによって、主端末装置と従端末装置との間で通信を行うことが可能となる。
【0155】
以上説明したように、第四の変形例では、同一通信グループ内にあるNAT種別が全てPRC NATである場合に、このNAT装置と直接接続する端末装置のうち一台が主端末装置として選択される。通信制御装置は、依頼通知パケットに従NAT装置のポート番号を格納して主端末装置に送信する。主端末装置では、受信した依頼通知パケットに格納されているポート番号を参照して、従端末装置との間でパンチパケット通信を行う。これによって、送信元ポート番号によってパケット転送の制約を受けるPRC NATのNAT装置のみ存在する場合であっても、主端末装置を選択して従端末装置間の通信制御を実行させることが可能となる。
【符号の説明】
【0156】
1 通信システム
2,3,4,5,6,7,8 NAT装置
9,10,11,12,13,14,15 端末装置
31 CPU
51 CPU
【技術分野】
【0001】
本発明は通信システムに関する。より詳細には、NAT装置の配下にある端末装置間で通信を行う通信システムに関する。
【背景技術】
【0002】
NAT(Network Address Translation)機能を備えた装置(以下「NAT装置」という。)では、LAN側からインターネット側に向かう方向の通信が行われた場合に、所定のポート番号が記憶される。セキュリティ機能が高いNAT装置は、記憶されたポート番号宛てのパケットをインターネット側から受信した場合にのみ、受信したパケットをLAN側に転送するタイプのものがある。従って、それらのNAT装置の配下にある端末装置とのセッションを確立させるためには、NAT装置に記憶されているポート番号を検出し、このポート番号宛てにパケットが送信される必要がある。
【0003】
ポート番号を検出し、異なるNAT装置の配下にある端末装置同士でP2P(Peer to Peer)通信を開始させる為の技術として、例えばUDP Hole Punchingや、UDP Multi Hole Punchingが知られている。また例えば特許文献1に記載の通信システムでは、端末装置からバブルパケットが複数送信され、NAT装置にポート番号が複数記憶される。別のNAT装置の配下にある端末装置は、NAT装置に記憶されたポート番号を特定するために、予想されるポート番号を送信先に設定してパケットを送信する。通信に成功した場合、パケットの送信先として設定されているポート番号が、NAT装置に記憶されているポート番号として特定される。以後、このポート番号を送信先としてパケットが送信される。このようにして、異なるNAT装置の配下にある端末間でP2P通信が開始される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−157941号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら特許文献1に記載の通信システムでは、バブルパケットの送信に際し、基準ポート検出用パケットやポート幅検出用パケットをサーバに対して送信しなければならない。従って、端末装置の数が多くなると、サーバが受信するパケットの数が多くなって通信処理の負荷が増大するという問題点がある。
【0006】
本発明の目的は、サーバの通信処理負荷の増大を抑制しつつ端末装置間でP2P通信を開始させることが可能な通信システムを提供することにある。
【課題を解決するための手段】
【0007】
本発明の第一態様に係る通信システムは、NAT(Network Address Translation)機能を備えたNAT装置の配下の前記内部ネットワークに接続する端末装置と、外部ネットワークを介して前記NAT装置に接続する通信制御装置とを備え、複数の前記NAT装置と、前記NAT装置の配下の端末装置とで構成されるグループである通信グループ内で、異なる前記NAT装置の配下の前記端末装置間で相互にP2P(Peer to Peer)通信が行われる通信システムであって、前記通信制御装置は、前記NAT装置におけるポートマッピングやパケットフィルタリング方法毎に前記NAT装置を種別したNAT種別を、前記NAT装置の配下にある前記端末装置と通信を行うことによって特定する種別特定手段と、前記種別特定手段によって特定された前記NAT種別が所定のNAT種別であるかを判断する種別判断手段と、前記種別判断手段において前記NAT種別が所定のNAT種別であると判断された前記NAT装置の配下の端末装置のうち一の端末装置を、主端末装置として選択する主端末選択手段と、前記主端末選択手段において選択された前記主端末装置に対して、前記通信グループを構成する前記端末装置のうち前記主端末装置以外の端末装置である従端末装置のアドレス情報を少なくとも含む第一通知信号を送信する第一送信手段と、前記従端末装置に対して、前記主端末装置のアドレス情報を少なくとも含む第二通知信号を送信する第二送信手段とを備え、前記端末装置は、前記通信制御装置から送信された前記第一通知信号又は前記第二通知信号を受信する第一受信手段と、前記第一通知信号及び前記第二通知信号に含まれるアドレス情報に基づき、前記第一受信手段において前記第一通知信号を受信した前記主端末装置が、前記第二通知信号を受信した前記従端末装置間の通信制御を行う通信制御手段であって、前記従端末装置同士の通信を行うために前記NAT装置にポート番号を記憶させる通信を前記従端末装置間で実行させる通信制御手段と、前記通信制御手段によって前記従端末装置間で通信が行われることで前記NAT装置に記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行う通信手段とを備えている。
【0008】
第一態様に係る通信システムでは、主端末装置が従端末装置間の通信制御を実行することによって、従端末装置間でP2P通信が可能となる。通信制御装置が従端末装置間の通信制御を行わずに済むので、通信制御装置の通信処理負荷の増大を抑制できる。また、ネットワークのトラフィック集中を抑制できる。
【0009】
また、第一態様において、前記NAT装置は、配下の前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に、基準ポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、パケットの転送を許可する履歴情報として記憶する場合において、前記通信制御手段は、前記従端末装置と直接接続するNAT装置である従NAT装置の前記基準ポート番号及び前記ポート幅を前記主端末装置が取得する取得手段と、前記取得手段において取得された前記基準ポート番号及び前記ポート幅と、前記通信グループ内の複数の前記従NAT装置の其々に対して一意的に割り当てられる順番であって、前記従端末装置から前記従NAT装置を介して他の前記従端末装置に対してパケットが送信される場合の順番である送信順とに基づいて、前記パケットの送信先ポート番号を前記主端末装置が決定する送信先決定手段と、前記送信先決定手段において決定された前記送信先ポート番号と前記送信順とを、前記主端末装置が前記従端末装置に対して送信する第三送信手段と、前記第三送信手段において送信された前記送信先ポート番号と前記送信順とを、前記従端末装置が受信する第二受信手段と、前記第二受信手段において受信した前記送信先ポート番号と前記送信順とに基づいて、前記従端末装置が他の前記従端末装置に対して前記パケットを送信する第四送信手段とを備え、前記通信手段は、前記第四送信手段において送信された前記パケットによって前記従NAT装置の前記履歴情報として記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行ってもよい。このように、主端末装置からの通信制御によって、従端末装置は、P2P通信のために必要となるポート番号のみ従NAT装置に記憶させることができる。従NAT装置に記憶される不要なポート番号宛てに不特定多数のユーザがアクセスすることを防止できるので、従NAT装置のセキュリティ機能が弱まってしまうことを防止できる。また従端末装置は、主端末装置から通知された送信先ポート番号に対してのみパンチパケットを送信すればよいので、パンチパケット通信に要する時間を短縮できる。このため、従端末装置間でP2P通信が可能となる迄の時間を短縮できる。
【0010】
また、第一態様において、前記送信先決定手段は、前記ポート幅と前記送信順とを乗算した値を、前記基準ポート番号に加算することによって、前記送信先ポート番号を決定してもよい。これによって通信制御装置は、簡易な算出方法によって送信先ポート番号を決定することができる。また送信先ポート番号は、従NAT装置毎に一意的に決定されるので、従NAT装置に記憶されるポート番号を最小限に抑えつつ、従端末装置間で確実に通信を行うことができる。
【0011】
また、第一態様において、前記種別判断手段は、前記NAT種別が、送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制約され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであるかを判断してもよい。NAT種別がFull Cone NATまたはAddress-Restricted Cone NATである場合、NAT装置はパケット転送を行う場合に送信元IPアドレスによって制約を受けない。このため、一旦履歴情報としてポート番号が記憶された後は、任意の端末装置が記憶されたポート番号を使用して通信を行うことができる。このため、主端末装置と従端末装置との間で容易に通信を開始することができる。主端末装置は、従端末装置間の通信制御を容易に実行できる。
【0012】
また、第一態様において、前記主端末選択手段は、前記種別判断手段の判断によって前記NAT種別がFull Cone NATであると判断されたNAT装置と、Address-Restricted Cone NATであると判断されたNAT装置との両方が存在する場合には、前記NAT種別がFull Cone NATであるNAT装置の配下にある端末装置のうち一を前記主端末装置として選択してもよい。NAT種別がFull Cone NATである場合、NAT装置はパケット転送を行う場合に送信元IPアドレス及び送信元ポート番号によって制約を受けない。このため、主端末装置と従端末装置杜の間で通信を開始する場合において、特段の開始手順(UDP Hole Punchingなど)を経なくてもよい。従って、NAT種別がFull Cone NATであるNAT装置の配下の端末装置から主端末装置を選択することによって、主端末装置と従端末装置との間で迅速かつ容易に通信を開始させることができる。主端末装置は、従端末装置間の通信制御を迅速に実行できる。
【0013】
また、第一態様において、前記種別判断手段は、前記NAT種別が、送信元IPアドレスもしくは送信元ポート番号によってパケット転送が制約されるPort-Restricted Cone NATであるかを判断し、前記主端末選択手段は、前記種別判断手段の判断によって通信グループの前記端末装置が直接接続されるNAT装置のNAT種別が全てPort-Restricted Cone NATであると判断された場合には、前記NAT種別がPort-Restricted Cone NATであるNAT装置の配下にある前記端末装置のうち一を前記主端末装置として選択してもよい。これによって、前記通信グループ内の前記端末装置が直接接続されるNAT装置のNAT種別が全てPort-Restricted Cone NATである場合であっても、このNAT装置の配下にある端末装置を主端末装置として選択することができる。NAT種別がFull Cone NATまたはAddress-Restricted Cone NATであるNAT装置が存在しない場合であっても、主端末装置に従端末装置間の通信制御を実行させることができるので、通信制御装置に通信負荷がかかってしまうことを防止できる。
【0014】
また、第一態様において、前記主端末選択手段は、前記種別判断手段の判断によってNAT種別が送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制限され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであると判断された前記NAT装置の配下にある端末装置のうち、通信グループ内の端末装置を優先して前記主端末装置として選択してもよい。これによって、他の通信グループ内にある端末装置に通信負荷がかかってしまうことを防止できる。また、通信グループ内の端末装置のみで通信制御のための通信が行われるので、セキュリティを向上させることができる。
【図面の簡単な説明】
【0015】
【図1】通信システム1の概要を示す模式図である。
【図2】通信制御装置16の電気的構成を示すブロック図である。
【図3】第一テーブル3411を示す模式図である。
【図4】NAT装置2の電気的構成を示すブロック図である。
【図5】端末装置9の電気的構成を示すブロック図である。
【図6】第二テーブル5411を示す模式図である。
【図7】第三テーブル5421を示す模式図である。
【図8】通信制御処理を示すフローチャートである。
【図9】NAT種別特定処理を示すフローチャートである。
【図10】主端末選択処理を示すフローチャートである。
【図11】依頼通知パケットに含まれる情報の一例を示す模式図である。
【図12】変更通知パケットに含まれる情報の一例を示す模式図である。
【図13】端末装置処理を示すフローチャートである。
【図14】端末装置処理を示すフローチャートである。
【図15】通信確立処理を示すフローチャートである。
【図16】ポート幅特定処理(端末装置)を示すフローチャートである。
【図17】ポート通知パケットに含まれる情報の一例を示す模式図である。
【図18】送信順決定処理を示すフローチャートである。
【図19】端末装置間でパンチパケットの通信が行われた状態を示す図である。
【図20】端末装置間でP2P通信が行われた状態を示す図である。
【図21】第一の変形例における通信制御処理を示すフローチャートである。
【図22】第一の変形例におけるポート幅特定処理(制御装置)を示すフローチャートである。
【図23】第二の変形例における主端末選択処理を示すフローチャートである。
【図24】第三の変形例における主端末選択処理を示すフローチャートである。
【図25】第四の変形例における主端末選択処理を示すフローチャートである。
【図26】依頼通知パケットに含まれる情報の一例を示す模式図である。
【発明を実施するための形態】
【0016】
以下、本発明に係る通信システム1について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている通信制御装置や端末装置の構成、各種処理のフローチャートなどは、それのみに限定する趣旨ではなく、単なる説明例である。
【0017】
図1を参照し、通信システム1の概要について説明する。通信システム1は、通信制御装置16、NAT装置2〜8、及び端末装置9〜15等を少なくとも備えている。通信制御装置16は、インターネット17と接続している。NAT装置2〜8は、WAN18,19を介してインターネット17と接続している。なおインターネット17とWAN18,19との間には、ファイヤーウォール等が接続されていてもよい。NAT装置2〜8は、配下のLAN21〜27を介して端末装置9〜15等と接続している。
【0018】
図1に示す例では、WAN18にNAT装置2〜5が接続している。NAT装置2は、端末装置9を含む複数の端末装置とLAN21を介して接続している。NAT装置3は、端末装置10を含む複数の端末装置とLAN22を介して接続している。NAT装置4は、端末装置11を含む複数の端末装置とLAN23を介して接続している。NAT装置5は、端末装置12を含む複数の端末装置とLAN24を介して接続している。WAN19にNAT装置6〜8が接続している。NAT装置6は、端末装置13を含む複数の端末装置とLAN25を介して接続している。NAT装置7は、端末装置14を含む複数の端末装置とLAN26を介して接続している。NAT装置8は、端末装置15を含む複数の端末装置とLAN27を介して接続している。
【0019】
また、端末装置9〜12等は、共通のWAN18に接続する端末装置のグループ(以下「通信グループ」という。)Aを形成している。同様に、端末装置13〜15は、共通のWAN19に接続する通信グループBを形成している。通信グループ内にある端末装置間で、P2P(Peer to Peer)通信が行われる。これによって例えば、共通の通信グループ内にある端末装置間でテレビ会議等が実行される。
【0020】
なお本実施の形態では、共通のWAN18,19に接続する端末装置が通信グループを形成しているが、本発明はこの構成に限定されない。互いに離れた場所に配置され、インターネットを介して接続するような端末装置同士が通信グループを形成させてもよい。
【0021】
通信制御装置16は、端末装置9〜15等の間でP2P通信を行うために必要な通信制御を行う。通信制御装置16としては、例えば呼制御サーバやSTUNサーバが使用できる。端末装置9〜15等は、通信制御装置16による通信制御に基づいて、他の端末装置との間でP2P通信を行う。端末装置9〜15等としては、例えばPC(パーソナルコンピュータ)が使用できる。
【0022】
NAT装置2〜8は、NAT(Network Address Translation)機能を備えた装置である。NAT装置2〜8は、LAN21〜27側からWAN18,19側に向かう方向のパケットを端末装置9〜15等から受信した場合に、パケットのヘッダに含まれている送信元IPアドレスと送信元ポート番号とを変換する。変換後の送信元ポート番号は、履歴情報としてNAT装置2〜8に記憶される。記憶されたポート番号は、WAN18,19側からLAN21〜27側に向かう方向のパケットを受信した場合において、該パケットをLAN21〜27側に転送するか否かを判断する場合に使用される。なお本実施の形態では、LAN21〜27側からWAN18,19側に向かう方向のパケットをNAT装置2〜8が受信した場合、この時点で履歴情報に記憶されている最新のポート番号に所定の変化量(以下「ポート幅」という。)を加算する演算が行われる。算出されたポート番号は、変換後の送信元ポート番号としてパケットのヘッダに格納されるとともに、履歴情報として記憶される。
【0023】
NAT装置2〜8としては、ポートマッピングやパケットフィルタリング方法毎に種別したNAT種別がCone NAT(Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT)やSymmetric NATであるNAT装置が使用できる。Full Cone NATであるNAT装置は、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、受信したパケットのヘッダに含まれている送信元IPアドレス及び送信元ポート番号の制約を受けない。Address-Restricted Cone NATであるNAT装置は、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、送信元ポート番号の制約を受けないが、送信元IPアドレスに基づいてパケットをブロックする。Port-Restricted Cone NATは、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、送信元IPアドレスの制約を受けないが、送信元ポート番号に基づいてパケットをブロックする。Symmetric NATであるNAT装置は、WAN18,19側から受信したパケットをLAN21〜27側に転送する場合において、送信元IPアドレス及び送信元ポート番号に基づいてパケットをブロックする。
【0024】
異なるNAT装置2〜8の配下にある端末装置9〜15等の間でP2P通信を行うためには、通信相手方の端末装置と直接接続するNAT装置2〜8に履歴情報として記憶されているポート番号(NAT装置2〜8がLAN21〜27側からWAN18,19側にパケットを転送した場合において、NAT装置2〜8がパケットのヘッダに格納したポート番号に相当)を、端末装置が知る必要がある。NAT装置2〜8は、履歴情報として記憶されているポート番号と同一の送信先ポート番号がヘッダに格納されたパケットをWAN18,19側から受信した場合にのみ、受信したパケットをLAN21〜27側に転送するためである。
【0025】
端末装置9〜15がNAT装置2〜8に記憶されているポート番号を認識する為の手段として、例えば次の周知な方法が使用できる。端末装置9〜15等は、NAT装置2〜8を介してLAN21〜27側からWAN18,19側にパケットを送信することによって、NAT装置2〜8にポート番号を記憶させる(NAT装置2〜8にポート番号を記憶させるために、端末装置9〜15等から送信されるパケットを、以下「パンチパケット」という。)。実際に端末装置9〜15等の間でP2P通信が行われる場合には、パンチパケットをNAT装置2〜8が転送した場合にNAT装置2〜8に記憶されたポート番号に対して、他のNAT装置2〜8の配下にある端末装置9〜15からパケットが送信される。
【0026】
ここで本実施の形態では、通信制御装置16によって選択された特定の端末装置(以下「主端末装置」という。)によって、通信グループ内でのパンチパケットの通信制御が行われる。これによって、効率的にNAT装置2〜8にポート番号を記憶させることができる。また、通信制御装置16の代わりに主端末装置がパンチパケットの通信制御を行うことによって、通信制御装置16に通信負荷が集中してしまうことを防止している。
【0027】
なお、図1におけるインターネット17及びWAN18,19が、本発明の「外部ネットワーク」に相当し、LAN21〜27が本発明の「内部ネットワーク」に相当する。なお本発明は、外部ネットワークとしてインターネット17及びWAN18,19の他に従来周知の様々なネットワーク(LAN、WAN、専用回線など)が使用できる。同様に、内部ネットワークとしてLAN21〜27の他に従来周知のネットワーク(インターネット、WAN、専用回線など)が使用できる。
【0028】
図2を参照し、通信制御装置16の電気的構成について説明する。通信制御装置16は、CPU31、ROM32、RAM33、HDD34を備えている。CPU31は、NAT装置2〜8や端末装置9〜15との通信を制御する。ROM32には、Bootプログラムや初期設定パラメータが少なくとも記憶される。RAM33には、CPU31の処理時に発生する一時的なデータが少なくとも記憶される。HDD34は、第一テーブル記憶領域341、プログラム記憶領域342、及びその他の情報記憶領域343を少なくとも備えている。第一テーブル記憶領域341には、端末装置9〜15と通信を行うために必要となるNAT装置2〜8のアドレス情報やNAT種別等に関する情報が格納された第一テーブルが記憶される。プログラム記憶領域342には、CPU31のプログラムが記憶される。その他の情報記憶領域343には、上述の情報以外の情報が記憶される。CPU31は、ROM32、RAM33、及びHDD34と電気的に接続している。CPU31は、ROM32、RAM33、及びHDD34の記憶領域にアクセスできる。
【0029】
通信制御装置16は、入力ドライバ35を備えている。入力ドライバ35は、キーボード351を介して入力された情報を検出する。CPU31は、入力ドライバ35と電気的に接続している。入力ドライバ35は、キーボード351と電気的に接続する。CPU31は、キーボード351を介して入力された情報を認識できる。通信制御装置16は、表示ドライバ36を備えている。表示ドライバ36は、ディスプレイ361に像を表示させるための制御を行う。CPU31は、表示ドライバ36と電気的に接続している。表示ドライバ36は、ディスプレイ361と電気的に接続する。CPU31は、ディスプレイ361に所望の像を表示させることができる。
【0030】
通信制御装置16は、通信モジュール37を備えている。通信モジュール37は、インターネット17を介した通信を可能とする。CPU31は、通信モジュール37と電気的に接続している。CPU31は、インターネット17を介して通信を行うことができる。通信制御装置16は、ディスクドライブ38を備えている。ディスクドライブ38は、記憶媒体381に記憶された情報にアクセスする為の駆動装置である。CPU31は、ディスクドライブ38と電気的に接続している。CPU31は、ディスクドライブ38に記憶媒体381が挿入された状態で、記憶媒体381に記憶された情報にアクセスできる。記憶媒体381には、例えば、CPU31が実行するプログラムが記憶される。記憶媒体381の導入時には、プログラムが記憶媒体381からHDD34のプログラム記憶領域342にセットアップされる。
【0031】
図3を参照し、第一テーブルの一例である第一テーブル3411について説明する。第一テーブル3411には、NAT装置2〜8を特定するID情報(「NAT ID」という。)、NAT装置2〜8のIPアドレス、ポート番号、及びNAT種別が、通信グループ毎に格納される。IPアドレスとしては、NAT装置2〜8のWAN18,19側に設定されるIPアドレスが格納される。ポート番号としては、通信制御装置16が端末装置9〜15等と通信を行う場合に使用可能なポート番号が格納される。なお図3のNAT種別のうち、「FC NAT」は「Full Cone NAT」を示している。同様に、「ARC NAT」はAddress-Restricted Cone NATを示している。「Sym NAT」はSymmetric NATを示している。第一テーブル3411に記憶されている情報は、端末装置9〜15と通信を行うために必要なアドレス情報として参照される。
【0032】
図3に示す例では、通信グループAに属するNAT装置として「2」「3」「4」「5」が格納され、通信グループBに属するNAT装置として「6」「7」「8」が格納されている。なおこれらのNAT IDにて特定されるNAT装置は、図1におけるNAT装置2〜8にそれぞれ相当する。NAT装置2(NAT ID:2)のIPアドレスは「G2」であり、ポート番号は「Pa2」である。NAT種別はARC NATである。
【0033】
なお以下、Full Cone NATを「FC NAT」と呼ぶ。Address-Restricted Cone NATを「ARC NAT」と呼ぶ。Port-Restricted Cone NATを「PRC NAT」と呼ぶ。Symmetric NATを「Sym NAT」と呼ぶ。
【0034】
図4を参照し、NAT装置2の電気的構成について説明する。なお、NAT装置3〜8の電気的構成についても同様である。NAT装置2は、CPU41、ROM42、RAM43、フラッシュメモリ44を備えている。CPU41は、通信制御装置16や端末装置9〜15との通信を制御する。ROM42には、CPU41のプログラムが少なくとも記憶される。RAM43には、CPU41の処理時に発生する一時的なデータが少なくとも記憶される。フラッシュメモリ44には、ポート番号が履歴情報として記憶される。CPU41は、ROM42、RAM43、及びフラッシュメモリ44と電気的に接続している。CPU41は、ROM42、RAM43、及びフラッシュメモリ44の記憶領域にアクセスできる。
【0035】
NAT装置2は、表示部45を備えている。表示部45は、NAT装置2の状態等を表示することができる。CPU41は、表示部45と電気的に接続している。CPU41は、表示部45に所望の情報を表示させることができる。表示部45としては、例えばLEDが使用できる。NAT装置2は、入力部46を備えている。入力部46は、ユーザによるNAT装置2への入力操作を受け付ける。CPU41は、入力部46と電気的に接続している。CPU41は、入力部46を介して入力された情報を認識できる。入力部46としては、例えばスイッチやタッチセンサが使用できる。
【0036】
NAT装置2は、通信モジュール47を備えている。通信モジュール47は、WAN18,19を介した通信を可能とする。CPU41は、通信モジュール47と電気的に接続している。CPU41は、WAN18,19を介して通信を行うことができる。NAT装置2は、通信モジュール48を備えている。通信モジュール48は、LAN21〜27を介した通信を可能とする。CPU41は、通信モジュール48と電気的に接続している。CPU41は、LAN21〜27を介して通信を行うことができる。
【0037】
図5を参照し、端末装置9の電気的構成について説明する。なお、端末装置10〜15等の電気的構成についても同様である。端末装置9は、CPU51、ROM52、RAM53、HDD54を備えている。CPU51は、NAT装置2〜8や通信制御装置16との通信を制御する。ROM52には、Bootプログラムや初期パラメータが少なくとも記憶される。RAM53は、CPU51の処理時に発生する一時的なデータが少なくとも記憶される。HDD54には、第二テーブル記憶領域541、第三テーブル記憶領域542、プログラム記憶領域543、及びその他の情報記憶領域544を少なくとも備えている。
【0038】
第二テーブル及び第三テーブルは、主端末装置として選択された端末装置において作成され、第二テーブル記憶領域541及び第三テーブル記憶領域542に記憶される。第二テーブル記憶領域541には、自身が通信制御を行う通信グループ内にあるNAT装置のポート幅等に関する情報が第二テーブルとして記憶される。第三テーブル記憶領域542には、自身が通信制御を行う通信グループ内にある端末装置9〜15から送信されるパンチパケットの送信先の情報が第三テーブルとして記憶される。プログラム記憶領域543には、CPU51のプログラムが記憶される。CPU51は、ROM52、RAM53、及びHDD54と電気的に接続している。CPU51は、ROM52、RAM53、及びHDD54の記憶領域にアクセスできる。
【0039】
端末装置9は、入力ドライバ55を備えている。入力ドライバ55は、キーボード551を介して入力された情報を検出する。CPU51は、入力ドライバ55と電気的に接続している。入力ドライバ55は、キーボード551と電気的に接続する。CPU51は、キーボード551を介して入力された情報を認識できる。端末装置9は、表示ドライバ56を備えている。表示ドライバ56は、ディスプレイ561に像を表示させるための制御を行う。CPU51は、表示ドライバ56と電気的に接続している。表示ドライバ56は、ディスプレイ561と電気的に接続する。CPU51は、ディスプレイ561に所望の像を表示させることができる。
【0040】
端末装置9は、通信モジュール57を備えている。通信モジュール57は、LAN21〜27を介した通信を可能とする。CPU51は、通信モジュール57と電気的に接続している。CPU51は、LAN21〜27を介して通信を行うことができる。端末装置9は、ディスクドライブ58を備えている。ディスクドライブ58は、記憶媒体581に記憶された情報にアクセスする為の駆動装置である。CPU51は、ディスクドライブ58と電気的に接続している。CPU51は、ディスクドライブ58に記憶媒体581が挿入された状態で、記憶媒体581に記憶された情報にアクセスできる。記憶媒体581には、例えば、CPU51が実行するプログラムが記憶される。記憶媒体581の導入時には、プログラムが記憶媒体581からHDD54にセットアップされる。
【0041】
図6を参照し、第二テーブルの一例である第二テーブル5411について説明する。第二テーブル5411は、通信グループAの主端末装置として端末装置9が選択された場合において、端末装置9によって作成される第二テーブルを示している。第二テーブル5411には、NAT ID、NAT装置2〜8のIPアドレス、ポート幅、及び基準ポート番号が格納される。基準ポート番号は、パンチパケットが送信される場合に基準となるポート番号を示す(詳細は後述する。)。
【0042】
図6に示す例では、NAT IDとして、通信グループA内にあるNAT装置のNAT ID「3」「4」「5」が格納される(端末装置9と直接接続するNAT装置2は除かれる)。NAT装置3(NAT ID:3)のIPアドレスは「G3」である。ポート幅は「W3」である。基準ポート番号は「Pb3」である。
【0043】
図7を参照し、第三テーブルの一例である第三テーブル5421について説明する。第三テーブル5421は、通信グループAの主端末装置として端末装置9が選択された場合において、端末装置9によって作成される第三テーブルを示している。第二テーブルには、NAT ID、パンチパケットの送信先として指定するNAT装置2〜8のNAT ID(第一送信先ID、第二送信先ID)、各送信先IDにて特定されるNAT装置2〜8に対してパンチパケットを送信する場合にヘッダに格納される送信先IPアドレス及び送信先ポート番号が格納される。なお、第一送信先ID及び第二送信先IDは、パンチパケットの送信順を示している。はじめに第一送信先IDのNAT装置2〜8に対してパンチパケットが送信され、次いで第二送信先IDのNAT装置2〜8に対してパンチパケットが送信される(後述)ので、第一送信先IDが「送信順:1」に相当し、第二送信先IDが「送信順:2」に相当する。
【0044】
図7に示す例では、NAT IDとして、通信グループA内にあるNAT装置のNAT ID「3」「4」「5」が格納されている。NAT IDが「3」に対応するNAT装置3の第一送信先IDとして「4」(NAT装置4)が記憶されている。NAT装置4宛てにパンチパケットを送信する場合の送信先IPアドレスは「G4」であり、送信先ポート番号は「Pb4+W4」である。また、NAT装置3の第二送信先IDとして「5」(NAT装置5)が記憶されている。NAT装置5宛てにパンチパケットを送信する場合の送信先IPアドレスは「G5」であり、送信先ポート番号は「Pb5+W5」である。
【0045】
なお図7には、第一送信先ID及び第二送信先IDが格納された第三テーブル5421が示されているが、本発明はこの構成に限定されない。端末装置の台数に応じて、格納される送信先IDの数は変化する。
【0046】
通信制御装置16のCPU31において実行される通信制御処理について、図8〜10を参照して説明する。通信制御処理は、通信制御装置16の電源が投入された場合に、CPU31によって起動され実行される。
【0047】
なおNAT装置2〜8には、通信制御装置16と端末装置9〜15等とが通信を行うためのポート番号が履歴情報として予め記憶されているものとする。通信制御装置16は、NAT装置2〜8に履歴情報として記憶されているポート番号と、NAT装置2〜8のIPアドレスとを予め認識しているものとする。また通信制御装置16は、通信グループと、通信グループ内にあるNAT装置2〜8及び端末装置9〜15等を認識しているものとする。なおこれらの情報は第一テーブルに記憶される。例えば図3のうち、NAT ID、及びIPアドレス/ポート番号の情報が格納された状態の第一テーブル3411が、予め第一テーブル記憶領域341に記憶されていることになる。
【0048】
通信制御処理が起動されると、はじめに、NAT装置2〜8のNAT種別を特定する処理(NAT種別特定処理)が実行される(S11)。図9を参照し、NAT種別特定処理について説明する。はじめに、端末装置9〜15等からNAT装置2〜8を介して通信制御装置16に対して送信される二つのパケット(「第一パケット」及び「第二パケット」という。)を受信したかが判断される(S41)。端末装置9〜15は、第一パケット及び第二パケットのパケットヘッダの送信先IPアドレスに同一のIPアドレス(通信制御装置16のIPアドレス)を設定し、且つパケットヘッダの送信先ポート番号に、其々異なるポート番号(通信制御装置16のポート番号)を設定する(S131:図13)。第一パケット及び第二パケットを受信していない場合(S41:NO)、S41に戻る。継続して第一パケット及び第二パケットの受信が監視される。
【0049】
第一パケット及び第二パケットを受信した場合(S41:YES)、受信した第一パケット及び第二パケットのヘッダに含まれている送信元ポート番号に基づいて、第一パケット及び第二パケットを転送したNAT装置(以下「対象NAT装置」という。)におけるWAN18,19側のポート番号が特定される。特定されたポート番号に基づいて、対象NAT装置のNAT種別の特定が試みられる。送信元ポート番号は、第一パケット及び第二パケットを対象NAT装置が転送する場合に変換されるので、特定されるポート番号の態様から、対象NAT種別が特定可能となる。
【0050】
第一パケット及び第二パケットのヘッダに含まれている送信元ポート番号が一致するかが判断される(S43)。送信元ポート番号が一致しない場合(S43:NO)、対象NAT装置は、送信先ポート番号の異なる2つのパケットをLAN21〜27側からWAN18,19側に転送する場合に、異なるポート番号を割り当てたことになる。従って、このようなポート番号の変換を行うNAT種別としてSym NATが特定される(S49)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0051】
一方、第一パケット及び第二パケットのヘッダに含まれている送信元ポート番号が一致する場合(S43:YES)、該送信元ポート番号(対象NAT装置において第一パケット及び第二パケットが転送された場合に、対象NAT装置に記憶されたポート番号に相当)を送信先ポート番号に設定したパケット(「第三パケット」という。)が作成される。作成された第三パケットが、対象NAT装置を介して端末装置9〜15等に対して送信される。第三パケットは、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスとは異なるIPアドレスがヘッダの送信元IPアドレスとして格納され、第一パケット及び第二パケットのヘッダに含まれていた送信先ポート番号とは異なるポート番号がヘッダの送信元ポート番号として格納され、送信される(S45)。第三パケットに対する応答パケットの受信の有無を判断することによって、対象NAT種別の特定が試みられる。
【0052】
第三パケットを送信してからの経過時間を監視するために、タイマの更新がスタートされる(S47)。次いで、第三パケットを受信した端末装置9〜15等から返信される応答パケットを、対象NAT装置を介して受信したかが判断される(S51)。受信していない場合(S51:NO)、タイマの値に基づき、第三パケットを送信してからの経過時間が所定時間以上となったかが判断される(S53)。タイマの値が所定値未満であり、経過時間が所定時間未満である場合(S53:NO)、S51の処理に戻る。継続して応答パケットの受信が監視される。
【0053】
経過時間が所定時間未満の状態で、対象NAT装置を介して応答パケットを受信した場合(S51:YES)、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスとは異なるIPアドレスが送信元IPアドレスとして格納された第三パケットを、対象NAT装置がWAN18,19側からLAN21〜27側に転送していることになる。従って。このような動作を行うNAT種別としてFC NATが特定される(S55)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0054】
一方、第三パケットを送信してから所定時間経過しても応答パケットを受信できない場合(S53:YES)、第一パケット及び第二パケットの送信元ポート番号を送信先ポート番号に設定したパケット(「第四パケット」という。)が作成される。作成された第四パケットが、対象NAT装置を介して端末装置9〜15等に対して送信される。第四パケットは、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスと同一のIPアドレスがヘッダの送信元IPアドレスとして格納され、第一パケット及び第二パケットのヘッダに含まれていた送信先ポート番号とは異なるポート番号がヘッダの送信元ポート番号として格納され、送信される(S57)。第四パケットに対する応答パケットの受信の有無を判断することによって、対象NAT装置2〜8のNAT種別の特定が試みられる。
【0055】
第四パケットを送信してからの経過時間を監視するために、タイマの更新がスタートされる(S59)。次いで、第四パケットを受信した端末装置9〜15等から返信される応答パケットを、対象NAT装置を介して受信したかが判断される(S61)。受信していない場合(S61:NO)、タイマの値に基づき、第四パケットを送信してからの経過時間が所定時間以上となったかが判断される(S63)。タイマの値が所定値未満であり、経過時間が所定時間未満である場合(S63:NO)、S61に戻る。継続して応答パケットの受信が監視される。
【0056】
経過時間が所定時間未満の状態で、対象NAT装置を介して応答パケットを受信した場合(S61:YES)、対象NAT装置は、第一パケット及び第二パケットのヘッダに含まれていた送信先IPアドレスとは異なるIPアドレスが送信元IPアドレスとして格納された第三パケットは、WAN18,19側からLAN21〜27側に転送しない。しかしながら、第一パケット及び第二パケットのヘッダに含まれていた送信先IPドレスと同一のIPアドレスが送信元IPアドレスとして格納された第四パケットは、WAN18,19側からLAN21〜27側に転送している。従って、このような動作を行うNAT種別としてARC NATが特定される(S65)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0057】
一方、第四パケットを送信してから所定時間経過しても応答パケットを受信できない場合(S63:YES)、第一パケット及び第二パケットのヘッダに含まれていた送信先ポート番号とは異なるポート番号を送信元ポート番号に設定した第三パケット及び第四パケットは、いずれも対象NAT装置においてブロックされていることになる。従って、このような動作を行うNAT種別としてPRC NATが特定される(S67)。そしてNAT種別特定処理を終了し、通信制御処理(図8参照)に戻る。
【0058】
図8に示すように、NAT種別特定処理(S11)の後、特定された対象NAT装置のNAT種別が第一テーブルに記憶される(S13)。次いで、通信システム1内の全てのNAT装置2〜8のNAT種別が特定されたかが判断される(S15)。NAT種別を特定できていないNAT装置2〜8が残存する場合(S15:NO)、S11に戻る。そして残りのNAT装置2〜8のNAT種別を特定する為に上述の処理が繰り返される。一方、すべてのNAT装置2〜8のNAT種別が特定された場合(S15:YES)、次いで、端末装置9〜15の中から、通信グループA及びBに対して主端末装置を其々選択する処理(主端末選択処理)が実行される(S17)。
【0059】
図10を参照し、主端末選択処理について説明する。主端末選択処理では、NAT装置2〜8のNAT種別に基づいて主端末装置が選択される。NAT種別がPRC NATやSym NATであるNAT装置の場合、受信したパケットのヘッダに含まれている送信元ポート番号に基づいて、該パケットを転送するか否かが判断される。送信元ポート番号は、NAT装置によって変換される可能性があるので、通信グループ内の他の端末装置(以下「従端末装置」という。)から送信されたパケットが主端末装置に到達せず、主端末装置が従端末装置の通信制御を行うことができない可能性がある。これに対し、NAT種別がFC NATやARC NATであるNAT装置の場合、受信したパケットの送信元ポート番号に依存せず、該パケットをWAN18,19側からLAN21〜27側に転送することができる。従端末装置から送信されたパケットは確実に主端末装置に到達する。従って本実施の形態では、NAT種別がFC NATやARC NATであるNAT装置を抽出し、抽出したNAT装置の配下にある端末装置を主端末装置として選択する。これによって、存在するNAT種別に応じて最適な端末装置を主端末装置として選択することができる。
【0060】
NAT種別がFC NATであるか、又はARC NATであるNAT装置が、通信システム1内に存在するかが、第一テーブルのNAT種別に基づいて判断される(S71)。いずれのNAT種別のNAT装置も通信システム1内に存在しない場合(S71:NO)、主端末装置を特定できないので、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0061】
NAT種別がFC NATであるか、又はARC NATであるNAT装置が存在する場合(S71:YES)、通信グループA及びBの其々に一台ずつ割り当てるNAT装置が、上述の条件に該当するNAT装置から任意で抽出される。抽出されたNAT装置の配下にある端末装置のうち一台が、任意で選択される。選択された端末装置が主端末装置とされる(S73)。このようにして、通信グループAの主端末装置知と、通信グループBの主端末装置とが選択される。そしてS75の処理に進む。
【0062】
S75の処理では、選択された主端末装置と直接接続するNAT装置(以下「主NAT装置」という。)のNAT種別がFC NATであるかが判断される(S75)。FC NATである場合(S75:YES)、主NAT装置に記憶されたポート番号は、任意の端末装置が送信先ポート番号として使用することができる。このため、パンチパケットによる通信が不要であるとされる(S77)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、FC NATでない(ARC NATである)場合(S75:NO)、主NAT装置では、受信したパケットのヘッダに含まれている送信元IPアドレスに基づいてパケット転送の可否が判断されるので、パンチパケットによる通信が必要であるとされる(S79)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0063】
図3の第一テーブル3411に基づき主端末装置が選択される場合を例示して説明する。NAT種別がFC NATであるか、又はARC NATであるNAT装置として、NAT装置2及びNAT装置7が該当する。通信グループAにNAT装置2が割り当てられる。通信グループBにNAT装置7が割り当てられる。NAT装置2の配下にある端末装置のうち端末装置9が、通信グループAの主端末装置として選択される(以下、主端末装置として選択された端末装置9を「主端末装置9」という。)。NAT装置7の配下にある端末装置のうち端末装置14が、通信グループBの主端末装置として選択される(以下、主端末装置として選択された端末装置14を「主端末装置14」という。)。
【0064】
選択された主端末装置9に接続されたNAT装置2(以下「主NAT装置2」という。)のNAT種別はARC NATである。従って、主端末装置9と従端末装置とが通信を行う場合には、パンチパケットによる通信が必要であるとされる。一方、選択された主端末装置14の主NAT装置のNAT種別はFC NATである。従って、主端末装置14と従端末装置とが通信を行う場合には、パンチパケットによる通信が不要であるとされる。
【0065】
なお上述の例では、通信グループの主端末装置を選択する場合、対象とする通信グループに属する端末装置が選択されていた。しかしながら本発明はこの方法に限定されない。一の通信グループの主端末装置を、他の通信グループ内にある端末装置の中から選択してもよい。
【0066】
図8に示すように、通信制御処理では、主端末選択処理(S17)が終了した後、主端末装置として動作することを依頼する依頼通知パケットが、選択された主端末装置に対して送信される(S21)。依頼通知パケットには、主端末装置が対象とする通信グループ内にあるNAT装置(但し、主NAT装置を除く。以下「従NAT装置」という。)のIPアドレスと、パンチパケットによる通信の要否を示す情報とが格納される。これらの情報は、主端末装置が従端末装置と通信を行うためのアドレス情報(従端末装置のアドレス情報)に相当する。
【0067】
依頼通知パケットに格納される情報について、図11を参照して説明する。図11では、通信グループAの主端末装置として選択されたことを端末装置9に対して通知する依頼通知パケットに格納される情報が示されている。依頼通知パケットには、通信グループA内にあるNAT装置2〜5のうち、主NAT装置2を除くNAT装置3〜5のIPアドレス(NAT装置3:G3、NAT装置4:G4、NAT装置5:G5)が格納される。なおこれらの情報は、図3の第一テーブル3411に格納された情報に基づいている。また、主NAT装置2のNAT種別はARC NATであるので、パンチパケットによる通信が必要である旨を示す情報が格納される。依頼通知パケットを受信した主端末装置9では、従NAT装置であるNAT装置3〜5(以下「従NAT装置3〜5」という。)に関する情報を認識できるので、従NAT装置3〜5を介して通信グループA内の従端末装置である端末装置10〜12(以下、「従端末装置10〜12」という。)と通信を行うことが可能となる。
【0068】
図8に示すように、依頼通知パケットが主端末装置に対して送信された後、依頼通知パケットに応じて主端末装置から返信される応答パケットの受信が監視される(S23)。受信しない場合(S23:NO)、S23に戻り、応答パケットの受信が継続して監視される。一方、応答パケットを受信した場合(S23:YES)、次いで、従端末装置に対して、主端末装置が選択されたことを通知する変更通知パケットが送信される(S25)。変更通知パケットには、主NAT装置のIPアドレスとポート番号とが格納される。これらの情報は、従端末装置が主端末装置と通信を行うためのアドレス情報(主端末装置のアドレス情報)に相当する。そして通信制御処理は終了する。
【0069】
変更通知パケットに格納される情報について、図12を参照して説明する。図12では、主端末装置9が選択されたことを通知するために、通信グループAに属する従端末装置10〜12に対して送信される変更通知パケットに格納される情報が示されている。変更通知パケットには、主NAT装置2のIPアドレス(G2)及びポート番号(Pa2)が格納される。なおこれらの情報は、図3の第一テーブル3411に格納された情報に基づいている。変更通知パケットを受信した従端末装置10〜12では、主NAT装置2に関する情報を認識できるので、主NAT装置2を介して主端末装置9と通信を行うことが可能となる。
【0070】
図13〜図17を参照し、端末装置9〜15のCPU51において実行される端末装置処理について説明する。端末装置処理は、端末装置9〜15の電源が投入された場合において、CPU51において起動され実行される。図13に示すように、端末装置処理が起動されると、はじめに、通信制御装置16に対して第一パケット及び第二パケットが送信される。第一パケット及び第二パケットは、通信制御装置16の有するIPアドレスのうち共通のIPアドレスをパケットヘッダの送信先IPアドレスに設定し、且つ、其々異なるポート番号をパケットヘッダの送信先ポート番号に設定して送信される(S131)。
【0071】
通信制御装置16から返信される第三パケット及び第四パケットを、NAT装置2〜8を介して受信したかが判断される(S135)。いずれかのパケットを受信した場合(S135:YES)、NAT装置2〜8を介して通信制御装置16に対して応答パケットが送信される(S137)。そしてS135の処理に戻り、上述の処理が繰り返される。通信制御装置16では、応答パケットの受信の有無に基づいて、パケットを転送したNAT装置のNAT種別が特定される(図9参照)。
【0072】
いずれのパケットも受信していない場合(S135:NO)、第一パケット及び第二パケットを送信してから所定時間が経過したかが判断される(S138)。所定時間が経過していない場合(S138:NO)、S135の処理に戻り、上述の処理が繰り返される。
【0073】
第一パケット及び第二パケットを送信してから所定時間経過した場合(S138:YES)、通信制御装置16からNAT装置2〜8を介して依頼通知パケットを受信したかが判断される(S139)。受信した場合(S139:YES)、自身が主端末装置として選択されたことになる。従端末装置間の通信制御を行う通信確立処理(S141)が実行される。
【0074】
図15を参照し、通信確立処理について説明する。なお以下、端末装置9が通信グループAの主端末装置として選択されたことを想定し、主端末装置9のCPU51において実行される処理について説明する。通信グループAに属する他の端末装置10〜12が、従端末装置10〜12に相当する。
【0075】
通信確立処理では、はじめに、S139(図13参照)において受信した依頼通知パケットに含まれている情報(図11参照)に基づいて、第二テーブル記憶領域541に記憶されている第二テーブルが更新される(S181)。具体的には、依頼通知パケットに含まれているNAT IDとIPアドレスとが、第二テーブルに格納される。
【0076】
例えば、図11に示す情報が依頼通知パケットに含まれていた場合には、これらの情報のうちNAT ID「3」「4」「5」とIPアドレス「G3」「G4」「G5」の情報が、第二テーブルのNAT ID及びIPアドレスとして格納される。結果、第二テーブルは、図6に示す第二テーブル5411のうちNAT ID及びIPアドレスが格納された状態になる。
【0077】
次いで、主端末装置9が従端末装置10〜12と通信を行うに際し、パンチパケットによる通信が必要であるかが、依頼通知パケットに含まれている情報に基づいて判断される(S183)。パンチパケットによる通信が不要である旨の情報が依頼通知パケットに格納されている場合(S183:NO)、そのままS187の処理に進む。
【0078】
一方、パンチパケットによる通信が必要である旨の情報が依頼通知パケットに格納されている場合(S183:YES)、主NAT装置2、及び従NAT装置3〜5を介して従端末装置10〜12に対してパンチパケットを送信し、主NAT装置2にポート番号を記憶させる必要がある。従端末装置10〜12に対してパンチパケットが送信される(S185)。送信されたパンチパケットは、主NAT装置2及び従NAT装置3〜5を経由して、従端末装置10〜12に到達する。主NAT装置2には、主端末装置9が従端末装置10〜12と通信を行うためのポート番号が記憶される。同様に、従端末装置10〜12から、従NAT装置3〜5、及び主NAT装置2を介して主端末装置9に対してパンチパケットが送信される。従NAT装置3〜5には、従端末装置10〜12が主端末装置9と通信を行うためのポート番号が記憶される。これによって、主端末装置9と従端末装置10〜12とは、互いに通信を行うことが可能な状態となる。そしてS187の処理に進む。
【0079】
S187では、依頼通知パケットに対する応答パケットが通信制御装置16に対して送信される(S187)。次いで、従NAT装置3〜5のポート幅を特定する処理(ポート幅特定処理(端末装置))が実行される(S189)。
【0080】
図16を参照し、ポート幅特定処理(端末装置)について説明する。はじめに、従端末装置10〜12から送信されるポート通知依頼パケットを、従NAT装置3〜5及び主NAT装置2を介して受信したかが判断される(S201)。ポート通知依頼パケットは、変更通知パケットを受信した従端末装置10〜12から送信される(S147:図13)。ポート通知依頼パケットを受信した場合(S201:YES)、ポート通知依頼パケットを送信した従端末装置10〜12に対して、送信先ポート番号を複数通知する為のポート通知パケットが送信される(S203)。そしてS201に戻り、上述の処理が繰り返される。
【0081】
主端末装置9から送信されるポート通知パケットの一例について、図17を参照して説明する。ポート通知パケットには、ポート番号が複数格納されている。図17では、通知するポート番号として「Pa2+1」「Pa2+2」「Pa2+3」「Pa2+4」が示されている。これらのポート番号は、従端末装置10〜12が主端末装置9に対してポート幅検出パケットを送信する場合に参照される(詳細後述)。
【0082】
一方、ポート通知依頼パケットを受信していない場合(S201:NO)、従端末装置10〜12から送信されるポート幅検出パケットを、従NAT装置3〜5及び主NAT装置2を介して受信したかが判断される(S205)。なおポート幅検出パケットは、主端末装置9において従NAT装置3〜5のポート幅を検出させるために、従端末装置10〜12から複数送信される。ポート幅検出パケットは、受信したポート通知パケットに含まれている複数のポート番号(図17参照)をパケットヘッダの送信先ポート番号に設定して送信される(S153:図14)。
【0083】
主端末装置9においてポート幅検出パケットが受信された場合(S205:YES)、受信されたポート幅検出パケットのヘッダに含まれている送信元ポート番号(ポート幅検出パケットを従NAT装置3〜5がLAN22〜24側からWAN18側に転送した場合において、従NAT装置3〜5に記憶されたポート番号に相当)に基づいて、従NAT装置3〜5のポート幅が算出される(S207)。
【0084】
従端末装置10〜12から送信されたポート幅検出パケットが、従NAT装置3〜5において、LAN22〜24側からWAN18側に転送される場合、ポート幅ずつ加算処理が行われる。算出されたポート番号がポート幅検出パケットに割り当てられる。このため主端末装置9では、受信した一のポート幅検出パケットの送信元ポート番号を、次に受信したポート幅検出パケットの送信元ポート番号から減算する。この演算を、受信したポート幅検出パケットの数分繰り返す。このようにして算出した値をポート幅とする。
【0085】
算出されたポート幅に基づいて、第二テーブル記憶領域541に記憶されている第二テーブルが更新される(S209)。具体的には、算出されたポート幅が、ポート幅検出パケットを転送した従NAT装置3〜5のNAT IDに対応付けられて格納される。例えば図6に示す例では、算出されたポート幅「W3」「W4」「W5」が第二テーブル5411に格納されている。そしてS201に戻り、上述の処理が繰り返される。
【0086】
一方、ポート幅検出パケットを受信していない場合(S205:NO)、通信グループA内の全ての従端末装置10〜12からポート幅検出パケットを受信し、すべての従NAT装置3〜5のポート幅が特定されたかが判断される(S211)。ポート幅を特定できていない従NAT装置3〜5が残存する場合(S211:NO)、S201に戻り、上述の処理が繰り返される。通信グループA内に属する全ての従NAT装置3〜5のポート幅が特定された場合(S211:YES)、ポート幅特定処理(端末装置)を終了して通信確立処理(図15参照)の処理に戻る。
【0087】
図15に示すように、ポート幅特定処理(端末装置)(S189)が終了した場合、次いで、パンチパケットの送信順を決定して第三テーブルを作成する処理(送信順決定処理)が実行される(S191)。
【0088】
図18を参照し、送信順決定処理について説明する。はじめに、主NAT装置2及び従NAT装置3〜5を介して従端末装置10〜12に対して、基準ポート通知パケットの送信を要求する基準ポート要求パケットが送信される(S111)。基準ポート通知パケットは、従NAT装置3〜5の基準ポートを主端末装置9に認識させるために、従端末装置10〜12から送信される(S157:図14)。
【0089】
従NAT装置3〜5及び主NAT装置2を介して基準ポート通知パケットを受信したかが判断される(S113)。受信した場合(S113:YES)、受信した基準ポート通知パケットのヘッダに含まれている送信元ポート番号(基準ポート通知パケットを従NAT装置3〜5がLAN22〜24側からWAN18側に転送した場合において、従NAT装置3〜5に記憶されたポート番号)が抽出される。抽出された送信元ポート番号が基準ポート番号とされる。得られた基準ポート番号に基づいて、第二テーブル記憶領域541の第二テーブルが更新される(S115)。そしてS113に戻り、上述の処理が繰り返される。例えば図6に示す例では、基準ポート番号「Pb3」「Pb4」「Pb5」が第二テーブル5411に格納されている。
【0090】
従端末装置10〜12から送信される基準ポート通知パケットは、従NAT装置3〜5を経由して主端末装置9に到達する。従NAT装置3〜5が基準ポート通知パケットをLAN22〜24側からWAN18側に転送する際、基準ポート通知パケットのヘッダに含まれている送信元ポート番号が所定の値に変換される。変換されたポート番号は、従NAT装置3〜5に履歴情報として記憶される。主端末装置9では、受信した基準ポート通知パケットの送信元ポート番号を基準ポートとして認識している。従って主端末装置9では、この時点で従NAT装置3〜5に記憶されているポート番号のうち最も新しいポート番号が基準ポート番号として認識されたことになる。
【0091】
一方、基準ポート通知パケットを受信していない場合(S113:NO)、従端末装置10〜12の全てから基準ポート通知パケットを受信したかが判断される(S117)。基準ポート通知パケットを受信していない従端末装置10〜12が残存する場合(S117:NO)、S113の処理に戻り、上述の処理が繰り返される。
【0092】
一方、従端末装置10〜12のすべてから基準ポート通知パケットを受信した場合(S117:YES)、この時点で第二テーブル記憶領域541に記憶されている第二テーブルに基づいて、第三テーブルが作成される(S119〜S121)。はじめに、送信順が決定されることによって、第三テーブルのうち第一送信先IDと第二送信先IDとが決定される(S119)。送信順は、例えばNAT IDが降順となるように決定される。なお、本発明はこの方法に限定されず、例えばNAT IDが昇順となるように決定してもよいし、従NAT装置3〜5のMACアドレスやIPアドレスに基づいて送信順を決定してもよい。また、端末装置の通信履歴に基づき、直近に通信した端末装置同士が優先されるように送信順を決定してもよい。次いで、第三テーブルのうち送信先IPアドレス及び送信先ポート番号が決定される(S121)。
【0093】
図6に示す第二テーブル5411に基づいて送信順及び送信先情報が決定され、図7に示す第三テーブル5421が作成される場合を例示して説明する。NAT装置3の通信相手先のNAT装置は、NAT装置4(NAT ID:4)とNAT装置5(NAT ID:5)ということになる。送信先IDはNAT IDの降順に決定されるので、送信順は、NAT装置4:送信順1、NAT装置5:送信順2のように決定される。この送信順に基づき、第一送信先IDが「4」とされ、第二送信先IDが「5」とされる。同様に、NAT装置4の通信相手先のNAT装置は、NAT装置3(NAT ID:3)とNAT装置5(NAT ID:5)であるので、送信順は、NAT装置3:送信順1、NAT装置5:送信順2のように決定される。この送信順に基づき、第一送信先IDが「3」とされ、第二送信先IDが「5」とされる。以上のようにして、送信順、及び、第一送信先IDと第二送信先IDとが決定される。
【0094】
次いで、送信先情報が決定される。送信先IPアドレスは、第二テーブル5411に記憶されているIPアドレスとされる。送信先ポート番号は、次のようにして決定される。従NAT装置3と直接接続する従端末装置10が、第一送信先IDにて特定される従NAT装置4と直接接続する従端末装置11との間でパケットの送受信を行うために、従NAT装置3に記憶させるポート番号が決定される。ポート番号は、従NAT装置3のポート幅「W3」に送信順「1」を乗算した値を、基準ポート「Pb3」に加算した値「Pb3+W3(*1)」とされる。算出されたポート番号「Pb3+W3」は、NAT装置4がNAT装置3に対してパケットを送信する場合の送信先ポート番号とされる。このポート番号は、第三テーブルのうち、NAT装置4に対応付けられている第一送信先ID「3」の送信先ポート番号として記憶される。
【0095】
次いで、従NAT装置3と直接接続する従端末装置10が、第二送信先IDにて特定されるNAT装置5と直接接続する従端末装置12との間でパケットの送受信を行うために、従NAT装置3に記憶させるポート番号が決定される。ポート番号は、従NAT装置3のポート幅「W3」に送信順「2」を乗算した値を、基準ポート「Pb3」に加算した値「Pb3+W3*2」とされる。算出されたポート番号「Pb3+W3*2」は、従NAT装置5がNAT装置3に対してパケットを送信する場合の送信先ポート番号とされる。このポート番号は、第三テーブルのうち、従NAT装置5に対応付けられている第一送信先ID「3」の送信先ポート番号として記憶される。
【0096】
例えば、第三テーブル5421のうちNAT ID「4」には、第一送信先IDとして「3」が記憶されており、第二送信先IDとして「5」が記憶されている。従NAT装置4と直接接続する従端末装置11と、従NAT装置3と直接接続する従端末装置12とが通信を行うために、従NAT装置4に記憶させるポート番号は、従NAT装置4のポート幅「W4」に送信順「1」を乗算した値を、基準ポート「Pb4」に加算した値「Pb4+W4」となる。算出されたポート番号「Pb4+W4」は、送信先ポート番号(NAT ID:3、第一送信先ID:4に対応付けられている送信先ポート番号)に格納される。従NAT装置4と直接接続する従端末装置11と、従NAT装置5と直接接続する従端末装置12との通信を行うために記憶するポート番号は、従NAT装置4のポート幅「W4」に送信順「2」を乗算した値を、基準ポート「Pb4」に加算した値「Pb4+(W4*2)」となる。算出されたポート番号「Pb4+(W4*2)」は、送信先ポート番号(NAT ID:5、第一送信先ID:4に対応付けられている送信先ポート番号)に格納される。
【0097】
S119の処理によって決定された第一送信元ID及び第二送信元IDと、S121の処理によって決定された送信先IPアドレス及び送信先ポート番号とは、第三テーブル記憶領域542の第三テーブルに記憶される(S123)。そしてS125の処理に進む。S125の処理では、パンチパケットの送信を指示する送信指示パケットが、従端末装置10〜12に対して送信される(S125)。送信指示パケットには、S123において作成された第三テーブルの情報が付加される。そして送信順決定処理を終了し、通信確立処理(図15参照)に戻る。図15に示すように、送信順決定処理(S191)の後、通信確立処理を終了して端末装置処理(図13参照)に戻る。
【0098】
図13に示すように、通信確立処理(S141)が終了した後、主端末装置9及び従端末装置10〜12は相互に通信可能な状態となっているので、主端末装置9及び従端末装置10〜12間でP2P通信が実行される(S142)。そして端末装置処理は終了する。
【0099】
以上のように、通信制御装置16は、通信グループ毎に主端末装置を選択する。主端末装置に対して、従端末装置間で実行されるパンチパケット通信の制御を依頼する。パンチパケット通信の制御が主端末装置によって実行されることになるので、通信制御時の通信負荷が通信制御装置16に集中してしまうことを防止できる。
【0100】
図13に示すように、通信制御装置16から依頼通知パケットを受信しておらず、主端末装置として選択されていない場合(S139:NO)、通信制御装置16からNAT装置2〜8を介して変更通知パケットを受信したかが判断される(S143)。受信していない場合(S143:NO)、S151(図14参照)の処理に進む。
【0101】
一方、通信制御装置16から変更通知パケットを受信した場合(S143:YES)他の端末装置が主端末装置として選択されたということになるので、従端末装置としての処理が実行される。以下、端末装置10が変更通知パケットを受信したことを想定し、端末装置10のCPU51において実行される端末装置処理について説明する。端末装置9が主端末装置として選択されているものとする。
【0102】
選択された主端末装置9に関する情報は、変更通知パケットに含まれている情報(図12参照)に基づいて認識できる。変更通知パケットに含まれている情報(主NAT装置2のNAT ID、IPアドレス、ポート番号)が、主端末装置9に関するアドレス情報としてHDD54のその他の情報記憶領域544に記憶される(S145)。以後、主端末装置9との通信は、記憶されたアドレス情報に基づいて実行される。次いで、ポート幅検出パケットの送信先とするポート番号を主端末装置9に対して問い合わせるポート通知依頼パケットが、従NAT装置3及び主NAT装置2を介して主端末装置9に対して送信される(S147)。そしてS135の処理に戻る。なお主端末装置9では、ポート幅検出パケットに応じてポート通知パケットが返信される(S203:図16)。
【0103】
上述の処理が繰り返される中で、図14に示すように、主端末装置9から送信されるポート通知パケットを、主NAT装置2及び従NAT装置3を介して受信したかが判断される(S151)。受信していない場合(S151:NO)、S155の処理に進む。一方、ポート通知パケットを受信した場合(S151:YES)、ポート通知パケットに含まれている複数のポート番号(図17参照)が参照される。これらのポート番号をパケットヘッダの送信先ポート番号に設定し、従NAT装置3及び主NAT装置2を介して主端末装置9に対してポート幅検出パケットが複数送信される(S153)。そしてS135(図13参照)の処理に戻る。なお、送信されたポート幅検出パケットに基づき、主端末装置9において従NAT装置3のポート幅が特定される(S207:図16)。
【0104】
上述の処理が繰り返される中で、主端末装置9から送信された基準ポート要求パケットを、主NAT装置2及び従NAT装置3を介して受信したかが判断される(S155)。受信していない場合(S155:NO)、S169の処理に進む。一方、基準ポート要求パケットを受信した場合(S155:YES)、従NAT装置3の基準ポート番号を認識させるための基準ポート通知パケットが、従NAT装置3及び主NAT装置2を介して主端末装置9に対して送信される(S157)。そしてS135(図13参照)の処理に戻る。なお、送信された基準ポート番号通知パケットに基づき、主端末装置9において従NAT装置3の基準ポートが特定される(S115:図18)。
【0105】
上述の処理が繰り返される中で、主端末装置9から送信された送信指示パケットを、主NAT装置2及び従NAT装置3を介して受信したかが判断される(S169)。受信していない場合(S169:NO)、S135(図13参照)の処理に戻る。送信指示パケットを受信した場合(S169:YES)、送信指示パケットに付加されている第三テーブルの情報がRAM53に記憶される(記憶された情報を「送信先情報」という。)。記憶された送信先情報に基づいて、パンチパケットが送信される(S171)。パンチパケットは、第一送信先ID→第二送信先IDの順で、其々の送信先IPアドレス及び送信先ポート番号をヘッダの送信先に対して送信される。
【0106】
なお、従端末装置10がパンチパケットを送信する場合、パンチパケットのTTL(Time to Live)には小さい値が設定される。これによってパンチパケットは、WAN18内で中継転送が繰り返される中でTTLが0となり、破棄される。
【0107】
従NAT装置3が従端末装置10から送信されたパンチパケットを転送する際、送信元ポート番号が変換される。変換後のポート番号が、履歴情報として従NAT装置3に記憶される。記憶されたポート番号は、従端末装置10が通信グループA内の他の従端末装置11,12に対してパケットを送信する場合にヘッダに設定される送信先ポート番号として使用される。
【0108】
パンチパケットによる通信が行われた後、主端末装置9及び従端末装置10〜12間で相互に通信を行うことが可能な状態となっているので、主端末装置9及び従端末装置10〜12間でP2P通信が実行される(S173)。そして端末装置処理は終了する。
【0109】
従端末装置10〜12が、図7の第三テーブル5421の情報に基づいてパンチパケットを送信する場合の様子について、図19を参照して説明する。図のうち101は、従端末装置10のRAM53に記憶された送信先情報を示している。102は、従端末装置11のRAM53に記憶された送信先情報を示している。103は、従端末装置12のRAM53に記憶された送信先情報を示している。
【0110】
図19に示すように、従端末装置10では、送信先情報101に基づいてパンチパケットが送信される。はじめに、送信先情報101のうち第一送信先IDの情報が参照される。パンチパケットのヘッダに含まれる送信先IPアドレスとして「G4」が設定され、送信先ポート番号として「Pb4+W4」が設定される。このようにして作成されたパンチパケットが、従NAT装置3を介して送信される(111)。
【0111】
従NAT装置3では、受信したパンチパケットのヘッダに含まれている送信元ポート番号を、所定のポート番号に変換する。また、変換後のポート番号を履歴情報として記憶する。ここで変換後のポート番号は、現時点で従NAT装置3の履歴情報に記憶されているポート番号のうち最も新しいポート番号にポート幅「W3」だけ加算された値とされる。最も新しいポート番号は、基準ポート通知パケットを介して主端末装置9に通知した基準ポート「Pb3」に相当する。従って従NAT装置3では、ポート番号「Pb3+W3」が履歴情報として記憶される(111)。
【0112】
続いて従端末装置10では、送信先情報101のうち第二送信先IDの情報が参照される。パンチパケットのヘッダに含まれる送信先IPアドレスとして「G5」が設定され、送信先ポート番号として「Pb5+W5」が設定される。このようにして作成されたパンチパケットが、従NAT装置3を介して送信される(112)。
【0113】
従NAT装置3は、パンチパケットの送信元ポート番号を、現時点でNAT装置3に記憶されているポート番号のうち最も新しい「Pb3+W3」にさらに「W3」だけ加算したポート番号「Pb3+(W3*2)」に変換する。変換したポート番号「Pb3+(W3*2)」は、従NAT装置3に履歴情報として記憶される。結果、従NAT装置3には、履歴情報として「Pb3+W3」「Pb3+(W3*2)」が少なくとも記憶された状態となる。
【0114】
なお、送信されたパンチパケットは、WAN18内で破棄されるので、相手先の端末装置(及びNAT装置)に到達しない。
【0115】
同様に従端末装置11では、送信先情報102に基づいてパンチパケットが送信される(113,114)。従NAT装置4では、基準ポート「Pb4」に「W4」だけ加算したポート番号「Pb4+W4」と、「Pb4+W4」にさらに「W4」だけ加算したポート番号「Pb4+(W4*2)」とが、履歴情報として記憶される。従端末装置12では、送信先情報103に基づいてパンチパケットが送信される(115,116)。従NAT装置5では、「Pb5+W5」と「Pb5+(W5*2)」とが履歴情報として記憶される。
【0116】
図20を参照して、従端末装置10〜12間でP2P通信が行われる場合の様子について説明する。図19に示すパンチパケット通信を行うことによって、従端末装置10〜12は、送信先情報101〜103に基づいて他の端末装置と互いにP2P通信を行うことが可能となる。従端末装置10が従端末装置11とP2P通信を行う場合、送信先情報101に基づき、パケットのヘッダに含まれる送信先IPアドレスを「G4」に設定し、送信先ポート番号を「Pb4+W4」に設定する。このパケットは、従NAT装置3を介して従NAT装置4に到達する。従NAT装置4には、上述のパンチパケット通信によって、履歴情報として「Pb4+W4」が記憶されている。従NAT装置4は、従端末装置10から受信したパケットを従端末装置11に対して転送する(121)。
【0117】
また例えば、従端末装置12が従端末装置10とP2P通信を行う場合、送信先情報103に基づき、パケットのヘッダに含まれる送信先IPアドレスを「G3」に設定し、送信先ポート番号を「Pb3+(W3*2)」に設定する。このパケットは、従NAT装置5を介して従NAT装置3に到達する。従NAT装置3には、上述のパンチパケット通信によって、履歴情報として「Pb3+(W3*2)」が記憶されている。従NAT装置3は、従端末装置12から受信したパケットを従端末装置10に対して転送する(122)。
【0118】
このように端末装置10〜12は、パンチパケット通信によって従NAT装置3〜5に履歴情報として記憶させたポート番号宛てにパケットを送信することができる。これによって、従端末装置10〜12間でP2P通信を行うことが可能となる。なお、主端末装置9は、通信確立処理(図15参照)によって既に従端末装置10〜12と通信可能な状態となっている。従って、以上の通信を経ることによって、通信グループA内にある端末装置9〜12間でP2P通信を行うことが可能となる。
【0119】
以上説明したように、通信制御装置16によって選択された主端末装置9が、従端末装置10〜12間で行われるパンチパケット通信を制御するので、通信制御装置16におけるパンチパケット通信の制御が不要となる。これによって、通信制御装置16に通信負荷が集中してしまうことを防止できる。通信制御装置16は、P2P通信を開始させるために必要な端末装置間の通信を極力抑制できるように、NAT種別に応じて最適な端末装置を主端末装置として選択することができる。
【0120】
主端末装置9は、送信順と基準ポートとポート幅とに基づいて送信先ポート番号を決定し、IPアドレスとともに従端末装置10〜12に通知する。従端末装置10〜12では、通知されたIPアドレスと送信先ポート番号とに基づいてパンチパケットを送信する。従端末装置10〜12間でP2P通信を行うために必要なポート番号のみ従NAT装置3〜5に記憶させることができる。このため、従NAT装置3〜5に記憶される不要なポート番号宛てに不特定多数のユーザがアクセスすることを防止できるので、NAT装置のセキュリティ機能が弱まってしまうことを防止できる。
【0121】
主端末装置9では、ポート幅に送信順を乗算した値を基準ポートに加算することによって送信先ポート番号が決定されるので、簡易な方法で送信先ポート番号を決定することができる。また送信先ポート番号は、従端末装置10〜12毎に一意的に決定されるので、NAT装置3〜5に記憶されるポート番号を最小限に抑えつつ、端末装置間で確実に通信を行うことができる。
【0122】
なお、図9の処理を行うCPU31が本発明の「種別特定手段」に相当する。図10のS71の処理を行うCPU31が本発明の「種別判断手段」に相当し、S73の処理を行うCPU31が本発明の「主端末選択手段」に相当する。図8のS21の処理を行うCPU31が本発明の「第一送信手段」に相当し、S25の処理を行うCPU31が本発明の「第二送信手段」に相当する。図13のS139及びS143の処理を行うCPU51が本発明の「第一受信手段」に相当し、S141の処理を行うCPU51が本発明の「通信制御手段」に相当し、図13のS142、及び図14のS173の処理を行うCPU51が本発明の「通信手段」に相当する。図8のS21において、図11に示す情報とともに送信されるパケットが、本発明の「第一通知信号」に相当する。図8のS25において、図12に示す情報とともに送信されるパケットが、本発明の「第二通知信号」に相当する。
【0123】
図16のS207、及び図18のS115の処理を行うCPU51が本発明の「取得手段」に相当する。図18のS121の処理を行うCPU51が本発明の「送信先決定手段」に相当し、S125の処理を行うCPU51が本発明の「第三送信手段」に相当する。図14のS169の処理を行うCPU51が本発明の「第二受信手段」に相当し、S171の処理を行うCPU51が本発明の「第四送信手段」に相当する。
【0124】
なお、本発明は上記実施の形態に限定されるものではなく、種々の変更が可能である。以下、本実施の形態の変形例について説明する。
<第一の変形例>
【0125】
本発明の第一の変形例について説明する。第一の変形例では、通信システム1内に主端末装置の候補となる端末装置が存在しない場合に、通信制御装置16が端末装置間の通信制御を行う。これによって、主端末装置が選択できない場合であっても、端末装置間でのP2P通信が可能となる。
【0126】
なお第一の変形例では、上述した第二テーブル及び第三テーブルが、通信制御装置16のHDD34のその他の情報記憶領域343に記憶される。通信制御装置16では、第一テーブル記憶領域341に記憶されている第一テーブル等の情報に基づいて、第二テーブル及び第三テーブルが作成される。
【0127】
図21及び図22を参照し、第一の変形例における通信制御処理について説明する。通信制御処理は、通信制御装置16の電源が投入された場合に、CPU31において起動され実行される。なお、上述の実施の形態と同様の処理部分については、説明を簡略化している。
【0128】
通信制御処理が開始されると、はじめにNAT種別特定処理が実行される(S11)。NAT種別特定処理では、通信システム1内にあるNAT装置2〜8のNAT種別が特定される(図9参照)。NAT種別特定処理の後、特定されたNAT種別が第一テーブルに記憶される(S13)。次いで、通信システム1内の全てのNAT装置2〜8のNAT種別が特定されたかが判断される(S15)。すべてのNAT装置2〜8のNAT種別が特定された場合(S15:YES)、次いで、端末装置9〜15の中から、通信グループA及びBの主端末装置を其々選択する主端末選択処理が実行される(S17)。
【0129】
主端末選択処理(S17)の後、主端末装置が通信システム1内から選択できたかが判断される(S211)。NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在する場合、このNAT装置と直接接続する端末装置のうち一台が主端末装置として選択できる。主端末装置が選択できた場合(S211:YES)、選択された主端末装置に対して依頼通知パケットが送信され(S21)、従端末装置間の通信制御が依頼される。依頼通知パケットに対する応答パケットを受信した場合(S23:YES)、従端末装置に対して変更通知パケットが送信される(S25)。そして通信制御処理を終了する。
【0130】
一方、NAT種別がFC NATであるNAT装置、及びARC NATであるNAT装置のいずれも通信システム1内に存在せず、主端末装置を選択できなかった場合(S211:NO)、通信制御装置16自身によって端末装置9〜15間の通信制御が実行される。はじめに、NAT装置2〜8のポート幅を特定するポート幅特定処理(制御装置)が実行される(S213)。
【0131】
図22を参照し、ポート幅特定処理(制御装置)について説明する。はじめに、NAT装置2〜8を介して通信システム1内にある端末装置9〜15に対して、送信先ポート番号を複数通知する為のポート通知パケットが送信される(S91)。次いで、ポート通知パケットを受信した端末装置9〜15から送信されるポート幅検出パケットを、NAT装置2〜8を介して受信したかが判断される(S93)。ポート幅検出パケットが受信された場合(S93:YES)、受信されたポート幅検出パケットのヘッダに含まれている送信元ポート番号に基づいて、NAT装置2〜8のポート幅が算出される(S95)。算出されたポート幅に基づいて、その他の情報記憶領域343に記憶された第二テーブルが更新される(S97)。そしてS93に戻り、上述の処理が繰り返される。
【0132】
一方、ポート幅検出パケットを受信していない場合(S93:NO)、全ての端末装置9〜15からポート幅検出パケットを受信し、すべてのNAT装置2〜8のポート幅が特定されたかが判断される(S99)。ポート幅を特定できていないNAT装置2〜8が残存する場合(S99:NO)、S93に戻り、上述の処理が繰り返される。全ての従NAT装置2〜8のポート幅が特定された場合(S99:YES)、ポート幅特定処理(制御装置)を終了して通信制御処理(図21参照)の処理に戻る。
【0133】
図21に示すように、ポート幅特定処理(制御装置)(S213)が終了した後、パンチパケットの送信順を決定して第三テーブルを作成する処理(送信順決定処理)が実行される(S215)。
【0134】
送信順決定処理では、図18に示すように、はじめに端末装置9〜15に対して基準ポート要求パケットが送信される(S111)。次いで、基準ポート通知パケットを受信したかが判断される(S113)。受信した場合(S113:YES)、受信した基準ポート通知パケットの送信元ポート番号が基準ポート番号として第二テーブルに記憶される(S115)。端末装置9〜15のすべてから基準ポート通知パケットを受信した場合(S117:YES)、第二テーブルに基づいて、第三テーブルが作成される(S119〜S121)。パンチパケットの送信を指示する送信指示パケットが、端末装置9〜15に対して送信される(S125)。送信指示パケットには、S123において作成された第三テーブルの情報が付加される。そして送信順決定処理を終了する。
【0135】
以上説明したように、第一の変形例では、所定のNAT種別であるNAT装置が通信システム1内に存在せず、主端末装置が選択できない場合であっても、通信制御装置16が端末装置9〜15間のパンチパケット通信制御を行う。これによって、主端末装置が選択されない場合であっても、端末装置9〜15間でP2P通信を行うことが可能となる。
<第二の変形例>
【0136】
本発明の第二の変形例について説明する。第二の変形例では、通信グループの主端末装置が選択される場合、同一の通信グループ内にある端末装置が優先して主端末装置として選択される。同一WAN内にある端末装置のうち一台が主端末装置として選択される。
【0137】
図23を参照し、第二の変形例における主端末選択処理について説明する。主端末選択処理は、通信制御装置16のCPU31において実行される通信制御装置から呼び出される。なお、上述の実施の形態と同様の処理部分については、説明を簡略化している。
【0138】
通信制御処理(図8参照)において主端末選択処理(S17)が呼び出されると、はじめに、第一テーブルに記憶されたNAT種別に基づき、NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在するかが判断される(S221)。いずれのNAT種別のNAT装置も通信システム1内に存在しない場合(S221:NO)、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0139】
NAT種別がFC NATであるか、又はARC NATであるNAT装置が存在する場合(S221:YES)、通信グループA及び通信グループB内に、上述の条件に該当するNAT装置が存在するかが判断される(S223)。存在する場合(S223:YES)、該当するNAT装置のうち通信グループA内にあるNAT装置のうち一台が任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、通信グループAの主端末装置として選択される。同様に、上述の条件に該当するNAT装置のうち通信グループB内にあるNAT装置のうち一台が任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、通信グループBの主端末装置として選択される(S255)。そしてS229の処理に進む。
【0140】
一方、上述の条件に該当するNAT装置が通信グループ内に含まれていない場合(S223:NO)、通信グループ外にあるNAT装置から、上述の条件を満たすNAT装置が抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S227)。そしてS229の処理に進む。
【0141】
S229の処理では、主NAT装置のNAT種別がFC NATであるかが判断される(S229)。FC NATである場合(S229:YES)、パンチパケットによる通信が不要であるとされる(S231)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、主NAT装置のNAT種別がFC NATでない場合(S229:NO)、パンチパケットによる通信が必要であるとされる(S233)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0142】
以上説明したように、第二の変形例では、通信グループの主端末装置を選択する場合、同一通信グループ内にある端末装置が優先して選択される。これによって、他の通信グループに属する端末装置が主端末装置として選択されてしまって、該主端末装置に通信負荷がかかってしまうことを防止できる。また、通信グループ内の端末装置のみで通信制御のための通信が行われるので、セキュリティを向上させることができる。
<第三の変形例>
【0143】
本発明の第三の変形例について説明する。第三の変形例では、NAT種別がFC NATであるNAT装置と直接接続する端末装置が、優先して主端末装置として選択される。これによって、主端末装置と従端末装置との間で実行されるパンチパケット通信が不要となるので、ネットワークの通信トラフィックを抑制できる。図24を参照し、第三の変形例における主端末選択処理について説明する。
【0144】
通信制御処理(図8参照)から主端末選択処理(S17)が呼び出されると、はじめに、第一テーブルに記憶されたNAT種別に基づき、NAT種別がFC NATであるNAT装置が通信システム1内に存在するかが判断される(S230)。存在する場合(S230:YES)、通信グループA及びBの其々に対して一台ずつ割り当てるNAT装置が、FC NATのNAT装置の中から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S232)。そしてS239の処理に進む。
【0145】
一方、NAT種別がFC NATであるNAT装置が存在しない場合(S230:NO)、次いで、NAT種別がARC NATであるNAT装置が通信システム1内に存在するかが判断される(S235)。存在する場合(S235:YES)、通信グループA及びBの其々に一台ずつ割り当てらるNAT装置が、ARC NATのNAT装置の中から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S237)。そしてS239の処理に進む。これに対し、NAT種別がARC NATであるNAT装置が通信システム1内に存在しない場合(S235:NO)、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0146】
S239の処理では、主NAT装置のNAT種別がFC NATであるかが判断される(S239)。FC NATである場合(S239:YES)、パンチパケットによる通信が不要であるとされる(S241)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、FC NATでない場合(S239:NO)、パンチパケットによる通信が必要であるとされる(S243)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0147】
以上説明したように、第三の変形例では、NAT種別がFC NATであるNAT装置と直接接続する端末装置が、優先して主端末装置として選択される。NAT種別がFC NATである場合、主端末装置と従端末装置との間でパンチパケットによる通信を行わなくても、主端末装置と従端末装置とはP2P通信を行うことができる。このため、パンチパケットによる通信が不要となるので、パンチパケット通信によってネットワークのトラフィックが増大することを抑制できる。
<第四の変形例>
【0148】
本発明の第四の変形例について説明する。第四の変形例では、NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在しない場合であっても、所定の条件を満たす場合に、主端末装置を選択することが可能となる。図25を参照し、第四の実施の形態における主端末選択処理について説明する。
【0149】
通信制御処理から主端末選択処理が呼び出されると、はじめに、第一テーブルに記憶されたNAT種別に基づき、NAT種別がFC NATであるか、又はARC NATであるNAT装置が通信システム1内に存在するかが判断される(S251)。存在する場合(S251:YES)、通信グループA及びBの其々に対して一台ずつ割り当てるNAT装置が、上述の条件を満たすNAT装置から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S253)。そしてS259の処理に進む。
【0150】
S259の処理では、上述において抽出されたNAT装置のNAT種別がFC NATであるかが判断される(S259)。FC NATである場合(S259:YES)、パンチパケットによる通信が不要であるとされる(S261)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。一方、FC NATでない場合(S259:NO)、パンチパケットによる通信が必要であるとされる(S263)。そして主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0151】
一方、上述の条件を満たすNAT装置が通信システム1内に存在しない場合(S251:NO)、通信グループ内のNAT装置のNAT種別がすべてPRC NATであるかが判断される(S255)。Sym NATであるNAT装置が含まれている場合には(S255:NO)、そのまま主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0152】
通信グループ内のNAT装置のNAT種別が全てPRC NATである場合(S255:YES)、通信グループA及びBの其々に対して一台ずつ割り当てるNAT装置が、NAT種別がPRC NATであるNAT装置の中から任意で抽出される。抽出されたNAT装置と直接接続する端末装置のうち一台が、主端末装置として選択される(S257)。そして、パンチパケットによる通信が必要と特定され(S263)、主端末選択処理を終了して通信制御処理(図8参照)に戻る。
【0153】
主端末選択処理が終了した後、通信制御処理(図8参照)において、選択された主端末装置に対して依頼通知パケットが送信される(S21)。ここで上述のように、NAT種別がPRC NATであるNAT装置に基づいて主端末装置が選択された場合には、従NAT装置のNAT ID及びIPアドレスと共に、従NAT装置のポート番号の情報が依頼通知パケットに格納される。図26を参照し、格納される情報について説明する。図26に示すように、NAT ID(「2」「3」「4」)、IPアドレス(「G2」「G3」「G4」)、ポート番号(「Pa2」「Pa3」「Pa4」)、及びパンチパケット通信の要否(「必要」)の情報が、依頼通知パケットに格納される。
【0154】
主端末装置から従端末装置宛てにパンチパケット(主→従)が送信される。パンチパケット(主→従)は、依頼通知パケットによって通知されたポート番号を送信先ポート番号に設定して送信される。次いで、従端末装置から主端末装置に対してパンチパケット(従→主)が送信される。パンチパケット(従→主)は、依頼通知パケットによって通知されたポート番号を送信元ポート番号に設定して送信される。主NAT装置がこのパンチパケット(従→主)を受信する。ここで、主NAT装置が受信したパンチパケット(従→主)のポート番号と、自身が従端末装置に対して転送したパンチパケット(主→従)のポート番号とは一致する。このため主NAT装置は、受信したパンチパケットを主端末装置に対して転送する。これによって、主端末装置と従端末装置との間で通信を行うことが可能となる。
【0155】
以上説明したように、第四の変形例では、同一通信グループ内にあるNAT種別が全てPRC NATである場合に、このNAT装置と直接接続する端末装置のうち一台が主端末装置として選択される。通信制御装置は、依頼通知パケットに従NAT装置のポート番号を格納して主端末装置に送信する。主端末装置では、受信した依頼通知パケットに格納されているポート番号を参照して、従端末装置との間でパンチパケット通信を行う。これによって、送信元ポート番号によってパケット転送の制約を受けるPRC NATのNAT装置のみ存在する場合であっても、主端末装置を選択して従端末装置間の通信制御を実行させることが可能となる。
【符号の説明】
【0156】
1 通信システム
2,3,4,5,6,7,8 NAT装置
9,10,11,12,13,14,15 端末装置
31 CPU
51 CPU
【特許請求の範囲】
【請求項1】
NAT(Network Address Translation)機能を備えたNAT装置の配下の内部ネットワークに接続する端末装置と、外部ネットワークを介して前記NAT装置に接続する通信制御装置とを備え、複数の前記NAT装置と、前記NAT装置の配下の端末装置とで構成されるグループである通信グループ内で、異なる前記NAT装置の配下の前記端末装置間で相互にP2P(Peer to Peer)通信が行われる通信システムであって、
前記通信制御装置は、
前記NAT装置を種別したNAT種別を、前記NAT装置の配下にある前記端末装置と通信を行うことによって特定する種別特定手段と、
前記種別特定手段によって特定された前記NAT種別が所定のNAT種別であるかを判断する種別判断手段と、
前記種別判断手段において前記NAT種別が所定のNAT種別であると判断された前記NAT装置の配下の端末装置のうち一の端末装置を、主端末装置として選択する主端末選択手段と、
前記主端末選択手段において選択された前記主端末装置に対して、前記通信グループを構成する前記端末装置のうち前記主端末装置以外の端末装置である従端末装置のアドレス情報を少なくとも含む第一通知信号を送信する第一送信手段と、
前記従端末装置に対して、前記主端末装置のアドレス情報を少なくとも含む第二通知信号を送信する第二送信手段と
を備え、
前記端末装置は、
前記通信制御装置から送信された前記第一通知信号又は前記第二通知信号を受信する第一受信手段と、
前記第一通知信号及び前記第二通知信号に含まれるアドレス情報に基づき、前記第一受信手段において前記第一通知信号を受信した前記主端末装置が、前記第二通知信号を受信した前記従端末装置間の通信制御を行う通信制御手段であって、前記従端末装置同士の通信を行うために前記NAT装置にポート番号を記憶させる通信を前記従端末装置間で実行させる通信制御手段と、
前記通信制御手段によって前記従端末装置間で通信が行われることで前記NAT装置に記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行う通信手段と
を備えたことを特徴とする通信システム。
【請求項2】
前記NAT装置は、
配下の前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に、基準ポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、パケットの転送を許可する履歴情報として記憶する場合において、
前記通信制御手段は、
前記従端末装置と直接接続するNAT装置である従NAT装置の前記基準ポート番号及び前記ポート幅を前記主端末装置が取得する取得手段と、
前記取得手段において取得された前記基準ポート番号及び前記ポート幅と、前記通信グループ内の複数の前記従NAT装置の其々に対して一意的に割り当てられる順番であって、前記従端末装置から前記従NAT装置を介して他の前記従端末装置に対してパケットが送信される場合の順番である送信順とに基づいて、前記パケットの送信先ポート番号を前記主端末装置が決定する送信先決定手段と、
前記送信先決定手段において決定された前記送信先ポート番号と前記送信順とを、前記主端末装置が前記従端末装置に対して送信する第三送信手段と、
前記第三送信手段において送信された前記送信先ポート番号と前記送信順とを、前記従端末装置が受信する第二受信手段と、
前記第二受信手段において受信した前記送信先ポート番号と前記送信順とに基づいて、前記従端末装置が他の前記従端末装置に対して前記パケットを送信する第四送信手段と
を備え、
前記通信手段は、
前記第四送信手段において送信された前記パケットによって前記従NAT装置の前記履歴情報として記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行うことを特徴とする請求項1に記載の通信システム。
【請求項3】
前記送信先決定手段は、
前記ポート幅と前記送信順とを乗算した値を、前記基準ポート番号に加算することによって、前記送信先ポート番号を決定することを特徴とする請求項2に記載の通信システム。
【請求項4】
前記種別判断手段は、
前記NAT種別が、送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制約され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであるかを判断することを特徴とする請求項1から3のいずれかに記載の通信システム。
【請求項5】
前記主端末選択手段は、
前記種別判断手段の判断によって前記NAT種別がFull Cone NATであると判断されたNAT装置と、Address-Restricted Cone NATであると判断されたNAT装置との両方が存在する場合には、前記NAT種別がFull Cone NATであるNAT装置の配下にある端末装置のうち一を前記主端末装置として選択することを特徴とする請求項4に記載の通信システム。
【請求項6】
前記種別判断手段は、
前記NAT種別が、送信元IPアドレスもしくは送信元ポート番号によってパケット転送が制約されるPort-Restricted Cone NATであるかを判断し、
前記主端末選択手段は、
前記種別判断手段の判断によって通信グループの前記端末装置が直接接続されるNAT装置のNAT種別が全てPort-Restricted Cone NATであると判断された場合には、前記NAT種別がPort-Restricted Cone NATであるNAT装置の配下にある前記端末装置のうち一を前記主端末装置として選択することを特徴とする請求項1から3のいずれかに記載の通信システム。
【請求項7】
前記主端末選択手段は、
前記種別判断手段の判断によってNAT種別が送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制限され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであると判断された前記NAT装置の配下にある端末装置のうち、通信グループ内の端末装置を優先して前記主端末装置として選択することを特徴とする請求項1から6のいずれかに記載の通信システム。
【請求項1】
NAT(Network Address Translation)機能を備えたNAT装置の配下の内部ネットワークに接続する端末装置と、外部ネットワークを介して前記NAT装置に接続する通信制御装置とを備え、複数の前記NAT装置と、前記NAT装置の配下の端末装置とで構成されるグループである通信グループ内で、異なる前記NAT装置の配下の前記端末装置間で相互にP2P(Peer to Peer)通信が行われる通信システムであって、
前記通信制御装置は、
前記NAT装置を種別したNAT種別を、前記NAT装置の配下にある前記端末装置と通信を行うことによって特定する種別特定手段と、
前記種別特定手段によって特定された前記NAT種別が所定のNAT種別であるかを判断する種別判断手段と、
前記種別判断手段において前記NAT種別が所定のNAT種別であると判断された前記NAT装置の配下の端末装置のうち一の端末装置を、主端末装置として選択する主端末選択手段と、
前記主端末選択手段において選択された前記主端末装置に対して、前記通信グループを構成する前記端末装置のうち前記主端末装置以外の端末装置である従端末装置のアドレス情報を少なくとも含む第一通知信号を送信する第一送信手段と、
前記従端末装置に対して、前記主端末装置のアドレス情報を少なくとも含む第二通知信号を送信する第二送信手段と
を備え、
前記端末装置は、
前記通信制御装置から送信された前記第一通知信号又は前記第二通知信号を受信する第一受信手段と、
前記第一通知信号及び前記第二通知信号に含まれるアドレス情報に基づき、前記第一受信手段において前記第一通知信号を受信した前記主端末装置が、前記第二通知信号を受信した前記従端末装置間の通信制御を行う通信制御手段であって、前記従端末装置同士の通信を行うために前記NAT装置にポート番号を記憶させる通信を前記従端末装置間で実行させる通信制御手段と、
前記通信制御手段によって前記従端末装置間で通信が行われることで前記NAT装置に記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行う通信手段と
を備えたことを特徴とする通信システム。
【請求項2】
前記NAT装置は、
配下の前記内部ネットワーク側から前記外部ネットワーク側に向かう方向のパケットを受信した場合に、基準ポート番号に所定の変化量であるポート幅ずつ加算し、算出された前記ポート番号を、パケットの転送を許可する履歴情報として記憶する場合において、
前記通信制御手段は、
前記従端末装置と直接接続するNAT装置である従NAT装置の前記基準ポート番号及び前記ポート幅を前記主端末装置が取得する取得手段と、
前記取得手段において取得された前記基準ポート番号及び前記ポート幅と、前記通信グループ内の複数の前記従NAT装置の其々に対して一意的に割り当てられる順番であって、前記従端末装置から前記従NAT装置を介して他の前記従端末装置に対してパケットが送信される場合の順番である送信順とに基づいて、前記パケットの送信先ポート番号を前記主端末装置が決定する送信先決定手段と、
前記送信先決定手段において決定された前記送信先ポート番号と前記送信順とを、前記主端末装置が前記従端末装置に対して送信する第三送信手段と、
前記第三送信手段において送信された前記送信先ポート番号と前記送信順とを、前記従端末装置が受信する第二受信手段と、
前記第二受信手段において受信した前記送信先ポート番号と前記送信順とに基づいて、前記従端末装置が他の前記従端末装置に対して前記パケットを送信する第四送信手段と
を備え、
前記通信手段は、
前記第四送信手段において送信された前記パケットによって前記従NAT装置の前記履歴情報として記憶された前記ポート番号に基づいて、前記従端末装置間でP2P通信を行うことを特徴とする請求項1に記載の通信システム。
【請求項3】
前記送信先決定手段は、
前記ポート幅と前記送信順とを乗算した値を、前記基準ポート番号に加算することによって、前記送信先ポート番号を決定することを特徴とする請求項2に記載の通信システム。
【請求項4】
前記種別判断手段は、
前記NAT種別が、送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制約され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであるかを判断することを特徴とする請求項1から3のいずれかに記載の通信システム。
【請求項5】
前記主端末選択手段は、
前記種別判断手段の判断によって前記NAT種別がFull Cone NATであると判断されたNAT装置と、Address-Restricted Cone NATであると判断されたNAT装置との両方が存在する場合には、前記NAT種別がFull Cone NATであるNAT装置の配下にある端末装置のうち一を前記主端末装置として選択することを特徴とする請求項4に記載の通信システム。
【請求項6】
前記種別判断手段は、
前記NAT種別が、送信元IPアドレスもしくは送信元ポート番号によってパケット転送が制約されるPort-Restricted Cone NATであるかを判断し、
前記主端末選択手段は、
前記種別判断手段の判断によって通信グループの前記端末装置が直接接続されるNAT装置のNAT種別が全てPort-Restricted Cone NATであると判断された場合には、前記NAT種別がPort-Restricted Cone NATであるNAT装置の配下にある前記端末装置のうち一を前記主端末装置として選択することを特徴とする請求項1から3のいずれかに記載の通信システム。
【請求項7】
前記主端末選択手段は、
前記種別判断手段の判断によってNAT種別が送信元IPアドレス及び送信元ポート番号によってパケット転送の制約を受けないFull Cone NATか、または、送信元IPアドレスによってパケット転送が制限され、送信元ポート番号によってパケット転送の制約を受けないAddress-Restricted Cone NATであると判断された前記NAT装置の配下にある端末装置のうち、通信グループ内の端末装置を優先して前記主端末装置として選択することを特徴とする請求項1から6のいずれかに記載の通信システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【公開番号】特開2011−77921(P2011−77921A)
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願番号】特願2009−228515(P2009−228515)
【出願日】平成21年9月30日(2009.9.30)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願日】平成21年9月30日(2009.9.30)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】
[ Back to top ]