以下、本発明の実施の形態を図面に基づいて説明する。
(第1の実施形態)図1に本発明の第1の実施形態に係る通信システムの概略構成を示す。端末100はインターネット上の通信相手機器300と通信を行う。端末100はセルラーネットワーク用インタフェース110を備え、セルラー基地局10を介してセルラーネットワークに接続できる。また、端末100は無線LAN用インタフェース120を備え、無線LAN基地局20を介して無線LANに接続できる。
ホームエージェント200は端末100に移動機能を提供する機器である。ホームエージェント200は、IP-in-IPトンネリングプロトコルを利用して端末100との間にセルラーネットワーク及び/又は無線LAN経由のトンネルを確立し、そのトンネルを利用して通信相手機器300と端末100間の通信パケットを中継する。
ここで、端末100のセルラーネットワーク用インタフェース110、無線LAN用インタフェース120、ホームエージェント200、通信相手機器300に割り当てられるIPアドレスは、それぞれCoA1、CoA2、HA、CNとする。さらに、端末100にはIPアドレスHoAが割り当てられるとする。ただし、インターネット上のルータがパケットを転送するために解釈するIPヘッダ中の宛先アドレスがHoAであるパケットは全てホームエージェント200に受信されるように、IPアドレスHoAは選ばれる。
図2にホームエージェント200の概略構成を示す。ホームエージェント200はネットワークスタック201、モビリティプロトコルモジュール202、トンネルデバイスモジュール203、記憶部204、及びネットワークインタフェース210を有する。
ネットワークスタック201は、TCP、UDP、SCTP、DCCP、ICMPなどのトランスポートプロトコルやIPv4、IPv6などのネットワークプロトコル処理を行う。ネットワークスタック201はまた、ネットワークインタフェース210から受信したパケットのうちトンネリングされたパケットをトンネルデバイスモジュール203へ出力する。
ネットワークスタック201はまた、トンネリングされ、トンネルデバイスモジュール203により外側IPヘッダを削除されたパケットを、ネットワークインタフェース210へ出力する。
ネットワークスタック201はまた、ネットワークインタフェース210から受け取ったRegistration Requestメッセージの内容をモビリティプロトコルモジュール202へ出力する。ネットワークスタック201はまた、モビリティプロトコルモジュール202から出力されたRegistration ReplyメッセージにUDPヘッダ及びIPヘッダを付与して、ネットワークインタフェース210へ出力する。
Registration Requestメッセージ及びRegistration Replyメッセージについては後述する。
ネットワークスタック201はまた、モビリティプロトコルモジュール202から出力されたICMP Echo RequestメッセージにICMPヘッダとIPヘッダを付与し、ネットワークインタフェース210へ出力する。
ネットワークスタック201はまた、ネットワークインタフェース210から受け取ったICMP Echo Replyメッセージの内容をモビリティプロトコルモジュール202へ出力する。
ICMP Echo Requestメッセージ及びICMP Echo Replyメッセージについては後述する。
モビリティプロトコルモジュール202は、Mobile IPv4のメッセージの作成又は処理を行う。モビリティプロトコルモジュール202は、ネットワークスタック201からRegistration Requestメッセージの内容を受信して処理する。また、モビリティプロトコルモジュール202は、Registration Replyメッセージを生成してネットワークスタック201へ出力する。
モビリティプロトコルモジュール202はまた、トンネルデバイスモジュール203へトンネルの設定やトンネルの削除を通知する。
モビリティプロトコルモジュール202はまた、ネットワークスタック201へのICMP Echo Requestメッセージの内容の出力、ネットワークスタック201からのICMP Echo Replyメッセージの内容の取得を行う。
トンネルデバイスモジュール203は、モビリティプロトコルモジュール202から出力されたトンネルの設定を記憶部204に格納する。
トンネルデバイスモジュール203はまた、モビリティプロトコルモジュール202からトンネルの設定を削除する通知を受けた場合に、記憶部204から該当するトンネルの
設定を削除する。
トンネルデバイスモジュール203はまた、ネットワークスタック201から受け取った、トンネリングされたパケットが、記憶部204に格納されたトンネルの設定に従っているか否かを検査し、従っている場合は外側IPヘッダを削除してネットワークスタック201へ出力し、従っていない場合は破棄する。
記憶部204は、トンネルの設定を記憶する。
ネットワークインタフェース210は、例えばEthernet(登録商標)等の通信プロトコルに対応したネットワークインタフェースであり、受信したパケットをネットワークスタック201へ出力する。
ネットワークインタフェース210はまた、ネットワークスタック201から出力されたパケットを、通信相手機器300や移動端末100へ送信する。
このような通信システムにおけるハンドオーバ時の処理フローを図3を用いて説明する。本実施形態では使用するネットワークをセルラーネットワークから無線LANへ切り替える場合について説明する。
(ステップS100)端末100が、端末100とホームエージェント200との間に確立されたセルラーネットワーク経由のトンネルを用いて、ホームエージェント200へパケットを送信している。ホームエージェント200は端末100から受信したパケットを通信相手機器300へ転送している。
このとき、ホームエージェント200の記憶部204には、端末100のセルラーネットワーク用インタフェース110のIPアドレスCoA1と、端末100のIPアドレスHoAと、ホームエージェント200のIPアドレスHAとの組が、1つのトンネル設定として記憶されている。
端末100のセルラーネットワーク用インタフェース110からホームエージェント200へ送信されるパケットの構成例を図4に示す。このパケットは、外側IPヘッダの送信元IPアドレスがセルラーネットワーク用インタフェース110のIPアドレスCoA1、送信先IPアドレスがホームエージェント200のIPアドレスHAである、IP−in−IPトンネリングプロトコルでトンネリングされたパケットである。
ホームエージェント200のネットワークインタフェース210は、図4に示すようなパケットを受信すると、このパケットをネットワークスタック201へ出力する。
ネットワークスタック201は、受け取ったパケットがIP−in−IPトンネリングプロトコルでトンネリングされたパケットであることから、このパケットをトンネルデバイスモジュール203へ出力する。
トンネルデバイスモジュール203は記憶部204から、IPアドレスCoA1を含むトンネル設定を取得する。上述の通り、記憶部204にはIPアドレスCoA1、HoA、及びHAからなる組がトンネルの設定として記憶されており、トンネルデバイスモジュール203はこの組を取得する。
次に、トンネルデバイスモジュール203は、取得したIPアドレスHoAとパケットの内側のIPヘッダの送信元IPアドレスを比較し、一致した場合、外側IPヘッダを削除し、図5に示すようなパケットを作成する。そして、トンネルデバイスモジュール203は、作成したパケットをネットワークスタック201へ出力する。
なお、前記の比較でIPアドレスが一致しない場合、トンネルデバイスモジュール203はパケットを破棄する。
次に、トンネルデバイスモジュール203から図5に示すような外側IPヘッダが削除されたパケットを受信したネットワークスタック201は、受信したパケットの送信先IPアドレスがホームエージェント200に割り当てられたIPアドレスHAではないことから他の機器(通信相手機器300)へ転送すべきパケットであることを検知し、ネットワークインタフェース210へ出力する。
ネットワークインタフェース210は、ネットワークスタック201から受け取ったパケットを通信相手機器300へ転送する。
(ステップS101)端末100が使用するネットワークをセルラーネットワークから無線LANへ切り替えることを決定する。例えば端末100は無線LAN基地局20から送信される電波の受信強度が十分強くなったこと検知するなどして、無線LANへの切替えを決定する。
(ステップS102)端末100の無線LAN用インタフェース120からホームエージェント200へRegistration Requestメッセージが送信される。
Registration Requestメッセージの具体的な構成例を図6に示す。Registration RequestメッセージはIPヘッダ、UDPヘッダ、及びデータ部分で構成される。
IPヘッダの送信元IPアドレスは端末100の無線LAN用インタフェース120に割り当てられたIPアドレスCoA2であり、送信先IPアドレスはホームエージェントのIPアドレスHAである。
また、UDPヘッダの送信先ポート番号は434である。また、Registration Requestメッセージのデータ部分には、Sbitに0、Home Addressフィールドに端末100のIPアドレスHoA、Home Agentフィールドにホームエージェント200のIPアドレスHA、Care-of Addressフィールドに端末100の無線LAN用インタフェース120に割り当てられたIPアドレスCoA2が指定される。
なお、Registration Requestメッセージの送信元UDPポート番号はUPとする。
ホームエージェント200のネットワークインタフェース210はRegistration Requestメッセージを受信すると、ネットワークスタック201へ出力する。
ネットワークスタック201は、Registration RequestメッセージのトランスポートプロトコルヘッダがUDPであり、かつ送信先ポート番号が434であることから、Registration Requestメッセージがモビリティプロトコルモジュール202宛であることを検知し、このRegistration Requestメッセージをモビリティプロトコルモジュール202へ出力する。
モビリティプロトコルモジュール202は、ネットワークスタック201から受け取ったRegistration Requestメッセージの内容を検査する。
(ステップS103)ホームエージェント200は、ステップS102で受信したRegistration Requestメッセージの内容を受け入れる場合、Registration Replyメッセージを端末100の無線LAN用インタフェース120へ送信する。
モビリティプロトコルモジュール202は、Registration Replyメッセージのデータ部分を生成し、ネットワークスタック201へ出力する。ここで、モビリティプロトコルモジュール202は、Registration ReplyメッセージのCodeフィールドに0、Home Addressフィールドに端末100のIPアドレスHoA、Home Agentフィールドにホームエージェント200のIPアドレスHAを指定する。
ネットワークスタック201は、モビリティプロトコルモジュール202から受け取ったRegistration Replyメッセージのデータ部分に、送信元ポート番号が434であり、送信先ポート番号がUPであるUDPヘッダと、送信先IPアドレスが端末100の無線LAN用インタフェース120のIPアドレスCoA2、送信元IPアドレスがホームエージェント200のIPアドレスHAであるIPヘッダとを付与し、図7に示すようなRegistration Replyメッセージを作成する。
ネットワークスタック201は作成したRegistration Replyメッセージをネットワークインタフェース210へ出力する。ネットワークインタフェース210は、ネットワークスタック201から受け取ったRegistration Replyメッセージを端末100の無線LAN用インタフェース120へ送信する。
(ステップS104)ホームエージェント200が端末100の無線LAN用インタフェース120から送信されたパケットを受信するためのトンネルを新規に設定する。
ホームエージェント200のモビリティプロトコルモジュール202は、Registration RequestメッセージのCare-of Addressフィールドに指定された端末100の無線LAN用インタフェース120のIPアドレスCoA2と、Home Addressフィールドに指定されたIPアドレスHoAと、Home Agentフィールドに指定されたIPアドレスHAの組を、新たなトンネルの設定としてトンネルデバイスモジュール203へ出力する。
トンネルデバイスモジュール203は、モビリティプロトコルモジュール202から受け取った新たなトンネルの設定を記憶部204に格納する。
なお、ホームエージェント200は、この新規トンネルの設定をステップS103の前に実行してもよい。
ホームエージェント200は、新規トンネルの設定前から使用していた、端末100のセルラーネットワーク用インタフェース110から送信されたパケットを受信するためのトンネルの設定を削除せずに保持する。
(ステップS105)端末100は、ホームエージェント200から送信されたRegistration Replyメッセージを無線LAN用インタフェース120で受信すると、無線LAN用インタフェース120からホームエージェント200へパケットを送信するためのトンネルを新規に設定する。
なお、端末100は、ステップS105以前に使用していた、セルラーネットワーク用インタフェース110からホームエージェント200へパケットを送信するためのトンネルの設定を削除せずに保持する。
(ステップS106)端末100は、無線LAN用インタフェース120からパケットを送信し、セルラーネットワーク用インタフェース110からはパケットを送信しない。
無線LAN用インタフェース120から送信されるパケットの構成例を図8に示す。
送信パケットの外側IPヘッダの送信元IPアドレスは無線LAN用インタフェース120のIPアドレスCoA2である。
無線LAN用インタフェース120からパケットを受信したホームエージェント200は、パケットの外側IPヘッダを削除して通信相手機器300へ転送する。具体的には以下のような処理が行われる。
まず、無線LAN用インタフェース120から送信されたパケットをネットワークインタフェース210が受信する。ネットワークインタフェース210は受信したパケットをネットワークスタック201へ出力する。
ネットワークスタック201は、受け取ったパケットがIP-in-IPトンネリングプロトコルでトンネリングされたパケットであることから、このパケットをトンネルデバイスモジュール203へ出力する。
トンネルデバイスモジュール203は、パケットの外側IPヘッダの送信元IPアドレスCoA2を含むトンネルの設定を記憶部204から取得する。
前述のとおり、記憶部204にはステップS104においてIPアドレスCoA2、HoA、及びHAの組がトンネルの設定として記憶されており、トンネルデバイスモジュール203はこの組を取得する。
そして、トンネルデバイスモジュール203は、取得したIPアドレスHoAとパケットの内側IPヘッダの送信元IPアドレスを比較し、一致した場合、外側IPヘッダを削除し、ネットワークスタック201へ出力する。一方、前記の比較でIPアドレスが一致しない場合、トンネルデバイスモジュール203はパケットを破棄する。
次に、ネットワークスタック201は、トンネルデバイスモジュール203から受け取ったパケットの送信先IPアドレスがホームエージェント200に割り当てられたIPアドレスHAではないことから、他の機器へ転送すべきパケットであることを検知し、ネットワークインタフェース210へパケットを出力する。
ネットワークインタフェース210はネットワークスタック201から受け取ったパケットを通信相手機器300へ転送する。
(ステップS107)ホームエージェント200が端末100のセルラーネットワーク用インタフェース110へICMP Echo Requestメッセージ(応答要求メッセージ)を送信する。具体的にはホームエージェント200は以下のような処理を行う。
まず、モビリティプロトコルモジュール202が、ICMP Echo Requestメッセージのデータを作成し、ネットワークスタック201へ出力する。
次に、ネットワークスタック201は、受け取ったデータにICMPヘッダ及びIPヘッダを付与し、図9に示すようなICMP Echo Requestメッセージを作成する。ネットワークスタック201は、ICMPヘッダのICMP typeに8、ICMP codeに0を指定する。
また、ネットワークスタック201は、IPヘッダの送信元IPアドレスにホームエージェント200のIPアドレスHA、送信先IPアドレスに端末100のセルラーネットワーク用インタフェース110のIPアドレスCoA1を指定する。
ネットワークスタック201は作成したICMP Echo Requestメッセージをネットワークインタフェース210へ出力する。ネットワークインタフェース210はこのICMP Echo Requestメッセージを端末100のセルラーネットワーク用インタフェース110へ送信する。
なお、この処理はステップS104の処理の直後に行われる。
(ステップS108)端末100は、ICMP Echo Requestメッセージを受信すると、図10に示すようなICMP Echo Replyメッセージを作成し、セルラーネットワーク用インタフェース110からホームエージェント200へ送信する。
ICMP Echo Replyメッセージは、ステップS105以降にセルラーネットワーク用インタフェース110からホームエージェント200へ送信される。つまり、ICMP Echo Replyメッセージは、ステップS105以前にセルラーネットワーク用インタフェース110からホームエージェント200へ送信された最後のパケットよりも後に、セルラーネットワーク用インタフェース110からホームエージェント200へ送信されることになる。
従って、ホームエージェント200はICMP Echo Replyメッセージの受信後は、端末100のセルラーネットワーク用インタフェース110から送信されたパケットを受信することがないことを検知できる。
(ステップS109)ホームエージェントは、ICMP Echo Replyメッセージの受信に伴い、端末100のセルラーネットワーク用インタフェース110から送信されるパケットを受信するためのトンネルの設定を削除する。具体的には以下のような処理が行われる。
ネットワークインタフェース210は、ICMP Echo Replyメッセージを受信すると、このICMP Echo Replyメッセージをネットワークスタック201へ出力する。
次に、ネットワークスタックは、ICMP Echo Replyメッセージの内容をモビリティプロトコルモジュール202へ出力する。
モビリティプロトコルモジュール202は、ICMP Echo Replyメッセージのデータ部分がICMP Echo Requestメッセージのデータ部分と一致するか否かを検査し、一致しない場合はICMP Echo Replyメッセージを破棄する。
一致する場合、モビリティプロトコルモジュール202は、ICMP Echo Replyメッセージの送信元IPアドレスCoA1が含まれるトンネルの設定を削除するよう、トンネルデバイスモジュール203に通知する。
トンネルデバイスモジュール203は、通知されたIPアドレスCoA1を含むトンネルの設定を記憶部204から削除する。記憶部204には、IPアドレスCoA1、HoA、HAの組がトンネルの設定として記憶されており、この組が記憶部204から削除される。
これにより、ホームエージェント200が端末100以外の機器から、外側IPヘッダの送信元IPアドレスがCoA1で、かつ内側IPヘッダの送信元IPアドレスがHoAである、詐称されたパケットを受信しても、ホームエージェント200はこの詐称されたパケットを破棄できるようになる。
(ステップS110)端末100が、ハンドオーバ前に使用していた、セルラーネットワーク用インタフェース110からホームエージェント200へパケットを送信するためのトンネルの設定を削除する。この処理はステップS108のICMP Echo Replyメッセージの送信後に行われる。
ホームエージェント200は、ハンドオーバ処理直後に、端末100が返信可能なメッセージをハンドオーバ前に使用していたネットワークを介して端末100へ送信し、前記メッセージに対する返信のメッセージを端末から受信した時点を、ハンドオーバ前に使用していたトンネルを削除可能となる時点として検知している。
そのため、端末100が特別なメッセージをホームエージェント200へ送信する機能を搭載していなくても、ホームエージェント200はハンドオーバ前に使用していたトンネルを経由した端末100からの全てのパケットを受信し終えて、前記トンネルが削除可能となる時点を検知することができる。
これにより、ハンドオーバ前に使用していたトンネルを速やかに削除できるため、メモリリソースを効率的に使用することができる。
なお、本実施形態におけるホームエージェント200は、ICMP Echo Requestメッセージの代わりとして、端末100がセルラーネットワーク用インタフェース110から返信可能なメッセージであればどの様なメッセージを送信してもよい。
本実施形態では、端末100およびホームエージェント200はモビリティプロトコルとしてMobile IPv4を搭載しているが、Mobile IPv4の代わりにMobile IPv6を搭載していてもよい。端末100およびホームエージェント200がMobile IPv6を利用する場合、ホームエージェント200はICMP Echo Requestメッセージの代わりに、ICMPv6 Echo Requestメッセージを端末100のセルラーネットワーク用インタフェース110へ送信する。
また、端末100およびホームエージェント200は、IP-in-IPトンネリングプロトコルの代わりにGREトンネルやその他のトンネリングプロトコルを利用してもよい。
(第2の実施形態)図11に本発明の第2の実施形態に係る通信システムの概略構成を示す。端末400はインターネット上の通信相手機器600と通信を行う。端末400はセルラーネットワーク用インタフェース410を備え、セルラー基地局10を介してセルラーネットワークに接続できる。また、端末400は無線LAN用インタフェース420を備え、無線LAN基地局20を介して無線LANに接続できる。
ホームエージェント500は端末400に移動機能を提供する機器である。ホームエージェント500は、IP-in-IPトンネリングプロトコルを利用して端末400との間にセルラーネットワークまたは無線LAN経由のトンネルを確立し、そのトンネルを利用して通信相手機器600と端末400間の通信パケットを中継する。
上記第1の実施形態と同様に、端末400のセルラーネットワーク用インタフェース410、無線LAN用インタフェース420、ホームエージェント500、通信相手機器600に割り当てられるIPアドレスは、それぞれCoA1、CoA2、HA、CNとする。また、端末400にはIPアドレスHoAが割り当てられるとする。
図12に端末400の概略構成を示す。端末400はネットワークスタック401、モビリティプロトコルモジュール402、アプリケーションモジュール403、トンネルデバイスモジュール404、ハンドオーバトリガモジュール405、記憶部406、セルラーネットワーク用インタフェース410、及び無線LAN用インタフェース420を有する。
セルラーネットワーク用インタフェース410は、例えばCDMAや、HSDPA、PHSといったセルラー系の通信プロトコルに対応したネットワークインタフェースであり、受信したパケットをネットワークスタック401へ出力する。セルラーネットワーク用インタフェース410はまた、ネットワークスタック401から受け取ったパケットを送信する。
無線LAN用インタフェース420は、例えば802.11bや、802.11g, 802.11a, 802.11nといった802.11系のプロトコルに対応したネットワークインタフェースであり、受信したパケットをネットワークスタックへ出力する。無線LAN用インタフェース420はまた、ネットワークスタック401から受け取ったパケットを送信する。
ネットワークスタック401は、TCP、UDP、SCTP、DCCP、ICMPなどのトランスポートプロトコルやIPv4、IPv6などのネットワークプロトコル処理を行うものであり、アプリケーションモジュール403から受け取ったアプリケーションデータにトランスポートヘッダとIPヘッダを付与し、トンネルデバイスモジュール404へ出力する。
ネットワークスタック401はまた、トンネルデバイスモジュール404から受信したIP-in-IPトンネリングプロトコルでトンネリングされたパケットを、セルラーネットワーク用インタフェース410または無線LAN用インタフェース420へ出力する。
ネットワークスタック401はまた、セルラーネットワーク用インタフェース410又は無線LAN用インタフェース420で受信したRegistration Replyメッセージの内容をモビリティプロトコルモジュール402へ出力する。
ネットワークスタック401はまた、モビリティプロトコルモジュール402から出力されたRegistration RequestメッセージにUDPヘッダとIPヘッダを付与し、セルラーネットワーク用インタフェース410又は無線LANインタフェース420へ出力する。
モビリティプロトコルモジュール402は、Mobile IPv4のメッセージを作成または処理するモジュールであり、Registration Requestメッセージを生成してネットワークスタック401へ出力する。また、モビリティプロトコルモジュール402はネットワークスタック401からRegistration Replyメッセージを受信して処理する。
モビリティプロトコルモジュール402はまた、ハンドオーバ前に使用していたトンネルの設定を用いてトンネルデバイスモジュール404が作成した最後のパケットの内容を、トンネルデバイスモジュール404から取得する。
モビリティプロトコルモジュール402はまた、前記パケットの特徴を示す通知メッセージを生成し、ネットワークスタック401へ出力する。
モビリティプロトコルモジュール402はまた、トンネルデバイスモジュール404にトンネルの設定又は削除を通知する。
アプリケーションモジュール403は、アプリケーションデータを生成し、ネットワークスタック401にアプリケーションデータを出力する。
トンネルデバイスモジュール404は、ネットワークスタック401から受け取ったパケットにIPヘッダを付与してネットワークスタック401へ出力する。また、トンネルデバイスモジュール403は、最後にIPヘッダを付与してネットワークスタック401へ出力したパケットの内容を記憶部406に格納する。
トンネルデバイスモジュール404は、以前記憶部406に格納していたパケットのうち送信元IPアドレスと送信先IPアドレスが一致するパケットの内容を削除する。
トンネルデバイスモジュール404はまた、記憶部406に格納したパケットの内容をモビリティプロトコルモジュール402へ出力する。
トンネルデバイスモジュール404はまた、モビリティプロトコルモジュール402から通知されたトンネルの設定を記憶部406に格納し、モビリティプロトコルモジュール402から通知されたトンネルの設定を記憶部406から削除する。
ハンドオーバトリガモジュール405は、ハンドオーバを開始する契機を決定するモジュールであり、セルラーネットワーク用インタフェース410または無線LAN用インタフェース420からセルラーネットワークや無線LANにおける通信品質に関する情報を取得し、前記情報やその他の情報からハンドオーバを開始する契機を決定し、モビリティモジュール402へ通知する。
記憶部406は、トンネルの設定を記憶する。記憶部406はまた、トンネルデバイスモジュール404が作成した最後のパケットの内容を記憶する。
図13にホームエージェント500の概略構成を示す。ホームエージェント500は、ネットワークスタック501、モビリティプロトコルモジュール502、トンネルデバイスモジュール503、パケット監視モジュール504、記憶部505、及びネットワークインタフェース510を有する。
ネットワークインタフェース510は、例えばEthernet等の通信プロトコルに対応したネットワークインタフェースであり、受信したパケットをネットワークスタック501へ出力する。ネットワークインタフェース510はまた、ネットワークスタック501から受け取ったパケットを端末400又は通信相手機器600へ送信する。
ネットワークスタック501は、TCP、UDP、SCTP、DCCP、ICMPなどのトランスポートプロトコルやIPv4、IPv6などのネットワークプロトコル処理を行う。
ネットワークスタック501はまた、ネットワークインタフェース510から受信したパケットをパケット監視モジュール504へ出力する。
ネットワークスタック501はまた、パケット監視モジュール504から受け取ったパケットのうち、トンネリングされたパケットをトンネルデバイスモジュール503へ出力する。
ネットワークスタック501はまた、外側IPヘッダが削除されたパケットをネットワークインタフェース510へ出力する。
ネットワークスタック501はまた、ネットワークインタフェース510から受け取ったRegistration Requestメッセージの内容をモビリティプロトコルモジュール502へ出力する。
ネットワークスタック501はまた、モビリティプロトコルモジュール502から出力されたRegistration ReplyメッセージにUDPヘッダ及びIPヘッダを付与し、ネットワークインタフェース510へ出力する。
ネットワークスタック501はまた、ネットワークインタフェース510から受け取った通知メッセージの内容をモビリティプロトコルモジュール502へ出力する。
モビリティプロトコルモジュール502は、Mobile IPv4のメッセージを作成または処理するモジュールであり、ネットワークスタック501からRegistration Requestメッセージを受信して処理し、Registration Replyメッセージを作成してネットワークスタック501へ出力する。
モビリティプロトコルモジュール502はまた、トンネルデバイスモジュール503にトンネルの設定や削除を通知するものである。
モビリティプロトコルモジュール502はまた、通知メッセージをネットワークスタック501から受け取り、前記通知メッセージに記されたパケットの特徴をパケット監視モジュール504へ通知し、パケット監視モジュールから前記特徴に該当するパケットを検知したことを示す通知を受信する。
トンネルデバイスモジュール503は、モビリティプロトコルモジュール502から受け取ったトンネルの設定を記憶部505に格納する。
トンネルデバイスモジュール503はまた、モビリティプロトコルモジュール502からトンネルの設定を削除する通知を受けた場合に記憶部505から該当するトンネルの設定を削除する。
トンネルデバイスモジュール503はまた、ネットワークスタック501から受け取ったトンネリングされたパケットが、記憶部505に格納されたトンネルの設定に従っているかを検査し、外側IPヘッダを削除してネットワークスタック501へ出力する。
パケット監視モジュール504は、モビリティプロトコルモジュール502から受け取ったパケットの特徴を示すデータを記憶部505に格納する。
パケット監視モジュール504はまた、ネットワークスタック501から受け取ったパケットが、記憶部505に格納されたパケットの特徴に該当するか否かを判定し、該当した場合はモビリティプロトコルモジュール502に通知し、前記判定後に前記パケットをネットワークスタック501へ出力する。
パケット監視モジュール504は、トンネルデバイスモジュール503と同一のモジュールに実装されてもよい。
記憶部505は、トンネルの設定を記憶する。記憶部505はまた、パケット監視モジュール504から出力された、パケットの特徴を示すデータを記憶する。
このような通信システムにおけるハンドオーバ時の処理フローを図14を用いて説明する。本実施形態では使用するネットワークをセルラーネットワークから無線LANへ切り替える場合について説明する。
(ステップS1400)端末400及びホームエージェント500は、セルラーネットワークを経由したトンネルを確立しており、端末400はホームエージェント500を介してパケットを通信相手機器600へ送信している。
端末400では具体的には以下のような処理が行われている。ここで、端末400の記憶部406には、セルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1と、ホームエージェント500のIPアドレスHAの組が、一つのトンネルの設定として記憶されている。
アプリケーションモジュール403は、送信データを作成し、ネットワークスタック401へ出力する。
ネットワークスタック401はアプリケーションモジュール403から受け取った送信データにトランスポートヘッダとIPヘッダを付与し、トンネルデバイスモジュール404へ出力する。
トンネルデバイスモジュール404はネットワークスタック401から受け取ったパケットに外側IPヘッダを付与し、図4に示すようなパケットを生成する。トンネルデバイスモジュール404は、この生成したパケットの内容を記憶部406に格納する。
そして、トンネルデバイスモジュール404は、パケットの外側IPヘッダの送信元IPアドレスと送信先IPアドレスの組が同一である、ステップS1400以前に記憶部406に格納されたパケットの内容を削除する。
続いて、トンネルデバイスモジュール404は、生成したパケットをネットワークスタック401へ出力する。
ネットワークスタック401はトンネルデバイスモジュール404から受け取ったトンネリングされたパケットをセルラーネットワーク用インタフェース410へ出力する。セルラーネットワーク用インタフェース410は、ネットワークスタック401から受け取ったパケットをホームエージェント500へ送信する。
ホームエージェント500では具体的に以下のような処理が行われる。ここで、ホームエージェント500の記憶部505には、端末400のセルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1と、端末400のIPアドレスHoAと、ホームエージェント500のIPアドレスHAとの組が、一つのトンネルの設定として記憶されている。
ネットワークインタフェース510は、端末400から、図4に示すような、IP-in-IPトンネリングプロトコルでトンネリングされたパケットを受信すると、この受信したパケットをネットワークスタック501へ出力する。
ネットワークスタック501は、ネットワークインタフェース510から受け取ったパケットをパケット監視モジュール504へ出力する。
パケット監視モジュール504は、記憶部505からパケットの特徴を示すデータを取得し、そのデータに、ネットワークスタック501から受け取ったパケットが該当するか否かを判定する。ステップS1400では、記憶部505にパケットの特徴を示すデータは何も格納されていないため、該当しないと判定される。
該当しないと判定した場合、パケット監視モジュール504はパケットをネットワークスタック501へ出力する。なお、該当すると判定した場合の処理についてはステップS1508にて説明する。
ネットワークスタック501は、パケット監視モジュール504から受け取ったパケットがIP-in-IPトンネリングでトンネリングされたパケットであることから、このパケットをトンネルデバイスモジュール503へ出力する。
トンネルデバイスモジュール503は、外側IPヘッダの送信元IPアドレスであるIPアドレスCoA1を含むトンネルの設定を記憶部505から取得する。前述のとおり、記憶部にはIPアドレスCoA1、HoA、及びHAの組がトンネルの設定として記憶されているため、トンネルデバイスモジュール503はこの組を取得する。
トンネルデバイスモジュール503は、取得したIPアドレスHoAとパケットの内側IPヘッダの送信元IPアドレスを比較し、一致した場合、パケットの外側IPヘッダを削除して図5に示すようなパケットを生成し、ネットワークスタック501へ出力する。一方、前記の比較でIPアドレスが一致しない場合、トンネルデバイスモジュール503はパケットを破棄する。
トンネルデバイスモジュール503からパケットを受け取ったネットワークスタック501は、パケットの送信先IPアドレスがホームエージェント500に割り当てられたIPアドレスHAではないことから、他の機器へ転送すべきパケットであることを検知し、このパケットをネットワークインタフェース510へ出力する。
ネットワークインタフェース510は、ネットワークスタック501から受け取ったパケットを通信相手機器600へ送信する。
(ステップS1401)端末400が使用するネットワークをセルラーネットワークから無線LANへ切り替えることを決定する。
端末400のハンドオーバトリガモジュール405は、常時セルラーネットワーク用インタフェース410または無線LAN用インタフェース420からセルラーネットワークや無線LANにおける通信品質に関する情報を取得している。
そして、ハンドオーバトリガモジュール405は、前記情報やその他の情報が一定の条件を満たすと、ハンドオーバを開始することを決定し、モビリティプロトコルモジュール402に通知する。
なお、ハンドオーバトリガモジュール405がハンドオーバの開始を決定するアルゴリズムはどのようなものであってもよい。一例として、無線LAN基地局20から受信できる電波の強度が十分強くなったことをハンドオーバの契機とする方法がある。
(ステップS1402)端末400がホームエージェント500へRegistration Requestメッセージを送信する。
端末400は具体的には以下のような処理を行う。端末400のモビリティプロトコルモジュール402は、Registration Requestメッセージのデータ部分を生成する。
モビリティプロトコルモジュール402は、生成したRegistration Requestメッセージのデータ部分をネットワークスタック401へ出力する。
ネットワークスタック401は、モビリティプロトコルモジュール402から受け取ったRegistration Requestメッセージのデータ部分に、宛先ポート番号が434であるUDPヘッダと、送信先IPアドレスがホームエージェント500のIPアドレスHAであり、かつ送信元IPアドレスが端末400の無線LAN用インタフェース420のIPアドレスCOA2であるIPIPヘッダを付与する。なお、ネットワークスタックがUDPヘッダの送信元ポート番号に指定した値をUPとする。
これにより、図6に示すような上記第1の実施形態と同様のRegistration Requestメッセージが作成される。
ネットワークスタック401はRegistration Requestメッセージを無線LAN用インタフェース420へ出力する。無線LAN用インタフェース420は、ネットワークスタック401から受け取ったRegistration Requestメッセージをホームエージェント500へ送信する。
端末400から送信されたRegistration Requestメッセージをホームエージェント500が受信すると、ホームエージェント500は以下のような処理を行う。
ホームエージェント500のネットワークインタフェース510が、Registration Requestメッセージを受信し、ネットワークスタック501へ出力する。
ネットワークスタック501は、Registration RequestメッセージのトランスポートプロトコルヘッダがUDPであり、かつ送信先ポート番号が434であることから、Registration Requestメッセージがモビリティプロトコルモジュール502宛であることを検知し、Registration Requestメッセージをモビリティプロトコルモジュール502へ出力する。
モビリティプロトコルモジュール502は、ネットワークスタック501から受け取ったRegistration Requestメッセージの内容を検査する。
(ステップS1403)ホームエージェント500は、ステップS1402で受信したRegistration Requestメッセージの内容を受け入れる場合、Registration Replyメッセージを無線LAN用インタフェース420へ送信する。
ホームエージェント500は具体的には以下のような処理を行う。まず、ホームエージェント500のモビリティプロトコルモジュール502は、Registration Replyメッセージのデータ部分を生成し、ネットワークスタック501へ出力する。
ネットワークスタック501は、Registration Replyメッセージのデータ部分に、送信元ポート番号が434であり、送信先ポート番号がUPであるUDPヘッダと、送信先IPアドレスが端末の無線LAN用インタフェース420のIPアドレスCoA2、送信元IPアドレスがホームエージェント500のIPアドレスHAであるIPヘッダとを付与し、図7に示すようなRegistration Replyメッセージを作成する。
ネットワークスタック501は、生成したRegistration Replyメッセージをネットワークインタフェース510へ出力する。ネットワークインタフェース510は、ネットワークスタック501から受け取ったRegistration Replyメッセージを無線LAN用インタフェース420へ送信する。
(ステップS1404)ホームエージェント500は、Registration Requestメッセージの内容を受け入れる場合、無線LANを介したトンネルを新規に設定する。
すなわち、ホームエージェント500のモビリティプロトコルモジュール502は、Registration RequestメッセージのCare-of Addressフィールドに指定された端末400の無線LAN用インタフェース420のIPアドレスCoA2と、Home Agentフィールドに指定されたホームエージェントのIPアドレスHAと、Home Addressフィールドに指定されたIPアドレスHoAとの組を、新たなトンネルの設定としてトンネルデバイスモジュール503へ出力する。
トンネルデバイスモジュール503は、モビリティプロトコルモジュール502から受け取ったトンネルの設定を記憶部505に格納する。
なお、ホームエージェント500は、このトンネルの新規設定をRegistration Replyメッセージの送信(ステップS1403)前に実行してもよい。
ホームエージェント500は、ステップS1404以前に使用していた、端末400のセルラーネットワーク用インタフェース410からパケットを受信するためのトンネルの設定を削除せずに保持する。
(ステップS1405)端末400はRegistration Replyメッセージの受信に伴い、無線LANを介したトンネルを新規に設定する。
端末400は具体的に以下のような処理を行う。まず、無線LAN用インタフェース420は、受信したRegistration Replyメッセージをネットワークスタック401へ出力する。
ネットワークスタック401は、Registration ReplyメッセージのトランスポートプロトコルヘッダがUDPであり、かつ送信先ポート番号がUPであることから、Registration Replyメッセージがモビリティプロトコルモジュール402宛であることを検知し、Registration Replyメッセージをモビリティプロトコルモジュール402へ出力する。
モビリティプロトコルモジュール402は、Registration ReplyメッセージのCodeフィールドが0であることから、ホームエージェント500がRegistration Requestメッセージの内容を受け入れたことを検知する。
そして、モビリティプロトコルモジュール402は、無線LAN用インタフェース420のIPアドレスCoA2及びホームエージェント500のIPアドレスHAの組を新たなトンネルの設定としてトンネルデバイスモジュール404へ出力する。
トンネルデバイスモジュール404は、モビリティプロトコルモジュールから受け取ったトンネルの設定を記憶部406に格納する。
なお、端末400はステップS1405以前に使用していた、セルラーネットワーク用インタフェース410からパケットを送受信するためのトンネルの設定を削除せずに、保持する。
(ステップS1406)端末400の無線LAN用インタフェース420から無線LANを介してホームエージェント500へ通知メッセージが送信される。
まず、端末400のモビリティプロトコルモジュール402が、トンネルデバイスモジュール404に、セルラーネットワーク用インタフェース410のIPアドレスCoA1およびホームエージェント500のIPアドレスHAを通知する。
トンネルデバイスモジュール404は、送信元IPアドレスがCoA1であり、かつ送信先IPアドレスがホームエージェント500のIPアドレスHAであるパケットを記憶部406から取得する。
ステップS1400で述べた通り、トンネルデバイスモジュール404は、外側IPヘッダを付与したパケットをネットワークスタック401へ出力するたびに、前記パケットの内容を記憶部406に格納し、以前格納していた、送信元IPアドレス及び送信先IPアドレスが同じであるパケットを削除する。
つまり、常に最新のトンネリングされた送信パケットが記憶406部に格納されている。
また、ステップS1405以降、端末400は通信相手機器600へホームエージェント500を介してパケットを送信する場合、セルラーネットワーク用インタフェース410を使用せず、無線LAN用インタフェース420を使用する。
つまり、ステップS1406において記憶部406に格納された、送信元IPアドレスがCoA1であるパケットは、端末400がセルラーネットワーク用インタフェース410から送信した、最後のトンネリングされたパケットである。
トンネルデバイスモジュール404は、セルラーネットワーク用インタフェース410から送信された最後のトンネリングされたパケットを記憶部406から取得し、モビリティプロトコルモジュールへ出力する。
モビリティプロトコルモジュール402は、トンネルデバイスモジュール404から受け取ったパケットの特徴を表すデータを生成し、ネットワークスタック401へ出力する。
前記データの具体的な構成は、例えば図15に示す通知メッセージのデータ部分である。図15に示す例では、データ部分のcsumフィールドにパケットのIPヘッダ中のチェックサムフィールドと同じ値が指定される。
なお、チェックサムに加え、セルラーネットワーク用インタフェース410に付与されたIPアドレスCoA1や、端末400のIPアドレスHoAをデータ部分に指定してもよい。また、チェックサムの代わりにパケット自体を通知メッセージのデータ部分に指定してもよいし、その他パケットを特定もしくはほぼ特定可能なデータを指定してもよい。
次に、ネットワークスタック401は、モビリティプロトコルモジュール402から受け取ったデータに、送信元ポート番号がUPであり、送信先ポート番号が434であるUDPヘッダを付与する。
また、ネットワークスタック401は、送信元IPアドレスが無線LAN用インタフェース420のIPアドレスCoA2であり、かつ送信先IPアドレスがホームエージェント500のIPアドレスHAであるIPヘッダを付与することで、図15に示すような通知メッセージを作成する。
ネットワークスタック401は、通知メッセージを無線LAN用インタフェース420へ出力する。無線LAN用インタフェース420は受け取った通知メッセージをホームエージェント500へ送信する。
通知メッセージは、無線LANを経由してホームエージェント500に受信される。
なお、一般に、無線LANにおけるネットワーク遅延は、セルラーネットワークにおけるネットワーク遅延よりも小さい。そのため、通知メッセージは、セルラーネットワークを介して送信された最後のトンネリングされたパケットよりも先にホームエージェント500に到着する。
ホームエージェント500のネットワークインタフェース510は、通知メッセージを受信すると、ネットワークスタック501へ出力する。
ネットワークスタック501は、受け取った通知メッセージの送信先ポート番号が434であることから、通知メッセージがモビリティプロトコルモジュール502宛であることを検知し、通知メッセージの内容をモビリティプロトコルモジュール502へ出力する。
モビリティプロトコルモジュール502は、通知メッセージに記されたデータ部分を、検知対象のパケットの特徴を表すデータとしてパケット監視モジュール504へ出力する。例えば、前記データが端末400からセルラーネットワークを介して送信された最後のトンネリングされたパケットのIPヘッダの中のチェックサムフィールドの値の場合は、前記チェックサムの値をパケット監視モジュール504へ出力する。
パケット監視モジュール504は前記チェックサムの値を記憶部505に格納する。
(ステップS1407)ホームエージェント500は、端末400の無線LAN用インタフェース420から無線LANを介してトンネリングされたパケットを受信するか、または端末400のセルラーネットワーク用インタフェース410からセルラーネットワークを介してトンネリングされたパケットを受信すると、受信したパケットの外側IPヘッダを削除したパケットを通信相手機器600へ転送する。
また、ホームエージェントのパケット監視モジュール504が、記憶部505から検知対象のパケットの特徴を示すデータを取得し、セルラーネットワークを介して受信したパケットがこのデータに該当するか否か判定する。
(ステップS1408)パケット監視モジュール504は、セルラーネットワークを介して受信したパケットが、記憶部505から取得した検知対象のパケットの特徴を示すデータに該当すると判定した場合、該当するパケットを受信したことをモビリティプロトコルモジュール502に通知する。
これにより、モビリティプロトコルモジュール502は、ハンドオーバ前に使用していたセルラーネットワーク経由で最後のトンネリングされたパケットを受信したことを検知することができる。
(ステップS1409)端末400がハンドオーバ前に使用していたトンネルの設定を削除する。
端末400のモビリティプロトコルモジュール402は、セルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1とホームエージェント500のIPアドレスHAとの組をトンネルデバイスモジュール404に通知する。
そして、トンネルデバイスモジュール404は、記憶部406からIPアドレスCoA1及びHAの組で表されるトンネルの設定を削除する。
この処理は、端末400が無線LANを介したトンネルを新規に設定(ステップS1405)した後の任意のタイミングで行われる。
(ステップS1410)ホームエージェント500は、ハンドオーバ前のトンネルの設定を削除する。
すなわち、ホームエージェント500のモビリティプロトコルモジュール502は、端末400のセルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1と、端末400のIPアドレスHoAと、ホームエージェント500のIPアドレスHAの組をトンネルデバイスモジュール503に通知する。
そして、トンネルデバイスモジュール503が、記憶部505からIPアドレスCoA1、HoA、及びHAの組で表されるトンネルの設定を削除する。
ホームエージェント500はステップS1410を実行することにより、図4に示すようなパケットを受信した場合、ホームエージェント500のトンネルデバイスモジュール503は、前記パケットの外側IPヘッダの送信元IPアドレスと送信先IPアドレスに一致するトンネルの設定が、記憶部505に存在しないことから、前記パケットが不正なパケットであると判断し、破棄できるようになる。
このように、本実施形態に係る通信システムによれば、ハンドオーバ前に使用していたネットワークを介して端末がホームエージェントへ送信した最後のトンネリングされたパケットの内容を示す通知メッセージを、ハンドオーバ後に使用するネットワークを介して、端末がホームエージェントへ送信し、前記通知メッセージを受信したホームエージェントが、前記通知メッセージの示すパケットの内容に該当するパケットを受信した時点を、ハンドオーバ前に使用していたトンネルを削除可能となる時点として検知可能となる。
また、端末は前記通知メッセージをハンドオーバ後に使用するネットワーク経由で送信するため、ハンドオーバ前に使用していたネットワーク上でパケットロスが発生しても、ホームエージェントはハンドオーバ前に使用していたトンネルを削除可能となる時点を検知可能となる。
このように、ハンドオーバ前に使用していたトンネルを速やかに削除できるため、メモリリソースを効率的に使用することができる。
上記第2の実施形態の一例においては、ホームエージェント500は、ステップS1400、ステップS1407、ステップS1408において送信先IPアドレスがHoAであるパケットを受信し、前記パケットをトンネリングしたパケットを端末400に転送してもよい。
また、上記第2の実施形態の一例においては、端末400およびホームエージェント500はIP-in-IPトンネリングプロトコルの代わりにGREトンネルやESP、AHといったシーケンスナンバーフィールドをプロトコルヘッダにもつプロトコルを利用し、かつIPヘッダのチェックサムフィールドの値の代わりに前記シーケンスナンバーフィールドの値を利用してもよい。
また、ホームエージェント500は前記シーケンスナンバーフィールドの値よりも小さい値のシーケンスナンバーフィールド値をもつパケットを全て受信した時点をハンドオーバ前に使用していたトンネルを削除可能となる時点として検知してもよい。
この場合、端末400は、ハンドオーバ前に使用していたネットワーク上で、パケットの転送順が入れ替わっても、ホームエージェント500がハンドオーバ前に使用していたトンネルを経由して端末からの全てのパケットを受信し終えて前記トンネルを削除可能となる時点を検知可能となる。
また、上記第2の実施形態の一例においては、Mobile IPv4をモビリティプロトコルとした場合の例を説明したが、モビリティプロトコルがMobile IPv6 であっても、MOBIKEであっても、その他のプロトコルであってもよい。
(第3の実施形態)本発明の第3の実施形態に係る通信システムは図11に示す上記第2の実施形態に係る通信システムと同様であるため、説明を省略する。
また、本実施形態に係る端末400は図12に示す上記第2の実施形態に係る端末と同様の構成であるため、説明を省略する。但し、モビリティプロトコルモジュール402及びトンネルデバイスモジュール404に搭載される機能は上記第2の実施形態と異なる。
モビリティプロトコルモジュール402は、Mobile IPv4のメッセージを作成または処理するモジュールであり、Registration Requestメッセージを生成してネットワークスタック401へ出力し、また、ネットワークスタック401からRegistration Replyメッセージを受信して処理する。
モビリティプロトコルモジュール402はまた、トンネルデバイスモジュール404にトンネルの設定や削除を通知する。
モビリティプロトコルモジュール402は、ハンドオーバ前に使用していたトンネルの設定を用いてトンネルデバイスモジュール404が作成した最後のパケットの内容を、トンネルデバイスモジュール404から取得し、前記パケットの特徴を示す通知メッセージを生成し、ネットワークスタック401へ出力するという機能を搭載する必要がない。
トンネルデバイスモジュール404は、ネットワークスタック401から受け取ったパケットに記憶部406に格納されたトンネルの設定に従った外側IPヘッダを付与してネットワークスタック401へ出力する。
トンネルデバイスモジュール404はまた、モビリティプロトコルモジュール402から通知されたトンネルの設定を記憶部406に格納し、モビリティプロトコルモジュール402から通知されたトンネルの設定を記憶部406から削除する。
トンネルデバイスモジュール404は、最後に外側IPヘッダを付与しネットワークスタック401へ出力したパケットの内容を記憶部406に格納し、以前記憶部406に格納していたパケットのうち送信元IPアドレスと送信先IPアドレスが一致するパケットの内容を削除し、記憶部406に格納したパケットの内容をモビリティプロトコルモジュール402へ出力する機能を搭載しなくてもよい。
本実施形態に係るホームエージェント500は図13に示す上記第2の実施形態に係るホームエージェントと同様の構成であるため、説明を省略する。但し、モビリティプロトコルモジュール502、トンネルデバイスモジュール503、及びパケット監視モジュール504に搭載される機能は上記第2の実施形態と異なる。
モビリティプロトコルモジュール502は、Mobile IPv4のメッセージを作成または処理するモジュールであり、ネットワークスタック501からRegistration Requestメッセージを受信して処理し、またRegistration Replyメッセージを生成してネットワークスタック501へ出力する。
モビリティプロトコルモジュール502はまた、トンネルデバイスモジュール503にトンネルの設定や削除を通知する。
モビリティプロトコルモジュール502はまた、ハンドオーバ後に使用するネットワーク経由で端末400から受信した最初のパケットのトンネリングプロトコルヘッダに指定されたシーケンスナンバーをパケット監視モジュール504から受信する。
モビリティプロトコルモジュール502はまた、前記シーケンスナンバーから1を引いた値、および端末400がハンドオーバ前に使用していたネットワークインタフェースのIPアドレスをパケット監視モジュール504へ出力する。
モビリティプロトコルモジュール502は、通知メッセージをネットワークスタック501から受信し、前記通知メッセージに記されたパケットの特徴をパケット監視モジュール504に通知する機能を搭載しなくてもよい。
トンネルデバイスモジュール503は、モビリティプロトコルモジュール502から受け取ったトンネルの設定を記憶部505に格納する。
トンネルデバイスモジュール503はまた、モビリティプロトコルモジュール502からトンネルの設定を削除する通知を受けた場合に記憶部505から該当するトンネルの設定を削除する。
トンネルデバイスモジュール503はまた、ネットワークスタック501から渡された、トンネリングされたパケットが、記憶部に格納されたトンネルの設定に従っているか否かを検査し、外側IPヘッダおよびトンネリングプロトコルヘッダを削除してネットワークスタック501へ出力する。
パケット監視モジュール504は、モビリティプロトコルモジュール502から渡されたプロトコル番号とIPアドレスの組を記憶部505に格納する。
パケット監視モジュール504はまた、モビリティプロトコルモジュール502から前記の組を削除するよう通知を受けたときに、前記の組を記憶部505から削除する。
パケット監視モジュール504はまた、前記の組のプロトコル番号に該当するトランスポートプロトコルヘッダを含み、かつ前記の組のIPアドレスが送信元IPアドレスと一致するパケットを検知したときに、モビリティプロトコルモジュール502へ通知する。
パケット監視モジュール504はまた、ハンドオーバ後にホームエージェント500が使用するネットワークを介して端末400から最初に受信したパケットのトンネリングプロトコルヘッダに含まれるシーケンスナンバーを、モビリティプロトコルモジュール502へ出力する。
パケット監視モジュール504はまた、モビリティプロトコルモジュール502から受け取ったシーケンスナンバーを記憶部505に格納する。
パケット監視モジュール504はまた、ネットワークスタック501から受け取ったパケットのトンネリングプロトコルヘッダに含まれるシーケンスナンバーが、記憶部505に格納されたシーケンスナンバーに一致するか否かを判定し、一致した場合はモビリティプロトコルモジュール502に通知し、前記の判定後前記パケットをネットワークスタック501へ出力する。
このような通信システムにおけるハンドオーバ時の処理フローを図16を用いて説明する。本実施形態では使用するネットワークをセルラーネットワークから無線LANへ切り替える場合について説明する。また、端末400とホームエージェント500はトンネリングプロトコルとしてGRE(Generic Routing Encapsulation)を使用するものとする。
(ステップS1600)端末400とホームエージェント500はセルラーネットワークを介してトンネルを確立済みであり、端末400はホームエージェント500を介してパケットを通信相手機器600へ送信している。
端末400は以下のような処理を行っている。ここで、端末400の記憶部406には、セルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1及びホームエージェント500のIPアドレスHAの組が、1つのトンネルの設定として記憶されている。
端末400のアプリケーションモジュール403は、送信データを生成し、ネットワークスタック401へ出力する。
ネットワークスタック401はアプリケーションモジュール403から受け取った送信データにトランスポートヘッダとIPヘッダを付与してパケットを作成し、トンネルデバイスモジュール404へ出力する。
トンネルデバイスモジュール404は、記憶部406からIPアドレスCoA1およびIPアドレスHAの組をトンネルの設定として取得し、取得したトンネルの設定に従って
Protocol typeフィールドが0800であるGREヘッダおよび外側IPヘッダを付与し、図17に示すようなパケットを作成する。
但し、GREヘッダのシーケンスナンバーフィールド(図示せず)には、直前にトンネリングして送信した、ホームエージェント500宛のパケットのGREヘッダ中のシーケンスナンバーフィールドの値に1を足した値を指定する。
直前に送信したパケット中のシーケンスナンバーフィールドの値が16進数で0xffffffffの場合は、GREヘッダのシーケンスナンバーフィールドに1を指定する。
そして、トンネルデバイスモジュール404は、パケットをネットワークスタック401へ出力する。
ネットワークスタック401はトンネルデバイスモジュール404から受け取ったトンネリングされたパケットをセルラーネットワーク用インタフェース410へ出力する。セルラーネットワーク用インタフェース410は、ネットワークスタック401から受け取ったパケットをホームエージェント500へ送信する。
端末400から送信されたパケットを受信したホームエージェント500は以下のような処理を行う。ここで、ホームエージェント500の記憶部505には、端末400のセルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1、端末400のIPアドレスHoA、及びホームエージェント500のIPアドレスHAの組が、1つのトンネルの設定として記憶されている。
ホームエージェント500のネットワークインタフェース510は、端末400から図17に示すようなパケットを受信すると、受信したパケットをネットワークスタック501へ出力する。
ネットワークスタック501は、パケットをパケット監視モジュール504へ出力する。
パケット監視モジュール504は、記憶部505からパケットの特徴を示すデータを
取得し、そのデータにパケットが該当するか否かを判定する。ステップS1600では、記憶部505にパケットの特徴を示すデータは何も格納されていないため、該当しないという判定結果になる。
該当しない場合、パケット監視モジュール504はパケットをネットワークスタック501へ出力する。該当するという判定結果の場合の処理は、ステップS1606及びS1607で説明する。
ネットワークスタック501は、パケット監視モジュール504から受け取ったパケットがGREでトンネリングされたパケットであることから、パケットをトンネルデバイスモジュール503へ出力する。
トンネルデバイスモジュール503は、記憶部505からIPアドレスCoA1を含むトンネルの設定を取得する。前述のとおり、記憶部505にはIPアドレスCoA1及びIPアドレスHoAの組がトンネルの設定として記憶されているため、トンネルデバイスモジュール503はIPアドレスHoAを取得する。
トンネルデバイスモジュールは、取得したIPアドレスHoAとパケットの内側IPヘッダの送信元IPアドレスを比較し、一致した場合、パケットの外側IPヘッダおよびGREヘッダを削除し、図5に示すようなパケットを作成し、ネットワークスタック501へ出力する。
前記の比較でアドレスが一致しない場合、トンネルデバイスモジュール503はパケットを破棄する。
トンネルデバイスモジュール503からパケットを受信したネットワークスタック501は、パケットの送信先IPアドレスがホームエージェント500に割り当てられたIPアドレスHAではないことから他の機器へ転送すべきパケットであることを検知し、パケットをネットワークインタフェース510へ出力する。
ネットワークインタフェース510は、受け取ったパケットを通信相手機器600へ送信する。
(ステップS1601)端末400が使用するネットワークをセルラーネットワークから無線LANへ切り替えることを決定する。
ハンドオーバトリガモジュール405は、常時セルラーネットワーク用インタフェース410または無線LAN用インタフェース420からセルラーネットワークや無線LANにおける通信品質に関する情報を取得している。
そして、ハンドオーバトリガモジュール405は、前記情報やその他の情報が一定の条件を満たすと、ハンドオーバを開始することを決定し、モビリティプロトコルモジュール402に通知する。
(ステップS1602)端末400の無線LAN用インタフェース420からホームエージェントへRegistration Requestメッセージが送信される。端末400及びホームエージェント500で行われる処理は、上記第2の実施形態におけるステップS1402と同様である。
(ステップS1603)ホームエージェント500から端末400の無線LAN用インタフェース420へRegistration Replyメッセージが送信される。端末400及びホームエージェント500で行われる処理は、上記第2の実施形態におけるステップS1403と同様である。
(ステップS1604)ホームエージェント500がRegistration Requestメッセージの内容を受け入れる場合、ホームエージェントは上記第2の実施形態におけるステップS1404と同様の処理を行うことで、新規のトンネルを設定する。
また、ホームエージェント500のモビリティプロトコルモジュール502は、GREのプロトコル番号47および送信元IPアドレスCoA2の組を、検知対象のパケットの特徴を示すデータとしてパケット監視モジュール504へ出力する。
パケット監視モジュール504は、GREプロトコルのプロトコル番号47及びIPアドレスCoA2を記憶部505に格納する。
(ステップS1605)端末400は、上記第2の実施形態におけるステップS1405と同様の処理を行うことで、新たなトンネルを設定する。
(ステップS1606)端末400は、無線LANとホームエージェント500を介してパケットを通信相手機器600へ送信する。
端末400のアプリケーションモジュール403は、送信データを生成し、ネットワークスタック401へ出力する。
ネットワークスタック401はアプリケーションモジュール403から受け取った送信データにトランスポートヘッダとIPヘッダを付与し、トンネルデバイスモジュール404へ出力する。
トンネルデバイスモジュール404は、記憶部406から無線LAN用インタフェース420のIPアドレスCoA2およびホームエージェント500のIPアドレスHAの組をトンネルの設定として取得する。
そして、トンネルデバイスモジュール404は、取得したトンネルの設定に従い、ネットワークスタック401から受け取ったパケットに、Protocol typeフィールドが0800であるGREヘッダおよび外側IPヘッダを付与し、図18に示すようなパケットを作成する。
但し、GREヘッダのシーケンスナンバーフィールドには、直前にトンネリングしてホームエージェント500へ送信したパケットのGREヘッダ中のシーケンスナンバーフィールドの値に1を足した値を指定する。
直前に送信したパケット中のシーケンスナンバーフィールドの値が16進数で0xffffffffである場合は、GREヘッダのシーケンスナンバーフィールドに1を指定する。
トンネルデバイスモジュール404は、生成したパケットをネットワークスタック401へ出力する。
ネットワークスタック401は、トンネルデバイスモジュール404から受け取った、
トンネリングされたパケットを無線LAN用インタフェース420へ出力する。無線LAN用インタフェース420は、ネットワークスタック401から受け取ったパケットをホームエージェント500へ送信する。
ホームエージェント500は、端末400から無線LAN又はセルラーネットワークを介してトンネリングされたパケットを受信すると、以下のような処理を行う。
ホームエージェント500のネットワークインタフェース510は、受信したパケットをネットワークスタック501へ出力する。
ネットワークスタック501は、前記パケットをパケット監視モジュール504へ出力する。
パケット監視モジュール504は、記憶部505に検知対象のパケットの特徴を示すデータがあれば取得する。ステップS1604において、記憶部505にはGREのプロトコル番号47、及び送信元IPアドレスCoA2の組が前記データとして格納されているため、パケット監視モジュール504は前記の組を取得することになる。
パケット監視モジュール504は、前記パケットが取得したデータに該当するか否かを判定する。
前記パケットがセルラーネットワークを介して端末400から受信したパケットである場合、トランスポートヘッダはGREであるが、送信元IPアドレスがCoA1であるため、取得したデータに該当しない。該当しない場合、パケット監視モジュール504は前記パケットをネットワークスタック501へ出力する。
一方、前記パケットが端末400の無線LAN用インタフェース420から無線LANを介して初めて受信した、トンネリングされたパケットである場合、前記パケットは取得したデータに該当する。該当する場合、パケット監視モジュール504は該当するパケットのGREプロトコルヘッダに含まれるシーケンスナンバーをモビリティプロトコルモジュール502に通知し、ネットワークスタック501へ前記パケットを出力する。
ネットワークスタック501は、パケット監視モジュール503から受け取った前記パケットがGREでトンネリングされたパケットであることから、前記パケットをトンネルデバイスモジュール503へ出力する。
トンネルデバイスモジュール503は、記憶部505から前記パケットの送信元IPアドレスを含むトンネルの設定を取得する。前述のとおり、記憶部505にはIPアドレスCoA1及びIPアドレスHoAの組と、IPアドレスCoA2及びIPアドレスHoAの組が、トンネルの設定として記憶されているため、トンネルデバイスモジュール503はIPアドレスHoAを取得する。
トンネルデバイスモジュールは、取得したIPアドレスHoAと前記パケットの内側IPヘッダの送信元IPアドレスを比較し、一致した場合、外側IPヘッダおよびGREヘッダを削除して、図5に示すようなパケットを作成し、ネットワークスタック501へ出力する。
一方、前記の比較でIPアドレスが一致しない場合、トンネルデバイスモジュール503は前記パケットを破棄する。
トンネルデバイスモジュール503からパケットを受信したネットワークスタック501は、パケットの送信先IPアドレスがホームエージェント500に割り当てられたIPアドレスHAではないことから他の機器へ転送すべきパケットであることを検知し、パケットをネットワークインタフェース510へ出力する。
ネットワークスタック501からパケットを受け取ったネットワークインタフェース510は、パケットを通信相手機器600へ送信する。
なお、一般に、無線LANにおけるネットワーク遅延は、セルラーネットワークにおけるネットワーク遅延よりも小さい。従って、無線LANを介して端末400から受信する最初のトンネリングされたパケットは、セルラーネットワークを介して端末400から受信する最後のトンネリングされたパケットよりも先にホームエージェント500に到着する。
(ステップS1607)ホームエージェント500のモビリティプロトコル502がステップS1606においてシーケンスナンバーを受信すると、ホームエージェント500は以下の処理を行うことで、端末400からセルラーネットワークを介して最後に送信されたパケットの検知を開始する。
ホームエージェント500のモビリティプロトコルモジュール502は、パケット監視モジュール504に、GREプロトコル番号47および送信元IPアドレスCoA2の組を出力することで、ステップS1604において記憶部505に格納したパケットの特徴を表すデータを削除するよう、通知する。
パケット監視モジュール504は、GREプロトコル番号47および送信元IPアドレスCoA2の組を記憶部505から削除する。
モビリティプロトコルモジュール502は、ステップS1606でパケット監視モジュール504から受け取ったシーケンスナンバーから1を引いた値と、GREのプロトコル番号47をパケット監視モジュール504に通知する。
なお、前記シーケンスナンバーの値が1である場合は16進数0xffffffffとGREのプロトコル番号47を通知する。
そして、パケット監視モジュール504は、通知されたシーケンスナンバーとGREのプロトコル番号47の組を検知対象のパケットの特徴として記憶部505に格納する。なお、以降の説明において、パケット監視モジュール504が記憶部505に格納したシーケンスナンバーをSとする。このシーケンスナンバーSはセルラーネットワークを介して端末400からトンネリングされた最後のパケットのシーケンスナンバー(最終シーケンス番号)を示す。
(ステップS1608)セルラーネットワークを介して端末400からトンネリングされた最後のパケットを受信すると、ホームエージェント500は以下の処理を行う。
ホームエージェント500のネットワークインタフェース510は、受信パケットをネットワークスタック501へ出力する。
次に、ネットワークスタック501は、前記パケットをパケット監視モジュール504へ出力する。
次に、パケット監視モジュール504は、記憶部505に検知対象のパケットの特徴を示すデータがあれば取得する。ステップS1607において、記憶部505にはGREのプロトコル番号47と、シーケンスナンバーSが前記データとして格納されている。従って、パケット監視モジュール504は前記の組を取得することになる。
パケット監視モジュール504は、ネットワークスタック501から受け取ったパケットが前記の組に該当するか否かを判定する。このパケットはセルラーネットワークを介して端末400からトンネリングされた最後のパケットであるため、前記の組に該当し、パケット監視モジュール504は該当パケットを検知したことをモビリティプロトコルモジュール502に通知する。
そして、パケット監視モジュール504はこのパケットをネットワークスタック501へ出力する。
ネットワークスタック501は、パケット監視モジュール504から受け取ったパケットがGREでトンネリングされたパケットであることから、パケットをトンネルデバイスモジュール503へ出力する。
トンネルデバイスモジュール503は、記憶部505からパケットの送信元IPアドレスCoA1を含むトンネルの設定を取得する。前述のとおり、記憶部にはIPアドレスCCoA1とIPアドレスHoAの組が、トンネルの設定として記憶されているため、トンネルデバイスモジュール503はIPアドレスHoAを取得する。
トンネルデバイスモジュール503は、取得したIPアドレスHoAと前記パケットの内側IPヘッダの送信元IPアドレスを比較し、一致した場合、前記パケットの外側IPヘッダおよびGREヘッダを削除し、図5に示すようなパケットを作成し、ネットワークスタック501へ出力する。
一方、前記の比較でIPアドレスが一致しない場合、トンネルデバイスモジュール503は前記パケットを破棄する。
トンネルデバイスモジュール503からパケットを受け取ったネットワークスタック501は、パケットの送信先IPアドレスがホームエージェント500に割り当てられたIPアドレスではないことから他の機器へ転送すべきパケットであることを検知し、このパケットをネットワークインタフェース501へ出力する。
ネットワークインタフェース510は、ネットワークスタック501から受け取ったパケットを通信相手機器600へ送信する。
ステップS1608においてホームエージェント500が無線LANを介してトンネリングされたパケットを受信した場合は、記憶部505に格納されたシーケンスナンバーSが前記パケットのGREプロトコルヘッダに含まれるシーケンスナンバーに一致しない。
従って、パケット監視モジュール504がモビリティプロトコルモジュール502に通知しないこと以外は、上述した処理と同様の処理が行われる。
このような処理により、ホームエージェント500は、ハンドオーバ前に使用していたネットワークを介して受信した最後のトンネリングされたパケットを検知することが可能となる。
(ステップS1609)端末400が、ハンドオーバ前に使用していたトンネルの設定を削除する。
まず、端末400のモビリティプロトコルモジュール402が、セルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1及びホームエージェント500のIPアドレスHAの組をトンネルデバイスモジュール404に通知する。
そして、トンネルデバイスモジュール404が、記憶部406からIPアドレスCoA1及びHAの組で表されるトンネルの設定を削除する。
この処理は新規トンネルの設定(ステップS1605)後の任意のタイミングで行われる。
(ステップS1610)ホームエージェント500のモビリティプロトコルモジュール502がパケット監視モジュール504から通知を受けると、ホームエージェント500は以下のような処理を行うことでハンドオーバ前に使用していたトンネルの設定を削除する。
ホームエージェント500のモビリティプロトコルモジュール502は、パケット監視モジュール504に、シーケンスナンバーS及びプロトコル番号47の組を出力することで、ステップS1607において記憶部505に格納したパケットの特徴を表すデータを削除するよう、通知する。
パケット監視モジュール504は、GREプロトコル番号47および送信元IPアドレスCoA2の組を記憶部505から削除する。
そして、モビリティプロトコルモジュール502は、端末400のセルラーネットワーク用インタフェース410に割り当てられたIPアドレスCoA1、端末400のIPアドレスHoA、及びホームエージェント500のIPアドレスHAの組をトンネルデバイスモジュール504に通知する。
次に、トンネルデバイスモジュール504は、記憶部505からCoA1、HoA、及びHAの組で表されるトンネルの設定を削除する。
このような処理を行うことで、ホームエージェント500が図17に示すようなパケットを受信した場合、トンネルデバイスモジュール503は、前記パケットの外側IPヘッダの送信元IPアドレスと送信先IPアドレスに一致するトンネルの設定が、記憶部505に存在しないことから、前記パケットが不正なパケットであると判断し、前記パケットを破棄できるようになる。
このように、本実施形態では、端末400は、シーケンスナンバーをトンネル用のヘッダに記すトンネリングプロトコルでホームエージェント500を介して通信相手機器600にパケットを送信する。また、ホームエージェント500は、ハンドオーバ後に使用するネットワーク経由で端末400から受信した最初のパケットの内容から、ハンドオーバ前に使用していたネットワーク経由で受信する最後のパケットの特徴を予測し、ハンドオーバ前に利用していたネットワーク経由で端末から受信したパケットが予測した特徴に一致した時点を、ハンドオーバ前に使用していたトンネルを削除可能となる時点として検知する。
従って、ホームエージェント500は、ハンドオーバ前に使用していたトンネルを介して端末から全てのパケットを受信し終えた時点で即時に前記トンネルを削除可能となり、メモリリソースを効率的に使用することができる。
また、本実施形態に係る端末400およびホームエージェント500は、Mobile IPv4の仕様に適合しない特殊なメッセージを送受信する機能を保持する必要がなく、ホームエージェント500が端末400に対し相互接続性を担保できる。
また、上記第3の実施形態において、端末400およびホームエージェント500のトンネルデバイスモジュール404、503は、GREプロトコルの代わりにシーケンスナンバーをプロトコルヘッダに記載可能な例えばESPやAHといったトンネリングプロトコルを利用してもよい。
また、上記第3の実施形態においては、記憶部505に格納されたシーケンスナンバーSから決められた範囲内のシーケンスナンバーを含むパケット全てをホームエージェント500が受信し終えた時点を、ハンドオーバ前に使用していたトンネルを削除可能となる時点として検知してもよい。
この場合、ハンドオーバ前に使用していたネットワーク上で、パケットの転送順が入れ替わっても、ホームエージェント500は、ハンドオーバ前に使用していたトンネルを削除可能となる時点を検知可能となる。なお、前記範囲は一定である必要はなく、ハンドオーバのたびに変化させてもよい。
また、上記第3の実施形態においては、Mobile IPv4をモビリティプロトコルとした場合の例を説明したが、モビリティプロトコルがMobile IPv6 であっても、MOBIKEであっても、その他のプロトコルであってもよい。モビリティプロトコルがMobile IPv4でない場合は、Mobile IPv4のRegistration RequestおよびRegistration Replyの代わりにMobile IPv6やMOBIKEの仕様、その他のモビリティプロトコルの仕様に規定されている、ハンドオーバに必要なメッセージを端末とホームエージェントが送受信する。
なお、本発明の第1〜第3の実施形態においては、セルラーネットワーク用インタフェース110、410および無線LAN用インタフェース120、420は、例えば有線のEthernetに対応したインタフェースでも、802.16、802.16eに対応したインタフェースでも、Bluetoothや赤外線通信に対応したインタフェースであってもよい。
また、本発明の第1の実施形態においては、セルラーネットワーク用インタフェース110および無線LAN用インタフェース120の代わりに、異なるアクセスネットワークに接続される、同一プロトコルに対応した複数のネットワークインタフェースを搭載している端末であってもよい。
さらに、本発明の第1〜第3の実施形態においては、端末100、400は、2つ以上のネットワークインタフェースを搭載していてもよく、端末に搭載されたネットワークインタフェースのうち、2つのネットワークインタフェースを用いて、通信相手機器との通信に使用するネットワークを切替えるために本発明を適用可能である。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。