(57)【特許請求の範囲】
【請求項１】
ＩＰパケットを処理する方法であって、
パケットフィールドの複数の組を規定するステップと、
規定されたパケットフィールドの組を記憶装置に格納するステップと、
現在のＩＰパケットが処理対象であるか否かを判定するステップと、
前記現在のＩＰパケットに適用されるべき処理を特定するステップと、
前記特定された処理に応じて、前記格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択するステップと、
前記選択されたパケットフィールドの組のうちの少なくとも１つを使用して、前記現在のＩＰパケットを操作し、処理済みＩＰパケットを形成するステップとを有し、
前記規定されたパケットフィールドの組の各々は、拡張ヘッダと、該拡張ヘッダと関連付けられ、かつ、前記ＩＰパケットが宛先に到着した時の前記拡張ヘッダの状態を予測した予測拡張ヘッダとを有し、
前記現在のＩＰパケットに対してトンネリング及び認証が施される場合、前記形成するステップは、
前記格納された拡張ヘッダのコピー及び前記格納された予測拡張ヘッダのコピーを取得するステップと、
前記格納された予測拡張ヘッダのコピーを使用して、中間ＩＰパケットを形成するステップと、
前記中間ＩＰパケットの認証フィールドを生成するステップと、
前記認証フィールド及び前記格納された拡張ヘッダのコピーを、前記現在のＩＰパケットに組み込んで、前記処理済みＩＰパケットを形成するステップとを有することを特徴とする方法。
【請求項２】
前記予測拡張ヘッダは、
前記拡張ヘッダの予測可能フィールドを修正して、初期予測拡張ヘッダを形成するステップと、
前記初期予測拡張ヘッダの予測不可能なフィールドを変更して、前記予測拡張ヘッダを形成するステップにより形成されることを特徴とする請求項１記載の方法。
【請求項３】
前記判定するステップ及び前記特定するステップは、前記ＩＰパケットに対するセキュリティポリシーを参照して実行され、
さらに、前記現在のＩＰパケットに対するセキュリティアソシエーションを作成するステップを含み、前記選択するステップ及び前記形成するステップは、前記セキュリティアソシエーションに依存することを特徴とする請求項１記載の方法。
【請求項４】
前記現在のＩＰパケットが認証される場合、前記形成するステップが、
前記格納された拡張ヘッダのコピーを取得するステップと、
前記格納された拡張ヘッダのコピーを前記現在のＩＰパケットに組み込んで、中間ＩＰパケットを形成するステップと、
前記中間ＩＰパケットの認証フィールドを判定するステップと、
前記認証フィールドを前記中間ＩＰパケットに組み込み、前記処理済みＩＰパケットを形成するステップとを有することを特徴とする請求項１記載の方法。
【請求項５】
ＩＰパケットを処理する装置であって、
パケットフィールドの複数の組を規定する手段と、
前記規定されたパケットフィールドの組を記憶装置に格納する手段と、
現在のＩＰパケットが処理対象であるか否かを判定する手段と、
前記現在のＩＰパケットに適用されるべき処理を特定する手段と、
前記特定された処理に応じて、前記格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択する手段と、
前記選択されたパケットフィールドの組のうちの少なくとも１つを使用して、前記現在のＩＰパケットを操作し、処理済みＩＰパケットを形成する手段とを有し、
前記規定されたパケットフィールドの組の各々は、拡張ヘッダと、該拡張ヘッダと関連付けられ、かつ、前記ＩＰパケットが宛先に到着した時の前記拡張ヘッダの状態を予測した予測拡張ヘッダとを有し、
前記現在のＩＰパケットに対してトンネリング及び認証が施される場合、前記形成する手段は、
前記格納された拡張ヘッダのコピー及び前記格納された予測拡張ヘッダのコピーを取得し、
前記格納された予測拡張ヘッダのコピーを使用して、中間ＩＰパケットを形成し、
前記中間ＩＰパケットの認証フィールドを生成し、
前記認証フィールド及び前記格納された拡張ヘッダのコピーを、前記現在のＩＰパケットに組み込んで、前記処理済みＩＰパケットを形成することを特徴とする装置。
【請求項６】
前記拡張ヘッダの予測可能フィールドを修正して、初期予測拡張ヘッダを形成する手段と、
前記初期予測拡張ヘッダの予測不可能なフィールドを変更して、前記予測拡張ヘッダを形成する手段とを更に有することを特徴とする請求項５記載の装置。
【請求項７】
前記現在のＩＰパケットが認証される場合、前記形成する手段は、
前記格納された拡張ヘッダのコピーを取得し、
前記格納された拡張ヘッダのコピーを、前記現在のＩＰパケットに組み込んで、中間ＩＰパケットを形成し、
前記中間ＩＰパケットの認証フィールドを判定し、
前記認証フィールドを前記中間ＩＰパケットに組み込み、前記処理済みＩＰパケットを形成することを特徴とする請求項５記載の装置。
【請求項８】
コンピュータに、
ＩＰパケットを処理する方法であって、
パケットフィールドの複数の組を規定するステップと、
規定されたパケットフィールドの組を記憶装置に格納するステップと、
現在のＩＰパケットが処理対象であるか否かを判定するステップと、
前記現在のＩＰパケットに適用されるべき処理を特定するステップと、
前記特定された処理に応じて、前記格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択するステップと、
前記選択されたパケットフィールドの組のうちの少なくとも１つを使用して、前記現在のＩＰパケットを操作し、処理済みＩＰパケットを形成するステップとを有し、
前記規定されたパケットフィールドの組の各々は、拡張ヘッダと、該拡張ヘッダと関連付けられ、かつ、前記ＩＰパケットが宛先に到着した時の前記拡張ヘッダの状態を予測した予測拡張ヘッダとを有し、
前記現在のＩＰパケットに対してトンネリング及び認証が施される場合、前記形成するステップは、
前記格納された拡張ヘッダのコピー及び前記格納された予測拡張ヘッダのコピーを取得するステップと、
前記格納された予測拡張ヘッダのコピーを使用して、中間ＩＰパケットを形成するステップと、
前記中間ＩＰパケットの認証フィールドを生成するステップと、
前記認証フィールド及び前記格納された拡張ヘッダのコピーを、前記現在のＩＰパケットに組み込んで、前記処理済みＩＰパケットを形成するステップとを有する方法の各ステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項９】
さらに、前記方法は、
前記拡張ヘッダの予測可能フィールドを修正して、初期予測拡張ヘッダを形成するステップと、
前記初期予測拡張ヘッダの予測不可能なフィールドを変更して、前記予測拡張ヘッダを形成するステップとを更に有することを特徴とする請求項８記載のコンピュータ読み取り可能な記録媒体。
【請求項１０】
さらに、
前記現在のＩＰパケットが認証される場合、前記形成するステップは、
前記格納された拡張ヘッダのコピーを取得するステップと、
前記格納された拡張ヘッダのコピーを、前記現在のＩＰパケットに組み込んで、中間ＩＰパケットを形成するステップと、
前記中間ＩＰパケットの認証フィールドを判定するステップと、
前記認証フィールドを前記中間ＩＰパケットに組み込み、前記処理済みＩＰパケットを形成するステップとを有することを特徴とする請求項８記載のコンピュータ読み取り可能な記録媒体。
【請求項１１】
コンピュータに、
ＩＰパケットを処理する方法であって、
パケットフィールドの複数の組を規定するステップと、
規定されたパケットフィールドの組を記憶装置に格納するステップと、
現在のＩＰパケットが処理対象であるか否かを判定するステップと、
前記現在のＩＰパケットに適用されるべき処理を特定するステップと、
前記特定された処理に応じて、前記格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択するステップと、
前記選択されたパケットフィールドの組のうちの少なくとも１つを使用して、前記現在のＩＰパケットを操作し、処理済みＩＰパケットを形成するステップとを有し、
前記規定されたパケットフィールドの組の各々は、拡張ヘッダと、該拡張ヘッダと関連付けられ、かつ、前記ＩＰパケットが宛先に到着した時の前記拡張ヘッダの状態を予測した予測拡張ヘッダとを有し、
前記現在のＩＰパケットに対してトンネリング及び認証が施される場合、前記形成するステップは、
前記格納された拡張ヘッダのコピー及び前記格納された予測拡張ヘッダのコピーを取得するステップと、
前記格納された予測拡張ヘッダのコピーを使用して、中間ＩＰパケットを形成するステップと、
前記中間ＩＰパケットの認証フィールドを生成するステップと、
前記認証フィールド及び前記格納された拡張ヘッダのコピーを、前記現在のＩＰパケットに組み込んで、前記処理済みＩＰパケットを形成するステップとを有する方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークに関し、特に、インターネットプロトコル（ＩＰ）パケットを処理するためのアーキテクチャに関する。
【背景技術】
【０００２】
ＩＰは、ネットワークを介したデータ交換のために、コンピュータシステムにより使用される代表的なデータ標準である。ＩＰ標準により、データはパケット中で送信元コンピュータシステムから宛先コンピュータシステムへ転送される。データは、２つのコンピュータの間で直接転送されることも可能であるし、宛先コンピュータシステムに到着する前に、他のコンピュータシステムを経由して間接的に転送されることも可能である。ＩＰバージョン４（ＩＰｖ４）及びＩＰバージョン６（ＩＰｖ６）は、ＩＰ通信標準の２つのよく知られたバージョンである。ＩＰｖ４及びＩＰｖ６は、その用語及び実装において異なるが、多くの等価な機能を共有する。本明細書において開示されるＩＰトンネリング技術は、ＩＰｖ４及びＩＰｖ６に適用されるため、ＩＰｖ４標準及びＩＰｖ６標準の両方の用語が、適宜使用される。インターネットプロトコルセキュリティ標準（ＩＰｓｅｃ）は、暗号処理を使用してＩＰデータに対する認証機能及び機密保持機能を取り扱うＩＰ標準である。ＩＰパケット用の処理システムは、ＩＰｓｅｃ処理だけでなく、パケットカプセル化（すなわち、パケットトンネリング）をサポートすることが好ましい。
【０００３】
ＩＰパケットは、ヘッダとそれに続くペイロードとを含む。ＩＰｖ４では、「オプション("options")」が存在する場合、「オプション」は、ＩＰヘッダの一部として発生する。ＩＰｖ６では、ＩＰヘッダに続いてＩＰ拡張ヘッダが存在する可能性がある。本明細書では、ＩＰｖ４のオプションと、ＩＰｖ６のＩＰ拡張ヘッダは、機能的に等価であるとみなすことができる。
【０００４】
いくつかの状況において、ＩＰパケットは、カプセル化ＩＰパケットのペイロードとして輸送されうる。カプセル化パケットを、「トンネルパケット」と呼び、トンネルパケットの送信元と宛先との間の転送経路を、トンネルと呼ぶ。また、パケットをカプセル化し、送信元から宛先へ送信する技術を、トンネリングと呼ぶ。パケットがトンネリングされる（形成される）際、トンネルパケットには、新規のＩＰヘッダ及び新規のＩＰ拡張ヘッダが与えられ、これらはそれぞれ、外側ＩＰヘッダ、外側ＩＰ拡張ヘッダと呼ばれる。また、カプセル化された(元の）パケットのヘッダ及び拡張ヘッダは、内部ＩＰヘッダ及び内部ＩＰ拡張ヘッダと呼ばれる。外側ＩＰヘッダは、内部ＩＰヘッダのいくつかのフィールドをコピーして形成されてもよいが、外側ＩＰ拡張ヘッダの形成は、必ずしも内部ＩＰ拡張ヘッダに直接関連するとは限らない。
【０００５】
通常のＩＰ処理システムは、ソフトウェアで実現される。ＩＰデータの転送速度の上昇に伴い、このソフトウェアによる実現は、いくつかのアプリケーションについては遅すぎる場合がある。ソフトウェアシステムにおいて通常使用される処理方法を、直接ハードウェアに対応付けて実現した場合、得られるハードウェアシステムの速度は、通常、対応するソフトウェアシステムよりもずっと高速である。しかしながら、このようなハードウェアによる実現は、複雑であり、かつ柔軟性に欠けるであろう。
【発明の開示】
【課題を解決するための手段】
【０００６】
本発明の目的は、既存の構成の１つ以上の欠点を実質的に解決するか、少なくとも改善することである。
【０００７】
本発明は、ＩＰパケット処理時に使用可能なパケットフィールドの組（「テンプレート」と呼ぶ）を予め規定する構成を開示する。これを本明細書においては、ＩＰトンネリングアプローチと呼ぶ。このアプローチは、特にパケット処理がトンネリング及び認証を含む場合に有用である。拡張ヘッダ等のこれらの予め規定されたテンプレートは、後でＩＰパケット処理時に使用するために構築及び格納される。テンプレートはカプセル化処理及び／又は認証処理の少なくとも一部を高速で実行するために用いられ、「拡張パケット(augmented packet)」と呼ばれるパケットが形成される。カプセル化処理及び／又は認証処理の残る処理が必要な場合、所望であれば、従来の方法を使用するか、あるいはトンネリングアプローチをさらに適用して、それらの処理を実行できる。
【０００８】
トンネリングアプローチは、以前の技術よりも多くのメモリ資源を要求する反面、ＩＰパケット処理に必要な処理負荷を低減させる。このため、このトンネリングアプローチは、ソフトウェア、ハードウェアのどちらで実現しても、ＩＰ処理速度を増大させる。ＩＰトンネリングアプローチ及び予め規定されたパケットフィールドを使用するＩＰ処理システムにおけるハードウェアの使用率を増加させることにより、処理をより高速化することが可能となる。
【０００９】
本発明の第１の見地によれば、ＩＰパケットを処理する方法であって、
パケットフィールドの複数の組を規定するステップと、
規定されたパケットフィールドの組を記憶装置に格納するステップと、
現在のＩＰパケットが処理対象であるか否かを判定するステップと、
現在のＩＰパケットに適用されるべき処理を特定するステップと、
特定された処理の属性に応じて、格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択するステップと、
選択されたパケットフィールドの組のうちの少なくとも１つを使用して、現在のＩＰパケットを操作し、処理済みＩＰパケットを形成するステップとを有することを特徴とする方法を提供する。
【００１０】
本発明の別の見地によれば、ＩＰパケットを処理する装置であって、
パケットフィールドの複数の組を規定する手段と、
規定されたパケットフィールドの組を記憶装置に格納する手段と、
現在のＩＰパケットが処理対象であるか否かを判定する手段と、
現在のＩＰパケットに適用されるべき処理を特定する手段と、
特定された処理の属性に応じて、格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択する手段と、
選択されたパケットフィールドの組のうちの少なくとも１つを使用して、現在のＩＰパケットを操作し、処理済みＩＰパケットを形成する手段とを有することを特徴とする装置を提供する。
【００１１】
本発明の別の見地によれば、プロセッサにＩＰパケットの処理を指示するためのコンピュータプログラムが記録されたコンピュータ可読媒体を有するコンピュータプログラムプロダクトであって、コンピュータプログラムが、
パケットフィールドの複数の組を規定するコードと、
規定されたパケットフィールドの組を記憶装置に格納するコードと、
現在のＩＰパケットが処理対象であるか否かを判定するコードと、
現在のＩＰパケットに適用されるべき処理を特定するコードと、
特定された処理の属性に応じて、格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択するコードと、
選択されたパケットフィールドの組のうちの少なくとも１つを使用して、現在のＩＰパケットを操作し、処理済みＩＰパケットを形成するコードとを有することを特徴とするコンピュータプログラムプロダクトを提供する。
【００１２】
本発明の別の見地によれば、プロセッサにＩＰパケットの処理を指示するためのコンピュータプログラムであって、
パケットフィールドの複数の組を規定するコードと、
規定されたパケットフィールドの組を記憶装置に格納するコードと、
現在のＩＰパケットが処理対象であるか否かを判定するコードと、
現在のＩＰパケットに適用されるべき処理を特定するコードと、
特定された処理の属性に応じて、格納されている、規定されたパケットフィールドの組のうちの少なくとも１つを選択するコードと、
選択されたパケットフィールドの組のうちの少なくとも１つを使用して、現在のＩＰパケットを操作し、処理済みＩＰパケットを形成するコードとを有することを特徴とするコンピュータプログラムを提供する。
【００１３】
本発明の他の見地もまた開示される。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の１つ以上の実施の形態を、図面と関連して説明する。本発明は、１つ以上の添付の図面のステップ及び／又は機能と関連させて説明される。１つ以上の添付の図面において、同一符号で示すステップ及び／又は機能は、反対の意図が示されない限り、同一の１つ以上の機能又は動作を表す。
【００１５】
尚、「背景技術」での記載及び従来技術の構成に関する以上の記載は、それぞれ刊行物及び／又は実施を通して公知技術を形成する処理又は装置の記載に関するものであることに留意されたい。当該記載は、これらの方法や装置が多少なりとも当該技術分野における周知技術の一部を形成するものとして本発明者又は出願人が説明したものと解釈するべきではない。
【００１６】
図１は、開示されたＩＰトンネリングアプローチが実現可能なシステムのブロック図である。送信元コンピュータ８０１は、矢印８０２で示すように、ＩＰハードウェアモジュール８０３に接続される。図２を参照して説明するように、ＩＰハードウェアモジュール８０３は、ハードウェア要素及びソフトウェア要素の両方を具備する。破線８１１で示すように、ソフトウェア８１０は、コンピュータ８０１上で稼動する。送信元コンピュータ８０１は、矢印８０６で示すように、ネットワーク８０７に接続される。宛先コンピュータ８０９は、矢印８０８で示すように、ネットワーク８０７に接続される。ソフトウェア８１２は、破線８１３で示すように、宛先コンピュータ８０９上で稼動する。
【００１７】
本発明によるトンネリングアプローチは、ネットワーク８０７を介して宛先コンピュータ８０９へＩＰパケットを送信するために、送信元コンピュータ８０１によってソフトウェア８１０及びＩＰハードウェアモジュール８０３とともに用いられ、ソフトウェア８１０により生成されたＩＰパケットを処理する。
【００１８】
図１は、汎用コンピュータ８０１、８０９及び個別ＩＰハードウェアモジュール８０３を示すが、トンネリングアプローチは、組み込み型コンピュータシステムにおいても使用できる。多機能オフィス機器（プリンタ、スキャナ、コピー機及びファックスの能力を統合した装置等）を含むことが可能なシステム（不図示）及びネットワークルータにおいて、ＩＰ及びＩＰｓｅｃの取り扱いが必要な処理は、ソフトウェア(組み込み型プロセッサ及び組み込み型ソフトウェアを使用）内、又はハードウェア内で行われてもよい。このようなシステムにおいて、ＩＰを介して送信されるべきデータは、（ハードウェア）スキャナ等の別の組み込み型コンピュータシステムから入力されてもよい。
【００１９】
図２は、図１の送信元コンピュータ８０１及びＩＰ処理モジュール８０３の機能要素を示す図である。送信元コンピュータのソフトウェア８１０は、矢印２０８で示すように、アプリケーションソフトウェア２０２と対話するドライバソフトウェアモジュール２０１を具備する。ドライバソフトウェアモジュール２０１は、矢印２０６で示すように、ＩＰハードウェアモジュール８０３と対話する。この説明では、図１の送信元コンピュータ８０１とＩＰハードウェアモジュール８０３との間の特定の機能配分を仮定する。しかしながら、この仮定は例証のために過ぎず、他の機能配分も使用できる。ＩＰハードウェアモジュール８０３は、矢印２０７で示すように、ＩＰｓｅｃエンジン２０４と対話するＩＰエンジン２０３を具備する。ＩＰｓｅｃエンジン２０４は、矢印２０９で示すように、拡張ヘッダテンプレートメモリ２０５と対話する。また、コンピュータのソフトウェア８１０は、トンネリングアプリケーションソフトウェアモジュール２１０を有する。トンネリングアプリケーションソフトウェアモジュール２１０は、図４Ａを参照してより詳細に説明する。
【００２０】
アプリケーションソフトウェア２０２は、ネットワーク８０７を介して送信元コンピュータ８０１から宛先コンピュータ８０９へ転送すべきデータの発信元である。アプリケーションソフトウェア２０２は、このデータをドライバソフトウェア２０１へ転送する。ドライバソフトウェア２０１は、ＩＰハードウェアモジュール８０３と通信する。
【００２１】
ＩＰエンジン２０３は、ネットワーク８０７を介して送信するためのデータをパッケージ化するために、アプリケーションソフトウェア２０２により生成されたデータからＩＰパケットを形成する。ネットワーク８０７を介したパケット送信の前に、ＩＰエンジン２０３は、ＩＰｓｅｃ処理のために、各パケットをＩＰｓｅｃエンジン２０４に渡す。ＩＰｓｅｃエンジン２０４は、対象とされている特定のパケットに対するＩＰｓｅｃ処理が必要である場合、どのＩＰｓｅｃ処理が必要であるかを判定する。ＩＰトンネリングが適用され、且つ外側ＩＰ拡張ヘッダが必要である場合、適切な外側ＩＰ拡張ヘッダは、ＩＰ拡張ヘッダテンプレートメモリ２０５から読み出される。尚、ＩＰｖ４が使用される場合、外側ＩＰヘッダに後続して必要な外側ＩＰ拡張ヘッダの代わりに、ＩＰヘッダ内でのオプションが必要となる。しかし、これらは本システム全体から見れば、同等の必要性である。
【００２２】
ＩＰｓｅｃエンジン２０４は、メモリ２０５から読み出されたＩＰ拡張ヘッダのコピーを、ＩＰパケット内に挿入する。ＩＰ拡張ヘッダのコピーのいくつかの部分は、ＩＰパケットに挿入される前に、修正される可能性がある。次に、ＩＰｓｅｃエンジン２０４は、認証ヘッダの生成等により、パケットを処理する。ＩＰｓｅｃエンジン２０４が、パケット処理を終了した後、ネットワーク８０７を介したパケット送信のために、パケットは、ＩＰエンジン２０３に戻される。
【００２３】
ＩＰ拡張ヘッダテンプレートは、ドライバソフトウェア２０１により、例えばアプリケーションソフトウェア２０２及び／又はトンネリングソフトウェアアプリケーション２１０からの情報を使用して、事前にＩＰ拡張ヘッダテンプレートメモリ２０５内に格納される。アプリケーションがテンプレート内で使用される情報を供給しうるので、ＩＰ拡張ヘッダテンプレートは、通常、アプリケーション２０２（図２を参照）が開始された際に生成される。
【００２４】
図３は、図２のＩＰｓｅｃエンジン２０４及び拡張ヘッダテンプレートメモリ２０５の機能要素を示す図である。ＩＰｓｅｃエンジン２０４は、セキュリティポリシーデータベース３００、セキュリティアソシエーションデータベース３０１、テンプレートインデックスデータベース３０２及びプロセッサ３０３を具備する。ＩＰｓｅｃエンジン２０４は、矢印２０９で示すように、拡張ヘッダテンプレートメモリ２０５と対話する。拡張ヘッダテンプレートメモリ２０５は、２つのメモリ領域、すなわち、拡張ヘッダ領域３０４及び予測拡張ヘッダ領域３０５に分割される。
【００２５】
ネットワーク８０７を介した送信に先立ってＩＰｓｅｃ処理用のＩＰパケットを受信すると、ＩＰｓｅｃエンジン２０４は、パケットに対するＩＰｓｅｃ処理が必要であれば、どのＩＰｓｅｃ処理が必要であるかを判定するために、セキュリティポリシーデータベース３００に問い合わせる。ＩＰｓｅｃ処理が必要である場合、ＩＰｓｅｃエンジン２０４は、ＩＰｓｅｃ処理の実行に必要な鍵及びアルゴリズム等の複数の暗号パラメータを決定するために、プロセッサ３０３を介して、セキュリティアソシエーションデータベース３０１に問い合わせる。
【００２６】
このため、例えば、ＩＰｓｅｃエンジン２０４によりセキュリティアソシエーションデータベース３０１から読み出されたＩＰｓｅｃパラメータは、トンネルモードを指定してもよい。このトンネルモードの場合には、当該パケット用に形成すべき新規のＩＰヘッダを必要とする。この場合、新規のＩＰパケットは、１つ以上の外側ＩＰ拡張ヘッダを必要としてもよく、この外側ＩＰ拡張ヘッダは、本構成においてはＩＰ拡張ヘッダテンプレートメモリ２０５内に格納されたテンプレートに基づいて形成される。どの１つ以上のＩＰ拡張ヘッダテンプレートを使用すべきかを判定するために、必要な１つ以上のＩＰ拡張ヘッダテンプレート用のＩＰ拡張ヘッダテンプレートメモリ２０５への複数のインデックスを、セキュリティアソシエーションデータベース３０１内に格納してもよい。これらのインデックスは、拡張ヘッダテンプレートメモリ２０５から読み出されるべきＩＰ拡張ヘッダテンプレートを指定する。また、これらのインデックスは、複数のＩＰ拡張ヘッダテンプレートから導出された複数のＩＰ拡張ヘッダの、最終トンネルパケット内での発生順序を指定する。あるいは、必要な１つ以上のＩＰ拡張ヘッダテンプレートのインデックスを、別個のテンプレートインデックスデータベース３０２内に格納してもよい。
【００２７】
ＩＰ拡張ヘッダテンプレートメモリ２０５は、ＩＰ拡張ヘッダ用のテンプレートを収容する。２つ以上のＩＰｓｅｃセキュリティアソシエーションが、１つのＩＰ拡張ヘッダテンプレートを使用してもよい。また、各ＩＰｓｅｃセキュリティアソシエーションが、２つ以上のＩＰ拡張ヘッダテンプレートを使用してもよい。
【００２８】
「セキュリティアソシエーション」は（インターネット・エンジニアリング・タスク・フォースからのＲＦＣ２４０８で規定されるように）、２つ以上のエンティティ間の関係であり、安全に通信を行うために、エンティティがセキュリティサービスをどのように利用するかを記述する。セキュリティアソシエーションは、送信元コンピュータシステムから宛先コンピュータシステムへのデータの一方向の流れに対して適用される。２つのコンピュータシステムの間の双方向データフローに対しては、各方向についてのセキュリティアソシエーションが必要である。セキュリティアソシエーションの一部を構成するセレクタは、データフローから、セキュリティアソシエーションが適用される特定のＩＰデータグラムのみを選択するために使用されてもよい。各セキュリティアソシエーションは、データフローに適用されるべき単一の暗号処理動作を指定する。データフロー上で複数の暗号処理操作を実行するために、一連のセキュリティアソシエーションを、そのデータフローに適用してもよい。暗号処理ステップの指定は、
【００２９】
・適用されるべきセキュリティプロトコル（認証ヘッダ（ＡＨ）又はカプセル化セキュリティペイロード（ＥＳＰ）等）と；
・動作モード（トランスポートモード又はトンネルモード）と；
・使用すべき暗号アルゴリズム（ＭＤ５を用いるＨＭＡＣ、ＳＨＡ−１を用いるＨＭＡＣ、ＡＥＳ、ＤＥＳ等）と；
・暗号アルゴリズムの鍵値と；
・暗号アルゴリズムの初期値と；
・シーケンス番号（以前に送信されたデータグラムの、潜在的に悪意のある「再利用(replay)」を検知するために使用可能な単調増加番号）と；
・新規のセキュリティアソシエーションへの置き換えが必要となるまでに、セキュリティアソシエーションを適用可能な最大バイト数のカウントと；
・セキュリティアソシエーションが失効する時間（この時間を過ぎると新規のセキュリティアソシエーションで置き換えねばならない）を含むことができる。
【００３０】
セキュリティアソシエーションの使用は、
・シーケンス番号のインクリメントと；
・バイトカウントの更新とを含む、更新されるべき複数のパラメータを必要としてもよい。
【００３１】
通常、アプリケーションが最初に宛先コンピュータシステムへのパケット送信を試みた際にセキュリティアソシエーションが作成され、その接続のためのセキュリティポリシーが、ＩＰｓｅｃ処理の必要性を指定する。
【００３２】
セキュリティアソシエーションの確立処理は、暗号鍵生成及び交換のために複雑であり、時間を要する。従って、セキュリティアソシエーション確立処理の一部は、送信元コンピュータ内及び宛先コンピュータシステム内のソフトウェアにより実行されてもよい。
【００３３】
拡張ヘッダテンプレートは、通常、対応するセキュリティアソシエーションが作成される際に作成される。この拡張ヘッダテンプレートの作成は、セキュリティアソシエーション確立のために使用された、送信元コンピュータ内のソフトウェアと同じソフトウェアにより実行されてもよい。
【００３４】
例えば、セキュリティポリシーが、特定の接続用のパケットに対して、認証及び一連の既知のＩＰアドレスを介したトンネリングを指定した場合、ルーティング拡張ヘッダテンプレートは、対応する認証セキュリティアソシエーションを作成する際に作成されるであろう。そのセキュリティアソシエーションがパケット上で呼び出された場合、そのテンプレートを常に使用できるよう、セキュリティアソシエーションをヘッダテンプレートにリンクする。
【００３５】
既存のセキュリティアソシエーションと同一の拡張ヘッダを使用して拡張すべきパケットを必要とする後続のセキュリティアソシエーションが確立された場合、これらのセキュリティアソシエーションは、既存の拡張ヘッダテンプレートを使用できる。この場合、これらの後続のセキュリティアソシエーションは、同一のヘッダテンプレートにリンクされるであろう。代わりに、後続のセキュリティアソシエーションの各々に対する新規の拡張ヘッダテンプレートを作成してもよい。
【００３６】
この例では、次に、セキュリティアソシエーションは、ＩＰｖ４パケットが、ＩＰｖ６ネットワークを介してトンネリングされるべきであることを指定してもよい。この場合、ＩＰｖ６「タイプ０」のルーティング拡張ヘッダが、トンネリングされたパケットのルートの指定のために使用される。拡張ヘッダテンプレートは、指定されたルートの既知のＩＰアドレスを使用して作成される。通常、このルートはセキュリティアソシエーションが作成された際に、通知又は決定される。従って、セキュリティアソシエーションの有効期間中、拡張ヘッダテンプレートは、不変である。
【００３７】
元のＩＰｖ４パケットは、ＩＰｖ６ネットワークを介してトンネリングされるため、ＩＰｖ６ベースヘッダ、（拡張ヘッダテンプレートメモリからの）「タイプ０」ルーティング拡張ヘッダ及びＩＰｓｅｃ認証ヘッダが、元のＩＰｖ４パケットの先頭に付加(prepend)される。
【００３８】
ＩＰｓｅｃ認証ヘッダ内の認証データは、ＩＰｖ６ベースヘッダの一部、「タイプ０」ルーティング拡張ヘッダ、ＩＰｓｅｃ認証ヘッダの一部、及びオリジナルＩＰｖ４パケットを使用して算出される。しかしながら、認証データは送信元コンピュータシステムではなく、宛先コンピュータで現れるヘッダを使用して算出される。特に、「タイプ０」ルーティング拡張ヘッダは、トンネリングされたパケットがＩＰｖ６ネットワークを介して転送されるに連れて変更される。従って、ＩＰｓｅｃ認証ヘッダ内の認証データは、宛先コンピュータシステムで現れる状態を予測した「タイプ０」ルーティング拡張ヘッダを使用して算出される。
【００３９】
通常、セキュリティアソシエーションが作成される際に、宛先コンピュータにおいて検出されるような「タイプ０」ルーティング拡張ヘッダの予測も可能となる。従って、セキュリティアソシエーションが作成される際に、予測拡張ヘッダを拡張ヘッダテンプレートメモリ内に格納でき、予測拡張ヘッダはセキュリティアソシエーションの有効期間中不変である。
【００４０】
「タイプ０」ルーティング拡張ヘッダが使用される場合、予測ヘッダは、図１６Ａに示す形式（１００２）を有してもよい。この予測ヘッダは、図１５Ａに示す形式（９０２）でもよい非予測（送信元）ヘッダと異なる。「タイプ０」ルーティング拡張ヘッダが使用される場合、予測ヘッダと非予測ヘッダの相違は、ヘッダに含まれるＩＰアドレス及び「残りセグメント(segments left)」フィールドである。
【００４１】
セキュリティアソシエーションをパケット処理のために使用する際に、拡張ヘッダ及び予測拡張ヘッダの両方が、テンプレートメモリから読み出される。
【００４２】
この例では、予測拡張ヘッダは、認証データの算出に使用され、一方、非予測（送信元）拡張ヘッダは、ＩＰｖ６パケットの形成に使用されるであろう。
【００４３】
拡張ヘッダテンプレートは、１つ以上のセキュリティアソシエーションにより使用されている間、テンプレートメモリ内に残存するであろう。通常、セキュリティアソシエーションは、特定の期間の経過後、あるいは、特定の数のバイト又はパケットの処理に使用された後、終了する。通常、セキュリティアソシエーションの有効期間は、セキュリティアソシエーションの作成のために使用されたセキュリティポリシーにより決定される。
【００４４】
拡張ヘッダテンプレートが、セキュリティアソシエーションのいずれにも使用されない状態となった場合、その拡張ヘッダテンプレートは、新規の拡張ヘッダテンプレートにより上書きされてもよい。通常、テンプレートメモリの管理は、送信元コンピュータシステム内のソフトウェアにより行われる。このソフトウェアは、セキュリティアソシエーションの確立、及び拡張ヘッダテンプレートの作成においても使用される。
【００４５】
図４Ａは、図１の汎用コンピュータをより詳細に示す図である。ＩＰトンネリングの方法は、図４Ａに示すような汎用コンピュータシステム１８００と、図１〜図３及び図４Ｂに示す特定用途ハードウェアモジュール８０３との組み合わせの使用により実現できる。コンピュータ８０１とＩＰハードウェアモジュール８０３との間の機能配分は、可変であり、本明細書において説明される構成に限定されない。図７〜図１３のプロセスは、コンピュータシステム１８００内部で実行するトンネリングアプリケーションソフトウェアプログラム２１０等のソフトウェアとして実現されてもよい。
【００４６】
特に、ＩＰトンネリング方法のステップは、トンネリングソフトウェア２１０内の命令により達成される。命令は、コンピュータ８０１及びモジュール８０３により実行される。命令は、１つ以上の特定のタスクを実行する１つ以上の各コードモジュールとして構成されてもよい。また、トンネリングソフトウェア２１０は、ＩＰトンネリング方法を実行する第１の部分と、第１の部分とユーザとの間のユーザインタフェースを管理する第２の部分の２つの部分に分割されてもよい。ソフトウェア２１０は、例えば、以下に説明する記憶装置を含むコンピュータ可読媒体内に格納されてもよい。ソフトウェア２１０は、コンピュータ可読媒体からコンピュータ８０１内に読み込まれ、その後、コンピュータ８０１及びハードウェアモジュール８０３により実行される。このようなソフトウェア又はコンピュータプログラムが記録されたコンピュータ可読媒体は、コンピュータプログラムプロダクトである。コンピュータ内のコンピュータプログラムプロダクトの使用は、ＩＰトンネリングを行うのに有用な装置を好ましく実現する。
【００４７】
コンピュータシステム１８００は、コンピュータモジュール８０１と、キーボード１８０２及びマウス１８０３等の入力装置と、ディスプレイ１８１４及びスピーカ１８１７を含む出力装置とにより構成される。変調器−復調器（モデム）トランシーバ装置１８１６は、例えば、電話回線８０２又は他の機能媒体を介して接続可能な通信ネットワーク８０７との通信のために、コンピュータモジュール８０１により使用される。モデム１８１６は、インターネットへのアクセス、及びローカルエリアネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）等の他のネットワークシステムへのアクセスの獲得のために使用できる。モデム１８１６は、いくつかの実現例において、コンピュータモジュール８０１に内蔵されてもよい。
【００４８】
本例において、ＩＰ処理モジュール８０３は、専用の接続８０２を介してコンピュータ８０１に接続される。あるいは、ＩＰ処理モジュールが、ネットワークルータ又はネットワークスイッチ等の装置において実現された場合、ネットワーク８０７を介して、モジュール８０３をコンピュータ８０１に接続することも可能である。
【００４９】
コンピュータモジュール８０１は、通常、少なくとも１つのプロセッサユニット１８０５及びメモリユニット１８０６を含む。メモリユニット１８０６は、例えば、半導体ランダムアクセスメモリ（ＲＡＭ）及び半導体読み出し専用メモリ（ＲＯＭ）から構成される。また、モジュール８０１は、複数の入力／出力（Ｉ／Ｏ）インタフェースを含む。複数の入力／出力（Ｉ／Ｏ）インタフェースは、ビデオディスプレイ１８１４及びスピーカ１８１７に接続されるオーディオ／ビデオインタフェース１８０７と、キーボード１８０２、マウス１８０３及び必要に応じて設けられるジョイスティック（不図示）用のＩ／Ｏインタフェース１８１３と，モデム１８１６用に使用され、且つＩＰ処理モジュール８０３と通信を行うインタフェース１８０８とを含む。
【００５０】
いくつかの実現例において、モデム１８１６は、インタフェース１８０８内等、コンピュータモジュール８０１に内蔵されていてもよい。記憶装置１８０９は、コンピュータモジュール８０１内に設けられ、通常、ハードディスクドライブ１８１０と、フロッピディスク１８３６を受け付けるフロッピディスクドライブ１８１１とを含む。更に、コンピュータモジュール８０１は、磁気テープドライブ（不図示）を使用してもよい。ＣＤ−ＲＯＭ１８３５を受け付けるＣＤ−ＲＯＭドライブ１８１２は、通常、データの不揮発性供給元として設けられる。コンピュータモジュール８０１の構成要素１８０５から構成要素１８１３は、通常、関連技術の当業者に知られるコンピュータシステム１８００の従来の動作モードが得られるように、相互接続バス１８０４を介して通信を行う。上述の構成を実現可能なコンピュータの例は、複数のＩＢＭ−ＰＣとその互換機と、Sun Sparcstations又はSun Sparcstationsから派生した類似のコンピュータシステムとを含む。
【００５１】
通常、トンネリングアプリケーションプログラム２１０は、ハードディスクドライブ１８１０上に常駐する。トンネリングアプリケーションプログラム２１０は、（コンピュータ８０１内の）プロセッサ１８０５及び（ＩＰ処理モジュール８０３内の）プロセッサ１８３１による実行時に読み出され、制御される。プログラム２１０及びネットワーク８０７から取り込まれた任意のデータの中間記憶は、半導体メモリ１８０６及び１８３２を使用して、或いはこれらメモリとハードディスクドライブ１８１０との協働により行うことができる。いくつかの例において、トンネリングアプリケーションプログラム２１０は、ＣＤ−ＲＯＭ１８３５上又はフロッピディスク１８３６上に符号化され、対応するドライブ１８１２又はドライブ１８１１を介して読み取られた状態でユーザに提供されてもよい。あるいは、アプリケーションプログラム２１０は、モデム装置１８１６を介してネットワーク８０７からユーザにより読み取られてもよい。更に、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム１８００内に読み込むことも可能である。
【００５２】
本明細書で用いられる「コンピュータ可読媒体」とは、実行及び／又は処理のための命令及び／又はデータを、コンピュータシステム１８００及びＩＰモジュール８０３へ供給する任意の記憶媒体又は伝送媒体である。記憶媒体の例には、フロッピディスク、磁気テープ、ＣＤ−ＲＯＭ、ハードディスクドライブ、ＲＯＭ又は集積回路、光磁気ディスク、又はＰＣＭＣＩＡカード等のコンピュータ可読カードが含まれる。これらの装置は、コンピュータモジュール８０１及びＩＰモジュール８０３の内部又は外部のいずれに設けられてもよい。伝送媒体の例は、無線送信チャネル又は赤外線送信チャネルと、別のコンピュータ又はネットワーク装置へのネットワーク接続と、電子メール送信及びウェブサイト等に記録された情報を含む、インターネット又はイントラネットとを含む。
【００５３】
図４Ｂは、図１のＩＰハードウェアモジュール８０３をより詳細に示す図である。ＩＰハードウェアモジュール８０３は、プロセッサ１８３１と、メモリ１８３２とを有し、さらに、ＩＰモジュール８０３を介してトンネリングアプリケーションソフトウェアを読み込むことが望ましい場合には、トンネリングアプリケーションソフトウェアを含むＣＤ−ＲＯＭ（不図示）を受け付けるためＣＤ−ＲＯＭドライブ１８３３とを具備する。Ｉ／Ｏインタフェース１８３０は、矢印８０２で示すように，図１に示す送信元コンピュータ８０１との対話を提供する。
【００５４】
ＩＰハードウェアモジュール８０３が、組み込み型コンピュータシステムであるか、又は組み込み型コンピュータシステムの一部を構成する場合、トンネリングアプリケーションソフトウェアは、メモリ１８３２内のＲＯＭ内に組み込み可能であり、ＣＤ−ＲＯＭドライブ１８３３は存在しないであろう。
【００５５】
図５は、１００として、ＩＰパケット１０１及びＩＰパケット１０１がカプセル化されたトンネルパケット１０５を表す図である。ＩＰパケット１０１は、ＩＰヘッダ１０２、複数のＩＰ拡張ヘッダ１０３及びペイロード１０４から構成される。トンネリング後、新規の（トンネル）ＩＰパケット１０５が形成される。トンネルパケット１０５は、新規のＩＰヘッダ１０６と、複数の新規のＩＰ拡張ヘッダ１０７と、ＩＰ拡張ヘッダ１０７に続くオリジナルＩＰパケット１０１のコピーであるペイロード１０２’＋１０３’＋１０４’とを有する。ＩＰヘッダ１０２’は、ＩＰヘッダ１０２のコピーである。ＩＰ拡張ヘッダ１０３’は、ＩＰ拡張ヘッダ１０３のコピーである。ペイロード１０４’は、ペイロード１０４のコピーである。
【００５６】
トンネルパケット１０５において、新規のＩＰヘッダ１０６を、外側ＩＰヘッダと呼ぶ。ＩＰ拡張ヘッダ１０７を、外側ＩＰ拡張ヘッダと呼ぶ。これに対して、オリジナルＩＰヘッダ１０２のコピー１０２’を、内部ＩＰヘッダと呼ぶ。また、オリジナルＩＰ拡張ヘッダ１０３のコピー１０３’を、内部ＩＰ拡張ヘッダと呼ぶ。
【００５７】
尚、上述したように、外側ＩＰヘッダ１０６は、通常、内部ＩＰヘッダ１０２’からいくつかのフィールドをコピーすることにより形成できる。しかしながら、外側ＩＰ拡張ヘッダ１０７は、必ずしもオリジナルＩＰパケット１０１と関連付けされる必要はないので、外側ＩＰ拡張ヘッダ１０７の形成は、より複雑である。
【００５８】
図６は、トンネルパケットがＩＰｓｅｃヘッダを含む場合のパケットカプセル化の別の例４００を示す図である。オリジナルＩＰパケット１０１は、ＩＰヘッダ１０２とペイロード１０４とを含む。また、本例において、オリジナルＩＰパケット１０１は、ＩＰ拡張ヘッダ１０３を含む。パケット１０１のカプセル化により、新規のＩＰトンネルパケット４０１が形成される。このパケット４０１は、新規の外側ＩＰヘッダ４０２と、オリジナルＩＰヘッダ１０２のコピー１０２’と、オリジナルＩＰ拡張ヘッダ１０３のコピー１０３’とを含む。また、新規のパケット４０１は、さらにオリジナルペイロード１０４のコピー１０４’を含む。また、新規のパケット４０１は、認証ヘッダ等のＩＰｓｅｃヘッダ４０４を含む。ＩＰｓｅｃヘッダ４０４は、ＩＰｓｅｃ処理の一部としてパケット４０１に追加される。また、新規のパケット４０１は、複数の新規（外側）のＩＰ拡張ヘッダ４０３を含む。ヘッダ４０３は、開示されたＩＰトンネリングアプローチに従って、拡張ヘッダメモリ領域３０４（図３を参照）内に格納されたＩＰ拡張ヘッダテンプレートから作成される。ＩＰｓｅｃ処理が、認証ヘッダ及びトンネルモードをパケット４０１に追加することを含む場合、図４のＩＰｓｅｃヘッダ４０４は、新規のＩＰ拡張ヘッダ４０３を含むＩＰパケット４０１全体に適用される認証ヘッダである。この処理を、図９及び図１０を参照してより詳細に説明する。
【００５９】
図７は、開示されたトンネリング技術に従って、予め規定されたテンプレートを生成し、これらのテンプレートを使用してＩＰパケットを処理するプロセスを示す図である。図示された２つの各プロセス１１００及びプロセス１１００’は、コンピュータ８０１上及びＩＰモジュール８０３上で稼動している、個別の、しかし相互に関連するプロセスモジュールとして実現できる。プロセス１１００は、（ｉ）メモリ領域３０４内に格納するための拡張ヘッダテンプレート及び（ｉｉ）拡張ヘッダテンプレートメモリ２０５のメモリ領域３０５（図２を参照）内に格納するための予測拡張ヘッダテンプレートの生成に関する。プロセス１１００’では、開示されたトンネリング技術に従って、プロセス１１００により生成された予め規定された複数のテンプレートを使用してパケット処理を行う。
【００６０】
プロセス１１００の第１のステップ１１０１において、アプリケーションソフトウェア２０２及びトンネリングアプリケーションソフトウェア２１０のいずれか又は両方は、メモリ領域３０４内に格納するための拡張ヘッダテンプレートを生成する。続くステップ１１１３では、メモリ領域３０５内に格納するための対応する予測拡張ヘッダテンプレートを生成する。一般に、ステップ１１０１で生成された各拡張ヘッダテンプレートに対して、ステップ１１１３で、１つの対応する予測拡張ヘッダテンプレートが生成される。しかしながら、各拡張ヘッダテンプレートに対して、２つ以上の対応する予測拡張ヘッダテンプレートを生成することも可能である。ドライバソフトウェア２０１により実行されるステップ１１０２では、これらのテンプレートを、拡張ヘッダテンプレートメモリ２０５のメモリ領域３０４及びメモリ領域３０５内に格納する。プロセス１１００は、テンプレート生成とメモリ領域３０４及びメモリ領域３０５内へのテンプレートの格納とを行う事前の(a priori)処理を表す。しかしながら、この処理は、開示された技法により使用可能な拡張ヘッダテンプレート又は他のテンプレートを、どのように生成しうるかの一例に過ぎない。
【００６１】
プロセス１１００の例を考察するため、３０４１として参照される拡張ヘッダテンプレートは、図１５Ａ及び図１５Ｂを参照して説明するように、特定のタイプ０ルーティングオプションを内蔵している。対応する予測拡張ヘッダテンプレート３０５１は、第１の拡張ヘッダテンプレート３０４１のヘッダフィールドから導出された予測ヘッダフィールドを内蔵している。上述の予測動作は、認証ヘッダ要求に基づく。従って、予測拡張ヘッダテンプレート３０５１は、拡張ヘッダテンプレート３０４１との使用に最適な認証ヘッダ（図１５Ａの９０３等）が、その後、そのような認証ヘッダが要求されるような場合に判定されることを可能とする。
【００６２】
図７のプロセス１１００’へ戻ると、アプリケーションソフトウェア２０２及びドライバソフトウェア２０１により実行される第１のステップ１１０３は、パケットＡの受信及び／又は生成を行う。これにより、例えば、アプリケーションソフトウェア２０２は、パケットＡを生成できる。あるいは、パケットＡは、別のソフトウェア処理（不図示）から受信され、ドライバソフトウェア２０１に提供されることが可能である。その後、プロセッサ３０３により実行される決定ステップ１１０４では、ＩＰｓｅｃ処理又はトンネリング処理が必要か判定する。この判定は、セキュリティポリシーデータベース内のセキュリティポリシーにより確立されるであろう。もし必要であれば、矢印ＹＥＳに従って、ステップ１１０７へ進む。
【００６３】
ＩＰハードウェアモジュール８０３により実現されるステップ１１０７では、モジュール８０３がパケットＡを操作し、拡張ヘッダテンプレートメモリ２０５内のテンプレートを使用して、それぞれ、Ａ１（非認証ＩＰｓｅｃ処理のみが実行される場合）、Ａ２（トンネリングのみが必要である場合）、Ａ３（トンネリング及びＩＰｓｅｃ認証処理が実行される場合）、又はＡ４（ＩＰｓｅｃ認証処理のみが実行される場合）と呼ばれるパケットを形成する。パケットＡ及びＡ３は、それぞれ、図１４のパケット７００並びに図１５Ａ及び図１５Ｂのパケット９００／９００’により示される。形態Ａから形態Ａ１、Ａ２、Ａ３又はＡ４へのパケット変換は、図９と関連してより詳細に説明する。
【００６４】
図７へ戻ると、ステップ１１０７の後、ＩＰハードウェアモジュール８０３により実行されるステップ１１０５では、パケットＡ１、Ａ２、Ａ３又はＡ４をネットワーク８０７へ送信し、ネットワーク８０７によってパケットは宛先コンピュータ８０９へ送信される。ステップ１１０５の後、矢印１１０６に従って、ステップ１１０３へ戻る。検査ステップ１１０４へ戻り、ＩＰｓｅｃ処理及びトンネル処理のいずれも不要な場合、矢印ＮＯに従って、ステップ１１０５へ進む。
【００６５】
要約すると、図７は、プロセス１１００に従った、予め規定された複数のパケットフィールド（すなわち、メモリ領域３０４及び３０５内に格納されるテンプレート）の生成、及びプロセス１１００’に従ったＩＰパケット処理時の、メモリ領域３０４及び３０５内に格納されたこれらのテンプレートの使用を表す図である。
【００６６】
図８は、図７のＡ等のパケットが生成されるプロセス１１０３（図７を参照）を示す図である。処理は、矢印１１０６に従って、図７から第１のステップ１５０１へ進む。プロセス１１０３は、送信用データを生成するステップ１５０１によって開始する。ステップ１５０１は、通常、アプリケーションソフトウェア２０２により実行される。その後、再び、アプリケーションソフトウェア２０２により実行されるステップ１５０２では、上記のデータをドライバソフトウェア２０１へ送信する。ドライバソフトウェア２０１により実行される、続くステップ１５０３では、上記のデータを、ハードウェアモジュール８０３内のＩＰエンジン２０３へ送信する。その後、ＩＰエンジン２０３により実行されるステップ１５０４では、上記のデータからパケットＡを形成する。次のステップ１５０５では、上記のパケットＡをＩＰｓｅｃエンジン２０４に渡す。ステップ１５０５の後、矢印１１１２に従って、図７の検査ステップ１１０４へ戻る。
【００６７】
図９は、開示されたトンネリング技術に従って図７のパケットＡを処理する、プロセス１１０７を示す図である。
ＩＰｓｅｃ処理において、通常、複数のＩＰデータグラムは、まず、セキュリティポリシーデータベース３００と照合される。送信元ＩＰアドレス、宛先ＩＰアドレス、トランスポートプロトコル（例えばＴＣＰ(Transmission Control Protocol)又はＵＤＰ(User Datagram Protocol)）、転送元(transport source)アドレス及び転送先(transport destination)アドレス等のＩＰパケットからの複数のフィールドは、データベース３００内のセキュリティポリシーにおける複数のセレクタと比較される。
【００６８】
通常、各セキュリティポリシーは、一致ポリシー(matching policy)が発見されるまで順に照合される。個人ベース、サイトベース、機関ベース又は会社ベースでのセキュリティポリシー強化のために、セキュリティポリシーデータベース３００は、通常、システム又はネットワーク管理者によりセットアップされる。一致ポリシーが、ＩＰデータグラムが送信可能となる前に、ＩＰｓｅｃ処理が必要であることを示す場合、セキュリティアソシエーションデータベース３０１を検索する。一致ポリシーは、通常、チェックすべき最初のセキュリティアソシエーションを示す、セキュリティアソシエーションデータベース３０１へのインデックスを含む。通常、引き続くセキュリティアソシエーションは、最初のセキュリティアソシエーションから、リンクされたリストの形式によりリンクされる。また、各セキュリティアソシエーションは、通常、セキュリティポリシーデータベース３００において使用される複数のセレクタと同一の複数のセレクタを有する。セレクタは、ＩＰデータグラムに対する特定のセキュリティアソシエーションのよりきめ細かな選択を可能とする。
【００６９】
一致アソシエーションが発見されない場合、新規のセキュリティアソシエーションを、それぞれ、送信元コンピュータシステム８０１と宛先コンピュータシステム８０９との間でネゴシエートする必要がある。通常、このネゴシエーションは、インターネット鍵交換（ＩＫＥ）等の複数の鍵交換プロトコルを使用して行われる。鍵生成及び鍵交換は、通常、複雑な手順であり、たいがいはソフトウェアドライバ２０１により処理されるであろうが、計算コストのかかる演算について、何らかの形でハードウェアを用いた高速化を用いることも可能である。どの型のセキュリティアソシエーションをネゴシエートするべきかを判定する複数のパラメータ（例えば、暗号アルゴリズム制限、鍵長さ制限、バイト制限及び／又は時間満了制限）は、通常、セキュリティポリシー内のフィールドからもたらされる。
【００７０】
セキュリティアソシエーションは一般に、オフされた機器を起動させることはなく、また、バイトカウント制限及び／又は時間満了により失効するため、通常、動的な性質を有する。セキュリティアソシエーションが失効すると、新規のアソシエーションを、その置き換えとしてネゴシエートする必要がある。この置き換えは、通常、新規の暗号鍵の生成を含む。一方で、セキュリティポリシーは通常、セキュリティに関するサイトポリシー、会社ポリシー又は機関ポリシーを反映するものであるため、より静的な傾向がある。
【００７１】
セキュリティアソシエーションは、セレクタに加え、実行されるべき特定の暗号演算の詳細を指定する。動作の指定に使用される典型的なパラメータは、ＡＨ／ＥＳＰ、アルゴリズム、鍵、初期値、シーケンス番号、トランスポート／トンネルモード、バイトカウント及び時間満了を含む。
【００７２】
セキュリティアソシエーションと１つ以上のヘッダテンプレートとの間の関係が、有用であることは明らかである。トンネルモードにおいて、セキュリティアソシエーションが検出され、且つセキュリティアソシエーションが認証ヘッダの必要性を明示した場合、ＩＰｓｅｃエンジン２０４は、暗号演算１２０１の実行前に、１つ以上の拡張ヘッダをデータグラムに追加する必要があるだろう。
【００７３】
セキュリティアソシエーションは、暗号パラメータに加え、ヘッダテンプレートメモリ２０５内の１つ以上のヘッダテンプレートへの１つ以上のインデックスを格納してもよい。あるいは、個別のヘッダインデックスデータベース３０２を、ヘッダテンプレートメモリへのインデックスを格納するために使用してもよい。後者の場合、セキュリティアソシエーションは、ヘッダインデックスデータベース３０２への単一のインデックスを格納し、ヘッダインデックスデータベース３０２は、ヘッダテンプレートメモリ２０５内への１つ以上のインデックスを格納する。
【００７４】
ヘッダテンプレートに対するこれらのインデックスの値は、通常、新規のセキュリティアソシエーションの作成処理の一部として、ソフトウェアドライバ２０１により初期化されるであろう。どのヘッダが必要であるかの詳細及びこれらのヘッダの内容は、通常、セキュリティについてのサイトポリシー、会社ポリシー又は全機関にわたるポリシーの一部として規定されるであろう。
【００７５】
図９のプロセス１１０７は、図７の処理における矢印１１１０に従って、パケット「Ａ」に対するプロセス１１０７が指示されることにより開始する。検査ステップ１２００では、認証を含まないＩＰｓｅｃ処理がパケットＡに対して必要であるかを判定する。この判定は、セキュリティアソシエーションデータベース内のセキュリティアソシエーションにより確立されうる。判定の結果、必要なら、矢印ＹＥＳに従って、ステップ１２０１へ進む。ＩＰｓｅｃエンジン２０４により実行されるステップ１２０１では、非認証ＩＰｓｅｃ処理に必要な暗号パラメータを読み出し、且つこの処理を実行することにより、パケットＡからパケットＡ１を形成する。その後、検査ステップ１２０２へ進む。
【００７６】
プロセッサ３０３（図３を参照）により実行されるステップ１２０２では、セキュリティアソシエーション内に格納された情報に基づいて、考慮すべき現在のパケットに対してトンネリングが必要か判定される。この判定は、セキュリティアソシエーションデータベース内のセキュリティアソシエーションにより確立されうる。必要であれば、矢印ＹＥＳに従って、ステップ１２０７へ進む。プロセッサ３０３により実行されるステップ１２０７では、拡張ヘッダインデックスを、テンプレートインデックスデータベース３０２から読み出す。次に、ステップ１２０７では、このインデックスを使用して、それぞれ、拡張ヘッダテンプレートメモリ３０４から対応する拡張ヘッダのコピーを得、予測拡張ヘッダテンプレートメモリ３０５から対応する予測拡張ヘッダテンプレートのコピーを得る。その後、ステップ１２０８では、修正中間パケットＡ２を形成するために、読み出された拡張ヘッダテンプレートのコピーをパケットＡ又はパケットＡ１内に挿入する。また、ステップ１２０８では、予測ヘッダテンプレートコピーの修正も実行できる。この修正は、認証ヘッダ中の空白の「シーケンス番号」フィールドと、現在のシーケンス番号（セキュリティアソシエーションと関連付けられた暗号パラメータのうちの１つ）との置き換え、及び、タイプ０ルーティングヘッダ内の空白の「次ヘッダ」フィールドと、続くヘッダ又はトランスポートプロトコルのＩＰプロトコル番号との置き換えとを含む。
【００７７】
ステップ１２０８の後、検査ステップ１２０９に進み、ＩＰｓｅｃ認証が必要であるか判定される。この判定は、セキュリティアソシエーションデータベース内のセキュリティアソシエーションにより確立されうる。必要である場合、矢印ＹＥＳに従って、ステップ１２１０へ進む。ステップ１２１０では、認証パラメータを、セキュリティアソシエーションデータベース３０１から読み出す。その後、ステップ１２１３では、認証処理を実行することにより、認証フィールドＦ（完全性チェック値（ＩＣＶ））を判定し、それにより、パケットＡ３を形成する。ステップ１２１３により実行された認証処理の少なくとも一部は、図１１を参照してより詳細に説明するように、ステップ１２０８により処理された予測ヘッダテンプレートに対して実行される。続いて、矢印１２１４に従って、矢印線１１１１に従った図７へ戻る。ステップ１２０９へ戻り、認証が必要でない場合、矢印ＮＯに従って、矢印線１１１１に従った図７へ戻る。
【００７８】
図９を参照して説明したプロセス１１０７では、複数の拡張ヘッダインデックスを読み出すためのステップ１２０７、及び複数の認証パラメータを読み出すためのステップ１２１０の２つのステップを使用するが、別の構成において、これらの動作は、より効率的に、ステップ１２０７の実行と同時に読み出されてもよい。
【００７９】
ステップ１２０２へ戻ると、トンネリングが必要でない場合、矢印ＮＯに従って、ステップ１２０３へ進む。ステップ１２０３では、ＩＰｓｅｃ認証が必要か判定される。この判定は、セキュリティアソシエーションデータベース内のセキュリティアソシエーションにより確立されうる。必要であれば、矢印ＹＥＳに従って、ステップ１２０４へ進む。プロセッサ３０３により実行されるステップ１２０４では、拡張ヘッダインデックスをテンプレートインデックスデータベース３０２から読み出し、このインデックスを使用して、拡張ヘッダテンプレートメモリ３０４内に格納される拡張ヘッダテンプレートを取得する。また、ステップ１２０４では、認証パラメータをセキュリティアソシエーションデータベース３０１から読み出す。また、ステップ１２０４では、拡張ヘッダを修正する可能性があるが、その場合は予測ヘッダの読み出し又は処理を行わない。
【００８０】
拡張ヘッダに対して実行可能な修正の例は、認証ヘッダ内の空白の「認証データ」フィールドの、ＩＰｓｅｃエンジン２０４内に含まれるハードウェアにより算出された認証データグラムの完全性チェック値による置き換えと、認証ヘッダテンプレート内の空白の「シーケンス番号」フィールドの、現在のシーケンス番号（セキュリティアソシエーションと関連付けられた暗号パラメータのうちの１つ）による置き換えと、タイプ０ルーティングヘッダ内の空白の「次ヘッダ」フィールドの、続くヘッダ又はトランスポートプロトコルのＩＰプロトコル番号による置き換えとを含む。
【００８１】
その後、ステップ１２０５では、（修正）拡張ヘッダをパケットＡ内又はパケットＡ１内に挿入することにより、中間パケットを形成する。次に、ステップ１２０５では、中間パケットの形成を受けて認証処理を実行することにより、パケットＡ４を形成する。続いて、矢印１１１１に従って、図７へ戻る。ステップ１２０３へ戻って、認証が必要でない場合、矢印ＮＯ及び矢印１１１１に従って図７へ戻る。
【００８２】
図１０は、図３の予測拡張ヘッダ記憶装置３０５内に格納される予測拡張ヘッダテンプレートを生成する、図７のプロセス１１１３を示す図である。第１のステップ１８００では、一時メモリ（不図示）へ、拡張ヘッダテンプレート３０４１のコピーを格納する。その後、ステップ１８０１では、拡張ヘッダテンプレート３０４１の予測可能フィールドを修正することにより、初期予測拡張ヘッダテンプレート３０４１Ａを形成する。次のステップ１８０２では、図７に関連して述べたように、初期テンプレート３０４１Ａの予測不可能なフィールドを修正することにより、予測拡張ヘッダテンプレート３０５１を形成する。拡張ヘッダテンプレート３０４１と関連予測拡張ヘッダテンプレート３０５１は、それぞれ図３の拡張ヘッダメモリ３０４及び予測拡張ヘッダ記憶装置３０５内に格納される。
【００８３】
図１０のプロセス１８０１の実行のために、ＩＰｖ４パケット上の認証アルゴリズムの実行時に、次のＩＰｖ４オプションは、「予測可能フィールド」とみなされる。従って、認証アルゴリズムの実行のために、次のＩＰｖ４オプションは、処理ヘッダ内又はヘッダの一部に含まれる：
・オプションの終了(end of options)
・動作無し(no operation)
・ルータ警告(router alert)
・同報通信の送信(send a directed multi-destination delivery)。
上述の予測可能フィールドは、修正せずに使用される。換言すれば、これらのオプションに対するヘッダテンプレート及び予測ヘッダテンプレートは、同一である。
【００８４】
次のＩＰｖ４オプションは、図１０のステップ１８０２における「予測不可能なフィールド」とみなされ、ステップ１８０２においてゼロで置き換えられる：
・ルーズソースルーティング(loose source routing)
・タイムスタンプ
・レコードルート（経路記録）
・ストリクトソースルーティング(strict source routing)
・トレースルート（経路確認）。
【００８５】
次のＩＰｖ６拡張ヘッダは、ステップ１８０１において、宛先における予測値によって置き換えられる：
・タイプ０ルーティング。
【００８６】
従って、上述の構成において、全ての拡張ヘッダテンプレートは、対応する予測拡張ヘッダテンプレートを有するが、これらの予測拡張ヘッダテンプレートは、仕様に応じて異なるか、又は同一であるかが決定される。
【００８７】
尚、ＩＰｖ６は、「オプション」と呼ばれるより小さいエンティティによって構成される２つの拡張ヘッダを更に有する。尚、これらの「オプション」は、ＩＰ拡張ヘッダ及び／又はＩＰｖ４パケットヘッダ内のオプションに関連して先に述べたオプションとは異なる。これらの「ＩＰｖ６拡張ヘッダ内のオプション」は、オプションが認証算出に含まれるべきか否か、あるいは、算出のためにゼロで置き換えられるべきか否かを示すビットを含む。ＩＰｖ６拡張ヘッダのこのようなオプションには：
・ホップバイホップオプション
・宛先オプション
がある。
【００８８】
図１１は、図９のパケット認証を実行するプロセス１２１３（図９を参照）を示す図である。プロセス１２０９は、ステップ１３００へ進む矢印１２１６に従って、図９の処理から開始する。ステップ１３００では、パケットＡ２内の拡張ヘッダテンプレートコピーの代わりに（修正）予測拡張ヘッダテンプレートコピーを用いることにより、中間パケットを形成する。次に、ステップ１３００では、認証手順を中間パケットに適用することにより、認証フィールドＦを判定する。その後、ステップ１３０１では、フィールドＦを中間パケット内に挿入する。また、ステップ１３０１では、予測拡張ヘッダテンプレートの代わりに中間パケット内の拡張ヘッダテンプレートを用いることにより、パケットＡ３を形成する。その後、矢印１２１４に従って図９へ戻る。
【００８９】
図１２は、図２のハードウェア要素とソフトウェア要素との間のデータフロー５００を表す図である。ステップ「３」において、ドライバソフトウェア２０１は、図７のプロセス１１００に従って、拡張ヘッダテンプレート及び予測拡張ヘッダテンプレートを生成する。この生成は、場合により、アプリケーションソフトウェア２０２及びトンネリングアプリケーションソフトウェア２１０からの情報を使用して行われる。次のステップ「４」において、ドライバソフトウェア２０１は、拡張ヘッダテンプレートを拡張ヘッダテンプレートメモリ２０５内のメモリ領域３０４内に格納し、予測拡張ヘッダテンプレートを拡張ヘッダテンプレートメモリ２０５内のメモリ領域３０５内に格納する。次のステップ「１」は、アプリケーションソフトウェア２０２により生成されている送信用データを表す。次のステップ「２」は、アプリケーションソフトウェア２０２が上述のデータを、ＩＰハードウェアモジュール８０３と通信可能なドライバソフトウェア２０１に、どのようにして転送するかを表す。その後、ステップ「５」において、ドライバソフトウェア２０１は、ステップ「１」でアプリケーションソフトウェア２０２により生成されたデータをＩＰエンジン２０３へ送信する。次のステップ「６」において、ＩＰエンジン２０３は、ネットワーク８０７を介した送信用データをカプセル化するために、図８のプロセス１１０３に従って、そのデータからＩＰパケットを形成する。
【００９０】
次のステップ「７」において、ＩＰエンジン２０３は、ＩＰｓｅｃ処理のために、上記のパケットをＩＰｓｅｃエンジン２０４のプロセッサ３０３に渡す。その後、ステップ「８」において、ＩＰｓｅｃエンジン２０４は、ＩＰｓｅｃ処理が必要である場合、どのＩＰｓｅｃ処理が必要であるかを判定する。これは、セキュリティポリシーデータベース３００の検索、及びそれに続くセキュリティアソシエーションデータベース３０１の検索により判定される。続くステップ「９」において、ＩＰｓｅｃエンジンは、拡張ヘッダテンプレートメモリ３０５から適切なＩＰ拡張ヘッダテンプレート及び予測拡張ヘッダテンプレートを読み出す。ＩＰトンネリングが必要であり、且つＩＰ外側ヘッダ（ＩＰｖ６が使用される場合）の後にＩＰ拡張ヘッダが必要である場合、このようなテンプレートは、必要である。あるいは、オプションがＩＰヘッダ内で必要である場合、ＩＰｖ４環境下において、テンプレートは必要である。
【００９１】
ステップ「９」は、図１３を参照して説明するような方法により検索される拡張ヘッダテンプレートメモリ２０５に対する参照を使用して実行される。次のステップ「１０」において、ＩＰｓｅｃエンジン２０４は、ＩＰ拡張ヘッダテンプレートコピーを、ＩＰパケット内に挿入する。これにより、この挿入の前のＩＰ拡張ヘッダテンプレートのいくつかの部分は、修正される可能性がある。その後、ステップ「１１」において、ＩＰｓｅｃエンジン２０４は、対応する予測拡張ヘッダテンプレートを使用した認証ヘッダ生成により、更にパケットを処理する。続くステップ「１２」において、ＩＰｓｅｃエンジン２０４は、送信用の処理済みパケットをＩＰエンジン２０３に戻す。最後に、ステップ「１３」において、ＩＰエンジン２０３は、パケットをネットワーク８０７を介して送信する。
【００９２】
図１３は、図１２のデータフローをより詳細に示す図である。データフロー処理は、ステップ「７」によって開始する。ステップ「７」において、ＩＰエンジン２０３は、ＩＰｓｅｃ処理のためのＩＰｓｅｃエンジン２０４のプロセッサ３０３にパケットを渡す。その後、ステップ「８Ａ」において、ＩＰｓｅｃエンジン２０４は、セキュリティポリシーデータベース３００に照会し、ＩＰｓｅｃ処理が必要である場合、対象パケットに対してどのＩＰｓｅｃ処理が必要であるかを判定する。その後、ステップ「８Ｂ」において、ＩＰｓｅｃエンジン２０４は、セキュリティアソシエーションデータベース３０１からＩＰｓｅｃ処理を実行するために必要な複数の暗号パラメータ（鍵、アルゴリズム等）を検索する。これは、ステップ「８Ａ」に従ったＩＰｓｅｃ処理が必要であることを前提とする。その後、ステップ「８Ｃ」において、ＩＰｓｅｃエンジン２０４は、メモリ２０５内のＩＰ拡張ヘッダテンプレート及び対応する予測拡張ヘッダテンプレートのアドレス位置と、テンプレートコピーが最終パケット内に現れるべき順序とを特定するリファレンスを、セキュリティアソシエーションデータベース３０１から読み出す。これは、ステップ「８Ａ」によって、トンネルモード処理が必要である場合であり、そうでなければ、ステップ「８Ｃ’」において、ＩＰｓｅｃエンジン２０４は、テンプレートインデックスデータベース３０２からの上記のリファレンスを読み出す。
【００９３】
宛先コンピュータ８０９は、パケット（あるいは、データグラムと称される）を受信すると、まず、データグラムがＩＰｓｅｃヘッダを含むか判定する。そして、ＩＰｓｅｃヘッダがデータグラムに存在しない場合、データグラムの分配を決定するため、セキュリティポリシーデータベース（不図示）を調べる。分配は、データグラムの受け入れ又は破棄のいずれであってもよい。データグラムがＩＰｓｅｃヘッダを含む場合、適切なＩＰｓｅｃ処理ステップが試行される。各ＩＰｓｅｃ処理ステップは、宛先コンピュータ８０９のセキュリティアソシエーションデータベース（不図示）内に、対応するセキュリティアソシエーションを必要とする。対応するセキュリティアソシエーションが存在しない場合、データグラムは破棄される。ある認証ヘッダについて、対応するセキュリティアソシエーションが存在する場合、その認証算出のための暗号パラメータはセキュリティアソシエーションから読み出され、データグラムに対する完全性チェック値（ＩＣＶ）の算出のために使用される。データグラム内のいくつかのフィールドは算出から除外される。認証ヘッダ内の（ＩＣＶを格納する）認証データフィールドは、そのような除外フィールドの１つである。算出されたＩＣＶがデータグラム内のＩＣＶと一致し、且つ有効性に関する全ての他の条件が満足された場合（例えば、シーケンス番号が妥当である、バイトカウントが超過していない、又は満了時間を超過していない）、データグラムは、認証されたとみなされる。
【００９４】
受信データグラムについてのＩＰｓｅｃ処理が全て終了した後、宛先コンピュータ８０９は、そのようなデータグラム内にどのＩＰｓｅｃ処理の存在が予期されていたかを判定するため、セキュリティポリシーデータベース（不図示）を調べる。必要なＩＰｓｅｃ処理が存在した場合、そのパケットは受入れられる。必要なＩＰｓｅｃ処理が存在しない場合、パケットは破棄される。
【００９５】
図１４は、ＩＰｖ４パケット７００を示す図である。ＩＰｖ４パケット７００は、２つの部分、すなわち、ＩＰｖ４ヘッダ７０１及びＴＣＰペイロード７０２から構成される。図１のネットワーク８０７のようなＩＰｖ６ネットワークを介してＩＰｖ４パケット７００を送信するために、ＩＰｖ４パケット７００をトンネリング（すなわち、カプセル化）することができる。このトンネリングは、ＩＰｖ４パケット７００を新規のＩＰｖ６パケットのペイロードとして取り扱う場合、ＩＰｖ６ヘッダの追加を必要とする。更に、本例において、生成されたＩＰｖ６パケットを、指定された方法でルーティングすることが望ましい。そのために、「タイプ０」ルーティング拡張ヘッダが組み込まれている。最後に、この特定の例において、ＩＰｖ６パケットを認証することにより、「認証ヘッダ」をペイロードの前に追加することが望ましい。
【００９６】
図１５Ａ及び図１５Ｂは、ルーティングオプション及び認証を含むＩＰｖ６トンネルパケット内にカプセル化された後の、図１４のＩＰｖ４パケットを表す図である。図１５Ａ及び図１５ＢのＩＰｖ６パケットは、符号９００（図１５Ａ）及び符号９００’（図１５Ｂ）で参照される２つの部分により示されている。ＩＰｖ６パケット部９００は、ベースヘッダ９０１、ＩＰｖ６タイプ０ルーティングヘッダ９０２及びＩＰｓｅｃ認証ヘッダ９０３を有する。この特定の例は、パケットに指定された３つの中間ＩＰｖ６アドレスを有する。このため、図１５Ａは、第１のＩＰｖ６中間アドレス９０４、第２のＩＰｖ６中間アドレス９０５、第３のＩＰｖ６中間アドレス９０６、及び最終のＩＰｖ６宛先アドレス９０７を示している。図１５Ｂにおいて、ＩＰｖ６パケットの第２の部分９００’は、ＩＰｖ４ヘッダ７０１’及びＴＣＰペイロード７０２’を有する、元のＩＰｖ４パケット７００のコピーを有している。
【００９７】
ＩＰｖ６パケット（９００及び９００’）が、（８０７のような）ネットワークを介して送信される際、パケットは、まず、フィールド９０４に従って、第１の中間アドレスで指定される宛先へ送信される。パケットがこの宛先に到着すると、ＩＰｖ６タイプ０ルーティングヘッダ９０２内の第２の中間アドレス９０５は、ＩＰｖ６ベースヘッダ９０１の宛先アドレスフィールド内にある第１のＩＰｖ６中間アドレス９０４と交換される。そして、「残りセグメント」フィールド９０８が、デクリメントされる。
【００９８】
同様に、このＩＰｖ６パケットが、フィールド９０５に従って第２の中間アドレスで指定された宛先に到着すると、ＩＰｖ６タイプ０ルーティングヘッダ９０２内の第３の中間アドレス９０６が、この時点でＩＰｖ６ベースヘッダ９０１の宛先アドレスフィールド内にある第２の中間アドレスと交換される。更に、「残りセグメント」フィールド９０８が再びデクリメントされる。最後に、ＩＰｖ６パケットが、第３の中間アドレスで指定された宛先に到着すると、ＩＰｖ６タイプ０ルーティングヘッダ９０２内の最終の宛先アドレス９０７が、この時点でＩＰｖ６ベースヘッダ９０１の宛先アドレスフィールド９０４内にある第３の中間アドレス９０６と交換され、「残りセグメント」フィールド９０８が、再度デクリメントされる。
【００９９】
このように、ＩＰｖ６パケットがネットワーク８０７を介して最終の宛先へ向かうにつれ、タイプ０ルーティングヘッダ９０２が変化することがわかる。パケットが最終宛先で受信された際、図１６Ａ及び図１６Ｂに示す形態を有する。この時点において、最終のＩＰｖ６宛先アドレスは、ＩＰｖ６ベースヘッダ１００１内にある。更に、第１〜第３の中間アドレスは、ＩＰｖ６タイプ０ルーティングヘッダ１００２内にある。最後に、「残りセグメント」フィールドは、０の値にデクリメントされている。従って、図１６Ａ及び図１６Ｂは、パケットが図１の宛先コンピュータ８０９に到着した時の図１５Ａ及び図１５Ｂのトンネルパケットを示す図である。
【０１００】
送信元コンピュータシステム８０１が、コンピュータ８０１から送信されるべきＩＰｖ６パケットに対する認証値を算出する場合、宛先コンピュータシステム８０９で受信されるであろうタイプ０ルーティングヘッダ値を予測する必要がある。そのため、タイプ０ルーティングヘッダを発信ＩＰｖ６パケットに追加する場合、送信元コンピュータシステム８０１は、図１７に示すタイプ０ルーティングヘッダを使用してＩＰｖ６パケットを作成する。これは、図１５Ａに示す９０２と同一であり、図３のメモリ領域３０４内に格納される「拡張ヘッダ」と呼ばれる。しかしながら、コンピュータシステム８０１により送信されるＩＰｖ６パケットに対する認証値９０３の算出には、図１８に示すタイプ０ルーティングヘッダが使用される。これは、図３のメモリ領域３０５内に格納される「予測拡張ヘッダ」と呼ばれる。
【０１０１】
このようにして、図１７のルーティングヘッダ１６０１及び図１８のルーティングヘッダ１７０１の両方が、拡張ヘッダテンプレートメモリ２０５内に格納される。より具体的には、ルーティングヘッダ１６０１は拡張ヘッダメモリ部分３０４内に格納され、ルーティングヘッダ１７０１は予測拡張ヘッダメモリ部分３０５内に格納される。
【産業上の利用可能性】
【０１０２】
上述の構成が、コンピュータ産業及びデータ処理産業に適用できることは、上述の説明により明らかである。
先の説明は、本発明のごく一部の実施形態を説明したものであり、本発明の範囲及び精神を逸脱せずに、本発明の変形及び／又は変更を行うことができる。実施形態は、例証であって、限定的ではない。
【図面の簡単な説明】
【０１０３】
【図１】開示されたＩＰトンネリングアプローチを実施可能なシステムのブロック図である。
【図２】図１の送信元コンピュータ及びＩＰ処理モジュールの機能要素を示す図である。
【図３】図２のＩＰｓｅｃエンジン及び拡張ヘッダテンプレートメモリの機能要素を示す図である。
【図４Ａ】図１の汎用コンピュータをより詳細に示す図である。
【図４Ｂ】図１のＩＰハードウェアモジュールをより詳細に示す図である。
【図５】ＩＰパケット及び、ＩＰパケットをカプセル化して得られるトンネルパケットを示す図である。
【図６】ＩＰｓｅｃヘッダを含むパケットカプセル化の別の例を示す図である。
【図７】予め規定されたテンプレートを生成するプロセス、及びこれらのテンプレートを使用してＩＰパケットを処理するプロセスを示す図である。
【図８】図７のパケットの生成方法を示す図である。
【図９】開示されたトンネリング技術に従って図７のパケットの処理する方法を示す図である。
【図１０】図７の予測拡張ヘッダテンプレートの包括的な生成プロセスを示す図である。
【図１１】パケット認証を実行する図９のプロセスを示す図である。
【図１２】図１のハードウェア要素とソフトウェア要素との間のデータフローを表す図である。
【図１３】図１２のセキュリティポリシーデータベース要素のデータフローをより詳細に示す図である。
【図１４】ＩＰｖ４パケットの例を示す図である。
【図１５Ａ】、
【図１５Ｂ】ルーティングオプション及び認証ヘッダを含む、典型的なＩＰｖ６トンネルパケット内にカプセル化された図１４のＩＰｖ４パケットを表す図である。
【図１６Ａ】、
【図１６Ｂ】図１の宛先コンピュータへ図１５Ａ及び図１５Ｂのトンネルパケットが到着した際の状態を示す図である。
【図１７】図１５Ａ及び図１５ＢのＩＰｖ６トンネルパケットの作成に使用された（タイプ０ルーティング）拡張ヘッダを示す図である。
【図１８】上記トンネルパケットの認証値の算出に使用された（タイプ０ルーティング）拡張ヘッダを示す図。
【図１】
0004018701.tif 000002
【図２】
0004018701.tif 000003
【図３】
0004018701.tif 000004
【図４Ａ】
0004018701.tif 000005
【図４Ｂ】
0004018701.tif 000006
【図５】
0004018701.tif 000007
【図６】
0004018701.tif 000008
【図７】
0004018701.tif 000009
【図８】
0004018701.tif 000010
【図９】
0004018701.tif 000011
【図１０】
0004018701.tif 000012
【図１１】
0004018701.tif 000013
【図１２】
0004018701.tif 000014
【図１３】
0004018701.tif 000015
【図１４】
0004018701.tif 000016
【図１５Ａ】
0004018701.tif 000017
【図１５Ｂ】
0004018701.tif 000018
【図１６Ａ】
0004018701.tif 000019
【図１６Ｂ】
0004018701.tif 000020
【図１７】
0004018701.tif 000021
【図１８】
0004018701.tif 000022