以下、本発明の実施例について、図面を参照して詳細に説明する。
図1は、本発明が適用される無線IPネットワークの1例を示す。
ここに示した無線IPネットワークは、中継網1とIP網2とからなる固定網と、複数の無線IPサブネット(無線LAN:WLAN)とからなっている。第1の無線LAN(WLAN)10と、第2の無線LAN(WLAN2)20は、それぞれルータ81−1、81−2を介して中継網1に接続され、中継網1はルータ81−3を介してIP網1に接続されている。
WLAN10は、ルータ81−1に接続されたレイヤ2スイッチ(L2SW)80−1と、L2SW80−1に接続された無線基地局(以下、アクセスポイントAPと言う)60−1および60−2と、L2SW80−1に接続されたDHCP(Dynamic Host Configuration Protocol)サーバ70−1とからなる。WLAN10は、AP60−1が形成する無線LAN:WLAN11と、AP60−2が形成する無線LAN:WLAN12によって、1つのIPサブネットを形成している。DHCPサーバ70−1は、WLAN10内に位置した各移動ノード(MN)30に対してIPアドレスを付与する。
WLAN20も、WLAN10と同様に、ルータ81−2に接続されたL2SW80−2と、L2SW80−2に接続されたアクセスポイントAP60−3および60−4と、L2SW80−2に接続されたDHCPサーバ70−2とからなる。WLAN20は、AP60−3が形成する無線LAN:WLAN21と、AP60−2が形成する無線LAN:WLAN22によって、WLAN10とは別のIPサブネットを形成している。DHCPサーバ70−2は、WLAN20内に位置した各移動ノード(MN)30に対してIPアドレスを付与する。
中継網1には、VoIP(Voice over Internet Protocol)によってIP電話セッションの接続、切断等のセッション制御を行うセッション管理サーバ(SIPサーバ)50と、IP網2に接続された端末装置のSIP URIとIPアドレスとの対応関係を記憶したロケーションサーバ90が接続されている。IP網2は、実際には多数のIPパケット転送ノードと、各種のサーバおよび通信端末とを含んでいるが、ここでは簡単化のために、ルータ81−3に接続されたL2SW80−3と、L2SW80−3に接続された端末装置40とを示す。
以下の説明では、端末装置40は、VoIPによる電話通信において移動ノード(MN)30の通信相手となるため、通信相手ノードCNと呼ぶことにする。図1において、MN30、SIPサーバ50、CN40に付随して表示された文字列「xx-xx-xx-xx-xx-xx-xx」と「xxx.xxx.x.x」は、各装置に付与されたMACアドレスとIPアドレスを示している。ここでは、MN30のIPアドレスが、WLAN10では「192.168.0.1」、WOLAN20では「172.21.22.25」になっている。
図2は、移動ノード(MN)30の1実施例を示すブロック構成図である。
MN30は、アクセスポイント(AP)60(60−1〜60−4)と通信するための複数の無線回線インタフェース31(31−1、31−2)と、これらの無線回線インタフェースに接続されたプロトコル処理部32と、内部バス39を介してプロトコル処理部32および無線回線インタフェース31に接続されたプロセッサ33と、プロトコル処理部32に接続された音声信号の符号/復号器:CODEC34と、内部バス39に接続された表示部36A、入力部36B、メモリ37および38とからなる。CODEC34には、マイク35Aとスピーカ35Bが接続されている。
メモリ37には、プロセッサ33が実行するソフトウェアとして、主制御ルーチン100、呼制御ルーチン110と、ビーコン受信処理ルーチン150と、各種のアプリケーションプログラム300が用意されている。また、メモリ38には、端末状態管理テーブル310と、接続管理テーブル320とが形成されている。呼制御ルーチン110は、後で説明するように、受信したSIPメッセージの種類によって異なる複数のメッセージ受信処理ルーチンからなっている。
プロセッサ33は、ビーコン受信処理ルーチン150を定期的に実行し、後述するように、各アクセスポイント(AP)から送信されるビーコン信号を受信して、MN30の通信圏内に位置するAPの探索、ビーコン受信レベルの監視、無線回線の切替え/解放などの動作を行う。
プロセッサ33は、例えば、ビーコン受信処理ルーチン150によって、AP60−1を探索すると、AP60−1を介して、MN30をSIPサーバ50に位置登録する。その後は、AP60−1からのビーコン信号の受信レベルS1を監視し、受信レベルS1が所定の閾値THよりも低下したことを検知すると、AP60−1との接続を解除する。
本実施例では、プロセッサ33は、2つの無線回線インタフェース31−1、31−2の一方を現用系インタフェースとして、APとの交信、SIPサーバへの位置登録、および後述するCNとの接続手順を実行する。MN30が、例えば、無線回線インタフェース31−1を介してAP60−1に接続されている間、プロセッサ33は、予備系となる他方の無線回線インタフェース31−2で他のAP、例えば、AP60−2からの送信ビーコンを探索し、AP60−2のビーコン受信レベルS2がAP60−1の受信レベルS1よりも大きくなった時、接続APの切替え(ハンドオフ)と、無線回線インタフェースの現用系/予備系の切替えを行う。
プロトコル処理部32は、無線回線インタフェース31−1、31−2からの受信パケットを解析し、音声パケットはCODEC34に、音声以外のデータパケットと、呼制御メッセージを含む制御パケットおよびビーコン信号は、プロッサ33に転送する。CODEC34は、プロトコル処理部32から音声パケットを受信すると、受信パケットから抽出された符号化音声信号を復号化して、スピーカ35Bに出力すると共に、マイク35Aから入力された音声を符号化し、送信音声パケットとして、プロトコル処理部32に出力する。
プロセッサ33は、主制御ルーチン100によって受信パケットを判定し、音声以外のデータパケットは、受信パケットと対応するアプリケーションプログラム300によって処理する。これによって、表示部36Aへのデータ出力、またはメモリ38に形成された所定のストレージエリアへの受信データの格納が行われる。ビーコン信号は、ビーコン受信処理ルーチン150で処理される。プロッサ33は、呼制御メッセージを含む制御パケットを受信すると、呼制御ルーチン110を実行して、制御パケットに応じた応答動作を実行する。符号S1、S2は、ビーコン信号の受信レベルを示している。
図3は、端末状態管理テーブル310の1実施例を示す。
端末状態管理テーブル310は、無線回線インタフェースの識別番号(ポート番号)311と対応した複数のテーブルエントリからなり、各テーブルエントリは、移動ノード(MN)30自身のMACアドレスを示すMACアドレス・フィールド312と、IPサブネットで取得したMNのIPアドレスを示すIPアドレス・フィールド313と、接続APフィールド314と、接続フラグ・フィールド315とからなる。
接続APフィールド314は、ポート番号311(=i)をもつ無線回線インタフェース31−iのアクセスポイントAPへの接続状態を示しており、MN30が無線回線インタフェース31−iを介して既に特定のAPに接続済みの状態では、接続APフィールド314には、接続されているAPの識別子が設定され、APに未接続の状態では、空き状態を示す状態コードが設定される。接続フラグ・フィールド315は、無線回線インタフェース31−iの使用状態を示しており、本実施例では、フラグ「1」は、現用系インタフェースとして使用中の状態、フラグ「0」は、未使用中または予備系インタフェースとして使用中の状態を示す。端末状態管理テーブル310の利用方法については、後で詳述する。
図4は、接続管理テーブル320の1実施例を示す。
接続管理テーブル320は、SIPサーバ50のIPアドレス321と対応づけて、通信相手ノード(CN)40の識別情報であるSIP URI:322およびIPアドレス323と、通信制御における現在のステータス324と、SIPメッセージのコマンド・シーケンス(CSeq)325が記憶される。接続管理テーブル320の具体的な利用方法については、後で詳述する。
図5は、MN30の通信相手となるCN40の1実施例を示す。
CN40は、図1に示すL2SW80−3と接続するための回線インタフェース41と、回線インタフェース41に接続されたプロトコル処理部42と、内部バス49を介してプロトコル処理部42に接続されたプロッセサ43と、プロトコル処理部42に接続されたCODEC44と、内部バス49に接続された表示部46A、入力部46B、メモリ47および48とからなる。CODEC44には、マイク45Aとスピーカ45Bが接続されている。
メモリ47には、プロセッサ43が実行するソフトウェアとして、主制御ルーチン400と、呼制御ルーチン410と、各種のアプリケーションプログラム470が用意されている。また、メモリ48には、接続管理テーブル480が形成されている。
プロトコル処理部42は、回線インタフェース41から受信したパケットを解析し、音声パケットはCODEC44に転送し、音声以外のデータパケットと、呼制御メッセージを含む制御パケットは、プロッサ43に転送する。CODEC44は、プロトコル処理部42から音声パケットを受信すると、受信パケットから抽出された符号化音声信号を復号化して、スピーカ45Bに出力すると共に、マイク45Aから入力された音声を符号化し、送信音声パケットとして、プロトコル処理部42に出力する。
プロセッサ43は、主制御ルーチン47によって受信パケットを判定し、音声以外のデータパケットは、受信パケットと対応するアプリケーションプログラム470によって処理する。これによって、表示部46Aへのデータ出力、またはメモリ48に形成された所定のストレージエリアへのデータの格納が行われる。呼制御メッセージを含む制御パケットを受信すると、呼制御ルーチン410が実行され、受信した制御パケットに応じた応答動作が行なわれる。呼制御ルーチン410は、受信したSIPメッセージの種類によって異なる複数のメッセージ受信処理ルーチンからなっている。
CNの接続管理テーブル480には、図6に示すように、SIPサーバ50のMACアドレス421およびIPアドレス422と、移動ノード(MN)30のSIP URI483およびIPアドレス484と、通信制御における現在のステータス485と、SIPメッセージのコマンド・シーケンス(CSeq)486との対応関係が記憶される。接続管理テーブル480の具体的な利用方法については、後で詳述する。
図7は、SIPサーバ50の1実施例を示す。
SIPサーバ50は、中継網1に接続するための回線インタフェース51と、回線インタフェース51に接続されたプロトコル処理部52と、内部バス59を介してプロトコル処理部52に接続されたプロッセサ53と、内部バス59に接続されたメモリ54とからなる。メモリ54には、本発明に関係するソフトウェアとして、SIP処理ルーチン500と、端末位置情報管理テーブル510と、接続管理テーブル520が用意されている。
端末位置情報管理テーブル510は、例えば、図8に示すように、位置登録を要求してきた端末の識別情報であるSIP URI511と対応づけて、要求元端末の現在のIPアドレス512と、アドレス変更前の旧IPアドレス513を記憶している。端末位置情報管理テーブル510の具体的な利用方法については、後で詳述する。
SIPサーバが備える接続管理テーブル520は、図9に示すように、移動ノードMN30のSIP URI521、IPアドレス522およびUDPポート番号523と、通信相手ノード(CN)40のSIP URI524、IPアドレス525およびUDPポート番号526と、通信制御における現在のステータス527と、SIPメッセージのコマンド・シーケンス(CSeq)528との対応関係を示す。接続管理テーブル520の具体的な利用方法については、後で詳述する。
図10は、SIPメッセージを含む制御パケットのフォーマットを示す。
SIPメッセージは、IPヘッダ210とTCP/UDPヘッダ220とを含むIPパケットのペイロード230に設定される。SIPメッセージは、メッセージ種類と宛先を示すスタートライン(Start-line)231と、SIPパラメータを含むメッセージヘッダ(Message-header)232と、端末間に論理的に形成されるコネクションの情報を記述したメッセージボディ(Message-body)233とからなっている。
IPヘッダ210には、図11(A)に示ように、送信元IPアドレス(Source Address:SA)211と、宛先IPアドレス(destination Address:DA)212と、その他のヘッダ情報が含まれる。図11(A)は、MN30が、図1に示したWLAN10内において送信元アドレスとして使用するIPアドレスの値を示し、図11(B)は、WLAN10からWLAN20に移動したMN30が、WLAN20内において使用する新たなIPアドレスの値を示している。
次に、図12〜図30を参照して、MN30が、AP60−2を介してSIPサーバ50に位置登録する際に実行される位置登録フェーズPH1と、MN30がCN40と音声通話を開始する際に実行される接続フェーズPH2におけるMN30、CN40、SIPサーバ50の動作について説明する。
図12は、位置登録フェーズPH1の通信シーケンス、図13は、接続フェーズPH2の通信シーケンスを示す。図14〜図16は、MN30が実行するビーコン受信処理処理ルーチン150、Association Response受信処理ルーチン190、応答パケット(200 OK)受信処理ルーチン120のフローチャートを示す。また、図17〜図20は、SIPサーバ50が実行するREGISTER受信処理ルーチン530、INVITE受信処理ルーチン540、応答パケット(200 OK)受信処理ルーチン560、ACK受信処理ルーチン570のフローチャート、図21、図22は、CN40が実行するINVITE受信処理ルーチン420およびACK受信処理ルーチン430のフローチャートを示す。図23〜図30は、位置登録フェーズ(PH1)と接続フェーズ(PH2)で送信される各種SIPメッセージのパケットフォーマットを例示している。
まず、位置登録フェーズ(PH1)について説明する。
MN30は、無線LANを利用してCN40との間にセッションを接続する前に、現在位置で通信可能なAPを検索する必要がある。そこで、MN30(プロセッサ33)は、図14に示すビーコン受信処理ルーチン150を定期的に実行して(S100)、APが定期的に送出しているビーコン信号(SQ100)を探索する(S100)。
ビーコン受信処理ルーチン150では、プロセッサ33は、端末状態管理テーブル310の接続AP314をチェックし、空き状態の無線回線インタフェース(INF)の有無を判定し(151)、もし、空きINFがあれば、このINFでAP探索処理160を実行する。図12で説明中の位置登録フェーズPH1では、MN30は初期状態にあり、図3(A)のエントリEN1、EN2が示すように、無線回線インタフェース31−1(ポート番号1)と31−2(ポート番号2)が、共に空き状態となっている。この場合、プロセッサ33は、AP探索処理160を実行し、端末状態管理テーブル310で最初に検出された空きINF、例えば、ポート番号1をもつ無線回線INF31−1でビーコン信号を受信して(161)、受信ビーコン信号から送信元を示すAP情報(AP識別子)を検出する(162)。AP識別子は、例えば、IPサブネットの識別情報と、IPサブネット内で各APに割り当てられたAP番号とからなっている。
プロセッサ33は、AP情報が検出できなければ、この処理ルーチン150を終了し、AP情報が検出された場合は、AP情報に基づいて、ビーコン送信元APが端末状態管理テーブル310に接続AP314として登録されたAPか否かを判定する(163)。初期状態では、ビーコン送信元APは接続中のAPではなく、且つ、MN30には接続中のAPがないため、プロセッサ33は、ビーコン送信元AP60−2に接続要求(Association Request)を送信して(164、図12のSQ101)、この処理ルーチンを終了する。空きINFが無くなった場合、あるいは、ステップ163で、既に接続中のAPからビーコンを受信した場合の処理については、後で詳述する。
MN30は、接続要求(Association Request)を送信した後(SQ101)、AP60−2からの応答を待つ。接続要求(Association Request)を受信したAP60−2は、接続を了承したことを示す接続応答(Association Response)をMN30に返送する(SQ102)。MN30は、AP60−2から接続応答(Association Response)を受信すると、図15に示すAssociation Response受信処理ルーチン190を実行する。
Association Response受信処理ルーチン190において、プロセッサ33は、端末状態管理テーブル310を参照して、接続中のAPの有無を判定する(191)。接続中APが無ければ、プロセッサ33は、図3(B)に示すように、ビーコン送信元のAP情報(AP60−2の識別子:AP−2)を端末状態管理テーブル310のエントリEN1に登録し、接続フラグを「1」に設定して(192、図12のS101)、このルーチンを終了する。この場合、AP60−2は、現用系APとして扱われる。以上の手順によって、MN30とAP60−2との間に、接続(Association)が確立される(SQ103)。
尚、無線回線INF31−1を介してAP60−2と既に接続中の状態で、例えば、AP60−3から接続応答(Association Response)を受信した場合は、プロセッサ33は、図3(D)のエントリEN2が示すように、ビーコン送信元APの識別子をエントリEN2に登録し、接続フラグを「0」に設定する(193)。この場合、AP60−3は、予備系APとして扱われる。
MN30は、AP60−2への接続が完了すると、WLAN10で使用すべきIPアドレスが既に取得済みか否かを判定し、もし、取得していなければ、DHCPサーバ70−1に対して、IPアドレスの取得要求(DHCP REQ)パケットを送信する(SQ104)。DHCP REQパケット(SQ104)を受信したDHCPサーバ70−1は、MN30にIPアドレス(「192.168.0.1」)を割り当て、上記IPアドレスを示すDHCP ACKパケットを返送する(SQ105)。
MN30は、DHCPサーバ70−1からDHCP ACKパケットを受信すると、図3(C)に示すように、端末状態管理テーブル381のテーブルエントリEN1に、DHCP ACKパケットから抽出したIPアドレスを登録する(S102)。この後、MN30は、SIPサーバ50に対して、位置登録のためのREGISTERパケットを送信し(SQ106)、図4(A)に示すように、接続管理テーブル320のSIPサーバ50と対応するテーブルエントリにおいて、ステータス・フィールド324を「200 OK受信待ち」状態にし、コマンド・シーケンス番号(CSeq)フィールド325に、上記REGISTERパケットのSIPメッセージに適用されたコマンド・シーケンス「101 REGISTER」を登録する(S111)。但し、接続管理テーブル320の更新は、REGISTERパケットの送信前に行ってもよい。
REGISTERパケットは、図23に示すように、宛先IPアドレスDAとして、SIPサーバ50のIPアドレス「138.85.28.1」、送信元アドレスSAとして、MN30のIPアドレス「192.168.0.1」を含み、ペイロード部にREGISTER用のSIPメッセージを含む。このSIPメッセージには、スタートラインにメッセージ種類「REGISTER」とMN30のSIP URI「MN@xxx.com」を含む。
SIPサーバ50のプロセッサ53は、MN30からREGISTERパケットを受信すると、図17に示すREGISTER受信処理ルーチン530を実行する。
REGISTER受信処理ルーチン530において、プロセッサ53は、受信パケットから、送信元MN30の識別子であるSIP URI(「MN@xxx.com」)とIPアドレス(「192.168.0.1」)を抽出し(531)、図8に示した端末位置情報管理テーブル510に、上記SIP URIが既に登録済みか否かを判定する(532)。REGISTERパケット送信元のSIP URIが端末位置情報管理テーブル56に未登録の場合、プロセッサ53は、図8(A)に示すように、端末位置情報管理テーブル56のSIP URIフィールド511と現IPアドレス・フィールド512に、MN30のSIP URIとIPアドレスを登録し(537、図12のS511)、応答メッセージ(200 OK)を含むパケットをREGISTERパケットの送信元MN30に返送する(538、図12のSQ107)。
SIPサーバ50が送信する200 OKパケットは、図24に示すように、スタートラインにメッセージ種別「200 OK」を含み、メッセージボディ部にREGISTERパケットと同一のCSeqを含んでいる。尚、REGISTERパケット送信元のSIP URIが既に登録済みの状態で、SIPサーバ50が新たなREGISTERパケットを受信した場合の処理については、後で詳述する。
MN30のプロセッサ33は、200 OKパケットを受信すると、呼制御ルーチン110の一部となる図16に示す200 OK受信処理ルーチン120を実行する。200 OK受信処理ルーチン120では、プロセッサ33は、受信した200 OKパケットから、CSeqを抽出し(121)、これが接続管理テーブル320に記憶されたCSeq325と一致するか否かを判定し(122)、CSeqが不一致の場合は、受信した200 OKパケットを廃棄して(135)、このルーチンを終了する。
CSeqが一致した場合、プロセッサ33は、CSeqの内容から、受信した200 OKパケットがREGISTERに対する応答か否かを判定する(123)。今回の例では、200 OKパケットは、SQ106で送信したREGISTERに対する応答となっているため、プロセッサ33は、接続管理テーブル320のステータス324をチェックし(124)、変更通知応答待ちになっていた場合は、ステータスを通話状態に変更し(136)、ステータス324が、図4(A)に示すように、200 OK待ちとなっていた場合は、接続管理テーブル320のステータスをクリアする(137、図12のS112)。プロセッサ33は、この後、SIPサーバ50にACKパケットを返送して(138、図12のSQ108)、このルーチンを終了する。
ステータス324が変更通知応答待ちになるのは、後述するように、MN30がCN40との通話状態にある期間内に、MN30の移動によってMA30のIPアドレスが変更され、MN30からSIPサーバ50に、IPアドレスの変更を示すINVITEパケットが送信された場合である。以下の説明では、通話状態にあるMN30が、SIPサーバ50に対して新たなIPアドレスを通知するために送信するINVITEパケットを特にRe−INVITEパケットと言う。200 OKパケットが、REGISTER以外のSIPメッセージに対する応答であった場合の処理125〜135については、後で詳述する。
以上のシーケンスによって、MN30の位置登録フェーズPH1が完了する。
図13は、MN30とCN40との接続フェーズPH2の通信シーケンスを示す。
MN30は、VoIP(Voice over Internet Protocol)でCN40と音声通話をする時、SIPのセッション接続要求メッセージであるINVITEメッセージを含むパケットをSIPサーバ50に送信し(SQ200)、接続管理テーブル320を更新する(S121)。MN30が送信するINVITEパケットは、図25に示すように、fromヘッダにMN30のSIP URI、ToヘッダにCN40のSIP URIを含み、cラインにMN30のIPアドレスを含んでいる。INVITEパケットを送信する時、接続管理テーブル320は、図4(B)に示すように、ステータス324が「200 OK待ち」状態を示し、CSeq325が、INVITEパケットに設定されたCSeqの値「102 INVITE」を含むように、更新される。
INVITEパケットを受信した時、SIPサーバ50のプロセッサ53は、図18に示すINVITE受信処理ルーチン540を実行する。
INVITE受信処理ルーチン540において、プロセッサ53は、受信したINVITEパケットから、送信元(MN)のSIP URI、IPアドレス(SA)およびUDPポート番号(UDP src)と、宛先(CN)のSIP URIおよびUDPポート番号(UDP dst)と、CSeqとを抽出し(541)、宛先SIP URIで端末位置情報管理テーブル510を検索して(542)、宛先SIP URIが、SIP URI511として登録済みか否かを判定する(543)。
宛先SIP URIが端末位置情報管理テーブルに未登録の場合、プロセッサ53は、例えば、図示しないSIPアドレス管理テーブルを参照して、宛先SIP URIを管理している他のSIPサーバが既知か否かを判定し(549)、既知の場合は、受信したINVITEパケットを他のSIPサーバに転送し(550)、そうでなければ、受信したINVITEパケットを廃棄して(551)、このルーチンを終了する。
宛先SIP URIが端末位置情報管理テーブルに登録されていた場合、プロセッサ53は、宛先端末CNのIPアドレスが、宛先SIP URIと対応付けて、端末位置情報管理テーブル510に登録済みか否かを判定する(544)。宛先端末CNのIPアドレスが端末位置情報管理テーブル510に登録されていた場合、プロセッ53は、図9(A)に示すように、接続管理テーブル520に、INVITEパケットから抽出した送信元(MN)のSIP URI、IPアドレスおよびUDPポート番号をMN情報として登録し、INVITEパケットから抽出した宛先装置(CN)のSIP URIおよびUDPポート番号と、端末位置情報管理テーブル510が示すCNのIPアドレスをCN情報として登録し、ステータス527を「200 OK待ち」、CSeq528を受信パケットのCseqの値「102 INVITE」に設定して(547、図13のS521)、宛先端末CNにINVITEパケットを転送する(548、図13のSQ201)。
もし、宛先端末CNのIPアドレスが端末位置情報管理テーブル510に登録されていなかった場合、プロセッ53は、例えば、ロケーションサーバ90に宛先SIP URIと対応するIPアドレスを問合せ(545)、ロケーションサーバ90から通知されたIPアドレスを宛先SIP URIと対応付けて端末位置情報管理テーブル510に登録(546)した後、ステップ547、548を実行する。
SIPサーバ(50)が宛先端末CNに転送するINVITEパケットは、図26に示すように、INVITEメッセージにSIPサーバを経由したことを示すViaヘッダを追加し、DAをCN40のIPアドレス、SAをSIPサーバ50のIPアドレスに書き換えたものとなっている。追加されたViaヘッダには、SIPサーバのSIP URIが設定されている。
CN40のプロセッサ43は、SIPサーバ50からINVITEパケットを受信すると、図21に示すINVITE受信処理ルーチン420を実行する。
INVITE受信処理ルーチン420において、プロセッサ43は、受信したINVITEパケットから、SIPサーバおよび送信元MNのSIP URIおよびIPアドレスと、CSeqを抽出(421)した後、INVITEメッセージに変更フラグ(Change-Flag)が含まれているか否かを判定する(422)。
変更フラグは、後で詳述するように、MN30が移動先で新たなIPアドレスを取得した時、このIPアドレスをCNに通知するために送信するRe−INVITEメッセージに設定される情報であり、今回、CN40が受信した通常のINVITEメッセージは変更フラグを含んでいない。
従って、今回は、プロセッサ43は、図6(A)に示すように、接続管理テーブル480に、SIPサーバ情報(481、482)として、受信パケットから抽出したSIPサーバのSIP URIとIPアドレスを含み、MN情報(483、484)として、受信パケットから抽出したMN30のSIP URIとIPアドレスを含み、ステータス585を「ACK待ち」、CSeq486に受信パケットのCSeqの値「102 INVITE」を含む新たなテーブルエントリを登録し(426、図13のS421)、SIPサーバ50にINVITEに対する応答メッセージ200 OKを含むパケットを送信して(427、図13のSQ202)、このルーチンを終了する。
CN40が送信する200 OKメッセージは、図27に示すように、メッセージ種類(200 OK)を示すスタートラインと、CN40のIPアドレスを示すcライン以外は、INVITEメッセージと同じ内容となっている。
SIPサーバ50のプロセッサ53は、CN40から200 OKパケットを受信すると、図19に示す200 OK受信処理ルーチン560を実行する。
200 OK受信処理ルーチン560において、プロセッサ53は、受信した200 OKパケットのFromヘッダが示す送信元(MN)のSIP URIと、Toヘッダが示す宛先端末(CN)のSIP URIと、CSeqを抽出し(561)、送信元SIP URIで図9に示す接続管理テーブル520を検索し(562)、SIP URI521、524が送信元のSIP URI、宛先端末(CN)のSIP URIに一致したテーブルエントリが登録されているか否かを判定する(563)。もし、これらのSIP URIに一致したテーブルエントリが接続管理テーブル520に登録されていなかった場合、プロセッサ53は、受信した200 OKパケットを廃棄し(569)、このルーチンを終了する。
接続管理テーブル620に目的エントリが登録されていた場合、プロセッサ53は、受信パケットから抽出したCSeqが、目的エントリのCSeq528と一致しているか否かを判定し(564)、一致していなければ、受信した200 OKパケットを廃棄し(569)、このルーチンを終了する。CSeqが一致した場合、プロセッサ53は、受信パケットから抽出したCSeqの内容から、今回受信した200 OKパケットが、BYEメッセージに対する応答パケットか否かを判定する(565)。
200 OKパケットが、BYEメッセージに対する応答パケットの場合、プロセッサ53は、接続管理テーブル620から、今回検索されたテーブルエントリ(目的エントリ)を削除して(567)、200 OKパケットをBYEメッセージの送信元(MN30)に転送して(568)、このルーチンを終了する。200 OKパケットが、BYEメッセージに対する応答パケットではなかった場合、すなわち、今回の受信パケットのように、200 OKパケットが、INVITEメッセージに対する応答パケットの場合、プロセッサ53は、図9(B)に示すように、上記目的エントリのステータス527を「ACK待ち」に変更して(566、図13のS522)、200 OKパケットをINVITEメッセージの送信元(MN30)に転送して(568、図13のSQ203)、このルーチンを終了する。
SIPサーバ50からMN30に転送される200 OKパケットは、図28に示すように、CN40から受信した200 OKパケットから、SIPサーバ50のViaヘッダを除去し、IPヘッダの宛先IPアドレスDAと、送信元IPアドレスSAを書き換えたものとなっている。
MN30のプロセッサ33は、200 OKパケットを受信すると、図16に示した200 OK受信処理ルーチン560を実行する。今回受信した200 OKパケットは、通常のINVITEに対する応答パケットであるため、ステップ123の判定結果が否(NO)となり、プロセッサ33は、受信した200 OKパケットが、BYEに対する応答パケットか否かを判定する(125)。200 OKパケットが、BYEに対する応答パケットの場合は、プロセッサ33は、接続管理テーブル320から、受信した200 OKパケットのCSeqと一致したテーブルエントリを削除し(134)、受信した200 OKパケットを廃棄して(135)、このルーチンを終了する。BYEパケットの発行については、後で詳述する。
200 OKパケットが、INVITEに対する応答パケットの場合、ステップ125の判定結果が否(NO)となるため、プロセッサ33は、受信した200 OKパケットのToヘッダから、CNのSIP URIを抽出して(126)、SIP URIが、接続管理テーブル320に記憶されたCNのSIP URI322と一致するか否かを判定する(127)。CNのSIP URIが不一致の場合、プロセッサ33は、受信した200 OKパケットを廃棄して(135)、このルーチンを終了する。
CNのSIP URIが一致した場合、プロセッサ33は、受信した200 OKパケットのcラインが示すCNのIPアドレスが、接続管理テーブル320に登録済みか否かを判定する(128)。CNのIPアドレスが既に登録済みであれば、プロセッサ33は、接続管理テーブル320のステータス324が、変更通知応答待ち状態になっているか否かを判定する(130)。変更通知応答待ちは、後で詳述するように、MN30が新たなIPアドレスをCN40に通知するためのRe−INVITEパケットを送信した場合に発生する。CNのIPアドレスが接続管理テーブル320に未登録の場合、プロセッサ33は、受信した200 OKパケットのcラインが示すCNのIPアドレスを接続管理テーブル320にIPアドレス323として登録(129)した後、ステータスの判定(130)を実行する。
今回は、MN30が受信した200 OKパケットは、通常のINVITEに対する応答パケットであり、接続管理テーブル320のステータス324は、図4(B)に示すように、通常の200 OK待ち状態となっている。この場合、プロセッサ33は、図4(C)に示すように、接続管理テーブル320のステータスを通話状態に変更し(131、図13のS122)、SIPサーバ50に、図29に示すACKパケットを送信して(138、図13のSQ204)、このルーチンを終了する。
SIPサーバ50のプロセッサ53は、200 OKに対するACKパケットを受信すると、図20に示すACK受信処理ルーチン570を実行する。
ACK受信処理ルーチン570において、プロセッサ53は、受信したACKパケットから、Fromヘッダが示す送信元(MN)のSIP URIと、Toヘッダが示す宛先(CN)のSIP URIと、IPヘッダのSAが示す送信元(MN)のIPアドレスと、CSeqを抽出し(571)、宛先SIP URIで接続管理テーブル520を検索する(572)。検索の結果(573)、接続管理テーブル520に、CNのSIP URI524が宛先SIP URIと一致する目的のテーブルエントリがなければ、プロセッサ53は、受信したACKパケットを廃棄して(577)、このルーチンを終了する。
接続管理テーブル520に目的のテーブルエントリがあった場合、プロセッサ53は、ACKパケットのCSeqが、上記テーブルエントリのCSeq528と一致するか否かを判定し(574)、不一致の場合は、受信したACKパケットを廃棄して(577)、このルーチンを終了する。CSeqが一致した場合、プロセッサ53は、図9(C)に示すように、接続管理テーブルのステータス527を「通話」状態に変更し(575、図3のS523)、ACKパケットを宛先端末(CN40)に転送して(576、図13のSQ205)、このルーチンを終了する。SIPサーバ50からCN40に転送されるACKパケットは、図30に示すように、MN30から受信したACKパケットにViaヘッダを追加し、IPヘッダの宛先アドレスDAと送信元IPアドレスSAを書き換えたものとなっている。
CN40のプロセッサ43は、SIPサーバ50からACKパケットを受信すると、図22に示すACK受信処理ルーチン430を実行する。
ACK受信処理ルーチン430において、プロセッサ43は、受信したACKパケットから送信元(MN)のSIP URIとCSeqを抽出し(431)、抽出されたSIP URIを検索キーとして、接続管理テーブル480を検索する(432)。検索の結果(433)、接続管理テーブル480に、MNのSIP URI483が検索キーと一致する目的エントリが存在していなかった場合、プロセッサ43は、受信したACKパケットを廃棄して(436)、このルーチンを終了する。
接続管理テーブル480から目的エントリを検索できた場合、プロセッサ43は、ACKパケットから抽出したCSeqと上記目的エントリのCSeq486とを照合し(434)、CSeqが一致していなければ、受信したACKパケットを廃棄して(436)、このルーチンを終了する。CSeqが一致した場合、プロセッサ43は、図6(B)に示すように、接続管理テーブルのステータス485を「通話」状態に変更して(435、図13のS422)、このルーチンを終了する。
以上の手順によって、接続フェーズPH2が完了し、移動端末MN30が、現用系の無線回線インタフェース31−1(INF1)を介して、通信相手端末CN40とRTPの音声通話状態(SQ206−1、SQ206−2)に移行できる。
次に、図31、図32を参照して、CN40と音声通話状態にあるMN30が、WLAN10からWLAN20に移動中に実行される通信シーケンス(移動中フェーズPH3)について説明する。
CN40と音声通話状態にあるMN30は、図31に示すように、移動中にも周期的にAP探索を実行している(S100)。MN30が、WLAN10からWLAN20に向かって移動すると、WLAN10内で接続中のAP60−2から送信されたビーコン信号(SQ301)以外に、WLAN20内に位置したAP60−3から送信された新たなビーコン信号(SQ302)が受信可能となる。
MN30がWLAN20に接近すると、AP60−3から送信された新たなビーコン信号が、図14に示したビーコン受信処理ルーチン150のAP探索160において、空きインタフェース31−2で受信される(161)。MN30のプロセッサ33は、受信したビーコン信号からAP情報(AP識別子)を抽出し(162)、ビーコン送信元(AP−3)のAP識別子「AP−3」が、端末状態管理テーブル310に接続AP314として登録されたAP60−2の識別子「AP−2」とは異なることを検知すると(163)、ビーコン送信元のAP60−3に接続要求(Association Request)を送信する(164、図31のSQ303)。
接続要求(Association Request)を受信したAP60−3は、接続を了承すると、MN30に接続応答(Association Response)を送信する(SQ304)。MN30のプロセッサ33は、AP60−3からの接続応答(Association Response)を受信すると、図15に示したAssociation Response受信処理ルーチン190を実行する。
Association Response受信処理ルーチン190において、プロセッサ33は、端末状態管理テーブル310の接続AP314を参照して、既に接続中のAPがあるか否かを判定する(191)。今回は、接続AP314として、AP60−2の識別子「AP−2」が登録されているため、プロセッサ33は、図3(D)に示すように、接続管理テーブル310の空きINF(ポート番号:2)と対応するテーブルエントリEN2の接続AP314に、ビーコン送信元AP60−3の識別子「AP−3」を登録し、接続フラグ315に、予備系を示す「0」を設定して(193、図31のS101)、このルーチンを終了する。以上のシーケンスによって、MN30とAP60−3との間に接続(Association)が確立される(SQ305)。
MN30は、端末状態管理テーブルに登録されたAP60−3、AP6−2のAP識別子から、AP60−3がAP60−2とは異なったWLAN(IPサブネット)20に所属していることが判明すると、WLAN20内で使用すべき新たなIPアドレスを取得するために、DHCPサーバ70−2に対して、DHCP REQパケット を送信する(SQ306)。
DHCPサーバ70−2は、DHCP REQに応答して、MN30にIPアドレス「172.21.22.25」を割り当て、このIPアドレスを示すDHCP ACKパケットをAP60−3に送信する(SQ307)。MN30は、DHCP ACKパケットを受信すると、図3(E)に示すように、DHCP ACKパケットから抽出した新たなIPアドレス「172.21.22.25」を端末状態管理テーブル310に登録する(S102)。尚、MN30の移動先APが、例えば、AP30−1にように、AP60−2と同じWLAN10に所属していた場合、移動先で新たなIPアドレスを取得する必要はない。この場合、端末状態管理テーブル310のエントリEN1に登録されているIPアドレスをエントリEN2にコピーすればよい。
MN30のプロセッサ33は、AP60−2および60−3と接続された状態でも、ビーコン受信処理ルーチン150を定期的に実行し、AP60−2のビーコン信号(SQ308)とAP60−3のビーコン信号(SQ309)を監視する。MN30が、AP60−2、60−3と接続状態にある間は、空きインタフェースが無くなっているため、図14に示したビーコン受信処理ルーチン150において、プロセッサ33は、無線回線切替え判定170と無線回線の解放判定180を実行する。
無線回線切替え判定170では、プロセッサ33は、現用系INFで接続中のAP60−2からのビーコン受信レベルS1と、予備系INFで接続中のAP60−3からのビーコン受信レベルS2を検出し(171、172)、S1とS2を比較する(173)。
プロセッサ33は、現用系の受信レベルS1が予備系の受信レベルS2以上であれば、無線回線切替え判定170を終了して、無線回線解放判定180を実行する。予備系の受信レベルS2が、現用系の受信レベルS1がよりも大きくなった時、プロセッサは、図3(F)に示すように、端末状態管理テーブル310の接続フラグ315の状態を書き替えて(174)、AP60−3を現用系、AP60−2を予備系に切替える(図31のS103)。このように、現用系となるAPを電波状況の良いAPに切替えることによって、MN30は、電波状態が良好なAPを経由してCN40との音声通話を継続することが可能となる。
端末状態管理テーブル310上で現用系と予備系のAPを切替えたプロセッサ33は、接続管理テーブル320のステータス324をチェックする(175)。プロセッサ33は、ステータス324が通話状態でなければ、無線回線解放判定180を実行する。ステータス324が通話状態となっていた場合、プロセッサ33は、端末状態管理テーブル310に登録されたエントリEN1、EN2のIPアドレス313を比較して、IPアドレス切替えの要否を判定する(176)。IPアドレス切替えの必要がなければ、プロセッサ33は、無線回線解放判定180を実行し、IPアドレスが切り替わる場合は、音声通話中のCN40に対して、新たなIPアドレスを通知するためのRe−INVITEパケットを送信(177、図32のSQ310)した後、無線回線解放判定180を実行する。Re−INVITEパケット送信後の通信シーケンスについては、図32〜図36を参照して、後で詳述する。
無線回線解放判定180では、プロセッサ33は、ビーコン受信レベル(S1またはS2)を閾値THと比較し(181)、ビーコン受信レベルがTH以上であれば、今回のビーコン受信処理ルーチン150を終了する。ビーコン受信レベルが閾値THよりも小さくなった時、プロセッサ33は、端末状態管理テーブル310において、ビーコン送信元APの識別子を接続AP314から削除し、接続フラグ315を「0」にして(182)、ビーコン送信元APに接続(Association)解除パケットを送信する(183)。
例えば、AP60−2からのビーコン受信レベルが閾値THよりも低下した場合、無線回線解放判定180を実行することによって、端末状態管理テーブル310は、図3(G)の状態になる。無線回線解放判定180は、MN30に空きインタフェースがある時も、空きインタフェースで受信された接続中APのビーコン信号に対して実行される。
MN30が、WLAN10からWLAN20に移動すると、SIP URIとMACアドレスには変化はないが、MN30のIPアドレスが、旧IPアドレス「192.168.0.1」から、WLAN20で有効な新IPアドレス「172.21.22.25」に切り替わる。本実施例では、CN40と通話状態にあるMN30が、端末状態管理テーブル310上で現用系APを切替えたとき(S103)、図32に示すように、Re−INVITEパケットの送信(SQ310)によって、MN30のIPアドレスの変更をCN40に通知する。
Re−INVITEパケットは、例えば、図33に示すように、SIPメッセージのスタートラインに、図25に示した通常のINVITEと同様のメッセージ種別を含む。Re−INVITEのSIPメッセージには、本実施例では、これがIPアドレスの変更を通知するためのものであることを示すために、変更フラグ(Change-Flag)1000が付加してある。変更フラグには、MN30がこれまで使用してきた旧IPアドレス(変更前のIPアドレス)の値「192.168.0.1」が記述され、新たなIPアドレスの値「172.21.22.25」は、cラインに記述されている。また、Re−INVITEパケットのIPヘッダは、宛先IPアドレスDAとして、CN40のIPアドレスが設定されている。
図33に示したRe−INVITEパケットでは、IPヘッダの送信元IPアドレス(SA)1001として、新IPアドレス「172.21.22.25」が使用されているが、旧IPアドレスを変更フラグ1000で通知する代わりに、送信元IPアドレス(SA)に旧IPアドレス「192.168.0.1」を使用して、Re−INVITEパケットをAP60−2経由でCN40に転送するようにしてもよい。
MN30は、Re−INVITEパケットを送信(SQ310)した後、図4(D)に示すように、接続管理テーブル320のCSeq325に、Re−INVITEで使用されたCSeqと同じ値「103 INVITE」を設定し、ステータス324を「変更通知応答待ち」状態に変更する(S123)。但し、接続管理テーブル320の更新(S123)は、Re−INVITEパケットの送信に先立って行うようにしてもよい。
CN40のプロセッサ43は、MN30からRe−INVITEパケットを受信すると、図21に示したINVITE受信処理ルーチン420を実行する。
INVITE受信処理ルーチン420において、プロセッサ43は、受信パケットから送信元のSIP URIおよびIPアドレスと、CSeqを抽出(421)した後、受信パケットのSIPメッセージに変更フラグ(Change-Flag)が付加されているか否かを判定する(422)。SIPメッセージが変更フラグを含み、受信パケットがRe−INVITEパケットと判定された場合、プロセッサ43は、受信パケットから抽出された送信元(MN30)のSIP URIで、図6に示す接続管理テーブル480を検索し、送信元SIP URIがSIP URI483として登録されているか否かを判定する(423)。
送信元SIP URIが未登録の場合、プロセッサ43は、受信したRe−INVITEパケットを廃棄して(428)、このルーチンを終了する。送信元SIP URIが接続管理テーブル480に登録されていた場合、プロセッサ43は、Re−INVITEパケットから、MN30の新、旧のIPアドレスを抽出し(424)、図6(C)に示すように、接続管理テーブル480の送信元SIP URIと対応するテーブルエントリにおいて、MNのIPアドレス484を旧IPアドレスから新IPアドレスに変更し、CSeq486の値を更新する(425、図32のS423)。この後、プロセッサ43は、Re−INVITEパケットの送信元MNに対して、図34に示す応答パケット(200 OK)を送信して(427、図31のSQ311)、このルーチンを終了する。
MN30のプロセッサ33は、CN40から200 OKパケットを受信すると、図16に示した200 OK受信処理ルーチン120を実行する。
受信した200 OKパケットが、Re−INVITEに対する応答パケットの場合、200 OK受信処理ルーチン120のステップ123、125の判定結果が否(NO)となるため、プロセッサ33は、受信した200 OKパケットのToヘッダから、CNのSIP URIを抽出し(126)、CNのSIP URIが、接続管理テーブル320に記憶されたSIP URI322と一致するか否かを判定する(127)。CNのSIP URIが不一致の場合、プロセッサ33は、受信した200 OKパケットを廃棄して(133)、このルーチンを終了する。
CNのSIP URIが一致した場合、プロセッサ33は、受信した200 OKパケットのcラインが示すCNのIPアドレスが、接続管理テーブル320にIPアドレス323として登録済みか否かを判定する(128)。本実施例の場合、図4(D)に示すように、CNのIPアドレスが接続管理テーブル320に既に登録済みとなっているため、プロセッサ33は、接続管理テーブル320のステータス325が、変更通知応答待ち状態か否かを判定する(130)。Re−INVITEパケットを送信した時、ステータス325が変更通知応答待ち状態となっており、MN30は、CN40からRe−INVITEに対する200 OKパケットを受信したことによって、新たなIPアドレスでCN40と通信することが可能となる(SQ312−1、SQ312−2)。
本実施例によれば、MN30がWLAN10でCN40と通信中に、WLAN20で使用すべき新たなIPアドレスを取得しておき、MN30がWLAN10からWLAN20内に移動した時点で、CN40に新たなIPアドレスを通知し、WLAN20内で有効となる新たなIPアドレスを使用してCN40と通信する(SQ312−1、SQ312−2)ようにしているため、WLAN10からWLAN20へのMN30のハンドオーバを短時間で完了することが可能となる。
この場合、MN30は、SIPサーバ50にも新たなIPアドレスを通知(位置登録)しておく必要がある。そこで、ステータス325が変更通知応答待ち状態となっていることを確認したMN30のプロセッサ33は、SIPサーバ50にREGISTERパケットを送信し(132、図32のSQ313)、図4(E)に示すように、接続管理テーブル320のCSeq325に、REGISTERパケットに適用されたCSeqの値を設定し(133、図32のS124)、200 OKパケットの送信元であるCN40にACKパケットを返送して(138、図32のSQ314)、このルーチンを終了する。
ここで送信されるREGISTERパケットは、図35に示すように、スタートラインにMN30のSIP URIを含み、メッセージボディに、MN30の旧IPアドレスを記述した変更フラグ(Change-Flag)1002を含み、IPヘッダの送信元アドレスSAに新IPアドレスを含んでいる。但し、IPヘッダの送信元アドレスSAに旧IPアドレスを適用して、変更フラグに新たなIPアドレスを記述するようにしても良い。
SIPサーバ50のプロセッサ53は、MN30からREGISTERパケットを受信すると、図17に示したREGISTER受信処理ルーチン530を実行する。今回は、図8(A)に示すように、REGISTERパケット送信元(MN30)のSIP URI「SIP:MN@xxx.com」が、端末位置情報管理テーブル56に登録済となっている。
そこで、プロセッサ53は、受信パケットが変更フラグ付きのREGISTERパケットか否かを判定する(533)。もし、変更フラグ付きのREGISTERパケットでなければ、プロセッサ53は、MNが新たな位置登録をしたのものと判断して、端末位置情報管理テーブル56から、MN30のSIP URIと対応する旧エントリを削除(536)した後、受信パケットが示すMN30のSIP URIとIPアドレスとの対応関係を端末位置情報管理テーブル56に登録して(537)、このルーチンを終了する。この場合、MN30のIPアドレスは、現IPアドレス512として、端末位置情報管理テーブル56に登録される。
SIPサーバ50が今回受信したREGISTERパケットは、変更フラグ付きのRe−INVITEパケットであるため、プロセッサ53は、図8(B)に示すように、端末位置情報管理テーブル56に現IPアドレス512として登録されていたMN30のIPアドレスを旧IPアドレス513に記憶し、Re−REGISTERパケットから抽出したMN30の新IPアドレスを現IPアドレス512として登録する(534、図32のS524)。この後、プロセッサ53は、接続管理テーブル520において、図9(D)に示すように、MN30のIPアドレス522を新IPアドレスに変更し(535、図32のS525)、Re−REGISTERパケットの送信元であるMN30に、図36に示す応答パケット(200 OK)を送信して(538、図32のSQ315)、このルーチンを終了する。
MN30のプロセッサ33は、SIPサーバ50から200 OKパケットを受信すると、図16に示す200 OK受信処理ルーチン120を実行する。今回受信した200 OKパケットは、REGISTER(Re−REGISTER)に対する応答パケットであるため、プロセッサ33は、ステップ124で、接続管理テーブル320のステータス324をチェックする。接続管理テーブル320のステータス324は、図4(E)に示すように、変更通知応答待ち状態となっている。そこで、プロセッサ33は、図4(F)に示すように、ステータス324を通話状態に戻して(136、図32のS125)、200 OKパケットの送信元であるSIPサーバ50にACKパケットを返送して(138、図32のSQ316)、このルーチンを終了する。
MN30がWLAN10からWLAN20にハンドオーバされた後も、プロセッサ33は、図14に示したビーコン受信処理ルーチン150を定期的に実行している。MN30が、ポート番号「1」をもつ無線回線インタフェース31−1でWLAN10内のAP60−2と接続された状態で、WLAN20の内部に移動すると、AP60−2から送信されたビーコン信号(SQ317)の受信レベルS1が次第に低下する。
プロセッサ33は、ビーコン受信処理ルーチン150の実行の都度、無線回線切替え判定170と無線回線解放判定180を実行し(図32のS104)、無線回線解放判定180で、AP60−2のビーコン受信レベルS1が閾値THよりも低下したことを検出すると(181)、図3(G)に示すように、端末状態管理テーブル310のテーブルエントリEN1から、WLAN10で割り当てられたIPアドレス「192.168.0.1」を削除し、接続AP314を空き状態にして(182、図32のS130)、AP60−2に接続解除(Association解除)パケットを送信する(183、図32のSQ319)。以後、MN30は、AP60−2を接続APとして、空き状態となった無線回線インタフェース31−1でAP探索160を実行しながら、WLAN20内を移動することになる。
次に、図37〜図43を参照して、切断フェーズ(PH4)について説明する。
図37に示すように、MN30のユーザが音声通信(SQ312−1、SQ312−2)を終了すると、MN30からSIPサーバ50に、BYEパケットが送信される(SQ400)。BYEパケットは、図40に示すように、スタートラインにCN40のIPアドレス「192.168.100.1」、FromヘッダとToヘッダにそれぞれMN30とCN40のSIP URI「SIP:
[email protected]」と「SIP:
[email protected]」を記述し、IPヘッダの送信元アドレス(SA)として、MN30のIPアドレス「172.21.22.25」を含んでいる。
MN30のプロセッサ33は、BYEパケットを送信すると、図4(G)に示すように、接続管理テーブル320のステータス324を「200 OK待ち」状態にし、CSeq325に、BYEパケットのSIPメッセージに適用したCSeqの値「105 BYE」を記憶しておく(S141)。但し、接続管理テーブル320は、BYEパケットの送信に先立って更新してもよい。
SIPサーバ50のプロセッサ53は、BYEパケットを受信すると、図38に示すBYE受信処理ルーチン580を実行する。BYE受信処理ルーチン580において、プロセッサ53は、受信したBYEパケットから、送信元(MN30)と宛先端末(CN40)のSIP URIおよびIPアドレスと、CSeqを抽出し(581)、送信元SIP URIと宛先端末SIP URIを検索キーとして、接続管理テーブル520を検索する(582)。テーブル検索の結果(583)、接続管理テーブル520に、SIP URI521、524が検索キーと一致するエントリが無かった場合、プロセッサ53は、受信したBYEパケットを廃棄して(586)、このルーチンを終了する。
接続管理テーブル520から目的のテーブルエントリを検索できた場合、プロセッサ53は、図9(E)に示すように、検索されたテーブルエントリのステータス527を「200 OK待ち」状態に変更し、CSeq528にBYEパケットから抽出されたCSeqの値「105 BYE」を記憶する(584、図37のS541)。この後、プロセッサ53は、BYEパケットを宛先端末(CN40)に転送して(585、図37のSQ401)、このルーチンを終了する。SIPサーバ50からCN40に転送されるBYEパケットは、図41に示すように、SIPサーバ50を示すViaヘッダが追加され、IPヘッダの宛先IPアドレス(DA)と送信元IPアドレス(SA)が書き換えてある。
CN40のプロセッサ43は、BYEパケットを受信すると、図39に示すBYE受信処理ルーチン440を実行する。BYE受信処理ルーチン440において、プロセッサ43は、受信したBYEパケットから、送信元SIPサーバのIPアドレスと、BYE要求元(MN)のSIP URIを抽出し(441)、BYE要求元SIP URIを検索キーとして、接続管理テーブル480を検索する(442)。検索の結果(443)、接続管理テーブル480に、SIP UR483が検索キーと一致するエントリが無かった場合、プロセッサ43は、受信したBYEパケットを廃棄して(446)、このルーチンを終了する。
接続管理テーブル480から目的のテーブルエントリを検索できた場合、プロセッサ43は、図6(D)に示すように、検索されたテーブルエントリから送信元MNの情報(SIP URI483、IPアドレス494)と、ステータス485、CSeqを削除し(444、図37のS441)、送信元SIPサーバ50に応答パケット(200 OK)を送信して(445、図37のSQ402)、このルーチンを終了する。CN40が送信する200 OKパケットは、図42に示すように、受信したBYEパケットと同じCSeqを含んでいる。
SIPサーバ50のプロセッサ53は、CN40から200 OKパケットを受信すると、図19に示した200 OK受信処理ルーチン560を実行する。200 OK受信処理ルーチン560において、プロセッサ53は、ステップ561〜ステップ564を実行した後、判定ステップ565で、受信パケットのCSeqから、今回の受信パケットをBYEパケットに対する応答パケットと判断する。
この場合、プロセッサ53は、接続管理テーブル520が示すMNのIPアドレスをIP宛先アドレス(DA)として記憶した状態で、図9(F)に示すように、接続管理テーブル520から、検索されたエントリを削除し(567、図37のS542)、BYE要求元のMN30に対して200 OKパケットを送信する(568、図37のSQ403)。SIPサーバが送信する200 OKパケットは、図43に示すように、CN40から受信した200 OKパケットから、SIPサーバ50のViaヘッダを除去し、送信元IPアドレスと宛先IPアドレスを書き換えたものとなっている。
MN30のプロセッサ33は、SIPサーバ50から200 OKパケットを受信すると、図16に示した200 OK受信処理ルーチン120を実行する。プロセッサ33は、200 OK受信処理ルーチン120のステップ123、125で、受信パケットのCSeqから、今回の受信パケットをBYEパケットに対する応答パケットと判断する。この場合、プロセッサ33は、接続管理テーブル320から、図4(G)に示したSIP URI322〜CSeq325の登録情報を削除し(134、図37のS142)、受信した200 OKパケットを廃棄して(135)、このルーチンを終了する。これによって、切断フェーズPH4が完了する。
次に、本発明の第2実施例について説明する。
第2実施例では、MN30が、無線回線インタフェースを1個だけ備えている。従って、MN30の端末状態管理テーブル310では、例えば、無線回線インタフェース31−1と対応した1つのテーブルエントリで、IPアドレス313と、接続AP314と、接続フラグ315を管理する。MN30、CN40、SIPサーバ50は、第1実施例と同様、それぞれ接続管理テーブル320、480、520を備えている。
本実施例は、MN30が、CN40と通話中に、WLAN10からWLAN20にハンドオーバする際の通信シーケンスに特徴がある。以下、図44を参照して、第2実施例における移動中フェーズPH3(1)の通信シーケンスについて説明する。
MN30が、CN40と音声通話中(SQ206−1、SQ206−2)に、図1に示したWLAN10内のAP60−2の無線エリア(WLAN12)から、WLAN20内の無線エリア(WLAN21)に向かって移動したと仮定する。MN30が、WLAN21に近づくに従って、AP60−2からのビーコン信号(SQ317)の受信電波が弱くなる。
本実施例では、MN30のプロセッサ33は、図45に示すビーコン受信処理ルーチン1500を定期的に実行して、ビーコン信号の受信レベルを監視している。ビーコン受信処理ルーチン1500において、プロセッサ33は、無線回線インタフェース31−1でビーコン信号を受信して(152)、受信したビーコン信号から、送信元AP情報(AP識別子)を抽出する(162)。ビーコン信号からAP情報を抽出できなければ、プロセッサ33は、このルーチンを終了する。
プロセッサ33は、抽出されたAP情報を端末状態管理テーブル310に登録された接続APと比較して、ビーコンの送信元APが、接続中のAPか否かを判定する(163)。ビーコン送信元APが、接続中のAPでなかった場合、プロセッサ33は、端末状態管理テーブル310の接続フラグ315をチェックする(165)。プロセッサ33は、接続フラグが「1」であれば、このルーチンを終了し、接続フラグが「0」の場合、ビーコン送信元APに対して、接続要求(Association Request)を送信して(166)、このルーチンを終了する。これらの動作は、図14で説明したAP探索160に相当している。
ビーコン送信元APが接続中のAPの場合、プロセッサ33は、ビーコンの受信レベルS1を閾値THと比較し(181)、受信レベルS1が閾値TH1以上であれば、このルーチンを終了し、受信レベルS1が閾値TH1より低下していた場合は、端末状態管理テーブル310の登録データ313〜315を初期化する(182)。この後、プロセッサ33は、接続管理テーブル320のステータス324をチェックし、MN30が通話中でなければ、ビーコン送信元APに対して、接続解除(Association解除)を送信して(188)、このルーチンを終了する。
本実施例の1つの特徴は、MN30がCN40と通話中に、接続APからのビーコン受信レベルが閾値TH1より低下した場合、プロセッサ33が、CN40とSIPサーバ50にハンドオーバを予告した後、移動先のWLANで、APへの接続手順と、SIPサーバ50へのRe−INVITEパケットの送信を行うようにしたことにある。
本実施例では、MN30(プロセッサ33)が、ハンドオーバ予告のために送信(SQ321)するパケットを「Handover Start」パケットと呼ぶ。プロセッサ33は、CN40とSIPサーバ50にHandover Startパケットを送信(185、186、図44のSQ321)した後、応答パケット(OK)が受信されるのを待ち(187)、CN40またはSIPサーバ50の何れかによって送信された応答パケット(SQ322)を受信すると、ビーコンの送信元APに対して、接続解除(Association解除)を送信して(188、図44のSQ323)、このルーチンを終了する。但し、ハンドオーバによる呼の中断時間を短縮するために、プロセッサ33は、応答パケット(OK)を受信する前に、接続解除(Association解除)を送信するようにしてもよい。
MN30のプロセッサ33は、移動中にも定期的にビーコン受信処理1500を実行し、ハンドオーバ先となるAPを探索している(図44のS100)。プロセッサ33は、WLAN20のAP60−3から送信されたビーコン信号(SQ302)を受信すると、ビーコン受信処理ルーチン1500の判定ステップ162、163、165を経て、ステップ166で、AP60−3に接続要求(Association Request)を送信する(図44のSQ303)。
接続要求を受信したAP60−3は、MN30に対して接続応答(Association Response)を返送する(SQ304)。本実施例では、MN30は、WLAN20に属したAP60−3にハンドオーバされる前に、WLAN10に属したAP60−2との接続が解除されているため、MN30が実行するAssociation Response受信処理190では、接続応答の送信元となったAPが、常に現用系として端末状態管理テーブル310に登録される(S101)。
以下、図31で説明した第1実施例と同様の手順(SQ305、SQ306、SQ307)で、MN30がWLAN20で取得した新たなIPアドレスが、端末状態管理テーブル310に登録される(S102)。移動先のWLAN20で新たなIPアドレスを取得したMN30は、CN40に対してRe−INVITEを送信する。その後は、図32で説明した第1実施例と同様のシーケンスが実行されるため、ここでの詳細説明は省略する。
本実施例では、MN30は、Handover Startパケットを送信(SQ321)することによって、CN40に呼が一時的に途切れることを予告し、通話の途中でCN40が呼を切断するのを防止することができる。また、SIPサーバ50に対して、ハンドオーバのために呼が一時的に途切れることを予告することによって、SIPサーバ50が、ハンドオーバ中のMN30に、他のセッション接続要求を誤って接続するのを防止することを可能となる。
CN40は、MN30から送信されたHandover Startパケットを受信すると、図6に示した接続管理テーブル480のステータス485をハンドオーバ状態に書き換え(S431)、MN30に応答パケット(OK)を送信する(SQ322)。同様に、SIPサーバ50も、MN30から送信されたHandover Startパケットを受信すると、図9に示した接続管理テーブル520のステータス527をハンドオーバ状態に書き換え(S531)、MN30に応答パケット(OK)を返送する(SQ322)。
ここで、例えば、MN30が、既にAP60−2との接続を解除し、移動先WLAN20へのハンドオーバ動作に入っていた場合、CN40またはSIPサーバ50から送信された応答パケット(OK)が、MN30に届かない可能性がある。しかしながら、本実施例で重要なことは、Handover Startパケットの受信によって、CN40とSIPサーバ50が、MN30の呼が一時的に中断されることを事前に察知することにあり、CN40とSIPサーバ50から送信された応答パケットがMN30に正常に受信されるか否かは問題ではない。
本実施例では、MN30は、AP60−2からのビーコン受信レベルが閾値TH1よりも低下したことを検知した時、Handover Startパケットを送信しているため、電波状況の劣化によって、MN30から送信されたHandover Startパケットが、例えば、CN40には届くが、SIPサーバ50には届かない可能性も考えられる。そこで、本実施例では、SIPサーバ50とCN40の現在のステータスを互いに一致させる目的で、Handover Startパケットを受信した時、SIPサーバ50はCN40に、CN40はSIPサーバ50に、自分の現在のステータスを示すステータス同期(Status SYNC)パケットを送信させている(SQ323)。
CN40のプロセッサ43は、ステータス同期(Status SYNC)パケットを受信すると、図46に示すStatus SYNC受信処理ルーチン450を実行する。SIPサーバ50のプロセッサ53も、CN40からステータス同期(Status SYNC)パケットを受信すると、CN40と同様のStatus SYNC受信処理ルーチンを実行する。従って、ここでは、CN40側の動作について説明する。
Status SYNC受信処理ルーチン450において、プロセッサ43は、接続管理テーブル480のステータス485が、ハンドオーバ状態になっているか否かを判定する(451)。もし、ステータス485がハンドオーバ状態となっていた場合は、ステータス同期(Status SYNC)パケットの送信元に対して、ACKパケットを返送して(453)、このルーチンを終了する。もし、ステータス485がハンドオーバ状態でなかった場合、プロセッサ43は、ステータス485をStatus SYNCパケットが示すハンドオーバ状態に書き換え(452、図43のS432)、ACKパケットを返送して(453、図44のSQ325)、このルーチンを終了する。
SIPサーバ50側のプロセッサ53も、同様のStatus SYNC受信処理動作を実行し、CN40からステータス同期(Status SYNC)パケットを受信すると、接続管理テーブル520のステータス527をCN40側のステータスに一致させて(S532)、ACKパケットを返送する(SQ325)。
上述したように、MN30からHandover Startパケットを受信した時、CN40とSIPサーバ50のうちの一方から他方に、ステータス同期(Status SYNC)パケットを送信させることによって、例えば、CN40だけがHandover Startパケットを受信できた場合でも、SIPサーバ50のステータスをハンドオーバ状態に設定することができ、これによって、SIPサーバ50とCN40が、MN30の呼をハンドオーバ中に切断するのを防止することができる。
次に、本発明の第3実施例として、TCPコネクションを介してサーバと通信中の移動ノードMNが、現在接続中のIPサブネットとは異なる別のIPサブネットに移動し、MNで使用すべきIPアドレスが変更された場合でも、TCPコネクションを再設定することなく、上記サーバとの通信を継続できるようにした移動通信システム、および移動ノードのIPアドレスの切替え方法について説明する。
図47は、第3実施例の無線IPネットワークを示す。
ここに示した無線IPネットワークは、基幹ルータ83に接続された複数のルータ81(81−1〜81−4)からなる固定網と、複数の無線IPサブネット(無線LAN:WLAN)とからなっている。ここでは、第1無線LAN(WLAN)10A、第2無線LAN(WLAN)10B、第3無線LAN(WLAN)10C、第4無線LAN(WLAN)10Dが、それぞれ個別の無線IPサブネットを形成している。
第1無線LAN(WLAN)10Aは、L2SW80−1に接続された無線基地局(アクセスポイント:AP)60A−1によって形成され、L2SW80−1は、ルータ81−1を介して基幹ルータ83に接続されている。L2SW80−1に接続されたDHCPサーバ70−1は、AP60A−1が形成する無線LAN10Aの通信圏内に位置した各移動ノード(MN)に対して、IPアドレスを付与する。
第2無線LAN(WLAN)10Bは、L2SW80−2に接続された無線基地局(AP)60B−1によって形成され、L2SW80−2は、ルータ81−2を介して基幹ルータ83に接続されている。L2SW80−2に接続されたDHCPサーバ70−2は、AP60B−1が形成する無線LAN10Bの通信圏内に位置した各移動ノード(MN)に対して、IPアドレスを付与する。
第3無線LAN(WLAN)10Cは、L2SW80−3に接続された無線基地局(アクセスポイント:AP)60C−1と60C−2とからなり、L2SW80−3は、ルータ81−3を介して基幹ルータ83に接続されている。WLAN10Cでは、AP60C−1が形成する無線LAN10C−1と、AP60C−2が形成する無線LAN10C−2とで1つのIPサブネットが形成されている。L2SW80−3に接続されたDHCPサーバ70−3は、無線LAN10C−1、10C−2の通信圏内に位置した各移動ノード(MN)に対して、IPアドレスを付与する。
第4無線LAN(WLAN)10Dは、L2SW80−4に接続された無線基地局(AP)60D−1によって形成され、L2SW80−4は、ルータ81−4を介して基幹ルータ83に接続されている。L2SW80−4に接続されたDHCPサーバ70−4は、AP60D−1が形成する無線LAN10Dの通信圏内に位置した各移動ノード(MN)に対して、IPアドレスを付与する。
基幹ルータ83には、有線網84を介して、各種のサーバ群、例えば、WEBサーバ71−1、FTPサーバ71−2、MAILサーバ71−3が接続されている。移動ノード(MN)30は、通信圏内にあるAP60(図47ではAP60A−1)を介してL2SW80に接続され、ルータ81と基幹ルータ83を経由して、サーバ群71をアクセスする。
図48は、WLAN10Aの通信圏内で、例えば、WEBサーバ71−1と通信中の移動ノードMN30が、WLAN10Bの通信圏内に移動した場合の本実施例の通信手順を説明するために用意された図であり、図47を簡略化した無線IPネットワークを示している。
図48において、WEBサーバ71−1に付随して表示された「192.168.100.1」は、WEBサーバのIPアドレスを示し、MN30に付随して表示された文字列「xx-xx-xx-xx-xx-xx-xx」と「xxx.xxx.x.x」は、MNに付与されたMACアドレスとIPアドレスを示している。ここでは、MN30が、WLAN10AではIPアドレス「192.168.0.1」を使用し、WLAN10BではIPアドレス「172.21.22.25」を使用することを示している。
図49は、TCPヘッダ220のフォーマットを示す。
TCPヘッダ220は、送信元ポート番号2201と、宛先ポート番号2202と、シーケンス番号2203と、ACK(Acknowledgement)番号2204と、データオフセット2205と、予備(Reserved)フィールド2206と、制御フラグ2207と、ウィンドウ2208と、チェックサム2209と、緊急ポインタ2210と、オプション2211と、パッディング2212とを含む。TCPヘッダ220は、TCPペイロード230の前に付加され、TCPヘッダの前には、図10で示したIPヘッダ210が付加される。
図50の(A)−(D)は、本実施例において移動ノード(MN)30が送受信するパケットのフォーマットを示す。
図50(A)は、MN30とWEBサーバ71−1との間にTCPコネクションが確立される前に、MN30が送受信するパケットフォーマットを示す。TCPコネクションが確立されるまでは、MN30は、IPヘッダ210とTCPヘッダ220とからなるパケットを送受信する。
図50(B)は、TCPコネクションを確立した後で、MN30がWEBサーバ71−1と送受信するデータパケットのフォーマットを示す。データパケットは、IPヘッダ210と、TCPヘッダ220と、TCPペイロード(データ部)230とからなる。IPヘッダ210は、送信元IPアドレス211、宛先IPアドレス212、その他のヘッダ情報からなる。その他のヘッダ情報としては、IPヘッダ210に続くトランスポート層(TCP/UDP)ヘッダ220を識別するためのプロトコル識別子213Aが含まれる。
図50(C)は、MN30が、WLAN10A内でAP60A−1を介してWEBサーバ71−1に送信するデータパケットのフォーマット、図50(D)は、MN30が、AP60A−1からAP60B−1にハンドオーバされた後、WEBサーバ71−1に送信するデータパケットのフォーマットを示している。
本実施例において、移動ノード(MN)30は、図2で説明したように、一方が現用系、他方が予備系となる2つの無線回線インタフェース31(31−1、31−2)を備え、プロセッサ33は、現用系インタフェースを使用して、後述するWEBサーバとのTCP接続手順を実行する。例えば、MN30が現用系インタフェース31−1を介してAP60A−1に接続されている間に、プロセッサ33は、予備系インタフェース31−2で他のAP、例えば、AP60B−1からの送信ビーコンを探索する。プロセッサ33は、AP60B−1からのビーコン受信レベルがAP60A−1からのビーコン受信レベルよりも大きくなった時、接続APの切替え(ハンドオーバ)と、無線回線インタフェースの現用系/予備系の切替えを行う。
図51は、MN30の通信相手となるサーバ71の1実施例として、WEBサーバ71−1のブロック構成図を示す。
WEBサーバ71−1は、有線網84に接続するための回線インタフェース77と、回線インタフェース77に接続されたプロトコル処理部72と、内部バス79を介してプロトコル処理部72に接続されたプロッセサ73と、内部バス79に接続されたプログラムメモリ74、データメモリ75、およびWEBサービス用の情報を格納したデータベース(DB)76とからなる。プロトコル処理部72は、送信データを蓄積するためのバッファメモリ72Bを備えている。
プログラムメモリ74には、プロセッサ73が実行する本発明に関係するソフトウェアとして、主制御ルーチン710と、SYN受信処理ルーチン740と、TCPコネクション維持処理ルーチン750と、IPアドレス変更処理ルーチン760と、各種のアプリケーションプログラム780が格納されている。また、データメモリ75には、プロセッサ73が参照する接続管理テーブル75と、その他のデータ格納用のメモリ領域が用意されている。
プロトコル処理部72は、回線インタフェース77から受信したパケットを解析し、受信パケットをプロッサ73に転送すると共に、プロセッサ73がバッファメモリ72Bに書き込んだ送信データを通信相手装置(MN30)宛のデータパケットとして、回線インタフェース77に転送する。プロセッサ73は、プロトコル処理部72からの受信したパケットを主制御ルーチン710によって処理する。主制御ルーチン710は、受信パケットの種類に応じて、SYN受信処理ルーチン740、TCPコネクション維持処理ルーチン750、IPアドレス変更処理ルーチン760、アプリケーションプログラム780を選択的に起動する。
図52の(A)―(F)は、本実施例の移動ノードMN30が備える端末状態管理テーブル310の構成と状態変化の1例を示す。
端末状態管理テーブル310は、図3で説明した第1実施例と同様、無線回線インタフェース(INF)のポート番号311と対応した複数のテーブルエントリ(EN1、EN2)からなる。各テーブルエントリは、移動ノードMN30自身のMACアドレスを示すMACアドレス・フィールド312と、IPサブネットで取得したMN30のIPアドレスを示すIPアドレス・フィールド313と、接続APフィールド314と、接続フラグ・フィールド315とからなる。
接続APフィールド314は、ポート番号311(=i)をもつ無線回線インタフェース31−iのアクセスポイントAPへの接続状態を示している。MN30が無線回線インタフェース31−iを介して既に特定のAPに接続済みの状態では、接続APフィールド314には、接続中のAPの識別子が設定され、APに未接続の状態では、空き状態を示す状態コードが設定される。接続フラグ・フィールド315は、無線回線インタフェース31−iの使用状態を示しており、フラグ「1」は、現用系インタフェースとして使用中の状態、フラグ「0」は、未使用中または予備系インタフェースとして使用中の状態を示す。端末状態管理テーブル310の利用方法については、後で詳述する。
図53の(A)−(B)は、本実施例の移動ノードMN30が備える接続管理テーブル320の構成と状態変化の1例を示す。
接続管理テーブル320は、MN情報326と接続先サーバ情報327との対応関係を示す。MN情報326は、MN30のIPアドレス326Aと使用ポート番号326Bを示し、接続先サーバ情報327は、接続先サーバ(この例ではWEBサーバ71−1)のIPアドレス327Aと使用ポート番号327Bを示す。接続管理テーブル320の具体的な利用方法については、後で詳述する。
図54の(A)−(C)は、本実施例で移動ノードMN30の通信相手装置となるサーバ(WEBサーバ71−1)が備える接続管理テーブル720の構成と状態変化の1例を示す。
接続管理テーブル720には、移動ノードMN30の現用IPアドレス721と対応付けて、MN30の変更前IPアドレス722と、使用ポート番号723と、WEBサーバ71−1のIPアドレス724、使用ポート番号725、バッファ制御フラグ726、ステータス727が記憶される。ステータス727には、MN宛にデータを送信したとき、MNからの確認応答待ちを示す情報が記憶される。
本実施例では、ハンドオーバ等によってMN30のIPアドレスが変更された場合に、接続管理テーブル720に、現用IPアドレス721の他に、変更前IPアドレス722も記憶するようになっている。接続管理テーブル720の具体的な利用方法については、後で詳述する。
次に、図55〜図58を参照して、MN30が、AP60A−1を介して、WEBサーバ70−1との間にTCPコネクションを設定する接続フェーズの通信シーケンスについて説明する。
図55は、接続フェーズの通信シーケンス、図56は、本実施例でMN30のプロセッサ33が実行するビーコン受信処理ルーチン150のフローチャート、図57は、WEBサーバ71−1のプロセッサ73が実行する接続要求パケット(SYN)受信処理ルーチン740のフローチャート、図58は、MN30とWEBサーバ71−1との間のTCP通信経路の概略説明図を示す。図55において、図12と同一符号を付したステップは、図12と同一のステップを示しているため、説明を簡略化する。
MN30は、無線LANを利用してWEBサーバ71−1との間にTCPコネクションを設定する前に、現在位置で通信可能なAPを検索する必要がある。そこで、MN30(プロセッサ33)は、図56に示すビーコン受信処理ルーチン150を定期的に実行して、MN30と通信可能なAPを探索する(S100)。
本実施例で実行されるビーコン受信処理150において、AP探索160(ステップ161〜164)と無線回線の解放判定180(ステップ181〜183)は、図14で説明した第1実施例と同様で、無線回線の切り替え判定170は、回線切替え条件(S1>S2)が成立した場合の処理ステップ174B〜179Bが、第1実施例とは異なっている。
MN30は、端末状態管理テーブル310に接続中APが未登録の状態で、例えば、ポート番号=「1」の無線回線インタフェース31−1でAP60A−1からのビーコン信号(SQ100)を受信すると、図55に示すAP探索S100(図56のAP探索160)を実行する。これによって、MN30は、AP60A−1に接続要求(Association Request)を送信し(SQ101)、AP60A−1からの応答を待つ。AP60A−1が、MN30に接続応答(Association Response)を返送すると(SQ102)、MN30は、図15で説明したAssociation Response受信処理190を実行する。
Association Response受信処理190を実行することによって、MN30の端末状態管理テーブル310には、図52の(A)に示すように、無線回線INFポート番号=「1」と対応するエントリEN1の接続APフィールド314にビーコン送信元のAP識別子「AP−A1」が登録され、接続フラグ319が「1」に設定される(S101)。これによって、MN30とAP60A−1との間に接続(Association)が確立され(SQ103)、MN30は、AP60A−1を現用系APとして扱う。
MN30は、AP60A−1への接続が完了すると、WLAN10Aで使用すべきIPアドレスが既に取得済みか否かを判定し、もし、取得していなければ、DHCPサーバ70−1に対して、IPアドレスの取得要求(DHCP Request)パケットを送信する(SQ104)。DHCP Requestを受信したDHCPサーバ70−1は、MN30にIPアドレス(「192.168.0.1」)を割り当て、割当てIPアドレスを示す応答(DHCP Acknowledge)パケットを返送する(SQ105)。
MN30は、DHCPサーバ70−1から応答(DHCP Acknowledge)パケットを受信すると、受信パケットから抽出したIPアドレスを、図52(B)に示すように、端末状態管理テーブル310のテーブルエントリEN1にIPアドレス313として登録(S102)する。この後、MN30は、WEBサーバ70−1との間にTCPコネクションを設定するために、SYNフラグをオンにした接続要求TCPセグメントをWEBサーバ70−1に送信する(SQ110)。このTCPセグメントは、MN30からWEBサーバ70−1に向かう上り通信路でのデータ送信の許可要求となる。
WEBサーバ70−1のプロセッサ73は、MN30からSYNフラグをオン状態のTCPセグメントを受信すると、図57に示すSYN受信処理ルーチン740を実行する。
SYN受信処理ルーチン740において、プロセッサ73は、受信したTCPセグメントから、送信元IPアドレスと、送信元および宛先のポート番号を抽出し(741)、接続管理テーブル720から、MN現用IPアドレス721、MN使用ポート番号723、サーバ使用ポート番号725がこれらの抽出データと一致するテーブルエントリを検索する(742)。プロセッサ73は、接続管理テーブルの検索結果を判定し(743)、もし、抽出データに該当する目的エントリが検索された場合、受信パケット(TCPセグメント)を廃棄して(746)、このルーチンを終了する。
接続管理テーブル729に目的エントリが未登録の場合、プロセッサ73は、図58に示すように、アプリケーション780−1とTCP/IPレイヤのソフトウェア72Aとの間に、通信路となるソケットSK20を形成し(744)、宛先ポート番号と送信元IPアドレスとを関連付ける(図55のS701)。
尚、図58において、101Uは、MN30からWEBサーバ71に向かう上り通信路、101Dは、WEBサーバ71からMN30に向かう下り通信路を示し、SK30は、MN側のアプリケーション300WとTCP/IPのソフトウェア32Aとの間に形成されるソケットを示す。また、72Dは、WEBサーバ側のTCP/IPレイヤのソフトウェア72Aと回線インタフェース77との間に位置したデバイスドライバ、32Dは、MN側のTCP/IPレイヤのソフトウェア72Aと回線インタフェース77との間に位置したデバイスドライバを示す。
この後、プロセッサ73は、接続管理テーブル720に、図54の(A)に示すように、TCPセグメントから抽出した送信元IPアドレスの値「192.168.0.1」と、送信元ポート番号の値「2001」および宛先ポート番号の値「80」をそれぞれMN現用IPアドレス721、MN使用ポート番号723、サーバ使用ポート番号725として登録し(745、図55のS702)、ACKフラグとSYNフラグをオンにした接続応答TCPセグメントをMN30へ返信する(SQ111)。上記接続応答TCPセグメントは、ACKフラグで、MN30からWEBサーバ70−1への通信を許可したことを示すと共に、SYNフラグで、WEBサーバ70−1からMN30に向かう下り通信路(図58の101D)でのデータ送信の許可要求している。
MN30は、WEBサーバ70−1から上記接続応答TCPセグメントを受信すると、接続管理テーブル320に、図53の(A)が示すように、受信セグメントから抽出した送信元(WEBサーバ)ポート番号の値「80」を使用ポート番号327Bとして登録し(S113)、WEBサーバ70−1に対して、ACKフラグをオンにした通信許可TCPセグメントを送信する(SQ112)。
以上の手順によって、MN30とWEBサーバ71−1との間に、上り/下りの双方向方のデータ通信を可能とするTCPコネクション(図58に示した通信路101U、1012D)が確立され、MN30の接続フェーズが完了する。この状態で、MN30がWEBサーバ71−1にデータ要求を送信すると(SQ113)、WEBサーバ71−1からMN30に応答パケット(OK)が返送され(SQ114)、WEBサーバ71−1とMN30との間で、データ送信(SQ120−1、SQ120−2、・・・)と確認応答(SQ121−1、SQ121−2、・・・)を繰り返す形で、TCP通信が実行される。TCP通信では、データは、図50の(B)に示したパケットフォーマットで送信される。
次に、図56と、図59〜図62を参照して、WEBサーバ71−1とデータ通信中のMN30が、WLAN10AからWLAN10Bに移動中に実行される移動中フェーズの通信シーケンスについて説明する。
図59は、移動中フェーズの通信シーケンスを示す。
MN30のプロセッサ33は、WEBサーバ70−1とデータ通信中(SQ120−1、SQ121−3)も、図56に示したビーコン受信処理ルーチン150を周期的に実行し、AP探索(S100)をしている。MN30が、WLAN10AからWLAN10Bに向かって移動すると、現在接続中のAP60A−1から送信されたビーコン信号(SQ301)以外に、WLAN10BのAP60B−1が送信した新たなビーコン信号(SQ302)も受信可能となる。
MN30がWLAN10Bに接近し、空き状態にある無線回線インタフェース31−2で、AP60B−1から送信された新たなビーコン信号を受信すると、プロセッサ33は、ビーコン受信処理ルーチン150に従って、受信したビーコン信号の送信元のAP識別子が、端末状態管理テーブル310に接続AP314として登録されたAP識別子と一致するか否かを判定する(163)。
プロセッサ33は、受信したビーコン信号の送信元のAP識別子(この例では「AP−B1」)が、端末状態管理テーブル310に接続AP314として登録されたAP識別子(この例では「AP−A1」)とは異なることを検知すると、ビーコン送信元AP60B−1に接続要求(Association Request)を送信する(164、図59のSQ303)。AP60B−1は、上記接続要求(Association Request)が示すMN30との接続を了承すると、MN30に対して接続応答(Association Response)を送信する(SQ304)。MN30のプロセッサ33は、AP60B−1から接続応答(Association Response)を受信すると、図15で説明したAssociation Response受信処理190を実行する。
Association Response受信処理190において、プロセッサ33は、端末状態管理テーブル310の接続APフィールド314を参照して、既に接続中のAPが存在するか否かを判定する(191)。今回は、テーブルエントリEN1の接続APフィールド314にAP60A−1のAP識別子「AP−A1」が登録されている。そこで、プロセッサ33は、図52の(C)に示すように、端末状態管理テーブル31における空き無線回線インタフェースのポート番号「2」と対応するテーブルエントリEN2に、接続AP314として、上記ビーコンの送信元APの識別子「AP−B1」を登録し、接続フラグ315に予備系を示す値「0」を設定して(193、図59のS101)、このルーチンを終了する。以上のシーケンスによって、MN30とAP60B−1との間に接続(Association)が確立される(SQ305)。
MN30は、端末状態管理テーブル310に接続AP314として登録された2つのAP識別子から、移動元IPサブネットと移動先IPサブネットが同一か否かを判定する。この例では、AP識別子「AP−A1」と「AP−B1」でIPサブネットの識別記号(A、B)が異なっているため、MN30は、移動先のAP(AP60B−1)が移動元のAP(AP60A−1)とは異なったIPサブネットに所属していると判断し、移動先WLAN10Bで使用すべき新たなIPアドレスを取得するために、AP60B−1を介してDHCPサーバ70−2に、IPアドレスの取得要求(DHCP Request)パケットを送信する(SQ306)。
上記IPアドレスの取得要求パケットを受信したDHCPサーバ70−2は、MN30に対してIPアドレス「172.21.22.25」を割り当て、このIPアドレスを示す応答(DHCP Acknowledge)パケットをMN30に送信する(SQ307)。MN30は、上記応答パケットを受信すると、受信パケットから新たなIPアドレス「172.21.22.25」を抽出し、図52(D)に示すように、端末状態管理テーブル310の接続AP「AP−B1」と対応するテーブルエントリEN2にIPアドレス313として登録する(S102)。
尚、MN30の移動先AP(AP60B−1)が、移動元AP(AP60A−1)と同一のIPサブネットに所属していた場合、移動先での新たなIPアドレスを取得する必要はない。この場合、MN30のプロセッサ33は、端末状態管理テーブル310において、テーブルエントリEN1に登録されているIPアドレス313をテーブルエントリEN2にコピーすればよい。
MN30のプロセッサ33は、AP60A−1、AP60B−1と接続された状態でも、図56に示したビーコン受信処理ルーチン150を定期的に実行し、AP60A−1のビーコン信号(SQ308)とAP60B−1のビーコン信号(SQ309)を監視している。MN30が、AP60A−1、AP60B−1と接続状態にある間は、空きインタフェースが無くなっているため、プロセッサ33は、図56に示したビーコン受信処理ルーチン150において、無線回線の切替え判定170と無線回線の解放判定180を繰り返す。
無線回線の切替え判定170(図59のS131)では、プロセッサ33は、現用系インタフェースで接続中のAP60A−1からのビーコンの受信レベルS1と、予備系インタフェースで接続中のAP60B−1からのビーコンの受信レベルS2を検出し(171、172)、S1とS2を比較する(173)。プロセッサ33は、現用系APの受信レベルS1が予備系APの受信レベルS2以上であれば、無線回線の切替え判定170を終了して、無線回線の解放判定180を実行する。
本実施例では、予備系APの受信レベルS2が、現用系APの受信レベルS1よりも大きくなった時、プロセッサ33は、端末状態管理テーブル310からIPアドレス313を検索し(174B)、テーブルエントリEN1、EN2が示すIPアドレスを比較することによって、IPアドレスの切替えの要否を判定する(175B)。プロセッサ33は、テーブルエントリEN1、EN2が示すIPアドレスが一致している場合は、IPアドレスは切替え不要と判断して、無線回線の解放判定180を実行する。
テーブルエントリEN1、EN2が示すIPアドレスが不一致のとき、IPアドレスが切替わる。この場合、プロセッサ33は、WEBサーバ70−1に対してTCPコネクション維持通知メッセージを送信し(176B、図59のSQ340)、予備系となっていた無線回線インタフェースを現用系に切り替え(177B)、図52(E)に示すように、端末状態管理テーブル310の接続フラグ315の状態を書き替え、図53(B)に示すように、接続管理テーブル320のMN用IPアドレス326Aを移動先WLANで使用すべきIPアドレスに書き替える(178B、図59のS132とS133)。
この後、プロセッサ33は、WEBサーバ70−1にIPアドレス変更通知メッセージを送信し(179B、図59のSQ342)、無線回線の解放判定180を実行する。IPアドレス変更通知メッセージは、MN30のIPアドレスが、「192.168.0.1」から「172.21.22.25」に変わったことを示している。
無線回線の解放判定180では、プロセッサ33は、端末状態管理テーブル310に接続AP314として登録されているAPからのビーコンの受信レベルを閾値THと比較し(181)、ビーコン受信レベルが閾値TH以上であれば、今回のビーコン受信処理ルーチン150を終了する。ビーコン受信レベルが閾値THよりも小さくなった時、プロセッサ33は、端末状態管理テーブル310から、ビーコン送信元APに関する登録情報をリセットして(182)、ビーコン送信元APに対して接続(Association)解除パケットを送信して(183、図59のSQ344)、今回のビーコン受信処理ルーチン150を終了する。
例えば、AP60A−1からのビーコンの受信レベルが閾値THよりも低下した場合、図52(F)に示すように、端末状態管理テーブル310のテーブルエントリEN1からAP60A−1の識別子「AP−A1」と、不要となったIPアドレス「192.168.0.1」が削除され、AP60A−1に対して接続(Association)解除パケットが送信される(図59のSQ344)。尚、ここでは、テーブルエントリEN1の接続フラグ315が、IPアドレスの切替え時に「1」から「0」に書き替えられたが、もし、AP60A−1が現用系となっている状態で、ビーコンの受信レベルが閾値TH以下に低下した場合、接続フラグ315は、ステップ182で「0」に書き替えられる。
本実施例では、上述したように、WEBサーバ70−1とデータ通信中のMN30にIPアドレスの切替えが発生した場合、MN30からWEBサーバ70−1に、MN30のサブネット間ハンドオーバを予告するTCPコネクション維持通知を送信し(SQ340)、次に、MN30のIPアドレスの変更をWEBサーバ70−1に通知する(SQ342)ようにしている。
WEBサーバ70−1のプロセッサ73は、MN30からTCPコネクション維持通知を受信すると、図60に示すTCPコネクション維持処理ルーチン750を実行する(図59のS703)。
TCPコネクション維持処理ルーチン750において、プロセッサ73は、プロトコル処理部72にデータ送信制御信号(送信停止信号)を与えて、TCPコネクション維持通知の送信元IPアドレス(MN30のIPアドレス「192.168.0.1」)に対するデータ送信の停止を指令し(751)、TCPコネクション維持通知の送信元(MN30)にACKパケットを返送し(752、図59のSQ341)、図54(B)に示すように、接続管理テーブル720における上記送信元IPアドレス「192.168.0.1」と対応するテーブルエントリのバッファ制御フラグ726を「1」に書き換える(753)。
この後、プロセッサ73は、TCPコネクション維持通知の受信時点で、プロトコル処理部72にMN30に送信中のデータがあるか否かを確認する(754)。送信中データには、プロトコル処理部72が現在送信動作中のデータのみならず、既に送信済みのデータであってMN30からの確認応答待ちのデータも含む。
プロトコル処理部72に送信中データがなければ、プロセッサ73は、このルーチンを終了し、プロトコル処理部72に送信中のデータがあった場合、図54(B)に示すように、接続管理テーブルのステータス727に「確認応答待ち」を記憶してから(755)、このルーチンを終了する。プロトコル処理部72は、プロセッサ73から送信停止信号を受けた時、もし、MN30宛てにデータを送信中の場合は、送信単位となる一群のデータブロック(例えば、D151〜D200)を送信して、MN30宛てのその後のデータ送信を停止する。
図61は、プロトコル処理部72におけるデータ送信制御の説明図である。
プロトコル処理部72は、制御部72Aとバッファメモリ72Bとを備え、バッファメモリ72Bには、データの宛先IPアドレスと対応付けられた複数の送信バッファエリアが形成されている。
プロセッサ73は、MN30からデータ要求(図5のSQ113)を受信すると、要求された一連のデータをデータベース(DB)76から読出し、MN30宛ての送信データ(D101〜D300)として、MN30のIPアドレスと対応付けて形成された送信バッファエリア72Bに書き込む。また、MN30からTCPコネクション維持通知(図59のSQ340)を受信した時、プロセッサ73は、プロトコル処理部72の制御部72Aに、MN30宛てに送信中のデータの有無を問い合わせると共に、制御部72Aに前述したデータ送信制御信号(送信停止信号)を与える。以下、データ送信停止用の制御信号をC1、データ送信停止解除要の制御信号をC2で表す。
図61は、送信バッファエリアに書き込まれたデータブロックD101〜D150、D151〜D200、D201〜D250、D251〜D300のうち、破線で示したデータブロックD101〜D150は、既にMN30から確認応答を受信済みで、送信が完了した状態となっている。データブロックD151〜D200は、MN30に送信中(図59のSQ120−4)、データブロックD201〜D300は、送信待ちの状態を示している。
ここでは、制御部72Aが、データブロックD151〜D200を送信中か、MN30からデータブロックD151〜D200に対する確認応答を受信する前に、プロセッサ73から制御部72Aに、MN30宛てデータの送信停止を指令する制御信号C1が発行された場合を想定している。
制御部72Aは、送信バッファエリアに格納されている各送信データについて状態を管理している。データブロックD101〜D150は、送信完了の状態になっているため、バッファ領域を解放して新たなデータの書き込みが可能となっている。データブロックD151〜D200は、MN30に送信された時点で確認応答待ち状態となり、MN30から確認応答を受信したとき、送信完了状態(バッファ解放状態)に遷移する。
送信待ち状態にある次のデータブロックD201〜D250は、前のデータブロックD151〜D200が送信完了状態となった時点でMN30に送信され、その状態が送信待ちから確認応答待ちに遷移する。尚、制御部72は、例えば、データブロックD151〜D200をD151、D152、・・・D200の順にサブブロック単位で読み出し、無線区間ではサブブロック単位の複数パケットに分割して送信する。
制御部72Aは、プロセッサ73からデータ送信停止の制御信号C1を受信すると、送信中データ(確認応答待ちのデータ)と送信待ち状態のデータをバッファメモリに保持した状態で、プロセッサ73からのデータ送信停止解除の制御信号C2を待つ。プロセッサ73は、MN30からIPアドレスの変更通知(SQ342)を受信したとき、制御部72Aに、MN30の旧IPアドレス「192.168.0.1」と新IPアドレス「172.21.22.25」とを指定した形で、データ送信停止解除を示す制御信号S2を与える。
制御部72Aは、プロセッサ73からデータ送信停止解除用の制御信号S2を受信すると、MN30用送信バッファエリアと対応付けるIPアドレスを新IPアドレスに変更した後、MN30宛てのデータ送信を再開する。これによって送信再開後のMN30宛てのデータには、新IPアドレスが適用される。
本実施例では、図59に示すように、MN30が、サーバ71−1からデータ(D151〜D200)を受信する前に、WEBサーバ71−1にTCPコネクション維持通知を送信した場合、MN30は、データ(D151〜D200)に対する確認応答を返送しない。従って、サーバ71−1の送信バッファ72Bには、送信待ち状態のデータ(D201〜D300)以外に、データ(D151〜D200)が確認応答待ちの状態で保存されている。
これらのデータは、制御部72Aが、データ送信停止解除用の制御信号C2を受信した後で、MN30の新IPアドレスを適用して送信される。従って、本実施例によれば、MN30のIPアドレスが変った時、WEBサーバ71−1は、TCPに従ったデータ再送手順を実行することなく、MN30宛てのデータ送信を再開することが可能となる。
WEBサーバ70−1のプロセッサ73は、MN30からIPアドレスの変更通知(SQ342)を受信すると、図62に示すIPアドレス更新処理ルーチン760を実行する。
IPアドレス更新処理ルーチン760において、プロセッサ73は、受信メッセージから新IPアドレスと旧IPアドレスを抽出し(761)、接続管理テーブル720から、現用IPアドレス721が旧IPアドレスと一致するテーブルエントリを検索する(762)。プロセッサ73は、検索結果を判定し(763)、旧IPアドレスに該当するテーブルエントリが検索されなかった場合は、受信メッセージを廃棄して(774)、このルーチンを終了する。
旧IPアドレスに該当するテーブルエントリが検索された場合、プロセッサ73は、図54(C)に示すように、接続管理テーブル720に現用IPアドレス721として登録されていた旧IPアドレスを変更前IPアドレス722に移し、新IPアドレスを現用IPアドレス721に記憶し(764)、ソケットに登録されている旧IPアドレスを新IPアドレスに変更する(765)。次に、プロセッサ73は、接続管理テーブル720のステータス727が確認応答待ちとなっているか否かを判定する(766)。
ステータス727が確認応答待ちでなければ、プロセッサ73は、接続管理テーブル720のバッファ制御フラグ726に「0」を設定し(767)、プロトコル処理部の制御部72Aに、送信待ち状態にあるMN30宛てデータの送信停止を解除する制御信号C2を出力し(771)、IPアドレスの変更通知に対する応答(OK)パケットをMNに返送して(773)、のルーチンを終了する。ステップ773で返送されるOKパケット(図59のSQ343)は、WEBサーバ71−1側でMN30用IPアドレスの変更が完了したことを示す通知信号となる。MN30は、上記応答(OK)パケットの受信後に、従前のIPサブネットであるWLAN10AのAP60A−1との接続を解除できる。
ステータス727が確認応答待ちとなっていた場合、プロセッサ73は、プロトコル処理部の制御部72Aが、MN30宛てに最後に送信したデータ(図59の例では、データD151〜D200)について確認応答を受信したか否かをチェックする(768)。もし、確認応答が受信されていなければ、プロセッサ73は、図54(C)に示すように、接続管理テーブル720のステータス727をクリアし、バッファ制御フラグ726に「0」を設定して(770)、プロトコル処理部の制御部72Aに、確認応答待ちデータ以降のMN30宛てデータの送信停止を解除する制御信号S2を出力し(772)、IPアドレスの変更通知に対する応答(OK)パケットをMNに返送して(773)、このルーチンを終了する。
MN30宛ての最後の送信データに対する確認応答が、プロトコル処理部の制御部72Aで受信済みとなっていた場合、プロセッサ73は、接続管理テーブル720のステータス727をクリアし、バッファ制御フラグ726に「0」を設定して(769)、プロトコル処理部の制御部72Aに、送信待ち状態にあるMN30宛てデータの送信停止を解除する制御信号C2を出力し(771)、IPアドレスの変更通知に対する応答(OK)パケットをMNに返送して(773)、このルーチンを終了する。
本実施例では、移動ノードMN30が、WEBサーバ71−1からのデータ受信を現用系の無線回線インタフェースで行うことを前提としている。従って、WEBサーバ71−1にTCPコネクション維持通知を送信した後、MN30がAP60A−1からAP60B−1にハンドオーバされると、MN30では、無線回線インタフェースの切替えによって予備系IPアドレスとなった旧IPアドレス宛てのデータ(図59ではデータブロックD151〜D200)を受信できない。
そこで、図59に示した実施例では、TCPコネクション維持通知の送信後のMN30に、アドレス変更前の宛先IPアドレスをもつ受信データに対して、確認応答を返信させないようにしておき、WEBサーバ70−1が、MN30からIPアドレスの変更通知を受信した時、確認応答待ち状態にある送信データ(データブロックD151〜D200)(SQ131)から送信する形で、IPアドレス変更後のデータ送信を再開させている。
但し、後述する第4実施例のように、MN30が、WEBサーバからの送信データを現用系、予備系の何れの無線回線インタフェースでも受信できるようにしておき、TCPコネクション維持通知の送信後に、アドレス変更前の宛先IPアドレスをもつ受信データに対しても確認応答を返送するようにしてもよい。このようにすれば、サブネット間ハンドオーバに伴ってMN30のIPアドレスが切り替えられた場合でも、従前のサブネットを経由したデータ通信を一時的に持続することが可能となる。
上述した第3実施例によれば、MN30が、WLAN10AでWEBサーバ70−1と通信中に、移動先となるWLAN10Bで新たなIPアドレスを取得しておき、WLAN10AからWLAN10Bにハンドオーバした時点で、WEBサーバ70−1に新IPアドレスを通知することによって、図59にSQ120−5、SQ121−5で示すように、WLAN10B(AP60B−1)を経由して新IPアドレスでWEBサーバと通信するようにしているため、WLAN間でのMN30のハンドオーバを短時間で完了できる。
また、本実施例のように、MN30のIPアドレスを変更する前に、MN30からWEBサーバ71−1にTCPコネクション維持通知メッセージを送信した場合、WEBサーバ71−1は、TCPに従ったデータ再送処理の実行を回避することができる。この場合、TCPコネクション維持通知メッセージを受信した時、サーバ(WEBサーバ71−1)が、MN30との間のTCPコネクションを維持した状態で、確認応答待ち状態、または送信待ち状態にあるデータを送信バッファに保持することによって、MN30のIPアドレスが変更されたとき、新たな通信路を形成することなく、新IPアドレスでMN30宛との間のデータ通信を再開することが可能となる。
尚、上述した実施例では、MN30からTCPコネクション維持通知メッセージを受信した時、MN30宛てに送信中のデータ(確認応答待ちデータ)があった場合は、WEBサーバ71−1のプロセッサ73が、接続管理テーブル720のステータス727に確認応答待ちを記憶しておき、MN30からIPアドレス変更通知を受信した時、上記送信中データについての確認応答が受信済みか否かをチェックして、MN30宛てのデータ送信を確認応答待ち状態のデータから再開するか、送信待ち状態のデータから再開するかを判断するようにしている。
しかしながら、中断されたMN30宛てデータ送信を再開する際に、最初に送信すべきデータの選択はプロトコル処理部の制御部72Aに任せてもよい。すなわち、プロセッサ73からデータ送信停止解除の制御信号C2を受信した時、制御部72Aが、送信バッファに確認応答待ちのデータがあるか否かを判定し、もし確認応答待ちのデータがあれば、確認応答待ちデータから送信を再開し、確認応答待ちのデータがなければ、送信待ち状態にある最初のデータから送信を再開するようにしてもよい。
この場合、プロセッサ73は、接続管理テーブル720にバッファ制御フラグ726とステータス727を記憶する必要がなくなるため、図60に示したTCPコネクション維持処理ルーチン750から、ステップ754、755を省略できる。また、図62に示したIPアドレス更新処理ルーチン760から、ステップ766〜770を省略し、ステップ771と772を統合できる。結果的に、IPアドレス更新処理ルーチン760は、ステップ765でソケットのIPアドレスを更新した後、プロトコル処理部の制御部72Aに対して、確認応答待ちデータの有無に関係なく、データ送信停止の解除信号を出力するように簡単化できる。
図63は、第3実施例における切断フェーズの通信シーケンスを示す。
MN30とWEBサーバ71−1との間でのデータ通信(SQ120−1、SQ121−1〜SQ120−7、SQ121−7)が完了し、MN30のユーザが通信終了の入力操作を行うと、MN30からWEBサーバ70−1に切断要求パケット(FINパケット)が送信される(SQ410)。
WEBサーバ71−1は、上記FINパケットを受信すると、接続管理テーブル720から現用IPアドレス721がFINパケットの送信元IPアドレスと対応するテーブルエントリを削除し、ソケットをクローズ(S705)した後、FINパケットの送信元であるMN30に対して、WEBサーバ71−1側からの切断要求パケット(FINパケット)と、MN30から受信したFINパケットに対する応答パケット(ACKパケット)とを送信する(SQ411、SQ412)。
移動ノードMN30は、WEBサーバ71−1からACKパケットを受信すると、接続管理テーブル320から、WEBサーバ71−1と対応するテーブルエントリを削除する(S134)。また、WEBサーバ71−1からの切断要求パケットに応答して、切断の了承を示すACKパケットを返送して(SQ413)、WEBサーバ71−1との通信を終了する。以上の手順によって、MN30とWEBサーバ71−1との間のTCPのコネクションが切断され、切断フェーズが終了する。
次に、図64〜図66を参照して、本発明の第4実施例について説明する。
図64は、第4実施例における移動中フェーズの通信シーケンス、図65は、第4実施例の移動ノードMN30が備える接続管理テーブル320、図66は、第4実施例のMN30が実行するデータ受信処理ルーチン140のフローチャートを示す。本実施例の接続管理テーブル320は、図53に示した第3実施例の接続管理テーブル320に、ステータス・フィールド328を追加した構成となっている。
移動ノードMN30は、WLAN10A内でAP60A−1を介して、WEBサーバ71−1とデータ通信中(例えば、SQ120−3、SQ121−3)に、図56で説明したビーコン受信処理150を定期的に実行している。MN30がWLAN10Bに接近し、AP60A−1からのビーコン信号(SQ308)以外に、AP60A−2からのビーコン(SQ309)を受信できる状況において、MN30は、無線回線の切替え判定(S131、図56の170)を実行し、無線回線の切替え条件(S1<S2)が成立した時点で、WEBサーバ70−1にTCPコネクション維持通知メッセージを送信する(SQ340)。
WEBサーバ70−1は、TCPコネクション維持通知メッセージを受信すると、図60に示したTCPコネクション維持処理ルーチン750を実行し(S703)、MN30に応答(ACK)パケットを返送する(SQ341)。TCPコネクション維持通知メッセージを受信したWEBサーバ70−1では、既に説明したように、プロトコル処理部72が、送信中のデータについては送信動作を続行し、これらのデータが確認応答待ちの状態になった時点で、その後のデータ送信を停止する。この場合、MN30には、TCPコネクション維持通知メッセージの送信後に、変更前のIPアドレスを宛先アドレスとしたデータが到着する。
従って、MN30が、TCPコネクション維持通知メッセージを送信した後、直ちにIPアドレスの切替えを実行した場合、すなわち、予備系(または現用系)の無線回線インタフェースを現用系(または予備系)の無線回線インタフェースに切り替えた場合は、WEBサーバ71−1から最後に送信されたデータが、予備系の切り替えられた無線回線インタフェースで受信される可能性がある。
第3実施例では、MN30が、現用系の無線回線インタフェースで受信したデータについてのみ、確認応答を返送するようになっていたため、予備系の切り替えられた無線回線インタフェースが受信したデータについては、確認応答の返送はなかった。
第4実施例では、現用系の無線回線インタフェースのみならず、予備系の無線回線インタフェースで受信された旧IPアドレス宛のデータについても、MN30が確認応答を返送するようにしたことを特徴とする。この場合、予備系の無線回線インタフェースで受信された旧IPアドレス宛のデータに対する確認応答は、予備系の無線回線インタフェースで返送してもよいが、予備系の無線回線インタフェースは、通信環境が現用系の無線回線インタフェースよりも劣化しているため、予備系の無線回線インタフェースで受信された旧IPアドレス宛のデータに対する確認応答を現用系無線回線インタフェースから返送するとよい。
図64では、MN30がTCPコネクション維持通知メッセージを送信(SQ340)する前に、WEB71−1が、WLAN10Aで有効なIPアドレス(「192.168.0.1」)を宛先アドレスとして、データD151〜D200(SQ120−4)、D201〜D250(SQ120−5)を送信し、データD151〜D200は、MN30が無線回線インタフェースを切り替える前に受信され、データD201〜D250は、MN30が無線回線インタフェースを切り替えた後に受信された場合を想定している。
本実施例では、MN30は、現用系または予備系の無線回線インタフェースからデータを受信すると、アプリケーションプログラムによる受信データの処理と並行して、図66に示したデータ受信処理ルーチン140を実行する。データ受信処理ルーチン140では、プロセッサ33は、データを受信した無線回線インタフェースが現用系か予備系かを判定する(141)。
データD151〜D200(SQ120−4)の受信時には、無線回線インタフェースは切り替わっていないため、この時点で実行されるデータ受信処理ルーチン140(S150)では、上記データを受信した無線回線インタフェースが現用系と判断される。この場合、プロセッサ33は、TCPコネクション維持通知メッセージが送信済みか否かを判定する(142)。もし、TCPコネクション維持通知メッセージが送信済みでなければ、WEBサーバ70−1に確認応答を返信して(146)、このルーチンを終了する。
図64に示した例では、TCPコネクション維持通知メッセージが送信済みとなっているため、プロセッサ33は、図65に示すように、接続管理テーブル320のステータス328に確認応答未送信を記憶(143)した後、IPアドレス変更通知が既に送信済みか否かを判定し(144)、IPアドレス変更通知が送信されていなければ、図56に示したビーコン受信処理ルーチン150によるIPアドレス変更通知の送信(無線回線の切替え)が完了するのを待つ。プロセッサ33は、IPアドレス変更通知の送信が完了すると、接続管理テーブル320のステータス328をクリアし(145)、WEBサーバ70−1に確認応答を返信して(146)、このルーチンを終了する。
すなわち、本実施例では、図64に示すように、MN30は、現用系の無線回線インタフェースと予備系の無線回線インタフェースとを切り替え(無線回線INF切替え:S177)、接続管理テーブルにおけるMNのIPアドレスを更新し(S178)、WEBサーバ71−1にIPアドレスの変更通知を送信(SQ342)した後、データD151〜D200(SQ120−4)に対する確認応答を返送する(SQ121−4)。
データD201〜D250(SQ120−5)が、無線回線インタフェースの切替え後に受信されると、データ受信処理ルーチン140(S150)のステップ141で、上記データを受信した無線回線インタフェースは予備系と判断される。この場合、プロセッサ33は、接続管理テーブル320のステータス328に確認応答未送信を記憶(143)した後、IPアドレス変更通知が既に送信済みか否かを判定する(144)。
今回は、IPアドレス変更通知が既に送信済みとなっているため、プロセッサ33は、ステータス328をクリア(145)した後、データD201〜D250(SQ120−5)に対する確認応答を返送して(146、図64のSQ121−5)、このルーチン140を終了する。
第4実施例では、上述したように、APと接続中の無線回線インタフェースは、それが現用系か予備系かに関係なく、受信データを有効データとして受信処理しておき、IPアドレス変更の通知後に、受信データに対する確認応答を返送するようにしている。この場合、予備系の無線回線インタフェースで受信されたデータに対しては、新たなIPアドレスを適用した確認応答を現用系インタフェースから返信できる。
WEBサーバ71−1は、図54に示したように、MN30の現用(新)IPアドレスと変更前(旧)IPアドレスを接続管理テーブル720で管理しているため、旧IPアドレスを宛先とした送信データに対して、MN30から新IPアドレスを送信元とする確認応答が返送された場合でも、確認応答と送信データとの対応関係を正しく認識できる。
また、第4実施例では、MN30のIPアドレスの変更前にWEBサーバ70−1が送信したデータに対して、応答遅れがあるとしても、確認応答を受信できるため、図62に示したIPアドレス更新処理ルーチン760において、ステップ770と772が実行されることはなく、送信バッファメモリで送信待ち状態にあるデータからデータ送信が再開(771)されることになる。
第4実施例によれば、MN30が、現用系の無線回線インタフェースと予備系の無線回線インタフェースの両方でデータを受信できるようにしているため、IPサブネット間のハンドオーバによってMN30のIPアドレスが変った場合でも、WEBサーバから送信済みで確認応答待ちのデータを再送する必要がなくなる。従って、ハンドオーバが頻繁に繰り返された場合でも、通信リソースを無駄にしない効率のよいデータ通信が可能となる。
1:中継網、2:IP網、10、20:WLAN,30:移動端末(移動ノード)MN、40:通信相手端末CN、50:SIPサーバ、60:無線基地局(アクセスポイント:AP)、70:DHCPサーバ、80:L2SW、81:ルータ、83:基幹ルータ、71:サーバ。