(57)【要約】パケットがパケットオブジェクト用ヘッダを持たない場合、パケットをパケットオブジェクト用ヘッダでカプセル化することによってパケットが処理される。このカプセル化されたパケットは、直列の構成すなわちパイプライン構成で互いに結合されている複数の変換モジュールを用いて、パケットオブジェクト用ヘッダの中に含まれた情報に基づいて処理される。複数の変換モジュールは、互いに独立にこのカプセル化パケットを処理する。
2005522924.tif 000002
【特許請求の範囲】
【請求項１】
パケットオブジェクトがパケットオブジェクト用ヘッダを有していない場合には、パケットオブジェクト用ヘッダでパケットをカプセル化するステップと、
互いに直列構成で接続された複数の変換モジュールを用いて、前記パケットオブジェクト用ヘッダの中に含まれた情報に基づいて前記カプセル化パケットを処理するステップと
を含んでなり、
前記複数の変換モジュールの各々のモジュールが、前記複数の変換モジュールの別のモジュールとは独立に前記カプセル化パケットを処理するものであるパケット処理方法。
【請求項２】
パケットを受け取るステップと、
パケットオブジェクト用ヘッダを有しないパケットの各々をパケットオブジェクト用ヘッダでカプセル化するステップと、
互いに直列構成で接続された複数の変換モジュールを用いて、前記パケットオブジェクト用ヘッダの中に含まれた情報に基づいてカプセル化パケットを処理するステップと
を含んでなり、
前記複数の変換モジュールの各々のモジュールが、前記複数の変換モジュールのうちの他のモジュールとは独立して前記カプセル化パケットを並列に処理するものであるパケット処理方法。
【請求項３】
前記複数の変換モジュールの１つが複数の並列プロセッサを含んでおり、
前記パケットに関して直列の順序を指定するシーケンス識別子を前記パケットの各々に割り当てるステップと、
前記パケットを前記複数の並列プロセッサに送るステップと、
前記複数の並列プロセッサを用いて前記パケットを並列に処理するステップと、
前記パケットに割り当てられたシーケンス識別子に基づいて、前記処理されたパケットを前記複数の変換モジュールの１つの出力で順序付けするステップと
をさらに含む請求項２に記載の方法。
【請求項４】
関連したパケットを識別するようにパケットを分類するステップをさらに含んでおり、
前記シーケンス識別子を割り当てるステップが、関連したパケットの順序付けを指定するシーケンス識別子を前記関連したパケットに割り当てるステップを含み、
前記処理されたパケットを順序付けするステップが、前記パケットの分類および前記パケットに割り当てられたシーケンス識別子に基づいて、前記処理されたパケットを前記複数の変換モジュールの１つの出力で順序付けするステップを含む請求項３に記載の方法。
【請求項５】
前記パケットの分類に基づいて、フローの識別子を関連したパケットに割り当てるステップをさらに含む請求項４に記載の方法。
【請求項６】
前記パケットを分類するステップが前記パケットに関連したソースのアドレスと宛先のアドレスとプロトコルとを評価するステップを含んでおり、
前記フローの識別子を割り当てるステップが、前記パケットに関連したソースのアドレスと宛先のアドレスとプロトコルとに基づいて、フローの識別子を関連したパケットに割り当てるステップを含む請求項５に記載の方法。
【請求項７】
前記パケットを分類するステップが、前記パケットに関連した宛先のアドレスとセキュリティパラメータ指数とプロトコルとを評価するステップを含んでおり、
前記フローの識別子を割り当てるステップが、前記パケットに関連した宛先のアドレスとセキュリティパラメータ指数とプロトコルとに基づいて、フローの識別子を関連したパケットに割り当てるステップを含む請求項５に記載の方法。
【請求項８】
前記パケットが暗号パケットを含むものである請求項２に記載の方法。
【請求項９】
前記パケットが到来するパケットのストリームに関連した第１の複数のパケットおよび送出するパケットのストリームに関連した第２の複数のパケットを含む請求項２に記載の方法。
【請求項１０】
前記カプセル化パケットを処理するステップが、前記複数の変換モジュールの少なくとも１つを用いて、前記到来するパケットのストリームに関連した第１の複数のパケットおよび前記送出するパケットのストリームに関連した第２の複数のパケットを処理するステップを含む請求項９に記載の方法。
【請求項１１】
パケットオブジェクトのそれぞれ１つを前記複数の変換モジュールが処理すべきか、変換することなく前記複数の変換モジュールを通過させるべきか、またはシステムプロセッサが捕獲すべきかを示すために、前記パケットオブジェクト用ヘッダのそれぞれ１つの中のルーティングフラグを更新するステップをさらに含む請求項２に記載の方法。
【請求項１２】
カプセル化パケットの到来ストリームをカプセル化パケットの送出ストリームを用いてカプセル化パケットの連続したストリームに多重化するステップをさらに含む請求項２に記載の方法。
【請求項１３】
前記カプセル化パケットのそれぞれ１つが、データで占められた、指定された制限内のフィールドを有することを検証するステップをさらに含む請求項１２に記載の方法。
【請求項１４】
前記送出するカプセル化パケットのそれぞれ１つからセレクタを取り出すステップと、
前記取り出されたセレクタに基づいて、セキュリティポリシー指数を前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティポリシー用データベースから取得するステップと、
をさらに含む請求項１２に記載の方法。
【請求項１５】
前記セレクタが、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのポートと、宛先のポートとを含むものである請求項１４に記載の方法。
【請求項１６】
前記プロトコルがトランスポートプロトコルである請求項１５に記載の方法。
【請求項１７】
前記取り出されたセレクタおよびセキュリティポリシー指数に基づいて、前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性を得るために、セキュリティ関連用データベースを検索するステップをさらに含む請求項１４に記載の方法。
【請求項１８】
前記セキュリティ関連用データベースを検索するステップが、
ハッシュキー値を得るために、前記取り出されたセレクタおよび前記セキュリティポリシー指数をハッシュすることと、
前記ハッシュキー値を用いて、前記セキュリティ関連用データベース内で線形検索を実行することと
を含む請求項１７に記載の方法。
【請求項１９】
前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性に基づいて、暗号情報を前記送出するカプセル化パケットのそれぞれ１つの前記パケットオブジェクト用ヘッダの中に挿入するステップをさらに含む請求項１７に記載の方法。
【請求項２０】
セレクタを到来するカプセル化パケットのそれぞれ１つから取り出すステップをさらに含む請求項１２に記載の方法。
【請求項２１】
前記セレクタが、宛先のＩＰアドレスと、プロトコルと、セキュリティポリシー指数と、インターフェースのポートとを含む請求項２０に記載の方法。
【請求項２２】
前記プロトコルがトランスポートプロトコルである請求項２１に記載の方法。
【請求項２３】
前記取り出されたセレクタに基づいて、前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性を得るために、セキュリティ関連用データベースを検索するステップをさらに含む請求項２０に記載の方法。
【請求項２４】
前記セキュリティ関連用データベースを検索するステップが、
ハッシュキー値を得るために、前記取り出されたセレクタをハッシュすることと、
前記ハッシュキー値を用いて、前記セキュリティ関連用データベース内で線形検索を実行することと
を含む請求項２３に記載の方法。
【請求項２５】
前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性に基づいて、暗号情報を前記到来するカプセル化パケットのそれぞれ１つの前記パケットオブジェクト用ヘッダの中に挿入するステップをさらに含む請求項２３に記載の方法。
【請求項２６】
前記到来するカプセル化パケットのそれぞれ１つを解読するステップと、
前記到来するカプセル化パケットのそれぞれ１つが、データで占められた、指定された制限内のフィールドを有することを検証するステップと
をさらに含む請求項１２に記載の方法。
【請求項２７】
が、
前記カプセル化パケットのそれぞれ１つの寸法が、前記カプセル化パケットのそれぞれ１つに関連した最大送信ユニットの寸法を超える場合には、前記カプセル化パケットのそれぞれ１つを断片化するステップをさらに含む請求項１２に記載の方法。
【請求項２８】
前記到来するカプセル化パケットのそれぞれ１つを解読するステップと、
セレクタを到来するカプセル化パケットのそれぞれ１つから取り出すステップと、
取り出されたセレクタに基づいて、セキュリティポリシー指数を前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティポリシー用データベースから取得するステップと、
をさらに含む請求項１２に記載の方法。
【請求項２９】
前記セレクタが、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのポートと、宛先のポートと、インターフェースのポートとを含む請求項２８に記載の方法。
【請求項３０】
前記プロトコルがトランスポートプロトコルである請求項２９に記載の方法。
【請求項３１】
少なくとも１つのルーティングフラグに基づいて、前記カプセル化パケットのそれぞれ１つをシステムプロセッサに対して捕獲するステップをさらに含む請求項１１に記載の方法。
【請求項３２】
パケットを受け取るステップと、
パケットオブジェクト用ヘッダを有しないパケットの各々をパケットオブジェクト用ヘッダでカプセル化するステップと、
前記パケットオブジェクト用ヘッダの中に含まれた情報に基づいてパイプライン処理システムの中で並列に前記カプセル化パケットを処理するステップと
を含んでなり、
前記カプセル化パケットのそれぞれのパケットが、前記カプセル化パケットの別のパケットとは独立に処理されるものであるパケット処理方法。
【請求項３３】
互いに直列の構成で接続され、それぞれがパケットオブジェクト用ヘッダでカプセル化されたパケットの連続的なストリームを受け取るように構成された複数の変換モジュールを含み、前記複数の変換モジュールのそれぞれのモジュールが、前記パケットオブジェクト用ヘッダの中に含まれた情報に基づいて、前記カプセル化パケットを前記複数の変換モジュールのうちの他のモジュールとは独立して並列に処理するようにさらに構成されるものであるパケット処理システム。
【請求項３４】
前記複数の変換モジュールの１つが、
複数の並列プロセッサと、
パケットの連続的なストリームを受け取り、受け取られたパケットの順序を識別し、前記パケットを前記複数の並列プロセッサに送るように構成されたデマルチプレクサと、
処理されたパケットを前記複数の並列プロセッサから受け取り、前記処理されたパケットを前記デマルチプレクサが識別した順序で出力するように構成されたマルチプレクサと
を含む請求項３３に記載のパケット処理システム。
【請求項３５】
前記デマルチプレクサが、関連したパケットの順序を指定する関連したパケットに対してシーケンス識別子を割り当てるようにさらに構成され、
前記マルチプレクサが、前記パケットに割り当てられたシーケンス識別子に基づいて、前記処理されたパケットを順序付けるようにさらに構成されるものである、請求項３４に記載のパケット処理システム。
【請求項３６】
前記デマルチプレクサがパケットを分類して、関連したパケットを識別し、パケットの分類に基づいて流れの識別子を関連したパケットに割り当てるようにさらに構成されることを特徴とする請求項３４に記載のパケット処理システム。
【請求項３７】
前記デマルチプレクサが、前記パケットに関連したソースのアドレスと、宛先のアドレスと、プロトコルとを評価し、流れの識別子を前記パケットに関連したソースのアドレスと、宛先のアドレスと、プロトコルとに基づいて関連したパケットに割り当てるようにさらに構成されるものである請求項３６に記載のパケット処理システム。
【請求項３８】
前記デマルチプレクサが、前記パケットに関連した宛先のアドレスと、セキュリティパラメータ指数と、プロトコルとを評価し、流れの識別子を前記パケットに関連した宛先のアドレスと、セキュリティパラメータ指数と、プロトコルとに基づいて関連したパケットに割り当てるようにさらに構成されるものである請求項３６に記載のパケット処理システム。
【請求項３９】
パケットを受け取る手段と、
パケットオブジェクト用ヘッダを有しないパケットの各々をパケットオブジェクト用ヘッダでカプセル化する手段と、
互いに直列構成で接続された複数の変換モジュールを用いて、前記パケットオブジェクト用ヘッダの中に含まれた情報に基づいてカプセル化パケットを処理する手段と、
を含んでなり、
前記複数の変換モジュールの各々のモジュールが、前記複数の変換モジュールの別のモジュールとは独立に前記カプセル化パケットを並列に処理するものであるパケットを処理するシステム。
【請求項４０】
前記複数の変換モジュールの１つが複数の並列プロセッサを含んでおり、
前記パケットに対して連続的な順序を指定するシーケンス識別子を前記パケットの各々に割り当てる手段と、
前記パケットを前記複数の並列プロセッサに送る手段と、
前記複数の並列プロセッサを用いて前記パケットを並列に処理する手段と、
前記パケットに割り当てられたシーケンス識別子に基づいて、前記処理されたパケットを前記複数の変換モジュールの１つの出力で順序付けする手段と
をさらに含む請求項３９に記載のシステム。
【請求項４１】
前記パケットが到来するパケットのストリームに関連した第１の複数のパケットと送出するパケットのストリームに関連した第２の複数のパケットとを含む請求項３９に記載のシステム。
【請求項４２】
前記カプセル化パケットを処理する手段が、前記複数の変換モジュールの少なくとも１つを用いて、前記到来するパケットのストリームに関連した第１の複数のパケットと前記送出するパケットのストリームに関連した第２の複数のパケットとを処理する手段を含む請求項４１に記載のシステム。
【請求項４３】
パケットオブジェクトのそれぞれ１つを前記複数の変換モジュールが処理すべきか、変換することなく前記複数の変換モジュールを通過させるべきか、またはシステムプロセッサが捕獲すべきかを示すために、前記パケットオブジェクト用ヘッダのそれぞれ１つの中のルーティングフラグを更新する手段をさらに含む請求項３９に記載のシステム。
【請求項４４】
前記少なくとも１つのルーティングフラグに基づいて、前記カプセル化パケットのそれぞれ１つをシステムプロセッサに対して捕獲する手段をさらに含む請求項４３に記載のシステム。
【請求項４５】
カプセル化パケットの到来ストリームをカプセル化パケットの送出ストリームを用いてカプセル化パケットの連続したストリームに多重化する手段をさらに含む請求項３９に記載のシステム。
【請求項４６】
前記カプセル化パケットのそれぞれ１つが、データで占められた、指定された制限内のフィールドを有することを検証する手段をさらに含む請求項４５に記載のシステム。
【請求項４７】
前記送出するカプセル化パケットのそれぞれ１つからセレクタを取り出す手段と、
取り出されたセレクタに基づいて、セキュリティポリシー指数を前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティポリシー用データベースから取得する手段と
をさらに含む請求項４５に記載のシステム。
【請求項４８】
前記セレクタが、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのポートと、宛先のポートとを含む請求項４７に記載のシステム。
【請求項４９】
前記プロトコルがトランスポートプロトコルである請求項４８に記載のシステム。
【請求項５０】
前記取り出されたセレクタおよびセキュリティポリシー指数に基づいて、前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性を得るために、セキュリティ関連用データベースを検索する手段をさらに含む請求項４７に記載のシステム。
【請求項５１】
前記セキュリティ関連用データベースを検索する手段が、
ハッシュキー値を得るために、前記取り出されたセレクタおよび前記セキュリティポリシー指数をハッシュする手段と、
前記ハッシュキー値を用いて、前記セキュリティ関連用データベース内で線形検索を実行する手段と
を含む請求項５０に記載のシステム。
【請求項５２】
前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性に基づいて、暗号情報を前記送出するカプセル化パケットのそれぞれ１つの前記パケットオブジェクト用ヘッダの中に挿入する手段をさらに含む請求項５０のシステム。
【請求項５３】
前記到来するカプセル化パケットのそれぞれ１つからセレクタを取り出す手段をさらに含む請求項４１のシステム。
【請求項５４】
前記セレクタが、宛先のＩＰアドレスと、プロトコルと、セキュリティポリシー指数と、インターフェースのポートとを含む請求項５３に記載のシステム。
【請求項５５】
前記プロトコルがトランスポートプロトコルである請求項５４に記載のシステム。
【請求項５６】
前記取り出されたセレクタに基づいて、前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性を得るために、セキュリティ関連用データベースを検索する手段をさらに含む請求項５３に記載のシステム。
【請求項５７】
前記セキュリティ関連用データベースを検索する手段が、
ハッシュキー値を得るために、前記取り出されたセレクタをハッシュする手段と、
前記ハッシュキー値を用いて、前記セキュリティ関連用データベース内で線形検索を実行する手段と、
を含む請求項５６に記載のシステム。
【請求項５８】
前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性に基づいて、暗号情報を前記到来するカプセル化パケットのそれぞれ１つの前記パケットオブジェクト用ヘッダの中に挿入する手段をさらに含む請求項５６に記載のシステム。
【請求項５９】
前記到来するカプセル化パケットのそれぞれ１つを解読する手段と、
前記到来するカプセル化パケットのそれぞれ１つが、データで占められた、指定された制限内のフィールドを有することを検証する手段と
をさらに含む請求項４１に記載のシステム。
【請求項６０】
前記カプセル化パケットのそれぞれ１つの寸法が、前記カプセル化パケットのそれぞれ１つに関連した最大送信ユニットの寸法を超える場合は、前記カプセル化パケットのそれぞれ１つを断片化する手段をさらに含む請求項４１に記載のシステム。
【請求項６１】
前記到来するカプセル化パケットのそれぞれ１つを解読する手段と、
セレクタを到来するカプセル化パケットのそれぞれ１つから取り出す手段と、
取り出されたセレクタに基づいて、セキュリティポリシー指数を前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティポリシー用データベースから取得する手段と
をさらに含む請求項４１に記載のシステム。
【請求項６２】
前記セレクタが、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのポートと、宛先のポートと、インターフェースのポートとを含む請求項６１に記載のシステム。
【請求項６３】
前記プロトコルがトランスポートプロトコルである請求項６２に記載のシステム。
【請求項６４】
媒体の中に組み込まれた、コンピュータが読取り可能なプログラムコードを有するコンピュータが読取り可能なプログラム媒体を含む、パケットを処理するためのコンピュータプログラム製品であって、前記コンピュータが読取り可能なプログラムコードが、
パケットを受け取るように構成されたコンピュータが読取り可能なプログラムコードと、
パケットオブジェクト用ヘッダを有しないパケットの各々をパケットオブジェクト用ヘッダでカプセル化するように構成されたコンピュータが読取り可能なプログラムコードと、
互いに直列構成で接続された複数の変換モジュールを用いて、前記パケットオブジェクト用ヘッダの中に含まれた情報に基づいてカプセル化パケットを処理し、前記複数の変換モジュールの各々のモジュールが前記複数の変換モジュールのうちの他のモジュールとは独立して前記カプセル化パケットを並列に処理するように構成されたコンピュータが読取り可能なプログラムコードと
を含んでなるコンピュータプログラム製品。
【請求項６５】
パケットオブジェクトのそれぞれ１つを前記複数の変換モジュールが処理すべきか、変換することなく前記複数の変換モジュールを通過させるべきか、またはシステムプロセッサが捕獲すべきかを示すために、前記パケットオブジェクト用ヘッダのそれぞれ１つの中のルーティングフラグを更新するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項６４に記載のコンピュータプログラム製品。
【請求項６６】
前記少なくとも１つのルーティングフラグに基づいて、前記カプセル化パケットのそれぞれ１つをシステムプロセッサに対して捕獲するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項６５に記載のコンピュータプログラム製品。
【請求項６７】
カプセル化パケットの到来ストリームをカプセル化パケットの送出ストリームを用いてカプセル化パケットの連続したストリームに多重化するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項６４に記載のコンピュータプログラム製品。
【請求項６８】
前記カプセル化パケットのそれぞれ１つが、データで占められた、指定された制限内のフィールドを有することを検証するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項６７に記載のコンピュータプログラム製品。
【請求項６９】
前記送出するカプセル化パケットのそれぞれ１つからセレクタを取り出すように構成されたコンピュータが読取り可能なプログラムコードと、
取り出されたセレクタに基づいて、セキュリティポリシー指数を前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティポリシー用データベースから取得するように構成されたコンピュータが読取り可能なプログラムコードと
をさらに含む請求項６７に記載のコンピュータプログラム製品。
【請求項７０】
前記セレクタが、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのポートと、宛先のポートとを含む請求項６９に記載のコンピュータプログラム製品。
【請求項７１】
前記プロトコルがトランスポートプロトコルである請求項７０に記載のコンピュータプログラム製品。
【請求項７２】
前記取り出されたセレクタおよびセキュリティポリシー指数に基づいて、前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性を得るために、セキュリティ関連用データベースを検索するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項６９に記載のコンピュータプログラム製品。
【請求項７３】
前記セキュリティ関連用データベースを検索するように構成されたコンピュータが読取り可能なプログラムコードが、
ハッシュキー値を得るために、前記取り出されたセレクタおよび前記セキュリティポリシー指数をハッシュするように構成されたコンピュータが読取り可能なプログラムコードと、
前記ハッシュキー値を用いて、前記セキュリティ関連用データベース内で線形検索を実行するように構成されたコンピュータが読取り可能なプログラムコードと
を含む請求項７２に記載のコンピュータプログラム製品。
【請求項７４】
前記送出するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性に基づいて、暗号情報を前記送出するカプセル化パケットのそれぞれ１つの前記パケットオブジェクト用ヘッダの中に挿入するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項７２に記載のコンピュータプログラム製品。
【請求項７５】
前記到来するカプセル化パケットのそれぞれ１つからセレクタを取り出すように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項６７に記載のコンピュータプログラム製品。
【請求項７６】
前記セレクタが、宛先のＩＰアドレスと、プロトコルと、セキュリティポリシー指数と、インターフェースのポートとを含む請求項７５に記載のコンピュータプログラム製品。
【請求項７７】
前記プロトコルがトランスポートプロトコルである請求項７６に記載のコンピュータプログラム製品。
【請求項７８】
前記取り出されたセレクタに基づいて、前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性を得るために、セキュリティ関連用データベースを検索するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項７５に記載のコンピュータプログラム製品。
【請求項７９】
前記セキュリティ関連用データベースを検索するように構成されたコンピュータが読取り可能なプログラムコードが、
ハッシュキー値を得るために、前記取り出されたセレクタをハッシュするように構成されたコンピュータが読取り可能なプログラムコードと、
前記ハッシュキー値を用いて、前記セキュリティ関連用データベース内で線形検索を実行するように構成されたコンピュータが読取り可能なプログラムコードと
を含む請求項７８に記載のコンピュータプログラム製品。
【請求項８０】
前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティの関連性に基づいて、暗号情報を前記到来するカプセル化パケットのそれぞれ１つの前記パケットオブジェクト用ヘッダの中に挿入するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項７８に記載のコンピュータプログラム製品。
【請求項８１】
前記到来するカプセル化パケットのそれぞれ１つを解読するように構成されたコンピュータが読取り可能なプログラムコードと、
前記到来するカプセル化パケットのそれぞれ１つが、データで占められた、指定された制限内のフィールドを有することを検証するように構成されたコンピュータが読取り可能なプログラムコードと
をさらに含む請求項６７に記載のコンピュータプログラム製品。
【請求項８２】
前記カプセル化パケットのそれぞれ１つの寸法が、前記カプセル化パケットのそれぞれ１つに関連した最大送信ユニットの寸法を超える場合は、前記カプセル化パケットのそれぞれ１つを断片化するように構成されたコンピュータが読取り可能なプログラムコードをさらに含む請求項６７に記載のコンピュータプログラム製品。
【請求項８３】
前記到来するカプセル化パケットのそれぞれ１つを解読するように構成されたコンピュータが読取り可能なプログラムコードと、
セレクタを到来するカプセル化パケットのそれぞれ１つから取り出すように構成されたコンピュータが読取り可能なプログラムコードと、
取り出されたセレクタに基づいて、セキュリティポリシー指数を前記到来するカプセル化パケットのそれぞれ１つに対するセキュリティポリシー用データベースから取得するように構成されたコンピュータが読取り可能なプログラムコードと
をさらに含む請求項６７に記載のコンピュータプログラム製品。
【請求項８４】
前記セレクタが、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのポートと、宛先のポートと、インターフェースのポートとを含む請求項８３に記載のコンピュータプログラム製品。
【請求項８５】
前記プロトコルがトランスポートプロトコルである請求項８４に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理方法と、パケット処理システムと、コンピュータプログラム製品とに関し、より具体的には、パケットを並列に処理するための方法とシステムとコンピュータプログラム製品とに関する。
【背景技術】
【０００２】
ＩＰセキュリティプロトコル（以下、「ＩＰＳｅｃ」とよぶ）は、ＩＰ層においてパケットの安全な交換を支援するためにインターネット・エンジニアリング・タスク・フォース（Internet Engineering Task Force）（以下、「ＩＥＴＦ」とよぶ）が開発したプロトコルの集合である。ＩＰＳｅｃは、仮想プライベートネットワーク（virtual private network：以下、「ＶＰＮ」とよぶ）を実現するために広く用いられている。ＩＰＳｅｃは２つの暗号化モード、すなわちトランスポートモードとトンネルモードとに対応する。トランスポートモードでは、パケットのデータまたはペイロード部分のみが暗号化されて、パケットのヘッダがクリアテキストとして送られる。トンネルモードでは、パケットのヘッダとデータ／ペイロードとの両方が暗号化される。送信装置および受信装置は、相互間のトラフィックを安全にするためにプライベートキーを使用する。セキュリティ結合（security association：以下、「ＳＡ」とよぶ）と共にこれらのキーは、２つのＩＰＳｅｃの装置またはシステム間の一方向の論理接続体（logical connection）をなすものであり、インターネットキー交換（Internet Key Exchange、以下、「ＩＫＥ」とよぶ）機能によって処理される。到来するＳＡは、セキュリティパラメータ指数（Security Parameter Index：以下、「ＳＰＩ」とよぶ）と、宛先のＩＰアドレスと、セキュリティプロトコルとによって一意的に識別することができる。送出するＳＡは、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースポートと、宛先ポートとによって一意的に定義することができる。双方向通信を行うためには、一般に各方向に１つ、２つのＳＡが定義される。
【０００３】
ＩＰＳｅｃシステムは、２つのデータベース、すなわちセキュリティポリシー用データベース（Security Policy Database：以下、「ＳＰＤ」とよぶ）とセキュリティ結合用データベース（Security Association Database：以下、「ＳＡＤ」とよぶ）とを保持することによってＳＡを管理する。ＳＰＤは、どのようなセキュリティサービスをＩＰトラフィックに提供するかを定義する。一般に、入って来るトラフィックと出て行くトラフィックとに対して別個のポリシー入力の順序づけられたリストをＳＰＤは含む。これらのポリシーは、例えば、あるトラフィックはＩＰＳｅｃ処理を受けないようにすべきであることと、あるトラフィックを廃棄する必要があることと、あるトラフィックをＩＰＳｅｃ処理する必要があることとを指定する。
【０００４】
ＳＡＤは、各ＳＡに対するパラメータ情報を含む。そのようなパラメータは、セキュリティプロトコル用アルゴリズムと、認証用ヘッダ（authentication header：以下、「ＡＨ」とよぶ）またはカプセル化セキュリティペイロード（Encapsulating Security Payload：以下、「ＥＳＰ」とよぶ）のセキュリティプロトコルとに対するキーと、シーケンス番号と、プロトコルモードと、ＳＡの有効期間とを含む。出て行くパケットに対しては、ＩＰＳｅｃの処理が必要かどうか、および／または、パケットに対する他の処理または廃棄を行う必要があるかどうかを決定するために、ＳＰＤが照会される。ＩＰＳｅｃが必要な場合には、パケットのプロフィールに適合する現存するＳＡを求めるために、出て行くＳＡＤが検索される。ＳＡが発見された場合またはＳＡの処理の後に、ＳＡによって定義されたパケットにＩＰＳｅｃが適用され、パケットが発送される。到来するパケットに関しては、ＩＰＳｅｃまたは他の処理が必要か否かを決定するために、入って来るＳＡＤを直接照会することができる。ＩＰＳｅｃが必要な場合には、ＳＡＤを検索して、到来するパケットのセキュリティパラメータ指数に適合する現存のセキュリティパラメータ指数を求める。そして、ＩＰＳｅｃの変換を到来するパケットに適用することによってパケットを処理するために、ＳＡが使用される。到来するポリシーに対する最終的なチェックは、結果として生ずるパケットの妥当性を検証するためにインバウンド処理（inbound processing）の後に行われる。
【０００５】
ＩＰＳｅｃ処理とセキュアソケット層（Secure Socket Layer：以下、「ＳＳＬ」とよぶ）の処理との両方は、例えば、データの暗号化および復号化と、そのデータに対してセキュリティポリシーを適用することとを必要とする。そのようなセキュリティ処理は、通信の全般にわたって悪影響を与えることがある。例えば、セキュリティ処理によって、指定の時間帯にオンラインのバンキングシステムが受け取ることができる取引数が減少する可能性がある。同様に、ビデオおよび／またはオーディオの送信のような「リアルタイム」のインターネットのアプリケーションでは、スループットが関心事になる。数千のユーザに対して安全な公衆ＶＰＮを提供することは、高いＧｂ／ｓの全体的なスループットが要求される。ＩＳＣＳＩのようなデータの機密保持に対してＩＰＳｅｃを使用する新たに浮上するアプリケーションは、Ｇｂのイーサネット（登録商標）接続性に基づいて、１〜１０Ｇｂ／ｓの基本的な要求がある。このため、暗号化に関連した複雑なタスクを実行するために専用の処理機能を備えることは有益であり、このことにより、ＩＰＳｅｃの処理の性能が向上するので、スループットが向上する。
【０００６】
ＩＰＳｅｃの変換は、様々な方法でＩＰパケットに加えられる。１つの方式は、主にソフトウェアによる。例えば、ＩＰＳｅｃのプロトコルに関連したＩＰパケットの取扱いと暗号化と認証動作とを実現するために、ワークステーション上で実行される専用のソフトウェアのモジュールが開発される。しかしながら、この方式は、システムプロセッサが多くの機能または全ての機能を実行するために、その性能に制限を受ける。暗号化、復号化、および／または、認証動作は、一般にプロセッサを酷使する。主なソフトウェアベースのシステムに関する性能は、約２０〜３０メガビット／秒以下に制限される。
【０００７】
使用されている別の方式は、ＩＰＳｅｃプロトコルを実行するためにシステムプロセッサと通信するバスベースの暗号チップを加えることである。システムプロセッサ上で動作するソフトウェアは、ＩＰＳｅｃポリシーの照合と、ＳＡ管理と、フラグメンテーションと、フラグメンテーション解消と、ヘッダの構築とにさらに責任をもつ。暗号チップは、必要な場合には、暗号化、復号化、および／または、認証変換を実行する。暗号動作の終了後に、システムプロセッサはさらにパケットを処理して、まだ残っているＩＰＳｅｃ変換を終了させる。これらのシステムは、主にソフトウェアベースのシステムに対して性能を向上させることができるが、システムプロセッサにまだ残っている変換の負担および／またはシステムプロセッサと暗号チップとの間の通信バスのスループットの制限と、ホストプロセッサのメモリと暗号チップとの間に必要なパケットを複数コピーすることとにより、性能はさらに制限される。
【０００８】
使用されているさらに別の方式は、ＩＰＳｅｃプロトコルを実行するために複数のプロセッサを専用に用いて、各プロセッサが専用のバス上にそれ自身の１つ以上の暗号チップを有することである。様々なサブシステムへのパケットの配送と様々なサブシステムからのパケットの収集とを計画する全体的なシステムプロセッサによって制御される、より小さいＩＰＳｅｃのサブシステムのアレイであると、このアーキテクチャをみなすことができる。残念なことに、そのようなアーキテクチャは、多数の組み込まれたプロセッサを使用するため、貴重なボードの空間を使用し、システムの費用を増加させ、また電力消費量を増大させてしまう。また、システムプロセッサは、ＩＰＳｅｃのサブシステムにパケットを割り当てること、場合によっては、各サブシステムに関連した複数のデータベース（例えば、ＳＡ用データベース）を管理する上の付加的なオーバーヘッドの負担が課せられることがある。全体的な待ち時間は、ＩＰＳｅｃのサブシステムの最悪の性能の待ち時間と変わりない。
【発明の概要】
【０００９】
本発明のいくつかの実施形態によれば、パケットがパケットオブジェクト用ヘッダ（packet-object header）を持たない場合には、パケットオブジェクト用ヘッダでパケットをカプセル化することによってパケットを処理する。このカプセル化されたパケットは、直列の構成で互いに結合されている複数の変換モジュールを用いて、パケットオブジェクト用ヘッダの中に含まれた情報に基づいて処理される。複数の変換モジュールは、互いに独立して、カプセル化パケットを処理する。このため、本発明のいくつかの実施形態では、到来および送出する両方のパケットオブジェクトが共通のパイプラインの中で容易に処理できるようにされる。これにより、パケット上で実行される順次処理の中で並行処理が提供され、ＩＰＳｅｃまたはＳＳＬなどの標準的なセキュリティプロトコルが必要とするパケット変換が実行される。
【００１０】
本発明の別の特徴は、以下の特定の実施形態の詳細な説明を添付の図面と併せて読むことにより、一層容易に理解されるであろう。
【好適な実施例の詳細な説明】
【００１１】
本発明については各種の修正や別の形態が可能であるが、その特定の実施形態を図面の中の実施例により示し、本願で詳細に説明する。しかしながら、本発明を開示された特定の形態に限定する意図はなく、むしろ、本発明は、特許請求の範囲により定義する本発明の精神および範囲の中に入る全ての変形例と均等物と代替例とをカバーすることを理解されたい。同じ参照番号は、全ての図面の説明の中で同様の要素を意味する。
【００１２】
本発明の実施形態は、パケットの処理との関連でここに説明される。「パケット」という用語は、１つの装置から他の装置に全体として電子的に送信される情報のユニットを意味することは理解されよう。このため、「パケット」という用語は、本願で使用される場合には、送信のユニットに言及するためにも使用される「フレーム」または「メッセージ」というような技術用語を含む。
【００１３】
本発明は、システム、方法、および／または、コンピュータプログラム製品として具体化される。従って、本発明はハードウェアおよび／または（ファームウェアや常駐ソフトウェアやマイクロコードなどを含む）ソフトウェアの中で具体化される。さらに、本発明は、命令実行システムが使用するかまたはそれと関係して使用される媒体中で具体化されるコンピュータが使用可能または読取り可能なプログラムコードを有するコンピュータが使用可能または読取り可能な記憶媒体上において、コンピュータプログラム製品の形態を取ることができる。本明細書の記載に照らして、コンピュータが使用可能または読取り可能な媒体は、命令実行システム、機器、もしくは装置が使用するプログラム、またはそれらの関係において使用されるプログラムを含む、記憶する、通信する、伝送する、もしくは送信することができる任意の媒体でありうる。
【００１４】
コンピュータが使用可能または読取り可能な媒体は、例えば、電子的システム、磁気的システム、光学的システム、電磁気的システム、赤外線システム、もしくは半導体システム、機器、装置、または伝搬媒体でありうるが、これらに限定されるものではない。コンピュータが読取り可能な媒体のより具体的な例（リストは完全ではない）には、下記のものを含む、すなわち、１つ以上の電線を有する電気的接続と、携帯用のコンピュータディスケットと、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）と、消去可能プログラム可能読出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）と、光ファイバーと、携帯用コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）とを含む。コンピュータが使用可能または読取り可能な媒体は、プログラムがプリントされる紙または他の適当な媒体であってもよいことにさらに注意されたい。その理由は、例えば、紙または他の媒体を光学スキャニングすることによってプログラムを電子的に収集し、必要な場合には、編集、解釈、または適当な方法で処理してから、コンピュータのメモリ内にプログラムを記憶することができるからである。
【００１５】
本発明の例示的な実施形態による方法とシステムとコンピュータプログラム製品とのフローチャート、および／または、ブロック図を参照して、本発明をここで説明する。フローチャートおよび／またはブロック図の各ブロックと、フローチャートおよび／またはブロック図内のブロックの組合せとを、コンピュータプログラムの命令および／またはハードウェアの動作によって実行することができることは理解されるであろう。これらのコンピュータプログラムの命令が、汎用コンピュータ、特殊目的のコンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに与えられ、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が、フローチャートおよび／またはブロック図のブロック中で指定された機能を実行する手段を作り出すような装置を実現する。
【００１６】
コンピュータまたは他のプログラム可能なデータ処理装置を特定の方法により機能させることができるこれらのコンピュータプログラムの命令を、コンピュータが使用可能または読取り可能なメモリの中に記憶して、コンピュータが使用可能または読取り可能なメモリの中に記憶された命令が、フローチャートおよび／またはブロック図のブロックの中で指定された機能を実行するような命令を含む製品を作ることもできる。
【００１７】
コンピュータまたは他のプログラム可能なデータ処理装置にコンピュータプログラムの命令をロードし、コンピュータまたは他のプログラム可能な装置上で一連の動作ステップを実行させて、コンピュータの実行による処理を行い、コンピュータまたは他のプログラム可能な装置上で実行される命令が、フローチャートおよび／またはブロック図のブロック中で指定された機能を実行するステップを提供することもできる。
【００１８】
ここで図１を参照すると、システムプロセッサと通信して、例えば、ＩＰＳｅｃのプロトコルを実行する、本発明のいくつかの実施形態によるパケット用コプロセッサ１００が示されている。特に、パケット用コプロセッサ１００は、ＩＰＳｅｃのプロトコルに関連したパケットの変換および暗号動作を実行することに専念する。図１に示すように、パケット用コプロセッサ１００は、互いに直列の構成で接続される複数の変換モジュールを含む。
【００１９】
本発明のいくつかの実施形態では、その関連した前後関係の情報が付いたＩＰパケットのカプセル化を通して、並列処理が推進される。そのようなカプセル化は、パケットオブジェクト２００と呼ばれるカプセル化されたＩＰパケットに関して、図２に示されている。このパケットオブジェクト２００はパケットオブジェクト用ヘッダを含んでおり、このパケットオブジェクト用ヘッダは、パイプライン処理用ヘッダ２０５とユーザワード（user word）２１０と暗号用ヘッダ２１５とデータ２２０とを含む。パケットオブジェクト２００は、図１のパケット用コプロセッサ１００のパイプライン化変換モジュールを横断しているので、コアのＩＰパケット上で実行される順次処理の中で並行処理が行われて、ＩＰＳｅｃまたはＳＳＬなどの標準的なセキュリティプロトコルが必要とするパケット変換が実行される。
【００２０】
さらに詳細には、パイプライン処理用ヘッダ２０５は、アクションフィールドとルーティングフィールドとエラーフィールドと通報フィールドとを含んでおり、パケット用コプロセッサ１００のパイプライン内の各変換モジュールで利用可能な、パケットオブジェクトの第１の部分に存在する。これにより、正確な処理の決定を迅速に実行できるようにし、一方残りのパケットはそれぞれの変換モジュールで受け取られる。図３および図４は、送出および到来するパケットオブジェクトに関する具体例としてのパイプライン処理用ヘッダ２０５の形式をそれぞれ説明する。ユーザワード２１０フィールドは、パケット用コプロセッサ１００のパイプラインを通って情報をユーザに意識させずに伝送するために使用するオプションフィールドである。暗号用ヘッダ２１５フィールドは、パケット用コプロセッサ１００のパイプライン内にある暗号変換モジュールが使用する暗号情報を含み、パケットオブジェクトの中で運ばれたＩＰパケット上で暗号化、復号化、および／または、認証に関する変換を実行する。データ２２０はフォーマットされたＩＰパケットを含み、このフォーマットされたＩＰパケットは、認証用ヘッダ（ＡＨ）と、カプセル化セキュリティペイロード（ＥＳＰ）と、ＡＨ認証データと、ＥＳＰ認証データと、ＵＤＰまたはＴＣＰペイロードとを含むが、これらに限定されない。
【００２１】
ここで図５を参照すると、変換処理するためにパケットを受け取るステップ（ブロック５００）と、パケットオブジェクト用ヘッダを持たない各パケットをパケットオブジェクト用ヘッダでカプセル化するステップ（ブロック５０５）と、カプセル化パケットをパケットオブジェクト用ヘッダ内に含まれた情報に基づいて、直列にすなわちパイプライン構成で互いに接続された複数の変換モジュールを用いて独立に処理するステップ（ブロック５１０）といった、パケット用コプロセッサ１００のパイプラインの具体例としての動作が大まかに説明されている。そして、パケットオブジェクト用ヘッダは、カプセル化パケットをさらに処理するために取り除かれる（ブロック５１５）。
【００２２】
図１を参照すると、本発明のいくつかの実施形態による、パケット用コプロセッサ１００の変換モジュールおよびその具体例としての動作が、ここで詳細に説明される。このパケット用コプロセッサ１００は、送出および到来するパケットのストリームの両方を処理するように構成されている。送出入力モジュール１０２は、送出するパケットのストリームを受け取るように構成され、到来入力モジュール１０４は、到来するパケットのストリームを受け取るように構成される。送出入力モジュール１０２と到来入力モジュール１０４との両方は、例えば、フレーマとパケット用コプロセッサ１００との間の低いレベルのインターフェースプロトコルの適合動作を実行するように構成される。
【００２３】
パケットオブジェクト用ヘッダをパケットが持っていない場合には、パケットオブジェクトを作るためにパケットオブジェクト用ヘッダをパケットに加えるよう、送出および到来入力モジュール１０２および１０４がさらに構成され（図２と図３と図４とを参照）、パケット用コプロセッサ１００を通ってどのようにこのパケットを送るべきかを決定して、パイプライン処理用ヘッダ２０５の中でフラグおよびパケットオブジェクトの長さ（ＰＯ長さ）を更新する。パケットオブジェクトは、次のように３つの異なる方法で送られる、すなわち、（１）自身に適用された全ての適当なＩＰＳｅｃ変換を有するＩＰパケットとして、パケットオブジェクトはパケット用コプロセッサ１００を通って送られ、（２）パケットオブジェクトはシステム制御プロセッサに捕獲（capture）され、（３）どのようなＩＰ処理またはＩＰＳｅｃ変換をも加えられることなく非ＩＰパケットとして、パケットオブジェクトはパケット用コプロセッサ１００を通過する。フラグはパイプライン処理用ヘッダ２０５の中で設定されて、どのようにパケット用コプロセッサ１００を通ってパケットを送るかを示す。送出および到来入力モジュール１０２および１０４は、例えば、パケットがエラーを含んでいるか、適切にフォーマットされていないか、または対応してないプロトコルに関係している場合には、パケットオブジェクトを廃棄または拒絶することもできることに注意されたい。
【００２４】
挿入キューモジュール１０６は、通信バスを介してシステムプロセッサに接続され、ＦＩＦＯメモリとマルチプレクシング回路とにより構成されて、処理用パイプラインに対して連続的なパケットストリーム入力の場合であったとしても、システムプロセッサが到来および／または送出するパケットを処理用パイプラインの中へと挿入できるようにする。
【００２５】
パケット検査／送出ポリシーモジュール１０８は、マルチプレクシング回路を用いて、送出および到来するパケットのストリームをパケット用コプロセッサ１００の中でパイプライン処理を行うために１つのストリームに統合するように構成される。さらに、このパケット検査／送出ポリシーモジュール１０８は、自身の完全性を確実にするためにパケットオブジェクトを検査するようにさらに構成される。例えば、パケットオブジェクトが制御プロセッサによって捕獲(capture)されるべきか、非ＩＰパケットとしてパケット用コプロセッサ１００を通過すべきか、または廃棄されるべきかを決定するために、パイプライン処理用ヘッダ２０５内のルーティングフラグがチェックされる。パケットオブジェクトが捕獲される、通過する、または廃棄されることをルーティングフラグが示す場合には、このパケットオブジェクトはパケット用コプロセッサ１００内のその後のいかなる変換モジュールによっても処理されることはない。次のような追加のチェックがパケットオブジェクトに対して実行されるが、これに限定されることはない。すなわち、パケットオブジェクトの長さが最短の長さ以上であるかを検証する（例えば、パケットオブジェクト用ヘッダの最小寸法は２０バイトであり、ＩＰパケットを運ぶパケットオブジェクトの最小寸法は４０バイトである）、データフィールド２２０が最短の長さ（例えば、ＩＰパケットに対しては２０バイト）以上であるかを検証する、ＩＰヘッダのチェックサムが正しいかを検証する、ＩＰのバージョン番号が正しいかを検証する、ＩＰヘッダ長さフィールドが２０バイト以上であるかを検証する（５個の３２ビットワード）、ＩＰ長さフィールド（バイト）が４＊ＩＰヘッダ長さフィールドであるかを検証する、および／または、ＩＰ長さフィールドが正しいかを検証する、といったチェックである。
【００２６】
前述のチェックのいずれかがエラーを発見した場合には、エラーフラグがパイプライン処理用ヘッダ２０５の中で設定され、パケットオブジェクトはパケット用コプロセッサ内のその後のいずれの変換モジュールによっても動作されない。その代わりに、このパケットオブジェクトは、システムプロセッサがエラー処理をするために送出出力モジュール１３８または到来出力モジュール１４０のいずれかの捕獲バッファ(capture buffer)の中に置かれる。
【００２７】
パケット検査／送出ポリシーモジュール１０８は、送出するパケットオブジェクトが自身に関連したポリシーを有しているかどうかを決定するようにさらに構成される。具体的には、このパケット検査／送出ポリシーモジュール１０８は、送出するパケットオブジェクトの最も外側のＩＰヘッダからセレクタを取り出し、これらのセレクタを使用して送出ＳＰＤの内容アドレス可能メモリ（ＣＡＭ）１１０内でセキュリティポリシーの照合（security policy lookup）を実行する。本発明のいくつかの実施形態によれば、セレクタは、ソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのＴＣＰ／ＵＤＰポートと、宛先のＴＣＰ／ＵＤＰポートと、インターフェースポートとを含む（すなわち、パイプライン処理用ヘッダ内のポートセレクタフィールド、送出入力モジュール１０２、または到来入力モジュール１０４のいずれかにより挿入される）。本発明のいくつかの実施形態では、ＳＰＤおよびＳＡの照合に使用されるプロトコルは、トランスポートプロトコルでなければならない。このため、プロトコルがＩＰ内ＩＰ（カプセル化）、ＡＨ（ＩＰバージョン６用の認証用ヘッダ）、ＩＰモビリティ、またはＩＰＣｏｍｐ（ＩＰペイロード用圧縮プロトコル）であると決定される場合には、パケット検査／送出ポリシーモジュール１０８は、次の内部ＩＰヘッダを構文解析して、トランスポートプロトコルがＩＰＳｅｃの仕様に基づいて得られるまで、再帰的にそのヘッダを分析する。いくつかの実施形態では、ＩＰヘッダは４つのレベルにまで構文解析される。４つのレベルの中にトランスポートプロトコルが発見されない場合には、トランスポートプロトコルが存在しないエラーフラグと捕獲ルーティングフラグ（capture routing flag）とがパイプライン処理用ヘッダ２０５の中に設定され、パケットオブジェクトをエラー処理用のシステムプロセッサに向けて送る。
【００２８】
ポリシーが送出するＳＰＤ ＣＡＭ １１０の中に発見される場合には、ポリシー指数（すなわち、ＳＰＤ指数）および捕獲と、廃棄と、通過と、ＩＫＥと、制御ポートフラグとがパイプライン処理用ヘッダ２０５の中にコピーされる。ポリシーが発見されない場合には、捕獲フラグに加えてセキュリティポリシー非適合フラグ（no security policy match flag）がパイプライン処理用ヘッダ２０５の中に設定され、制御プロセッサに現在のパケットオブジェクトは非準拠であると通知する。ＳＰＤ ＣＡＭ １１０は、システムオペレータまたはシステムプロセッサと通信できる自動ポリシーマネージャによって定義されたセキュリティポリシーに基づいて、システムプロセッサによって制御される。
【００２９】
到来するパケットオブジェクトに関しては、パケット検査／送出ポリシーモジュール１０８は、ＩＰヘッダのプロトコルフィールドを検査することによって、パケットオブジェクトがＩＰＳｅｃ変換を受けるかどうかを決定するように構成される。ＩＰヘッダのプロトコルフィールドがＥＳＰまたはＡＨである場合には、宛先のＩＰアドレスが、例えば、２進のＣＡＭに記憶された有効な宛先のＩＰアドレスと比較される。到来するパケットオブジェクトがＥＳＰもしくはＡＨでない場合、または宛先のＩＰアドレスが無効な場合には、ルーティングフラグがパイプライン処理用ヘッダ２０５の中で更新されて、このパケットオブジェクトを到来ポリシーモジュール１３２に通過処理する。ここで、このパケットオブジェクトは、到来出力モジュール１４０に向かって通過するかまたは廃棄される。
【００３０】
パケットオブジェクトからセレクタを取り出して、ＳＡＤ指数を得るために、ＳＰＤ指数と一緒にこれらのセレクタをパイプライン処理用ヘッダ２０５からＳＡ検索モジュール１１４に送るように、セレクタ抽出モジュール１１２が構成される（図３および図４を参照のこと）。ＳＡ検索モジュール１１４がＳＡルックアップ（ＳＡＬ）メモリ１１６からＳＡＤ指数を得ようとする間に、セレクタ抽出モジュール１１２はパケットオブジェクトの読み込みを完了する。ＳＡＤ指数が取得されると、セレクタ抽出モジュール１１２は、パケットオブジェクトを到来ＳＡＤルックアップモジュール１１８に解放し、同時に別のパケットオブジェクトをその入力ポートで受け取る。
【００３１】
より詳細には、送出するパケットオブジェクトに関しては、ポリシー指数を送出するＳＰＤ ＣＡＭ １１０から得るために、パケット検査／送出ポリシーモジュール１０８が取り出した同じセレクタを引き出すように、セレクタ抽出モジュール１１２が構成される。これらのセレクタは、ポリシー指数と共に、ＳＡＬメモリ１１６からＳＡＤを得るために、ＳＡ検索モジュール１１４に送られる。到来するパケットオブジェクトに関しては、ＩＰヘッダプロトコルフィールドがＥＳＰもしくはＡＨでない場合（すなわち、パケットオブジェクトはＩＰＳｅｃ変換を受けない場合）、または、捕獲、通過、もしくは廃棄フラグがパイプライン処理用ヘッダ２０５の中に設定される場合には、このパケットオブジェクトはセレクタ抽出モジュール１１２によって処理されない。そうでない場合には、セレクタは到来するパケットオブジェクトから引き出されて、ＳＡＬメモリ１１６からＳＡＤ指数を得るために、これらのセレクタはＳＡ検索モジュール１１４へと送られる。本発明のいくつかの実施形態によれば、到来するパケットオブジェクト用のセレクタは、宛先のＩＰアドレスと、プロトコルと、（ＩＰパケット、ＥＳＰ、またはＡＨ用ヘッダからの）ＳＰＩと、インターフェースポート（すなわち、到来入力モジュール１０４によって挿入される、パイプライン処理用ヘッダ内のポートセレクタフィールド）とを含む。
【００３２】
ＳＡ検索モジュール１１４は、セレクタおよびポリシー指数をセレクタ抽出モジュール１１２から受け取り、ＳＡＬメモリ１１６内のＳＡＤ指数を照合する。ＳＡ検索モジュール１１４は、ＳＡＤ指数または無効なセキュリティポリシーもしくは発見されないセキュリティ結合の表示のいずれかを戻す。ＳＡＤ指数が戻されない場合には、セレクタ抽出モジュール１１２は、パイプライン処理用ヘッダ２０５の中にＳＡ照合エラーフラグを設定する。
【００３３】
本発明のいくつかの実施形態では、ＳＡＬメモリ１１６内のＳＡマスクテーブルからＳＡマスクレコードを検索するために、ポリシー指数を使用できる。セレクタがＳＡＤ指数を得るためにハッシュ値を生成するように使用される前に、送出パケットオブジェクトに関するいくつかのセレクタとこのマスクをＡＮＤ演算することができる。ＳＡ検索モジュール１１４は、ＳＡＬメモリ１１６からＳＡＤ指数を得るために、ハッシュベースの検索法を実行するように構成される。特定の実施形態では、ＳＡ検索モジュールがハッシュ値を生成して、ＳＡＬメモリ内のテーブル（データベース）の中の開始位置を引き出す。そして、線形検索を使用して、パケットオブジェクトに適合するＳＡレコードを発見する。ハッシュ値は下記のように計算される。
到来ハッシュ値 = (SPI * 383 + Dest * 257 + Prot * 7919 + Intf * 6143) %M
送出ハッシュ値 = (Src * 383 + Dest * 257 + Prot * 7919 + Src#port * 2017 + Dest#port * 1031+Intf * 6143) %M
値M = 223 -15 = 8388593である。ハッシュ値は、パケット用コプロセッサ１００が対応するＳＡの最大値まで減少される。ＳＡＬメモリ１１６の典型的な線形検索演算は、「Hash-Ordered Databases and Methods, Systems and Computer Program Products for Use of a Hash-Ordered Database」という名称の米国特許出願第０９／８４５，４３２号の中で説明されている。この開示内容を引用することにより本明細書の一部をなすものとする。
【００３４】
ＳＡルックアップ用データベース内の各項目は、ポリシー数と、マスクされたトランスポートプロトコルと、マスクされたソースのＩＰアドレスと、マスクされた宛先のＩＰアドレスと、マスクされたソースのＴＣＰ／ＵＤＰポートと、マスクされた宛先のＴＣＰ／ＵＤＰポートとを含む。ハッシュキー／ＳＡ指数フィールドは、各ＳＡルックアップ項目に関係している。このデータは、整合されハッシュされたセレクタが２で割られたアドレスに等しい位置に物理的に記憶される。ハッシュキー／ＳＡ指数フィールドは、許可フラグメントフラグ（allow fragment flag）と、ハッシュキー値と、ＳＡＤデータベースに対するＳＡ指数とを含む。このハッシュキー値は、セレクタから生成されたハッシュ値に相当する。ＳＡ指数は、キーと外部ＩＰヘッダと生存期間カウントとこのＳＡに関連したＳＡＤデータベース内の他の情報との場所に対するポインタである。
【００３５】
到来ＳＡＤルックアップモジュール１１８は、ＳＡ検索モジュール１１４によって得られたＳＡＤ指数を使用して、ＳＡＤ指数に相当するＳＡＤメモリ内のＳＡＤレコードを取得するように構成される。ＳＡＤレコードからの暗号情報は、パケットオブジェクトの暗号用ヘッダ２１５の中に記憶される。この暗号情報は、暗号処理の間に使用される順序付け情報を含む。いくつかの実施形態では、到来ＳＡＤルックアップモジュール１１８は、パイプライン処理用ヘッダ２０５の中に設定されたフラグに基づいて、パケットのフラグメントが受け取られたかどうかと、フラグメンテーション解消が適用されたかどうかとを決定することができる。ＩＰＳｅｃプロトコルフィールドまたはパイプライン処理用ヘッダ２０５内にあるＩＰＳｅｃモードフラグがＥＳＰもしくはＡＨでない場合（すなわち、パケットオブジェクトはＩＰＳｅｃ変換を受けない場合）、または、捕獲、通過、もしくは廃棄フラグがパイプライン処理用ヘッダ２０５の中に設定される場合には、このパケットオブジェクトは、到来ＳＡＤルックアップモジュール１１８によって処理されない。
【００３６】
送出プレ暗号化モジュール（outbound pre-crypto module）１２２は、有効期間（ＴＴＬ）ディクリメント動作（time-to-live decrement operation）と、プレ暗号化フラグメンテーションと、ＩＰＳｅｃ情報の暗号用ヘッダ２１５への挿入動作とを処理するように構成される。より詳細には、送出プレ暗号化モジュール１２２は、パイプライン処理用ヘッダ２０５内の転送されたフラグをチェックして、パケットオブジェクトが現在のゲートウェイを端緒とするのか、または他のゲートウェイから転送されたのかを判断する。パケットオブジェクトが転送されたものである場合には、ＩＰヘッダ内のＴＴＬ値はディクリメントされる。ＴＴＬ値が０または−１の場合には、捕獲フラグおよびＴＴＬゼロエラーフラグがパイプライン処理用ヘッダ２０５の中に設定されて、そのパケットオブジェクトを捕獲してさらに処理するように、システムプロセッサが指示される。
【００３７】
送出プレ暗号化モジュール１２２は、送出するパケットオブジェクトのプレ暗号化フラグメンテーションを処理するようにさらに構成される。パケットオブジェクトをどのように断片化するかを決定するために、最大送信ユニット（ＭＴＵ）の寸法と、モード（トランスポート／トンネル）と、プロトコルの種類（ＥＳＰ／ＡＨ）とを、ＳＡＤメモリ１２０内のＳＡＤデータベースから送出プレ暗号化モジュール１２２が取得する。ＳＡＤ指数に固定値を加えることによって、適当なオフセットを引き出すことができる。パイプライン処理用ヘッダ２０５内のＭＴＵフィールドは、ＳＡＤデータベースから読取ったＭＴＵの寸法に基づいて更新される。ＳＡＤデータベースから得られた前述の情報に基づいて、別のＩＰＳｅｃヘッダがパケットオブジェクトに加えられる前に、送出プレ暗号化モジュール１２２はこのパケットオブジェクトをチャンクに断片化する。トンネルモードのＩＰＳｅｃパケットに関連したパケットオブジェクトは、暗号化の前に断片化（fragmentation）される。ＳＡが、トランスポートモード、クリアテキスト、またはＴＣＰ／ＵＤＰポート番号を必要とするポリシーに関連している場合には、パイプライン処理用ヘッダ２０５内の許可フラグメントフラグは、プレ暗号化前の断片化を避けるために取り除かれる。ＳＡがＳＡバンドルに関連している場合には、許可フラグメントフラグはバンドル内の第１のＳＡのみに適用される。本発明のいくつかの実施形態によれば、断片化によって、パイプライン処理用ヘッダ２０５内のＭＴＵフィールドによって設定された事前フラグメント寸法を有する複数の新しいパケットオブジェクトが結果として生ずる。
【００３８】
送出プレ暗号化モジュール１２２は、ＩＰＳｅｃのヘッダ情報を送出するパケットオブジェクトの中に挿入するようにさらに構成される。特に、ＳＡＤメモリ１２０内のＳＡＤデータベースは、パケットオブジェクトをどのように処理するかに関する実際の情報を含んでいる。送出プレ暗号化モジュール１２２は、ＳＡＤデータベースから（暗号化および認証用の）キーと、シーケンス番号と、（トンネルモード用の）外部ＩＰヘッダとを得ることができる。本発明のいくつかの実施形態によれば、ＥＳＰトンネルモードやＡＨトンネルモードやクリアテキストやＥＳＰトランスポートモードやＡＨトランスポートモードやＩＰＣＯＭＰなどの様々な方法により、この情報をフォーマットすることができる。暗号情報は、パケットオブジェクトの暗号用ヘッダ２１５の中に記憶される。トンネルモード用の外部ＩＰヘッダは、本来のＩＰヘッダの前に挿入される。ＳＡＤデータベースから得られた残りの情報は、パケットオブジェクト内の様々なフィールドの中に記憶される。シーケンス番号と、初期ベクトルと、バイトの有効期間と、パケットのカウントと、ユーザのデータカウントとは、ＳＡＤデータベースの中で更新される。パケットオブジェクトがバイトまたは時間の有効期間を超えたかどうかの判断も行われる。パディングがＥＳＰパケットの最後に加えられる。ＥＳＰの暗号化を用いる場合には、初期ベクトルが多項式x64 + x4 + x3 + x + 1を用いる６４ビットの線形フィードバック式シフトレジスタを用いて計算される。パケットオブジェクトが処理されると、パケットオブジェクト用ヘッダの中に初期ベクトルが含まれる。
【００３９】
図６は、本発明による暗号モジュール１２４の幾つかの実施形態を説明する。暗号デマルチプレクサ６００として示されたパケット入力用デマルチプレクサは、暗号パケットの入力ストリームを受け取る。暗号パケットの入力ストリームは、送出および／または到来するパケットオブジェクトでありうる。デマルチプレクサ６００は、パケットオブジェクトの連続的なストリームを受け取り、複数の暗号処理ユニット（暗号ユニット）６０５、６０５’、６０５”、６０５’”、６０５””に多重送信する。暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””は、本願で説明された動作を実行できるどのような形式の暗号プロセッサであっても良く、全て同一であっても異なっていても良い。例えば、図６に示した暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””は、異なる処理能力を有する、処理速度が異なっている、および／または、同じ種類の複数のプロセッサでありうる。本発明の特定の実施形態では、暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””は、３ＤＥＳ、ＡＥＳ、ＳＨＡ−１、および／または、ＭＤ５の暗号処理に対応する。さらに、図６は本発明の暗号処理の実施形態を示すが、そのような並列システムの中で別のパケット変換動作を行うこともできる。このため、図６に示した暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””は、圧縮プロセッサなどの他のパケット変換処理によって置き換えることができる。これは、本発明の特定の実施形態の中で使用できる。
【００４０】
暗号入力デマルチプレクサ６００は、仕事量の釣り合いを取るために暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””の特定の１つの処理特性に基づいて、または暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””へのパケット配送に関する別の基準に基づいて、ラウンドロビン方式（round-robin basis）により、暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””にパケットオブジェクトを送る。処理の後に、暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””は、暗号出力用マルチプレクサ６１０として示したパケット出力用マルチプレクサに、処理したパケットオブジェクトを送る。この暗号出力用マルチプレクサ６１０は、出力されたパケットオブジェクトを連続的なストリームで送るように、暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””からのパケットオブジェクトを順序付ける。
【００４１】
また、暗号入力用デマルチプレクサ６００は、シーケンス識別子を割り当て、現在のシーケンス識別子のＩＤ番号を次に受け取るパケットオブジェクトに割り当てるために保持する。本発明の特定の実施形態では、シーケンス識別子が関連するパケットに割り当てられて、これらの関連するパケットの順序を定義する。図１に示したいくつかの実施形態では、関連するパケットは「フロー」として識別されて、入力フローの識別子およびシーケンス番号が各受け取られたパケットに対応付けられて、所定のフローに対する現在のシーケンス番号が入力フローおよびシーケンス番号テーブル６２０中に保持される。前述したように、入力したパケットオブジェクトは、到来または送出するパケットのいずれかとして特徴付けられる。同様に、到来するパケットのフローは到来フローと呼ばれ、送出するパケットのフローは送信フローと呼ばれる。
【００４２】
暗号出力用マルチプレクサ６１０は、処理されたパケットオブジェクトのシーケンス出力信号に基づいて、暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””から処理されたパケットを受け取る。パイプライン処理用ヘッダ２０５の中に記憶されたフロー識別子を使用する本発明の実施形態に関しては、いくつかの異なるフローからのパケット同士の間のように、パケットが暗号ユニット６０５、６０５’、６０５”、６０５’”、６０５””の中に確実に「貼付け」られないようにするために、ラウンドロビン配送方式に基づいて、機会均等方式（fairness scheme）に基づいて、または暗号履歴に基づいて、暗号出力用マルチプレクサ６１０は、出力するためのパケットオブジェクトを受け取ることができる。シーケンス識別子の順序でパケットオブジェクトを出力することを承認することによって、暗号出力用マルチプレクサ６１０はシーケンスオーダでパケットを出力して、パケットのシーケンスを維持しながらパケットの並列処理を実現するため、それらは順序付けを必要としない。
【００４３】
暗号出力用マルチプレクサ６１０は、次のシーケンス識別子をシーケンスの中に保持して、記憶された次のシーケンス識別子を処理されたパケットオブジェクトのシーケンス識別子と比較して、この処理されたパケットオブジェクトがパケットオブジェクトのシーケンスの中の次のパケットであるかどうかを決定する。シーケンス識別子が関連するパケットオブジェクトに割り当てられて、関連するパケットオブジェクトの順序を定義するような本発明の特定の実施形態では、異なる関連したパケットオブジェクトのそれぞれに対してシーケンス識別子が定義される。図６に示した幾つかの実施形態では、関連するパケットオブジェクトがフローとして識別され、フローの識別子およびシーケンス番号がパケットオブジェクト用ヘッダの中の各受け取られたパケットオブジェクトと対応付けられる。そのような実施形態では、暗号出力用マルチプレクサ６１０は、出力フローおよびシーケンス番号テーブル６３０の中に、所定のフローに対する次のシーケンス番号を保持する。
【００４４】
暗号モジュール１２４の具体例としての動作は、「Methods, Systems And Computer Program Products For Packet Ordering For Parallel Cryptographic Processing」という題名の米国特許出願第０９／９９９，６４７号の中で説明されている。この特許出願の開示内容を引用することにより本明細書の一部をなすものとする。
【００４５】
到来ポスト暗号化モジュール（inbound post-crypto module）１２６は、到来するパケットオブジェクトを検査してそれらの完全性を裏付けるように構成される。例えば、パケットオブジェクトが制御プロセッサによって捕獲されるべきか、非ＩＰパケットとしてパケット用コプロセッサ１００を通過すべきか、または廃棄されるべきかを決定するために、パイプライン処理用ヘッダ２０５内のルーティングフラグがチェックされる。パケットオブジェクトが捕獲される、通過する、または廃棄されることをルーティングフラグが示す場合には、このパケットオブジェクトは、パケット用コプロセッサ１００内のその後のいかなる変換モジュールによっても処理されることはない。次のような追加のチェックがパケットオブジェクトに対して実行されるが、これに限定されることはない、すなわち、パケットオブジェクトの長さが最短の長さ以上であるかを検証すること（例えば、パケットオブジェクト用ヘッダの最小寸法は２０バイトであり、ＩＰパケットの最小寸法は４０バイトである）、データフィールド２２０が最短の長さ（例えば、ＩＰパケットに対しては２０バイト）以上であるかを検証すること、ＩＰヘッダのチェックサムが正しいかを検証すること、ＩＰのバージョン番号が正しいかを検証すること、ＩＰヘッダ長さフィールドが２０バイトであるかを検証すること（５個の３２ビットワード）、ＩＰ長さフィールド（バイト）が４＊ＩＰヘッダ長さフィールドであるかを検証すること、および／または、ＩＰ長さフィールドが正しいかを検証することといったチェックである。
【００４６】
前述のチェックのいずれかがエラーであることを発見した場合には、パイプライン処理用ヘッダ２０５の中にエラーフラグが設定され、パケットオブジェクトはパケット用コプロセッサ内のその後のいずれの変換モジュールによっても動作されない。その代わりに、このパケットオブジェクトは、システムプロセッサがエラー処理をするために捕獲バッファの中に置かれる。
【００４７】
さらに、到来ポスト暗号化モジュール１２６は、ＳＡセレクタフィールドをＳＡＤメモリ１２０内のＳＡＤデータベースの中に記憶されたフィールドを用いて有効にし、バイトの有効期間やパケットのカウントやユーザのデータカウントなどの他のＳＡ固有の状態情報を更新することができる。
【００４８】
バンドル／フラグメンテーションモジュール１２８は、パイプライン処理用ヘッダ２０５内のより多くのバンドルフラグを読取ることによって、送出するパケットオブジェクトの中のＳＡバンドルをチェックするように構成される。フラグが設定されると、パケットオブジェクトは、さらに処理を行うために送出プレ暗号化モジュール１２２に向けて送られる。本発明の特定の実施形態によれば、バンドル用のＳＡエントリーは、ＳＡＤメモリ１２０内のＳＡＤデータベースの中で隣接している。これにより、パイプライン処理用ヘッダ２０５内のＳＡＤ指数フィールドをインクリメントすることによって、バンドル内の次のＳＡを評価することができる。到来するパケットオブジェクトに関しては、エラーフラグが設定されていない場合には、ＩＰＳｅｃ用ヘッダと加えられた任意のＥＳＰパディングとが、パケットオブジェクトから取り除かれる。階層化ＩＰヘッダが分析されて、トランスポートプロトコル用ヘッダ、または現在のシステム用ではないＩＰ宛先アドレスが現れるまで、階層化ＩＰヘッダが除かれる。そして、到来するパケットオブジェクトは、次のＳＡを処理するためにセレクタ抽出モジュール１１２に向けて送られる。出て行くＩＰＳｅｃのパケットオブジェクトがＩＰＳｅｃ間の許可された経路のＭＴＵよりも大きく、断片化が最も外側のＩＰヘッダ内のフラグによって示されるように許可される場合には、これらの出て行くＩＰＳｅｃのパケットオブジェクトを断片化するように、バンドル／フラグメンテーションモジュール１２８がさらに構成される。このバンドル／フラグメンテーションモジュールは、ＩＰヘッダ内のＴＴＬ値をディクリメントするようにさらに構成される。ＴＴＬ値が０または−１の場合には、捕獲フラグおよびＴＴＬゼロエラーフラグがパイプライン処理用ヘッダ２０５の中に設定されて、そのパケットオブジェクトを捕獲してさらに処理するように、システムプロセッサが指示される。
【００４９】
到来するパケットオブジェクトは、バンドル／フラグメンテーションモジュール１２８から到来ポリシーモジュール１３２に向けて送られる。この到来ポリシーモジュール１３２は、到来するパケットオブジェクトがそれと関連するポリシーを有しているかどうかを決定するように構成される。具体的には、パケット到来ポリシーモジュール１３２は、到来するパケットオブジェクトの最も外側のＩＰヘッダからセレクタを取り出し、これらのセレクタを使用して、到来ＳＰＤ内容アドレス可能メモリ（ＣＡＭ）１３４内のセキュリティポリシーの照合を行う。本発明のいくつかの実施形態によれば、セレクタにはソースのＩＰアドレスと、宛先のＩＰアドレスと、プロトコルと、ソースのＴＣＰ／ＵＤＰポートと、宛先のＴＣＰ／ＵＤＰポートと、インターフェースポートとを含む（すなわち、パイプライン処理用ヘッダ内のポートセレクタフィールド、送出入力モジュール１０２または到来入力モジュール１０４のいずれかによって挿入される）。本発明のいくつかの実施形態では、ＳＰＤおよびＳＡの照合に使用されるプロトコルは、トランスポートプロトコルでなければならない。このため、プロトコルが、ＩＰ内のＩＰ（カプセル化）、ＡＨ（ＩＰバージョン６用の認証用ヘッダ）、ＩＰモビリティ、またはＩＰＣｏｍｐ（ＩＰペイロード用圧縮プロトコル）であると決定される場合には、到来ポリシーモジュール１３２は、次の内部ＩＰヘッダを構文解析して、トランスポートプロトコルがＩＰＳｅｃの仕様に基づいて得られるまで、再帰的にそのヘッダを分析する。いくつかの実施形態では、ＩＰヘッダは４つのレベルにまで構文解析される。トランスポートプロトコルが４つのレベルの中に発見されない場合には、トランスポートプロトコルが存在しないエラーフラグおよび捕獲ルーティングフラグがパイプライン処理用ヘッダ２０５の中に設定され、パケットオブジェクトをエラー処理用のシステムプロセッサに向けて送る。
【００５０】
ポリシーが到来するＳＰＤ ＣＡＭ １３４の中に発見される場合には、ポリシー指数（すなわち、ＳＰＤ指数）と、捕獲、廃棄、通過、ＩＫＥ、および制御ポートフラグとが、パイプライン処理用ヘッダ２０５の中にコピーされる。ポリシーが発見されない場合には、捕獲フラグに加えてセキュリティポリシー非適合フラグがパイプライン処理用ヘッダ２０５の中に設定され、現在のパケットオブジェクトが非準拠であることを制御プロセッサに通知する。システムオペレータまたはシステムプロセッサと通信できる自動ポリシーマネージャによって定義されたセキュリティポリシーに基づいて、ＳＰＤ ＣＡＭ １３４はシステムプロセッサによって制御される。
【００５１】
バンドル／フラグメンテーションモジュール１２８からの送出するパケットオブジェクトおよび到来ポリシーモジュール１３２からの到来するパケットオブジェクトは、捕獲キューモジュール１３６に送られる。この捕獲キューモジュール１３６は、パイプライン処理用ヘッダ２０５内のルーティングフラグを検査するように構成されており、システムプロセッサがこのパケットオブジェクトを捕獲すべきか、またはこのパケットオブジェクトのコピーを得るべきかどうかを決定する。システムプロセッサがパケットオブジェクトを捕獲することになる場合には、捕獲キューモジュール１３６は、パケットオブジェクトを幾つかの定義されたキューの１つの中に記憶する。本発明のいくつかの実施形態では、システムプロセッサは直接メモリアクセス法（ＤＭＡ）を用いてキュー内のパケットオブジェクトにアクセスすることができる。
【００５２】
送出するパケットのストリームを捕獲キューモジュール１３６から受け取るように送出出力モジュール１３８が構成され、到来するパケットのストリームを受け取るように到来出力モジュール１４０が構成される。送出出力モジュール１３８と到来入力モジュール１４０との両方は、パケット用コプロセッサ１００と、例えば、ストリーミングまたはバスベースのいずれかの出力バスとの間に、低レベルのインターフェースプロトコルの適用を実行するように構成される。
【００５３】
このため、前述したように、本発明によるパケット用コプロセッサ１００の幾つかの実施形態は、共通のパイプライン内で到来および送出する両方のパケットオブジェクトの処理を容易にすることができる。特定の実施形態では、パケット用コプロセッサ１００を含む変換モジュールは、パケットを変換モジュールから変換モジュールへパイプライン形式で移動できるようにするために同じ量の実時間を使う変換責任を有するように構成される。本発明の別の実施形態では、到来および送出するパケットオブジェクトのストリームに対して別個のパイプラインを定義することができる。そのような実施形態はマルチプレクス回路およびデマルチプレクス回路を除くことを可能にするが、到来するパケットオブジェクトと送出するパケットオブジェクトとの両方に共通の変換動作を実行するために、複数の変換モジュールを使用することができる。さらに、これらの実施形態は、より高い性能を提供できる。
【００５４】
図１は具体例としてのパケット用コプロセッサ１００のアーキテクチャを示すが、本発明はそのような構成に限定されることはなく、前述した動作を実行できるどのような構成も含むものであることが理解されるであろう。一般に、スループットを向上するために、１つ以上の特定用途向け集積回路（ＡＳＩＣ）としてパケット用コプロセッサ１００の変換モジュールをそれぞれ実行することができる。さらに、パケット用コプロセッサ１００の全体を、１つ以上のＡＳＩＣとして実行することができる。しかしながら、パケット用コプロセッサ１００の変換モジュールの幾つかの機能性または全ての機能性は、１つ以上のＡＳＩＣ、個別のハードウェア要素、プログラムされたディジタル信号プロセッサもしくはマイクロコントローラ、および／または、その組合せを用いて実現できることがさらに理解されるであろう。この点について、前述したそれぞれのパケット用コプロセッサ１００の変換モジュールの動作を実行するためのコンピュータプログラムのコードは、開発を便利にするために、ＣまたはＣ＋＋などの高レベルのプログラミング言語で書くことができる。さらに、本発明の動作を実行するコンピュータプログラムのコードは、インタープリタ型言語などの他のプログラミング言語で書くこともできるが、これに限定されるものではない。性能および／またはメモリの使用量を向上させるために、幾つかのモジュールまたはルーチンをアセンブリー言語またはマイクロコードで書くことさえもできる。
【００５５】
図５のフローチャートは、パケット用コプロセッサ１００の幾つかの実施形態のアーキテクチャと機能性と動作とを示している。この点について、各ブロックは、コードのモジュール、コードのセグメント、またはコードの一部を示し、指定された論理機能を実行する１つ以上の実行可能な命令を含む。他の実施形態では、ブロックの中で示された機能は、図５で示された順序から外れて発生することがあることにも注意されたい。例えば、連続して示された２つのブロックが実際にはほぼ同時に実行されることがあり、または、含まれた機能性に基づいてブロックが逆の順序で実行されることもある。
【００５６】
本発明の原理からほとんど逸脱することなく、多くの変形例および修正例を好ましい実施形態に関して作ることができる。そのような変形例および修正例の全ては、以下の特許請求の範囲の中に記載するような本発明の範囲の中に含まれるものとする。
【図面の簡単な説明】
【００５７】
【図１】本発明のいくつかの実施形態による、パケット用コプロセッサパイプラインのアーキテクチャを示す図である。
【図２】本発明のいくつかの実施形態による、パケットオブジェクト用ヘッダの構造を示す図である。
【図３】本発明のいくつかの実施形態に基づいた、送出するパケットオブジェクトに対するパイプライン処理ヘッダを示す図である。
【図４】本発明のいくつかの実施形態に基づいた、到来するパケットオブジェクトに対するパイプライン処理ヘッダを示す図である。
【図５】本発明のいくつかの実施形態による、複数のパイプライン化処理モジュールを用いてパケットを処理するための具体例としての動作を示すフローチャートである。
【図６】本発明のいくつかの実施形態による、図１のパケット用コプロセッサパイプラインのアーキテクチャの中で使用される暗号変換モジュールを説明するブロック図である。
【図１】
2005522924.tif 000003
【図２】
2005522924.tif 000004
【図３】
2005522924.tif 000005
【図４】
2005522924.tif 000006
【図５】
2005522924.tif 000007
【図６】
2005522924.tif 000008
【国際調査報告】
2005522924.tif 000009
2005522924.tif 000010
2005522924.tif 000011