以下に、本発明に係るVPN装置、VPNネットワーキング方法、及び記憶媒体の実施形態を説明する。
(実施形態1)
実施形態1では、広域ネットワーク(WAN、グローバルネットワーク)を介して2つのローカルエリアネットワークの経路を(LAN、ローカルネットワーク)経路接続して仮想プライベートネットワーク(VPN)システムを構築する場合の構成例を示す。LANとしては、有線LANまたは無線LANなどが用いられる。WANとしては、インターネット等が用いられる。
図1は本発明の実施形態1に係るVPNシステムの構成例を示す図である。本実施形態1のVPNシステムは、一つの拠点に設けられたLAN100と、他の拠点に設けられたLAN300とを、インターネット等のWAN200を介して通信経路を接続する。そして、LAN100の配下に接続された端末103とLAN300の配下に接続された端末303との間で、VPNによる秘匿性を担保した通信(以下、「VPN通信」と称する)を可能にしている。具体的なVPN通信の用途(アプリケーションプログラム等)としては、IP電話(音声通話)、ネットミーティング(動画&音声通信)、ネットワークカメラ(ビデオ伝送)などが想定される。
LAN100とWAN200との境界にはルータ102が配設され、WAN200とLAN300との境界にはルータ302が配設されている。また、本実施形態1では、VPNの構築を可能にするために、LAN100にはVPN装置101が接続され、LAN300にはVPN装置301が接続されている。そして、VPN装置101には配下の端末103が接続され、VPN装置301には配下の端末303が接続されている。なお、VPN装置101、301は、ここでは中継装置等において構成される独立した装置の構成例を示しているが、LAN内の他の通信機器や端末等においてVPN機能を有する装置として構成することも可能である。
また、WAN200上には、VPN装置101とVPN装置301との間のVPNによる接続(以下、「VPN接続」と称する)を可能にするために、STUNサーバ201と呼制御サーバ202とが接続されている。STUNサーバ201は、STUN(Simple Traversal of User Datagram Protocol (UDP) through Network Address Translators (NATs))プロトコルを実行するために用いられるサーバである。呼制御サーバ202は、VPN装置や端末等のピア間の発呼、着呼のために用いられるサーバである。
図1において、破線は外部アドレスとポートの情報を含む外部アドレス・ポート情報の流れを示している。また、一点鎖線は発呼及び着呼の制御に関する呼制御信号の流れを示している。また、実線はピア間で伝送される通信データに関するピア間通信の流れを示している。さらに、ピア間通信のためにVPN接続された通信経路を仮想トンネルとして、図中に表す。
各機器がWAN200を介して通信する場合、WAN200上では、伝送するパケットの送信元や送信先を特定するためのアドレス情報として、WANにおいて特定可能なグローバルなアドレス情報が用いられる。一般にはIPネットワークが用いられるため、グローバルIPアドレス及びポート番号が用いられる。しかし、各LAN100、300内の通信においては、送信元や送信先を特定するためのアドレス情報として、LAN内のみで特定可能なローカルなアドレス情報が用いられる。一般にはIPネットワークが用いられるため、ローカルIPアドレス及びポート番号が用いられる。したがって、各LAN100、300とWAN200との間の通信を可能にするために、ローカルなアドレス情報とグローバルなアドレス情報との相互変換を行うNAT(Network Address Translation)機能が各ルータ102、302に搭載されている。
ただし、LAN100、300の配下の各端末においては、外部からアクセス可能なグローバルなアドレス情報を自身で持っていない。また、特別な設定を行わない限り、LAN100配下の端末103が他のLAN300配下の端末303と直接通信することはできない。また、各ルータ102、302のNAT機能のため、普通の状態ではWAN200側から各LAN100、300内の各端末にアクセスすることもできない。
このような状況であっても、本実施形態では、各拠点のLANにVPN装置101、301を設けることにより、図1において実線で示すピア間通信の経路のように、LAN間をVPN接続して端末103と端末303との間で仮想的な閉じられた通信経路を通じて直接通信することが可能になる。本実施形態のVPN装置の構成、機能、及び動作について以下に順を追って説明する。
STUNサーバ201は、STUNプロトコルの実行に関するサービスを行うもので、いわゆるNAT越えの通信を行うために必要な情報を提供するアドレス情報サーバである。STUNは、音声、映像、文章などの双方向リアルタイムIP通信を行うアプリケーションにおいて、NAT通過の方法の1つとして使われる標準化されたクライアントサーバ型のインターネットプロトコルである。STUNサーバ201は、アクセス元からの要求に応じて、外部からアクセス可能な当該アクセス元のグローバルなアドレス情報として、外部ネットワークから見える外部アドレスとポートの情報を含む外部アドレス・ポート情報を返信する。外部アドレス・ポート情報としては、IPネットワークにおいてはグローバルIPアドレス及びポート番号が用いられる。
各VPN装置101、301は、STUNサーバ201との間で所定のテスト手順の通信を実行し、STUNサーバ201からそれぞれ端末103、303のグローバルIPアドレス及びポート番号が含まれる応答パケットを受信する。これにより、各VPN装置101、301はそれぞれ端末103、303のグローバルIPアドレス及びポート番号を取得することができる。また、自装置の位置するLANとWANとの間にルータが複数存在する場合等であっても、これらのルータ等がUPnP(Universal Plug and Play)の機能を有していない場合であっても、確実にグローバルIPアドレス及びポート番号を取得できるという効果もある。
なお、VPN装置101、301がグローバルIPアドレス及びポート番号を取得するための方法に関しては、IETFのRFC 3489(STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs))にて記載された手法を利用することもできる。しかし、STUNによる手法はグローバルIPアドレス及びポート番号を取得するところまでが可能なのであって、通信に先立って予め各種パラメータの設定作業を行うこともなく、簡易かつ柔軟にVPNを構築する技術は本発明の特徴である。
呼制御サーバ202は、特定の相手先を呼び出して通信経路を確立するための通信装置間の呼制御に関するサービスを行う中継サーバである。呼制御サーバ202は、登録された各ユーザまたは端末の識別情報を保持しており、例えばIP電話の機能を有する通信システムの場合には、接続相手の電話番号に基づいて特定の相手先を呼び出すことができる。また、呼制御サーバ202は、信号やデータを中継する機能を有しており、発信側の装置から送出されたパケットを着信側の装置に転送したり、着信側の装置から送出されたパケットを発信側の装置に転送したりすることも可能である。
なお、STUNサーバ201及び呼制御サーバ202は、ここでは別個のサーバによる構成例を示しているが、1つのサーバにこれらのアドレス情報サーバと中継サーバの2つのサーバの機能を搭載して構成してもよいし、WAN上の他のいずれかのサーバに同様の機能を搭載して構成することも可能である。
次に、本実施形態1のVPN装置の構成及び機能について説明する。なお、VPN装置101とVPN装置301の構成及び機能は同様であり、ここではVPN装置101によって説明する。図2は本実施形態1のVPN装置のハードウェア構成の構成例を示すブロック図である。
VPN装置101は、マイクロコンピュータ(CPU)111、フラッシュRAM等による不揮発性メモリ112、SD RAM等によるメモリ113、ネットワークインタフェース114、ネットワークインタフェース115、LAN側ネットワーク制御部116、WAN側ネットワーク制御部117、通信中継部118、表示制御部119、表示部120を有して構成される。
マイクロコンピュータ111は、所定のプログラムを実行することによりVPN装置101全体の制御を実施する。不揮発性メモリ112は、マイクロコンピュータ111が実行するプログラムを保持している。このプログラムの中には、VPN装置101が外部アドレス・ポート情報を取得するための外部アドレス・ポート取得プログラムも含まれている。
なお、マイクロコンピュータ111が実行するプログラムについては、任意の通信経路を経由してオンラインで外部のサーバから取得することもできるし、例えばメモリカードやCD-ROMのような記録媒体から読み込んで取得することもできる。換言すれば、汎用のコンピュータ(マイクロコンピュータ111)にVPN装置の機能を実現するプログラムを記録媒体から読み込むことによってVPN装置、およびVPNネットワーキング方法を実現することができる。
なお、マイクロコンピュータ111がプログラムを実行する時には、不揮発性メモリ112上のプログラムの一部がメモリ113上に展開され、メモリ113上のプログラムが実行される場合もある。
メモリ113は、VPN装置101の運用中のデータ管理や、各種設定情報などを一時的に記憶するためのものである。設定情報としては、端末の外部アドレス・ポート取得要求の応答に含まれる外部アドレス・ポート情報等、通信に必要なあて先アドレス情報などが含まれる。
ネットワークインタフェース114は、VPN装置101と自装置が管理する配下の端末103とを通信可能な状態で接続するためのインタフェースである。ネットワークインタフェース115は、VPN装置101とLAN100とを通信可能な状態で接続するためのインタフェースである。LAN側ネットワーク制御部116は、LAN側のネットワークインタフェース114に関する通信制御を行うものである。WAN側ネットワーク制御部117は、WAN側のネットワークインタフェース115に関する通信制御を行うものである。
通信中継部118は、LAN側に接続された配下の端末103から外部のVPN接続先(VPN装置301配下の端末303)へ送出するパケットデータと、反対に、外部のVPN接続先(VPN装置301配下の端末303)から配下の端末103宛に到着したパケットデータをそれぞれ中継する。
表示部120は、VPN装置101としての動作状態の表示等を行う表示器により構成され、各種状態をユーザあるいは管理者に通知する。表示部120は、複数の発光ダイオード(LED)や液晶表示器(LCD)等により構成される。表示制御部119は、表示部120の表示制御を行うもので、マイクロコンピュータ111からの表示信号に従って表示部120に表示する内容等を制御する。
図3は本実施形態1のVPN装置の機能的な構成例を示すブロック図である。
VPN装置101は、機能構成として、システム制御部130、配下端末管理部131、メモリ部132、データ中継部133、設定用インタフェース部134、通信制御部140を有して構成される。メモリ部132は、外部アドレス・ポート情報記憶部135を有する。通信制御部140は、外部アドレス・ポート取得部141、VPN機能部142、呼制御機能部143を有する。VPN機能部142は、暗号処理部145を有する。これらの各機能は、図2に示した各ブロックのハードウェアの動作、またはマイクロコンピュータ111が所定のプログラムを実行することにより実現する。
なお、VPN装置101のLAN側のネットワークインタフェース114は、配下の端末103と接続され、WAN側のネットワークインタフェース115は、LAN100及びルータ102を経由してWAN200と接続される。
システム制御部130は、VPN装置101の全体の制御を行う。配下端末管理部131は、VPN装置101配下の端末103の管理を行う。メモリ部132は、外部アドレス・ポート情報記憶部135において、外部アドレス(WAN200上でのグローバルIPアドレス)とポート(IPネットワークのポート番号)の情報を含む外部アドレス・ポート情報を記憶する。外部アドレス・ポート情報としては、接続元である配下の端末103に割り当てられたグローバルIPアドレス及びポート番号の情報や、接続先の端末303に割り当てられたグローバルIPアドレス及びポート番号の情報などを記憶する。
データ中継部133は、接続元の端末103から接続先の端末303に向かって転送されるパケットや、逆に接続先の端末303から接続元の端末103に向かって転送されるパケットをそれぞれ中継する。設定用インタフェース部134は、ユーザあるいは管理者がVPN装置101に対する設定操作等の各種操作を行うためのユーザインタフェースである。このユーザインタフェースの具体例として、端末上で動作するブラウザによって表示するWebページなどが用いられる。
通信制御部140の外部アドレス・ポート取得部141は、VPN装置101の配下の端末103に割り当てられた外部アドレス・ポート情報をSTUNサーバ201から取得する。また、接続先の端末303の外部アドレス・ポート情報を含むパケットを呼制御サーバ202を経由して受信し、接続先の端末303に割り当てられた外部アドレス・ポート情報を取得する。この外部アドレス・ポート情報取得動作の詳細については後で説明する。外部アドレス・ポート取得部141が取得した情報は、メモリ部132の外部アドレス・ポート情報記憶部135に保持される。
通信制御部140のVPN機能部142は、暗号処理部145において、VPN通信のために必要な暗号処理を行う。すなわち、暗号処理部145は、送信するパケットをカプセリングして暗号化したり、受信したパケットをアンカプセリングして復号化して元のパケットを抽出する。この暗号処理動作については後で説明する。なお、VPN通信は、図1に示したようなピア間通信ではなく、WAN200上に設けられるサーバでパケットの中継を行い、クライアント/サーバ方式でVPN通信を行うことも可能である。この場合には、サーバ側で暗号処理を行うようにしてもよい。
呼制御機能部143は、目的の接続先に接続するための接続要求を呼制御サーバ202に送信したり、接続先からの接続応答を呼制御サーバ202を経由して受信するための処理を実施する。
すなわち、通信制御部140は、自装置の外部アドレス・ポート情報を取得する外部アドレス・ポート取得部、自装置の外部アドレス・ポート情報を送信する自装置アドレス情報送信部、相手装置の外部アドレス・ポート情報を受信する相手装置アドレス情報受信部、通信データを暗号化する暗号処理部、通信データを送信するデータ送信部の各機能を実現する。また、通信制御部140は、VPN通信の通信経路を維持する通信経路維持部の機能も有している。
次に、本実施形態のVPN装置101によるVPN構築時の動作について説明する。図4は本実施形態1のVPNシステムにおけるVPN構築時の処理手順を示すシーケンス図である。この図4では、VPN装置を含むネットワークにおいて、VPN装置101の配下の端末103からWAN200を経由して他のVPN装置301の配下の端末303に接続しようとする場合の処理を示している。
まず、図4に示す処理に先立ち、端末103は呼制御サーバ202にログインしてユーザ認証を受けるようにする。端末103がユーザ認証に成功した場合、呼制御サーバ202において、端末103の識別情報(MACアドレス、ユーザID、電話番号など)やネットワーク上の位置情報(グローバルIPアドレス)等の登録、設定が行われる。以降、端末103と呼制御サーバ202との間で通信可能となる。
この状態で、VPN装置101は、VPN通信を行うアプリケーションの起動に伴って外部アドレス・ポート取得部141の機能により、配下の端末103からのVPN接続の接続要求を受けると、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(PR1)。このとき、VPN装置101は、端末103に割り当てられた外部アドレス・ポート情報(WAN200側からみたグローバルIPアドレス及びポート番号)を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエスト(Binding Request 接続要求、RFC3489参照;以下同じ)パケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置101に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンス(Binding Response 接続応答、RFC3489参照;以下同じ)パケットを返送する。そして、VPN装置101は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
次に、VPN装置101は、呼制御サーバ202に対して、接続先の端末303を配下に持つVPN装置301へのP2P(Peer to Peer)の通信経路を構築するための接続要求を行う(PR2)。このとき、VPN装置101は、発呼側アドレス情報として、外部アドレス・ポート取得手順PR1で取得した端末103の外部アドレス・ポート情報(グローバルIPアドレス及びポート番号)を含む接続要求を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続要求を中継してVPN接続の接続先となるVPN装置301へ送信する。この接続要求により、呼制御サーバ202は、VPN装置101がVPN装置301へP2P経路構築のためのVPN接続をしたいという要求を接続先に通知する。
接続先のVPN装置301は、呼制御サーバ202からの接続要求を受けると、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(PR3)。このとき、VPN装置301は、上記VPN装置101と同様、端末303に割り当てられた外部アドレス・ポート情報(WAN200側からみたグローバルIPアドレス及びポート番号)を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエストパケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置301に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンスパケットを返送する。そして、VPN装置301は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
次に、VPN装置301は、呼制御サーバ202に対して、接続要求に対する接続応答を行う(PR4)。このとき、VPN装置301は、被呼側アドレス情報として、外部アドレス・ポート取得手順PR3で取得した端末303の外部アドレス・ポート情報(グローバルIPアドレス及びポート番号)を含む接続応答を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続応答を中継してVPN接続の接続要求元となるVPN装置101へ送信する。この接続応答により、呼制御サーバ202は、接続要求に対するVPN装置301からVPN装置101への応答を接続要求元に通知する。
この段階で、接続元のVPN装置101と接続先のVPN装置301とは、共に端末103,303の外部アドレス・ポート情報を取得している。したがって、VPN装置101及びVPN装置301は、互いに相手のVPN装置の配下の端末303、103の外部アドレス・ポート情報(グローバルIPアドレス及びポート番号)を送信先に設定してWAN200を経由してパケットを送信し、通信可能であること(VPN接続)を確認し、暗号化したデータ通信(VPN通信)を開始する(PR5)。
図5は本実施形態1のVPN装置におけるVPN構築時の処理内容を示すフローチャートである。この図5は、図4のVPN構築時の処理に関する具体的な処理内容を示したものである。図5において、ステップS11~S16は接続元(発呼側)のVPN装置101が行う処理の内容を示し、ステップS21~S26は接続先(被呼側)のVPN装置301が行う処理の内容を示している。
VPNの構築にあたってVPN接続するために、発呼側のVPN装置101は、まず、待受用の外部アドレス及びポートの情報として、端末103のグローバルIPアドレス及びポート番号を含む外部アドレス・ポート情報を取得する処理を行う(PR1、ステップS11)。この外部アドレス情報取得処理の詳細は、図6を用いてさらに詳細に説明する。
次に、VPN装置101は、被呼側のVPN装置301に対する接続要求を送信する(PR2、ステップS12)。この接続要求は、接続先の端末303を特定するための識別情報などを含むものである。また、接続要求には、ステップS11で取得した端末103の外部アドレス・ポート情報を含めて送信する。この接続要求は、呼制御サーバ202を経由してVPN装置301に伝送される。
被呼側のVPN装置301は、VPN装置101からの接続要求を受信する(ステップS21)。接続要求を受信すると、VPN装置301は、この接続要求に含まれている接続元の端末103の外部アドレス・ポート情報を取り出し、この情報をメモリに記憶する(ステップS22)。そして、VPN装置301は、待受用の外部アドレス及びポートの情報として、ステップS11と同様にして、端末303のグローバルIPアドレス及びポート番号を含む外部アドレス・ポート情報を取得する処理を行う(ステップS23)。
次に、VPN装置301は、発呼側のVPN装置101から受信した接続要求に対する接続応答を送信する(ステップS24)。この接続応答には、ステップS23で取得した端末303の外部アドレス・ポート情報を含めて送信する。この接続応答は、呼制御サーバ202を経由してVPN装置101に伝送される。
発呼側のVPN装置101は、接続応答を受信したかを判定して接続応答の待受けを行う(ステップS13)。接続応答を受信すると、VPN装置101は、この接続応答に含まれている接続先の端末303の外部アドレス・ポート情報を取り出し、この情報をメモリに記憶する(ステップS14)。
上記の処理により、データ通信開始処理PR5を実行する時点では、発呼側のVPN装置101と被呼側のVPN装置301は、共に端末103,303の外部アドレス・ポート情報と、発呼側のVPN装置101の外部アドレス・ポート情報とを取得している。
データ通信開始後、発呼側のVPN装置101は、被呼側のVPN装置301が待ち受けている端末303のグローバルIPアドレス及びポート番号を宛先として、VPN装置301に向けてWAN200上にデータを送信する(ステップS15)。一方、VPN装置301は、端末303のグローバルIPアドレス及びポート番号によってデータの待ち受けを行い、発呼側のVPN装置101から送信されたデータを受信する(ステップS25)。また、被呼側のVPN装置301は、発呼側のVPN装置101が待ち受けている端末103のグローバルIPアドレス及びポート番号を宛先として、VPN装置101に向けてWAN200上にデータを送信する(ステップS26)。一方、VPN装置101は、端末103のグローバルIPアドレス及びポート番号によってデータの待ち受けを行い、被呼側のVPN装置301から送信されたデータを受信する(ステップS16)。なお、待ち受けから受信に至る本発明の特徴は、「ホールパンチング」として以後に詳細に説明する。
VPN装置101及びVPN装置301の双方でデータの送受信に成功すると、VPN装置101とVPN装置301との間でVPN接続されたことが認識される。以降は、サーバを経由することなくP2Pで直接通信可能であり、VPN装置101配下の端末103とVPN装置301配下の端末303との間で暗号化したVPN通信を行う。
VPN通信を終了する際は、VPN装置101及びVPN装置301は当該VPN通信に用いていたポートを閉じるようにする。これにより、該当するポートに対して外部からのアクセスが不能になるので、セキュリティホールを塞ぐことができる。ここで、各ポートはアプリケーションに対応しており、VPN接続時にアプリケーションごとに割り当てたポート番号を指定して通信を行う。
たとえば、端末103側でアプリケーションを終了した場合などは、端末103からVPN装置101へ一定時間パケットが送られて来ないから、VPN装置101は端末103の通信が終了したものと判断してルータ102との通信を停止する。その結果、VPN通信は終了すると共にルータ102のポートは閉じられる。こうして、必要なときに通信相手の端末との間でVPN通信を行い、通信を終了するとVPN通信を終了しセキュリティホールを塞ぐことができる。
次に、上記ステップS11で示した外部アドレス情報取得処理について説明する。図6は外部アドレス情報取得処理の処理内容を示すフローチャート、図7は外部アドレス・ポート取得要求に関する処理手順を示すシーケンス図である。また、図8は外部アドレス・ポート取得要求と外部アドレス・ポート情報返信のそれぞれのパケット構造を示す図である。図6では、外部アドレス情報取得処理におけるVPN装置とSTUNサーバの各々の動作を示している。
VPN装置101は、外部アドレス・ポート取得要求として、バインディングリクエストパケットをSTUNサーバ201に送信する(ステップS31)。バインディングリクエストパケットは、図8の上側に示すように、この要求の識別ID(トランザクションID)が含まれる領域D11と、データ長の情報(データLength)が含まれる領域D12と、このパケットが「バインディングリクエスト」であることを示す符号(0x0001)が含まれる領域D13とを有している。また、図8には示されていないが、実際のパケットのヘッダには、送信元や送信先を示すグローバルIPアドレス及びポート番号の情報が含まれている。
STUNサーバ201は、待ち受け状態で外部アドレス・ポート取得要求を待機している(ステップS41)。ここで、バインディングリクエストパケットを受信すると、STUNサーバ201は、WAN側から見た端末103の外部アドレス・ポート情報(グローバルIPアドレス及びポート番号)を取得する(ステップS42)。
そして、STUNサーバ201は、外部アドレス・ポート取得要求のバインディングリクエストパケットに対する外部アドレス・ポート情報返信として、バインディングレスポンスパケットをVPN装置101に向けて送信する(ステップS43)。バインディングレスポンスパケットは、図8の下側に示すように、このパケットが「バインディングレスポンス」であることを示す符号(0x0101)が含まれる領域D21と、データ長の情報(データLength)が含まれる領域D22と、この応答の識別IDが含まれる領域D23と、属性情報(MAPPED-ADDRESS)が含まれる領域D24とを有している。属性情報の領域D24には、識別子の領域D24aと、属性データ長の領域D24bと、外部アドレス・ポート情報の領域D24cとが含まれている。STUNサーバ201は、この外部アドレス・ポート情報の領域D24cにおいて、ステップS42で取得した端末103に割り当てられている外部アドレス(グローバルIPアドレス)とポート(ポート番号)の情報を装填して返信する。
VPN装置101は、外部アドレス・ポート取得要求の送信後、待ち受け状態で外部アドレス・ポート情報返信を待機する(ステップS32)。ここで、バインディングレスポンスパケットを受信すると、VPN装置101は、このバインディングレスポンスパケットに含まれる外部アドレス・ポート情報(グローバルIPアドレス及びポート番号)を取り出し、メモリに保存する(ステップS33)。
ここで、VPN接続後のVPN通信において伝送されるパケットについて説明する。図9はVPN通信におけるパケット構造を示す図である。この図9では、発呼側の端末103からVPN装置101、WAN200、VPN装置301を通って被呼側の端末303までパケットを伝送する場合の、パケットのカプセリング及びアンカプセリングについて示している。
VPN接続において、VPN装置101、301内のVPN機能部142は、VPN装置101とVPN装置301との間にVPNのトンネルセッションを形成する。これにより、P2P接続によって送信元の端末103と送信先の端末303との間で通信の秘匿性を担保して安全にパケットを伝送できるようにする。このトンネルセッションの経路では、VPN機能部142の暗号処理部145によりカプセリングされ暗号化されたパケットが伝送される。
図9の最上段には、送信元の端末103(端末A)上のVPN通信用のアプリケーションが通信相手の端末303(端末D)に送信するIPパケットによるパケットP1が示されている。このパケットP1には、送信元の端末A及び送信先の端末DのIPアドレス情報P1aと、端末Aから端末Dへ送信する際のポート情報P1bと、伝送対象の実際のデータ部分P1cとが含まれている。
VPN装置101は、配下の端末103(端末A)から送信されたパケットP1を受け取って中継する際に、VPN機能部142において暗号化及びカプセリングを行い、パケットP2を生成して転送する。カプセル化されたパケットP2の中には、上記端末Aから通信相手の端末Dへ送るパケットP1の他に、送信元のVPN装置101及び送信先のVPN装置301のIPアドレス情報P2aと、VPN装置101からVPN装置301への送信に用いるポート情報P2bとが含まれている。この際、VPN装置101はパケットP2をUDP(User Datagram Protocol)でカプセリングしてVPN装置301へ送信する。
カプセル化されたパケットP2は、VPN装置101から送出され、LAN100、ルータ102、WAN200、ルータ302、LAN300を経由してVPN装置301まで到達する。
VPN装置301が受け取るパケットP3は、VPN装置101から送信されたパケットP2と同じものである。すなわち、カプセル化されたパケットP3の中には、VPN装置101及びVPN装置301のIPアドレス情報P2aと、VPN装置101からVPN装置301への送信に用いるポート情報P2bと、端末Aから通信相手の端末Dへ送るパケットP1とが含まれている。VPN装置301は、パケットP3を受け取って中継する際に、カプセル化されたパケットP3から配下の端末303が受け取るべきパケットP1をアンカプセリングして取り出し、端末303に転送する。端末303(端末D)では、送信元の端末103(端末A)から送信されたパケットP1と同じ内容のパケットP4を受け取ることができる。
次に、LAN100、300間のUDPホールパンチングについて説明する。図10はUDPホールパンチングの動作に関する状態遷移を示す図である。
WANを介して複数のLANを接続するネットワークでは、通常、図1に示したようなVPNシステムの構成のように、LAN100とWAN200との境界、及びWAN200とLAN300との境界にそれぞれルータ102、302が設けられる。よって、通常の状態では、LAN100内の端末103とLAN300内の端末303との間で直接パケットを伝送することはできない。UDPの場合、各ルータ102、302は、外部のWAN200側からLAN100、300内部に向かう方向のパケットを遮断するためである。
したがって、図10の上段において、(1)のようにLAN100からWAN200へ出る方向のパケットは通るが、(2)のようにWAN200からLAN300へ入る方向のパケットは通らない。つまり、図10の上段に示すように、LAN100側からルータ102、WAN200、ルータ302を介してLAN300に向かってパケットを送信すると、このパケットはルータ302によって遮断され、LAN300内への侵入が阻止される。
ただし、図10の中段の(3)に示すように、一旦LAN300からWAN200方向へパケットを送出する動作を行うと、その直後はルータ302における該当する送信元-送信先間のアドレス及びポートには一時的に穴が空いた状態になる。この場合、図10の下段の(4)に示すように、外部のWAN200側からLAN300内へパケットが通過する。つまり、LAN300内からLAN100へのパケット送出によって一時的に穴の空いているルータ302のポートを利用して、送信先のLAN100側からのパケットをルータ102、WAN200を介して、ルータ302のLAN300側に通すことができる。逆方向も同様である。
このルータの機能を利用して、通信相手からのパケットを受け取るために、VPN装置101、301は、事前に上記(3)のような自身のLAN側から通信相手へパケットを送出する動作を行えばよい。しかし、パケット送出によって外部に穴が空いた使用ポートは、所定時間が経過すると自動的に閉じられる。このため、WAN側からLAN内への通信が可能なポートを維持するためには、上記(3)の動作を、例えば10秒間程度の間隔で周期的に、あるいは断続的に行う必要がある。このようなLANからWAN方向へ事前にパケットを送出する動作、あるいはポート維持のために断続的にパケットを送出する動作は、ホールパンチングと呼ばれる。
このホールパンチングに使用するポート情報は、VPN装置101、301が前述の外部アドレス・ポート情報の取得処理によってSTUNサーバ201から受け取ることができる。自装置の外部アドレス・ポート情報を通信相手のVPN装置に通知してお互いに保持することで、通信相手に直接パケットを送信してホールパンチングを行い、通信相手からのパケットを受信することが可能になる。
VPN装置101、301は、VPN接続を確立した後、伝送するデータが存在しない場合であっても、端末103,303側のアプリケーション終了をVPN装置101、301が判断するまでは、通信可能な状態を維持するために、上記ホールパンチング動作を繰り返す。例えば、10秒程度の周期で通信相手と何らかのUDPパケットの送受信を所定間隔で繰り返してVPN用の通信経路のポートを維持する。
VPN通信を終了する場合は、端末103,303側のアプリケーションが終了したことを、各VPN装置101、301が判断(通信終了判断と略称する)してUDPパケットの送受信を停止し、ホールパンチング動作を終了する。これにより、使用ポートが閉じられ、WAN側からLAN側への不正な侵入が防止される。したがって、VPN通信時以外はポートを遮断し、VPN通信時はポートを開放することができ、セキュリティ性の高い通信が可能になる。
なお、同時に複数のセッション/ポートを使用した通信の場合、例えばシグナリングと音声パケットとを並行して伝送するようなアプリケーションが通信を行う場合には、次のような処理を行う構成としても良い。すなわち、音声パケットのように伝送の遅延が小さいことが要求されるパケットのみを本実施形態によるP2Pの通信経路で伝送し、遅延が大きくても問題が生じにくいシグナリング用のパケットについては、WAN上のサーバでデータを中継して伝送するような構成も可能である。
上述した本実施形態1は、ソフトウェアによってVPNを構築するソフトウェアVPNに適用可能なものである。ソフトウェアVPNは、VPN機能をコンピュータや情報家電といった機器の内部に自由に組み込むことが可能で、ネットワークセグメント間の接続に限らず、より細かな単位での接続が可能となっている。すなわち、ソフトウェアVPNは、ネットワークに接続された機器が持つ様々な通信アプリケーションと協調して動作することにより、場所単位ではなく、アプリケーション単位での接続を行うことができるものである。ソフトウェアVPNでは、IPsecやSSLを使用したトンネリング技術を使用し、自装置と相手装置との間でP2Pの通信経路を確立して暗号化通信を行うことが可能である。
例えば、LANとWANとがNATルータを介して接続されている場合、ダイナミックに使用するUDPポートでの開放の許可の有無、使用するポートの範囲などによる制限がある。このため、従来のVPN装置では、これらの条件を満たすような事前設定がVPN装置の設置時に必要不可欠であった。これに対し、本実施形態1では、STUNサーバによって自装置の外部アドレス・ポート情報を取得し、呼制御サーバを経由して相手装置と外部アドレス・ポート情報を交換することで、相手装置の外部アドレス・ポート情報を用いて互いに暗号化通信を行うことが可能になる。このため、事前に各種パラメータの設定作業を行う必要がなく、簡易かつ柔軟にVPNを構築可能である。
このように本実施形態1によれば、拠点毎のVPN装置において、従来のように所定の識別番号等を付与したり、適正なポートの使用や暗号の暗号化、復号化を行えるように装置の設置前に予め設定作業を行ったり、する必要がなくなる。また、常時、VPN通信を行う拠点のVPN装置間でVPNセッションを有効に起動しておく必要もない。したがって、例えばある企業のオフィスから別の企業のオフィスへ一時的にVPNで接続しようとする場合であっても、事前に設定作業を行うことなく、必要なときに必要な期間だけ容易にVPN通信が可能である。
また、本実施形態1では、必要に応じて相手装置との間でVPN接続を行って暗号化通信を開始し、通信終了時には使用ポートを閉じて通信経路を遮断することができる。これにより、通信のために開放したポートへの不正アクセスを防止でき、セキュリティホールを生じさせることがない。したがって、一時的なVPNの利用が容易に実現可能であり、この際の安全性を高めることができる。VPN通信においては、IPsecやSSLを使用してトンネリング及びカプセリングを行い、UDPでカプセリングして相手装置との間で伝送することで、WAN上での情報の漏洩、盗聴、改竄などを防止でき、秘匿性を担保した通信が可能である。また、LAN間のVPN接続によるP2Pの通信が可能であるので、中継サーバを設けたクライアント/サーバシステムの構成は必須ではなく、中継サーバの処理負荷の増加や中継時の遅延などを回避できる。
なお、本発明は、本発明の趣旨ならびに範囲を逸脱することなく、明細書の記載、並びに周知の技術に基づいて、当業者が様々な変更、応用することも本発明の予定するところであり、保護を求める範囲に含まれる。たとえば、本発明はWAN200上におけるSTUNサーバ201や呼制御サーバ202の存在が必須であるものと限定的に解釈されるものではない。自装置の外部アドレス・ポート情報を取得可能な手段・情報源はSTUNサーバ201に代替可能であり、たとえば、ハイブリッドP2Pや、ピュアP2Pや、DHTなどの技術が対応可能となる。また、ノードを順にたどって通信相手と通信経路を構築する技術は呼制御サーバ202に代替可能であり、たとえば、SMTPやDNSの技術が対応可能となる。
さらにまた、VPN装置101,301が通信するパケットはUDPに限られると限定的に解釈されるものでもない。あるいは、VPN装置101、301は必ずしもその配下に端末103,303を有する必要はなく、端末103,303に本発明のVPN装置のプログラムを読み込むことによって、端末自身がVPN装置と一体化して機能することも、本発明が保護を求める範囲に含まれる。
(実施形態2)
実施形態2では、VPNシステムの構成例を示す図とVPN装置のハードウェア構成の構成例を示すブロック図とVPN装置の機能的な構成例を示すブロック図は、それぞれ実施形態1で使用した図1-図3と同じである。
次に、本実施形態2のVPN装置101によるVPN構築時の動作について説明する。図11は本実施形態2のVPNシステムにおけるVPN構築時の処理手順を示すシーケンス図である。この図11では、VPN装置を含むネットワークにおいて、VPN装置101の配下の端末103からWAN200を経由して他のVPN装置301の配下の端末303に接続しようとする場合の処理を示している。
まず、図11に示す処理に先立ち、VPN装置101は呼制御サーバ202にログインしてユーザ認証を受けるようにする。VPN装置101がユーザ認証に成功した場合、呼制御サーバ202において、VPN装置101の識別情報(MACアドレス、ユーザID、電話番号など)やネットワーク上の位置情報(グローバルIPアドレス)等の登録、設定が行われる。以降、VPN装置101と呼制御サーバ202との間で通信可能となる。なお、VPN装置101は発呼側であるが、被呼側であるVPN装置301についても同様に、呼制御サーバ202にログインしてユーザ認証を受け、呼制御サーバ202においてVPN装置301の識別情報等の登録、設定が行われる。
この状態で、VPN装置101は、VPN通信を行うアプリケーションの起動に伴って外部アドレス・ポート取得部141の機能により、配下の端末103からのVPN接続の接続要求を受けると、呼制御サーバ202に対して、接続先の端末303を配下に持つVPN装置301へのP2P(Peer to Peer)の通信経路を構築するための接続要求を行う(ステップS101)。このとき、VPN装置101は、発呼側及び被呼側の識別情報を含む接続要求を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続要求を中継してVPN接続の接続先となるVPN装置301へ送信する(ステップS102)。この接続要求により、呼制御サーバ202は、VPN装置101がVPN装置301へP2P経路構築のためのVPN接続をしたいという要求を接続先に通知する。
VPN装置101による接続要求と同時並行で、VPN装置101は、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(ステップS103)。このとき、VPN装置101は、自装置に割り当てられた外部アドレス・ポート情報(WAN200側からみたグローバルIPアドレス及びポート番号)を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエスト(Binding Request 接続要求、RFC3489参照;以下同じ)パケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置101に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンス(Binding Response 接続応答、RFC3489参照;以下同じ)パケットを返送する。そして、VPN装置101は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
接続先のVPN装置301は、呼制御サーバ202からの接続要求を受けると、呼制御サーバ202に対して、接続要求に対する接続応答を行う(ステップS104)。このとき、VPN装置301は、発呼側及び被呼側の識別情報を含む接続応答を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続応答を中継してVPN接続の接続要求元となるVPN装置101へ送信する(ステップS105)。この接続応答により、呼制御サーバ202は、接続要求に対するVPN装置301からVPN装置101への応答を接続要求元に通知する。
VPN装置301による接続応答と同時並行で、VPN装置301は、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(ステップS106)。このとき、VPN装置301は、上記VPN装置101と同様、自装置に割り当てられた外部アドレス・ポート情報(WAN200側からみたグローバルIPアドレス及びポート番号)を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエストパケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置301に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンスパケットを返送する。そして、VPN装置301は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
VPN装置101がVPN装置301から接続許可を含む接続応答を受信すると、VPN装置101及びVPN装置301は、呼制御サーバ202を介して、互いに実データ(音声パケットや映像パケット等)の通信を行う(ステップS107)。つまり、P2Pの通信経路を確立する前に、実データの通信を開始している。
次に、VPN装置101及びVPN装置301は、呼制御サーバ202を介して、STUNサーバ201から取得した自装置の外部アドレス・ポート情報を互いに通知する(ステップS108)。そして、VPN装置101及びVPN装置301は、互いに受信した相手の外部アドレス・ポート情報を用いて、VPN装置101及びVPN装置301との間でP2P通信が可能な状態(P2P通信可能状態)であるか否かを判定する(ステップS109)。ここでは、互いに相手の外部アドレス・ポート情報(グローバルIPアドレス及びポート番号)を送信先に設定してWAN200を経由してパケットを送信し、通信可能であるか否か(VPN接続が可能か否か)を確認する。例えば、VPN装置101がVPN装置301へパケットを送信し、この送信から所定期間内にVPN装置301からパケットを受信したことを示す応答を受信した場合には、P2P通信可能状態であると判定する。
P2P通信可能状態である場合には、P2Pの通信経路が確立されているため、VPN装置101及びVPN装置301は、P2P通信により、互いに暗号化した実データの通信を開始する(ステップS110)。
次に、図12は本実施形態2のVPNシステムにおけるVPN構築時の別の処理手順を示すシーケンス図である。この図12では、VPN装置を含むネットワークにおいて、VPN装置101の配下の端末103からWAN200を経由して他のVPN装置301の配下の端末303に接続しようとする場合の処理を示している。
まず、図11の処理手順と同様に、VPN装置101及び301は呼制御サーバ202にログインしてユーザ認証を受け、呼制御サーバ202において端末103及び端末303の識別情報等の登録、設定が行われる。
この状態で、VPN装置101は、VPN通信を行うアプリケーションの起動に伴って外部アドレス・ポート取得部141の機能により、配下の端末103からのVPN接続の接続要求を受けると、VPN装置101は、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(ステップS201)。このとき、VPN装置101は、自装置に割り当てられた外部アドレス・ポート情報を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエストパケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置101に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンスパケットを返送する。そして、VPN装置101は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
次に、呼制御サーバ202に対して、接続先の端末303を配下に持つVPN装置301へのP2Pの通信経路を構築するための接続要求を行う(ステップS202)。このとき、VPN装置101は、発呼側及び被呼側の識別情報を含む接続要求を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続要求を中継してVPN接続の接続先となるVPN装置301へ送信する(ステップS203)。この接続要求により、呼制御サーバ202は、VPN装置101がVPN装置301へP2P経路構築のためのVPN接続をしたいという要求を接続先に通知する。
また、VPN装置101は、VPN装置301へ接続要求を送信すると、呼制御サーバ202を介して実データを送信する。そして、この実データをVPN装置301が受信する(ステップS204及びステップS205)。
接続先のVPN装置301は、呼制御サーバ202からの接続要求を受けると、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(ステップS206)。このとき、VPN装置301は、上記VPN装置101と同様、自装置に割り当てられた外部アドレス・ポート情報を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエストパケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置301に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンスパケットを返送する。そして、VPN装置301は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
次に、VPN装置301は、呼制御サーバ202に対して、接続要求に対する接続応答を行う(ステップS207)。このとき、VPN装置301は、発呼側及び被呼側の識別情報を含む接続応答を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続応答を中継してVPN接続の接続要求元となるVPN装置101へ送信する(ステップS208)。この接続応答により、呼制御サーバ202は、接続要求に対するVPN装置301からVPN装置101への応答を接続要求元に通知する。
また、VPN装置301は、VPN装置101へ接続許可を含む接続応答を送信すると、VPN装置101との間で呼制御サーバ202を介して実データの通信(送信、受信のいずれも可能)を行う(ステップS209及びステップS210)。VPN装置101及びVPN装置301が互いにデータ通信を開始した後の処理は、図11のステップS108~110の処理と同じである。
このような図11及び図12の処理手順によれば、P2Pの通信経路を確立する前に呼制御サーバ202を介して実データの通信を行うため、P2P通信可能状態か否かを確認するために要する時間に起因するデータ通信の遅延を回避し、データ通信を高速化することができる。特に、図12では接続要求とともに実データを送信することができるため、データ通信をより高速化することが可能である。
次に、図13は図11のシーケンス図に対応するVPN構築時の処理手順を示すフローチャートである。この図13では、VPN装置を含むネットワークにおいて、VPN装置101の配下の端末103からWAN200を経由して他のVPN装置301の配下の端末303に接続しようとする場合の処理を示している。
まず、図11の処理手順と同様に、VPN装置101及び301は呼制御サーバ202にログインしてユーザ認証を受け、呼制御サーバ202において端末103及び端末303の識別情報等の登録、設定が行われる。
VPN装置101は、呼制御サーバ202を介してVPN装置301へ接続要求を送信する(ステップS301)とともに、STUNサーバ201から自装置の外部アドレス・ポート情報を取得する(ステップS302)。VPN装置301は、VPN装置101からの接続要求を受信すると(ステップS303)、STUNサーバ201から自装置の外部アドレス・ポート情報を取得する(ステップS304)とともに、呼制御サーバ202を介してVPN装置101へ接続応答を送信する(ステップS305)。
VPN装置101は、VPN装置301からの接続応答を受信したか否かを判定し(ステップS306)、受信していない場合には接続応答を受信するまで待機する。VPN装置101が接続許可を含む接続応答を受信すると、VPN装置101及びVPN装置301は、呼制御サーバ202を介して互いにデータ通信(実データの通信)を開始する(ステップS307及びステップS308)。
上記のデータ通信を開始した後、VPN装置101は、呼制御サーバ202を介して、STUNサーバ201から取得したVPN装置101の外部アドレス・ポート情報をVPN装置301へ送信する(ステップ309)。そして、VPN装置301は、このVPN装置101の外部アドレス・ポート情報を発呼側アドレス情報として受信する(ステップS310)。同様に、VPN装置301は、呼制御サーバ202を介して、STUNサーバ201から取得したVPN装置301の外部アドレス・ポート情報をVPN装置101へ送信する(ステップ311)。そして、VPN装置101は、このVPN装置301の外部アドレス・ポート情報を被呼側アドレス情報として受信する(ステップS312)。
次に、VPN装置101及びVPN装置301は、互いに受信した相手の外部アドレス・ポート情報を用いて、P2P接続が可能であるか否かを確認する(ステップS313)。ここでは、先に説明したように、P2P通信可能状態であるか否かを確認する。
P2P通信可能状態である場合には、VPN装置101及びVPN装置301は、P2P通信を開始する。具体的には、VPN装置101は、VPN装置301の外部アドレス・ポート情報に基づいてVPN装置301へデータ送信(実データの送信)をP2P通信で行う(ステップS314)。そして、VPN装置301は、VPN装置101からのデータを受信する(ステップS315)。同様に、VPN装置301は、VPN装置101の外部アドレス・ポート情報に基づいてVPN装置101へデータ送信(実データの送信)をP2P通信で行う(ステップS316)。そして、VPN装置101は、VPN装置301からのデータを受信する(ステップS317)。
次に、図14は図12のシーケンス図に対応するVPN構築時の別の処理手順を示すフローチャートである。この図14では、VPN装置を含むネットワークにおいて、VPN装置101の配下の端末103からWAN200を経由して他のVPN装置301の配下の端末303に接続しようとする場合の処理を示している。
まず、図12の処理手順と同様に、VPN装置101及び301は呼制御サーバ202にログインしてユーザ認証を受け、呼制御サーバ202において端末103及び端末303の識別情報等の登録、設定が行われる。
VPN装置101は、STUNサーバ201から自装置の外部アドレス・ポート情報を取得する(ステップS401)。続いて、VPN装置101は、呼制御サーバ202を介してVPN装置301へ接続要求を送信する(ステップS402)。また、VPN装置101は、接続要求を送信するとともに、呼制御サーバ202を介してVPN装置301へのデータ送信(実データの送信)を開始する(ステップS403)。
VPN装置301は、VPN装置101からの接続要求を受信すると(ステップS404)、呼制御サーバ202を介してVPN装置101からのデータ受信(実データの受信)を開始する(ステップS405)。続いて、VPN装置301は、STUNサーバ202から自装置の外部アドレス・ポート情報を取得する(ステップS406)。
続いて、VPN装置301は、呼制御サーバ202を介してVPN装置101へ接続応答を送信する(ステップS407)。VPN装置301は、接続許可を含む接続応答を送信すると、呼制御サーバ202を介して、VPN装置101との間でデータ通信(実データの通信)を開始する(ステップS410)。
VPN装置101は、VPN装置301からの接続応答を受信したか否かを判定し(ステップS408)、受信していない場合には接続応答を受信するまで待機する。VPN装置101は、接続許可を含む接続応答を受信すると、呼制御サーバ202を介して、VPN装置301との間でデータ通信(実データの通信)を開始する(ステップS409)。
VPN装置101及びVPN装置301が互いにデータ通信を開始した後の処理は、図13のステップS309~317の処理と同じである。
このような本実施形態12のVPN装置101、301によれば、所定時間を要するP2P通信可能状態であるか否かの確認前に実データの少なくとも一部を送信開始することができるため、複数のVPN装置間でP2P通信を行うときの通信遅延の発生を回避することができ、データ通信を高速化することができる。
(実施形態2の変形例)
先の説明ではVPN機能を有するVPN装置が独立した装置として配置され、その配下に端末が配置されることを示したが、VPN装置(ここでは、VPN機能を有する端末)のみが配置されるようにしてもよい。ここでは、図1に示したVPNシステム及び図3に示したVPN装置と異なる点についてのみ説明する。
図15は本発明の実施形態2に係るVPNシステムの変形構成例を示す図である。図1に示したVPNシステムの構成と異なる点は、VPN装置101及びその配下の端末103の代わりに、VPN装置104を備え、同様に、VPN装置301及びその配下の端末303の代わりに、VPN装置304を備える点である。
図16は本実施形態のVPN装置104の機能的な構成例(変形構成例)を示すブロック図である。ここでは、図3に示したVPN装置101と異なる点についてのみ説明する。
VPN装置104は、機能構成として、配下端末と接続するネットワークインタフェース114、配下端末管理部131、データ中継部133を備えておらず、代わりに、VoIP(Voice Over Internet Protocol)アプリケーション機能部136、音声データ制御部137、データ入出力部138を備える。これらの各機能は、ハードウェアの動作、またはマイクロコンピュータ111が所定のプログラムを実行することにより実現する。
VoIPアプリケーション機能部136は、VoIPアプリケーション機能を実現させる各種プログラムの実行を行う。音声データ制御部137は、上記各種プログラムの実行により、他の端末との間で送受信されたりデータ入出力部138により入出力されたりする音声データ等の制御を行う。データ入出力部138は、マイク、スピーカ、操作パネル等が有する機能であり、音声データ等の各種データの入出力を行う。
なお、ここでは、VPN装置104がVoIPによる音声通話機能を有する場合を想定したが、先に示した他のVPN通信の用途を想定した端末としてもよい。
また、VPN構築時の処理手順については、基本的に図11~14に示した処理手順と同様であるが、VPN装置104は、VoIPアプリケーション機能部136によるアプリケーション起動により自ら接続要求を行う。
このような本実施形態のVPN装置104、304によれば、VPN装置を独立して設けることなく、複数のVPN装置(ここでは、VPN機能を有する端末)間でP2P通信を行うときの通信遅延の発生を回避することができ、データ通信を高速化することができる。
(実施形態3)
図17は本発明の実施形態3に係るVPNシステムの構成例を示す図である。本実施形態のVPNシステムは、一つの拠点に設けられたローカルエリアネットワーク(LAN、ローカルネットワーク)100と、他の拠点に設けられたLAN300とを、インターネット等の広域ネットワーク(WAN、グローバルネットワーク)200を介して通信経路を接続する。LANとしては、有線LANまたは無線LANなどが用いられる。WANとしては、インターネット等が用いられる。そして、LAN100の配下に接続された端末103、端末105、LAN300の配下に接続された端末303の間で、仮想プライベートネットワーク(VPN)による秘匿性を担保した通信(以下、「VPN通信」と称する)を可能にしている。具体的なVPN通信の用途(アプリケーションプログラム等)としては、IP電話(音声通話)、ネットミーティング(動画&音声通信)、ネットワークカメラ(ビデオ伝送)などが想定される。
LAN100とWAN200との境界にはルータ102が配設され、WAN200とLAN300との境界にはルータ302が配設されている。また、本実施形態では、VPNの構築を可能にするために、LAN100にはVPN装置1101及びVPN装置1104が接続され、LAN300にはVPN装置1301が接続されている。そして、VPN装置1101には配下の端末103が接続され、VPN装置1104には配下の端末105が接続され、VPN装置1301には配下の端末303が接続されている。なお、各LAN配下に接続されるVPN装置、端末の数はこれに限られず、例えばLAN300配下に複数のVPN装置、端末が接続されてもよい。
WAN200上には、VPN装置1101又は1104とVPN装置301との間のVPNによる接続(以下、「VPN接続」と称する)を可能にするために、STUNサーバ(Stun Server:SS)201、呼制御サーバ(Negotiation Server:NS)202が接続されている。また、データ通信中継サーバ(Relay Server :RS)203、特性情報サーバ(Addressing Server:AS)204もWAN200に接続されている。
STUNサーバ201は、STUN(Simple Traversal of User Datagram Protocol (UDP) through Network Address Translators (NATs))プロトコルを実行するために用いられるサーバである。呼制御サーバ202は、VPN装置や端末等のピア間の発呼、着呼のために用いられるサーバである。データ通信中継サーバ203は、VPN装置間のデータ通信を中継する機能を有する。特性情報サーバ204は、各端末の特性を記憶しており、VPN装置からの取得要求に応じて、例えば取得要求を行ったVPN装置配下の端末の特性などの特性情報(Configuration file)を送信する。
各機器がWAN200を介して通信する場合、WAN200上では、伝送するパケットの送信元や送信先を特定するためのアドレス情報として、WANにおいて特定可能なグローバルな(外部)アドレス情報が用いられる。一般にはIPネットワークが用いられるため、グローバルIPアドレス及びポート番号が用いられる。しかし、各LAN100、300内の通信においては、送信元や送信先を特定するためのアドレス情報として、LAN内のみで特定可能なローカルな(内部)アドレス情報が用いられる。一般にはIPネットワークが用いられるため、ローカルIPアドレス及びポート番号が用いられる。したがって、各LAN100、300とWAN200との間の通信を可能にするために、ローカルなアドレス情報とグローバルなアドレス情報との相互変換を行うNAT(Network Address Translation)機能が各ルータ102、302に搭載されている。すなわち、アドレス変換機能とは、IPネットワーク層のIPアドレスと、トランスポート層のポートとを含めた、いわゆるNAPT(Network Address Port Translation)に相当する相互変換を行う。以下本発明の説明において、NAT機能とは狭義のNAPT機能を含めた広義のNAT機能を指すものとする。
ただし、LAN100、300の配下の各端末においては、外部からアクセス可能なグローバルなアドレス情報を自身で持っていない。また、特別な設定を行わない限り、LAN100配下の端末103又は105が他のLAN300配下の端末303と直接通信を行うことはできない。また、各ルータ102、302のNAT機能のため、普通の状態ではWAN200側から各LAN100、300内の各端末にアクセスすることもできない。
このような状況であっても、本実施形態では、各拠点のLANにVPN装置1101、1104、1301を設けることにより、図17において示すネットワークを介したP2P通信の経路のように、LAN間をVPN接続して端末103又は105と端末303との間で仮想的な閉じられた通信経路を通じて直接通信することが可能になる。本実施形態のVPN装置の構成、機能、及び動作について以下に順を追って説明する。
STUNサーバ201は、STUNプロトコルの実行に関するサービスを行うもので、いわゆるNAT越えの通信を行うために必要な情報を提供するアドレス情報サーバである。STUNは、音声、映像、文章などの双方向リアルタイムIP通信を行うアプリケーションにおいて、NAT通過の方法の1つとして使われる標準化されたクライアントサーバ型のインターネットプロトコルである。STUNサーバ201は、アクセス元からの要求に応じて、外部からアクセス可能な当該アクセス元のグローバルなアドレス情報として、外部ネットワークから見える外部アドレスとポートの情報を含む外部アドレス・ポート情報を返信する。外部アドレス・ポート情報としては、IPネットワークにおいてはグローバルIPアドレス及びポート番号が用いられる。
各VPN装置1101、1104、1301は、STUNサーバ201との間で所定のテスト手順の通信を実行し、STUNサーバ201からそれぞれ端末103、105、303のグローバルIPアドレス及びポート番号が含まれる応答パケットを受信する。これにより、各VPN装置1101、1104、1301はそれぞれ端末103、105、303のグローバルIPアドレス及びポート番号を取得することができる。また、自装置の位置するLANとWANとの間にルータが複数存在する場合等であっても、これらのルータ等がUPnP(Universal Plug and Play)の機能を有していない場合であっても、確実にグローバルIPアドレス及びポート番号を取得できるという効果もある。
なお、VPN装置1101、1104、1301がグローバルIPアドレス及びポート番号を取得するための方法に関しては、IETFのRFC 3489(STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs))にて記載された手法を利用することもできる。しかし、STUNによる手法はグローバルIPアドレス及びポート番号を取得するところまでが可能なのであって、本実施形態では、通信に先立って予め各種パラメータの設定作業を行うこともなく、簡易かつ柔軟にVPNを構築することができる。
呼制御サーバ202は、特定の相手先を呼び出して通信経路を確立するための通信装置間の呼制御に関するサービスを行う中継サーバである。呼制御サーバ202は、登録されたVPN装置または端末の識別情報を保持しており、例えばIP電話の機能を有する通信システムの場合には、接続相手の電話番号に基づいて特定の相手先を呼び出すことも考えられる。また、呼制御サーバ202は、信号やデータを中継する機能を有しており、発信側の装置から送出されたパケットを着信側の装置に転送したり、着信側の装置から送出されたパケットを発信側の装置に転送したりすることも可能である。また、呼制御サーバ202は、各端末がデータ通信中継サーバ203へアクセス可能となるように、データ通信中継サーバ203のグローバルIPアドレス及びポート番号の情報を通知することもできる。
なお、STUNサーバ201及び呼制御サーバ202は、ここでは別個のサーバによる構成例を示しているが、1つのサーバで構成してもよいし、WAN上の他のいずれかのサーバに同様の機能を搭載して構成することも可能である。
データ通信中継サーバ203は、VPN装置間のデータ通信を中継する機能を有している。データ通信中継サーバ203はWAN200上に複数配置されてもよく、同時に複数のデータ通信の中継を行うことができる。
特性情報サーバ204は、VPN装置からの取得要求に応じて、特性情報(Configuration file)を送信する。特性情報としては、例えば各端末の設定情報や動作情報が含まれる。また、各端末がデータ通信中継サーバ203へアクセス可能となるように、データ通信中継サーバ203のグローバルIPアドレス情報及びポート番号の情報が含まれてもよい。
次に、複数のVPN装置間で通信を行うときの通信経路について説明する。本実施形態では、以下の4つの通信経路(第1~第4の通信経路)を想定している。図17では、太実線又は太破線により、第1~第4の通信経路を示している。
まず、第1の通信経路は、呼制御サーバ202を介した通信経路である。呼制御サーバ202は、VPN装置間で通信を確立するための処理を行うため、第1の通信経路は、例えば、通信開始から所定期間、初期段階の通信経路として利用される。
また、第2の通信経路は、データ通信中継サーバ203を介した通信経路である。第2の通信経路は、例えば、通信開始から所定期間経過後から利用される。これにより、データ通信中継サーバ203は呼制御サーバ202よりも処理負荷が軽いため、呼制御サーバ202を介した通信よりも高速にVPN装置間の通信を中継することができる。
また、第3の通信経路は、WAN200を介して2つのLAN100、300の経路を経路接続してVPNシステムを構築し、ネットワークを介して直接通信を行う通信経路(以下、ネットワークを介したP2P通信経路ともいう)である。第3の通信経路は、例えば、異なるLAN100、300に接続される端末103と端末303との間で通信を行う場合であって、P2P通信が可能なときに利用される。
また、第4の通信経路は、同一のLAN100に接続された端末同士で通信を行うときに、外部ネットワークを介さずに直接通信を行う通信経路(以下、ローカルP2P通信経路ともいう)である。第4の通信経路は、例えば、同一のLAN100に接続されるVPN装置1101の配下の端末103とVPN装置1104の配下の端末105との間で通信を行うときに利用される。
図18は、同一LANに接続されたVPN装置同士で行われる通信(ローカルP2P通信)の一例を示す図である。ここでは、VPN装置1101とVPN装置1104との間で通信を行うことを想定している。
初期段階では、VPN装置1101及びVPN装置1104は、互いに同一LAN100内に配置されていることを認識していない。そのため、VPN装置1101及びVPN装置1104は、外部アドレス・ポート情報を用いて、WAN200へパケットを送信しようとする。ここで、ルータ102は、VPN装置1101及びVPN装置1104からの通信データを参照し、送信先のアドレス(例えばグローバルIPアドレス)がルータ102配下の端末であることを認識した場合には、外部ネットワーク(ここではWAN200)に通信データを送出せずに、送信先であるVPN装置1104及びVPN装置1101へ送る。この動作をヘアピニング動作とも呼ぶ。
また、VPN装置1101及びVPN装置1104が、相手装置が同一LAN100内に存在することを認識した場合には、相手装置のプライベートIPアドレス及びポート番号の情報を用いて、ルータ102を介さずに、VPN装置1101及びVPN装置1104の間で直接通信してもよい。このようにルータ102を介さずに直接通信を行うことで、中継回数が一回減少し、ネットワーク負荷が軽減し、高速化が実現できる。また、ルータ102の機種によっては、ヘアピニング動作を行うことができない機種もあるが、ルータ102の機種によらずローカルP2P通信が可能となる。
さらに、図19は、同一LAN内に多段にルータが配設された環境の一例を示す図である。図19に示す例では、LAN_AにLAN_Bが含まれる構成となっている。LAN_AにはルータAが接続されており、LAN_BにはルータBが接続されている。ルータBの配下には、VPN装置A及びVPN装置Bが配置されている。また、LAN_Bのエリア外であってルータAの配下には、VPN装置Cが配置されている。ここでは、VPN装置AとVPN装置Cとの間で通信を行うことを想定している。
初期段階では、VPN装置A及びVPN装置Cは、互いに同一LAN_A内に配置されていることを認識していない。そのため、VPN装置A及びVPN装置Cは、外部アドレス・ポート情報を用いて、WAN200へパケットを送信しようとする。ここで、VPN装置Aは送信先のアドレス(例えばグローバルIPアドレス)がルータA配下の端末であることを認識した場合には、外部ネットワーク(ここではWAN200)に通信データを送出せずに、送信先であるVPN装置CのローカルIPアドレスへ送る。VPN装置Cは、受け取ったデータの送信元へ送り返すことで、このように、ルータが多段に接続されている環境であっても、同一LAN内において直接P2P動作を行うことが可能である。
次に、本実施形態のVPN装置の構成及び機能について説明する。なお、VPN装置1101、1104、1301の構成及び機能は同様であり、ここではVPN装置1101によって説明する。図20は本実施形態のVPN装置のハードウェア構成の構成例を示すブロック図である。
VPN装置1101は、マイクロコンピュータ(CPU)1111、フラッシュRAM等による不揮発性メモリ1112、SD RAM等によるメモリ1113、ネットワークインタフェース1114、ネットワークインタフェース1115、LAN側ネットワーク制御部1116、WAN側ネットワーク制御部1117、通信中継部1118、表示制御部1119、表示部1120を有して構成される。
マイクロコンピュータ1111は、所定のプログラムを実行することによりVPN装置101全体の制御を実施する。不揮発性メモリ1112は、マイクロコンピュータ1111が実行するプログラムを保持している。このプログラムの中には、VPN装置101が外部アドレス・ポート情報やプライベートIPアドレスの情報を取得するためのアドレス・ポート取得プログラムも含まれている。
なお、マイクロコンピュータ1111が実行するプログラムについては、任意の通信経路を経由してオンラインで外部のサーバから取得することもできるし、例えばメモリカードやCD-ROMのような記録媒体から読み込んで取得することもできる。換言すれば、汎用のコンピュータ(マイクロコンピュータ1111)にVPN装置の機能を実現するプログラムを記録媒体から読み込むことによってVPN装置、およびVPNネットワーキング方法を実現することができる。
なお、マイクロコンピュータ1111がプログラムを実行する時には、不揮発性メモリ1112上のプログラムの一部がメモリ1113上に展開され、メモリ1113上のプログラムが実行される場合もある。
メモリ1113は、VPN装置1101の運用中のデータ管理や、各種設定情報などを一時的に記憶するためのものである。設定情報としては、端末の外部アドレス・ポート取得要求の応答に含まれる外部アドレス・ポート情報等、通信に必要なあて先アドレス情報などが含まれる。また、自端末のプライベートIPアドレスの情報が含まれてもよい。
ネットワークインタフェース1114は、VPN装置1101と自装置が管理する配下の端末103とを通信可能な状態で接続するためのインタフェースである。ネットワークインタフェース1115は、VPN装置1101とLAN100とを通信可能な状態で接続するためのインタフェースである。LAN側ネットワーク制御部1116は、LAN側のネットワークインタフェース1114に関する通信制御を行うものである。WAN側ネットワーク制御部1117は、WAN側のネットワークインタフェース1115に関する通信制御を行うものである。
通信中継部1118は、LAN側に接続された配下の端末103から外部のVPN接続先(VPN装置1301配下の端末303)や同一LAN内のVPN接続先(VPN装置1104配下の端末105)へ送出するパケットデータと、反対に、外部のVPN接続先(VPN装置1301配下の端末303)や同一LAN内のVPN接続先(VPN装置1104配下の端末105)から配下の端末103宛に到着したパケットデータをそれぞれ中継する。
表示部1120は、VPN装置1101としての動作状態の表示等を行う表示器により構成され、各種状態をユーザあるいは管理者に通知する。表示部1120は、複数の発光ダイオード(LED)や液晶表示器(LCD)等により構成される。表示制御部1119は、表示部1120の表示制御を行うもので、マイクロコンピュータ1111からの表示信号に従って表示部1120に表示する内容等を制御する。
図21は本実施形態のVPN装置の機能的な構成例を示すブロック図である。
VPN装置1101は、機能構成として、システム制御部1130、配下端末管理部1131、メモリ部1132、データ中継部1133、設定用インタフェース部1134、通信制御部1140を有して構成される。メモリ部1132は、外部アドレス・ポート情報記憶部1135、通信経路情報記憶部1136を有する。通信制御部1140は、外部アドレス・ポート取得部1141、VPN機能部1142、呼制御機能部1143を有する。VPN機能部1142は、暗号処理部1145を有する。これらの各機能は、図20に示した各ブロックのハードウェアの動作、またはマイクロコンピュータ1111が所定のプログラムを実行することにより実現する。
なお、VPN装置1101のLAN側のネットワークインタフェース1114は、配下の端末103と接続され、WAN側のネットワークインタフェース1115は、LAN100及びルータ102を経由してWAN200と接続される。
システム制御部1130は、VPN装置1101の全体の制御を行う。配下端末管理部1131は、VPN装置1101配下の端末103の管理を行う。メモリ部1132は、外部アドレス・ポート情報記憶部1135において、外部アドレス(WAN200上でのグローバルIPアドレス)とポート(IPネットワークのポート番号)の情報を含む外部アドレス・ポート情報やプライベートIPアドレスの情報を記憶する。外部アドレス・ポート情報及びプライベートIPアドレスの情報としては、接続元である配下の端末103に割り当てられたグローバルIPアドレス及びポート番号やプライベートIPアドレスの情報、接続先の端末303又は105に割り当てられたグローバルIPアドレス及びポート番号の情報、接続先の端末105に割り当てられたプライベートIPアドレスの情報などを記憶する。
また、メモリ部1132は、通信経路情報記憶部1136において、VPN装置1101とVPN装置1301又は1104とを通信可能に接続する複数の通信経路(例えば第1~第4の通信経路)の情報と、各通信経路の評価情報と、を含む情報を記憶する。図22は、通信経路情報記憶部1136が記憶する情報(通信経路情報)の一例を示す図である。通信経路情報記憶部1136は、通信経路情報として、通信経路毎に、優先度、経路種別、接続速度、通信速度、接続コスト、接続安定度、などの情報を有する。このうち、優先度、接続速度、通信速度、接続コスト、接続安定度などが評価情報の一例である。なお、図6に示す例では、最適、適、不適、最不適の4段階の指標が記憶されているが、これに限られず、具体的な数値を記憶していてもよい。例えば、ビットレート、ボーレート、エラーレート、再送頻度、通信を中継する中継器の数、通信料金、などを記憶していてもよい。また、ユーザの指示により、操作部等を介して通信経路情報を必要があるときに任意に設定できるようにしてもよい。
データ中継部1133は、接続元の端末103から接続先の端末303又は105に向かって転送されるパケットや、逆に接続先の端末303又は105から接続元の端末103に向かって転送されるパケットをそれぞれ中継する。設定用インタフェース部1134は、ユーザあるいは管理者がVPN装置1101に対する設定操作等の各種操作を行うためのユーザインタフェースである。このユーザインタフェースの具体例として、端末上で動作するブラウザによって表示するWebページなどが用いられる。
通信制御部1140の外部アドレス・ポート取得部1141は、VPN装置1101の配下の端末103に割り当てられた外部アドレス・ポート情報をSTUNサーバ201から取得する。また、接続先の端末303又は105の外部アドレス・ポート情報を含むパケットを呼制御サーバ202を経由して受信し、接続先の端末303又は105に割り当てられた外部アドレス・ポート情報を取得する。また、接続先の端末105のプライベートIPアドレスの情報を含むパケットを例えば呼制御サーバ202を介して取得する。外部アドレス・ポート取得部1141が取得した情報は、メモリ部1132の外部アドレス・ポート情報記憶部1135に保持される。
通信制御部1140のVPN機能部1142は、暗号処理部1145において、VPN通信のために必要な暗号処理を行う。すなわち、暗号処理部1145は、送信するパケットをカプセリングして暗号化したり、受信したパケットをアンカプセリングして復号化して元のパケットを抽出したりする。なお、VPN装置1101は、先に説明した第3~第4の通信経路によるP2P通信だけでなく、呼制御サーバ202又はデータ通信中継サーバ203でパケットの中継を行う第1~第2の通信経路によるクライアント/サーバ方式の通信を行うことも可能である。後者の場合には、サーバ側で暗号処理を行うようにしてもよい。
呼制御機能部1143は、目的の接続先に接続するための接続要求を呼制御サーバ202に送信したり、接続先からの接続応答を呼制御サーバ202を経由して受信したりするための処理を実施する。また、呼制御機能部1143は、第1~第4の通信経路のいずれかにより、VPN装置1101とVPN装置1301又は1104とが接続可能な状態か否かを判定する。また、呼制御機能部1143は、接続可能な状態と判定した通信経路に関して、通信経路情報記憶部1136に記憶された通信経路情報の評価情報を参照し、使用すべき特定の通信経路を設定する。例えば、第1~第4の全ての通信経路が接続可能な状態にある場合には、第4の通信経路であるローカルP2P通信経路を使用すべき通信経路に設定する。また、ネットワークを介したP2P通信やローカルP2P通信による接続が不可能な状態である場合には、第2の通信経路であるデータ通信中継サーバ203を介した通信経路を使用すべき通信経路に設定する。
次に、本実施形態のVPN装置1101によるVPN構築時の動作について説明する。図23は本実施形態のVPNシステムにおけるVPN構築時の処理手順を示すシーケンス図である。この図23では、VPN装置を含むネットワークにおいて、VPN装置1101の配下の端末103と他のVPN装置1301の配下の端末303又は他のVPN装置1104の配下の端末105に接続しようとする場合の処理を示している。ここでは、一例として、通信経路情報記憶部1136に記憶された通信経路情報に含まれる優先度の低い順に通信経路を確立する手順について説明するが、通信経路を確立する順序はこれに限られない。
まず、図23に示す処理に先立ち、VPN装置1101は呼制御サーバ202にログインしてユーザ認証を受けるようにする。VPN装置1101がユーザ認証に成功した場合、呼制御サーバ202において、VPN装置1101の識別情報(MACアドレス、ユーザID、電話番号など)やネットワーク上の位置情報(グローバルIPアドレス)等の登録、設定が行われる。以降、VPN装置1101と呼制御サーバ202との間で通信可能となる。なお、VPN装置1101は発呼側であるが、被呼側であるVPN装置1301又は1104についても同様に、呼制御サーバ202にログインしてユーザ認証を受け、呼制御サーバ202においてVPN装置1301又は1104の識別情報等の登録、設定が行われる。
この状態で、VPN装置1101は、VPN通信を行うアプリケーションの起動に伴って外部アドレス・ポート取得部1141の機能により、配下の端末103からのVPN接続の接続要求を受けると、呼制御サーバ202に対して、接続先の端末303を配下に持つVPN装置1301又は接続先の端末105を配下に持つVPN装置1104へのネットワークを介したP2P通信経路を構築するための接続要求を行う(ステップS1101)。このとき、VPN装置1101は、発呼側及び被呼側の識別情報を含む接続要求を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続要求を中継してVPN接続の接続先となるVPN装置1301又は1104へ送信する(ステップS1102)。この接続要求により、呼制御サーバ202は、VPN装置1101がVPN装置1301又は1104へネットワークを介したP2P経路構築のためのVPN接続をしたいという要求を接続先に通知する。
VPN装置1101による接続要求と同時並行で、VPN装置1101は、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(ステップS103)。このとき、VPN装置1101は、端末103に割り当てられた外部アドレス・ポート情報(WAN200側からみたグローバルIPアドレス及びポート番号)を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエスト(Binding Request 接続要求、RFC3489参照;以下同じ)パケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置1101に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンス(Binding Response 接続応答、RFC3489参照;以下同じ)パケットを返送する。そして、VPN装置1101は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
接続先のVPN装置1301又は1104は、呼制御サーバ202からの接続要求を受けると、呼制御サーバ202に対して、接続要求に対する接続応答を行う(ステップS1104)。このとき、VPN装置1301又は1104は、発呼側及び被呼側の識別情報を含む接続応答を呼制御サーバ202へ送信する。呼制御サーバ202は、この接続応答を中継してVPN接続の接続要求元となるVPN装置1101へ送信する(ステップS1105)。この接続応答により、呼制御サーバ202は、接続要求に対するVPN装置1301又は1104からVPN装置1101への応答を接続要求元に通知する。
VPN装置1301又は1104による接続応答と同時並行で、VPN装置1301又は1104は、STUNサーバ201との間で外部アドレス・ポート取得手順を行う(ステップS1106)。このとき、VPN装置1301又は1104は、上記VPN装置1101と同様、端末303又は105に割り当てられた外部アドレス・ポート情報(WAN200側からみたグローバルIPアドレス及びポート番号)を取得するため、STUNサーバ201に対して、外部アドレス・ポート取得要求としてバインディングリクエストパケットを送出する。一方、STUNサーバ201は、外部アドレス・ポート取得要求に対して応答し、VPN装置1301又は1104に外部アドレス・ポート情報返信として外部アドレス・ポート情報を含むバインディングレスポンスパケットを返送する。そして、VPN装置1301又は1104は、外部アドレス・ポート情報返信により得られた外部アドレス・ポート情報を記憶する。
VPN装置1101がVPN装置1301又は1104から接続許可を含む接続応答を受信すると、VPN装置1101及びVPN装置1301又は1104は、呼制御サーバ202を介して、互いに実データ(音声パケットや映像パケット等)の通信を行う(ステップS1107)。つまり、ネットワークを介したP2P通信経路を確立する前に、実データの通信を開始している。
次に、VPN装置1101及びVPN装置1301又は1104は、呼制御サーバ202を介して、STUNサーバ201から取得した端末103及び端末303又は105の外部アドレス・ポート情報を互いに通知する(ステップS1108)。
次に、VPN装置1101及びVPN装置1301又は1104は、呼制御サーバ202を介した実データの通信から、データ通信中継サーバ203を介した実データの通信に切り替える(ステップS1109)。データ通信中継サーバ203のグローバルIPアドレス及びポート番号の情報は、特性情報サーバ204からデータ通信中継サーバ203の各種情報(グローバルIPアドレス及びポート番号の情報を含む)を含む特性情報を取得することにより把握してもよい。また、呼制御サーバ202が、実データの通信をデータ通信中継サーバ203へ切り替える都度、データ通信中継サーバ203のポート番号の情報をVPN装置1101及びVPN装置1301又は1104へ通知するようにしてもよい。
呼制御サーバ202からデータ通信中継サーバ203への切り替えと同時並行で、VPN装置1101及びVPN装置1301又は1104は、互いに受信した端末103及び端末303又は105の外部アドレス・ポート情報を用いて、端末103及び端末303又は105との間で、ネットワークを介したP2P通信が可能な状態であるか否かを判定する(ステップS1110)。ここでは、互いに相手の外部アドレス・ポート情報(グローバルIPアドレス及びポート番号)を送信先に設定してWAN200を経由してパケットを送信し、通信可能であるか否かを確認する。例えば、VPN装置1101がVPN装置1301又は1104へパケットを送信し、この送信から所定期間内にVPN装置1301又は1104からパケットを受信したことを示す応答を受信した場合には、ネットワークを介したP2P通信が可能な状態であると判定する。
例えば、ネットワークを介したP2P通信が可能か否かは、ルータ102及びルータ302が有するNAT機能の種別によって決定される。NAT機能の種別としては、FC(Full Cone NAT)、AR(Address-Restricted cone NAT)、PR(Port-Restricted cone NAT)、SYN(Symmetric NAT)の4種類がある。このうち、ルータ102及びルータ302の組み合わせが、両者ともSYNの場合、もしくは、一方がPRかつ他方がSYNの場合には、ネットワークを介したP2P通信が不可能となる。これらの組み合わせ以外であれば、端末103及び端末303又は105の間でネットワークを介したP2P通信が可能である。
ネットワークを介したP2P通信が可能な状態である場合には、ネットワークを介したP2P通信経路が確立されているため、VPN装置101及びVPN装置301又は104は、ネットワークを介したP2P通信により、互いに暗号化した実データの通信を開始する(ステップS1111)。
さらに、VPN装置1101及びVPN装置1301又は1104は、ローカルP2P通信が可能な状態であるか否かを判定する(ステップS1112)。
このとき、まず、VPN装置101は、接続先の端末303又は105の外部アドレス・ポート情報を参照し、端末303又は105のグローバルIPアドレスが端末103と同一であるか否かを判定する。グローバルIPアドレスが同一である場合には、端末103の接続先が同一LAN内の接続先、つまりVPN装置1104の配下の端末105であると認識する。
そして、端末105のプライベートIPアドレス及びポート番号の情報を用いて、VPN装置1101がVPN装置1104へパケットを送信し、この送信から所定期間内にVPN装置1104からパケットを受信したことを示す応答を受信した場合には、ローカルP2P通信が可能な状態であると判定する。なお、ポート番号の情報については、外部アドレス・ポート情報を互いに通知した際に取得済みである。プライベートIPアドレスの情報については、ステップS1108において外部アドレス・ポート情報を互いに通知する際に併せて互いに通知してもよいし、いずれかの通信経路による通信(ステップS1107、1109、1111における通信)を行っているときに、実データとともに互いに通知してもよい。つまり、ローカルP2P通信を開始する前に、互いにプライベートIPアドレスの情報を通知しておく。
ローカルP2P通信が可能な場合には、端末103及び端末105は、ネットワークを介したP2P通信からローカルP2P通信に切り替え、ローカルP2P通信を開始する(ステップS1113)。ローカルP2P通信を行うときには、端末103及び端末105のプライベートIPアドレス及びポート番号の情報を用いる。
次に、図24及び図25は、図23のシーケンス図に対応するVPN構築時の処理手順を示すフローチャートである。この図24及び図25では、VPN装置を含むネットワークにおいて、VPN装置1101の配下の端末103から他のVPN装置1301の配下の端末303又は他のVPN装置1104の配下の端末105に接続しようとする場合の処理を示している。
まず、図23の処理手順と同様に、VPN装置1101及びVPN装置1301又は1104は呼制御サーバ202にログインしてユーザ認証を受け、呼制御サーバ202においてVPN装置1101及びVPN装置1301又は1104の識別情報等の登録、設定が行われる。
VPN装置1101は、呼制御サーバ202を介してVPN装置1301又は1104へ接続要求を送信する(ステップS1301)とともに、STUNサーバ201から端末103の外部アドレス・ポート情報を取得する(ステップS1302)。VPN装置1301又は1104は、VPN装置1101からの接続要求を受信すると(ステップS1303)、STUNサーバ201から端末303又は105の外部アドレス・ポート情報を取得する(ステップS1304)とともに、呼制御サーバ202を介してVPN装置1101へ接続応答を送信する(ステップS1305)。
VPN装置1101は、VPN装置1301又は1104からの接続応答を受信したか否かを判定し(ステップS1306)、受信していない場合には接続応答を受信するまで待機する。VPN装置1101が接続許可を含む接続応答を受信すると、VPN装置1101及びVPN装置1301又は1104は、呼制御サーバ202を介して互いにデータ通信(実データの通信)を開始する(ステップS1307及びステップS1308)。
呼制御サーバ202を介したデータ通信の開始後、VPN装置1101及びVPN装置1301又は1104は、データ通信中継サーバ203への接続手順を実行する(ステップS1309及びS1310)。ここでは、呼制御サーバ202又は特性情報サーバ204からデータ通信中継サーバ203のグローバルIPアドレス及びポート番号の情報を取得する。そして、VPN装置1101及びVPN装置1301又は1104は、取得したデータ通信中継サーバ203のグローバルIPアドレス及びポート番号を中継先に設定し、中継サーバ203を介して互いにデータ通信を開始する(ステップS1311及びS1312)。つまり、実データの通信が呼制御サーバ202経由からデータ通信中継サーバ203経由に切り替えられる。切り替え後は、呼制御サーバ202を介したデータ通信を終了する。
データ通信中継サーバ203を介したデータ通信の開始後、VPN装置1101及びVPN装置1301又は1104は、互いに受信した相手の外部アドレス・ポート情報を用いて、ネットワークを介したP2P通信の接続確認を行う(ステップS1313及びS1314)。ここでは、ネットワークを介したP2P通信が可能か否かの判定を行う。ネットワークを介したP2P通信が可能である場合には、端末103及び端末303又は105は、互いにネットワークを介したP2P通信を開始する(ステップS1315及びS1316)。
続いて、データ通信中継サーバ203を介したデータ通信もしくはネットワークを介したP2P通信中に、VPN装置101及びVPN装置301又は104は、通信相手のグローバルIPアドレスがそれぞれ端末103及び端末303又は105のグローバルIPアドレスと同一であるか否かを判定する(ステップS1317及びS1318)。互いのグローバルIPアドレスが異なる場合には、異なるLAN100、300にVPN装置101、301が配設されていることを示している。この場合には、端末103及び端末303は、現状の通信経路を利用したデータ通信(つまりデータ通信中継サーバ203を介した通信もしくはネットワークを介したP2P通信)を継続する(ステップS1319)。
一方、互いのグローバルIPアドレスが一致する場合には、同一のLAN100内のVPN装置101、104の配下の端末103及び105の間の通信であることを示している。この場合には、VPN装置1101及びVPN装置1104は、例えば呼制御サーバ202を経由してプライベートIPアドレスの情報を互いに相手側へ通知し、互いに受信した相手のVPN装置の配下の端末103及び105のプライベートIPアドレス及びポート番号の情報を用いて、ローカルP2P通信経路の接続確認を行う(ステップS1320及びS1321)。ローカルP2P通信経路の接続が不可能である場合には、VPN装置1101及びVPN装置1104は、現状の通信経路を利用したデータ通信(つまりデータ通信中継サーバ203を介した通信もしくはネットワークを介したP2P通信)を継続する(ステップS1322)。一方、ローカル2P通信経路の接続が可能である場合には、端末103及び端末105は、互いにローカルP2P通信を開始する(ステップS1323及びS1324)。
このような図23及び図24の処理手順によれば、通信経路情報記憶部1136に記憶された通信経路情報に示す優先度の高い通信経路を優先して設定することができる。したがって、通信を行うとするVPN装置の置かれた環境において、最適な通信経路を設定することができる。
(実施形態4)
図26は本発明の実施形態4における通信システムの構成の一例を示す図である。図26に示した構成例においては、一方の拠点に設けられたローカルエリアネットワーク(以下、LANとも称する)100の配下に接続された端末103と、他方の拠点に設けられたローカルエリアネットワーク300の配下に接続された端末303とをインターネット等の広域エリアネットワーク(グローバルエリアネットワーク)(以下、WANとも称する)200を介して安全な状態で通信可能にする場合を想定している。なお、具体的なVPN通信の用途(アプリケーションプログラムの区分等)としては、IP電話(通話)や、ネットミーティングや、ネットワークカメラなどが想定される。また、LAN100及び300は、例えば、ある支店の内部に或いはある事務所の1部署にイーサネット(登録商標)で構築されたネットワークである。
図26に示すように、LAN100とWAN200との間にはルータ102が設置され、WAN200とローカルエリアネットワーク300との間にはルータ302が設置されている。また、仮想プライベートネットワーク(VPN)の接続を可能にするために、LAN100と端末103との間にVPN装置2101を設置してあり、ローカルエリアネットワーク300と端末303との間にVPN装置2301を設置してある。なお、VPN装置2101及び2301は、通信の中継装置(ルータ)としての機能も有する。
端末103や端末303がWAN200を介して通信する場合、WAN200上では、伝送するパケットの送信元や送信先を特定するためのアドレス情報としてグローバルIPアドレスが用いられる。しかし、各LAN100及び300上の通信においては、送信元や送信先を特定するためのアドレス情報としてローカルIPアドレスが用いられる。従って、各LAN100、300とWAN200との間の通信を可能にするために、ローカルなアドレス情報とグローバルなアドレス情報との相互変換を行うNAT(Network Address Translation)機能が各ルータ102及び302に搭載されている。ルータ102及び302のNAT機能により、端末103及び端末303同士は、グローバルIPアドレス及びローカルIPアドレスを特別に意識することなく、通信を行うことが可能である。
但し、特別な制御を実施しない限り、LAN100及び300の配下の端末103及び303はその端末自身に割り当てられたグローバルなアドレス情報を知ることはできない。また、例えばLAN100に属する端末103が他のLAN300に属している端末303と直接接続することはできない。接続相手にアクセスするためのアドレス情報が分からないからである。また、各ルータ102及び302のNAT機能のため、普通の状態ではWAN200側から各LAN100及び300側にアクセスすることもできない。
このような状況であっても、各拠点のLANに中継装置としてのVPN装置2101及び2301を接続することにより、端末103と端末303との間で直接通信(P2P通信)することが可能になる。また、このような通信を可能にするために、WAN200上にはSTUNサーバ201及び呼制御サーバ202を接続してある。なお、STUNサーバ201及び呼制御サーバ202を同様の機能を果たす他の装置で置き換えることも可能である。
STUNサーバ201は、STUN(Simple Traversal of UDP through NATs[RFC3489])プロトコルを実行するために必要なサーバである。STUNは、音声、映像、文章などの双方向リアルタイムIP通信を行うアプリケーションにおいて、NAT通過の方法の1つとして使われる標準化されたクライアントサーバ型のインターネットプロトコルである。
VPN装置2101及び2301は、STUNサーバ201との間で所定のテスト手順の通信を実行し、STUNサーバ201からVPN装置101及び301の配下の端末103、303のグローバルアドレスが搭載された応答パケットを受信する。これにより、VPN装置2101及び2301は配下の端末103、303のグローバルアドレスを取得することができる。また、VPN装置2101及び2301の位置するLANとWANの間にルータ102及び302が複数存在する場合であっても、ルータ102及び302がUPnP(Universal Plug and Play)の機能を有していない場合であっても、確実にグローバルアドレスを取得できる。
なお、VPN装置2101及び2301がグローバルIPアドレスを取得するための方法に関しては、IETFのRFC 3489(STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs))にて記載された手法を利用することもできる。
呼制御サーバ202は、通信のために特定の相手先を呼び出すための制御を行うサーバである。例えば通信システムがIP電話の機能を有する場合には、接続相手先の電話番号に基づいて特定の相手先を呼び出すことができる。また、呼制御サーバ202は信号やデータを中継する機能を有しており(前述の3WHS参照)、端末103から送出されたパケットをWAN200を介して端末303に転送したり、端末303から送出されたパケットをWAN200を介して端末103に転送したりすることもできる。
次に、VPN装置2101及び2301について説明する。
VPN装置2101及び2301の構成及び動作は同一である。ここでは、VPN装置2101を用いて説明する。図27は、VPN装置2101のハードウェア構成の一例を示す図であり、図28は、VPN装置2101の機能構成の一例を示す図である。
ハードウェア構成としては、図27に示すように、VPN装置2101は、マイクロコンピュータ(CPU)2111、不揮発性メモリ(フラッシュRAM)2112、メモリ(SDRAM)2113、ネットワークインタフェース(I/F)2114及び2115、ネットワーク制御部2116及び2117、通信中継部2118、表示制御部2119、表示器2120を備える。
CPU2111は、所定のプログラムを実行することによりVPN装置2101全体の制御を実施する。
不揮発性メモリ2112は、マイクロコンピュータ2111が実行するプログラムや、運用データ、呼制御を行うための管理情報、制御プログラムを保持している。このプログラムの中には、後に詳述するクロスコールを判定するためのプログラムも含まれている。なお、CPU2111が実行するプログラムについては、任意の通信経路を経由してオンラインで外部のサーバから取得することもできるし、例えばCD-ROMのような記録媒体から読み込んで取得することもできる。また、CPU2111がプログラムを実行する時には、不揮発性メモリ2112上のプログラムの一部がメモリ2113上に展開され、メモリ2113上のプログラムが実行される場合もある。
メモリ2113は、VPN装置2101に関する識別情報(本発明の識別情報であって、詳細は後述する)を記憶する。
ネットワークインタフェース2114は、VPN装置2101と配下の端末103とを通信可能な状態で接続するために利用される。ネットワークインタフェース2115は、VPN装置2101とローカルネットワーク100とを通信可能な状態で接続するために利用される。
ネットワーク制御部2116は、ネットワークインタフェース2114に関する通信制御を行う。ネットワーク制御部2117はネットワークインタフェース2115に関する通信制御を行う。
通信中継部2118は、LAN側に接続された配下の端末103から外部のVPN装置2301配下の端末303へのパケットデータを中継する。また、外部のVPN装置2301配下の端末303からVPN装置2101配下の端末103宛に到着したパケットデータを中継する。
表示器2120は、VPN装置2101として必要な各種状態をユーザあるいは管理者に知らせるための表示部であり、発光ダイオード(LED)や液晶表示器(LCD)で構成されている。
表示制御部2119は、表示器2120に表示する内容を制御する。
また、機能構成としては、図28に示すように、VPN装置2101は、システム部2130、呼制御部2140、通信部2150、設定用インタフェース(I/F)2161、配下端末管理部2162を備える。また、システム部2130は、システム制御部2131、識別情報管理部2132、識別情報記憶部2133を備える。また、呼制御部2140は、メッセージ解析部2141、優先度判定部2142、メッセージ生成部2143を備える。また、通信部2150は、受信部2151及び2154、送信部2152及び2155、データ通信制御部2153を備える。これらの各機能は、図27に示した各ブロックのハードウェアの動作、又はマイクロコンピュータ2111が所定のプログラムを実行することにより実現する。
システム制御部2131は、VPN装置2101の全体の制御を統括する。
識別情報管理部2132は、識別情報記憶部2133に記憶される識別情報を管理する。また、メッセージ解析部2141により認識された送信元の端末103及び送信先の端末303の識別情報を識別情報記憶部2133から取得することができる。
識別情報記憶部2133は、端末103や端末303の識別情報を記憶する。当該識別情報は、識別情報記憶部2133にあらかじめ記憶しておく他に、呼制御サーバ202や他のサーバから取得してもよいし、あらかじめ記憶しておいてもよい。また、受信部2151または受信部2154によりメッセージを受信した際にメッセージに含まれる場合にはこの識別情報を用いてもよい。この識別情報により、セッション起動時の優先度が決定される。
なお、本実施形態4では、識別情報として、例えば端末103や端末303のMACアドレス、IPアドレス、ID情報、電話番号を用いる。このような数字やアルファベットで表記される識別情報を用いる場合には、順序演算や加減算を行い、優先度判定を行うことが容易になる。
メッセージ解析部2141は、受信部2151により受信した端末103からの発呼情報を解析し、送信元としての端末103及び送信先としての端末303を認識する。発呼情報には、送信元及び送信先の端末を特定するための特定情報が含まれる。また、メッセージ解析部2141は、受信部2154により受信された呼制御に関するメッセージを解析する。
なお、端末103、303の各々は、図26のシステム構成を認識していないから、発信をする旨のトリガをVPN装置2101、2301へ送信する。このトリガを発呼情報と総称する。このとき各々の端末103、303を特定する情報を特定情報と総称する。VPN装置2101、2301はシステム構成を認識するため、発呼情報から発呼メッセージを生成し、特定情報から識別情報に変換する。また、端末103、303の各々はVPN装置を介して受信するから着呼情報はない。
また、メッセージ解析部2141は、メッセージ解析の結果、送信部2155により発呼メッセージを送信した後に受信部2154により発呼要求メッセージを受信したと判断した場合、受信した発呼要求メッセージを無効と判定し、この発呼要求メッセージを無視することとする。
優先度判定部2142は、メッセージ解析結果及び識別情報管理部2132から取得する端末103及び端末303の識別情報に応じて、端末103と端末303とでいずれが優先度が高いかを判定する。例えば、受信部2151により端末103からの発呼情報を受信した場合には、優先度判定部2142は、端末103の識別情報と端末303の識別情報とを、発呼情報から、識別情報記憶部2133から、もしくは外部サーバから取得する。そして、取得した双方の識別情報を比較し、優先度を判定する。
優先度は、例えば識別情報の大小により決定することができ、例えばMACアドレスやその他の識別IDの数値が大きい方を高いものとすることができる。また、システムで管理する特有の優先順をあらかじめ決定しておいてもよく、例えば、VIP顧客の優先順・社員の役職順・ネットワークの優先順などに基づいて、優先度を決定してもよい。また、アルゴリズムの処理に有利になるように、優先度を決定してもよい。
また、メッセージ解析部2141により発呼メッセージまたは発呼要求メッセージを受信したと判断した場合には、受信された端末303からのメッセージをメッセージ解析部2141が解析し、抽出した識別情報に応じて、送信元としての端末303と送信先としての端末103との間の優先度を優先度判定部2142が判定し、メッセージの種別(発呼メッセージか発呼要求メッセージか)の適否を判定する。例えば、端末103、303の間で、発呼メッセージを受信部2154により受信した場合には、端末303の方が優先度が高く、発呼要求メッセージを受信部2154により受信した場合には、端末103の方が優先度が高いと、優先度判定部2142が判定したことを意味する。
メッセージ生成部2143は、優先度判定部2142による判定結果に応じて、呼制御に関するメッセージの種別を指定し、このメッセージとして発呼メッセージもしくは発呼要求メッセージを生成する。具体的には、端末303が端末103よりも優先度が高い場合には、発呼要求メッセージを生成し、端末303が端末103よりも優先度が低い場合には、発呼メッセージを生成する。また、受信部2154により着呼(発呼応答)メッセージを受信した場合には、メッセージ生成部2143は、着呼応答メッセージを生成する。
受信部2151は、端末103から呼制御に関するメッセージや音声等の実データを受信する。
送信部2152は、端末103へ呼制御に関するメッセージや音声等の実データを送信する。
受信部2151は端末103から、受信部2154は端末303から、それぞれ受信し、発呼メッセージ、発呼要求メッセージ、着呼メッセージ、着呼応答メッセージ等の呼制御に関するメッセージや、実データ等を受信する。なお、受信部2151、2154により受信するメッセージに関して、発呼メッセージはINVITEメッセージに相当し、着呼メッセージはACKメッセージに相当し、着呼応答メッセージはOKメッセージに相当する。
送信部2152は端末103へ、送信部2155は端末303へ、それぞれ送信し、発呼メッセージ、発呼要求メッセージ、着呼メッセージ、着呼応答メッセージ等の呼制御に関するメッセージや、実データ等を送信する。
データ通信制御部2153は、受信部2151と送信部2155との間で実データを中継し、受信部2154と送信部2152との間で実データを中継する。
設定用I/F部2161は、管理者あるいはユーザがVPN装置2101に対する操作を行うためのユーザインタフェースであり、例えばWebページなどが用いられる。
配下端末管理部2162は、VPN装置2101配下の端末103の管理を行う。
次に、端末103と端末303とがセッション起動時に行うデータの送受信について説明する。図29~図31では、端末103の優先度が端末303の優先度よりも高い場合を想定している。セッション起動を行い、正常に処理されると、セッションが確立される。
図29は端末103から端末303へ発呼する場合の通信シーケンスの一例を示す図である。
まず、端末103が、端末303へデータを送るための発呼情報を端末103を管理するVPN装置2101へ送信する(ステップS2101)。VPN装置2101は、端末103からの発呼情報を受信すると、端末103が高い優先度であるから、発呼メッセージを端末303を管理するVPN装置2301へ送信する(ステップS2102)。
VPN装置2301は、VPN装置2101からの発呼メッセージを受信すると、これに対する着呼メッセージをVPN装置2101へ送信する(ステップS2103)。VPN装置2101は、VPN装置2301からの着呼メッセージを受信すると、これに対する着呼応答メッセージをVPN装置2301へ送信する(ステップS2104)。
VPN装置2301がVPN装置2101からの着呼応答メッセージを受信すると、VPN装置2101及び配下の端末103とVPN装置2301及び配下の端末303とのセッションが確立される(ステップS2105)。セッション確立後、端末103から送信されたデータが、VPN装置2101及び2301を介して、端末303へ送信される(ステップS2106)。
また、図30は端末303から端末103へ発呼する場合の通信シーケンスの一例を示す図である。
まず、端末303が、端末103へデータを送るための発呼情報を端末303を管理するVPN装置2301へ送信する(ステップS2201)。VPN装置2301は、端末303からの発呼情報を受信すると、端末303が低い優先度であるから、発呼要求メッセージを端末103を管理するVPN装置2101へ送信する(ステップS2202)。
VPN装置2101は、VPN装置2301からの発呼要求メッセージを受信すると、これに対する発呼メッセージをVPN装置2301へ送信する(ステップS2203)。VPN装置2301は、VPN装置2101からの発呼メッセージを受信すると、これに対する着呼メッセージをVPN装置2101へ送信する(ステップS2204)。VPN装置2101は、VPN装置2301からの着呼メッセージを受信すると、これに対する着呼応答メッセージをVPN装置2301へ送信する(ステップS2205)。
VPN装置2301がVPN装置2101からの着呼応答メッセージを受信すると、VPN装置2101及び配下の端末103とVPN装置2301及び配下の端末303とのセッションが確立される(ステップS2206)。セッション確立後、端末303から送信されたデータが、VPN装置2301及び2101を介して、端末103へ送信される(ステップS2207)。
また、図31は端末103から端末303への発呼と端末303から端末103への発呼が同時に発生した場合の通信シーケンスの一例を示す図である。
まず、端末103が端末303へデータを送るための発呼情報を端末103を管理するVPN装置2301へ送信し(ステップS2301)、端末303が端末103へデータを送るための発呼情報を端末303を管理するVPN装置2301へ送信する(ステップS2302)。
VPN装置2101は、端末103からの発呼情報を受信すると、発呼メッセージをVPN装置2301へ送信する(ステップS2303)。VPN装置2301は、端末303からの発呼情報を受信すると、発呼要求メッセージをVPN装置2101へ送信する(ステップS2304)。
VPN装置2301は、VPN装置2101からの発呼メッセージを受信すると、これに対する着呼メッセージをVPN装置2101へ送信する(ステップS2305)。一方、VPN装置2101は、発呼メッセージを送信した後に、着呼メッセージを受信する前にVPN装置2301からの発呼要求メッセージを受信すると、このメッセージを無視する(ステップS2306)。つまり、受信した発呼要求メッセージを破棄し、これに対する発呼メッセージの送信を中止する。
VPN装置2101は、VPN装置2301からの着呼メッセージを受信すると、これに対する着呼応答メッセージをVPN装置2301へ送信する(ステップS2307)。VPN装置2301がVPN装置2101からの着呼応答メッセージを受信すると、VPN装置2101及び配下の端末103とVPN装置2301及び配下の端末303とのセッションが確立される(ステップS2308)。
セッション確立後、端末103が着呼情報を確認して端末303からの着呼に対する応答を許可した場合には、端末303から送信されたデータが、VPN装置2301及び2101を介して、端末103へ送信される(ステップS2309)。また、セッション確立後、端末103から送信されたデータが、VPN装置2101及び2301を介して、端末303へ送信される(ステップS2310)。
次に、VPN装置が端末間の通信を中継する際の動作について説明する。
図32は、VPN装置2101が配下の端末103と通信先の端末303との通信を中継する際の動作の一例を示すフローチャートである。なお、VPN装置2301についても、同様の動作を行う。
まず、受信部2151が、配下の端末103からの発呼情報を受信すると(ステップS2401)、メッセージ解析部2141が、受信した発呼情報から、端末103の特定する特定情報及び端末303を特定する特定情報を抽出する。そして、優先度判定部2142は、これらの特定情報に対応する、端末103の識別情報としての識別番号及び端末303の識別情報としての識別番号を、識別情報記憶部2133や外部サーバ等から取得する(ステップS2402)。また、特定情報が識別情報そのものであってもよい。
続いて、優先度判定部2142が、取得した端末103及び303の識別番号に基づいて、端末103及び端末303の優先度を判定する(ステップS2403)。例えば、端末103の識別IDが「1234」、端末303の識別IDが「5678」の場合には、端末103の優先度が低く、端末303の優先度が高いと判定することができる。
端末103の優先度が端末303の優先度よりも高い場合、メッセージ生成部2143が発呼メッセージを生成し、生成した発呼メッセージを送信部2155が送信する(ステップS2404)。
続いて、受信部2154は、送信部2155により送信された発呼メッセージに対する端末303からの着呼メッセージを受信するまで待機する(ステップS2405)。受信部2154が着呼メッセージを受信すると、メッセージ生成部2143が着呼応答メッセージを生成し、生成した着呼応答メッセージを送信部2155が送信する(ステップS2406)。
一方、ステップS2403において端末103の優先度が端末303の優先度よりも低い場合、メッセージ生成部2143が発呼要求メッセージを生成し、生成した発呼要求メッセージを送信部2155が送信する(ステップS2407)。
続いて、受信部2154は、送信部2155により送信された発呼要求メッセージに対する端末303からの発呼メッセージを受信するまで待機する(ステップS2408)。受信部2154が発呼メッセージを受信すると、メッセージ生成部2143が着呼メッセージを生成し、生成した着呼メッセージを送信部2155が送信する(ステップS2409)。
続いて、受信部2154は、送信部2155により送信された着呼メッセージに対する端末303からの着呼応答メッセージを受信するまで待機する(ステップS2410)。受信部2154が着呼応答メッセージを受信すると、端末103及び303の間でセッションが確立され、両端末間での通信が可能な状態となる(ステップS2411)。
このような本実施形態の通信システムによれば、セッション起動時の権限に優先関係を導入することによって、クロスコールの発生を防止することができる。具体的には、優先度の高い端末にのみ発呼権限が与えられ、優先度の低い端末には発呼を要求する権限のみが与えられる。そして、優先度の高い端末からデータを送信する際には発呼メッセージを送信し、優先度の低い端末からデータを送信する際には発呼要求メッセージを送信することで、クロスコールが発生することによる誤動作を防止することができる。また、複数の端末間で同時にデータの送信を行おうとした場合には、優先度の高い端末が優先度の低い端末からの発呼要求メッセージを無視することで、通信を希望している端末同士で相互に通信中(例えば話し中)であるという状態を回避することができ、セッションの確立をスムーズに行うことができる。さらに、VPN装置2101及び2301がクロスコール防止のための処理を行うため、実際の送信元及び送信先となる端末103及び303自体の負荷が増大することはない。
なお、本実施形態では、通常はセキュリティ強化のためにVPN通信を行うことが多いため、VPN装置として説明したが、VPN通信を行うことは必須ではない。つまり、VPN装置2101及び2301を単純な中継装置で代用可能である。なお、システム内の装置全てがグローバルアドレスを割り当てられている場合など、NAT(Network Address Translation)を越える必要がない場合には、STUNサーバ201を省略することが可能である。
(実施形態5)
図33は本発明の実施形態5における通信システムの構成の一例を示す図である。ここでは、図33に示す通信システムにおいて、図26に示した通信システムと同一の構成については、同一の符号を付し、説明を省略または簡略化する。
本実施形態の通信システムと実施形態4の通信システムとの相違点は、ローカルエリアネットワーク100及び300配下の部分である。具体的には、図26に示したVPN装置2101及び端末103とVPN装置2301及び端末303が、図33に示す例では端末2104及び2304のみとなっている。この端末2104及び2304は、VPN装置2101及び端末103とVPN装置2301及び端末303との双方を機能を有して構成される。つまり、端末2104は、端末2104自身により管理される。この端末2104及び2304がP2P通信のピアとして機能する。
次に、端末2104及び2304について説明する。
端末2104及び2304の構成及び動作は同一である。ここでは、端末2104を用いて説明する。図34は、端末2104のハードウェア構成の一例を示す図であり、図35は、端末2104の機能構成の一例を示す図である。図34において、図27に示したハードウェア構成と同一の構成については、同一の符号を付し、説明を省略または簡略化する。また、図35において、図28に示した機能構成と同一の構成については、同一の符号を付し、説明を省略または簡略化する。
ハードウェア構成としては、図34に示すように、端末2104は、CPU2111、不揮発性RAM(フラッシュRAM)2112、メモリ(SDRAM)2113、ネットワークインタフェース(I/F)2115、ネットワーク制御部2117、表示制御部2119、表示器2120、入出力制御部2121、キーパッド2122、マイク(Mic)2123、スピーカ2124を備える。つまり、本実施形態の端末2104では、実施形態4のVPN装置2101と比較して、配下の端末への中継を行うための構成がなく、データ入出力を行うための構成が追加されている。
入出力制御部2121は、入出力デバイスとしてのキーパッド2122、マイク2123、スピーカ2124の入出力制御を行う。キーパッド2122は、データ入力を行うための入力デバイスである。マイク2123は、音声データを入力するための入力デバイスである。スピーカ2124は、音声データを出力するための出力デバイスである。
また、機能構成としては、図35に示すように、システム部2130、呼制御部2140、通信部2150を備える。システム部2130は、システム制御部2131、識別情報管理部2132、識別情報記憶部2133、データ入出力部2134を備える。呼制御部2140は、メッセージ解析部2141、優先度判定部2142、メッセージ生成部2143を備える。通信部2150は、データ通信制御部2153、受信部2154、送信部2155を備える。なお、端末104は、前述の理由から、受信部2151、送信部2152、設定用I/F部2161、配下端末管理部2162については備えていない。
データ入出力部2134は、入力デバイスによるデータ入力に基づいて発呼情報を生成し、メッセージ解析部2141へ送る。
次に、端末2104と端末2304とがセッション起動時のデータの送受信について説明する。
基本的には、図29~図31に示したようなVPN装置2101及び2301の動作と同様の動作を行う。本実施形態5において、端末2104、2304は、端末から発呼情報を受信してセッション起動を行うのではなく、端末2104及び端末2304自身の入力デバイスの入力に基づいて発呼情報を生成し、セッション起動を行うことを特徴とする。また、着呼情報により着呼を許可するか否かについても、配下の端末ではなく端末2104及び2304自身により行う。
次に、端末2104がセッション起動を行う際の動作について説明する。
図36は、端末2104がセッション起動を行う際の動作の一例を示すフローチャートである。なお、端末2304についても、同様の動作を行う。
まず、データ入出力部2134による入力に基づいてデータ通信制御部2153が発呼情報を生成すると、メッセージ解析部2141が、生成した発呼情報から、端末2304を特定する特定情報を抽出する。そして、優先度判定部2142は、これらの特定情報に対応する端末2304の識別情報としての識別番号を、識別情報記憶部2133、外部サーバ、発呼メッセージ、発呼要求メッセージ等から取得する(ステップS2501)。また、特定情報が識別情報そのものであってもよい。また、端末2104自身の識別情報としての識別番号を識別情報記憶部2133、外部サーバ、発呼メッセージ、発呼要求メッセージ等から取得する。
ステップS2501の後は、図32に示したステップS2403~S2411と同様の処理を行う。図36中のステップ番号は、図32と同じ番号を表示して説明の重複を省略する。ただし、優先度の比較対象となるのは、自己の通信端末である端末2104と通信先の通信端末である端末2304である。
このような本実施形態の通信システムによれば、P2P通信において相手先を指定したときに、セッション起動の優先関係が確定するため、クロスコールが発生することを防止できる。したがって、クロスコールが発生したときのために特別に解除手段を講じておく必要がなくなる。また、ユーザは、クロスコールの発生に特別な注意を払う必要がなくなる。また、クロスコールが発生しないため、P2P通信開始が速やかに行われ、快適なP2P通信環境を提供することができる。さらに、クロスコールを防止するために特別に中継装置を設けることがないため、通信システムの構成が複雑化することを防止できる。
(実施形態6)
実施形態4及び5では、クロスコールが発生する前にあらかじめ優先度を判定しておき、クロスコールが発生することを防止することを説明したが、本実施形態6の通信システムでは、クロスコールが発生したことを検出し、検出後に優先制御を行うことを特徴とする。本実施形態6では、上記特徴の処理を行う主体として、実施形態4に示したVPN装置、実施形態5に示した端末のいずれも適用可能であるが、ここでは「通信装置」として説明を行う。
本実施形態6の通信システムの構成、通信装置のハードウェア構成、通信装置の機能構成は、実施形態4又は5において示した構成と同様であるが、メッセージ解析部2141の動作が異なる。
メッセージ解析部2141は、実施形態4又は5において説明した動作の他に、呼制御に関するメッセージのシーケンスが3WHSに従って進行しているか否かを監視する。例えば、メッセージ解析部2141が、送信部2155により発呼メッセージを送信して着呼メッセージを待機しているときに、通信先の通信装置から発呼メッセージを受信した場合、クロスコールが発生したと判断する。
互いに通信中の通信装置同士は、先の実施形態4及び5で説明したように、通信相手の識別情報を認識している。したがって、メッセージ解析部2141が、メッセージの内容を解析し、通信相手の識別情報を取得することで、発呼メッセージを既に送信した通信相手から発呼メッセージを受信したか否か、つまりクロスコールが発生したか否かを判定することができる。
メッセージ解析部2141によりクロスコールが発生したと判断すると、その際に、優先度判定部2142が、自己の通信装置の識別情報と通信相手の通信装置の識別情報とに基づいて、優先度を判定する。そして、優先度が高い通信装置は、受信した発呼メッセージを無効と判断して無視し、図31に示したステップS2306以降の処理を行うようにする。一方、優先度が低い通信装置は、受信した発呼メッセージを有効と判断し、図31に示したステップS2305以降の処理を行うようにする。
なお、以上の実施形態4ないし6の説明において、優先度判定部2142の判定処理は、特定の1判定処理を行うものとして説明をした。しかしながら、本発明は、この内容に限定されるものではない。例えば、優先度判定部2142は、複数の判定処理をとり得るものとし、時間帯・日付・曜日・LAN100、WAN200の種別などに応じて、いずれか1の判定処理に変更可能な様に応用することも可能である。それによって、例えば平日用、休日用など、様々な用途に適応する通信端末、通信方法を提供することができる。
このような本実施形態4ないし6の通信システムによれば、クロスコールが発生した後にメッセージのシーケンスを回復させることができ、クロスコールによりセッション確立が不可能となる状態を回避することができる。また、セッション起動毎にクロスコールを防止するための処理を行うものではないため、低処理負荷でこの通信システムを実現することができる。さらに、必要時のみ優先関係の判断を行うため、P2P通信開始に要する時間を短縮することができる。
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
本出願は、2009年4月16日出願の日本特許出願No.2009-099965、2009年4月20日出願の日本特許出願No.2009-102108、2009年6月8日出願の日本特許出願No.2009-137423、及び2009年6月8日出願の日本特許出願No.2009-137424、に基づくものであり、その内容はここに参照として取り込まれる。