以下、本発明の一実施形態による移動通信システムを図面を参照して説明する。図1は同実施形態における移動通信システム全体の構成を示す図である。この図において、符号11は、ホームIPアドレスは持っていないが、自己を識別するために、移動に関わらず不変のFQDN(Fully Qualified Domain Name;完全修飾ドメイン名)を持つ移動端末(以下、MNと称する)である。符号21、22、23は、ユーザが直接接続するネットワークである各アクセス網のアクセスルータにそれぞれ配置され、そのネットワーク内でのIPアドレス割り当てを担当するDHCPサーバである。符号31、32、33は、コアネットワークの端に配置され、各アクセス網を収容するエッジルータである。符号34〜37は、コアネットワーク内に配置されるコアルータである。符号4は、ホスト名とIPアドレスとの相互変換を行うDNSサーバである。ここでは、MN全てがあるひとつのドメイン名(例えばmobilenode.net)に属しており、各MNは「ホスト名.ドメイン名」というFQDN(完全修飾ドメイン名)を持つものとする。すなわち、そこに問い合わせればMNに関するホスト名からIPアドレスへの変換ができることになる。
<基本的な仕組み>
次に、図2を参照して、エッジルータ31、32、33においてMN11の状況を管理することにより、MN11のネットワーク間移動前後のIPアドレス変化を抑制してモビリティを提供するための基本的な仕組みを説明する。ここでは、説明を簡単にするために、エッジルータA、B、Cと通信相手の移動端末(以下、CNと称する)12、MN11およびDNSサーバ4とからなる構成を用いて、MN11がルータB配下からルータC配下へと移動する動作を説明する。なお、エッジルータ間のトンネルとしてIP−in−IPカプセル化を利用するものとして説明するが、これに限定するものではなく、他のトンネリング技術(例えばGREカプセル化、MPLSなど)であってもよい。
まず、初期状態としてエッジルータが全くMN11の状況を把握していない状態から通信を開始したものとする。CN12は、MN11と通信するためにDNSサーバ4に対して、MN11のIPアドレスを問い合わせ、MN11のIPアドレスを取得する(図2(1))。続いて、ユーザCN12は得られたIPアドレスを宛先としてパケットを送信する(図2(2))。このパケットを受信したルータAは宛先を収容しているエッジルータ(ここではルータB)までのトンネルを確立する(図2(3))。ここで、すでにトンネルが確立されていれば、トンネルを確立する必要はない。
次に、IPカプセル化したパケットをコアネットワーク内に送信するとルータBまで到達する(図2(4))。ルータBはIPカプセル化されたパケットのカプセル化を解除し、このパケットをMN11へ送信する(図2(5))。そして、MN11がルータBからルータCへと移動する(図2(6))と、MN11から何らかのパケットが送出されることによって、ルータCはMN11が移動してきたことを検知する。その際そのパケットの送信元IPアドレスを参照することによってMN11のIPアドレスを知ることができる(図2(7))。移動元のIPアドレスが分かればそのエッジルータ(ルータB)に対してユーザ情報の問い合わせとトンネル確立を要求する。この結果、ユーザ情報が返答され、同時にルータB−C間のトンネルが確立する(図2(8))。このユーザ情報にはルータAとの間にトンネルを張っていたことが含まれているため、ルータA−B間にで張られたトンネルをルータA−C間へ張替える(図2(9))。そして、CN12がMN11(ルータB配下のIPアドレス)へパケットを送信する(図2(10))と、ルータAはルータCとのトンネルを確立しているので、IPカプセル化してパケットを転送する(図2(11))。ルータCは、このIPカプセル化パケットのカプセル化を解除して、パケットをMN11へ転送する(図2(12))。これにより、MN11がルータBからルータCへ移動した後も同一IPアドレスを使用してパケットを送受信し続けることができる。
なお、図2(8)において確立されるトンネル以外は双方向のトンネルであるため、MN11からCN12へパケットを送信するのに新たなトンネルを確立する必要はない。また、図2(8)において確立されるトンネルは、移動直後にルータBへ到達したパケットを救済するとともに、新たな移動端末が新たに通信を開始する際に名前解決を行うが、この時点のMN11のIPアドレスはルータB配下のIPアドレスであるため、全く別の移動端末が新たにMN11との通信を開始しようとした場合のための救済措置である。したがって、図2(8)において確立されるトンネルは一方向(ルータBからルータCへのトンネル)でよい。
ここで、エッジルータの種類について説明しておく。ホームエッジルータ(Home Edge Router:以下、HRと称する)は、MN11が取得したIPアドレスのネットワークIPアドレスを収容するルータであり、ライフタイムは長い(無限)、またはDHCPと連携してReleaseのタイミングで削除する。トランジエントエッジルータ(Transient Edge Router:以下、TRと称する)は、MN11が移動していくときの移動元ルータでライフタイムは短い。カレントエッジルータ(Current Edge Router:以下、CRと称する)は、MN11が現時点で存在しているネットワークのルータである。図2に示す例では、(12)の時点で、ルータAはCN12のHRかつCR、ルータBはMN11のHR、ルータCはMN11のCRとなる。この例ではTRは存在しないが、MN11がさらにルータDなどに移動すればルータCがTRとなる。
次に、トンネルエンドポイントについて説明する。CNトンネルは、相手のCRと自分のCR間の双方向のトンネルである。Homeトンネルは、HRからCRへの一方向のトンネルである。Transientトンネルは、TRからCRへの一方向のトンネルであり、CRへトンネルを張り替える間の一時的なトンネルであるため、ライフタイムは短い。
次に、エッジルータが管理する情報について説明する。トンネル情報テーブルは、MN11の現在位置(MN11のIPアドレスと収容ルータのIPアドレスのマッピング)に関するエントリを保持する。ただし、収容ルータのIPアドレスが通信相手のHRである場合には、ルータ自身のIPアドレスではなく、MN自身のIPアドレスとなる。コネクション情報テーブルは、当該ルータにおいて、どの移動端末間において通信が行われているかを示す情報(2つの移動端末のIPアドレス)を保持する。これらのテーブルエントリにはライフタイムを持たせることで、無駄なエントリがリソースを圧迫することを防ぐことも可能である。また、例えばトンネル情報テーブルでは、トンネル種別情報を持たせることにより、IPカプセル化、MPLSなど様々なトンネル手法を使い分けることも可能である。
次に、シグナリングについて説明する。図2に示す動作ではトンネル制御用のシグナリングを明記していないが、実際には各種トンネルを、確立、張り替え、削除するためにシグナリングが必要である。全く新規のコネクションを検出した際に、CNトンネルを新たに確立するために、トンネル新規確立要求(Tunnel Create Request)とトンネル新規確立応答(Tunnel Create Ack)を送受信する。MN11が移動した際に、Homeトンネルの変更およびTransitトンネルの設定を行うために、トンネル転送要求(Tunnel Forward Request)と、トンネル転送応答(Tunnel Forward Ack)を送受信する。このとき、移動前のルータ(すなわちTR)またはHRからトンネル情報を転送してもらう。MN11が移動した際に、通信相手とのCNトンネルを更新するために、トンネル張替要求(Tunnel Change Request)と、トンネル張替応答(Tunnel Change Ack)を送受信する。指定したトンネルを削除するために、トンネル削除要求(Tunnel Revocation Request)とトンネル削除応答(Tunnel Revocation Ack)を送受信する。トンネル削除の例としては、あるMN(またはCN)に関するすべてのトンネルを削除する方法と、特定のMN−CN間のトンネルのみを削除する方法がある。
なお、トンネル転送応答(Tunnel Forward Ack)以外の応答シグナルは信頼性向上のために規定されているため省略することが可能であるが、トンネル転送応答(Tunnel Forward Ack)だけは、信頼性向上以外の役割も担っているため省略することはできない。
<詳細なシーケンス>
次に、図6〜図19を参照して、MN11が移動した場合のシグナリングおよびデータ配送動作について説明する。初めに、図6〜図8を参照して、MN11とCN12との間で初期の通信を行う動作を説明する。ここでは、ルータA(IPアドレス:IP_A)がCN12のHR、ルータB(IPアドレス:IP_B)がMN11のHRであり、それぞれルータA、ルータB配下のIPアドレスを持っているものとする(図6)。エッジルータがアクセス網からパケットを受信した場合、このパケットが新しいコネクションであるか否かを確認する(図7(1)〜(2))。この確認にはコネクション情報テーブルを参照し、コネクション情報テーブルに該当エントリが無ければトンネル確立処理を開始し、一方、コネクション情報に該当エントリがあれば、さらにトンネル情報を参照し、カプセル化を行い、パケットを転送する。
ルータAは、初期状態ではコネクション情報、トンネル情報とも空である。このため、ヒットするエントリが無く、トンネル確立処理が開始される。このとき、まず各テーブルにエントリが登録される(図7(2))。また、シグナルを受け取った相手ルータBも同様にエントリを登録する(図7(4))。なお、この段階では、ルータAはルータBのIPアドレスを知らないため、図7(3)に示すシグナリングの宛先は、MN11の宛先であり、それを受けたルータBは当該シグナルに関しては、MN11に転送せずにルータB自身が処理しなければならない。
ルータA内で作成されるトンネル情報エントリは、IPmn宛パケットをIPmnでカプセル化し、IPcn宛のパケットは自ルータ配下にCNが存在しているため、カプセル化を行わずに転送すべきであること示す情報となる。なお、図7においてはルータAのトンネル情報は、IPmn→IPmnとなっているが、(5)に示すAckを利用すればこれを、IPmn→IP_Bに書き換えることも可能である。以下の説明においてはこの書き換えは行わないものとする。続いて、ルータAは、トンネル情報を参照して、パケットをカプセル化し(図8(6))、ルータBへカプセル化パケットを転送する(図8(7))。これを受けたルータBは、トンネル情報を参照して、カプセル化を解除して(図8(8))、MN11へパケットを転送する(図8(9))。
次に、MN11が移動した場合に通信を行う動作を説明する。まず移動を検知すると、移動先のルータCはIPmnというノードが移動してきたことを知ることができる。この移動検知の方法については後述する。しかし、この時点ではルータCはMN11に関する情報を持っていないが、IPmnというIPアドレスが、ルータCが管理しているネットワークIPアドレスではないことが検知できる。そこで図9(2)に示すシグナリングによって、IPmnのHRにトンネル情報を問い合わせる。このシグナリングの宛先はIPmnであり、それを受信したルータAはMN11へそれを転送せず、ルータA自身が処理しなければならない。このシグナルを受け取ることによって、ルータAはMN11がルータC配下へ移動したことを知ることができるため、図9(3)のように該当するトンネル情報を更新することができる。これにより、ルータB→ルータCの一方向のトンネル(Homeトンネル)が作成される。
その後、図10(4)に示すように応答シグナルを返すが、そこにはルータBが保持していたMN11に関するコネクション情報およびトンネル情報をすべて含まれる。図10(5)に示すように、受信した応答パケットからコネクション情報およびトンネル情報を取得し、自身に設定する。図11はこの直後にCN12からのパケット送信が発生する場合を示しているが、何も発生しなければ図12に示す処理が起こる。図11に示すように、ルータAから一度ルータBにパケットが転送されるが、トンネル情報エントリが更新されているため、さらにルータCへパケットが転送され、MN11の移動先にパケットが到達する。ルータCがトンネル情報、コネクション情報を取得すれば、図11に示す処理のようにパケット転送は継続されるが、ルータBへの経路が冗長である。そこで、図12に示すように、トンネル(CNトンネル)の張替えを行う。これにより、図13に示すように、経路が最適化される。なお、このTFCngシグナルは、MN11と通信を行っている全コネクションに関して送信されなければならない。
図14及び図15は、MN11がHRを離れてしまった際に、新たなCN2・13がMN11へパケットを発送する場合の動作を示している。CN2・13はIPmn(ルータB配下のIPアドレス)あてにパケットを送信するため、図14(2)に示すように、一度ルータEとルータBの間でトンネルを張ろうとする。しかし、現在MN11はルータCに移動しているため、作成すべきCNトンネルはルータEとルータC間であるため、図15(5)に示すように、受信したシグナル(Tunnel Create Request)をルータCへ転送するとともに、ルータEへトンネルを張り替えるよう指示する(TFCng)。なお、この際に(4)で、ルータB(MN11のHR)はCN2・13とMN11に関するトンネル情報、コネクション情報を保持することができる。なお、図15においては省略しているTunnel Create Ackをもし送信する場合には、ルータCからルータEへ送信される。
次に、MN11がさらに移動した場合に通信を行う動作を説明する。なお、以下の説明においては、TFCngAckシグナルは省略して説明する。図16〜図19は、ルータCに移動したMN11がさらにルータDに移動した状況を示している。この場合も、前述した図9に示す動作と似ている動作を行う。異なる点は、ルータBが図16(2)で受信したシグナルにトンネル情報が書き換えられるタイミング(図17(4))である。この判断は、元のトンネル情報がIP_C宛であるのに対し、TFcngがIP_Dから送られてきたことで判別する。これは図16(3)に示すようにルータBからルータCへのTFCngシグナルが移動前のルータCへ先に送られる。このTFCngシグナルによって、ルータCはTRになり、ルータCからルータDへのトンネルは短命なTransientトンネルとなる。
短命である理由は、図18(7)に示すように送られるTFCngシグナルが全関連CN群に送られれば、すべてのCNトンネルが新しい移動先であるルータDに向くので、このトンネル自身が全く不要になるからである。これは、移動処理が不完全な状態で、ルータCにトンネルされてくるパケットを救済するための措置である。このため、図19に示すように、ルータCは一定時間経過後にMN11に関する全エントリを削除する。なお、図示していないが、TFCngシグナルがすべて完了した時点で、明示的にTunnel Forward RevocationメッセージをルータDからルータCへ送付することで、ライフタイムによる満了を待たずにエントリを削除してもよい。ただし、CN12がルータC配下にいる場合には、完全に当該MN11に関する情報を消してしまってはならない。Transientトンネルは、該当するCN−MNペア(すなわちCN12がルータC配下にいないもの)に関してだけのトンネルであり、そうでないものについては、CN12トンネルが張られる。
<アクセス網側のLayer2処理>
次に、アクセス網側のLayer2処理について説明する。エッジルータは通常ARP(Address Resolution Protocol)によって、IPアドレスとMACアドレス(Layer2IPアドレス)のマッピングを行い、アクセス網内のノードへ最終的にパケットを転送する。本発明においても同様の方法を用いるが、従来の処理とは異なる対応が必要である。同様に、移動したMN11も新たな手順が必要となる。
MN11はネットワークを移動した際に、自身のARPテーブル(IPアドレスとMACアドレスの対応テーブル)を一旦すべて削除する。実際にはネットワーク間移動になっていなかったとしても再度ARPが実行されるだけなので問題はない。ネットワーク間移動だった場合は、デフォルトGWの設定や移動前に同一ネットワークだったノードとの通信を継続するために、ARPテーブルの削除が不可欠である。なぜなら、移動先では同一ネットワーク内(移動先のネットワーク)のノードとの通信以外は、すべて移動先エッジルータ(すなわちCR)を経由させなければならないからである。これは、後述する代理ARPによって実現する。
MN11がHRにいるというのは、MN11のIPアドレスが現在所属しているネットワークのネットワークIPアドレスであることを示している。すなわち、いわゆる不正のないIPアドレスである。ここで不正があるIPアドレスとは、例えば192.168.0.0/24のネットワークであるにもかかわらず、MN11のIPアドレスが192.168.1.1であるような場合である。いわゆる正常な状態であれば、エッジルータが行うARP処理も通常通りである。
一方、IPアドレスがIPmn、MACアドレスMACmnであるMN11が他のルータ配下へ移動してしまった場合、エッジルータのARP処理が通常とは異なる。まず、当該MN11のHRは、図9(2)、(3)のようにTFReqシグナルを受け取り、トンネル情報エントリを書き換えた際には、当該MN11のために代理ARPを設定する。すなわち、HRのアクセス網でMN11(IPmn)に関するARPリクエストが出た場合に、HRが代理でHR自身のMACアドレスを応答する。また、代理ARPの設定と同時に、すでにHRのアクセス網内にいる他のノードに対しても、それらのARPテーブルを書き換えるために、HRがGratuitous ARPをブロードキャストする。このブロードキャストは何度か行うのが好ましい。これによって、アクセス網内すべてのノードが、当該MN11への通信をしようとしたときに、このHRにパケットを送るようになり、それによって当該MN11へパケットを転送できるようになる。なお、この処理は、Mobile IPにおけるHAの処理と同様である。
MN11の移動先であるCRでは、当該MN11に関するARPエントリをpermanentに登録する。すなわち、ARPプロトコルによる解決ではなく、直接ARPテーブルにエントリを追加する。これは、図13(e)でMN11にパケットを転送するために不可欠である。MN11の移動元エッジルータは多くの場合TRである。TRとならないのは図9に示すようにHRから始めて移動した場合だけである。MN11の移動元エッジルータでは、図17(4)で当該MN11に関するトンネル情報を書き換えたと同時に、当該エッジルータはアクセス網にGratuitous ARPをブロードキャストする。このブロードキャストは何度か行うのが好ましい。Gratuitous ARPの目的(内容)は、当該アクセス網内のノードが保持する当該MN11に関するARPエントリを、MN11宛ではなくTR宛になるようにするためである。これによって、通信相手が当該移動元エッジルータ配下にいた場合でも、MN11宛パケットは移動元エッジルータへ送られ、TransientトンネルまたはCN12トンネルを通って、移動先へパケットが到達するようになる。
また、エッジルータは、アクセス網でブロードキャストされたあらゆるARPリクエストに対して、自身のMACアドレスを応答する。ただし、自ネットワークに属するIPアドレスに関するARPリクエストには応答する必要はなく、ターゲットが自分自身のときのみ自分自身のMACを応答する。これによって、他から移動してきたMN11が誰かと通信しようとした際に発せられるARPリクエストを救済できる。なお、移動してきたMN11がARPを送信するのは、MN11が当該MN11のHR配下のノードと通信しようとするときである。
<ネットワーク間を移動したことを検知する移動検知>
次に、ユーザ端末の移動検知とエッジルータが新たなユーザが移動してきたことを検知する移動検知について説明する。初めに、ユーザ端末の移動検知について説明する。本発明においては、MN11自身が別のネットワークに移動したか否かを検出する必要はない。ただし、何らかの移動が起こったことは検知し、ルータへそれを伝える必要がある。具体的には、MN11はネットワークインタフェースを監視し、状態に変化があると何らかのパケットをブロードキャストする。ここで、状態の変化とはインタフェースのUP状態から一度DOWN状態になり再びUP状態に戻るようなことである。もしMN11が有線LANに接続しているとすれば、あるネットワークに接続しているLANケーブル(この時点ではインタフェースはUPしている)を一度引き抜いて(ここでインタフェースはDOWNする)別のネットワークに繋ぎ替える(ここで再度インタフェースがUPする)ことで移動できる。
一方、無線LANを使う場合には、MN11があるアクセスポイントに接続していて、その受信強度が弱くなった際に他のアクセスポイントを検索し、より好条件のアクセスポイントに接続を切り替える。ただし無線LANの場合、接続切替の瞬間にインタフェースのUP→DOWN→UPという状態変化が起こる場合と、インタフェースはUPしたままでも接続が切り替わったという信号がOS内部に通知される場合がある。例えば接続先のアクセスポイントのMACアドレスが変化する、そもそも異なるSSIDのアクセスポイントに接続する等が起こる。
このように、インタフェースレベルで何らかの変化が起こったことを検出し、それに伴ってパケットをブロードキャストし、さらにはそれまで持っていたARPテーブルを削除する。なお、インタフェースレベルでの変化があったからといって、必ずしもネットワーク間移動が起こったとは言い切れない。例えば、有線LANでもケーブルを単に抜いて挿しただけの場合や、無線LANアクセスポイントのローミングでもネットワークを跨がない場合が多々ある。ブロードキャストするパケットには、そのMN11のIPアドレスが含まれていればよい。例えばARPリクエストのように送信元IPアドレスがデータに含まれているパケットや、IPヘッダの送信元IPアドレスがMN11の元のIPアドレスになっていればよい。すなわち、MN11自身はインタフェースの状態変化を検出した時点では、ネットワーク間移動が起こっているか否かを知ることは困難なため、単に何らかのパケットを送出すれば、そこにはMN11の移動前のIPアドレス情報が付加されていると考えられる。公知のパソコンOSでは、上記のようなインタフェースの状態変化が起こった場合、それまで知っていたデフォルトゲートウェイに対してpingを送信するようになっている。このとき、pingの送信元IPアドレスはそれまで使用していたIPアドレスである。本発明においてもこれをそのまま利用するものとして、以下を説明する。ただし、このタイミングでARPテーブル削除を同時に行うようにする必要がある。
次に、エッジルータの移動検知について説明する。本発明では、新たなMN11が移動してきた際に、エッジルータ(HRやCRとなるエッジルータ)が前述のようなシグナリングを行ってトンネルの設定などを行わなければならない。そのため、エッジルータは新たなMN11が移動してきたか否かをいち早く検出する必要がある。その検出に、上述のMN11から送信されるpingパケットを利用する。Pingパケットを受信した際には、その送信元IPアドレスがそのアクセス網とは異なるネットワークIPアドレスに属するものだった場合に、自身が保持するトンネル情報を調べる。トンネル情報に当該pingパケットの送信元IPアドレスに関する情報が無ければ、新たにそのアクセス網にやってきたMN11ということになるため、シグナリングを開始する。もしすでに該当するトンネル情報があれば、トンネルは確立済みであるため、特にシグナリング処理は必要ない。なお、移動検知に用いるパケットをpingに限定する必要はない。ただし、後述するDHCPなどのシグナリングでは送信元IPアドレスが0.0.0.0になるようなパターンもありうるため、このようなパケットに対しては上記の処理が行われてはならないようにする必要がある。
<IPアドレス取得>
以上の説明においては、MN11はどこかのネットワークに所属していて固定的なIPアドレスを持っていることを仮定して説明してきた。しかし、実際にはDHCP(Dynamic Host Configuration Protocol)を用いて動的にIPアドレスを取得することが多いため以下の説明においては、DHCPを利用する場合について説明する。ここで想定するネットワークは図1に示すように、各アクセス網にそれぞれのIPアドレス空間を管理するDHCPサーバ21、22、23が配置される環境である。
初めに、ホームエッジルータ(HR)配下でのIPアドレス取得動作を説明する。MN11が新たにIPアドレスを取得すると、そのネットワークのエッジルータがHRとなる。以後このネットワークをホームネットワークと呼ぶ。新たなIPアドレスを取得したところがホームネットワークなので、あらゆるネットワークがホームネットワークとなりうる。DHCPによるIPアドレス取得手順は、図3に示すように従来手法と全く同様である。図3において、DHCP Discover、DHCP RequestがDHCPサーバ21とHR31に到達しているが、これはこれらのパケットがブロードキャストされるためである。DHCPシーケンスによってMN11はこのホームネットワークのIPアドレスを取得することができる。
次に、MN11が移動した場合の動作を説明する。前述のように、MN11のインタフェース状態が変化すると、pingをそれまで知っていたデフォルトゲートウェイに送信する。従来手法では、そのpingに応答が無ければネットワーク間移動が起こったと判断し、DHCPシーケンスが開始される。MN11が実際に異なるエッジルータ配下へ移動していた場合、MN11から送信されるpingパケットは以下のように処理する。
まず、MN11はARPテーブルを削除し、ping送信に向けてARPによるMACアドレス解決を行う(CRのMACアドレスを得る)。そして、MN11がpingをデフォルトゲートウェイ(HR)へ送信する。CR(移動先エッジルータ)は、このpingを代理受信する。そして、エッジルータ間で前述した移動処理(トンネル確立)が行われ、PingがCRからHRへ転送される。これを受けて、HRがping応答を返すことにより、HR→CR→MN11へping応答が送信される。これにより、MN11がping応答を受け取ることになるため、MN11はネットワーク間を移動していないと認識することができる。
次に、IPアドレスの更新について説明する。DHCPによるIPアドレス割り当ては、それぞれのIPアドレスに対して割り当てる期間が決められており、その期間が満了するとMN11はそのIPアドレスを削除しなければならず、またDHCPサーバはそのIPアドレスを別のノードに割り当てることが可能となる。そのため、当該MN11がそのIPアドレスをさらに使い続けたい場合には、IPアドレスを割り当てたDHCPサーバに対してDHCP requestパケットを送信することにより更新手続きを行う。
DHCPサーバは割り当て済みIPアドレスを持ったMN11からDHCP requestを受け取ると、割り当て期間を延長する。前述の通り割り当てを行ったDHCPサーバはこのDHCP requestを受けとらなければならないが、MN11がホームネットワークを離れている場合、従来手法ではMN11が送信したDHCP requestを移動先ネットワークのDHCPサーバが受け取ってしまい、そのため、異なるIPアドレス割り当てが起こってしまう。従来の手法は、一度目に送られたDHCP Requestに対してDHCPサーバがDHCP Nakを返答するため、MN11はIPアドレスを破棄して新たなIPアドレスを取得する。なお、DHCP RequestにはMN11のMACアドレス情報とRequested IPというフィールド(そのノードが使いたいIPアドレスが書かれている))が含まれており、DHCPサーバはこの情報を参照することによって、すでに割り当て済みのIPアドレスの更新であるかを判断できる。ただしこの場合には、DHCPサーバが管理していないIPアドレス(元々ホームネットワークのDHCPサーバによってMN11に割り当てられていたIPアドレス)がRequested IPフィールドに書かれているため、それを拒絶してしまう。
次に、図4、図5を参照して、本発明による手法によるDHCPサーバの動作を説明する。ここでは、図5に示すように、MN11のホームネットワークをNet A、移動先をNet Bとし、それぞれのネットワークにDHCP_A、DHCP_Bが配置されており、Net AのエッジルータがHR、Net BのエッジルータがCRであるとした場合のDHCP Requestを受信したDHCPサーバの動作を説明する。
まず、MN11がDHCP Requestをブロードキャストし、DHCP_Bが受信する(図4(1))。これを受けて、DHCP_BがCRへ問い合わせを行う(図4(2))。CRは、DHCP_Bへ応答を返す(図4(3))。DHCP_BはDHCP_AへDHCP Requestを転送する(図4(4))。これを受けて、DHCP_AはIPアドレス割り当ての期間を延長する(図4(5))。続いて、DHCP_AはDHCP_BへDHCP Ackを転送し(図4(6))、DHCP_BはMN11へDHCP Ackを返す(図4(7))。
図4に示す手順(2)、(3)において、DHCPサーバからエッジルータへの問い合わせ処理がある。手順(2)ではまず、DHCP RequestパケットのRequested IPフィールドを参照し、DHCPサーバが管理しているIPアドレスに関する要求であるか否かを判断する。もしDHCP_Bが管理するIPアドレス外であった場合、DHCP RequestのRequested IPフィールドおよびMACアドレス情報をエッジルータへ送り、そのMN11に関するトンネルが存在しているかを確認する(手順(3))。すなわち、どこか別のネットワークから移動してきたMN11によるDHCP Requestであるか否かを確認する。移動してきたMN11であった場合、前述のように、MN11から送信されたpingによるエッジルータの移動検知、トンネル張替え処理が発生する。本発明では、エッジルータ間でやり取りされる情報、すなわちMN11のトンネルに関する情報に対して、MN11のIPアドレス、MN11のMACアドレス、DHCPサーバIPアドレス(MN11へIPアドレスを割り当てたDHCPサーバのIPアドレス)を新たに加えておく必要がある。
これらの情報は、トンネル管理テーブルに含めてもよいし、別の管理テーブル(MN11管理テーブル)として管理してもよい。重要なのは、MN11のIPアドレスとMACアドレスによってエントリを検索できることである。また、この情報は元々HRが作成するが、DHCPサーバIPアドレスは、そのHRがあらかじめ知っているものとする。したがって、MN11がはじめてCN12と通信をした際などにMN11の情報として上記の情報が生成され、その際に当該HRが知っているDHCPサーバIPアドレスを登録する。
図4に示す手順(2)の問い合わせでMN11の情報を検索した結果、CRがそのMN11を収容していれば、手順(3)の返答ではDHCPサーバIPアドレス(ここではDHCP_AのIPアドレス)を返答する。もしMN11の情報が存在しなければ、「該当なし」を応答する。手順(4)以降ではDHCP_BがDHCPリレーサーバとして動作し、上記で得られたDHCP_AへDHCPシグナリングパケットの転送を行う。なお、転送の方法自体は従来のDHCPリレーと同じ方式である。また、手順(3)で「該当なし」が返ってきた場合、DHCP_BサーバはそのMN11に対して新たにIPアドレス割り当てを行う。その際にはDHCP_BはDHCP NakをMN11に返答し、図4と同様のシーケンスとなる。なお、手順(2)でRequested IPがDHCP_Bの管理IPアドレス内のものであった場合、エッジルータへの問い合わせは不要で、通常のDHCP処理となる。
ここではDHCP Requestに関してのみ説明しているが、MN11からDHCP Discoverが送信される場合もある。DHCP DiscoverにRequested IPフィールドが含まれる場合とそうでない場合があり、Requested IPフィールドが含まれており、しかもDHCP_Bの管理IPアドレス外であった場合には、手順(2)や(3)と同じ処理を行う。ただし、DHCP Discoverから開始された場合には、DHCP Offer受信後にMN11は再度DHCP RequestをDHCP_Bへ送信するが、そのDHCP Requestは手順(2)、(3)のようなCRへの問い合わせを省略する。これは、DHCPパケットにはトランザクションIDと呼ばれるIDが含まれており、一連のDHCPシーケンスは同じIDを持っているため、リレーの設定もトランザクション内であればDHCPサーバが記憶させておくことで可能である。
次に、IPアドレスの解放について説明する。MN11は、インタフェースを無効にする、コンピュータの電源を切るなどによってIPアドレスが不要になった場合に、割り当てられたIPアドレスの解放を行う。すなわち、DHCPサーバにIPアドレスが不要になったことを通知することで、そのIPアドレスを他のノードが使用できるようにする。IPアドレス解放は、DHCP ReleaseをDHCPサーバに送ることによって行う。MN11はIPアドレスを割り当てたDHCPサーバを知っているため、直接ホームネットワークのDHCPサーバへDHCP Releaseを送信すればよい。(前述のDHCP RequestやDHCP Discoverは、255.255.255.255という宛先にブロードキャストされていたが、DHCP Releaseはユニキャストされる。)したがって、前述のようなDHCPリレーサーバのような動作は不要である。
IPアドレスが不要になるということは、それまで使われていたトンネルも不要になるということと同義であるため、IPアドレス解放と同時に、エッジルータが余分なメモリを消費せずに済むために当該MN11に関するトンネルやコネクション情報もすべて解放されることが望ましい。この機能を実現するための動作を、図5を参照して説明する。図5において、MN11はNet AでIPアドレスを取得し、Net Bに移動した後、IPアドレスを解放するものとする。
まず、MN11がDHCP ReleaseをDHCP_Aに送信する(図5(1))。これを受けて、DHCP_Aはアドレスを解放するとともに、HRに対してリリース通知を行う(図5(2))。HRはトンネル情報(Homeトンネル)を元にCRへトンネル削除要求(Tunnel Revocation Request)を送信する(図5(3))。CRはトンネル削除要求を受信すると、Homeトンネルを削除するとともにさらに他のCN12トンネルへもトンネル削除要求し、当該MN11に関する全トンネルを削除する(図4(4))。なお、MN11がホームネットワークにいる場合にはHRとCRは同一であるため、CRへのトンネル削除要求送信は存在せず、HRが直接CN12トンネルを削除する。
<高速な移動処理>
以上の説明においては、エッジルータがMN11移動に伴ってトンネルの張替えを行い、MN11は最初のpingパケット以外何も移動に関する処理を行わなかった。そのため、移動後のエッジルータ(CR)が移動前のエッジルータへの問い合わせ等を行わなければ、それまで使われていた当該MN11に関するCN12トンネルをそのCRへ移行することができず、トンネル張替えに至るまでの期間はパケット転送ができずMN11がパケットを受信できなくなる可能性がある。例えば、図16において、MN11がルータDに移動した場合、トンネル切替のためのシグナリングTFReqは一度HRへ送信された後にルータCへTFCngが送られる。そのため、図16(3)、図17(4)においてルータCのトンネル情報が書き換わるまでは、ルータAからルータCへ送られてきたMN11宛パケットは、ルータCはまだそのアクセス網内にMN11が存在することになっているため、MN11に届くことなくルータCのアクセス網内に消えてしまう。ここでは、このようなルータC(TR)におけるパケットロスを軽減することを可能とする方式について説明する。
この方式を簡単に説明すると、図16において、HRを起点として移動前のエッジルータ(TR)のトンネルを切り替えていたところを、移動後のエッジルータ(CR)を起点として、すなわちCRからTFReqを出すことによって、タイムラグを小さくするというものである。そのためには、CRがあらかじめどのエッジルータから移動してきたのかという情報を知っていなければならない。これを以下のように実現する。
エッジルータは、MN11に関する情報をあらかじめMN11に通知しておく。MN11に関する情報とは、当該MN11に関連する「トンネル情報テーブル」「コネクション情報テーブル」「MN11情報テーブル」である。MN11情報テーブルは、MN11のIPアドレス、MN11のMACアドレスとDHCPサーバIPアドレスの情報である。これらの情報を総称して、ここではネットワーク情報と呼ぶ。エッジルータはこれらの情報に変化がある毎に、当該MN11にそのネットワーク情報を送付し、当該MN11はその情報を保持しておく。なお、「これらの情報に変化がある」とは、例えば新たなCN12と通信を開始すれば、コネクション情報やトンネル情報が新設されることによって発生する変化のことである。
以上の説明においては、MN11はインタフェースの状態に変化があったときにデフォルトゲートウェイに対してまずpingを送信すると説明したが、ここでは、このpingの代わりにMN11がネットワーク情報をブロードキャスト(またはマルチキャスト)する。MN11が送出したネットワーク情報はエッジルータが受信し、中身を確認しそれが新たなMN11によるものであるか否かを判断する。例えば未知のMN11情報が入っていれば、新MN11が移動してきたことがわかる。なお、新規のMN11のものでなければ、エッジルータは特に何もしない。新たなMN11が移動してきた場合には、エッジルータ(CR)は以下のような処理を行う。
まず、移動前のエッジルータ(TR)へTFCngを送信して、Transientトンネルを更新する。そして、通信相手のCRへTFCngを送信してCNトンネルを更新し、HRへTFReqを送信することによりHomeトンネルを最後に更新する。TRReqを受信したHRはTRへTFCngを送信しなくてよい。
このように、移動後のエッジルータ(CR)はMN11移動直後に通信相手となるCN12のCRや当該MN11のTRを知ることができるため、まず初めにCNトンネルやTRトンネルを更新することができる。まずTransientトンネルから更新する理由は、トンネルの本数がTransientトンネルは1本しかなく、すぐに処理が終了するためである。一方CNトンネルはコネクションの数だけ存在するため、時間がかかってしまう可能性があり、その分パケットロスの発生を許してしまう可能性がある。図20〜図23に処理動作を示す。なお、HRからのTFAckは記載を省略している。また、ネットワーク情報はHRでもCRでも、情報に変化があればMN11宛にユニキャストされるものである。また、暗号化によってMN11はその内容を知ることができなくなり安全性が高まると考えられるため、送られるネットワーク情報はエッジルータ間だけで共有されている暗号鍵で暗号化されるのが好ましい。
このように、端末が特別な処理を行うことなくネットワーク間を移動してもモビリティを維持することができる。また、移動先においても割り当てられたIPアドレスを正しく使い続けることができるとともに、IPアドレスを解放する際にトンネルも削除するため、無駄な資源消費を防止することができる。また、移動に伴うトンネルの確立し直し時において、パケットロスを低減することができる。