JP2004509539A - Method and apparatus for providing mobile and other intermittent connectivity in a computer environment - Google Patents

Method and apparatus for providing mobile and other intermittent connectivity in a computer environment Download PDF

Info

Publication number
JP2004509539A
JP2004509539A JP2002527943A JP2002527943A JP2004509539A JP 2004509539 A JP2004509539 A JP 2004509539A JP 2002527943 A JP2002527943 A JP 2002527943A JP 2002527943 A JP2002527943 A JP 2002527943A JP 2004509539 A JP2004509539 A JP 2004509539A
Authority
JP
Japan
Prior art keywords
network
mobile computing
computing device
mobile
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002527943A
Other languages
Japanese (ja)
Other versions
JP2004509539A5 (en
Inventor
ハンソン,アーロン,ディー.
スタニオロ,エミル,エー.
メン,アナトリー
オルソン,エリック,ディー.
サヴァレセ,ジョセフ,ティー.
Original Assignee
ネットモーション ワイヤレス インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/660,500 external-priority patent/US7293107B1/en
Application filed by ネットモーション ワイヤレス インコーポレイテッド filed Critical ネットモーション ワイヤレス インコーポレイテッド
Publication of JP2004509539A publication Critical patent/JP2004509539A/en
Publication of JP2004509539A5 publication Critical patent/JP2004509539A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/107Network architectures or network communication protocols for network security for controlling access to devices or network resources wherein the security policies are location-dependent, e.g. entities privileges depend on current location or allowing specific operations only from locally connected terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • H04W12/088Access security using filters or firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/069Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W36/00Hand-off or reselection arrangements
    • H04W36/08Reselecting an access point
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W80/00Wireless network protocols or protocol adaptations to wireless operation
    • H04W80/04Network layer protocols, e.g. mobile IP [Internet Protocol]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)

Abstract

ノマディックなシステムの特性を透過的にする、シームレスなソリューションであって、既存のネットワーク・アプリケーションが、モバイル環境でも確実に動作するようにする。モバイルネットワークと組み合わされたモビリティ管理サーバ(102)は、数量を限定されないモバイル端末システム(104)それぞれの状態を維持し、ネットワークへ、および他のピアでの処理への持続的な接続の維持に必要な、複雑なセッション管理を実行する。モバイル端末システムが圏外に出たり、サスペンドしたり、(例えば、あるネットワーク相互接続から別のものへとローミングして)ネットワークアドレスを変更したりした場合、モビリティ管理サーバは、結合しているピアのタスクとの接続を維持し、モバイル端末システムとネットワーク媒体とのコンタクトが一時的に失われても、モバイル端末システムが持続的な接続を維持できるようにする。インターフェイスベースのリスナは、ネットワーク・インターフェイスからのネットワーク接続ポイント情報を利用して、ローミング状態を判定し、ローミングに際した接続を効率的に確立する。モビリティ管理サーバは、非接続のネットワーク上で該サーバとコンタクトをとるためのリストを、モバイル端末システムに配布する。A seamless solution that makes the characteristics of a nomadic system transparent, ensuring that existing network applications work in a mobile environment. The mobility management server (102) combined with the mobile network maintains the state of each of the unlimited number of mobile terminal systems (104) and maintains a continuous connection to the network and to the processing at other peers. Perform any necessary complex session management. If the mobile terminal system goes out of range, suspends, or changes the network address (e.g., roaming from one network interconnect to another), the mobility management server will notify the associated peer Maintains a connection with the task and enables the mobile terminal system to maintain a persistent connection even if the contact between the mobile terminal system and the network medium is temporarily lost. An interface-based listener utilizes network connection point information from a network interface to determine a roaming state and to efficiently establish a connection during roaming. The mobility management server distributes a list for contacting the server on the disconnected network to the mobile terminal system.

Description

[発明の背景]
本発明は、ネットワークによって接続されたコンピュータ装置間の接続性に関する。より詳細には、ノマディック(nomadic)システムの特性を透過性(トランスペアレント)を有する状態で扱うとともに、既存のネットワーク・アプリケーションを、対応するモバイル環境で確実に動作させる方法とシステムに関する。さらに詳細には、断続的に接続される、携帯型データ端末(handheld data units)やパソコン装置などの装置間における、連続的なデータストリームのやり取りを可能にする技術およびシステムに関する。
【0001】
[発明の背景および要約]
近年、各企業は、重要な情報への迅速なアクセスこそが競争優位を保つための方策であると認識するようになってきた。このことから、特に安価なラップトップやハンドヘルドのコンピュータ装置の普及とも相まって、モバイルなどの断続的な接続が行われるコンピュータ装置が急速に企業ネットワークの重要な一要素となりつつある。しかしながら、こうしたノマディックな装置を既存のネットワーク・インフラへと統合することは、各企業の情報管理担当者にとって頭の痛い問題ともなっている。
【0002】
モバイルネットワーキングに関する問題の多くは、イーサネット(登録商標)登場以前にローカルエリア・ネットワーク(LAN)構築に伴っていた問題に近い。即ち、モバイル・プロトコルやインターフェイスには多くの種類があり、また、まだ規格が制定段階にあることから、異なるシステム間の相互運用性は無いも同然である。さらに、上記のようなネットワーク技術による通信はたいてい低速で帯域幅も限られており、各システムの特殊性から、アップデートに伴う費用も高額になっている。
【0003】
こうした問題に加えて、モバイル技術は、以下のような固有の問題も有している。即ち、メインのネットワークと相互接続するの際には公共のネットワーク・インフラを経由する場合があるが、この際に機密情報が傍受されてしまう危険性がある。さらに、無線装置を経由して相互接続する場合であれば、機密情報がいわば「放送」されてしまうことになり、類似のインターフェイスを所有する誰もが該情報をたいした障害もなく傍受することができてしまう。
【0004】
しかし、おそらく上記のような問題よりもさらに重要な問題としては、従来、モバイルネットワーキングが使われるのは基本的にメッセージ指向あるいはステートレスなアプリケーションに限られていて、クライアント/サーバ、ホスト/ターミナル方式をとるウェブベースあるいはファイル共有型のシステムモデルを利用した、既存あるいは新規の業務用アプリケーションには適さなかったことである。これは、一般的な業務用アプリケーションが効果的かつ確実に動作するためには、ステートレスなパケット交換だけでなく、連続的なデータストリームを用いたステートフルなセッションが必要であるという理由からであった。
【0005】
このため、主要な市販のネットワーク・アプリケーションのほとんどは、TCP/IPセッションか、専用の仮想回路を必要としている。このようなセッションは、ネットワークが中断された場合はそれ以上機能できず、また接続時には、ネットワーク間のローミング(ネットワークアドレスの変更)が不可能である。さらに、モバイルネットワーキングは本質的に動的であり信頼性が低い。これらの問題について、以下では、モバイルネットワークにおいてよく見られる状況をいくつか考察することにする。
【0006】
(非接続あるいは圏外のユーザ)
モバイル装置が所与のネットワークから切断されるかあるいはネットワークとのコンタクトを失う(つまり、無線相互接続の圏外に出たりネットワークがカバーしていない「穴」に入ったりする)と、携帯装置上で動作しているセッション指向のアプリケーションはピアとのステートフルな接続を失い、動作を停止する。装置が再び取り付けられるかあるいは装置とネットワークとのコンタクトが回復すると、ユーザはネットワークとの再接続を行い、セキュリティ確保のために再ログインを実行して、アプリケーションにおいてどこで作業が中断されたかを同定し、必要ならば失われたデータの再入力を行わなければならない。このような再接続処理は時間を要し、費用もかかり、またユーザを非常に苛立たせることにもなる。
【0007】
(他のネットワークへの、あるいはルータ境界を越える移動(ネットワークアドレス変更))
モバイルネットワークは通常、管理容易性の見地からセグメント化されているが、一方でモバイル装置はその用途上、ローミングが可能になっている。相互接続されたネットワーク間のローミングとは、ネットワークアドレスが変更されるということを意味する。ネットワークアドレスがシステムの動作中に変更される場合、対応しているピア同士の接続を保つためにルーティング情報を変更することが必要になる。さらに、新しいネットワークアドレスを取得するために、それまでに確立されたステートフルなアプリケーションのセッション全てを終了させなければならない場合もあり、上記の再接続処理に関わる問題がここでも浮上する。
【0008】
(セキュリティ)
既に述べたように、各企業は機密情報を守る必要がある。市販のアプリケーションの多くは、物理的ネットワークへのアクセスがコントロールされ(つまり、安全な施設の内部に構築されたケーブルを使って実行され)、セキュリティは、認証や場合によっては暗号化に関する付加的な層を通じて保持されることを前提として作成されている。しかしながら、ノマディック・コンピューティングではこうした前提は自明のものではない。というのも、公共の電波や有線インフラを通過する際にデータが傍受されてしまう危険性があるからである。
【0009】
このため、ノマディックなシステムの特性を透過性を有するものとすることによって、既存のネットワーク・アプリケーションが種々のモバイル環境で確実に動作することを可能にした、統合的なソリューションの登場が大いに望まれる。
【0010】
本発明は、上記の問題を解決するために、企業内ネットワークを延長して、ネットワーク管理者がモバイル装置のユーザも固定装置のユーザと同じアプリケーションに容易にアクセスできるようにすることを可能にすると同時に、信頼性やネットワーク管理の一元性も失わない、一貫したソリューションを提示する。該ソリューションは、これまでの有線ネットワーク規格の長所を、発展しつつあるモバイルネットワーキングに関する規格にも持たせることで、既存のネットワーク・アプリケーションにも対応したものとなっている。
【0011】
本発明の非限定的で例示的具体的な実施の形態の一側面においては、モバイル相互接続(mobile interconnect)に接続されたモビリティ管理サーバ(Mobility Management Server; MMS)は、数量を限定されないモバイル端末システム(Mobile End Systems; MES)それぞれの状態の維持や、ネットワークへおよびピアにおけるアプリケーション処理への持続的な接続の維持に必要な、複雑なセッションの管理を行う。あるモバイル端末システムが、圏外に出てしまったり、サスペンドしたり、あるいは(あるモバイル相互接続から別の相互接続へとローミングすることなどで)ネットワークアドレスを変更したりした場合でも、モビリティ管理サーバは該システムと、該システムと対応しているピアとの接続を維持する。言い換えれば、該モバイル端末システムは、実際には物理的な接続が一時中断されてしまうにも関わらず、ピアとの仮想的な接続を維持し続けることになる。
【0012】
また、上記本発明の非限定的で具体的な実施の形態は、以下の(これらに限定されないが)新規かつ有用な技術、構成を提示する。
【0013】
・ユーザによって設定可能なセッション特性をモバイル・クライアントに付与するモビリティ管理サーバ。
【0014】
・ネットワーク・リソースの消費に関し、ユーザごとにモバイル装置のポリシーを管理。
【0015】
・工業規格である動的ホスト構成プロトコル(Dynamic Host Configuration Protocol; DHCP)をモビリティ管理サーバと連携させて用いるローミング方法。
【0016】
・ユーザによって設定可能なタイムアウト条件に基づいて、信頼性の低いデータグラムを自動的にシステムから除去。
【0017】
・ユーザによって設定可能な再試行条件に基づいて、信頼性の低いデータグラムを自動的にシステムから除去。
【0018】
より詳細には、上記本発明の好ましい具体的な実施形態の一例において、モバイル相互接続ネットワークに接続されたモビリティ管理サーバが備えられている。該モビリティ管理サーバは、数量を限定されないモバイル端末システムそれぞれの状態を維持し、ネットワークへおよび他の処理(例えば他のネットワークベースのピア・システムにて実行される処理)への持続的な接続の維持に必要な、複合的なセッションを管理する。あるモバイル端末システムが、圏外に出てしまったり、サスペンドしたり、あるいは(あるモバイル相互接続から別の相互接続へとローミングすることなどで)ネットワークアドレスを変更したりした場合、モビリティ管理サーバはデータの受信と待機要求を認識して、該システムと、該システムと対応しているピアとの接続を維持する。このようにモビリティ管理サーバがプロキシとして働くことにより、モバイル端末システム上で動作するアプリケーションは、あるネットワーク媒体との物理的な接続が一時的に中断された場合でも、持続的な接続を維持することができる。
【0019】
また、上記本発明の好ましい実施の形態の他の一例において、モビリティ管理サーバはモバイル端末システム用のアドレスを管理する。モバイル端末システムには、それぞれにプライマリネットワーク上のプロキシ・アドレスが割り当てられている。この非常に汎用性の高いアドレスはモバイル端末システムの「仮想アドレス」と呼ばれる。モビリティ管理サーバはこの仮想アドレスを、ノマディック・システムにおける現在の「位置」アドレスと対応付ける。モバイル端末システムの位置アドレスは、該システムがネットワーク間を移動する際に変更されるが、仮想アドレスの方は、どの接続がアクティブになっていようが、接続時間が長くなっていようが、上記アドレスが静的に割り当てられている限りは一定となる。
【0020】
上記本発明の好ましい実施形態のさらに他の一例において、モビリティ管理サーバは、コンソール(制御)アプリケーションと包括的なメトリクスとによってモバイル端末システムの集中的な管理を実現する。さらに、好ましい実施形態では、ユーザによって設定可能なセッション特性を、プロキシ・サーバ上で実行されるモバイル・クライアントについて実現し、ネットワーク・リソースの消費に関し、ユーザごとにモバイル装置のポリシー設定を管理する。
【0021】
さらに、上記一側面においては、遠隔プロシージャ・コール(RPC)・プロトコル(Remote Procedure Call protocol)およびインターネット・モビリティ・プロトコル(Internet Mobility Protocol)が、プロキシ・サーバと各モバイル端末システムとの間の通信の確立に使用されている。
【0022】
遠隔プロシージャ・コールによって、ローカルなシステムから、遠隔のシステムにおけるプロシージャを呼び出す処理が可能になり、RPCプロトコルを使用することで、モバイル端末システムが接続を切ったり、圏外に行ったり、動作をサスペンドしたりということを、アクティブなネットワークセッションを中断することなくできるようになる。このように、セッションの維持は専用のアプリケーションによってなされるわけではないので、市販のアプリケーションを、何ら変更することなくノマディックな環境下で使用することができるようになる。
【0023】
RPCプロトコルは、トランザクションを、標準的なネットワークトランスポート・プロトコルおよびインフラを経由して送られるメッセージに生成する。このRPCメッセージは、モバイル端末システムにおいて実行されているアプリケーションによって開始されたネットワーク・トランザクション全体を含んでおり、これにより、モビリティ管理サーバとモバイル端末システムとの間の接続状態情報を、両者の間の物理的な接続が途切れているときをも含め、常にシンクロさせておくことが可能になる。RPCを備える上記本発明の実施の形態において、プロキシ・サーバとモバイル端末システムとは、全ての時間における全ての共有接続に関する統一された論理データベースを管理すべく、各トランザクションの状態について十分な情報を共有している。
【0024】
上記本発明の好ましい実施形態におけるインターネット・モビリティ・プロトコルは、有線のローカルエリア・ネットワークと、それよりも信頼性の低い、無線LANおよびWANといったネットワークとの間の相違を補償する。フレームサイズとプロトコルタイミングとが調整されることで、モバイル環境を考慮していない通信に比べるとパフォーマンスが大幅に改善され、ネットワークのトラフィックは大きく減少する。これは、帯域幅が限られているときやバッテリーの寿命を考慮に入れなければならないときに、特に重要になる。さらに、上記本発明の好ましい実施形態におけるインターネット・モビリティ・プロトコルによって、公共のネットワークもしくは無線を通じて、モバイル端末システム―モビリティ管理サーバ間で伝送が行われる際の、機密データの安全性が確保される。インターネット・モビリティ・プロトコルは、認証された装置からのみプライベートなネットワークにアクセスできるようにすることで、基本的なファイアウォールとしての機能も果たす。また、インターネット・モビリティ・プロトコルにより、モバイル端末システム―モビリティ管理サーバ間の全ての通信を認証、暗号化することも可能である。
【0025】
上記本発明の好ましい実施形態のさらに他の一例において、モバイル相互接続は、標準的なネットワーク・アプリケーションのインターフェイスが適用できる範囲を広げるべく、標準的なトランスポート・プロトコル(例としてTCP/IP、UDP/IP、DHCPなど)を使用して構築される。上記本発明の好ましい実施形態によって、データ転送、セキュリティ、アドレス管理、装置管理、ユーザ管理が効果的に統合され、ノマディック環境を効果的に透過性を有する状態とすることができる。インターネット・モビリティ・プロトコルは、複数のデータストリーム(信頼度の高いものも低いものも)を、標準的なネットワーク・インフラ上で標準的なトランスポート・プロトコルによって与えられる、単一の仮想チャネルを通じて多重化するための効果的な方法を提供する。
【0026】
RPC層を用いて、インターネット・モビリティ・プロトコルは、違うソースから供給され、違うまたは同じ目的地へと向かうデータを融合させて単一のデータストリームとし、これをモバイルリンクを介して送る。該モバイルリンクの反対側の端において、該データストリームは逆多重化されて複数の異なったデータストリームとなり、それぞれの最終的な目的地に伝送される。この多重化/逆多重化により、利用可能な帯域幅を(最大限のサイズのネットワークフレームを生成することで)最大限に使うことができ、複数のチャネルを確立することができる(よって、優先順位付けが可能になり、基礎をなしているネットワークがデータ通信サービスを供給している場合であれば、その品質を保証することができる可能性もある)。
【0027】
上記本発明の実施の形態に関するインターネット・モビリティ・プロトコルは、さらに以下のような特徴や利点を実現する。なお、本発明は以下の点に限定されるものではない。
【0028】
・トランスポート・プロトコルの独立性
・ネットワーク上における位置(point of presence; POP)あるいはネットワーク・インフラを、データの流れに影響を与えることなく変更可能(物理的境界、ポリシー、あるいは帯域幅による制約が無い場合のみ)
・付加的な経費が最小限
・伝送媒体に適した自動的なフラグメントのサイズ変更(あるフレームのプロトコル・データ・ユニットがネットワーク媒体の利用可能な上限の伝送ユニットよりも多いとき、インターネット・モビリティ・プロトコルは該フレームをフラグメント化し、再構築する。このことにより、該フレームのネットワーク伝送を保障することが可能となる。再伝送の際、該フレームは再度検査される。ネットワーク・インフラもしくは環境が変化していた場合、該フレームは再度フラグメント化されるか、あるいは伝送ユニットの上限が実際に上昇しているときには単一のフレームとして伝送される。)
・再伝送の際に、フレームに信頼性の低いデータを破棄させることで、信頼性の低いデータのセマンティクスを保持
・信頼性の高いデータグラムサービスにおける新しいセマンティクスを提供(これにより、インターネット・モビリティ・プロトコルによるピアの端末へのデータグラムの伝達が保証され、要求しているエンティティに伝達の通知がなされる)
・上りと下りの伝送パスをそれぞれ別に扱って、自動的に操作パラメータを調整し最適なスループットを実現(ヒステリシスに基づいて、フレームサイズ/フラグメント化の閾値、待機中のフレーム数(ウィンドウ)、再伝送時間、およびネットワークを通じて送られる複製データの量を減少させるための遅延承認時間などのパラメータを調整)。
【0029】
・ネットワーク障害に対する耐性(モバイル環境での使用が想定されているため、一時的にネットワーク媒体間の接続が切断されても、仮想チャネルが切断されたりアプリケーションベースの接続が切断されたりしてしまうことがない)
・操作パラメータを調整するための帯域内信号方式をピアに対して提供(接続された端末のそれぞれから、そのピアに対してネットワーク・トポロジや環境の変化に関する警告を出すことが可能)
・輻輳回避アルゴリズムを採用し、必要なときにはスループットを効果的に減衰
・選択的な確認応答と高速での再伝送とによって無駄な再伝送の回数を制限し、ノマディック環境におけるハンドオフ回復のスピードアップを実現(これにより、プロトコルはロスの多いネットワーク環境においても最適なスループットを維持)
・複数のフレームを待機状態にする、スライディング・ウィンドウ技術を採用(このパラメータは各方向に調整可能で、ピアからの確認応答を要することなくフレームを所定の上限までストリーミングするために与えられる)
・シーケンス番号が非バイト指向であることにより、単一のシーケンス番号で最大のペイロード・サイズまでを表現可能
・セキュリティ対策(インターネット・モビリティ・プロトコル層に認証層と暗号化層を追加可能)
・圧縮によって、帯域幅の限られた接続における効率性を確保
・どちらのピアも新たな位置に移動することが可能な平衡型設計
・どちらの側からでもピアへの接続が確立可能
・休止している接続を迅速に破棄して消費されていたリソースを回復する、休止タイムアウトを発動可能
・接続に対して任意の最大持続時間を設定可能(例えば、所定の期間経過後あるいは所定の日時の後に、接続の終了および/または拒否が可能)。
【0030】
本発明の好ましい具体的な実施形態においては、システム管理者によるネットワーク・リソースの消費の管理が可能である。例えば、システム管理者は、モバイル端末システム、モビリティ管理サーバの少なくとも一方をコントロールすることができる。この場合のコントロールとは、例えばネットワーク帯域幅や他のリソースの配分の管理や、セキュリティ関連の事項を指す。管理はクライアント側で多数のリソースを持っているクライアントについて実行するのが効果的である。しかしながら、リソースを多く持たないシン・クライアントにポリシー管理のための付加的なコードや処理を負わせるのは望ましくない。よって、シン・クライアントの管理についてはモビリティ管理サーバ等によって集中的に行う、あるいはその一部を分担するのが最も現実的な解決策であると考えられる。モビリティ管理サーバがモバイル端末システムの各データストリームをプロキシすることによって、ポリシー管理が集中的に行われる。さらに、モビリティ管理サーバがユーザごとにプロキシを行うので、ユーザごと、装置ごとに、ネットワーク・リソースへのアクセスを管理し制限することができる。
【0031】
簡単な例を挙げると、モビリティ管理サーバは、特定のユーザによるあるネットワーク・リソースへのアクセスを「締め出す」(lock out)ことができる。この点は、インターフェイスのネットワークが、モバイル相互接続によって組織の管理下にある施設の境界よりも外に「延長」(extend)されてしまっていることを考えると非常に重要である(例えば、以前勤めていた職場のネットワークに、元従業員が外部からアクセスを試みるといった場合を考えよ)。これにとどまらず、モビリティ管理サーバによるポリシー管理はさらに多くの利点を提供しうる。例えば、モビリティ管理サーバによって、あるURLに特定のユーザのみがアクセスできるようにしたり、ネットワークサービスによる要求によって戻されるデータをフィルタリングしたり、ネットワークの帯域幅保全のためにデータを圧縮したりということが可能になるといった点である。このように、既存もしくは新規のアプリケーションレベルのサービスを、シームレスかつ透過的な形で強化することができる。
【0032】
また、モバイル端末システムは「信頼性の低い」(untrusted)ネットワーク(つまり組織の管理が及ぶ範囲外のネットワーク)とも接続されるため、リモート接続中に悪質なサイバー攻撃に遭う可能性がある。モバイル端末システムとの間でポリシーやフィルタを共有することで、悪質な接続からのモバイル端末システムの保全、リモート・ノードにおける進入(ingress)フィルタリング、そして企業インフラの集中管理のさらなるセキュリティ向上が可能になる。
【0033】
本発明の実施形態の他の一例では、インターフェイスによって補助されたローミングのリスナ(listener)によって、モバイル端末システムが一般的な信号伝達をサポートしたインターフェイスを利用し、インターフェイスによって補助されたローミングを行うことが可能になる。本発明の上記実施形態の一例の一側面において、モバイル端末システムの、インターフェイスベースのリスナは、所定の事象(例えばコールバックや、タイマーによるタイムアウト、データの損失を示唆するネットワーク活動など)に際して、モバイル端末システムの媒体の接続状態が変化したか否かを判定する。これは例えば、リスナが、モバイル端末システムが切り離されてネットワークと通信できる状態でなくなったことを検知して、インターフェイスにこれを示唆するといったことを意味する。再接続の際、リスナは予め記録された接続識別情報(attachment identification information)におけるネットワークポイントを参照して、モバイル端末システムが同じネットワークポイントに再接続されたか否かを判定する。再接続が同じネットワークポイントになされていた場合、リスナはモバイル・クライアントに、トランスポート・レベルでの通信の再確立を進めることを警告する。再接続が別のネットワークポイントになされていた場合、リスナはモバイル端末システムが「ローミング」(roam)状態であることを示し、現状におけるネットワーク・セグメントで使用可能なアドレスをシステムに取得させるようにする(これは例えば、現行のアドレスを新規のサブネットにおいて有効であるように登録することを含んでもよい)。リスナは(操作を介して学習した)ネットワーク・トポロジのマップを保持して、そのクライアントに対して生成される信号(「同一サブネット上のローミング」、「ローミング」等)の適否を判定する一助としてもよい。
【0034】
上記本発明の非限定的な好ましい具体的実施形態の他の一例においては、モビリティ管理サーバ(MMS)に「非接続ネットワーキング」(disjoint networking)モードでアクセスすることが可能である。この新しいアルゴリズムによって、あるネットワーク・インフラからは別のネットワーク・インフラにおけるネットワークアドレスが分からないような非接続ネットワーク・トポロジにおいても、MMSとの通信を確立する/持続するのに使われる、代替のネットワークアドレスを動的/静的に見つけ出すことができるようになる。この構成により、MMSが利用可能な代替アドレスのリストが予め設定され、通信中にMES(モバイル端末システム)に送られるかあるいはMESによって動的に学習される。実施の一形態において、MMSはMESに、一つ以上のMMSネットワークアドレスもしくは他のネットワークに対応した他のMMSのアイデンティティを、単一のネットワークによる通信によって送ることができる。該リストは、回路構築の際やその他接続が確立されている間のいかなる時にも、送付/更新が可能である。
【0035】
MESが別のネットワークへと移動するとき、MESは該ネットワークにおける新規のネットワーク接続を通じてMMSとコンタクトをとるために、MMSの「エイリアス」(alias)アドレス/アイデンティティのリストを用いる。これにより、移動前のネットワークと移動後のネットワークとがアドレス、ルートその他の情報を共有していなくても、MESは新規のネットワーク接続を通じてMMSとのコンタクトを再確立することができる。
【0036】
上記本発明の実施の形態のさらに他の例において、ポリシー管理に関する意思決定は分散型モバイルネットワークトポロジの内部にて行われ、例えば、ルールベースのポリシー管理プロシージャが、様々なメトリクスに基づいて要求の遂行を許可、拒絶、または制限する。このような管理形態は、例えば、マルチホーム/パス環境における最少コストルーティングといったコストメトリクスに基づいて意思決定をする際に用いられる。
【0037】
このようなポリシー管理技術では、意思決定の際にモビリティあるいは位置取得(つまりローミング)に関する事項が考慮に入れられてもよい。例えば、管理ルールが装置の位置(ネットワークのどの接続ポイント、例えばアクセスポイント/基地局、ハブ、ルータ、GPS座標等に近いかなど)に基づいて決定されてもよく、これにより、特定の操作が、あるビル内では許可されるが別のビルでは許可されないといったことが可能になる。例えば複数の違った無線ネットワークを利用している企業の場合にこの構成が有用であると考えられる。このような企業において、例えば積込ドックとオフィスとが無線ネットワークで接続されている場合がある。システム管理者は、積込ドックにいる従業員(例えばユーザや装置)がオフィス環境の無線ネットワークにアクセスできないようにすることができる。さらに、ポリシー管理によって、許可、拒否、遅延という3つの状態のいずれかをもたらすようにすることも可能である(例えば、決定が帯域幅やコストに基づいてなされる場合、操作の実行はより適切な時期がくるまで遅延される)。
【0038】
上記実施例におけるポリシー管理においては、決定に基づいて動作を変更することが可能となっている。ひとつのアクションの例としては、全てのアクティブなアプリケーションによる帯域幅の消費を抑えるというものがある。また、例えば、著しく帯域幅を消費する特定のアプリケーションが存在する場合に、ポリシーエンジン(policy engine)によって該アプリケーションによる操作/トランザクションの完了までの速度を管理することが可能となる。この動作は、誤ったアプリケーションの動作を抑制させることを動的に学習するようになっていてもよい。もうひとつのアクションの例として、データの復元(例えば、利用可能な/許可された帯域幅やコスト、ユーザによる制限に基づいたグラフィックイメージのディザリング)がある。
【0039】
さらに、ルールエンジン(rules engine)は、ルール評価に基づいて他のアクションを発動させる。イベントをロギングする、警告を発する、ユーザにアクションが拒否、遅延、あるいは条件付けされたことを通知するといった外部プロシージャが実行されてもよい。これらのような通知は、既存のルールへのオーバーライドがオペレータから求められるというような、インタラクティブなものであってもよい。
【0040】
上記実施例におけるポリシー管理エンジン(policy management engine)において、その意思決定は、装置、装置のグループ、ユーザ・グループ、ユーザ、あるいはネットワーク接続ポイントに関連した、任意の数のメトリクスもしくはその組み合わせに基づいてなされていてもよい。
【0041】
ポリシー管理機能の一部として、他にもローカルベースの情報やサービスが、ポリシー管理、ネットワーク・モデリング、および/またはアセット・トラッキングのために取得され/備えられていてもよい。このようなサービスには、モバイル端末システムの現在位置に関連した情報がユーザやモバイル端末システムに自動的に提供される機能が含まれる。該情報は、メッセージ、ファイルその他の電子的フォーマットにて供給されてもよい。
【0042】
この機能の非限定的な利用例としては、ショッピングモール運営者、各種業界団体、大規模小売業者などがショッピングセンターに、ブルートゥース PAN、IEEE 802.11 LAN、802.15 PAN、その他の無線ネットワーク規格に準拠した、無線アクセスポイントを戦略的に設けるというものがある。この場合、顧客がセンター内を歩き回るのにあわせて、モバイル端末システムの現在位置周辺の店舗は顧客に情報を提示することができる。この情報としは、セールやディスカウント、特典などについてのものが含まれる。これに加え、モバイル端末システムに販促用の電子クーポン券が供給されるのもよい。店舗側は上記のようなサービスを、モール運営者、業界団体、小売業者、あるいはその他のサービス提供者による集中的な管理機構に登録することになる。
【0043】
上記技術が利用される他の非限定的な例として、現場サービス、訪問販売、宅配などのバーティカル産業において、位置を基準にして情報を収集する、地域サービス、地図、方角、顧客、事故など公共の情報を、位置を基準にモバイル端末システムに送る、などがある。
【0044】
さらに他の非限定的な例として、モバイル端末システムをモニタリング、トラッキングするウェブベースのサービスがある。例えば、顧客は該トラッキングサービスに登録し、信頼の置ける第三者機関が、ホスティングされているウェブサービスにログオンして顧客のモバイル端末システムの精確な位置を同定する。この場合、モバイル端末システムは車両に備え付けられてもよいし、歩行者に所持されていてもよい。モバイル端末システムのさらなる小型軽量化に伴い、このようなサービスはますます現実味を帯びてきている。該サービスを利用することで、危険度の高い人々、例えば高齢者、障害者、病人などを追跡、位置確認することができる。該サービスは、自動車その他の高価な動産や荷物をトラッキングすることにも利用できる。3G WANネットワーク、ブルートゥースネットワーク、802.11ネットワークその他の無線技術を利用し、ネットワーク媒体や接続ポイントを切り替えてもシームレスな接続性を保つことができるという特性を生かして、上記のサービスを非常に低いコストで実施することが可能である。
【0045】
このように、本発明は企業ネットワークを延長して、ネットワーク管理者が、信頼性や集中的な管理形態を犠牲にすることなく、モバイル端末のユーザに、アプリケーションへの簡便なアクセスを固定端末のユーザの場合と同様に提供することを可能にする。本ソリューションは、既存の有線ネットワーク規格の長所を制定段階にあるモビリティ規格にも持たせて、既存のネットワーク・アプリケーション上で動作可能なソリューションを生み出すものである。
【0046】
本発明の他の目的、特徴、および優れた点は、以下に示す記載によって十分分かるであろう。また、本発明の利点は、図面を参照した以下の説明で明白になるであろう。
【0047】
[好ましい実施の形態の詳細な説明]
図1は、本発明の、モバイル強化ネットワークコンピュータシステム100を例示している。該ネットワークコンピュータシステム100は、モビリティ管理サーバ102と、一つ以上のモバイル端末システム104とを含んでいる。モバイル端末システム104は、ローカルエリア・ネットワーク(LAN)108を通じてモビリティ管理サーバ102と通信することができる。モビリティ管理サーバ102は、モバイル端末システム104のネットワーク・レベルでのプロキシとして機能する。モビリティ管理サーバ102はこれを、それぞれのモバイル端末システムの状態を管理することと、ネットワーク・アプリケーションをホスティングしているどのピア・システム110とも、モビリティ管理サーバ102とモバイル端末システム104との間の相互接続が断続的で信頼性の低いものであっても常時接続を維持してゆくために必要な、複雑なセッション管理を行うこととによって成し遂げている。本好ましい実施形態では、モビリティ管理サーバ102は、本発明の遠隔プロシージャ・コール・プロトコルおよびインターネット・モビリティ・プロトコルを用いて、モバイル端末システム104と通信する。
【0048】
この場合、モバイル端末システム104はモビリティ管理サーバ102とアクティブに接続されるが、該接続は常時アクティブに行われるものではない。例えば、
・複数のモバイル端末システム104a‐104kが、モビリティ管理サーバ102と、モバイル相互接続によって(この場合無線で)通信する。例として、ローカル・エリアもしくはワイドエリア・ネットワーク108と無線(あるいは有線)でつながった、従来型の電磁(電波)トランシーバ106が考えられる。上記のようなモバイル相互接続により、モバイル端末システム104a‐104kが、一つのカバーエリア(cover area)107aから別のカバーエリア107kへとローミングすることが可能になる。一般的に、モバイル端末システム104が、あるカバーエリア107から別のエリアにローミングしたり、最も近いトランシーバ106から届く範囲を外れたり、あるいは信号を一時的に遮断(例えばビルの柱の裏側を通るなどで)されたりした場合、一時的に通信が切断される。
【0049】
・別のモバイル端末システム104l、104m…が、モビリティ管理サーバ102と、ドッキングポートやネットワークケーブルコネクタなどの着脱式(non−permanent)有線相互接続109を介して通信する。モバイル端末システム104は、接続109が外れたり、モバイル端末システム104の電源が切られたりした場合、一時的にLAN108から切断される。
【0050】
・さらに別のモバイル端末システム(例えば104n)が、モビリティ管理サーバ102と、ワイドエリア・ネットワーク、ダイアルアップ・ネットワーク、衛星ネットワーク、インターネット等のネットワーク・トポグラフィ111を介してノマディック接続される。一例として、ネットワーク111のサービスは断続的なものであってもよく、他の例として、モバイル端末システム104がある種類の接続形態から別の種類のものへと移行(例えば、モビリティ管理サーバ102と有線相互接続109を通じて接続される状態からネットワーク111を通じて接続される状態へ移行、もしくはその逆)し、移行時に一時的に接続が切断されるという構成であってもよい。
【0051】
モバイル端末システム104は、標準的なモバイル装置や市販のコンピュータであってよく、例えば、モバイル端末システム104は、市販のトランシーバおよび/またはネットワークカードを実装したラップトップコンピュータによって構成される。モバイル端末システム104は、標準的なネットワーク・アプリケーションや標準的なOS(オペレーティングシステム)を実行し、標準的なトランスポート・レベル・プロトコル(例えばTCP/IP)を利用して、トランスポート層で通信を行うものであってよい。本発明において、さらに、モバイル端末システム104がクライアントソフトウェアを実行することで、遠隔プロシージャ・コール・プロトコルおよびインターネット・モビリティ・プロトコルを用いたモビリティ管理サーバ102との通信が可能になる。上記両プロトコルは、それらと同様のトランスポート・レベルのプロトコルを利用して伝送される。
【0052】
モビリティ管理サーバ102は、ウィンドウズ(登録商標)NTサーバなどの標準的なサーバによってホスティングされるソフトウェアを含んでいてよい。本好ましい実施形態では、モビリティ管理サーバ102は、規格に準拠したクライアント/サーバ型のインテリジェントサーバであって、企業ネットワーク108を透過性を有した状態でノマディック環境にまで延長するものである。モビリティ管理サーバ102は、数量を限定されないモバイル端末システム104それぞれのネットワーク・レベルでのプロキシとして機能するが、モビリティ管理サーバ102はこれを、それぞれのモバイル端末システムの状態を管理することと、ネットワーク・アプリケーションをホスティングしているどのピア・システム110とも、モバイル端末システム104とトランシーバ106との間のモバイル相互接続が断続的で信頼性が低いものであっても常時接続を維持してゆくために必要な、複雑なセッション管理を行うこととによって成し遂げている。
【0053】
例えば、サーバ102はどのような標準的(例えばTCP/IPベースの)ネットワーク・アプリケーションであっても、変更を行うことなしに、モバイル接続を通じて実行させることができる。接続が切断されたり、圏外に出たり、あるいは動作をサスペンドしたりしたモバイル端末システム104のセッションは、サーバ102によって維持され、該システムが復帰した際にはサーバ102が上記セッションをレジュームする。モバイル端末システム104が圏外に出てしまったり、シャットダウンしたり、あるいは位置アドレスを変更した場合、モビリティ管理サーバ102は、データの受信に関して確認応答し、モバイル端末システムが再度通信可能となるまで要求を待機させることで、モバイル端末システムとピア・システム110との接続を維持する。
【0054】
サーバ102はまた、有線ネットワークにおける管理能力をモバイル接続にまで延長する。ネットワークソフトウェア層はそれぞれが互いに独立して動作するので、ソリューションをそれが展開されるそれぞれの環境に合わせてカスタマイズすることが可能である。
【0055】
一例として、モビリティ管理サーバ102が、ローカルエリア・ネットワークやワイドエリア・ネットワークのような標準的な企業ネットワーク108と接続され、該ネットワーク108は、様々な固定端末システム(例えば一つ以上のホストコンピュータ110)110と接続される状況が考えられる。モビリティ管理サーバ102によって、モバイル端末システム104と固定端末システム110との間の、連続セッション型データストリームを利用した通信が可能となるが、この通信は、モバイル端末システム104が、接続しているネットワーク相互接続とのコンタクトを失ったり、あるネットワーク相互接続106、109、111から別のネットワーク相互接続へと移動したりしても(例えば、無線相互接続の場合、ある無線トランシーバ106のカバーエリア107から別のカバーエリアにローミングしても)、利用可能となっている。
【0056】
モバイル端末システム104は、モビリティ管理サーバ102との結合を、スタートアップ時か、あるいはモバイル端末システムがネットワークサービスを要求した時に確立する。結合が確立されると、モバイル端末システム104は、一つ以上のネットワーク・アプリケーションのセッションを、連続的あるいは共時的に始めることができる。モバイル端末システム104−モビリティ管理サーバ102間の結合確立によって、モバイル端末システムが切断されたり、圏外に出たり、あるいはサスペンドしたりしても、モバイル端末システムにおけるアプリケーションのセッションを維持し、モバイル端末システムの復帰時には該セッションをレジュームすることが可能になる。本好ましい実施形態では上記の処理は完全に自動で行われ、ユーザによる介入は全く必要とされない。
【0057】
本発明の一例において、モバイル端末システム104は、UDP/IPのような標準的なトランスポート・プロトコルを用いてモビリティ管理サーバ102と通信を行う。標準的なトランスポート・プロトコルを使用することで、モバイル端末システム104が、標準的なルータ112など企業ネットワーク108に既存のインフラを用いて、モビリティ管理サーバ102と通信することが可能になる。本発明では、高レベルの遠隔プロシージャ・コール・プロトコルが、トランザクションを、モバイル強化ネットワーク108を介して、標準的なトランスポート・プロトコルを使用して送られるメッセージへと生成する。本好ましい実施形態において、上記のようなモバイルRPCメッセージは、モバイル端末システム104にて実行されるアプリケーションによって開始された、全てのネットワーク・トランザクションを含んでいるため、モビリティ管理サーバ102によって全てを完了させることができる。このことにより、モビリティ管理サーバ102とモバイル端末システム104とは、ネットワーク媒体の接続性が阻害されているときでも、接続状態情報を常に互いにシンクロさせておくことができる。
【0058】
モバイル端末システム104のそれぞれは、全てのネットワーク活動を傍受し、該ネットワーク活動をモバイルRPCプロトコルを通じてモビリティ管理サーバ102にリレーするための情報をモバイル端末システム自体に提供するモビリティ管理ソフトウェアクライアントを実行する。本好ましい実施形態では、該モビリティ管理クライアントは、モバイル端末システム104に実装されているOS(ウィンドウズ(登録商標)NT、ウィンドウズ(登録商標)98、ウィンドウズ(登録商標)95、ウィンドウズ(登録商標)CEなど)と透過性を有する状態で協働して、クライアント側でのアプリケーションのセッションを、ネットワークとのコンタクトが失われても維持し続ける。
【0059】
モビリティ管理サーバ102は、それぞれのモバイル端末システム104の状態を管理し、例えば接続の反対側の端に接続されたホストコンピュータ110のような通信相手のピア108との連続的な接続を維持するために必要とされる複合的なセッション管理を行う。モバイル端末システム104との通信ができなくなったり、モバイル端末システム104がサスペンドしたり、あるいはネットワークアドレスを変更したり(例えばあるネットワーク相互接続から別のものにローミングしたり)した場合、モビリティ管理サーバ102は、モバイル端末システム104とホストシステム110などの接続端との間の接続を、データ受信に関して確認応答したり、要求を待機させたりすることによって維持する。このプロキシ機能によって、ピアのアプリケーションは、モバイル端末システム104との物理的な接続が絶たれたことを検知することがなくなる。よって、もしモバイル端末システムが一時的に接続を失ったり、あるカバーエリア107K内において、あるネットワーク相互接続106Aから別のネットワーク相互接続106Kへとローミングしたりした場合でも、(物理的接続が再確立された際に単純に作業をレジュームすることで)モバイル端末システム104のアプリケーションと、その結合しているセッションを実行する端との間の連続的な接続を効果的に維持することができる。
【0060】
モビリティ管理サーバ102はまた、モバイル端末システム104がセグメント化されたネットワークの様々な部分をローミングする際、異なったネットワークアドレスを受信するという問題を解決するべく、アドレスを管理することが可能となっている。モバイル端末システム104はそれぞれ、プライマリネットワーク上での仮想アドレスを有している。該仮想アドレスは、標準的なプロトコルによって、あるいは静的割り当てによって決定されている。モバイル端末システム104のそれぞれについて、モビリティ管理サーバ102は該システムの現状における実際の(位置)アドレスに対応して仮想アドレスを割り当てる。モバイル端末システム104の、あるネットワーク・セグメントから他のセグメントへの移動に伴って、該システム104の現在位置アドレスが変更されても、仮想アドレスは、どの接続がアクティブになっていようが、接続時間が長くなっていようが、上記アドレスが静的に割り当てられている限りは一定となる。
【0061】
よって、モバイル端末システム104の位置アドレスの変更は、モビリティ管理サーバ102を介して、結合しているホストシステム110(および他のピア)におけるセッションを実行する端からは完全に透過性を有する状態となっている。ピア110から見えるのは、サーバ102によってプロキシされた(不変の)仮想アドレスのみということになる。
【0062】
本好ましい実施形態では、モビリティ管理サーバ102はさらに、コンソール(制御)アプリケーションと包括的なメトリクス(exhaustive metrics)とによる、集中的なシステム管理が可能である。システム管理者は、上記のツールを利用して、遠隔接続を設定、管理し、遠隔接続およびシステムにおける問題を解決することができる。
【0063】
モビリティ管理サーバ102によるプロキシ・サーバ機能によって、ネットワーク・アプリケーション、ユーザ、そして装置にそれぞれ異なった優先レベルを設定することができるようになる。これは、モビリティ管理サーバ102が有する処理用のリソースが有限であることを鑑みれば、有用なものである。システム管理者が上記のようにモビリティ管理サーバ102の設定を変更できることで、システムおよびネットワークのパフォーマンスが全体として向上する。一例として、システム管理者がモビリティ管理サーバ102の設定を変更できることにより、音声や映像のストリーミングのようなリアルタイムのアプリケーションに対して、モビリティ管理サーバ102のリソースを、あまりリソースを使用しないメールソフトのようなアプリケーションよりも多く割り当てることができる。
【0064】
詳しく説明すると、モビリティ管理サーバ102は、アプリケーション、もしくはSNMPのような標準的なネットワーク管理プロトコル、ウェブベースの設定インターフェイス、ローカルなユーザインターフェイスなどのアプリケーション・インターフェイスを介して設定される。結合(association)そのものの優先度、および/または、ある結合における複数のアプリケーションの優先度を設定することも可能である。例えば、モビリティ管理サーバ102を介して動作する他の結合と関連している結合それぞれの優先度は、ユーザあるいは装置ごとに設定可能である(本実施形態では、ユーザおよびユーザがログインした装置の両方を優先するように設定された場合に、ユーザに関する設定のほうがより優先されるように設定されてもよい)。あるいは結合それぞれについて、アプリケーションの優先度に関し、ネットワーク・アプリケーションごとにいくつかのレベルが設定されていてもよい。本システムでは、優先レベルはいくつでも設定することが可能である。一例として、低、中、高の3つの優先レベルが設定される例が考えられる。
【0065】
(サーバ/クライアント型ソフトウェア・アーキテクチャの例)
図2に、モバイル端末システム104とモビリティ管理サーバ102とのソフトウェア・アーキテクチャの一例を図示する。本発明の一例において、モバイル端末システム104とモビリティ管理サーバ102は標準的なOSおよびアプリケーション・ソフトウェアを実行するが、このときに、ほんの少数のコンポーネントを新しく追加するだけで、断続的に接続されるモバイルネットワーク108を介した、信頼性が高くかつ効果的、持続的なセッションが実行可能となっている。図2に示すように、モバイル端末システム104は、ネットワーク・インターフェイス・ドライバ200、TCP/UDPトランスポートサポート202、トランスポート・ドライバ・インターフェイス(TDI)204、および一つ以上の従来型のネットワーク・アプリケーション208に対するインターフェイスとして使われるソケットAPI206を含む、従来型のOSソフトウェアを実行する。従来型のネットワーク・ファイル/プリント・サービス210が、従来型のTDI204との通信用にさらに設けられていてもよい。サーバ102は、上記と類似した、従来型のネットワーク・インターフェイス・ドライバ200’、TCP/UDPトランスポートサポート202’、トランスポート・ドライバ・インターフェイス(TDI)204’、および一つ以上の従来型のネットワーク・アプリケーション208’に対するインターフェイスとして使われるソケットAPI206’を有していてもよい。モバイル端末システム104とモビリティ管理サーバ102はそれぞれ、さらにネットワーク/セキュリティ・プロバイダ236(モバイル端末システム)、ユーザ/セキュリティ・データベース238(サーバ)を備えていてもよい。
【0066】
本発明では、新規のモバイル・インターセプタ・コンポーネント212が、モバイル端末システム104のソフトウェア・アーキテクチャにおける、TCP/UDPトランスポートモジュール202とトランスポート・ドライバ・インターフェイス(TDI)204との間に挿入されている。該モバイル・インターセプタ・コンポーネント212は、トランスポート・ドライバ・インターフェイス(TDI)204における特定のコールを傍受して、該コールを、ネットワーク108を介し、RPCおよびインターネット・モビリティ・プロトコル、標準的なTCP/IPトランスポート・プロトコルを通じてモビリティ管理サーバ102へと転送する。こうして、モバイル・インターセプタ212は、全てのネットワーク活動を傍受して、サーバ102へと転送することができる。該インターセプタ212はOSと透過性を有する状態で協働するので、モバイル端末システム104がネットワーク108とのコンタクトを失っても、クライアント側のアプリケーションのセッションはアクティブであり続けることができる。
【0067】
モバイル・インターセプタ212は、トランスポート・ドライバ・インターフェイス204とは違うレベルで(例えばソケットAPI206のレベルで)動作することもできるが、TDIのレベルでモバイル・インターセプタ212が動作する、より詳細にはいずれかのトランスポート・プロトコル・インターフェイスにおいて動作することにより、下記のような利点が生まれる。なお、便宜的に、トランスポート・ドライバ・インターフェイスを示す全てのものをTDIという略語で表わすこととする。多くの標準的なOS(例えば、マイクロソフト社のウィンドウズ(登録商標)95、ウィンドウズ(登録商標)98、ウィンドウズ(登録商標)NT、ウィンドウズ(登録商標)CEなど)はTDIインターフェイス204を実装しているので、OSのコンポーネントを変更することなく互換性が保証される。さらに、トランスポート・ドライバ・インターフェイス204は通常カーネル・レベルのインターフェイスであることから、ユーザモードへの切り替えが必要でなく、これにより性能を向上させることができる。
【0068】
さらに、TDIインターフェイス204のレベルで作動するモバイル・インターセプタ212は、様々な別のネットワーク・アプリケーション208(例えば複数の同時に動作しているアプリケーション)に加えて、ネットワークにおけるファイル、プリント、および他のカーネル・モードなどのサービス210(インターセプタが例えばソケットAPI206のレベルで動作している場合はそれぞれ別に扱う必要がある)を傍受することができる。
【0069】
図2Aに、どのようにインターセプタ212が動作するかを示す高レベルのフローチャートの一例を示す。モバイル端末システム104のTDIインターフェイス204へのコール(ブロック250)は、モバイル・インターセプタ212によって傍受される(ブロック252)。モバイル・インターセプタ212によって傍受されたRPCコールはインターネット・モビリティ・プロトコルに準拠してフラグメントにパッケージ化され、該フラグメントはデータグラムとして、UDPやTCPといった標準的なトランスポート・プロトコルにより、LAN、WAN等のトランスポート108を介してモビリティ管理サーバ102へと送られる(ブロック252)。モビリティ管理サーバ102は受信したRPCデータグラムをアンパックして(ブロック254)、要求されたサービスを実行する(例えば、データや応答を、固定端末システム110で動作するアプリケーションサーバ処理へと転送することで、モバイル端末システムのアプリケーション208のプロキシとして振舞う)。
【0070】
再び図2に戻って、モビリティ管理サーバ102は、従来型のネットワーク・インターフェイス・ドライバ222を介して送られる、モバイル端末システム104からの、あるいはモバイル端末システム104へ向かうメッセージを傍受する、アドレス変換部220を有している。例えば、アドレス変換部220は、セッションの相手のピア(固定端末システム110)からのモバイル端末システム104の仮想アドレス宛のメッセージを認識する。モバイル端末システムへの該メッセージはプロキシ・サーバ224へと送られる。プロキシ・サーバ224は仮想アドレスとメッセージとを待機していたトランザクションに割り当て、該応答を、上記モバイル端末システム104の現在位置アドレスへと転送する。
【0071】
さらに、図2によると、モビリティ管理サーバ102は、アドレス変換部(中間ドライバ)220とプロキシ・サーバ224に加えて、設定マネージャ228、操作/ユーザインターフェイス230、およびモニタ232を有している。設定マネージャ228は設定情報とパラメータとを提供して、プロキシ・サーバ224が接続の管理を行えるようにする。操作/ユーザインターフェイス230とモニタ232により、ユーザとプロキシ・サーバ224との間のやりとりが可能になる。
【0072】
(モバイル・インターセプタ)
図3は、本発明のRPCプロトコルとインターネット・モビリティ・プロトコルとをサポートしたモバイル・インターセプタ212のソフトウェア・アーキテクチャの一例を示す。本例では、モバイル・インターセプタ212は、遠隔プロシージャ・コール・プロトコル・エンジン240と、インターネット・モビリティ・プロトコル・エンジン244の、二つの機能コンポーネントを有している。モビリティ管理サーバ102において動作するプロキシ・サーバ224によって、対応するエンジン240’、244’が用意される。
【0073】
このように、本好ましい実施形態におけるモバイル・インターセプタ212は、モビリティ管理サーバ102をそれぞれのモバイル端末システム104と接続するための、遠隔プロシージャ・コール・プロトコルと、インターネット・モビリティ・プロトコルとをサポートしている。遠隔プロシージャ・コールは、あるローカルシステムから、離れた別のシステムにおけるプロシージャを発動する処理を可能とするものである。一般的に、ローカルシステムは遠隔のシステムにおいてプロシージャ・コールが実行されたことを感知しない。RPCプロトコルの利用によって、モバイル端末システム104が、アクティブなネットワークセッションを失うことなく、圏外に出たり、操作をサスペンドしたりすることが可能になる。セッションの維持に特別なアプリケーションは必要とされないので、モバイル環境にあるネットワーク108において、市販のアプリケーションが何の変更も必要とせずに動作することになる。
【0074】
ネットワーク・アプリケーションは、一般的に、ウィンドウズソケット(Windows sockets)のようなアプリケーションレベルのインターフェイスを利用している。アプリケーションレベルのAPIへの単一のコールによって、トランスポート層もしくはメディア・アクセス層における複数の送信および受信データパケットが生成される。優先されるモバイルネットワークで、もし上記のパケットのうちの一つが失われた場合、接続全体の状態が不安定になってセッションは中止されるが、本発明の好ましい実施形態はRPCを備えており、モビリティ管理サーバ102とモバイル端末システム104とは、物理的な接続が絶たれたときであっても、常に統一された論理リンクを維持するために、接続状態に関する情報を共有している。
【0075】
本発明のインターネット・モビリティ・プロトコルは、有線のネットワークと無線など他の信頼性の劣るネットワークとの相違点を補償する。フレームサイズとプロトコルのタイミングとが修正されることで、モバイル環境を考慮しないトランスポートと比較して性能が著しく向上し、ネットワークのトラフィックを大幅に減少することができる。このことは、帯域幅に制限がある場合やバッテリーの寿命が問題となる場合に重要となる。
【0076】
また、本発明のインターネット・モビリティ・プロトコルは、公共の有線ネットワークを通じて、もしくは無線によってモビリティ管理サーバ102とモバイル端末システム104との間の通信がなされる際の、機密情報のセキュリティを保証する。インターネット・モビリティ・プロトコルは、認証された装置のみが企業ネットワークにアクセスすることを許可することで、基本的なファイアウォールとしての機能を果たす。本発明のインターネット・モビリティ・プロトコルはさらに、モビリティ管理サーバ102とモバイル端末システム104との間での全ての通信を認証、暗号化することを可能にする。
【0077】
図3のモバイル端末システム104における遠隔プロシージャ・コール・プロトコル・エンジン240は、TDIコールパラメータをマーシャリングし、データをフォーマットし、要求を、TDI遠隔プロシージャ・コール・プロトコル・エンジン240’がコールを実行するモビリティ管理サーバ102まで転送するべく、インターネット・モビリティ・プロトコル・エンジン244に送る。モバイル端末システム104は、遠隔プロシージャ・コール・プロトコルに基づいてTDIコールパラメータをマーシャリングする。モビリティ管理サーバ102のTDI遠隔プロシージャ・コール・プロトコル・エンジン240’が上記のRPCを受信すると、モビリティ管理サーバ102はモバイル端末システム104に代わってコールを実行する。モビリティ管理サーバ102のTDI遠隔プロシージャ・コール・プロトコル・エンジン240’は、接続されたモバイル端末システムそれぞれにおける完全なネットワークの状態を、ピアであるモバイル端末システム104のRPCエンジン240と共有する。モバイル端末システム104の代理としての遠隔プロシージャ・コール実行に加え、サーバのRPCエンジン240’は、システムフローの管理、遠隔プロシージャ・コールの解析、仮想アドレスの(アドレス変換機構220が行うサービスに対応した)多重化、遠隔プロシージャ・コールのトランザクションの優先順位付け、スケジューリング、ポリシー実行、および融合処理(coalescing)を行う。
【0078】
インターネット・モビリティ・プロトコル・エンジン244は、信頼性の高いデータグラムサービス、順位付け、フラグメント化、およびメッセージの再組立を行う。また、設定すれば、認証、データ暗号化、プライバシー保護強化、セキュリティ、そしてスループットのための圧縮も行うことができる。インターネット・モビリティ・プロトコル・エンジン244は、電力消費を考慮に入れる必要のある環境において、複数の異なるトランスポートを利用して機能するようになっているので、消費電力管理を意識したものであるとともに、各トランスポートに対して独立となっている。
【0079】
図3Aは、モバイル・インターセプタ212がモビリティ管理サーバ102と通信してTDIコールのやり取りを行う処理を例示する。一般的に、モバイル・インターセプタ212のRPCプロトコル・エンジン240は、マーシャリングされたTDIコールを、モビリティ管理サーバ102へと送るべく、インターネット・モビリティ・プロトコル・エンジン244へと転送する。RPCプロトコル・エンジン240は、この作業を、インターネット・モビリティ・プロトコル・エンジン244によって管理されるキューにRPCコールを加えることで達成する(ブロック302)。帯域幅管理を円滑に行うために、インターネット・モビリティ・プロトコル・エンジン244は受信したRPCコールの転送を所定の期間(RPC融合タイムアウト期間)遅延させる(ブロック304)。一般的に、RPC融合タイムアウトは5ミリ秒から15ミリ秒の間に設定されるが、この数値はユーザによって変更可能である。この遅延によって、RPCエンジン240はTDIコールをインターネット・モビリティ・プロトコル・エンジン244のキューに加えて、一つ以上のRPCコールが同一のデータグラム(フラグメント)によって転送されるようにすることができる。
【0080】
融合タイムアウトが終了するか、RPCエンジン240がそれ以上のRPCコールの受信を拒否する(判定ブロック306)ことを決定すると、RPCエンジン240は、インターネット・モビリティ・プロトコル・エンジン244に、キューをフラッシュ(flush)し、RPCコールを単一のフレームに融合し、該フレームをピアに転送するよう要求する(ブロック308)。この融合により伝送回数が減少し、プロトコルのパフォーマンスが高められる。しかし、インターネット・モビリティ・プロトコルは、パフォーマンス最適化のために他の外部基準に基づいてキュー244をフラッシュすることもしなければならず、本好ましい実施形態において、単一のRPC要求でフレーム全体が占められてしまう場合、IMP層は自動的に要求をピアに送るよう試みる。
【0081】
上記のように、モビリティ管理サーバ102のプロキシ・サーバはRPCプロトコル・エンジン240’とインターネット・モビリティ・プロトコル・エンジン244’とを有している。図3Bは、モバイル端末システム104からインターネット・モビリティ・プロトコル・メッセージ・フレームを受信した際に、モビリティ管理サーバ102で実行される処理を例示している。該フレームをモビリティ管理サーバ102が受信すると、インターネット・モビリティ・プロトコル・エンジン244’は、フレームが(基礎となるトランスポートの最大伝送量の制約で)フラグメント化されていれば再構築し、メッセージの内容を逆多重化して、どのモバイル端末システム104からの受信かを決定する。この逆多重化により、インターネット・モビリティ・プロトコル・エンジン244’は、遠隔プロシージャ・コール・プロトコル・エンジン240’に、的確な結合関連文脈情報(association−specific context information)を伝えることができる。
【0082】
続いて、インターネット・モビリティ・プロトコル・エンジン244’は、受信したメッセージを、RPC受信示唆システム作業要求(RPC receive indication system work request)354にして、該作業要求と結合関連文脈情報を、モビリティ管理サーバ102のRPCプロトコル・エンジン240’に与える。RPCプロトコル・エンジン240’が作業要求352を受信すると、該エンジン240’は作業要求352を結合関連作業キュー356に加え、次に予定済みの要求をグローバルキュー358に送ることによって、結合処理のスケジューリングが行われる。続いて、RPCエンジン240’のメイン作業スレッドに、作業が実行可能となったことが伝えられる。該メインスレッドが作業を始めると、グローバルキュー358がポーリングされて、待機状態となっているスケジューリングされた結合処理が確認される。その後、メインスレッドは該イベントを待機状態から外し、結合関連作業キュー356が処理される。
【0083】
結合関連作業キュー356から、上記メインスレッドはそれまで待機していたRPC受信示唆作業要求を見つけ出す。次に、メインスレッドはRPC受信示唆作業要求356をキューから外し、該要求を解析する。図3Aを参照して説明した上記融合処理により、モビリティ管理サーバ102は、それぞれのデータグラムに内包された複数のRPCトランザクションを頻繁に受信することになる。モビリティ管理サーバ102は次に、該RPCトランザクションをそれぞれ逆多重化して別個の遠隔プロシージャ・コールに戻し、そして要求された機能をモバイル端末システム104に代わって実行する。パフォーマンス向上のため、RPCエンジン240’に、RPCメッセージ解析処理中の先読みメカニズムを備えさせて、RPCエンジン240’が、要求されたトランザクションのうちのいくつかを同時に実行できるか否か(パイプライン処理できるか否か)を確認してもよい。
【0084】
(RPCエンジン240’によるRPC結合の実行手法)
図4は、結合作業キュー356に加えられたRPC結合を実行する処理を例示したフローチャートである。RPC結合の実行が予定されている時、RPCプロトコル・エンジン240’(状態機械として設けられていてもよい)のメインスレッドは、グローバルネットワークキュー358からの作業要求を待機状態から外し、作業要求の種類を決定する。
【0085】
本実施形態のRPC作業要求は、以下のような6つの基本的な種類に分けられる。
【0086】
・スケジューリング要求(schedule request)
・接続示唆
・切断示唆
・ローカル結合中止(local terminate association)
・「リソース使用可」要求(”resource available” request)
・ping休止タイムアウト(ping inactivity timeout)
RPCプロトコル・エンジン240’は、上記の様々な種類の要求をそれぞれ別の方法で取り扱う。RPCプロトコル・エンジン240’は要求の種類(グローバルキュー358に記憶された、要求に関する情報によって識別される)をテストして、該要求をどう処理するかを決定する。
【0087】
作業要求の種類が「スケジューリング要求」である場合(判定ブロック360)、RPCプロトコル・エンジン240’はどの結合が予定されているかを判別する(ブロック362)。RPCプロトコル・エンジン240’はこの判別を、グローバルキュー358に記憶されている情報に基づいて実行することができる。上記判別がなされると、RPCプロトコル・エンジン240’が、それぞれが対応する要求を記憶している結合作業キュー356(1)〜356(n)のうちの一つを特定することが可能となる。RPCエンジン240’によって、対応する結合制御ブロックが取得され(ブロック362)、結合作業処理タスク(Process Association Work task)364が呼び出されて、上記の特定された作業キュー356における作業の処理が始められる。
【0088】
図5は、図4の「結合作業処理」タスク364によって実行されるステップを例示している。結合が特定されると、「結合作業処理」タスク364が呼び出され、対応する結合作業キュー356内の作業が処理される。待機状態から外された作業要求(ブロック390)がRPC受信要求(判定ブロック392)である場合、該RPC受信要求はRPC構文解析部(parser)に送られ、処理される(ブロック394)。あるいは、待機状態から外された作業要求(ブロック390)が、保留中の(pending)受信要求である場合(判定ブロック396)、RPCエンジン240’はTDI204’に、アプリケーションによる接続の代わりにデータを受信し始めるよう要求する(ブロック398)。上記待機状態から外された作業要求が、保留中の接続要求である場合(判定ブロック400)、RPCエンジン240’はTDI204’に、アプリケーション用途TCP(あるいは他のトランスポート・プロトコル)接続要求を発するよう要求し(ブロック402)、TDI層204’からの応答を待つ。TDI204’による要求が完了すると、該要求の状態が決定されて、元の要求エンティティへと報告が戻される。パフォーマンス向上のため、RPCエンジン240’は、実際に要求を発しているピアへエラーを通知する前に、要求を結合関連作業キュー(356)へと戻すことで、接続要求処理を複数回行うようになっていてもよい。この処理も、ネットワーク帯域幅およびリソースの消費を減らすためのものである。
【0089】
上記の処理は、「スケジューリング重み付け」(scheduling weight complete)テスト(ブロック404)にパスするまで繰り返される。本例では、スケジューリング重みは、どれだけの作業要求が待機状態から外されて、上記の特定の結合がどれだけ処理されるかを決定するのに使われる。該スケジューリング重みは設定マネージャ228によって設定されるパラメータであり、結合接続示唆が検出されたときに取得される(図4、ブロック372)。この数値はユーザごとに、あるいは物理的な意味での装置ごとに設定可能である。
【0090】
RPCエンジンが結合作業キュー356の作業を(少なくとも一時的に)終了した後、ディスパッチ・キューの処理に移ってもよい(ブロック406)(詳細は以下)。結合の作業キュー356における作業の処理後、RPCエンジン240’は、グローバル作業キュー358に新たなスケジューリング要求を発信して、後で実行される結合のスケジューリングを再び行う(図4の判定ブロック366、ブロック368、図5の判定ブロック408、ブロック410)。
【0091】
再度図4を参照すれば、RPC作業要求が「接続示唆」の場合(判定ブロック370)、RPCエンジン240’に、モバイル・ピア(通常はモバイル端末システム104だがこれに限らない)との新たな接続のインスタンスを作成せよという要求が入る。一例として、上記接続示唆により、接続を開始しようとしているピアの装置に関する以下のような情報がRPCエンジン240’に与えられる。
【0092】
・装置の物理的識別子
・該装置にログインしているユーザ名
・ピアの装置のアドレス
・ピアのRPCエンジン240からの、付加的な接続データ
接続示唆(判定ブロック370)を受け、RPCエンジン240は上記のパラメータをもって設定マネージャ228をコールする。設定マネージャ228は該パラメータを用いて、上記新規接続の設定を確定する。この設定(例えば結合スケジューリング重みや、上記に加えてデフォルトでないスケジューリング特性を要するアプリケーション全てのリストなど)は、RPCエンジン240’に戻されて記憶、実行される。そしてRPCエンジン240’は新規の結合を開始し、新規の結合制御ブロックを形成する(ブロック372)。図5Aが示すように、以下のような動作が実行されてもよい。
【0093】
・結合制御ブロックを割り当てる(ブロック372A)
・システム全体のリソースをデフォルトにまで初期化する(ブロック372B)
・現在の設定をオーバーライドする(ブロック372C)
・フラグを初期化する(ブロック372D)
・結合特有作業キューを初期化する(ブロック372E)
・結合のオブジェクト・ハッシュ・テーブルを初期化する(ブロック372F)
・融合タイマーを初期化する(ブロック372G)
・結合制御ブロックをセッションテーブルに挿入する(ブロック372H)
インターネット・モビリティ・プロトコル・エンジン244’が結合を終了しなければならないと判断すると、「切断示唆」が該インターネット・モビリティ・プロトコル・エンジン244’からRPCエンジン240’に出される。RPCエンジン240’はこの切断示唆をテストし(ブロック374)、示唆に応じて結合を停止し、結合制御ブロックを破棄する(ブロック376)。図5Bに示されるように、以下のステップが実行されてもよい。
【0094】
・待機中の作業がこれ以上処理されないように、停止される結合をマークする(ブロック376A)
・処理を含む、結合されている全ての結合オブジェクトをクローズする(ブロック376B)
・作業キューにある全てのエレメントを開放する(ブロック376C)
・融合タイマーが動作中ならば停止する(ブロック376D)
・結合制御ブロックの参照カウントを減少させる(ブロック376E)
・参照カウントが0の場合、(ブロック376Fにてテストされる)
・結合関連作業キューを破棄し、
・オブジェクト・ハッシュ・テーブルを破棄し、
・融合タイマーを破棄し、
・結合テーブルから結合制御ブロックを取り除き、
・制御ブロックを開放する(376G)
システム102が結合終了の必要性を認識すると、「セッション中止」要求が出される。この要求はシステム管理者、OS、あるいはアプリケーションから発される。RPCエンジン240’は、セッション中止要求を上記切断示唆と同様に扱う(判定ブロック378、ブロック376)。
【0095】
本好ましい実施形態では、RPCエンジン240’とインターネット・モビリティ・プロトコル・エンジン244’との間のインターフェイスが、クレジット(credits)を基にフロー制御メカニズムを特定する。ある単一のスレッドが別のスレッドに作業要求を通知するたびに、コールされたスレッドは作業キューに残っているクレジットの数に戻る。キューが満杯であればクレジットのカウントは0になるが、慣例として、コールする側のスレッドは、クレジットのカウントが0ならばそれ以上作業通知をしない。よって、ユーザによって設定可能あるいは所定の最低点(low−water mark)をキューに付けて、待機中であった作業が処理されてリソースに余裕ができたことを、上記コールする側のスレッドに伝えるような構成が必要となる。これが、「リソース使用可」作業示唆が設けられている理由である(判定ブロック380にてテストされる)。図5Cが示すように、クレジットのカウントが0になったとき、以下のようなステップが実行されてもよい。
【0096】
・RPC_LMPQ_SEND_FLAGと設定して、結合に「ロー・マーク保留」(low mark pending)とマークを付ける(ブロック379A)。この状態になったら、
・受信された全てのデータグラムを破棄する(ブロック379B)
・データ受信を拒否して全ての受信されたストリーム・イベントを抑える(ブロック379C)(これにより、TCP他のトランスポート受信ウィンドウが結果的に閉じられ、固定端末システム110とモビリティ管理サーバ102との間のフロー制御がなされる。復帰の前に、本好ましい実施形態では「保留受信要求」(pending receive request)を結合関連作業キュー356の前に押し込むので、保留中のストリーム受信イベントの処理(outstanding stream receive event processing)が、リソースが利用可能になると直ちに継続される)。
【0097】
・全ての受信された接続イベントが、受動接続のために拒否される(ブロック379D)
「リソース使用可」示唆をRPCエンジン240’が受け取ると(図4、判定ブロック380)、該RPCエンジンは、結合された結合作業キュー356に待機中の作業があるか否かを判定する。もしあれば、RPCエンジンは該結合についてグローバル作業キュー358に通知して、上記結合作業キュー356が動作の優先権を持つことをマークしておく(ブロック382)。保留中の受信要求が、結合が保留受信要求状態にある期間に通知された場合、この期間中に処理される(本好ましい実施形態では、RPCエンジン240’は、この処理中も全ての受信された接続要求を受け入れる)。
【0098】
再度図4を参照すると、RPCエンジン240’が、モビリティ管理サーバ102の「ping」に使われるチャネルが所定の期間にわたって休止していると判定した場合(判定ブロック384)、該チャネルは閉じられ、リソースは開放されてシステムに復帰し、他の処理に使用される(ブロック386)。
【0099】
(RPC構文解析と優先キュー)
再度図5を参照すると、RPCエンジンがRPC受信要求をその受信に際して構文解析することは前述した(ブロック392、394参照)。本好ましい実施形態において、構文解析は以下の点で必要とされる。即ち、受信された単一のデータグラムが複数のRPCコールを含む可能性があるからであり、また、RPCコールがインターネット・モビリティ・プロトコルのデータグラムにおける複数のフラグメントにまで広がっている可能性があるからである。RPC受信作業要求500のフォーマットの例が図6に示される。RPC受信作業要求のそれぞれは、少なくともメイン・フラグメント502(1)を有し、加えて任意の数の付加的フラグメント502(2)〜502(N)を有していることもある。メイン・フラグメント502(1)は、作業要求構造ヘッダ(work request structure header)503と、受信オーバーレイ504とを有している。受信オーバーレイ504は、インターネット・モビリティ・プロトコル・エンジン244によってメイン・フラグメント502(1)の先頭に設けられた受信オーバーレイである。この受信オーバーレイ504には、pユーザデータと呼ばれる、作業要求500内で最初のRPCコール506(1)を指し示す構造メンバがある。
【0100】
図6の例に、複数のRPCコール506(1)、506(2)…506(8)を含む、作業要求500が図示されている。図6の例が示すように、RPC作業要求500は、メモリの隣接するブロックや単一のフラグメント502に含まれていなくてもよい。同例において、第二フラグメント502(2)と第三フラグメント502(3)とは、リンクしたリスト中でメイン・フラグメント502(1)に連鎖されている。
【0101】
よって、上記例のRPCパーサ394は以下の境界条件を取り扱う。
【0102】
・RPC受信要求500それぞれが一つ以上のRPCコールを含んでもよい
・一つ以上のRPCコール506が、単一のフラグメント502中に存在してもよい
・RPCコール506それぞれが、フラグメント502中に完全に含まれていてもよい
・RPCコール506それぞれは、一つ以上のフラグメント502にまたがっていてもよい
図7は、RPC受信作業要求500を解析するRPC構文解析部394を例示している。本例において、RPC構文解析部394は作業要求中の第一フラグメント502(1)を取得し、該フラグメント中の第一RPCコール506(1)を取得し、そしてRPCコールを解析する。構文解析部394はRPC受信作業要求500中を進んで、RPCコール506それぞれを処理していく。RPC受信作業要求500のフラグメント502(1)の残りのフラグメント・バイト数が、RPCヘッダ503のサイズよりも多い場合、構文解析部394は、RPCコールが完全にRPCフラグメント502に含まれていて、処理を実行してもよいかどうかを判定する(該判定は、RPCコールの長さが残りのフラグメント・バイト数より大きいかどうかをテストすることでなされてもよい)。RPCコールの種類が連鎖例外である場合、RPCコールはRPC構文解析部394のアップデートを行うことになる。プロキシ・サーバ224において、連鎖例外であるRPCコールは「データグラム送信」と「ストリーム送信」だけである。この連鎖例外プロシージャによって、RPCエンジンは、RPC送信コールのためにメモリ記述子リストを共に連鎖することによるフラグメントコピーを避けることができる。
【0103】
構文解析部394がRPCコールの種類を判別すると、RPC情報の始めへのポインタは、実行のためにRPCエンジン240へと転送される。RPCエンジンは、実行のために全てのTDIプロシージャ・コールにそれぞれ別の優先順位をつける。最も優先度の高いコールは、RPCディスパッチャ395へ転送され、直ちに処理される。これより下の優先順位のコールは、後に処理されるために全てディスパッチ・キュー510にディスパッチされる。ディスパッチ・キュー510はそれぞれ離散的な優先度を表わしている。
【0104】
本実施形態では、モバイル・アプリケーションは、「オープンアドレス」オブジェクトおよび「オープン接続」オブジェクト機能を、他のTDIネットワーキング機能を実行する前に呼び出す。よってシステムは、「オープンアドレス」オブジェクトおよび「オープン接続」オブジェクトの呼び出し中に、アプリケーションレベルの優先順位を割り当てることになる。例示の実施形態では、アドレスまたは接続オブジェクトに優先順位が付けられると、該オブジェクトに関連する全てのコールが、その割り当てられた優先順位中に実行される。
【0105】
例えば、RPCコールがTDIオープンアドレスオブジェクト要求あるいはTDIオープン接続オブジェクト要求である場合、該コールは直ちに実行されるべくRPCディスパッチャ395に送られる。オープンアドレスおよびオープン接続オブジェクトRPCコールにより、上記の接続示唆中に行われる設定要求の間に設定マネージャ228からもたらされる情報との対応に用いられる、処理IDあるいは処理名へのアクセスが可能になる。該処理IDあるいは処理名は、アドレスあるいは接続オブジェクトの設定を得るために用いられる。
【0106】
本好ましい実施形態では、全てのRPCコールは、パラメータとして少なくともアドレスオブジェクトまたは接続オブジェクトを有している。コールが実行されると、そのオブジェクトに割り当てられた優先度が、RPCコールの優先度とされる。アドレスあるいは接続オブジェクトに割り当てられた設定により、実行される、対応するRPCコール全ての優先度が決定される。例えば、割り当てられた優先度が「高」の場合、ディスパッチ・キュー510にディスパッチされることなく、全てのRPCコールが直ちに実行される。割り当てられた優先度が「1」の場合、全てのRPCコールが、ディスパッチ・キュー510(1)に加えられる。
【0107】
再度図5を参照すると、「結合作業処理」(process association work)タスク364の処理が、予定された結合作業量の実行を完了すると(判定ブロック404)、ディスパッチ・キューがサービスを要求しているか否かが確認される(ブロック406)。図8は、図7に示されるディスパッチ・キュー510の処理のための「ディスパッチ・キュー処理」(ブロック406、図6)によって実行されるステップを例示したフローチャートである。
【0108】
この例では、ディスパッチ・キュー510は優先度が最高のキュー(本例では510(1))から処理される(ブロック408)。ディスパッチ・キュー510にはそれぞれ重み係数が設定されている。この重み係数は、モバイル端末システム104とモビリティ管理サーバ102との結合が確立された際に、設定マネージャ228によって返される設定パラメータである。例を挙げれば、優先度の低いディスパッチ・キュー510の重み係数は4であり、優先度が中程度のディスパッチ・キュー510重み係数は8である。本例では、優先度の高いRPCコールは解析後直ちに処理されるため、重み係数を有していない。
【0109】
RPCエンジン240’は、現在のキューより始めて、RPCコールをキューから外していき、キューが空になるか、RPCコールのキュー重み番号(queue weight number)が処理されるまでループする(ブロック412−416)。キューから外されたRPCコールそれぞれに対して、その実行のためにRPCディスパッチャ395が呼び出される。RPCディスパッチャ395はモバイル端末システム104の代理としてプロシージャ・コール(procedural call)を実行し、応答を要求している上記RPCコールに対するモバイル端末システムからの応答を生成する。
【0110】
上記ループを出た後、キューに残っている作業がまだある場合(判定ブロック418)、該キューが再実行を要することがマークされる(ブロック420)。ループを出ることで、上記システムはプロセッサを次に低い優先度のキューに移らせる(ブロック424、410)。これにより、ある特定のキューにどれだけの作業が割り振られていても、どの優先レベルにも実行される可能性が与えられることになる。システムは次のキューのサービスに移り、全てのキューが処理されるまで処理を繰り返す。全てのキューの処理が終了すると、システムは実行を要するマークがついたキューがあるか否かを判定して、もしあれば、スケジュール要求がグローバル作業キューに送られて、結合の再実行が予定されることになる。結合の再実行は、図4の「グローバル作業処理」ルーチンにおいて予定される。上記のアプローチにより、プロセッサが、処理すべき作業を有する他の結合にも実行の機会を与えることになる。キューそれぞれに重み係数を割り振ることで、システムは、モビリティ管理サーバ102のCPUへのアクセスが優先レベルに応じて許可されるように調整されてもよい。これにより、優先度の高いキューは、先に実行されるだけでなく、さらに容易にCPUにアクセスできるようになる。
【0111】
(モビリティ管理サーバのRPC応答)
上記では、どのように遠隔プロシージャ・コールがモバイル端末システム104からモビリティ管理サーバ102に送られて実行されるかを説明した。この型のRPCコールに加え、モビリティ管理サーバ102のRPCエンジン240’はRPCイベントとRPC受信応答とをサポートしている。結合関連接続ピア(通常は固定端末システム110)の活動の結果として、RPCメッセージが非同期的に生成される。モビリティ管理サーバ102のRPCエンジン240’は、RPCディスパッチャ395によって実行されるRPCトランザクションを完了する。完了が成功したからといって、全てのRPCコールが応答を要求するわけではないが、応答を要求する一部のRPCコールにより、RPCディスパッチャ395は適切な応答を作成し、インターネット・モビリティ・プロトコル・エンジン244’に知らせ、そして該応答はピアのモバイル端末システム104に返される。RPCコールが失敗したときは、全てのRPCコールが応答を生成する(上記においてRPC受信応答は例外)。
【0112】
RPCイベントは、結合関連接続(通常は固定端末システム110)によるネットワーク108の活動の結果として発信される。本好ましい実施形態では、こうしたRPCイベントメッセージはモビリティ管理サーバ102によってプロキシされ、モバイル端末システム104へ送られる。本好ましい実施形態のモビリティ管理サーバ102は、以下のRPCイベントコールをサポートする。
【0113】
・切断イベント(結合特定接続ピア(通常は固定端末システム110)がトランスポート・レベルで切断要求を出した場合に生起する。該要求はモバイル端末システム104に代わってプロキシ・サーバ224に受信され、プロキシ・サーバ224は切断イベントをモバイル端末システムに送る)
・ストリーム受信イベント(結合特定接続ピア(通常は固定端末システム110)がストリームデータをモバイル端末システム104へ送る際に生起。プロキシ・サーバ224はモバイル端末システム104に代わって該データを受け取り、受信応答(Receive Response)として該データをモバイル端末システムに送る)
・データグラム受信イベント(結合特定ポータル(association−specific portal)のいずれかが、ネットワーク・ピア(通常は固定端末システム110)から送られ、モビリティ管理サーバ102を経由してモバイル端末システム104へ送られることになっている、データグラムを受け取る際に生起する。プロキシ・サーバ224はモバイル端末システム104に代わって該データグラムを受け入れ、データグラム受信イベントという形で該データグラムをモバイル端末システム104へ転送する)
・接続イベント(結合特定リスニングポータル(association−specific listening portal)が、トランスポート層とモバイル端末システム104との終端間接続を確立しようとする際、該結合特定リスニングポータルがトランスポート層接続要求(通常は固定端末システム110から)を受信するときに生起する。プロキシ・サーバ224はモバイル端末システムに代わって接続要求を受け入れ、接続イベントRPCコールを生成してモバイル端末システムに送る)
図9は、RPCエンジン240’が、いかにしてプロキシ・サーバによって生成されたRPCコールを扱うかということを示している。優先度の高いアドレスと接続オブジェクトに対し、RPCエンジン240’は、直ちに送信要求をインターネット・モビリティ・プロトコル・エンジン244’に向けてディスパッチする。該送信要求によって、RPCメッセージがピアのモバイル端末システム104に転送される。優先度の低いオブジェクトに対しては、インターネット・モビリティ・プロトコル・エンジン244の送信要求が適切な優先キュー510’に通知される。結合の実行が予定されていない場合、スケジュール要求もグローバルキュー358’に通知される。インターネット・モビリティ・プロトコルの送信要求は、最終的に、図5および8を参照して既に説明したディスパッチ・キューの処理の際に実行される。
【0114】
(インターネット・モビリティ・プロトコルの例)
本発明のインターネット・モビリティ・プロトコルは、メッセージ指向で接続ベースのプロトコルであり、配信保証、(再)オーダ検出((re)order detection)、ロス回復が可能である。さらに、他の従来型接続指向プロトコル(即ちTCP)とは違い、複数の別のデータストリームを単一のチャネルにまとめることが可能になっており、保証されたデータ、信頼性の低いデータ、そして新規のメッセージ指向で信頼性の高いデータを、単一の仮想チャネルによって同時にネットワークをトラバースさせることができる。この新たなメッセージ指向のサービスのレベルによって、インターネット・モビリティ・プロトコルのピアが所定のプログラムデータユニットを確認したときに、リクエスト部に通知が行われることになる。
【0115】
本発明のインターネット・モビリティ・プロトコルは、既存のネットワーク・トポロジや技術にオーバーレイできるように設計されている。下層のネットワークアーキテクチャに左右されないので、該インターネット・モビリティ・プロトコルは汎用性を有する。パケット化されたデータが二つのピアの間を行き来できさえすれば、インターネット・モビリティ・プロトコルの使用が可能である。ノードそれぞれにおけるネットワークの現在地点(POP)あるいはネットワーク・インフラは、物理的境界、特定のポリシー、あるいは帯域幅の制限がある場合を除き、データの流れに影響を与えることなく変更可能である。
【0116】
インターネット・モビリティ・プロトコルは上層の助けを借りて様々なソースからのデータを融合し、下層のデータグラム機能を利用して該データを行き来させる。独立したデータユニットがそれぞれ上層から来ると、インターネット・モビリティ・プロトコルは該データユニットを単一のストリームとして、その後伝送する。該データユニットは次に既存のネットワークを通じてピアに送られ、受信時に、上層の助力によって上記ストリームが非多重化されて、元の独立した複数のデータユニットに戻る。これにより、伝送時にはその都度最大限のネットワークフレームが生成されて、帯域幅の利用を最適化することができる。さらに、上記により、帯域幅を最大限利用できるようにチャネルを調整することができるという効果を奏するとともに、全てのセッションレベルの接続に適用可能なパラメータを持たせることが可能となる。
【0117】
あるチャネルが不十分であるといった稀なケースでも、インターネット・モビリティ・プロトコルはピア間に複数のチャネルを確立することができる。これにより、データの優先順位付けや、(下層のネットワークがサポートしていれば)サービス品質の保証も可能になる。
【0118】
さらに、インターネット・モビリティ・プロトコルは、動的に選択可能で保証されたレベルのサービス、あるいは信頼性の低いレベルのサービスに対しても考慮されている。例えば、伝送されるプロトコル・データ・ユニットをそれぞれ、有効期間(validity time period)か再伝送試行回数、もしくはその両方で制限して待機させることができる。インターネット・モビリティ・プロトコルは、どちらかの閾値に達するとデータユニットを有効期限切れとし、その後の伝送の試行から排除する。
【0119】
インターネット・モビリティ・プロトコルの、付加プロトコルとしてのオーバーヘッドは、可変長ヘッダの採用により最小限に抑えられている。該ヘッダのサイズはフレームの種類や任意フィールド(optional field)によって決定される。該任意フィールドは、ある特定のオーダにおいて追加されて、受信側による解析を容易にし、その存在はヘッダ・フラグ・フィールド(header flag field)のビットによって示される。ピアによる通信に必要な他の制御および設定情報は、全てバンド内制御チャネルを通過することができる。送信されるべき制御情報は全て、任意のアプリケーションレベルのプロトコル・データ・ユニットの前のフレームに加えられる。受信側では制御情報を処理して、次にペイロードの残りを上層に送る。
【0120】
エラー発生の確率が比較的高い、信頼性の低いネットワークにおける稼動が想定されているため、インターネット・モビリティ・プロトコルでは、データの完全性を保証し、ネットワークのパフォーマンスを最高まで引き出すべく、数々の技術が使われている。データの完全性を保証するため、フレッチャー・チェックサム・アルゴリズム(Fletcher checksum algorithm)が、誤ったフレームの検出用に使われている。このアルゴリズムは効率性と高い検出能力を買われて採用され、ビットエラーのみならずビットの並び替えも検出できる。ただし、上記アルゴリズムの代わりに他のチェックサム・アルゴリズムを採用してもよい。
【0121】
シーケンス番号は、オーダされたデータの配信を保証するために使われるが、インターネット・モビリティ・プロトコルにおけるシーケンス番号は、TCPの場合のようにデータのそれぞれのバイトを表わしているわけではない。一例としては、上記シーケンス番号は、最大65535バイト(インターネット・モビリティ・プロトコル・ヘッダを含む)までの、データのフレームを表現している。該シーケンス番号は32ビットなど適当な長さのものであって、制限された期間内での高い帯域幅のリンクにおいてラップアラウンドを生じさせないようにしている。
【0122】
上記の能力にデータの有効期限切れ機能を組み合わせたとき、再伝送(再試行)されたフレームが含んでいるデータ量が、送信側で生成された前バージョンよりも少ないことがある。フレームIDを設定して最新のバージョンのフレームが検知することも可能だが、本好ましい実施形態ではデータが追加されることは絶対に無く、削除されたそれぞれの要素がプロトコル・データ・ユニット全体であるため、上記の手法はシーケンス保証には必ずしも必要でない。一例として、インターネット・モビリティ・プロトコルは受信したある特定のフレームを、該フレームの異なったバージョンのものがいくら伝送されてきても、最初の一回目のみ処理する。新規のユーザ・ペイロードを運搬する、生成されたフレームそれぞれには、固有のシーケンス番号が割り振られる。
【0123】
スライディング・ウィンドウ技術の採用によってパフォーマンスが向上し、ピアにデータ受信の確認応答を要求する前に、複数のフレームを保留にできる(伝送できる)。適切なタイミングでのデータ配信を保証するため、肯定応答とタイマーベースの再伝送スキームとが採用されている。さらにチャネルの利用を最適化すべく、選択的な確認応答メカニズムが採用され、ネットワーク接続のロスが多い時間帯もしくは混雑した時間帯における、失われたフレームの迅速な再伝送と、素早い回復とが達成される。一例において、この選択的な確認応答メカニズムは、ヘッダに含まれる付加的なビットフィールドとして表わされる。
【0124】
輻輳回避アルゴリズムは、プロトコルをフレームの迅速な再伝送からバックオフさせるためにも用いられている。例えば、ラウンドトリップタイムは、再伝送無しで成功裏にピア間を伝送されたフレームそれぞれに対して計測することが可能である。この時間値は平均されて、再伝送タイムアウト値(retransmission timeout value)の基準となる。フレームが送られるごとに、それぞれのフレームに対してタイムアウトが設定される。あるフレームが実際に伝送されたにもかかわらず、該フレームに関する確認応答が受信されない場合、該フレームは再伝送される。このときタイムアウト値は上昇し、次の再伝送時間の基準となる。この再伝送タイムアウトには上限値および下限値が設定されているので、その値は適切な範囲に収まるようになっている。
【0125】
また、インターネット・モビリティ・プロトコルでは、送信路と受信路とが別に扱われている。この手法は、本質的に非対称のチャネルにおいて特に有用である。ヒステリシスに基づいて、インターネット・モビリティ・プロトコルは自動的に、フレームサイズ(フラグメント化閾値)、保留中のフレーム数、再伝送時間、遅延承認時間などのパラメータを調整して、ネットワークを通じて送られる複製データの量を減少させる。
【0126】
インターネット・モビリティ・プロトコルによって、ノードが様々なネットワークの違った接続ポイントに移動することが可能になるため、下層のネットワークの特性(例えばフレームサイズ)が途中で変わってしまうことがあるが、この移動の結果、あるネットワークで伝送待ちだったフレームが、モバイル装置が現在接続している新しい媒体にはフィットしないこともありうる。このことに、フラグメント化が全てのネットワーク・インフラでサポートされているわけではないことを合わせて考慮して、フラグメント化はインターネット・モビリティ・プロトコルのレベルにおいて扱われる。それぞれのフレームが伝送される前に、インターネット・モビリティ・プロトコルにより、フレームが現時点でのフラグメント化閾値を越えているか否かが判断される。ちなみに、パフォーマンス向上の見地から、この値は現時点での最大伝送ユニットよりも少なくてよい(大きいフレームよりも小さいフレームの方が最終目的地まで到達する可能性が高いため)。プロトコルのオーバーヘッドを増加させることと、再伝送回数の増加とのトレードオフは、インターネット・モビリティ・プロトコルによって吟味され、全体的に再伝送を減少させるため、フレームサイズが減少させられることもある。あるフレームがフィットしていれば、該フレームは分割されずに伝送される。していなければ、該フレームはその接続で許容される最大のサイズにまで分割される。フレームが再伝送される場合、該フレームは再評価を受け、最大伝送ユニットが減少していれば、再度フラグメント化される(あるいは、もし最大伝送ユニットが増加していれば、該フレームはフラグメント化されない一個のフレームとして再送信されることもありうる)。
【0127】
プロトコルそのものは直交に設計されており、どちらの側からでもピアとの接続を確立、切断することができるようになっている。しかし、ある場合においては、実行される場所によってプロトコル・エンジンにおける些少な動作上の差異がいくつか存在し、特定の休止検出や接続寿命タイムアウトは片方の側からしか実行できないこともある。運営上必要な操作を可能にするため、モビリティ管理サーバ102上で動作するインターネット・モビリティ・プロトコル・エンジンは、休止期間の状況を把握している。モバイル端末システム104からの作業が何もないまま一定の期間が経過した場合、モビリティ管理サーバ102はセッションを終了させることができる。また、管理者が、ある特定の接続を確立するのに要する総所要時間を制限する、あるいは日時によってアクセスを拒否することが必要なときがあるが、この場合も、一例としてこうしたポリシータイマーはモビリティ管理サーバ102側からのみ操作できるようにしてもよい。
【0128】
一例として、インターネット・モビリティ・プロトコルを提供するソフトウェアは、ウィンドウズ(登録商標)NT、9x、CE環境で、プラットフォームに合わせた修正を必要とすることなくコンパイルされ、動作できるものである。これを実現するために、インターネット・モビリティ・プロトコルでは、インターネット・モビリティ・プロトコル・フレームの送受信に、ネットワーク抽象層(network abstraction layer; NAL)のサービスが採用されている。メモリ管理、キューおよびリスト管理、イベントロギング、警報システム、電力管理、セキュリティなどの他の標準的なユーティリティ機能も使われる。いくつかのランタイム・パラメータについては、エンジンがモバイル端末システム104に備えられているか、あるいはモビリティ管理サーバ102側に備えられているかによって変更される。これについて、数例を以下に示す。
【0129】
・特定のタイムアウトは、モビリティ管理サーバ102からのみ呼び出し可能
・フレームの方向は、エコー検出用のフレームヘッダそれぞれにて示される
・モバイル端末システム104の設定により、着信接続(inbound connection)の拒否が可能
・警報はモビリティ管理サーバ102にのみ通知される
・電力管理はモバイル端末システム104ではイネーブルにされるが、モビリティ管理サーバ102では必ずしも必要でない
インターネット・モビリティ・プロトコルのインターフェイスは、Cコーラブルでプラットフォームに依存しない標準的なAPI機能をほんの少数有し、作業(上記の標準的なユーティリティ機能以外)を予定する、OS特化型の単一の機能を必要とする構成でもよい。ローカルクライアントとの通信は、定義された作業オブジェクト(作業要求)の利用によって可能になる。作業要素それぞれの完了通知は、作業オブジェクトの一部として特定されたオプションの完了コールバックルーチンを通じて、要求エンティティに通知を行うことによって、効果的に達成することができる。
【0130】
インターネット・モビリティ・プロトコル・エンジン自体はキューベースのものである。ローカルクライアントからの作業要素は、FIFOオーダに従ってグローバル作業キューに追加されるが、これは、ローカルクライアントが、「ProtocolRequestwork()」などの標準的なインターネット・モビリティ・プロトコル機能を呼び出すことによってなされる。続いて、インターネット・モビリティ・プロトコル内のスケジューリング機能が該作業を除去し、適切な機能に対してディスパッチする。待機機能とスケジューリング機能を組み合わせることでOSのアーキテクチャ間の差を感じさせなくするので、プロトコル・エンジンが、スレッドベースのシステム(例えばウィンドウズ(登録商標)NT)や同期式のシステム(例えばマイクロソフト・ウィンドウズ(登録商標)9xやウィンドウズ(登録商標)CE)で動作することが可能になる。優先度に関するスキームを待機機能の上にオーバーレイすることができるので、(下の層がサポートしていれば)サービス品質を保証することができる。
【0131】
ネットワークの視点から見ると、インターネット・モビリティ・プロトコルは、データのコピーや移動を減らすべく、分散−集結技術(scatter−gather techniques)を利用している。伝送はそれぞれフラグメントのリストとしてNALに送られ、ネットワーク層のトランスポートによって融合される。トランスポート・プロトコル自体が分散−集結技術をサポートしている場合、フラグメントリストは上記トランスポートを通じて転送され、媒体アクセス層ドライバあるいはハードウェアによってアセンブルされる。さらに、上記技術を拡張して、プロトコルスタックのどのレベルにおいても、いかなるプロトコルラッパーの挿入や消去を行うことも可能である。フレームの受信は、NAL層により、NAL登録処理(NAL registration process)時に指定された特定の入口点においてインターネット・モビリティ・プロトコルをコールバックすることで通知される。
【0132】
(インターネット・モビリティ・プロトコル・エンジンのエントリポイントの例)
例示の実施形態におけるインターネット・モビリティ・プロトコルは、該プロトコルのスタートアップおよびシャットダウン行動を管理する、4つの共通エントリポイントを有している。以下に示されるのがこれらのプロシージャである。
【0133】
1.Internet Mobility ProtocolCreate()
2.Internet Mobility ProtocolRun()
3.Internet Mobility ProtocolHalt()
4.Internet Mobility ProtocolUnload()
(Internet Mobility ProtocolCreate()の例)
Internet Mobility ProtocolCreate()機能は、ブートサブシステムによって呼び出され、インターネット・モビリティ・プロトコルを初期化する。この第一フェイズ中に、作業の処理を開始するのに必要なリソース全てが所得され、初期化されなければならない。該フェイズの終了時、エンジンは、システムの他の層からの作業をすぐに受け入れ可能な状態である必要がある。このとき、インターネット・モビリティ・プロトコルはグローバル設定テーブルを初期化するが、このために、インターネット・モビリティ・プロトコルは、設定マネージャ228のサービスを利用して該テーブルを設定(populate)する。
【0134】
次に、インターネット・モビリティ・プロトコルは、サスペンドおよびレジューム通知機能をAPMハンドラに登録する。一例ではこれらの機能はモバイル端末システム104の側からのみ呼び出し可能であるが、他の例として、動作中にモビリティ管理サーバ102がサスペンドできるようにするのが望ましいこともある。続いて、グローバル作業キュー、グローバルNALポータルリストなど他の作業用記憶域がメモリプールから割り当てられる。
【0135】
必要なランタイムメモリの最大量を制限し、インターネット・モビリティ・プロトコルのハンドルの固有性を保証するため、インターネット・モビリティ・プロトコルは、ハンドル生成用の2段配列構成(2−tier array scheme)を採用している。グローバル接続配列テーブルのサイズは、システムが設定する同時接続の最大数によって決まり、この時点で割り当てられる。全てのグローバル記憶域が割り当てられ、初期化されると、グローバル・インターネット・モビリティ・プロトコルの状態が、_STATE_INITIALIZE_となる。
【0136】
(Internet Mobility ProtocolRun()の例)
Internet Mobility ProtocolRun()機能は、全てのサブシステムが初期化された後で呼び出され、インターネット・モビリティ・プロトコルのサブシステムに、待機中の作業をどれでも処理し始めてよいことを通知する。これが、一般的な動作状況におけるインターネット・モビリティ・プロトコル・エンジンの通常の状態である。該エンジンを動作状態にする前に、いくつかの第二パス初期化ステップがこの時点で実行される。
【0137】
インターネット・モビリティ・プロトコルは、ネットワーク通信が、任意のインターフェイスのどれを通じてでも実行されるようにする。初期化ステップの間に、インターネット・モビリティ・プロトコル−NAL間のインターフェイス用の記憶域が割り当てられるので、インターネット・モビリティ・プロトコルはグローバルポータルリスト中を横断して、NALの全てのリスナをスタートさせることができる。一例として、この動作は2つのステップを含んだ以下の処理のようになる。
【0138】
・インターネット・モビリティ・プロトコルは、NAL層に、初期化中に供給される設定に基づいたポータルを結びつけて(bind)オープンし、
・インターネット・モビリティ・プロトコルは、次に、Internet Mobility ProtocolRCVFROMCBコールバックを登録して、受信したフレームの処理を始める準備ができたことを、NAL層に通知する。
【0139】
・引き続き、ローカル持続識別子(local persistent identifier; PID)が初期化される。グローバル・インターネット・モビリティ・プロトコルの状態は、_STATE_RUN_に変わる。
【0140】
(Internet Mobility ProtocolHalt()の例)
Internet Mobility ProtocolHalt()機能は、システムがシャットダウンしたことをエンジンに警告するために呼びだされる。動作中に得られたリソースは、この機能から戻る前に全て開放される。インターネット・モビリティ・プロトコルの全てのセッションは、管理用に設定された理由コードによって異常終了する。エンジンが_STATE_HALTED_状態になると、それ以降、他の層からの作業は受け付けられず、他の層に通知されることも無い。
【0141】
(Internet Mobility ProtocolUnload()の例)
Internet Mobility ProtocolUnload()機能は、シャットダウン処理の第二フェイズである。これが、復帰以前に、割り当てられたシステムリソースをエンジンが解放する最後の機会となる。エンジンがこの機能から戻ると、システム自体が停止するので、これ以上の作業は実行されない。
【0142】
(インターネット・モビリティ・プロトコル・ハンドルの例)
少なくともいくつかの例においては、メモリ(インターネット・モビリティ・プロトコル状態情報を記憶)のアドレスを、インターネット・モビリティ・プロトコルの接続を記述するトークンとして用いるだけでは不十分である。これは主に、短い期間のうちに、ある接続が終了して別の新しい接続が開始される可能性のためである。メモリアロケータが、別の接続に前のものと同じアドレスを再配分してしまう可能性が高く、この値が前の接続と新しい接続との両方を示すことになってしまう。元々のピアが、(電源が切られていたり、サスペンドしていたり、圏外にあったりなどで)セッションの終了を認識しなかった場合、前のセッションのフレームを新しいセッションの方に送ってしまうこともあり得る。TCPの場合はこれが起こり、ピアのIPアドレスが同じ場合、新しいセッションを生成するためにリセットが行われる。これを避けるため、インターネット・モビリティ・プロトコルは製造ハンドル(manufactured handle)を採用している。該ハンドルは2列のインデックスによって形成され、独自性を保つため一回限りのものである。テーブルは以下のようなレイアウトとなっている。
【0143】
テーブル1:接続オブジェクトの配列を指すポインタの配列
テーブル2:インターネット・モビリティ・プロトコル制御ブロックを指す、実ポインタを含む接続オブジェクトの配列
この技術により、初期化期間に割り当てられるメモリの量が最小化される。テーブル1は、スタートアップの際にサイズが決められ、割り当てがなされる。これにより、モバイル端末システム104の側では、少量のメモリの割り当てが可能になる(モビリティ管理サーバ102側でテーブル1が割り当てを要求するメモリは、サーバが多くの接続を有しているため少し大きなものになる)。
【0144】
テーブル1は必要時に設定(populate)される。接続要求が出されると、インターネット・モビリティ・プロトコルは、テーブル1内でテーブル2への有効なポインタを探す。エントリポイントが見つからない場合、インターネット・モビリティ・プロトコルは、新規のテーブル2に256個の接続オブジェクトを割り当て、テーブル2へのポインタを、テーブル1の適切なスロットに記録する。次に、プロトコル・エンジンはテーブル2を初期化し、新しく生成されたテーブルからの接続オブジェクトを割り当てて、製造ハンドルへ戻る。他のセッションが要求された場合、インターネット・モビリティ・プロトコルは再度テーブル1中をサーチして、テーブル2への有効なポインタを見つけ、該セッション用の次の接続オブジェクトを割り当てる。この作業は、以下の二つの状態のうちのどちらかになるまで続けられる。
【0145】
・テーブル2から全ての接続オブジェクトが無くなった場合、新たにテーブル2が割り当てられ、初期化されて、該テーブル2を示すポインタが、テーブル1の次に利用可能なスロットに設定される。
【0146】
・全ての接続オブジェクトが特定のテーブル2のインスタンスに開放され、全ての要素がある特定の期間使用されなかった場合、テーブル2の上記インスタンスにおける記憶域が開放されてメモリプールに戻され、テーブル1の関連しているポインタはゼロにされて、次の接続要求が開始された際、該入口が使用可能であることを示すようになる(テーブル2の他のインスタンスで、利用可能な接続オブジェクトがない場合に限る)。
【0147】
二つのグローバルカウンタは、割り当てられる接続の総数を制限できるようにするために維持されている。片方のグローバルカウンタは現時点でアクティブな接続を数え、もう片方のカウンタは、割り当てられていない接続オブジェクトの数を把握する。さらに、第二のカウンタは、任意に設定された制限まで生成可能な接続オブジェクトの総数の管理も行う。新規のテーブル2が割り当てられると、該カウンタは、該新規のテーブルが表現するオブジェクトの数を把握するため、下方に調整される。反対側では、インターネット・モビリティ・プロトコルがテーブル2のインスタンスをメモリプールに開放するときに、カウンタは、開放された接続オブジェクトの数を合わせて上方修正される。
【0148】
(ワークフローの例)
Internet Mobility ProtocolRequestWork()機能によって、作業はローカルクライアントから要求される。該作業が検査(validate)され、グローバル作業キューに加えられると、Internet Mobility ProtocolQueueEligible()機能が呼び出される。スレッド化された環境であれば、インターネット・モビリティ・プロトコルのワーカースレッドに信号が送られ(適合マークがつけられ)、制御は直ちに呼び出しエンティティへと戻る。同期的な環境であれば、グローバル作業キューが直ちに実行されて、要求された作業はいかなるものであっても処理される。どちらの場合でも、Internet Mobility ProtocolProcessWork()機能が実行されることになる。これが作業処理のためのメインディスパッチ機能である。
【0149】
例示の実施形態では、グローバルキューからの作業をディスパッチできるのが一回に一つのスレッドのみの場合があり、再入を防ぐべくグローバルセマフォが用いられてもよい。プライベートなインターネット・モビリティ・プロトコルの作業では、Internet Mobility ProtocolRequestWork()機能を使用せず、直接グローバル作業キューに作業を送ることができる。
【0150】
SENDタイプの作業オブジェクトでは、特殊な場合が想定される。信頼性の低いデータグラムのセマンティクスが保たれていることを保証するため、SENDタイプの作業オブジェクトをそれぞれ、有効期限あるいは再試行カウントを伴って待機させることができる。作業は該有効期限に基づいて寿命を算定される。このような所定のタイムアウトが生じた場合、作業オブジェクトは接続特定キューから除かれ、エラー状態で完了する。SENDオブジェクトが既にデータパスに融合されている場合、プロトコルは、再試行カウントが設定されたどのSENDオブジェクトでも、除去を許可する。再試行カウントを超過した場合、該オブジェクトは、特定のフレームを形成する要素のリストから外され、適当なエラー状態を示しつつリクエスタへ戻される。
【0151】
(接続スタートアップの例)
インターネット・モビリティ・プロトコルは、ピア間の接続を確立する非常に効率的なメカニズムを有している。接続の確認は、ピア間で最低3フレームをやり取りすることでなされる。開始側は、そのピアにIMP SYNCフレームを送って接続確立が要求されていることを警告する。受け入れ側は、IMP ESTABLISHフレームを送って接続受け入れを確認するか、あるいはIMP ABORTフレームを送ることで、接続要求が拒否されたことをピアに警告する。ユーザに接続拒否の理由を理解しやすくするため、理由および状態コードが、IMP ABORTフレームに含まれる形で送られる。接続が許可されると、確認応答フレーム(プロトコル・データ・ユニットおよび制御データがふくまれていることもある)が送られて、受け入れ側に転送され、確立フレームの受信が確認される。
【0152】
ネットワークのトラフィックを最小化するため、プロトコルは、ユーザおよび制御データを、接続スタートアップ時の最初のハンドシェーク機構に含まれるようにすることができる。この構成は、セキュリティが保障されていない環境や、同じデータパスでセキュリティ用の認証が二重に行われたり、暗号化処理が同じデータパスで行われたりすることによるパフォーマンスの低下を避けるよう、インターネット・モビリティ・プロトコルが調整されているというような、セキュリティが下層で扱われている環境において使用される。
【0153】
(データ転送の例)
インターネット・モビリティ・プロトコルは、フレームがネットワークに配信されたことを、NALからの通知によって検知する。インターネット・モビリティ・プロトコルは、当該ネットワークリンクが絶えずフロー制御されているか否かを上記メトリクスによって判定するので、当初の要求が完了されるまで同じフレームを再伝送することはない。しかし、ネットワークドライバによっては、フレームの伝送について、誤って、該フレームをネットワークに送る前に配信を示唆してしまうものもある。セマフォの利用により、インターネット・モビリティ・プロトコル層はこれを検知し、当初の要求についてNALが返答するまでは、他のデータグラムを送信しない。
【0154】
フレームがインターネット・モビリティ・プロトコルに受信されると、該フレームは迅速に検査されて、適切な接続キューに加えられる。該フレームが、インターネット・モビリティ・プロトコルがその最終目的地を識別するのに足る情報を有していない場合、該フレームは、それを受信したインターネット・モビリティ・プロトコル・ソケット・キューに加えられ、該ソケット・キューは、続く処理のためにグローバル作業キューに加えられる。この最初の逆多重化により、受信した作業は、処理オーバーヘッドが限定された状態で、迅速に拡散させられる。
【0155】
(黙認(acquiescing)の例)
再伝送時のネットワーク帯域幅およびモビリティ管理サーバ102の処理に要する電力の最小化のため、プロトコルは、モビリティ管理サーバ102が接続を「黙認」できるようにする。ユーザによる設定が可能な期間の後、モビリティ管理サーバ102は、対応するモバイル端末システム104から通知が無ければ、特定の接続へのフレームの再伝送を停止する。この時、モビリティ管理サーバ102は、モバイル端末システム104が通信できない状態(圏外、サスペンドなど)であると仮定し、接続を休止状態にする。該接続へのこの後の作業は全て、後の配信のために記憶される。該接続は、以下の状況のいずれかが満たされない限り、同じ状態にとどまり続ける。
【0156】
・モビリティ管理サーバ102がモバイル端末システム104からフレームを受信し、接続を本来の状態に戻す、
・接続寿命タイムアウトの期限が切れる、
・休止タイムアウトの期限が切れる、または
・システム管理者によって接続が中止される
モビリティ管理サーバ102が、モバイル端末システム104からフレームを受信し、中断された所から接続が再開された場合、該接続で待機していた作業は全て転送され、状態が再同期化される。これ以外の場合、再接続がなされると、モバイル端末システム104には以前の接続の終了が通知され、モバイル端末システム104に送られることを待機していた作業は破棄される。
【0157】
(接続および送信要求の例)
図10A〜10Cは、インターネット・モビリティ・エンジン244によって生成される接続および送信要求ロジックを例示する、フローチャートを形成している。RPCエンジン240からの命令を受信すると、インターネット・モビリティ・プロトコル・エンジン244は、該命令が「接続」要求かどうかを判定する(判定ブロック602)。該命令が「接続」要求であれば、エンジン244は、接続リソースの割り当てが可能かどうかを判断する(判定ブロック603)。十分な接続リソースが割り当てられない場合(判定ブロック603で「ノー」である場合)、エンジン244はエラーを宣言して(ブロック603a)応答する。接続リソースの割り当てが可能であれば、エンジン244は状態設定処理を行って、接続要求の処理に備える(ブロック603b)。
【0158】
接続その他の要求に対し、エンジン244は該接続あるいは送信要求を待機させ、呼び出しを実行しているアプリケーションに応答する前に、グローバルイベントに通知する(ブロック604)。
【0159】
インターネット・モビリティ・プロトコルのグローバル要求キューからの接続あるいは送信要求をディスパッチするために、エンジン244はまず、保留されている作業の有無を判定する(判定ブロック605)。保留されている作業が無ければ(判定ブロック605で「ノー」である場合)、エンジン244は、図10Cのブロック625に移って、接続用の作業を待機させるため、アプリケーションからの応答を待つ(ブロック605A)。保留されている作業があれば(判定ブロック605で「イエス」の場合)、エンジン244は現在の状態が確立されているか否かを判定する(ブロック606)。状態が確立されている場合(判定ブロック606で「イエス」の場合)、エンジン244は状態確立への移行のためのステップを飛ばして、図10Bの判定ブロック615に移る(ブロック606a)。状態が確立されていない場合、エンジン244は状態確立のための一連のステップを実行する必要がある(判定ブロック606で「ノー」である場合)。
【0160】
状態確立に移行するために、エンジン244はまず、そのピアのアドレスが既知かどうかを判定する(判定ブロック607)。既知でなければ、エンジン244は作業をさらに待機させ、図10Cのブロック625に移って、ピアのアドレスが来るのを待つ(ブロック607a)。ピアのアドレスが既知の場合(判定ブロック607で「イエス」の場合)、エンジン244は次に、必要なセキュリティコンテキストが取得されているかどうかを判定する(判定ブロック608)。取得されていない場合、エンジン244は作業をさらに待機させ、図10Cのブロック625に移って、セキュリティコンテキストが来るのを待つ必要がある(ブロック607a)。セキュリティコンテキストが既に取得されている場合(判定ブロック608で「イエス」の場合)、エンジン244は「状態保留」状態を宣言して(ブロック608b)、インターネット・モビリティ・プロトコルの同期フレームを送信し(ブロック609)、再伝送タイマーをスタートさせる(ブロック610)。エンジン244は、対応する確立フレームが受信されたかどうかを判定する(ブロック611)。受信されていない場合(判定ブロック611で「ノー」の場合)、エンジン244は、再伝送時間の期限が来たかどうかを判定する(判定ブロック612)。再伝送時間の期限が来ていない場合(判定ブロック612で「ノー」の場合)、エンジン244は待機し、続いてステップ625に移ってもよい(ブロック613)。最終的に、確立フレームが受信されず(ブロック611で判定)、再伝送時間の期限が全て切れた(判定ブロック614)場合、接続は中止されてもよい(ブロック614a)。結局確立フレームが受信された場合(判定ブロック611で「イエス」の場合)、エンジン244は「状態確立」状態を宣言する(ブロック611a)。
【0161】
状態確立がなされると、エンジン244は新規の接続の認証がなされているかどうかを判定する(判定ブロック615)。なされていない場合、エンジン244は待機し、ステップ625へと移ってよい(ブロック616)。接続の認証がなされている場合(判定ブロック615で「イエス」の場合)、エンジン244は認証が成功したかどうかを判定する(判定ブロック617)。成功していない場合(判定ブロック617で「ノー」の場合)接続は中止される(ブロック614a)。成功している場合、エンジン244は、ピア伝送ウィンドウがフルになっているかどうかを判定する(判定ブロック618)。フルになっていれば(判定ブロック618で「イエス」の場合)、エンジン244は確認応答を待ち、ステップ625に進む(判定ブロック619)。ウィンドウがフルになっていなければ(判定ブロック618で「ノー」の場合)、エンジン244はインターネット・モビリティ・プロトコル・データフレームを生成し(ブロック620)、送信する(ブロック621)。次に、エンジン244は再伝送タイマーがスタートしているかどうかを判定する(判定ブロック622)。していない場合、エンジン244は再伝送タイマーをスタートさせる(ブロック623)。エンジン244は、それ以上送信するデータが無くなるまで(判定ブロック624で判断される)、ブロック618〜623を繰り返す。そして、エンジン244はスリープモードに入ってさらに作業が来るのを待ち、グローバルディスパッチャに戻る(ブロック625)。
【0162】
(中止の例)
図11は、接続を中止するためにインターネット・モビリティ・プロトコル・エンジン244が実行するステップを例示したフローチャートである。「接続中止」要求を受けて(ブロック626)、該エンジンは該要求をグローバル作業キューに加え、呼び出しを行っているアプリケーションに返答する(ブロック626a)。中止要求は最終的に、実行のため、インターネット・モビリティ・プロトコルの処理グローバル作業キューからディスパッチされる(ブロック627)。エンジン244は中止要求を調べて、該要求が緊急のものであるか、あるいは余裕のあるものであるかを判定する(判定ブロック628)。緊急のものの場合(判定ブロック628で「中止」の場合)、エンジン244は直ちに接続を中止する(ブロック629)。余裕があるものであれば(判定ブロック628で「余裕」の場合)、エンジン244は「状態クローズ(state close)」状態を宣言し(ブロック628a)、インターネット・モビリティ・プロトコルの「モーティス(Mortis)」フレームを送信し(ブロック630)、ピアに接続がクローズされることを示唆する。次に、エンジン244は「モーティス」状態を宣言し(ブロック630a)、再伝送タイマーをスタートさせる(ブロック631)。エンジン244は、ピアから「ポスト・モーテム(post mortem)」フレームが応答されたかどうかを判定する(判定ブロック632)。応答されていなければ(判定ブロック632で「ノー」の場合)、エンジン244は、再伝送タイマーが時間切れになっているか否かを判定する(判定ブロック633)。まだ時間切れになっていない場合(判定ブロック633で「ノー」の場合)、エンジン244は待機し、ステップ637へ進む(ブロック634)。再伝送タイマーが時間切れになっている場合(判定ブロック633で「イエス」の場合)、エンジン244は総再伝送時間の期限が切れているかどうかを判定する(判定ブロック635)。まだ切れていない場合(判定ブロック635で「ノー」の場合)、ブロック630に戻り、モーティスフレームを再送する。すでに総再伝送時間の期限が切れている場合(判定ブロック635で「イエス」の場合)、エンジン244は直ちに接続を中止する(ブロック635a)。
【0163】
「ポスト・モーテム」応答フレームがピアから受信されると(判定ブロック632で「イエス」)、エンジン244は「ポスト・モーテム」状態を宣言して(ブロック632a)、接続リソースを開放し(ブロック636)、スリープ状態に戻ってさらに作業を待つ(ブロック637)。
【0164】
(再伝送の例)
図12は、インターネット・モビリティ・プロトコル・エンジン244が実行する「再伝送」イベントロジックの例を示している。再伝送タイマーが時間切れを迎える(ブロック650)と、エンジン244は、保留中のフレームがあるかどうかを判定する(判定ブロック651)。保留中のフレームがなければ(判定ブロック651で「ノー」の場合)、エンジン244はタイマーを破棄して(ブロック652)スリープ状態に戻る(ブロック660)。逆に保留中のフレームがあれば(判定ブロック651で「イエス」の場合)、エンジン244は、再伝送期間全体(entire)が終了したかどうかを判定する(判定ブロック653)。まだ終了していなければ(判定ブロック653で「ノー」の場合)、処理は時間差のためにスリープ状態に戻る(ブロック654)。既に終了していれば(判定ブロック653で「イエス」の場合)、エンジン244は、総ての(total)再伝送期間が終了したかどうかを判定する(判定ブロック655)。既に終了しており(判定ブロック655で「イエス」)、このイベントがモビリティ管理サーバのエンジン244’(モバイル端末システムのエンジン244に対応)で実行されている場合、休眠状態が宣言される(判定ブロック656、ブロック656a)。同じ状態で、モバイル端末システム104において実行されるインターネット・モビリティ・プロトコル・エンジン244は、接続を中止する(ブロック656b)。
【0165】
総ての再伝送期間がまだ終了していない場合(判定ブロック655で「ノー」の場合)、エンジン244はフレームを再処理して時間切れのデータを除去し(ブロック657)、それを再転送し(ブロック658)、再転送タイマーをそのまま再始動させる(ブロック659)。そして処理は休眠状態に入り(ブロック660)、次のイベントを待つ。
【0166】
(インターネット・モビリティ・プロトコルのPDUの期限切れの例)
図12のブロック657において、要求を出している上層のインターフェイスが、結合しているピアに送られるプロトコル・データ・ユニット(つまりSEND作業要求)506の期限切れに関するタイムアウトあるいは再試行カウントを特定することが可能になる。この機能により、インターネット・モビリティ・プロトコル・エンジン244は、信頼性の低いデータのセマンティクス維持、再伝送されたデータからの信頼性の低いデータの除去など、他の機能も果たせるようになる。上層からのPDU(プロトコル・データ・ユニット)それぞれは、最終的にインターネット・モビリティ・プロトコル・エンジン244によってコーリシングされる、それぞれの要素に対する有効期限タイムアウト(validity timeout)および/または再試行カウントを、特定することができる。有効期限タイムアウトおよび/または再試行カウント(アプリケーションによってはユーザによって特定可能)は、エンジン244による再伝送の前に、どのPDU506が、転送されずにフレームから除去されるべきかを決定するために使われる。
【0167】
PDU506に関わる有効期限タイムアウトは、PDUそれぞれが伝送に際して考慮すべき、相対期間(relative time period)を特定する。実行依頼の間、Internet Mobility ProtocolRequestWork機能によって有効期限の値(expiry timeout value)がチェックされる。該値が0で無い場合、時期タイマー(age timer)は初期化される。次に、要求されたデータは、結合しているピアに送られる他のデータと同じキューに加えられる。あるPDU506が、有効期限パラメータ(validity period parameter)が特定する期間よりも長くキューにある場合、該キューを処理する次イベントの間に、有効期限の切れた該(全ての)PDUは除去され、フレームの再伝送時に再伝送されるのではなく、ローカルに「タイムアウトによる失敗(timeout failure)」のステータスコードをもって完了する。このアルゴリズムにより、ピアへの伝送のために待機している信頼性の低いデータが古くなる(grow stale)こと、および/または際限なくシステムリソースを消費することを防ぐ。
【0168】
図12Aの例において、少なくとも3つの独立したPDU506が、続く処理のためにインターネット・モビリティ・プロトコル・エンジン244でキューに加わっている。PDU506(1)は有効期限を持たず、要求に対するタイムアウトが無い。PDU506(2)は、2秒の有効期間を持ち、時系列的にPDU506(1)の後に並んでいる。PDU506(n)は、2.5秒の有効期間を持ち、時系列的にPDU506(2)の後に並んでいる。PDU506(n)の待機が、キューの処理をさせ、PDU506(2)の有効期間を経過させる最初のイベントであるため、PDU506(2)は作業キューから外され、ローカルに完了されて、PDU506(n)がリストに加えられる。有効期間がPDU506(n)に設定されている場合、ここまでの一連のイベントが繰り返される。作業キューを操作するいかなるイベント(キューに加える、キューから外す等)によっても、古くなったPDUが除去され、完了される。
【0169】
上記のように、PDU506はインターネット・モビリティ・プロトコル・エンジン244の伝送ロジックによって融合され、単一のデータストリームにフォーマットされる。独立した作業要素それぞれは、有効期限タイムアウトによって期限切れになっていなければ、集められてインターネット・モビリティ・プロトコル・データフレームを形成する。インターネット・モビリティ・プロトコル・エンジン244は、最終的にこれらのPDU506をピアに送り、関係するフレームをフレーム保留リスト(Frames−Outstanding list)に加える。ピアが一定期間内に該フレームを認識しなかった場合(図12の再伝送アルゴリズムを参照)、フレームは再伝送され、失われたかあるいは破損したパケットを回復する。再伝送の直前、フレームを形成するPDUリストは、再試行カウントを伴った要求が待機しているかどうかを判定すべく反復される。該再試行カウントが0ではなく、0に向かって減少してゆく場合、PDU506はリストから外され、フレームヘッダはデータの消去を示すように修正される。このように、古くなったデータ、低信頼のデータ、あるいは独自の再伝送ポリシーを持つアプリケーションは、エンジン244’の再伝送アルゴリズムによって負担をかけられることがない。
【0170】
図12Bの例においても、少なくとも3つの独立したPDU506が、続く処理のためにインターネット・モビリティ・プロトコル・エンジン244でキューに加わっている。PDU506(1)は再試行カウント無しでキューに加わっているが、これは、継続的な再伝送の試行と、保証された配送レベルのサービスとを示している。PDU502(2)は再試行カウントが1でキューに加わり、時系列的にPDU506(1)の後に並ぶ。PDU506(n)は、ある程度の時間が経過してからPDU502(2)より後ろに加わる。この時点で、いくつかの外部イベント(例えば上層融合・タイマー)が、エンジン244’に、インターネット・モビリティ・プロトコル・データフレーム500を生成するための作業キューから十分なPDU506を集めて新しいフレームを生成するための論理を送信させる。フレームヘッダ503が求められ、これに、フレームの最初の伝送であることを示すための、再試行IDとして0が付けられる。続いてフレームは、ネットワークへの後の伝送用に、NAL層へと送られる。このときに再伝送タイマーがスタートするが、これは、当該のフレームがペイロードを含んでいるためである。説明を容易にするため、再伝送タイマーが期限を迎える前に、様々な理由でピアからの確認応答が受け取られなかったと仮定すると、エンジン244の再伝送ロジックにより、当該するフレーム500が、ネットワークへ再伝送されるのに的確であるか否かが判断される。フレームをNAL層に再送する前に、エンジン244’の再伝送ロジックは、関連しているPDU506のリストを反復する。PDU506(2)それぞれの再試行カウントが調べられ、0でなければ、該カウントは減少させられる。PDU506(2)の再試行カウントを減少させる処理により、該カウントは0になる。PDU506(2)の再試行カウントが0になったことにより、PDU506(2)はリストから外され、「再試行失敗(retry failure)」のステータスをもってローカルに完了する。続いて、PDU506(2)のデータが無いことを示すため、フレームヘッダ503のサイズが調整される。この処理は、残っている全てのPDUについて繰り返される。フレーム500全体が、「編集後」フレーム500’の作成のために再処理されると、ヘッダの再試行IDが増加させられて、生成されたデータグラムが、続く(再)伝送に向けてNAL層に送られる。
【0171】
(受信の例)
図13A〜13Dは、「受信」イベント受信に伴ってインターネット・モビリティ・プロトコル・エンジン244が実行するステップを例示する、フローチャートを形成している。このような受信イベントは、インターネット・モビリティ・プロトコル・エンジン・フレームがネットワーク108から送られた際に生成される。この受信イベントを受けて、エンジン244は該イベントを事前検査(pre−validate)し(ブロック670)、インターネット・モビリティ・プロトコル・エンジン・フレームである可能性があるか否かを判定する(判定ブロック671)。エンジンが可能性無しと判断した場合(判定ブロック671で「ノー」の場合)、該フレームは破棄される(ブロック672)。可能性ありという判断の場合(判定ブロック671で「イエス」の場合)、エンジン244は、受信したフレームと関連する接続があるかどうかを判定する(判定フレーム673)。受信したフレームと関連する接続がある場合(判定ブロック673で「イエス」の場合)、エンジン244は作業を接続受信キューに加え(ブロック674)、該接続に受信に適格であるとマークを付け(ブロック675)、該接続をグローバル作業キューに加える(ブロック676)。まだどの接続も受信したフレームと関連していない場合(判定ブロック673で「ノー」の場合)、エンジン244は、受信したフレームをソケット受信キューに加え(ブロック677)、該ソケット受信キューをグローバル作業キューに加える(ブロック678)。どちらの場合でも、エンジン244はグローバル作業イベントを送る(ブロック679)。「受信適格」イベントをグローバル作業キューからディスパッチする際(図13B参照)、エンジン244はフレームをそれぞれの受信キューから外す(ブロック680)。インターネット・モビリティ・プロトコル・エンジン244がメッセージをキューから外し始められるようになる前に、複数のIMPフレームを受信し、キューに加えることが可能である。エンジン244は、全てのフレームがキューから外れるまで作業を繰り返す(ブロック681、682)。あるフレームがキューから外れると(判定ブロック681で「イエス」)、エンジン244は受信したフレームを検査し(ブロック683)、該フレームが有効かどうかを判定する(判定ブロック684)。該受信したフレームが無効である場合、エンジン244は該フレームを破棄し(ブロック685)、受信キューから次のフレームを外す(ブロック680)。上記フレームが有効である場合(判定ブロック684で「イエス」の場合)、エンジン244は、該フレームが既存の接続と関連しているか否かを判定する(ブロック686)。していなければ(判定ブロック686で「ノー」の場合)、エンジン244は同期フレームがあるかどうかを判定する(判定ブロック687)。同期フレームがなければ(判定ブロック687で「ノー」の場合)、該フレームは破棄される(ブロック685)。反対に、同期フレームが受信されていれば(判定ブロック687で「イエス」の場合)、エンジン244は、図14Aおよび14Bを参照して説明される受動接続要求により、該フレームを処理する(ブロック688)。
【0172】
上記フレームが接続と関係していれば(判定ブロック686で「イエス」の場合)、エンジン244は接続状態が依然アクティブで、まだ「ポスト・モーテム」になっていないかどうかを判定する(判定ブロック689)。接続が既に「ポスト・モーテム」である場合、フレームは破棄される(ブロック685)。そうでない場合、エンジン244はフレームを解析し(ブロック690)、該フレームが中止フレームであるかどうかを判定する(判定ブロック691)。該フレームが中止フレームであれば、エンジン244は直ちに接続を中止する(ブロック691a)。該フレームが中止フレームでなければ(判定ブロック691で「イエス」の場合)、エンジン244は確認応答情報を処理し、全ての保留中の送信フレームを開放する(ブロック692)。次に、エンジン244は、解読の必要がある場合のため、セキュリティ用のサブシステムへと送る(ブロック693)。フレームがセキュリティ用のサブシステムから戻ると、エンジン244は全ての制御データを処理する(ブロック694)。続いて、エンジン244はフレームがアプリケーションデータを含んでいるかどうかを判定する(判定ブロック695)。含んでいる場合、該データはアプリケーション層においてキューに加えられる(ブロック696)。エンジン244はまた、接続が休止状態であるかどうかを判定し(ブロック697および697a:これは、好ましい実施形態におけるモビリティ管理サーバのエンジン244’にもあてはまる)、確立状態に戻す。
【0173】
フレームが「モーティス」フレームである可能性があれば(判定ブロック698で「イエス」の場合)、エンジン244は、アプリケーション層に「切断」を示唆し(ブロック699)、「モーティス」状態に入る(ブロック699a)。エンジン244は「ポスト・モーテム」フレームをピアに送り(ブロック700)、「ポスト・モーテム」状態に入る(ブロック700a)。続いて、エンジン244は接続リソースを解放し(ブロック701)、スリープ状態に戻って作業を待つ(ブロック702)。解析されたフレームが「ポスト・モーテム」フレームだった場合(判定ブロック703で「イエス」の場合)、ブロック700a、701、702が実行される。これ以外の場合、制御はブロック680に戻って、次のフレームを受信キューから外す(ブロック704)。
【0174】
(受動接続の例)
図14A〜14Bは、「受動接続」要求に対してインターネット・モビリティ・プロトコル・エンジン244が実行するステップを例示する、フローチャートを形成している。まず、エンジン244は、当該装置に他の接続が存在するかどうかを判定する(ブロック720)。存在すれば(判定ブロック720で「イエス」の場合)、該エンジンは、それが最初の接続であるか否かを判定する(判定ブロック721)。ピアが、新規の接続が最初の接続であると認識している場合(判定ブロック721で「イエス」の場合)、エンジン244はそれ以前の接続を中止する(ブロック722)。最初の接続ではない場合(判定ブロック721で「ノー」の場合)、エンジン244は、シーケンスと接続IDとが対応しているかどうかを判定する(判定ブロック723)。対応していなければ(判定ブロック723で「ノー」の場合)、制御は判定ブロック720へ戻る。シーケンスと接続IDが対応していれば(判定ブロック723で「イエス」の場合)、エンジン244は複製フレームを破棄し(ブロック724)、図13Bのステップ680に戻る(ブロック725)。
【0175】
他の接続が無ければ(判定ブロック720で「ノー」の場合)、エンジン244は、接続に接続リソースを割り当て可能か否かを判定する(判定ブロック726)。割り当て可能でない場合、エラーが宣言され(判定ブロック726で「ノー」の場合、ブロック727)、接続が中止される(ブロック728)。接続リソースを割り当て可能な場合(判定ブロック726で「イエス」の場合)、エンジン244は「設定」状態を宣言し(ブロック726a)、接続についてのセキュリティコンテキストを取得する(ブロック730)。十分なセキュリティコンテキストの取得ができなかった場合(判定ブロック731で「ノー」の場合)、接続は中止される(ブロック728)。取得できた場合、エンジン244は確立フレームを送り(ブロック732)、接続が「確立」状態になったことを宣言する(ブロック732a)。続いて、エンジン244は再送部(retransmitter)を始動させ(ブロック733)、完了に向けて認証処理を待つ(ブロック734)。最後に、エンジン244は装置とユーザとが両方認証済みか否かを判定する(ブロック735)。装置とユーザのどちらかが認証されていない場合、接続は中止される(ブロック736)。それ以外の場合、エンジン244は監視中の(listening)アプリケーションへの接続を示唆し(ブロック737)、設定を取得する(ブロック738)。この2ステップのどちらかが成功しなかった場合、接続は中止される(判定ブロック739、ブロック740)。成功した場合、処理はスリープ状態に戻って作業を待つ(ブロック741)。
【0176】
(異常終了の例)
図15Aおよび15Bは、接続「中止」要求を受けて、インターネット・モビリティ・プロトコル・エンジン244が実行するステップを例示する、フローチャートを形成している。キューを介してディスパッチされた、上記のような要求を他の処理(ブロック999)から受信すると(ブロック1000)、エンジン244は、接続が該要求と関係しているかどうかを判断する(判定ブロック1001)。関係していれば(判定ブロック1001で「イエス」の場合)、エンジン244は元の状態をセーブして(ブロック1002)、「中止」状態を宣言する(ブロック1002a)。次に、エンジン244は、接続がRPCエンジンに示唆されていたか否かを判定する(判定ブロック1003)。されていれば、エンジン244は切断イベントを示唆し(ブロック1004)、「ポスト・モーテム」状態を宣言して(ブロック1003a)、該接続に割り当てられていたリソースを解放し(ブロック1005)、元の状態が保留中の状態より大きいか否かを判定する(判定ブロック1006)。元の状態が保留中の状態より大きくなければ、(判定ブロック1006で「ノー」の場合)、処理は、呼び出しルーチンに戻るべく、ブロック1012に移る(ブロック1007)。元の状態が保留中の状態より大きい場合には、エンジン244は、上記要求が受信フレームと関係しているかどうかを判定する(判定ブロック1008)。中止要求が受信フレームと関係していて、受信フレームが中止フレームである場合(判定ブロック1009)、受信フレームは呼び出しルーチンに戻る(ブロック1012)前に破棄される(ブロック1011)。
【0177】
(ローミング制御の例)
再度図1を参照すると、モバイルネットワーク108は、それぞれ別のネットワーク相互接続(107a〜107k、無線トランシーバ106a〜106kにそれぞれ対応)を提供する、複数のセグメントを含んでいてもよい。本発明の別の側面において、モビリティ管理サーバ102を含むネットワーク108は、モバイル端末システム104があるネットワーク相互接続から別のネットワーク相互接続へと移る「ローミング」状況を、余裕を持って(gracefully)扱うことができる。一般に、ネットワーク108のトポロジは、管理等の理由により、いくつかのセグメント(サブネット)に分けられ、一般的には、あるセグメントにおいて、別個のネットワーク(伝送)アドレスが複数のモバイル端末システム104それぞれに割り当てられている。
【0178】
上記のようなサブネットで新規に起動したネットワーク装置は、動的ホスト構成プロトコル(DHCP)を使用して、自動的に設定されるのが一般的である。例えば、サブネット上のDHCPサーバは、一般的に、そのクライアントに(他のものの提供に加えて)有効なネットワークアドレスを「リース」する。DHCPクライアントは、永続的に割り当てられた、「固定符号化された(hard−coded)」ネットワークアドレスを有していなくてもよい。その代わり、ブート時に、DHCPクライアントはDHCPサーバにネットワークアドレスを要求する。DHCPサーバは、割り当てに使用可能なネットワークアドレスをプールしている。DHCPクライアントがネットワークアドレスを要求すると、DHCPサーバはプールしていたアドレスを、該クライアントに割り当てあるいはリースする。割り当てられたネットワークアドレスは、特定の期間(リース期間)だけ、クライアントに所有される。リース期間が終わると、ネットワークアドレスはプールに戻され、他のクライアントへの割り当てに使用できるようになる。ネットワークアドレスの自動割り当てに加え、DHCPはネットマスク等の設定情報を、DHCPクライアントソフトウェアを動作させているクライアントに提供する。標準的なDHCPプロトコルについての詳しい情報は、RFC2131に記載されている。
【0179】
よって、DHCPを使用するモバイル端末システム104が、サブネットからサブネットへとローミングすると、該システムは新規のネットワークアドレスを持つことになる。本発明の一側面において、モバイル端末システム104とモビリティ管理サーバ102とがDHCPの自動設定機能を利用し協調することで、モビリティ管理サーバによるモバイル端末システム104の「新しい」ネットワークアドレスの認識や、該アドレスと、モビリティ管理サーバがプロキシする、以前に確立されていた接続との結合が保証される。
【0180】
ある実施例では、モバイル端末システム104が別のサブネットにローミングしたり圏外に出たりしたか否かを判定するために利用される、他の標準的な方法と並んで、エコー要求−応答(echo request−response)として、標準的なクライアント/サーバ型同報通信用のDHCP Discover/Offerメッセージのシーケンスが使用される。標準的なDHCPプロトコルに従って、ネットワークアドレスを要求するモバイル端末システム104が、DHCP Discoverメッセージの一部として、クライアント識別子とハードウェアのアドレスとを定期的に同報通信すると、これに対し、DHCPサーバはOffer応答を同報通信する(要求しているモバイル端末システムがまだネットワークアドレスを持っていないため、該システムを特定して該応答を送るというよりも、同報通信によって該応答が伝えられるという形になる)。よって、当該サブネット上の全てのモバイル端末システム104は、DHCP Offerサーバからの、同サブネット上のどのモバイル端末システムに同報通信された応答であっても受信することになる。
【0181】
本実施例では、DHCP同報通信メッセージをモニターするDHCPリスナが設けられており、モバイル端末システム104が、あるサブネットから別のサブネットへローミングしているか、およびDHCPによって新規のネットワークアドレスが取得できるようになっているかが確認される。図16は、DHCPリスナのデータ構造の例を示している。例えば、モバイル端末システムのリスナのデータ構造902は、以下の要素を有していてもよい。
【0182】
・サーバデータ構造の連結リスト、
・整数トランザクションID番号(xid)、
・カウンタ(「ping」)、および
・タイムアウト値
サーバデータ構造904は、それぞれ別のDHCPサーバを定義するデータブロックの連結リストを有していてもよい。該データブロックそれぞれは、以下の要素を有していてもよい。
【0183】
・次のサーバへのポインタ、
・サーバID(DHCPサーバのネットワークアドレス)、
・最近該DHCPサーバと結合したBOOTPリレーエージェントのアドレス(giaddr)、
・「ping」値(socket−>ping)、および
・フラグ
これらのデータ構造は、ネットワーク108上のDHCP同報通信トラフィックに基づいて、持続的にアップデートされる。以下に例示の諸機能は、該データ構造の維持に使用される。
【0184】
・roamCreate() (変数を初期化)
・roamDeinitialize() (全てのリスナを消去)
・roamSrartIndications() (モバイル端末システムがローミングするかインターフェイスを変更した際に、登録主体ローミング示唆(registrant roaming indications)のために、供給されたコールバックルーチンを呼び出す)
・roamStopIndications() (適当なコールバックをリストから除去して登録ローミング示唆を停止)
・インターフェイス変更(インターフェイスがネットワークアドレスを変更したことを示す、OSからのコールバック通知)
・リスナ信号(ローミング、圏外、圏内復帰のいずれかの状態を示す、リスナからのインターフェイスごとのコールバック)
これに加え、リフレッシュ処理が、インターフェイス変更後にリスナをアップデートするために利用されてもよい。
【0185】
本好ましい実施形態では、全てのモバイル端末システム104が、DHCP Discover要求によって同じクライアント識別子とハードウェアアドレスとを伝送する。これにより、リスナのデータ構造とこれに関連する処理とが、モバイル端末システムからのDiscover要求と、他のネットワーク装置からのDiscover要求とを、区別することができるようになる。DHCPサーバも同様に応答を同報通信するので、どのモバイル端末システム104および/またはモビリティ管理サーバ102も、DHCPサーバからどのモバイル端末システムに出されたOffer応答でも受け取ることができる。複数のDHCPサーバが単一のDHCP Discover要求に応答できるため、図16のリスナのデータ構造は、サーバからの応答それぞれを、メインハンドルに連結リスト経由で結びつけられた、個別のデータブロックに記憶する。
【0186】
所定のクライアントハードウェアアドレスおよびクライアント識別子を有するDiscover要求の受信に際し、本好ましい実施形態では、該要求がモバイル端末システム104から送られてきたものとして認識される。該メッセージが0に設定されたBOOTPリレーアドレスをさらに有している場合、該メッセージはリスナと同じサブネットからのものであることが示唆されている。リスナは、最近モバイル端末システム104から送られたDiscoverメッセージのトランザクションID(xid)と対応したトランザクションID(xid)が含まれていない限り、DHCP Offer応答を無視してもよい。該リスナは、新規のBOOTPリレーエージェントIDおよび/または提供されたサブネットマスクでマスクされた、提供されたネットワークアドレスを持つ、既知のサーバから応答があれば、モバイル端末システム104がローミングしたと判定する。リスナは、旧サーバから肯定応答を受け取って初めて、新サーバを図16のデータ構造に加える。リスナが新サーバからの応答は受け取ったが旧サーバからは受け取っていない場合、ローミング状態が示唆される(これについては設定によって変更可能である)。リスナが新旧両サーバのどちらからも応答を受け取っていない場合、リスナは圏外にあると判定される(この判定は、アプリケーションなど上層に警告を出して、停止や、バッファ・オーバーフロー回避のためのデータ送信量の減少に利用できる)。
【0187】
リスナがどのサーバからも応答を受信しない場合、参照点が無いため、ローミングが行われているかどうかが判定できない。この状況は、タイムアウト後にエラー警告して、呼び出し側に処理を再試行させることによって解消される。本好ましい実施形態では、新規のBOOTPリレーエージェントID(または提供されたサブネットマスクでマスクされた、提供されたネットワークアドレス)を持つ、既知のサーバから応答があれば、モバイル端末システム104がローミングしたと判定する。リスナのデータ構造に、新サーバからの応答はあったが旧サーバからのものは無い場合、ローミングが行われた可能性はあるが、旧サーバからの応答がその後あるかもしれないので、待機して通知を遅らせる。新旧どちらのサーバからも応答が無い場合、モバイル端末システム104は圏外にある可能性があるので、モビリティ管理サーバ102は該システムが圏内に戻るのを待つ。
【0188】
図17は、本好ましい実施形態のリスナ処理のステップを例示したフローチャートである。同図によると、DHCPリスナ処理は、適切なメモリをハンドルに割り当て、NALソケットをDHCPクライアントおよびサーバUDPポートに解放し、その両者に対して受信コールバックを設定することによってなされる。次にタイマーが設定され(ブロック802)、上記処理は「待機」状態に入ってローミング関連のイベントを待つ(ブロック804)。イベントは、以下の3種の外部入力によって引き起こされる。
【0189】
・DHCPサーバパケットを受信する
・他のモバイル端末システムからのDHCPクライアントパケットを受信する ・タイマーの期限が切れる
DHCPサーバパケットを受信した場合、該パケットは、そのクライアント識別子が所定のクライアントIDと一致するか否かを判定するために調べられる(判定ブロック806)。一致しなければ、該パケットは破棄される。しかし、該パケットが所定のクライアントIDを含んでいる場合、該パケットがDHCP Offerパケットであるか否かが判定される(判定ブロック808)。該Offerパケットは、最近送られたDHCP Discoverシーケンスに対応したトランザクションIDを含んでいない限り、拒絶される。
【0190】
パケットトランザクションIDが対応していれば(ブロック810)、DHCP Offerパケットを送信したサーバが既知であるか否か(つまり、サーバIDが図16のリスナのデータ構造に含まれているか否か)が判定される(ブロック812)。サーバIDがリストに無い場合(判定ブロック812で「ノー」の場合)、サーバIDがリストに加えられ、「新規」とマークされる(あるいは、リストの最初のサーバであれば、「最初」とマークされる)(ブロック822)。サーバが既にリストにある場合(判定ブロック812で「イエス」の場合)、さらに、パケットBOOTPリレーアドレス(「GIADDR」)がサーバアドレス(「GIADDR」)に対応しているか否かが判定される(判定ブロック814)。対応していなければ、Offerパケットは他のサブネットからのものということになるので、「ハードローミング(hard roam)」が実行されたと判定される(ブロック816)。呼び出し側のアプリケーションには、ローミングが行われたことが通知される。判定ブロック814でBOOTPリレーアドレスが対応していると判定されると、ローミングは行われていないということになり、サーバ受信時間を記録し、リストの他のサーバ全てについて「新規」フラグをリセットし、現在のping番号をサーバに記憶するというリスナ処理が行われる(ブロック818、820)。続いて、処理は「待機」期間に戻る。
【0191】
イベントがクライアントパケットに受信されると、リスナ処理では、該パケットが所定のクライアントIDを有しているか、DHCP Discoverパケットか、および0のパケットBOOTPリレーアドレス(GIADDR)を有しているかどうかが判定される(ブロック824、826、828)。これらのステップにより、上記受信パケットが、リスナと同じサブネット上にある、他のモバイル端末システムから送信されたDHCP Discoverメッセージであるか否かが判定される。そうであれば、リスナ処理により、上記トランザクションIDが、後に受信されるDHCP Offerパケットの比較に用いられる、ピアのトランザクションIDに設定され(ブロック830)、「ping確認」が呼び出され(ブロック834)、タイマーがリセットされる(ブロック836)。
【0192】
タイマーの期限切れにより、処理は「ping確認」を呼び出す(ブロック838)。本好ましい実施形態における「ping」は、ランダムな新規のxidを有するDHCP Discoverパケットである。このping確認838のステップが、図17Aに例示されている。ping確認ルーチンの目的は、「ソフトローミング(soft roam)」状態(つまり、モバイル端末システムが、一時的にサブネットとのコンタクトを失ったもののその後回復したが、まだ他のサブネットにローミングはしていない状態)が発生しているか否かの判定である。処理によって、サブネット・ローミング状態、圏外状態、あるいは「サーバ無し」状態が発生しているか否かが判定される。これらを言い換えると以下のようになる。
【0193】
・モバイル端末システムが、あるサブネットから別のものにローミングしたか?
・モバイル端末システムは圏外にあるか?
・DHCPサーバは不在か?
これらの状態は、モバイル端末システムの、前「ping」応答と現「ping」応答とを比較することによって判定される(判定ブロック846、850)。例えば、現ping数から旧サーバの前ping応答を引いた数が、サブネットのサーバのpingよりも大きく、少なくとも一つのサーバが「新規」とマークされている場合、別のサーバへのサブネット・ローミングがあったということになる。この論理により、コーリング処理に対し、サブネット・ローミング状態、圏外状態、あるいはサーバ無し状態が示唆される(あるいはいずれも示唆されない)。
【0194】
図18は、モバイル端末システム104のローミング制御センター(roaming control center)が実行するステップを例示したフローチャートである。モバイル端末システム104でのローミングを可能にするため、既知のアドレスのリストが0に初期化され(ブロック850)、OSインターフェイス変更通知がイネーブルになり(ブロック852)、次に、OSを呼び出して、DHCPを利用する現在のアドレスのリストを所得する(ブロック854)。現在のリストから無くなった全ての既知のアドレスに対応するリスナが閉じられ(ブロック856)、一方、現在のリストにあるが未知のインターフェイスにあるリスナが開放される(ブロック858)。次に、登録主体に「ローミング」を示唆する(ブロック860)。
【0195】
図17のリスナ処理から信号が送られると(ブロック862)、該信号が、「ローミング」、「圏外」、「圏内復帰」のいずれの状態を示しているかが判定される(判定ブロック864、870、874)。ローミング信号(判定ブロック864で「イエス」)により、対応するリスナ866が閉じられ、OSがコールされて、ネットワークアドレスのDHCPリースが解放、更新される(ブロック868)。リスナ信号が「圏外」の場合(判定ブロック870)、該状態が登録主体に示唆される(ブロック872)。該信号が「圏内復帰」の場合(判定ブロック874)、該状態は全ての登録主体に示唆される(ブロック876)。無効のローミング命令を受信すると(ブロック878)、全てのリスナが閉じられ(ブロック880)、OSインターフェイス変更通知が無効になる(ブロック882)。
【0196】
(インターフェイスによって補助されたローミングのリスナの例)
さらに、インターフェイスベースのリスナによって、同じネットワークおよび別のネットワーク媒体のネットワーク接続ポイントを横断したローミングが可能になる。該インターフェイスベースのリスナが上述のビーコン技術を要することなく動作する一方、下層の(複数の)インターフェイスが適切な信号をサポートしていない場合には、システムをビーコン状態にフォールバックさせることもできる。
【0197】
本実施形態において、インターフェイスベースのリスナは、ネットワーク・インターフェイス・アダプタからの(例えば低レベルのインターフェイス・ローミング・ドライバを経由した)情報を、ネットワークスタックからの情報と統合して、モバイルノードが新規のネットワーク接続ポイントに移動したか否かを判定する。図19Aと19Bは、モバイルノードの移動パス(migration path)を効率的に決定するのに利用される、リスナ・アルゴリズムを例示する。該処理では、単一のネットワーク媒体に接続された単一のネットワーク・インターフェイスが使用されているが、単独で、もしくは他のローミング・アルゴリズムと協働して、(例えば、冗長パスを使った自己回復インフラ構築のために)様々なネットワーク媒体やインターフェイスを横断するようにもできる。
【0198】
図19Aを参照すると、システム初期化時や、ネットワークアダプタドライバがロードする際に(図19A、ブロック2000)、低レベルのインターフェイス・ローミング・ドライバは、図18のローミング制御センターモジュールに登録を実行する(ブロック2010)。このような登録(例示の実施形態では、crRegisterCardHandler()機能を通じて実現される)により、下記のエントリポイントが与えられる。
【0199】
・開
・閉
・状態(status)取得
・ドライバが登録主体に状態の変化を通知可能であれば、ブール演算を真とし、ローミング制御センターモジュールが、状態確認にタイマーベース(等)のポーリングを使わなければならない場合は、ブール演算を偽とする
実施例のcrRegisterCardHandler()機能により、インターフェイス記述ストリング、あるいはローミング制御センターモジュールを正しいローミングドライバと予備的に組み合わせるために使用できるトークンが与えられる。また、デフォルトのローミングドライバが、示唆/問合せ(signaling/querying)媒体接続性およびネットワーク接続ポイントの変更に関するOS包括メカニズム(O/S generic mechanism)を使用するインターフェイスに、インストールされてもよい。
【0200】
本実施例では、インターフェイスの状態がイネーブルになると(つまりネットワークへのアクセスが可能になると)(ブロック2020)、ローミング制御センターは、インターフェイス補助ローミング(interface assisted roaming; IAR)を、以下のステップに基づいて試みる(ただし、以下のステップは、OSの設計および/または特定のアプリケーションに使われるホスティング装置によって、入れ替えられたり省略されたりすることがある)。
【0201】
1.包括ハンドラ(generic handler)がインストールされている場合、包括crOpenInstance()ハンドラへのコールがなされる。包括ハンドラは低レベルアダプタドライバに問合せをして、該ドライバが、媒体接続性の状態およびネットワーク接続ポイントの変更に関する信号を包括的にサポートしているか否かを判定する(ブロック2030)。インターフェイスドライバが該機能を包括的にサポートできない場合(判定ブロック2030で「ノー」の場合)、エラー状態が、コール実行側に返され、信号情報の取得に他のメカニズムを使用することが示唆される。
【0202】
2.包括ハンドラがエラー(判定ブロック2030で「ノー」)を返した場合、アクティブなインターフェイスに関する検索が、現在登録されているローミングドライバにおいて実行される(ブロック2040)。該インターフェイスが、crRegisterCardHandler()フェイズ中に登録されたトークンのうちの一つと一致する場合(ブロック2050)、ローミング制御センターは、アダプタのインスタンスへの特定のcrOpenInstance()をコールする。この機能は、低レベルドライバを開き、状態(媒体接続性、ネットワーク接続ポイントID)を再度ポーリングし、定期ポーリングタイマーを(可能ならば)設定することを試みるものである。低レベルドライバが、なんらかの理由で該要求をサポートしていない場合、ローミング制御センターにエラーが返されて、信号情報の取得に他のメカニズムを使用することが示唆される。
【0203】
3.ここまでのステップのいずれかが、要求された機能を達成できない場合、エラーがローミング制御センターに返されて、IAR機能を使用せずに、図17および17Aのビーコンリスナ(beaconing listener)、モバイルIP、あるいは場合により、ローミングを扱っている、現在接続されているネットワークなど、他のローミング・アルゴリズムにフォールバックすることが示唆される(判定ブロック2050で「ノー」の場合、ブロック2060)。これ以外の場合、インターフェイス補助ローミングがイネーブルになり(ブロック2060)、ローミング制御センターは下記のアルゴリズムに従う。
【0204】
まず、インターフェイスによって補助されたリスナは、現在の媒体接続性の状態と、ネットワーク接続ポイントの識別情報とを、ローカルデータストアに記録する(ブロック2060)。インターフェイスによって補助されたサブシステムがローミングフィードバックの供給に成功したと仮定して、該サブシステムは状態イベントを待つ(ブロック2100)。該イベントは、例えば以下のものを有している。
【0205】
・低レベルローミングドライバからのコールバック、
・ポーリング間隔(timed poll interval)(ブロック2070、2090)、あるいは
・ネットワーク・レベルの活動(つまり、伝送/受信にかかわる問題)からの示唆
インターフェイスの状態が、媒体接続性に変化が生じたか、あるいはネットワーク接続ポイントが変更されたかを示すと(図19Bの判定ブロック2110もしくは2120で「イエス」の場合)、ローミング制御センターの全てのクライアントに、以下のルールに基づいて、状態の変化が知らされる。
【0206】
1.状態が、下層のネットワーク媒体への接続から切断へと変化したことを示し(ブロック2120で「イエス」)、ピアへのパスが他に無い場合、リスナは、モバイル端末システムが接続を失ったと結論付け、ローミング制御センターはそのクライアントに、ROAM_SIGNAL_OUT_OF_CONTACT状態を示唆する(ブロック2140)。
【0207】
2.上記状態が、インターフェイスが媒体に再接続され、ネットワーク接続ポイントが変わっていないことを示し(ブロック2120で「ノー」の後、ブロック2150で「ノー」の場合)、ROAM_SIGNAL_OUT_OF_CONTACTが既に示唆されている場合、モバイル端末システムが、特定のネットワーク接続ポイントとのコンタクトを失ったがその後取り戻したことが示唆される。この場合、ローミング制御センターは、適切なアクセスのために登録または取得された全てのネットワークアドレスを再確認し(ブロック2170)、ROAM_SIGNAL_ROAM_SAME_SUBNETを出して(ブロック2180)、ローミング制御センターのクライアントに、再接続が行われたので、トランスポート・レベルでの通信の再確立に必要な措置を全て実行するように警告する。例えば、サービス中断中にいくつかのデータが失われることがあれば、クライアントは該データを回復するために措置を講じるといったことである。
【0208】
3.上記状態が、インターフェイスが媒体に取り付けられているが、ネットワーク接続ポイントが変更されたことを示している場合(ブロック2150で「イエス」の場合)、ローミング制御センターはクライアントに、ローミング状態になったことを示唆する。ネットワーク接続ポイント間のハンドオフをさらに効率的にサポートするために、本例のローミング制御センターは、ローカルデータストアと並行して学習アルゴリズムを使用している。該データストアは、通常動的にポピュレートされている(学習している)が、パフォーマンス向上のため、該データストアに静的な情報(既に学習された情報)が準備されていてもよい。データストア自体は、ネットワーク接続ポイント識別子のリストを、ネットワークや媒体へのアクセスのアドレスやネットワークマスクなどの情報とともに維持している。この「ネットワーク・トポロジ・マップ」は、ローミング制御センターがクライアントに対して正しい信号の生成を決定できるように補助するものである。
【0209】
正しい信号の決定は、本実施例では以下のようにしてなされる。
【0210】
a)データストアのネットワーク・トポロジ・マップを検索して、インターフェイスが特定のネットワーク接続ポイントを訪れたか否かが判定される(ブロック2190)。対応が見つかれば(ブロック2200で「イエス」)、該ネットワーク接続ポイントが、以前にインターフェイスが結合していたのと同じネットワーク・セグメントにあるか否かがさらにチェックされる。ネットワーク・セグメントが同じであれば、ローミング制御センターは、ROAM_SIGNAL_ROAM_SAME_SUBNETを生成する。これにより、ローミング制御センターのクライアントに、ハンドオフが実行され、ハンドオフ中にデータのいくつかが失われた可能性があるため、直ちにトランスポート・レベルでの通信の再確立をするための可能な限りの措置を講じなければならないことが示唆される。
【0211】
b)検索中に対応は発見されたが、新しいネットワーク接続ポイントは前と同じネットワーク・セグメントにない場合、リスナは、モバイル端末システムが別のサブネットワークにローミングしたと結論付ける。この場合、ローミング制御センターは、
・新規のネットワーク・セグメントで使用可能なアドレスを取得する(ブロック2220)。この動作は、現在のアドレスを新規のセグメントで有効なように登録すること、ローカルサーバからアドレスを(再)取得すること、あるいは以前に割り当てられたアドレスがまだ有効かどうか判定するヒューリスティックな手法を用いてもよい。最後のケースでは、ローミング制御センターにより、インターフェイスが所与のネットワーク接続ポイント間をローミングしていて、パフォーマンス維持の観点から、直ちにネットワークアドレスを破棄したり、その登録を抹消したりできないような状態にあるかどうかが判断される。この例では、(例えばDHCPを通じて)ネットワークでアドレスを取得することは、(モバイルIPの外部エージェントを通じて)ローカルネットワークでアドレスを登録することとは相違している。ローミングエンティティは、アドレスを(再)取得(例えばDHCPサーバからのリースを確立/アップデートして)するか、あるいは現アドレスを外部エージェント(モバイルIP)に登録する。
【0212】
・別のサブネットへのローミングを示唆する、ROAM_SIGNAL_ローミング信号を、該ローミング制御センターのクライアント向けに生成する(ブロック2230)。
【0213】
c)検索の結果対応が見つからなければ(ブロック2200で「ノー」)、ネットワーク接続ポイントの識別子、媒体アクセスアドレス、ネットワークマスクや他の補助的な情報によってポピュレートされた、新規の記録を生成する(ブロック2210)。次に、ローミング制御センターはブロック2220および2230を、ネットワークアドレスを取得、登録し、「ローミング」信号を生成するために実行する。
【0214】
上記のインターフェイスによって補助されたローミング技術により、下層のインターフェイス情報へのアクセスができるようになり、自動的かつ効率的に別の有効なネットワークパスを選択することを可能にする、(ユーザおよび/またはシステムによって定義された)付加的なポリシーパラメータが採用できるようになる。一つ以上のネットワークが同時に使用可能な場合、サブシステムは、最も負担がかからないパス(ワイドエリア・ネットワークかローカル・エリア・ネットワークかという選択)を選ぶことができる。これは、帯域幅、(1バイトあたりの)コスト、および/またはサービス品質といった様々なメトリクスによって決定可能である。この「最低負担ルーティング」技術により、ネットワーク接続の品質、効率、フレーム損失の減少などの点で効果を得ることができる。例えば、他の利用可能なヒューリスティクス(媒体接続性、信号強度、再伝送率等)による、「メークビフォアブレーク(make before brake)」ハンドオフ構造が提供可能で、よってローミングノードからの/に向かう継続的なパケットフローの損失を最小化できる。下記のポリシー管理についての記述を参照のこと。
【0215】
図20は、インターフェイス補助ローミングトポロジのノードのデータ構造を例示している。図20のこのデータ構造は連結リストとして実施されているが、前後のフィールドを省略した配列として表現されることもある。無線ネットワーク・インフラにおいて、「NPOA」は、例えば、アクセスポイントのMACアドレスあるいはモバイルノードが結合している基地局でもよい。他のネットワークにおいては、「NPOA」は、介入的なネットワーク相互接続(ゲートウェイ、IWF等)の固有の識別子であってもよい。データ構造には静的な情報が予め与えられていてもよいし、動的に情報が学習されてもよい。また、ノードそれぞれと、他の情報(例えばMTUのサイズ、待ち時間、コスト、利用可能かどうかなど)とが結合していてもよい。
【0216】
(特定の競合状態を扱う他の実施例)
さらに行われた実験から、ネットワーク・アダプタの中には、ネットワーク・セグメントに完全登録される前に、媒体と(再)接続されていると誤って信号を出すものがあることが明らかとなった。例えば、ローミングの間、ネットワーク識別子を保持する記憶領域はまだ更新されず、従って、システムがこれらのネットワーク・アダプタが同じサブネットにロームバックしたと誤解することが考えられる。最終的には、デバイスが登録を終了すると、記憶領域は新しいネットワーク識別子と共に更新され、さらに別のローミング信号が生成される。両方の情報が一緒にゲートされ、インターフェイスがネットワークでの登録を終了した時に1度だけ信号が送られると、このシナリオ通りに進む。しかし、ポーリングの際、「ネットワークと接続中」を示す信号が以前に生成された場合に、ネットワークIDがいつ有効になるかを判定するのは困難である。
【0217】
基本的に、ローミング中のノードはネットワークと媒体アクセスレベルで通信できるため、事実上媒体と接続状態にあるが、登録プロセスが完了していないので、事実上、リンクを通じていずれのアプリケーションデータを送ることはまだできない。従って、この状態を補償するのが望ましい。このような補償を行う方法の一つとして、一般にはエコー要求/応答パケットとして知られているリンク確認フレームを送ることによってピア接続を判定する方法がある。これらのエコーやpingフレームは1つのピア(ローミング中のノードである可能性が高い)によって生成され、双方向のピア・トゥ・ピア接続が達成可能か判定する。要求を出しているピアがその要求に対する応答フレームを受け取る場合、二重通信が実現し終了する。この時点で、次に切断状態になるまでNPOA情報が有効であると見なされる。また、該当インターフェイス上のピアからのフレーム受領等、他の情報によって、ローミング中のノードが登録プロセスが終了し、双方向通信が達成可能であることが想定可能となる。
【0218】
ネットワーク・インターフェイスと内在するプロトコルスタック状況間における別の競合状態は、問題を生じることがある。デバイスは、新しいネットワーク・セグメントに移動し、以下のインターフェイスから正確に信号が送られるようにすることは可能であるが、トランスポート・スタック自体はフローするアプリケーションデータのルーティング・テーブルに必要な調整を行わないことがある。この状態を補償するために、内在するトランスポートのルーティング・テーブルに変更が生じる度に、付加的信号であるROAM_SIGNAL_ROUTE_CHANGEが追加されて生成される。この信号が示されると、ローミング中のサブシステムクライアントはピア・システムとの接続が達成可能かどうか判定するために必要なアクションは何でも行う。これによりローミング中のクライアントは、ルーティング修正がピアへの通信経路に影響を及ぼしたかどうか判定するために、内在するトランスポートのルーティング・テーブルを介して列挙する必要がある。また、上記記載のアルゴリズム等のように、よりイントルーシブな他のアルゴリズムが、ピア間に双方向通信経路が存在することを確認するために行われてもよい。
【0219】
(非接続ネットワークを通じたローミング例)
本発明の非限定的な好ましい実施形態の他の一側面として、いわゆる「非接続ネットワーキング」(disjoint networking)モードでMMS(モビリティ管理サーバ)にアクセスするためのアルゴリズム及び構成がある。新しいアルゴリズムによって、あるネットワークからは別のネットワークにおけるネットワークアドレスが分からないような非接続ネットワーク・トポロジにおいても、MMSとの通信を確立する/持続するのに使われる、代替のネットワークアドレスを動的/静的に見つけ出すことができるようになる。
【0220】
一般に、アルゴリズムによって、通信中にMES(モバイル端末システム)に送るための、MMSが利用可能な代替アドレスのリストが可能となる。このように、MMSはMESに、一つ以上のMMSネットワークアドレスもしくは他のネットワークに対応した他のMMSのアイデンティティを、単一のネットワークによる通信によって送る。一例として、該リストは、回路構築の際に送付可能である。また、該リストは途中で変更可能である。この場合、該リストは接続が確立されている間のいかなる時にも更新が可能である。
【0221】
MESが別のネットワークへと移動するとき、MESは新規のネットワークの接続ポイントからMMSとコンタクトをとるために、MMSの「エイリアス」(alias)アドレス/アイデンティティのリストを用いる。これにより、移動前のネットワークと移動後のネットワークとがアドレス、又はその他の情報を共有していなくても、MESは新規のネットワーク接続を通じてMMSとのコンタクトを再確立することができる。
【0222】
この新しい技術を簡略化したフローチャートを図21に示す。MMS102は、2つの異なる非接続ネットワーク、すなわちネットワーク・セグメントN1及びN2と接続しているものとする。MES104は、最初にMMS102とネットワークN1を介して接続されるものとする。ネットワークN1を介してMES104とMMS102との間で接続が確立されるとすぐに、MMS102は、MES104に対して、MMSが一以上の他のネットワーク(例えば、ネットワークN2)から求められるネットワークアドレスのリストL又は他の識別子を送ることができる。MES104は、該リストLを受け取り、記憶する。その後、MES104は別のネットワーク(N2)に移動する時、MES104はこの記憶されたリストLにアクセスし、それを用いて新規のネットワーク(N2)を通じたMMS102との通信を効果的に再確立することが可能となる。
【0223】
この新しいアルゴリズムには、非接続ネットワークを通じて、MMS102と通信するための代替ネットワークアドレス又は他の識別子をより効率的に取得することに加え、少なくともいくつかの用途がある。その用途の一例としてネットワークオペレーションがある。例えば、図21に示すアルゴリズムを用いて、多くのネットワーク(いくつか、又は全てが無線ネットワーク)からの安全なファイアウォール/ゲートウェイ、及びコーポレートバックボーンとしてMMS102が使用される安全なネットワークをセットアップでき、モバイルノード104が安全に、接続を切断されることなく別々のネットワーク全てに移動することが可能となる。例えば、MMS102がハブとして1つの太いパイプでコーポレートネットワーク、及び論理的に分離した多くのネットワークを接続する多数の小さなスポークと接続しているとする。ネットワークは論理的に分離しているため、MMS102(この例ではルータとして動作可能)を介した場合を除いて、1つのネットワーク・セグメント上のトラフィックが別のネットワーク・セグメントに達することができない。
【0224】
普通、ネットワーク・セグメントからネットワーク・セグメントへ移動するノードにとって、MMS102との接続に使用される「メインパブリックアドレス又は初期アドレス」への戻り方を示す、各ネットワーク・セグメントに設けられた情報/経路(つまり、デフォルトルート等)をルーティングが必要となる。
接続が確立されるとすぐに、そのアドレスが接続の存続のために用いられる。MES104からフレームが送られる時、クライアント及び及び中間ノード(ルータ)におけるIPネットワーク(層3)のインフラストラクチャは、フレームの目的地アドレスを見て、最終目的地(MMS102)にパケットを正確に送る。このことは、一般にIP送信(IP forwarding)、あるいはIPルーティングと呼ばれるもので行われる。この機能がオンになると、あるネットワーク・セグメントのフレーム(ブロードキャスト等)が別のネットワーク・セグメントへ流れる。IP送信をしないと、あるセグメントに送られたフレームは他のセグメントへ送られることはないので、通信パイプが切断され、あるいは非接続ネットワークができてしまう。
【0225】
図21に示す代替アドレスリストは、ルーティング情報のうちの幾つかをMES104に送出する、又は配布する効果を有する。従って、各セグメントは、MMS102とつながっている他のセグメントの情報はない状態で離散された状態となる。MES104はMMS102によって認証可能であるため、MMSは認証されたMESユニット104にのみリストLを送る。MES104が別のネットワーク・セグメントへ移動する時、MES104は自動的に正しいアドレスを選択し、それを用いて途中MMSとの通信を開始/継続することができる。従って、非接続ネットワークの問題は解決され、ルーティング・インフラストラクチャの変更は必要なくなる。これにより、有効なユーザに対してのみネットワークへのアクセスを有効にすることによって、より安全なコンピュータ環境を提供することが可能となる。
【0226】
例えば、このようにユーザレベルのセキュリティ/暗号化と組み合わせてMMS102を用いることで、コーポレートバックボーンからのトラフィック、及びコーポレートバックボーンへのトラフィックを、上記のローミング技術を用いてそのセグメント上のノードを目的地としたフレームのみに限定することが可能である。フレームは選択的に暗号化でき、スポーク・ネットワーク・インフラストラクチャが有効にしたデバイスによって行われる可能性のある盗聴を阻止することができる。
【0227】
例を図22に示す。図22において、MMS102は通信網やルート情報を共有しない4つの別々に分かれたネットワーク(Ia、Ib、Ic、Id)と接続されている。どの点から見ても各ネットワークIは島となっている。コーポレートバックボーン上の有線通信を用いてネットワークの一つ(例えば、Ic)とドッキングしているMES104を想定する。例えば、MES104は192.168.x.xネットワーク上のアドレスを取得してMMS102と通信するものとする。
【0228】
ある理由によりMESが10.1.x.x(Ia)ネットワークに渡る、又は移動する必要があるものとする。10.1.x.x(Ia)ネットワークは192.168.x.x(Ib)ネットワークのことを知らない(つまり、(Ib)ネットワークへのルートがない)ため、MES104がその領域へ移動する時に、たとえMMSが通信パイプに接続されていても通信パイプは切断される。また、モバイルノード104が図示される他の10.xネットワークのいずれかと接続する場合においても同じことが起こる。
【0229】
図21に示すアルゴリズムを用いて、接続開始時間の(あるいは他の方法で)MMS102は各種非接続ネットワークIa、Ib、Ic、Idに関するそのインターフェイスアドレスをMES104と共有し、MESはこれらを記録する。一旦記録されると、MES104は上記ネットワークのいずれか一つに移動して新しいネットワーク・セグメントに移動したことを検出する場合、MESは適切なネットワークアドレスを選択し、そのネットワーク・セグメントでMMSと通信できる。2以上のアドレスが使用される場合、MES104は適切なアドレスを選択してスピード、コスト、有効性、ホップ等、多くのメトリクスに基づき使用する。図21と同様のリストを受け取らなかったMES104は、その「ホーム」ネットワーク以外のネットワークを通じてMMSと接続することができないので、種々のネットワーク間の移動を事実上阻まれることになる。
【0230】
他に、図21の技術は分散型ネットワーク・インターフェイスに用いられる。今日のネットワークにおいて、ネットワーク・アドレス・トランスレータ(Network Address Translators;NATs)として知られるものが開発されている。この従来の技術を利用すれば、一つの公開ネットワークアドレスを用いるだけで多くのネットワークデバイスはインターネット上の情報へのアクセスが可能となる。この技術は、単一もしくはわずかなデバイスを介してインターネットに向けられた情報やクエリを全て送ることによって上記の機能を可能とする。該デバイスはネットワーク層で要求を記録し、その後パケットのアドレスとポート情報をデバイスのアドレス/ポートのタプルに再度対応付けし、それをその目的地に送信する。インターネット、あるいは他の当該ネットワークからフレームを受け取ると同時に、デバイスはリバースルックし、そのアドレス/ポートのタプル情報を開始デバイスのものと取り替えて、フレームを送り返す。これらの対応付けはNATにおいても静的に定義される。
【0231】
誰かがLAN/WLANの内部でMMS102を使用するために、それをNATに置くことを想定する。現在、MMS102がNATでない限り、あるいは異なるプロキシを用いてMMSと通信を全て行うことによって、誰かがイントラネットの境界範囲外に移動する時、MMSと通信するアドレスがもはやアクセス可能ではないため、MMSとはアクセス可能ではない。図21のアルゴリズムを用いれば、MMSと直接接続されていない別のインターフェイスアドレスを静的/動的に明確にすることができる。従って、上記のアルゴリズムを使用すれば、MES104は自動的に適切な非接続アドレスを選択し、イントラネットの領域外のネットワークと接続する時にそのアドレスを使用することができる。
【0232】
この概要を図23に示す。ノードがインターフェイス“d”からインターフェイス“g”へ渡るとする。MMS102にローカルインターフェイスを供給するだけではアクセスはできない。MES104は分散されたインターフェイスの優先順位を知る必要がある。それからMES104は必要なアドレスを選択してインターフェイス“g”上で使用する。その後、NAT2000は、各パケットに関するネットワークアドレス/ポート情報を、内部インターフェイス“c”アドレスへ適切に変換する。MMS102からMES104に送られるフレームには逆の処理が行われる。
【0233】
(ポリシー管理及びロケーションベースのサービス例)
本発明の他の非限定的な実施形態として、多くのメトリクスに基づき付加的なセキュリティ、コスト削減、サービスを提供することが独自にできる手法を提供する。上記のMMSはMESが確立する各アプリケーションのセッションと深く関わっているため、どちらの側(すなわち、MMSおよび/またはMES)もポリシーベースのルールを適用してMESとその最終的なピアとの間の通信を適合して制御することができる。さらに、MMSおよび/またはMESはデバイスのロケール、又は近接性(proximity)、並びにネットワークの接続に基づきアプリケーション要求を調整又は修正することができる。例えば、MMSおよび/またはMESは学習され静的に定義されて適用されたルールエンジン、あるいは確立する各アプリケーションセッション、又は試みる要求に対するポリシーに基づく他のルールを含むことができる。MMSはさらにMESにこのようなルールの幾つか、全くなし、あるいは一部、および/または処理を配分して、メータリング(metering)、又は傍受者によるモバイルデバイスへの侵入(rogue attacks)に対するセキュリティを提供する。分散型トポロジで利用可能な特定の他のポリシー管理技術とは違い、MMSが中心となり、ルールやポリシー決定を管理し、それらを通信中いかなる時にも遠隔地のデバイスに分散させる。
【0234】
ルール自体は、ユーザ、ユーザ・グループ、デバイス、デバイスグループ、プロセスアプリケーションアイデンティティ、および/またはネットワークの接続ポイントに基づき構成可能である。一旦定義されると(学習されると)、ルールは組み合わされて、例えば、以下のものを含む種々の異なる事象、活動、および/またはサービスを管理し、制御する。
【0235】
・遠隔地のデバイスへの侵入アクセスの拒否、許可、又は調整
・アイデンティティに基づく特定のネットワーク・リソースへのアクセスの拒否、許可、又は調整
・利用可能、又は許可された帯域幅へのアクセスの拒否、許可、又は調整
・他のネットワーク・リソースへのアクセスの拒否、許可、又は調整
・内容又は情報の修正、調整、又は変更
このような決定は例えば、以下の要素を含む種々の異なる要素に基づいて行われる。
【0236】
・モバイルデバイスについての近接性、場所、高度、および/または他の特性
・日時
・アプリケーション又はプロセスアイデンティティ、アドレス等
・アプリケーション動作(例えば、帯域幅条件)
・現在のネットワーク状態
・他の静的又は動的要素
さらに分散型アーキテクチャを利用することで、MMSは同じ決定セットを適用又は共有することができる。ポリシー管理処理および/または意思決定をMMSに行わせるのは、例えばモバイル装置がエンジンを実行するのに限られた処理能力を持ったり、帯域幅の限度が適用されたり、あるいはセキュリティが目的の場合に望ましい。
【0237】
サンプルMESの制御に使用される可能性のあるメトリクス(ルール)の幾つかを示すテーブルの例を図24に示す。このテーブルは静的又は動的のどちらかに内容を占めてもよいし、場合によっては通信前、通信中、又は通信後に更新されてもよい。例えば、ユーザはテーブルの項目を定義するルール・エディタ(例えば、ウィザード)や他のメカニズムを使用することができる。他の構成例において、メトリクスが学習に基づくシステムによって自動的に定義され、あるいは状態の変更に基づき動的に変更される。また、ルールにはそれぞれ優先順位が割り当てられ、テーブルの場所で暗示、または割り当てによって明確に指定される。この優先順位によってエンジンが期待動作を正確に決定することができる。付加的なユーザインターフェイスの機能によって、システム管理者やデバイスのユーザはルールエンジンに問い合わせて所定のルールセットの機能を試みることが可能となる。
【0238】
ポリシー管理決定の基になる、以下のメトリクスをはじめとする多数のメトリクス例を示すテーブル例を図24に示す。
【0239】
・MESの通信機能(送信のみ、受信のみ、送受信)
・MESの要求がプロキシされるか否か
・MESのソースポート
・MESのソースアドレス
・MESの目的地ポート
・MESの目的地アドレス
・MESのプロトコル
・利用可能な帯域幅量
・プロセス名、アイデンティティ又は他の特性
・ネットワーク名、アイデンティティ又は他の特性
・ロケーション(例えば、GPS座標又は他のロケーション情報)
・ネットワークの接続ポイント
・ユーザの識別子、アイデンティティ又は他の特性
・他のメトリクス
上記テーブル例は完全なリストではなく、本発明は上記テーブル例のメトリクス項目の範囲に限定されるものではない。ネットワークアクセス及び権利付与に関してモバイルノードの所望の動作を示すために、該項目はこの例のように具体的であり、あるいは包括的なメカニズム(例えば、ワイルドカード)であることが可能である。
【0240】
図24のテーブル例には、メトリクスに基づくポリシー管理決定の結果を示す「否定要求」項目がさらに含まれる。一例として、図24のテーブルに示す特定の項目例は、利用可能な帯域幅が一秒間で100,000バイト以下に低減される場合、目的地ポート20、21との接続は否定され、減速されることを示す。さらに、示した特定の例において、ルール(列)3、4によってネットワークトラフィックのみがMMSへ、又はMMSから流れることが可能となる(プロキシが行われない他の全てのネットワークトラフィックは暗に破棄される。)。
【0241】
一例において、各RPC要求又はフレームが処理される前に、ルールエンジンはオペレーションの状況を決定するよう求められる。このプロセスの結果に基づき、その要求が許可、否定、あるいは遅延される。ポリシー管理決定をするためにMMSおよび/またはMESによって行われる処理のフローチャート例を図25に示す。
【0242】
先に概略を説明したローミング技術と、利用可能な他のロケーション又はナビゲーション情報とを組み合わせることによって、MMSはモバイル端末システムがいつ1箇所の接続ポイントから別の接続ポイントへ移動したか検出する。ネットワーク・トポロジの環境の変化を検出するために、モバイル端末システムの機能と関連してこの情報を組み合わせることによって、ロケールによって本発明はロケーションベースの傍受及びサービスの付加的なレベルを提供することができる。
【0243】
この情報の可能性を十分実現させるために、インターネット・モビリティ・プロトコルとPRCエンジンの両方の改良点について概要を説明する。新しいRPCのプロトコル及び構成の改良点が追加され、この機能が可能となる。これらを以下に挙げる。
【0244】
(ロケーション変更RPC(Location Change RPC)の例)
モバイル端末システムが、インターフェイス支援型ローミング又はグローバル・ポジショニング・システムから変更を検出するといった他の方法を用いて新しい接続ポイントへ移動したことを判断した時、モバイル端末システムは、フォーマットされた「ロケーション変更RPC要求(Location Change RPC Request)」メッセージをそのピア、この場合モビリティ管理サーバに送る。「ロケーション変更RPC」は、一以上の接続ポイント識別情報をタイプ、長さ、値の形式にフォーマットする。タイプは識別情報の種類を示し、対応するタイプはASCIIの48ビットIEEE MAC アドレス、IPV4 アドレス、IPV6 アドレス、経度、緯度、高度、接続機構名を含むが、これらに限定されない。長さは識別データのバイト長を示し、該データは実際の接続ポイント識別子を含む。「ロケーション変更RPC要求」を受け取ると、モビリティ管理サーバは、接続ポイント識別子、並びにモビリティ端末システムの識別子、ユーザ名、PID等の他の関連情報を含む「ロケーション変更警告(Location Change Alert)」を作成する。この警告は「ロケーション変更RPC要求」内で使用された同じタイプ、長さ、データフォーマットでフォーマットされる。その後警告サブシステムが、警告のために登録された全てのアプリケーションにロケーション変更警告と共にこの情報を送る。警告のために登録されたアプリケーションは、現在の活動状況のモニタ、長期の動作ログ、ポリシー管理エンジン、第三者アプリケーション等の監視アプリケーション、並びにネットワーク管理ツールを含んでもよい。単一のそのような第三者アプリケーションは、このロケーション情報と、ウェブベースのマップとを組み合わせてモバイル端末システム又はMMSの場所についての詳細情報を提供する。そのようなアプリケーションに加えて、他の動作をロケーション変更警告と関連付けることができる。これには、電子メールの送信、メッセージの印刷、プログラムの起動、および/またはポリシー変更が含まれる。
【0245】
ロケーション変更RPCはそのヘッダにロケーション変更、距離変更、又は速度変更によってトリガされたかどうかを示すフィールドを含む。
【0246】
ある例では、MESは自身が移動したことを知らない場合がある。MESが接続する媒体やネットワーク・アダプタに応じて、MMSはMESが新しい接続ポイントに渡ったことを知らせる唯一のエンティティであってもよい。モバイルルータの場合を考えてみる。ルータ以降のアドレスは同じままで、ルータのアドレスだけが変わる。この場合、MMSはMESのアドレスを新しく管理することを認識する。したがって、動作の検出を完了するためには、行動検出するためのMESとMMSの両方の組み合わせの動作の検出が必要となる。本実施の形態では、ソースアドレスが変更され、新しいIMPメッセージが受け取られる時に、MMSはIMP層でクライアントの行動を検出する。このことが行われると、MMSは局所的にロケーション変更警告を生成する。また、MMSは接続ポイントが変更したというメッセージをMESに送る。
【0247】
(トポロジRPCの例)
「トポロジRPC要求(Topology RPC Request)」はモビリティ管理サーバからモバイル端末システムへ送られる。このRPCの受け取りと同時に、モバイル端末システムはそのローカルデータ記憶装置に記憶されるトポロジ情報を読み出して、トポロジRPC応答(Topology RPC Response)を作成する。トポロジRPC応答は、前後との接続のタイプ、長さ情報が後に続く全長フィールド(Total Length Field)、タイプ、長さ情報が後に続く接続ポイント識別子、および、サブネットおよびネットワーク情報を示す値のデータによってフォーマットされる。この情報は、サーバで提供されるモバイルネットワークの完全なトポロジカル・マップを作成するのにサーバ上で使用されてもよい。
【0248】
(ロケーション情報UIの例)
サーバ上のユーザインターフェイスは、ロケーション情報を対応付けして表示するための方法を提供する。このロケーション情報は、各アクティブなモバイル端末システムが利用でき、長期の動作ログは全てのアクティブなモバイル端末システム及び以前アクティブだったモバイル端末システムのロケーション変更履歴を保持する。ユーザインターフェイスによって、システム管理者は接続ポイント情報を人間が読める形式に構成できる。例えば、接続ポイント情報が48ビットのIEEE MACアドレスの形式で与えられると、サーバ上のユーザインターフェイスを介して提供される情報と共にこのMACアドレスが表示される。接続ポイントが「ホールマークカード(HallMark Cards)」店のアクセスポイントを示すと、次の情報「ホールマーク、住所、市、州、郵便番号」を提示するように設定される。この情報がユーザに対して表示されることによって、「ホールマーク、住所、市、州、郵便番号」情報が提供されることになる。
【0249】
(ロケーションRPCタイマーの例)
設定可能なタイマーがモバイル端末システムに設けられており、ロケーション変更RPCがモバイル端末システムからモビリティ管理サーバに送信される速度を制限する。タイマー間隔が接続ポイントの変更が起こる速度よりも大きい場合、モバイル端末システムはタイマー間隔が終了するまで待ってから別のロケーション変更RPCを生成する。
【0250】
(距離変更通知の例)
距離メトリクスは、ロケーション変更RPCの生成をトリガするために設けられる。この設定によって、ユーザが前にいた元のポイントから、nフィート、nキロメータ毎、あるいは他の適当な測定単位で3次元的に移動する時に、更新を送信するようにシステムが構成される。デフォルトによってこの設定は無効になる。この設定を可能にすることによって、設定された距離間隔を上回った時に変更通知が出される。
【0251】
(速度閾値通知の例)
速度変更メトリクスは、ロケーション変更RPCの生成をトリガするために設けられる。このパラメータは、一時間当たりのマイル等、一秒当たりの距離で構成される。このパラメータは、上限及び下限、並びに到達した速度を持続する必要のある時間間隔(すなわち、10分間で0MPH、又は1分間で70MPH)を特定する。このスピードに達すると、ロケーション変更通知が生成される。
【0252】
[応用例]
本発明は、実社会の様々な場面で応用される。例を以下に示す。
【0253】
(断続的に接続される携帯用コンピュータ)
多くの企業では、在宅勤務や、自宅で仕事をする社員がいることがある。そういった社員は、多くの場合、ラップトップコンピュータを使用して仕事をする。作業中に、社員は一般に自分達のラップトップコンピュータをドッキングポート又は他のコネクタを使用してイーサネット(Ethernet)等のローカルエリア・ネットワーク(Local area network)に接続する。LAN接続によってネットワークサービス(例えば、プリンタ、ネットワークドライブ)やネットワーク・アプリケーション(例えば、データベースアクセス、電子データサービス)にアクセスが可能となる。
【0254】
あるプロジェクトに取り組む社員が、晩に帰宅する必要があり、自宅で仕事を続行したいとする。この社員は、ラップトップコンピュータで実行しているオペレーティングシステムとアプリケーションを「サスペンド」して、ラップトップコンピュータを片付け、そのラップトップコンピュータを自宅に持って帰ることができる。
【0255】
自宅に戻るとすぐに、その社員はラップトップコンピュータで実行しているオペレーティングシステムとアプリケーションを「レジューム」して、ダイアルアップ接続を介して、および/またはインターネットを通じてオフィスLANと再接続する。(ラップトップコンピュータが一時的に中断された間、ネットワークに対するラップトップコンピュータとそのアプリケーションのプロキシを継続した)モビリティ管理サーバは、ラップトップコンピュータを再認証し、ラップトップコンピュータとの通信を再開する。
【0256】
自宅で仕事をしている社員の立場から見ると、ネットワーク・ドライブ・マッピング、印刷サービス、電子メールセッション、データベースクエリ、他のネットワークサービスやアプリケーションは全て会社で終わった状態そのままである。さらに、モビリティ管理サーバはラップトップコンピュータのセッションのプロキシを継続したため、社員の会社から自宅までの帰宅途中に、いずれのネットワーク・アプリケーションもラップトップコンピュータのセッションを終了しなかった。このように、本発明は、上記のような状況や他の状況において、高性能且つ有用な同一又は複数のネットワーク媒体を通じて効果的にセッションを持続可能とする。
【0257】
(モバイル在庫管理及び倉庫への応用)
大きな倉庫又は小売店チェーンを想定する。この構内において、在庫管理を行う従業員がパーソナルラップトップコンピュータ、並びにハンドヘルドデータ収集ユニットや端末装置などを搭載した乗物(すなわち、トラックやフォークリフト)を使って商品の在庫管理が行われる。
【0258】
倉庫や小売店の従業員は、ネットワークサブネットのわからない、管理監督の必要な不慣れなコンピュータユーザであることが多い。本発明によって倉庫ユーザがモバイルネットワークの複雑さを感じない、即使用可能なシステムの構築が可能となる。倉庫ユーザは、アクセスポイントの範囲内及び範囲外を動いたり、自分たちのモバイル端末システム104の中断及び再開をしたり、ホストセッション、ネットワークアドレス、又はトランスポート接続を気にせずに、位置を変えたりできる。さらに、モビリティ管理サーバ102の管理ソフトウェアは、従業員の生産能力を測るのに利用される処理数等のメトリクスを管理関係者に提供する。また、管理によりネットワークサブネット及びアクセスポイントを使用して従業員が最後にいたとされる物理的な位置を判定できる。
【0259】
(モバイル医療への応用)
無線LAN技術を利用して幾つかの建物間でネットワーク通信を行う大きな病院を想定する。各建物は独自のサブネット上にある。本発明によって看護士や医師がハンドヘルドパーソナルコンピュータや端末を持って病室から病室を動き、病院のデータベースから患者情報の読出しや書込みが可能となる。ローカルデータベースやワールド・ワイド・ウェブ(World Wide Web)を通じて、薬物治療や医療処置に関する最新記事へのアクセスが即座に可能となる。本発明はモバイル端末システム104への連続的な接続が可能なので、病院にいる間(一方向又は双方向の)ポケットベルはもはや必要なくなる。メッセージはモバイル端末システム104を介して医療関係者に直接送られる。倉庫の従業員の場合と同様、医療関係者は自分たちが利用しているモバイルネットワークについてわかる必要はない。さらに、モバイル端末システム104によって医療関係者は無線送信が望ましくないとされるエリア内(例えば、電波の放射によって医療機器に障害が出る可能性のある場所)での無線伝送ができなくなるが、中断したところから容易に再開して再接続可能となる。
【0260】
(トラック輸送及び貨物輸送)
運送会社は、貨物の状況を把握するのに本発明を用いる。倉庫に入っている間は、モバイル端末システム104はLAN技術を使用して倉庫内の貨物数を更新する。ローカルサービスから離れている間は、モバイル端末システム104はCDPDやARDIS等のWide Area WANサービスを使用してリアルタイムで貨物の状況や位置を維持できる。モバイル端末システム104はネットワーク・インフラストラクチャ間を自動的に切り替えるので、輸送関係者にネットワーク・トポロジの複雑さを感じさせない。
モバイル企業
企業の社員は、802.11.等のインフラストラクチャが設けられた企業構内にいる間、本発明によるシステムを使用して、電子メール、ウェブコンテント、メッセージサービスへのアクセスを行う。ポケットベルサービスや他のモバイル機器のサービスはもはや必要ないので、これらを維持するためのコストが削減される。既存のモバイル機器サービスの多くが提供する、コストのかかる「利用回数制(pay−per−use)」モデルに対し、モバイルインフラストラクチャは一度の資金支出で購入できる。
【0261】
(IPマルチプリケーション)
ある組織がインターネットに接続する必要のあるLANを有する場合、LANの管理者には二つの選択肢がある。一つ目の選択は、LAN上の全てのコンピュータに対して割り当てるためのグローバルアドレスを取得することであり、二つ目の選択は、グローバルアドレスをいくつか取得して、アドレス・マルチプライヤとして本発明に従ったモビリティ管理サーバ102を使用することである。多数のIPアドレスを取得することは、高額であるか不可能であるかである場合が多い。インターネット・サービス・プロバイダ(Internet Service Privider; ISP)を利用してインターネットにアクセスする小規模の企業は、ISPが割り当てるIPアドレスだけを使用することになる。IPアドレスの数は同時にインターネットに接続できるコンピュータの数を制限する。また、ISPは一回の接続につき課金するため、インターネット接続が必要なコンピュータが増えれば増えるほど、この方法はそれだけ費用がかかる。
【0262】
アドレス・マルチプライヤとして本発明に従ったモビリティ管理サーバ102を用いれば、これらの問題の多くを解決することができる。企業は、ISPを介してインターネットに接続するためのハードウェアとしてモビリティ管理サーバ102を用いることができる。これにより、モバイル端末システム104は容易に接続することができる。インターネットへの接続は全てモビリティ管理サーバ102を通じて行われるため、一つのアドレスだけをISPから取得すればよい。このように、アドレス・マルチプライヤとして本発明を用いることによって、企業はわずかな数(多くの場合一つ)のアドレスとアカウントをISPから取得すればよくなり、全体のLANでインターネットへの同時接続(十分な帯域幅が備えられていることを前提として)が可能になる。
【0263】
以上現在最も実用的且つ好適な実施形態とされる例と共に本発明を説明したが、本発明は開示した実施形態に限定されず、添付クレームの範囲内で種々に変形、同等に構成できるものとする。
【図面の簡単な説明】
【図1】
本発明のモバイル・コンピューティング・ネットワークの全体図である。
【図2】
モバイル端末システムとモビリティ管理サーバとのソフトウェア・アーキテクチャを例示するものである。
【図2A】
モバイル端末システムとモビリティ管理サーバとの間で情報伝達を実行するステップを例示している。
【図3】
モバイル・インターセプタ・アーキテクチャを例示している。
【図3A】
モバイル・インターセプタによって実行されるステップを例示したフローチャートである。
【図3B】
RPC作業要求を扱うRPCエンジン(RPC engine)によって実行されるステップを例示したフローチャートである。
【図4】
RPC作業要求を処理するステップを例示したフローチャートである。
【図5】
RPC作業要求を処理するステップを例示したフローチャートである。
【図5A】
RPC作業要求を処理するステップを例示したフローチャートである。
【図5B】
RPC作業要求を処理するステップを例示したフローチャートである。
【図5C】
RPC作業要求を処理するステップを例示したフローチャートである。
【図6】
受信された作業要求を例示している。
【図7】
受信された作業要求が、どのようにそれぞれ別の優先度のキューにディスパッチされるかを示すものである。
【図8】
上記それぞれ別の優先度のキューにおけるコンテンツの処理を示している。
【図9】
上記それぞれ別の優先度のキューにおけるコンテンツの処理を示している。
【図10A】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図10B】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図10C】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図11】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図12】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図12A】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図12B】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図12C】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図13A】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図13B】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図13C】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図14A】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図14B】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図15A】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図15B】
インターネット・モビリティ・プロトコルを提供するために実行されるステップを例示している。
【図16】
リスナのデータ構造を例示している。
【図17】
モバイル相互接続ローミング(mobile interconnect roaming)を提供するためのステップを例示している。
【図17A】
モバイル相互接続ローミング(mobile interconnect roaming)を提供するためのステップを例示している。
【図18】
モバイル相互接続ローミング(mobile interconnect roaming)を提供するためのステップを例示している。
【図19A】
インターフェイスによって補助されたローミング処理を例示する一つのフローチャートを形成している。
【図19B】
インターフェイスによって補助されたローミング処理を例示する一つのフローチャートを形成している。
【図20】
インターフェイスによって補助されているローミングのトポロジ・ノード・データ構造を例示する。
【図21】
モビリティ管理システムのネットワークアドレスを、非接続ネットワーク・トポロジにおいてモバイル端末システムに配布する技術を例示している。
【図22】
図21の技術を、セキュアな通信を実現するために利用した例を示している。
【図23】
図21の技術を、分散型ネットワーク・インターフェイス・シナリオにおけるネットワークアドレスの変換に用いた例を示している。
【図24】
ポリシー管理テーブルを例示している。
【図25】
ポリシー管理処理のステップを例示したフローチャートである。
[Background of the Invention]
The present invention relates to connectivity between computer devices connected by a network. More particularly, the present invention relates to a method and a system for treating the characteristics of a nomadic system in a state of being transparent, and for ensuring that existing network applications operate in a corresponding mobile environment. More specifically, the present invention relates to a technology and a system that enable continuous data streams to be exchanged between devices such as handheld data units and personal computer devices that are intermittently connected.
[0001]
[Background and Abstract of the Invention]
In recent years, companies have come to recognize that quick access to important information is a way to stay competitive. For this reason, especially with the spread of inexpensive laptops and handheld computer devices, computer devices with intermittent connections, such as mobile devices, are rapidly becoming an important element of corporate networks. However, integrating these nomadic devices into the existing network infrastructure has been a headache for information managers at each company.
[0002]
Many of the problems associated with mobile networking are similar to those associated with building a local area network (LAN) prior to the advent of Ethernet. That is, since there are many types of mobile protocols and interfaces, and standards are still being established, there is no interoperability between different systems. Furthermore, communication using the above network technologies is usually slow and has a limited bandwidth, and the costs associated with updating are high due to the particularity of each system.
[0003]
In addition to these issues, mobile technology also has the following inherent problems. That is, when interconnecting with the main network, there is a case where the connection is made via a public network infrastructure. At this time, there is a risk that confidential information may be intercepted. Furthermore, if interconnected via wireless devices, confidential information would be "broadcast", so to speak, anyone with a similar interface would be able to intercept that information without much obstacles. I can do it.
[0004]
But perhaps even more important than the above, mobile networking has traditionally been limited to message-oriented or stateless applications, and has a client / server, host / terminal approach. It is not suitable for existing or new business applications using Web-based or file-sharing system models. This is because a typical business application requires not only stateless packet exchange but also a stateful session using a continuous data stream to operate effectively and reliably. .
[0005]
For this reason, most major commercial network applications require TCP / IP sessions or dedicated virtual circuits. Such sessions cannot function anymore if the network is interrupted, and roaming between networks (change of network address) is not possible when connected. Further, mobile networking is dynamic in nature and unreliable. Regarding these issues, the following considers some common situations in mobile networks.
[0006]
(Disconnected or out of service users)
When a mobile device is disconnected from a given network or loses contact with the network (ie, goes out of range of the wireless interconnect or enters a "hole" that the network does not cover), A running session-oriented application loses its stateful connection with its peer and stops working. When the device is re-attached or the device and network contact is restored, the user reconnects to the network and performs a re-login for security to identify where in the application the work was interrupted. If necessary, the lost data must be re-entered. Such a reconnection process is time consuming, expensive, and very frustrating for the user.
[0007]
(Move to another network or cross router boundaries (change of network address))
Mobile networks are typically segmented from a manageability standpoint, while mobile devices are roaming enabled for their use. Roaming between interconnected networks means that the network address is changed. If the network address is changed during the operation of the system, it is necessary to change the routing information in order to maintain the connection between the corresponding peers. Furthermore, in order to obtain a new network address, it may be necessary to terminate all sessions of the stateful application established up to that point, and the above-mentioned problem relating to the reconnection process also emerges here.
[0008]
(Security)
As mentioned, companies need to protect sensitive information. Many off-the-shelf applications have controlled access to the physical network (that is, performed using cables built inside secure facilities), and security requires additional authentication and possibly encryption. It is created on the assumption that it is retained through layers. However, in nomadic computing these assumptions are not self-evident. This is because there is a risk that data may be intercepted when passing through public radio waves or wired infrastructure.
[0009]
Therefore, there is a great need for an integrated solution that allows existing network applications to operate reliably in various mobile environments by making the characteristics of the nomadic system transparent. .
[0010]
The present invention solves the above problem by extending the corporate network so that network administrators can easily access mobile device users with the same applications as fixed device users. At the same time, it offers a consistent solution without losing reliability or centralized network management. The solution also supports existing network applications by adding the strengths of the previous wired networking standard to the evolving mobile networking standard.
[0011]
In one aspect of the non-limiting exemplary specific embodiment of the present invention, a mobility management server (MMS) connected to a mobile interconnect comprises a mobile terminal with an unlimited number of mobile terminals. It manages the state of each system (Mobile End Systems; MES) and manages the complex sessions required to maintain a continuous connection to the network and application processing at the peer. If a mobile terminal system goes out of range, suspends, or changes its network address (for example, by roaming from one mobile interconnect to another), the mobility management server will Maintain a connection between the system and a peer that corresponds to the system. In other words, the mobile terminal system keeps maintaining the virtual connection with the peer even though the physical connection is actually interrupted.
[0012]
Further, the non-limiting and specific embodiments of the present invention present the following (but not limited to) new and useful techniques and configurations.
[0013]
A mobility management server that gives session characteristics configurable by the user to the mobile client.
[0014]
-Manage mobile device policies on a per user basis with respect to network resource consumption.
[0015]
A roaming method that uses an industrial standard Dynamic Host Configuration Protocol (DHCP) in cooperation with a mobility management server.
[0016]
-Automatically remove unreliable datagrams from the system based on timeout conditions that can be set by the user.
[0017]
-Automatically remove unreliable datagrams from the system based on retry conditions that can be set by the user.
[0018]
More specifically, in an example of the preferred specific embodiment of the present invention, there is provided a mobility management server connected to the mobile interconnect network. The mobility management server maintains the state of each of the mobile terminal systems in an unlimited number, and provides a continuous connection to the network and other processing (eg, processing performed in other network-based peer systems). Manage complex sessions needed for maintenance. If a mobile terminal system goes out of range, suspends, or changes the network address (for example, by roaming from one mobile interconnect to another), the mobility management server will Recognizing the reception and waiting request of the system, it maintains the connection between the system and the corresponding peer. By operating the mobility management server as a proxy in this way, an application operating on the mobile terminal system can maintain a persistent connection even if the physical connection with a certain network medium is temporarily interrupted. Can be.
[0019]
In another example of the preferred embodiment of the present invention, the mobility management server manages an address for the mobile terminal system. Each mobile terminal system is assigned a proxy address on the primary network. This very versatile address is called the "virtual address" of the mobile terminal system. The mobility management server associates this virtual address with the current "location" address in the nomadic system. The location address of the mobile terminal system changes as the system moves between networks, but the virtual address is the same as the address, no matter which connection is active or the connection time is long. Is constant as long as is statically assigned.
[0020]
In yet another example of the preferred embodiment of the present invention, the mobility management server implements centralized management of the mobile terminal system by means of a console (control) application and comprehensive metrics. Furthermore, in a preferred embodiment, user-configurable session characteristics are implemented for mobile clients running on a proxy server, and policy settings of the mobile device are managed on a per-user basis with respect to consumption of network resources.
[0021]
Further, in one aspect, the remote procedure call (RPC) protocol (Remote Procedure Call protocol) and the Internet Mobility Protocol (Internet Mobility Protocol) are used for communication between the proxy server and each mobile terminal system. Used for establishment.
[0022]
The remote procedure call allows a local system to call a procedure in a remote system. Using the RPC protocol, the mobile terminal system disconnects, goes out of service, or suspends operation. Can be done without interrupting active network sessions. As described above, since session maintenance is not performed by a dedicated application, a commercially available application can be used in a nomadic environment without any change.
[0023]
The RPC protocol creates transactions into messages sent over standard network transport protocols and infrastructure. This RPC message contains the entire network transaction initiated by the application running on the mobile terminal system, thereby providing connection status information between the mobility management server and the mobile terminal system between them. It is possible to always synchronize even when the physical connection is interrupted. In the above embodiment of the present invention with RPC, the proxy server and the mobile terminal system provide sufficient information about the status of each transaction to manage a unified logical database for all shared connections at all times. Sharing.
[0024]
The Internet Mobility Protocol in the preferred embodiment of the present invention compensates for differences between wired local area networks and less reliable networks such as wireless LANs and WANs. By adjusting the frame size and the protocol timing, the performance is greatly improved and the traffic of the network is greatly reduced as compared with the communication not considering the mobile environment. This is especially important when bandwidth is limited or when battery life has to be taken into account. Furthermore, the Internet mobility protocol in the preferred embodiment of the present invention ensures the security of confidential data when transmission is performed between the mobile terminal system and the mobility management server through a public network or wirelessly. The Internet Mobility Protocol also acts as a basic firewall by allowing only authorized devices to access private networks. In addition, all communication between the mobile terminal system and the mobility management server can be authenticated and encrypted by the Internet mobility protocol.
[0025]
In yet another example of the preferred embodiment of the present invention, the mobile interconnect uses standard transport protocols (e.g., TCP / IP, UDP, etc.) to extend the scope of standard network application interfaces. / IP, DHCP, etc.). According to the preferred embodiment of the present invention, data transfer, security, address management, device management, and user management can be effectively integrated, and the nomadic environment can be effectively made transparent. The Internet Mobility Protocol multiplexes multiple data streams, both reliable and unreliable, over a standard network infrastructure over a single virtual channel provided by a standard transport protocol. Provide an effective way to
[0026]
Using the RPC layer, the Internet Mobility Protocol fuses data coming from different sources and destined for different or same destinations into a single data stream that is sent over the mobile link. At the opposite end of the mobile link, the data stream is demultiplexed into a plurality of different data streams, which are transmitted to their respective final destinations. This multiplexing / demultiplexing makes it possible to make maximum use of the available bandwidth (by generating network frames of the maximum size) and to establish multiple channels (thus priority) Ranking can be provided, and if the underlying network provides a data communication service, its quality could be guaranteed).
[0027]
The Internet mobility protocol according to the embodiment of the present invention further realizes the following features and advantages. The present invention is not limited to the following points.
[0028]
Transport protocol independence
The ability to change the point of presence (POP) or network infrastructure on the network without affecting data flow (only if there are no physical boundaries, policies, or bandwidth constraints)
・ Minimum additional costs
Automatic fragment resizing suitable for the transmission medium (when the protocol data units of a frame are larger than the maximum available transmission units of the network medium, the Internet Mobility Protocol fragments the frame; Rebuilding, which ensures that the frame is transmitted over the network, upon retransmission, the frame is checked again, and if the network infrastructure or environment has changed, It is re-fragmented or transmitted as a single frame when the upper limit of the transmission unit is actually raised.)
Keeps unreliable data semantics by causing frames to discard unreliable data during retransmission
Providing new semantics in reliable datagram services (this guarantees the transmission of datagrams to peer terminals by the Internet Mobility Protocol and informs the requesting entity of the transmission)
-Handles uplink and downlink transmission paths separately and automatically adjusts operation parameters to achieve optimal throughput (based on hysteresis, frame size / fragmentation threshold, number of waiting frames (window), Adjust parameters such as transmission time and delayed acknowledgment time to reduce the amount of duplicate data sent over the network).
[0029]
・ Resilience against network failure (Since use in a mobile environment is assumed, even if the connection between network media is temporarily disconnected, the virtual channel is disconnected or the application-based connection is disconnected. No)
Providing peers with in-band signaling to adjust operating parameters (Each connected terminal can alert its peers about changes in network topology or environment)
・ Adopts congestion avoidance algorithm and effectively attenuates throughput when necessary
-Selective acknowledgments and high-speed retransmissions limit the number of unnecessary retransmissions, speeding up handoff recovery in nomadic environments. (This allows the protocol to have optimal throughput even in a lossy network environment.) Maintain)
Adopting sliding window technology, which puts multiple frames in a standby state (this parameter is adjustable in each direction and given to stream frames up to a certain upper limit without the need for acknowledgment from peers)
・ Sequence numbers are non-byte oriented, so a single sequence number can represent up to the maximum payload size
・ Security measures (authentication layer and encryption layer can be added to Internet mobility protocol layer)
Compression ensures efficiency over limited bandwidth connections
・ Balanced design that both peers can move to new positions
-Connection to peer can be established from either side
-Pause timeout can be triggered to quickly destroy dormant connections and recover consumed resources
An arbitrary maximum duration can be set for the connection (for example, the connection can be terminated and / or rejected after a predetermined period of time or after a predetermined date and time).
[0030]
In a preferred specific embodiment of the invention, the consumption of network resources by a system administrator can be managed. For example, the system administrator can control at least one of the mobile terminal system and the mobility management server. The control in this case refers to, for example, management of network bandwidth and distribution of other resources, and security-related matters. Effectively, management is performed for clients that have a large number of resources on the client side. However, it is undesirable to impose additional code and processing for policy management on thin clients that do not have many resources. Therefore, it is considered that the most practical solution is to manage the thin client intensively by the mobility management server or the like, or to share a part thereof. Policy management is centralized by the mobility management server proxying each data stream of the mobile terminal system. Further, since the mobility management server performs proxy for each user, access to network resources can be managed and restricted for each user and each device.
[0031]
As a simple example, a mobility management server may “lock out” access to certain network resources by a particular user. This is very important given that the network of interfaces has been “extended” beyond the boundaries of the facility under the control of the organization by the mobile interconnect (eg, as previously described). (Suppose a former employee attempts to access the network of the workplace where he worked.) Beyond this, policy management by the mobility management server can provide even more benefits. For example, the mobility management server may make certain URLs accessible only to specific users, filter data returned by requests by network services, and compress data to conserve network bandwidth. It is possible. In this way, existing or new application-level services can be enhanced in a seamless and transparent manner.
[0032]
In addition, since the mobile terminal system is also connected to an “untrusted” network (that is, a network outside the control of the organization), a malicious cyber attack may occur during remote connection. Sharing policies and filters with the mobile terminal system enables the mobile terminal system to be protected from malicious connections, ingress filtering at remote nodes, and further security for centralized management of enterprise infrastructure. Become.
[0033]
In another example of an embodiment of the present invention, an interface assisted roaming listener enables a mobile terminal system to perform an interface assisted roaming using an interface that supports general signaling. Becomes possible. In one aspect of the exemplary embodiment of the present invention, the interface-based listener of the mobile terminal system allows the mobile terminal system to perform a mobile event upon a predetermined event (e.g., callback, timer timeout, network activity indicating data loss, etc.). It is determined whether or not the connection state of the medium of the terminal system has changed. This means, for example, that the listener detects that the mobile terminal system has been disconnected and is no longer able to communicate with the network, and indicates this to the interface. At the time of reconnection, the listener refers to the network point in the connection identification information (attachment identification information) recorded in advance, and determines whether the mobile terminal system has been reconnected to the same network point. If the reconnection was to the same network point, the listener alerts the mobile client to proceed with re-establishing communication at the transport level. If the reconnection has been made to another network point, the listener indicates that the mobile terminal system is in a "roaming" state and causes the system to obtain an address available on the current network segment. (This may include, for example, registering the current address to be valid in the new subnet). The listener maintains a map of the network topology (learned through operations) to help determine the suitability of signals generated for that client ("roaming on the same subnet", "roaming", etc.). Is also good.
[0034]
In another example of the non-limiting preferred embodiment of the present invention, the mobility management server (MMS) can be accessed in a "disconnected networking" mode. This new algorithm allows an alternative network to be used to establish / persistent communication with the MMS, even in disconnected network topologies where one network infrastructure does not know the network address in another network infrastructure. Addresses can be found dynamically / statically. With this configuration, a list of alternative addresses available to the MMS is preset and sent to the MES (mobile terminal system) during communication or dynamically learned by the MES. In one embodiment, the MMS may send the MES one or more MMS network addresses or other MMS identities corresponding to other networks by communication over a single network. The list can be sent / updated at the time of circuit construction or any other time during connection establishment.
[0035]
As the MES moves to another network, the MES uses the MMS's "alias" address / identity list to contact the MMS through a new network connection in that network. This allows the MES to re-establish contact with the MMS through a new network connection even if the pre-move and post-move networks do not share addresses, routes, or other information.
[0036]
In yet another example of the embodiment of the present invention, the decision on policy management is made inside a distributed mobile network topology, for example, where a rule-based policy management procedure is used to request based on various metrics. Allow, reject, or restrict performance. Such a management form is used, for example, when making a decision based on cost metrics such as minimum cost routing in a multihome / path environment.
[0037]
In such a policy management technique, matters relating to mobility or location acquisition (that is, roaming) may be taken into account when making a decision. For example, management rules may be determined based on the location of the device (eg, which connection point of the network, eg, which access point / base station, hub, router, GPS coordinates, etc.), so that certain operations may be For example, it may be allowed in one building but not in another. For example, this configuration may be useful for a company that uses a plurality of different wireless networks. In such a company, for example, a loading dock and an office may be connected by a wireless network. The system administrator can prevent employees (e.g., users and devices) at the loading dock from accessing the wireless network in the office environment. In addition, policy management can result in one of three states: allow, deny, or delay (e.g., if the decision is made based on bandwidth or cost, the operation may be more appropriate). Is delayed until the right time comes).
[0038]
In the policy management in the above embodiment, the operation can be changed based on the determination. One example of an action is to reduce bandwidth consumption by all active applications. Also, for example, when there is a specific application that consumes a significant amount of bandwidth, a policy engine can manage the speed of completion of an operation / transaction by the application. This operation may dynamically learn to suppress the operation of the wrong application. Another example of an action is data recovery (e.g., dithering a graphic image based on available / allowed bandwidth and cost, and user restrictions).
[0039]
Furthermore, the rules engine fires other actions based on the rule evaluation. External procedures may be performed, such as logging an event, issuing an alert, or notifying a user that an action has been denied, delayed, or conditioned. Notifications such as these may be interactive, such that an operator may be required to override an existing rule.
[0040]
In the policy management engine in the above embodiment, the decision is made based on any number or combination of metrics associated with a device, a group of devices, a user group, a user, or a network connection point. It may be done.
[0041]
Other local-based information and services may be obtained / provided for policy management, network modeling, and / or asset tracking as part of the policy management function. Such a service includes a function of automatically providing information related to the current position of the mobile terminal system to the user or the mobile terminal system. The information may be provided in a message, file, or other electronic format.
[0042]
Non-limiting examples of use of this function include shopping mall operators, various industry groups, and large-scale retailers, who are installing Bluetooth PAN, IEEE 802.11 LAN, 802.15 PAN, and other wireless network standards on shopping centers. In some cases, wireless access points are strategically provided. In this case, the shop near the current location of the mobile terminal system can present information to the customer as the customer roams around the center. This information includes information on sales, discounts, benefits, and the like. In addition, an electronic coupon for sales promotion may be supplied to the mobile terminal system. Stores will register such services with mall management, industry associations, retailers, or other centralized administrations of service providers.
[0043]
Other non-limiting examples of where the above technology can be used include in the vertical industry, such as on-site services, door-to-door sales, home delivery, etc., to collect information based on location, community services, maps, directions, customers, accidents and other public services. Is sent to the mobile terminal system based on the location.
[0044]
Yet another non-limiting example is a web-based service for monitoring and tracking mobile terminal systems. For example, a customer registers with the tracking service, and a trusted third party logs on to a hosted web service to identify the exact location of the customer's mobile terminal system. In this case, the mobile terminal system may be provided in a vehicle or may be carried by a pedestrian. Such services are becoming more and more realistic as mobile terminal systems become smaller and lighter. By using the service, it is possible to track and confirm the location of high-risk people, for example, the elderly, the disabled, and the sick. The service can also be used to track automobiles and other expensive personal property and luggage. The above service is extremely low by utilizing a characteristic that 3G WAN network, Bluetooth network, 802.11 network and other wireless technologies can be used to maintain seamless connectivity even when switching network media and connection points. It can be implemented at cost.
[0045]
Thus, the present invention extends the corporate network and allows network administrators to provide users of mobile terminals with easy access to applications on fixed terminals without sacrificing reliability or centralized management. It is possible to provide as in the case of the user. The solution combines the strengths of existing wired network standards with the mobility standards that are in the process of being created, creating a solution that can run on existing network applications.
[0046]
Other objects, features and advantages of the present invention will be more fully understood from the following description. Also, the advantages of the present invention will become apparent in the following description with reference to the drawings.
[0047]
[Detailed description of preferred embodiments]
FIG. 1 illustrates a mobile enhanced network computer system 100 of the present invention. The network computer system 100 includes a mobility management server 102 and one or more mobile terminal systems 104. The mobile terminal system 104 can communicate with the mobility management server 102 through a local area network (LAN) 108. The mobility management server 102 functions as a network-level proxy of the mobile terminal system 104. The mobility management server 102 manages the state of each mobile terminal system, and communicates between the mobility management server 102 and the mobile terminal system 104 with any peer system 110 hosting the network application. This is accomplished by performing the complex session management necessary to maintain a constant connection, even if the connection is intermittent and unreliable. In the preferred embodiment, the mobility management server 102 communicates with the mobile terminal system 104 using the remote procedure call protocol and the Internet mobility protocol of the present invention.
[0048]
In this case, the mobile terminal system 104 is actively connected to the mobility management server 102, but the connection is not always active. For example,
-A plurality of mobile terminal systems 104a-104k communicate with the mobility management server 102 via a mobile interconnect (in this case wireless). As an example, a conventional electromagnetic (radio wave) transceiver 106 may be wirelessly (or wired) connected to a local or wide area network 108. The mobile interconnection as described above allows the mobile terminal systems 104a-104k to roam from one cover area 107a to another. Typically, the mobile terminal system 104 roams from one coverage area 107 to another, goes out of reach from the nearest transceiver 106, or temporarily blocks signals (eg, behind a building pillar). , Etc.), the communication is temporarily disconnected.
[0049]
Communicate with the mobility management server 102 via a non-permanent wired interconnect 109 such as a docking port or a network cable connector. The mobile terminal system 104 is temporarily disconnected from the LAN 108 when the connection 109 is disconnected or the power of the mobile terminal system 104 is turned off.
[0050]
-Yet another mobile terminal system (e.g., 104n) is nomadically connected to the mobility management server 102 via a network topography 111 such as a wide area network, a dial-up network, a satellite network, or the Internet. As an example, the services of the network 111 may be intermittent, and as another example, the mobile terminal system 104 may move from one type of connection to another (eg, the mobility management server 102 The state may be changed from a state of connection through the wired interconnect 109 to a state of connection through the network 111, or vice versa, and the connection may be temporarily disconnected at the time of the shift.
[0051]
The mobile terminal system 104 may be a standard mobile device or a commercially available computer, for example, the mobile terminal system 104 may be configured with a laptop computer with a commercially available transceiver and / or network card. The mobile terminal system 104 executes standard network applications and a standard OS (operating system), and communicates at a transport layer using a standard transport level protocol (eg, TCP / IP). May be performed. In the present invention, the mobile terminal system 104 also executes client software to enable communication with the mobility management server 102 using the remote procedure call protocol and the Internet mobility protocol. Both protocols are transmitted using the same transport level protocols.
[0052]
The mobility management server 102 may include software hosted by a standard server, such as a Windows NT server. In the preferred embodiment, the mobility management server 102 is a client / server intelligent server that conforms to the standard, and extends the corporate network 108 to a nomadic environment with transparency. The mobility management server 102 functions as a proxy at the network level of each of the unlimited number of mobile terminal systems 104, and the mobility management server 102 manages the state of each mobile terminal system, and Necessary for any peer system 110 hosting the application to maintain a constant connection, even if the mobile interconnect between mobile terminal system 104 and transceiver 106 is intermittent and unreliable And complex session management.
[0053]
For example, the server 102 can execute any standard (eg, TCP / IP based) network application over a mobile connection without modification. The session of the mobile terminal system 104 whose connection is disconnected, goes out of service, or suspends the operation is maintained by the server 102, and when the system returns, the server 102 resumes the session. If the mobile terminal system 104 goes out of service, shuts down, or changes the location address, the mobility management server 102 acknowledges the reception of the data and makes a request until the mobile terminal system can communicate again. The waiting maintains the connection between the mobile terminal system and the peer system 110.
[0054]
The server 102 also extends management capabilities in a wired network to mobile connections. Since each network software layer operates independently of the others, it is possible to customize the solution to the respective environment in which it is deployed.
[0055]
As an example, the mobility management server 102 is connected to a standard enterprise network 108, such as a local area network or a wide area network, which may be connected to various fixed terminal systems (eg, one or more host computers 110). ) 110 may be connected. The mobility management server 102 enables communication using a continuous session type data stream between the mobile terminal system 104 and the fixed terminal system 110, and the communication is performed by the network to which the mobile terminal system 104 is connected. Losing contact with the interconnect or moving from one network interconnect 106, 109, 111 to another (eg, in the case of a wireless interconnect, from the coverage area 107 of one wireless transceiver 106) Roaming to another coverage area) and still be available.
[0056]
The mobile terminal system 104 establishes a connection with the mobility management server 102 at startup or when the mobile terminal system requests a network service. Once the connection has been established, the mobile terminal system 104 can initiate one or more network application sessions, either sequentially or simultaneously. By establishing the connection between the mobile terminal system 104 and the mobility management server 102, even if the mobile terminal system is disconnected, goes out of service, or is suspended, an application session in the mobile terminal system is maintained, and the mobile terminal system is maintained. At the time of return, the session can be resumed. In the preferred embodiment, the above process is completely automatic and requires no user intervention.
[0057]
In one example of the present invention, mobile terminal system 104 communicates with mobility management server 102 using a standard transport protocol such as UDP / IP. Using a standard transport protocol allows the mobile terminal system 104 to communicate with the mobility management server 102 using the existing infrastructure of the enterprise network 108, such as a standard router 112. In the present invention, a high-level remote procedure call protocol generates a transaction over the mobile enhancement network 108 into a message sent using a standard transport protocol. In the presently preferred embodiment, the mobile RPC message as described above includes all network transactions initiated by the application executed on the mobile terminal system 104, and thus is completed by the mobility management server 102. be able to. Thereby, the mobility management server 102 and the mobile terminal system 104 can always keep the connection state information synchronized with each other even when the connectivity of the network medium is hindered.
[0058]
Each of the mobile terminal systems 104 executes a mobility management software client that intercepts all network activity and provides information to the mobile terminal system itself to relay the network activity to the mobility management server 102 via the mobile RPC protocol. In the preferred embodiment, the mobility management client is an OS (Windows (registered trademark) NT, Windows (registered trademark) 98, Windows (registered trademark) 95, Windows (registered trademark) CE installed in the mobile terminal system 104. Etc.) in a transparent manner to continue to maintain the application session on the client side even if contact with the network is lost.
[0059]
The mobility management server 102 manages the state of each mobile terminal system 104 to maintain a continuous connection with a peer 108 of the communication partner, such as a host computer 110 connected to the other end of the connection. Performs complex session management required for If the communication with the mobile terminal system 104 becomes unavailable, the mobile terminal system 104 suspends, or changes the network address (eg, roams from one network interconnect to another), the mobility management server 102 Maintains the connection between the mobile terminal system 104 and the connection end, such as the host system 110, by acknowledging data reception or awaiting requests. This proxy function prevents the peer application from detecting that the physical connection with the mobile terminal system 104 has been lost. Thus, if the mobile terminal system temporarily loses connection or roams from one network interconnect 106A to another network interconnect 106K within a certain coverage area 107K, the (physical connection is re-established) By simply resuming work when done, a continuous connection between the application of the mobile terminal system 104 and the end performing the combined session can be effectively maintained.
[0060]
The mobility management server 102 can also manage addresses to solve the problem of receiving different network addresses when the mobile terminal system 104 roams various parts of a segmented network. I have. Each mobile terminal system 104 has a virtual address on the primary network. The virtual address is determined by a standard protocol or by static assignment. For each mobile terminal system 104, the mobility management server 102 assigns a virtual address corresponding to the actual (location) address in the current state of the system. As the mobile terminal system 104 moves from one network segment to another, as the current location address of the system 104 changes, the virtual address is the connection time regardless of which connection is active. Is long as long as the address is statically assigned.
[0061]
Thus, a change in the location address of the mobile terminal system 104 is made completely transparent from the end of the session at the associated host system 110 (and other peers) via the mobility management server 102. Has become. What the peer 110 sees is only the (unchanged) virtual address proxied by the server 102.
[0062]
In the presently preferred embodiment, the mobility management server 102 is also capable of centralized system management with console (control) applications and comprehensive metrics. System administrators can use the tools described above to set up and manage remote connections and solve problems with remote connections and systems.
[0063]
The proxy server function of the mobility management server 102 allows different priority levels to be set for network applications, users, and devices. This is useful in view of the fact that the mobility management server 102 has limited processing resources. The ability of the system administrator to change the settings of the mobility management server 102 as described above improves overall system and network performance. As an example, the ability of a system administrator to change the settings of the mobility management server 102 can reduce the resources of the mobility management server 102 for real-time applications such as audio and video streaming, such as mail software that uses less resources. Can be allocated more than a simple application.
[0064]
More specifically, the mobility management server 102 is configured through an application or an application interface such as a standard network management protocol such as SNMP, a web-based configuration interface, or a local user interface. It is also possible to set the priority of the association itself and / or the priority of multiple applications in a certain association. For example, the priority of each connection associated with another connection operating via the mobility management server 102 can be set for each user or device (in the present embodiment, both the user and the device to which the user has logged in) Is set to be prioritized, the setting relating to the user may be set to be given higher priority). Alternatively, for each connection, several levels may be set for the application priority for each network application. In this system, any number of priority levels can be set. As an example, an example in which three priority levels of low, medium, and high are set can be considered.
[0065]
(Example of server / client type software architecture)
FIG. 2 illustrates an example of a software architecture of the mobile terminal system 104 and the mobility management server 102. In one example of the present invention, the mobile terminal system 104 and the mobility management server 102 run standard OS and application software, but are intermittently connected with only a few new components added. Reliable, effective, and persistent sessions can be performed over the mobile network 108. As shown in FIG. 2, the mobile terminal system 104 includes a network interface driver 200, a TCP / UDP transport support 202, a transport driver interface (TDI) 204, and one or more conventional network applications. Executes conventional OS software, including a socket API 206 used as an interface to 208. A conventional network file / print service 210 may be further provided for communication with the conventional TDI 204. The server 102 includes a conventional network interface driver 200 ', TCP / UDP transport support 202', a transport driver interface (TDI) 204 ', and one or more conventional networks, similar to those described above. • It may have a socket API 206 'used as an interface to the application 208'. The mobile terminal system 104 and the mobility management server 102 may each further include a network / security provider 236 (mobile terminal system) and a user / security database 238 (server).
[0066]
In the present invention, a new mobile interceptor component 212 is inserted between the TCP / UDP transport module 202 and the transport driver interface (TDI) 204 in the mobile terminal system 104 software architecture. . The mobile interceptor component 212 intercepts a particular call on the transport driver interface (TDI) 204 and passes the call over the network 108 via RPC and Internet mobility protocols, standard TCP / IP. The data is transferred to the mobility management server 102 through the IP transport protocol. Thus, the mobile interceptor 212 can intercept and forward all network activity to the server 102. Because the interceptor 212 cooperates transparently with the OS, the client-side application session can remain active even if the mobile terminal system 104 loses contact with the network 108.
[0067]
The mobile interceptor 212 may operate at a different level than the transport driver interface 204 (eg, at the socket API 206 level), but the mobile interceptor 212 operates at the TDI level, and more specifically, Operating on such a transport protocol interface provides the following advantages. For the sake of convenience, everything that indicates the transport driver interface is represented by the abbreviation TDI. Many standard operating systems (eg, Microsoft® Windows® 95, Windows® 98, Windows® NT, Windows® CE, etc.) implement the TDI interface 204. Therefore, compatibility is guaranteed without changing the components of the OS. Furthermore, since the transport driver interface 204 is usually a kernel-level interface, there is no need to switch to user mode, which can improve performance.
[0068]
In addition, the mobile interceptor 212, which operates at the level of the TDI interface 204, provides various other network applications 208 (eg, multiple concurrently running applications) as well as files, prints, and other kernel applications in the network. Services 210 such as modes (interceptors operating at the level of the socket API 206, for example, need to be treated separately) can be intercepted.
[0069]
FIG. 2A shows an example of a high-level flowchart showing how the interceptor 212 operates. A call to the TDI interface 204 of the mobile terminal system 104 (block 250) is intercepted by the mobile interceptor 212 (block 252). The RPC call intercepted by the mobile interceptor 212 is packaged into fragments in accordance with the Internet Mobility Protocol, and the fragments are converted into datagrams using standard transport protocols such as UDP and TCP, LAN, WAN, etc. To the mobility management server 102 over the transport 108 (block 252). The mobility management server 102 unpacks the received RPC datagram (block 254) and performs the requested service (e.g., by transferring the data and response to an application server process running on the fixed terminal system 110). , Acting as a proxy for the application 208 of the mobile terminal system).
[0070]
Returning again to FIG. 2, the mobility management server 102 intercepts messages sent to or from the mobile terminal system 104 sent via the conventional network interface driver 222, the address translator. 220. For example, the address conversion unit 220 recognizes a message addressed to the virtual address of the mobile terminal system 104 from the peer (fixed terminal system 110) of the session partner. The message to the mobile terminal system is sent to the proxy server 224. Proxy server 224 assigns the virtual address and the message to the waiting transaction and forwards the response to the mobile terminal system 104's current location address.
[0071]
Further, according to FIG. 2, the mobility management server 102 has a setting manager 228, an operation / user interface 230, and a monitor 232 in addition to the address translation unit (intermediate driver) 220 and the proxy server 224. The configuration manager 228 provides configuration information and parameters to allow the proxy server 224 to manage the connection. Operation / user interface 230 and monitor 232 allow interaction between the user and proxy server 224.
[0072]
(Mobile interceptor)
FIG. 3 shows an example of the software architecture of the mobile interceptor 212 that supports the RPC protocol and the Internet mobility protocol of the present invention. In this example, the mobile interceptor 212 has two functional components: a remote procedure call protocol engine 240 and an internet mobility protocol engine 244. A corresponding engine 240 ', 244' is provided by the proxy server 224 operating in the mobility management server 102.
[0073]
Thus, the mobile interceptor 212 in the preferred embodiment supports the remote procedure call protocol and the Internet mobility protocol for connecting the mobility management server 102 with each mobile terminal system 104. I have. A remote procedure call allows a local system to invoke a procedure on another system that is remote. Generally, the local system is unaware that a procedure call has been executed on the remote system. The use of the RPC protocol allows the mobile terminal system 104 to go out of range and suspend operation without losing an active network session. Since no special application is required to maintain the session, commercial applications will operate without any changes in the network 108 in the mobile environment.
[0074]
Network applications typically utilize application-level interfaces, such as Windows sockets. A single call to an application-level API generates multiple transmitted and received data packets at the transport or media access layer. In a preferred mobile network, if one of the above packets is lost, the session will be aborted due to the unstable state of the entire connection, but a preferred embodiment of the present invention comprises RPC. The mobility management server 102 and the mobile terminal system 104 share information about the connection state in order to always maintain a unified logical link even when the physical connection is broken.
[0075]
The Internet Mobility Protocol of the present invention compensates for differences between wired networks and other less reliable networks such as wireless. Modifying the frame size and protocol timing can significantly improve performance and significantly reduce network traffic as compared to transports that do not consider the mobile environment. This is important when bandwidth is limited or battery life is a concern.
[0076]
The Internet Mobility Protocol of the present invention also guarantees the security of confidential information when communication between the mobility management server 102 and the mobile terminal system 104 is made through a public wired network or wirelessly. The Internet Mobility Protocol acts as a basic firewall by allowing only authorized devices to access the corporate network. The Internet Mobility Protocol of the present invention further allows all communications between the mobility management server 102 and the mobile terminal system 104 to be authenticated and encrypted.
[0077]
The remote procedure call protocol engine 240 in the mobile terminal system 104 of FIG. 3 marshals the TDI call parameters, formats the data, and executes the request, with the TDI remote procedure call protocol engine 240 'executing the call. Sent to Internet Mobility Protocol Engine 244 for transfer to mobility management server 102. The mobile terminal system 104 marshals TDI call parameters based on a remote procedure call protocol. When the TDI remote procedure call protocol engine 240 'of the mobility management server 102 receives the above RPC, the mobility management server 102 executes the call on behalf of the mobile terminal system 104. The TDI remote procedure call protocol engine 240 'of the mobility management server 102 shares the complete network state in each connected mobile terminal system with the RPC engine 240 of the peer mobile terminal system 104. In addition to executing remote procedure calls on behalf of the mobile terminal system 104, the server's RPC engine 240 'supports system flow management, remote procedure call analysis, and virtual address (services performed by the address translation mechanism 220). ) Perform multiplexing, transaction prioritization of remote procedure calls, scheduling, policy enforcement, and coalescing.
[0078]
The Internet Mobility Protocol Engine 244 provides reliable datagram services, ranking, fragmentation, and message reassembly. If set, it can also perform authentication, data encryption, enhanced privacy protection, security, and compression for throughput. The Internet Mobility Protocol Engine 244 is designed to operate using a plurality of different transports in environments where power consumption needs to be taken into account, so that it is power management conscious and , Independent of each transport.
[0079]
FIG. 3A illustrates a process in which the mobile interceptor 212 communicates with the mobility management server 102 to exchange a TDI call. In general, the RPC protocol engine 240 of the mobile interceptor 212 forwards the marshalled TDI call to the internet mobility protocol engine 244 for delivery to the mobility management server 102. The RPC protocol engine 240 accomplishes this task by adding an RPC call to a queue managed by the Internet Mobility Protocol Engine 244 (block 302). To facilitate bandwidth management, Internet Mobility Protocol Engine 244 delays the transfer of received RPC calls for a predetermined period (RPC convergence timeout period) (block 304). Typically, the RPC fusion timeout is set between 5 and 15 milliseconds, but this number can be changed by the user. This delay allows RPC engine 240 to add the TDI call to the queue of Internet Mobility Protocol Engine 244 so that one or more RPC calls are forwarded by the same datagram (fragment).
[0080]
If the fusion timeout expires or the RPC engine 240 decides to reject further RPC calls (decision block 306), the RPC engine 240 flushes the queue to the Internet Mobility Protocol engine 244 ( flush), fusing the RPC call into a single frame and requesting that frame be forwarded to the peer (block 308). This fusion reduces the number of transmissions and increases the performance of the protocol. However, the Internet Mobility Protocol must also flush the queue 244 based on other external criteria for performance optimization, and in the preferred embodiment, a single RPC request occupies the entire frame. If so, the IMP layer automatically attempts to send a request to the peer.
[0081]
As described above, the proxy server of the mobility management server 102 has the RPC protocol engine 240 'and the Internet mobility protocol engine 244'. FIG. 3B illustrates a process executed by the mobility management server 102 when receiving the Internet Mobility Protocol message frame from the mobile terminal system 104. When the mobility management server 102 receives the frame, the Internet Mobility Protocol Engine 244 'reassembles the frame if it is fragmented (subject to the maximum transport of the underlying transport) and reconstructs the message. The content is demultiplexed to determine which mobile terminal system 104 to receive from. This demultiplexing allows the Internet Mobility Protocol Engine 244 'to communicate the proper association-specific context information to the Remote Procedure Call Protocol Engine 240'.
[0082]
Subsequently, the Internet mobility protocol engine 244 'converts the received message into an RPC receive indication system work request 354, and converts the work request and the binding-related context information into a mobility management server. 102 RPC protocol engine 240 '. When the RPC protocol engine 240 ′ receives the work request 352, the engine 240 ′ adds the work request 352 to the binding related work queue 356 and then schedules the binding process by sending the scheduled request to the global queue 358. Is performed. Subsequently, the main work thread of the RPC engine 240 'is notified that the work can be executed. When the main thread starts working, the global queue 358 is polled to confirm the scheduled join process that is waiting. Thereafter, the main thread removes the event from the waiting state, and the connection-related work queue 356 is processed.
[0083]
From the join-related work queue 356, the main thread finds the RPC reception suggestion work request that has been waiting until then. Next, the main thread removes the RPC reception suggestion work request 356 from the queue and analyzes the request. By the fusion process described with reference to FIG. 3A, the mobility management server 102 frequently receives a plurality of RPC transactions included in each datagram. The mobility management server 102 then demultiplexes each of the RPC transactions back into a separate remote procedure call and performs the requested function on behalf of the mobile terminal system 104. To improve performance, the RPC engine 240 'is provided with a look-ahead mechanism during the RPC message parsing process to determine if the RPC engine 240' can execute some of the requested transactions simultaneously (pipelining May be confirmed).
[0084]
(Method of executing RPC combination by RPC engine 240 ')
FIG. 4 is a flowchart illustrating a process of executing the RPC combination added to the combination work queue 356. When the execution of the RPC binding is scheduled, the main thread of the RPC protocol engine 240 ′ (which may be provided as a state machine) removes the work request from the global network queue 358 from the waiting state, and Determine the type.
[0085]
The RPC work requests according to the present embodiment are classified into the following six basic types.
[0086]
-Scheduling request (schedule request)
・ Connection suggestion
・ Disconnect suggestion
-Local terminating association
・ "Resource available" request ("resource available" request)
-Ping inactivity timeout
The RPC protocol engine 240 'handles the various types of requests described above in different ways. RPC protocol engine 240 'tests the type of request (identified by information about the request stored in global queue 358) to determine how to handle the request.
[0087]
If the type of work request is "scheduling request" (decision block 360), the RPC protocol engine 240 'determines which combination is scheduled (block 362). The RPC protocol engine 240 'can make this determination based on information stored in the global queue 358. When the above determination is made, the RPC protocol engine 240 'can specify one of the combined work queues 356 (1) to 356 (n) each storing the corresponding request. . The RPC engine 240 'obtains the corresponding binding control block (block 362) and invokes the process association work task 364 to begin processing the work in the identified work queue 356 described above. .
[0088]
FIG. 5 illustrates the steps performed by the “join work process” task 364 of FIG. When a join is identified, a "join work process" task 364 is invoked to process the work in the corresponding join work queue 356. If the work request removed from the waiting state (block 390) is an RPC receive request (decision block 392), the RPC receive request is sent to an RPC parser (block 394) for processing (block 394). Alternatively, if the work request removed from the waiting state (block 390) is a pending receive request (decision block 396), the RPC engine 240 'sends the data to the TDI 204' instead of the connection by the application. Request to begin receiving (block 398). If the work request removed from the waiting state is a pending connection request (decision block 400), the RPC engine 240 'issues an application-specific TCP (or other transport protocol) connection request to the TDI 204'. Request (block 402) and wait for a response from the TDI layer 204 '. Upon completion of the request by TDI 204 ', the status of the request is determined and a report is returned to the original requesting entity. To improve performance, the RPC engine 240 'may process the connection request multiple times by returning the request to the binding-related work queue (356) before notifying the requesting peer of the error. It may be. This process is also to reduce network bandwidth and resource consumption.
[0089]
The above process is repeated until the "scheduling weight complete" test (block 404) is passed. In this example, the scheduling weights are used to determine how many work requests are taken out of the wait state and how much of the particular combination is processed. The scheduling weight is a parameter set by the configuration manager 228 and is obtained when a coupled connection suggestion is detected (FIG. 4, block 372). This numerical value can be set for each user or for each device in a physical sense.
[0090]
After the RPC engine completes (at least temporarily) work on the combined work queue 356, it may move on to dispatch queue processing (block 406) (details below). After processing the work in the join work queue 356, the RPC engine 240 'issues a new scheduling request to the global work queue 358 to reschedule the later executed join (decision block 366, FIG. 4). Block 368, decision block 408, block 410 of FIG. 5).
[0091]
Referring again to FIG. 4, if the RPC work request is a "connection suggestion" (decision block 370), the RPC engine 240 'will provide a new connection with the mobile peer (typically, but not limited to the mobile terminal system 104). There is a request to create an instance of the connection. As an example, the connection suggestion provides RPC engine 240 'with the following information about the device of the peer that is initiating the connection.
[0092]
.Physical identifier of the device
・ User name logged in to the device
The address of the peer device
Additional connection data from peer RPC engine 240
Upon receiving the connection suggestion (decision block 370), the RPC engine 240 calls the configuration manager 228 with the above parameters. The setting manager 228 determines the setting of the new connection using the parameters. This setting (for example, a combined scheduling weight or a list of all applications requiring non-default scheduling characteristics in addition to the above) is returned to the RPC engine 240 'and stored and executed. The RPC engine 240 'then initiates a new join and forms a new join control block (block 372). As shown in FIG. 5A, the following operation may be performed.
[0093]
Allocate a coupling control block (block 372A)
Initialize the resources of the entire system to the default (block 372B)
Override current settings (block 372C)
Initialize the flag (block 372D)
Initialize the join specific work queue (block 372E)
Initialize the object hash table for the join (block 372F)
Initialize the fusion timer (block 372G)
Insert a join control block into the session table (block 372H)
If the Internet Mobility Protocol Engine 244 'determines that the binding must be terminated, a "disconnect indication" is issued from the Internet Mobility Protocol Engine 244' to the RPC engine 240 '. The RPC engine 240 'tests this disconnect suggestion (block 374), stops binding in response to the suggestion, and discards the bind control block (block 376). As shown in FIG. 5B, the following steps may be performed.
[0094]
Mark the join to be stopped so that pending work is not processed further (block 376A)
Close all joined objects, including processing (block 376B)
Release all elements in the work queue (block 376C)
Stop if the fusion timer is running (block 376D)
Decrement the reference count of the join control block (block 376E)
If the reference count is 0 (tested at block 376F)
-Discard the join-related work queue,
Destroy the object hash table,
-Discard the fusion timer,
・ Remove the join control block from the join table,
-Release the control block (376G)
When the system 102 recognizes the need to terminate the connection, a "session abort" request is issued. This request is issued from a system administrator, an OS, or an application. The RPC engine 240 'treats the session abort request in the same way as the disconnect indication (decision block 378, block 376).
[0095]
In the preferred embodiment, the interface between the RPC engine 240 'and the Internet Mobility Protocol engine 244' specifies a flow control mechanism based on credits. Each time a single thread notifies another thread of a work request, the called thread returns to the number of credits remaining in the work queue. If the queue is full, the credit count will be zero, but by convention, the calling thread will not send any more work notifications if the credit count is zero. Thus, a queue that can be set by the user or a predetermined low-water mark is given to the calling thread to inform that the work that has been waiting has been processed and resources have been made available. Such a configuration is required. This is why a "resource available" work suggestion is provided (tested at decision block 380). As shown in FIG. 5C, when the credit count becomes 0, the following steps may be executed.
[0096]
Set the RPC_LMPQ_SEND_FLAG to mark the join as "low mark pending" (block 379A). When this happens,
Discard all datagrams received (block 379B)
Reject data reception and suppress all received stream events (block 379C) (this will eventually close the TCP and other transport reception windows and cause the fixed terminal system 110 and the mobility management server 102 to Before returning, the preferred embodiment pushes a "pending receive request" in front of the binding-related work queue 356, thus handling pending stream reception events (outstanding). stream receive event processing is continued as soon as resources become available).
[0097]
-All received connection events are rejected due to passive connection (block 379D)
When the "resource available" indication is received by the RPC engine 240 '(FIG. 4, decision block 380), the RPC engine determines whether there is work waiting in the combined work queue 356. If so, the RPC engine notifies the global work queue 358 about the join and marks the join work queue 356 as having priority for operation (block 382). If a pending receive request is signaled during a period when the binding is in the pending receive request state, it will be processed during this period (in the preferred embodiment, the RPC engine 240 'will receive all received Accept connection request).
[0098]
Referring again to FIG. 4, if the RPC engine 240 'determines that the channel used for "ping" the mobility management server 102 has been idle for a predetermined period of time (decision block 384), the channel is closed, The resources are released back to the system and used for other processing (block 386).
[0099]
(RPC parsing and priority queue)
Referring again to FIG. 5, it was mentioned above that the RPC engine parses the RPC receive request upon receiving it (see blocks 392, 394). In the presently preferred embodiment, parsing is required in the following respects. That is, a single received datagram may contain multiple RPC calls, and the RPC call may be spread over multiple fragments in an Internet Mobility Protocol datagram. Because there is. FIG. 6 shows an example of the format of the RPC reception work request 500. Each RPC receive work request has at least a main fragment 502 (1) and may also have any number of additional fragments 502 (2) -502 (N). The main fragment 502 (1) has a work request structure header 503 and a reception overlay 504. The reception overlay 504 is a reception overlay provided at the head of the main fragment 502 (1) by the Internet Mobility Protocol Engine 244. This receive overlay 504 has a structure member called p-user data that points to the first RPC call 506 (1) in the work request 500.
[0100]
In the example of FIG. 6, a work request 500 including a plurality of RPC calls 506 (1), 506 (2)... 506 (8) is illustrated. As shown in the example of FIG. 6, the RPC work request 500 may not be included in an adjacent block of memory or in a single fragment 502. In this example, the second fragment 502 (2) and the third fragment 502 (3) are linked to the main fragment 502 (1) in a linked list.
[0101]
Therefore, the RPC parser 394 in the above example handles the following boundary conditions.
[0102]
-Each RPC receive request 500 may include one or more RPC calls
One or more RPC calls 506 may be present in a single fragment 502
-Each RPC call 506 may be completely included in fragment 502
-Each RPC call 506 may span one or more fragments 502
FIG. 7 illustrates an RPC syntax analysis unit 394 that analyzes the RPC reception work request 500. In this example, the RPC parsing unit 394 acquires the first fragment 502 (1) in the work request, acquires the first RPC call 506 (1) in the fragment, and analyzes the RPC call. The syntax analysis unit 394 proceeds in the RPC reception work request 500 and processes each RPC call 506. When the number of remaining fragment bytes of the fragment 502 (1) of the RPC reception work request 500 is larger than the size of the RPC header 503, the parsing unit 394 determines that the RPC call is completely included in the RPC fragment 502, Determine if processing may be performed (this determination may be made by testing whether the length of the RPC call is greater than the number of remaining fragment bytes). When the type of the RPC call is a chain exception, the RPC call updates the RPC parsing unit 394. In the proxy server 224, the only RPC calls that are chain exceptions are "datagram transmission" and "stream transmission". This chaining exception procedure allows the RPC engine to avoid fragment copying by chaining memory descriptor lists together for RPC send calls.
[0103]
When the syntax analyzer 394 determines the type of RPC call, a pointer to the beginning of the RPC information is transferred to the RPC engine 240 for execution. The RPC engine prioritizes every TDI procedure call for execution. The highest priority call is forwarded to RPC dispatcher 395 for immediate processing. All lower priority calls are dispatched to dispatch queue 510 for later processing. Dispatch queues 510 each represent a discrete priority.
[0104]
In this embodiment, the mobile application calls the "open address" and "open connection" object functions before performing other TDI networking functions. Thus, the system assigns application-level priorities during the invocation of the "open address" and "open connection" objects. In the illustrated embodiment, once an address or connection object has been prioritized, all calls associated with that object are performed during its assigned priority.
[0105]
For example, if the RPC call is a TDI open address object request or a TDI open connection object request, the call is sent to the RPC dispatcher 395 for immediate execution. The open address and open connection object RPC calls allow access to a process ID or process name that is used to correspond to information provided by the configuration manager 228 during a configuration request made during the above connection suggestion. The process ID or process name is used to obtain the address or connection object settings.
[0106]
In the preferred embodiment, all RPC calls have at least an address object or connection object as a parameter. When the call is executed, the priority assigned to the object is made the priority of the RPC call. The settings assigned to the address or connection object determine the priority of all corresponding RPC calls to be made. For example, if the assigned priority is “high”, all RPC calls are executed immediately without being dispatched to dispatch queue 510. If the assigned priority is "1", all RPC calls are added to dispatch queue 510 (1).
[0107]
Referring again to FIG. 5, once the processing of the "process association work" task 364 completes the execution of the scheduled combined workload (decision block 404), the dispatch queue is requesting service. A determination is made (block 406). FIG. 8 is a flowchart illustrating the steps performed by "dispatch queue processing" (block 406, FIG. 6) for processing of dispatch queue 510 shown in FIG.
[0108]
In this example, dispatch queue 510 is serviced from the highest priority queue (510 (1) in this example) (block 408). A weighting factor is set for each of the dispatch queues 510. This weighting factor is a configuration parameter returned by the configuration manager 228 when the connection between the mobile terminal system 104 and the mobility management server 102 has been established. For example, the weighting factor of the dispatch queue 510 having a low priority is 4, and the weighting factor of the dispatch queue 510 having a medium priority is 8. In this example, an RPC call with a high priority is processed immediately after analysis, and thus has no weight coefficient.
[0109]
Starting from the current queue, the RPC engine 240 'dequeues the RPC call from the queue and loops until the queue is empty or the queue weight number of the RPC call has been processed (block 412). 416). For each de-queued RPC call, an RPC dispatcher 395 is invoked for its execution. The RPC dispatcher 395 executes a procedure call on behalf of the mobile terminal system 104 and generates a response from the mobile terminal system to the RPC call requesting a response.
[0110]
After exiting the loop, if there is more work left in the queue (decision block 418), the queue is marked as needing re-execution (block 420). Upon exiting the loop, the system moves the processor to the next lower priority queue (blocks 424, 410). This gives the possibility that any priority level will be executed no matter how much work is allocated to a particular queue. The system moves to the service of the next queue and repeats the process until all queues have been processed. When all queues have been processed, the system determines if any queues have been marked as needing execution, and if so, sends a schedule request to the global work queue to re-run the join. Will be done. The re-execution of the join is scheduled in the "global work process" routine of FIG. With the above approach, the processor also gives other couplings that have work to do the opportunity to execute. By assigning a weighting factor to each queue, the system may be adjusted such that access to the CPU of the mobility management server 102 is permitted according to the priority level. As a result, a queue with a high priority can be accessed not only first, but also more easily.
[0111]
(Mobility management server RPC response)
The above describes how a remote procedure call is sent from the mobile terminal system 104 to the mobility management server 102 for execution. In addition to this type of RPC call, the RPC engine 240 'of the mobility management server 102 supports RPC events and RPC receive responses. RPC messages are generated asynchronously as a result of the activity of the binding associated connection peer (typically the fixed terminal system 110). RPC engine 240 ′ of mobility management server 102 completes the RPC transaction performed by RPC dispatcher 395. Successful completion does not mean that all RPC calls require a response, but some RPC calls that require a response will cause the RPC dispatcher 395 to create an appropriate response and use the Internet Mobility Protocol. -Inform the engine 244 'and the response is returned to the peer's mobile terminal system 104. When an RPC call fails, all RPC calls generate a response (except for the RPC receive response above).
[0112]
The RPC event is emitted as a result of the activity of the network 108 by the associated connection (typically the fixed terminal system 110). In the preferred embodiment, such RPC event messages are proxied by the mobility management server 102 and sent to the mobile terminal system 104. The mobility management server 102 of the preferred embodiment supports the following RPC event calls.
[0113]
A disconnection event (occurs when a binding specific connection peer (usually the fixed terminal system 110) issues a disconnection request at the transport level, the request being received by the proxy server 224 on behalf of the mobile terminal system 104; The proxy server 224 sends a disconnection event to the mobile terminal system.)
A stream reception event (occurs when a combined specific connecting peer (usually the fixed terminal system 110) sends stream data to the mobile terminal system 104. The proxy server 224 receives the data on behalf of the mobile terminal system 104 and receives a response (Send the data to the mobile terminal system as (Receive Response))
A datagram reception event (any of the association-specific portals is sent from a network peer (usually a fixed terminal system 110) and sent to the mobile terminal system 104 via the mobility management server 102) Occurs upon receiving a datagram, which is to be received.The proxy server 224 accepts the datagram on behalf of the mobile terminal system 104 and forwards the datagram to the mobile terminal system 104 in the form of a datagram reception event. Do)
When a connection event (association-specific listening portal) attempts to establish an end-to-end connection between the transport layer and the mobile terminal system 104, the connection-specific listening portal sends a transport layer connection request (usually Occurs from the fixed terminal system 110. The proxy server 224 accepts the connection request on behalf of the mobile terminal system and generates and sends a connection event RPC call to the mobile terminal system.)
FIG. 9 illustrates how the RPC engine 240 'handles RPC calls generated by a proxy server. For higher priority addresses and connection objects, the RPC engine 240 'immediately dispatches transmission requests to the Internet Mobility Protocol Engine 244'. The transmission request causes the RPC message to be forwarded to the mobile terminal system 104 of the peer. For low priority objects, a transmission request from the Internet Mobility Protocol Engine 244 is reported to the appropriate priority queue 510 '. If execution of the join is not scheduled, a schedule request is also notified to the global queue 358 '. The transmission request of the Internet Mobility Protocol is finally executed during the processing of the dispatch queue already described with reference to FIGS.
[0114]
(Example of Internet Mobility Protocol)
The Internet Mobility Protocol of the present invention is a message-oriented, connection-based protocol that can guarantee delivery, (re) order detection, and recover from loss. Further, unlike other traditional connection oriented protocols (ie, TCP), it allows multiple separate data streams to be combined into a single channel, providing guaranteed data, unreliable data, and New message-oriented and reliable data can be simultaneously traversed over the network by a single virtual channel. This new level of message-oriented service will cause the request portion to be notified when the Internet Mobility Protocol peer sees a given program data unit.
[0115]
The Internet Mobility Protocol of the present invention is designed to overlay existing network topologies and technologies. The Internet mobility protocol is versatile because it is independent of the underlying network architecture. As long as the packetized data can move between the two peers, the use of the Internet Mobility Protocol is possible. The point of network (POP) or network infrastructure at each node can be changed without affecting the data flow, unless there are physical boundaries, specific policies, or bandwidth limitations.
[0116]
The Internet Mobility Protocol fuses data from various sources with the help of the upper layer and uses the datagram function of the lower layer to move the data back and forth. As each independent data unit comes from the upper layer, the Internet Mobility Protocol then transmits the data unit as a single stream. The data unit is then sent to the peer over the existing network, and upon reception, the stream is demultiplexed with the help of the upper layers back to the original independent data units. As a result, a maximum number of network frames are generated each time transmission is performed, and the use of the bandwidth can be optimized. Further, according to the above, it is possible to adjust the channel so that the bandwidth can be used to the maximum, and it is possible to provide parameters applicable to all session-level connections.
[0117]
In the rare case where one channel is inadequate, the Internet Mobility Protocol can establish multiple channels between peers. This allows prioritization of data and guarantees of service quality (if supported by the underlying network).
[0118]
In addition, Internet mobility protocols are being considered for dynamically selectable and guaranteed levels of service, or for unreliable levels of service. For example, each protocol data unit to be transmitted can be made to wait with a limitation on a validity time period and / or the number of retransmission attempts. The Internet Mobility Protocol expires the data unit when either threshold is reached and excludes it from subsequent transmission attempts.
[0119]
The overhead of the Internet Mobility Protocol as an additional protocol has been minimized by the use of variable length headers. The size of the header is determined by the type of the frame and an optional field. The optional field is added in a particular order to facilitate parsing by the receiver, the presence of which is indicated by a bit in the header flag field. All other control and configuration information required for peer communication can pass through the in-band control channel. All control information to be transmitted is added to the previous frame of any application-level protocol data unit. The receiving side processes the control information and then sends the rest of the payload to the upper layer.
[0120]
Because it is expected to operate in unreliable networks with a relatively high probability of error, the Internet Mobility Protocol employs a number of technologies to ensure data integrity and maximize network performance. Is used. To ensure data integrity, a Fletcher checksum algorithm is used for detecting erroneous frames. This algorithm is employed with high efficiency and high detection capability, and can detect not only bit errors but also bit rearrangement. However, another checksum algorithm may be employed instead of the above algorithm.
[0121]
Although sequence numbers are used to ensure delivery of ordered data, sequence numbers in the Internet Mobility Protocol do not represent each byte of data as in TCP. As an example, the sequence number represents a frame of data up to 65535 bytes (including the Internet Mobility Protocol header). The sequence number is of an appropriate length, such as 32 bits, to prevent wraparound on high bandwidth links within a limited time period.
[0122]
When the above capabilities are combined with the data expiration function, the retransmitted (retryed) frame may contain less data than the previous version generated at the sender. Although it is possible to set the frame ID to detect the latest version of the frame, in the preferred embodiment no data is added, and each deleted element is the entire protocol data unit Therefore, the above method is not always necessary for sequence assurance. As an example, the Internet Mobility Protocol processes a particular frame received only the first time, no matter how many different versions of the frame are transmitted. Each generated frame that carries a new user payload is assigned a unique sequence number.
[0123]
The adoption of sliding window technology improves performance and allows multiple frames to be held (transmitted) before requiring the peer to acknowledge data reception. Acknowledgments and timer-based retransmission schemes are employed to ensure timely data delivery. In addition, a selective acknowledgment mechanism has been adopted to optimize channel utilization, resulting in faster retransmission of lost frames and faster recovery during periods of high or low network connectivity. Is done. In one example, this optional acknowledgment mechanism is represented as an additional bit field included in the header.
[0124]
Congestion avoidance algorithms have also been used to back off the protocol from rapid retransmission of frames. For example, the round trip time can be measured for each frame successfully transmitted between peers without retransmission. This time value is averaged to provide a reference for a retransmission timeout value. Each time a frame is sent, a timeout is set for each frame. If a frame is actually transmitted but no acknowledgment is received for the frame, the frame is retransmitted. At this time, the timeout value increases and becomes a reference for the next retransmission time. Since an upper limit value and a lower limit value are set for the retransmission timeout, the values fall within an appropriate range.
[0125]
In the Internet Mobility Protocol, a transmission path and a reception path are treated separately. This approach is particularly useful in channels that are inherently asymmetric. Based on the hysteresis, the Internet Mobility Protocol automatically adjusts parameters such as frame size (fragmentation threshold), number of pending frames, retransmission time, delay acknowledgment time, and replicated data sent over the network. Decrease the amount of
[0126]
The Internet Mobility Protocol allows nodes to move to different points of connection in various networks, which may change the characteristics of the underlying network (eg, frame size) along the way. As a result, frames that were waiting to be transmitted on a certain network may not fit the new medium to which the mobile device is currently connected. Fragmentation is handled at the level of the Internet mobility protocol, taking into account that fragmentation is not supported in all network infrastructures. Before each frame is transmitted, the Internet Mobility Protocol determines whether the frame exceeds the current fragmentation threshold. Incidentally, this value may be smaller than the current maximum transmission unit from the viewpoint of improving performance (because a smaller frame is more likely to reach the final destination than a larger frame). The trade-off between increasing protocol overhead and increasing the number of retransmissions is examined by the Internet Mobility Protocol, and frame sizes may be reduced to reduce overall retransmissions. If a certain frame fits, the frame is transmitted without being divided. If not, the frame is split to the maximum size allowed for the connection. If a frame is retransmitted, it is re-evaluated and re-fragmented if the maximum transmission unit is reduced (or if the maximum transmission unit is increased, the frame is fragmented May be retransmitted as a single frame that is not transmitted).
[0127]
The protocol itself is designed to be orthogonal, so that either side can establish or break a connection with a peer. However, in some cases, there are some minor operational differences in the protocol engine depending on where they are performed, and certain sleep detections and connection lifetime timeouts can only be performed from one side. In order to enable operations necessary for operation, the Internet Mobility Protocol Engine running on the mobility management server 102 keeps track of the state of the suspension period. If a certain period has elapsed without any work from the mobile terminal system 104, the mobility management server 102 can end the session. It may also be necessary for the administrator to limit the total time required to establish a particular connection, or to deny access by date and time. The operation may be performed only from the management server 102 side.
[0128]
As an example, software that provides the Internet Mobility Protocol can be compiled and run in a Windows NT, 9x, CE environment without the need for platform-specific modifications. In order to realize this, the Internet Mobility Protocol employs a service of a network abstraction layer (NAL) for transmitting and receiving Internet Mobility Protocol frames. Other standard utility functions such as memory management, queue and list management, event logging, alarm systems, power management, security, etc. are also used. Some runtime parameters are changed depending on whether the engine is provided in the mobile terminal system 104 or the mobility management server 102. Several examples are shown below.
[0129]
-A specific timeout can be called only from the mobility management server 102
・ The direction of the frame is indicated in each frame header for echo detection
-By setting the mobile terminal system 104, rejection of inbound connection is possible.
An alert is notified only to the mobility management server 102
Power management is enabled in the mobile terminal system 104 but not necessarily required in the mobility management server 102
The interface of the Internet Mobility Protocol has a small number of standard API functions that are C-callable and platform-independent, and is dedicated to a single OS-specific, scheduled work (other than the standard utility functions described above). A configuration that requires a function may be used. Communication with the local client is enabled by using a defined work object (work request). Completion notification for each work element can be effectively accomplished by notifying the requesting entity through an optional completion callback routine identified as part of the work object.
[0130]
The Internet Mobility Protocol Engine itself is queue-based. Work elements from the local client are added to the global work queue according to the FIFO order, which is done by the local client calling a standard Internet Mobility Protocol function such as "ProtocolRequestwork ()". Subsequently, a scheduling function within the Internet Mobility Protocol removes the work and dispatches to the appropriate function. The combination of the standby and scheduling functions makes the difference between OS architectures invisible, so that the protocol engine can be implemented in a thread-based system (eg, Windows NT) or a synchronous system (eg, Microsoft Windows). (Registered trademark) 9x or Windows (registered trademark) CE). Since the priority scheme can be overlaid on the waiting function, quality of service (if supported by lower layers) can be guaranteed.
[0131]
From a network perspective, Internet mobility protocols utilize scatter-gather techniques to reduce data copying and movement. Each transmission is sent to the NAL as a list of fragments and fused by the network layer transport. If the transport protocol itself supports the scatter-gather technique, the fragment list is transferred over the transport and assembled by the media access layer driver or hardware. Further, the above technique can be extended to insert or delete any protocol wrapper at any level of the protocol stack. The reception of the frame is notified by the NAL layer by calling back the Internet mobility protocol at a specific entry point designated at the time of the NAL registration process (NAL registration process).
[0132]
(Example of Internet Mobility Protocol Engine entry point)
The Internet Mobility Protocol in the illustrated embodiment has four common entry points that manage the startup and shutdown behavior of the protocol. Shown below are these procedures.
[0133]
1. Internet Mobility ProtocolCreate ()
2. Internet Mobility ProtocolRun ()
3. Internet Mobility ProtocolHalt ()
4. Internet Mobility ProtocolUnload ()
(Example of Internet Mobility ProtocolCreate ())
The Internet Mobility ProtocolCreate () function is called by the boot subsystem to initialize the Internet Mobility Protocol. During this first phase, all resources necessary to start processing the work must be acquired and initialized. At the end of the phase, the engine should be ready to accept work from other layers of the system. At this time, the Internet Mobility Protocol initializes the global setting table. To this end, the Internet Mobility Protocol uses the service of the setting manager 228 to populate the table.
[0134]
Next, the Internet Mobility Protocol registers the suspend and resume notification functions with the APM handler. In one example, these functions can be invoked only from the mobile terminal system 104 side; however, in another example, it may be desirable to allow the mobility management server 102 to suspend during operation. Subsequently, other work storage areas such as a global work queue and a global NAL portal list are allocated from the memory pool.
[0135]
To limit the maximum amount of runtime memory required and to guarantee the uniqueness of the Internet Mobility Protocol handle, the Internet Mobility Protocol employs a two-tier array scheme for handle generation. are doing. The size of the global connection array table is determined by the maximum number of simultaneous connections set by the system and is allocated at this time. When all global storage has been allocated and initialized, the state of the Global Internet Mobility Protocol will be _STATE_INITIALIZE_.
[0136]
(Example of Internet Mobility ProtocolRun ())
The Internet Mobility ProtocolRun () function is called after all subsystems have been initialized and notifies the Internet Mobility Protocol subsystem that it may begin processing any pending work. This is the normal state of the Internet Mobility Protocol Engine in general operating situations. Before putting the engine into operation, several second pass initialization steps are performed at this point.
[0137]
The Internet Mobility Protocol allows network communications to take place over any of the interfaces. During the initialization step, the storage for the Internet Mobility Protocol-NAL interface is allocated so that the Internet Mobility Protocol starts all listeners of the NAL, traversing the global portal list. Can be. As an example, this operation is as follows, which includes two steps.
[0138]
The Internet Mobility Protocol binds and opens the NAL layer with a portal based on settings provided during initialization;
The Internet Mobility Protocol then registers an Internet Mobility Protocol RCVFROMCB callback to notify the NAL layer that it is ready to begin processing the received frame.
[0139]
Subsequently, a local persistent identifier (PID) is initialized. The state of the Global Internet Mobility Protocol changes to _STATE_RUN_.
[0140]
(Example of Internet Mobility ProtocolHalt ())
The Internet Mobility ProtocolHalt () function is called to alert the engine that the system has shut down. All resources obtained during operation are released before returning from this function. All sessions of the Internet Mobility Protocol terminate abnormally with a reason code set for management. When the engine enters the _STATE_HALTED_ state, thereafter, work from another layer is not accepted, and the other layers are not notified.
[0141]
(Example of Internet Mobility ProtocolUnload ())
The Internet Mobility ProtocolUnload () function is the second phase of the shutdown process. This is the last opportunity for the engine to release the allocated system resources before returning. When the engine returns from this function, the system itself shuts down and no further work is performed.
[0142]
(Example of Internet Mobility Protocol Handle)
In at least some instances, it is not sufficient to simply use the address of the memory (which stores the Internet Mobility Protocol state information) as a token that describes the Internet Mobility Protocol connection. This is mainly due to the possibility that one connection will end and another new connection will be started within a short period of time. It is likely that the memory allocator will redistribute the same address to another connection as the previous one, and this value will indicate both the previous connection and the new connection. If the original peer does not recognize the end of the session (because it has been powered off, suspended, out of range, etc.), it will send the frames of the previous session towards the new session It is possible. This occurs for TCP, and if the peers have the same IP address, a reset is performed to create a new session. To avoid this, the Internet Mobility Protocol employs a manufactured handle. The handle is formed by a two-row index and is one-time only to maintain uniqueness. The table has the following layout.
[0143]
Table 1: Array of pointers to arrays of connection objects
Table 2: Array of connection objects containing real pointers to Internet Mobility Protocol control blocks
This technique minimizes the amount of memory allocated during the initialization period. Table 1 is sized and assigned at startup. As a result, a small amount of memory can be allocated on the mobile terminal system 104 side (the memory requested to be allocated by the table 1 on the mobility management server 102 side is slightly larger because the server has many connections). Things).
[0144]
Table 1 is populated as needed. When a connection request is made, the Internet Mobility Protocol looks for a valid pointer to Table 2 in Table 1. If no entry point is found, the Internet Mobility Protocol allocates 256 connection objects to the new Table 2 and records a pointer to Table 2 in the appropriate slot of Table 1. Next, the protocol engine initializes Table 2, allocates a connection object from the newly created table, and returns to the manufacturing handle. If another session is requested, the Internet Mobility Protocol will again search Table 1 to find a valid pointer to Table 2 and assign the next connection object for the session. This process continues until one of the following two states is reached.
[0145]
When all the connection objects are lost from the table 2, the table 2 is newly allocated and initialized, and the pointer indicating the table 2 is set to the next available slot of the table 1.
[0146]
If all connection objects are released to a particular instance of table 2 and if all elements have not been used for a particular period, the storage in said instance of table 2 is released back to the memory pool and table 1 The associated pointer is zeroed to indicate that the entry is available when the next connection request is initiated (in other instances of Table 2, the available connection objects are If not).
[0147]
Two global counters are maintained to allow the total number of allocated connections to be limited. One global counter counts the number of currently active connections, and the other keeps track of the number of unassigned connection objects. Furthermore, the second counter also manages the total number of connection objects that can be created up to an arbitrarily set limit. When a new table 2 is allocated, the counter is adjusted downward to keep track of the number of objects represented by the new table. On the other side, when the Internet Mobility Protocol releases an instance of Table 2 to the memory pool, the counter is revised upward to match the number of connection objects released.
[0148]
(Example of workflow)
With the Internet Mobility ProtocolRequestWork () function, work is requested from the local client. When the work is validated and added to the global work queue, the Internet Mobility ProtocolQueueEligible () function is called. In a threaded environment, an Internet Mobility Protocol worker thread is signaled (marked conforming) and control immediately returns to the calling entity. In a synchronous environment, the global work queue is immediately executed and any requested work is processed. In either case, the Internet Mobility ProtocolProcessWork () function will be executed. This is the main dispatch function for work processing.
[0149]
In the illustrated embodiment, work from the global queue may only be dispatched by one thread at a time, and a global semaphore may be used to prevent reentry. For private Internet Mobility Protocol work, work can be sent directly to the global work queue without using the Internet Mobility ProtocolRequestWork () function.
[0150]
A special case is assumed for the SEND type work object. To ensure that the semantics of unreliable datagrams are maintained, each SEND-type work object can be queued with an expiration date or retry count. The life of the work is calculated based on the expiration date. If such a predetermined timeout occurs, the work object is removed from the connection specific queue and completes with an error condition. If the SEND object has already been merged into the data path, the protocol allows removal of any SEND object with a retry count set. If the retry count is exceeded, the object is removed from the list of elements that make up the particular frame and returned to the requester, indicating an appropriate error condition.
[0151]
(Example of connection startup)
Internet mobility protocols have a very efficient mechanism for establishing connections between peers. Confirmation of the connection is made by exchanging at least three frames between the peers. The initiator sends an IMP SYNC frame to its peer to warn that connection establishment is required. The acceptor warns the peer that the connection request has been rejected by sending an IMP ESTABLISH frame to confirm connection acceptance or by sending an IMP ABORT frame. The reason and status code are sent in an IMP ABORT frame to help the user understand the reason for the connection refusal. If the connection is granted, an acknowledgment frame (which may contain the protocol data unit and control data) is sent and forwarded to the acceptor to acknowledge receipt of the establishment frame.
[0152]
To minimize network traffic, the protocol may allow user and control data to be included in the initial handshake mechanism at connection startup. This configuration avoids performance degradation due to unsecured environments, double security authentication on the same data path, and encryption processing on the same data path. It is used in environments where security is handled at a lower level, such as where Internet mobility protocols are being coordinated.
[0153]
(Example of data transfer)
The Internet Mobility Protocol detects that a frame has been delivered to the network by notification from the NAL. The Internet Mobility Protocol does not retransmit the same frame until the original request is completed, since the metrics determine whether the network link is constantly being flow controlled. However, some network drivers erroneously suggest transmission of a frame before sending the frame to the network. With the use of semaphores, the Internet Mobility Protocol layer will detect this and will not send another datagram until the NAL replies to the original request.
[0154]
When a frame is received by the Internet Mobility Protocol, it is quickly inspected and added to the appropriate connection queue. If the frame does not have enough information for the Internet Mobility Protocol to identify its final destination, the frame is added to the Internet Mobility Protocol socket queue that received it and the The socket queue is added to the global work queue for subsequent processing. This initial demultiplexing allows the received work to be quickly spread with limited processing overhead.
[0155]
(Example of acquiescing)
To minimize the network bandwidth during retransmissions and the power required by the mobility management server 102, the protocol allows the mobility management server 102 to "accept" the connection. After a period that can be set by the user, the mobility management server 102 stops retransmitting the frame to a specific connection if there is no notification from the corresponding mobile terminal system 104. At this time, the mobility management server 102 assumes that the mobile terminal system 104 cannot communicate (out of service area, suspend, etc.) and suspends the connection. All subsequent work on the connection is stored for later distribution. The connection will remain in the same state unless any of the following situations are met.
[0156]
The mobility management server 102 receives the frame from the mobile terminal system 104 and returns the connection to its original state;
The connection lifetime timeout expires,
The sleep timeout expires, or
Connection is canceled by the system administrator
If the mobility management server 102 receives a frame from the mobile terminal system 104 and the connection is resumed from the point where it was interrupted, all work waiting on the connection is transferred and the state is resynchronized. Otherwise, when reconnection is made, the mobile terminal system 104 is notified of the end of the previous connection, and the work waiting to be sent to the mobile terminal system 104 is discarded.
[0157]
(Example of connection and transmission request)
10A-10C form a flowchart illustrating the connection and transmission request logic generated by the Internet Mobility Engine 244. Upon receiving an instruction from RPC engine 240, Internet Mobility Protocol Engine 244 determines whether the instruction is a "connect" request (decision block 602). If the command is a "connect" request, the engine 244 determines whether connection resources can be allocated (decision block 603). If not enough connection resources are allocated ("No" at decision block 603), engine 244 declares an error (block 603a) and responds. If connection resources can be allocated, the engine 244 performs state setting processing to prepare for processing of a connection request (block 603b).
[0158]
In response to a connection or other request, the engine 244 waits for the connection or transmission request and notifies a global event before responding to the calling application (block 604).
[0159]
To dispatch a connection or transmission request from the Internet Mobility Protocol global request queue, engine 244 first determines if there is any work pending (decision block 605). If there is no work pending (if “No” at decision block 605), the engine 244 moves to block 625 of FIG. 10C and waits for a response from the application to wait for work for connection ( Block 605A). If there is work pending (if "yes" in decision block 605), engine 244 determines whether the current state is established (block 606). If the state is established ("Yes" in decision block 606), engine 244 skips the step for transition to state establishment and moves to decision block 615 of FIG. 10B (block 606a). If a state has not been established, engine 244 may need to perform a series of steps for establishing the state (if "no" at decision block 606).
[0160]
To move to state establishment, engine 244 first determines if the address of its peer is known (decision block 607). If not, the engine 244 waits further for work and moves to block 625 of FIG. 10C to wait for the peer address (block 607a). If the address of the peer is known ("yes" in decision block 607), engine 244 next determines whether the required security context has been obtained (decision block 608). If not, the engine 244 needs to wait further for work and move to block 625 of FIG. 10C to wait for a security context to come (block 607a). If a security context has already been obtained ("Yes" at decision block 608), engine 244 declares a "pending state" state (block 608b) and sends an Internet Mobility Protocol synchronization frame (block 608b). Block 609), start a retransmission timer (block 610). Engine 244 determines whether a corresponding establishment frame has been received (block 611). If not ("No" in decision block 611), engine 244 determines whether the retransmission time has expired (decision block 612). If the retransmission time has not expired (“No” in decision block 612), engine 244 may wait and then move to step 625 (block 613). Eventually, if no established frame is received (determined in block 611) and the retransmission time has all expired (decision block 614), the connection may be aborted (block 614a). Eventually, if an established frame is received ("Yes" at decision block 611), engine 244 declares an "established" state (block 611a).
[0161]
Once the status has been established, the engine 244 determines whether the new connection has been authenticated (decision block 615). If not, engine 244 may wait and move to step 625 (block 616). If the connection has been authenticated ("Yes" at decision block 615), engine 244 determines whether the authentication was successful (decision block 617). If unsuccessful ("No" in decision block 617), the connection is aborted (block 614a). If successful, engine 244 determines whether the peer transmission window is full (decision block 618). If full (decision block 618 is "yes"), engine 244 waits for an acknowledgment and proceeds to step 625 (decision block 619). If the window is not full (decision block 618 is "no"), engine 244 generates (block 620) and transmits (block 621) an Internet Mobility Protocol data frame. Next, engine 244 determines whether the retransmission timer has started (decision block 622). If not, the engine 244 starts a retransmission timer (block 623). Engine 244 repeats blocks 618-623 until there is no more data to send (determined at decision block 624). The engine 244 then enters sleep mode, waits for more work, and returns to the global dispatcher (block 625).
[0162]
(Example of cancellation)
FIG. 11 is a flowchart illustrating the steps performed by the Internet Mobility Protocol Engine 244 to terminate a connection. Upon receiving the "stop connection" request (block 626), the engine adds the request to the global work queue and replies to the calling application (block 626a). The abort request is finally dispatched from the Internet Mobility Protocol processing global work queue for execution (block 627). Engine 244 examines the abort request to determine whether the request is urgent or affordable (decision block 628). If it is urgent ("abort" in decision block 628), engine 244 immediately terminates the connection (block 629). If so, the engine 244 declares a "state close" state (block 628a) and the Internet mobility protocol "Mortis". "Transmit the frame (block 630), indicating to the peer that the connection is to be closed. Next, engine 244 declares a "Mortis" state (block 630a) and starts a retransmission timer (block 631). Engine 244 determines whether a "post mortem" frame has been responded to by the peer (decision block 632). If not (decision block 632 is "no"), engine 244 determines whether the retransmission timer has expired (decision block 633). If the time has not expired ("NO" in decision block 633), engine 244 waits and proceeds to step 637 (block 634). If the retransmission timer has expired ("Yes" at decision block 633), engine 244 determines whether the total retransmission time has expired (decision block 635). If not, then return to block 630 and retransmit the Mortise frame. If the total retransmission time has already expired ("Yes" in decision block 635), engine 244 immediately terminates the connection (block 635a).
[0163]
If a "post mortem" response frame is received from the peer ("yes" at decision block 632), engine 244 declares a "post mortem" state (block 632a) and releases the connection resources (block 636). ), Return to the sleep state and wait for further work (block 637).
[0164]
(Example of retransmission)
FIG. 12 shows an example of the “retransmission” event logic executed by the Internet Mobility Protocol Engine 244. When the retransmission timer expires (block 650), engine 244 determines if there are any pending frames (decision block 651). If there are no pending frames ("No" at decision block 651), engine 244 discards the timer (block 652) and returns to the sleep state (block 660). Conversely, if there are any pending frames ("yes" in decision block 651), engine 244 determines whether the entire retransmission period (entire) has ended (decision block 653). If not, the process returns to sleep due to the time difference (block 654). If so, the engine 244 determines whether the total retransmission period has expired (decision block 655). If the event has already been completed ("Yes" in decision block 655) and this event is being executed by the mobility management server engine 244 '(corresponding to the mobile terminal system engine 244), a sleep state is declared (decision). Block 656, block 656a). In the same state, the Internet Mobility Protocol Engine 244 running on the mobile terminal system 104 aborts the connection (block 656b).
[0165]
If all retransmission periods have not expired ("No" at decision block 655), engine 244 reprocesses the frame to remove timed out data (block 657) and retransmits it. Then, the retransmission timer is restarted as it is (block 659). The process then enters a sleep state (block 660) and waits for the next event.
[0166]
(Example of expired PDU of Internet Mobility Protocol)
In block 657 of FIG. 12, the requesting upper layer interface specifies a timeout or retry count for the expiration of the protocol data unit (ie, SEND work request) 506 sent to the binding peer. Will be possible. This feature allows the Internet Mobility Protocol Engine 244 to perform other functions, such as maintaining unreliable data semantics and removing unreliable data from retransmitted data. Each PDU (protocol data unit) from the upper layer specifies a validity timeout and / or retry count for each element that will eventually be coded by the Internet Mobility Protocol Engine 244. can do. The expiration timeout and / or retry count (identifiable by the user in some applications) may be used to determine which PDUs 506 should be removed from the frame without being forwarded before retransmission by engine 244. Be done.
[0167]
The expiration time out associated with the PDU 506 specifies a relative time period that each PDU should consider during transmission. During the execution request, the Internet Mobility Protocol RequestWork function checks the expiration time value. If the value is not 0, the age timer is initialized. The requested data is then added to the same queue as other data sent to the joining peer. If a PDU 506 is in the queue longer than the period specified by the validity period parameter, the expired (all) PDUs are removed during the next event processing the queue, Rather than being retransmitted when the frame is retransmitted, it is completed locally with a status code of "timeout failure". This algorithm prevents unreliable data waiting for transmission to peers from growing stale and / or consuming system resources indefinitely.
[0168]
In the example of FIG. 12A, at least three independent PDUs 506 have been queued at Internet Mobility Protocol Engine 244 for subsequent processing. PDU 506 (1) has no expiration date and no timeout for the request. The PDU 506 (2) has a validity period of 2 seconds, and is arranged in chronological order after the PDU 506 (1). The PDU 506 (n) has a validity period of 2.5 seconds, and is arranged after the PDU 506 (2) in chronological order. Since waiting for PDU 506 (n) is the first event that causes the queue to be processed and the validity period of PDU 506 (2) to elapse, PDU 506 (2) is removed from the work queue and completed locally to complete PDU 506 (2). n) is added to the list. If the validity period is set to PDU 506 (n), a series of events up to this point is repeated. Any event that manipulates the work queue (add to queue, remove from queue, etc.) removes and completes outdated PDUs.
[0169]
As described above, the PDUs 506 are fused by the transport logic of the Internet Mobility Protocol Engine 244 and formatted into a single data stream. Each independent work element is assembled to form an Internet Mobility Protocol data frame unless it has expired due to an expiration timeout. The Internet Mobility Protocol Engine 244 will eventually send these PDUs 506 to the peer and add the relevant frames to the Frames-Outstanding list. If the peer does not recognize the frame within a certain period of time (see the retransmission algorithm in FIG. 12), the frame is retransmitted to recover lost or corrupted packets. Immediately prior to retransmission, the PDU list forming the frame is repeated to determine if a request with a retry count is waiting. If the retry count is not zero and decreases toward zero, the PDU 506 is removed from the list and the frame header is modified to indicate data erasure. In this way, stale data, unreliable data, or applications with their own retransmission policies are not burdened by the retransmission algorithm of engine 244 '.
[0170]
Also in the example of FIG. 12B, at least three independent PDUs 506 have been queued at Internet Mobility Protocol Engine 244 for further processing. PDU 506 (1) is enqueued without a retry count, indicating continuous retransmission attempts and guaranteed delivery level service. The PDU 502 (2) is added to the queue with a retry count of 1, and is arranged after the PDU 506 (1) in time series. The PDU 506 (n) joins after the PDU 502 (2) after a certain period of time has elapsed. At this point, some external event (eg, upper layer fusion timer) causes the engine 244 'to gather enough PDUs 506 from the work queue to generate the Internet Mobility Protocol data frame 500 and create a new frame. To send the logic to do. A frame header 503 is determined, to which 0 is added as a retry ID to indicate the first transmission of the frame. The frame is then sent to the NAL layer for later transmission to the network. At this time, the retransmission timer starts, because the frame includes the payload. For ease of explanation, assuming that an acknowledgment from the peer was not received for various reasons before the retransmission timer expired, the retransmission logic of engine 244 will cause the relevant frame 500 to go to the network. It is determined whether it is appropriate to be retransmitted. Before retransmitting the frame to the NAL layer, the retransmission logic of engine 244 'iterates over the list of associated PDUs 506. The retry count for each PDU 506 (2) is examined and if not zero, the count is decremented. The process of reducing the retry count of PDU 506 (2) causes the count to become zero. With the retry count for PDU 506 (2) reaching zero, PDU 506 (2) is removed from the list and is completed locally with a status of "retry failure". Subsequently, the size of the frame header 503 is adjusted to indicate that there is no data of the PDU 506 (2). This process is repeated for all remaining PDUs. When the entire frame 500 is reprocessed for creation of the "after-edit" frame 500 ', the retry ID in the header is incremented and the generated datagram is NAL ready for subsequent (re) transmission. Sent to the layer.
[0171]
(Example of reception)
13A-13D form a flowchart illustrating the steps performed by the Internet Mobility Protocol Engine 244 upon receipt of a "Receive" event. Such a reception event is generated when an Internet Mobility Protocol Engine frame is sent from the network 108. In response to the received event, engine 244 pre-validates the event (block 670) and determines whether it may be an Internet Mobility Protocol engine frame (decision block). 671). If the engine determines that there is no possibility ("No" in decision block 671), the frame is discarded (block 672). If so, the engine 244 determines if there is a connection associated with the received frame (decision frame 673). If there is a connection associated with the received frame ("yes" in decision block 673), engine 244 adds work to the connection receive queue (block 674) and marks the connection as eligible for reception (block 674). Block 675), adding the connection to the global work queue (block 676). If no connection has yet been associated with the received frame ("No" at decision block 673), the engine 244 adds the received frame to the socket receive queue (block 677) and performs global work on the socket receive queue. Enqueue (block 678). In either case, engine 244 sends a global work event (block 679). When dispatching "Receive Eligible" events from the global work queue (see FIG. 13B), engine 244 removes the frame from the respective receive queue (block 680). Multiple IMP frames can be received and queued before the Internet Mobility Protocol Engine 244 can begin dequeuing messages. The engine 244 repeats the process until all frames are out of the queue (blocks 681, 682). If a frame is dequeued ("yes" at decision block 681), engine 244 examines the received frame (block 683) and determines whether the frame is valid (decision block 684). If the received frame is invalid, engine 244 discards the frame (block 685) and removes the next frame from the receive queue (block 680). If the frame is valid ("yes" in decision block 684), engine 244 determines whether the frame is associated with an existing connection (block 686). If not (decision block 686 is "no"), engine 244 determines if there is a sync frame (decision block 687). If there is no sync frame ("No" in decision block 687), the frame is discarded (block 685). Conversely, if a synchronization frame has been received ("yes" at decision block 687), engine 244 processes the frame with a passive connection request described with reference to FIGS. 14A and 14B (block 688).
[0172]
If the frame is associated with a connection ("Yes" in decision block 686), engine 244 determines whether the connection state is still active and not yet "post mortem" (decision block). 689). If the connection is already "post mortem", the frame is discarded (block 685). Otherwise, engine 244 analyzes the frame (block 690) and determines whether the frame is an aborted frame (decision block 691). If the frame is an abort frame, the engine 244 immediately aborts the connection (block 691a). If the frame is not an aborted frame ("yes" in decision block 691), engine 244 processes the acknowledgment information and releases all pending transmission frames (block 692). The engine 244 then sends it to the security subsystem if it needs to be decrypted (block 693). When the frame returns from the security subsystem, engine 244 processes all control data (block 694). Subsequently, engine 244 determines whether the frame contains application data (decision block 695). If so, the data is queued at the application layer (block 696). The engine 244 also determines whether the connection is dormant (blocks 697 and 697a: this also applies to the mobility management server engine 244 'in the preferred embodiment) and returns to the established state.
[0173]
If the frame may be a "Mortis" frame ("Yes" in decision block 698), engine 244 indicates "disconnect" to the application layer (block 699) and enters the "Mortis" state (block 699). Block 699a). Engine 244 sends a "post mortem" frame to the peer (block 700) and enters a "post mortem" state (block 700a). Subsequently, the engine 244 releases connection resources (block 701) and returns to the sleep state to wait for work (block 702). If the analyzed frame is a "post mortem" frame ("Yes" in decision block 703), blocks 700a, 701, 702 are executed. Otherwise, control returns to block 680 to remove the next frame from the receive queue (block 704).
[0174]
(Example of passive connection)
14A-14B form a flowchart illustrating the steps performed by Internet Mobility Protocol Engine 244 for a "passive connection" request. First, the engine 244 determines whether another connection exists for the device (block 720). If so ("Yes" in decision block 720), the engine determines whether it is the first connection (decision block 721). If the peer recognizes that the new connection is the first connection ("Yes" at decision block 721), engine 244 aborts the previous connection (block 722). If it is not the first connection ("No" in decision block 721), engine 244 determines whether the sequence corresponds to the connection ID (decision block 723). If not ("No" in decision block 723), control returns to decision block 720. If the sequence and the connection ID correspond (if "yes" in decision block 723), engine 244 discards the duplicate frame (block 724) and returns to step 680 of FIG. 13B (block 725).
[0175]
If there is no other connection ("No" in decision block 720), engine 244 determines whether connection resources can be assigned to the connection (decision block 726). If not, an error is declared (if no at decision block 726, block 727) and the connection is aborted (block 728). If connection resources can be allocated ("yes" in decision block 726), engine 244 declares a "set" state (block 726a) and obtains a security context for the connection (block 730). If sufficient security context could not be obtained ("No" in decision block 731), the connection is aborted (block 728). If so, the engine 244 sends an establishment frame (block 732) and declares that the connection has entered an "established" state (block 732a). Subsequently, engine 244 activates the retransmitter (block 733) and waits for authentication processing for completion (block 734). Finally, engine 244 determines whether the device and the user are both authenticated (block 735). If either the device or the user has not been authenticated, the connection is aborted (block 736). Otherwise, engine 244 suggests a connection to a listening application (block 737) and obtains the settings (block 738). If either of these two steps is not successful, the connection is aborted (decision block 739, block 740). If successful, the process returns to sleep and waits for work (block 741).
[0176]
(Example of abnormal termination)
15A and 15B form a flowchart illustrating the steps performed by the Internet Mobility Protocol Engine 244 in response to a connection "stop" request. Upon receiving such a request dispatched via a queue from another process (block 999) (block 1000), engine 244 determines whether a connection is involved with the request (decision block 1001). ). If so ("yes" in decision block 1001), engine 244 saves the original state (block 1002) and declares the "aborted" state (block 1002a). Next, engine 244 determines whether a connection was suggested to the RPC engine (decision block 1003). If so, the engine 244 indicates a disconnect event (block 1004), declares a "post mortem" state (block 1003a), and releases the resources allocated to the connection (block 1005). Is determined to be greater than the pending state (decision block 1006). If the original state is not greater than the pending state ("No" in decision block 1006), processing moves to block 1012 to return to the calling routine (block 1007). If the original state is greater than the pending state, the engine 244 determines whether the request is related to a received frame (decision block 1008). If the abort request is associated with a received frame and the received frame is a aborted frame (decision block 1009), the received frame is discarded (block 1011) before returning to the calling routine (block 1012).
[0177]
(Example of roaming control)
Referring again to FIG. 1, the mobile network 108 may include a plurality of segments, each providing a separate network interconnect (107a-107k, corresponding to a wireless transceiver 106a-106k, respectively). In another aspect of the present invention, the network 108 including the mobility management server 102 handles the "roaming" situation where the mobile terminal system 104 moves from one network interconnect to another. be able to. Generally, the topology of the network 108 is divided into several segments (subnets) for management and other reasons, and generally, in one segment, a separate network (transmission) address is assigned to each of the plurality of mobile terminal systems 104. Have been assigned.
[0178]
Generally, a network device newly started in the above subnet is automatically set by using a dynamic host configuration protocol (DHCP). For example, a DHCP server on a subnet typically "leases" its clients (in addition to providing others) with a valid network address. A DHCP client may not have a permanently assigned, "hard-coded" network address. Instead, at boot time, the DHCP client requests a network address from the DHCP server. The DHCP server pools available network addresses for assignment. When a DHCP client requests a network address, the DHCP server assigns or leases the pooled address to the client. The assigned network address is owned by the client for a specific period (lease period). At the end of the lease period, the network address is returned to the pool and becomes available for assignment to other clients. In addition to the automatic assignment of network addresses, DHCP provides setting information such as a netmask to clients running DHCP client software. More information about the standard DHCP protocol can be found in RFC2131.
[0179]
Thus, when the mobile terminal system 104 using DHCP roams from subnet to subnet, the system will have a new network address. In one aspect of the present invention, the mobility management server recognizes a “new” network address of the mobile terminal system 104 by cooperating with the mobility management server 102 using the DHCP automatic setting function, The connection between the address and the previously established connection that the mobility management server proxies is guaranteed.
[0180]
In one embodiment, along with other standard methods used to determine whether the mobile terminal system 104 has roamed or gone out of range to another subnet, the echo request-response (echo) As a request-response, a sequence of DHCP Discover / Offer messages for standard client / server broadcast is used. According to the standard DHCP protocol, the mobile terminal system 104 requesting a network address periodically broadcasts a client identifier and a hardware address as part of a DHCP Discover message, whereas the DHCP server Broadcast the Offer response (because the requesting mobile terminal system does not yet have a network address, rather than identifying the system and sending the response, the form in which the response is conveyed by broadcast) become). Therefore, all the mobile terminal systems 104 on the subnet receive the response from the DHCP Offer server broadcast to any mobile terminal system on the subnet.
[0181]
In this embodiment, a DHCP listener is provided to monitor DHCP broadcast messages so that the mobile terminal system 104 is roaming from one subnet to another and that a new network address can be obtained by DHCP. Is checked. FIG. 16 shows an example of the data structure of the DHCP listener. For example, the data structure 902 of the listener of the mobile terminal system may have the following elements.
[0182]
A linked list of server data structures,
An integer transaction ID number (xid),
A counter ("ping"), and
・ Timeout value
The server data structure 904 may have a linked list of data blocks, each defining a separate DHCP server. Each of the data blocks may have the following elements.
[0183]
A pointer to the next server,
Server ID (network address of DHCP server),
The address of the BOOTP relay agent recently bound to the DHCP server (giaddr),
A "ping" value (socket-> ping), and
·flag
These data structures are continuously updated based on the DHCP broadcast traffic on the network 108. The functions illustrated below are used to maintain the data structure.
[0184]
-RoomCreate () (initialize variables)
・ RoamDeinitialize () (delete all listeners)
RoamSertIndications () (calls the provided callback routine for registering roaming indications when the mobile terminal system roams or changes interface)
• roomStopIndications () (remove appropriate callbacks from list to stop suggesting registered roaming)
Interface change (callback notification from OS indicating that the interface has changed the network address)
-Listener signal (callback for each interface from the listener, indicating any of the following states: roaming, out of service, return to service)
In addition, a refresh process may be used to update the listener after an interface change.
[0185]
In the preferred embodiment, all mobile terminal systems 104 transmit the same client identifier and hardware address in a DHCP Discover request. Thereby, the data structure of the listener and the processing related thereto can distinguish a Discover request from the mobile terminal system from a Discover request from another network device. Since the DHCP server also broadcasts the response, any mobile terminal system 104 and / or mobility management server 102 can receive the Offer response issued by the DHCP server to any mobile terminal system. Because multiple DHCP servers can respond to a single DHCP Discover request, the listener data structure of FIG. 16 stores each response from the server in a separate data block tied to the main handle via a linked list. .
[0186]
Upon receiving a Discover request having a predetermined client hardware address and client identifier, the preferred embodiment recognizes the request as having been sent from the mobile terminal system 104. If the message further has a BOOTP relay address set to 0, it indicates that the message is from the same subnet as the listener. The listener may ignore the DHCP Offer response unless a transaction ID (xid) corresponding to the transaction ID (xid) of the Discover message recently sent from the mobile terminal system 104 is included. The listener determines that the mobile terminal system 104 has roamed if there is a response from a known server with the provided network address, masked with the new BOOTP relay agent ID and / or the provided subnet mask. . Only upon receiving an acknowledgment from the old server does the listener add the new server to the data structure of FIG. If the listener receives a response from the new server but not from the old server, a roaming condition is suggested (this can be changed by configuration). If the listener does not receive a response from either the old or new server, it is determined that the listener is out of range. Can be used to reduce transmission volume).
[0187]
If the listener does not receive a response from any server, it cannot determine whether roaming is occurring because there is no reference point. This situation is relieved by giving an error warning after the timeout and forcing the caller to retry the operation. In the preferred embodiment, if there is a response from a known server with a new BOOTP relay agent ID (or the provided network address masked with the provided subnet mask), the mobile terminal system 104 has roamed. judge. If there is a response from the new server but no response from the old server in the listener's data structure, roaming may have occurred, but there may be a response from the old server after that. Delay notification. If there is no response from either the old or new server, the mobile terminal system 104 may be out of range, and the mobility management server 102 waits for the system to return to range.
[0188]
FIG. 17 is a flowchart illustrating steps of a listener process according to the preferred embodiment. According to the figure, the DHCP listener process is performed by allocating appropriate memory to the handle, releasing the NAL socket to the DHCP client and server UDP ports, and setting a receive callback for both. Next, a timer is set (block 802) and the process enters a "wait" state to wait for a roaming related event (block 804). Events are triggered by the following three types of external inputs.
[0189]
・ Receive DHCP server packet
・ Receive a DHCP client packet from another mobile terminal system ・ Timer expires
If a DHCP server packet is received, the packet is examined to determine whether the client identifier matches a predetermined client ID (decision block 806). If they do not match, the packet is discarded. However, if the packet does include the predetermined client ID, it is determined whether the packet is a DHCP Offer packet (decision block 808). The Offer packet is rejected unless it contains the transaction ID corresponding to the recently sent DHCP Discover sequence.
[0190]
If the packet transaction IDs correspond (block 810), it is determined whether the server that sent the DHCP Offer packet is known (ie, whether the server ID is included in the listener data structure of FIG. 16). A determination is made (block 812). If the server ID is not in the list ("No" in decision block 812), the server ID is added to the list and marked "New" (or "First" if it is the first server in the list). Marked) (block 822). If the server is already on the list ("Yes" at decision block 812), it is further determined whether the packet BOOTP relay address ("GIADDR") corresponds to the server address ("GIADDR") ( Decision block 814). If not, it is determined that a "hard roam" has been performed since the Offer packet is from another subnet (block 816). The calling application is notified that roaming has taken place. If it is determined at decision block 814 that the BOOTP relay addresses correspond, then roaming has not occurred, the server reception time is recorded, and the "new" flag is reset for all other servers on the list. , A listener process is performed to store the current ping number in the server (blocks 818, 820). Subsequently, the process returns to the “standby” period.
[0191]
When an event is received in a client packet, the listener process determines whether the packet has a predetermined client ID, is a DHCP Discover packet, and has a packet BOOTP relay address (GIADDR) of 0. (Blocks 824, 826, 828). Through these steps, it is determined whether the received packet is a DHCP Discover message transmitted from another mobile terminal system on the same subnet as the listener. If so, the listener process sets the transaction ID to the peer's transaction ID, which is used to compare the DHCP Offer packet received later (block 830), and invokes "ping confirmation" (block 834). , The timer is reset (block 836).
[0192]
Upon expiration of the timer, the process calls "ping ping" (block 838). “Ping” in the preferred embodiment is a DHCP Discover packet with a random new xid. This step of ping confirmation 838 is illustrated in FIG. 17A. The purpose of the ping confirmation routine is to provide a "soft roam" condition (i.e., the mobile terminal system has temporarily lost contact with the subnet but has subsequently recovered, but has not yet roamed to another subnet). State) has occurred. Through the processing, it is determined whether the subnet roaming state, the out-of-service state, or the “no server” state has occurred. In other words, these are as follows.
[0193]
• Did the mobile terminal system roam from one subnet to another?
・ Is the mobile terminal system out of range?
・ Is there no DHCP server?
These states are determined by comparing the previous "ping" response and the current "ping" response of the mobile terminal system (decision blocks 846, 850). For example, if the number of current pings minus the previous ping response of the old server is greater than the pings of the servers in the subnet and at least one server is marked as "new," subnet roaming to another server It means that there was. This logic indicates (or does not indicate any) a subnet roaming state, an out-of-service state, or a server-less state for the calling process.
[0194]
FIG. 18 is a flowchart illustrating steps performed by a roaming control center of the mobile terminal system 104. To enable roaming at the mobile terminal system 104, the list of known addresses is initialized to zero (block 850), OS interface change notifications are enabled (block 852), and the OS is then invoked by calling Obtain a list of current addresses using DHCP (block 854). Listeners corresponding to all known addresses missing from the current list are closed (block 856), while listeners on the current list but at unknown interfaces are opened (block 858). Next, it suggests "roaming" to the registrant (block 860).
[0195]
When a signal is sent from the listener process of FIG. 17 (block 862), it is determined whether the signal indicates "roaming", "out of service", or "return to service" (decision blocks 864, 870). 874). A roaming signal ("yes" at decision block 864) closes the corresponding listener 866 and calls the OS to release and renew the DHCP lease for the network address (block 868). If the listener signal is "out of service" (decision block 870), the condition is suggested to the registrar (block 872). If the signal is "return in range" (decision block 874), the condition is indicated to all enrollees (block 876). Upon receiving an invalid roaming command (block 878), all listeners are closed (block 880) and the OS interface change notification is invalidated (block 882).
[0196]
(Example of roaming listener assisted by interface)
In addition, interface-based listeners allow roaming across network connection points of the same network and another network medium. While the interface-based listener operates without the need for beacon technology described above, the system may fall back to a beacon state if the underlying interface (s) do not support the appropriate signals.
[0197]
In this embodiment, the interface-based listener integrates information from the network interface adapter (eg, via a low-level interface roaming driver) with information from the network stack to allow the mobile node to create a new It is determined whether or not it has moved to a network connection point. 19A and 19B illustrate a listener algorithm used to efficiently determine the migration path of a mobile node. The process uses a single network interface connected to a single network medium, but alone or in conjunction with other roaming algorithms (e.g., self-service using redundant paths). It can also traverse various network media and interfaces (to build a recovery infrastructure).
[0198]
Referring to FIG. 19A, at system initialization or when the network adapter driver loads (FIG. 19A, block 2000), the low-level interface roaming driver performs registration with the roaming control center module of FIG. (Block 2010). Such registration (implemented through the crRegisterCardHandler () function in the illustrated embodiment) provides the following entry points:
[0199]
・ Open
・ Closed
・ Acquisition of status
Boolean operation is true if the driver can notify the registered entity of a change in state, and false if the roaming control center module must use timer-based (or the like) polling for state confirmation. To be
The embodiment's crRegisterCardHandler () function provides an interface description string or token that can be used to pre-associate the roaming control center module with the correct roaming driver. Also, a default roaming driver may be installed on the interface that uses the OS / O generic mechanism for changing signaling / querying media connectivity and network attachment points.
[0200]
In this embodiment, when the state of the interface is enabled (ie, when access to the network is enabled) (block 2020), the roaming control center performs an interface assisted roaming (IAR) based on the following steps. (However, the following steps may be replaced or omitted depending on the OS design and / or the hosting device used for a particular application).
[0201]
1. If a generic handler is installed, a call is made to the generic crOpenInstance () handler. The generic handler queries the low-level adapter driver to determine whether the driver comprehensively supports signals regarding the state of media connectivity and changes in network attachment points (block 2030). If the interface driver cannot comprehensively support the function ("No" at decision block 2030), an error condition is returned to the call executor, suggesting that another mechanism be used to obtain signal information. You.
[0202]
2. If the generic handler returns an error ("No" at decision block 2030), a search for active interfaces is performed on the currently registered roaming driver (block 2040). If the interface matches one of the tokens registered during the crRegisterCardHandler () phase (block 2050), the roaming control center calls a specific crOpenInstance () on the instance of the adapter. This function attempts to open the low-level driver, poll the state (media connectivity, network connection point ID) again, and set a periodic polling timer (if possible). If the low-level driver does not support the request for any reason, an error is returned to the roaming control center, suggesting that another mechanism be used to obtain signal information.
[0203]
3. If any of the preceding steps fail to achieve the required function, an error is returned to the roaming control center and the beaconing listener, mobile IP of FIGS. 17 and 17A, without using the IAR function. Alternatively, it is suggested to fall back to another roaming algorithm, such as a currently connected network that is handling roaming (if no at decision block 2050, block 2060). Otherwise, interface assisted roaming is enabled (block 2060) and the roaming control center follows the algorithm below.
[0204]
First, the listener assisted by the interface records the current state of media connectivity and the identity of the network connection point in a local data store (block 2060). Assuming that the interface assisted subsystem has successfully provided roaming feedback, the subsystem waits for a status event (block 2100). The event has, for example, the following:
[0205]
・ Callback from low-level roaming driver,
A polled interval (blocks 2070, 2090), or
• Implications from network-level activities (ie transmission / reception issues)
If the state of the interface indicates that the media connectivity has changed or the network connection point has changed ("Yes" in decision block 2110 or 2120 of FIG. 19B), all clients of the roaming control center will be notified. The state change is notified based on the following rules.
[0206]
1. If the state indicates that the connection has changed from connecting to the underlying network medium to disconnecting ("yes" at block 2120) and there are no other paths to the peer, the listener concludes that the mobile terminal system has lost connection. In turn, the roaming control center suggests to the client the ROAM_SIGNAL_OUT_OF_CONTACT state (block 2140).
[0207]
2. If the above condition indicates that the interface has been reconnected to the medium and the network attachment point has not changed ("no" at block 2120, then "no" at block 2150), and ROAM_SIGNAL_OUT_OF_CONTACT has already been implied. , Suggesting that the mobile terminal system has lost contact with a particular network attachment point but has since regained contact. In this case, the roaming control center reconfirms all network addresses registered or obtained for proper access (block 2170) and issues a ROAM_SIGNAL_ROAM_SAME_SUBNET (block 2180) to reconnect to the roaming control center client. Has been warned to take all necessary steps to re-establish communication at the transport level. For example, if some data is lost during a service interruption, the client may take action to recover the data.
[0208]
3. If the status indicates that the interface is attached to the media but the network connection point has changed ("yes" at block 2150), the roaming control center has entered the roaming state with the client. Suggest that. To more efficiently support handoffs between network attachment points, the roaming control center of the present example uses a learning algorithm in parallel with the local data store. The data store is usually dynamically populated (learned), but static information (already learned information) may be prepared in the data store to improve performance. The data store itself maintains a list of network connection point identifiers along with information such as addresses and network masks for accessing networks and media. This "network topology map" assists the roaming control center in determining the correct signal generation for the client.
[0209]
The determination of the correct signal is made in this embodiment as follows.
[0210]
a) Searching the data store's network topology map to determine if the interface has visited a particular network attachment point (block 2190). If a match is found (“yes” at block 2200), it is further checked whether the network connection point is on the same network segment that the interface was previously attached to. If the network segments are the same, the roaming control center generates ROAM_SIGNAL_ROAM_SAME_SUBNET. This allows the roaming control center client to perform a handoff as much as possible to immediately re-establish communication at the transport level, as some data may have been lost during the handoff. It is suggested that measures must be taken.
[0211]
b) If a correspondence was found during the search, but the new network attachment point is not on the same network segment as before, the listener concludes that the mobile terminal system has roamed to another subnetwork. In this case, the roaming control center
Obtain an address available on the new network segment (block 2220). This action may involve registering the current address as valid for the new segment, (re-) acquiring the address from the local server, or a heuristic method of determining whether a previously assigned address is still valid. May be used. In the last case, the roaming control center ensures that the interface is roaming between given network attachment points and cannot be immediately discarded or deregistered for performance reasons. It is determined whether there is. In this example, obtaining an address on the network (eg, via DHCP) is different from registering an address on the local network (through a mobile IP foreign agent). The roaming entity either (re) acquires the address (eg, establishes / updates a lease from a DHCP server) or registers the current address with a foreign agent (Mobile IP).
[0212]
Generate a ROAM_SIGNAL_Roaming signal for the roaming control center client, indicating roaming to another subnet (block 2230).
[0213]
c) If the search does not find a match ("No" at block 2200), then create a new record populated with the network attachment point identifier, media access address, network mask, and other auxiliary information ( Block 2210). Next, the roaming control center executes blocks 2220 and 2230 to obtain and register a network address and generate a "roaming" signal.
[0214]
The roaming technique assisted by the above interface allows access to the underlying interface information and allows automatic and efficient selection of another valid network path (user and / or Additional policy parameters (defined by the system) can be adopted. If more than one network is available at the same time, the subsystem can choose the least burdensome path (the choice between a wide area network and a local area network). This can be determined by various metrics such as bandwidth, cost (per byte), and / or quality of service. This "least burden routing" technique can provide benefits in terms of network connection quality, efficiency, reduced frame loss, and the like. For example, due to other available heuristics (medium connectivity, signal strength, retransmission rate, etc.), a "make before break" handoff structure can be provided, thus continuing from / to the roaming node. Packet loss can be minimized. See the description of policy management below.
[0215]
FIG. 20 illustrates the data structure of a node in the interface assisted roaming topology. Although this data structure in FIG. 20 is implemented as a linked list, it may be expressed as an array in which the preceding and following fields are omitted. In a wireless network infrastructure, "NPOA" may be, for example, the MAC address of an access point or a base station to which a mobile node is associated. In other networks, "NPOA" may be a unique identifier for an intervening network interconnect (gateway, IWF, etc.). Static information may be given to the data structure in advance, or information may be dynamically learned. Also, each node may be combined with other information (eg, MTU size, waiting time, cost, availability, etc.).
[0216]
(Other embodiments that deal with specific race conditions)
Further experiments have revealed that some network adapters may falsely signal that they are (re) connected to the media before being fully registered to the network segment. . For example, during roaming, the storage area holding the network identifier has not yet been updated, and it is possible that the system will mistakenly think that these network adapters have roamed back to the same subnet. Eventually, when the device has finished registering, the storage area is updated with the new network identifier and another roaming signal is generated. If both signals are gated together and signaled only once when the interface has finished registering with the network, we proceed in this scenario. However, at the time of polling, it is difficult to determine when the network ID becomes valid if a signal indicating "connected to the network" was previously generated.
[0219]
Basically, roaming nodes can communicate with the network at the medium access level, so they are effectively connected to the medium, but since the registration process has not been completed, virtually any application data can be sent over the link. Can not yet. Therefore, it is desirable to compensate for this condition. One way to make such compensation is to determine the peer connection by sending a link confirmation frame, commonly known as an echo request / response packet. These echoes and ping frames are generated by one peer (most likely a roaming node) to determine if a bidirectional peer-to-peer connection is achievable. If the requesting peer receives a response frame for the request, duplex communication is realized and terminated. At this point, the NPOA information is considered valid until the next disconnected state. Also, other information, such as the receipt of a frame from a peer on the interface, allows the roaming node to complete the registration process and assume that two-way communication is achievable.
[0218]
Another race condition between the network interface and the underlying protocol stack situation can cause problems. The device can move to a new network segment and ensure accurate signaling from the following interfaces, but the transport stack itself makes the necessary adjustments to the routing tables of the flowing application data: May not be done. To compensate for this condition, an additional signal, ROAM_SIGNAL_ROUTE_CHANGE, is generated for each change in the underlying transport's routing table. When this signal is signaled, the roaming subsystem client takes whatever action is necessary to determine if a connection with the peer system is achievable. This requires roaming clients to enumerate through the underlying transport's routing table in order to determine if the routing modification has affected the communication path to the peer. Also, other more intrusive algorithms, such as those described above, may be performed to confirm that a bidirectional communication path exists between peers.
[0219]
(Example of roaming through a disconnected network)
Another aspect of the non-limiting preferred embodiment of the present invention is an algorithm and configuration for accessing a MMS (Mobility Management Server) in a so-called "disjoint networking" mode. With the new algorithm, an alternative network address can be dynamically / used to establish / persistently communicate with the MMS even in a disconnected network topology where one network does not know the network address in another network. You will be able to find them statically.
[0220]
In general, the algorithm allows a list of alternate addresses available to the MMS to send to the MES (Mobile Terminal System) during communication. In this way, the MMS sends the MES one or more MMS network addresses or other MMS identities corresponding to other networks by communication over a single network. As an example, the list can be sent at the time of circuit construction. The list can be changed in the middle. In this case, the list can be updated at any time while the connection is being established.
[0221]
As the MES moves to another network, the MES uses the MMS's "alias" address / identity list to contact the MMS from the point of attachment of the new network. This allows the MES to re-establish contact with the MMS through a new network connection, even if the old and new networks do not share addresses or other information.
[0222]
FIG. 21 shows a simplified flowchart of this new technique. It is assumed that MMS 102 is connected to two different disconnected networks, namely network segments N1 and N2. The MES 104 is initially connected to the MMS 102 via the network N1. As soon as a connection is established between the MES 104 and the MMS 102 via the network N1, the MMS 102 informs the MES 104 of a list of network addresses for which the MMS is sought from one or more other networks (eg, network N2). L or other identifier can be sent. The MES 104 receives and stores the list L. Thereafter, when the MES 104 moves to another network (N2), the MES 104 accesses this stored list L and uses it to effectively re-establish communication with the MMS 102 over the new network (N2). It becomes possible.
[0223]
This new algorithm has at least some uses in addition to more efficiently obtaining alternative network addresses or other identifiers for communicating with the MMS 102 over a disconnected network. One example of its use is network operation. For example, using the algorithm shown in FIG. 21, a secure firewall / gateway from many networks (some or all wireless networks) and a secure network where the MMS 102 is used as the corporate backbone can be set up and the mobile node 104 can safely travel to all of the separate networks without disconnecting. For example, suppose the MMS 102 is connected as a hub with a single thick pipe to the corporate network and to a number of small spokes connecting many logically separated networks. Because the networks are logically separated, traffic on one network segment cannot reach another network segment except through the MMS 102 (operable as a router in this example).
[0224]
Normally, for nodes traveling from network segment to network segment, the information / routes provided in each network segment (showing how to return to the "main public address or initial address" used to connect to MMS 102) That is, a default route, etc.) needs to be routed.
As soon as the connection is established, its address is used for the life of the connection. When a frame is sent from the MES 104, the IP network (Layer 3) infrastructure at the client and intermediate nodes (routers) looks at the destination address of the frame and sends the packet exactly to the final destination (MMS 102). This is generally performed by what is called IP transmission (IP forwarding) or IP routing. When this feature is turned on, frames (such as broadcasts) of one network segment flow to another network segment. Without IP transmission, a frame sent to one segment is not sent to another segment, so the communication pipe is cut off or a non-connected network is created.
[0225]
The alternative address list shown in FIG. 21 has the effect of sending or distributing some of the routing information to the MES 104. Therefore, each segment is discrete without any information on other segments connected to the MMS 102. Since the MES 104 can be authenticated by the MMS 102, the MMS sends the list L only to the authenticated MES unit 104. As the MES 104 moves to another network segment, the MES 104 can automatically select the correct address and use it to start / continue communicating with the MMS on the way. Thus, the problem of disconnected networks is solved and no changes to the routing infrastructure are required. As a result, it is possible to provide a more secure computer environment by validating access to the network only to valid users.
[0226]
For example, using MMS 102 in this manner in combination with user-level security / encryption allows traffic from and to the corporate backbone to be routed to nodes on that segment using the roaming techniques described above. It is possible to limit only to the frame set as above. The frames can be selectively encrypted, preventing any eavesdropping that could be performed by a spoke network infrastructure enabled device.
[0227]
An example is shown in FIG. In FIG. 22, the MMS 102 is connected to a communication network and four separate networks (Ia, Ib, Ic, Id) that do not share route information. From any point of view, each network I is an island. Assume an MES 104 docked with one of the networks (eg, Ic) using wired communication over a corporate backbone. For example, MES104 is 192.168. x. It is assumed that an address on the x network is obtained and communication with the MMS 102 is performed.
[0228]
For some reason MES is 10.1. x. Suppose we need to cross or move to the x (Ia) network. 10.1. x. x (Ia) network is 192.168. x. Because the x (Ib) network is ignorant (ie, there is no route to the (Ib) network), when the MES 104 moves into that area, the communication pipe is disconnected even if the MMS is connected to the communication pipe. You. 10. The other 10. mobile node 104 is shown. The same happens when connecting to any of the x networks.
[0229]
Using the algorithm shown in FIG. 21, the MMS 102 at the connection start time (or otherwise) shares its interface addresses for the various non-connected networks Ia, Ib, Ic, Id with the MES 104, which the MES records. Once recorded, if the MES 104 detects that it has moved to one of the above networks and has moved to a new network segment, the MES selects the appropriate network address and communicates with the MMS on that network segment. it can. If more than one address is used, MES 104 selects the appropriate address to use based on many metrics, such as speed, cost, availability, hops, and so on. An MES 104 that does not receive a list similar to that of FIG. 21 cannot connect to the MMS through a network other than its “home” network, effectively preventing movement between various networks.
[0230]
Alternatively, the technique of FIG. 21 is used for a distributed network interface. In today's networks, what are known as Network Address Translators (NATs) have been developed. Using this conventional technique, many network devices can access information on the Internet by using only one public network address. This technology enables the above functionality by sending all information and queries directed to the Internet via a single or few devices. The device records the request at the network layer and then reassociates the packet's address and port information with the device's address / port tuple and sends it to its destination. Upon receiving a frame from the Internet, or other such network, the device reverse-looks, replaces its address / port tuple information with that of the initiating device, and sends the frame back. These associations are also statically defined in the NAT.
[0231]
Suppose that someone uses the MMS 102 inside a LAN / WLAN to put it at the NAT. Currently, unless the MMS 102 is a NAT, or by communicating entirely with the MMS using a different proxy, when someone moves out of the bounds of the intranet, the address to communicate with the MMS is no longer accessible, Is not accessible. Using the algorithm of FIG. 21, another interface address that is not directly connected to the MMS can be defined statically / dynamically. Thus, using the above algorithm, the MES 104 can automatically select an appropriate unconnected address and use that address when connecting to a network outside of the intranet.
[0232]
The outline is shown in FIG. Suppose a node passes from interface "d" to interface "g". Access is not possible simply by providing a local interface to the MMS 102. The MES 104 needs to know the priority of the distributed interface. MES 104 then selects the required address to use on interface "g". Thereafter, NAT 2000 appropriately translates the network address / port information for each packet into an internal interface "c" address. The reverse process is performed on the frame sent from the MMS 102 to the MES 104.
[0233]
(Examples of policy management and location-based services)
Another non-limiting embodiment of the present invention provides a unique approach to providing additional security, cost savings and services based on many metrics. Since the above MMS is deeply involved in each application session that the MES establishes, both sides (ie, MMS and / or MES) apply policy-based rules between the MES and its final peer. Communication can be adapted and controlled. In addition, the MMS and / or MES may adjust or modify application requirements based on device locale, or proximity, and network connectivity. For example, the MMS and / or MES may include a learned and statically defined and applied rules engine, or other rules based on each application session to establish, or policy on attempted requests. The MMS may further allocate some, none, or some, and / or processing of such rules to the MES to provide metering or security against eavesdropping on mobile devices. I will provide a. Unlike certain other policy management techniques available in a distributed topology, MMS is central to managing rules and policy decisions and distributing them to remote devices at any time during communication.
[0234]
The rules themselves can be configured based on users, user groups, devices, device groups, process application identities, and / or network connection points. Once defined (learned), the rules are combined to manage and control a variety of different events, activities, and / or services, including, for example, the following:
[0235]
Deny, allow, or adjust intrusion access to remote devices
Deny, allow, or adjust access to specific network resources based on identity
Denying, granting, or adjusting access to available or permitted bandwidth
Denying, granting, or adjusting access to other network resources
・ Modification, adjustment, or change of content or information
Such a determination may be made based on various different factors, including, for example, the following:
[0236]
The proximity, location, altitude, and / or other characteristics of the mobile device
・ Date
・ Application or process identity, address, etc.
Application operation (eg, bandwidth conditions)
・ Current network status
.Other static or dynamic elements
Further, by utilizing a distributed architecture, the MMS can apply or share the same set of decisions. The policy management process and / or decision making performed by the MMS may be performed, for example, when the mobile device has limited processing power to run the engine, bandwidth limitations apply, or for security purposes. Desirable.
[0237]
FIG. 24 shows an example of a table showing some of the metrics (rules) that may be used for controlling the sample MES. This table may occupy either static or dynamic content and may be updated before, during, or after communication, as the case may be. For example, a user may use a rule editor (eg, a wizard) or other mechanism to define table entries. In other implementations, the metrics are automatically defined by a learning-based system or dynamically changed based on a change in state. Each rule is also assigned a priority, which is implied or explicitly specified at the table location. This priority allows the engine to accurately determine the expected operation. Additional user interface features allow system administrators and device users to query the rules engine to try a given set of rules.
[0238]
FIG. 24 shows a table example showing a number of metrics examples including the following metrics, which are the basis of the policy management decision.
[0239]
-MES communication function (transmission only, reception only, transmission and reception)
Whether the MES request is proxied
・ MES source port
・ MES source address
・ MES destination port
-MES destination address
・ MES protocol
・ Available bandwidth
• process name, identity or other characteristics
Network name, identity or other characteristics
Location (eg, GPS coordinates or other location information)
・ Network connection points
The identity, identity or other characteristics of the user
・ Other metrics
The above example table is not a complete list, and the present invention is not limited to the range of metric items in the above example table. The item can be specific, as in this example, or a generic mechanism (eg, wildcard) to indicate the desired behavior of the mobile node with respect to network access and entitlement.
[0240]
The table example of FIG. 24 further includes a “denial request” item indicating the result of the policy management decision based on the metrics. As an example, the specific item example shown in the table of FIG. 24 shows that if the available bandwidth is reduced to 100,000 bytes or less per second, the connection with destination ports 20, 21 is denied and decelerated. To indicate that Further, in the particular example shown, rules (columns) 3, 4 allow only network traffic to flow to or from the MMS (all other network traffic not proxied is implicitly discarded) ).
[0241]
In one example, before each RPC request or frame is processed, a rules engine is required to determine the status of the operation. Based on the outcome of this process, the request is granted, denied, or delayed. FIG. 25 shows a flowchart example of a process performed by the MMS and / or the MES to make a policy management decision.
[0242]
By combining the roaming techniques outlined above with other available location or navigation information, the MMS detects when the mobile terminal system has moved from one connection point to another. By combining this information in conjunction with the capabilities of the mobile terminal system to detect changes in the environment of the network topology, depending on the locale, the present invention can provide additional levels of location-based interception and service. it can.
[0243]
In order to fully realize the potential of this information, we outline the improvements in both the Internet Mobility Protocol and the PRC engine. New RPC protocol and configuration improvements have been added to enable this feature. These are listed below.
[0244]
(Example of Location Change RPC)
When the mobile terminal system determines that it has moved to a new point of attachment using another method, such as detecting a change from an interface assisted roaming or global positioning system, the mobile terminal system performs a formatted "location change". Send a "Location Change RPC Request" message to the peer, in this case the mobility management server. The "change location RPC" formats one or more connection point identities in the form of type, length, value. The type indicates the type of the identification information, and the corresponding type includes, but is not limited to, a 48-bit IEEE MAC address of ASCII, an IPV4 address, an IPV6 address, a longitude, a latitude, an altitude, and a connection mechanism name. The length indicates the byte length of the identification data, which contains the actual connection point identifier. Upon receiving the “location change RPC request”, the mobility management server generates a “location change alert” including the connection point identifier and other relevant information such as the identifier of the mobility terminal system, the user name, and the PID. I do. This alert is formatted with the same type, length and data format used in the "change location RPC request". The alert subsystem then sends this information along with the location change alert to all applications registered for the alert. Applications registered for alerts may include monitoring current activity, long-term activity logs, policy management engines, monitoring applications such as third party applications, and network management tools. A single such third party application combines this location information with a web-based map to provide detailed information about the location of the mobile terminal system or MMS. In addition to such applications, other actions can be associated with location change alerts. This includes sending an e-mail, printing a message, launching a program, and / or changing policies.
[0245]
The location change RPC includes in its header a field indicating whether it was triggered by a location change, a distance change, or a speed change.
[0246]
In one example, the MES may not know that it has moved. Depending on the medium and network adapter to which the MES connects, the MMS may be the only entity that signals that the MES has reached a new point of attachment. Consider the case of a mobile router. The address after the router remains the same, only the router address changes. In this case, the MMS recognizes that the address of the MES is newly managed. Therefore, in order to complete the detection of the operation, it is necessary to detect the operation of the combination of both MES and MMS for detecting the action. In the present embodiment, when the source address is changed and a new IMP message is received, the MMS detects the behavior of the client at the IMP layer. When this is done, the MMS generates a location change alert locally. The MMS also sends a message to the MES that the connection point has changed.
[0247]
(Example of topology RPC)
The “Topology RPC Request” is sent from the mobility management server to the mobile terminal system. Upon receipt of this RPC, the mobile terminal system reads the topology information stored in its local data storage device and creates a Topology RPC Response. The topology RPC response is composed of data of the type of connection before and after, a total length field followed by length information, a connection point identifier followed by type and length information, and data indicating values of subnet and network information. Formatted. This information may be used on the server to create a complete topological map of the mobile network provided by the server.
[0248]
(Example of location information UI)
The user interface on the server provides a method for associating and displaying location information. This location information is available to each active mobile terminal system, and the long-term operation log keeps a history of location changes for all active mobile terminal systems and previously active mobile terminal systems. The user interface allows the system administrator to configure the connection point information into a human readable format. For example, given connection point information in the form of a 48-bit IEEE MAC address, this MAC address is displayed along with information provided via a user interface on the server. When the connection point indicates the access point of the “HallMark Cards” shop, the setting is made so as to present the following information “Hallmark, address, city, state, zip code”. Displaying this information to the user provides "hole mark, address, city, state, postal code" information.
[0249]
(Example of location RPC timer)
A configurable timer is provided in the mobile terminal system to limit the rate at which the location change RPC is transmitted from the mobile terminal system to the mobility management server. If the timer interval is greater than the rate at which the connection point change occurs, the mobile terminal system waits until the timer interval expires before generating another location change RPC.
[0250]
(Example of distance change notification)
Distance metrics are provided to trigger the generation of a location change RPC. This setting configures the system to send updates as the user moves three-dimensionally from the previous point in n feet, n kilometers, or any other suitable unit of measure. This setting is disabled by default. By enabling this setting, a change notification is issued when the distance exceeds the set distance interval.
[0251]
(Example of speed threshold notification)
Speed change metrics are provided to trigger the generation of a location change RPC. This parameter consists of distance per second, such as miles per hour. This parameter specifies the upper and lower limits, as well as the time interval over which the reached speed needs to be sustained (ie, 0 MPH for 10 minutes, or 70 MPH for 1 minute). When this speed is reached, a location change notification is generated.
[0252]
[Application example]
The present invention has applications in various real world situations. An example is shown below.
[0253]
(Portable computer connected intermittently)
Many companies have employees who work from home or work from home. Such employees often work using laptop computers. During work, employees typically connect their laptop computers to a local area network, such as Ethernet, using a docking port or other connector. A LAN connection allows access to network services (eg, printers, network drives) and network applications (eg, database access, electronic data services).
[0254]
An employee working on a project needs to return home in the evening and wants to continue working from home. The employee can "suspend" the operating system and applications running on the laptop computer, clean up the laptop computer, and take the laptop computer home.
[0255]
Upon returning home, the employee "resumes" the operating system and applications running on the laptop computer and reconnects to the office LAN via a dial-up connection and / or via the Internet. The mobility management server (which continued to proxy the laptop computer and its applications to the network while the laptop computer was temporarily interrupted) re-authenticates the laptop computer and resumes communication with the laptop computer.
[0256]
From the perspective of an employee working from home, network drive mapping, printing services, e-mail sessions, database queries, and other network services and applications are all finished with the company. Further, since the mobility management server continued to proxy the laptop computer session, none of the network applications terminated the laptop computer session on the way home from the employee's office. In this manner, the present invention effectively enables a session to be sustained through the same or multiple high-performance and useful network media in the above situation and other situations.
[0257]
(Application to mobile inventory management and warehouse)
Assume a large warehouse or retail chain. In this premises, an employee who performs inventory management manages inventory of goods using a personal laptop computer and a vehicle (that is, a truck or a forklift) equipped with a handheld data collection unit, a terminal device, and the like.
[0258]
Warehouse and retail employees are often inexperienced computer users who do not know the network subnet and need supervision. According to the present invention, a warehouse user can construct a system that can be used immediately without feeling the complexity of the mobile network. Warehouse users can move in and out of range of access points, suspend and resume their mobile terminal systems 104, and change locations without concern for host sessions, network addresses, or transport connections. Can be. Further, the management software of the mobility management server 102 provides metrics such as the number of processes used to measure the production capacity of the employee to management personnel. Management can also use the network subnet and access point to determine the physical location where the employee was last located.
[0259]
(Application to mobile medicine)
A large hospital that performs network communication between several buildings using wireless LAN technology is assumed. Each building is on its own subnet. According to the present invention, it becomes possible for a nurse or a doctor to move from a hospital room to a patient room with a handheld personal computer or terminal and read and write patient information from a hospital database. Immediate access to the latest articles on drug treatments and medical procedures is provided through local databases and the World Wide Web. The present invention allows for continuous connection to the mobile terminal system 104 so that a pager (one-way or two-way) is no longer needed while in the hospital. The message is sent directly to the medical personnel via the mobile terminal system 104. As with warehouse employees, healthcare professionals do not need to know what mobile networks they are using. Further, the mobile terminal system 104 prevents medical personnel from performing wireless transmission in an area where wireless transmission is undesirable (for example, a place where radio wave radiation may interfere with medical equipment). It can be easily restarted from the place where it was made, and re-connected.
[0260]
(Truck transportation and freight transportation)
The shipping company uses the present invention to understand the status of the cargo. While in the warehouse, the mobile terminal system 104 uses LAN technology to update the number of shipments in the warehouse. While away from the local service, the mobile terminal system 104 can maintain cargo status and location in real time using a Wide Area WAN service such as CDPD or ARDIS. The mobile terminal system 104 automatically switches between network infrastructures, so that the transporter does not feel the complexity of the network topology.
Mobile companies
The employees of the company are 802.11. The system according to the present invention is used to access e-mail, web content, and message services while on a corporate premises with such infrastructure. The cost of maintaining pager services and other mobile device services is reduced as they are no longer needed. In contrast to the costly “pay-per-use” model offered by many of the existing mobile device services, mobile infrastructure can be purchased with a single funding.
[0261]
(IP multiplication)
If an organization has a LAN that needs to connect to the Internet, the LAN administrator has two options. The first option is to obtain a global address to be assigned to all computers on the LAN, and the second option is to obtain some global addresses and use them as address multipliers. The use of the mobility management server 102 according to the invention. Obtaining a large number of IP addresses is often expensive or impossible. Small businesses that use the Internet Service Provider (ISP) to access the Internet will only use IP addresses assigned by the ISP. The number of IP addresses limits the number of computers that can connect to the Internet at the same time. Also, the ISP charges for each connection, so the more computers that require an Internet connection, the more expensive this method is.
[0262]
Using the mobility management server 102 according to the present invention as an address multiplier can solve many of these problems. The enterprise can use the mobility management server 102 as hardware for connecting to the Internet via the ISP. Thereby, the mobile terminal system 104 can be easily connected. Since all connections to the Internet are made through the mobility management server 102, only one address needs to be obtained from the ISP. Thus, by using the present invention as an address multiplier, companies need only obtain a small number (often one) of addresses and accounts from the ISP, and have simultaneous access to the Internet over the entire LAN. (Provided that sufficient bandwidth is provided).
[0263]
Although the present invention has been described above with examples that are presently the most practical and preferred embodiments, the present invention is not limited to the disclosed embodiments, and can be variously modified and equivalently configured within the scope of the appended claims. I do.
[Brief description of the drawings]
FIG.
1 is an overall view of a mobile computing network of the present invention.
FIG. 2
2 illustrates a software architecture of a mobile terminal system and a mobility management server.
FIG. 2A
Fig. 4 illustrates steps for performing information transmission between a mobile terminal system and a mobility management server.
FIG. 3
1 illustrates a mobile interceptor architecture.
FIG. 3A
5 is a flowchart illustrating steps performed by a mobile interceptor.
FIG. 3B
5 is a flowchart illustrating steps performed by an RPC engine that handles an RPC work request.
FIG. 4
5 is a flowchart illustrating steps for processing an RPC work request.
FIG. 5
5 is a flowchart illustrating steps for processing an RPC work request.
FIG. 5A
5 is a flowchart illustrating steps for processing an RPC work request.
FIG. 5B
5 is a flowchart illustrating steps for processing an RPC work request.
FIG. 5C
5 is a flowchart illustrating steps for processing an RPC work request.
FIG. 6
7 illustrates a received work request.
FIG. 7
It shows how received work requests are dispatched to different priority queues.
FIG. 8
The processing of contents in the queues having different priorities is shown.
FIG. 9
The processing of contents in the queues having different priorities is shown.
FIG. 10A
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 10B
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 10C
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 11
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG.
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 12A
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 12B
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 12C
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 13A
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 13B
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 13C
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 14A
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 14B
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 15A
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG. 15B
2 illustrates steps performed to provide an Internet Mobility Protocol.
FIG.
4 illustrates a data structure of a listener.
FIG.
FIG. 2 illustrates steps for providing mobile interconnect roaming. FIG.
FIG. 17A
FIG. 2 illustrates steps for providing mobile interconnect roaming. FIG.
FIG.
FIG. 2 illustrates steps for providing mobile interconnect roaming. FIG.
FIG. 19A
FIG. 4 forms one flowchart illustrating a roaming process assisted by the interface.
FIG. 19B
FIG. 4 forms one flowchart illustrating a roaming process assisted by the interface.
FIG.
FIG. 5 illustrates a topology node data structure for roaming assisted by an interface.
FIG. 21
1 illustrates a technique for distributing a network address of a mobility management system to a mobile terminal system in a disconnected network topology.
FIG.
FIG. 22 shows an example in which the technique of FIG. 21 is used to realize secure communication.
FIG. 23
23 illustrates an example in which the technique of FIG. 21 is used for network address translation in a distributed network interface scenario.
FIG. 24
9 illustrates a policy management table.
FIG. 25
9 is a flowchart illustrating steps of a policy management process.

Claims (125)

ネットワーク接続ポイントを介してネットワークと接続されるモバイルコンピュータ装置を少なくとも一つ含むモバイル・コンピューティング・ネットワークであって、モバイルコンピュータ装置のロケーションを含む様々なメトリクスに基づくポリシー管理ルールを適用するポリシー管理手法を特徴とするモバイル・コンピューティング・ネットワーク。A mobile computing network including at least one mobile computing device connected to a network via a network connection point, wherein a policy management method applies policy management rules based on various metrics including a location of the mobile computing device. A mobile computing network characterized by: 前記ルールの属性についての処理は、モバイルコンピュータ装置あるいはモビリティ管理サーバのいずれか、またはその両方に対して分配され適用されることを特徴とする請求項1記載のネットワーク。The network according to claim 1, wherein the processing regarding the attribute of the rule is distributed and applied to either or both of the mobile computer device and the mobility management server. 前記ルールの優先順位は、そのようなテーブルの項目における位置で暗示されるか、あるいは期待動作を確実にするための順序が明白に記されることを特徴とする請求項1または2記載のネットワーク。3. A network as claimed in claim 1 or 2, wherein the priority of the rules is implied by their position in such a table entry or the order to ensure expected behavior is explicitly stated. . 前記ルールの属性のデータ保存は、中央管理サービスを介して局所的または集中的に管理されることを特徴とする請求項1、2または3記載のネットワーク。4. The network according to claim 1, wherein data storage of the attribute of the rule is locally or centrally managed through a central management service. 特定のアプリケーションの動作は、サービス費用、ネットワーク接続ポイント、信頼関係等を含む多数のメトリクスに基づいて修正されることを特徴とする請求項1〜4のいずれか1項に記載のネットワーク。The network of any of the preceding claims, wherein the behavior of a particular application is modified based on a number of metrics including service costs, network connection points, trust relationships, and the like. 動作修正の結果、前記ルールの属性に基づいて要求が許可、拒否、または遅延されることを特徴とする請求項1〜5のいずれか1項に記載のネットワーク。The network according to any one of claims 1 to 5, wherein as a result of the operation modification, a request is permitted, denied, or delayed based on an attribute of the rule. アプリケーションが既に開始されている場合でも、アプリケーションプロセスを修正するため、1つのルール、または一連のルールが呼び出されることを特徴とする請求項1〜6のいずれか1項に記載のネットワーク。7. The network according to claim 1, wherein a rule or a series of rules is invoked to modify the application process even if the application has already been started. 現在位置情報(ロケーション)は、アプリケーション動作を管理するため、あるいはモバイルコンピュータ装置の関連情報を提供するためにも使用されることを特徴とする請求項1〜7のいずれか1項に記載のネットワーク。The network according to any of the preceding claims, wherein the current location information (location) is also used for managing application operation or for providing relevant information of the mobile computing device. . 距離測定に伴う動作速度は、アプリケーションの動作または通信パスを変更するために使用されることを特徴とする請求項1〜8のいずれか1項に記載のネットワーク。The network according to any one of claims 1 to 8, wherein an operation speed associated with the distance measurement is used to change an operation of an application or a communication path. ロケーション情報の結果としてトポロジ情報が抽出され、表示されることを特徴とする請求項1〜9のいずれか1項に記載のネットワーク。The network according to any one of claims 1 to 9, wherein topology information is extracted and displayed as a result of the location information. ネットワーク接続ポイントを介してネットワークと接続されるモバイルコンピュータ装置を少なくとも一つ含むモバイル・コンピューティング・ネットワークにおいて、ネットワーク接続ポイントの識別子の少なくとも一部分に基づき、前記モバイルコンピュータ装置が異なるネットワーク・セグメントに移動したかどうか検出するインターフェイス補助ローミングリスナを備えることを特徴とするモバイル・コンピューティング・ネットワーク。In a mobile computing network including at least one mobile computer device connected to a network via a network connection point, the mobile computer device has moved to a different network segment based at least in part on an identifier of the network connection point. A mobile computing network comprising an interface-assisted roaming listener for detecting whether the mobile computing network is a mobile computing network. 前記モバイルコンピュータ装置はネットワーク・インターフェイス・アダプタを含み、前記インターフェイス補助ローミングリスナは前記ネットワーク・インターフェイス・アダプタから前記ネットワーク接続ポイントの識別子を取得することを特徴とする請求項11記載のネットワーク。The network of claim 11, wherein the mobile computing device includes a network interface adapter, and the interface assisted roaming listener obtains an identifier of the network connection point from the network interface adapter. 前記インターフェイス補助ローミングリスナは、前記ネットワーク接続ポイントの識別子をネットワーク接続についての詳細情報に相関させる情報を記憶するネットワーク・トポロジ・マップを保持することを特徴とする請求項11記載のネットワーク。The network of claim 11, wherein the interface assisted roaming listener maintains a network topology map that stores information correlating an identifier of the network connection point with detailed information about a network connection. 前記インターフェイス補助ローミングリスナは、前記ネットワークとの通信がいつ中断または再確立されるかを検出することを特徴とする請求項11記載のネットワーク。The network of claim 11, wherein the interface assisted roaming listener detects when communication with the network is interrupted or re-established. 前記インターフェイス補助ローミングリスナは、(a)ネットワーク通信の中断及び再確立、及び(b)前記ネットワーク接続ポイントの識別子の変化の検出を受けて、ローミング信号を生成することを特徴とする請求項14記載のネットワーク。The interface assisted roaming listener generates a roaming signal in response to (a) interruption and re-establishment of network communication and (b) detection of a change in an identifier of the network connection point. Network. モバイルコンピュータ装置において使用されるインターフェイスベースのリスナであって、インターフェイスベースのリスナは少なくとも1つのネットワーク・インターフェイス・アダプタからの情報と、少なくとも1つのネットワークスタックから入手可能な情報を統合して、前記モバイルコンピュータ装置が新しいネットワーク接続ポイントに移動したかどうか判定することを特徴とする、インターフェイスベースのリスナ。An interface-based listener for use in a mobile computing device, wherein the interface-based listener integrates information from at least one network interface adapter with information available from at least one network stack, and An interface-based listener for determining whether a computing device has moved to a new network connection point. ネットワーク接続ポイント情報を含むネットワーク接続情報を提供するネットワーク・トポロジ・マップを含むことを特徴とする請求項16記載のインターフェイスベースのリスナ。The interface-based listener of claim 16, including a network topology map providing network connection information including network connection point information. 上記リスナは学習情報に基づき前記ネットワーク・トポロジ・マップを動的に構成することを特徴とする請求項17記載のリスナ。The listener according to claim 17, wherein the listener dynamically configures the network topology map based on learning information. イベント発生に基づき、ステータスをチェックするステータスチェッカーを含むことを特徴とする請求項16記載のインターフェイスベースのリスナ。17. The interface-based listener of claim 16, including a status checker for checking status based on an event occurrence. 前記イベントはタイマーのタイムアウト、ローレベルのローミング・ドライバ・コールバック、ネットワーク・レベル・アクティビティ・ヒントのいずれかを含むことを特徴とする請求項16記載のインターフェイスベースのリスナ。The interface-based listener of claim 16, wherein the event comprises one of a timer timeout, a low-level roaming driver callback, and a network-level activity hint. モバイルコンピュータ装置が既に現在のネットワーク接続ポイントを訪れたかどうかインターフェイスに照会する接続情報探索部を含むことを特徴とする請求項16記載のインターフェイスベースのリスナ。The interface-based listener of claim 16, further comprising a connection information searcher that queries the interface if the mobile computing device has already visited the current network connection point. 新規のネットワーク・セグメントにおいて有効となる現行のアドレスを登録または再取得する接続構成を含むことを特徴とする請求項16記載のインターフェイスベースのリスナ。The interface-based listener of claim 16, including a connection configuration for registering or reacquiring a current address that becomes valid in a new network segment. インターフェイスから提供された情報の少なくとも一部分に基づいて、前記モバイルコンピュータ装置が異なるネットワーク・セグメントに移動したことの検出を受けてローミング信号を生成するローミング信号発生部を含むことを特徴とする請求項16記載のインターフェイスベースのリスナ。17. A roaming signal generator for generating a roaming signal upon detecting that the mobile computing device has moved to a different network segment based at least in part on information provided from an interface. The described interface-based listener. 予め割り当てられたアドレスがまだ有効かどうかを判定するヒューリスティック・アナライザをさらに含むことを特徴とする請求項23記載のインターフェイスベースのリスナ。The interface-based listener of claim 23, further comprising a heuristic analyzer that determines whether the pre-assigned address is still valid. モバイルノードが新しいネットワーク接続ポイントに移動したかどうか判定する方法であって、
(a)ネットワーク・インターフェイスからネットワーク接続ポイントの識別情報を受け取るステップと、
(b)前記ネットワーク接続ポイントの識別情報を使用して前記モバイルノードが新しいネットワーク接続ポイントに移動したかどうかを判定するステップと、
(c)前記ステップ(b)を受けて信号を生成するステップとを含むことを特徴とする方法。
A method for determining whether a mobile node has moved to a new network attachment point,
(A) receiving identification information of a network connection point from a network interface;
(B) using the identity of the network attachment point to determine whether the mobile node has moved to a new network attachment point;
(C) generating a signal in response to step (b).
請求項25記載の方法であって、
ネットワーク・トポロジ・マップを保持するステップ、及び前記ネットワーク・トポロジ・マップを使用して前記ステップ(c)を行うステップをさらに含むことを特徴とする方法。
26. The method of claim 25, wherein
Maintaining the network topology map, and using the network topology map to perform step (c).
請求項25記載の方法であって、
前記ステップ(c)はローミング信号を生成するステップを含むことを特徴とする方法。
26. The method of claim 25, wherein
The method of claim 1, wherein step (c) comprises generating a roaming signal.
請求項25記載の方法であって、
前記ステップ(b)はネットワーク・アダプタから前記ネットワーク接続ポイントの識別情報を取得するステップを含むことを特徴とする方法。
26. The method of claim 25, wherein
The method of claim 2, wherein step (b) comprises obtaining identification information of the network connection point from a network adapter.
請求項25記載の方法であって、
一般的な信号をサポートするネットワーク・インターフェイスが利用不可の場合、選択的ローミング検出メカニズムにフォールバックするステップをさらに含むことを特徴とする方法。
26. The method of claim 25, wherein
A method, further comprising the step of falling back to a selective roaming detection mechanism if a network interface supporting general signaling is unavailable.
請求項25記載の方法であって、
前記ネットワーク接続ポイント情報の少なくとも一部に応じて、代わりになるネットワーク接続パスの中から選択するステップをさらに含むことを特徴とする方法。
26. The method of claim 25, wherein
The method further comprising selecting from alternative network connection paths in response to at least a portion of the network connection point information.
非接続のネットワークを介したモバイルシステムとの通信を円滑にするための方法であって、
第1ネットワークを介してノードと前記モバイルシステム間の通信を確立するステップと、
前記第1ネットワークと非接続の少なくとも第2ネットワーク上の前記ノードを識別するデータを、前記第1ネットワークを介して前記モバイルシステムに送信するステップと、
前記第2ネットワークを介して前記モバイルシステムと前記ノードとの通信を確立するために前記データを使用するステップとを含むことを特徴とする方法。
A method for facilitating communication with a mobile system over a disconnected network,
Establishing communication between a node and the mobile system via a first network;
Transmitting data identifying the node on at least a second network not connected to the first network to the mobile system via the first network;
Using the data to establish communication between the mobile system and the node over the second network.
請求項31記載の方法であって、
前記第1ネットワークを介して前記ノードに前記データを送信する前に、前記第2ネットワークを介して前記ノードとの通信許可を付与するために前記モバイルシステムを認証するステップをさらに含むことを特徴とする請求項31記載の方法。
32. The method of claim 31, wherein
Authenticating the mobile system to grant permission to communicate with the node via the second network before transmitting the data to the node via the first network. 32. The method of claim 31, wherein the method comprises:
請求項21記載の方法であって、
前記送信ステップは、分配されるインターフェイスデータを前記第1ネットワークを介して前記モバイルシステムに送信するステップを含むことを特徴とする方法。
22. The method of claim 21, wherein
The method of transmitting, wherein the transmitting comprises transmitting distributed interface data to the mobile system via the first network.
前記モバイルコンピュータ装置のネットワーク・インターフェイス・アダプタは、前記ネットワークと物理的に接続されていることを特徴とする請求項12記載のネットワーク。The network of claim 12, wherein a network interface adapter of the mobile computing device is physically connected to the network. 前記モバイルコンピュータ装置はネットワーク接続ポイントと無線で通信することを特徴とする請求項12記載のネットワーク。The network of claim 12, wherein the mobile computing device communicates wirelessly with a network connection point. モバイルコンピュータシステムが複数の別個のネットワーク間を移動する際、モバイルコンピュータシステムとネットワークノードとの間での通信を維持するための方法であって、
第1ネットワークセグメントを介してモバイルシステムとノード間の通信を確立するステップと、
第1ネットワークセグメントを介して、それぞれ第1ネットワークセグメントとは別個の複数のさらなるネットワーク・セグメントを介して前記ノードとの通信を再確立する際に使用される情報をモバイルコンピュータシステムに送信するステップと、
前記情報を使用して、前記別個の複数のさらなるネットワーク・セグメントのいずれかを介してモバイルコンピュータシステムとノード間の通信を再確立するステップとを含むことを特徴とする方法。
A method for maintaining communication between a mobile computer system and a network node as the mobile computer system moves between a plurality of separate networks, the method comprising:
Establishing communication between the mobile system and the node via the first network segment;
Sending information to the mobile computer system via the first network segment for use in re-establishing communication with the node via a plurality of further network segments, each separate from the first network segment; ,
Using said information to re-establish communication between a mobile computer system and a node via any of said separate plurality of additional network segments.
請求項36記載の方法であって、
前記情報は分配されるインターフェイスデータを含むことを特徴とする方法。
37. The method of claim 36, wherein
The method wherein the information comprises interface data to be distributed.
複数の別個のセグメントを有するネットワークにおいて最少コストルーティングを提供するための方法において、
(a)ネットワークと、一時的に接続されたモバイルコンピュータ装置との間の通信を確立するステップと、
(b)一時的に接続されたモバイルコンピュータ装置が前記複数の別個のセグメント間を移動することができるローミング機構を使用するステップと、
(c)モバイル・コンピューティングのローミングに応じて、ネットワークとモバイルコンピュータ装置との間の通信を再確立するための選択的で有効なネットワークパスを効率的に自動選択可能にするように、少なくとも1つのポリシーパラメータに実行させるステップとを含むことを特徴とする方法。
In a method for providing least cost routing in a network having multiple distinct segments,
(A) establishing communication between the network and the temporarily connected mobile computing device;
(B) using a roaming mechanism that allows a temporarily connected mobile computing device to move between the plurality of distinct segments;
(C) at least one such that in response to roaming of mobile computing, a selective and effective network path for re-establishing communication between the network and the mobile computing device can be efficiently and automatically selected. Causing two policy parameters to execute.
請求項38記載の方法であって、
前記ポリシーパラメータは、帯域幅、1データ単位当りのコスト、およびサービス品質からなるグループの中から選択された要素を含むことを特徴とする方法。
39. The method of claim 38, wherein
The method of claim 1, wherein the policy parameters include an element selected from the group consisting of bandwidth, cost per data unit, and quality of service.
少なくとも1つのピア・コンピュータシステムと、物理的リンクを介してネットワークに接続された少なくとも一つのモバイルコンピュータ装置とを含むモバイル・コンピューティング・ネットワークにおいて、
ネットワークに接続されたサーバを含み、前記サーバは、モバイルコンピュータ装置への物理的リンクが一時的に中断される間に、モバイルコンピュータ装置とピア・コンピュータシステムとの間の継続的な仮想データストリーム接続を維持するために、モバイルコンピュータ装置とピア・コンピュータシステムとの間の通信をプロキシすることを特徴とするモバイル・コンピューティング・ネットワーク。
In a mobile computing network including at least one peer computer system and at least one mobile computing device connected to the network via a physical link,
A server connected to the network, the server providing a continuous virtual data stream connection between the mobile computing device and a peer computer system while the physical link to the mobile computing device is temporarily interrupted A mobile computing network, which proxies communication between mobile computing devices and peer computing systems to maintain communication.
前記モバイルコンピュータ装置は前記ネットワーク上の位置アドレスを有し、前記ピア・コンピュータシステムは仮想アドレスを使用して前記サーバと通信し、前記サーバは前記仮想アドレスを前記位置アドレスと対応付けることを特徴とする請求項40記載のネットワーク。The mobile computing device has a location address on the network, the peer computer system communicates with the server using a virtual address, and the server associates the virtual address with the location address. 41. The network of claim 40. 前記サーバは、前記モバイルコンピュータ装置がその位置アドレスをいつ変更したかを検出し、前記仮想アドレスを前記変更された位置アドレスと再び対応付けることを特徴とする請求項41記載のネットワーク。42. The network of claim 41, wherein the server detects when the mobile computing device has changed its location address and reassociates the virtual address with the changed location address. 前記サーバは、前記モバイルコンピュータ装置が一時的に圏外に出たり、またはローミング中である時に、前記モバイルコンピュータ装置に代わって、キューに入れ、前記ピア・コンピュータシステムからの要求に応答することを特徴とする請求項40記載のネットワーク。The server queues and responds to requests from the peer computing system on behalf of the mobile computing device when the mobile computing device is temporarily out of range or roaming. 41. The network of claim 40, wherein: 前記サーバは、従来のトランスポート・プロトコルを用いて前記モバイルコンピュータ装置と通信することを特徴とする請求項40記載のネットワーク。41. The network of claim 40, wherein the server communicates with the mobile computing device using a conventional transport protocol. 前記サーバは、遠隔プロシージャ・コールを用いて前記モバイルコンピュータ装置と通信することを特徴とする請求項44記載のネットワーク。The network of claim 44, wherein the server communicates with the mobile computing device using a remote procedure call. 前記サーバは、インターネット・モビリティ・プロトコルを用いて前記モバイルコンピュータ装置と通信することを特徴とする請求項44記載のネットワーク。The network of claim 44, wherein the server communicates with the mobile computing device using an Internet Mobility Protocol. 前記インターネット・モビリティ・プロトコルは、ユーザ設定可能なタイムアウトに基づいてデータグラムの自動除去を行うことを特徴とする請求項46記載のネットワーク。47. The network of claim 46, wherein the Internet Mobility Protocol performs automatic datagram removal based on a user-configurable timeout. 前記インターネット・モビリティ・プロトコルは、ユーザ設定可能な再試行に基づいてデータグラムの自動除去を行うことを特徴とする請求項46記載のネットワーク。47. The network of claim 46, wherein the Internet Mobility Protocol performs automatic datagram removal based on user-configurable retries. 前記サーバは、前記モバイルコンピュータ装置によるネットワーク・リソースの消費に関するユーザ毎のポリシー管理を行うことを特徴とする請求項40記載のネットワーク。The network of claim 40, wherein the server performs per-user policy management of network resource consumption by the mobile computing device. 前記サーバは、ユーザ設定可能なセッション優先順位を、前記モバイルコンピュータ装置の前記セッションに付与することを特徴とする請求項40記載のネットワーク。41. The network of claim 40, wherein the server assigns user configurable session priorities to the sessions of the mobile computing device. 前記モバイルネットワークは複数のサブネットワークを含み、前記モバイルコンピュータ装置は、前記モバイルコンピュータ装置によって前記複数のサブネットワークのうちの1つから前記複数のサブネットワークの別の1つへのローミングを可能にする他の手順と共に動的ホスト構成プロトコルを用いることを特徴とする請求項40記載のネットワーク。The mobile network includes a plurality of sub-networks, wherein the mobile computing device enables the mobile computing device to roam from one of the plurality of sub-networks to another of the plurality of sub-networks. 41. The network of claim 40, wherein a dynamic host configuration protocol is used with other procedures. 前記サーバは、モビリティ管理サーバを含むことを特徴とする請求項40記載のネットワーク。The network of claim 40, wherein the server comprises a mobility management server. 前記モバイルコンピュータ装置と前記サーバとを接続する少なくとも1つのモバイル相互接続をさらに含むことを特徴とする請求項40記載のネットワーク。The network of claim 40, further comprising at least one mobile interconnect connecting the mobile computing device and the server. モバイルコンピュータ環境において少なくとも一つのモバイルコンピュータ装置との持続的な接続を維持する方法であって、
前記モバイルコンピュータ装置と、少なくとも一つのさらなるコンピュータ装置との間の少なくとも1つのセッションを管理するステップと、
モバイルコンピュータ装置が圏外に出たり、サスペンドしたり、あるいはネットワークアドレスを変更した時に、セッションを維持するステップとを含むことを特徴とする方法。
A method for maintaining a persistent connection with at least one mobile computing device in a mobile computing environment, comprising:
Managing at least one session between the mobile computing device and at least one additional computing device;
Maintaining the session when the mobile computing device goes out of range, suspends, or changes the network address.
請求項54記載の方法であって、
前記セッションのために少なくとも1つのユーザ設定可能なセッション優先順位を付与するステップをさらに含むことを特徴とする方法。
The method according to claim 54, wherein
Assigning at least one user-configurable session priority for the session.
請求項54記載の方法であって、
前記管理ステップは、前記モバイルコンピュータ装置によるネットワーク・リソースの消費を管理するステップを含むことを特徴とする方法。
The method according to claim 54, wherein
The method of claim 1, wherein the managing step includes managing network resource consumption by the mobile computing device.
請求項54記載の方法であって、
前記モバイルコンピュータ環境は複数のサブネットワークを含み、前記維持ステップでは、動的ホスト構成プロトコルを使用して前記モバイルコンピュータ装置が前記サブネットワーク間を移動する時にセッションを維持することを特徴とする方法。
The method according to claim 54, wherein
The method, wherein the mobile computing environment includes a plurality of sub-networks, and wherein the maintaining comprises maintaining a session as the mobile computing device moves between the sub-networks using a dynamic host configuration protocol.
請求項54記載の方法であって、
前記管理ステップは、前記モバイルコンピュータ装置とデータグラムのやり取りを行い、少なくとも1つのユーザ設定可能なパラメータに基づき前記データグラムのうち信頼性の低いデータグラムを自動的に除去することを特徴とする方法。
The method according to claim 54, wherein
The managing step includes exchanging datagrams with the mobile computing device and automatically removing unreliable datagrams among the datagrams based on at least one user-configurable parameter. .
請求項58記載の方法であって、
前記ユーザ設定可能なパラメータは、タイムアウトを含むことを特徴とする方法。
59. The method of claim 58, wherein
The method wherein the user-configurable parameter comprises a timeout.
請求項58記載の方法であって、
前記ユーザ設定可能なパラメータは、ユーザ設定可能な再試行番号を含むことを特徴とする方法。
59. The method of claim 58, wherein
The method of claim 11, wherein the user-configurable parameter comprises a user-configurable retry number.
請求項54記載の方法であって、
前記モバイルコンピュータ装置に可変の位置アドレスを付与するステップをさらに含み、前記管理ステップはセッションと関連付けされる仮想アドレスに前記位置アドレスを対応付けするステップを含むことを特徴とする方法。
The method according to claim 54, wherein
The method further comprising assigning a variable location address to the mobile computing device, wherein the managing step comprises associating the location address with a virtual address associated with a session.
請求項54記載の方法であって、
前記管理ステップは、遠隔プロシージャ・コール・プロトコルを用いてモバイルコンピュータ装置と通信するステップを含むことを特徴とする方法。
The method according to claim 54, wherein
The method of claim 1, wherein the managing step comprises communicating with the mobile computing device using a remote procedure call protocol.
請求項54記載の方法であって、
前記維持ステップは、前記モバイルコンピュータ装置を前記モバイルコンピュータ環境に接続する物理的リンクの中断時に前記セッションの接続状態を維持することを特徴とする方法。
The method according to claim 54, wherein
The method of claim 1, wherein the maintaining step maintains a connection state of the session when a physical link connecting the mobile computing device to the mobile computing environment is interrupted.
請求項54記載の方法であって、
前記管理ステップは、少なくとも1つの標準的なトランスポート・プロトコルを用いて前記モバイルコンピュータ装置と通信するステップを含むことを特徴とする方法。
The method according to claim 54, wherein
The method of claim 1, wherein the managing step comprises communicating with the mobile computing device using at least one standard transport protocol.
請求項54記載の方法であって、
前記モバイルコンピュータ装置は複数のアプリケーションソースを含み、前記管理ステップは、前記複数のアプリケーションソースからのデータをストリームに融合するステップと、前記ストリームを送信するステップとを含むことを特徴とする方法。
The method according to claim 54, wherein
The method wherein the mobile computing device includes a plurality of application sources, and wherein the managing step includes the steps of fusing data from the plurality of application sources into a stream and transmitting the stream.
請求項65記載の方法であって、
前記ストリームから融合されたデータを逆多重化して、前記逆多重化されたデータを複数の関連する目的地に送信するステップをさらに含むことを特徴とする方法。
66. The method of claim 65, wherein
The method further comprising demultiplexing the fused data from the stream and transmitting the demultiplexed data to a plurality of associated destinations.
請求項65記載の方法であって、
前記ストリームはフレームを含み、前記融合処理は、モバイルコンピュータ環境の最大伝送単位に適合するように、前記フレームに対して動的なサイズ変更を行う処理を含むことを特徴とする方法。
66. The method of claim 65, wherein
The method of claim 1, wherein the stream includes frames, and wherein the coalescing includes dynamically resizing the frames to fit a maximum transmission unit of a mobile computing environment.
請求項65記載の方法であって、
前記融合処理は、信頼性の低いデータのセマンティクスを維持する処理と、前記信頼性の低いデータを前記セマンティクスに基づき選択的に破棄する処理とを含むことを特徴とする方法。
66. The method of claim 65, wherein
The method according to claim 1, wherein the fusion process includes a process of maintaining semantics of unreliable data, and a process of selectively discarding the unreliable data based on the semantics.
請求項54記載の方法であって、
前記管理ステップは、前記モバイルコンピュータ装置へのメッセージの保証配信、および/または前記モバイルコンピュータ装置からのメッセージの保証配信を行う処理を含むことを特徴とする方法。
The method according to claim 54, wherein
The method wherein the managing step comprises a process of providing guaranteed delivery of messages to the mobile computing device and / or providing guaranteed delivery of messages from the mobile computing device.
請求項54記載の方法であって、
前記管理ステップは、前記モバイルコンピュータ装置がどのネットワーク・リソースにアクセス可能かを制御する処理を含むことを特徴とする方法。
The method according to claim 54, wherein
The method of claim 1, wherein the managing step comprises controlling which network resources the mobile computing device can access.
少なくとも一つのさらなるコンピュータ装置を含むモバイルコンピュータ環境において少なくとも一つのモバイルコンピュータ装置との持続的な接続を維持するためのサーバであって、
モバイルコンピュータ装置が圏外に出たり、サスペンドしたり、あるいはネットワークアドレスを変更した時にセッションを維持し、前記モバイルコンピュータ装置と少なくとも一つのさらなるコンピュータ装置間の少なくとも1つのセッションを管理するセッション・マネージャを含むサーバ。
A server for maintaining a persistent connection with at least one mobile computing device in a mobile computing environment including at least one additional computing device,
A session manager that maintains a session when the mobile computing device goes out of service, suspends, or changes a network address, and manages at least one session between the mobile computing device and at least one additional computing device. server.
前記セッション・マネージャは、前記セッションのためにユーザ設定可能なセッション優先順位を少なくとも1つ付与するセッション優先キューを含むことを特徴とする請求項71記載のサーバ。The server of claim 71, wherein the session manager includes a session priority queue that assigns at least one user-configurable session priority for the session. 前記セッション・マネージャは、前記モバイルコンピュータ装置によるネットワーク・リソースの消費を管理する手段を含むことを特徴とする請求項71記載のサーバ。The server of claim 71, wherein the session manager includes means for managing network resource consumption by the mobile computing device. 前記モバイルコンピュータ環境は、複数のサブネットワークを含み、前記セッション・マネージャは、動的ホスト構成プロトコルを使用して前記モバイルコンピュータ装置が前記サブネットワーク間を移動する時にセッションを維持することを特徴とする請求項71記載のサーバ。The mobile computing environment includes a plurality of sub-networks, and the session manager maintains a session as the mobile computing device moves between the sub-networks using a dynamic host configuration protocol. 72. The server according to claim 71. 前記セッション・マネージャは、前記モバイルコンピュータ装置とデータグラムのやり取りを行い、少なくとも1つのユーザ設定可能なパラメータに基づき前記データグラムのうち信頼性の低いデータグラムを自動的に除去することを特徴とする請求項71記載のサーバ。The session manager exchanges datagrams with the mobile computing device and automatically removes unreliable datagrams among the datagrams based on at least one user-configurable parameter. 72. The server according to claim 71. 前記ユーザ設定可能なパラメータは、タイムアウトを含むことを特徴とする請求項75記載のサーバ。The server of claim 75, wherein the user configurable parameters include a timeout. 前記ユーザ設定可能なパラメータは、ユーザ設定可能な再試行番号を含むことを特徴とする請求項75記載のサーバ。The server of claim 75, wherein the user configurable parameter comprises a user configurable retry number. 前記モバイルコンピュータ環境は、前記モバイルコンピュータ装置に可変の位置アドレスを付与し、前記セッション・マネージャはセッションと関連付けされる仮想アドレスに前記位置アドレスを対応付けすることを特徴とする請求項71記載のサーバ。72. The server of claim 71, wherein the mobile computing environment assigns a variable location address to the mobile computing device, and the session manager associates the location address with a virtual address associated with a session. . 前記セッション・マネージャは、遠隔プロシージャ・コール・プロトコルを用いてモバイルコンピュータ装置と通信することを特徴とする請求項71記載のサーバ。The server of claim 71, wherein the session manager communicates with the mobile computing device using a remote procedure call protocol. 前記モバイルコンピュータ環境は、前記モバイルコンピュータ装置を前記モバイルコンピュータ環境に接続する少なくとも1つの物理的リンクを含み、前記セッション・マネージャは、前記物理的リンクの中断時に前記セッションの接続状態を維持することを特徴とする請求項71記載のサーバ。The mobile computing environment includes at least one physical link connecting the mobile computing device to the mobile computing environment, and the session manager maintains a connection state for the session upon interruption of the physical link. 73. The server according to claim 71, wherein the server comprises: 前記セッション・マネージャは、少なくとも1つの標準的なトランスポート・プロトコルを用いて前記モバイルコンピュータ装置と通信することを特徴とする請求項71記載のサーバ。The server of claim 71, wherein the session manager communicates with the mobile computing device using at least one standard transport protocol. 前記モバイルコンピュータ装置は複数のアプリケーションソースを含み、前記セッション・マネージャは、前記複数のアプリケーションソースに関連するデータをストリームに融合して、前記ストリームを送信することを特徴とする請求項71記載のサーバ。The server of claim 71, wherein the mobile computing device includes a plurality of application sources, and wherein the session manager fuses data associated with the plurality of application sources into a stream and sends the stream. . 前記モバイルコンピュータ装置は複数のアプリケーションソースを含み、前記セッション・マネージャは、前記複数のアプリケーションソースからの融合されたデータを逆多重化して、前記逆多重化されたデータを複数の関連する目的地に送信することを特徴とする請求項71記載のサーバ。The mobile computing device includes a plurality of application sources, and the session manager demultiplexes the merged data from the plurality of application sources to transfer the demultiplexed data to a plurality of associated destinations. 72. The server according to claim 71, wherein the server transmits. 前記セッション・マネージャは、フレームを用いて前記モバイルコンピュータ装置と通信し、モバイルコンピュータ環境の最大伝送単位に適合するように、前記フレームに対して動的なサイズ変更を行うことを特徴とする請求項71記載のサーバ。The method of claim 11, wherein the session manager communicates with the mobile computing device using frames and dynamically resizes the frames to conform to a maximum transmission unit of a mobile computing environment. 71. The server according to 71. 前記セッション・マネージャは、信頼性の低いデータのセマンティクスを維持し、前記信頼性の低いデータを前記セマンティクスに基づき選択的に破棄することを特徴とする請求項71記載のサーバ。The server of claim 71, wherein the session manager maintains semantics of unreliable data and selectively discards the unreliable data based on the semantics. 前記セッション・マネージャは、前記モバイルコンピュータ装置へのメッセージの保証配信、および/または前記モバイルコンピュータ装置からのメッセージの保証配信を行うことを特徴とする請求項71記載のサーバ。72. The server of claim 71, wherein the session manager performs guaranteed delivery of messages to the mobile computing device and / or guaranteed delivery of messages from the mobile computing device. 前記セッション・マネージャは、前記モバイルコンピュータ装置がアクセス可能なネットワーク・リソースの制御を行うことを特徴とする請求項71記載のサーバ。The server of claim 71, wherein the session manager controls network resources accessible to the mobile computing device. プロキシ・サーバを含むモバイルコンピュータ環境において、モバイルコンピュータ装置が圏外に出たり、サスペンドしたり、あるいはネットワークアドレスを変更した時に、少なくとも一つのさらなるコンピュータ装置と持続的な仮想接続を維持するモバイルコンピュータ装置であって、
トランスポート・ドライバ・インターフェイスと、
前記トランスポート・ドライバ・インターフェイスと接続されるモバイル・インターセプタを含み、
前記モバイル・インターセプタは、前記トランスポート・ドライバ・インターフェイスでのネットワークサービス要求を傍受し、前記ネットワークサービス要求に応じて、遠隔プロシージャ・コールを生成し、前記遠隔プロシージャ・コールを前記プロキシ・サーバに送信することを特徴とするモバイルコンピュータ装置。
In a mobile computing environment that includes a proxy server, a mobile computing device that maintains a persistent virtual connection with at least one additional computing device when the mobile computing device goes out of range, suspends, or changes its network address. So,
A transport driver interface,
A mobile interceptor connected to the transport driver interface,
The mobile interceptor intercepts a network service request at the transport driver interface, generates a remote procedure call in response to the network service request, and sends the remote procedure call to the proxy server. A mobile computer device, comprising:
前記モバイル・インターセプタは、ユーザ設定可能なセッション優先順位を少なくとも1つ付与するセッション優先キューを含むことを特徴とする請求項88記載のモバイルコンピュータ装置。89. The mobile computing device of claim 88, wherein the mobile interceptor includes a session priority queue that assigns at least one user-configurable session priority. 前記モバイル・インターセプタは、前記モバイルコンピュータ装置によるネットワーク・リソースの消費を管理する手段を含むことを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing device of claim 88, wherein the mobile interceptor includes means for managing network resource consumption by the mobile computing device. 前記モバイルコンピュータ環境は、複数のサブネットワークを含み、前記モバイルコンピュータ装置は、前記モバイルコンピュータ装置が前記サブネットワーク間を移動する時に位置アドレスを取得するために動的ホスト構成プロトコルを使用する手段をさらに含むことを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing environment includes a plurality of sub-networks, the mobile computing device further comprising means for using a dynamic host configuration protocol to obtain a location address as the mobile computing device moves between the sub-networks. 89. The mobile computing device of claim 88, comprising: 前記モバイル・インターセプタは、前記プロキシ・サーバとデータグラムのやり取りを行い、少なくとも1つのユーザ設定可能なパラメータに基づき前記データグラムのうち信頼性の低いデータグラムを自動的に除去することを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile interceptor exchanges datagrams with the proxy server and automatically removes unreliable datagrams among the datagrams based on at least one user-configurable parameter. 90. The mobile computing device of claim 88. 前記ユーザ設定可能なパラメータは、タイムアウトを含むことを特徴とする請求項92記載のモバイルコンピュータ装置。The mobile computing device of claim 92, wherein the user configurable parameter comprises a timeout. 前記ユーザ設定可能なパラメータは、ユーザ設定可能な再試行番号を含むことを特徴とする請求項92記載のモバイルコンピュータ装置。The mobile computing device of claim 92, wherein the user-configurable parameter comprises a user-configurable retry number. 前記モバイルコンピュータ装置は、前記モビリティ管理サーバを仮想アドレスと対応付ける、関連付けされた可変の位置アドレスを有することを特徴とする請求項88記載のモバイルコンピュータ装置。90. The mobile computing device of claim 88, wherein the mobile computing device has an associated variable location address that associates the mobility management server with a virtual address. 前記モバイル・インターセプタは、遠隔プロシージャ・コール・プロトコルを用いて前記モビリティ管理サーバと通信することを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing device of claim 88, wherein the mobile interceptor communicates with the mobility management server using a remote procedure call protocol. 前記モバイルコンピュータ環境は、前記モバイルコンピュータ装置を前記モバイルコンピュータ環境に接続する少なくとも1つの物理的リンクを含み、前記モバイル・インターセプタは、前記物理的リンクでの中断後に前記モビリティ管理サーバから少なくとも1つのセッションの更新された接続状態情報を受け取ることを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing environment includes at least one physical link connecting the mobile computing device to the mobile computing environment, and the mobile interceptor includes at least one session from the mobility management server after an interruption on the physical link. 89. The mobile computing device of claim 88, receiving updated connection state information. 前記モバイルコンピュータ装置は標準的なトランスポート・プロトコル・ハンドラを含み、前記モバイル・インターセプタは前記標準的なトランスポート・プロトコル・ハンドラを介して前記モビリティ管理サーバと通信することを特徴とする請求項88記載のモバイルコンピュータ装置。89. The mobile computing device includes a standard transport protocol handler, and the mobile interceptor communicates with the mobility management server via the standard transport protocol handler. A mobile computing device as described. 前記モバイルコンピュータ装置は複数のアプリケーションソースを含み、前記モバイル・インターセプタは前記複数のアプリケーションソースに関連するデータをストリームに融合して、前記ストリームを前記モビリティ管理サーバに送信することを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing device includes a plurality of application sources, wherein the mobile interceptor fuses data associated with the plurality of application sources into a stream and sends the stream to the mobility management server. 89. The mobile computing device of claim 88. 前記モバイルコンピュータ装置は複数のアプリケーション目的地を含み、前記モバイル・インターセプタは、前記複数のアプリケーションソースからの融合されたデータを逆多重化して、前記逆多重化されたデータを複数のアプリケーション目的地に送信することを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing device includes a plurality of application destinations, and the mobile interceptor demultiplexes the merged data from the plurality of application sources and transfers the demultiplexed data to a plurality of application destinations. 89. The mobile computing device of claim 88, wherein transmitting. 前記モバイル・インターセプタは、フレームを用いて前記プロキシ・サーバと通信し、モバイルコンピュータ環境の最大伝送単位に適合するように、前記フレームに対して動的なサイズ変更を行うことを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile interceptor communicates with the proxy server using a frame and dynamically resizes the frame to conform to a maximum transmission unit of a mobile computing environment. 89. The mobile computing device of claim 88. 前記モバイル・インターセプタは、信頼性の低いデータのセマンティクスを維持し、前記信頼性の低いデータを前記セマンティクスに基づき選択的に破棄することを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing device of claim 88, wherein the mobile interceptor maintains unreliable data semantics and selectively discards the unreliable data based on the semantics. 前記モバイル・インターセプタは、前記プロキシ・サーバへのメッセージの保証配信、および/または前記プロキシ・サーバからのメッセージの保証配信を行うことを特徴とする請求項88記載のモバイルコンピュータ装置。89. The mobile computing device of claim 88, wherein the mobile interceptor performs guaranteed delivery of messages to the proxy server and / or guaranteed delivery of messages from the proxy server. 前記モバイル・インターセプタは、前記モバイルコンピュータ装置がアクセス可能なモバイルコンピュータ環境のリソースの制御を行うことを特徴とする請求項88記載のモバイルコンピュータ装置。The mobile computing device of claim 88, wherein the mobile interceptor controls resources of a mobile computing environment accessible to the mobile computing device. トランスポート・ドライバ・インターフェイスと、
前記トランスポート・ドライバ・インターフェイスと接続されるモバイル・インターセプタを含む少なくとも一つのモバイルコンピュータ装置を含むモバイルコンピュータ環境であって、
前記モバイル・インターセプタは、前記トランスポート・ドライバ・インターフェイスでのネットワークサービス要求を傍受し、前記ネットワークサービス要求を受けて、遠隔プロシージャ・コールを生成し、前記遠隔プロシージャ・コールを少なくとも1つのプロキシ・サーバに送信し、
前記プロキシ・サーバは、前記モバイル・インターセプタによって送信された前記遠隔プロシージャ・コールを受信及び処理するワーク・ディスパッチャを少なくとも1つ含み、前記プロキシ・サーバは、前記モバイルコンピュータ装置が前記モバイルコンピュータ環境と一時的に切断された時に、前記モバイルコンピュータ装置の代わりに仮想セッションをプロキシするプロキシ・キューを含むことを特徴とするモバイルコンピュータ環境。
A transport driver interface,
A mobile computing environment including at least one mobile computing device including a mobile interceptor connected with the transport driver interface,
The mobile interceptor intercepts a network service request at the transport driver interface, generates a remote procedure call in response to the network service request, and directs the remote procedure call to at least one proxy server. Send to
The proxy server includes at least one work dispatcher that receives and processes the remote procedure call sent by the mobile interceptor, wherein the proxy server establishes a connection between the mobile computing device and the mobile computing environment. A mobile computing environment comprising a proxy queue for proxying a virtual session on behalf of the mobile computing device when disconnected.
ネットワーク接続ポイントを介してネットワークと接続されるモバイルコンピュータ装置を少なくとも一つ含むモバイル・コンピューティング・ネットワークにおいて、ネットワーク接続ポイントの識別子の少なくとも一部分に基づき、前記モバイルコンピュータ装置が異なるネットワーク・セグメントに移動したかどうか検出するインターフェイス補助ローミングリスナを含むことを特徴とするモバイル・コンピューティング・ネットワーク。In a mobile computing network including at least one mobile computer device connected to a network via a network connection point, the mobile computer device has moved to a different network segment based at least in part on an identifier of the network connection point. A mobile computing network, comprising: an interface assisted roaming listener for detecting whether the mobile computing network is a roaming listener. 前記モバイルコンピュータ装置はネットワーク・インターフェイス・アダプタを含み、前記リスナは前記ネットワーク・インターフェイス・アダプタから前記ネットワーク接続ポイントの識別子を取得することを特徴とする請求項106記載のネットワーク。107. The network of claim 106, wherein said mobile computing device includes a network interface adapter, and wherein said listener obtains an identifier of said network connection point from said network interface adapter. 前記リスナは、前記ネットワーク接続ポイントの識別子をネットワーク接続についての詳細情報に相関させる情報を記憶するネットワーク・トポロジ・マップを保持することを特徴とする請求項106記載のネットワーク。107. The network of claim 106, wherein the listener maintains a network topology map that stores information correlating an identifier of the network connection point with detailed information about a network connection. 前記リスナは、前記ネットワークとの通信がいつ中断または再確立されるかを検出することを特徴とする請求項106記載のネットワーク。107. The network of claim 106, wherein the listener detects when communication with the network is interrupted or re-established. 前記インターフェイス補助ローミングリスナは、(a)ネットワーク通信の中断及び再確立、及び(b)前記ネットワーク接続ポイントの識別子の変化の検出を受けて、ローミング信号を生成することを特徴とする請求項109記載のネットワーク。110. The interface-assisted roaming listener generates a roaming signal in response to (a) interruption and re-establishment of network communication and (b) detection of a change in an identifier of the network connection point. Network. 前記モバイルコンピュータ装置において使用されるインターフェイスベースのリスナであって、インターフェイスベースのリスナは少なくとも1つのネットワーク・インターフェイス・アダプタからの情報と、少なくとも1つのネットワークスタックから入手可能な情報を統合して、前記モバイルコンピュータ装置が新しいネットワーク接続ポイントに移動したかどうか判定することを特徴とするインターフェイスベースのリスナ。An interface-based listener for use in the mobile computing device, wherein the interface-based listener integrates information from at least one network interface adapter with information available from at least one network stack, An interface-based listener for determining whether a mobile computing device has moved to a new network connection point. ネットワーク接続ポイント情報を含むネットワーク接続情報を提供するネットワーク・トポロジ・マップを含むことを特徴とする請求項111記載のインターフェイスベースのリスナ。112. The interface-based listener of claim 111, comprising a network topology map that provides network connection information including network connection point information. 上記リスナは学習情報に基づき前記ネットワーク・トポロジ・マップを動的に構成することを特徴とする請求項112記載のリスナ。The listener of claim 112, wherein the listener dynamically configures the network topology map based on learning information. イベント発生に基づき、ステータスをチェックするステータスチェッカーを含むことを特徴とする請求項111記載のインターフェイスベースのリスナ。112. The interface-based listener of claim 111, including a status checker for checking status based on an event occurrence. 前記イベントはタイマーのタイムアウト、ローレベルのローミング・ドライバ・コールバック、ネットワーク・レベル・アクティビティ・ヒントのいずれかを含むことを特徴とする請求項111記載のインターフェイスベースのリスナ。112. The interface-based listener of claim 111, wherein the event comprises one of a timer timeout, a low level roaming driver callback, and a network level activity hint. モバイルコンピュータ装置が既に現在のネットワーク接続ポイントを訪れたかどうかインターフェイスに照会する接続情報探索部を含むことを特徴とする請求項111記載のインターフェイスベースのリスナ。112. The interface-based listener of claim 111, comprising a connection information searcher that queries the interface if the mobile computing device has already visited the current network connection point. 新しいネットワーク・セグメントにおいて有効となる現行のアドレスを登録または再取得する接続構成を含むことを特徴とする請求項111記載のインターフェイスベースのリスナ。112. The interface-based listener of claim 111, comprising a connection configuration that registers or reacquires a current address that becomes valid in the new network segment. インターフェイスから提供された情報の少なくとも一部分に基づいて、前記モバイルコンピュータ装置が異なるネットワーク・セグメントに移動したことの検出を受けてローミング信号を生成するローミング信号発生器を含むことを特徴とする請求項111記載のインターフェイスベースのリスナ。111. A roaming signal generator for generating a roaming signal upon detecting that the mobile computing device has moved to a different network segment based at least in part on information provided from an interface. The described interface-based listener. 予め割り当てられたアドレスがまだ有効かどうかを判定するヒューリスティック・アナライザをさらに含むことを特徴とする請求項118記載のインターフェイスベースのリスナ。119. The interface-based listener of claim 118, further comprising a heuristic analyzer that determines whether a pre-assigned address is still valid. モバイルノードが新しいネットワーク接続ポイントに移動したかどうか判定する方法であって、
(a)ネットワーク・インターフェイスからネットワーク接続ポイントの識別情報を受け取るステップと、
(b)前記ネットワーク接続ポイントの識別情報を使用して前記モバイルノードが新しいネットワーク接続ポイントに移動したかどうかを判定するステップと、
(c)前記ステップ(b)を受けて信号を生成するステップを含むことを特徴とする方法。
A method for determining whether a mobile node has moved to a new network attachment point,
(A) receiving identification information of a network connection point from a network interface;
(B) using the identity of the network attachment point to determine whether the mobile node has moved to a new network attachment point;
(C) generating a signal in response to step (b).
請求項120記載の方法であって、
ネットワーク・トポロジ・マップを保持するステップ、及び前記ネットワーク・トポロジ・マップを使用して前記ステップ(c)を行うステップをさらに含むことを特徴とする方法。
121. The method of claim 120,
Maintaining the network topology map, and using the network topology map to perform step (c).
請求項120記載の方法であって、
前記ステップ(c)はローミング信号を生成するステップを含むことを特徴とする方法。
121. The method of claim 120,
The method of claim 1, wherein step (c) comprises generating a roaming signal.
請求項120記載の方法であって、
前記ステップ(b)はネットワーク・アダプタから前記ネットワーク接続ポイントの識別情報を取得するステップを含むことを特徴とする方法。
121. The method of claim 120,
The method of claim 2, wherein step (b) comprises obtaining identification information of the network connection point from a network adapter.
請求項120記載の方法であって、
一般的な信号をサポートするネットワーク・インターフェイスが利用不可の場合、選択的ローミング検出機構にフォールバックするステップをさらに含むことを特徴とする方法。
121. The method of claim 120,
The method, further comprising the step of falling back to a selective roaming detection mechanism if a network interface supporting general signaling is unavailable.
請求項120記載の方法であって、
前記ネットワーク接続ポイント情報の少なくとも一部分を受けて、択一的なネットワーク接続パスから選択するステップをさらに含むことを特徴とする方法。
121. The method of claim 120,
Receiving at least a portion of the network connection point information and selecting from an alternative network connection path.
JP2002527943A 2000-09-12 2001-09-12 Method and apparatus for providing mobile and other intermittent connectivity in a computer environment Pending JP2004509539A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/660,500 US7293107B1 (en) 1998-10-09 2000-09-12 Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US27461501P 2001-03-12 2001-03-12
PCT/US2001/028391 WO2002023362A1 (en) 2000-09-12 2001-09-12 Method and apparatus for providing mobile and other intermittent connectivity in a computing environment

Publications (2)

Publication Number Publication Date
JP2004509539A true JP2004509539A (en) 2004-03-25
JP2004509539A5 JP2004509539A5 (en) 2005-04-07

Family

ID=26956948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002527943A Pending JP2004509539A (en) 2000-09-12 2001-09-12 Method and apparatus for providing mobile and other intermittent connectivity in a computer environment

Country Status (5)

Country Link
EP (1) EP1364296A4 (en)
JP (1) JP2004509539A (en)
AU (1) AU2001289010A1 (en)
CA (1) CA2421609A1 (en)
WO (1) WO2002023362A1 (en)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006352337A (en) * 2005-06-14 2006-12-28 Ntt Docomo Inc Communication apparatus and communication control method
JP2007306577A (en) * 2002-08-01 2007-11-22 Research In Motion Ltd Always-on wireless internet protocol communication
JP2008508837A (en) * 2004-06-10 2008-03-21 ネットモーション ワイヤレス インコーポレイテッド Method and apparatus for providing mobile and other intermittent connectivity in a computer environment
JP2009119849A (en) * 2007-10-23 2009-06-04 Ricoh Co Ltd Information processor, information processing method, and program
JP2009532765A (en) * 2006-03-31 2009-09-10 アルカテル−ルーセント ユーエスエー インコーポレーテッド Method and device for maintaining a session based on presence state information
JP2009535873A (en) * 2006-04-28 2009-10-01 ジェムアルト エスアー Data transmission between server and communication object
US7711835B2 (en) 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US7748032B2 (en) 2004-09-30 2010-06-29 Citrix Systems, Inc. Method and apparatus for associating tickets in a ticket hierarchy
US7760693B2 (en) 2004-12-10 2010-07-20 Nec Corporation Packet distribution system, PAN registration device, PAN control device, packet transfer device, and packet distribution method
US7779034B2 (en) 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US7870153B2 (en) 2006-01-24 2011-01-11 Citrix Systems, Inc. Methods and systems for executing, by a virtual machine, an application program requested by a client machine
JP2011070279A (en) * 2009-09-24 2011-04-07 Fujifilm Corp Application server and method of controlling operation of the same
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US8302101B2 (en) 2004-09-30 2012-10-30 Citrix Systems, Inc. Methods and systems for accessing, by application programs, resources provided by an operating system
JP2013520138A (en) * 2010-02-16 2013-05-30 クゥアルコム・インコーポレイテッド Method and apparatus for providing intelligent radio selection for legacy and non-legacy applications
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
US8731547B2 (en) 2007-09-27 2014-05-20 Panasonic Corporation Network node and mobile terminal
US9009720B2 (en) 2007-10-20 2015-04-14 Citrix Systems, Inc. Method and system for communicating between isolation environments
US9178965B2 (en) 2011-03-18 2015-11-03 Qualcomm Incorporated Systems and methods for synchronization of application communications
US9264868B2 (en) 2011-01-19 2016-02-16 Qualcomm Incorporated Management of network access requests
JP2017502394A (en) * 2013-12-05 2017-01-19 クラウドストライク インコーポレイテッド Interception of RPC calls

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078727B2 (en) 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7293107B1 (en) 1998-10-09 2007-11-06 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US7562146B2 (en) * 2003-10-10 2009-07-14 Citrix Systems, Inc. Encapsulating protocol for session persistence and reliability
JP2005515700A (en) * 2002-01-14 2005-05-26 ネットモーション ワイヤレス インコーポレイテッド Methods and devices for providing secure connections in mobile computing environments and other intermittent computing environments
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7661129B2 (en) 2002-02-26 2010-02-09 Citrix Systems, Inc. Secure traversal of network components
US8068833B2 (en) * 2002-04-26 2011-11-29 Nokia Corporation Candidate access router discovery
JP4290967B2 (en) 2002-11-26 2009-07-08 Necインフロンティア株式会社 Wireless LAN network QoS control system, base station, terminal, QoS control method and program
FR2856540A1 (en) * 2003-06-19 2004-12-24 Filfree Networks WIRELESS LOCAL AREA NETWORK ARCHITECTURE
DE10346007A1 (en) * 2003-10-02 2005-04-28 Siemens Ag Communication device and method for setting a security configuration of a communication device
US7594018B2 (en) * 2003-10-10 2009-09-22 Citrix Systems, Inc. Methods and apparatus for providing access to persistent application sessions
US7725716B2 (en) 2004-06-28 2010-05-25 Japan Communications, Inc. Methods and systems for encrypting, transmitting, and storing electronic information and files
WO2006012058A1 (en) * 2004-06-28 2006-02-02 Japan Communications, Inc. Systems and methods for mutual authentication of network
US9219579B2 (en) 2004-07-23 2015-12-22 Citrix Systems, Inc. Systems and methods for client-side application-aware prioritization of network communications
KR20070037649A (en) 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. A method and systems for routing packets from a gateway to an endpoint
GB2417396A (en) * 2004-08-18 2006-02-22 Wecomm Ltd Internet protocol having session identifier for mobile device internet access
US8613048B2 (en) 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US7359919B2 (en) * 2005-03-08 2008-04-15 Microsoft Corporation Reliable request-response messaging over a request-response transport
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
US8533338B2 (en) 2006-03-21 2013-09-10 Japan Communications, Inc. Systems and methods for providing secure communications for transactions
JP2008098813A (en) * 2006-10-10 2008-04-24 Matsushita Electric Ind Co Ltd Information communication device, information communication method, and program
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
WO2014016652A1 (en) 2012-07-27 2014-01-30 Nokia Corporation Methods and apparatuses for facilitating utilization of cloud services
US9253545B2 (en) 2013-12-04 2016-02-02 Wowza Media Systems, LLC Routing media content based on monetary cost
US9113182B2 (en) 2013-12-04 2015-08-18 Wowza Media Systems, LLC Selecting a media content source based on monetary cost
US20170141950A1 (en) * 2014-03-28 2017-05-18 Hewlett Packard Enterprise Development Lp Rescheduling a service on a node
US10721680B2 (en) 2016-04-21 2020-07-21 At&T Intellectual Property I, L.P. Method and apparatus for providing a virtual network function in a network
EP3987843A1 (en) * 2019-06-20 2022-04-27 Koninklijke Philips N.V. Method to enhance system analysis
US11469890B2 (en) * 2020-02-06 2022-10-11 Google Llc Derived keys for connectionless network protocols
CN113364652B (en) * 2021-06-30 2023-07-25 脸萌有限公司 Network card flow testing method, device, network equipment, system and readable medium

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000115253A (en) * 1998-09-30 2000-04-21 Toshiba Corp Communication method, portable terminal and gateway device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006090A (en) * 1993-04-28 1999-12-21 Proxim, Inc. Providing roaming capability for mobile computers in a standard network
US6249818B1 (en) * 1993-06-30 2001-06-19 Compaq Computer Corporation Network transport driver interfacing
JP3492865B2 (en) * 1996-10-16 2004-02-03 株式会社東芝 Mobile computer device and packet encryption authentication method
JP3651721B2 (en) * 1996-11-01 2005-05-25 株式会社東芝 Mobile computer device, packet processing device, and communication control method
US6091951A (en) * 1997-05-14 2000-07-18 Telxon Corporation Seamless roaming among multiple networks
US6230004B1 (en) * 1997-12-01 2001-05-08 Telefonaktiebolaget Lm Ericsson Remote procedure calls using short message service
US6147986A (en) * 1998-03-06 2000-11-14 Lucent Technologies Inc. Address updating of wireless mobile terminal hosts affiliated with a wired network
FI105978B (en) * 1998-05-12 2000-10-31 Nokia Mobile Phones Ltd Method of connecting a wireless data terminal in a data transmission network and a wireless data terminal

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000115253A (en) * 1998-09-30 2000-04-21 Toshiba Corp Communication method, portable terminal and gateway device

Cited By (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4638904B2 (en) * 2002-08-01 2011-02-23 リサーチ イン モーション リミテッド Always-on wireless internet protocol communication
JP2007306577A (en) * 2002-08-01 2007-11-22 Research In Motion Ltd Always-on wireless internet protocol communication
JP2008160826A (en) * 2002-08-01 2008-07-10 Research In Motion Ltd Always-on wireless internet protocol communication
JP2008508837A (en) * 2004-06-10 2008-03-21 ネットモーション ワイヤレス インコーポレイテッド Method and apparatus for providing mobile and other intermittent connectivity in a computer environment
US7748032B2 (en) 2004-09-30 2010-06-29 Citrix Systems, Inc. Method and apparatus for associating tickets in a ticket hierarchy
US8302101B2 (en) 2004-09-30 2012-10-30 Citrix Systems, Inc. Methods and systems for accessing, by application programs, resources provided by an operating system
US7711835B2 (en) 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US7865603B2 (en) 2004-09-30 2011-01-04 Citrix Systems, Inc. Method and apparatus for assigning access control levels in providing access to networked content files
US7870294B2 (en) 2004-09-30 2011-01-11 Citrix Systems, Inc. Method and apparatus for providing policy-based document control
US8065423B2 (en) 2004-09-30 2011-11-22 Citrix Systems, Inc. Method and system for assigning access control levels in providing access to networked content files
US8352964B2 (en) 2004-09-30 2013-01-08 Citrix Systems, Inc. Method and apparatus for moving processes between isolation environments
US7760693B2 (en) 2004-12-10 2010-07-20 Nec Corporation Packet distribution system, PAN registration device, PAN control device, packet transfer device, and packet distribution method
US8312261B2 (en) 2005-01-28 2012-11-13 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
JP2006352337A (en) * 2005-06-14 2006-12-28 Ntt Docomo Inc Communication apparatus and communication control method
JP4628194B2 (en) * 2005-06-14 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ Communication device, required time measurement method and communication control method
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7779034B2 (en) 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US8341732B2 (en) 2006-01-24 2012-12-25 Citrix Systems, Inc. Methods and systems for selecting a method for execution, by a virtual machine, of an application program
US7954150B2 (en) 2006-01-24 2011-05-31 Citrix Systems, Inc. Methods and systems for assigning access control levels in providing access to resources via virtual machines
US8010679B2 (en) 2006-01-24 2011-08-30 Citrix Systems, Inc. Methods and systems for providing access to a computing environment provided by a virtual machine executing in a hypervisor executing in a terminal services session
US8355407B2 (en) 2006-01-24 2013-01-15 Citrix Systems, Inc. Methods and systems for interacting, via a hypermedium page, with a virtual machine executing in a terminal services session
US8051180B2 (en) 2006-01-24 2011-11-01 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine executing in a terminal services session and hosting a requested computing environment
US7870153B2 (en) 2006-01-24 2011-01-11 Citrix Systems, Inc. Methods and systems for executing, by a virtual machine, an application program requested by a client machine
US7949677B2 (en) 2006-01-24 2011-05-24 Citrix Systems, Inc. Methods and systems for providing authorized remote access to a computing environment provided by a virtual machine
US8117314B2 (en) 2006-01-24 2012-02-14 Citrix Systems, Inc. Methods and systems for providing remote access to a computing environment provided by a virtual machine
US8341270B2 (en) 2006-01-24 2012-12-25 Citrix Systems, Inc. Methods and systems for providing access to a computing environment
KR101372011B1 (en) * 2006-03-31 2014-03-26 알카텔-루센트 유에스에이 인코포레이티드 Method and device for maintaining sessions based on presence status information
JP2009532765A (en) * 2006-03-31 2009-09-10 アルカテル−ルーセント ユーエスエー インコーポレーテッド Method and device for maintaining a session based on presence state information
JP2009535873A (en) * 2006-04-28 2009-10-01 ジェムアルト エスアー Data transmission between server and communication object
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
US10028190B2 (en) 2007-09-27 2018-07-17 Sun Patent Trust Mobile terminal
US9642057B2 (en) 2007-09-27 2017-05-02 Sun Patent Trust Network node and mobile terminal
US11082852B2 (en) 2007-09-27 2021-08-03 Sun Patent Trust Mobile terminal
US10484920B2 (en) 2007-09-27 2019-11-19 Sun Patent Trust Mobile terminal
US8731547B2 (en) 2007-09-27 2014-05-20 Panasonic Corporation Network node and mobile terminal
US9178803B2 (en) 2007-09-27 2015-11-03 Panasonic Intellectual Property Corporation Of America Network node and mobile terminal
US9009720B2 (en) 2007-10-20 2015-04-14 Citrix Systems, Inc. Method and system for communicating between isolation environments
JP2009119849A (en) * 2007-10-23 2009-06-04 Ricoh Co Ltd Information processor, information processing method, and program
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
JP2011070279A (en) * 2009-09-24 2011-04-07 Fujifilm Corp Application server and method of controlling operation of the same
JP2013520138A (en) * 2010-02-16 2013-05-30 クゥアルコム・インコーポレイテッド Method and apparatus for providing intelligent radio selection for legacy and non-legacy applications
US9603085B2 (en) 2010-02-16 2017-03-21 Qualcomm Incorporated Methods and apparatus providing intelligent radio selection for legacy and non-legacy applications
US9264868B2 (en) 2011-01-19 2016-02-16 Qualcomm Incorporated Management of network access requests
US9178965B2 (en) 2011-03-18 2015-11-03 Qualcomm Incorporated Systems and methods for synchronization of application communications
US11876784B2 (en) 2013-12-05 2024-01-16 Crowdstrike, Inc. RPC call interception
US10356047B2 (en) 2013-12-05 2019-07-16 Crowdstrike, Inc. RPC call interception
US11082404B2 (en) 2013-12-05 2021-08-03 Crowdstrike, Inc. RPC call interception
JP2017502394A (en) * 2013-12-05 2017-01-19 クラウドストライク インコーポレイテッド Interception of RPC calls

Also Published As

Publication number Publication date
EP1364296A4 (en) 2004-09-15
WO2002023362A1 (en) 2002-03-21
CA2421609A1 (en) 2002-03-21
EP1364296A1 (en) 2003-11-26
AU2001289010A1 (en) 2002-03-26

Similar Documents

Publication Publication Date Title
JP2004509539A (en) Method and apparatus for providing mobile and other intermittent connectivity in a computer environment
US7778260B2 (en) Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7136645B2 (en) Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7644171B2 (en) Mobile networking system and method using IPv4 and IPv6
US7293107B1 (en) Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8078727B2 (en) Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6546425B1 (en) Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8060656B2 (en) Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
JP2008508837A (en) Method and apparatus for providing mobile and other intermittent connectivity in a computer environment
US8909743B2 (en) Dynamic session maintenance for mobile computing devices
US7984492B2 (en) Methods and apparatus for policy enforcement in a wireless communication system
US7107609B2 (en) Stateful packet forwarding in a firewall cluster
US20160156507A1 (en) System and Method for Developing Applications in Wireless and Wireline Environments
US20050243857A1 (en) Simultaneously routing data over multiple wireless networks
JP2004509539A5 (en)
CN110830461B (en) Cross-region RPC service calling method and system based on TLS long connection
US7447905B2 (en) System and method of unacknowledged network layer service access point identifier (NSAPI) recovery in sub-network dependent convergence protocol (SNDCP) communication
Bhagwat et al. MSOCKS+: an architecture for transport layer mobility
Fox et al. IBM's Shared Memory Communications over RDMA (SMC-R) Protocol

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111101