(57)【特許請求の範囲】
【請求項１】
アプリケーションプロセッサから１つまたは複数のネットワークアドレス変換（ＮＡＴ）ルールを受信すること、
結合されたインターフェース上でパケットを取得すること、
前記取得されたパケットに対応する前記アプリケーションプロセッサから受信されたＮＡＴルールの識別を試行すること、
識別の試行に成功したとき、識別されたＮＡＴルールに従って前記取得されたパケットを変換し、前記変換されたパケットを、１つまたは複数の変換されたパケット宛先へ転送すること、
識別の試行に成功しなかったとき、前記取得されたパケットを少なくとも前記アプリケーションプロセッサを含む１つまたは複数のパケット処理宛先へ転送すること、および、
前記１つまたは複数のパケット処理宛先へ転送する処理に続いて、前記１つまたは複数のパケット処理宛先からパケットを取得し、取得したパケットを前記１つまたは複数のパケット宛先へ転送すること
を備える方法。
【請求項２】
ＮＡＴルールの識別を試行する前に、リンク層プロトコルに従って前記取得されたパケットを処理する動作、または、
前記変換されたパケットを前記１つまたは複数の変換されたパケット宛先へ転送する前にリンク層プロトコルに従って前記変換されたパケットを処理する動作の１つまたは複数の動作をさらに備える請求項１に記載の方法。
【請求項３】
前記取得することは、前記結合されたインターフェース上でリンク層プロトコルを使用して構築されるパケットを取得することを備え、
前記取得されたパケットを前記処理することは、ネットワーク層またはトランスポート層の１つまたは複数の層に対応するパケット情報を識別するために、前記取得されたパケットをパーシングすることを備える請求項２に記載の方法。
【請求項４】
前記変換されたパケットを処理することは、リンク層プロトコルに従って前記変換されたパケットをフレーム化することを備える請求項１に記載の方法。
【請求項５】
前記結合されたインターフェースは、モデムに関連するプロトコルプロセッサを備え、前記１つまたは複数の変換されたパケット宛先は、前記モデムへのアクセスを共有するテザードコンピューティングデバイスによって使用されるために有効にされたＮＡＴ有効化済みテザードネットワーク接続インターフェースを備える請求項１に記載の方法。
【請求項６】
前記取得することは、
前記モデムが接続されるパブリックネットワークを識別すること、および、
前記識別されたパブリックネットワークから前記モデムでパケットを取得することを備える請求項５に記載の方法。
【請求項７】
前記取得することは、前記モデムを介して前記パブリックネットワークから前記パケットを、複数のフラグメントで取得することをさらに備える請求項６に記載の方法。
【請求項８】
ＮＡＴルールの識別を試行する前に、取得されたそれぞれのフラグメントを前記１つまたは複数のパケット処理宛先に転送することをさらに備える請求項７に記載の方法。
【請求項９】
ＮＡＴルールの識別を試行する前に、前記取得されたパケットをそのそれぞれのフラグメントから再構築することをさらに備える請求項７に記載の方法。
【請求項１０】
前記取得されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別することをさらに備え、
ＮＡＴルールの識別を前記試行することは、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴルールを識別することを試行することを備える請求項５に記載の方法。
【請求項１１】
前記変換することは、
前記識別されたＮＡＴルールによって与えられる前記プライベートアドレスおよびポートを指定するために、前記取得されたパケットの前記ヘッダを修正すること、および、
前記プライベートアドレスおよびポートを反映するために、前記取得されたパケットの前記ヘッダのチェックサムを更新することを備える請求項１０に記載の方法。
【請求項１２】
前記結合されたインターフェースは、モデムへのアクセスを共有するテザードコンピューティングデバイスによって使用されるために有効にされたネットワーク接続インターフェースであり、前記１つまたは複数の変換されたパケット宛先は、モデムに関連するインターフェースを備える請求項１に記載の方法。
【請求項１３】
前記取得することは、前記ネットワーク接続インターフェースを介して前記テザードコンピューティングデバイスからパケットを取得することを備える請求項１２に記載の方法。
【請求項１４】
前記取得されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別することをさらに備え、
ＮＡＴルールの識別を前記試行することは、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴルールを識別することを試行することを備える請求項１２に記載の方法。
【請求項１５】
識別されたＮＡＴルールを適用することは、
前記識別されたＮＡＴルールによって与えられる前記パブリックアドレスおよびポートを指定するために、前記取得されたパケットの前記ヘッダを修正すること、および、
前記パブリックアドレスおよびポートを反映するために、前記取得されたパケットの前記ヘッダのチェックサムを更新することを備える請求項１４に記載の方法。
【請求項１６】
前記結合されたインターフェースにおいて、前記取得されたパケットによって指定される宛先を識別すること、および、
前記取得されたパケットによって指定される前記宛先が前記アプリケーションプロセッサに関連する場合、ＮＡＴルールの識別を試行する前に、前記結合された第１のインターフェースから前記アプリケーションプロセッサに前記取得されたパケットを転送することをさらに備える請求項１に記載の方法。
【請求項１７】
前記１つまたは複数のパケット処理宛先は、前記アプリケーションプロセッサを備える請求項１に記載の方法。
【請求項１８】
アプリケーションプロセッサによって提供される１つまたは複数のネットワークアドレス変換（ＮＡＴ）ルールに関するデータを格納するメモリと、
前記アプリケーションプロセッサと本質的に異なる、前記メモリに結合された少なくとも１つのプロセッサであって、結合されたインターフェース上でパケットを受信し、前記受信されたパケットに対応するＮＡＴルールの識別を試行し、ＮＡＴルールの識別に成功したとき、識別されたＮＡＴルールに従って前記受信されたパケットを変換し、前記変換されたパケットを、少なくとも１つの変換されたパケット宛先へ転送し、ＮＡＴルールの識別に成功しなかったとき、前記受信されたパケットを前記アプリケーションプロセッサを含む少なくとも１つのパケット処理宛先へ転送し、前記１つまたは複数のパケット処理宛先へ転送する処理に続いて、前記１つまたは複数のパケット処理宛先からパケットを取得し、取得したパケットを前記１つまたは複数のパケット宛先へ転送するように構成されるプロセッサと
を備えるモバイルコンピューティング装置。
【請求項１９】
前記少なくとも１つのプロセッサは、ＮＡＴルールの識別を試行する前に、開放型システム間相互接続（ＯＳＩ）第２層（Ｌ２）プロトコルに従って前記受信されたパケットを処理すること、または、前記変換されたパケットを前記少なくとも１つのパケット処理宛先へ転送する前に、Ｌ２プロトコルに従って前記変換されたパケットを処理することの少なくとも一方を実施するようにさらに構成される請求項１８に記載のモバイルコンピューティング装置。
【請求項２０】
前記少なくとも１つのプロセッサは、前記受信されたパケット内に含まれる第３層（Ｌ３）情報または第４層（Ｌ４）情報の一方または両方に関するオペレーションを容易にするために、前記結合されたインターフェース上でＬ２プロトコルを使用して構築されたパケットを受信し、少なくとも部分的に前記受信されたパケットについてＬ２フレーム化解除を実施することによって、前記受信されたパケットを処理するようにさらに構成される請求項１９に記載のモバイルコンピューティング装置。
【請求項２１】
前記少なくとも１つのプロセッサは、少なくとも部分的に、Ｌ２プロトコルに従って前記変換されたパケットをフレーム化することによって、前記変換されたパケットを処理するようにさらに構成される請求項１９に記載のモバイルコンピューティング装置。
【請求項２２】
前記結合されたインターフェースは、モデムに関連するプロトコルプロセッサインターフェースであり、前記少なくとも１つの変換されたパケット宛先は、前記モデムへのアクセスを共有するテザードコンピューティングデバイスによって使用されるために有効にされたテザリングリンクに関連するネットワーク接続インターフェースを備える請求項１８に記載のモバイルコンピューティング装置。
【請求項２３】
前記少なくとも１つのプロセッサは、前記受信されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別し、少なくとも部分的に、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴルールを識別することを試行することによって、ＮＡＴルールの識別を試行するようにさらに構成される請求項２２に記載のモバイルコンピューティング装置。
【請求項２４】
前記少なくとも１つのプロセッサは、少なくとも部分的に、前記識別されたＮＡＴルールによって与えられる前記識別されたプライベートアドレスおよびポートを指定するために、前記受信されたパケットの前記ヘッダを修正すること、および、前記プライベートアドレスおよびポートを反映するために、前記受信されたパケットの前記ヘッダのチェックサムを更新することによって、識別されたＮＡＴルールを適用するようにさらに構成される請求項２３に記載のモバイルコンピューティング装置。
【請求項２５】
前記結合されたインターフェースは、モデムへのアクセスを共有するテザードコンピューティングデバイスに関連するネットワーク接続インターフェースであり、前記少なくとも１つの変換されたパケット宛先は、モデムに関連するインターフェースを備える請求項１８に記載のモバイルコンピューティング装置。
【請求項２６】
前記少なくとも１つのプロセッサは、前記ネットワーク接続インターフェースを介して前記テザードコンピューティングデバイスからパケットを受信するようにさらに構成される請求項２５に記載のモバイルコンピューティング装置。
【請求項２７】
前記少なくとも１つのプロセッサは、前記受信されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別し、少なくとも部分的に、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴルールを識別することを試行することによって、ＮＡＴルールの識別を試行するようにさらに構成される請求項２５に記載のモバイルコンピューティング装置。
【請求項２８】
前記少なくとも１つのプロセッサは、少なくとも部分的に、前記識別されたＮＡＴルールによって与えられる前記識別されたパブリックアドレスおよびポートを指定するために、前記受信されたパケットの前記ヘッダを修正すること、ならびに、前記パブリックアドレスおよびポートを反映するために、前記受信されたパケットの前記ヘッダのチェックサムを更新することによって、識別されたＮＡＴルールを適用するようにさらに構成される請求項２７に記載のモバイルコンピューティング装置。
【請求項２９】
前記少なくとも１つのプロセッサは、前記受信されたパケットの終端ポイントを識別し、前記受信されたパケットの前記終端ポイントが前記アプリケーションプロセッサに関連する場合、ＮＡＴルールの識別を試行する前に、前記結合されたインターフェースから前記アプリケーションプロセッサに前記受信されたパケットを転送するようにさらに構成される請求項２５に記載のモバイルコンピューティング装置。
【請求項３０】
前記少なくとも１つのパケット処理宛先は、前記アプリケーションプロセッサを備える請求項１８に記載のモバイルコンピューティング装置。
【請求項３１】
関連するアプリケーションプロセッサからそれぞれのネットワークアドレス変換（ＮＡＴ）マッピングルールを受信する手段と、
インターフェースを介して取得されたパケットを識別する手段と、
受信されたＮＡＴマッピングルールに対して前記識別されたパケットのマッチングを試行する手段と、
マッチングの試行に成功したとき、一致するＮＡＴマッピングルールに従って前記識別されたパケットを変換する手段と、
前記一致するＮＡＴマッピングルールが適用されると、前記変換されたパケットを１つまたは複数の変換されたパケット宛先へ送る手段と、
マッチングの試行に成功しなかったとき、前記識別されたパケットを少なくとも前記アプリケーションプロセッサを含む１つまたは複数のパケット処理宛先へ送る手段と、
前記１つまたは複数のパケット処理宛先へ転送する処理に続いて、前記１つまたは複数のパケット処理宛先からパケットを取得し、取得したパケットを前記１つまたは複数のパケット宛先へ転送する手段と
を備える装置。
【請求項３２】
マッチングを試行する前記手段のオペレーションの前に、前記識別されたパケットについてリンク層処理を実施する手段をさらに備える請求項３１に記載の装置。
【請求項３３】
前記変換されたパケットを前記１つまたは複数の変換されたパケット宛先に送る前記手段のオペレーションの前に、前記変換されたパケットについてリンク層処理を実施する手段をさらに備える請求項３１に記載の装置。
【請求項３４】
前記インターフェースは、モデムに関連し、少なくとも１つの変換されたパケット宛先は、前記モデムへのアクセスを共有するテザードコンピューティングデバイスに関連する請求項３１に記載の装置。
【請求項３５】
識別する前記手段は、
前記モデムが接続されるパブリックネットワークを識別する手段と、
前記識別されたパブリックネットワークを通じて前記モデムによって受信されるパケットを識別する手段とを備える請求項３４に記載の装置。
【請求項３６】
前記識別されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別する手段をさらに備え、
マッチングを試行する前記手段は、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行する手段を備える請求項３４に記載の装置。
【請求項３７】
変換する前記手段は、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスおよびポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正する手段と、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正する手段とを備える請求項３６に記載の装置。
【請求項３８】
前記インターフェースは、モデムへのアクセスを共有するテザードコンピューティングデバイスに関連し、少なくとも１つの変換されたパケット宛先は、モデムに関連する請求項３１に記載の装置。
【請求項３９】
識別する前記手段は、前記テザードコンピューティングデバイスによって通信されるパケットを識別する手段を備える請求項３８に記載の装置。
【請求項４０】
前記識別されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別する手段をさらに備え、
マッチングを試行する前記手段は、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行する手段を備える請求項３８に記載の装置。
【請求項４１】
変換する前記手段は、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正する手段と、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正する手段とを備える請求項４０に記載の装置。
【請求項４２】
少なくとも１つのパケット処理宛先は、前記アプリケーションプロセッサを備える請求項３１に記載の装置。
【請求項４３】
機械実行可能命令を実行する集積回路であって、命令は、
関連するアプリケーションプロセッサからそれぞれのネットワークアドレス変換（ＮＡＴ）マッピングルールを受信すること、
インターフェースを介して取得されたパケットを識別すること、
それぞれのＮＡＴマッピングルールに対して前記識別されたパケットのマッチングを試行すること、
マッチングの試行に成功したとき、一致するＮＡＴマッピングルールに従って前記識別されたパケットを変換すること、
一致するＮＡＴマッピングルールが適用されると、前記変換されたパケットを１つまたは複数の変換されたパケット宛先に送ること、
マッチングの試行に成功しなかったとき、前記識別されたパケットを少なくとも前記アプリケーションプロセッサを含む１つまたは複数のパケット処理宛先へ送ること、及び
前記１つまたは複数のパケット処理宛先へ転送する処理に続いて、前記１つまたは複数のパケット処理宛先からパケットを取得し、取得したパケットを前記１つまたは複数のパケット宛先へ転送すること
を備える集積回路。
【請求項４４】
前記命令は、それぞれのＮＡＴマッピングルールに対して前記識別されたパケットのマッチングを試行する前に、前記識別されたパケットについて開放型システム間相互接続（ＯＳＩ）第２層（Ｌ２）処理を実施することをさらに備える請求項４３に記載の集積回路。
【請求項４５】
前記命令は、前記変換されたパケットを第２のインターフェースに送る前に、前記変換されたパケットについてＬ２処理を実施することをさらに備える請求項４３に記載の集積回路。
【請求項４６】
前記インターフェースは、モデムに関連し、少なくとも１つの変換されたパケット宛先は、前記モデムへのアクセスを共有するテザードコンピューティングデバイスに関連する請求項４３に記載の集積回路。
【請求項４７】
前記命令は、前記識別されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別することをさらに備え、
マッチングを前記試行することは、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行することを備える請求項４３に記載の集積回路。
【請求項４８】
前記変換することは、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスまたはポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正すること、および、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正することを備える請求項４７に記載の集積回路。
【請求項４９】
前記インターフェースは、モデムへのアクセスを共有するテザードコンピューティングデバイスに関連し、少なくとも１つの変換されたパケット宛先は、モデムに関連する請求項４３に記載の集積回路。
【請求項５０】
前記命令は、前記識別されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別することをさらに備え、
マッチングを前記試行することは、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行することを備える請求項４９に記載の集積回路。
【請求項５１】
前記変換することは、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正すること、および、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正することを備える請求項５０に記載の集積回路。
【請求項５２】
少なくとも１つのパケット処理宛先は、前記アプリケーションプロセッサを備える請求項４３に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、参照によりその全体が本明細書に組み込まれる、２００８年６月２３日に出願され、「ＰＲＯＶＩＤＩＮＧ  ＤＡＴＡ  ＳＥＲＶＩＣＥＳ  ＦＯＲ  ＡＮ  ＥＭＢＥＤＤＥＤ  ＡＰＰＬＩＣＡＴＩＯＮＳ  ＡＮＤ  ＩＮＴＥＲＮＥＴ  ＣＯＮＮＥＣＴＩＯＮ  ＳＨＡＲＩＮＧ（ＩＣＳ）  ＩＮ  Ａ  ＭＵＬＴＩ−ＰＲＯＣＥＳＳＯＲ  ＨＩＧＨＥＲ  ＬＥＶＥＬ  ＯＳ  ＥＮＶＩＲＯＮＭＥＮＴ」という名称の米国仮出願シリアル番号第６１／０７４，８２５号の利益を主張する。
【０００２】
本開示は、一般に、モバイルコンピューティングに関し、より具体的には、共有されたネットワーク接続を１つまたは複数のコンピューティングデバイス間で管理する技法に関する。
【背景技術】
【０００３】
従来、モバイルコンピューティングデバイス（たとえば、携帯情報端末（ＰＤＡ）、スマートフォン、手持ち式コンピュータなど）用のデュアルプロセッサおよび／または他のマルチプロセッサ環境は、エアインターフェースプロトコルオペレーションに対して責任を負うべきモデムプロセッサおよびデバイスのオペレーティングシステムを実行するアプリケーションプロセッサを含むことができる。さらに、こうした環境におけるそれぞれのプロセッサは、モデムプロセッサ、アプリケーションプロセッサ、およびプロセッサ間通信にそれぞれ対応する３つの領域に分割され得る周辺機器および／または外部メモリに接続され得る。
【０００４】
種々のコンピューティングタスクを達成するために、マルチプロセッサモバイルコンピューティング環境内のそれぞれのプロセッサおよび／またはプロセッサが関連するメモリ領域は、互いに相互作用するように構成され得る。そのため、たとえば、アプリケーションプロセッサを使用してモバイルコンピューティングデバイス上で実行されるアプリケーションは、モデムプロセッサによって提供される無線データ接続性を利用し得る。別の例として、モバイルコンピューティングデバイスは、１つまたは複数のインターフェースを介してモバイルデバイスに接続されるかまたはテザリングされる別のコンピューティングデバイスとのデータサービス共有を利用し得る。こうした例では、モバイルコンピューティングデバイスおよびテザードデバイスは、モバイルデバイスの無線データ接続上で一般的なインターネットプロトコル（ＩＰ）を利用し得る。したがって、モバイルデバイスは、適切なデータをテザードデバイスに送るために、アップリンクおよびダウンリンクパケットの流れを監視し、ネットワークアドレス変換（network address translation）（ＮＡＴ）を実施することを要求され得る。従来、こうしたオペレーションは、モバイルデバイスにおいてアプリケーションプロセッサによって実施され、その結果、全てのデータパケットが、モデムメモリ領域へ、また、モデムメモリ領域からアプリケーションメモリ領域へ転送されなければならない。
【０００５】
上記例を考慮して、埋め込み式アプリケーションの場合とデータサービス共有の場合のどちらにおいても、データ処理および／または転送のために、モバイルデバイスのモデムプロセッサとアプリケーションプロセッサとの間にかなりの数のデータコピーが必要とされることが理解され得る。これらのデータコピーは、モバイルデバイスのシステムバスおよび外部メモリ上で過剰のトランザクションを生成することがあり、電力消費およびＣＰＵ資源の使用を増加させると共に、エンドエンド間遅延を増加させる。したがって、少なくとも上記欠点を軽減するモバイルコンピューティングデバイス用のマルチプロセッサ管理技法を実装することが望ましいことになる。
【発明の概要】
【０００６】
以下は、こうした態様の基本的な理解を提供するために、特許請求される主題の種々の態様の簡略化した概要を提示する。この概要は、考えられる全ての態様の広範な概観ではなく、キーとなるまたは重要な要素を識別もせず、こうした態様の範囲の境界を明示もしないことを意図される。この要約の唯一の目的は、後で提示される、より詳細な説明に対する前置きとして簡略化した形態で開示される態様の一部の概念を提示することである。
【０００７】
ある態様によれば、方法が、本明細書で述べられる。方法は、アプリケーションプロセッサから１つまたは複数のネットワークアドレス変換（ＮＡＴ）ルールを受信すること、結合されたインターフェース上でパケットを取得すること、取得されたパケットに対応するアプリケーションプロセッサから受信されたＮＡＴルールの識別を試行すること、識別の試行に成功したとき、識別されたＮＡＴルールに従って取得されたパケットを変換し、変換されたパケットを、１つまたは複数の変換されたパケット宛先へ転送すること、および、識別の試行に成功しなかったとき、取得されたパケットを１つまたは複数のパケット処理宛先へ転送することを備えることができる。
【０００８】
第２の態様は、モバイルコンピューティング装置に関しており、モバイルコンピューティング装置は、アプリケーションプロセッサによって提供される１つまたは複数のＮＡＴルールに関するデータを格納するメモリを備えることができる。モバイルコンピューティング装置は、さらに、アプリケーションプロセッサと本質的に異なる、メモリに結合された少なくとも１つのプロセッサを備えることができ、少なくとも１つのプロセッサは、結合されたインターフェース上でパケットを受信し、受信されたパケットに対応するＮＡＴルールの識別を試行し、ＮＡＴルールの識別に成功したとき、識別されたＮＡＴルールに従って受信されたパケットを変換し、変換されたパケットを、少なくとも１つの変換されたパケット宛先へ転送し、ＮＡＴルールの識別に成功しなかったとき、受信されたパケットを少なくとも１つのパケット処理宛先へ転送するように構成される。
【０００９】
第３の態様によれば、装置が、本明細書で述べられる。装置は、関連するアプリケーションプロセッサからそれぞれのＮＡＴマッピングルールを受信する手段と、インターフェースを介して取得されたパケットを識別する手段と、受信されたＮＡＴマッピングルールに対して、識別されたパケットのマッチングを試行する手段と、マッチングの試行に成功したとき、一致するＮＡＴマッピングルールに従って、識別されたパケットを変換する手段と、一致するＮＡＴマッピングルールが適用されると、変換されたパケットを１つまたは複数の変換されたパケット宛先へ送る手段と、マッチングの試行に成功しなかったとき、識別されたパケットを１つまたは複数のパケット処理宛先へ送る手段とを備えることができる。
【００１０】
本明細書で述べる第４の態様は、機械実行可能命令を実行する集積回路に関する。命令は、関連するアプリケーションプロセッサからそれぞれのＮＡＴマッピングルールを受信すること、インターフェースを介して取得されたパケットを識別すること、それぞれのＮＡＴマッピングルールに対して、識別されたパケットのマッチングを試行すること、マッチングの試行に成功したとき、一致するＮＡＴマッピングルールに従って、識別されたパケットを変換すること、一致するＮＡＴマッピングルールが適用されると、変換されたパケットを１つまたは複数の変換されたパケット宛先へ送ること、および、マッチングの試行に成功しなかったとき、識別されたパケットを１つまたは複数のパケット処理宛先へ送ることを備えることができる。
【００１１】
先のおよび関連する目的を達成するために、特許請求される主題の１つまたは複数の態様は、以降で完全に述べられかつ特許請求の範囲で特に指摘される特徴を備える。以下の説明および添付図面は、特許請求される主題のいくつかの例証的な態様を詳細に述べる。これらの態様は、しかし、特許請求される主題の原理が使用され得る種々の方法のほんの少数を示す。さらに、開示される態様は、全てのこうした態様およびその均等物を含むことを意図される。
【図面の簡単な説明】
【００１２】
【図１】種々の態様によるマルチプロセッサモバイルコンピューティング環境において効率的なメモリ管理を容易にするシステムのブロック図。
【図２】種々の態様による、それぞれのローカルプロセッサ（複数可）および／またはテザードプロセッサ（複数可）に対するサービスを含むネットワークアドレス変換（ＮＡＴ）機能によってネットワークインターフェースを共有する例示的なシステムのブロック図。
【図３】ネットワークインターフェース共有を実装するために利用され得る例示的なモバイルコンピューティングアーキテクチャを示す図。
【図４】種々の態様による、ネットワークインターフェース共有セッションに関連する高度データサービス管理を容易にするために利用され得るモバイルコンピューティングアーキテクチャの実施例を示す図。
【図５】種々の態様による、例示的なそれぞれのマルチプロセッサモバイルコンピューティング実施態様によって行われるネットワークインターフェース共有セッションに関連する情報の流れを示す図。
【図６】種々の態様による、例示的なそれぞれのマルチプロセッサモバイルコンピューティング実施態様によって行われるネットワークインターフェース共有セッションに関連する情報の流れを示す図。
【図７】モバイルコンピューティングデバイスに関連するデータフローを管理する方法のフロー図。
【図８】モバイルコンピューティングデバイスに関連するデータフローを管理する方法のフロー図。
【図９】モバイルコンピューティングデバイスに関連するデータフローを管理する方法のフロー図。
【図１０】ネットワークインターフェース共有アプリケーション用のデータサービス管理を容易にする装置のブロック図。
【図１１】本明細書で述べる種々の態様が機能し得る例示的な無線通信システムを示す図。
【図１２】本明細書で述べる１つまたは複数の態様を実装するために利用され得る例示的なコンピューティングシステムのブロック図。
【発明を実施するための形態】
【００１３】
ここで図面を参照して特許請求される主題の種々の態様が述べられる。図面全体を通して、同じ参照番号が同じ要素を指すのに使用される。以下の説明では、説明のために、１つまたは複数の態様の完全な理解を可能にするために多数の特定の詳細が示される。しかし、こうした態様（複数可）は、これらの特定の詳細無しで実施されてもよい。他の事例では、よく知られている構造およびデバイスが、１つまたは複数の態様を述べるのを容易にするためにブロック図の形態で示される。
【００１４】
本出願で使用されるように、用語「コンポーネント（component）」、「モジュール（module）」、「システム（system）」などは、コンピュータ関連エンティティ、すなわち、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを指すことを意図される。たとえば、コンポーネントは、プロセッサ上で実行されるプロセス、集積回路、オブジェクト、実行可能物（executable）、実行スレッド（thread of execution）、プログラム、および／またはコンピュータであり得るが、それに限定されない。例証によれば、コンピューティングデバイス上で実行されるアプリケーションおよびコンピューティングデバイスはコンポーネントであり得る。１つまたは複数のコンポーネントがプロセスおよび／または実行スレッド内に存在することができ、あるコンポーネントが１台のコンピュータ上に局在し得る、かつ／または、２台以上のコンピュータ間に分散され得る。さらに、これらのコンポーネントは、種々のデータ構造が格納されている種々のコンピュータ読取り媒体から実行され得る。コンポーネントは、１つまたは複数のデータパケット（たとえば、ローカルシステム内で、分散システム内で、かつ／または他のシステムを有するインターネットなどのネットワークにわたって、別のコンポーネントと相互作用する１つのコンポーネントからの信号を経由のデータ）を有する信号などに従って、ローカルプロセスおよび／またはリモートプロセスによって通信し得る。
【００１５】
さらに、本明細書では、種々の態様が、無線端末および／または基地局に関連して述べられる。無線端末は、ユーザに音声および／またはデータ接続性を提供するデバイスを指し得る。無線端末は、ラップトップコンピュータまたはデスクトップコンピュータなどのコンピュータデバイスに接続され得る、または、携帯情報端末（ＰＤＡ）などのような自己完結型デバイスであり得る。無線端末はまた、システム、加入者ユニット、加入者局、移動局、モバイル、リモート局、アクセスポイント、リモート端末、アクセス端末、ユーザ端末、ユーザエージェント、ユーザデバイス、またはユーザ機器（ＵＥ）と呼ばれ得る。無線端末は、加入者局、無線デバイス、携帯電話、ＰＣＳ電話、コードレス電話、セッション開始プロトコル（ＳＩＰ）電話、無線ローカルループ（ＷＬＬ）局、携帯情報端末（ＰＤＡ）、無線接続機能を有する手持ち式デバイス、または無線モデムに接続された他の処理デバイスであり得る。基地局（たとえば、アクセスポイントまたはＥｖｏｌｖｅｄノードＢ（ｅＮＢ））は、エアインターフェースを通じ、１つまたは複数のセクタを経由して無線端末と通信するアクセスネットワーク内のデバイスを指し得る。基地局は、受信されたエアインターフェースフレームをＩＰパケットに変換することによって、無線端末と、インターネットプロトコル（ＩＰ）ネットワークを含むことができるアクセスネットワークの残りの部分との間のルータとして働き得る。基地局はまた、エアインターフェースについての属性管理を調整する。
【００１６】
さらに、本明細書で述べる種々の機能は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、コンピュータ読取り可能媒体上の１つまたは複数の命令またはコードとして、格納され得るまたは送信され得る。コンピュータ読取り可能媒体は、コンピュータ記憶媒体と、１つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。制限するのではなく、例を挙げると、こうしたコンピュータ読取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは、所望のプログラムコードを、命令またはデータ構造の形態で搬送するかまたは格納するために使用することができる、またコンピュータによってアクセスすることができる任意の他の媒体を備えることができる。同様に、任意の接続は、当然、コンピュータ読取り可能媒体と呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者ライン（ＤＳＬ）、または、赤外線、無線、およびマイクロ波などの無線技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、または、赤外線、無線、およびマイクロ波などの無線技術は、媒体の定義に含まれる。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（ＣＤ）、レーザディスク、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、およびブルーレイディスク（ＢＤ）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、レーザによってデータを光学的に再生する。上記の組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれるべきである。
【００１７】
本明細書で述べる種々の技法は、符号分割多元接続（ＣＤＭＡ）システム、時分割多元接続（ＴＤＭＡ）システム、周波数分割多元接続（ＦＤＭＡ）システム、直交周波数分割多元接続（ＯＦＤＭＡ）システム、単一搬送波ＦＤＭＡ（ＳＣ−ＦＤＭＡ）システム、および他のこうしたシステムなどの種々の無線通信システムのために使用され得る。用語「システム（system）」および「ネットワーク（network）」は、本明細書で交換可能に使用されることが多い。ＣＤＭＡシステムは、ユニバーサル陸上無線アクセス（Universal Terrestrial Radio Access）（ＵＴＲＡ）、ＣＤＭＡ２０００などのような無線技術を実装し得る。ＵＴＲＡは、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）およびＣＤＭＡの他の変形を含む。さらに、ＣＤＭＡ２０００は、ＩＳ−２０００、ＩＳ−９５、およびＩＳ−８５６規格をカバーする。ＴＤＭＡシステムは、モバイル通信用グローバルシステム（Global System for Mobile Communications）（ＧＳＭ（登録商標））などの無線技術を実装し得る。ＯＦＤＭＡシステムは、Ｅｖｏｌｖｅｄ  ＵＴＲＡ（Ｅ−ＵＴＲＡ）、ウルトラモバイルブロードバンド（Ultra Mobile Broadband）（ＵＭＢ）、ＩＥＥＥ  ８０２．１１（Ｗｉ−Ｆｉ）、ＩＥＥＥ  ８０２．１６（ＷｉＭＡＸ）、ＩＥＥＥ  ８０２．２０、Ｆｌａｓｈ−ＯＦＤＭ（登録商標）などのような無線技術を実装し得る。ＵＴＲＡおよびＥ−ＵＴＲＡは、ユニバーサルモバイルテレコミュニケーショシステム（Universal Mobile Telecommunication System）（ＵＭＴＳ）の一部である。３ＧＰＰロングタームエボリューション（Long Term Evolution）（ＬＴＥ）は、ダウンリンク上でＯＦＤＭＡを、アップリンク上でＳＣ−ＦＤＭＡを使用するＥ−ＵＴＲＡを使用するこれからのリリースである。ＵＴＲＡ、Ｅ−ＵＴＲＡ、ＵＭＴＳ、ＬＴＥ、およびＧＳＭは、「第３世代パートナーシッププロジェクト（3rd Generation Partnership Project）」（３ＧＰＰ）と名付けられた組織からの文書に記載されている。さらに、ＣＤＭＡ２０００およびＵＭＢは、「第３世代パートナーシッププロジェクト２（3rd Generation Partnership Project 2）」（３ＧＰＰ２）と名付けられた組織からの文書に記載されている。
【００１８】
様々な態様は、いくつかのデバイス、コンポーネント、モジュールなどを含むことができるシステムとして提示されることになる。種々のシステムは、さらなるデバイス、コンポーネント、モジュールなどを含むことができる、かつ／または、図に関連して説明されるデバイス、コンポーネント、モジュールなどの全てを含むことができるわけではないことが理解され、認識される。これらの手法の組合せもまた使用され得る。
【００１９】
ここで図面を参照して、図１は、本明細書で述べる種々の態様による、マルチプロセッサモバイルコンピューティング環境において効率的なメモリ管理を容易にするシステム１００を示す。一態様によれば、システム１００は、種々の通信サービスおよび／またはコンピューティングサービスを提供するために、ＢＲＥＷ（無線用バイナリランタイム環境（Binary Runtime Environment for Wireless））、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）モバイルなどのようなオペレーティングシステム（ＯＳ）を利用し得るモバイルデバイス１２０を含むことができる。一実施例では、モバイルデバイス１２０は、マルチプロセッサデバイスとして構築され得る。より詳細には、モバイルデバイス１２０は、コアネットワーク１１０との通信に関して（たとえば、モデム１２３および／または１つまたは複数の他の適したコンポーネントを制御することによって）エアインターフェースプロトコルオペレーションを管理するモデムプロセッサ１２２を含むことができる。コアネットワーク１１０は、たとえば、コンピューティングネットワークまたはインターネットワーク（たとえば、インターネット）、任意の適した無線通信技術を利用する無線または携帯通信ネットワーク、あるいは、その組合せ（たとえば、ＵＴＲＡ、Ｅ−ＵＴＲＡ、ＵＭＴＳ、ＬＴＥ、ＧＳＭ、ＣＤＭＡ２０００、ＵＭＢ、Ｗｉ−Ｆｉ、ＷｉＭＡＸなど）などであり得る。さらに、モバイルデバイス１２０は、モバイルデバイス１２０のオペレーティングシステムおよび／またはモバイルデバイス１２０上で実行されるそれぞれのアプリケーションを管理するアプリケーションプロセッサ１２４（本明細書で、「ａｐｐｓプロセッサ」とも呼ばれる）を含むことができる。
【００２０】
別の実施例では、モデムプロセッサ１２２およびアプリケーションプロセッサ１２４は、共有メモリ１２８に接続され得る。特定の実施例によれば、メモリ１２８は、モデムプロセッサ１２２、アプリケーションプロセッサ１２４、ならびに、プロセッサ１２２と１２４との間のプロセッサ間通信および／またはモバイルデバイス１２０によって利用される他のプロセッサにそれぞれ対応し得る３つの領域に分割され得る。付加的にかつ／または別法として、モデムプロセッサ１２２および／またはアプリケーションプロセッサ１２４は、ＳＤＩＯ（セキュアデジタル入力／出力）、ユニバーサルシリアルバス（ＵＳＢ）、ブルートゥース（ＢＴ）、ＵＡＲＴ（ユニバーサル非同期受信機／送信機）、および／または他のペリフェラルインターフェース（複数可）を介して、１つまたは複数の周辺機器（図示せず）に接続され得る。
【００２１】
一態様によれば、モデムプロセッサ１２２およびアプリケーションプロセッサ１２４は、種々のサービスを提供するために協働し得る。第１の実施例として、モバイルデバイス１２０は、ネットワークベースのまたはインターネットベースのサービスのためにモデム１２３によって提供される無線データ接続性を利用する１つまたは複数の埋め込み式アプリケーションを実行することができる。こうした実施例では、モデム１２３は、エアインターフェースプロトコルを処理し、ダウンリンクデータフローに関連するそれぞれのパケットを、メモリ１２８のモデム領域に書込むことができる。次に、それぞれのパケットをメモリ１２８の共有領域にコピーすることができ、この領域において、その後、パケットをアプリケーションプロセッサ１２４によりメモリ１２８のアプリケーション領域にコピーすることができる。そのため、上記実施例において、データパケットを処理し、モデムプロセッサ１２２とアプリケーションプロセッサ１２４との間で転送するために、少なくとも３つのデータ移動が必要とされ得ることを理解することができる。あるいは、メモリ１２８の第１の領域は、ダウンリンクデータ経路の場合、モデムプロセッサ１２２によって読取り可能でかつ書込み可能であり、アプリケーションプロセッサ１２４によって読取り可能であるだけであるものとして構成され得る、かつ／または、その逆であり得る。しかし、こうした構成はまた、データコピーまたはメモリ１２８内でのデータ移動を必要とし得ることを理解することができる。実施例によれば、こうした構成におけるダウンリンクデータ経路は、モデム１２３からメモリ１２８のモデム領域への第１のデータ移動およびメモリ１２８のモデム領域からメモリ１２８のアプリケーション領域への第２のデータ移動を必要とし得る。
【００２２】
第２の実施例として、モバイルデバイス１２０は、テザリングリンク１３２を介してモバイルデバイス１２０に関連するテザードコンピュータ１３０と協働して１つまたは複数の埋め込み式アプリケーションを実行することができる。テザードコンピュータ１３０は、パーソナルコンピュータ（ＰＣ）、ラップトップまたはタブレットコンピュータ、ＰＤＡ、スマートフォンなどのような任意の適したコンピューティングデバイスであり得る。さらに、テザードコンピュータ１３０をモバイルデバイス１２０に接続するために利用されるテザリングリンク１３２は、ＵＳＢ、ファイアワイヤ、Ｗｉ−Ｆｉ、ブルートゥース、および／または任意の他の適したインターフェース（複数可）であり得る。こうした実施例では、モバイルデバイス１２０およびテザードコンピュータ１３０は、モバイルデバイス１２０が、モバイルデバイス１２０および／またはテザードコンピュータ１３０に送られるＩＰデータフローを区別し、対応するパケットを相応して転送し得るように、内部またはプライベートの異質のインターネットプロトコル（ＩＰ）アドレスを有し得る。付加的にまたは別法として、モバイルデバイス１２０およびテザードコンピュータ１３０は、無線データ接続上で一般的なパブリックＩＰアドレスおよび／または他のネットワークアドレスを共有し得る。こうした実施例では、モバイルデバイス１２０は、１つまたは複数のネットワークアドレス変換（ＮＡＴ）オペレーションに基づいて、アップリンクパケットフローを監視し、内部アドレスおよび／またはポートを適切に外に出て行くアドレスおよび／またはポートに変換するように構成され得る、あるいは、その逆であり得る。こうしたオペレーションは、以降でさらに詳細に述べられる。
【００２３】
一実施例では、ＮＡＴオペレーションは、実質的に全てのデータパケットが、メモリ１２８のモデム領域からメモリ１２８のアプリケーション領域へ転送されることが必要とされるように、アプリケーションプロセッサ１２４を使用してモバイルデバイス１２０によって実施される。そのため、上述した埋め込み式アプリケーションのシナリオと同様な方法で、テザリングセッションに関連するデータ処理および転送のために、少なくとも３つのデータコピーが、モデムプロセッサ１２２とアプリケーションプロセッサ１２４との間で必要とされ得ることを理解することができる。より具体的には、テザードコンピュータ１３０に対して指定されたパケットは、トランスポートおよびネットワークプロトコル層ならびにＮＡＴオペレーションがアプリケーションプロセッサ１２４によって実行されることから、ダウンリンク方向でアプリケーションプロセッサ１２４に転送されることを必要とされ得る。さらに、アップリンク方向の場合、テザードコンピュータ１３０から到来するパケットは、パケットがモデムプロセッサ１２２に転送される前に、プロトコル層処理のために、モバイルデバイス１２０においてアプリケーションプロセッサ１２４に転送され得ることを理解することができる。こうして過剰のデータコピーを実施することは、モバイルデバイス１２０に関連するシステムバスおよび外部メモリ上で不必要なトランザクションを生成し得る、電力消費を増加させ得る、余分のプロセッサ資源を費やさせ得る、エンドエンド間遅延を増加させ得る、かつ／または、１つまたは複数の他の方法でユーザ経験に悪い影響を及ぼし得る。
【００２４】
従来の共有メモリシステムに関連する上記非効率性および／または他の欠点を軽減するために、システム１００内のモバイルデバイス１２０は、種々の態様に従って、１つまたは複数のペリフェラルモジュール１２６を含むことができる。一実施例では、ペリフェラルモジュール（複数可）１２６は、モデムプロセッサ１２２およびアプリケーションプロセッサ１２４と独立である、ハードウェア、ソフトウェア、および／または、他のコンポーネント（複数可）として実装することができ、それにより、関連するメモリ１２８の完全優先使用を容易にする。
【００２５】
一態様によれば、ペリフェラルモジュール（複数可）１２６は、モデムプロセッサ１２２とアプリケーションプロセッサ１２４との間でのデータ移動に関連する処理オーバヘッドを実質的に減少させるために、モバイルデバイス１２０によって利用することができる。実施例によれば、モバイルデバイス１２０上に常駐する埋め込み式アプリケーションの場合、ペリフェラルモジュール（複数可）１２６は、任意の関連するエアインターフェースプロトコルおよび／またはＩＰ／伝送制御プロトコル（ＴＣＰ）／ユーザデータグラムプロトコル（ＵＤＰ）オペレーションの終了後に、メモリ１２８のモデム領域からパケットを読み取り、メモリ１２８のアプリケーション領域へ書込むことによって１つだけのデータコピーを必要とする、モデムプロセッサ１２２とアプリケーションプロセッサ１２４との間の相互作用を容易にし得る。
【００２６】
別の実施例では、モバイルデバイス１２０とテザードコンピュータ１３０との間のデータサービス共有の場合、ペリフェラルモジュール（複数可）１２６は、テザードコンピュータ１３０用に指定されたそれぞれのパケットを、モバイルデバイス１２０およびテザードコンピュータ１３０が、アプリケーションプロセッサ１２４を通過することなく、それによって直接結合されるテザリングリンク１３２（たとえば、ＵＳＢ、ファイアワイヤ、ブルートゥースなど）に移動し得る。したがって、このようにペリフェラルモジュール（複数可）１２６を利用することは、電力節約、ＣＰＵ（中央処理ユニット）資源効率の向上、パケットレーテンシの減少、および／または他の利益をもたらし得ることを理解することができる。たとえば、埋め込み式アプリケーションデータがない場合、アプリケーションプロセッサ１２４は、テザードコンピュータ１３０用のデータを処理するためにモデムプロセッサ１２２だけがアクティブであることを必要とされるよう、電力節約のために完全に非アクティブ化するように構成され得る。
【００２７】
さらなる実施例では、ペリフェラルモジュール（複数可）１２６は、バス帯域幅、プロセッサ資源または同様なもの（たとえば、暗号化、チェックサム計算など）に関して要求が厳しいオペレーションが、一つに纏められ、専用ペリフェラルモジュール（複数可）１２６に実装され得るように、１つまたは複数の専用ＡＳＩＣ（特定用途向け集積回路）および／または他のハードウェアコンポーネントとして実装され得る。結果として、データは、メモリ１２８から１回で読み取ることができ、それによって、それぞれのオペレーションは、プロセッサ１２２および／または１２４にストレスをかける代わりに、専用ペリフェラルモジュール１２６に対してオフロードされ得る。
【００２８】
一態様によれば、ペリフェラルモジュール（複数可）１２６は、ＩＰフィルタリングおよびパケット転送、ＮＡＴ変換、ＩＰ／ＴＣＰ／ＵＤＰチェックサム検証および計算などのような、ネットワーク層（たとえば、ＩＰ）および／またはトランスポート層（たとえば、ＴＣＰ／ＵＤＰ）処理用の１つまたは複数のオペレーションを容易にするために、モデムプロセッサ１２２および／または他の任意の適したコンポーネント（複数可）によって構成され得る。ペリフェラルモジュール（複数可）１２６によって実施され得るこれらのまた他のオペレーションの特定の実施例は、以降でさらに詳細に述べられる。
【００２９】
さらなる態様によれば、ペリフェラルモジュール（複数可）１２６は、モデムプロセッサ１２２とアプリケーションプロセッサ１２４の両方に関連するメモリ１２８のセクションに対して読取りおよび書込みアクセスを有するように構成され得る。一実施例では、メモリ１２８用のセキュリティ保護は、メモリ保護ユニット（ＭＰＵ）を介して維持することができ、メモリ保護ユニット（ＭＰＵ）は、モデムプロセッサ１２２、アプリケーションプロセッサ１２４、および／またはペリフェラルモジュール（複数可）１２６にわたってメモリアクセス制御を実装し得る。
【００３０】
次に図２を考え、例示的なテザリングおよびネットワーク共有プロシージャが、その上でＰＣ２１０とモバイル端末２２０との間で行われるシステム２００が示される。しかし、システム２００はＰＣおよびモバイル端末用の例示的なネットワーク共有プロシージャを示すが、任意の適したコンピューティングデバイスは、システム２００によって示されるのと同様な方法でテザリングおよび／またはネットワーク共有を利用し得ることを理解されたい。
【００３１】
システム２００が示すように、基地局２３０および／または別の適したエンティティを通した無線通信システムへの接続を介して、インターネット２４０および／または別の適したネットワークまたはインターネットワークに対するアクセスを有するモバイル端末２２０は、プライベートまたはローカルネットワーク２１５を通して（たとえば、ＵＳＢ、Ｗｉ−Ｆｉ、ブルートゥースパーソナルエリアネットワーク（ＰＡＮ）、および／または任意の他の適したインターフェースを使用してモバイル端末２２０に接続される）１つまたは複数のテザードデバイス２１０と、インターネット２４０へのアクセスを共有するネットワーク共有を利用し得る。一実施例では、モバイル端末２２０は、モデム２２４および／または別の適した通信デバイスを介してローカルネットワーク２１５に関連する全てのデバイスによって、インターネット２４０への、かつ／または、インターネット２４０からの通信を調節するテザリングモジュール２２２を利用し得る。
【００３２】
一態様によれば、モバイル端末２２０は、さらに、単一パブリックＩＰアドレスによって規定される単一ネットワーク接続を使用して、複数のホストデバイスが、インターネット２４０などのワイドエリアネットワーク（ＷＡＮ）にアクセスすることを可能にし得るＮＡＴモジュール２２６を含むことができる。たとえば、ローカルネットワーク２１５内で、関連するそれぞれのデバイス２１０〜２２０は、ローカルネットワーク２１５とインターネット２４０との間の通信用のパブリックＩＰアドレス（たとえば、１５７．ｘ．ｙ．ｚ、ここで、ｘ、ｙ、およびｚは、０と２５５との間などの整数である）をモバイル端末２２０が利用し得る間に、ローカルネットワーク２１５上でそれぞれのデバイスを識別するプライベートＩＰアドレス（たとえば、１９２．１６８．０．１、１９２．１６８．０．２など）を割当てられ得る。そのため、システム２００に示すように、モバイル端末２２０のＮＡＴモジュール２２６は、ローカル｛プライベートＩＰアドレス、ポート｝対からＷＡＮ｛パブリックＩＰアドレス、ポート｝対へ、また、その逆へパケットを変換することによって、ローカルネットワーク２１５上のデバイスと、基地局２３０および／またはインターネット２４０との間の通信を可能にし得る。一実施例では、ポート変換は、ローカルネットワーク２１５を使用してデバイス間のポート衝突を防止するために、ＩＰアドレス変換に加えて、または、それの代わりに実施され得る。付加的にまたは別法として、ＮＡＴモジュール２２６は、たとえば、パケットに関して実施される任意の適用可能なＩＰアドレスおよび／またはポート変換を反映するために、それぞれのパケットのヘッダ内でＴＣＰおよび／またはＩＰチェックサム調整を実施することなどの、変換中のそれぞれのパケットに関する１つまたは複数のオペレーションを実施し得る。別の実施例では、ＮＡＴモジュール２２６は、テザードデータサービスが、テザリングモジュール２２２を介して１つまたは複数のデバイス２１０に提供されるときにアクティブ化され得る。
【００３３】
別の態様によれば、モバイル端末２２０は、使用中であるグローバルポートが、モバイル端末２２０に関連するグローバルＩＰアドレスを使用して新しいソケット用のエフェメラルポート値として割当てられないように、ＮＡＴアウェアにさせられ得る。同様に、モバイル端末２２０は、新しいＮＡＴマッピングが、モバイル端末２２０に関連するグローバルＩＰアドレスを使用して、既存のソケットによって使用中であるパブリックポートを回避するように、ＮＡＴマッピングを形成し得る。
【００３４】
一実施例では、モバイルコンピューティングデバイスは、図３のシステム３００によって示すように、１つまたは複数の他のデバイスとのネットワークインターフェース共有配置構成に関連するデータおよび／または制御情報の通信を管理し得る。図３に示すシステム３００の一部の要素は種々のモバイルコンピューティング実施態様に関連してもよいが、システム３００内に示すそれぞれの要素が、特定の非制限的な実施例として提供されること、および、別途明示的に述べられない限り、特許請求の範囲が、任意の特定の実施態様またはその組合せに限定されることを意図されないことを理解されたい。
【００３５】
一実施例では、システム３００は、モバイルコンピューティングデバイスおよび／または任意の他の適したコンピューティングデバイスによって実装することができ、また、システムメモリ３３０をそれぞれ共有し得る、アプリケーションプロセッサ３１０、ＰＣインターフェース３４０、およびモデム３５０を含むことができる。一態様によれば、ＰＣインターフェース３４０は、ネットワークインターフェース共有オペレーションおよび／または任意の他の適したオペレーション（複数可）に関連して、１つまたは複数のコンピューティングデバイスをデバイス実装システム３００に結合するために利用され得る。ＰＣインターフェース３４０は、ＵＳＢ、ブルートゥース、ファイアワイヤ、および／または任意の他の適したインターフェースタイプ（複数可）を介して実装され得る。一実施例では、ＰＣインターフェース３４０は、アプリケーションプロセッサ３１０に関連するＰＣインターフェースドライバ３２２によって制御され得る。
【００３６】
別の態様によれば、モデム３５０は、システム３００に関連するパブリック通信ネットワークへの、かつ／または、そこからの通信を管理するために利用され得る。一実施例では、モデム３５０は、アプリケーションプロセッサ３１０に関連するモデムドライバ３２４によって制御され得る。付加的にまたは別法として、モデムプロセッサ、プロトコル処理ドライバ、および／または他の適した制御機構（複数可）は、モデム３５０の制御を容易にするために、モデム３５０内に、かつ／または、モデム３５０に関連して設けられ得る。
【００３７】
さらなる実施例では、システム３００は、システム３００に関連するモバイルデバイスとＰＣおよび／または他の適したコンピューティングデバイスとの間のテザードデータ接続用の機構を含むことができる。こうした実施例では、アプリケーションプロセッサ３１０は、テザードデバイスが種々のデータのソースおよび／またはシンクであり、一部のまたは全ての残りのデータがアプリケーションプロセッサ３１０で入力データ処理される（source）、かつ／または、出力データ処理される（sink）ように、モデム３５０に関連するモデムプロセッサとテザードコンピューティングデバイスとの間の中間ノードとして役立ち得る。これらの目的のために、アプリケーションプロセッサ３１０は、アプリケーションプロセッサ３１０およびテザードデバイスが共に、関連するモデムプロセッサを通して一般的な無線接続を共有することを可能にし得るＮＡＴモジュール３１２を含むことができる。一実施例では、ＮＡＴモジュール３１２は、アプリケーションプロセッサ３１０においてソフトウェアで実装され得る。付加的にまたは別法として、アプリケーションプロセッサは、さらに、システム３００と、関連するパブリックネットワークとの間のデータ通信について必要とされるパケットトランスポート、フレーム化、および／または任意の他の適したオペレーション（複数可）を容易にするために、ＴＣＰ／ＩＰモジュールを含むことができる。
【００３８】
システム３００内のアプリケーションプロセッサ３１０は、テザードコンピューティングデバイスとパブリックネットワークとの間の中間ノードとして役立つため、システム３００は、パブリックネットワークへかつ／またはパブリックネットワークから送信される全てのパケットを経路制御するように構成されることが観察され得る。これらのパケットは、たとえば、入力および／または出力エンドポイント（ＥＰ）に対応し得る。しかし、システム３００によって示されるように、パブリックネットワークにかつ／またはパブリックネットワークから指定されるそれぞれのパケットが、デバイス実装システム３００によって消費されない場合でも、こうしたパケットは、パケットを通信する前のヘッダ更新および／または他の処理のために、アプリケーションプロセッサ３１０およびＰＣインターフェース３４０を通して経路制御されることを依然として必要とされ得る。結果として、アプリケーションプロセッサ３１０による処理は、関連するパブリックネットワークの、出入りする実質的に全てのパケットについて必要とされ、アプリケーションプロセッサ３１０に対する過剰の負担、過剰の電力使用などをもたらし得ることを理解することができる。
【００３９】
したがって、少なくとも上述した欠点を軽減するために、ＮＡＴ変換および／または他のパケット処理オペレーションは、図４のシステム４００によって示すように、アプリケーションプロセッサ３１０から１つまたは複数の異質のモジュールにオフロードされ得る。図４によって示される一態様によれば、システム４００は、アプリケーションプロセッサ３１０からオフロードされるそれぞれのオペレーションを実施する１つまたは複数のプロセッサおよび／または他の適切なコンポーネント（複数可）を含むことができるスマートペリフェラルサブシステム（ＳＰＳ）モジュール４６０を含むことができる。
【００４０】
一実施例では、ＳＰＳ４６０は、テザードコンピューティングデバイス用のＮＡＴ有効化済みテザードネットワーク接続インターフェースとして役立ち得、テザードコンピューティングデバイスに関連するＰＣインターフェース３４０に（たとえば、インターフェースコントローラ４４２を介して）結合され得る。付加的にまたは別法として、ＳＰＳ４６０は、モデム３５０に関連するプロトコルプロセッサ４５２（たとえば、プロトコルコントローラ４５６を介して）、ＳＰＳ４６０およびアプリケーションプロセッサ３１０にアクセス可能な共有システムメモリ３３０、および／または、任意の他の適したインターフェース（複数可）に結合され得る。これらの関連付けに基づいて、ＳＰＳ４６０は、システム４００に関連するプライベートネットワーク内で通信されるそれぞれのパケットについて１つまたは複数のオペレーションを実施し得る。たとえば、パケットを検出すると、ＳＰＳ４６０は、アプリケーションプロセッサ３１０から実質的に最小の相互作用を必要とする状態で、パケット用のＮＡＴ変換を実施し、パケットの１つまたは複数の意図される宛先を識別し、パケットを、対応する宛先アダプタ（複数可）に経路制御し得る。
【００４１】
そのため、実施例によれば、アップリンク（ＵＬ）パケットが、ＰＣインターフェース３４０に到達すると、ＳＰＳ４６０は、パケットを解析し、パケットが、アプリケーションプロセッサ３１０などに関連するデバイスなどのパケット処理宛先のために意図されるか、または、モデム３５０などに関連するＷＡＮなどの変換されたパケット宛先のために意図されるかを識別し得る。パケットが１つまたは複数の変換されたパケット宛先のために意図されることを識別すると、ＳＰＳ４６０は、アプリケーションプロセッサ３１０からの介入を必要とすることなく、ＮＡＴ変換を実施し、パケットを、モデム３５０および／または任意の他の適した宛先（複数可）に直接転送し得る。同様に、ＳＰＳ４６０は、ＰＣインターフェース３４０などに関連するテザードコンピューティングデバイスのために指定されたものとして識別されるモデム３５０に到達するダウンリンク（ＤＬ）パケットの場合、ＮＡＴ変換を実施し、パケットを、ＰＣインターフェース３４０および／または任意の他の適した変換されたパケット宛先に直接転送し得る。こうして、ＮＡＴ変換を実施し、転送することによって、ＳＰＳ４６０が、アプリケーションプロセッサ３１０における処理電力、アプリケーションプロセッサとＳＰＳ４６０との間のプロセッサ間通信に関連するバス帯域幅、および／または他の性能基準のかなりの節約を提供し得ることを理解することができる。
【００４２】
別の態様によれば、ＳＰＳ４６０は、アプリケーションプロセッサ３１０によってＳＰＳ４６０に提供される１つまたは複数のＮＡＴルールに基づいて、それぞれのパケットに関してＮＡＴ変換オペレーションを実施し得る。一実施例では、一組のＮＡＴルールは、プライベートＩＰアドレス／ポート対からパブリックＩＰアドレス／ポート対へのマッピングまたは他の適したマッピングのテーブルとしてＳＰＳドライバ４１４によって構成され得る。別の実施例では、ＳＰＳドライバ４１４は、少なくともＮＡＴオフロード（ＯＬ）ドライバ４１２から受信される命令に基づいてＮＡＴルールを設定し得る。
【００４３】
さらなる態様によれば、ＳＰＳドライバは、システム４００に関連するプライベートネットワーク上のアプリケーションと、モデム３５０が関連するパブリックネットワーク上のアプリケーションとの間で行われる新しい接続を識別するように構成され得る。新しい接続を識別すると、ＮＡＴ  ＯＬドライバ４１２は、新しい接続のためにＮＡＴ変換ルールをセットアップするために、アプリケーションプロセッサ３１０に関連するＯＳと協働してまたはＯＳと独立に働くことができ、新しい接続は、その後、ＳＰＳ４６０に中継されるために、ＳＰＳドライバ４１４に提供され得る。付加的にまたは別法として、それぞれのＮＡＴルールに対応する１つまたは複数の接続がもはや利用されていないことを識別するように、ＳＰＳドライバ４１４を構成することができ、それに基づいて、ＳＰＳドライバ４１４は、ＳＰＳ４６０における対応するＮＡＴルールの取外しを命令し得る。一実施例では、ＳＰＳ４６０においてＮＡＴルールが取外されると、ＳＰＳドライバ４１４は、さらに、ＮＡＴルールがＳＰＳ４６０によってもはや扱われないことを示す状態情報を、ＮＡＴ  ＯＬドライバ４１２に伝えるように構成され得る。
【００４４】
システム４００でさらに示すように、ＳＰＳ４６０は、ＵＬ方向のかつ／またはＤＬ方向のそれぞれのパケットを処理するそれぞれのコンポーネントを含むことができる。ＤＬ方向では、ＰＣインターフェース３４０を通して接続されるデバイスのために意図されるパケットは、プロトコルプロセッサ４５２によって最初に処理することができ、プロトコルプロセッサ４５２は、プロトコルコントローラ４５６によって指示されるように、フィルタリングブロック４５４を使用してパケットのためのフィルタリングおよび／または任意の他の適したオペレーション（複数可）を実施し得る。その後、システム３００に示すようにアプリケーションプロセッサ３１０にパケットを伝えるのではなく、パケットは、ＳＰＳ４６０に提供され得る。
【００４５】
ＳＰＳ４６０にてパケットが受信されると、決定ブロック４６２は、ＳＰＳドライバ４１４によって構成された１つまたは複数のＮＡＴルールが、（たとえば、パブリックＩＰアドレスおよび／またはポートによって指定される）パケットによって指定された接続に一致するかどかを判定し得る。マッチングルールが識別される場合、ＮＡＴ変換は、識別されたルールを使用してＮＡＴブロック４６４のパケットについて実施され得る。付加的にまたは別法として、開放型システム間相互接続（ＯＳＩ）第２層（Ｌ２）またはリンク層フレーム化は、Ｌ２パケットブロック４６６および／または別の適したモジュールのパケットについて実施され得る。そうでなければ、一致するＮＡＴルールが発見されない場合、決定ブロック４６２は、代わりに、処理のためのパケットをアプリケーションプロセッサ３１０に伝え得る。処理に続いて、ＳＰＳドライバ４１４および／またはアプリケーションプロセッサ３１０に関連する１つまたは複数の他のコンポーネントは、任意選択で、パケットに対応する新しいＮＡＴルールを作成し、作成されたルールのＳＰＳ４６０におけるインストールを容易にし得る。決定ブロック４６２によって取られた処理に基づいて、マルチプレクサ（ＭＵＸ）４６８は、処理されたパケットを、処理がそこで実施された場所から適切なデバイスに転送するＰＣインターフェース３４０へ伝えるために利用され得る。
【００４６】
同様に、ＵＬ方向では、ＰＣインターフェース３４０で受信される、モデム３５０に関連するパブリックネットワークのために意図されるパケットは、ＳＰＳ４６０に提供され得る。ＳＰＳ４６０に到達すると、Ｌ２フレーム化解除またはパーシングは、Ｌ２パースブロック４７２および／または別の適したモジュールによってパケットについて実施することができ、それに続いて、パケットは、決定ブロック４６２、ＮＡＴブロック４６４、およびマルチプレクサ４６８に関して上述した方法と同様な方法で、決定ブロック４７４、ＮＡＴブロック４７６、およびマルチプレクサ４７８を使用してＳＰＳ４６０を通して経路制御され得る。処理されたＵＬパケットは、その後、プロトコルプロセッサ４５２に提供され、パケットは、プロトコルプロセッサ４５２から関連するパブリックネットワークへモデム３５０によって通信され得る。
【００４７】
一態様によれば、ＳＰＳ４６０は、ＳＰＳ４６０によって処理されるそれぞれのパケットについてＬ２フレーム化および／またはフレーム化解除を行う、１つまたは複数のＬ２パケットブロック４６６、Ｌ２パースブロック４７２、および／または、任意の他の適したモジュール（複数可）を利用し得る。一実施例では、Ｌ２パケットブロック４６６、Ｌ２パースブロック４７２、および／または他の同様なブロックは、モデム３５０が通信するネットワーク（たとえば、ＣＤＭＡを利用するネットワーク、ＵＭＴＳ、ＷＬＡＮ、ブルートゥースなど）に関連するリンク層プロトコルと、ＰＣインターフェース３４０（たとえば、ＵＳＢ、ファイアワイヤ、Ｗｉ−Ｆｉなど）に対応するテザリングリンクと、ＮＡＴ変換に関連する高レベルネットワークおよびトランスポート層プロトコル（たとえば、ＯＳＩ第３層（Ｌ３）および／または第４層（Ｌ４）プロトコル）との間の相互運用性を容易にするために利用され得る。
【００４８】
こうして、一実施例では、Ｌ２パースブロック４７２は、パケットに含まれるネットワーク層および／またはトランスポート層情報に関して種々の処理オペレーション（たとえば、ＮＡＴ変換、ＴＣＰ／ＩＰチェックサム検証および計算など）を可能にするために、ＰＣインターフェース３４０から受信されるそれぞれのパケットについてＬ２フレーム化解除を実施するために利用され得る。同様に、Ｌ２パケットブロック４６６は、ＰＣインターフェース３４０に関連する１つまたは複数のリンク層プロトコルによるそれぞれのパケットの使用を容易にするために、ブロック４６２〜４６４などによって処理されたパケットに関してＬ２フレーム化を実施するために利用され得る。こうしてパケットパーシングおよび／またはカプセル化を実施することによって、システム４００内の知られているＮＡＴ関係に対応するそれぞれのパケットの処理に関する実質的に全ての機能をＳＰＳ４６０にオフロードすることができ、それにより、アプリケーションプロセッサ３１０における出費を招くことなく、システム４００が高いデータレートを達成することが可能になることを理解することができる。
【００４９】
付加的にまたは別法として、システム４００では示さないが、ＯＳＩ第２層またはリンク層のフレーム化およびフレーム化解除は共に、たとえば決定ブロック４６２の前のＬ２パースブロックおよび／またはマルチプレクサ４７８の前のＬ２パケットブロックを利用することによって、ＳＰＳ４６０内でアップリンクおよび／またはダウンリンクパケットについて実施され得る。これは、ＰＣインターフェース３４０およびモデム３５０において異種のＬ２プロトコルを利用するシステムの場合、ＳＰＳ４６０を介して完全優先パケット処理を有効にするために行われ得ることを理解することができる。こうして、たとえば、アップリンクまたはダウンリンク上でＳＰＳ４６０に到達するパケットは、第１のリンク層プロトコルに従ってリンク層においてフレーム化解除され、ネットワークおよび／またはトランスポート層レベルで処理され、その後、第２の異質のリンク層プロトコルに従ってリンク層において再フレーム化され得る。
【００５０】
別の態様によれば、システム４００は、種々の基準に基づいて、処理をＳＰＳ４６０にオフロードする代わりにまたはそれに加えて、処理のためにそれぞれのパケットをアプリケーションプロセッサ３１０に伝えるように選択し得る。たとえば、システム４００は、ダウンリンク上でモデム３５０によって受信されたフラグメント化されたパケットが、再構築のためにアプリケーションプロセッサ３１０においてモデムドライバ３２４に提供され得ることを示す。再構築に続いて、再構築されたそれぞれのパケットに関してＮＡＴ変換および／または他のオペレーションが、アプリケーションプロセッサ３１０によって実施され得る、または別法として、モデムドライバ３２４が、さらなる処理のために、再構築されたパケットをＳＰＳ４６０にオフロードし得る。
【００５１】
システム４００によってさらに示されるように、ＰＣインターフェース３４０および／またはアプリケーションプロセッサ３１０に起因するそれぞれのパケットは、付加的にまたは別法として、ＳＰＳ４６０からの介入を受けずに、アプリケーションプロセッサ３１０とＰＣインターフェース３４０との間で経路制御され得る。アプリケーションプロセッサ３１０を通して経路制御されたパケットは、たとえば、制御エンドポイント、ＮＡＴオフロードインターフェース（たとえば、診断（Ｄｉａｇ）インターフェース、米国海洋電子機器協会（National Marine Electronics Association）（ＮＭＥＡ）インターフェースなど）と異質のインターフェースに関連するエンドポイントなどのような、ＳＰＳ４６０またはＮＡＴオフロードインターフェースに関連しないエンドポイントに対応するパケット；アプリケーションプロセッサ３１０上で実行されるアプリケーションが、モデム３５０を巻き込むことなく、ＰＣインターフェース３４０に関連するデバイス上で実行されるアプリケーションと通信する場合に、ＮＡＴオフロードインターフェースのために使用されるエンドポイントに対応するパケット；および／または任意の他の適したパケット（複数可）を含むことができる。一実施例では、ＰＣインターフェース３４０からアプリケーションプロセッサ３１０へパケットが転送されると、転送されたパケットは、ＰＣインターフェースドライバ３２２によって処理することができ、その後、マルチプレクサ４２２および／または他の適した手段は、処理されたパケットを、さらに処理するためにＰＣインターフェース３４０および／またはＳＰＳ４６０に選択的に戻すために利用され得る。
【００５２】
先の実施例に関して、フラグメント化されたパケット、システム４００に示すようにＰＣインターフェース３４０とＰＣインターフェースドライバ３２２との間で直接通信されたパケット、および／または、システム４００内で通信された任意の他のパケットは、アプリケーションプロセッサ３１０に直接提供される必要がないことを理解されたい。あるいは、こうしたパケットは、アプリケーションプロセッサ３１０に関して上述した一部のまたは全ての処理を容易にするために、ＳＰＳ４６０に提供され得ることを理解することができる。
【００５３】
次に図５〜６を参照して、種々の態様による、モバイルコンピューティングデバイスに関連し得る、モデムプロセッサ５０２とａｐｐｓプロセッサ５０４との間の情報の例示的な流れを示すそれぞれの図５００〜６００が提供される。最初に図５のシステム５００を参照すると、モデムプロセッサ５０２に関連する第１のＰＤＵバッファ５１２にあるそれぞれのプロトコルデータユニット（ＰＤＵ）は、ヘッダ処理ブロック５１４に伝えられ、ヘッダ処理ブロック５１４は、ＰＤＵに対応する制御情報を生成し、生成された制御情報を、ＰＤＵバッファ５１２からの対応するＰＤＵと共にプロトコルプロセッサ５１８に送信し得る。それぞれのＰＤＵを受信すると、プロトコルプロセッサ５１８は、循環冗長検査（cyclic redundancy check）（ＣＲＣ）検証、復号化などのような、ＰＤＵに関する１つまたは複数の処理オペレーションを実施し得る。プロトコルプロセッサは、その後、処理されたＰＤＵを第２のＰＤＵバッファ５２０に送ることができ、第２のＰＤＵバッファ５２０は、次に、モデムプロセッサ５０２およびａｐｐｓプロセッサ５０４に共通の共有バッファ５３２にＰＤＵを転送し得る。
【００５４】
共有バッファ５３２にそれぞれのＰＤＵが到達すると、ａｐｐｓプロセッサ５０４は、１つまたは複数のネットワークインターフェースバッファ５４２に対してＰＤＵを読み取る（read）ことができ、ネットワークインターフェースバッファ５４２は、次に、ＰＤＵをネットワークインターフェースドライバ５４４に転送し得る。一実施例では、ネットワークインターフェースドライバ５４４は、システム５００に関連するデバイスのために指定されたパケットを、ａｐｐｓプロセッサ５０４上に常駐する１つまたは複数の埋め込み式データアプリケーション５４６に送信し得る。付加的にまたは別法として、ネットワークインターフェースドライバ５４４は、テザードコンピュータデバイスのために指定された１つまたは複数のパケットを、テザードコンピュータデバイスに結合されたインターフェースコントローラ５４８（たとえば、ＵＳＢコントローラ、ブルートゥースコントローラなど）に提供し得る。
【００５５】
システム５００によって示されるように、モデムプロセッサ５０２とａｐｐｓプロセッサ５０４との間のデータの移動を容易にするために、プロトコルプロセッサ５１８からＰＤＵバッファ５２０へ、ＰＤＵバッファ５２０から共有バッファ５３２へ、共有バッファ５３２からネットワークインターフェースバッファ（複数可）５４２への３つのデータ移動が必要とされる。さらに、モデムプロセッサ５０２とテザードコンピュータデバイスとの間のデータの転送の場合、第４のデータ移動が、ネットワークインターフェースドライバ５４４を介してネットワークインターフェースバッファ（複数可）５４２とインターフェースコントローラ５４８との間で必要とされ得ることを理解することができる。
【００５６】
上記を考慮して、一態様によれば、図６に示すシステム６００は、メモリアクセス効率を増加させ、ａｐｐｓプロセッサ５０４の負荷を低減し、かつ／または、他の利益を提供するために実装され得る。システム６００が示すように、モデムプロセッサ５０２は、それぞれのＰＤＵをプロトコル加速器６１２に送ることができ、プロトコル加速器６１２は、静的ダウンリンクＮＡＴマッピングに対して、受信されたＰＤＵをマッチングしようと試行し得る。一実施例では、プロトコル加速器６１２に知られている静的マッピングに一致しないＰＤＵは、１つまたは複数のネットワークインターフェースバッファ５４２に伝えられ、１つまたは複数のネットワークインターフェースバッファ５４２は、次に、さらなる処理のために、ＰＤＵをａｐｐｓプロセッサ５０４に転送し得る。ａｐｐｓプロセッサ５０４は、その後、ＰＤＵに対応する制御情報を、ＮＡＴモジュール６１６に送ることができ、ＮＡＴモジュール６１６は、制御情報に基づいて１つまたは複数の新しいＮＡＴマッピングを構成し、構成されたＮＡＴマッピングをＳＰＳプロセッサ６１４に転送し得る。付加的にまたは別法として、静的アドレス／ポートマッピングがそれについて見出されるそれぞれのＰＤＵは、ＳＰＳプロセッサ６１４に伝えられ、ＳＰＳプロセッサ６１４は、ＰＤＵを、対応するテザリングリンクを通してテザードコンピュータ６１８に転送し得る。一実施例では、ＳＰＳプロセッサ６１４は、さらに、１つまたは複数のリンク層プロトコル（たとえば、ＩＥＥＥ８０２．３、ＩＥＥＥ８０２．１１など）に基づくフレーム化解除、ポートまたはチェックサム情報の修正および／または付加、ならびに／または、それぞれのＰＤＵに関する任意の他の適したオペレーションを実施し得る。別の実施例では、ＳＰＳプロセッサ６１４は、ａｐｐｓプロセッサ５０４に転送するために、もはや利用されないＮＡＴマッピングに関する情報、知られている任意の静的ＮＡＴマッピングに一致しないＰＤＵなどを、ＮＡＴモジュール６１６に転送し得る。
【００５７】
したがって、ＤＬマッピングが、それについてプロトコル加速器６１２および／またはＳＰＳプロセッサ６１４に存在するＰＤＵの場合、モデムプロセッサ５０２からテザードコンピュータ６１８への転送は、必要とされるメモリアクセスがシステム５００によって必要とされるよりも少ない状態で実施され得ることを理解することができる。さらに、こうした場合、ａｐｐｓプロセッサ５０４によってオペレーションが実質的に全く必要とされず、それにより、ａｐｐｓプロセッサ５０４およびシステム６００の総合効率が増加することが観察され得る。
【００５８】
ここで図７〜９を参照して、本明細書で述べる種々の態様に従って実施され得る方法が示される。説明を簡単にするために、方法が、一連の行為として示され述べられるが、一部の行為が、１つまたは複数の態様に従って、異なる順序で、かつ／または、本明細書で示し述べる行為以外の行為と同時に起こり得るため、方法が行為の順序によって制限されないことは理解し認識することができる。たとえば、方法は、あるいは、状態図などにおいて、一連の相互に関係のある状態またはイベントとして表され得ることを当業者は理解し認識するであろう。さらに、１つまたは複数の態様に従って方法を実装するために、示す全ての行為（act）が必要とされない可能性がある。
【００５９】
図７を参照して、モバイルコンピューティングデバイス（たとえば、モバイルデバイス１２０）に関連するデータフローを管理する方法７００が示される。方法７００は、たとえば、モバイルコンピューティングデバイスおよび／またはモバイルコンピューティングデバイスに関連する１つまたは複数のハードウェアまたはソフトウェアコンポーネント（たとえば、ペリフェラルモジュール（複数可）１２６）あるいは任意の他の適切なコンピューティングデバイス（複数可）またはデバイスコンポーネント（複数可）によって実施され得ることが理解される。方法７００は、一組のＮＡＴルールがアプリケーションプロセッサ（たとえば、アプリケーションプロセッサ１２４）から受信されるブロック７０２で始まる。次に、ブロック７０４にて、パケットは、結合された第１のインターフェース（たとえば、モデム１２３に対するインターフェースまたはテザードコンピュータ１３０に対するＰＣインターフェース）を介して受信される。ブロック７０６にて、ブロック７０４にて受信されたパケットに対応する、ブロック７０２にて受信されたルールからのＮＡＴルールの識別が、その後試行され得る。
【００６０】
ブロック７０８にて、ブロック７０６における一致するＮＡＴルールについての試行された識別が成功であったかどうかが判定される。識別が成功であった場合、方法７００は、ブロック７０４で受信されたパケットが、ブロック７０６で成功裏に識別されたＮＡＴルールを使用して変換されるブロック７１０、および、パケットが、結合された第２のインターフェース（たとえば、テザードコンピュータから生じるパケットの場合、モデムインターフェース、または、その逆）に伝えられるブロック７１２に進むことによって終了することができる。対照的に、ブロック７０６における識別が不成功であった場合、方法は、代わりに、ブロック７０８から、ブロック７０４にて受信されたパケットがアプリケーションプロセッサに伝えられるブロック７１４へ進むことによって終了することができる。
【００６１】
図８は、モバイルコンピューティング環境に関連してダウンリンクデータを管理するために利用され得る例示的な方法８００を示す。方法８００は、たとえば、（たとえば、ＳＰＳ４６０およびそのサブコンポーネントなどの１つまたは複数のハードウェアコポーネントを介して）コンピューティングデバイスによってかつ／または任意の他の適したデバイスによって実施され得る。方法８００は、一組のＮＡＴルールがアプリケーションプロセッサ（たとえば、ＳＰＳドライバ４１４を介してアプリケーションプロセッサ３１０）から受信されるブロック８０２で始まる。次に、ブロック８０４にて、ダウンリンクパケットは、モデムサブシステムインターフェース（たとえば、モデム３５０に関連するプロトコルプロセッサ４５２）から受信される。ブロック８０６にて、ブロック８０４にて受信されたパケットに対応する、ブロック８０２にて受信されたＮＡＴルールの識別が、その後、（たとえば、決定ブロック４６２によって）試行される。
【００６２】
一態様によれば、方法８００は、ブロック８０６における試行された識別の結果に基づいてブロック８０８にて分岐し得る。たとえば、ＮＡＴルールがブロック８０６にて成功裏に識別される場合、方法８００は、ブロック８０８から、ブロック８０２にて受信されたパケットが、識別されたＮＡＴルールを使用して（たとえば、ＮＡＴブロック４６４によって）変換されるブロック８１０、および、第２層フレーム化が（たとえば、Ｌ２パケットブロック４６６によって）パケットについて実施されるブロック８１２へ進むことができる。方法８００は、その後、パケットが、テザードコンピュータに関連する結合されたインターフェース（たとえば、ＰＣインターフェース３４０）に（たとえば、ＭＵＸ４６８によって）転送されるブロック８１８で終了することができる。
【００６３】
あるいは、ＮＡＴルールがブロック８０６にて成功裏に識別されない場合、方法８００は、ブロック８０８から、ブロック８０２にて受信されたパケットが、さらなる処理のためにアプリケーションプロセッサに転送されるブロック８１４に進むことができる。方法８００は、その後、ブロック８１４から終了することができる、または、任意選択で、ブロック８１４においてアプリケーションプロセッサに転送されたパケットが、処理に続いてアプリケーションプロセッサから戻るように受信されるブロック８１６へ進むことができる。ブロック８１６で述べる行為が終了すると、方法８００は、その後、上述したようにブロック８１８で終了することができる。
【００６４】
図９を参照すると、モバイルコンピューティング環境に関連してアップリンクデータを管理する方法９００が示される。方法９００は、任意の適したコンピューティングデバイス（複数可）および／またはコンピューティングデバイスに関連するサブコンポーネント（複数可）によって実施され得ることを理解されたい。方法９００は、一組のＮＡＴルールがアプリケーションプロセッサから受信されるブロック９０２で始まる。次に、ブロック９０４にて、アップリンクパケットは、テザードコンピュータに関連する結合されたインターフェースから受信される。第２層パーシングは、その後、ブロック９０４にて受信されたパケットについてブロック９０６にて（たとえば、Ｌ２パースブロック４７２によって）実施することができ、ブロック１４０４にて受信されたパケットに対応する、ブロック９０２にて受信されたＮＡＴルールの識別は、その後、ブロック９０８にて（たとえば、決定ブロック４７４によって）試行され得る。
【００６５】
図９に示すように、方法９００は、ブロック９０８における試行された識別の結果に基づいてブロック９１０にて分岐し得る。こうして、ブロック９０８にてＮＡＴルールが成功裏に識別されると、方法９００は、ブロック９１０から、ブロック９０２にて受信されたパケットが、識別されたＮＡＴルールを使用して（たとえば、ＮＡＴブロック４７６によって）変換されるブロック９１２へ進むことができる。方法９００は、その後、パケットが、モデムインターフェースに（たとえば、ＭＵＸ４７８によって）転送されるブロック９１４で終了することができる。
【００６６】
あるいは、ブロック９０８にてＮＡＴルールの識別の試行に成功しなかったとき、方法９００は、ブロック９１０から、ブロック９０２にて受信されたパケットが、さらなる処理のためにアプリケーションプロセッサに転送されるブロック９１６に進むことができる。方法９００は、ブロック９１６で述べる行為に続いて終了することができる、または、任意選択で、パケットが、処理に続いてアプリケーションプロセッサから戻されるブロック９１８に進むことができる。ブロック９１８に述べる行為の終了後に、方法９００は、上述したようにブロック９１４で終了することができる。
【００６７】
図１０は、ネットワークインターフェース共有アプリケーション用のデータサービス管理を容易にする装置１０００を示す。装置１０００は、プロセッサ、ソフトウェア、またはその組合せ（たとえば、ファームウェア）によって実装される機能を表す機能ブロックであり得る機能ブロックを含むものとして示されることを理解されたい。装置１０００は、任意の適したコンピューティングデバイス（たとえば、モバイルデバイス１２０）および／またはそのコンポーネント（複数可）（たとえば、ペリフェラルモジュール（複数可）１２６）によって実装され、また、関連するａｐｐｓプロセッサからＮＡＴマッピングルールを受信するモジュール１００２、第１のインターフェースを介して取得されるパケットを識別するモジュール１００４、受信されたそれぞれのＮＡＴマッピングルールに対して、識別されたパケットのマッチングを試行するモジュール１００６、一致するＮＡＴマッピングルールに従ってパケットを変換し、マッチングの試行に成功したとき、パケットを第２のインターフェースへ送るモジュール１００８、および、マッチングの試行に成功しなかったとき、パケットをａｐｐｓプロセッサへ送るモジュール１０１０を含むことができる。
【００６８】
ここで図１１を参照して、無線多元接続通信システムの例証が、種々の態様に従って提供される。一実施例では、アクセスポイント１１００（ＡＰ）は、複数のアンテナ群を含む。図１１に示すように、１つのアンテナ群は、アンテナ１１０４および１１０６を含むことができ、別のアンテナ群は、アンテナ１１０８および１１１０を含むことができ、別のアンテナ群は、アンテナ１１１２および１１１４を含むことができる。図１１では、各アンテナ群について２つのアンテナだけが示されるが、各アンテナ群についてより多いまたはより少ないアンテナが利用されてもよいことを理解されたい。別の実施例では、アクセス端末１１１６は、アンテナ１１１２および１１１４と通信状態にあることができ、アンテナ１１１２および１１１４は、順方向リンク１１２０を通じてアクセス端末１１１６に情報を送信し、逆方向リンク１１１８を通じてアクセス端末１１１６から情報を受信する。付加的にまたは別法として、アクセス端末１１２２は、アンテナ１１０６および１１０８と通信状態にあることができ、アンテナ１１０６および１１０８は、順方向リンク１１２６を通じてアクセス端末１１２２に情報を送信し、逆方向リンク１１２４を通じてアクセス端末１１２２から情報を受信する。さらなる実施例では、アクセス端末１１１６および／または１１２２は、それぞれのコンピューティングデバイスに結合されることが可能であり、結合されたコンピューティングデバイスとアクセスポイント１１００との間の接続性、あるいは、本明細書で一般的に述べるように、アクセスポイント１１００が、それによって１つまたは複数のデータサービス共有技法を介して関連付けられるコアネットワークまたはインターネットワークを提供するように動作し得る。周波数分割複信システムでは、通信リンク１１１８、１１２０、１１２４、および１１２６は、通信のために異なる周波数を使用し得る。たとえば、順方向リンク１１２０は、逆方向リンク１１１８によって使用される周波数と異なる周波数を使用してもよい。
【００６９】
各アンテナ群および／またはアンテナが通信するように設計されるエリアは、アクセスポイントのセクタと呼ばれ得る。一態様によれば、アンテナ群は、アクセスポイント１１００によってカバーされるエリアのセクタ内のアクセス端末と通信するように設計され得る。順方向リンク１１２０および１１２６を通じた通信では、アクセスポイント１１００の送信アンテナは、異なるアクセス端末１１１１および１１２２について順方向リンクの信号対雑音比を改善するために、ビーム整形を利用し得る。同様に、そのカバリジを通してランダムに分散されたアクセス端末に送信するためにビーム整形を利用するアクセスポイントは、単一アンテナを通してその全てのアクセス端末に送信するアクセスポイントに比べて、近傍セル内のアクセス端末に対して少ない干渉をもたらす。
【００７０】
アクセスポイント、たとえば、アクセスポイント１１００は、端末と通信するために使用される固定局とすることができ、基地局、ｅＮＢ、アクセスネットワーク、および／または他の適した用語でも呼ばれ得る。さらに、アクセス端末、たとえば、アクセス端末１１１６または１１２２は、モバイル端末、ユーザ機器、無線通信デバイス、端末、無線端末、および／または他の適切な用語でも呼ばれ得る。
【００７１】
図１２を参照すると、本明細書で述べる種々の態様が実装され得る例示的なコンピューティングシステムまたはオペレーティング環境が示される。たとえばネットワークが望ましいように構成され得るどこ場所においても、手持式の、可搬型の、および他のコンピューティングデバイスならびに全ての種類のコンピューティングオブジェクトが、特許請求される主題に関連して使用するために考えられることを当業者は理解することができる。したがって、図１２で以下に述べる以下の汎用コンピューティングシステムは、特許請求される主題が実装され得るコンピューティングシステムの一実施例に過ぎない。
【００７２】
図１２に示すように、本明細書に述べる種々の態様を実装するために利用され得るコンピューティング環境１２００の実施例は、コンピュータ１２１０の形態の汎用コンピューティングデバイスを含む。コンピュータ１２１０のコンポーネントは、１つまたは複数の処理ユニット１２２０、システムメモリ１２３０、および、システムメモリ１２３０を含む種々のシステムコンポーネントを処理ユニット（複数可）１２２０に結合するシステムバス１２２１を含むことができるが、それに限定されない。システムバス１２２１は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および種々のバスアーキテクチャのうちの任意のアーキテクチャを使用するローカルバスを含むいくつかのタイプのバス構造のうちの任意のバス構造であり得る。
【００７３】
一実施例では、システムメモリ１２３０は、読取り専用メモリ（ＲＯＭ）および／またはランダムアクセスメモリ（ＲＡＭ）などの揮発性および／または不揮発性メモリを使用して実装され得る。セットアップなどの間に、コンピュータ１２１０内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）は、メモリ１２３０に格納され得る。メモリ１２３０はまた、データ、および／または、処理ユニット１２２０に即座にアクセス可能である、かつ／または、処理ユニット１２２０によって目下のところ動作しているプログラムモジュールを含むことができる。非制限的な実施例によれば、メモリ１２３０はまた、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、およびプログラムデータを含むことができる。
【００７４】
さらに、コンピュータ１２１０は、取外し可能または取外し不可能であり得ると共に揮発性または不揮発性であり得る他のコンピュータ記憶媒体を含むことができる。たとえば、コンピュータ１２１０は、取外し不可能で不揮発性の磁気媒体から読み取るかまたはそこに書込むハードディスクドライブ、取外し可能で不揮発性の磁気ディスクから読み取るかまたはそこに書込む磁気ディスクドライブ、ＣＤ−ＲＯＭまたは他の光媒体などの取外し可能で不揮発性の光ディスクから読み取るかまたはそこに書込む光ディスクドライブなどを含むことができる。使用され得る他のコンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含む。
【００７５】
さらなる実施例では、ユーザは、キーパッドまたはキーボード、マウス、トラックボール、タッチパッド、タッチスクリーンなどのようなポインティングデバイス、マイクロフォン、カメラまたは光センサ、および／または任意の他の適した入力デバイスなどの入力デバイスを通してコンピュータ１２１０にコマンドおよび情報を入力し得る。コンピュータ１２１０に関連する入力デバイスは、入力インターフェース１２４０を通して処理ユニット１２２０に接続され得る。入力インターフェース１２４０は、パラレルポート、ユニバーサルシリアルバス（ＵＢＳ）ポートなどのような任意の適した方法で実装され得る。付加的にまたは別法として、モニタ、ディスプレイスクリーン、スピーカ、および／または任意の他の適した出力デバイスは、出力インターフェース１２５０を介してシステムバス１２２１に接続されることが可能であり、システムバス１２２１は、次に、処理ユニット１２２０、システムメモリ１２３０、および／またはコンピュータ１２１０の任意の他の適したコンポーネントと通信し得る。
【００７６】
一態様によれば、コンピュータ１２１０は、リモートコンピュータ１２７０などの１つまたは複数の他のリモートコンピュータに対する論理接続を使用して、ネットワーク化された環境で動作し得る。リモートコンピュータ１２７０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般的なネットワークノード、および／または、任意の他のリモートメディア消費または伝送デバイスとすることができ、コンピュータ１２１０に関して上述した要素の任意の要素または全ての要素を含むことができる。一実施例では、コンピュータ１２１０およびリモートコンピュータ１２７０は、ネットワークまたはサブネット１２７１を介して結合され得る。さらに、コンピュータ１２１０は、ネットワークアダプタ１２６０を介して、リモートコンピュータ１２７０および／または通信ネットワークまたはインターネットワークへの接続を容易にし得る。したがって、コンピュータ１２１０は、リモートコンピュータ１２７０とインターネットの両方に関連する場合、一般的に上述したように、リモートコンピュータ１２７０が、インターネットに対するその接続を利用することを可能にする１つまたは複数の技法を利用し得る。
【００７７】
本明細書で述べる態様は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはその任意の組合せで実装され得ることを理解されたい。システムおよび／または方法は、ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコード、プログラムコードまたはコードセグメントで実装されると、記憶コンポーネントなどの機械読取り可能媒体に格納され得る。コードセグメントは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは、命令、データ構造、またはプログラムステートメントの任意の組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを伝えるかつ／または受信することによって別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の適した手段を使用して、伝えられ得る、転送され得る、または送信され得る。
【００７８】
ソフトウェア実施態様の場合、本明細書で述べる技法は、本明細書で述べる機能を実施するモジュール（たとえば、プロシージャ、関数など）によって実装され得る。ソフトウェアコードは、メモリユニットに格納され、プロセッサによって実行され得る。メモリユニットは、プロセッサ内にまたはプロセッサの外部に実装することができ、その場合、メモリユニットは、当技術分野で知られている種々の手段を介してプロセッサに通信可能に結合され得る。
【００７９】
上述されたものは、１つまたは複数の態様の実施例を含む。もちろん、上述した態様を述べるために、コンポーネントまたは方法の考えられる全ての組合せを述べることは可能でないが、種々の態様の多くのさらなる組合せおよび置換が可能であることを当業者は理解することができる。したがって、述べた態様は、添付特許請求の範囲の趣旨および範囲内に入る全てのこうした変更、修正、および変形を包含することが意図される。さらに、用語「含む（includes）」が、詳細な説明または特許請求の範囲で使用される限り、こうした用語は、「備える（comprising）」が、使用されると特許請求項の過渡的な言葉（transitional word）として解釈されるため、用語「備える（comprising）」と同様の方法で包含的であることが意図される。さらに、詳細な説明または特許請求の範囲で使用される用語「ｏｒ（または）」は、「非排他的なｏｒ（non-exclusive or）」であることが意味される。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[１]  アプリケーションプロセッサから１つまたは複数のネットワークアドレス変換（ＮＡＴ）ルールを受信すること、
結合されたインターフェース上でパケットを取得すること、
前記取得されたパケットに対応する前記アプリケーションプロセッサから受信されたＮＡＴルールの識別を試行すること、
識別の試行に成功したとき、識別されたＮＡＴルールに従って前記取得されたパケットを変換し、前記変換されたパケットを、１つまたは複数の変換されたパケット宛先へ転送すること、および、
識別の試行に成功しなかったとき、前記取得されたパケットを１つまたは複数のパケット処理宛先へ転送することを備える方法。
[２]  ＮＡＴルールの識別を試行する前に、リンク層プロトコルに従って前記取得されたパケットを処理する動作、または、
前記変換されたパケットを前記１つまたは複数の変換されたパケット宛先へ転送する前にリンク層プロトコルに従って前記変換されたパケットを処理する動作の１つまたは複数の動作をさらに備える[１]に記載の方法。
[３]  前記取得することは、前記結合されたインターフェース上でリンク層プロトコルを使用して構築されるパケットを取得することを備え、
前記取得されたパケットを前記処理することは、ネットワーク層またはトランスポート層の１つまたは複数の層に対応するパケット情報を識別するために、前記取得されたパケットをパーシングすることを備える[２]に記載の方法。
[４]  前記変換されたパケットを前記処理することは、リンク層プロトコルに従って前記変換されたパケットをフレーム化することを備える[１]に記載の方法。
[５]  前記結合されたインターフェースは、モデムに関連するプロトコルプロセッサを備え、前記１つまたは複数の変換されたパケット宛先は、関連するテザードコンピューティングデバイスによって使用されるために有効にされたＮＡＴ有効化済みテザードネットワーク接続インターフェースを備える[１]に記載の方法。
[６]  前記取得することは、
前記モデムが接続されるパブリックネットワークを識別すること、および、
前記識別されたパブリックネットワークから前記モデムでパケットを取得することを備える[５]に記載の方法。
[７]  前記取得することは、前記モデムを介して前記パブリックネットワークから前記パケットを、複数のフラグメントで取得することをさらに備える[６]に記載の方法。
[８]  ＮＡＴルールの識別を試行する前に、取得されたそれぞれのフラグメントを前記１つまたは複数のパケット処理宛先に転送することをさらに備える[７]に記載の方法。
[９]  ＮＡＴルールの識別を試行する前に、前記取得されたパケットをそのそれぞれのフラグメントから再構築することをさらに備える[７]に記載の方法。
[１０]  前記取得されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別することをさらに備え、
ＮＡＴルールの識別を前記試行することは、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴルールを識別することを試行することを備える[５]に記載の方法。
[１１]  前記変換することは、
前記識別されたＮＡＴルールによって与えられる前記プライベートアドレスおよびポートを指定するために、前記取得されたパケットの前記ヘッダを修正すること、および、
前記プライベートアドレスおよびポートを反映するために、前記取得されたパケットの前記ヘッダのチェックサムを更新することを備える[１０]に記載の方法。
[１２]  前記結合されたインターフェースは、テザードコンピューティングデバイスによって使用されるために有効にされたネットワーク接続インターフェースであり、前記１つまたは複数の変換されたパケット宛先は、モデムに関連するインターフェースを備える[１]に記載の方法。
[１３]  前記取得することは、前記ネットワーク接続インターフェースを介して前記テザードコンピューティングデバイスからパケットを取得することを備える[１２]に記載の方法。
[１４]  前記取得されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別することをさらに備え、
ＮＡＴルールの識別を前記試行することは、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴルールを識別することを試行することを備える[１２]に記載の方法。
[１５]  識別されたＮＡＴルールを前記適用することは、
前記識別されたＮＡＴルールによって与えられる前記パブリックアドレスおよびポートを指定するために、前記取得されたパケットの前記ヘッダを修正すること、および、
前記パブリックアドレスおよびポートを反映するために、前記取得されたパケットの前記ヘッダのチェックサムを更新することを備える[１４]に記載の方法。
[１６]  前記結合されたインターフェースにおいて、前記取得されたパケットによって指定される宛先を識別すること、および、
前記取得されたパケットによって指定される前記宛先が前記アプリケーションプロセッサに関連する場合、ＮＡＴルールの識別を試行する前に、前記結合された第１のインターフェースから前記アプリケーションプロセッサに前記取得されたパケットを転送することをさらに備える[１]に記載の方法。
[１７]  前記１つまたは複数のパケット処理宛先は、前記アプリケーションプロセッサを備える[１]に記載の方法。
[１８]  アプリケーションプロセッサによって提供される１つまたは複数のネットワークアドレス変換（ＮＡＴ）ルールに関するデータを格納するメモリと、
前記アプリケーションプロセッサと本質的に異なる、前記メモリに結合された少なくとも１つのプロセッサであって、結合されたインターフェース上でパケットを受信し、前記受信されたパケットに対応するＮＡＴルールの識別を試行し、ＮＡＴルールの識別に成功したとき、識別されたＮＡＴルールに従って前記受信されたパケットを変換し、前記変換されたパケットを、少なくとも１つの変換されたパケット宛先へ転送し、ＮＡＴルールの識別に成功しなかったとき、前記受信されたパケットを少なくとも１つのパケット処理宛先へ転送するように構成されるプロセッサとを備えるモバイルコンピューティング装置。
[１９]  前記少なくとも１つのプロセッサは、ＮＡＴルールの識別を試行する前に、開放型システム間相互接続（ＯＳＩ）第２層（Ｌ２）プロトコルに従って前記受信されたパケットを処理すること、または、前記変換されたパケットを前記少なくとも１つのパケット処理宛先へ転送する前に、Ｌ２プロトコルに従って前記変換されたパケットを処理することの少なくとも一方を実施するようにさらに構成される[１８]に記載のモバイルコンピューティング装置。
[２０]  前記少なくとも１つのプロセッサは、前記受信されたパケット内に含まれる第３層（Ｌ３）情報または第４層（Ｌ４）情報の一方または両方に関するオペレーションを容易にするために、前記結合されたインターフェース上でＬ２プロトコルを使用して構築されたパケットを受信し、少なくとも部分的に前記受信されたパケットについてＬ２フレーム化解除を実施することによって、前記受信されたパケットを処理するようにさらに構成される[１９]に記載のモバイルコンピューティング装置。
[２１]  前記少なくとも１つのプロセッサは、少なくとも部分的に、Ｌ２プロトコルに従って前記変換されたパケットをフレーム化することによって、前記変換されたパケットを処理するようにさらに構成される[１９]に記載のモバイルコンピューティング装置。
[２２]  前記結合されたインターフェースは、モデムに関連するプロトコルプロセッサインターフェースであり、前記少なくとも１つの変換されたパケット宛先は、関連するテザードコンピューティングデバイスによって使用されるために有効にされたテザリングリンクに関連するネットワーク接続インターフェースを備える[１８]に記載のモバイルコンピューティング装置。
[２３]  前記少なくとも１つのプロセッサは、前記受信されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別し、少なくとも部分的に、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴルールを識別することを試行することによって、ＮＡＴルールの識別を試行するようにさらに構成される[２２]に記載のモバイルコンピューティング装置。
[２４]  前記少なくとも１つのプロセッサは、少なくとも部分的に、前記識別されたＮＡＴルールによって与えられる前記識別されたプライベートアドレスおよびポートを指定するために、前記受信されたパケットの前記ヘッダを修正すること、および、前記プライベートアドレスおよびポートを反映するために、前記受信されたパケットの前記ヘッダのチェックサムを更新することによって、識別されたＮＡＴルールを適用するようにさらに構成される[２３]に記載のモバイルコンピューティング装置。
[２５]  前記結合されたインターフェースは、テザードコンピューティングデバイスに関連するネットワーク接続インターフェースであり、前記少なくとも１つの変換されたパケット宛先は、モデムに関連するインターフェースを備える[１８]に記載のモバイルコンピューティング装置。
[２６]  前記少なくとも１つのプロセッサは、前記ネットワーク接続インターフェースを介して前記テザードコンピューティングデバイスからパケットを受信するようにさらに構成される[２５]に記載のモバイルコンピューティング装置。
[２７]  前記少なくとも１つのプロセッサは、前記受信されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別し、少なくとも部分的に、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴルールを識別することを試行することによって、ＮＡＴルールの識別を試行するようにさらに構成される[２５]に記載のモバイルコンピューティング装置。
[２８]  前記少なくとも１つのプロセッサは、少なくとも部分的に、前記識別されたＮＡＴルールによって与えられる前記識別されたパブリックアドレスおよびポートを指定するために、前記受信されたパケットの前記ヘッダを修正すること、ならびに、前記パブリックアドレスおよびポートを反映するために、前記受信されたパケットの前記ヘッダのチェックサムを更新することによって、識別されたＮＡＴルールを適用するようにさらに構成される[２７]に記載のモバイルコンピューティング装置。
[２９]  前記少なくとも１つのプロセッサは、前記受信されたパケットの終端ポイントを識別し、前記受信されたパケットの前記終端ポイントが前記アプリケーションプロセッサに関連する場合、ＮＡＴルールの識別を試行する前に、前記結合されたインターフェースから前記アプリケーションプロセッサに前記受信されたパケットを転送するようにさらに構成される[２５]に記載のモバイルコンピューティング装置。
[３０]  前記少なくとも１つのパケット処理宛先は、前記アプリケーションプロセッサを備える[１８]に記載のモバイルコンピューティング装置。
[３１]  関連するアプリケーションプロセッサからそれぞれのネットワークアドレス変換（ＮＡＴ）マッピングルールを受信する手段と、
インターフェースを介して取得されたパケットを識別する手段と、
受信されたＮＡＴマッピングルールに対して前記識別されたパケットのマッチングを試行する手段と、
マッチングの試行に成功したとき、一致するＮＡＴマッピングルールに従って前記識別されたパケットを変換する手段と、
前記一致するＮＡＴマッピングルールが適用されると、前記変換されたパケットを１つまたは複数の変換されたパケット宛先へ送る手段と、
マッチングの試行に成功しなかったとき、前記識別されたパケットを１つまたは複数のパケット処理宛先へ送る手段とを備える装置。
[３２]  マッチングを試行する前記手段のオペレーションの前に、前記識別されたパケットについてリンク層処理を実施する手段をさらに備える[３１]に記載の装置。
[３３]  前記変換されたパケットを前記１つまたは複数の変換されたパケット宛先に送る前記手段のオペレーションの前に、前記変換されたパケットについてリンク層処理を実施する手段をさらに備える[３１]に記載の装置。
[３４]  前記インターフェースは、モデムに関連し、少なくとも１つの変換されたパケット宛先は、テザードコンピューティングデバイスに関連する[３１]に記載の装置。
[３５]  識別する前記手段は、
前記モデムが接続されるパブリックネットワークを識別する手段と、
前記識別されたパブリックネットワークを通じて前記モデムによって受信されるパケットを識別する手段とを備える[３４]に記載の装置。
[３６]  前記識別されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別する手段をさらに備え、
マッチングを試行する前記手段は、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行する手段を備える[３４]に記載の装置。
[３７]  変換する前記手段は、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスおよびポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正する手段と、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正する手段とを備える[３６]に記載の装置。
[３８]  前記インターフェースは、テザードコンピューティングデバイスに関連し、少なくとも１つの変換されたパケット宛先は、モデムに関連する[３１]に記載の装置。
[３９]
識別する前記手段は、前記テザードコンピューティングデバイスによって通信されるパケットを識別する手段を備える[３８]に記載の装置。
[４０]  前記識別されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別する手段をさらに備え、
マッチングを試行する前記手段は、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行する手段を備える[３８]に記載の装置。
[４１]  変換する前記手段は、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正する手段と、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正する手段とを備える[４０]に記載の装置。
[４２]  少なくとも１つのパケット処理宛先は、前記アプリケーションプロセッサを備える[３１]に記載の装置。
[４３]  機械実行可能命令を実行する集積回路であって、前記命令は、
関連するアプリケーションプロセッサからそれぞれのネットワークアドレス変換（ＮＡＴ）マッピングルールを受信すること、
インターフェースを介して取得されたパケットを識別すること、
それぞれのＮＡＴマッピングルールに対して前記識別されたパケットのマッチングを試行すること、
マッチングの試行に成功したとき、一致するＮＡＴマッピングルールに従って前記識別されたパケットを変換すること、
一致するＮＡＴマッピングルールが適用されると、前記変換されたパケットを１つまたは複数の変換されたパケット宛先に送ること、および、
マッチングの試行に成功しなかったとき、前記識別されたパケットを１つまたは複数のパケット処理宛先へ送ることを備える集積回路。
[４４]  前記命令は、それぞれのＮＡＴマッピングルールに対して前記識別されたパケットのマッチングを試行する前に、前記識別されたパケットについて開放型システム間相互接続（ＯＳＩ）第２層（Ｌ２）処理を実施することをさらに備える[４３]に記載の集積回路。
[４５]  前記命令は、前記変換されたパケットを前記第２のインターフェースに送る前に、前記変換されたパケットについてＬ２処理を実施することをさらに備える[４３]に記載の集積回路。
[４６]  前記インターフェースは、モデムに関連し、少なくとも１つの変換されたパケット宛先は、テザードコンピューティングデバイスに関連する[４３]に記載の集積回路。
[４７]  前記命令は、前記識別されたパケットのヘッダで指定されるパブリックアドレスおよびポートを識別することをさらに備え、
マッチングを前記試行することは、ユーザデータグラムプロトコル（ＵＤＰ）または伝送制御プロトコル（ＴＣＰ）の一方または両方を備えるトランスポートプロトコル、ならびに、前記識別されたパブリックアドレスおよびポートに対応するプライベートアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行することを備える[４３]に記載の集積回路。
[４８]  前記変換することは、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスまたはポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正すること、および、
前記識別されたＮＡＴマッピングルールによって与えられる前記プライベートアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正することを備える[４７]に記載の集積回路。
[４９]  前記インターフェースは、テザードコンピューティングデバイスに関連し、少なくとも１つの変換されたパケット宛先は、モデムに関連する[４３]に記載の集積回路。
[５０]  前記命令は、前記識別されたパケットのヘッダで指定されるプライベートアドレスおよびポートを識別することをさらに備え、
マッチングを前記試行することは、ＵＤＰまたはＴＣＰの一方または両方を備えるトランスポートプロトコルに従って、前記識別されたプライベートアドレスおよびポートに対応するパブリックアドレスおよびポートを指定するＮＡＴマッピングルールの識別を試行することを備える[４９]に記載の集積回路。
[５１]  前記変換することは、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートを前記ヘッダが指定するように、前記識別されたパケットの前記ヘッダを修正すること、および、
前記識別されたＮＡＴマッピングルールによって与えられる前記パブリックアドレスおよびポートに基づいて前記識別されたパケットの前記ヘッダのチェックサムを修正することを備える[５０]に記載の集積回路。
[５２]  少なくとも１つのパケット処理宛先は、前記アプリケーションプロセッサを備える[４３]に記載の集積回路。
【図１】
0005639211.tif 000002
【図２】
0005639211.tif 000003
【図３】
0005639211.tif 000004
【図４】
0005639211.tif 000005
【図５】
0005639211.tif 000006
【図６】
0005639211.tif 000007
【図７】
0005639211.tif 000008
【図８】
0005639211.tif 000009
【図９】
0005639211.tif 000010
【図１０】
0005639211.tif 000011
【図１１】
0005639211.tif 000012
【図１２】
0005639211.tif 000013