この発明は、電話装置および他の通信装置がデータ中継装置を介して他のネットワークに接続されるように構成されたネットワークと、同様に構成された複数の他のネットワークとを仮想的な通信路で相互に通信可能に接続するデータ中継装置、データ中継方法およびデータ中継プログラムに関する。
従来より、TCP/IPを使ったインターネットなどのネットワークにおいて、IPアドレスを変換して、限られたIPアドレス資源を有効に使ったり、ファイアウォールを構築したりするための技術として、仮想アドレス(プライベートIPアドレス)とグローバルIPアドレスとを変換するNAT(Network Address Translation)技術が用いられている。
具体的には、企業などの社内LANなどでは、その企業または社内だけで利用することができる仮想アドレスを用いて、端末間の通信を行っているが、そのような端末でインターネットを利用するには、世界中でユニークになるように公式に割り当てられたグローバルIPアドレスを用いる必要がある。そこで、社内LANとインターネットとの境に位置するゲートウェイ(GW)装置において、社内LANに接続される端末からインターネット(例えば、WEBサーバなど)への接続要求を受け付けた場合に、仮想アドレスをグローバルIPアドレスに変換してインターネットに接続したり、接続後のインターネットからの応答を受け付けた場合に、グローバルIPアドレスを仮想アドレスに変換して、要求元の端末に応答を送信したりしている。
また、最近では、社内LANなどの拠点同士をL3VPN(Layer 3 Virtual Private Network)などの仮想的な通信路で接続することで、セキュリティを高く保ちつつ通信を行う技術が用いられている。このような拠点間同士をL3VPNで接続する場合、お互いのネットワークアドレス空間が重複してもよいように、仮想アドレス空間を利用することが多いが、この場合では、相手の仮想アドレス空間を予め知っておかないとアドレス変換や通信を行うことができない。つまり、L3VPN接続を行う拠点同士が同じ仮想アドレスを用いている場合には、それぞれの拠点において同じIPアドレスの端末が存在することがあり、通信を行うことができない事象が発生する。そのため、グローバルIPアドレスとは異なる仮想IPアドレスを用いて、通信を行う手法が利用されている。
このような一般的な社内LAN間接続の場合は、仮想アドレスが重複しないように、また、接続先の仮想アドレス空間を知るために、ネットワーク管理者が事前にVPN−NATや静的NATなどの設定を行うことで、社内LAN間の通信を行えるようにしている。ところが、最近増えてきている家庭内LANを上記したようなL3VPNでアドホックに接続する場合、電話接続のように不特定多数同士が接続することが前提となっているため、接続先それぞれの仮想アドレス空間を知ることは物理的に不可能であり、また、ネットワーク管理者などのようにネットワークに精通した人がいないことが多く事前にVPN−NATや静的NATなどの設定を行うことが不可能であるため、L3VPN接続はしたものの、仮想アドレスが重複しており、通信ができないという問題が発生する。
そこで、家庭内LAN同士のL3VPN接続に際して、仮想アドレスの重複を防止する様々な技術が開示されている。例えば、非特許文献1では、1対1接続の場合に、予め決まった仮想アドレスとは異なる特定のアドレス空間を利用することで通信を行う技術が開示されている。また、非特許文献2では、VOIP通信を基にして、DHCPサーバからお互いのLAN上の機器にそれぞれ仮想IPアドレスを割り当てることで、家庭内LAN同士の通信を行う技術が開示されている。
しかしながら、上記した従来の技術は、家庭内LAN同士のL3VPN接続に際して、仮想アドレスの重複を確実に防止することができず、通信できない場合があるという課題があった。
具体的には、非特許文献1では、予め決まった特定のアドレスを利用するため、1対NやN対Nで相互に家庭内LAN同士を接続する場合には、仮想アドレス自体が重複した場合に、ルーティングが上手くいかない事象が発生してしまい、通信を行うことができない場合がある。また、非特許文献2では、VOIP通信を基にして、DHCPサーバからお互いのLAN上の機器にそれぞれ仮想IPアドレスを割り当てる技術であり、仮想アドレスと実アドレスとがお互いに重複した場合には、通信を行うことができない事象が発生する。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、家庭内LAN同士を仮想的に接続するのに際して、仮想アドレスの重複を確実に防止して通信することが可能であるデータ中継装置、データ中継方法およびデータ中継プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、請求項1に係る発明は、複数の通信装置がデータ中継装置を介して他のネットワークに接続されるように構成されたネットワークと、同様に構成された複数の他のネットワークとを相互に通信可能に接続する前記データ中継装置であって、前記データ中継装置と他のネットワークに接続される他のデータ中継装置との間に確立されたセッションの発側および着側に対応付けて、前記ネットワークで使用する仮想アドレスを決定するのに必要な仮想アドレス情報を記憶する仮想アドレス情報記憶手段と、前記データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、当該セッションの発側であるかまたは着側であるかに基づいて、前記仮想アドレス情報を仮想アドレス情報記憶手段から取得して、取得した仮想アドレス情報に基づいて当該ネットワークで使用する仮想アドレスを決定する仮想アドレス決定手段と、前記仮想アドレス決定手段により決定された仮想アドレスを用いて、前記セッションが確立されている他のデータ中継装置が接続される他のネットワークと前記ネットワークとを仮想的な通信路で接続して通信可能に制御する接続制御手段と、を備えたことを特徴とする。
また、請求項2に係る発明は、上記の発明において、前記仮想アドレス情報とは、前記ネットワークと他のネットワークとで利用される仮想アドレスの重複および競合を回避するために、前記発側および着側のそれぞれにおける仮想アドレス決定方法をルール化したものであることを特徴とする。
また、請求項3に係る発明は、上記の発明において、前記仮想アドレス決定手段は、前記データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、前記他のデータ中継装置との間で、お互いに利用を希望する仮想アドレスまたは仮想アドレスの範囲を仮想アドレス情報として交換し、お互いの条件に一致するような仮想アドレスを決定することを特徴とする。
また、請求項4に係る発明は、上記の発明において、前記仮想アドレス決定手段は、前記データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、前記他のネットワークで利用を希望する仮想アドレスまたは仮想アドレスの範囲を他のデータ中継装置から受信し、受信した仮想アドレスまたは仮想アドレスの範囲と重複しないように、当該ネットワークで利用する仮想アドレスを決定することを特徴とする。
また、請求項5に係る発明は、上記の発明において、前記仮想アドレス決定手段は、既に通信可能に接続されている別のネットワークが存在する場合に、前記仮想アドレスを決定するのに際して、当該別のネットワークとの間で利用している仮想アドレスまたは仮想アドレスの範囲と重複しないように、前記仮想アドレスを決定することを特徴とする。
また、請求項6に係る発明は、上記の発明において、前記仮想アドレス決定手段は、前記他のデータ中継装置から受信した他のネットワークで使用される仮想アドレスまたは仮想アドレスの範囲が、既に通信可能に接続されている別のネットワークで使用されている仮想アドレスまたは仮想アドレスの範囲と一致する場合に、当該他のネットワークに接続されるデータ中継装置との接続を拒否して、再度、前記仮想アドレスや仮想アドレスの範囲を他のデータ中継装置に要求することを特徴とする。
また、請求項7に係る発明は、上記の発明において、前記データ中継装置は、前記他のデータ中継装置との間にSIPを用いてセッションを確立するものであって、前記仮想アドレス決定手段は、前記他のデータ中継装置との間にセッションを確立するのに際して、前記SIPにおけるSDP情報に当該ネットワークで使用する仮想アドレス情報を付加して前記他のデータ中継装置に送信し、前記他のネットワークで使用される仮想アドレス情報が付加されたSDP情報を前記他のデータ中継装置から受信するネゴシエーションを行った結果、当該ネットワークで使用する仮想アドレスを決定することを特徴とする。
また、請求項8に係る発明は、上記の発明において、前記データ中継装置は、前記他のデータ中継装置との間にSIPを用いてセッションを確立するものであって、前記仮想アドレス決定手段は、前記他のデータ中継装置との間にセッションを確立するのに際して、当該ネットワークで使用する仮想アドレス決定に必要なパラメータを付加したSIPにおけるSDP情報またはTAG情報を他のデータ中継装置に送信し、当該送信したパラメータに基づいて決定された仮想アドレス情報に関するパラメータが付加されたSDP情報またはTAG情報を他のデータ中継装置から受信し、当該受信したパラメータに基づいて当該ネットワークで使用する仮想アドレスを決定することを特徴とする。
また、請求項9に係る発明は、上記の発明において、前記データ中継装置は、前記他のデータ中継装置との間にSIPを用いてセッションを確立するものであって、前記仮想アドレス決定手段は、前記他のデータ中継装置との間にセッションを確立するのに際して、当該ネットワークで使用する仮想アドレスを示すパラメータを付加したSIPにおけるCall−IDを他のデータ中継装置に送信して、当該ネットワークで使用する仮想アドレスを決定することを特徴とする。
また、請求項10に係る発明は、複数の通信装置がデータ中継装置を介して他のネットワークに接続されるように構成されたネットワークと、同様に構成された複数の他のネットワークとを相互に通信可能に接続する前記データ中継装置に適したデータ中継方法であって、前記データ中継装置と他のネットワークに接続される他のデータ中継装置との間に確立されたセッションの発側および着側に対応付けて、前記ネットワークで使用する仮想アドレスを決定するのに必要な仮想アドレス情報を記憶する仮想アドレス情報記憶手段と、前記データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、当該セッションの発側であるかまたは着側であるかに基づいて、前記仮想アドレス情報を仮想アドレス情報記憶手段から取得して、取得した仮想アドレス情報に基づいて当該ネットワークで使用する仮想アドレスを決定する仮想アドレス決定工程と、前記仮想アドレス決定工程により決定された仮想アドレスを用いて、前記セッションが確立されている他のデータ中継装置が接続される他のネットワークと前記ネットワークとを仮想的な通信路で接続して通信可能に制御する接続制御工程と、を含んだことを特徴とする。
また、請求項11に係る発明は、複数の通信装置がデータ中継装置を介して他のネットワークに接続されるように構成されたネットワークと、同様に構成された複数の他のネットワークとを相互に通信可能に接続する前記データ中継装置としてのコンピュータに実行させるデータ中継プログラムであって、前記データ中継装置と他のネットワークに接続される他のデータ中継装置との間に確立されたセッションの発側および着側に対応付けて、前記ネットワークで使用する仮想アドレスを決定するのに必要な仮想アドレス情報を記憶する仮想アドレス情報記憶手段と、前記データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、当該セッションの発側であるかまたは着側であるかに基づいて、前記仮想アドレス情報を仮想アドレス情報記憶手段から取得して、取得した仮想アドレス情報に基づいて当該ネットワークで使用する仮想アドレスを決定する仮想アドレス決定手順と、前記仮想アドレス決定手順により決定された仮想アドレスを用いて、前記セッションが確立されている他のデータ中継装置が接続される他のネットワークと前記ネットワークとを仮想的な通信路で接続して通信可能に制御する接続制御手順と、をコンピュータに実行させることを特徴とする。
請求項1、10、11の発明によれば、データ中継装置と他のネットワークに接続される他のデータ中継装置との間に確立されたセッションの発側および着側に対応付けて、ネットワークで使用する仮想アドレスを決定するのに必要な仮想アドレス情報を記憶し、データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、当該セッションの発側であるかまたは着側であるかに基づいて、仮想アドレス情報を仮想アドレス情報記憶手段から取得して、取得した仮想アドレス情報に基づいて当該ネットワークで使用する仮想アドレスまたは仮想アドレスの範囲を決定し、決定された仮想アドレスまたは仮想アドレスの範囲を用いて、セッションが確立されている他のデータ中継装置が接続される他のネットワークとネットワークとを仮想的な通信路で接続して通信可能に制御するので、家庭内LAN同士を仮想的に接続するのに際して、仮想アドレスの重複を確実に防止して通信することが可能である。
例えば、データ中継装置は、電話による通話接続における発側または着側に対応付けてそれぞれ決まった仮想アドレス情報を使用することができる結果、家庭内LAN同士をVPN接続した場合であっても、仮想アドレスの重複を確実に防止して通信することが可能である。
また、請求項2の発明によれば、仮想アドレス情報とは、ネットワークと他のネットワークとで利用される仮想アドレスの重複および競合を回避するために、発側および着側のそれぞれにおける仮想アドレス決定方法をルール化したものであるので、利用形態や用途など仮想アドレスが重複しないように、利用者間で任意にルール化することができる結果、利用者の嗜好にあわせて柔軟に対応することが可能である。また、予め顔見知りの利用者間同士でのみに適用できるルールを任意に設定することができる結果、セキュリティを強化することが可能である。
また、請求項3の発明によれば、データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、他のデータ中継装置との間で、お互いに利用を希望する仮想アドレスまたは仮想アドレスの範囲を交換し、お互いの条件に一致するような仮想アドレスを決定するので、自ネットワークの仮想アドレス情報と接続先の仮想アドレス情報とを交換し、接続中の仮想アドレス情報と重複しないかを判定することができる結果、N対Nの接続に際しても、仮想アドレスの重複を確実に防止して通信することが可能である。
また、請求項4の発明によれば、データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、他のネットワークで利用を希望する仮想アドレスまたは仮想アドレスの範囲を他のデータ中継装置から受信し、受信した仮想アドレスまたは仮想アドレスの範囲と重複しないように、当該ネットワークで利用する仮想アドレスを決定するので、N対Nの複数間のVPN接続を行う場合であっても、通話接続先側が通知してきた仮想アドレスを確認することができる結果、仮想アドレスの重複を強固に防止することが可能である。
また、請求項5の発明によれば、既に通信可能に接続されている別のネットワークが存在する場合に、仮想アドレスを決定するのに際して、当該別のネットワークとの間で利用している仮想アドレスまたは仮想アドレスの範囲と重複しないように、仮想アドレスを決定するので、複数のネットワークと同時に接続する場合であっても、重複しない仮想アドレスを選択して用いることができる結果、複数のネットワークを同時に接続することが可能である。
また、請求項6の発明によれば、他のデータ中継装置から受信した他のネットワークで使用される仮想アドレスまたは仮想アドレスの範囲が、既に通信可能に接続されている別のネットワークで使用されている仮想アドレスまたは仮想アドレスの範囲と一致する場合に、当該他のネットワークに接続されるデータ中継装置との接続を拒否して、再度、仮想アドレスや仮想アドレスの範囲を他のデータ中継装置に要求するので、トライアンドエラーを行うことができる結果、より強固に重複を避けることが可能である。
また、請求項7の発明によれば、他のデータ中継装置との間にセッションを確立するのに際して、SIPにおけるSDP情報に当該ネットワークで使用する仮想アドレス情報を付加して他のデータ中継装置に送信し、他のネットワークで使用される仮想アドレス情報が付加されたSDP情報を他のデータ中継装置から受信するネゴシエーションを行った結果、当該ネットワークで使用する仮想アドレスを決定するので、SIPを用いた通信であっても、自ネットワークの仮想アドレス情報と接続先の仮想アドレス情報とを交換し、接続中の仮想アドレス情報と重複しないかを判定することができる結果、N対Nの接続に際しても、仮想アドレスの重複を確実に防止して通信することが可能である。
また、請求項8の発明によれば、他のデータ中継装置との間にセッションを確立するのに際して、当該ネットワークで使用する仮想アドレス決定に必要なパラメータを付加したSIPにおけるSDP情報またはTAG情報を他のデータ中継装置に送信し、当該送信したパラメータに基づいて決定された仮想アドレス情報に関するパラメータが付加されたSDP情報またはTAG情報を他のデータ中継装置から受信し、当該受信したパラメータに基づいて当該ネットワークで使用する仮想アドレスを決定するので、複数の着信を受けてSDP情報やTAG情報が重複した場合であっても、自分が送信するSDP情報やTAG情報を重複しないように選択して送信することができる結果、仮想アドレスの重複を強固に防止し、通信可能に接続することが可能である。
また、請求項9の発明によれば、他のデータ中継装置との間にセッションを確立するのに際して、当該ネットワークで使用する仮想アドレスを示すパラメータを付加したSIPにおけるCall−IDを他のデータ中継装置に送信して、当該ネットワークで使用する仮想アドレスを決定するので、自装置で決定した仮想アドレス情報を接続先に通知することができる結果、接続先側で重複しない仮想アドレスの決定を促すことが可能である。
以下に添付図面を参照して、この発明に係るデータ中継装置、データ中継方法およびデータ中継プログラムの実施例を詳細に説明する。なお、以下では、本実施例で用いる主要な用語、本実施例に係るデータ中継装置を示すHGWの概要および特徴、HGWの構成および処理の流れを順に説明し、最後に本実施例に対する種々の変形例を説明する。
[用語の説明]
まず最初に、本実施例で用いる主要な用語を説明する。本実施例で用いるネットワークシステムは、電話機(A)および他の装置がHGW(A)を介して他のネットワークに接続されるように構成された家庭内LAN(A)と、電話機(B)および他の装置がHGW(B)を介して他のネットワークに接続されるように構成された家庭内LAN(B)とから構成される。
また、それぞれの家庭内LAN(宅内ネットワーク)に構成される装置としては、上記した「電話機」以外にも「PC(Personal Computer)」や「WebTV」などの情報家電がある。「電話機(A)」、「電話機(B)」は、アナログ電話機やVoIP電話機などのテンキーを備え、ダイアル信号により相手先を指定して通話接続を行う電話機である。「WebTV」は、インターネットが利用できるテレビであり、テレビを見ながら、WWW(World Wide Web)を閲覧したり、電子メールを送受信したりすることができる。「PC」は、一般的に使用されている家庭用コンピュータであり、文書や図などのドキュメントを作成する他、HGWを介してインターネットに接続して、音楽や映画のダウンロードや検索サイトへのアクセスを行うことができる。また、これらの装置は、あくまで一例であり、上記した情報家電以外にも家電標準化技術であるDLNA(Digital Living Network Alliance)やUPnP(Universal Plug and Play)などのプロトコルを用いて接続される様々な装置がある。
また、本実施例で用いる「HGW(A)」、「HGW(B)」とは、家庭内LANおよびインターネットなどの宅外ネットワークを通信可能に接続する装置であり、アドレス変換やデータの載せ換えなどを行うことにより情報家電を相互接続する。具体的には、インターネットと家庭内LANとの間に配置され、ホームルータ、プロトコル変換、ファイアウォール、ファイアウォールのルール動的変更などの機能や放送受信機能などのセットトップボックスを備える。例えば、家庭内LANに設置されたWebTVから発信されるリクエストであり、当該家庭内LANに設置されたHDDやPCからWebTVに提供されるサービスに関して情報を要求する旨のリクエストを受信したり、家庭内LANに設置されたWebTVからインターネット接続要求を受信して、NAT変換を行い、当該要求をインターネット網に送信したりする。
また、「HGW(A)」、「HGW(B)」は、家庭内LANの電話回線と外部の公衆電話交換回線網であるPSTN網(Public Switch Telephone Networks)とを接続する機能や、VoIP−GW(Vice Over Internet Protocol-GateWay)としての機能を有するとともに、IP電話アダプタを有し、家庭内LANと外部のVoIP網とを接続する。具体的に例を挙げると、「HGW(A)」、「HGW(B)」は、家庭内LANに接続されたIP電話(電話機(A)や電話機(B))からダイアル番号を受信し、外部のVoIP網に接続されるIP電話機と接続する。また、IP電話アダプタは、必ずしもHGWに内蔵されている必要はなく、他の装置として家庭内LANに接続されていてもよい。
なお、「HGW(A)」、「HGW(B)」は、それぞれ特許請求の範囲に記載の「データ中継装置」に対応し、「電話機(A)」、「電話機(B)」は、それぞれ特許請求の範囲に記載の「通信装置」に対応する。ただし、本実施例では、「電話機(A)」から「電話機(B)」に発信した場合について説明するが、本発明はこれに限定されるものではなく、「電話機(B)」から「電話機(A)」に発信してもよい。また、本実施例では、家庭内LAN(A)と家庭内LAN(B)とがVOIP網に接続されている場合について説明するが、本発明はこれに限定されるものではなく、同様に構成された家庭内LAN(C)や家庭内LAN(D)などの他の家庭内LANがVOIP網に接続されていてもよい。
また、本実施例では、家庭内LANに接続される電話機同士のセッションが確立した後に、HGW同士が仮想的な通信路であるVPNを接続する場合について説明するが、本発明はこれに限定されるものではなく、例えば、家庭内LANに接続される他のアプリケーションまたは家庭内LANに接続されていない外部のアプリケーション、HGW内部のアプリケーションなどによって、HGW同士のセッションが確立した後に、HGW同士が仮想的な通信路であるVPNを接続することもできる。つまり、HGW同士がVPNを接続するのに際して、電話機同士のセッション確立が必ずしも必要ではなく、家庭内LAN同士が何らかの手法でセッションを確立していればよい。
[HGWの概要および特徴]
次に、図1を用いて、実施例1に係るHGW(Home GateWay)を含むシステムの概要および特徴を説明する。図1は、実施例1に係るHGWを含むシステムの全体構成を示すシステム構成図である。
このシステムは、ネットワーク(プライベートIP)アドレス「192.168.1.0/24」が設定されている電話機(A)およびHGW(A)などから構成される家庭内LAN(A)と、同様に、ネットワーク(プライベートIP)アドレス「192.168.1.0/24」が設定されている電話機(B)およびHGW(B)などから構成される家庭内LAN(B)とから構成される。
このような構成において、このHGWは、上記したように、電話機(A)および他の通信装置がHGW(A)を介して他の家庭内LANに接続されるように構成された家庭内LAN(A)と、同様に構成された家庭内LAN(B)とを相互に通信可能に接続することを概要とするものであり、特に、家庭内LAN同士を仮想的に接続するのに際して、仮想アドレスの重複を確実に防止して通信することが可能である点に主たる特徴がある。
この主たる特徴を具体的に説明すると、各HGWは、データ中継装置と他のネットワークに接続される他のデータ中継装置との間に確立されたセッションの発側および着側に対応付けて、ネットワークで使用する仮想アドレスを決定するのに必要な仮想アドレス情報を記憶する仮想アドレス情報DBを備える。具体的に例を挙げれば、HGW(A)は、『発側か着側かを示す「発着」と、使用する仮想アドレスのネットワーク情報を示す「仮想アドレス情報」』として「発側、192.168.100.0/24」や「着側、192.168.200.0/24」を記憶する仮想アドレス情報DBを備える。なお、HGW(B)についても、同様に仮想アドレス情報DBを備えている。
また、仮想アドレス情報DBは、ネットワークと他のネットワークとで利用される仮想アドレスの重複および競合を回避するために、前記発側および着側のそれぞれにおける仮想アドレス決定方法をルール化したものを記憶していてもよい。例えば、仮想アドレス情報DBは、「発側、第三オクテットを100」、「着側、発側仮想アドレスの第三オクテット+1」などのように、仮想アドレスを決定するルールを記憶していてもよい。
このような状態において、HGWは、データ中継装置と他のデータ中継装置との間にセッションが確立された場合に、当該セッションの発側であるかまたは着側であるかに基づいて、仮想アドレス情報を仮想アドレス情報DBから取得して、取得した仮想アドレス情報に基づいて当該ネットワークで使用する仮想アドレスを決定する(図1の(1)〜(3)参照)。
具体的に例を挙げれば、電話機(A)からHGW(A)を介して電話機(B)に通話要求が送信されて、電話機(B)からHGW(B)を介して電話機(A)に通話許可応答が送信されると、電話機(A)と電話機(B)との間にセッションが確立される。言い換えれば、HGW(A)とHGW(B)との間にセッションが確立されることとなる。
この場合、通話接続の発側である電話機(A)が接続される家庭内LAN(A)内のHGW(A)は、電話機(A)が通話接続の発側、つまり、セッション確立の発側であると判定し、「発側」に対応付けて記憶される「192.168.100.1/24」を仮想アドレス情報DBから取得して、当該ネットワークで使用する仮想アドレス情報として決定する。同様に、通話接続の着側である電話機(B)が接続される家庭内LAN(B)内のHGW(B)は、電話機(B)が通話接続の着側、つまり、セッション確立の着側であると判定し、「着側」に対応付けて記憶される「192.168.200.1/24」を仮想アドレス情報DBから取得して、当該ネットワークで使用する仮想アドレス情報として決定する。
そして、HGWは、決定された仮想アドレス情報を用いて、セッションが確立されている他のデータ中継装置が接続される他のネットワークとネットワークとを仮想的な通信路で接続して通信可能に制御する(図1の(4)と(5)参照)。上記した例で具体的に説明すると、HGW(A)は、HGW(A)とHGW(B)との間にセッションが確立され、家庭内LAN(A)で使用する仮想アドレス情報を「192.168.100.0/24」と決定すると、HGW(B)に対してVPN接続要求を送信する。そして、HGW(B)では、HGW(A)と同様に、HGW(A)とHGW(B)との間にセッションが確立され、家庭内LAN(B)で使用する仮想アドレス情報を「192.168.200.0/24」と決定すると、HGW(A)から受け付けたVPN接続要求の応答として許可応答を送信する。このようにして、HGW(A)とHGW(B)との間、つまり、家庭内LAN(A)と家庭内LAN(B)との間に、仮想的なネットワークであるVPNが接続される。
そして、HGW(A)とHGW(B)とは、それぞれの家庭内LANに接続される装置から受け付けた各種要求に対してNAT変換を行って、接続されている家庭内LANとの通信を行う。
具体的には、家庭内LAN(A)に接続されるPC「IPアドレス:192.168.1.10」から家庭内LAN(B)に接続されるWebサーバの仮想アドレスである「IPアドレス:192.168.200.10」へアクセス要求が送信された場合に、HGW(A)は、送信元IPアドレス「192.168.1.10」で送信先IPアドレス「192.168.200.10」であるアクセス要求を受け付ける。そこで、このままでは、PCとWebサーバとが通信を行うことができないため、HGW(A)は、決定した仮想アドレス情報「192.168.100.0/24」を用いて、送信元IPアドレスを「192.168.1.10」から「192.168.100.10」に変換してアクセス要求を送信する。
続いて、HGW(B)は、HGW(A)と同様の手法で、受け付けたアクセス要求の
送信先IPアドレス「192.168.200.10」を「192.168.1.10」に変換して、「192.168.1.10」が割り当てられているWebサーバにアクセス要求を送信する。その後、Webサーバから送信元IPアドレス「192.168.1.10」、送信先IPアドレス「192.168.100.10」のアクセス応答を受け付けると、HGW(B)は、受け付けたアクセス応答の送信元IPアドレスを「192.168.1.10」から「192.168.200.10」に変換してHGW(A)に送信する。そして、送信元IPアドレス「192.168.200.10」、送信先IPアドレス「192.168.100.10」のアクセス応答を受け付けたHGW(A)は、送信先IPアドレスを「192.168.100.10」から「192.168.1.10」に変換して、「192.168.1.10」が割り当てられているPCにアクセス応答を送信する。
このように、実施例1に係るHGWは、それぞれ決まった仮想アドレス情報を用いてNAT変換することができる結果、上記した主たる特徴のごとく、家庭内LAN同士の接続に際して、仮想アドレスの重複を確実に防止して接続することが可能である。
[HGWの構成]
次に、図2を用いて、図1に示したHGWの構成を説明する。図2は、実施例1に係るHGWの構成を示すブロック図である。図2に示すように、HGW(A)10は、内部I/F部11と外部I/F部12と記憶部20と制御部30とから構成され、HGW(B)40も同様に、内部I/F部41と外部I/F部42と記憶部50と制御部60とから構成される。なお、図2に示したHGW(A)とHGW(B)とは、同様の構成を有するので、ここでは、HGW(A)についてのみ説明する。
内部I/F部11は、家庭内LAN(A)に接続される各種装置との通信を制御する。具体的に例を挙げれば、内部I/F部11は、電話機(A)から電話機(B)へのVOIPを用いた電話発信を受け付けたり、PCから家庭内LAN(B)のWebサーバへのアクセス要求を受け付けたり、外部I/F部12によって受け付けられた電話機(B)から送信された接続応答を電話機(A)に送信したり、外部I/F部12によって受け付けられたWebサーバから送信されたアクセス要求に対するアクセス応答をPCに送信したりする。
外部I/F部12は、家庭内LAN(A)とは異なる他のネットワークとの通信を制御する。具体的に例を挙げれば、外部I/F部12は、電話機(B)から送信された接続応答を受信したり、Webサーバから受け付けたアクセス要求に対するアクセス応答を受信したり、内部I/F部11によって受け付けられた電話機(A)から電話機(B)へのVOIPを用いた電話発信を電話機(B)に送信したり、内部I/F部11によって受け付けられたPCから家庭内LAN(B)のWebサーバへのアクセス要求をWebサーバに送信したり、HGW(B)40との間に仮想通信路の生成を行ったりする。
記憶部20は、制御部30による各種処理に必要なルーティング情報およびプログラムを格納するとともに、特に本発明に密接に関連するものとしては、仮想アドレス情報DB21を備える。
仮想アドレス情報DB21は、HGW(A)10と他のネットワークである家庭内LAN(B)に接続されるHGW(B)40との間に確立されたセッションの発側および着側に対応付けて、ネットワークで使用する仮想アドレスが互いに重複しないように選択するのに必要な仮想アドレス情報を記憶する。具体的に例を挙げれば、仮想アドレス情報DB21は、図3に示すように、『発側か着側かを示す「発着」と、使用する仮想アドレスのネットワーク情報を示す「仮想アドレス情報」』として「発側、192.168.100.0/24」や「着側、192.168.200.0/24」を記憶する。
また、仮想アドレス情報DB21は、使用される仮想アドレスそのものを記憶している必要はなく、ネットワークで使用する仮想アドレスが互いに重複しないように選択するのに必要な仮想アドレス情報としてルールを記憶していてもよい。例えば、仮想アドレス情報DB21は、「発側、第三オクテットを100」、「着側、発側仮想アドレスの第三オクテット+1」などのように、仮想アドレスを決定するルールを記憶していてもよい。なお、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図3は、仮想アドレス情報DBに記憶される情報の例を示す図である。
制御部30は、OS(Operating System)などの制御プログラム、仮想アドレス情報DB21に記憶されるルーティング情報に基づくルーティング制御などの各種処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、特に本発明に密接に関連するものとしては、仮想アドレス決定部31と、VPN接続部32と、NAT変換部33とを備え、これらによって種々の処理を実行する。
仮想アドレス決定部41は、HGW(A)10とHGW(B)40との間にセッションが確立された場合に、当該セッションの発側であるかまたは着側であるかに基づいて、仮想アドレス情報を仮想アドレス情報DBから取得して、当該ネットワークで使用する仮想アドレス情報として決定する。上記した例で具体的に説明すると、電話機(A)からHGW(A)10を介して電話機(B)に通話要求が送信されて、電話機(B)からHGW(B)40を介して電話機(A)に通話許可応答が送信されると、電話機(A)と電話機(B)とが通話接続される。その場合、仮想アドレス決定部31は、電話機(A)が通話接続の発側であると判定し、「発側」に対応付けて記憶される「192.168.100.0/24」を仮想アドレス情報DB21から取得して、当該ネットワークで使用する仮想アドレス情報として決定する。同様に、通話接続の着側である電話機(B)が接続される家庭内LAN(B)内のHGW(B)40は、電話機(B)が通話接続の着側であると判定し、「着側」に対応付けて記憶される「192.168.200.0/24」を仮想アドレス情報DB51から取得して、当該ネットワークで使用する仮想アドレス情報として決定する。
また、家庭内LAN(A)のプライベートIPアドレスが「192.168.1.0/24」、家庭内LAN(B)のプライベートIPアドレスが「192.168.1.0/24」であり、仮想アドレス情報DB21に「発側、第三オクテットを100」、「着側、発側の第三オクテット+1」などと仮想アドレスを決定するルールが記憶されており、電話機(A)から電話機(B)に通話接続要求がされた場合を例にして説明する。この場合、仮想アドレス決定部31は、上記と同様に電話機(A)が通話接続の発側であると判定し、「発側」に対応付けて仮想アドレス情報DB21に記憶される「第三オクテットを100」に基づいて、当該ネットワークで使用する仮想アドレス情報を、プライベートIPアドレス「192.168.1.0/24」の「第三オクテットを100」にした「192.168.100.0/24」として決定する。同様に、通話接続の着側である電話機(B)が接続される家庭内LAN(B)内のHGW(B)40の仮想アドレス決定部61は、電話機(B)が通話接続の着側であると判定し、「着側」に対応付けて仮想アドレス情報DB51に記憶される「発側の第三オクテット+1」に基づいて、当該ネットワークで使用する仮想アドレス情報を「192.168.101.0/24」として決定する。
VPN接続部32は、仮想アドレス決定部31により決定された仮想アドレス情報を用いて、セッションが確立されているHGW(B)40が接続される家庭内LAN(B)と家庭内LAN(A)とを仮想的な通信路で接続して通信可能に制御する。上記した例で具体的に説明すると、VPN接続部32は、仮想アドレス決定部31により決定された仮想アドレス情報「192.168.100.1/24」を用いて家庭内LAN(A)と家庭内LAN(B)との間に仮想的な通信路であるVPNを接続するとともに、VPN接続に伴ってファイアウォールやルーティングの設定を変更する。
NAT変換部33は、VPN接続部32により設定された各種設定およびVPNに基づいて、NAT変換を行って家庭内LAN(B)と家庭内LAN(A)との通信を制御する。上記した例で具体的に説明すると、家庭内LAN(A)に接続されるPC「IPアドレス:192.168.1.10」から家庭内LAN(B)に接続されるWebサーバ「IPアドレス:192.168.200.10」へアクセス要求が送信された場合に、NAT変換部33は、送信元IPアドレスが「192.168.1.10」で、送信先IPアドレスが「192.168.200.10」であるアクセス要求を受け付ける。そこで、このままでは、PCとWebサーバとが通信を行うことができないため、NAT変換部33は、VPN接続部32により設定された各種設定に基づいて、送信元IPアドレスを「192.168.1.10」から「192.168.100.10」にしてアクセス要求を送信する。また、HGW(B)40においては、送信先IPアドレスを「192.168.200.10」から「192.168.1.10」に変換してアクセス要求をWebサーバに転送する。
ここで、NAT変換の例について、一部を抜粋して具体的に例を挙げて説明する。例えば、HGW(A)10では、NAT変換を行う設定として、「iptable -t nat 1 -i tun0 -A PREROUTING -d 192.168.100.0/24 -j NETMAP --to 192.168.1.0/24」、「iptable -t nat 1 -i tun0 -A PREROUTING -s 192.168.1.0/24 -j NETMAP --to 192.168.100.0/24」などと設定する。
また、HGW(B)40でも同様に、NAT変換を行う設定として、「iptable -t nat 1 -i tun0 -A PREROUTING -d 192.168.200.0/24 -j NETMAP --to 192.168.1.0/24」、「iptable -t nat 1 -i tun0 -A PREROUTING -s 192.168.1.0/24 -j NETMAP --to 192.168.200.0/24」などと設定する。
[HGWによる処理]
次に、図4と図5とを用いて、HGWによる処理を説明する。図4は、実施例1に係るHGWにおけるVPN接続処理の流れを示すフローチャートであり、図5は、実施例1に係るHGWにおける通信制御処理の流れを示すフローチャートである。なお、HGW(A)10とHGW(B)40とで実行される処理の流れは同様であるので、ここでは、HGW(A)10を例にして説明する。
(VPN接続処理の流れ)
図4に示すように、HGW(A)10とHGW(B)40とのVOIPによるセッションが確立されると(ステップS101肯定)、HGW(A)10の仮想アドレス決定部31は、電話機(A)、言い換えれば、家庭内LAN(A)が発側か着側かを判定する(ステップS102)。
そして、家庭内LAN(A)が発側であると判定された場合(ステップS102肯定)、仮想アドレス決定部31は、仮想アドレス情報DB21から発側の仮想アドレス情報を取得して、家庭内LAN(A)で使用する仮想アドレス情報を決定する(ステップS103)。
一方、家庭内LAN(A)が着側であると判定された場合(ステップS102否定)、仮想アドレス決定部31は、仮想アドレス情報DB21から着側の仮想アドレス情報を取得して、家庭内LAN(A)で使用する仮想アドレス情報を決定する(ステップS104)。
そして、VPN接続部32は、仮想アドレス決定部31により決定された仮想アドレス情報を用いて、HGW(B)40、言い換えれば、家庭内LAN(B)との間にVPNを接続する(ステップS105)。
(通信制御処理の流れ)
図5に示すように、HGW(A)10とHGW(B)40との間(言い換えれば、家庭内LAN(A)と家庭内LAN(B)との間)にVPNが接続されて、家庭内LAN(A)に接続される他の装置から各種要求を内部I/F部11により受信されると(ステップS201肯定)、NAT変換部33は、VPN接続部32により設定された各種設定に基づいてNAT変換を実施して(ステップS202)、各種要求を宛先のHGW(B)40に外部I/F部12を介して送信する(ステップS203)。
その後、各種要求の送信先である装置から応答が外部I/F部12により受信されると(ステップS204肯定)、NAT変換部33は、VPN接続部32により設定された各種設定に基づいてNAT変換を実施して(ステップS205)、各種要求送信先(応答の宛先)である装置に内部I/F部11を介して応答を送信する(ステップS206)。
[実施例1による効果]
このように、実施例1によれば、HGW(A)10は、HGW(A)10と家庭内LAN(B)に接続されるHGW(B)40との間に確立されたセッションの発側および着側に対応付けて、家庭内LAN(A)で使用する仮想アドレスを決定するのに必要な仮想アドレス情報を記憶する仮想アドレス情報DB21を備え、HGW(A)10とHGW(B)40との間にセッションが確立された場合に、当該セッションの発側であるかまたは着側であるかに基づいて、仮想アドレス情報を仮想アドレス情報DB21から取得して、取得した仮想アドレス情報に基づいて当該家庭内LAN(A)で使用する仮想アドレスを決定し、決定された仮想アドレスを用いて、セッションが確立されているHGW(B)40が接続される家庭内LAN(B)と家庭内LAN(A)とを仮想的な通信路で接続して通信可能に制御するので、家庭内LAN同士を仮想的に接続するのに際して、仮想アドレスの重複を確実に防止して通信することが可能である。
具体的には、HGW(A)10は、VOIPによるセッションの確立における発側または着側に対応付けてそれぞれ決まった仮想アドレス情報を使用することができる結果、家庭内LAN同士をVPN接続した場合であっても、仮想アドレスの重複を確実に防止して通信することが可能である。
また、実施例1によれば、仮想アドレス情報とは、ネットワークと他のネットワークとで利用される仮想アドレスの重複および競合を回避するために、発側および着側のそれぞれにおける仮想アドレス決定方法をルール化したものであるので、利用形態や用途など仮想アドレスが重複しないように、利用者間で任意にルール化することができる結果、利用者の嗜好にあわせて柔軟に対応することが可能である。また、予め顔見知りの利用者間同士でのみに適用できるルールを任意に設定することができる結果、セキュリティを強化することが可能である。
ところで、本発明は、HGW同士がSIP接続される場合であっても、同様に、仮想アドレスを決定して、家庭内LAN同士を接続することが可能である。
そこで、実施例2では、HGW同士がSIP接続される場合に、それぞれの家庭内LANで使用される仮想アドレスを決定して、家庭内LAN同士を接続する例について説明する。また、実施例2では、インターネット鍵交換プロトコルであるIKE(Internet Key Exchange)を用いて、IPsec(IP Security Protocol)を用いた仮想的な通信路を接続する場合について説明する。
まず始めに、図6を用いて、SIPセッションの確立を用いたIPsec接続の処理の流れを示す処理シーケンスについて説明する。図6は、IKEを用いたSIP接続の処理の流れを示すシーケンス図である。なお、ここでは、電話機(A)には電話番号「0422-59-2222」が設定されており、電話機(B)には電話番号「0422-59-1111」が設定されているとする。また、SIPサーバとは、電話機(A)と電話機(B)とをそれぞれのHGWを介してSIPで接続する装置であり、HGW(A)10やHGW(B)40と同様に、図1に示したネットワークに接続されている。
(処理シーケンス)
図6に示すように、HGW(A)10は、「REGISTER」メッセージをSE(サービス・エッジ)を介してSIPサーバに送信し、同様に、HGW(B)40も、「REGISTER」メッセージをSEに送信する(ステップS301とステップS302)。
その後、電話機(A)から電話番号が入力されると、HGW(A)10は、「SIP INVITE」メッセージをSEを介してSIPサーバに送信し(ステップS303とステップS304)、SIPサーバは、この「SIP INVITE」メッセージをSEを介してHGW(B)40に転送する(ステップS305)。
そして、転送されたこの「SIP INVITE」メッセージを受け付けたHGW(B)40は、発信者番号通知により相手を識別し、事前、もしくは、接続の都度、電話機操作などにより相手からの接続を許可する旨の通知を電話機(B)から受け付け、「200 OK」メッセージをSEを介してSIPサーバに送信し(ステップS306とステップS307)、この「200 OK」メッセージを受け付けたSIPサーバは、受け付けた「200 OK」メッセージをHGW(A)10に転送する(ステップS308)。
すると、SIPサーバは、SIPサーバ内のネットワーク(もしくは、VOIP網)の帯域などのリソースの確保やパケットフィルタリングの設定などを行い(ステップS309)、HGW(A)10は、例えば、上記した処理の流れの中または事前にSDP(Session Description Protocol)などで交換された接続相手に対してVPN接続の開始を行うとともに(ステップS310)、HGW(B)40は、SDPなどで交換された接続相手に対してVPNの待ち受けを開始する(ステップS311)。
このようにして、HGW(B)40とVPN接続が開始されると(ステップS312)、HGW(A)10は、宛先ポート番号を「4500」として、IPsecのセキュリティ・アーキテクチャをそのままに鍵交換プロトコルのIKEv1を拡張したものである「IKEv2(Internet Key Exchange version 2)リクエスト」である「IKE_SA_INIT」メッセージを、SIPサーバを介してHGW(B)40に送信する(ステップS313)。なお、IKEv2である必要はなく、IKEv1であってもよい。
すると、HGW(B)40では、このリクエストに対応する応答として「IKEv2レスポンス」である「IKE_SA_INIT」メッセージをHGW(A)10にSIPサーバを介して応答する(ステップS314)。なお、この後、IKE及びUDPカプセリングされたESPパケットは、SDPで宣言されたUDP4500番を利用しているため、網内での通信制御対処となる。
その後、応答を受信したHGW(A)10は、「IKEv2リクエスト」である「IKE_AUTH」メッセージを、SIPサーバを介してHGW(B)40に送信し(ステップS315)、HGW(B)40は、電話番号をIDとした証明書ベースの相手認証を行い(ステップS316)、その結果として、「IKEv2レスポンス」である「IKE_AUTH」メッセージを、SIPサーバを介してHGW(A)10に送信する(ステップS317)。
そして、レスポンスを受け取ったHGW(A)10では、電話番号をIDとした証明書ベースの相手認証を行う(ステップS318)。なお、ステップS316とステップS318とで説明した認証とは、受け取った証明書に記載されている電話番号が、接続先の電話番号と一致するか否かの認証手法であり、認証手法は、これに限定されるわけではなく、公知である他の認証手法を用いてもよい。
その後、HGW(A)10とHGW(B)40とのそれぞれでは、NAT設定が行われて(ステップS319とステップS320)、家庭内LAN(A)と家庭内LAN(B)との間には、UDPカプセリングされたESPパケット(UDP 4500)でやり取りされるIPsecを用いた仮想的な通信路が接続される(ステップS321)。
(仮想アドレス情報決定手法)
次に、上記したVPN接続の処理シーケンスの中で、「ステップS315:メッセージ5」および「ステップS317:メッセージ6」において仮想アドレス情報を決定する手法について説明する。具体的には、HGW(A)10は、家庭内LAN(A)で使用する仮想アドレス情報を家庭内LAN(B)に送信して、家庭内LAN(B)から受信した家庭内LAN(B)で使用される仮想アドレス情報に基づいてネゴシエーションを行った結果、当該家庭内LAN(A)で使用する仮想アドレス情報として仮想サブネットを決定する。つまり、HGW(A)10およびHGW(B)40は、IKEv2におけるTraffic Selector交換においてネゴシエーションを行った結果から、当該家庭内LANで使用する仮想アドレス情報として仮想サブネットを決定する。
通常のTraffic Selectorの利用方法は、Initiator(送信側:この例ではHGW(A)10)が転送する自分のサブネット情報であるアドレス範囲を送り、Responder(受信側:この例ではHGW(B)40)がその中から一部もしくは全部のサブネットを選択して返答するとともに、自分のサブネット情報を送り返す。このとき、サブネットが重複している場合、お互いが同じアドレスをやり取りすることになる結果、ルーティングが実行されず、Traffic Selectorを利用しても通信が成功しない。ここで、Initiatorがサブネットの空間の一部を決定し、Responderが残りの部分を決定することで、お互いに利用中の他のVPNで利用されているサブネットと重複しないサブネット空間を決定することができる。その際、アドレスバッティングがあるかどうかの判定のために、ステップS315およびステップS317において、「TSi」を二つ入れる。
例を挙げて説明すると、InitiatorであるHGW(A)10は、他のVPN接続で利用中の仮想サブネットと重複しないように上位4bit「1111」すなわち「11110000(10進数では240)」を選択して、ステップS315において、アドレスバッティング判定用である自分の実サブネットを示す「TSiメッセージ」として「192.168.0.0-192.168.0.255」、提案する仮想サブネットの上位4bitを示す「TSiメッセージ」として「129.60.240.0-129.60.255.255」の他に、Responder側のサブネット空間を示す「TSrメッセージ」として「0.0.0.0-255.255.255.255」をHGW(B)40に送信する。
そして、これらのメッセージを受信したResponderであるHGW(B)40では、自分のサブネットとバッティングすることを確認し、仮想サブネット交換を実行、つまり、他のVPN接続で利用されているサブネットとして重複しないことを確認し、下位4bitとして「0000」と「0001」すなわち「11110000(10進数では240)」と「11110001(10進数では241)」とを選択する。そして、HGW(B)40は、決定されたInitiatorの仮想サブネットを示す「TSiメッセージ」として「129.60.240.0-129.60.240.255」と、決定されたResponderの仮想サブネットを示す「TSrメッセージ」として「129.60.241.0-129.60.241.255」をHGW(A)10に送信する。
すると、HGW(A)10では、最初の4bitを自分の持つ他のVPN接続の上位4bitにも重複しないものを選択すれば、Responderのアドレスとも重複することはない。また、HGW(A)10およびHGW(B)40において、実サブネット同士が重複しない場合には、Responderは、TSiとして自分のサブネット空間を通知すればよく、この場合、NAT変換を行う必要はない。このようにして仮想サブネットが決まった後は、HGW(A)10およびHGW(B)40において、実施例1と同様に、ルーティングの設定が行われる。
(実施例2による効果)
このように、実施例2によれば、HGW(A)10とHGW(B)40との間にセッションが確立された場合に、HGW(B)40との間で、お互いに利用を希望する仮想アドレスまたは仮想アドレスの範囲を仮想アドレス情報として交換し、お互いの条件に一致するような仮想アドレスを決定するので、自ネットワークの仮想アドレス情報と接続先の仮想アドレス情報とを交換し、接続中の仮想アドレス情報と重複しないかを判定することができる結果、N対Nの接続に際しても、仮想アドレスの重複を確実に防止して通信することが可能である。
また、この例では、129.60.0.0/16のサブネット空間を例にして説明したが、本発明はこれに限定されるものではなく、10.0.0.0/8としてもよく、その場合は、交換できるサブネット空間用のbit数を1オクテットから2オクテットまで増やすことができる結果、より重複を防止することが可能である。また、HGW(A)10は、このような仮想アドレスのサブネット空間自体もHGW(B)40との間でやり取り(ネゴシエーション)を行うことで決定することができる。
また、実施例2によれば、既に通信可能に接続されている別のネットワークが存在する場合に、仮想アドレスを決定するのに際して、当該別のネットワークとの間で利用している仮想アドレスまたは仮想アドレスの範囲と重複しないように、仮想アドレスを決定するので、複数のネットワークと同時に接続する場合であっても、重複しない仮想アドレスを選択して用いることができる結果、複数のネットワークを同時に接続することが可能である。
ところで、本発明は、実施例2で説明したように、電話機同士がSIP接続される場合に、HGW間でネゴシエーションを行う以外にも様々な手法で、仮想アドレス情報を決定することができる。
そこで、実施例3では、HGW(A)10とHGW(B)40とのそれぞれにOpenVPNがインストールされている場合に、HGW間でネゴシエーションを行う以外の手法として、OpenVPNを用いて仮想アドレス情報を決定する例について説明する。図7は、OpenVPNによる仮想アドレス決定処理の流れを示すシーケンス図である。
この処理は、図6で示した「ステップS313:メッセージ3」〜「ステップS317:メッセージ6」に該当し、さらに新たに「メッセージ7」の処理を実施する。また、VPN接続までの処理は、図6で説明したステップS301〜ステップS311の処理と同様であるので、ここでは、仮想アドレス情報を決定する処理について説明する。なお、OpenVPNとは、VPNソフトウエアを利用したフル機能のSSL(Secure Socket Layer) VPNであり、本実施例では、VPNソフトウエア上のクライアントを発側でHGW(A)10、サーバ側を着側であるHGW(B)40として説明する。
(処理シーケンス)
図7に示すように、HGW(B)40とVPN接続が開始されると(ステップS401)、HGW(A)10は、宛先ポート番号を「445」として、「SSLリクエスト」である「Client Hellow」メッセージを、SIPサーバを介してHGW(B)40に送信する(ステップS402)。
すると、HGW(B)40では、このリクエストに対応する応答として「SSLレスポンス」である「Server Hellow」メッセージをHGW(A)10にSIPサーバを介して応答する(ステップS403)。そして、HGW(A)10では、電話番号をIDとした証明書ベースの相手認証を行う(ステップS404)。
その後、応答を受信したHGW(A)10は、「SSLリクエスト」として「鍵情報」を、SIPサーバを介してHGW(B)40に送信し(ステップS405)、HGW(B)40は、電話番号をIDとした証明書ベースの相手認証を行い(ステップS406)、その結果、「SSLレスポンス」として「完了通知」を、SIPサーバを介してHGW(A)10に送信する(ステップS407)。
続いて、HGW(B)40は、ネットワーク設定情報(NATアドレス情報)をSIPサーバを介してHGW(A)10に送信し(ステップS408)、ネットワーク設定情報を受け取ったHGW(A)10と、ネットワーク設定情報を送信したHGW(B)40では、それぞれNAT設定が実施され(ステップS409とステップS410)、家庭内LAN(A)と家庭内LAN(B)との間にSSL VPNトンネルが確立される(ステップS411)。なお、上記した認証とは、受け取った証明書に記載されている電話番号が、接続先の電話番号と一致するか否かの認証手法であり、認証手法は、これに限定されるわけではなく、公知である他の認証手法を用いてもよい。
(仮想アドレス情報決定手法)
次に、上記した処理について具体的に例を挙げて説明する。OpenVPNは、上記したように、サーバ側(HGW(B)40)が自身のプライベートIPアドレス情報をクライアント側(HGW(A)10)に伝えることができる。
このようなVPNソフトウエアをVPN接続に際して起動することで、サーバ側であるHGW(B)40は、ステップS408において、自身の仮想アドレス情報「192.168.10.0/24」を偶数に設定してクライアント側であるHGW(A)10に通知し、クライアント側であるHGW(A)10は、ステップS409において、その情報を基に自身の仮想サブネットを、サーバ側の仮想アドレスの第三オクテットに「1」を追加した「192.168.11.0/24」とする。このようなルールを、仮想アドレス情報DB21に記憶しておけば、複数の着呼があった場合にでも、サーバ側で重複を避けるようなアドレス設計(次の呼に対しては192.168.12.0)を払い出すことが可能である。
また、複数のクライアント接続(複数の発呼)を行う場合、サーバ側が通知してくる仮想アドレスとが重複する可能性があるが、このような場合には、クライアント側は、サーバ側が通知してきた仮想アドレスを確認して重複が判明すると、VPN接続を失敗させ、再度接続を行うようにすればよい。
例えば、既存のVPN接続において、仮想アドレス「192.168.11.0/24」を既に利用している場合に、新たなVPN接続で、サーバ側が自身の仮想アドレスが「192.168.10.0/24」と通知してきた場合には、サーバ側の仮想アドレスの第三オクテットに「1」追加すると既に利用されている「192.168.11.0/24」と重複するために、接続エラーを返答する。サーバ側は、接続エラーとなった場合には、異なる仮想アドレスを選択して、クライアント側に再度通知する。このように、何度かのトライアンドエラーで重複を避けることができる。なお、仮想アドレスが決まった後の処理は、実施例1と同様である。
(実施例3による効果)
このように、実施例3によれば、HGW(A)10とHGW(B)40との間にセッションが確立された場合に、家庭内LAN(B)で利用を希望する仮想アドレスまたは仮想アドレスの範囲を他のデータ中継装置から受信し、受信した仮想アドレスまたは仮想アドレスの範囲と重複しないように、当該ネットワークで利用する仮想アドレスを決定するので、N対Nの複数間のVPN接続を行う場合であっても、通話接続先側が通知してきた仮想アドレスを確認することができる結果、仮想アドレスの重複を強固に防止することが可能である。
また、実施例3によれば、HGW(B)40から受信した家庭内LAN(B)で使用される仮想アドレスまたは仮想アドレスの範囲が、既に通信可能に接続されている別のネットワークで使用されている仮想アドレスまたは仮想アドレスの範囲と一致する場合に、当該他のネットワークに接続されるデータ中継装置との接続を拒否して、再度、仮想アドレスや仮想アドレスの範囲をHGW(B)40に要求するので、トライアンドエラーを行うことができる結果、より強固に重複を避けることが可能である。
ところで、本発明は、電話機同士がSIP接続される場合に、実施例2で説明したHGW間でネゴシエーションを行う以外にも様々な手法で、仮想アドレス情報を決定することができる。
そこで、実施例4では、電話機同士がSIP接続される場合に、仮想アドレス情報を決定する様々な手法について説明する。ここでは、SIP確立に至るまでの通信において「双方向で設定可能なパラメータを用いた仮想アドレス決定手法」と「片方向で設定可能なパラメータを用いた仮想アドレス決定手法」とについて説明する。
(双方向で設定可能なパラメータを用いた仮想アドレス決定手法)
まず、一般的なSIP接続の処理シーケンスを示した図6で説明したステップS304およびステップS305と、ステップS307およびステップS308で送受信されるメッセージの内容を書き換えることで、仮想アドレスを決定する手法について説明する。
SIPにおけるトランザクションパケット(例えば、SIP INVITEや200 OKなど)には、呼を識別するために、Fromヘッダ、Toヘッダにtagパラメータが含まれている。また、FromとToとでは必ずtag情報の中身が異なっているため、SIP UA(User Agent)において、下位もしくは上位16bit分は異なる値にしておき、その値をそのまま仮想アドレスとして利用することができる。
例えば、Fromヘッダに含まれるtag情報が「a1b2」である場合に、「a1=161、b2=178」であることより、仮想アドレス空間は、「10.161.178.0/24」と決定することができ、Toに含まれるtag情報が「1234」である場合に、「12=18、34=52」であることより、仮想アドレス空間は、「10.18.52.0/24」と決定することができる。ここで、tag生成のアルゴリズムとしては、下位16bitを異なるように生成することとすると、Fromのtag情報が「9876a1b2」で、Toのtag情報が「aabbccdd1234」でもよい。
このようにすることで、複数の着信を受けてSDP情報やTAG情報が重複した場合であっても、自分が送信するSDP情報やTAG情報を重複しないように選択して送信することができる結果、仮想アドレスの重複を強固に防止し、通信可能に接続することが可能である。
また、Class CのプライベートIPアドレス空間を例にして説明すると、「192.168.0.0」の下位16bitのうち、特定の範囲のbit数を仮想アドレス空間(仮想サブネット空間)とし、tag情報を用いて決定することができる。例えば、「/24」の空間を決定すると、発側であるHGW(A)10が「4bit」、着側であるHGW(B)40が「4bit」の「bit列」を決定し、それらを繋げて、「192.168.(4+4).0/24」のアドレス空間を決定する。この際、HGWは、自分の送った方を先頭にするなどの規則を決めておくことで、重複を防止することができる。
より例を挙げて説明すると、発側であるHGW(A)10は、tag情報に「3=0011」を入力して「SIP INVITE」を送信し、これに対して着側であるHGW(B)40は、「12=1100」をtag情報に入力して「200 OK」を応答したとする。この場合、HGW(A)10は、二つのtag情報「00111100=60」から家庭内LAN(A)の仮想アドレス空間を「192.168.60.0/24」と決定し、同様に、HGW(B)40は、二つのtag情報「11000011=95」から家庭内LAN(B)の仮想アドレス空間を「192.168.95.0/24」と決定する。ここでは、第三オクテットの「4bit」を決定する場合について説明したが、本発明はこれに限定されるものではなく、任意のbit数でもよい。例えば、「6bit」を決定するとした場合、仮想アドレスのサブネット空間は「/28」となる。また、ここでは、「192.168.0.0/16」のサブネット空間を想定したが、「10.0.0.0/8」としてもよく、その場合は、交換できるbit数を増やすことができ、より重複を防止することが可能である。
また、HGW(A)10は、このような仮想アドレスのサブネット空間自体もHGW(B)40との間でやり取り(ネゴシエーション)を行うことで決定することができる。例えば、HGW(A)10は、自身が使用を希望するサブネット空間とHGW(B)40で使用を希望するサブネット空間をHGW(B)40に送信し、HGW(B)40は、これを受け入れる場合にはそのまま利用し、受け入れない場合には、サブネット空間をHGW(A)10に対して再度要求することで、お互いが利用するサブネット空間を決定することができる。
また、双方向で設定可能なパラメータを用いた仮想アドレス決定手法としては、上記したtag情報を用いた手法以外にも様々な手法を用いることができる。例えば、SIP通信における「INVITE」や「200 OK」に付与されるSDP情報内にアドレス情報を記載して双方向に通信を行うことで、仮想アドレス情報を決定することができる。この場合、SDP情報内には、上記したtag情報のように16進数表記である必要はなく、アドレス表記をそのままパラメータとして格納し、アドレス表記が格納されたSDP情報で送受信することが可能である。
また、このようなSDP情報を用いた場合、上記した手法以外にも実施例2で説明したネゴシエーションを行って仮想アドレスを決定する手法を用いても仮想アドレス情報を決定することができる。そうすることで、自ネットワークの仮想アドレス情報と接続先の仮想アドレス情報とを交換し、接続中の仮想アドレス情報と重複しないかを判定することができる結果、N対Nの接続に際しても、仮想アドレスの重複を確実に防止して通信することが可能である。
(片方向で設定可能なパラメータを用いた仮想アドレス決定手法)
次に、上記した手法と同様に、図6で説明したステップS304およびステップS305と、ステップS307およびステップS308で送受信されるメッセージの内容を書き換えることで、仮想アドレスを決定する手法について説明する。ただし、この例では、ステップS304およびステップS305との「INVITE」中に含まれる「Call-ID」を使用するために、上記した手法とは異なり、「INVITE」の「Call-ID」は任意に設定可能であるが、ステップS307およびステップS308で送信される「200 OK」の「Call-ID」は任意に設定することができず、自動的に設定される。
例えば、HGW(A)10は、「Call-ID」に直接仮想アドレスを含めるような場合、「192.168.0.0/24」を16進数標記に変更した「c0a8000」を「Call-ID」の頭あるいは後ろに付与して、HGW(B)40に送信する。そして、これを受信したHGW(B)40は受信した「c0a8000」を基に、あらかじめ決められた設定ルールに従って仮想アドレスを決定する。例えば、設定ルールが第三オクテットに1を加えるというものであった場合、仮想アドレスを「192.168.1.0/24」と決定する。HGW(B)40は、既に利用されている仮想アドレス情報と同じ仮想アドレス情報を示すCall-IDが付与された「INVITE」をHGW(A)10から受信した場合には、接続を拒否することができる。さらに、HGW(A)10は、仮想アドレス情報だけでなく、仮想ネットワークのサブネットの範囲を示す「/24」という情報もCall-IDに含めることも可能であり、その場合、「24」を16進数標記に変更し、アドレス情報の後に追加してCall-IDに付与する値を「c0a800018」としてHGW(B)40に送信する。
このように、HGW(B)40との間にセッションを確立するのに際して、家庭内LAN(A)で使用する仮想アドレスを示すパラメータを付加したSIPにおけるCall−IDをHGW(B)40に送信して、当該家庭内LAN(A)で使用する仮想アドレスを決定するので、HGW(A)10で決定した仮想アドレス情報を接続先のHGW(B)40に通知することができる結果、接続先側で重複しない仮想アドレスの決定を促すことが可能である。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、(1)接続制御サーバ、(2)IPsecのみでのVPN接続、(3)システム構成等、(4)プログラムにそれぞれ区分けして異なる実施例を説明する。
(1)接続制御サーバ
例えば、実施例1〜4では、HGW(A)10とHGW(B)40との間に、VPN接続を行う第三者装置が存在しない場合、つまり、HGW(A)10とHGW(B)40とがお互いに直接VPN接続する場合について説明したが、本発明はこれに限定されるものではなく、図8に示すように、VPN接続を行う第三者装置として接続制御サーバが接続されていてもよい。
この場合、HGW(A)10またはHGW(B)40から送信されるSIP接続やVPN接続の要求およびこれらの応答は、接続制御サーバに送信され、接続制御サーバがそれらをHGW(A)10またはHGW(B)40に転送することとなるが、その場合であっても、送信先が変わっただけで接続先は変わらないので、何ら問題なく、実施例1〜4で説明した手法を用いることができる。なお、図8は、接続制御サーバが接続される場合のシステムの全体構成を示す図である。
(2)IPsecのみでのVPN接続
また、実施例2と実施例3では、電話機(A)と電話機(B)とがSIPを用いたVOIPセッションを確立した後に、HGW同士がVPNを接続する例について説明したが、本発明はこれに限定されるものではなく、SIPを用いたVOIPセッションがない場合であっても、同様に、HGW同士がVPN接続を行うことができる。例えば、図6に示したステップS301〜ステップS308におけるSIPによるセッション確立を用いない場合、つまり、単なるIPsecによる通信を行う場合、HGWは、実施例2で説明したIKEのInitiatorまたはResponderによる動作を実施することで、VPN接続を行うことができる。
(3)システム構成等
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理(例えば、200 OKなどのような各種応答処理、実施例2〜実施例4で用いたルールに従って仮想アドレスを決定する処理など)の全部または一部を手動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報(例えば、図3など)については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合(例えば、VPN接続部とNAT変換部とを統合するなど)して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(4)プログラム
なお、本実施例で説明したデータ中継方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
以上のように、本発明に係るデータ中継装置、データ中継方法およびデータ中継プログラムは、電話装置および他の通信装置がデータ中継装置を介して他のネットワークに接続されるように構成されたネットワークと、同様に構成された複数の他のネットワークとを仮想的な通信路で相互に通信可能に接続することに有用であり、特に、家庭内LAN同士を仮想的に接続するのに際して、仮想アドレスの重複を確実に防止して通信することに適する。
実施例1に係るHGWを含むシステムの全体構成を示すシステム構成図である。
実施例1に係るHGWの構成を示すブロック図である。
仮想アドレス情報DBに記憶される情報の例を示す図である。
実施例1に係るHGWにおけるVPN接続処理の流れを示すフローチャートである。
実施例1に係るHGWにおける通信制御処理の流れを示すフローチャートである。
IKEを用いたSIP接続の処理の流れを示すシーケンス図である。
OpenVPNによる仮想アドレス決定処理の流れを示すシーケンス図である。
接続制御サーバが接続される場合のシステムの全体構成を示す図である。
符号の説明
10 HGW(A)
11 内部I/F部
12 外部I/F部
20 記憶部
21 仮想アドレス情報DB
30 制御部
31 仮想アドレス決定部
32 VPN接続部
33 NAT変換部
40 HGW(B)
41 内部I/F部
42 外部I/F部
50 記憶部
51 仮想アドレス情報DB
60 制御部
61 仮想アドレス決定部
62 VPN接続部
63 NAT変換部