(57)【特許請求の範囲】
【請求項１】
通信接続を管理するコンピューター実装方法であって、
外部ネットワークと内部ネットワークのワイヤレス・デバイスとの間に、ネットワーク境界デバイスを介してＩＰ接続を確立する動作と、
前記外部ネットワークから前記ネットワーク境界デバイスに入るキープアライブ・パケットを受信する動作と、
前記キープアライブ・パケットを受信したときに、接続タイマをリセットする動作と、
前記外部ネットワークからのみの前記キープアライブ・パケットの受信に基づいて、前記外部ネットワークと前記ワイヤレス・デバイスとの間に、前記ネットワーク境界デバイスを介して前記ＩＰ接続を維持する動作と、
強化キープアライブ・パケット処理モードの利用に基づいて、前記ネットワーク境界デバイスの前記ＩＰ接続を監視する動作と、
接続状態の品質低下に基づいて、標準的キープアライブ・パケット処理モードに自動的に変更する動作と、
メモリに格納された命令を実行するプロセッサを利用して、前記の確立する動作、受信する動作、リセットする動作、維持する動作、監視する動作および自動的に変更する動作を実行する動作と、
を備えた、コンピューター実装方法。
【請求項２】
請求項１記載の方法であって、更に、前記ワイヤレス・デバイスにおいて前記キープアライブ・パケットを受信しない場合、前記ワイヤレス・デバイスからの応答を受信する動作を備えた、方法。
【請求項３】
請求項１記載の方法であって、更に、前記ネットワーク境界デバイスへの前記キープアライブ・パケットの移行時間に基づいて、存続時間（ＴＴＬ）値を計算し、前記パケットを欠落させるために前記ＴＴＬ値を前記キープアライブ・パケットの中に設定する動作を備えた、方法。
【請求項４】
請求項１記載の方法であって、更に、ｎＴＴＬ値を含むように、前記キープアライブ・パケットを設定する動作を備えており、前記ｎＴＴＬ値は、前記ネットワーク境界デバイスによって処理されると、前記ワイヤレス・デバイスが前記キープアライブ・パケットを受信しないように、前記境界デバイスにおいて前記キープアライブ・パケットを終了させる、方法。
【請求項５】
請求項１記載の方法であって、更に、前記キープアライブ・パケットが前記ワイヤレス・クライアントに到達する前にこれを欠落させる強化キープアライブ・パケット処理を、ＮＡＴルータである前記ネットワーク境界デバイスが扱うことができるか否か判断するために、前記ネットワーク境界デバイスに質問する動作を備えた、方法。
【請求項６】
請求項１記載の方法であって、更に、対応する接続の状態を維持するために、前記外部ネットワークからキープアライブ・パケットを受信することによって、前記境界デバイスの複数の接続を同時に管理する動作を備えた、方法。
【請求項７】
公衆ネットワークと、私設ネットワークの移動体クライアントとの間においてＩＰ接続を確立する手段と、
前記ＩＰ接続を確立する手段にキープアライブ・パケットを送る手段と、
前記キープアライブ・パケットが受信されたときに、接続タイマをリセットする手段と、
キープアライブ・パケットを送る前記手段からのみのキープアライブ・パケットの受信に基づいて、前記ＩＰ接続を確立する前記手段を介して、前記外部ネットワークと前記移動体クライアントとの間に前記ＩＰ接続を維持する手段と、
強化キープアライブ・パケット処理モードの利用に基づいて、前記ＩＰ接続を監視する手段と、
接続状態の品質低下に基づいて、標準的キープアライブ・パケット処理モードに自動的に変更する手段と、
を備えた、システム。
【請求項８】
請求項７記載のシステムであって、更に、前記移動体クライアントに到達する前に、終了するように前記キープアライブ・パケットを構成する手段を備えた、システム。
【請求項９】
請求項７記載のシステムにおいて、前記移動体クライアントは、キープアライブ・パケットが受信されないとき、否定承認を送る、システム。
【発明の詳細な説明】
【従来技術】
【０００１】
計算デバイスおよびネットワーキングの技術進歩により、広範囲にわたる種々の情報およびサービスへのアクセスが容易になり、事実上世界のどこからでもアクセスが可能になっている。しなければならない仕事は殆どの場所から行うことができるので、バーチャルオフィスが増々普及しつつある。例えば、居住者がネットワークにアクセスするために通信デバイスおよび／または計算デバイスを取得するに連れて、家庭用ネットワークが増々当たり前になっていく。同様に、会社(business)はイントラネット・サービスのために、ルータの背後にサブネットワークを採用する。ネットワーク・デバイス毎に別個のＩＰアドレスに加入する代わりに、ネットワーク・アドレス変換（ＮＡＴ）と呼ばれる技法によって、ルータの背後にある複数のＩＰノードが１つの公衆ＩＰアドレスを共有することが可能になる。言い換えると、未登録のＩＰアドレスの一集合をインターネット・ネットワーク・トラフィックのために用いることを可能にし、別のＩＰアドレス集合を外部または公衆トラフィックのために用いることを可能にする規格が設けられている。これによって、内部ネットワーク・アドレスを（例えば、インターネットを介しての）公衆アクセスから遮蔽することができる。
【０００２】
ＮＡＴルータは、例えば、公衆ネットワークへの外側インターフェースと、内部ネットワーク即ちドメインへの内側インターフェースとを含む。パケットがドメインを離れるとき、ＮＡＴデバイスはローカル・ソース・アドレスを、例えば、インターネット上で用いるための、一意のグローバル・アドレスに変換する。パケットがインターネットからドメインに入るとき、ＮＡＴルータは一意のグローバル・アドレスをローカル・アドレスに変換する。ドメインの共有ノードがアウトバウンド・トラフィックを送るとき、ＮＡＴはそのトラフィックを転送し、共有ノードのために逆マッピング・エントリを、アドレス・マッピングおよび／またはポート・マッピング・データーベースあるいはテーブルに作成する。この逆エントリは、ドメインに返送される応答を、正しい共有ノードにリダイレクトするために用いられる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
通例、ＮＡＴデバイスは、マッピング状態に対して設定可能な(configurable)タイムアウト期間を有するタイムアウト・タイマを採用する。タイムアウト期間よりも長い間特定のエントリがインバウンド・トラフィックにもアウトバウンド・トラフィックにも用いられない場合、ＮＡＴタイマが時間切れとなり、そのエントリを消去する。一旦エントリを消去すると、ＮＡＴの背後にある共有ノードにはその接続を通じてもはや到達することができず、新たな接続を開始しなければならない（例えば、共有ノードによって）。ＮＡＴタイマがタイム・アウトする（即ち、時間切れとなる）のを防止する共通のメカニズムに、「キープアライブ」または「ハートビード」処理として知られているものがある。キープアライブの下では、ＮＡＴタイムアウト期間よりも短い間隔で、接続を通じて無駄なトラフィックを発生して、タイマをリセットし、これによって接続をアクティブに保持する。主要な電源にバッテリ電力を用いる携帯用デバイス（例えば、スマート・フォン）となると、従来のキープアライブ技法は、接続を生かしておくために、デバイスのバッテリ寿命を垂れ流しにし、多大なワイヤレス活動が生ずる。
【課題を解決するための手段】
【０００４】
以下には、本明細書において記載する新規な実施形態の一部について基本的な理解が得られるようにするために、簡略化した摘要を紹介する。この摘要は、広範な全体像ではなく、主要／必須な要素を特定することも、その範囲を正確に叙述することも意図していない。その唯一の目的は、後に紹介する更に詳細な説明に対する序文として、いくつかの概念を簡略化した形態で紹介することである。
【０００５】
開示するアーキテクチャは、サーバー駆動キープアライブ・メカニズムが、ＮＡＴ状態をリフレッシュするために、現在クライアントに接続を提供するＮＡＴデバイスへのキープアライブ・メッセージを容易にする技法を提供する。したがって、例えば、ネットワーク上または私設ネットワーク内にあるバッテリ給電型移動体デバイスによる電力消費に伴うコストは、クライアントにキープアライブ・パケットを送信すること、または応答をすることを全く要求しないことによって、削減される。言い換えると、サーバーは、現在接続を提供しているＮＡＴデバイスに対するキープアライブ管理を容易にすることによって、ワイヤレス・デバイスにおける電力消費を低減または排除する。
【０００６】
方法の１つでは、ＮＡＴタイムアウト・タイマをリセットするために、キープアライブ・パケットをＮＡＴに送り、次いで移動体クライアントに送る。クライアントは、予期したキープアライブ・パケットがクライアントにおいて受信されないときにのみ応答する。別の方法では、接続を維持するために、キープアライブ・パケットがＮＡＴタイマをリセットするが、移動体クライアントに到達する前に欠落させるかまたは自己破壊することにより、移動体デバイスにおいて最適な電力保存に備える。つまり、ワイヤレス・データーを送るまたは受信するために、クライアントを余分なクライアント活動に関与させることよってバッテリを枯渇させることはない。
【０００７】
更に別の実現例では、キープアライブ・サーバーがＮＡＴデバイスに質問し、ＮＡＴデバイスのためにどの方法を採用するか決定する。加えて、接続の現在の振る舞いに基づいて、方法間で切り換えることにより、接続のキープアライブを管理することができる。
【０００８】
前述の目的および関連する目的の遂行のために、開示するアーキテクチャのある種の例示的態様について、本明細書では以下の説明および添付図面と関連付けて記載する。しかしながら、これらの態様は、本明細書に開示する原理を採用することができる種々の方法の内数個に過ぎず、そのような態様の全ておよびその均等物を含むことを意図している。他の利点や新規な特徴も、以下の詳細な説明を図面と合わせて考察することにより、明白となろう。
【図面の簡単な説明】
【０００９】
【図１】図１は、ネットワーク境界コンポーネントにおけるキープアライブ接続管理を容易にするコンピューター実装システムを示す。
【図２】図２は、ネットワーク境界コンポーネントにおいて通信接続を管理する方法を示す。
【図３】図３は、サーバーによるＮＡＴデバイスの質問に基づくタイプ検出および選択を採用する代替システムを示す。
【図４】図４は、複数のＮＡＴデバイス接続を管理するシステムを示す。
【図５】図５は、ＮＡＴデバイスを用いて接続を維持する方法を示す。
【図６】図６は、ＮＡＴデバイス、および内部デバイスのＮＡＣＫを用いて接続を維持する方法を示す。
【図７】図７は、ＮＡＴデバイスにおいてパケット寿命を終了させる方法を示す。
【図８】図８は、ＮＡＴデバイスの処理能力に基づいて、キープアライブ・パケット処理を選択する方法を示す。
【図９】図９は、ＮＡＴデバイスにおける接続の成功または失敗に基づいて、キープアライブ・パケットの使用間で切り換える方法を示す。
【図１０】図１０は、開示するアーキテクチャにしたがってキープアライブ・パケット処理を実行するように動作可能な計算システムのブロック図を示す。
【図１１】図１１は、開示するアーキテクチャによるキープアライブ・パケット処理に合わせた計算環境の一例の模式ブロック図を示す。
【発明を実施するための形態】
【００１０】
本アーキテクチャは、ネットワーク・アドレス変換（ＮＡＴ）コンポーネント（例えば、ＮＡＴデバイス）を通じて、外部ネットワーク（例えば、インターネット）と私設ネットワーク（例えば、家庭、イントラネット、移動体運営業者のネットワーク）の移動体対応バッテリ給電デバイス（例えば、セル・フォン、携帯用コンピューター）との間において、接続を生かしておく技法である。外部ネットワーク（例えば、サーバー）は、キープアライブ・パケットをＮＡＴコンポーネントに送ってタイマをリセットすることにより、ＮＡＴコンポーネントを通じた接続を維持する。したがって、移動体対応デバイスは、接続を生かしたままにするために余分な電力やネットワーク・トラフィックを拡大する必要がなく、これによってデバイスの電力消耗やネットワーク・トラフィックに伴うコストを削減する。
【００１１】
一実現例では、キープアライブ・パケットは、ＮＡＴコンポーネントを介して、移動体対応デバイスに受け渡される。デバイスがパケットを受信し損ねた場合ののみ、デバイスは、キープアライブ・パケットを送って接続を維持するために、外部ネットワークに応答する（例えば、ＮＡＴコンポーネントを通じてまたはアウトオブバンド（ＯＯＢ）シグナリングによって）。他の実施形態では、キープアライブ・パケットをＮＡＴコンポーネントのみに送り、移動体対応デバイスには送らない。パケットは、ＮＡＴコンポーネントにおける使用の後、崩壊するかまたは欠落させられる。したがって、移動体対応デバイスはエネルギを全く拡張しない(expand)。
【００１２】
これより、図面を参照するが、全体を通じて同様の要素を指すために同様の参照番号を用いることとする。以下の記載では、説明の目的上、完全な理解が得られるようにするために、多数の具体的な詳細を明記する。しかしながら、新規な実施形態はこれら具体的な詳細がなくても実用可能であることは明白であろう。一方、周知の構造やデバイスは、その説明を容易にするために、ブロック図形態で示すこととする。
【００１３】
最初に図面を参照すると、図１は、ネットワーク境界コンポーネント１０２における接続管理を容易にするコンピューター実装システム１００を示す。システム１００は、別々のネットワーク間においてアドレスおよび／またはポートを変換する境界コンポーネント１０２を含む。境界コンポーネント１０２は、内部ネットワーク１０６（例えば、ＲＦＣ１９１８において定義されるようなアドレスを有する内部ネットワーク１０６）の私設クライアント１０４と外部ネットワーク１０８（例えば、インターネット）との間における接続を容易にする。境界コンポーネント１０２は、例えば、ネットワーク・アドレス変換（ＮＡＴ）デバイスまたはネットワーク・アドレス・ポート変換（ＮＡＰＴ）デバイスとすることができる。本明細書において用いる場合、ＮＡＴはＮＡＴデバイスおよびＮＡＰＴデバイス双方に言及するために用いることとする。
【００１４】
また、システム１００は、１つ以上の単一方向キープアライブ・パケットを境界コンポーネント１０２に送り、キープアライブ・パケットに基づいて私設クライアント１０４への接続を維持するために、外部ネットワーク１０８のネットワーク・キープアライブ・コンポーネント１１０（例えば、サーバー、ウェブ・サーバー、アプリケーション・サーバー）も含むことができる。言い換えると、ネットワーク・コンポーネント１１０から受信したキープアライブ・パケットのみを処理して、境界コンポーネント１０２のタイムアウト・タイマをリセットする。
【００１５】
代替実施形態では、ネットワーク・コンポーネント１１０から送られるキープアライブ・パケットは、境界コンポーネント１０２によって処理されるが、その後崩壊または自己破壊し、私設クライアント１０４が、パケットを処理するエネルギを拡張する必要がなくなるようにしている。しかしながら、私設クライアント１０４がキープアライブ・パケットの受信を期待するように構成する場合、それを受信しないことが、クライアント１０４が応答するきっかけとなり、それに応じて境界コンポーネント１０２および／またはキープアライブ・パケットを発行したネットワーク・コンポーネント１１０が反応する（例えば、再送するかまたは警告を発行する）ようにする。
【００１６】
従来の手法では、キープアライブ・メッセージは双方向であり（往復送信を行う）、メッセージはＮＡＴデバイス（例えば、境界コンポーネント１０２）に２回、即ち、１回目はクライアント（例えば、私設クライアント１０４）からサーバー（例えば、ネットワーク・コンポーネント１１０）、次いでサーバーからクライアントに「ヒットする」。しかしながら、これらのメッセージが接続に関連のあるしかるべき５−タプル（例えば、プロトコル番号、ソースＩＰ、ソース・ポート、宛先ＩＰ、および宛先ポート）を反映する限り、大多数のＮＡＴデバイスは、インターネット（例えば、サーバー）から来る単一方向メッセージに基づいて、接続タイムアウト状態をリフレッシュする。これが意味するのは、キープアライブ・パケットの受信を確認するために、クライアントからの承認は不要であり、したがって、バッテリ給電型クライアントにおける電力消費が低減するということである。バッテリ寿命を保存するために、クライアントは、サーバー・キープアライブ・メッセージ（群）が受信されない場合に否定承認（ＮＡＣＫ）を実行するが、キープアライブ・メッセージが受信されていれば、静観を保つ。
【００１７】
メカニズムの改良および進歩によって、クライアントが応答する必要性を全て排除することができる（例えば、受信、肯定承認、または否定承認の必要性を排除する）。ここでは、キープアライブ・サーバーは、ＮＡＴデバイスを特定し（例えば、ＩＰアドレスを通じて）、ｎＴＴＬ（生きている時間）を計算する。これはデバイスに到達するための最小ＴＴＬである（例えば、この値を計算する単純な方法は、クライアントによって送られたパケットの本来のＴＴＬを、受信側サーバーが観察したＴＴＬと比較することであり、ルートが対称的であると仮定すると、この値は、サーバーからクライアントに逆方向にパケットを配信するために必要なＴＴＬを表す）。サーバーは、キープアライブ・メッセージ上のＴＴＬ値をｎＴＴＬ−１に設定し、パケットがクライアントにヒットする前に、ＴＴＬ＝０によってパケットが欠落する可能性を高くする。インターネット・プロトコル（ＩＰ）では、パケットのＴＴＬ値によって、このパケットが欠落する前にどこまで進行すべきか（大まかなルータ数に関して）決定する。ＩＰパケットをルータを通じて処理する毎に、ＴＴＬ値を１だけ減分する。最終的に、ＴＴＬ＝０となったパケットが受信された場合、これは転送されない。ＴＴＬメカニズムは、古いまたは無用な「ゾンビ」パケットがネットワーク上において必要もなく循環することを防止する。
【００１８】
クライアントをあらゆる柵から除外することには、明確な利点がある。即ち、クライアントのバッテリ漏れがなく、キープアライブ・メッセージのための送信ビットが増加することは、クライアントがキープアライブ・メッセージの周波数に感応しないことも意味する。サーバーは、一層迅速にキープアライブ・メッセージを送り、全体的な復元力を改善することができる。
【００１９】
この手法では、ＮＡＴリフレッシュ動作成功を確認する直接的なメカニズムがないが、有線ネットワークの信頼性は非常に高いので、クライアントからの承認の必要性は事実上ない。サーバーは、「ファイア・アンド・フォーゲット」モード(fire-and-forget mode)にしたがってキープアライブ・メッセージを送ることができる。これは、サーバーが最大ＮＡＴタイムアウトよりも上にキープアライブの周波数を実質的に上昇させた場合の方が、一層該当する。尚、境界コンポーネント１０２を通じて（またはワイヤ上で）送られる実際のアプリケーション・データーが、接続状態の暗示的な確認としての役割を果たすことを注記しておく。更に、本明細書において記載するキープアライブ・メカニズムは、クライアント１０４が検出し処理するような、ＧＰＲＳ（総合パケット無線サービス）接続の逸失のような、一般的な接続障害をカバーする必要はない。
【００２０】
図２は、通信接続を管理する方法を示す。説明を簡単にする目的に合わせて、例えば、フロー・チャートまたは流れ図の形態で、ここに示す１つ以上の方法を一連の行為として示し説明するが、一部の行為は、本願によれば、ここに示し説明する順序とは異なる順序で、および／または他の行為と同時に行われてもよいのであるから、主題のアーキテクチャは、行為の順序によって限定されるのではないことは、言外であり認められてしかるべきである。例えば、１つの方法は、状態図におけるように、一連の相互に関連する状態またはイベントとして表すこともできることは、当業者には理解され認められるであろう。更に、１つの方法の図示する行為全てが、新規な実現例に必要ではない場合もある。
【００２１】
２００において、外部ネットワークと内部ネットワークのワイヤレス・デバイスとの間に、ネットワーク境界コンポーネントを介して通信接続を確立する。２０２において、外部ネットワークからネットワーク境界コンポーネントに入るキープアライブ・パケットを受信する。２０４において、キープアライブ・パケットに基づいて、接続タイマをリセットする。２０６において、受信したキープアライブ・パケットに基づいて、当該キープアライブ・パケットを外部ネットワークから受信した場合にのみ、ネットワーク境界コンポーネントを経由した外部ネットワークとワイヤレス・デバイスとの間の接続を維持する。言い換えると、外部ネットワーク以外のソースからキープアライブ・パケットを受信する必要性はもはや全くない。これが意味するのは、従来のアーキテクチャにおけるように、キープアライブ・パケットを送出または返送するために、バッテリ電力のみに頼って動作するワイヤレス・デバイス（例えば、セル・フォン）を最大電力状態に移行させる必要がないということである。これによって、バッテリ電力を保存し、ネットワーク・トラフィックを削減する。
【００２２】
少なくとも２種類のキープアライブ・プロセスを実施することができる。第１タイプ（タイプ１）では、サーバーが私設クライアントにキープアライブ・パケットを送り、キープアライブ・パケットが受信されないときにのみ、クライアントが応答するようにする。第２タイプ（タイプ２）では、境界コンポーネントにおいてパケットを終端させる。
【００２３】
図３は、サーバー３０４によるＮＡＴデバイス３０２の質問に基づく、タイプ検出および選択を採用する代替システム３００を示す。サーバー３０４は、ＮＡＴデバイス３０２と通信し、そのタイプ・データー３０８を読み取るタイプ・コンポーネント３０６を含む。例えば、タイプ・データー３０８が、ＮＡＴデバイスが第２タイプ（即ち、タイプ２）デバイスであることを示す場合、キープアライブ・パケットをＮＡＴデバイス３０２に送り、そしてこのようなパケットがクライアント１０４に送られないように終端する。タイプ２デバイスではない場合、サーバー３０４は自動的にタイプ１デバイスと特定し(default)、キープアライブ・パケットをサーバー３０４からＮＡＴデバイス３０２に送り、次いでクライアント１０４に送る。クライアント１０４が期待したパケットを受信し損ねた場合、クライアント１０４は、例えば、ＮＡＣＫをサーバー３０４に返送することによって応答する。すると、サーバー３０４は追加のキープアライブ・パケットを送る。
【００２４】
図４は、複数のＮＡＴ接続を管理するシステム４００を示す。複数のバッテリ給電型移動体クライアント４０２（MOBILE CLIENT1、MOBILE CLIENT2、およびMOBILE CLIENT3で示す）が、ＮＡＴを用いて私設ネットワークにおいて動作し、ＮＡＴデバイス４０４を通じて外部ネットワーク（例えば、インターネットおよび関連するセルラ・ネットワーク）と通信する。公衆ネットワークにおけるサーバー４０６が、キープアライブ・パケットをサーバー接続コンポーネント４０８を通じてＮＡＴデバイス４０４に供給し、ＮＡＴデバイス４０４を通じて動作している接続４１０（CONNECT1、CONNECT2、およびCONNECT3で示す）の内１つ以上を維持する。例えば、サーバー４０６はキープアライブ・パケット（ＫＡ１）をＮＡＴデバイス４０４に送り、第１移動体クライアント４１４のために第１接続４１２を維持する。
【００２５】
この例では、第１接続４１２に向けた第１接続キープアライブ・パケットＫＡ１をサーバー４０６から、ＮＡＴデバイス４０４を介して、第１移動体クライアント４１４に送ることができる。パケットを受信すると、ＮＡＴデバイス４０４は、ＮＡＴタイムアウト・コンポーネント４０５が、第１接続と関連付けられたタイムアウトを管理することによって、第１接続４１２を維持するように、パケットを処理する。第１クライアント４１４において、第１キープアライブ・パケットＫＡ１は、第１クライアント４１４によって受信されることが予期されている。第１クライアント４１４が、キープアライブ・パケットＫＡ１が受信されていないことを検出すると、第１クライアント４１４はＮＡＣＫをＮＡＴデバイス４０４に送り、更にそこからサーバー４０６に送ることができ、第１キープアライブ・パケットＫＡ１が受信されていないことを示す。すると、サーバー接続コンポーネント４０８は、キープアライブ・パケットＫＡ１が第１接続４１２を通じて送られていることを確認することができる。図示のように、第１移動体クライアント４１４は、ＮＡＴデバイス４０４（例えば、ワイヤレス・ルータまたはゲートウェイ）とワイヤレスで動作している。
【００２６】
ＮＡＴデバイス４０４は、第２キープアライブ・パケット（ＫＡ２）を受信することによって、第２移動体クライアント４１８に対する第２接続４１６を維持する。パケットを受信すると、ＮＡＴデバイス４０４は、ＮＡＴタイムアウト・コンポーネント４０５が、第２接続４１６と関連付けられているタイムアウトを管理することにより、第２接続４１６を維持するように、パケットを処理する。第２パケットＫＡ２を、結び付けられた接続（例えば、ＵＳＢ−ユニバーサル・シリアル・バス）を通じて、第２クライアント４１８に転送する。これが無電力接続であり、クライアントの電源を充電も給電もしない場合、バッテリ電力保存が望まれる。第２クライアント４１８が、キープアライブ・パケットＫＡ２が受信されていないことを検出すると、第２クライアント４１８はＮＡＣＫをＮＡＴデバイス４０４に送り、そこからサーバー４０６に送ることができ、第２キープアライブ・パケットＫＡ２が受信されていないことを示す。すると、サーバー接続コンポーネント４０８は、キープアライブ・パケットＫＡ２が第２接続４１６を通じて送られていることを確認することができる。図示のように、第２移動体クライアント４１８は、繋ぎ網(tether)を通じて通信し、その上オンボード電源によって給電を受ける。
【００２７】
ＮＡＴデバイス４０４は、第３キープアライブ・パケット（ＫＡ３）を受信することによって、第３移動体クライアント４２２に対する第３接続４２０を維持する。パケットを受信すると、ＮＡＴデバイス４０４は、ＮＡＴタイムアウト・コンポーネント４０５が第３接続６２０と関連付けられているタイムアウトを管理することにより、第３接続４２０を維持するように、パケットを処理する。第３パケットＫＡ３を、ワイヤレス接続を通じて第３クライアント４２２に転送する。第３クライアント４２２が、第３キープアライブ・パケットＫＡ３が受信されていないことを検出すると、第３クライアント４２２はＮＡＣＫをＮＡＴデバイス４０４に送り、そこからサーバー４０６に送ることができ、第３キープアライブ・パケットＫＡ３が受信されていないことを示す。すると、サーバー接続コンポーネント４０８は、第３キープアライブ・パケットＫＡ３が第３接続４２０を通じて送られていることを確認することができる。ここで、第３キープアライブ・パケットＫＡ３をＮＡＴデバイス４０４から第３クライアント４２２に転送する。ＮＡＴデバイス４０４は、私設ネットワーク・インターフェースにおいてパケットＫＡ３を終端させ（即ち、欠落させるかまたは自己破壊する）、第３クライアント４２２がパケットＫＡ３を受信するのを妨げるように、受信した第３機０プアライブ・パケットＫＡ３を処理する。そのサポートのために、ＮＡＴデバイス４０４は、私設ネットワーク・インターフェースにおけるキープアライブ・パケットのｎＴＴＬ値（タイムアウト・コンポーネント４０５をリセットした後）を、パケットがＮＡＴデバイスから出立し第３移動体クライアント４２２に到達する前に欠落させる値に自動的に減分するように構成することができる（例えば、ソフトウェアで）。
【００２８】
尚、１つのサーバー、即ち、サーバー４０６のみを示すが、複数のサーバーを採用し、各々がキープアライブ・パケットを対応する接続に送り、ＮＡＴデバイスの状態を維持することも可能であることは言うまでもない。例えば、第１キープアライブ・サーバーは、第１接続４１２の状態を維持するためにパケットを送ることができ、第２キープアライブ・サーバーは、第２接続４１６の状態を維持するためにＮＡＴデバイスにパケットを送ることができる。
【００２９】
図５は、ＮＡＴデバイスを用いて接続を維持する方法を示す。５００において、ＮＡＴデバイスを介して、外部ネットワークと内部ネットワークの内部デバイスとの間にＩＰ接続を確立する。５０２において、ＮＡＴデバイスにおいて外部ネットワークからのキープアライブ・パケットを受信する。５０４において、ＮＡＴデバイスにおける接続タイマを、キープアライブ・パケットの各受信および処理に応じてリセットする。５０６において、キープアライブ・パケットを内部デバイスに転送する。５０８において、外部ネットワークから受信したキープアライブ・パケットの場合にのみ、その受信に基づいて、ＮＡＴデバイスにおいて接続を維持する。
【００３０】
図６は、ＮＡＴデバイスと内部デバイスのＮＡＣＫとを用いて接続を維持する方法を示す。６００において、外部ネットワークと内部ネットワークの内部デバイスとの間に、ＮＡＴデバイスを介してＩＰ接続を確立する。内部デバイスはバッテリの電力で動作する。６０２において、ＮＡＴデバイスにおいて外部ネットワークからキープアライブ・パケットを受信する。６０４において、キープアライブ・パケットの各受信および処理に応じて、ＮＡＴデバイスにおける接続タイマをリセットする。６０６において、キープアライブ・パケットを内部デバイスに転送する。６０８において、キープアライブ・パケットが受信されていない場合にのみ、内部デバイスがＮＡＣＫを送る。６１０において、外部ネットワークは、ＮＡＣＫに基づいて、キープアライブ・パケットをＮＡＴデバイスに送る。６１２において、キープアライブ・パケットが外部ネットワークから来た場合にのみ、そのキープアライブ・パケットの受信に基づいてＮＡＴデバイスにおいて接続を維持する。
【００３１】
図７は、ＮＡＴデバイスにおいてパケット寿命を終了させる方法を示す。７００において、キープアライブ機能性を有する外部サーバーが、ＮＡＴデバイスのＩＰアドレスを特定する。７０２において、サーバーはＮＡＴデバイスに対するＴＴＬを計算する。７０４において、サーバーはＴＴＬを含むように、パケットのキープアライブ時間を設定する(configure)。７０６において、通信サーバーと内部ネットワークの移動体デバイスとの間で、ＮＡＴデバイスを介して通信接続を確立する。７０８において、サーバーは、接続を維持するために、キープアライブ・パケットをＮＡＴデバイスに送る。７１０において、ＮＡＴデバイスは受信した各キープアライブ・パケットのＮＡＴタイマをリセットし、パケットが移動体クライアントに到達する前に、パケットを欠落または終了させる。７１２において、キープアライブ・パケットを外部サーバーから受信した場合にのみ、その受信に基づいて、ＮＡＴデバイスにおいて接続を維持する。
【００３２】
図８は、ＮＡＴデバイスの処理能力に基づいてキープアライブ・パケット処理を選択する方法を示す。８００において、サーバーは内部移動体デバイスに対する通信要求を受信する。８０２において、サーバーは、関連するＮＡＴデバイスを特定し、デバイス・タイプ（または処理能力）について照会する。８０４においって、ＮＡＴタイプに基づいて、サーバーはキープアライブ・パケットを作成し送る。８０６において、ＮＡＴデバイスはしかるべくパケットを処理することによって、ＮＡＴデバイスにおいて接続を維持する。
【００３３】
図９は、ＮＡＴデバイスにおける接続の成功または失敗に基づいて、パケット使用間で切り換える方法を示す。９００において、サーバーは内部移動体デバイスに対する通信要求を受信する。９０２において、サーバーは関連するＮＡＴデバイスを特定し、そのデバイスにＮＡＴタイプについて照会する（例えば、タイプ１にはパケット通過、および／またはタイプ２には自己破壊パケット）。９０４において、ＮＡＴタイプ（または処理能力）に基づいて、サーバーは移動体デバイス上における最適バッテリ保存のために、強化パケット・タイプ（タイプ２自己破壊パケット）を選択し、そして自己破壊キープアライブ・パケットを作成し送る。９０６において、ＮＡＴデバイスは、その接続に合わせてパケットを相応に処理する。９０８において、サーバーは接続を監視し、障害接続活動に基づいて、標準的パケット・タイプ（タイプ１）に落とす。９１０において、標準的パケット・タイプに基づいて、接続を処理し、ＮＡＴデバイスを介してパケットを移動体クライアントに受け渡す。クライアントがパケットを受信し損ねた場合、クライアントは、サーバーにキープアライブ・パケットを送り続けるように連絡する。
【００３４】
本願で用いる場合、「コンポーネント」および「システム」という用語は、コンピューター関連エンティティを指すことを意図しており、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、または実行中ソフトウェア(software in execution)のいずれでもよい。例えば、コンポーネントは、プロセッサー上で走るプロセス、プロセッサー、ハード・ディスク・ドライブ、（光および／または磁気記憶媒体の）多数の記憶装置、オブジェクト、エクゼキュータブル、実行スレッド、プログラム、および／またはコンピューターとすることができるが、これらに限定されるのではない。例示として、サーバー上で走るアプリケーションおよびそのサーバー双方共、コンピューター・コンポーネントであることができる。１つ以上のコンポーネントは、プロセスおよび／または実行スレッド内部に位置することができ、コンポーネントは１つのコンピューターに集中する(localize)ことおよび／または２つ以上のコンピューター間で分散することもできる。
【００３５】
これより図１０を参照すると、開示したＫＡアーキテクチャにしたがってキープアライブ・パケット処理を実行するように動作可能な計算システム１０００のブロック図が示されている。計算システム１０００は、ＮＡＴデバイス状態を維持するためにキープアライブ・パケットを発行するキープアライブ・サーバーとして機能することができ、例えば、ＮＡＴがタイプ１またはタイプ２処理を扱うことができるか否か判断するためにＮＡＴ質問を行い、ＮＡＴタイプ間で切換を行う。以上の実施形態の種々の態様を実施するために追加の文脈を提示するために、図１０および以下の論述は、実施形態の種々の態様を実施することができる、適した計算環境１０００の端的な総合的な説明を行うことを意図している。以上の説明は、１つ以上のコンピューター上で走るコンピューター・プログラムのコンピューター実行可能命令という一般的な文脈におけるものであったが、他のプログラム・モジュールとの組み合わせでも、および／またはハードウェアとソフトウェアとの組み合わせでも新規な実施形態を実現できることは、当業者には認められよう。
【００３６】
一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象的データー・タイプを実現する。更に、当業者には、本発明の方法は他のコンピューター・システム構成でも実用化可能であることが認められよう。他のコンピューター・システム構成には、単一プロセッサーまたはマルチプロセッサー・コンピューター・システム、ミニコンピューター、メインフレーム・コンピューター、ならびにパーソナル・コンピューター、ハンド・ヘルド計算デバイス、マイクロプロセッサー主体消費者用電子機器および／またはプログラマブル消費者用電子機器等が含まれ、これらの各々は１つ以上の関連するデバイスと動作的に結合することができる。
【００３７】
また、図示した実施形態の態様は、通信ネットワークを通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算環境では、プログラム・モジュールは、ローカルおよびリモート記憶媒体双方に配することができる。  
【００３８】
コンピューターは、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューターがアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。限定ではない一例をあげると、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むと考えられる。コンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターというような情報の格納のために、あらゆる方法または技術で実施される、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたはその他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができしかもコンピューターがアクセス可能なその他のいずれの媒体も含むが、これらに限定されるのではない。
【００３９】
再度図１０を参照すると、種々の態様を実施するための計算システム例１０００は、コンピューター１００２を含む。コンピューター１００２は、処理ユニット１００４、システム・メモリー１００６、およびシステム・バス１００８を含むことができる。システム・バス１００８は、システム・メモリー１００６を含むがこれに限定されないシステム・コンポーネントのために、処理ユニット１００４に対するインターフェースを設ける。処理ユニット１００４は、市販されている種々のプロセッサーのいずれでもよい。また、二重マイクロプロセッサーやその他のマルチプロセッサー・アーキテクチャも処理ユニット１００４として用いることもできる。
【００４０】
システム・バス１００８は、数種類のバス構造のいずれでもよく、更に、（メモリー・コントローラを有するまたは有さない）メモリー・バス、周辺バス、ならびに種々の従来のバス・アーキテクチャのいずれかを用いるローカル・バスを含む。システム・メモリー１００６は、リード・オンリ・メモリー（ＲＯＭ）１０１０およびランダム・アクセス・メモリー（ＲＡＭ）１０１２を含む。ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、のような不揮発性メモリー１０１０に、基本入出力システム（ＢＩＯＳ）が格納されており、ＢＩＯＳは、起動中のように、コンピューター１００２内のエレメント間における情報転送を補助する基本的なルーチンを含む。また、ＲＡＭ１０１２は、データーをキャッシュするスタティックＲＡＭのような、高速ＲＡＭも含むことができる。
【００４１】
また、コンピューター１００２は、更に、内部ハード・ディスク・ドライブ（ＨＤＤ）１０１４（例えば、ＥＩＤＥ  ＳＴＡＴＥ）も含み、内部ハード・ディスク・ドライブ１０１４は適したシャーシ（図示せず）において外部の使用に合わせて構成することができる。更に、磁気フロッピ・ディスク・ドライブ（ＦＤＤ）１０１６（例えば、リムーバブル・ディスケット１０１８からの読み取りおよびこれへの書き込みを行なう）、および光ディスク・ドライブ１０２０（ＣＤ−ＲＯＭディスク１０２２を読み取る、あるいはＤＶＤのようなその他の大容量光学媒体からの読み取りおよびこれへの書き込みを行なう）も含む。ハード・ディスク・ドライブ１０１４、磁気ディスク・ドライブ１０１６、および光ディスク・ドライブ１０２０は、ハードウェア・ディスク・ドライブ・インターフェース１０２４、磁気ディスク・ドライブ・インターフェース１０２６、および光ドライブ・インターフェース１０２８によって、それぞれ、システム・バス１００８に接続されている。外部ドライブ用インターフェース１０２４は、ユニバーサル・シリアル・バス（ＵＳＢ）およびＩＥＥＥ１３９４インターフェース技術の少なくとも一方または双方を含む。
【００４２】
前述のドライブおよびそれらと関連のあるコンピューター読み取り可能媒体は、データー、データー構造、コンピューター実行可能命令等の不揮発性格納を行う。コンピューター１００２のために、ドライブおよび媒体はあらゆるデーターの適したディジタル・フォーマットでの格納に対処する。以上のコンピューター読み取り可能媒体の説明は、ＨＤＤ、リムーバブル磁気ディスケット、およびＣＤまたはＤＶＤのようなリムーバブル光媒体に言及したが、ｚｉｐドライブ、磁気カセット、フラッシュ・メモリー・カード、カートリッジ等のような、コンピューターによる読み取りが可能な他の種類の媒体も、動作環境例において用いることができ、更に、このような媒体はいずれも、開示した方法を実行するためのコンピューター実行可能命令を収容することができることは、当業者には認められてしかるべきである。
【００４３】
多数のプログラム・モジュールを前述のドライブおよびＲＡＭ１０１２に格納することができ、オペレーティング・システム１０３０、１つ以上のアプリケーション・プログラム１０３２、その他のプログラム・モジュール１０３４、およびプログラム・データー１０３６を含む。オペレーティング・システム、アプリケーション、モジュール、および／またはデーターの全部または一部は、ＲＡＭ１０１２にキャッシュすることもできる。尚、本アーキテクチャは、種々の市販のオペレーティング・システムまたはオペレーティング・システムの組み合わせとでも実現できることは認められてしかるべきである。モジュールは、例えば、図３のタイプ・コンポーネント３０６、および図４の接続コンポーネント４０４を含むことができる。
【００４４】
ユーザは、１つ以上の有線／ワイヤレス入力デバイス、例えば、キーボード１０３８およびマウス１０４０のようなポインティング・デバイスによって、コマンドおよび情報をコンピューター１００２に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ＩＲリモート・コントロール、ジョイスティック、ゲーム・パッド、スタイラス・ペン、タッチ・スクリーン等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、システム・バス１００８に結合されている入力デバイス・インターフェース１０４２を通じて、処理ユニット１００４に接続されているが、パラレル・ポート、ＩＥＥＥ１３９４シリアル・ポート、ゲーム・ポート、ＵＳＢポート、ＩＲインターフェース等のようなその他のインターフェースによって接続することも可能である。
【００４５】
モニタ１０４４またはその他の形式の表示装置も、ビデオ・アダプター１０４６のようなインターフェースを介して、システム・バス１００８に接続されている。モニタ１０４４に加えて、コンピューターは、スピーカーおよびプリンター等のような、その他の周辺出力装置（図示せず）も含むのが通例である。
【００４６】
尚、コンピューター１００２は、論理接続を用いて、リモート・コンピューター１０４８のような１つ以上のリモート・コンピューターへの有線接続および／またはワイヤレス接続を通じて、ネットワーク環境において動作することも可能である。リモート・コンピューター１０４８は、ワークステーション、サーバー・コンピューター、ルータ、パーソナル・コンピューター、携帯コンピューター、マイクロプロセッサー主体の娯楽機器、ピア・デバイス、またはその他の共通コンピューター・ノードとすればよく、通例、コンピューター１００２に関して先に説明したエレメントの多くまたは全てを含むが、簡略化の目的に沿って、メモリー／記憶装置１０５０のみを示す。図示する論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１０５２および／またはそれよりも大きなネットワーク、例えば、ワイド・エリア・ネットワーク（ＷＡＮ）１０５４への有線／ワイヤレス接続を含む。このようなＬＡＮおよびＷＡＮネットワーク環境は、事務所や会社では珍しくなく、イントラネットのような企業全体に及ぶコンピューター・ネットワークが容易にでき、その全ては、大域通信ネットワーク、例えば、インターネットに接続することができる。
【００４７】
ＬＡＮネットワーキング環境で用いる場合、コンピューター１００２は、有線および／またはワイヤレス通信ネットワーク・インターフェースあるいはアダプター１０５６を介してローカル・ネットワーク１０５２に接続する。アダプター１０５６は、ＬＡＮ１０５２への有線またはワイヤレス通信を容易にすることができ、ＬＡＮ１０５２は、ワイヤレス・アダプター１０５６と通信するために配置したワイヤレス・アクセス・ポイントも含むことができる。
【００４８】
ＷＡＮネットワーキング環境で用いる場合、コンピューター１００２は、モデム１０５８を含むことができ、あるいはＷＡＮ１０５４上にある通信サーバーに接続し、あるいはインターネットによってというように、ＷＡＮ１０５４上で通信を確立するその他の手段を有する。モデム１０５８は、内部または外部でも可能であり、更に優先デバイスでもワイヤレス・デバイスでもよく、シリアル・ポート・インターフェース１０４２を介してシステム・バス１００８に接続する。ネットワーク環境では、コンピューター１００２に関して図示したプログラム・モジュールまたはその一部を、リモート・メモリー／記憶装置１０５０に格納することができる。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを確立する他の手段も使用可能であることは認められよう。
【００４９】
コンピューター１００２は、ワイヤレス通信内に動作的に配置されているあらゆるワイヤレス・デバイスまたはエンティティ、例えば、プリンター、スキャナー、デスクトップおよび／または携帯コンピューター、携帯データー・アシスタント、通信衛星、ワイヤレスで検出可能なタグと関連付けられた機器または場所（例えば、キオスク、新聞売店、休憩室）の任意のもの、そして電話機と通信するように動作可能である。これには、少なくともＷｉ−ＦｉおよびBluetooth（商標）ワイヤレス技術が含まれる。つまり、通信は、従来のネットワークのように、既定の構造とすることができ、あるいは単に少なくとも２つのデバイス間におけるその場限りの通信とすることもできる。
【００５０】
これより図１１を参照すると、開示したアーキテクチャによるキープアライブ・パケット処理に合わせた計算環境１１００の一例の模式ブロック図が示されている。システム１１００は、１つ以上のクライアント（群）１１０２を含む。クライアント（群）１１０２は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、計算デバイス）とすることができる。クライアント（群）１１０２は、例えば、クッキー（群）および／または関連する文脈情報を収容することができる。
【００５１】
また、システム１１００は、１つ以上のサーバー（群）１１０４も含む。サーバー１１０４も、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、計算デバイス）とすることができる。サーバー１１０４は、例えば、本アーキテクチャを採用することにより、変換を実行するスレッドを収容することができる。クライアント１１０２とサーバー１１０４との間で可能な１つの通信は、２つ以上のコンピューター・プロセス間で送信するように構成したデーター・パケットの形態とすることができる。データー・パケットは、例えば、クッキーおよび／または関連する文脈情報を含むことができる。システム１１００は、クライアント１１０２とサーバー１１０４との間における通信をし易くするために用いることができる通信フレームワーク１１０６（例えば、インターネットのような大域通信ネットワーク）を含む。
【００５２】
通信は、有線（光ファイバを含む）および／またはワイヤレス技術によって促進することができる。クライアント（群）１１０２は、クライアント（群）１１０２に対してローカルな情報（例えば、クッキーおよび／または関連する文脈情報）を格納するために用いることができる１つ以上のクライアント・データー・ストア（群）１１０８に動作的に接続されている。同様に、サーバー（群）１１０４も、サーバー１１０４に対してローカルな情報を格納するために用いることができる１つ以上のサーバー・データー・ストア（群）１１１０に動作的に接続されている。
【００５３】
クライアント１１０２は、セル・フォン、スマート・フォン、携帯用コンピューター等のような、有線および／またはワイヤレス移動体対応クライアントを含むことができる。通信フレームワーク１１０６は、インターネットだけでなく、クライアント１１０２が通信することを望むセルラ・ネットワークも含むことができる。
【００５４】
以上説明したことは、開示したアーキテクチャの例を含む。勿論、コンポーネントおよび／または方法論の想起し得る全ての組み合わせを記載することは可能ではないが、実施形態の更に別の多くの組み合わせおよび変形も可能であることは、当業者には認められよう。したがって、本主題は、添付した特許請求の範囲の主旨および範囲に該当するこのような変更、修正、および変形を全て包含することを意図している。更に、「含む」(include)という用語が詳細な説明または特許請求の範囲のいずれかにおいて用いられる限りでは、特許請求の範囲において「備えている」(comprising)が移行句(transitional word) として用いられているときに解釈する際の「備えている」と同様に、このような用語は、包含的であることを意図している。
【図１】
0004800424.tif 000002
【図２】
0004800424.tif 000003
【図３】
0004800424.tif 000004
【図４】
0004800424.tif 000005
【図５】
0004800424.tif 000006
【図６】
0004800424.tif 000007
【図７】
0004800424.tif 000008
【図８】
0004800424.tif 000009
【図９】
0004800424.tif 000010
【図１０】
0004800424.tif 000011
【図１１】
0004800424.tif 000012