(57)【要約】【課題】高性能のコンテンツサーチ、ネットワークストレージ、及びセキュリティプロセッサを提供する。【解決手段】ランタイム適応サーチプロセッサを開示する。サーチプロセッサは、１Ｇｂｐｓ、１０Ｇｂｐｓ、及びこれよりも速くなるネットワーク回線速度の性能要件を満たすための高速コンテンツサーチ機能を提供し、サーチプロセッサはまた、サーチエンジンにプログラムされた特定の規則に対するサーチを行うために並行して入りデータを処理することができるＮＦＡ及びＤＦＡベースのサーチエンジンの固有な組合せを提供する。プロセッサアーキテクチャはまた、移送プロトコル層を通じてインターネットプロトコル（ＩＰ）パケットを第２層から移送して処理する機能を提供し、かつ層７を通じてパケット検査を提供することもできる。更に、ランタイム適応プロセッサは、プロトコル処理ハードウエアに連結され、送信された又は受信されたネットワークトラフィック及び／又はプログラムされたポリシー又はサービス又はサポートされているアプリケーションの必要性に従ってハードウエアタスクを行うように動的に適応させることができる。一組のエンジンは、通過パケットの分類、ポリシー処理、及び／又はセキュリティ処理を実行し、パケットがほぼ全ライン速度でアーキテクチャを通って流れることを可能にすることができる。また、アプリケーション層及びネットワーク層セキュリティのために使用することができる高性能コンテンツサーチ及び規則処理セキュリティプロセッサを開示する。スケジューラは、パケットを処理のためにパケットプロセッサに予定する。内部メモリ又はローカルセッションデータベースキャッシュは、ある一定の数のアクティブセッションに対するセッション情報データベースを格納する。内部メモリにないセッション情報は、付加的なメモリに／そこから格納及び検索される。イニシエータ又はターゲット上で実行されているアプリケーションは、ある一定のインスタンス化においては、メモリの領域を登録することができ、この領域は、ＲＤＭＡデータ転送を通じた実質的なホスト介入なしに直接にアクセスするためにそのピアに対して利用可能にされている。セキュリティシステムも開示され、これは、適切なセキュリティの特徴を備えたプロトコル処理ハードウエアを使用して分散方式で企業ネットワーク内にセキュリティ機能を実施する新しい方法を可能にするものである。【選択図】図８０
2009523275.tif 000002
【特許請求の範囲】
【請求項１】
情報コンテンツを操作し、かつ複数のハードウエア構成を有するランタイム適応サーチプロセッサであって、
ａ．処理のために情報コンテンツを制御してスケジュールする制御プロセッサ及びスケジューラー、
ｂ．ランタイム適応サーチプロセッサ構成をランタイムで構成する適応コントローラ、
ｃ．少なくとも複数のハードウエア構成を記憶する少なくとも１つの構成メモリ、
ｄ．少なくとも１つのＮＦＡを使用して前記情報コンテンツのサーチを実行するための少なくとも１つのランタイム適応ＮＦＡサーチエンジン、
ｅ．少なくとも１つのＤＦＡを使用して前記情報コンテンツのサーチを実行するための少なくとも１つのランタイム適応ＤＦＡサーチエンジン、及び
ｆ．以上のいずれかの組合せ、
を含むことを特徴とするプロセッサ。
【請求項２】
ａ．情報を探索するための少なくとも１つのサーチエンジンを含む少なくとも１つのサーチクラスター、
ｂ．グローバル構成制御のためのグローバル構成コントローラ、
ｃ．少なくとも前記構成メモリへのアクセスを制御するための構成メモリコントローラ、
ｄ．複数の前記少なくとも１つのサーチクラスター間の経路指定を制御するためのクラスター間経路指定スイッチ、
ｅ．メモリストレージを供給するためのグローバルメモリ、
ｆ．少なくとも前記グローバルメモリへのアクセスを制御するためのグローバルメモリコントローラ、及び
ｇ．以上のいずれかの組合せ、
の少なくとも１つを更に含むことを特徴とする請求項１に記載のランタイム適応サーチプロセッサ。
【請求項３】
前記少なくとも１つのサーチクラスターは、
ａ．前記少なくとも１つのサーチクラスターを構成するためのクラスター構成コントローラ、
ｂ．情報を探索するための少なくとも１つのランタイム適応サーチエンジン、及び
ｃ．複数の前記少なくとも１つのランタイム適応サーチエンジンを接続するための構成可能クラスター相互接続ネットワーク、
を含む、
ことを特徴とする請求項２に記載のランタイム適応サーチプロセッサ。
【請求項４】
前記少なくとも１つのサーチクラスターは、
ａ．メモリストレージを供給するためのクラスターメモリ、
ｂ．少なくとも前記クラスターメモリを制御するためのクラスターメモリコントローラ、
ｃ．前記少なくとも１つのランタイム適応サーチエンジンを前記少なくとも１つのサーチクラスター又は前記クラスター間経路指定スイッチに相互接続するためのクラスター経路指定スイッチ、
ｄ．フローコンテキストを少なくとも記憶して検索するためのクラスターフローコントローラ、及び
ｅ．以上のいずれかの組合せ、
の少なくとも１つを更に含む、
ことを特徴とする請求項２に記載のランタイム適応サーチプロセッサ。
【請求項５】
前記少なくとも１つのランタイム適応サーチエンジンは、
ａ．少なくとも１つのＮＦＡを使用してサーチを行うためのランタイム適応ＮＦＡサーチエンジン、
ｂ．少なくとも１つのＤＦＡを使用してサーチを行うためのランタイム適応ＤＦＡサーチエンジン、及び
ｃ．以上の組合せ、
の少なくとも１つを含む、
ことを特徴とする請求項３に記載のランタイム適応サーチプロセッサ。
【請求項６】
前記少なくとも１つのランタイム適応ＮＦＡサーチエンジンは、少なくとも１つの前記ＮＦＡを評価し、かつ
ａ．１つの状態に対して状態論理オペレーションを実行するための少なくとも１つの状態論理ブロック、
ｂ．アプリケーション状態情報を記憶する少なくとも１つのアプリケーション状態メモリ、
ｃ．記号を検出する少なくとも１つの記号検出論理、
ｄ．前記少なくとも１つのランタイム適応ＮＦＡサーチエンジンのオペレーションを制御する少なくとも１つのアプリケーション状態コントローラ、及び
ｅ．以上のいずれかの組合せ、
を含む、
ことを特徴とする請求項１に記載のランタイム適応サーチプロセッサ。
【請求項７】
前記少なくとも１つのランタイム適応ＮＦＡサーチエンジンは、
ａ．パターン置換を行うパターン置換制御、
ｂ．様々なイベントのためのカウンタを準備するカウンタ、
ｃ．規則マッチングを検出するマッチング論理、
ｄ．前記ランタイム適応ＮＦＡサーチエンジンがより大きなＦＳＡをサポートすることを可能にするＦＳＡ拡張論理、及び
ｅ．以上のいずれかの組合せ、
の少なくとも１つを更に含む、
ことを特徴とする請求項１に記載のランタイム適応サーチプロセッサ。
【請求項８】
前記少なくとも１つのランタイム適応ＤＦＡサーチエンジンは、
ａ．状態論理オペレーションを行う少なくとも１つのＤＦＡオペレーションエンジン、
ｂ．ＤＦＡオペレーション命令及び命令の状態フローを記憶する少なくとも１つのＤＦＡ命令及び状態フローメモリ、
ｃ．前記少なくとも１つのランタイム適応ＤＦＡサーチエンジンのオペレーションを制御する少なくとも１つのＤＦＡ状態コントローラ、及び
ｄ．以上のいずれかの組合せ、
を含む、
ことを特徴とする請求項１に記載のランタイム適応サーチプロセッサ。
【請求項９】
前記少なくとも１つのランタイム適応ＤＦＡサーチエンジンは、
ａ．パターン置換を行うパターン置換制御、
ｂ．様々なイベントのためのカウンタを準備するカウンタ、
ｃ．前記ＤＦＡサーチエンジンのアプリケーションコンテキストを制御するＤＦＡコンテキストコントローラ、
ｄ．前記ランタイム適応ＤＦＡサーチエンジンがより大きなＦＳＡをサポートすることを可能にするＤＦＡ拡張論理、及び
ｅ．以上のいずれかの組合せ、
の少なくとも１つを更に含む、
ことを特徴とする請求項１に記載のランタイム適応サーチプロセッサ。
【請求項１０】
前記少なくとも１つの状態論理ブロックは、
ａ．前記状態と前記ＮＦＡの１つ又はそれよりも多くの状態との間の相互接続を有効又は無効にするのに使用される状態依存ベクトル（ＳＤＶ）、
ｂ．前記状態がその次の状態に関して依存する前記ＮＦＡの前記１つ又はそれよりも多くの状態の一部の現在の状態を表す現在状態ベクトル（ＣＳＶ）、
ｃ．前記記号検出論理への入力として受け取られた前記記号の値を表す受信記号ベクトル（ＲＳＶ）、
ｄ．前記ＮＦＡタイプを指示する左バイアス又は右バイアス信号、
ｅ．少なくとも前記ＳＤＶ、前記ＣＳＶ、前記ＲＳＶ、及び前記左バイアス又は右バイアス信号を使用して前記状態に対する次の状態値を生成する状態遷移論理、
ｆ．前記状態に対する前記次の状態の値を制御する初期論理ブロック、
ｇ．前記状態の値を記憶する状態メモリ、
ｈ．前記状態が受理状態であり、かつアクティブ化されている時を検出して信号を送る受理検出論理、及び
ｉ．以上のいずれかの組合せ、
を含む、
ことを特徴とする請求項６に記載のランタイム適応サーチプロセッサ。
【請求項１１】
前記少なくとも１つの状態論理ブロックは、
ａ．前記ＳＤＶのランタイム構成を有効にする、該ＳＤＶのためのプログラマブルストレージ、
ｂ．達成されたＮＦＡタイプのランタイム構成を有効にする前記左バイアス（ＬＢ）又は右バイアス（ＲＢ）信号のためのプログラマブルストレージ、
ｃ．前記状態が前記ＮＦＡの開始状態であるかを示す開始フラグを記憶するためのプログラマブルストレージ、
ｄ．前記状態が前記ＮＦＡの受理状態であるかを示す受理フラグを記憶するためのプログラマブルストレージ、
ｅ．前記状態が前記ＮＦＡ評価中にアクティブ化されるか又は到達された時に取るべきアクションを示すアクションフィールドを記憶するためのプログラマブルストレージ、
ｆ．前記状態が前記ＮＦＡ評価中にアクティブ化されるか又は到達された時に出されるタグを示すタグフィールドを記憶するためのプログラマブルストレージ、及び
ｇ．以上のいずれかの組合せ、
の少なくとも１つを更に含む、
ことを特徴とする請求項６に記載のランタイム適応サーチプロセッサ。
【請求項１２】
複数の状態を有するランタイム適応有限状態オートマトンアーキテクチャであって、
ａ．複数の状態のいずれか２つの間の少なくとも１つの相互接続、
ｂ．前記複数の状態の前記２つの状態と他の状態との間の前記少なくとも１つの相互接続を有効又は無効にするのに使用される該複数の状態の各々に対する状態依存ベクトル（ＳＤＶ）、
ｃ．前記複数の状態の状態がその次の状態評価に関して依存する該複数の状態の一部の現在の状態を表す該複数の状態の各々に対する現在状態ベクトル（ＣＳＶ）、
ｄ．前記複数の状態の前記各々内への又はそこからの遷移を制御する、該複数の状態の各々に関連した少なくとも１つの記号、
ｅ．記号を受け取り、該記号の値を検出し、受信記号ベクトル（ＲＳＶ）を生成するための少なくとも１つの記号検出論理、
ｆ．有限状態オートマトンを使用するアプリケーションコンテキストを保持する少なくとも１つのアプリケーション状態メモリ、
ｇ．少なくとも前記状態依存ベクトル、前記現在状態ベクトル、及び前記受信記号ベクトルを使用して前記複数の状態の各々に対する次の状態を生成する該複数の状態の各々のための状態遷移論理、及び
ｈ．以上のいずれかの組合せ、
を含むことを特徴とするアーキテクチャ。
【請求項１３】
ａ．ＳＤＶのランタイム構成を有効にするＳＤＶのためのプログラマブルストレージ、
ｂ．達成された有限状態オートマトン（ＦＳＡ）タイプのランタイム構成を有効にする左バイアス（ＬＢ）又は右バイアス（ＲＢ）信号のためのプログラマブルストレージ、
ｃ．前記状態が前記ＦＳＡの開始状態であるかを示す開始フラグを記憶するためのプログラマブルストレージ、
ｄ．前記状態が前記ＦＳＡの受理状態であるかを示す受理フラグを記憶するためのプログラマブルストレージ、
ｅ．前記状態が前記ＦＳＡ評価中にアクティブ化されるか又は到達された時に取るべきアクションを示すアクションフィールドを記憶するためのプログラマブルストレージ、
ｆ．前記状態が前記ＦＳＡ評価中にアクティブ化されるか又は到達された時に出されるタグを示すタグフィールドを記憶するためのプログラマブルストレージ、及び
ｇ．以上のいずれかの組合せ、
の少なくとも１つを更に含むことを特徴とする請求項１２に記載のランタイム適応有限状態オートマトン（ＦＳＡ）。
【請求項１４】
ネットワークパケット又はローカルコンテンツを操作するためのシステムであって、
ネットワークに連結することができ、
ネットワークパケット内又はローカルコンテンツ内に組み込まれたコンテンツを処理するランタイム適応サーチプロセッサを含む、
ことを特徴とするシステム。
【請求項１５】
前記ランタイム適応サーチプロセッサは、該ランタイム適応サーチプロセッサ内のハードウエア構成を動的に選択して、前記ネットワークパケット又は前記ローカルコンテンツのアプリケーション又はサービス処理の必要性をサポートするランタイム適応サーチプロセッサアレイハードウエアを更に提供することを特徴とする請求項１４に記載のシステム。
【請求項１６】
コンテンツサーチを加速する前記ランタイム適応サーチプロセッサハードウエアをアプリケーションが利用することを可能にするコンテンツサーチＡＰＩを含み、
前記コンテンツサーチＡＰＩは、前記ランタイム適応サーチプロセッサを初期化する手段、コンテンツサーチ規則を該ランタイム適応サーチプロセッサに通信する手段、該ランタイム適応サーチプロセッサによって探索されるコンテンツを通信する手段、該ランタイム適応サーチプロセッサによる該コンテンツサーチの結果を前記アプリケーションに通信する手段、該ランタイム適応サーチプロセッサを始動及び停止してコンテンツサーチを開始及び停止する手段、及び以上のいずれかの組合せを含む、
ことを特徴とする請求項１４に記載のシステム。
【請求項１７】
前記ランタイム適応サーチプロセッサは、アンチ−スパム、アンチ−ウイルス、アンチ−スパイウェア、アンチ−フィッシング、機密漏れ防止、又は法規制の遵守、又は以上の組合せを含む電子メールセキュリティアプリケーション、又はファイアウォール、侵入検知及び防止、アプリケーション層セキュリティ、アンチ−スパム、アンチ−ウイルス、アンチ−スパイウェア、アンチ−フィッシング、機密漏れ防止、又は法規制の遵守、又は以上のあらゆる組合せを含むウェブセキュリティアプリケーションを有効にし、
前記アプリケーションは、ネットワーク回線速度で実行することができ、
前記ネットワーク回線速度は、１００Ｍｂｐｓ未満から１０Ｇｂｐｓまで及びそれよりも上の回線速度の範囲内にある、
ことを特徴とする請求項１４に記載のシステム。
【請求項１８】
前記少なくとも１つのアプリケーション状態メモリは、少なくとも１つのアプリケーション状態コンテキストを含み、該少なくとも１つのアプリケーション状態コンテキストは、該少なくとも１つのアプリケーション状態コンテキストが前記ＮＦＡサーチエンジン内で構成されるように選択された時に該ＮＦＡサーチエンジン内でプログラムされる該コンテキストの情報を表しており、
前記アプリケーション状態コンテキストは、前記ＮＦＡの全ての状態に適用可能なＮＦＡパラメータ、及び該ＮＦＡの前記少なくとも１つの状態の各状態に適用可能な少なくとも１組の状態パラメータ、又は以上の組合せを含む、
ことを特徴とする請求項６に記載のランタイム適応サーチプロセッサ。
【請求項１９】
前記ランタイム適応サーチプロセッサは、
ネットワークからデータパケットを受信し、かつネットワークにデータパケットを送信し、
更に、前記ネットワークから受信した前記データパケット上で、該ネットワークに送信された前記データパケット上で、又はこれらの組合せに対して、
ａ．ポリシーベースのサービス、アプリケーション、又はポリシー、又はこれらの組合せ、
ｂ．ユーザ選択のサービス、アプリケーション、又はポリシー、又はこれらの組合せ、
ｃ．ユーザ定義のサービス、アプリケーション、又はポリシー、又はこれらの組合せ、
ｄ．ユーザ設定のサービス、アプリケーション、又はポリシー、又はこれらの組合せ、及び
ｅ．以上のいずれかの組合せ、
を選択する機能を提供する、
ことを特徴とする請求項１４に記載のシステム。
【請求項２０】
ネットワークパケット又はローカルコンテンツを操作するための、ネットワークに連結することができるシステムに組み込まれ、
前記ネットワークパケット内又は前記ローカルコンテンツ内に組み込まれたコンテンツを処理し、
ランタイム適応サーチプロセッサ内のハードウエア構成を動的に選択して前記ネットワークパケット又は前記ローカルコンテンツのアプリケーション又はサービス処理の必要性をサポートするランタイム適応サーチプロセッサアレイハードウエアを更に含む、
ことを特徴とする請求項１に記載のランタイム適応サーチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
「ランタイム適応サーチプロセッサ」という名称の２００５年１２月３０日出願の米国特許出願出願番号第１１／３２３、１６５号に対する優先権を主張する。
本発明は、一般的に、コンテンツサーチ、ストレージ、及びネットワーキング半導体に関し、具体的には、ネットワーキング、ストレージ、セキュリティ、バイオインフォマティクス、チップセット、サーバ、及びサーチエンジン内などに使用することができる高性能のコンテンツサーチ、ネットワークストレージ、及びセキュリティプロセッサに関する。
【背景技術】
【０００２】
多くの今日のアプリケーションは、高速の情報探索及び取得に依存している。ワールド−ワイド−ウェブの出現及びその使用の驚異的な増加によって、コンテンツサーチは、重要な機能になっている。正規表現駆動サーチのための従来技術のマイクロプロセッサの性能限界のために、多数のサーバがウェブサーチアプリケーションに配備されている。
語彙情報又はストリングのパターンのサーチのテーマには、かなりの研究及び開発リソースが費やされている。正規表現は、１９５０年代半ばからコンテンツサーチ、字句解析、及び情報検索システムなどに対するストリングのパターンを説明するのに広く使用されている。正規表現は、神経活動のイベントを説明するためにＳ．Ｃ．Ｋｌｅｅｎｅによって１９５０年代半ばに最初に研究された。正規表現（ＲＥ）が有限状態オートマトン（ＦＳＡ）を使用しても表現することができることは産業界では良く理解されている。非決定性有限状態オートマトン（ＮＦＡ）及び決定性有限状態オートマトン（ＤＦＡ）は、コンピュータの歴史を通して広く使用されてきたＦＳＡの２つのタイプである。ＲａｂｉｎとＳｃｏｔｔは、１９５９年に言語を認識する機能に関する限りではＤＦＡとＮＦＡの同等性を示した最初の人々である。一般的に、研究の重要な主要部分は、正規表現に存在する。正規表現の理論は、Ｈｏｐｃｒｏｆｔ及びＵｌｌｍａｎ著「オートマトン理論、言語、及びコンピューテーション入門」に見出すことができ、このテーマの重要な説明は、Ａｈｏ、Ｓｅｔｈｉ、及びＵｌｌｍａｎ著「コンパイラ：原理、技術、及びツール」に見出すことができる。
【０００３】
「インターネットプロトコル（ＩＰ）」は、ローカルエリアネットワーク（ＬＡＮ）、メトロエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）などの様々なネットワークにわたって配備される最も普及しているネットワーキングプロトコルである。ストレージエリアネットワーク（ＳＡＮ）は、主にファイバチャンネル（ＦＣ）技術に基づいている。ＩＰベースのストレージネットワークを作り出す必要性が存在する。
【０００４】
データストリームを移送するように設計されたＩＰ上でブロックストレージトラフィックを移送する時に、データストリームは、ＩＰの上で実行されるように階層化された伝送制御プロトコル（ＴＣＰ）を使用して移送される。ＴＣＰ／ＩＰは、オペレーティングシステム内のソフトウエアで実行される確実な接続／セッション志向プロトコルである。ＴＣＰ／ＩＰソフトウエアスタックは、将来配備されることになる高回線速度を扱うには非常に低速である。現在、１Ｇｂｐｓネットワーク接続を使用してＴＣＰ／ＩＰスタックを実行する１ＧＨｚプロセッサベースサーバは、５０〜７０％又はそれ以上のプロセッササイクルを使用し、プロセッサがサーバ上で実行されるアプリケーションに割り当てるのに利用可能な最小限のサイクルを残す。このオーバーヘッドは、高性能ＩＰネットワークに対する場合と同じく、ストレージデータをＴＣＰ／ＩＰ上で移送する場合は許容できないことである。従って、新しいハードウエアソリューションは、ストレージ及びデータトラフィックを運び、ＦＣベースソリューションと競合するようにＴＣＰ／ＩＰスタックを加速するであろう。ＴＣＰプロトコルに加えて、ＳＣＴＰ及びＵＤＰプロトコルのような他のプロトコル、及びデータストリームを移送するのに適切な他のプロトコルを使用することもできる。
【０００５】
コンピュータは、企業内で及び世界中で益々ネットワーク化されている。これらのネットワークされたコンピュータは、情報管理及びセキュリティのパラダイムを変えている。機密性の高いパーソナルで機密情報を含む莫大な情報が、ネットワークを通じて目下生成され、アクセスされ、かつ記憶されており、この情報を許可されていないアクセスから保護すべきである。更に、電子メール、ウェブアクセス、インスタントメッセージ、ウェブダウンロード、及び他の手段を通じたユーザへのスパム、ウイルス、及び他の不適切なコンテンツの絶え間ない攻撃があり、この結果、生産性及びリソースの多大な損失を生じる。
【０００６】
企業とサービスプロバイダのネットワークは、１０／１００Ｍｂｐｓ回線速度から１Ｇｂｐｓ、１０Ｇｂｐｓ、及びそれよりも高い回線速度まで急速に進化している。情報システムを保護するための周辺セキュリティの従来的なモデルは、組織の周辺の曖昧な境界のために多くの問題を呈している。今日では、従業員、業者、リモートユーザ、取引相手、及び顧客は、外部から企業ネットワークへのアクセスを要求するので、周辺セキュリティモデルは不十分である。この使用法モデルは、これらの組織の重要な情報とコンピュータリソースに対する深刻なセキュリティの無防備性という問題を呈している。すなわち、周辺セキュリティの従来的なモデルは、ネットワークのコアにおいてセキュリティで強化されるべきである。更に、脅威の新しいソース及び高速回線速度ネットワークの収束によって、ソフトウエアベースの周辺セキュリティが外部及び内部の攻撃を阻止することを不十分にしてしまう。増加するセキュリティ侵害及び攻撃を妨害するためにセキュリティの主な手段の１つとして周辺ファイアウォールの他にコア又はエンドシステムの内側のハードウエアでセキュリティ処理を可能にするための明確な必要性が存在する。ＦＢＩ及び他の主要な研究所は、組織への侵入の７０％を超えるものが内部からであることを近年報告した。従って、外部攻撃から組織を保護することに頼る周辺防御は、上述のように十分ではない。組織は、専有及び機密情報の偶然又は悪意のある開示を阻止するために、並びにそのネットワークリソースがスパム、ウイルス、ワーム、及び他の破壊工作ソフトを蔓延させるのに使用されないようにするために、アウトバウンドトラフィックをスクリーニングすることが必要になっている。ネットワークトラフィックのデータペイロードを検査してインバウンド及びアウトバウンドセキュリティに対して組織のネットワークを保護して保証するという明確な必要性が存在する。
【０００７】
ＴＣＰ／ＩＰ又は他のプロトコルを使用して移送されたデータは、発信元、ネットワーク内の宛先又は中間システム、又はその組合せで処理され、ソケット層セキュリティ、移送層セキュリティ、暗号化／暗号解読、ＲＤＭＡ、ＲＤＭＡセキュリティ、及びアプリケーション層セキュリティ、及び仮想化又はより高度なアプリケーション層処理に対する安全なソケット層（ＳＳＬ）のようなデータセキュリティ又は他のサービスを提供し、この仮想化又はより高度なアプリケーション層処理は、アプリケーションレベルのプロトコル処理（例えば、ＨＴＴＰ、ＨＴＴＰＳ、ＸＭＬ、ＳＧＭＬ、セキュアＸＭＬ、他のＸＭＬ派生物、テルネット、ＦＴＰ、ＩＰストレージ、ＮＦＳ、ＣＩＦＳ、ＤＡＦＳ等に対するプロトコル処理）を更に伴う場合がある。これらの処理タスクの多くは、アプリケーションとハードウエアシステムの性能に直接影響する可能性があるホストプロセッサへの大きな負担になる。従って、専用のハードウエア、例えば、ＳＳＬ又はＴＬＳアクセラレーションを使用して、これらのタスクの一部を加速させる必要がある。ＸＭＬの使用がウェブアプリケーションに対して増加するので、ホストプロセッサの性能への大きな負担になることが予想され、同じくハードウエアアクセラレーションから大幅に利益を得ることが考えられる。スパム、ウイルス、及び他の不適切なコンテンツの検出は、ディープパケット検査及び分析を必要とする。このようなタスクは、ホストプロセッサに多大な処理負担を掛けることになり、ネットワーク回線速度を非常に低下させることになる。従って、ディープパケットコンテンツサーチ及び分析ハードウエアも必要である。
【０００８】
インターネットは、小さな組織から大きな組織に至るまでビジネスを行うための必要不可欠なツールになっている。ＨＴＭＬベースの静的ウェブは、ＸＭＬベースのサービスの配備によってここ数年の間に動的環境に変換されている。ＸＭＬは、ウェブの共通語になってきており、その使用は、かなり増加すると予想される。ＸＭＬは記述的言語であり、自動化処理に対しては文書を自己記述式にすることによって多くの利点を提供するが、最高クラスのサーバプロセッサに非常に大きな性能オーバーヘッドを引き起こすことでも公知である。ＸＭＬ文書に組み込まれた情報を処理することによって決定が行われ、それによって企業がビジネストランザクション並びに他の情報交換を行えるようなる。しかし、ＸＭＬ文書を分析することから生じる最高クラスのサーバプロセッサにかかる性能オーバーヘッドのために、インテリジェントネットワーキングを供給するためのネットワーク回線速度ＸＭＬ処理を必要とするシステムでこれらを使用できない。ＸＭＬサービスに基づく動的ウェブの利益を達成するために、１Ｇｂｐｓ及び１０Ｇｂｐｓに近づくネットワーク回線速度でのＸＭＬ文書パージング及びコンテンツ検査のためのアクセラレーション解決法に対する明確な必要性が存在する。
【０００９】
正規表現は、上述したものと同様の様々なアプリケーションに対してコンテンツサーチストリングを表示するために使用することができる。正規表現のセットは、次に、特定のアプリケーションを探索するための規則セットを形成することができ、あらゆる文書又はデータのストリームを調べるためにこれに適用することができる。正規表現は、アンチ−スパム規則、アンチ−ウイルス規則、及びＸＭＬ文書サーチ構造などを説明するのに使用される。これらの表現は、汎用プロセッサにおける評価のためにＮＦＡ又はＤＦＡに変換される。しかし、重要な性能及びストレージの制限が、表示の各タイプに生じる。例えば、Ｎ個の文字正規表現がＤＦＡの状態に対して２Nの程度のメモリまで必要とする可能性があり、ＮＦＡに対して同様のものはＮの程度である。他方、Ｍバイトの入力データストリームに対するＤＦＡ評価の性能は、Ｍメモリアクセスの程度及び最新のマイクロプロセッサでのＮＦＡ表示に対する（Ｎ*Ｍ）のプロセッササイクルの程度である。
【００１０】
正規表現の数が増す場合、性能への影響も同様に悪くなる。例えば、アンチ−スパムのようなアプリケーションでは、数百の正規表現規則が存在する可能性がある。これらの正規表現は、個々のＮＦＡ又はＤＦＡを使用してサーバプロセッサ上で評価される。規則を表すために複合ＤＦＡを作成することができる。アプリケーションに対してＸ個のＲＥが存在すると仮定すると、各個々のＲＥのＤＦＡベースの表示は、（Ｘ*２N）状態の程度まで生じることになるが、評価時間は、（Ｘ*Ｎ）メモリサイクル程度まで増加することになる。一般的に、ＤＦＡに対する状態の数の潜在的な拡張のために、これらは、オフチップメモリに記憶すべきである。１００ｎｓのメインメモリシステムの一般的なアクセス時間待ち時間を使用すると、ＭバイトのデータストリームにわたってＮ状態を有するＸ個の「ＲＥ  ＤＦＡ」を処理するには、約（Ｘ*１００ｎｓ*Ｎ*Ｍ）時間必要になる。これは、Ｘ、Ｎ、及びＭの少なめのサイズに対して数十Ｍｂｐｓ性能を結果として生じることになる。このような性能は、１Ｇｂｐｓから１０Ｇｂｐｓの今日のネットワーク回線速度の必要性を明らかに大きく下回っている。他方、複合ＤＦＡが作成された場合、これは、数百個のＲＥに対して一般的に商用のコンピュータシステムのメモリサイズの物理的限界を超える２N*Xの程度の記憶装置の上限を結果として生じる。従って、ＤＦＡに対するメモリ拡張の上限は、重要な問題になる。また他方では、ＮＦＡは、本質的には非決定性であり、同時に起こることのある複数状態遷移をもたらすことがある。ＮＦＡは、スカラー方式で従来技術のマイクロプロセッサの状態で処理されるだけであり、有効にされた経路の各々に対してＮＦＡの複数実行をもたらす。平均してＮ個の文字を有するＸ個のＲＥは、ＮＦＡのように（Ｘ*Ｎ）個の状態の上限で表現される。しかし、各ＮＦＡは、Ｍ−バイトのストリームに対してＭ回の反復を要求することになり、（Ｘ*Ｎ*Ｍ*プロセッササイクル／ループ）の上限を引き起こす。処理サイクルの数を１０サイクルの程度であると仮定すると、最高クラスプロセッサの４ＧＨｚでは、処理時間は、約（Ｘ*Ｎ*Ｍ*２．５ｎｓ）であり、８の公称Ｎ及び数十分のＸに対して１００Ｍｂｐｓ性能に劣る可能性がある。１Ｇｂｐｓ及び１０Ｇｂｐｓに及ぶネットワーク速度に見合った性能を提供することができる高性能正規表現ベースのコンテンツサーチプロセッサを作成する明確な必要性が存在する。
【００１１】
正規表現をＮＦＡ及びＤＦＡに変換する方法は、公知である。得られるオートマトンは、ストリングが正規表現によって定められた言語に属するか否かを識別することができるが、正規表現の特定の副表現がマッチングストリング又はストリングの範囲にあるかを計算することはあまり効率的ではない。タグ付けＮＦＡによって、マッチングストリングを再度走査する必要なくこのような問合せを効率的に行うことができるようなる。タグ付けＮＦＡの説明については、フィンランドのヘルシンキ技術大学のＶｉｌｌｅ  Ｌａｕｒｉｋａｒｉによる論文「タグ付け遷移によるＮＦＡ、それらの決定性オートマトンへの変換及び正規表現への応用」を参照されたい。
【００１２】
米国特許出願第２００４００５９４４３号及び第２００５００１２５２１号は、状態機械及びプログラマブル有限状態オートマトンの効率的な実装及び評価の方法及び装置を説明している。これらの出願は、正規表現の高性能処理をもたらすためにＮＦＡのアレイを使用して正規表現を評価するのに使用される装置を示している。これらの出願は、ＮＦＡを使用して正規表現を実装する理由としてＤＦＡに対するストレージ問題の上限を認識している。しかし、この出願は、ＤＦＡ最悪ストレージ要件がＮＦＡに比べてかなり高いが、多くのＤＦＡはＮＦＡよりも少ないストレージの必要性を有することを認識できていない。多くの正規表現に対するＤＦＡは、ＮＦＡに比べて状態のより低い数字を結果として生じることがある。例えば、アンチ−スパムアプリケーションにおいて、オープンソースツール「スパム／アサシン」に基づいて、正規表現規則の多数が、ＮＦＡより小さなＤＦＡを結果として生じる。従って、最悪シナリオだけに基づいてＤＦＡ実装を無視しないことが重要である。これらの特許出願はまた、１つのＮＦＡブロック当たり単一のＲＥを処理するＮＦＡエンジンを作成する。従って、ＲＥがＮＦＡブロックの最小状態より少ない状態を使用する場合、同じブロックで同時に複数のＲＥを使用することができる措置はない。本出願の発明では、本発明者は、ランタイム適応サーチエンジンのアレイを使用するコンテンツサーチプロセッサを説明し、このサーチエンジンは、正規表現を評価するためのランタイム適応ＤＦＡサーチエンジン又はランタイム適応ＮＦＡサーチエンジン又はこれらの組合せとすることができる。本発明者のサーチプロセッサのコンテンツサーチエンジンは、１つのＮＦＡ又はＤＦＡエンジンにつき複数のＲＥを使用するという柔軟性を提供する。本発明は、これらの出願ではサポート又は説明されていないタグ付きＮＦＡ実装をサポートする機能を提供する。更に、これらの出願は、ネットワークに送られるか又はネットワークから受け取られる転送データに基づいて加えられるハードウエア又は規則を動的に構成する必要性に対処していない。本発明のプロセッサは、上述の出願に説明されていない転送データに応じてハードウエアベースの規則セットを動的に加えるようにすることができる。更に、本発明は、ある一定のＤＦＡが、ＮＦＡに比べて実装するのにより有効なハードウエアリソースであり、高度な処理技術を使用して特定用途向け集積回路を作成することに大きな投資をする必要なく多数の正規表現を実装するために従来技術のＦＰＧＡの今日の状態を有効にすることができることを示している。これはまた、上述の出願では実行できないとして詳細に説明されている。本発明はまた、本発明のコンテンツサーチアプリケーションプログラマーインタフェース（ＡＰＩ）及びサーチプロセッサを通じてアプリケーションアクセラレーションを改善するために使用することができるコンテンツサーチアクセラレーションを示している。
【００１３】
各種類のネットワークデータペイロードに対するハードウエアアクセラレーションは、各個々の種類のネットワークデータに対して特化されたアクセラレータを配備すると高価になる可能性がある。それ自体をネットワークデータの必要性に適応させることができ、必要な加速を提供し、それによってホストの性能に対する影響を軽減するプロセッサアーキテクチャに対する明白な必要性が存在する。本特許は、それ自体をネットワークデータの必要性に適応させるような新しいアーキテクチャを説明するものである。本特許のプロセッサは、再使用して異なる種類のペイロードの異なる必要性に適応させることができ、依然としてハードウエアアクセラレーションの利益を提供する。これは、専用のアプリケーション特定のアクセラレータと比較してアクセラレーションソリューション配備のコストを大幅に低減させることができる。
【００１４】
動的再構成可能計算法は、アプリケーションの要求に適するハードウエアリソースの再構成の必要性に対処するために大きな研究及び開発の関心を集めている分野である。研究の主な焦点は、アプリケーションの要求に適するように新しい命令実行リソースを用いて適応させることができる汎用マイクロプロセッサ代替物を作り出すことに向けられた。
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、単純なＡＮＤ−ＯＲ論理ブロックから多くのプログラマブル論理ブロックとプログラマブル経路指定リソースを提供してこれらを一緒に又は入力／出力ブロックに接続するより複雑な要素に進化した。米国特許第５，６００，８４５号は、動的に構成可能なＦＰＧＡを含む集積回路コンピュータ装置を開示している。ゲートアレイは、構成可能な命令実行ユニットを備えたＲＩＳＣプロセッサを作り出すように構成される。この動的再構成可能性は、動的に再構成可能な命令実行ユニットが、ソフトウエアで実行するのに時間を浪費する場合があるハードウエア内の作動を実行するように変更されることを可能にする。そのような構成は、入って来る命令を実行するように設定された事前構成命令を必要とし、命令が存在しない場合には、それは例外として処理されるべきであり、これは、次に大きな処理オーバーヘッドを有することになる。米国特許第５，６００，８４５号の発明は、汎用マイクロプロセッサの限界に対処するが、ネットワークに送られるか又は受け取られる移送データに基づいてハードウエアを動的に構成する必要性には対処しない。
【００１５】
米国特許出願第２００３００９７５４６号は、命令が、既存の再構成不能ハードウエア又はソフトウエアルーチンによって構成された再構成可能ハードウエアによってサポートされ、かつ検査結果に基づいて命令ストリームを実行するかを判断する命令検査モジュールによって検査された命令ストリームを受け取る再構成可能プロセッサを説明している。命令がサポートされていない時は、プロセッサは、ソフトウエア内の命令ストリームの実行を含む取るべきアクションの手順を判断する。特許出願第２００３００９７５４６号はまた、ネットワークに送られるか又は受け取られる移送データに基づいてハードウエアに動的に構成する必要性にも対処していない。
【００１６】
米国特許出願第２００４００１９７６５号は、パイプライン型再構成可能動的命令設定プロセッサを開示している。その出願では、マイクロプロセッサの制御下で動的に再構成可能なパイプラインステージが説明されている。これは、汎用マイクロプロセッサの代替物として処理される命令に基づいてそのパイプラインステージとその相互接続を適応させることができる更に別の動的再構成可能プロセッサである。
【００１７】
再構成可能計算法の分野は、再構成可能実行ユニット又は再構成可能コプロセッサを追加することによって汎用プロセッサの限界に主として対処するような上述のＦＰＧＡ又は再構成可能プロセッサとして動的に再構成可能な論理装置を作り出す方向の研究によって成熟した。例えば、スイス連邦工科大学のＡｎｄｒｅａｓ  Ｒｏｍｅｒによる学位論文「再構成可能ＦＰＧＡプロセッサ」は、ＡＳＩＣのような性能と領域で、しかも再構成可能ＦＰＧＡのような「Ｘｉｌｉｎｘ  Ｖｉｒｔｅｘ」及び「ＸＣ６２００」装置の再構成可能な部分の動的作成実行機能性ユニットによる汎用プロセッサレベルの柔軟性も作り出す必要性を対象としている。同様に、「カスタム計算機のためのＦＰＧＡに関するＩＥＥＥシンポジウム（ＦＣＣＭ’９７）」の会議録に掲載されたＪ．Ｒ．Ｈａｕｓｅｒ及びＪ．Ｗａｗｒｚｙｎｅｋによる「Ｇａｒｐ：再構成可能コプロセッサを備えたＭＩＰＳプロセッサ」という名称の論文は、ＭＩＰＳプロセッサの汎用処理機能の限界に対処するＭＩＰＳプロセッサに対してカスタム同時処理サポートをもたらす必要性を対象としている。
【００１８】
公開された研究又は特許出願は、移送データ並びに取るべきアクション、及びネットワークに送信されるか又は受信されるその特定データに対して配備されるアプリケーション／サービスに基づいてハードウエアを動的に構成する必要性に対処していない。本特許は、それ自体をネットワークデータの要求に適応させ、時間を費やすセキュリティポリシー演算又はアプリケーション／サービス、又は移送データの他のデータ処理の要求、及び本発明を組み込むシステムの定義されたポリシーを実行するようにランタイム適応可能である新しいアーキテクチャを説明するものである。このアーキテクチャはまた、スパム、ウイルス、デジタル権管理情報、インスタントメッセージ検査、ＵＲＬマッチング、アプリケーション検出、悪意のあるコンテンツ、及び他のコンテンツを検出し、アンチ−スパム、アンチ−ウイルス、及び同様の機能を可能にすることができる固有の規則を適用するために使用することができるディープパケット検査エンジンを含む。
【００１９】
【特許文献１】米国特許出願出願番号第１１／３２３、１６５号
【特許文献２】米国特許出願第２００４００５９４４３号
【特許文献３】米国特許出願第２００５００１２５２１号
【特許文献４】米国特許第５，６００，８４５号
【特許文献５】米国特許出願第２００３００９７５４６号
【特許文献６】米国特許出願第２００４００１９７６５号
【非特許文献１】Ｈｏｐｃｒｏｆｔ及びＵｌｌｍａｎ著「オートマトン理論、言語、及びコンピューテーション入門」
【非特許文献２】Ａｈｏ、Ｓｅｔｈｉ、及びＵｌｌｍａｎ著「コンパイラ：原理、技術、及びツール」
【非特許文献３】Ｖｉｌｌｅ  Ｌａｕｒｉｋａｒｉ著「タグ付け遷移によるＮＦＡ、それらの決定性オートマトンへの変換及び正規表現への応用」、ヘルシンキ技術大学、フィンランド
【非特許文献４】Ａｎｄｒｅａｓ  Ｒｏｍｅｒ、学位論文「再構成可能ＦＰＧＡプロセッサ」、スイス連邦工科大学
【非特許文献５】Ｊ．Ｒ．Ｈａｕｓｅｒ及びＪ．Ｗａｗｒｚｙｎｅｋ著「Ｇａｒｐ：再構成可能コプロセッサを備えたＭＩＰＳプロセッサ」、カスタム計算機のためのＦＰＧＡに関するＩＥＥＥシンポジウム（ＦＣＣＭ’９７）会議録
【非特許文献６】Ｂｅｒｒｙ及びＳｅｔｈｉ著「正規表現から決定性オートマトンまで」、理論コンピュータサイエンス、１９８６年
【非特許文献７】Ｂｒｕｃｅ  Ｗａｔｓｏｎ著「有限オートマトン構成アルゴリズムの分類」、４．３節、１９９４年
【非特許文献８】「野生のスパム：続編」、ネットワーク業界雑誌、２００４年１２月
【発明の開示】
【００２０】
本発明者は、正規表現のためにハードウエアアクセラレーションを使用する高性能ランタイム適応サーチプロセッサについて説明する。正規表現は、同等のＤＦＡ及びＮＦＡに変換され、次に、最も費用対効果の大きい解決法が選択される。コンテンツサーチプロセッサは、ＤＦＡ処理エンジン及びＮＦＡ処理エンジンのセットから成る。変換されたＲＥは、次に、適切なＮＦＡ又はＤＦＡエンジンのいずれかにマップされる。プロセッサはまた、ＦＳＡエンジンのアレイによってサポートされる数を超える規則の数の増加を吸収するのに使用することができる複合ＤＦＡ処理エンジンのセットを含むことができる。従って、新しいシステムハードウエアは、複合ＤＦＡがコンテンツサーチプロセッサに関連したメモリと共に利用可能なものを超える大きなメモリ使用を結果として生じるまで必要ではない。
【００２１】
セキュリティのような多くのコンテンツサーチアプリケーションでは、悪意のあるトラフィックを検出するために使用される規則又は署名を絶えず更新すべきである。このようなアプリケーションでは、セキュリティの脅威の絶えず進化する性質に遅れを取らないように、解決法が適応可能であることが重要である。常に接続されているタイプの使用モデルでは、頻繁にセキュリティシステムで更新される最新のセキュリティ脅威緩和規則を有することが極めて重要である。複合ＤＦＡタイプアーキテクチャが使用された場合、あらゆる新しいセキュリティ規則又はポリシーをコンパイル及びリリースする段階は、かなりの時間を消費する可能性があり、セキュリティ脅威の影響を防ぐために更新が間に合わない可能性がある。このような環境では、新しい規則ベースのリリースには、８から２４時間かかることがあり、これは、常に進化している脅威に対してかなり遅れた対応である。本発明のプロセッサは、新しい規則のリリースが、これらの規則をＮＦＡ及びＤＦＡに変換して、これらのごく僅かの規則だけをコンテンツサーチプロセッサに更新することであることによりこの問題に対処する。従って、新しい脅威への対応は即時になり、新しい規則の合成規則ベースへの統合及びこれらを複合ＤＦＡに変換することから生じる多大な遅延を必要としない。
【００２２】
数個の状態のみを含むＲＥのいくつかのインスタンスがある。例えば、コンテンツサーチが、「*．ｅｘｅ」又は「*．ｃｏｍ」又は「*．ｈｔｍｌ」などを捜す段階を含む場合、これらのＲＥに対するＮＦＡ又はＤＦＡは、少ない数の状態を含む。従って、全てのＤＦＡ又はＮＦＡエンジンが、例えば１６状態をサポートする場合、１つのエンジン当たり複数の規則を含むことが可能になる。本発明は、１つのＦＳＡエンジン当たり複数の規則を可能にすることによってＦＳＡエンジンの最大利用を可能にする。このエンジンはまた、より大きなＦＳＡを処理することができるスーパーブロックを作成するために基本エンジンを共に鎖で繋ぐためにＦＳＡ拡張論理を提供する。
【００２３】
１９８６年に「理論コンピュータサイエンス」で公開された論文「正規表現から決定性オートマトンまで」で Ｂｅｒｒｙ及びＳｅｔｈｉは、正規表現をＮＦＡによって表現することができ、それによって状態機械の所定の状態がＴｈｏｍｐｓｏｎＮＦＡとは異なり、１つの記号によって入力されることを示している。更に、Ｂｅｒｒｙ−ＳｅｔｈｉのＮＦＡは、εフリーである。「Ｖ」項のＲＥは、ＮＦＡ実現方法のようなＢｅｒｒｙ−Ｓｅｔｈｉを使用する「Ｖ＋１」状態ＮＦＡを使用して表現することができる。Ｂｅｒｒｙ−Ｓｅｔｈｉ方法の二重性は、１つの状態からの機械に至る全ての遷移が同じ記号に依存する場合に存在する。これは、１９９４年に公開されたＢｒｕｃｅ  Ｗａｔｓｏｎ著「有限オートマトン構成アルゴリズムの分類」という論文のセクション４．３に示されている。本出願の本発明者は、Ｂｅｒｒｙ−ＳｅｔｈｉのＮＦＡ実現の原理及びその構成の二重性を利用するＮＦＡサーチエンジンアーキテクチャを作成する方法を示すものである。ＮＦＡサーチエンジンは、任意の正規表現を達成するようにプログラマブルである。
【００２４】
本発明では、本発明者は、本発明のコンテンツサーチプロセッサが、サーバ、パーソナルコンピュータ、又はワークステーションなどのようなコンピュータ装置に一般アプリケーションアクセラレーションを作成するのにどのように使用されるかを示している。本発明者は、実行されるアプリケーションにその装置のオペレーティングシステムによって提供することができる一般的な機能として使用できる例示的なコンテンツサーチＡＰＩを示しており、これは、コンテンツサーチプロセッサを利用し、これらの装置の汎用プロセッサで実行されるのに比べてそのアプリケーションの性能を大幅に改善することができる。
アンチ−スパムの例示的なアプリケーションは、本出願に例証されており、これは、実行される計算サーバの汎用プロセッサで実行される現在の解決法とは異なり、高速回線速度アプリケーションになるように加速することができる。
【００２５】
本発明者は、プロトコルプロセッサに連結されたコンテンツサーチプロセッサを使用する実施例を例証しており、それによってコンテンツサーチ処理は、トラフィックコンテンツに依存して行われるトラフィック及び適切なアクションに沿って行うことができる。本発明のプロセッサは、従って、トラフィックストリームに対してコンテンツに特定のサーチ規則を適用するために使用することができる。例えば、特定のパケット又はパケットのストリームがＳＭＴＰトラフィックを運ぶ場合、プロトコルプロセッサは、次に、それをコンテンツサーチプロセッサに知らせておき、適切なフロー情報を提供することができる。次に、コンテンツサーチプロセッサは、メモリから現在のフローに対してフローコンテキストを検索し、サーチエンジンに関連したアプリケーションメモリからＳＭＴＰアプリケーション規則コンテキストを検索する。サーチエンジンは、特定のフローのコンテンツ及びそれに関連したアプリケーションコンテキストを処理するように構成されている。従って、コンテンツサーチは、フローのパケットがパケット間の有意な時間ギャップで到着した場合にも同じフローの複数のパケットにわたって継続することができ、複数の異なるアプリケーション規則コンテキストを適用することができる。このようなアーキテクチャを使用することによって、規則コンテキストを急速に変更できず、コンテキストをグローバルメモリからＦＳＡエンジンの各々に運ばなくてはならない可能なアーキテクチャに比べて、多大な性能利益を結果として生じることができる。
【００２６】
本発明者はまた、ホストプロセッサからＴＣＰ／ＩＰプロトコルスタックのオーバーヘッドを大幅に低減し、ＩＰに基づく高回線速度のストレージ及びデータ移送ソリューションを可能にする高性能ハードウエアプロセッサについて説明する。
本特許はまた、ホストプロセッサからのＴＣＰ／ＩＰプロトコルスタックオーバーヘッドを大幅に低減し、かつファイアウォール、暗号化、暗号解読、及び侵入検出などを含む高回線速度のセキュリティ処理を可能にする新しい高性能ハードウエアプロセッサを説明するものである。本特許はまた、スパム、ウイルス、デジタル権利管理情報、インスタントメッセージ検査、ＵＲＬマッチング、アプリケーション検出、悪意のあるコンテンツ、及び他のコンテンツを検出し、更にアンチ−スパム、アンチ−ウイルス、及び同様の機能を有効にすることができる特定の規則を適用するために使用することができるコンテンツ検査アーキテクチャを説明する。コンテンツ検査エンジンは、コンテンツに対するデジタル権利管理規則を検出して実施するために使用することができる。コンテンツ検査エンジンはまた、ＵＲＬマッチング、ストリングサーチ、コンテンツベースの負荷均衡化、クレジットカード番号又は社会保障番号、又は健康情報のような機密情報サーチなどのために使用することができる。コンテンツ検査エンジン結果は、同様にランタイム適応プロセッサのオペレーションを指示するために使用することができる。
【００２７】
本特許はまた、ネットワークに送信されるか又は受信されるデータの要求にランタイム適応可能な新しいプロセッサアーキテクチャを説明する。このプロセッサのランタイム適応可能な特徴は、ユーザ定義可能なポリシーの制御の下にネットワークデータに対して作動するサービスを配備するのに使用することができる。適応プロセッサはまた、ネットワークデータに対して作動を行わない時に、又は十分に適応ハードウエアリソースが利用可能な場合にネットワークデータ処理と共に、ホストプロセッサから計算集約的演算を動的にオフロードするのに使用することができる。プロセッサは、開示する高性能プロトコルプロセッサを使用してＴＣＰ／ＩＰ又はＳＣＴＰ又はＵＤＰなどのようなプロトコル処理を行い、次に、適応処理ハードウエアを使用して、ソケット層セキュリティ、移送層セキュリティ、暗号化／暗号解読、ＲＤＭＡ、ＲＤＭＡセキュリティ、アプリケーション層セキュリティ、コンテンツ検査、深いパケット検査、ウイルス走査又は検出、ポリシー処理、コンテンツベースのスイッチング、負荷平衡化、コンテンツベースの負荷平衡化、仮想化又はより高度なアプリケーション層処理、又はその組合せのような他の機能又はサービスを提供する。より高い層の処理は、本特許のプロセッサを動的に適応又は再構成することによって加速することもできるアプリケーションレベルのプロトコル処理（例えば、ＨＴＴＰ、ＨＴＴＰＳ、ＸＭＬ、ＳＧＭＬ、セキュアＸＭＬ、他のＸＭＬ派生物、テルネット、ＦＴＰ、ＩＰストレージ、ＮＦＳ、ＣＩＦＳ、ＤＡＦＳ等に対するプロトコル処理）を更に伴う場合がある。これは、専用アクセラレータハードウエアの追加の大きなシステムコストを追加することなく、ターゲットシステムのホストプロセッサに対する処理オーバーヘッドを大幅に低減することができる。
【００２８】
本特許のランタイム適応プロセッサを配備するシステムの処理機能は、性能の恩典を達成するためにホストプロセッサを備えたシステムを絶え間なく更新する必要なく拡張と改良を続けることができる。プロセッサのハードウエアは、計算クラスターに組織された計算要素を含むことができる。計算要素は、他の機能に加えて論理及び算術演算を提供することができる。計算要素は、実施例によって選択された時に１ビット、２ビット、４ビット、８ビット、又はｎビットのデータサイズに対して演算することができる。従って、複数の計算要素は、一緒に望ましいサイズの演算子を提供することができる。例えば、各計算要素が８ビットの最大データサイズに対して演算を提供する場合、３２ビットのオペランドに対して演算するために、４つの計算要素が、各々３２ビットのオペランドのバイトに対して演算することができる。計算クラスター内の計算要素は、動的に変更又は適応可能な相互接続ネットワークを使用して互いにプログラム的に相互接続することができる。計算クラスターはまた、互いに動的に相互接続することができ、適応ネットワークをプログラム的に形成する。従って、計算クラスター内並びに計算クラスターの外側の計算要素のアレイの間に任意の相互接続を作り出すことができる。計算要素は、各々が動的に変更され、多重化装置又は他の論理ブロック又は他の手段を通して必要な論理ブロックをプログラム的に選択して接続することにより、必要な機能又は演算を提供することができる。計算要素はまた、ＡＬＵ及び他の機能ブロックを備えた単純なプロセッサとすることができる。この場合、計算要素（ＣＥ）のハードウエア機能を変更するために、それは、プログラム的に命令されてある一定の機能又は演算を実行する。計算要素の各々に対して選択された演算は、異なる可能性がある。従って、本特許のプロセッサハードウエアは、異なる機能を提供するために、動的に、すなわち、演算中又は実行時に変更又は適応させることができる。説明のために、各々８ビットの演算を提供する８つの計算要素を備えた計算クラスターの例を取り上げる。３２ビット加算の次にｎビットのシフト演算が続くような２つの３２ビット演算の実行が望ましい場合、計算要素は、それぞれ４つの２組にグループ分けすることができる。第１のグループは、各々が一度に８ビットに対して演算することができる加算演算を提供するようにプログラムされるであろう。プログラム的に選択されたＣＥの間の相互接続を通じて適切なキャリー及びフラグ及び他の出力が利用可能であると考えられる。ＣＥの第２のグループは、入ってくるデータに対してシフト演算を提供するようにプログラムされると考えられる。１つのそのようなＣＥの設定は、アバター又は仮想構成／設定と呼ぶことができる。ＣＥは、次に、このアバターが維持されている期間にわたって入力オペランドに対してこれらの演算の提供を続けることができる。次に、アバターを新しいアバターに動的に変更することができる。例えば、上で使用された例では、１クロック周期又は複数のクロック周期又は他の周期と同じくらい短いある一定の期間後に、プロセッサは、３２ビット「加算」からのアクセラレーションサポートを提供する段階から、２つの１６ビット「減算」のようなシフトが続き、２つの１６ビット論理「ＡＮＤ」に切り換える必要があると仮定する。そのような事例では、ハードウエアは、２つのＣＥの４つのグループを形成し、各グループは、１６ビットのオペランドに対して演算するように設定される。この場合の第１の４つのＣＥは、ここでは加算機能を提供する段階から減算機能に動的に切り換えるか又は変更することができる。それらは、更に、以前のアバターにおいて３２ビット演算を提供する１つのグループの代わりに１６ビット演算を提供する２つのグループで演算するようにここで動的に切り換えることができる。同様に、以前のアバターからの４つのＣＥの第２のグループは、論理ＡＮＤ演算を提供するようにここで動的に切り換えるか又は変更することができ、１６ビット演算を提供する２つのグループとして設定することもできる。これは、その時点で要求される機能の必要性に従って動的に変更されたハードウエアの新しいアバターを形成する。従って、本特許のランタイム適応プロトコルプロセッサは、ＣＥによって提供されたこれらの演算子の相互接続と共に細かい細分性でその機能を変更することができ、ランタイム変更可能又は適応可能なハードウエアプラットフォームを形成する。サポートされた演算は、上述の事例で使用されたものよりもかなり複雑になる場合がある。これらの例は、第１に、機能のより良好な認識をもたらすように提供され、故意に単純明快にされたものである。例を通して単一方向のフローを提案したが、これは、唯一の演算モードとは解釈されないものとする。上の例の演算からの出力は、ＣＥの第１のグループに再循環させることができ、これは、ハードウエアのパイプライン型ループを可能にすると考えられる。ハードウエアで有効にされるアルゴリズム又はアプリケーション又はサービスによって要求される時に、異なる機能性を提供するために、ある一定の期間にわたってＣＥの異なるステージが切り換えられるより複雑なシナリオは、ＣＥの動的に適応可能な性質と相互接続ネットワークを用いて実現可能である。演算のパイプライン型ステージは、従って、必要に応じて任意のループバックを用いて可能である。従って、ハードウエア内で加速又はサポートされているアプリケーション又はサービスは、時間と共に増加する可能性があり、ユーザは、コスト、性能、リソース、アプリケーションの発見、アプリケーションの開発、又はユーザに新しいアプリケーション又はサービスを発明又は開発させることができるいずれかの他の理由のために、必要又は実現可能な時にランタイム適応プロトコルプロセッサに適切にマップすることによって選択したアプリケーションを加速するように判断することができる。従って、ハードウエアシステムは、新しいシステム又はアクセラレータなどを購入する費用を掛ける必要なく、このようなアプリケーションを使用するようになっている。本発明のプロセッサの適応構成要素を利用する新しいサービスが開発され、及び／又は配備されるので、システム機能は、時間と共に増大させることができる。新しいサービス又はポリシー又はその組合せは、ユーザの制御の下でネットワーク上の適切なシステムに配備することができる。
【００２９】
従来的に、ＴＣＰ／ＩＰネットワーキングスタックは、ソフトウエアスタックとしてオペレーティングシステムカーネルの内部で実行されている。ソフトウエアＴＣＰ／ＩＰスタックの実行は、上述のように、１Ｇｂｐｓネットワークに情報提供する時に、１ＧＨｚプロセッサで使用可能な処理サイクルの５０％よりも多くを費やす。オーバーヘッドは、チェックサム計算、メモリバッファコピー、パケット到着時のプロセッサ割り込み、セッションの確立、セッションの取外し、及び他の確実な移送サービスを含むソフトウエアＴＣＰ／ＩＰスタックの様々な局面から生じる。ソフトウエアスタックのオーバーヘッドは、回線速度がより高い時は法外に大きくなる。より性能が低いホストプロセッサを使用する無線ネットワークのような回線速度がより低いネットワークでも同様の問題が発生する。ハードウエアの実施によってホストプロセッサからオーバーヘッドを取り除くことができる。
【００３０】
オペレーティングシステムから提供されたソフトウエアＴＣＰ／ＩＰネットワーキングスタックは、ホストプロセッササイクルの大部分を使い果たす。ＴＣＰ／ＩＰは、不安定なデータリンク上で実行することができる確実な移送手段である。従って、ネットワークパケットが欠落するか又はエラーを有する場合、ＴＣＰは、パケットの再送信を行う。パケットのエラーは、パケット内に有するチェックサムを使用して検出される。ＴＣＰパケットの受け取り側は、受け取ったパケットのチェックサムを実行し、それを受け取ったチェックサムと比較する。これは、パケット内の各受信バイトに関わる各パケット上で実行される高価な計算集約的作業である。発信元と宛先の間のパケットは、順序が狂って到着する場合があり、ＴＣＰ層は、それをより上の層に呈示する前にデータストリームの順序付けを行う。ＩＰパケットはまた、リンク層の最大移送ユニット（ＭＴＵ）に基づいてフラグメント化される場合があり、従って、受け取り側は、パケットを非フラグメント化することを期待される。これらの機能は、順序の狂ったパケット、フラグメント化したパケット、又は肯定応答されなかったパケットの例えばネットワークカード上のメモリへの一時的保存をもたらす。回線速度が１Ｇｂｐｓを超えて増加すると、これらによって生じるメモリサイズオーバーヘッド及びメモリ速度の妨害により、ネットワークカードにかなりのコストが追加され、同じく莫大な性能的オーバーヘッドを引き起こす。多くのプロセッサのリソースを費やす別の機能は、ネットワークカードバッファ、カーネルバッファ、及びアプリケーションバッファへの／からのデータのコピーである。
【００３１】
マイクロプロセッサは、深いパイプライン化とスーパースカラーアーキテクチャを使用して、益々高性能と高速度を実現している。小さなパケットの到着時にこれらのプロセッサに割り込むと、コンテキスト切替オーバーヘッド、パイプラインフラッシュ、及びパイプラインの補充のために厳しい性能劣化を引き起こすことになる。従って、プロセッサの割り込みは、最も基本的な割り込みだけにして最小限にすべきである。ブロックストレージトラフィックがＴＣＰ／ＩＰネットワーク上で移送される時、これらの性能の問題が重大になり、ストレージトラフィックの処理能力と待ち時間に大幅な影響を与える。従って、ストレージトラフィックの移送の処理全体におけるプロセッサの介入は、ＩＰベースストレージソリューションが、ハードウエア実行を目的として特化されたファイバチャンネルのような他の特化されたネットワークアーキテクチャと同等な性能と待ち時間を有するために最小にする必要がある。ｉＳＣＳＩ、ＦＣＩＰ、ｉＦＣＰ、及び他のもの（ＮＦＳ、ＣＩＦＳ、ＤＡＦＳ、ＨＴＴＰ、ＸＭＬ、ＸＭＬ派生物（音声ＸＭＬ、ＥＢＸＭＬ、マイクロソフトＳＯＡＰ、及びその他など）、ＳＧＭＬ、及びＨＴＭＬフォーマットのような）のような出現してきたＩＰベースストレージ基準は、ＴＣＰ／ＩＰセグメント内のストレージ及びデータトラフィックをカプセル化する。しかし、通常は、ＴＣＰセグメントとＴＣＰパケットによってカプセル化されたプロトコルデータユニットとの間には、アラインメント関係が存在しない。これは、今日のネットワークでは非常に頻繁なイベントであるパケットの順序が狂って到着した時に問題となる。ストレージ及びデータブロックは、ストリーム内の中間パケットが到着するまで、使用のための抽出を順序が狂ったパケットから行うことができず、この中間パケットは、ネットワークアダプタにこれらのパケットをメモリに保存させ、中間パケットの到着時にそれらを検索させ、それらを順序化させることになる。これは、要求されるメモリストレージのサイズから、及びメモリサブシステムがサポートすることを期待される性能からも、特に回線速度が１Ｇｂｐｓを超える時に高価になる可能性がある。各ＴＣＰセグメントがプロトコルデータユニット及びそのシーケンスを一意的に識別することができる場合、このオーバーヘッドを排除することができる。これは、パケットをホストシステム内のそれらの末端メモリ位置に直接移送することを可能にすることができる。ホストプロセッサの介入はまた、ストレージサブシステムに転送される場合があるか又はクラスター化した環境又は他のクライアントサーバ環境で他のプロセッサと共有される大きなデータブロックの転送では最小限にされるべきである。プロセッサは、影響を最小限にするためにストレージコマンド境界上でのみ割り込まれるべきである。
【００３２】
本明細書に示すＩＰプロセッサは、革新的な構造的特徴と設計により、以上概説した様々な問題の影響を除去するか又は著しく低減する。説明したプロセッサのアーキテクチャは、ストレージ及びデータペイロードを運ぶＴＣＰトラフィックを終了させる機能を提供し、それによってホストプロセッサ上のＴＣＰ／ＩＰネットワーキングスタックのオーバーヘッドを除去するか又は大幅に低減し、パケットを入力から出力まで最小の待ち時間で通過させるパケットストリームアーキテクチャをもたらす。高回線速度のストレージ又はデータトラフィックがＩＰ上で搬送されることを可能にするために、従来はホストカーネル又はドライバソフトウエアによって維持されていた様々な接続（セッション）に対する伝送制御ブロック情報を維持することが必要になる。本特許で使用されるように、用語「ＩＰセッション」は、ＩＰ上で実行されるセッション志向プロトコルに対するセッションを意味する。例としては、ＴＣＰ／ＩＰ及びＳＣＴＰ／ＩＰなどがある。各パケットに対するセッション情報へのアクセスは、大幅な処理オーバーヘッドを付加する。説明したアーキテクチャは、このオーバーヘッドを大幅に低減する高性能メモリサブシステムを作り出す。このプロセッサのアーキテクチャは、主としてコマンド又はデータ転送終了境界でのホストプロセッサに対する割り込みを最小限にする知的フロー制御の機能を提供する。
【００３３】
今日、セキュリティを有するＴＣＰ／ＩＰプロセッサは提供されていない。
今日配備されている従来のネットワークセキュリティモデルは、周辺ファイアウォール及び侵入検出システムの形態をした周辺セキュリティを伴うものである。しかし、増大する量のビジネスがオンラインで行われるので、「信用できるインサイダー」、すなわち、従業員、取引相手、顧客、及び外部からの業者に対して企業ネットワークのアクセスを提供する必要性が存在する。これは、企業ネットワーク内部の情報資産に対して潜在的な脅威を生じるものである。主要な会社とＦＢＩによる最近の調査は、情報システムに対する無許可アクセスの７０パーセントを超えるものが、従業員又は信用できるインサイダーによって犯されており、従って、実質的な財政上の損失をもたらす侵入の９５パーセントを超えるものがそうであることを見出している。リモートアクセスサーバ、取引相手との対等ネットワーク、ＶＰＮ、及び無線アクセスポイントが、ネットワークの境界を曖昧にする環境では、周辺セキュリティは十分ではない。そのような環境では、組織は、周辺でのポイントセキュリティ製品を使用するのではなく、周辺機器、ゲートウェイ、サーバ、スイッチ、ルータ、及びクライアントを含む全ての層でネットワークセキュリティに対処する統合戦略を配備する必要がある。
【００３４】
従来的なファイアウォールは、内部ネットワークからの有害なＩＰアドレスを維持することによってネットワーク層での周辺セキュリティを提供する。しかし、多くの新しい攻撃が、公知のソフトウエア及びより高いレベルのプロトコルの公知の脆弱性を利用するウイルス又はスパムとして到来するために、アプリケーション層のファイアウォールを開発して配備することが望ましい。これらはまた、主として周辺に置くのではなく、ネットワークにわたって分散されるべきである。
【００３５】
現在では、ＴＣＰ／ＩＰ処理は、クライアント、サーバ、及び他のコア及びエンドシステムにおけるソフトウエアスタックとして存在するので、セキュリティ処理、特に、ファイアウォール、侵入検出及び防止のような機能もまた、ソフトウエア内で行われる。これらのネットワークの回線速度が１Ｇｂｐｓ及び１０Ｇｂｐｓに達する時に、ＴＣＰ／ＩＰプロトコルスタックは、ソフトウエアスタックが利用可能なホストプロセッササイクルの大部分を消費するために、ハードウエア内で実行されることが肝要である。同様に、セキュリティ処理機能が周辺部だけに配備されないでコア又はエンドシステム上に配備されている場合、これらの作動を実行するのに必要な処理電力は、これらのシステムのホストプロセッサ上に大きなオーバーヘッドをもたらす場合がある。従って、ソフトウエアベースの分散セキュリティ処理は、システムの必要な処理機能を増大させ、そのようなソリューションを配備するコストを上昇させるであろう。ソフトウエアベースの実施は、サーバの性能に対して有害であり、クライアントに応答するサーバの遅れ又は待ち時間を著しく増大させると考えられ、サービス提供することができるクライアントの数を制限するであろう。更に、ネットワーク攻撃中にホストシステムソフトウエアスタックが阻害された場合、セキュリティ機能を隔離することが不可能であり、それによってネットワークセキュリティを阻害する場合がある。更に、ＴＣＰ／ＩＰプロトコル処理がハードウエア内部で行われるようになるので、ソフトウエアネットワーク層のファイアウォールは、セキュリティ機能を実行するために必要な全ての状態情報へのアクセスを持たない場合がある。従って、プロトコル処理ハードウエアは、それが処理するプロトコル層情報へのアクセスを提供するように要求されることがあり、ホストは、ネットワークファイアウォールの必要性を満たすために機能の一部をやり直さなければならないであろう。
【００３６】
ハードウエアベースＴＣＰ／ＩＰと本特許のセキュリティ規則処理プロセッサとは、ＴＣＰ／ＩＰプロトコルスタックによる性能障害の解決に加えて、分散したコアセキュリティ処理の障害を解決する。本特許のハードウエアプロセッサは、ホストＣＰＵからのＴＣＰ／ＩＰプロトコルスタック処理のオーバーヘッドを大幅に低減し、リンク、ネットワーク、及び移送層のような様々なプロトコル層でのファイアウォールのようなセキュリティ処理機能を有効にし、それによって意図されたアプリケーションに対するホストＣＰＵの性能を実質的に改善する。更に、このプロセッサは、プログラマブルプロセッサと開示する分類／ポリシーエンジンとを使用してより高い層のセキュリティ機能を実行するための深いパケット検査を実行するために使用することができる機能を提供する。本特許は、スパム、ウイルス、デジタル権利管理情報、インスタントメッセージ検査、ＵＲＬマッチング、アプリケーション検出、悪意のあるコンテンツ、及び他のコンテンツを検出し、アンチ−スパム、アンチ−ウイルス、及び同様のセキュリティ、更にコンテンツ検査及び処理機能を有効にすることができる特定の規則を適用するために使用することができるコンテンツ検査アーキテクチャを説明するものである。本特許のプロセッサは、従って、ネットワーク層とアプリケーション層とを含む全ての層でのファイアウォールのような機能を実行するために、ＯＳＩスタックの全ての層でハードウエアＴＣＰ／ＩＰとセキュリティ処理とを有効にする。
【００３７】
本特許のプロセッサアーキテクチャはまた、統合された最新セキュリティ機能を提供する。このプロセッサは、パケット毎にネットワークトラフィックのストリーム内暗号化と暗号解読とを考慮し、それによって高回線速度を可能にし、同時にデータトラフィックの機密性を提供する。同様に、ストレージトラフィックが、サーバからＳＡＮ又は他のストレージシステム内のストレージアレイまでネットワーク上で運ばれる時に、それは、直接接続されたストレージシステムが対処する必要のない様々なセキュリティ脆弱性に露出される。このプロセッサは、ストレージトラフィックのストリーム内暗号化と暗号解読とを考慮し、それによって高回線速度を可能にし、同時にストレージデータトラフィックの機密性を提供する。
【００３８】
ネットワークトラフィックの分類は、深いパケットの検査及び処理のための僅かなサイクルを残してパケットプロセッサ上で利用可能な処理サイクルの半分までを消費する別のタスクである。ＩＰベースのストレージトラフィックは、プロトコルの性質上、高速で待ち時間が少ない深いパケット処理を要求する。説明したＩＰプロセッサは、プログラマブル分類エンジンを提供することにより、分類のオーバーヘッドを大幅に低減する。本特許のプログラマブル分類エンジンは、パケット毎、トランザクション毎、及びフロー毎に実施することができる最新セキュリティポリシーの配備を可能にする。これは、組織内からのセキュリティ脅威の出現に対処するために、高性能及び費用効果的方法で分散企業セキュリティソリューションの配備における大きな改善をもたらすことになる。
【００３９】
分散セキュリティソリューションの生成を可能にするために、ネットワーク全体を費用効果的に管理する情報技術マネージャの必要性に対処することが非常に重要である。分散セキュリティの追加は、その管理を容易にするための手段がないと、ネットワークの管理コストを大幅に増加させる可能性がある。本特許の開示はまた、セキュリティ規則を集中した場所から本特許のプロセッサを使用する様々な内部ネットワークシステムまで分散させるために、ＩＴ職員によって使用することができるセキュリティ規則／ポリシー管理機能を提供するものである。プロセッサは、集中した規則管理システムと対話することができるハードウエア及びソフトウエア機能を含む。従って、セキュリティ規則の分散と、規則の遵守又は侵害の情報、又は有害なシステム及びユーザなどの他の関連情報の収集とは、ＩＴマネージャによって１つ又はそれよりも多くの集中位置から処理することができる。従って、複数の分散セキュリティ配備は、集中位置から個々に制御することができる。
本特許はまた、ホストシステムがウイルス又は悪意のある攻撃のいずれかを通じて阻害させられた場合でさえも、ネットワークセキュリティと保全性の維持を可能にするプロトコルスタック処理のための安全な作動環境を作り出す手段を提供する。本特許は、次世代コンピュータシステムの信頼できるコンピュータ環境の必要性に大きく寄与するものである。
【００４０】
ストレージ容量とストレージネットワークにおける大きな成長は、ＩＴ部門の主なコストアイテムとしてストレージ領域管理を作り出している。管理コストを抑えるためにポリシーベースのストレージ管理が要求される。説明したプログラマブル分類エンジンは、パケット、トランザクション、フロー、及びコマンド境界に対して強制することができるストレージポリシーの配備を可能にする。これは、ストレージ領域の管理コストを大幅に改善することになる。
【００４１】
プログラマブルＩＰプロセッサアーキテクチャはまた、顧客特定アプリケーションの配備を可能にするのに十分なヘッドルームを提供する。これらのアプリケーションは、例えば、ネットワーク管理、ストレージファイアウォール又は他のセキュリティ機能、帯域幅管理、サービス品質、仮想化、性能モニタリング、ゾーニング、及びＬＵＮマスキングなどの複数のカテゴリに属するであろう。
適応プロセッサハードウエアを使用して、利用可能な再プログラム可能リソース、配備されたアプリケーション、サービス、ポリシー、又はその組合せに基づいて、上述のアプリケーション又はサービスの多くを加速することができる。
【発明を実施するための最良の形態】
【００４２】
本発明者は、ホストプロセッサからコンテンツサーチの性能障害を軽減することができる新しい高性能コンテンツサーチプロセッサを提供する。本特許のサーチプロセッサは、ＮＦＡ及びＤＦＡベースのサーチエンジンを使用して並行して多数の正規表現サーチを行うために使用される。サーチプロセッサは、最高クラスサーバマイクロプロセッサが、１００Ｍｂｐｓより下で同じタスクを実行できるだけである場合でも、１Ｇｂｐｓから１０Ｇｂｐｓ及びそれより速い回線速度で高速コンテンツサーチを実行することができる。コンテンツサーチプロセッサは、分類及びセキュリティアプリケーションに使用することができる層２から層４のサーチを実行するのに使用できるだけでなく、ディープパケット検査及び層４から層７のコンテンツ分析及びセキュリティアプリケーションを実行するのに使用することができる。
【００４３】
本発明者は、ソフトウエアＴＣＰ／ＩＰスタックの厳しい性能の影響からホストプロセッサを解放するために、ハードウエアにＴＣＰ／ＩＰスタックを実施する新しい高性能で待ち時間が短い方法を提供する。このハードウエアＴＣＰ／ＩＰスタックは、次に、付加的な処理要素とインタフェースで接続され、高性能で待ち時間が短いＩＰベースのストレージアプリケーションを有効にする。
このシステムはまた、高性能で待ち時間が短いＩＰベースのネットワークセキュリティアプリケーションを有効にするために、処理要素を有するハードウエアに適切なセキュリティ機能を備えたハードウエアＴＣＰ／ＩＰの実施を使用して分散式にファイアウォール内部企業ネットワークのようなセキュリティ機能を実施する新しい方法を可能にするものである。ハードウエアプロセッサは、サーバ、ワークステーション、クライアントＰＣ、ノートブックコンピュータ、手持ち式装置、スイッチ、ルータ、及び他のネットワーク装置のネットワークインタフェースカード内で使用することができる。サーバは、ウェブサーバ、リモートアクセスサーバ、ファイルサーバ、部門別のサーバ、ストレージサーバ、ネットワーク接続ストレージサーバ、データベースサーバ、ブレードサーバ、クラスターサーバ、アプリケーションサーバ、コンテンツ／メディアサーバ、及びグリッドコンピュータ／サーバなどとすることができる。ハードウエアプロセッサはまた、スイッチ又はルータ又はアプライアンスなどのようなエンドシステム又はネットワークコアシステムのうちの１つのＩ／Ｏチップセット内で使用することができる。
【００４４】
このシステムは、企業ネットワークの内部システムにおけるファイアウォール、侵入検出、ウイルス走査、仮想専用ネットワーク、及び機密保護サービスなどのような分散セキュリティ機能を有効にする。分散セキュリティ機能は、各システム又はその重要なシステムの一部で、本特許のハードウエアプロセッサを使用して実施することができ、他のものは、それらのサービスをソフトウエアに配備することができる。従って、全体ネットワークは、ＩＴマネージャによって判断される性能、コスト、及びセキュリティの必要性次第で別々のシステムにおけるハードウエア実施、又はソフトウエア実施、又はその組合せとして分散セキュリティを含むことになる。分散セキュリティシステムは、上述の原理を使用してネットワークを管理するためにＩＴマネージャによって使用される１つ又はそれよりも多くの集中システムから管理されることになる。これは、本特許の様々な要素を使用してネットワーク内のセキュリティの効率的で一貫した配備を可能にすることになる。
これは、ＴＣＰ／ＩＰの終了、高性能で待ち時間が短いＩＰストレージ機能、遠隔ＤＭＡ（ＲＤＭＡ）機能、セキュリティ機能、及びプログラマブル分類、ポリシー処理機能、ランタイム適応処理、及び高速コンテンツサーチなどの恩典をもたらすために、様々な形式で実行することができる。以下は、これを実行することができるいくつかの実施形態である。
【００４５】
サーバ
説明するアーキテクチャは、ホストサーバプロセッサ又は複数のプロセッサをＴＣＰ／ＩＰ及び／又はセキュリティ及び／又はサーチソフトウエア及びこれらの性能オーバーヘッドから解放するハードウエアベースのＴＣＰ／ＩＰ機能又はハードウエアＴＣＰ／ＩＰ及びセキュリティ又はサーチ機能又は以上の組合せを提供する高性能サーバ環境で具現化することができる。本発明のいずれのプロセッサも、高性能ネットワーキングインタフェースにハードウエアＴＣＰ／ＩＰ及び／又はセキュリティ及び／又はコンテンツサーチを供給するサーバチップセットに対するコンパニオンプロセッサとすることができる。サーバは、ブレードサーバ、アプライアンスサーバ、ファイルサーバ、シン・サーバ、クラスター化サーバ、データベースサーバ、コンテンツサーチサーバ、ゲームサーバ、グリッドコンピュータサーバ、ＶＯＩＰサーバ、無線ゲートウェイサーバ、セキュリティサーバ、ネットワーク取り付けストレージサーバ、又は従来のサーバのような様々なフォームファクタとすることができる。既存の実施形態は、サーバマザーボード上の高性能ネットワークインタフェースの生成を可能にする。
【００４６】
更に、説明したランタイム適応プロトコルプロセッサ又はセキュリティプロセッサ又はサーチプロセッサ又は上述のアーキテクチャの組合せはまた、ソケット層セキュリティ、移送層セキュリティ、暗号化／暗号解読、ＲＤＭＡ、ＲＤＭＡセキュリティ、アプリケーション層セキュリティ、仮想化又はより高度なアプリケーション層処理のようなプロトコル処理に加えて付加的な機能又はサービスを提供するのに使用することができ、この仮想化又はより高度なアプリケーション層処理は、アプリケーションレベルのプロトコル処理（例えば、ＨＴＴＰ、ＨＴＴＰＳ、ＸＭＬ、ＳＧＭＬ、セキュアＸＭＬ、他のＸＭＬ派生物、テルネット、ＦＴＰ、ＩＰストレージ、ＮＦＳ、ＣＩＦＳ、ＤＡＦＳ等に対するプロトコル処理）を更に伴う場合がある。一実施形態は、専用プロトコルプロセッサと本特許で開示するようなランタイム適応プロセッサにマップされたＸＭＬアクセラレーションとを使用したＴＣＰ／ＩＰプロトコル処理を含むことができると考えられる。プロトコルプロセッサは、システムの必要性とサポートされたライン速度次第でＲＤＭＡ機能を提供することができるか又はできないこともある。本発明のセキュリティ処理機能はまた、この実施形態に任意的に組み込むことができる。本特許のランタイム適応プロセッサ上のＸＭＬデータ処理に対してセキュリティアクセラレーションサポートを提供するために、同じアーキテクチャを使用することもできると考えられる。
【００４７】
サーバチップセットに対する随伴プロセッサ
サーバ環境はまた、高性能ＴＣＰ／ＩＰ及び／又はＲＤＭＡ機能に加えて、説明したプロセッサの高性能ＩＰストレージ処理性能に影響を及ぼすことがある。そのような実施形態では、プロセッサは、サーバプロセッサからのＴＣＰ／ＩＰオフロードに加えて高性能ネットワークストレージＩ／Ｏ性能を提供する、サーバチップセットに対する随伴プロセッサとすることができる。この実施形態は、マザーボード上に高性能ＩＰベースのネットワークストレージＩ／Ｏの作成を可能にすると考えられる。換言すれば、それは、マザーボード上の「ＩＰ  ＳＡＮ」を有効にするであろう。
【００４８】
上述のサーバの実施形態と同様に、この実施形態もまた本特許のランタイム適応プロセッサを利用することができ、サーバチップセット内のプロトコル処理のサポートと共に適応ハードウエアアクセラレーションを提供する。ランタイム適応プロセッサは、仮想化、セキュリティサービス、多重経路、プロトコル変換などのようなストレージサービスを提供するように構成することができる。プロトコル変換は、例えば、「ＦｉｂｅｒＣｈａｎｎｅｌ」プロトコルからＩＰストレージプロトコルへ又はその逆、シリアルＡＴＡプロトコルからＩＰストレージ又は「ＦｉｂｅｒＣｈａｎｎｅｌ」プロトコルへ又はその逆などの変換を含むことができる。
【００４９】
更に、本特許のランタイム適応サーチプロセッサは、上述のサーバ実施形態に類似のサーバチップセットにコンテンツサーチアクセラレーション機能を提供することができる。コンテンツサーチプロセッサは、サーチ規則に対して正規表現を使用する様々なアプリケーションに使用することができる。アプリケーションは、バイオインフォマティクス、アプリケーション及びネットワーク層セキュリティ、プロテオミクス、遺伝学、ウェブサーチ、プロトコル分析、ＸＭＬアクセラレーション、及びデータウェアハウジングなどのような分野の範囲を網羅する。
【００５０】
ストレージシステムチップセット
プロセッサはまた、ストレージシステム内のチップセットの対照として使用することができ、これは、ストレージネットワーキング環境でストレージデータサーバの機能を実行するストレージアレイ（又は、他の適切なストレージシステム又はサブシステム）コントローラとすることができる。ＩＰベースＳＡＮにおいてネットワーキングするために、プロセッサは、ストレージアレイコントローラに対してＩＰネットワークストレージ機能を提供すると考えられる。その構成は、ストレージアレイにアクセスして別のストレージ中枢機能を提供するために、システム内に付加的な機能を持ったサーバ環境の構成と同等にすることができる。
【００５１】
この実施形態もまた本特許のランタイム適応プロセッサを利用することができ、ストレージシステムチップセット内のプロトコル処理サポートと共に適応ハードウエアアクセラレーションを提供する。ランタイム適応プロセッサは、仮想化、セキュリティサービス、多重経路、及びプロトコル変換などのようなストレージサービスを提供するように構成することができる。プロトコル変換は、例えば、「ＦｉｂｅｒＣｈａｎｎｅｌ」プロトコルからＩＰストレージプロトコルへ又はその逆、シリアルＡＴＡプロトコルからＩＰストレージ又は「ＦｉｂｅｒＣｈａｎｎｅｌ」プロトコルへ又はその逆、シリアルアタッチドＳＣＳＩプロトコルからＩＰストレージ又は「ＦｉｂｅｒＣｈａｎｎｅｌ」プロトコルへ又はその逆などの変換を含むことができる。ランタイム適応プロセッサはまた、ストレージシステムメタデータ処理を加速するのに使用することができ、システム性能を改善する。
この実施形態はまた、機密情報ポリシー実施、ウイルス／マルウェア検知、サーチを容易にするための高速索引付け、仮想化、コンテンツベースのスイッチング、及びセキュリティサービスなどのような様々なアプリケーションのためのストレージトラフィックの高速サーチを供給するために本特許のランタイム適応サーチプロセッサを利用することができる。
【００５２】
サーバ／ストレージホストアダプタカード
ＩＰプロセッサはまた、高速度ＴＣＰ／ＩＰネットワーキングを提供するサーバホストアダプタカードに組み込むことができる。同じアダプタカードはまた、ＩＰネットワークに対して高速度ネットワークセキュリティ機能を提供することができる。同様に、アダプタカードはまた、ＩＰベースのストレージネットワークに対して高速度ネットワークストレージ機能を提供することができる。アダプタカードは、従来のサーバで使用することができ、また、ブレードサーバの構成においてブレードとして使用することもできる。プロセッサはまた、ＩＰベースストレージネットワーキング機能を提供するストレージアレイ（又は、他のストレージシステム又はサブシステム）のフロントエンド内のアダプタで使用することができる。アダプタカードはまた、上述と同様な方法で本特許のランタイム適応プロセッサを利用することができる。
【００５３】
プロセッサチップセット構成要素
ＴＣＰ／ＩＰプロセッサは、ＴＣＰ／ＩＰオフロード機能を提供するプロセッサチップセットの内部に組み込むことができる。そのような構成は、ハイエンドサーバ、ワークステーション、又は高速ネットワークとインタフェースで接続する高性能パーソナルコンピュータに使用することができる。そのような実施形態はまた、ＩＰストレージ又はＲＤＭＡ機能、又は本発明の組合せを含むことができ、チップセットに組み込まれたＩＰベースストレージネットワーキング、及び／又はＲＤＭＡ機能を有するＴＣＰ／ＩＰを提供する。説明したアーキテクチャの複数の機能の使用は、機能要件、開発時間とコスト、及びシリコンダイのコストなどのトレードオフとして、上記又は他の実施形態の他の機能の使用と独立して行うことができる。プロセッサチップセットはまた、要求時に機能の様々な組を提供するために、望ましい用途に対してプロセッサを構成することにより本特許のランタイム適応プロセッサを組み込むこともできる。
【００５４】
ストレージ又はＳＡＮシステム又はサブシステム切替回線カード
ＩＰプロセッサはまた、高性能で待ち時間が少ないＳＡＮ切換システム（又は、別のシステム又はサブシステム）回線カードを作り出すために使用することができる。プロセッサは、回線カードへの／からのＩＰベースストレージトラフィックを終了させたり開始させたりするメインプロセッサとして使用することができる。このプロセッサは、ホストのように作動することができる切換システムのファブリックコントローラを使用して作動し、切換システム内に存在する転送情報ベースによって判断された適切な切替回線カードに対するＩＰ宛先に基づいて、終了したストレージトラフィックを移送する。そのような切換システムは、純粋にＩＰベースネットワーキングをサポートすることができ、又は、マルチプロトコルサポートをサポートすることもでき、ファイバチャンネルのような他のデータセンターのＳＡＮファブリックに加えて、ＩＰベースＳＡＮとインタフェースで接続することを可能にする。ゲートウェイコントローラシステムの内部には、ＬＡＮ又はＷＡＮからＩＰストレージトラフィックを終了させ、ストレージトラフィックをＳＡＮに搬送するために新しいセッションを開始させる非常に類似の構成が存在することができ、上述のＳＡＮは、ＩＰベースＳＡＮか、又は、より可能性があるのは、ファイバチャンネルのようなデータセンター内部の他のファブリックから構成されたＳＡＮである。プロセッサはまた、ＳＡＮゲートウェイコントローラに組み込むことができる。これらのシステムは、同様に企業ストレージエリアネットワーク内で分散セキュリティネットワークを作り出すために、このプロセッサのセキュリティ機能を使用すると考えられる。
【００５５】
本特許のランタイム適応プロセッサは、個々に又は上述のように組合せでプロトコル変換、仮想化、セキュリティ、帯域幅管理、速度制限、グルーミング、ポリシーベースの管理のようなハードウエアアクセラレーション機能を提供するのに非常に有効である。
本特許のランタイム適応サーチプロセッサは、この実施形態でディープコンテンツ検査機能を供給するのに使用することができ、コンテンツベースのスイッチング及びアプリケーション指定ネットワーキングなどのようなインテリジェントネットワーキング機能を作成するのに使用することができる。
【００５６】
ネットワークスイッチ、ルータ、無線アクセスポイント
このプロセッサはまた、スイッチ、ルータ、ゲートウェイ、及び無線アクセスポイントなどに対する高速度ＴＣＰ／ＩＰネットワーキングを提供するネットワークインタフェース回線カードに組み込むことができる。同じアダプタカードはまた、ＩＰネットワークに対して高速度ネットワークセキュリティ機能を提供することができる。このプロセッサは、分散セキュリティネットワークにおいて次に使用することができるセキュリティ機能を提供すると考えられる。
【００５７】
本特許のランタイム適応プロセッサはまた、上述のサービス及び機能、並びに「有線同等プライバシー」セキュリティ機能、環境によって必要とされるＲＡＤＩＵＳなどのセキュリティ機能のような他のものを提供するような実施形態に使用することもできる。ランタイム適応プロセッサはまた、「Ｂｌｕｅｔｏｏｔｈ」、「ＨｏｍｅＲＦ」、様々なライン速度の無線「イーサネット」ＬＡＮプロトコル、３ＧＰＰ、ＧＰＲＳ、ＧＳＭ、又は他の無線ＬＡＮ又はＲＦ、又は携帯電話技術プロトコル、又はそのいずれかの組合せのような無線プロトコルをサポートするＴＣＰ／ＩＰ処理に加えて、動的に変更可能なプロトコル処理機能を提供するのに使用することもできる。
本特許のランタイム適応サーチプロセッサは、この実施形態でディープコンテンツ検査機能を供給するために使用することができ、コンテンツベースのスイッチング及びアプリケーション指定ネットワーキングなどのようなインテリジェントネットワーキング機能を作成するのに使用することができる。
【００５８】
ストレージアプライアンス
ストレージネットワークの管理コストは急速に増加している。ネットワーク及びストレージ容量の大幅な成長を管理する能力は、ストレージ領域の管理機能をもたらす特別なアプライアンスを作り出すことを要求する。高性能ＩＰベースＳＡＮに対して説明した管理アプライアンスは、その機能を達成することができるように、ＴＣＰ／ＩＰパケット内部で移送されたストレージトラフィック上で高性能ＩＰプロセッサを実行する。これらのシステムは、ポリシーベースの管理及び実施機能を提供するために、深いパケットの検査を実行してＩＰトラフィック内のストレージペイロードを抽出するための高性能プロセッサを要求する。セキュリティを有するプログラマブル分類及びポリシーエンジンは、説明した高速ＴＣＰ／ＩＰ及びＩＰストレージエンジンと共に、本特許に説明するこれらのアプライアンスと他の実施形態が、高回線速度かつ短い待ち時間で深いパケット検査及び分類を実行し、パケット毎のベースで必要なポリシーを適用することを可能にする。更に、これらの機能は、仮想化、ポリシーベース管理、セキュリティ実施、アクセス制御、侵入検出、帯域幅管理、トラフィックシェーピング、サービス品質、迷惑メール防止、ウイルス検出、暗号化、暗号解読、ＬＵＮマスキング、ゾーニング、リンク集約、及びストレージ領域ネットワークトラフィックに対してインバンドである類似のもののような、その機能を実行することができるストレージ管理アプライアンスの作成を可能にする。同様のポリシーベースの管理、及びセキュリティ作動又は機能性はまた、本特許に説明する他の実施形態の内部でサポートすることができる。本特許のランタイム適応プロセッサを使用して、アプリケーション／サービスの１つ又はそれよりも多くを動的にサポート又は加速することができる。サポートされるサービス／アプリケーションは、ユーザ又は管理者の影響又は制御の下で存在するポリシーによって選択することができる。本発明のランタイム適応サーチプロセッサは、この実施形態で高速ネットワーク回線速度サーチを実行するのに使用することができ、上述のいくつかのディープパケット検査、コンテンツサーチ、及びセキュリティアプリケーションのために使用することができる。
【００５９】
クラスター化された環境
システム性能と、クラスター化データベースなどのようなアプリケーションに対する拡張容易性とを増強するために、クラスター化環境ではサーバシステムが使用される。高性能クラスターサーバに対して作動しているアプリケーションは、プロセス間通信に対して高速でデータを共有する能力を要求する。従来のソフトウエアＴＣＰ／ＩＰネットワーク上のクラスタープロセッサ間でのこのプロセス間通信トラフィックの移送は、厳しい性能のオーバーヘッドを受ける。従って、ファイバチャンネルのような専用ファブリックがそのような構成では使用されてきた。しかし、通信プロセスメモリ間で直接のメモリアクセスを可能にするＴＣＰ／ＩＰベースのファブリックは、ファイバチャンネルのような専用ファブリックに変換することなく、いずれかのＴＣＰ／ＩＰネットワークに対して作動するアプリケーションによって使用される。説明したＩＰプロセッサは、その高性能ＴＣＰ／ＩＰ処理機能とＲＤＭＡ機能を使用してクラスターサーバ環境に組み込むことが可能であり、高性能で短い待ち時間の直接メモリという恩典をメモリデータ転送にもたらす。この実施形態はまた、グローバルなクラスター化を作り出すために使用することができ、同様にグリッドコンピュータ及びグリッドネットワーク内のデータ転送を可能にするために使用することができる。本特許のプロセッサはまた、待ち時間とプロトコル処理オーバーヘッドを回避するために、ＴＣＰ／ＩＰ以外の軽量プロトコルを使用してローカルクラスターデータ転送を加速するのに使用することができる。ランタイム適応プロセッサアーキテクチャを利用して、そのような軽量のプロトコルをサポートすることができる。従って、ローカル並びにグローバルクラスター化に対して同じプロセッサアーキテクチャを使用することができ、グリッドコンピュータ及びグリッドネットワーク内のデータ転送を可能にする。本特許のプログラマブルプロセッサはまた、ランタイム適応プロセッサに負担を掛けないで同様の目的に使用することができる。本特許のプロセッサアーキテクチャは、従って、ユーティリティコンピューティングを可能にするのに使用することができる。本特許のランタイム適応プロセッサを使用して、クラスター化された環境に対する上述の他の実施形態で説明した機能も同様に提供することができる。
【００６０】
ＸＭＬアクセラレータ
本特許のランタイム適応ＴＣＰ／ＩＰプロセッサはまた、システム又はアダプタカード内の構成要素として、又はＴＣＰ／ＩＰプロトコル端末又はＸＭＬアクセラレーション又はその組合せを提供するチップセットの一部として使用することもできる。ウェブサービスの使用頻度が増加する時に、ＸＭＬ又はＸＭＬ派生物を使用して更に多くのウェブ文書を開始することができる。各ウェブページアクセスに対してＸＭＬを処理する負担は、ホストプロセッサに対して非常に大きくなる可能性があり、付加的なハードウエアサポートを必要とする。本特許のランタイム適応プロセッサは、そのような環境で使用することができ、ＸＭＬ処理に対してアクセラレーションを提供し、一方、移送プロトコル処理は、本特許の専用プロトコルプロセッサによって取り扱われる。ＸＭＬ文書はまた、セキュリティサポートを必要とすることがあり、その場合に、このプロセッサは、動的に構成することができ、安全なＸＭＬ文書のためにセキュリティアクセラレーションを提供する。同様に、本発明のランタイム適応サーチプロセッサは、そのような実施形態でも使用することができ、１Ｇｂｐｓ、１０Ｇｂｐｓ、及びより速い回線速度に見合う高速ＸＭＬ処理機能を提供することができる。本発明のサーチプロセッサによって、数千の正規表現規則がこのアプリケーションに対して同時に評価されるようになり、従って、インテリジェントネットワーキング及びアプリケーション指定のネットワーキング機能を提供するためにネットワーキングシステムで使用することができる。
【００６１】
ボイスオーバーＩＰ（ＶＯＩＰ）アプライアンス
本特許のプロセッサはまた、ＶＯＩＰ電話、サーバ、ゲートウェイ、手持ち式装置などのようなボイスオーバーＩＰアプライアンス内に埋め込むことができる。プロトコルプロセッサは、ＩＰプロトコル処理、並びにＶＯＩＰ環境で必要とされる移送層プロトコル処理を提供するのに使用することができる。更に、ランタイム適応プロセッサは、ＶＯＩＰアプライアンス及びそのアプライアンスに対して実行されるアプリケーションに対して要求されることがある信号処理とＤＳＰハードウエアアクセラレーション機能とを提供するように動的に適応させることができる。本出願のランタイム適応サーチプロセッサは、スピーチ認識アプリケーション並びに上述の説明に類似のＶＯＩＰアプリケーションに対して使用することができる。
【００６２】
手持ち式装置
本特許のプロセッサはまた、手持ち式装置、電話機、及び携帯情報端末などのプロセッサ又はチップセットにプロトコル処理ハードウエア機能を提供するのに使用することができる。ランタイム適応プロセッサと共にプロトコルプロセッサは、実施形態の多くに対して上述の多くの機能を提供することができる。本特許のプロセッサを使用して、これらの装置内に安全なプロトコル処理スタックを作り出し、並びにハードウエアアクセラレーションを使用して他のサービスを提供することもできる。ランタイム適応プロセッサを使用して、手持ち式装置を有線又は無線方式でネットワークに対して有効にすることができる。次に、装置は、本特許のプロトコルプロセッサ及びランタイム適応プロセッサを使用して、「Ｂｌｕｅｔｏｏｔｈ」、無線「イーサネット」ＬＡＮ、ＲＦ、ＧＰＲＳ、ＧＳＭ、ＣＤＭＡ、ＣＭＤＡ派生物、又は他の３Ｇセルラー技術、又は他の無線又はセルラー又はＲＦ技術のような多数のプロトコルと共に機能するように動的に適応させることができる。本特許のランタイム適応サーチプロセッサは、既存の低性能プロセッサのサーチ性能を加速するために手持ち式装置に組み込むことができる。本出願のサーチプロセッサは、手持ち式装置のチップセット又はプロセッサに組み込むことができ、これらのプラットフォームで実行されるアプリケーションのサーチ性能を加速することができる。サーチプロセッサはまた、チップセット又はホストプロセッサに組み込むか又は手持ち式装置にコンパニオンプロセッサとして組み込むことができるアプリケーション層セキュリティを通じた暗号セキュリティ、ネットワーク層セキュリティ機能を提供する多目的セキュリティプロセッサとして使用することができ、様々な手持ち式装置に対する新興のセキュリティ脅威に対して保護することができる。
【００６３】
付加的な実施形態
プロセッサアーキテクチャは、部分的にソフトウエアで、また部分的にハードウエアで実施することができる。性能の必要性とコストの推測は、本発明のシステムアーキテクチャ全体のハードウエア及びソフトウエア分割に対するトレードオフを推し進める可能性がある。このアーキテクチャをハードウエア及びソフトウエア分割と共にチップセットの組み合わせとして、又は分割とは独立して実行することも可能である。例えば、セキュリティプロセッサと分類エンジンは、別々のチップ上にあり、同様の機能を提供することができる。これは、開発及び製造コストを含めて、シリコンコストの廉価なＩＰプロセッサをもたらすことができるが、いくつかの例では、システムも含めた要素を増加させ、設置面積とソリューション全体のコストを増大させる可能性がある。セキュリティ及び分類エンジンも別々のチップとすることができるであろう。本明細書で使用されるように、チップセットは、複数チップのチップセット、又は単一チップだけを含むチップセットを意味することができ、それはアプリケーションに依存する。
【００６４】
ストレージフローコントローラと待ち行列は、ホスト上のソフトウエア内に維持することができ、又はチップセット内の別のチップの一部になることもできる。従って、高性能プロセッサの将来の出現に伴って要求される高性能ＩＰベースストレージとＴＣＰ／ＩＰオフロードアプリケーションとを達成するために、このアーキテクチャを分割する複数の方法が実現可能である。ｉＳＣＳＩと関連してストレージエンジンが説明されたが、制御プロセッサと共に、ＴＣＰ／ＩＰ及びストレージエンジンのプログラム可能性、分類子のプログラム可能性、及びストレージフローコントローラを使用して、ｉＦＣＰ、ＦＣＩＰ、及びその他のような他のＩＰストレージプロトコルを適切なファームウエアで実施することができる。ｉＳＣＳＩ作動はまた、ＩＰストレージ作動とすることができる。高性能ＩＰプロセッサコアは、より低い回線速度の複数の入力出力ポートと連結し、全処理量を適合させてマルチポートＩＰプロセッサ実施形態を同様に作り出すことができる。
【００６５】
ストレージエンジンを使用しないでメインプロセッサからオフロードする高性能ＴＣＰ／ＩＰに対してこのアーキテクチャを使用することが実現可能である。これは、データ及び遠距離通信アプリケーションの次世代の高性能ネットワークに対してシリコンとシステムのソリューションをもたらすことができる。ＴＣＰ／ＩＰエンジンは、アプリケーション特定のパケットアクセラレータを使用して増強し、コアのアーキテクチャを利用してこのプロセッサの新しい味を引き出すことができる。本発明の他の機能に加えて、ストレージエンジンをファイアウォールエンジン、又はルート検索エンジン、又は遠距離通信／ネットワークアクセラレーションエンジンのような別のアプリケーション特定のアクセラレータと取り替え、このプロセッサアーキテクチャのターゲットを遠距離通信／ネットワーキング及び他のアプリケーションにすることができる。
【００６６】
本発明のランタイム適応サーチプロセッサは、セキュリティ又はコンテンツサーチアプリケーションなどに対して向けられた様々なアプリケーションに特定のシステムの内側に組み込むことができる。例えば、サーチプロセッサは、アンチ−スパム、アンチ−ウイルス、アンチ−スパイウェア、アンチ−ワーム、その他のマルウェア阻止、並びに機密情報セキュリティ、及び米国企業改革法、グラム・リーチ・ブライリー法、ＨＩＰＡＡのような法規に対する他の規制遵守などを提供する電子メールセキュリティアプライアンスの内側に組み込むことができる。サーチプロセッサは、機密情報の漏れに対して保護する侵入検知及び防止システムに及び企業側で上記に列挙されたもののような他の規制遵守に使用することができるシステムに組み込むことができる。
【００６７】
詳細な説明
コンテンツサーチを実行する機能は、ネットワークされた世界では重要な特性になってきている。ネットワーク回線速度が１Ｇｂｐｓ、１０Ｇｂｐｓ、及びこれより速くなる時に、回線速度で多くのアプリケーションに対してディープパケット検査を実行することができることが重要になる。ネットワークトラフィックが高速回線速度で検査することができる場合、ウイルス、ワーム、及び機密情報漏れなどのようないくつかのセキュリティ上の問題を検出し、損害を引き起こすのを防止することができる。一般的に、コンテンツサーチ規則は、正規表現を使用して表すことができる。正規表現規則は、ＦＳＡを使用して表して計算することができる。ＮＦＡ及びＤＦＡは、正規表現の評価に対して使用されるＦＳＡの２つのタイプである。高速回線速度アプリケーションでは、複合ＤＦＡを使用することができ、入力ストリームの各文字をメモリアクセスの１つのサイクルについて処理することができる。しかし、これは、サーチがメモリアクセス速度によって命じられて実行される速度の制限を有する。このような方法の別のリミッターは、正規表現規則の僅かな数を探索するのに必要なメモリの量である。上述のように、ＮＦＡは、汎用プロセッサで高性能を達成するのに限界を有する。一般的に今日の最高クラスマイクロプロセッサは、正規表現の小さな数に対してＮＦＡ又はＤＦＡを使用して１００Ｍｂｐｓ性能より下を達成するだけである。従って、目的とされるコンテンツサーチプロセッサハードウエアを作成して１Ｇｂｐｓ及び１０Ｇｂｐｓの回線速度までサーチの性能を上げるための明確な必要性が存在する。本発明は、高速回線速度をターゲットにすることができるこのような高性能コンテンツサーチプロセッサを示している。
【００６８】
ストレージのコストと需要は、過去数年間にわたって速いペースで増加してきた。これは、近い将来にわたって同じ割合で成長することが見込まれる。ｅビジネスの出現に伴って、サーバ又はシステムの機能停止時間に関係なく、いずれかの時間のいずれかの場所でのデータ使用可能度が重要になっている。これは、大きな必要性を駆り立て、サーバ接続ストレージをネットワークに移動させ、ストレージの統合、データの利用可能性、及びデータ管理の容易性をもたらしている。ストレージエリアネットワーク（ＳＡＮ）は、現在では大部分がファイバチャンネル技術に基づいており、ＴＣＰ／ＩＰ技術と比べてハードウエア志向のスタックを使用した短い待ち時間と高性能というような様々な恩典をもたらしている。
【００６９】
一部のシステムは、データストリームを移送するように設計されたＩＰ上でブロックストレージトラフィックを移送する。データストリームは、ＩＰの上で実行されるように階層化された伝送制御プロトコル（ＴＣＰ）を使用して移送される。ＴＣＰは、オペレーティングシステム内のソフトウエアで実施される確実な接続志向プロトコルである。ＴＣＰ／ＩＰソフトウエアスタックは、将来配置されるであろう高回線速度を処理するには低速である。新しいハードウエアのソリューションは、ストレージとネットワークトラフィックを搬送するためにＴＣＰ／ＩＰスタックを加速し、ＦＣベースのソリューションに対して競争力があることになる。
【００７０】
高性能サーバ、ワークステーション、ストレージコントローラ、及びネットワークトラフィックで普及しているストレージプロトコルは、約２０年前から存在するＳＣＳＩプロトコルである。ＳＣＳＩアーキテクチャは、階層化プロトコルアーキテクチャとして構築されている。図１は、イニシエータ（ブロック１０１）とターゲットサブシステム（ブロック１０２）内の様々なＳＣＳＩアーキテクチャ階層を示す。本特許で使用されるように、用語「イニシエータ」及び「ターゲット」は、データ処理装置又はそれらを含むサブシステム又はシステムを意味する。用語「イニシエータ」及び「ターゲット」はまた、クライアント又はサーバ又はピアを意味することができる。同様に、用語「ピア」は、対等の処理装置又はそれらのサブシステム又はシステムを意味することができる。「遠隔ピア」は、世界中にわたって又は部屋中にわたって配置されたピアとすることができる。
【００７１】
図１のイニシエータとターゲットサブシステムは、クライアントサーバ要求と応答処理を提供するために使用されるＳＣＳＩアプリケーションプロトコル層（ブロック１０３）を使用して互いに対話する。それは、ディスクアレイやテープドライブなどのような多くの形態をとることができるイニシエータ及びターゲットの大容量ストレージ間で装置サービス要求と応答を同様に提供する。従来、ターゲットとイニシエータは、ＳＣＳＩプロトコル（ブロック１０４）を搬送するＳＣＳＩバスアーキテクチャを使用して相互接続された。ＳＣＳＩプロトコル層は、ＳＣＳＩアプリケーションプロトコルを使用して、クライアントとサーバの対話を互いに可能にする移送層である。移送層は、上部層のプロトコルとアプリケーションが移送プロトコルを独立させておくことができるように、上部層に対して同じ意味を呈するべきである。
【００７２】
図２は、ベースとなる移送層に加えてＳＣＳＩアプリケーション層を示す。ＩＥＴＦ基準の追跡プロトコル、すなわち、ｉＳＣＳＩ（ＩＰ上のＳＣＳＩ）は、ＩＰベースのストレージ移送プロトコルを提供するための試みである。ＦＣＩＰ（ＩＰにカプセル化されたＦＣ）、ｉＦＣＩＰ（ＩＰ上のＦＣ）などを含む別の同様の試みがある。移送機構としてのＴＣＰ／ＩＰに加えて、これらのプロトコルの多くは、図２に示す方法と同様の方法で階層化される。図２に示すように、ｉＳＣＳＩプロトコルサービス層（ブロック２０４）は、ＳＣＳＩアプリケーション層（ブロック２０３）に対して層状インタフェースを形成する。ｉＳＣＳＩは、基準によって定められるように、ｉＳＣＳＩプロトコルデータユニット（ＰＤＵ）としてＳＣＳＩコマンド及びデータを搬送する。これらのプロトコルデータユニットは、次に、ＴＣＰ／ＩＰ（ブロック２０５）などを使用してネットワーク上で移送することができる。この基準は、「ｉＳＣＳＩ  ＰＤＵ」を運ぶ基本的な移送を実施するための手段を特定しない。図２は、「ｉＳＣＳＩ  ＰＤＵ」に対して移送を提供するＴＣＰ／ＩＰ上で階層化されたｉＳＣＳＩを示す。
【００７３】
ｉＳＣＳＩのようなＩＰベースのストレージプロトコルは、ソフトウエアベースのＴＣＰ／ＩＰスタックに加えて、ソフトウエア内で階層化することができる。しかし、そのような実施は、それに加えてソフトウエアＴＣＰ／ＩＰと階層化されたストレージプロトコルから発生する厳しい性能ペナルティに苦しむことになる。それらの実施は、ホストプロセッサの性能に厳しく影響し、１Ｇｂｐｓを超える回線速度での他の全てのタスクに対してプロセッサを使用不能にするであろう。従って、ハードウエア内でＴＣＰ／ＩＰスタックを実施し、ホストプロセッサを解放し、その上にストレージプロトコルを構築することができるであろう。ｉＳＣＳＩと同様にストレージプロトコルは、ホストプロセッサ上で実施されるソフトウエア内に構築することができるか、又は本特許に説明するようにハードウエアの実施によって加速することができる。ソフトウエアｉＳＣＳＩスタックは、受信ＴＣＰセグメントからＰＤＵを抽出してそれらに作用することができるように、ホストプロセッサに対して多くの割り込みを呈することになる。そのような実施は、ソフトウエアベースＴＣＰスタックが実施したであろう同様の理由で、厳しい性能ペナルティに苦しむことになる。説明したプロセッサは、ホストプロセッサに対する性能ペナルティと得られる待ち時間の影響とを排除又は大幅に低減する、ＴＣＰ／ＩＰベースネットワーク上でストレージプロトコルを移送するための高性能で待ち時間の短いアーキテクチャを提供する。
【００７４】
図３は、ＯＳＩネットワーキングスタックとして参照されたファイバチャンネルに対するＴＣＰ／ＩＰスタックの比較を示す。ＴＣＰ／ＩＰスタック（ブロック３０３）には、本特許の「発明の開示」の節で上述したように、ホスト上のソフトウエアの実施に起因する性能上の問題がある。それに比べて、ファイバチャンネル（ブロック３０４）のような又は他の専用ネットワーキングプロトコルは、ハードウエア内で実施されるように設計される。ハードウエアでの実施により、ネットワーキングソリューションがＩＰベースソリューションよりも高性能になる。しかし、ＩＰのユビキタス性とＩＴユーザ及び開発者の観点からのＩＰの習熟性とは、広範囲の開発に対してＩＰを更に適切なものにする。これは、ＴＣＰ／ＩＰに起因する性能ペナルティが、他の競争力のある専用プロトコルに相当するまで減少した場合に達成することができる。図４は、図示の他の専用プロトコルと競合することができるようになるために、ＴＣＰ／ＩＰ（ブロック４０３）に使用されるハードウエア及びソフトウエア内で階層化するプロトコルのレベルを示す。
【００７５】
図５は、ハードウエアベースのＴＣＰ／ＩＰと、本特許のストレージプロトコルの実行を使用するホストオペレーティングシステムスタックとを示す。プロトコルは、それがホストオペレーティングシステムスタック（ブロック５１３）内にオペレーティングシステム層がその上で不変のまま導入されように実施される。これは、ＳＣＳＩアプリケーションプロトコルを一切変えないで作動させる。ドライバ層（ブロック５１５）と、ＩＰベースのストレージインタフェースのための下のスタック（ブロック５０１）とは、非ネットワーキングＳＣＳＩインタフェース（ブロック５０６及び５０３）又はファイバチャンネルインタフェース（ブロック５０２）と同等のインタフェースを表すことになる。
【００７６】
図６は、ソフトウエアＴＣＰ／ＩＰスタックに包含されたデータ転送を示す。ＴＣＰ／ＩＰスタックのそのような実施は、データ転送のメモリコピーからの非常に大きな性能ペナルティを有する。図は、クライアントとサーバネットワーキングスタックの間のデータ転送を表す。クライアントからユーザまで又はその反対に移送する必要があるユーザレベルのアプリケーションバッファ（ブロック６０１）は、図示の様々なレベルのデータ転送を通過する。発信元上のユーザアプリケーションバッファは、ＯＳカーネルのスペースバッファ（ブロック６０２）にコピーされる。このデータは、次に、ネットワークドライバのバッファ（ブロック６０３）にコピーされ、そこからネットワークインタフェースカード（ＮＩＣ）又はホストバスアダプタ（ＨＢＡ）にＤＭＡ転送される。バッファコピー作動は、ホストプロセッサを伴い、大事なプロセッササイクルを使い果たす。更に、転送中のデータは、ホストからの付加的な計算サイクルを使い果たし、ホスト上のチェックサム計算を通って進行する。ホスト上のシステムメモリへの又はからのデータの複数回の移動も、同じくメモリ帯域幅の妨害を作り出す。ＮＩＣ／ＨＢＡに移送されたデータは、次にネットワーク上に送られ（ブロック６０９）、宛先システムに到着する。宛先システムでは、データパケットは、ホストと反対方向であるが同様のバッファコピーとチェックサム作動に従って、ソフトウエアネットワーキングスタックを通ってトラバースする。ＴＣＰ／ＩＰスタックのそのような実施は、ブロックストレージデータの移送に対して、及び発信元と宛先の間で大量のデータが移送されるような場合のクラスター化アプリケーションに対しては非能率である。
【００７７】
図７は、本特許に説明するアーキテクチャの遠隔の直接メモリアクセス（ＲＤＭＡ）機能を可能にするという特徴を有するイニシエータ及びターゲットでのネットワーキングスタックを示す。以下は、ＲＤＭＡ能力又はＲＤＭＡ機構又はＲＤＭＡ機能と呼ぶことができる。そのようなシステムでは、イニシエータ又はターゲット上で実行されるアプリケーションは、メモリ領域（ブロック７０２）を登録し、この領域は、実質的にホストの介入なしでそのピアにＮＩＣ／ＨＢＡから直接利用可能にされる。これらのアプリケーションはまた、それらのピアにＲＤＭＡ（ブロック７０８）に関して利用可能であるメモリ領域について知らせるであろう。通信の両方のピアがＲＤＭＡ機構を使用する準備ができた状態で、ＲＤＭＡ領域からのデータの移送は、ピア内のＮＩＣ／ＨＢＡハードウエアがＲＤＭＡ機能を実行すれば、実質的なホストの介在がなくても発信元から宛先まで基本的にゼロコピーのオーバーヘッドで起こり得る。発信元、すなわちイニシエータは、その要求のそのピアに特定ＲＤＭＡ有効バッファを読み取るか又は書き込むように通知し、次に、宛先、すなわちターゲットにそのＲＤＭＡバッファへ／からデータをプッシュ又はプルさせる。イニシエータ及びターゲットＮＩＣ／ＨＢＡは、次に、本特許に説明するＴＣＰ／ＩＰハードウエア実施、ＲＤＭＡ７０３、ＴＣＰ／ＩＰオフロード７０４、ＲＤＭＡ７０８、及びオフロード７０９を使用して、ホストプロセッサの実質的な記入なしで互いの間でデータを移送し、それによってプロセッサのオーバーヘッドを大幅に低減するであろう。この機構は、ホストプロセッサ上のＴＣＰ／ＩＰ処理のオーバーヘッドを大幅に低減し、図６に示すデータ転送のための複数バッファのコピーの必要性を排除すると考えられる。ＲＤＭＡ実行可能システムは、従って、高速又は低速の如何に関わらず、システムがそのピアの機能の妨害を作成せずにデータ転送を実行することを可能にする。ＩＰソリューションの上でストレージ内のこのプロセッサに実施されたＲＤＭＡ機能は、通常はデータ転送の開始時と終了時を除いて、ホストの介在を排除する。これは、ターゲット及びイニシエータの両方のシステムでホストプロセッサを解放し、各パケット到着又は転送時に介入されることなく有用なタスクを実行する。ＲＤＭＡの実行はまた、システムを安全にし、認可されていないアクセスを阻止することを可能にする。これは、領域のＩＤと共にアクセス制御キーを有するＨＢＡ／ＮＩＣを使用してエクスポートされたメモリを登録することによって達成される。ＨＢＡ／ＮＩＣは、遠隔のホストからＲＤＭＡバッファへのメモリ領域要求のアドレス変換を実行し、セキュリティキー検証のような安全作動を実行し、次にデータを移送させる。この処理は、ＨＢＡ／ＮＩＣに常駐するか、又は、例えばマザーボード上のホストプロセッサに対するコンパニオンプロセッサとして、本発明のプロセッサのホストプロセッサから切り離されて実行される。この機能はまた、クライアントサーバアプリケーションと同様に、厳しいクラスター化アプリケーションに対する大量のデータ転送に使用することができる。発信元すなわちイニシエータと宛先すなわちターゲットの間で大量のデータを移送するリアルタイムのメディアアプリケーションは、これによって恩典を得ることができる。
【００７８】
図８は、ソフトウエアで実行されたホストファイルシステムとＳＣＳＩスタックとを示す。上述の通り、ＩＰベースのストレージスタック（ブロック８０５、８０６、８０７、８０８、及び８０９）は、ＳＣＳＩ層（ブロック８０３及び８０４）に対して、ＳＣＳＩ移送層（ブロック８１１）又はファイバチャンネル移送（ブロック８１０）によって提供されたような一貫したインタフェースを呈示すべきである。この図は、性能に影響されやすいブロックデータを移送するように設定されていないＩＰの様々な問題によって課せられるもの以外に、システムレベルからＩＰベースのストレージの実行に課せられる高レベルの要求を示す。
【００７９】
図９は、図８に示すｉＳＣＳＩスタックをより詳細に示す。ｉＳＣＳＩスタック（ブロック８０５から８０９）は、ＳＣＳＩコマンド統合層（ブロック８０３及び８０４）に対して、この層とその上の他の層の挙動が変わらないように、ＯＳで定められたドライバインタフェースレベルの機能性を提供すべきである。図９は、ＩＰストレージ機能を提供するために実施されると考えられる一組の機能を示す。ｉＳＣＳＩの機能性を提供する機能は、関連する組の機能に分類されるが、どの当業者も認めるように、これらの多くの変形が存在する可能性がある。標準的（例えば、ターゲット及びイニシエータのログイン及びログアウト）機能（ブロック９１６）や接続の確立及び取外し機能（ブロック９０５）を満足するように要求される一組の機能がある。図は、「ＯＳ  ＳＣＳＩ」ソフトウエアスタックがｉＳＣＳＩ装置（ブロック９１６）を見つけ、オプション／パラメータ（ブロック９０３及び９０９）を設定して取得し、装置を始動して（ブロック９１３）装置を解放する（ブロック９１１）ことを可能にする機能を示す。上述の制御機能以外に、ｉＳＣＳＩの実施は、待ち行列（９１２及び９１７）を通じて大量のデータの移送機能を提供し、ｉＳＣＳＩ基準によって規定されたＰＤＵを移送する。ｉＳＣＳＩスタックはまた、直接データ転送／配置（ＤＤＴ）又はＲＤＭＡ機能又はその組合せを含むことができ（ブロック９１８）、これらは、イニシエータ及びターゲットシステムによって使用することができ、ストレージ及び他の大量のブロックデータ転送を含めて、実質的にゼロバッファのコピーとホスト介入のないデータ転送とを実行する。ＳＣＳＩコマンド及びこれらに関連するブロックデータ転送は、説明したプロセッサ上で実行されるコマンド待ち行列（ブロック９１２及び９１７）として実施される。ホストは、主にコマンドの終了時に割り込まれる。終了したコマンドは、ホストの都合のよい時に作用するように、ホストに対する待ち行列に入れられる。図は、ｉＳＣＳＩプロトコル層と、同じくプロセッサから切り離されて実行される本明細書に説明したＩＰプロセッサシステム上のＴＣＰ／ＩＰスタック（ブロック９０７及び９０８）上で階層化されたドライブ層とを示す。
【００８０】
図１０は、説明したＩＰプロセッサシステムで実施されるＴＣＰ／ＩＰスタック機能性を示す。これらの機能は、このプロセッサの高性能ＴＣＰ／ＩＰ実施を利用するために、上部層プロトコル機能に対するインタフェースを提供し、直接「ＯＳ  ＴＣＰ／ＩＰ」バイパス、ＲＤＭＡ又はネットワークソケット直接機能、又はその組合せから恩典を得ることができる他のアプリケーションと共にＩＰストレージトラフィックを搬送する。ＴＣＰ／ＩＰスタックは、上部層データ（ブロック１０１７及び１０３１）とコマンドＰＤＵを送受信し、移送接続と取外し機能（ブロック１０２１）を確立し、データ転送機能やチェックサム機能（ブロック１０１９）、並びにエラー処理機能（ブロック１０２２）やセグメント化及び順序付け及びウィンドウ操作作動（ブロック１０１３）を送受信するための機能を提供する。チェックサム確認／作成のような特定の機能は、データ転送の全てのバイトに関連するのに対して、データパケットを移送して伝送制御ブロック又はセッションデータベースを更新するいくつかの機能は、データ転送の各パケットのために呼び出される。セッションＤＢ（ブロック１０２５）は、ＴＣＰ／ＩＰ状態情報と共に、アクティブセッション／接続に関する様々な情報を維持するために使用される。ＴＣＰ層は、基準による要求に応じてＩＰ機能を提供するＩＰ層に加えて構築される。この層は、パスＭＴＵによってパケットをフラグメント化／フラグメント解消する機能（ブロック１０３３）を提供し、例えば、ＩＣＭＰ（ブロック１０２９）のようなエラーを通信するために必要な他の機能とのインタフェースと同様に、ルート及び転送情報（ブロック１０３２）を提供する。ＩＰ層は、「イーサネット」層又は他のメディアアクセス層技術とインタフェースで接続し、ネットワーク上にＴＣＰ／ＩＰパケットを移送する。この説明の様々な図には、より低い層が「イーサネット」として示されているが、例えば、ＭＡＮ／ＷＡＮ上のＳＯＮＥＴにわたってパケットを移送するためのＳＯＮＥＴのような別の技術とすることができる。「イーサネット」はまた、類似のアプリケーションで使用されるが、例えば、ＬＡＮ及び専用ローカルＳＡＮ環境内で更に多く使用することができる。
【００８１】
図１１は、ｉＳＣＳＩデータフローを示す。図は、データフローの受信及び送信パスを示す。ホストのＳＣＳＩコマンド層は、ｉＳＣＳＩドライバと協働し、両方ともブロック１１０１に示されているが、図２６により詳細に見られるストレージフローコントローラ内のコマンドスケジューラ（ブロック１１０８）に対して処理されるようにコマンドをスケジュールに入れるであろう。コマンドスケジューラ１１０８は、図１７により詳細に示すプロセッサ内で作動するために、新しいコマンドをスケジュールに入れる。既存の接続を用いてターゲット装置と定められた新しいコマンドは、その既存の接続に対する待ち行列に入れられる（ブロック１１１１）。ターゲット装置に対する接続が存在しない場合は、新しいコマンドは、割り当てられていないコマンド待ち行列に対してエンキューされる（ブロック１１０２）。図４７とブロック９０５及び１００６に示すようなセッション／接続の確立処理が次に呼び出され、ターゲットに接続される。接続が確立された状態で、待ち行列１１０２からの対応するコマンドは、図に示すように、コマンドスケジューラ１１０８により新しく作り出された接続コマンド待ち行列１１１１に対してエンキューされる。コマンドが実行ステージに達した状態で、コマンドが読取又は書込トランザクション次第で、受信１１０７又は送信１１０９パスがアクティブにされる。コマンドが移送される接続／セッションの状態は、次に説明するように、セッションデータベース内でのコマンド実行の進行を記録するために使用される。データ転送に関連するバッファは、転送が終了する時までロックすることができる。イニシエータとターゲットの間でデータを送信するためにＲＤＭＡ機構が使用される場合、適切な領域バッファ識別子、アクセス制御キー、及び関連ＲＤＭＡ状態データは、選択された実施次第でプロセッサ上のメモリに維持され、同じくオフチップメモリにも維持することができる。複数のＴＣＰセグメントにわたることがあるコマンドに関連するデータ転送が終了すると、コマンド実行のステータスは、次に適切な処理を行うホストのＳＣＳＩ層に転送される。これは、アプリケーションや統計データの更新などに対するデータ転送のために使用されているバッファの解放を含むことができる。転送中は、「ｉＳＣＳＩ  ＰＤＵ」は、伝送コマンドエンジン（ブロック１１１０）と協働する伝送エンジン（ブロック１１０９）によって伝送され、このコマンドエンジンは、ＰＤＵを変換し、ストレージプロセッサに対するＤＭＡを使用し、ホストメモリからのアプリケーションバッファを検索するなどの適切な作動を実行し、進行に伴って更新されたｉＳＣＳＩ接続データベース内のストレージコマンドフロー情報を維持する。本特許で使用されるように、用語「エンジン」は、エンジンの機能又は使用に適するデータプロセッサ又はデータプロセッサの一部とすることができる。同様に、受信エンジン（ブロック１１０７）は、受信コマンドを新しい要求、応答、エラー、又は他のコマンド、又は適切に作用されるべきデータＰＤＵに翻訳する。コマンドエンジン（ブロック１１０６）と協働するこれらの受信エンジンは、読取データ又は受信データを、直接データ転送／配置���又はｉＳＣＳＩセッションテーブル内のセッションのために維持されたＲＤＭＡ制御情報を通じて、適切に割り当てられたアプリケーションバッファに経路指定する。コマンドが終了すると、それぞれのバッファに対する制御（ブロック１１０３及び１１１２）は、使用するアプリケーションのために解放される。受信及び送信エンジンは、図２３のＴＣＰ／ＩＰプロセッサ又は図２４のＩＰプロセッサから見る時にグローバルメモリとして見ることができる、セッションデータベースエントリ１７０４に記録されたセッション情報と協働するこのＩＰプロセッサの図１７のＳＡＮパケットプロセッサ１７０６（ａ）から１７０６（ｎ）とすることができる。ブロック１７０４と図１７の１７０８のセッションデータベースの一部分に関連して以下により詳細に説明される、セッションデータベースによって提供された適切なストレージフローコンテキストを使用して、同じエンジンを異なるパケットとコマンドのために再使用することができる。明確にするために、ＩＰネットワークアプリケーションプロセッサ、ＩＰストレージプロセッサ、ネＩＰストレージネットワークアプリケーションプロセッサ、及びＩＰプロセッサという用語は、アプリケーション次第で同じエンティティとすることができる。ＩＰネットワークアプリケーションプロセッサコア及びＩＰストレージネットワークアプリケーションプロセッサコアは、アプリケーション次第で同じエンティティとすることができる。
【００８２】
同様に、制御コマンドは、送信パスを使用することができ、一方、受信応答は、受信パスを使用するであろう。類似のエンジンは、ターゲットと同様にイニシエータ上に存在することができる。データフローの方向は、それがイニシエータかターゲットかによって異なる。しかし、ターゲットでは付加的な段階を伴うが、本質的にはイニシエータとターゲットの両方に類似のデータフローが存在する。例えば、書込コマンドデータを取得するのに必要なバッファを保証するために、ターゲットは、付加的な作動を実行する必要があるか又はイニシエータにデータが供給される前に読取データを準備する必要があるであろう。中間装置の場合は同様の例が存在するであろうが、そのようなスイッチ又はアプライアンスとすることができる装置では、あるレベルの仮想化又はフレーム濾過、又は、一方でセッションの終了を他方でセッションの開始を要求する場合がある類似の別の作動を実施することができる。この機能性は、このアーキテクチャによってサポートされるが、当業者には公知の範囲なので図には明確には示されていない。
【００８３】
図１２から図１５は、移送セッションに関する特定のプロトコル情報と、その情報をメモリ内のデータベースに保存することができる方法とを示す。
図１２は、ｉＳＣＳＩプロトコル及び関連ＴＣＰ／ＩＰ接続のために維持されたデータ構造を示す。各ｉＳＣＳＩセッション（ブロック１２０１）に属するデータは、基本的にイニシエータとターゲット接続のネクサスであり、適切な接続（ブロック１２０２）上で搬送される。従属コマンドは、同じ接続の待ち行列上でスケジュールに入れられ、コマンドの順序を維持する（ブロック１２０３）。しかし、関連のないコマンドは、別の移送接続に割り当てることができる。実施がセッション当たり１つの接続だけをサポートする場合、全てのコマンドを同じ接続の待ち行列に入れることが可能である。しかし、イニシエータとターゲットの間の回線中継をサポートするために、セッション当たり複数の接続が実現可能である。例えば、いくつかの実施形態では、イニシエータとターゲットは、互いに通信が可能であり、複数接続を受け入れるための交渉を通じて決めることになる。別の実施形態では、イニシエータとターゲットは、１つのセッション又は接続だけを通じて通信する。図１３と図１４は、ＴＣＰ／ＩＰ及びｉＳＣＳＩセッションデータベース、又は、セッション及び接続毎の伝送制御ブロックを示す。これらのエントリは、別々のテーブルとして搬送することができ、又は、次に図２３、２４、２６、及び２９に関連して見られるように、複合テーブルとして一緒に搬送することもできるが、ＴＣＰ／ＩＰだけ、ＲＤＭＡを有するＴＣＰ／ＩＰ、ＩＰストレージだけ、ＴＣＰ／ＩＰを有するＩＰストレージ、及びＲＤＭＡを有するＩＰストレージなど、選択された実施と実施された機能性とに依存する。ＴＣＰ／ＩＰ及びストレージフロー制御を実施する様々なエンジンは、これらのフィールドの全部又はいくつか、又は、示されていないより多くのフィールドを使用して、ＴＣＰ／ＩＰにわたってブロックデータ転送を方向付けする。データ転送過程の間に複数の状態を通じて接続が進行する時、適切なフィールドが更新される。図１５は、オンチップセッションキャッシュ（ブロック１５０１及び１５０２）、及びデータ転送の連続した進行のために必要な状態情報を保持するオフチップセッションメモリ（ブロック１５０３、１５０４、１５０５、１５０６、及び１５０７）から成るメモリサブシステムに転送制御エントリを保存する一方法を示す。
【００８４】
図１６は、抽象化レベルの高いＩＰプロセッサアーキテクチャを示す。プロセッサは、モジュールの拡張可能ＩＰネットワークアプリケーションプロセッサコア（ブロック１６０３）から成る。その機能性ブロックは、ＩＰネットワーク上で高速保存とデータ転送を利用可能にする機能性を提供する。プロセッサコアは、インテリジェントフローコントローラプログラマブル分類エンジン、及びストレージ／ネットワークポリシーエンジンを含むことができる。それぞれは、独立したプロセッサと考えることができ、それらのいずれかの組合せは、単一プロセッサとして実行することができる。開示されたプロセッサはまた、セキュリティ処理ブロックを含み、ネットワークパケットに対して高回線速度の暗号化及び暗号解読機能を提供する。同様に、これは、単一プロセッサにすることができ、又は上述の他のものと組み合わせることができる。開示されたプロセッサは、メモリサブシステムを含み、このサブシステムは、オンチップセッションキャッシュ／メモリを管理するメモリコントローラインタフェースと、オフチップメモリへのアクセスを管理するメモリコントローラ（ブロック１６０２）とを含み、このオフチップメモリは、ＳＲＡＭ、ＤＲＡＭ、ＦＬＡＳＨ、ＲＯＭ、ＥＥＰＲＯＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＦＣＲＡＭ、「ＱＤＲ  ＳＲＡＭ」、又は、静的又は動的ランダムアクセスメモリの他の派生物、又はその組合せとすることができる。ＩＰプロセッサは、適切なシステムインタフェースを含み、それを目標のマーケットセグメントで使用することができるようにし、ＬＡＮ、ＳＡＮ、ＷＡＮ、及びＭＡＮネットワーク、並びに同様のネットワーク、並びに適切なホストインタフェース（ブロック１６０６）に対して、適正なメディアインタフェース（ブロック１６０１）を提供する。メディアインタフェースブロックとホストインタフェースブロックとは、マルチポートの形態で存在することができ、そこでは、いくつかのポートは、開示されたプロセッサが使用されるネットワーク及びシステムで冗長性及びフェイルオーバー機能を供給することができる。プロセッサはまた、例えば、複数プロセッサシステムを作り出してメインプロセッサの機能を拡張するために、共用プロセッサインタフェース（ブロック１６０５）を含むことができる。ブロック１６０４のシステムコントローラインタフェースは、このプロセッサが汎用マイクロコントローラとインタフェースで接続することを可能にし、このマイクロプロコントローラは、開示されたプロセッサを使用することができるシステムに対して、システムコントローラとして作動することができる。プロセッサアーキテクチャはまた、システムコントローラ又はセッションマネージャとして作動することができる搭載された制御プレーンプロセッサをサポートする。システムコントローラインタフェースを依然として提供し、外部プロセッサの使用を可能にすることができる。このプロセッサのこのようなバージョンは、ダイのコストの理由から制御プロセッサを含むことができない。例えば、サーバアダプタ、又はストレージコントローラ、又はスイッチ回線カード、又は他のネットワーキングシステムのような特定のシステム要件に的を��って作り出すことができる様々な形式のコアアーキテクチャがある。主な違いは、本特許の前出の節で上述したようなことであろう。これらのプロセッサブロックは、ｉＳＣＳＩ、ＦＣＩＰ、ｉＦＣＩＰなどのような標準的プロトコルを使用し、高性能ＩＰベースのストレージを達成するための機能と性能をもたらす。これらのブロックの詳細なアーキテクチャを以下に説明する。
【００８５】
図１７は、ＩＰプロセッサアーキテクチャをより詳細に示す。上述のアーキテクチャは、完全なＴＣＰ／ＩＰの終了と深いパケットの検査とを通じてメディアアクセス制御装置（ＭＡＣ）又は他の適切な装置からの着信ＩＰパケットを処理するための機能を提供する。この図表は、図１６のＭＡＣ層のブロック１６０１、又はブロック１６０２、１６０４、又は１６０５を示していない。メディアインタフェース（ブロック１６０１）内のプロセッサの入力待ち行列（ブロック１７０１）と出力待ち行列（ブロック１７１２）とに対するＭＡＣ層インタフェースブロックは、図１６に示されている。ＭＡＣの機能性は、ネットワークに依存する特定の形式を有する標準ベースとすることができるであろう。「イーサネット」及びＳＯＮＥＴ上パケットは、今日最も広範囲に使用されるインタフェースの例であり、それらは、同じシリコン上、又は各々を使用して作り出されたプロセッサの異なるバージョンに含めることができる。
【００８６】
図１７のブロック図は、入力待ち行列及び出力待ち行列ブロック１７０１及び１７１２を２つの別のブロックとして示す。機能性は、組み合わせられたブロックを使用して提供することができる。入力待ち行列１７０１は、ＭＡＣインタフェースブロックからの着信パケットを検索するために、論理、制御、及びストレージから成る。ブロック１７０１は、パケットスケジューラ１７０２及び分類エンジン１７０３と協働してインタフェースから到着するパケットを待ち行列に入れ、パケットの最初、パケットの最後、及び、フラグメント化したパケット又は安全なパケットのような他の属性を識別するために適切な標識を作り出す。パケットスケジューラ１７０２は、入力待ち行列コントローラからパケットを検索し、分類のためにそれらを分類エンジンに転送することができる。分類ブロック１７０３は、スケジューラに続くように示されているが、論理的な観点から、分類エンジンが入力待ち行列からパケットを受け取り、パケットを分類して分類タグをパケットに提供し、そのパケットが次にスケジューラによってプロセッサアレイ１７０６（ａ）．．．１７０６（ｎ）に対してスケジュールに入れられる。従って、分類エンジンは、通過分類エンジンとして作用することができ、その構成を最高回線速度で使用してパケットフローを維持する。分類エンジンは、プログラマブルエンジンであり、様々なカテゴリのネットワークからパケットを受け取り、識別の結果を使用して、スケジューラと、使用すべき他のパケットプロセッサとのためにパケットにタグ付けする。ネットワークトラフィックの分類は、非常に計算集約的なタスクであり、パケットプロセッサで利用可能なプロセッササイクルの半分を占める。この一体化された分類エンジンは、第２層から第７層の検査を実行するためにプログラム可能である。分類されるフィールドは、適合するものがあれば、それらに対応する比較と処置のための期待値を使用してプログラムされる。図３０に関連して次に見られるように、分類子は、分類ウォークの結果を収集し、分類結果を識別するパケットに対するタグとしてこれらを呈示することができる。これは、ツリー構造によく似ており、「ウォーク」として理解されている。分類されたパケットは、次に、処理のパイプラインの次の段階としてスケジューラ１７０２に供給される。
【００８７】
パケットスケジューラブロック１７０２は、状態コントローラと、開示されたプロセッサ上の適切な実行エンジンにパケットを割り当てるシーケンサとを含む。実行エンジンは、所望する実施次第で、ＴＣＰ／ＩＰ、及び／又はストレージエンジン、並びにストレージフロー／ＲＤＭＡコントローラ（ブロック１７０８）、又はホストバイパス、及び／又は他の適切なプロセッサを含むＳＡＮパケットプロセッサ（ブロック１７０６（ａ）から１７０６（ｎ））である。明確にするために、記号「／」は、本特許でハードウエア構成要素を指す時は、適宜「及び／又は」を意味することができる。例えば、構成要素「ストレージフロー／ＲＤＭＡコントローラ」は、実行に対して適宜、ストレージフロー及びＲＤＭＡコントローラ、ストレージフローコントローラ、又はＲＤＭＡコントローラとすることができる。スケジューラはまた、パケットから同じ接続／セッション上のパケットへの状態の従属性が着信パケットの正しい処理のために重要である場合、プロセッサを通じてパケット順序化を維持する。パケットのリタイヤメントまで、プロセッサを使用してスケジュールに入れたパケットの進行を追跡するために、スケジューラは、様々なテーブルを維持する。スケジューラはまた、出ていくコマンド上のパケットプロセッサと、ホストプロセッサ又は切替ファブリックコントローラ又はインタフェースからのパケットとに対してスケジュールに入れる必要があるコマンドを受け取る。
【００８８】
プログラマブルパケットプロセッサに加えて、ＴＣＰ／ＩＰ及びストレージエンジンは、図１７のＳＡＮパケットプロセッサ１７０６（ａ）から１７０６（ｎ）として一緒にラベル付けされる。これらのパケットプロセッサは、独立のプログラマブル構成要素であるエンジンであり、特定の役割を果たす。代替的に、２つ又はそれ以上のそれらを望ましい実行次第で単一プロセッサとして実行することができる。図２３のＴＣＰ／ＩＰエンジンと図２４のストレージエンジンは、この例で、図２１のプログラマブルパケットプロセッサエンジンブロック２１０１に対する共有プロセッサとして構成される。このアーキテクチャは、コスト、製造、マーケットセグメントのような理由からストレージエンジンを置換／除去することにより、ストレージ以外のアプリケーションに比較的容易に適用することができる。純粋なネットワーキング環境では、ストレージエンジンは、専用のＴＣＰ／ＩＰエンジンを有するパケットプロセッサを残して除去され、ネットワーキングトラフィックの代わりに適用されることがあり、ＴＣＰ／ＩＰソフトウエアスタックによる同様の処理のオーバーヘッドに直面する。代替として、１つ又はそれ以上のエンジンを望ましい実施のために落としてもよく、例えば、ＩＰストレージ機能だけをサポートするプロセッサに対して、別のチップ内にあるＴＣＰ／ＩＰエンジン及び／又はパケットエンジンを落とすことができる。従って、コアの拡張可能モジュラーアーキテクチャの複数の変形が実現可能である。従って、コアのアーキテクチャは、例えば、アプリケーション専用の加速のためにサポートを提供する高性能ネットワークセキュリティ及びポリシーエンジン、高性能経路指定エンジン、高性能ネットワーク管理エンジン、ストリング検索を提供する深いパケット検査エンジン、ＸＭＬのエンジン、仮想化のためのエンジンのような他の専用エンジンでストレージエンジンを置換することにより、ＩＰアプリケーション上のストレージに加えて、アプリケーション内で強化することができる。このＩＰプロセッサの処理機能は、ネットワークインタフェースの回線速度の要求に合致するように、チップ内のＳＡＮパケットプロセッサブロック１７０６（ａ）から１７０６（ｎ）の数を増減することにより、スケーリングすることができる。拡張容易性からの根本的な制約は、要求されるシリコンのスペースとシリコン処理技術によって課せられる制約から生じる。根本的にこのアーキテクチャは、より多くのＳＡＮパケットプロセッサブロックを追加して処理機能を向上させることにより、かなりの高回線速度まで拡張することができる。同様の結果を達成する他の手段は、プロセッサの作動のクロック周波数を処理技術の限界内で実現可能な程度まで上げることである。
【００８９】
図１７はまた、ＩＰセッションキャッシュ／メモリ及びメモリコントローラブロック１７０４を示す。このキャッシュは、内部メモリ又はローカルセッションのデータベースキャッシュと見ることができる。このブロックは、ＴＣＰ／ＩＰセッションデータベースと、同様に特定数のアクティブセッションに対するストレージセッションデータベースとをキャッシュして保存するために使用される。キャッシュされるセッションの数は、選択されたシリコンスペースと、製造するための経済的な可能性との直接の結果である。オンチップでないセッションは、ブロック１７０４の一部か又は異なる高性能メモリコントローラブロックを使用して、外部メモリとして見られるオフチップメモリへ／から保存及び検索される。このプロセッサの様々な処理要素は、高速内部バスを使用してこのコントローラを共有し、セッション情報を保存して検索する。メモリコントローラはまた、フラグメント化したパケットを一時的に保存するために、又はホストインタフェース又は外部行きの待ち行列がバックアップされる時に使用することができる。コントローラはまた、統計データ情報、又は、開示プロセッサか又は開示又はホストプロセッサに対して作動しているアプリケーションによって収集することができる他のあらゆる情報を保存するために使用することができる。
【００９０】
図１７のプロセッサのブロック図はまた、ホスト入力待ち行列（ブロック１７０７）とホスト出力待ち行列（ブロック１７０９）、並びにストレージフロー／ＲＤＭＡコントローラ（ブロック１７０８）を示す。これらのブロックは、ホスト（「ピア」とも呼ばれる）メモリ又は切替ファブリックへ及びそこからデータを転送するために必要な機能を提供する。これらのブロックはまた、ホストベースのドライバがコマンドをスケジュールに入れ、着信ステータスを検索し、セッションデータベースのエントリを検索し、開示されたプロセッサをプログラムすることができるようにする機能を提供し、ソケット直接アーキテクチャ、ＴＣＰ／ＩＰの完全終了、ＩＰストレージオフロードのような機能をＲＤＭＡを使用して、又は使用しないで実行することができるようにする。図２７により詳細に見られるホストインタフェースコントローラ１７１０は、構成レジスタ、メモリ対メモリの直接データ転送のためのＤＭＡエンジン、及び上述のいくつかのタスクを実行するホストコマンドブロックをホストインタフェース処理コントローラ及びホスト割り込みコントローラと共に提供する。ホスト入力及び出力待ち行列１７０７及び１７０９は、着信パケットと発信パケットに待ち行列を提供する。ストレージフローとＲＤＭＡコントローラブロック１７０８は、開示されたプロセッサに対してホストがコマンドを待ち行列に入れるために必要な機能性を提供し、このプロセッサは、次にこれらのコマンドを取得してそれらを実行し、コマンドが終了するとホストプロセッサに割り込む。ブロック１７０８のＲＤＭＡコントローラ部分は、遠隔の直接メモリアクセスを可能にするために必要な様々な機能を提供する。それは、ＲＤＭＡ領域、アクセスキー、及び仮想アドレス変換機能性のような情報を含むテーブルを有する。このブロック内部のＲＤＭＡエンジンは、データ転送を実行し、受け取ったＲＤＭＡコマンドを変換し、実行が許可されている場合に処理を実行する。ブロック１７０８のストレージフローコントローラはまた、ターゲットとイニシエータの間でデータ転送が発生した時に、スケジュールに入れられた様々なコマンドの進行状態の追跡を保存する。ストレージフローコントローラは、実行するためのコマンドをスケジュールに入れ、コマンド終了情報をホストドライバに提供する。以上はＲＤＭＡ機能と考えられ、説明したように又は個々のプロセッサを実施することにより、設計者の選択次第で実施することができる。また、本特許の精神及び範囲から逸脱することなく、これらの説明に対して付加的な機能を追加するか又は排除することができる。
【００９１】
このプロセッサの制御プレーンプロセッサブロック１７１１は、ＩＣＭＰプロトコルによるエラー処理、ネーム解決、及びアドレス解決プロトコルを含むことができるＴＣＰ／ＩＰ及び／又はストレージプロトコルに対する比較的低速の経路指定機能を提供するのに使用され、それはまた、プログラムされてセッションコントローラ／接続マネージャとしてのセッション開始／取外し作動、ログイン及びパラメータ交換などを実行することができる。この制御プレーンプロセッサは、システム開発者に制御プレーンプロセッサの選択を提供するためにオフチップにするか、又は統合されたソリューションを提供するためにオンチップにすることができる。制御プレーンプロセッサがオフチップの場合、インタフェースブロックがそこで作り出されるか又は統合され、このプロセッサが制御プレーンプロセッサとインタフェースで接続することができるようになり、データとコマンドの転送を実行する。内部バス構造及び機能ブロック相互接続は、性能やダイのコスト要件などに関する全ての詳細図に対して図示と異なることがあり、それらは、本発明の精神及び範囲から逸脱しないものである。
図１７のブロックに関して上述した機能は、以下により詳細に説明するように、開示されたプロセッサの様々な処理リソースによるインストリーム処理を使用して、パケットが最低限の待ち時間で入力から出力まで通過することができるパケットストリームアーキテクチャを実行可能にする。
【００９２】
図１８は、一般的に、詳細には図１７の１７０１で表される入力待ち行列とコントローラブロックを示す。このブロックの核になる機能性は、ブロック１８０１及び１８０２（ｉ）から１８０２（ｎ）において複数の入力ポートであるポート１からＮからの着信パケットを受け入れ、パケットが分類子、スケジューラ、及びスケジューラＩ／Ｆブロック１８０７〜１８１４を通した更に別の処理に対してデキューされた入力パケット待ち行列（ブロック１８１０）に対する固定又はプログラマブル優先度を使用して、それらを待ち行列に入れることである。入力待ち行列コントローラは、各入力ポート（マルチポート実行のポート１からポートＮ）とインタフェースで接続し、入力パケット待ち行列上１８１０に対してパケットを待ち行列に入れる。パケット待ちコントローラとマーカーブロック１８０４は、ポート速度、ポートのネットワークインタフェース、ポート優先度、及び他の適切な様々な特徴に基づいて、固定された優先度機能を提供することができ、又は、別々のインタフェースに対して別々のポリシーが適用されるようにプログラムすることができる。ラウンドロビンや重み付けラウンドロビンなどのような様々なモードの優先度をプログラムすることができる。入力パケットデキューコントローラ（１８１２）は、パケットをデキューし、それらをスケジューラＩ／Ｆ１８１４を通じてパケットスケジューラ（図１７のブロック１７０２）に供給する。スケジューラは、図１７の分類エンジン１７０３によってパケットが分類された状態で、ＳＡＮパケットプロセッサ１７０６（ａ）〜１７０６（ｎ）に対してパケットをスケジュールに入れる。暗号化されたパケットは、最初に暗号化される時に分類することができ、実施がセキュリティ処理を含む場合、認証及び／又は暗号解読のために、図１８の安全なパケットインタフェースブロック１８１３により、図１７のセキュリティエンジン１７０５に転送されるが、そうでない場合は、セキュリティインタフェースは存在しないことがあり、同様の機能を実行するために外部セキュリティプロセッサが使用されるであろう。クリアなパケットインタフェース（ブロック１８１１）から暗号解読されたパケットは、次に、パケットがクリアなパケットと同じパスを追従するブロック１８１２を通じて入力待ち行列に供給される。
【００９３】
フラグメント化したＩＰパケットは、フラグメント化パケット保存制御バッファ（ブロック１８０６）内のオンチップに保存することができるか、又は内部又は外部メモリに保存することができる。最後のフラグメントが到着すると、ブロック１８０６のフラグメント化コントローラは、図１７の分類エンジン及びスケジューラと協働して、これらのフラグメントを組み合わせて完全なパケットを組み立てる。フラグメント化したパケットが組み合わせられて完全なパケットを形成した状態で、パケットは、ブロック１８０４を通じて入力待ち行列に対してスケジュールに入れられ、次に、パケットデキューコントローラ（ブロック１８１２）によって処理され、このプロセッサの様々な他の処理ステージに通される。図１８の入力待ち行列コントローラは、ブロック１８０８のパケット属性及びタグアレイに保存された、分類エンジンからの他のいずれかのセキュリティ情報と共にパケット開始、サイズ、バッファアドレスのようなパケット記述子フィールドを使用するブロック１８０９の属性マネージャによって管理されるパケットタグ／記述子を各着信パケットに割り当てる。パケットタグ及び属性は、プロセッサのスケジューラと他の構成要素により、インタフェース８０７、１８１１、１８１３，及び１８１４を通じて、プロセッサを通過するパケットのフローを効率的に制御するために使用される。
【００９４】
図１９は、図１７のパケットスケジューラとシーケンサ１７０２をより詳細に示す。このブロックは、パケットのスケジュール設定とこのプロセッサの実行リソースに対するタスクとを担い、従って、負荷均衡化としても作用する。スケジューラは、入力待ち行列コントローラ１９０１から、ヘッダの待ち行列（ブロック１９０２）のパケットのヘッダを検索し、それらを図１７の分類エンジン１７０３に通し、このエンジンは、次に、残りのプロセッサによって使用される分類子待ち行列（ブロック１９０９）の分類結果を戻す。分類エンジンは、最初はヘッダと共に呈示することができるが、深いパケット検査もプログラムされる場合は、分類エンジンは、分類の後でスケジューラに経路指定する完全なパケットを受け取ることができる。スケジューラは、分類エンジンを通じてパケットの実行を管理する分類コントローラ／スケジューラ（ブロック１９０８）を有する。図１９のこのブロックは、フラグメント化したパケット又は安全なパケットの場合は、そのようなパケットに対して適切な作動を行うために、例えば、図１７のセキュリティエンジンに対して暗号化されたパケットをスケジュールに入れるために、入力待ち行列コントローラ（ブロック１９０１）にコマンドを供給する。スケジューラ状態制御及びシーケンサ（ブロック１９１６）は、プロセッサ内部でアクティブな様々な処理／作動の状態情報を受け取り、次の作動のセットに対する命令を提供する。例えば、スケジューラは、ブロック１９０３の入力パケット待ち行列からパケットを検索し、分類子から受け取った分類の結果に基づいて、適切なリソース待ち行列に対してこれらのパケットをスケジュールに入れるか、又はパケットをパケットメモリ（ブロック１９１３又は１７０４から１９０６）に導き、スケジュール設定時又はその後に作動を実行するために、適切なリソースがそれを必要とする時にパケットを検索するために使用することができるパケット記述子／タグを作り出す。状態制御及びシーケンサブロック１９１６は、分類結果（ブロック１９１４）を有するパケットが、パケットが作動のためにスケジュールに入れられる時に検索されるパケットメモリ（ブロック１９１３）に保存されるように命令／誘導する。状態コントローラ及びシーケンサは、作動のためのパケットを受け取るべき実行リソースを識別し、コマンドを作り出し、このコマンドをパケットタグと共に図１９のリソース待ち行列ブロック１９１７（制御プレーン）、１９１８（ポートｉ〜ポートｎ）、１９１９（バイパス）、及び１９２０（ホスト）に割り当てる。優先度セレクタ１９２１は、割り当てられた優先度に基づいて、それぞれの待ち行列からコマンドとパケットタグを検索し、これをパケットフェッチとコマンドコントローラ（ブロック１９２２）に転送するプログラマブルブロックである。このブロックは、分類結果と共にパケットメモリストア１９１３からパケットを検索し、例えば、１９２６でリソースが作動待機中などの時に、高性能プロセッサのコマンド上の適切なリソースとパケットバスに対してパケット転送をスケジュールに入れる。それぞれの受け取り側のコマンドバスインタフェースコントローラ１９０５のようなバスインタフェースブロックは、コマンドを解釈してパケットと作動のための分類タグを受け入れる。これらの実行エンジンは、何時パケット作動が終了し、何時パケットが最終の宛先（ホストバスインタフェース、又は出力インタフェース、又は制御プレーンインタフェースなどのいずれか）に対してスケジュールに入れられるかをスケジューラに通知する。これによって、スケジューラは、ブロック１９０４のリタイヤメントエンジンの助けを借りて、パケットをその状態から退去させることができ、リソース割当テーブル（ブロック１９２３）のこのセッションのためにリソースエントリを解放する。リソース割当テーブルは、例えば、ＳＡＮパケットプロセッサエンジンのバッファに入れられたセッションデータベースキャッシュエントリや発信元内で実行されている現在のパケットの接続ＩＤなどのこれらのリソースの内部状態の現在の状態により、受け取ったパケットを特定のリソースに割り当てるためにシーケンサによって使用される。従って、順序付けられた実施に依存するパケットは、最初に同じリソースに割り当てられ、プロセッサのセッションメモリの現在のＤＢ状態を使用してメモリのトラフィックと性能を改善し、従って、新しいセッションのエントリを検索しなくてもよい。シーケンサはまた、パケットを待ち行列に入れるためにメモリコントローラ（ブロック１９０６）とのインタフェースを有し、これらのパケットは、フラグメント化されたパケットであり、及び／又は、最大回線速度性能を維持するために割り当てられたものよりも多くの時間が掛かり、パケット上で実行された特定のアプリケーションが原因となることがある下流のパケット処理の妨害のためにスケジューラの待ち行列が渋滞する場合のものであり、又は、他のいずれかの下流のシステムが一杯になって回線速度が維持できない場合のものである。
【００９５】
分類エンジンが入力待ち行列からパケットを受け取る図１７に関連して上述したように、分類子がスケジューラの前で実施される場合、アイテム１９０１、１９０２、１９０８、１９０９、及び１９１０は、個々の設計次第で分類子内にあるか又は必要ないこともある。分類子からスケジューラブロック１９０３、１９０７、１９１４、及び１９１５まで／からの適切な連結は、そのようなシナリオで作り出すことができ、分類子は、図１８の入力待ち行列ブロックに直接連結される。
【００９６】
図２０は、通常は図１７の１７０３で表されるパケット分類エンジンを示す。パケットのそれらの様々な属性への分類は、非常に計算集約的な作動である。分類子は、パケット形式、例えば、ＩＰ、ＩＣＭＰ、ＴＣＰ、ＵＤＰのようなプロトコル形式、ポートアドレス、発信元及び宛先フィールドなどを識別するために、受け取ったパケットの様々なフィールドを試験するプログラマブルプロセッサとすることができる。分類子は、ヘッダ又はペイロード内の特定フィールド又は一組のフィールドを試験するために使用することができる。ブロック図は、内容アドレスメモリベースの分類子を示す。しかし、先に説明したように、これもまた、プログラマブルプロセッサとすることができる。主な違いは、性能とエンジンの実施の複雑さである。分類子は、図２０の入力待ち行列（ブロック２００５及び２００４）からスケジューラを通じて入力パケットを取得する。入力バッファ２００４は、分類される必要があるパケット／記述子及び／又はパケットヘッダを待ち行列に入れる。次に、分類シーケンサ２００３は、待ち行列内の利用可能なパケットをフェッチし、プログラムされるか又はプログラムすることができるグローバルフィールド記述子の組（ブロック２００７）に基づいて、適切なパケットフィールドを抽出する。次に、分類子は、内容アドレスメモリ（ＣＡＭ）アレイ（ブロック２００９）にこれらのフィールドを通し、分類を実行する。フィールドは、ＣＡＭアレイを通過するので、これらのフィールドのマッチングは、比較されるべきフィールドの次の組と、場合によってはそれらのビットフィールド位置とを識別する。ＣＡＭアレイでのマッチングは、アクション／イベントタグをもたらし、このタグは、結果コンパイラ（ブロック２０１４）から収集され（「コンパイル」が「収集」の意味で使用される場合）、また、特定のＣＡＭ条件又は規則のマッチングに関連するメモリアレイ（ブロック２０１３）のデータを更新することができるアクションとしても作用する。これは、演算論理装置（ＡＬＵ）演算（ブロック２０１７）の実行を含むことができ、これは、例えば条件マッチングの増分又は減分などのこのフィールド上の実行リソースの一例と考えられる。ＣＡＭアレイは、ホスト又は制御プレーンプロセッサインタフェース１７１０及び１７１１を通してプログラミングのためにアクセス可能なデータベース初期化ブロック２０１１を通じて、比較すべき次のフィールドを含むフィールド、それらの期待値、及びマッチングに対するアクションを使用してプログラムされる。分類がリーフノードに達した状態で、分類は終了し、同じ分類タスクを実行するのを回避するためにＩＰプロセッサの他のエンジンによって次に使用することができる、トラバースされたパスを識別する分類タグが生成される。例えば、分類タグは、フロー又はセッションＩＤ、ＴＣＰ／ＵＤＰ／ＩＣＭＰのようなプロトコル形式の表示、処理、バイパス、パケットのドロップ、セッションのドロップなどをするか否かを示す値を含むことができ、又は実行リソースがパケット処理を開始するための特定のファームウエアコードのルーチンポインタを含むことができ、又はトラバースされた分類パスの署名などを含むこともできる。分類タグフィールドは、プロセッサの実行と機能性に基づいて選択される。分類子リタイヤメント待ち行列（ブロック２０１５）は、分類されたパケットのパケット／記述子と分類タグを保持し、スケジューラによって検索されるのを待機する。分類データベースは、データベース拡張インタフェースとパイプライン制御論理ブロック２００６とを使用して拡張することができる。これによって、より大きな分類データベースのための拡張性を必要とするシステムの構築が可能になる。アクションインタープリタ、ＡＬＵ、及び範囲マッチングブロック２０１２を有する分類エンジンはまた、ストレージ／ネットワークポリシー／特定のポリシーが満足された場合に取る必要があるアクションをプログラムする機能を提供する。ポリシーは、規則及びアクションテーブルの形態で実行することができる。ポリシーは、分類テーブルと共にホストインタフェースを使用して分類エンジン内でコンパイルされ、プログラムされる。データベースインタフェースとパイプライン制御２００６は、分類／ポリシーエンジンを拡張するためにコンパニオンプロセッサと連結するように実施することができる。
【００９７】
図２１は、通常は図１７の１７０６（ａ）から１７０６（ｎ）で示すようなＳＡＮパケットプロセッサを示している。パケットプロセッサは、特別に設計されたパケットプロセッサとすることができ、又はそれは、ＡＲＭ、ＡＲＣ、Ｔｅｎｓｉｌｉｃａ、ＭＩＰＳ、ＳｔｒｏｎｇＡＲＭ、Ｘ８６、ＰｏｗｅｒＰＣ、Ｐｅｎｔｉｕｍプロセッサ、ｉＡ６４のようないずれかの適切なプロセッサか、又は本明細書に説明した機能をサービス提供する他のいずれかのプロセッサとすることができる。これは、本特許の様々な節においてパケットプロセッサコンプレックスとも呼ぶ。このパケットプロセッサは、パケット処理のためのターゲット命令、又はＴＣＰ／ＩＰエンジン（ブロック２１０２）、又はＩＰストレージエンジン（ブロック２１０３）、又はその組合せを備えた、一般的に「ＲＩＳＣ  ＯＲ  ＶＬＩＷ」マシンであるパケットエンジン（ブロック２１０１）を有する。これらのエンジンは、パケットエンジンに対する共有エンジンとして、又は独立したエンジンとして構成することができる。図２２は、パケットエンジンをより詳細に示す。パケットエンジンは、通常は上述のようにパケット処理マイクロルーチン及びパケット及び中間ストレージを保持するために使用される命令メモリ（ブロック２２０２）及びデータメモリ（ブロック２２０６）（両方ともＲＡＭである）を備えた「ＲＩＳＣ  ＯＲ  ＶＬＩＷ」マシンである。命令メモリ２２０２は、本特許の全てのこのようなメモリと同様にＲＡＭ又は他の適切なストレージであり、パケット処理中に実行されるコードを使用して初期化される。パケット処理コードは、割り当てられたメモリ内に適合する緊密なマイクロルーチンとして編成される。命令復号器及びシーケンサ（ブロック２２０４）は、命令メモリ２２０２からの命令をフェッチしてそれらを復号化し、ＡＬＵ（ブロック２２０８）内に包含された実行ブロックを通じてそれらを順序付けする。このマシンは、単純なパイプラインエンジンか、又はパケット志向命令セットを提供するように設計されたより複雑な深いパイプラインマシンとすることができる。ＤＭＡエンジン（ブロック２２０５）及びバスコントローラ（ブロック２２０１）により、パケットエンジンがデータパケットを図１９のスケジューラから移動し、ホストインタフェースを作動のためにデータメモリ２２０６に移動させることが可能になる。ＤＭＡエンジンは、パケット／データをメモリ／パケットメモリへ／から保存／検索するために複数のメモリ記述子を保持することができる。これによって、メモリアクセスが、プロセッサエンジン作動と平行して発生するようになる。ＤＭＡエンジン２２０５はまた、データパケットをＴＣＰとストレージエンジン２２１０及び２２１１の間で移動させるために使用することができる。パケットの実行が終了した状態で、抽出されたデータ又は新しく生成されたパケットは、メディアインタフェース又はホストインタフェースのいずれかに向けて出力インタフェースに転送される。
【００９８】
図２３は、通常は図２２の２２１０に見られるプログラマブルＴＣＰ／ＩＰパケットプロセッサエンジンをより詳細に示す。このエンジンは、一般的に、様々なＴＣＰ／ＩＰ志向命令及び実行エンジンと共に共有ＲＩＳＣ命令を有するプログラマブルプロセッサであるが、本特許に説明する適切な実行エンジンを備えたマイクロコード化又は状態機械駆動プロセッサとすることもできるであろう。ＴＣＰプロセッサは、ＴＣＰチェックサムの確認、及びプロセッサ上のこれらの命令の実行による新しいチェックサム生成のためのチェックサムブロック２３１１を含む。チェックサムブロックは、パケットバッファメモリ２３０９（データＲＡＭがそのようなメモリの一例である）からデータを抽出し、チェックサムの生成又は確認を行う。パケット検索インタフェースブロック２３１０は、実行エンジンと命令シーケンサ２３０５を助け、様々なデータパケットフィールド又は全データパケットにアクセスを提供する。分類タグインタープリタ２３１３は、そのような実行が選択された場合、分類の結果に基づいてプログラムフローを誘導するために命令復号器２３０４によって使用される。プロセッサは、例えば、次の予想されるシーケンス番号を検索し、受け取ったものが合意されたスライドウィンドウの範囲内にあるか否か、また、パケットが属する接続に対してどのスライドウィンドウがＴＣＰプロトコルの公知の部分であるかを見るために、特定のシーケンスとＴＣＰ／ＩＰデータ順序付け計算で使用するための分割（ブロック２３１５）を含むウィンドウ作動を提供する。この要素２３１５は、図２４の２４１３で表すような分割コントローラを含むことができる。代替的に、当業者は、本特許の教示を使用して、この図２３のＴＣＰ／ＩＰプロセッサ上のどこにでも分割コントローラを容易に実施することができる。このプロセッサは、ハッシュエンジン（ブロック２３１７）を提供し、このエンジンは、パケットの特定フィールドに対してハッシュ作動を実行するために使用され、パケットに対して正しいセッションエントリを取得するために必要なハッシュテーブルウォークを実行する。プロセッサはまた、データの発信元及び宛先のためのポインタレジスタ、コンテキストレジスタセット、及び汎用レジスタファイルに加えてＴＣＰ状態を保持するレジスタと共に、ＴＣＰ処理のための様々な共通に使用されるヘッダフィールドを抽出するレジスタファイル（ブロック２３１６）を含む。ＴＣＰ／ＩＰプロセッサは、パケットの実行に対して複数のコンテキストを有することができ、そのために、例えばメモリアクセスのような何らかの理由で所定パケットの実行が機能停止すると、別のコンテキストが喚起され、プロセッサは、ごく僅かの効率ロスで別のパケットストリームの実行を継続することができる。ＴＣＰ／ＩＰプロセッサエンジンはまた、ローカルセッションキャッシュ（ブロック２３２０）を維持し、このキャッシュは、最も最近使用された又は最も頻繁に使用されたエントリを保持し、グローバルセッションメモリから検索する必要なしに局所的に使用することができる。ローカルセッションキャッシュは、パケットプロセッサとすることができるＴＣＰ／ＩＰプロセッサの内部メモリと考えることができる。セッション又はグローバルメモリから付加的なものを検索することなく、より多くのエントリが使用されて内部メモリに保存することができるほど、処理がより効率的になるのは勿論である。図１９のパケットスケジューラは、ＴＣＰ／ＩＰリソース毎にキャッシュされた接続ＩＤを通知され、従って、同じパケットプロセッサ複合システムに対して同じセッションに属するパケットをスケジュールに入れることができる。特定の接続に対してパケットプロセッサがセッションエントリを保持しない場合、ＴＣＰセッションデータベース検索エンジン（ブロック２３１９）は、セッションマネージャ（ブロック２３２１）及びハッシュエンジンと協働し、グローバルセッションメモリからメモリコントローラインタフェース（ブロック２３２３）を通じて対応するエントリを検索する。ハッシュエンジンと共に作用して、対応するセッションエントリ又はそのフィールドをセッションデータベースに対して保存／検索するためのセッション識別子を生成するセッションエントリ又はセッションエントリのフィールドのアクセスを可能にするセッションマネージャ内の論理回路のような手段がある。これは、それらのフィールド又はエントリをパケット処理の結果として更新するために使用することができる。新しいエントリがフェッチされると、配置されているエントリは、グローバルセッションメモリに保存される。ローカルセッションキャッシュは、キャッシュ原理に排他的に従うことができ、従って、複数プロセッサの複合システムは、セッションの状態に損害を与えるいかなる競合条件ももたらすことはない。ＭＥＳＩプロトコルのような他のキャッシュプロトコルは、類似の結果を達成するのに使用することができる。プロセッサ複合システムでセッションエントリがキャッシュされ、別のプロセッサ複合システムがそのエントリを必要とする場合、アルゴリズムに基づいて独占的アクセス又は適切なキャッシュ状態を使用し、このエントリは、新しいプロセッサに転送される。セッションエントリはまた、グローバルセッションメモリに書き込まれる場合がある。ＴＣＰ／ＩＰプロセッサはまた、作動されている接続に対してＴＣＰ状態をウォークスルーするために、ＴＣＰ状態機械（ブロック２３２２）を含む。この状態機械は、新しく受け取ったパケットから、状態に影響する適切なフィールドと共にセッションエントリに保存された同じ情報を受け取る。これによって、状態移行があり、情報がセッションテーブルエントリで更新されている場合は、状態機械は、次の状態を生成することができるようになる。ＴＣＰ／ＩＰプロセッサはまた、フレーム情報を抽出して順序不揃いのパケット実行の作動を行うために使用されるフレームコントローラ／順序不揃いマネージャブロック２３１８を含む。このブロックはまた、図２４の２４１７で表されるＲＤＭＡ機構を含むことができるが、非ストレージデータ転送のために使用される。当業者はまた、本特許の教示を使用して、ＴＣＰ／ＩＰプロセッサのどこにでもＲＤＭＡ機構を実施することができる。このアーキテクチャは、上部層フレーム指示機構を作り出し、この機構は、プログラマブルフレームコントローラによって使用されるフレーム指示キー又は他のキーとしてパケットＣＲＣを使用することができ、パケットの順序が狂って到着した時でも埋め込まれたＰＤＵを抽出し、それらが最後のバッファの宛先に導かれるようにする。このユニットは、セッションデータベースと対話し、順序が狂って到着した情報を処理し、この情報は記録され、従って、中間セグメントが到着した状態で再送信が回避される。パケットがＴＣＰ／ＩＰプロセッサを通じて処理された状態で、パケットがストレージデータ転送に属し、特定の実施がストレージエンジンを含む場合は、それは、作動のためにストレージエンジンに配信され、そうでなければ、最終のバッファの宛先に対するＤＭＡの処理のために、パケットは、ホストプロセッサのインタフェースか、又はブロック１７０８のストレージフロー／ＲＤＭＡコントローラに通される。パケットはまた、パケット上の任意の付加的な処理のために、パケットプロセッサブロックに転送することができる。これは、ＴＣＰ／ＩＰプロセッサ及びストレージプロセッサにより、処理の前か後にパケット上で実行することができるアプリケーション及びカスタムアプリケーションコードを含むことができる。ホストから出力メディアインタフェースへのデータ転送はまた、ＴＣＰ／ＩＰプロセッサを通過し、データ周辺に作り出されるべき適切なヘッダを形成し、フレームコントローラ及び／又はストレージプロセッサと協働し、適切なデータ分割を実行し、同じくセッション状態を更新する。このデータは、作動のためにスケジューラによってパケットプロセッサに対してスケジュールに入れられたホストコマンド又は受信ネットワークパケットの結果として検索することができる。内部バス構造及び機能性ブロック相互接続は、性能やダイコスト要件などに関して説明したものと異なる場合がある。例えば、ホストコントローラインタフェース２３０１、スケジューラインタフェース２３０７、及びメモリコントローラインタフェース２３２３は、バスコントローラの一部とすることができ、このバスコントローラは、スケジューラ、又はストレージフロー／ＲＤＭＡコントローラ、又はホスト、又はセッションコントローラ、又は、以下に限定されるものではないが、キュリティプロセッサ、メディアインタフェースユニット、ホストインタフェース、スケジューラ、分類プロセッサ、パケットバッファ又はコントローラプロセッサ、又は以上の任意の組合せのような他のリソースへの又はからのデータパケット又は状態情報又はコマンド又はその組合せの転送を可能にするものである。
【００９９】
図２４は、図２２のＩＰストレージプロセッサをより詳細に示す。ストレージエンジンは、一般的に、通常のＲＩＳＣ様のパケット処理用命令セットと共にＩＰベースのストレージを意図した命令セットを有するプログラマブルエンジンである。ＩＰストレージプロセッサエンジンは、ＣＲＣ作動を実行するためのブロック２４１１を含む。このブロックは、ＣＲＣの生成と確認を可能にする。ＩＰストレージを使用して着信パケットは、ＴＣＰ／ＩＰエンジンからＤＭＡ（ブロック２４０２及び２４０８）を通って、データメモリ（そのようなメモリの例がデータＲＡＭである）（ブロック２４０９）に転送される。実施がＴＣＰ／ＩＰエンジン又はパケットプロセッサエンジン又はその組合せを含まない場合は、パケットを例えばスケジューラから直接受け取ることができる。接続に関連するＴＣＰセッションデータベース情報は、必要に応じてローカルセッションキャッシュから検索することができるか、又はＴＣＰ／ＩＰエンジンからパケットを使用して受け取ることができる。ストレージＰＤＵは、ＰＤＵ分類子エンジン（ブロック２４１８）に提供され、このエンジンは、ＰＤＵを適切なコマンドに分類し、このコマンドは、次に、適切なストレージコマンド実行エンジン（ブロック２４１２）を呼び出すために使用される。コマンド実行は、ＲＩＳＣ又はピア又は命令セットを使用し、又は専用ハードウエアエンジンを使用して達成することができる。コマンド実行エンジンは、ＰＤＵで受け取ったコマンドを実行する。受け取ったＰＤＵは、保留書込コマンド又はＩＰストレージプロトコルによって要求された他のコマンドに対して、読取コマンドデータ又はＲ２Ｔを含むことができる。これらのエンジンは、書込データをホストインタフェースから検索するか、又は読取データを宛先バッファに誘導する。ストレージセッションデータベースは、プロセッサによって供給された最近の又は頻繁な接続に対してローカルメモリ（ブロック２４２０）として見なされるものにローカルにキャッシュされる。コマンド実行エンジンは、コマンドを実行し、ストレージ状態機械（ブロック２４２２）及びセッションマネージャ（ブロック２４２１）と協働してストレージデータベースエントリの更新を行う。接続ＩＤは、セッションを識別するために使用され、セッションがキャッシュに存在しない場合は、ストレージセッション検索エンジン（ブロック２４１９）により、図１７のグローバルセッションメモリ１７０４から検索される。イニシエータからターゲットへのデータ転送のために、プロセッサは、分割コントローラ（ブロック２４１３）を使用し、パスＭＴＵなどのような様々なネットワーク制約毎にデータユニットをセグメントに分割する。分割コントローラは、発信ＰＤＵが接続に対して最適なサイズになることを保証するように試みる。要求されたデータ転送が分割の最大有効サイズよりも大きい場合は、分割コントローラは、データを複数のパケットに圧縮し、シーケンスマネージャ（ブロック２４１５）と協働してシーケンス番号を適切に割り当てる。分割コントローラ２４１３はまた、図２３のＴＣＰ／ＩＰプロセッサ内で実行することができる。換言すれば、分割コントローラは、このプロセッサがＴＣＰ／ＩＰ作動のために使用されてストレージ作動でない時には、図２３のシーケンス／ウィンドウ作動マネージャ２３１５の一部である。当業者は、本特許の教示を使用して、分割コントローラをＴＣＰ／ＩＰプロセッサに組み込むための代替実施形態を容易に示唆することができる。図２４のストレージプロセッサ（又は、図２３のＴＣＰ／ＩＰプロセッサ）はまた、このＲＤＭＡ機構を使用して実施されるストレージ又はネットワークデータ転送のためにＰＤＵ内で受け取った遠隔の直接アクセス命令を変換するＲＤＭＡエンジンを含むこともできる。例えば、図２４では、それはＲＤＭＡエンジン２４１７である。図２３のＴＣＰ／ＩＰプロセッサでは、ＲＤＭＡエンジンは、フレームコントローラ及び順序不揃いマネージャ２３１８、又は他の適切な要素の一部とすることができる。接続の両端がデータ転送のＲＤＭＡモードに合致する場合は、実質的なホストの介在なしにターゲット及びイニシエータ間のデータ転送をスケジュールに入れるためにＲＤＭＡエンジンが使用される。ＲＤＭＡ転送状態は、セッションデータベースエントリに維持される。このブロックは、データの周囲で階層化されたＲＤＭＡのヘッダを作り出し、有効にされたＲＤＭＡの接続上で受け取った受信パケットからこれらのヘッダを抽出するためにも使用される。ＲＤＭＡエンジンは、メッセージ／命令を通過させることにより、ストレージフロー／ＲＤＭＡコントローラ（１７０８）及びホストインタフェースコントローラ（１７１０）と協働し、実質的なホストの介入なしに大量のブロックデータの転送を達成する。ＩＰプロセッサのストレージフロー／ＲＤＭＡコントローラブロック（１７０８）のＲＤＭＡエンジンは、要求された作動に対して保護検査を実行し、また、ＲＤＭＡ領域識別子からホスト空間の物理的又は仮想アドレスへの変換も提供する。この機能性はまた、選択された実行に基づくＳＡＮパケットプロセッサのストレージエンジンのＲＤＭＡエンジン（ブロック２４１７）によって提供することができる。２４１７と１７０８、及び他の同様のエンジンの間のＲＤＭＡ機能の分布は、本特許を使用して当業者が行うことができる実施の選択肢である。発信データは、ＰＤＵクリエータ（ブロック２４２５）によって標準ベースのＰＤＵにパッケージ化される。ＰＤＵのフォーマット設定はまた、パケット処理命令を使用することによって達成することができる。図２４のストレージエンジンは、図２３のＴＣＰ／ＩＰエンジン及び図１７のパケットプロセッサエンジンと協働し、両方の方向、すなわちイニシエータからターゲット、ターゲットからホスト、及びその逆にデータ及びコマンド転送を伴うＩＰストレージ作動を実行する。換言すれば、ホストコントローラインタフェース２４０１及び２４０７は、コマンド又はデータ又はその組合せをホストプロセッサへ保存し、又はそれから検索する。これらのインタフェースは、直接又は中間の接続を通じてホストに接続される。２つの装置として示されているが、インタフェース２４０１及び２４０７は、単一の装置として実施することができる。これらのブロックを通るデータフローは、その転送の方向に基づいて異なるであろう。例えば、コマンド又はデータがホストからターゲットに送られる場合、ストレージ処理エンジンは、ＰＤＵをフォーマット設定するために最初に呼び出されることになり、次に、このＰＤＵがＴＣＰプロセッサに通され、ＰＤＵを有効なＴＣＰ／ＩＰセグメントにパッケージ化する。しかし、受け取ったパケットは、ストレージプロセッサエンジンに対してスケジュールに入れられる前に、ＴＣＰ／ＩＰエンジンを通って進むことになる。内部バス構造及び機能性ブロック相互接続は、性能やダイコスト要件などのために図示のものと異なる場合がある。例えば、図２３と同様に、ホストコントローラインタフェース２４０１及び２４０７、及びメモリコントローラインタフェース２４２３は、バスコントローラの一部とすることができ、このバスコントローラは、スケジューラ、又はホスト、又はストレージフロー／ＲＤＭＡコントローラ、又はセッションコントローラ、又は、以下に限定されるものではないが、セキュリティプロセッサ、又はメディアインタフェースユニット、ホストインタフェース、スケジューラ、分類プロセッサ、パケットバッファ、又はコントローラプロセッサ、又は以上の任意の組合せのような他のリソースへ又はそれからのデータパケット又は状態情報又はコマンド又はその組合せの転送を可能にするものである。
【０１００】
一例として図２４のｉＳＣＳＩプロセッサのようなＩＰストレージプロセッサにより、図２３のＴＣＰ／ＩＰプロセッサを組み込まないチップ上でストレージが行われる用途では、ＴＣＰ／ＩＰインタフェース２４０６は、ＩＰストレージプロセッサによって処理するＩＰストレージパケットをスケジュールに入れるためのスケジューラに対するインタフェースとして機能するであろう。本特許の開示を鑑みる時、同様の変形は、十分に当業者の知識の範囲内である。
【０１０１】
図２５は、図１７の出力待ち行列コントローラブロック１７１２をより詳細に示す。このブロックは、図１６のネットワークメディアの独立インタフェース１６０１に送る必要があるパケットを受け取る。パケットは、送出される前に暗号化する必要があるか否かを示すためにタグ付けすることができる。コントローラは、待ち行列２５１１及びセキュリティエンジンインタフェース２５１０を通じてセキュリティエンジンに保護する必要があるパケットを待ち行列に入れる。暗号化されたパケットは、セキュリティエンジンから受け取られ、ブロック２５０９で待ち行列に入れられ、それらの宛先に送られる。このような機構がサポートされている場合は、出力待ち行列コントローラは、それらの各サービス品質（ＱＯＳ）待ち行列にパケットを割り当てることができる。プログラマブルパケット優先度セレクタ（ブロック２５０４）は、送られる次のパケットを選択し、そのパケットを適切なポート、すなわち、ポート１．．．ポートＮに対してスケジュールに入れる。ポートに付随するメディアコントローラブロック１６０１は、パケットを受け入れ、それらをその宛先に送る。
【０１０２】
図２６は、一般的に、図１７の１７０８で表すストレージフロー／ＲＤＭＡコントローラブロックをより詳細に示す。ストレージフロー及びＲＤＭＡコントローラブロックは、コマンド（ストレージ、又はＲＤＭＡ、又はソケット直接、又はその組合せ）をこのプロセッサに対して待ち行列に入れるためにホストに対して必要な機能性を提供し、このプロセッサは、次に、これらのコマンドを検索してそれらを実行し、主にコマンドが終了する時にホストプロセッサに割り込む。新しいアクティブなコマンド待ち行列（ブロック２６１１及び２６１０）と終了待ち行列（ブロック２６１２）とは、部分的にオンチップにすることができ、又は部分的にホストメモリ領域又はＩＰプロセッサに付随するメモリに入れることができ、それらからコマンドがフェッチされるか又は終了ステータスが保存される。ＲＤＭＡエンジン（ブロック２６０２）は、遠隔の直接メモリアクセスを有効にするのに必要な様々な機能を提供する。それは、ＲＤＭＡ領域及びアクセスキーのような情報と仮想アドレス変換機能性とを含むＲＤＭＡ検索テーブル２６０８のようなテーブルを有する。このブロック２６０２内部のＲＤＭＡエンジンは、データ転送を実行し、受け取ったＲＤＭＡコマンドを解釈して、可能であればトランザクションを実行する。ストレージフローコントローラはまた、ターゲットとイニシエータの間でデータ転送が発生した時にスケジュールに入れられた様々なコマンドの進行状態の追跡を維持する。ストレージフローコントローラは、実行のためのコマンドをスケジュールに入れ、また、ホストドライバにコマンド終了情報も提供する。ストレージフローコントローラは、ホストからの新しい要求が入っており、同様にアクティブなコマンドがアクティブコマンド待ち行列に保持されたコマンド待ち行列を提供する。ブロック２６０１のコマンドスケジューラは、接続が存在しないターゲットのために受信した新しいコマンドを、新しい接続を開始するためにスケジューラに割り当てる。スケジューラ１７０２は、図１７の１７１１で表される制御プレーンプロセッサを使用して、一般的に図１５と図１７の１７０４で表されるセッションキャッシュに接続エントリが移動される点で接続を確立し、ストレージフローコントローラブロック２６０１内の状態コントローラは、新しいコマンドをアクティブコマンドに移動して、そのコマンドを適切な接続に関連付ける。ブロック２６１０内のアクティブコマンドは、パケットプロセッサによる作動のために、検索されてスケジューラ（ブロック１７０２）に送られる。コマンドステータスに対する更新は、再度フローコントローラに提供され、このコントローラは、次に、それをブロック２６０３を通じてアクセスされるコマンド状態テーブル（ブロック２６０７）に保存する。２６０１のシーケンサは、コマンドスケジュール設定に対してプログラマブル優先度を適用し、従って、アクティブコマンドと新しいコマンドからスケジュールに入れられるべき次のコマンドを選択する。フローコントローラはまた、着信コマンド（ブロック２６１３）のための新しい要求の待ち行列を含む。新しい要求は、ホスト上でホストドライバによって適切な処理とバッファ予約が行われた状態で、アクティブコマンド待ち行列に転送される。実行のためにコマンドがスケジュールに入れられると、状態コントローラ２６０１は、ホストデータ事前検索マネージャ（ブロック２６１７）により、ホストインタフェースブロック２７０７のＤＭＡエンジンを使用して、ホストメモリからデータの事前検索を開始し、従って、コマンドが実行される時に、パケットプロセッサ複合システムに対して提供する準備が完了したデータを保存する。出力待ち行列コントローラ（ブロック２６１６）は、ホストコントローラインタフェース（ブロック２６１４）と協働して、データ転送を可能にする。ストレージフロー／ＲＤＭＡコントローラは、解決されたターゲット／イニシエータと、迅速な検索のため及びアクティブ接続にコマンドを関付けるために確立された接続とを関連付けるターゲット−イニシエータテーブル（ブロック２６０９）を維持する。コマンドシーケンサはまた、実行されているコマンドがＲＤＭＡコマンドの場合か、又はストレージ転送が接続開始時にＲＤＭＡ機構を通じて実行されるように交渉された場合は、ＲＤＭＡエンジンと協働することができる。ＲＤＭＡエンジン２６０２は、上述のように、複数ＲＤＭＡ領域、アクセス制御キー、及び仮想アドレス変換ポインタを受け入れるための機能性を提供する。ホストアプリケーション（ユーザアプリケーション又はＯＳカーネル機能、ストレージ、又は、ウェブページ又はビデオファイルなどのダウンロードのような非ストレージとすることができる）は、それが、開示されたプロセッサを用い、関連ホストドライバによって提供されたサービスを通じてＲＤＭＡトランザクションでの使用を希望するメモリ領域を登録する。これが行われた状態で、ホストアプリケーションは、その遠隔端末のピアにこの情報を通信する。この時点で、遠隔マシン又はホストは、実質的にホストの介在なしに、両端のＲＤＭＡブロックによって供給されたＲＤＭＡコマンドを実行することができる。ＲＤＭＡ転送は、領域からの読取、特定オフセットを有するある一定数のバイト、又は属性が類似の書込のような作動を含むことができる。ＲＤＭＡ機構はまた、２つの端末ノード間での通信パイプの作成のために有用な送信機能性を含むことができる。これらの機能は、クラスター内のサーバ、又は、更に可能性があるのは、２つの異なるクラスターのサーバ内のサーバ、又は他のそのようなクラスター化システムで実行される２つのアプリケーションのバッファ間で大量のデータ転送が要求される、アプリケーションのクラスター化において有用である。ストレージデータの転送は、それが実質的にホストの介在なしに大きなブロックのデータ転送を可能にするので、ＲＤＭＡ機構を使用しても達成される。両端のホストは、ＲＤＭＡ転送を行なうこと、及び共有されたアクセス制御キーを通じてメモリ領域と認可を割り当てることに同意するために最初に関わり合っている。更に、２つのノード間のデータ転送は、利用可能なバッファスペースとバッファ転送クレジットが２つの端部ノードによって維持されている限りは、ホストプロセッサの介入がなくても継続することができる。ストレージデータ転送プロトコルは、ＲＤＭＡプロトコルを使用することに同意し、それを両端で有効にすることにより、ＲＤＭＡの上で実行されるであろう。図２６のストレージフローコントローラ及びＲＤＭＡコントローラは、次に、ＲＤＭＡコマンドを使用して、ストレージコマンド実行とデータ転送を遂行することができる。予想されたデータ転送が終了すると、終了待ち行列２６１２を使用して、ストレージコマンド終了ステータスがホストに通信される。ネットワークから到着した着信データパケットは、図１７のパケットプロセッサ複合システムによって処理され、次にＰＤＵが抽出され、ストレージ／ＲＤＭＡデータパケットの場合、図２６のフローコントローラに呈示される。これらは、次に着信待ち行列ブロック２６０４に割り当てられ、受信バッファのメモリ記述子の検索によって端末宛先バッファに転送され、次に、ホストインタフェースブロック２７０７のＤＭＡエンジンを使用してＤＭＡを実行する。ＲＤＭＡコマンドはまた、ＲＤＭＡ初期化のように保護キー検索及びアドレス変換を通過することができる。
以上の内容はまた、ＲＤＭＡ能力、又はＲＤＭＡ機構、又はＲＤＭＡ機能の一部と考えることができる。
【０１０３】
図２７は、図１７の１７１０で表されるホストインタフェースコントローラをより詳細に示す。ホストインタフェースブロックは、ホストバスに対して物理的なインタフェースを提供するホストバスインタフェースコントローラ（ブロック２７０９）を含む。ホストインタフェースブロックは、スイッチ又はゲートウェイ又は同様な構成に組み込まれる時は、システムアーキテクチャに依存し、ファブリックインタフェースとして又はメディア独立インタフェースとして実行することができ、仮想出力待ち行列及び／又は他の品質のサービス機能として提供することができる。ブロック２７０８の処理コントローラ部分は、様々なバス処理を実行し、それらのステータスを維持して終了するために要求された処理を行う。ホストコマンドユニット（ブロック２７１０）は、ホストによって配送されたコマンドを実行するために、ホストバス構成レジスタと１つ又はそれ以上のインタープリタとを含む。ホストドライバは、ホスト出力待ち行列インタフェース２７０３上でこれらのコマンドをこのプロセッサに提供する。コマンドは、構成レジスタやスケジュールＤＭＡ転送の設定、必要に応じてＤＭＡ領域及び許可の設定、セッションエントリや検索セッションデータベースの設定、及びＲＤＭＡエンジンの構成などのような様々な機能を提供する。ストレージ及び他のコマンドはまた、ＩＰプロセッサによる実行のためにこのインタフェースを使用して転送することができる。
【０１０４】
図２８は、図１７のセキュリティエンジン１７０５をより詳細に示す。図示のセキュリティエンジンは、例えば、ＩＰＳＥＣのような基準によって要求されるような認証及び暗号化及び暗号解読サービスを提供する。セキュリティエンジンによって提供されるサービスは、複数の認証及びセキュリティアルゴリズムを含むことができる。セキュリティエンジンは、上述のように、プロセッサをオンボードにすることができ、又は別のシリコンチップの一部とすることができる。ＩＰセキュリティサービスを提供する外部セキュリティエンジンは、着信パケットのパケット処理の最初のステージの１つとして、かつ、出てゆくパケットの最後のステージの１つとして、データフロー内の同様な位置に配置される。図示のセキュリティエンジンは、セキュリティ基準として適合した非常にハードウエア性能効率的なアルゴリズムの最新暗号化基準（ＡＥＳ）ベースの暗号化及び暗号解読サービスを提供する。このブロックは、一例としてＤＥＳや３ＤＥＳのような他のセキュリティ機能を同様に提供することができる。セキュリティと認証のためにサポートされたアルゴリズムと機能は、シリコンコストと開発コストから影響されたものである。選択されたアルゴリズムはまた、ＩＰストレージ基準によって要求されたものである。認証エンジン（ブロック２８０３）は、利用可能なアルゴリズムの一例としてＳＨＡ−１を含むように示されている。このブロックは、ＩＰセキュリティ基準で規定されたようなメッセージのダイジェストと認証機能を提供する。セキュリティ及びメッセージ認証サービスが要求される時、データは、これらのブロックを通過する。ターゲットに向けて出ていく途中のクリアなパケットは暗号化され、次に、必要に応じて適切なエンジンを使用して認証される。受け取った安全なパケットは、反対の順序で同じ段階を進む。安全なパケットは認証され、次に、このブロックのエンジン２８０３及び２８０４を使用して暗号解読される。セキュリティエンジンはまた、接続のために確立されたセキュリティコンテキストメモリ（ブロック２８０９）にセキュリティアソシエーションを維持する。セキュリティアソシエーションは、（安全なセッションのインデックス、セキュリティキー、使用されるアルゴリズム、セッションの現在の状態などを含むことができ）、メッセージ認証及び暗号化／暗号解読サービスを実行するために使用される。メッセージ認証サービス及び暗号化／暗号解読サービスを互いに独立して使用することも可能である。本特許の他のプロトコル処理ハードウエア機能と共に、図２８のセキュリティエンジン又は図２０の分類／ポリシーエンジン又はその組合せは、本特許のハードウエアプロセッサを使用して安全なＴＣＰ／ＩＰスタックを作成する。
【０１０５】
図２９は、全体的に図１７の１７０４で表されるセッションキャッシュ及びメモリコントローラ複合システムをより詳細に示す。メモリ複合システムは、キャッシュ又はメモリ又はその組合せとして、本特許ではセッション／グローバルセッションメモリ又はセッションキャッシュと呼ばれるＴＣＰ／ＩＰセッションデータベースのためのキャッシュ／メモリアーキテクチャを含む。セッションキャッシュ検索エンジン（ブロック２９０４）は、特定のセッションキャッシュエントリを検索するための機能性を提供する。この検索ブロックは、提供されたフィールドの外にハッシュインデックスを作り出すか、又はハッシュキーを受け入れてセッションキャッシュエントリを検索することができる。キャッシュアレイ内にハッシュインデックスとのタグのマッチングがない場合、検索ブロックは、このキーを使用して外部メモリからセッションエントリを見つけ、現在のセッションキャッシュエントリをそのセッションエントリと取り替える。それは、要求のパケットプロセッサ複合システムにセッションエントリフィールドを提供する。ローカルプロセッサ複合システムキャッシュ内に存在するキャッシュエントリは、グローバルキャッシュに共有されるようにマーク付けされる。従って、任意のプロセッサがこのキャッシュエントリを要求すると、それは、グローバルキャッシュと要求しているプロセッサとに転送され、グローバルキャッシュにそのようにマーク付けされる。セッションメモリコントローラはまた、退去させられたキャッシュエントリをこのブロック内部のグローバルキャッシュに移動させる役割を果たす。従って、セッションエントリの任意の要求者に対して、最新のセッション状態だけがいつでも利用可能である。セッションキャッシュが満杯の場合、新しいエントリにより最低使用頻度のエントリを退去させることができる。セッションメモリは、所定の処理技術で使用することができるシリコンスペースに応じて、単一回路又は複数回路キャッシュ又はハッシュインデックスメモリ、又はその組合せにすることができる。ネットワークスイッチ又はルータのためのネットワーキングアプリケーションでは、一般的にパケット間で利用可能な基準特性の局所性があまり多くなく、従って、キャッシュの使用はキャッシュミスのために多くの性能改善をもたらさないという点で、セッションデータベースエントリを保存するためのキャッシュの使用は独特である。しかし、ストレージ処理は、２つの端部システム間の持続時間が長い処理であり、大量のデータを交換することができる。クラスター化又はメディアサーバのように２つのノード間で大量のデータ転送が発生するこのシナリオ又はケースでは、キャッシュベースのセッションメモリアーキテクチャは、オフチップメモリからのデータ転送を大幅に低減することにより、性能的な恩典を達成することになる。セッションキャッシュのサイズは、利用可能なシリコンダイ面積の関数であり、トレードオフによって性能に影響を及ぼすことがある。メモリコントローラブロックはまた、パケット、パケットのフラグメント、又はメモリ内のオペレーティングデータを保存する必要がある他のブロックにサービスを提供する。メモリインタフェースは、サポートする必要のある予想データ帯域幅に依存して、単一又は複数の外部メモリコントローラ（ブロック２９０１）を提供する。これは、ＤＲＡＭ又はＳＲＡＭ又はＲＤＲＡＭ、又は他の動的又は静的ＲＡＭ、又はその組合せのための１つ又は複数の２倍データ速度コントローラとすることができる。図は、複数コントローラを表すが、その数は必要な帯域幅とコストに応じて変動する。メモリ複合システムはまた、セッションデータベースメモリブロックによって維持された再発信待ち行列上でセッション自体を待ち行列に入れるセッションに対する再発信タイムアウトに使用するためのタイマ機能性を提供することができる。
【０１０６】
図３０は、分類エンジンのデータ構造の詳細を示す。これは、分類エンジンのデータ構造を編成するための１つの方法である。分類データベースは、ツリー構造（ブロック３００１）として表され、ツリー内のノード（ブロック３００３）とノードに関連したアクション（ブロック３００８）とは、分類エンジンがツリーの下方にウォークし、特定のノード値の比較を行うことを可能にする。ノード値とそれらが呈示するフィールドは、プログラム可能である。アクションフィールドは、フィールドが特定のノード値に符合する時に抽出される。アクションアイテムは、次の段階を規定し、この段階は、新しいフィールドの抽出と比較を含むことができ、このノード値の対に関連する特定のデータフィールド上でＡＬＵ演算のような他の演算を実行するか、又は端末ノードを表示することができ、その時点で特定パケットの分類が終了する。データ構造は、それがパケットスケジューラから受け取るパケットを分類するために分類エンジンによって使用される。符合する値を使用して検索されたアクションアイテムは、パケットの異なるフィールドを繰り返す一方で、結果コンパイラによって使用され、一般的にパケットのヘッダの前でパケットに接続される分類タグを生成する。分類タグは、次に、プロセッサの残りによって基準として使用され、分類の結果に基づいて取る必要があるアクションを決める。プログラマブルな特性を有する分類子は、分類ツリー構造のシステム変更を可能にし、分類の必要性の異なるシステムでプロセッサの使用を可能にする。分類エンジンはまた、分類のツリーノード値アクションの構造の一部としてプログラムすることができるストレージ／ネットワークポリシーの作成を可能にし、ＩＰベースのストレージシステムにおいて非常に強力な機能を提供する。ポリシーは、このプロセッサを使用するシステムの管理を増強し、特定のポリシー又は規則が符合した時又は侵害された時の強化機能を可能にする。分類エンジンは、特定のシステム制約によって要求された時に、外部の要素を使用して分類データベースの拡張を可能にする。ツリーとノードの数は、シリコン面積と性能トレードオフとに基づいて決まる。データ構造の構成要素は、分類エンジンの様々なブロックに維持され、分類シーケンサによって使用され、構造によってパケット分類の方向付けが行われる。分類データ構造は、ターゲットソリューションに応じて、表示されたものよりも多いか又は少ないフィールドを要求することができる。従って、分類のコアの機能性は、基本となるアーキテクチャから離れることなく、より少ない要素と構造を使用して達成することができる。分類処理は  プログラムに従ってツリーとノードを通ってウォークする。特定ノードアクションにより、分類の残りのフィールドのために新しいツリーの使用を可能にすることができる。従って、分類処理は、ツリールートで始まり、ノードを通って進行し、最後はリーフノードに到達する。
【０１０７】
図３１は、イニシエータとターゲットの間の読取作動を示す。イニシエータは、処理を開始するためにターゲットにＲＥＡＤコマンド要求（ブロック３１０１）を送信する。これは、アプリケーション層の要求であり、特定のＳＣＳＩプロトコルコマンドにマップされ、ＩＰベースのストレージネットワーク内でＲＥＡＤプロトコルデータユニット（ブロック３１０２）として移送されるものである。ターゲットは、要求されたデータ（ブロック３１０３）を準備し、最大転送ユニット制約を満足するように分割された読取応答ＰＤＵ（ブロック３１０５）を提供する。イニシエータは、次に、ＩＰパケットからデータを検索（ブロック３１０６）し、それは、次に、この作動のために割り当てられた読取バッファに保存される。全てのデータが転送された状態で、ターゲットは、コマンド終了の応答を行ってステータスを感知する（ブロック３１０７）。完全な転送が終了する（ブロック３１０９）と、イニシエータは、次にコマンドを退去させる。ターゲットに何らかのエラーがあり、何らかの理由でコマンドが中途終了している時は、イニシエータによって単独で回復の手順を開始することができる。このトランザクションは、プロトコルのＰＤＵとしてのｉＳＣＳＩのようなＩＰベースのストレージプロトコル上のデータ移送を有する標準的ＳＣＳＩのＲＥＡＤトランザクションである。
【０１０８】
図３２は、図３１に示すトランザクションの受信「ＲＥＡＤ  ＰＤＵ」の１つに対する本発明のＩＰプロセッサ内部のデータフローを示す。内部データフローは、イニシエータ端末上のＩＰプロセッサによって受信した読取データＰＤＵに対して示される。この図は、パケットが通過する作動の様々なステージを表す。ステージは、パケットがトラバースするパイプラインステージと考えることができる。トラバースするパイプのステージの数は、受け取ったパケットの種類に依存する。図は、確立された接続上で受け取ったパケットに対するパイプステージを表す。パケットは、以下の主要なパイプステージを通ってトラバースする。
【０１０９】
１．ブロック３２０７に示す主要な段階を有するブロック３２０１の受信パイプステージ。パケットは、メディアアクセスコントローラによって受信される。パケットが検出され、プリアンブル／トレーラーが除去され、パケットは、第２層ヘッダとペイロードと共に抽出される。これは、第２層確認、及び全てのエラー検出が意図する受取人に対して発生するステージである。確立されたポリシー毎に適用されるサービス品質検査がある場合もある。パケット確認がクリアされた状態で、パケットは、入力待ち行列に入れられる。
２．ブロック３２０８に示す主要な段階を有するブロック３２０２のセキュリティパイプステージ。パケットは、入力待ち行列から分類エンジンまで動かされ、そこでセキュリティ処理のための迅速な判断が行われ、パケットがセキュリティ処理を通過する必要がある場合、セキュリティパイプステージに入る。パケットがクリアなテキストで受信されて認証を必要としない場合、セキュリティパイプステージは省略される。セキュリティパイプステージはまた、セキュリティエンジンがＩＰプロセッサと統合されていない場合は、省略することができる。パケットは、第１にこの接続に対するセキュリティアソシエーションがメモリから検索され、パケットが選択されたメッセージ認証アルゴリズムを使用して認証されるセキュリティエンジンの様々なステージを通過する。パケットは、次に、セッションのために確立されたセキュリティキーを使用して暗号解読される。パケットがクリアなテキストになった状態で、それは、入力待ち行列コントローラに対して再度待ち行列に入れられる。
３．ブロック３２０９に示す主要な段階を有するブロック３２０３の分類パイプステージ。スケジューラは、入力待ち行列からクリアなパケットを検索し、分類のためにパケットをスケジュールに入れる。分類エンジンは、第３層及びより高い層の分類のためにパケットから関連フィールドを抽出するような様々なタスクを実行し、ＴＣＰ／ＩＰ／ストレージプロトコルなどを識別し、それらの分類タグを生成し、分類エンジンでプログラムされたポリシーに応じて、パケットを排除したりバイパスのためにパケットにタグ付けするようなアクションを取ることができる。分類エンジンはまた、実行を容易にするためのパケットヘッダ及びペイロードのマーク付けと共に、セッション又はこのエンジンが属するフローでパケットにタグ付けすることができる。分類エンジンのプログラムに依存して、列挙されたタスクのいくつかを実行することができ、又は実行されなくてもよく、他のタスクが実行されてもよい。分類が実行されると、パケットに分類タグが追加され、処理するためにスケジューラに対してパケットが待ち行列に入れられる。
４．ブロック３２１０に示す主要な段階を有するブロック３２０４のスケジュールパイプステージ。分類パケットが、分類エンジン待ち行列から検索され、処理のためにスケジューラ内に保存される。スケジューラは、パケットヘッダから発信元及び宛先フィールドのハッシュを実行し、分類子によって実行されない場合にパケットが属するフローを識別する。フローの識別が行われた状態で、パケットは、フローの従属性に基づいて実行リソース待ち行列に割り当てられる。新しいパケットを受け入れるためにリソースが利用可能になると、待ち行列の次のパケットが、そのリソースに対する実行のために割り当てられる。
５．ブロック３２１１に示す主要な段階を有するブロック３２０５の実行パイプステージ。パケットは、このパケットを実行するためにリソースが利用可能になると、実行パイプステージに入る。パケットは、パケットを実行するために想定されたパケットプロセッサ複合システムに転送される。プロセッサは、パケットに接続された分類タグを見て、パケットのために要求される処理段階を決める。これがＩＰベースのストレージパケットの場合、このセッションのためのセッションデータベースエントリが検索される。ローカルセッションキャッシュが既にセッションエントリを保持する場合は、データベースアクセスは要求されない。フローに基づいてパケット割当が行われた場合は、グローバルセッションメモリからセッションエントリを検索する必要はない。パケットプロセッサは、次に、ＴＣＰエンジン／ストレージエンジンを開始し、それらの作動を実行する。ＴＣＰエンジンは、チェックサム、シーケンス番号検査、必要なＣＲＣ作動を使用したフレーム指示検査、及びＴＣＰ状態更新を含む様々なＴＣＰ検査を実行する。次に、ストレージＰＤＵが抽出され、実行のためにストレージエンジンに割り当てられる。ストレージエンジンは、ＰＤＵ内のコマンドを変換し、この特定のケースでは、それをアクティブなセッションに対する読取応答として識別する。次に、それは、ペイロードの整合性とシーケンスの整合性を確認し、次に、セッションデータベースエントリ内のストレージフロー状態を更新する。宛先バッファのメモリ記述子はまた、セッションデータベースエントリから検索され、抽出されたＰＤＵペイロードはストレージフロー／ＲＤＭＡコントローラに対して、それらのホストインタフェースブロックはＤＭＡに対して、データは最終のバッファ宛先に対して、待ち行列に入れられる。データは、メモリ記述子と実行するコマンド／作動と共に、フローコントローラに配信することができる。この場合、このアクティブ読取コマンドに対してデータを入れる。ストレージフローコントローラは、そのアクティブコマンドデータベースを更新する。実行エンジンは、パケットが既に退去しており、パケットプロセッサ複合システムがそのシステムの次のコマンドを受け取る準備ができていることをスケジューラに示す。
６．ブロック３２１２に示す主要な段階を有するブロック３２０６のＤＭＡパイプステージ。ストレージフローコントローラがメモリ記述子、コマンド、及びフロー状態の適切な確認を行った状態で、このコントローラは、ホストメモリに対する転送のためにＤＭＡエンジンにデータブロックを送る。ＤＭＡエンジンは、そのようなＱＯＳ機構がプログラムされるか又は実行されると、優先度ベースの待ち行列を実行することができる。データは、ＤＭＡを通じてホストメモリ位置に転送される。これがコマンドの最後の作動の場合、ホストドライバにコマンド実行の終了が表示される。これがコマンドに対する最後の作動であり、コマンドが終了待ち行列に対して待ち行列に入れられている場合、コマンドに対して割り当てられたリソースは、新しいコマンドを受け入れるために解放される。コマンド統計データは、性能分析、ポリシー管理、他のネットワーク管理、又は統計目的のために要求される場合があるので、終了ステータスと共に収集して転送することができる。
【０１１０】
図３３は、イニシエータとターゲットの間の書込コマンド作動を示す。イニシエータは、トランザクションを開始するためにターゲットにＷＲＩＴＥコマンド（３３０１）を送る。このコマンドは、ＩＰストレージネットワーク上で「ＷＲＩＴＥ  ＰＤＵ」（ブロック３３０２）として移送される。レシーバは、新しい要求待ち行列に受け取ったコマンドを入れる。作動の古いコマンドが終了した状態で（ブロック３３０４）、レシーバは、リソースを割り当ててコマンド（ブロック３３０５）に対応するＷＲＩＴＥデータを受け入れる。このステージで、レシーバは、受け取る予定のデータ量とどの位置から受け取るかの指示を使用して、イニシエータに転送待機中（Ｒ２Ｔ）ＰＤＵ（ブロック３３０６）を出す。イニシエータは、Ｒ２Ｔ要求のフィールドを変換し、データパケット（ブロック３３０７）を、受け取ったＲ２Ｔ毎にレシーバに送る。イニシエータとターゲットの間のこの交換のシーケンスは、コマンドが終了されるまで続く。成功したコマンドの終了又はエラー条件は、応答ＰＤＵとしてターゲットによってイニシエータに通信され、それが次にコマンドを終了させる。イニシエータは、エラーの場合に回復処理を開始するように要求することができる。これは、図３３の交換には示されていない。
【０１１１】
図３４は、「Ｒ２Ｔ  ＰＤＵ」の１つに対する本発明のＩＰプロセッサ内部のデータフローと、図３３に示す書込トランザクションの追随する書込データとを示す。イニシエータは、ネットワークメディアインタフェースを通じてＲ２Ｔパケットを受け取る。パケットは、受信、セキュリティ、分類、スケジュール、及び実行を含む図３２の「ＲＥＡＤ  ＰＤＵ」と同様の対応するブロック３４１５、３４１６、３４０９、及び３４１０内の詳細な主要段階を使用して、全てのステージ（ブロック３４０１、３４０２、３４０３、及び３４０４）を通過する。セキュリティ処理は、この図には表示されていない。これらのステージに続いてＲ２Ｔは、図３４に示すＤＭＡステージを使用して、書込データフェッチを開始する（ブロック３４０５及び３４１１）。書込データは、次に分割され、実行ステージ（ブロック３４０６及び３４１２）を通じてＴＣＰ／ＩＰパケットに置かれる。ＴＣＰ及びストレージセッションＤＢエントリは、Ｒ２Ｔに応答して転送されたデータを用いてＷＲＩＴＥコマンドに対して更新される。パケットは、次に、出力待ち行列コントローラに対して待ち行列に入れられる。接続セキュリティの合意に基づいて、パケットは、セキュリティパイプステージ（ブロック３４０７及び３４１３）に入ることができる。パケットが暗号化されてメッセージ認証コードが生成された状態で、パケットは、宛先への送信のためにメディアインタフェースに対して待ち行列に入れられる。このステージ（ブロック３４０８及び３４１４）の間に、パケットは、パケットプロセッサによってまだ為されていなければ、第２層ヘッダ内にカプセル化され、かつ送信される。パイプラインの各ステージで従うべき段階は、上述の「ＲＥＡＤ  ＰＤＵ」パイプステージと類似であり、この図に示されている書込データパケットステージのための付加的なステージを有する。各ステージで実行される特定の作動は、コマンドの種類、セッションの状態、コマンドの状態、及び設定することができるポリシーに対する他の様々な構成に依存する。
【０１１２】
図３５は、イニシエータとターゲットの間のＲＤＭＡ機構を使用したＲＥＡＤデータ転送を示す。イニシエータとターゲットは、ＲＤＭＡデータ転送を開始させる前にＲＤＭＡバッファを登録する（ブロック３５０１、３５０２、及び３５０３）。イニシエータは、予想される受け取り側としてのＲＤＭＡを使用してＲＥＡＤコマンド（ブロック３５１０）を出す。このコマンドは、ターゲット（ブロック３５１１）に移送される。ターゲットは、読み込まれるデータを準備し（ブロック３５０４）、次に、ＲＤＭＡ書込作動（ブロック３５０５）を実行し、書込データをイニシエータにおいてホストの介在なしに直接ＲＤＭＡバッファに保存する。作動の終了は、コマンド終了応答を使用して示される。
【０１１３】
図３６は、ＲＥＡＤコマンドフローを実行するＲＤＭＡ書込パケットの内部アーキテクチャデータフローを示す。ＲＤＭＡ書込パケットはまた、ネットワークインタフェース上で受け取った他の任意の有効なパケットと同じパイプステージに従う。このパケットは、受信パイプステージ（ブロック３６０１及び３６０７）内の第２層処理を通過し、そこから、それは、セキュリティ処理の必要性を検出するためにスケジューラに対して待ち行列に入れられる。パケットが暗号解読される必要がある場合、それは、セキュリティパイプステージに入る（ブロック３６０２及び３６０８）。暗号解読されたパケットは、次に、プログラムされていた分類タスクを実行するために、分類エンジンに対してスケジュールに入れられる（ブロック３６０３及び３６０９）。分類が終了した状態で、タグ付けされたパケットは、スケジュールパイプステージ（ブロック３６０４及び３６１０）に入り、そこで、スケジューラは、フローベースのスケジュール設定に依存して、このパケットをリソース特定の待ち行列に割り当てる。意図されたリソースがこのパケットを実行する準備が完了している場合、それは、そのパケットプロセッサ複合システム（ブロック３６０５及び３６１１）に転送され、そこで、全てのＴＣＰ／ＩＰ確認、検査、及び状態更新が行われ、ＰＤＵが抽出される。次に、ストレージエンジンは、ＲＤＭＡを使用して実施されたストレージＰＤＵに対するストレージフローに属するとしてＰＤＵを識別し、ＲＤＭＡコマンドを解釈する。この場合、特定のＲＤＭＡバッファに書き込むのはＲＤＭＡである。このデータは、抽出されて、ＲＤＭＡ領域変換及び保護検査を行うストレージフロー／ＲＤＭＡコントローラブロックに通され、パケットは、ホストインタフェース（ブロック３６０６及び３６１２）を通じてＤＭＡに対して待ち行列に入れられる。パケットがパケットプロセッサ複合システムを通じた作動を終了した状態で、スケジューラに通知され、パケットは、スケジューラ内に保持された状態から退去させられる。ＤＭＡステージでＲＤＭＡデータ転送が終了した状態で、これがストレージコマンド実行を終了させる最後のデータ転送の場合、そのコマンドは退去させられ、コマンド終了待ち行列に割り当てられる。
【０１１４】
図３７は、ＲＤＭＡ読取作動を使用するストレージ書込コマンド実行を示す。イニシエータ及びターゲットは、ＲＤＭＡコントローラを使用して最初にそれらのＲＤＭＡバッファを登録し、次に、同じくバッファをピアに通知する。次に、イニシエータは、ターゲットに書込コマンド（ブロック３７０１）を出し、それは、ＩＰストレージＰＤＵを使用して移送される。受け取り側は、最初にＲＤＭＡバッファを割当てることによって書込コマンドを実行し、書込を受け取り、次にイニシエータに対してＲＤＭＡ読取を要求する（ブロック３７０７及び３７０８）。イニシエータから書き出されるデータは、次に、ＲＤＭＡ読取応答パケット（ブロック３７０７及び３７０８）として供給される。受け取り側は、いかなるホストの介入もなく、パケットを直接ＲＤＭＡバッファに保存する。読取要求がセグメントサイズよりも大きなデータに対するものだった場合、ＲＥＡＤ要求に応答して、複数のＲＥＡＤ応答ＰＤＵがイニシエータに送られるであろう。データ転送が終了した状態で、イニシエータに終了ステータスが移送され、ホストに対してコマンド終了が示される。
【０１１５】
図３８は、図３７に示すフロー処理の１つのセクションに対するＲＤＭＡ読取要求及び得られる書込データ転送のデータフローを示す。データフローは、図３４の書込データフローと非常に似ている。ＲＤＭＡ読取要求パケットは、受信、分類、スケジュール、及び実行（ブロック３８０１、３８０２、３８０３、３８０４、３８１５、３８１６、３８０９、及び３８１０）を含む様々な処理パイプステージを通って流れる。この要求が実行された状態で、それは、ＲＤＭＡ読取応答パケットを生成する。ＲＤＭＡ応答は、最初にシステムメモリから要求されたデータのＤＭＡ（ブロック３８０５及び３８１１）を行うことによって生成され、次に、実行ステージ（ブロック３８０６及び３８１２）を通してセグメントとパケットを生成する。適切なセッションデータベースエントリが更新され、データパケットは、必要に応じてセキュリティステージに進む（ブロック３８０７及び３８１３）。安全又はクリアなパケットは、次に、送信ステージに対して待ち行列に入れられ（ブロック３８０８及び３８１４）、このステージは、適切な第２層更新を実行してパケットをターゲットに送信する。
【０１１６】
図３９は、イニシエータから開始されたストレージコマンドに対するイニシエータコマンドフローをより詳細に示す。図示のように、以下は、コマンドが従う主要段階のいくつかである。
１．ホストドライバは、コマンドをストレージフロー／ＲＤＭＡコントローラのプロセッサコマンド待ち行列に入れる。
２．ホストは、作動のため及びリソースを予約するためにコマンドが正常にスケジュールに入れられたかを通知される。
３．ストレージフロー／ＲＤＭＡコントローラは、ターゲットに対する接続が確立された場合、作動のためのコマンドをパケットスケジューラに対してスケジュールに入れる。そうでなければ、コントローラは、ターゲットセッション開始を開始し、セッションが確立された状態で、コマンドは、パケットスケジューラに対してスケジュールに入れられる。
４．スケジューラは、このコマンドを受け入れる準備が完了したＳＡＮパケットプロセッサの１つにコマンドを割り当てる。
５．プロセッサ複合システムは、セッションエントリのために、要求をセッションコントローラに送る。
６．セッションエントリが、パケットプロセッサ複合システムに供給される。
７．パケットプロセッサは、ＰＤＵとしてコマンドを運び、出力待ち行列に対してスケジュールに入れられるパケットを形成する。
８．コマンドＰＤＵは、それをターゲットに送るネットワークメディアインタフェースに与えられる。
これは、イニシエータとターゲットの間で接続が確立された時に、主にイニシエータからターゲットまで大部分のコマンドが追従する高レベルのフローである。
【０１１７】
図４０は、読取パケットデータフローをより詳細に示す。ここでは、読取コマンドは、最初に図３９に示すフローと同様のフローを使用し、イニシエータからターゲットに送られる。ターゲットは、図４０に示すようなフローに従う読取応答ＰＤＵをイニシエータに送る。図示のように、読取データパケットは、以下の主要段階を通過する。
１．入力パケットは、ネットワークメディアインタフェースブロックから受信される。
２．パケットスケジューラは、入力待ち行列からパケットを検索する。
３．パケットは、分類のためにスケジュールに入れられる。
４．分類されたパケットは、分類タグと共に分類子から戻る。
５．分類とフローベースのリソース割当とに基づいて、パケットは、パケットに対して作動するパケットプロセッサ複合システムに割り当てられる。
６．パケットプロセッサ複合システムは、セッションキャッシュ内のセッションエントリを検索する（ローカルに存在しない場合）。
７．セッションキャッシュエントリが、パケットプロセッサ複合システムに戻される。
８．パケットプロセッサ複合システムは、ＴＣＰ／ＩＰ作動／ＩＰストレージ作動を実行し、ペイロード内の読取データを抽出する。ＭＤＬ（メモリ記述子リスト）のような適切な宛先タグを有する読取データが、ホストインタフェース出力コントローラに提供される。
９．ホストＤＭＡエンジンは、システムバッファメモリに読取データを転送する。
これらの段階のいくつかは、安全なパケットフローが表された図３２により詳細に与えられ、一方、図４０は、クリアテキスト読取パケットフローを表す。本特許に示すこのフロー及び他のフローは、本特許の教示により当業者が容易に実施することができる開示されたプロセッサの適切なリソースを使用することにより、ストレージ及び非ストレージデータ転送に適用可能である。
【０１１８】
図４１は、書込データフローをより詳細に示す。書込コマンドは、図３９のフローと同様のフローに従う。イニシエータは、書込コマンドをターゲットに送る。ターゲットは、ターゲットが指定量のデータを受け取る準備が完了していることをイニシエータに示す転送待機中（Ｒ２Ｔ）ＰＤＵによりイニシエータに応答する。イニシエータは、次に、要求されたデータをターゲットに送る。図４１は、イニシエータからターゲットまで要求された書込データパケットが従うＲ２Ｔを示す。このフローで追従される主な段階は、以下の通りである。
１．入力パケットが、ネットワークメディアインタフェースブロックから受信される。
２．パケットスケジューラは、入力待ち行列からパケットを検索する。
３．パケットは、分類のためにスケジュールに入れられる。
４．分類されたパケットは、分類タグと共に分類子から戻る。
ａ．分類とフローベースのリソース割当とに依存して、パケットは、パケットに対して作動するパケットプロセッサ複合システムに割り当てられる。
５．パケットプロセッサ複合システムは、セッションキャッシュ内のセッションエントリを検索する（ローカルに存在しない場合）。
６．セッションキャッシュエントリが、パケットプロセッサ複合システムに戻される。
７．パケットプロセッサは、「Ｒ２Ｔ  ＰＤＵ」を判断し、ストレージフロー／ＲＤＭＡコントローラへの要求で書込データを要求する。
８．フローコントローラは、ホストインタフェースに対してＤＭＡを開始する。
９．ホストインタフェースは、ＤＭＡを実行し、ホスト入力待ち行列にデータを戻す。
１０．パケットプロセッサ複合システムは、ホスト入力待ち行列からデータを受け取る。
１１．パケットプロセッサ複合システムは、有効なＰＤＵとパケットをデータの周りに形成し、適切なセッションエントリを更新し、出力待ち行列にパケットを転送する。
１２．パケットは、データパケットを宛先に送信する出力ネットワークメディアインタフェースブロックに転送される。
【０１１９】
図４１のフローは、クリアテキストデータ転送を示す。データ転送が安全である必要がある場合は、フローは、出力データパケットが１１ａ及び１１ｂとラベル付けされた矢印で示すような安全パケットを通るように経路指定された図４３に示すフローと同様である。入力Ｒ２Ｔパケットはまた、安全である場合に、セキュリティエンジンを通るように経路指定されるであろう（これは、図示されていない）。
【０１２０】
図４２は、パケットが暗号テキストか又は安全である場合の読取パケットフローを示す。このフローは、上述の関連する説明を使用して図３２により詳細に示されている。安全な読取フローとクリアな読取フローの主な相違点は、パケットが分類子によって安全パケットとして最初に分類され、従って、セキュリティエンジンに経路指定されることである。これらの段階は、２ａ、２ｂ、及び２ｃとラベル付けされた矢印で示されている。セキュリティエンジンは、パケットを暗号解読し、メッセージの認証を実行し、矢印２ｄで示すような更なる処理のために入力待ち行列にクリアパケットを転送する。クリアパケットは、次に、スケジューラによって検索され、図４２の２ｅ及び３とラベル付けされた矢印で示すように、分類エンジンに供給される。残りの段階と作動は、上述の図４０のものと同様である。
【０１２１】
図４４は、ＲＤＭＡバッファ通知フローを示す。このフローは、図３９に示すような他の全てのストレージコマンドフローと非常に似ているように示されている。主な段階で取られる詳細なアクションは、コマンドによって異なる。ＲＤＭＡバッファ通知とレジストレーションに対して、ＲＤＭＡ領域ＩＤが作成され、この領域に対するアドレス変換機構と共に記録される。ＲＤＭＡレジストレーションはまた、アクセス制御のための保護キーを含み、ＲＤＭＡ転送のために必要な別のフィールドを含むことができる。コマンドのためのパケットを作り出す段階は、図３９の段階と類似である。
【０１２２】
図４５は、ＲＤＭＡ書込フローをより詳細に示す。ＲＤＭＡ書込は、ＲＤＭＡ書込を受け取るイニシエータに対する通常の読取ＰＤＵのように見える。ＲＤＭＡ書込パケットは、図４０に示す読取ＰＤＵのような同じ主要フローの段階に従う。ＲＤＭＡ転送は、ＲＤＭＡアドレス変換と領域アクセス制御キー検査とを伴い、他のセッションエントリ以外にＲＤＭＡデータベースエントリを更新する。主要なフローの段階は、通常の読取応答ＰＤＵと同じである。
【０１２３】
図４６は、ＲＤＭＡ読取データフローをより詳細に示す。この図は、イニシエータによってターゲットから受け取られるＲＤＭＡ読取要求と、イニシエータからターゲットに書き出されるＲＤＭＡ読取データとを示す。このフローは、ストレージ書込コマンドが従うＲ２Ｔ応答と非常に似ている。このフローでは、ストレージ書込コマンドは、ＲＤＭＡ読取を使用して達成される。パケットが従う主な段階は、図４１に示すＲ２Ｔ書込データフローと基本的に同じである。
【０１２４】
図４７は、セッション作成フローの主要な段階を示す。この図は、イニシエータとターゲットの間のセッション開始で要求される、この低速パス作動のための制御プレーンプロセッサの使用を表す。この機能性は、パケットプロセッサ複合システムを通して実施することが可能である。しかし、ここでは、制御プレーンプロセッサを使用して実施されるものとして示されている。どちらの手法も許容することができる。以下は、セッション作成中の主要な段階である。
１．コマンドが、ホストドライバによってスケジュールに入れられる。
２．ホストドライバは、コマンドがスケジュールに入れられ、ホストによって要求された全ての制御情報が通されることを通知される。
３．ストレージフロー／ＲＤＭＡコントローラは、セッションが存在しないターゲットにコマンドを送る要求を検出し、従って、それは、その要求を制御プレーンプロセッサに通して移送セッションを確立する。
４．制御プレーンプロセッサは、出力待ち行列に「ＴＣＰ  ＳＹＮ」パケットを送る。
５．ＳＹＮパケットは、ネットワークメディアインタフェースに送信され、そこから宛先に送信される。
６．宛先は、ＳＹＮパケットを受け取った後に、ＳＹＮ−ＡＣＫ応答を使用して応答し、そのパケットは、ネットワークメディアインタフェースから受け取り次第入力待ち行列に入れられる。
７．パケットが、パケットスケジューラによって検索される。
８．パケットが、分類エンジンに通される。
９．タグ付けされて分類されたパケットが、スケジューラに戻される。
１０．スケジューラは、分類に基づいてこのパケットを制御プレーンプロセッサに転送する。
１１．プロセッサは、次に、ＡＣＫパケットを使用して出力待ち行列に応答する。
１２．パケットは、次に、最終の宛先に送信され、従って、セッション確立ハンドシェークを終了する。
１３．セッションが確立された状態で、この状態は、ストレージフローコントローラに供給される。セッションエントリは、このように作り出され、次に、セッションメモリコントローラに通される（この部分は、図に示されていない）。
セッションを段階１３のような確立状態にする前に、制御プレーンプロセッサは、ストレージプロトコルの完全なログイン段階を実行し、パラメータを交換し、それがストレージデータ転送接続の場合は、それらを特定接続のために記録するように要求されることがある。ログインが認証されてパラメータ変換が終了した状態で、セッションは、上述の段階１３で示されたセッション確立状態に入る。
【０１２５】
図４８は、セッション取外しフローの主要な段階を示す。このフローの段階は、図４７の段階と非常に似ている。２つのフローの主な違いは、セッション作成のためのＳＹＮ、ＳＹＮ−ＡＣＫ、及びＡＣＫパケットの代わりに、イニシエータとターゲットの間で、ＦＩＮ、ＦＩＮ−ＡＣＫ、及びＡＣＫパケットが転送されることである。それ以外は、主要段階は、非常に類似している。ここでの別の主な相違点は、適切なセッションエントリが作り出されず、セッションキャッシュとセッションメモリから除去されることである。接続の作動統計データは、図に示されていないが、記録されてホストドライバに供給することができる。
【０１２６】
図４９は、ターゲットの観点からのセッション作成とセッション取外しの段階を示す。以下は、セッション作成のために従うべき段階である。
１．イニシエータからのＳＹＮ要求が、ネットワークメディアインタフェース上で受信される。
２．スケジューラは、入力待ち行列からＳＹＮパケットを検索する。
３．スケジューラは、分類のためにこのパケットを分類エンジンに送る。
４．分類エンジンは、適切なタグを付けて分類されたパケットを戻す。
５．スケジューラは、ＳＹＮパケットとしての分類に基づいて、このパケットを制御プレーンプロセッサに転送する。
６．制御プレーンプロセッサは、ＳＹＮ−ＡＣＫ肯定応答パケットを使用して応答する。それはまた、イニシエータからの非送信請求データ転送のために適切なバッファスペースを割り当てるようにホストに要求する（この部分は、図示されていない）。
７．ＳＹＮ−ＡＣＫパケットが、イニシエータに送られる。
８．イニシエータは、次に、ＡＣＫパケットを使用してＳＹＮ−ＡＣＫパケットに肯定応答し、３方向ハンドシェークを終了する。このパケットは、ネットワークメディアインタフェースで受信され、第２層処理の後で入力待ち行列に入れられる。
９．スケジューラは、このパケットを検索する。
１０．パケットが、分類子に送られる。
１１．分類されたパケットは、スケジューラに戻され、３方向ハンドシェークを終了するために、制御プロセッサに提供されるべくスケジュールに入れられる。
１２．コントローラは、ＡＣＫパケットを取得する。
１３．制御プレーンプロセッサは、この時点で確立状態での接続を有し、セッションキャッシュ内にエントリを作り出すストレージフローコントローラに送る。
１４．ホストドライバは、終了したセッション作成を通知される。
セッション確立はまた、図４９に示されていないが、ログイン段階を伴う場合がある。しかし、ログイン段階とパラメータ変換は、完全に構成されて確立された状態にセッションが入る前に起きる。これらのデータ転送とハンドシェークは、主として制御プロセッサによって行うことができる。これらの段階が行われた状態で、上述のフローの残りの段階を実行することができる。
【０１２７】
図５０及び５１は、ターゲットサブシステムの書込データフローを示す。図５０は、イニシエータからのデータ書込を受け入れる準備が完了していることをイニシエータに通知するためにターゲットによって使用されるＲ２Ｔコマンドフローを示す。イニシエータは、次に、ターゲットで受け取った書込を送り、その内部データフローは、図５１に示されている。２つの図は、両方で１つのＲ２Ｔ及びデータ書込の対を示す。以下は、図４０及び５１の両方で示すように追従される主な段階である。
１．ターゲットホストシステムは、図３３に示すような書込要求の受信に応答して、書込データを受け入れるために適切なバッファを準備し、ストレージフローコントローラに準備完了したらそれを通知し、転送待機中要求をイニシエータに送る。
２．フローコントローラは、ホストドライバに対して、要求とＤＭＡのためのバッファポインタとの受領を肯定応答する。
３．フローコントローラは、次に、実行されるＲ２Ｔコマンドをスケジューラに対してスケジュールに入れる。
４．スケジューラは、コマンドをこのコマンドを実行する準備が完了しているパケットプロセッサ複合システムの１つに出す。
５．パケットプロセッサは、セッションキャッシュコントローラからセッションエントリを要求する。
６．セッションエントリが、パケットプロセッサに戻される。
７．パケットプロセッサは、ＴＣＰパケットを形成し、Ｒ２Ｔコマンドをカプセル化し、出力待ち行列にそれを送る。
８．パケットは、次に、ネットワークメディアインタフェースに送られ、それは、次に、イニシエータにこのパケットを送る。転送が安全転送である必要がある場合は、セキュリティエンジンを伴うことができるであろう。
９．次に、図５１に示すように、イニシエータは、書込データをターゲットに送ることによってＲ２Ｔに応答する。ネットワークメディアインタフェースは、パケットを受け取り、入力待ち行列にそれを入れる。
１０．パケットスケジューラは、入力待ち行列からパケットを検索する。
１１．パケットは、分類エンジンに対してスケジュールに入れられる。
１２．分類エンジンは、分類タグと共に分類されたパケットをスケジューラに供給する。図示のフローは、暗号化されていないパケットのためであり、従って、セキュリティエンジンは実行されない。
１３．スケジューラは、パケットプロセッサ待ち行列に対するフローベースのリソース割当待ち行列に基づいてパケットを割り当てる。パケットは、次に、パケットプロセッサがこのパケットの実行を待機中の時に、パケットプロセッサ復号システムに転送される。
１４．パケットプロセッサは、セッションキャッシュエントリを要求する（それがそのローカルキャッシュにまだそれを有していない場合）。
１５．セッションエントリが、要求するパケットプロセッサに戻される。
１６．パケットプロセッサは、全てのＴＣＰ／ＩＰ機能を実行し、セッションエントリを更新し、ストレージエンジンは、以前のＲ２Ｔに応答して書込コマンドとしてＰＤＵを抽出する。それは、ストレージセッションエントリを更新し、パケットをそれがホストバッファに転送されるようにホスト出力待ち行列に経路指定する。パケットは、ホスト割当の宛先バッファ内へのこのパケットのＤＭＡの実行に使用することができるメモリ記述子又はメモリ記述子リストを使用してタグ付けすることができる。
１７．ホストインタフェースブロックは、ＤＭＡを実行し、書込データコマンドのこのセグメントを終了する。
【０１２８】
図５２は、ターゲット読取データフローを示す。このフローは、図４１に示すイニシエータＲ２Ｔ及び書込データフローに非常に似ている。このフローで従うべき主な段階は、次の通りである。
１．ネットワークメディアインタフェースブロックから入力パケットが受信される。
２．パケットスケジューラは、入力待ち行列からパケットを検索する。
３．分類のためにパケットがスケジュールに入れられる。
４．分類されたパケットが、分類タグを付けて分類子から戻る。
ａ．分類とフローベースのリソース割当とにより、パケットは、パケットに対して作動するパケットプロセッサ複合システムに割り当てられる。
５．パケットプロセッサ複合システムは、セッションキャッシュ内のセッションエントリを検索する（ローカルに存在しない場合）。
６．セッションキャッシュエントリが、パケットプロセッサ複合システムに戻される。
７．パケットプロセッサは、読取コマンドＰＤＵを判断し、フローコントローラに対する要求を用いて読取データを要求する。
８．フローコントローラは、ホストインタフェースに対してＤＭＡを開始する。
９．ホストインタフェースは、ＤＭＡを実行し、ホスト入力待ち行列にデータを戻す。
１０．パケットプロセッサ複合システムは、ホスト入力待ち行列からデータを受け取る。
１１．パケットプロセッサ複合システムは、データの周囲に有効なＰＤＵとパケットを形成し、適切なセッションエントリを更新し、出力待ち行列にパケットを転送する。
１２．パケットは、宛先にデータパケットを送信する出力ネットワークメディアインタフェースブロックに転送される。
【０１２９】
上述のフローの説明は、高帯域幅データ転送に伴ういくつかの主なフローの一例である。図示していないが本発明のＩＰプロセッサによってサポートされるフラグメント化データフロー、複数の異なる種類のエラーを有するエラーフロー、ネーム解決サービスフロー、アドレス解決フロー、及び、ログイン及びログアウトフローなどのようないくつかのフローが存在する。
上述の説明のように、周辺セキュリティモデルは、企業ネットワークの曖昧な境界のために、セキュリティの脅威から企業ネットワークを保護するためには十分ではない。更に、かなりの数の無許可の情報アクセスは、内部から発生する。周辺セキュリティの方法は、そのようなセキュリティ攻撃を防止しない。従って、ネットワーク上にセキュリティが配備され、周辺からと同様に内部からもネットワークを保護することが非常に重要である。企業ネットワーク内部のネットワーク回線速度は、ＬＡＮ及びＳＡＮでは、１Ｇｂｐｓ、数Ｇｂｐｓ、及び１０Ｇｂｐｓに達する。上述のように、分散ファイアウォール及びセキュリティの方法は、ソフトウエア内に実施された場合には、システムホストＣＰＵの各々に対して大幅な処理オーバーヘッドを要求する。このオーバーヘッドは、サーバの応答待ち時間を増加させて全体の処理量を低減する原因になり、アプリケーションに対してより少ない処理サイクルを残す可能性がある。ソフトウエア駆動のセキュリティサービスの配備を可能にすることができる効率的なハードウエアの実施は、上に概説した問題に対処することを要求される。本特許のプロセッサは、これらの重要な問題の一部に対処するものである。更に、高回線速度では、ホストＣＰＵに対する影響を低減するために、ソフトウエアベースのＴＣＰ／ＩＰプロトコル処理をホストＣＰＵからプロトコル処理ハードウエアにオフロードすることが非常に重要である。従って、プロトコル処理ハードウエアは、ファイアウォール、暗号化、暗号解読、及びＶＰＮなどのようなセキュリティ機能を実行するための手段を提供すべきである。
【０１３０】
このプロセッサは、企業ネットワーク内の分散セキュリティと高ネットワーク回線速度の増大する必要性に対処することができるようなハードウエアアーキテクチャを提供する。
図５３は、周辺ファイアウォールを使用する従来的な企業ネットワークを示している。この図は、企業ネットワーク内部のローカルエリアネットワークとストレージエリアネットワークを示している。図は、無線ＬＡＮを使用して企業ネットワークに接続した一組のクライアント（５３０１（１）から５３０１（ｎ））を示している。可搬式コンピュータ、ＰＣ、シン・クライアント、ラップトップ、ノートブックコンピュータ、及びタブレットＰＣなどのような複数の異なる種類のクライアントが存在することができる。更に、それらは、無線ＬＡＮのアクセスポイント（ＷＡＰ）５３０３を使用して企業ＬＡＮに接続することができる。ＬＡＮに接続した１つ又はそれよりも多くのＷＡＰが存在することができる。図はまた、有線ネットワークを通じて企業ＬＡＮに接続した複数のクライアントも同様に示している。これらのクライアントは、ネットワークのサイズ及び回線速度など次第で、異なるサブセグメント又は同じセグメント上に存在することができ、又はポイント毎の接続でスイッチに直接リンクすることができる。ネットワークは、装置のネットワークに対して内部接続性を提供する複数のスイッチとルータを有することができる。図はまた、クライアントに対してネットワークファイルサービングとストレージサービスを提供するネットワーク接続ストレージ装置５３１１を示している。図はまた、ネットワーク内部のクライアントに対してこれらのサーバ上でホスティングされる様々なアプリケーションサービス、並びにウェブアクセス又は他のネットワークアクセスとして外部を通してアクセスされるものを提供する、ネットワークに接続された１つ又はそれよりも多くのサーバ（５３０７（１）から５３０７（ｎ）、及び５３０８（１）から５３０８（ｎ））を示している。サーバファーム内のサーバは、ウェブサーバ、アプリケーションサーバ、及びデータベースサーバなどのような異なるサービスを提供する従来的な３層又はｎ層ネットワークの形に接続することができる。これらのサーバは、ストレージシステム（５３１０（１）から５３１０（ｎ））にそれらのストレージの必要性に対して接続するために、ＳＡＮ接続性とスイッチ（５３０９（１）から５３０９（ｎ））を使用して、必要とされたストレージに対する直接接続ストレージ装置を保持し、及び／又はストレージエリアネットワーク（ＳＡＮ）に接続することができる。ストレージエリアネットワークはまた、ＬＡＮクライアントに対するストレージシステムへのアクセスを提供するために、ゲートウェイ装置５３１３を使用してＬＡＮに接続することができる。ストレージシステムはまた、ＮＡＳ５３１１と同様にＬＡＮに直接接続し、ｉＳＣＳＩなどのようなプロトコルを使用してブロックストレージサービスを提供することができる。これは、図には示されていない。この図に示すネットワークは、周辺ファイアウォール５３０６によって外部のネットワークから保護される。この図に示すように、そのような環境での内部ネットワークは、セキュリティを有効にせず、これは、インサイダー攻撃に対して深刻なセキュリティ脆弱性を提起するものである。
【０１３１】
図５４は、分散ファイアウォールとセキュリティ機能を備えた企業ネットワークを示している。図示のネットワーク構成は、図５３の構成と同様である。そのようなネットワークに示す分散セキュリティ機能は、中央ＩＴマネージャ５４１２によって一組の中央ネットワーク管理システムから構成され、モニタされ、管理され、有効にされ、かつ更新することができる。マネージャは、管理ステーションから分散セキュリティポリシーを設定し、分散セキュリティポリシーを実施するために有効にされた各ノードに適切なポリシー規則を分散し、本特許のプロセッサを使用して分散セキュリティプロセッサからのあらゆる違反又は報告をモニタすることができる。ネットワークは、１つ又はそれよりも多くのノード、１つ又はそれよりも多くの管理ステーション、及びその組合せを含むネットワークとすることができる。この図は、ＳＡＮ装置が分散セキュリティネットワーク下にないことを示している。この図のＳＡＮ装置は、別のセキュリティドメイン下とすることができ、又はＳＡＮの縁部でのセキュリティによりインサイダーとアウトサイダーから保護されていると信頼することができる。
【０１３２】
図５５は、ＳＡＮ装置も分散セキュリティドメイン下にある、分散ファイアウォールとセキュリティ機能を使用する企業ネットワークを示している。ネットワーク構成の残りは、図５４の構成と同様とすることができる。この場合、ＳＡＮ装置は、ネットワーク装置の残りと同様のセキュリティポリシーを実施することができ、かつ同じＩＴ管理システムからの制御下とすることができる。ＳＡＮセキュリティは、セキュリティの必要性、情報の重要度、及び潜在的なセキュリティの危険性次第でネットワークの残りとは別様に実施することができる。例えば、ＳＡＮ装置は、ＳＡＮ上に出力されるデータが常に機密モードになると同時に無許可のアクセスが発生しないことを保証するために、ファイアウォールセキュリティ機能以外に完全な暗号化／暗号解読サービスを実施することができる。これらのポリシーと規則は、同じネットワーク管理システムから分散させることができ、又はそのような分散セキュリティＳＡＮを作り出すために使用することができる特別なＳＡＮ管理システム（図示しない）が存在する場合がある。図５４と図５５のシステムは、本特許のプロセッサと分散セキュリティシステムを使用する。
【０１３３】
図５６は、中央マネージャとも呼ばれる中央の管理／ポリシーサーバとモニタリングステーションを示している。中央マネージャは、組織のセキュリティポリシーを入力するためにＩＴマネージャによって使用されるセキュリティポリシー開発者インタフェース（ブロック５６０９）を含む。セキュリティポリシー開発者インタフェースは、ＩＴマネージャがセキュリティポリシー記述言語でセキュリティポリシーを入れるのを可能にすることができるコマンド回線のインタフェース、スプリクト記述ツール、グラフィカルインタフェース、又はその組合せとすることができる。それはまた、安全な通信接続の下で遠隔的にＩＴマネージャへのアクセスを提供することができる。セキュリティポリシー開発者インタフェースは、ＩＴマネージャが組織のポリシーを効率よく入力するのを可能にする一組の規則モジュールと協働する。規則モジュールは、ＩＴマネージャによって記入されることが可能であり、又は規則の入力を容易にする対話ツールとすることができる、規則テンプレートを提供することができる。これらのモジュールは、分散セキュリティシステムによってサポートされる機能に基づいて規則を提供する。ネットワーキング層２から４（Ｌ２、Ｌ３、Ｌ４）の規則、規則タイプ、及びテンプレートなどは、ブロック５６０１によってセキュリティ開発者インタフェースに提供される。これらの規則は、ソースに対するＩＰアドレス、宛先、ソースに対するＬ２アドレス、宛先、Ｌ２ペイロードタイプ、バッファオーバーラン条件、サービスの種類、接続の優先度、及びリンク使用量の統計など、又はその組合せで構成することができる。プロトコル／ポートレベル規則（ブロック５６０２）は、セキュリティ開発者インタフェースに規則、規則タイプ、及びテンプレートなどを提供する。これらの規則は、ＩＰ、ＴＣＰ、ＵＤＰ、ＩＣＭＰ、ＩＰＳＥＣ、ＡＲＰ、又はＲＡＲＰなど、又はソースポート、又は既知の上位レベルアプリケーション／プロトコルに対する公知のポートを含む宛先ポート、又はその組合せのようなプロトコルタイプで構成することができる。ブロック５６０３は、セキュリティ開発者インタフェースに対して、アプリケーションレベル又は上位層（Ｌ５からＬ７）規則、規則タイプ、及びテンプレートなどを提供する。これらの規則は、ＨＴＴＰ、ＸＭＬ、ＮＦＳ、ＣＩＦＳ、ｉＳＣＳＩ、ｉＦＣＰ、ＦＣＩＰ、ＳＳＬ、又はＲＤＭＡなど、それらの使用法モデル、それらの脆弱性、又はその組合せのような上位層アプリケーション又はプロトコルのタイプに依存する規則を含むことができる。コンテンツベースの規則（ブロック５６０４）は、コンテンツに依存する規則を入力するための規則、規則タイプ、又はテンプレートなどをセキュリティ開発者インタフェースに提供する。これらの規則は、他の規則のように時間と共に進化し、既知の脅威又は潜在的な新しい脅威を網羅し、社会保障番号、機密／特許文書、従業員記録、患者記録、クレジットカード番号、有害ＵＲＬ、公知のウイルス署名、バッファ溢れ条件、長いウェブアドレス、有害言語、わいせつ物、又はスパムなど、又はその組合せのような広範囲の条件から構成することができる。これらの規則、テンプレート、又は規則タイプは、分散セキュリティシステムのマネージャに対して、選択されたポリシー記述言語での規則作成の容易性のために提供することができる。セキュリティポリシー開発者インタフェースは、規則モジュールなしで存在し、ＩＴマネージャにシステム内にセキュリティポリシーを入力する手段を提供し続けることができる。インタフェース経由で入力され、セキュリティポリシー言語で表現された規則は、次にネットワークノードまで分散させるためにセキュリティ規則コンパイラ（ブロック５６１１）によってコンパイルされるであろう。セキュリティ規則コンパイラは、ネットワーク接続性データベース５６０５とノード機能及び特性データベース５６０６とを利用し、セキュリティポリシーをモニタリング／実行する一部であるネットワーク内の各ノードに特定の規則を作成する。ネットワーク接続性データベースは、物理的隣接性情報、又は物理層接続性、又はリンク層接続性、又はネットワーク層接続性、又はＯＳＩ層２アドレス、又はＯＳＩ層３アドレス、又は経路指定情報、又はその組合せを含む。ノード機能及び特性データベースは、ハードウエアセキュリティ機能、又はソフトウエアセキュリティ機能、又は規則エンジンのサイズ、又はセキュリティエンジンの性能、又はサービス機能の品質、又はホストオペレーティングシステム、又はホスティングされたアプリケーション、又はネットワーク接続性の回線速度、又はホスト性能、又はその組合せを含む。これらのデータベースからの情報は、セキュリティ規則コンパイラが、ノード特定の規則に対してセキュリティポリシーを適正にマップすることを可能にすると考えられる。ノード特定の規則と一般的な全体規則は、規則データベース５６０７に保存されてそこから検索される。セキュリティ規則コンパイラは、次に、規則分散エンジン５６０８と協働し、各ノードにコンパイルされたノードを分散させる。規則分散エンジンは、分散セキュリティシステムの各セキュリティノードと相互作用し、使用されるように設定された規則をその特定ノードで送る。規則分散エンジンは、規則データベースから規則セットを直接検索することができ、又はセキュリティ規則コンパイラと協働し、又はその組合せにより規則を検索することができる。規則がそれぞれのノードに拡散した状態で、中央マネージャは、ネットワークのモニタリングと管理を開始する。
【０１３４】
中央マネージャは、セキュリティネットワーク内の各ノードと協働し、イベント及び報告収集／管理エンジン５６１６を使用して執行、統計量、及び違反などのイベント又は報告を収集する。イベント／報告収集エンジンは、セキュリティモニタリングエンジン５６１３と協働し、収集情報の永続的な記録を保持するイベント及び情報報告データベース５６１４及び５６１５を作成する。セキュリティモニタリングエンジンは、報告とイベントを解析してあらゆる違反を検査し、次に、それをＩＴマネージャに知らせることができる。違反が起きた時に取られるアクション次第で、セキュリティモニタリングエンジンは、ノードに再分散させることができるポリシー又は規則更新を作り出すことができる。セキュリティモニタリングエンジンは、作り出されて再分散された更新を取得するために、セキュリティポリシーマネージャインタフェース５６１２及びポリシー更新エンジン５６１０と協働する。セキュリティポリシーマネージャインタフェースは、ＩＴマネージャにツールを提供してイベント及び情報記録検索を行う。ＩＴマネージャは、モニタされたイベント又は他の検索又は組織ポリシーの変化に基づいて新しい規則又はセキュリティポリシー更新を作成し、ポリシーに対する更新を作り出すことができるであろう。これらの更新は、セキュリティポリシーコンパイラによってコンパイルされてネットワークに再分散される。セキュリティポリシーマネージャインタフェース５６１２とポリシー更新エンジン５６１０の機能性は、実施の選択に基づいてセキュリティポリシー開発者インタフェース５６０９によって提供することができる。機能性と機能ブロックのそのような再編は、本特許の教示から逸脱することなく可能である。また、セキュリティモニタリングエンジン、セキュリティポリシーマネージャインタフェース、及びイベント／報告／収集／管理インタフェースを使用して、対処すべきである違反、又はセキュリティに対するノードを有効にする、ノードを無効にする、ノードの役割を変更する、ノードの構成を変更する、ノード上でアプリケーションを開始する／中止する／配備する、又は付加的な機能又は他の管理機能を提供する、又はその組合せのような、ノードのネットワークを有効に管理するために中央マネージャに対して適切な取るべきあらゆる他のアクションがある場合に、特定のノードを管理することもできる。
【０１３５】
図５７は、本特許の中央マネージャのフローを示す図である。中央マネージャは、フローのブロックによって示された様々な処理段階を含むことができる。ＩＴマネージャは、組織のセキュリティポリシーを作り出して、ブロック５７０１によって示された中央管理システムに入力することができる。ポリシーは、次に、ブロック５７０２に示すように、ネットワーク接続性データベース及びノード機能及び特性データベースを使用して、セキュリティポリシーコンパイラによって規則にコンパイルされる。中央マネージャは、次に、ブロック５７０３のノード特性データベースから、セキュリティ機能を有効にされたネットワークからのノードを識別し、これらのノードに規則を分散する。マネージャは、次に、ブロック５７０４によって示されたようにこれらのノードからノードを選択することができ、ブロック５７０５で示すように規則データベースから対応するセキュリティ規則を検索することができ、次に、５７０６によって示され、更に図５８で示すようにノードに規則を通信することができる。中央マネージャは、規則を検索する処理を続け、ブロック５７０７で行われた全てのノードの比較で示すように全てのノードが処理されるまで規則を通信する。規則が全てのノードに分散された状態で、中央マネージャは、ブロック５７０８で示すように、ポリシーの実行、違反、又は他の管理タスクのためにネットワークの管理とモニタリングに進む。モニタリングからもたらされるいずれかのポリシー更新がある場合、中央マネージャは、モニタリングを出てブロック５７０９と５７１０で示す検査を通して新しいポリシーを作り出して更新する。新しいポリシー更新がある場合、中央マネージャは、図５７のフローを横切って規則をコンパイルし、影響を受けたノードにそれらを再分散し、その後ネットワークのモニタリングを続ける。中央マネージャのイベント収集エンジンは、他のモジュールがセキュリティポリシーと規則に対する更新を処理している時に、モニタリングを続けてイベント及び情報報告を記録する。すなわち、ネットワークは、規則更新と分散が進行中の時に連続的にモニタされる。規則更新が行われた状態で、セキュリティモニタリングエンジンと他のエンジンは、収集された報告を処理する。ノードへの規則の通信とノードのモニタリング／管理は、並行して行うことができ、セキュリティシステムの有効性ばかりでなく性能を改善する。中央マネージャは、新しい規則又は更新を複数のノードに直列フローを使用するのではなく並行に通信することができ、既に規則を受け取ったノードを中央マネージャに対するモニタリング／管理状態に指定する。同様に、ポリシー作成又は更新はまた、規則コンパイル、分散、及びモニタリングと並行して実行することができる。
【０１３６】
図５８は、本特許の規則分散のフローを示している。セキュリティポリシーコンパイラと協働する規則分散エンジンは、５８０１で示すように、特定のノードに通信される規則又は規則セットを検索する。それは、次に、５８０２で示すように選択されたノードと通信を始める。中央マネージャとノードは、５８０３で示すように、合意に基づく方法又はプロトコルを使用して互いに認証することができる。認証は、完全なログインプロセス、又は機密暗号化セッション、又はクリアモードセッション、又はその組合せを伴う場合がある。ノードと中央マネージャが互いに認証した状態で、５８０４で示すように、中央マネージャと制御プレーンプロセッサ又はノードのホストベースのポリシードライバとの間の通信が確立される。通信が確立された状態で、規則分散エンジンは、５８０５で示すように、規則又は規則セット又は更新された規則又はその組合せをノードに送る。この規則の交換は、組織のポリシー次第で機密暗号化セッション又はクリアリンクにわたることがある。規則を通信するために配備されたプロトコルは、公知のプロトコル又は専有プロトコルを使用することがある。規則セットがノードに送られた状態で、中央マネージャは、５８０６で示すように、ノードでの新しい規則の挿入成功のノードからの肯定応答を受けるために待機することができる。成功した肯定応答を受けた状態で、５８０７で示すように、１つのノードに対する規則分散フローは終了する。ノードに対する適切な規則データベース入力は、分散完了ステータスでマーク付けされるであろう。図５８のフローは、中央マネージャの規則分散エンジンから規則を受け取る必要がある全てのノードに対して繰り返される。規則分散エンジンはまた、規則分散プロセスの効率を改善するために、複数のノードに対して並行して規則を分散することができるであろう。この場合、規則分散エンジンは、ノードの認証、ノードとの通信の確立、及びノードへの１つ又は複数の規則の送信などのようなフローの様々な段階を複数のノードに対して並行して実行することができる。
【０１３７】
図５９は、本特許の制御プレーンプロセッサ又はホストベースのポリシードライバのフローを示している。このフローは、ハードウエアプロセッサを含む本特許の分散セキュリティに従って各ノード上で実行される。中央マネージャによるポリシー規則分散が開始されるとすぐに、又はリセット又は電源投入又は他の管理イベント又はその組合せが行われると、ポリシードライバは、５９０１で示すように、中央マネージャ／ポリシーサーバとの通信を確立する。ポリシードライバは、５９０２で示すように、中央マネージャから規則セット又は既存の規則に対する更新を受け取る。規則が特定のポリシーエンジンの実施及びサイズなどに挿入されるようにフォーマット設定されている場合、この規則は、ポリシーエンジンでの設定が受け入れられる。規則が中央マネージャによって常に適切にフォーマット設定されている場合、ブロック５９０３に示すように、検査の回避を実行することができる。そうでなければ、ブロック５９０３によって判断されるように、規則が必ずしも常にフォーマット設定されていないか又はそれ以外にポリシーエンジンに直接挿入される準備ができていない場合、ドライバは、ブロック５９０４で示すようにノードに対して規則を設定する。ドライバは、次に、プロセッサのポリシーエンジンのデータベース初期化及び管理インタフェース（図２０のブロック２０１１）と通信する。これは、ブロック５９０５で示している。ドライバは、次に、ポリシーエンジンに規則を送り、このエンジンは、図３０に示すように、３進又は２進ＣＡＭ、関連メモリ、ＡＬＵ、データベース記述、及び図２０の分類／ポリシーエンジンの他の要素から成るエンジンデータ構造にそれを更新する。これは、ブロック５９０６で示している。このプロセスは、５９０７、５９０８、及び５９０６で示す意志決定プロセスを通じて全ての規則がポリシーエンジンに入れられるまで続く。全ての規則が入力された状態で、ポリシーエンジンは、ブロック５９０９で示すようにドライバと協働して新しい規則をアクティブ化する。ドライバは、次に、ブロック５９１０で示すように将来の参照及び／又は検索のために永続的なストレージに規則を更新／送信する。ドライバは、次に、ブロック５９１１で示すように、ノード内での更新完了と新しい規則のアクティブ化を中央マネージャ／ポリシーサーバに通信する。ポリシードライバは、次に、管理情報、イベント、及び報告を中央マネージャに通信するモードを入力することができる。ドライバのこの部分は、図には示されていない。管理機能性は、ホスト上の機密保護プロセス又はノードの制御プレーンプロセッサによって取り上げることができる。上述の機構は、プロトコルスタック処理に対して安全な作動環境がもたらされるのを可能にし、たとえホストシステムがウイルス又は悪意の攻撃のいずれかによって阻害された場合でも、それは、制御プレーンプロセッサベースのドライバがホストシステムがポリシー又は規則に影響を及ぼすことを許さないので、ネットワークセキュリティと保全性が維持されるのを可能にする。ポリシーエンジン内でアクティブな規則は、ウイルス又は侵入者が、更に別のウイルス増殖又はネットワーク内の他のシステムの攻撃のために使用されるこのシステム又はノードを使用するのを阻止すると考えられる。規則はまた、クレジットカード番号、社会保険番号、又は医療記録などのいかなる価値のある情報をも攻撃者がシステムから抜き出すのを阻止することができる。この機構は、次世代コンピュータシステムの信頼されるコンピュータ環境の必要性に大きく寄与するものである。
【０１３８】
フローの一部又は全ての部分は、並行して実行することができ、並びにいくつかの部分は一緒に組み合わせることができる。例えば、１つ又はそれよりも多くの規則は、ポリシードライバによってデータベース初期化／管理インタフェースに一緒に通信することができ（ブロック２０１１）、このインタフェースは、次に、一度に１つの規則ではなくアミック方式でポリシーエンジン内の規則を更新することができる。更に、ポリシードライバ又はポリシーエンジン又はその組合せによって新しい規則が受信されている間に、ハードウエアプロセッサは、入ってくる又は出てゆくネットワークトラフィックに対して並行してアクティブな規則の組を用いて規則の執行と解析を続けることができる。
【０１３９】
図６０は、本特許を使用して分散セキュリティシステムに配備することができる規則を示している。ＩＴマネージャは、異なる形式のアクセスに対して配備する必要があるポリシーを判断することができる。これらのポリシーは、１つ又はそれよりも多くのセキュリティ機能を実施するネットワーク内の各ノードに分散させるために中央管理システム（５５１２又は５４１２）で規則に変換される。規則は、次に、関連するノード上のプロセッサに提供される。分類及びポリシーエンジン１７０３と協働する制御プレーンプロセッサ（図１７の１７１１）と、プロセッサのＤＢ初期化／管理制御インタフェース（図２０の２０１１）とは、プロセッサ内で規則を設定する。分散セキュリティシステムを実施する各ノードは、ノードを通過し、そこから始まり、又はそこで終了するネットワークトラフィックに適用する必要がある独特な規則を有する場合がある。中央管理システムは、全ての適切なノードと相互作用し、各ノードに関連する規則を提供する。中央管理システムはまた、ノードの分類／ポリシーエンジンと協働する制御プレーンプロセッサと相互作用し、分散セキュリティシステムのノードから規則実行情報と他の管理情報を検索する。
【０１４０】
図６０は、ネットワーク内の１つ又はそれよりも多くのノードに適用可能とすることができる規則を示している。ノードは、図に示すよりも多いか又は少ないフィールドを包含することができる。この図では、規則は、規則が適用可能な「イン」又は「アウト」のいずれかのネットワークトラフィックの方向と、内部ネットワークノードアドレスに属することができるか又はネットワークに対して外部のノードに属するアドレスであるソース及び宛先アドレスと、パケットのプロトコル形式、例えば、ＴＣＰ、ＵＤＰ、及びＩＣＭＰなど、並びにソースポート及び宛先ポート、及びＵＲＬ情報、クレジットカード番号、又は社会保障番号のような重要な情報、又はユーザ名及びパスワードなどのような他のあらゆる保護された情報を含む他のあらゆる深いパケットフィールドとを含む。規則は、次に、ある一定の規則が符合した時に取る必要があるアクションを示すアクションフィールドを包含する。アクションは、アクセスを許可する、アクセスを拒否する、パケットを落とす、接続を閉じる、要求を記録する、警報を出す、又はこれらの組合せ、又は符合した規則に適切であると考えられるより多くのアクションのような様々な形式で構成することができる。規則は、上から下までの優先的方式又はシステムに実施することができる他のあらゆる順序で適用することができる。最後の規則は、他の規則のどれもマッチングせず、かつこの例で示すようにアクセスが拒否された時の条件を示している。
【０１４１】
図６１は、図１６と１７に示すＩＰプロセッサのＴＣＰ／ＩＰプロセッサバージョンを示している。このプロセッサは、ネットワークインタフェースブロック６１０１から成り、このブロックは、このプロセッサをネットワークに接続するのに使用される。ネットワークインタフェースは、有線又は無線「イーサネット」インタフェース、パケットオーバーソネットインタフェース、メディアインディペンデントインタフェース（ＭＩＩ）、ＧＭＩＩ、ＸＧＭＩＩ、ＸＡＵＩ、システムパケットインタフェース、「ＳＰＩ  ４」又は「ＳＰＩ  ５」又は他のＳＰＩ派生物、又は他のネットワークプロトコルインタフェース、又はその組合せとすることができる。これは、このプロセッサが連結されるネットワークに又はそこからパケットを送信又は受信するのに使用されるインタフェースである。インテリジェントフローコントローラとパケットバッファブロック６１０３は、ブロック１７０１と１７０２の入力及び出力待ち行列コントローラ機能性ばかりでなく、図１７のブロック１７０２のパケットスケジューラ機能性を提供する。プログラマブル分類／規則エンジン／セキュリティ処理ブロック６１０２は、セキュリティ機能が特定の実施例によってサポートされている時にブロック１７０５のセキュリティ処理機能性ばかりでなくブロック１７０３の分類とポリシー／規則処理機能性を提供する。
【０１４２】
ブロック６１０４のＴＣＰ／ＩＰパケットプロセッサエンジンは、ブロック１７０６（ａ）から１７０６（ｎ）のＳＡＮパケットプロセッサのＴＣＰ／ＩＰプロセッサエンジンと同等である。接続（セッション）メモリブロック６１０５は、ブロック１７０４のＩＰセッションキャッシュ／メモリの機能性を提供するのに対して、接続マネージャとブロック６１０６の制御平面プロセッサは、セッションコントローラを提供してブロック１７０４と１７１１のそれと同等の平面プロセッサ機能性を制御する。ＲＤＭＡコントローラブロック６１０７は、ブロック１７０８と同等のＲＤＭＡ機能性を提供する。メモリコントローラブロック６１０９は、ブロック１７０４のメモリコントローラによって提供されたそれと同等のメモリインタフェースを提供する。ＴＣＰ／ＩＰプロセッサは、ＳＲＡＭ、ＤＲＡＭ、ＦＬＡＳＨ、ＲＯＭ、ＥＥＰＲＯＭ、「ＤＤＲ  ＳＤＲＡＭ」、ＲＤＲＡＭ、ＦＣＲＡＭ、「ＱＤＲ  ＳＲＡＭ」、磁気ＲＡＭ又は磁気メモリ、又は静的又は動的ランダムアクセスメモリの他の派生物、又はその組合せとすることができる外部メモリを有することができる。ホスト／ファブリック／ネットワークインタフェースブロック６１０８は、このプロセッサが組み込まれているシステム次第でホストバス又はスイッチファブリックインタフェース又はネットワークインタフェースにインタフェースを提供する。例えば、サーバ又はサーバアダプタ環境では、ブロック６１０８は、ブロック１７１０と同等のホストバスインタフェース機能性を提供することになり、ホストバスは、ＰＣＩバス、ＰＣＩ−Ｘ、ＰＣＩ−エクスプレス、又は他のＰＣＩ派生物、又はＡＭＢＡバスのような他のホストバス、又はＲａｐｉｄＩＯバス、又はハイパートランスポート、又は他の派生物とすることができる。スイッチ又はルータ又はゲートウェイ又は多重ラインカードを接続するスイッチファブリックを備えたアプライアンスは、ブロック６１０８の適切なファブリックインタフェース機能性を有すると考えられる。これは、ライン遮断のヘッドやスイッチファブリックによって必要とされるフラグメント化及びフラグメント解消回路を避ける優先的な機構と、スイッチファブリックリソースの公平な使用を保証する適切なフロー制御機構とを備えた待ち行列を含むことができる。入口及び出口上のネットワークに接続するゲートウェイ又はアプライアンスのような環境の場合、ブロック６１０８は、ブロック６１０１と同等のネットワークインタフェース機能性を提供すると考えられる。
【０１４３】
図１６に示すＴＣＰ／ＩＰプロセッサは、上の説明から明らかなように図１６と図１７に示すアーキテクチャのバージョンである。ブロック６１０４のＴＣＰ／ＩＰプロセッサエンジンは、ブロック１７０６（ａ）から１７０６（ｎ）のＳＡＮパケットプロセッサで置換することができ、２つのアーキテクチャは、同じ機能性を提供すると考えられる。従って、図６１は、図１６と図１７に示すアーキテクチャの異なる図及び／又は分類として見ることができる。ＴＣＰ／ＩＰプロセッサエンジンは、パケット毎のプロトコル処理に加えて付加的なサービスを配備することができるプログラマブル処理を提供するためにＳＡＮパケットプロセッサのパケットエンジンブロックによって強化することができる。図６１のブロックのグループの周りに破線で示されたブロック６１１０は、本特許では「ＴＣＰ／ＩＰプロセッサコア」と呼ばれる。ＲＤＭＡブロック６１０７は、ＴＣＰ／ＩＰプロセッサコアの一部として示されているとはいえ、低ライン速度のアプリケーション又はＲＤＭＡをサポートしないアプリケーションのような特定のＴＣＰ／ＩＰプロセッサコア実施形態の任意的なブロックである。同様に、セキュリティエンジンは、選択された実施例とシステムの実施形態次第では存在できないこともある。
【０１４４】
図６２は、本特許の適応ＴＣＰ／ＩＰプロセッサを示している。このプロセッサは、ネットワークインタフェースブロック６２０１、ホスト／ファブリック／ネットワークインタフェースブロック６２０７、ＴＣＰ／ＩＰプロセッサコアブロック６２０２、ランタイム適応プロセッサ（ＲＡＰ）ブロック６２０６、又はその組合せから成る。適応ＴＣＰ／ＩＰプロセッサはまた、適応コントローラブロック６２０３、構成メモリブロック６２０４、メモリインタフェースブロック６２０５、データバッファブロック６２０９、メモリコントローラブロック６２０８、ＲＡＰインタフェースブロック６２１０、ＲＡＰ拡張インタフェースブロック６２１１、又はその組合せを含むことができる。ＴＣＰ／ＩＰプロセッサコア（ブロック６２０２）は、図６１のブロック６１１０に示すＴＣＰ／ＩＰプロセッサコアである。上述のように、ＴＣＰ／ＩＰプロセッサコアのセキュリティ及びＲＤＭＡブロックは、アプリケーションとシステム環境次第で存在することができるか又は存在できないことがある。ＴＣＰ／ＩＰプロセッサコアは、完全ＴＣＰ／ＩＰプロトコル処理、プロトコル終了、及びプロトコル開始機能性を提供する。ＴＣＰ／ＩＰプロセッサコアは、以下のハードウエア実装機能の少なくとも１つを含むＴＣＰ／ＩＰプロトコルスタックを提供することができる。
ａ．上部層データを含むデータの送信と受信、
ｂ．移送セッションとセッション解体機能の設定、
ｃ．エラー処理機能の実行、
ｄ．タイムアウトの実行、
ｅ．再送信の実行、
ｆ．セグメント化及び順序付け作動の実行、
ｇ．アクティブ移送セッションに関するプロトコル情報の維持、
ｈ．１つ又はそれよりも多くのセッション接続の各々に対するＴＣＰ／ＩＰステート情報の維持、
ｉ．データパケットのフラグメント化とフラグメント解消、
ｊ．データ及び制御情報の経路指定と転送、
ｋ．ピア、ＲＤＭＡのために用意されたメモリ領域への送信及びそこからの受信、
ｌ．ＲＤＭＡデータベース内のＲＤＭＡのために用意された上述のメモリ領域の記録と上述のデータベースの維持、
ｍ．ＲＤＭＡ機能によって提供された演算の実行、
ｎ．セキュリティ管理機能の実行、
ｏ．ポリシー管理と執行機能の実行、
ｐ．仮想化機能の実行、
ｑ．エラーの通信、
ｒ．データパケットを受信及び送信し、パケットを検証し、エラーを取り扱い、エラーと他の第２層機能を通信する第２層メディアアクセス機能の処理、
ｓ．物理層インタフェース機能の処理、
ｔ．ＴＣＰ／ＩＰチェックサム生成と検証機能の実行、
ｕ．異常パケットの処理、
ｖ．ＣＲＣ計算機能、
ｗ．直接データ配置／転送処理、
ｘ．上部層フレーミング機能、
ｙ．ソケットＡＰＩに対する機能とインタフェースの処理、
ｚ．伝送されたデータに対するＴＣＰ／ＩＰのパケットヘッダの形成と受信したパケットからのペイロード抽出、及び
ａａ．それぞれ伝送されるデータと受信されたデータパケットの第２層プロトコルに対するヘッダ形成とペイロード抽出の処理。
【０１４５】
ＴＣＰ／ＩＰプロセッサコアは、上述の移送層ＲＤＭＡ機能を提供することができる。ＴＣＰ／ＩＰプロセッサコアはまた、ワイヤ速度暗号化及び暗号解読機能に加えてネットワーク層セキュリティ、移送層セキュリティ、ソケット層セキュリティ、アプリケーション層セキュリティ、又はその組合せのようなセキュリティ機能を提供することができる。従って、ＴＣＰ／ＩＰプロセッサコアはまた、ハードウエア内で実施される上述のいくつかの機能を備えたハードウエアに安全なＴＣＰ／ＩＰスタックを提供することができる。適応ＴＣＰ／ＩＰプロセッサコアをこの明細書に示すＴＣＰ／ＩＰプロセッサコアに関して説明したが、ＴＣＰ／ＩＰプロセッサコアは、様々な他のアーキテクチャを有することができる。本特許に開示されたアーキテクチャに加えて、ＴＣＰ／ＩＰプロセッサコアは、固定された機能の実施例とすることができ、又はハードウエア状態のマシンとして実施することができ、又は制御平面がセッション管理も同様に処理し、制御が個別の制御平面プロセッサ又はホストプロセッサ又は上述の様々なアーキテクチャ代替物の組合せに常駐することができるハードウエア内で高速経路処理をサポートするような部分的なプロトコルオフロード機能をサポートすることができる。選択されたＴＣＰ／ＩＰプロセッサコアアーキテクチャは、セキュリティ又はＲＤＭＡ又はその組合せの機能を含むことができる。更に、適応ＴＣＰ／ＩＰプロセッサアーキテクチャは、ＴＣＰ／ＩＰプロセッサコアをプロトコルが適切なプロセッサコアで置換することによってＳＣＴＰ、ＵＤＰ、又は他の移送層セキュリティのようなＴＣＰ／ＩＰ以外のプロトコルに対して使用することができる。それによって関連の特定プロトコルを対象にした適応プロトコルプロセッサを作り出すことが可能になると考えられる。そのようなプロセッサのランタイム適応プロセッサは、その動的な適応機能を使用して本特許の説明と同様に機能し、同等のアプリケーション／サービスに対してハードウエアアクセラレーションを提供することができると考えられる。
【０１４６】
ランタイム適応プロセッサ（ブロック６２０６）は、アプリケーション／サービスの必要性に適する仮想ハードウエア実施例を作り出すように論理と相互接続リソースをオンザフライでプログラム的に適応させることができる動的に変更可能なハードウエアを提供する。ＲＡＰブロックを動的に更新するために適応コントローラ（ブロック６２０３）を使用することができる。適応コントローラは、ホストプロセッサ又はＴＣＰ／ＩＰプロセッサ又はその組合せとインタフェースで接続することができ、ＲＡＰブロック内で多重同時機能サポートを提供するのに加えて、必要なハードウエア機能をサポートする新しいアバター又はインカーネーションを作り出すためにＲＡＰブロックの構成をいつ切り換えるか、ＲＡＰブロックのこのアバターがどのような機能を行うべきか、新しいアバターを何処にフェッチするか、アバターがどの位長く有効か、及びアバターをいつ変更するかを判断する。ＲＡＰブロックは、ＴＣＰ／ＩＰプロセッサコアで行われた解析次第で１つのアバターから別のアバターに動的に切り換えることができる。例えば、ＴＣＰ／ＩＰプロセッサコアは、ＸＭＬデータを包含することができる受信されたあらゆるデータペイロードにフラグを立てるようにそれに要求するプログラムされたポリシーを有することができ、抽出されたデータペイロードをホストコンピュータに直接送信する代わりに処理のためにＲＡＰを通過させる。この例では、ＸＭＬデータを包含するパケットを受信した時に、ＴＣＰ／ＩＰプロセッサコアは、データに適切にタグを付けることができ、ＲＡＰによる更に別の処理のためにパケットを外部メモリの待ち行列に入れるか、又はＲＡＰによる更に別の処理のためにデータをブロック６２０９のバッファに送る。ＴＣＰ／ＩＰプロセッサコアは、ＲＡＰ及び適応コントローラブロックとインタフェースで接続するためにＴＣＰ／ＩＰプロセッサコアに必要とされる機能性を提供することができるＲＡＰインタフェース（ブロック６２１０）に連結することができる。この機能性は、直接にＲＡＰ又は適応コントローラ又はＴＣＰ／ＩＰプロセッサコアの一部とすることができる。ＲＡＰインタフェースは、この例の適応コントローラにＸＭＬトラフィックの到着を知らせることになるので、適応コントローラは、内部メモリ又は外部メモリ又はその組合せとすることができる構成メモリ（ブロック６２０４）から適切な構成をフェッチすることができる。適応コントローラは、次に、ＲＡＰブロック６２０６に構成を提供することができ、ＸＭＬデータが作動する準備ができ、ＲＡＰに対してデータバッファ又は外部メモリ内でそれをフェッチする準備ができると、それを実行可能にする。同様に、ＴＣＰ／ＩＰプロセッサコアと受信されたネットワークトラフィック内でプログラムすることができるポリシー次第で、ＲＡＰブロックは、新しいハードウエアのアバターに構成され、受信されたトラフィックとポリシーの特性に基づいて特定のアプリケーション、サービス、又は機能、又はその組合せを動的にサポートすることができるようになる。
【０１４７】
ＴＣＰ／ＩＰプロセッサコアはまた、ポリシー及び／又は受信データの特性次第で、受信データを更に処理するためにＲＡＰを通過させることをしないでホストプロセッサに渡すことも選択することができる。従って、作動又はポリシー又は機能又はアプリケーションは、使用できないことが多く、そのために機能的な問題を起こさないという理由で、特定の作動又は機能又はポリシー又はアプリケーションに対するハードウエア構成が達成されていなかった場合、又はコスト的な理由又はいずれかの他のビジネス上の又は他の理由のためにアクセラレーションサポートを作り出すようにリソースが割り当てられていなかった場合には、これらの作動は、ホスト上で行うことができる。これらの作動がランタイム適応構成として達成されるので、それを適応コントローラに提供することができ、従って、それは、必要に応じて動的にその作動のためにＲＡＰブロックを構成することができる。ＴＣＰ／ＩＰプロセッサはまた、次に、そのような作動を特定してそれをＲＡＰブロックに通過させるように通知される。そのような技術を使用して、ハードウエアアクセラレータを変更又は追加する必要なしに、ある期間にわたってより多くのアプリケーションを加速することができる。新しいポリシー又はアプリケーション又はサービス又は作動のランタイム適応プロセッサへの配備は、セキュリティポリシーの配備と管理の場合に示すものと全く同等の機構を使用してユーザ又は管理者の制御の下で行うことができる。従って、中央の管理者は、必要とされる限り本特許のランタイム適応プロセッサを備えたシステムに対して新しい構成を効率的に配備することができる。同様に、ユーザ又は管理者は、システム変更の必要性又は利用に応じて、ＲＡＰサポート機能又はポリシー又はアプリケーションを除去又は変更することができる。例えば、本発明のランタイム適応プロセッサを使用するためのシステムは、初めにＸＭＬトラフィックに対して使用することができるが、その利用は、ボイスオーバーアプリケーションをサポートするように変更することができ、ＸＭＬアクセラレーションを必要としないが、その代わりに何か他のボイスオーバーＩＰアクセラレーションが必要である。そのような例では、ユーザ又は管理者は、特定のシステム又は複数のシステムから選択することができるハードウエアサポート構成を変更、追加、又は除去することができる。図５６から５９に示すような中央マネージャ／ポリシーフロー、中央マネージャフロー、規則分配フロー、制御平面プロセッサ／ポリシードライバフローなどは、同様に以下に示されているのと同等の適切な変更を伴って、ランタイム適応構成に対する管理、配備、変更、モニタなどに適用可能である。ランタイム適応構成作成フローは、例えば、セキュリティポリシー作成フローに追加することができる。別の供給業者から新しい構成が利用可能になる場合があり、ユーザは、配備する関連の構成を選択する必要があるだけになる。構成分配フローは、規則分配フローと同等とすることができ、構成のサポートに対するポリシーは、ＴＣＰ／ＩＰプロセッサコアブロックに分配することができ、それに対して、構成は、関連のシステムの適応コントローラに又はドライバ又はホストシステム上の構成制御プロセス又はその組合せに分配することができる。従って、ランタイム適応プロトコルプロセッサシステムは、その環境で使用される場合に他の企業管理システムに適切に組み込むことができる。アプリケーション又はポリシー又はサービス又は作動の構成は、例えば、ネットワーク上でのソフトウエア更新又は大容量記憶装置又は他の手段を通した別の手段によって分配することができる。先の説明は、一利用環境で更新を提供する一方法であるが、当業者が認めることができるように、各実施形態と利用環境に対して同じことを行うために可能な多数の他の方法があり、従って、上述の説明に制限されるように見るべきではない。
【０１４８】
適応コントローラはまた、ネットワークに送出されるデータに対して作動するようにＲＡＰブロックを設定することを要求される場合がある。そのような場合、ＲＡＰブロックは、ネットワーク上の意図された受取人にそれを送信するためにそれがＴＣＰ／ＩＰプロセッサコアに渡される前にデータに対して作動するように要求される場合がある。例えば、ＴＣＰ／ＩＰプロセッサコアによって移送及びネットワークヘッダに封入される前にデータ上で安全ソケット層（ＳＳＬ）作動を行うことが必要になる場合がある。このデータを送信しているホストドライバ又はアプリケーションは、ＴＣＰ／ＩＰプロセッサコアに渡される前にデータ上で行われる作動を適応コントローラに通知するであろう。これは、ホスト／ファブリックインタフェース６２０７から適応コントローラ６２０３までの直接の経路を通じて起こる可能性がある。適応コントローラは、次に、要求された作動を動的に行うようにかつＲＡＰをデータに対して作動させるようにＲＡＰブロック６２０６又はその一部を設定することができる。ＲＡＰ作動が完了した状態で、それは、作動の完了を適応コントローラに通知することができ、次に、それは、ＴＣＰ／ＩＰプロセッサコアと共に働いて、ＴＣＰ／ＩＰプロセッサによる適切なプロトコル処理、ヘッダ封入などの後で、その宛先までの途中でこのデータを送信する。ＲＡＰ６２０６は、ブロック６２０９のデータバッファを通じて又はメモリインタフェースブロック６２０５を使用してそれらをメモリの待ち行列に入れることにより、処理されたデータをＴＣＰ／ＩＰプロセッサコアに渡すことができる。従って、本特許のランタイム適応ＴＣＰ／ＩＰプロセッサは、ＴＣＰ／ＩＰプロセッサコアによる処理の前又は後に発信データと同様に入ってくるデータに対して作動するように構成することができる。
【０１４９】
ランタイム適応プロセッサ６２０６は、物理的、コスト、性能、電力、又は他の制限によってサイズと機能が制限される場合がある。ＲＡＰ拡張インタフェース（ブロック６２１１）も、ＲＡＰブロック６２０６がランタイム適応プロセッサの機能性を提供する１つ又はそれよりも多くの外部構成要素に対してインタフェースで接続するために、適応ＴＣＰ／ＩＰプロセッサ上に設けることができる。従って、このソリューションは、ＲＡＰ拡張インタフェース６２１１を使用してより大きなサイズ又は特徴又は機能に拡大することができる。ＲＡＰ拡張インタフェースは、ＲＡＰを１つ又はそれよりも多くの外部構成要素に継ぎ目なく拡張するために必要なので、全ての必要な制御、経路指定、データ、メモリインタフェースバス及び接続から構成されている。
【０１５０】
図６３は、上述のものに対する本特許の適応ＴＣＰ／ＩＰプロセッサ代替物を示している。上述のように、本特許のＴＣＰ／ＩＰプロセッサ部分は、本特許に説明したアーキテクチャとすることができるだけでなく、機能が固定された実施例であってもよく、又はハードウエア状態機械として実施することができ、又は部分的プロトコルオフロード機能をサポートすることができ、例えば、セッション管理及び制御と同様に制御平面処理が個別の制御平面プロセッサ又はホストプロセッサ又は上述の様々なアーキテクチャ代替物の組合せの中に常駐することができる場合に、ハードウエア内で高速経路処理をサポートすることができる。選択されたＴＣＰ／ＩＰプロセッサコアアーキテクチャはまた、セキュリティ又はＲＤＭＡ又はその組合せに対する機能を含むことができる。更に、適応ＴＣＰ／ＩＰプロセッサアーキテクチャは、プロトコルがＴＣＰ／ＩＰプロセッサコアを適切なプロセッサコアで置換することにより、ＳＣＴＰ、ＵＤＰ、又は他の移送層セキュリティのようなＴＣＰ／ＩＰ以外のプロトコルに対して使用することができる。図６３の適応ＴＣＰ／ＩＰプロセッサ代替品は、ランタイム適応ＴＣＰ／ＩＰプロセッサを作り出すためにＴＣＰ／ＩＰプロセッサアーキテクチャにより緊密に集積されたランタイム適応プロセッサ（ブロック６３１１）、適応コントローラ（ブロック６３１０）、及び構成メモリ（ブロック６３１２）を示している。ＲＡＰ（ブロック６３１１）、適応コントローラ（ブロック６３１０）、及び構成メモリ（ブロック６３１２）によって提供された機能は、図６２の対応するブロックのそれと非常に類似している。ブロック６２１０のＲＡＰインタフェース機能性、又はメモリインタフェースブロック６２０５、又はデータバッファ（ブロック６２０９）は、ブロック６３１０、６３１１、又は６３１２、又はその組合せによって適切に提供することができる。それはまた、ＴＣＰ／ＩＰプロセッサ構成要素内で分配することができる。このアーキテクチャはまた、そのようなブロックは図６３に示されていないが、ＲＡＰ拡張性を提供するためにブロック６１１のそれのようなＲＡＰ拡張インタフェースを提供することができる。適応ＴＣＰ／ＩＰプロセッサのこのバージョンはまた、ＴＣＰ／ＩＰプロセッサコアブロックによる処理の前又は後に図６２のそれと同等に作動すると考えられ、発信データと同様に受信データに対して作動するように設定することもできる。
【０１５１】
図６４は、本特許のランタイム適応プロセッサを示している。ランタイム適応プロセッサは、加速する必要がある様々なハードウエア機能をマップするように動的に変更することができる計算論理と相互接続リソースを含む。計算論理ブロックは、密な制御のための計算ブロックのようなＦＰＧＡを使用して達成することができ、又は１つ又はそれよりも多くの単純なプログラマブルリソース、ＡＬＵ、及び設定可能メモリで構成することができ、所定時間に１つ又は複数の特定のハードウエア機能を提供し、この機能は、次に、新しい機能をサポートするために動的に変更することができる。機能の動的な変更は、ＲＡＰを利用することにより構成コントローラによって必要に応じて行うことができる。例えば、１つ又は複数の計算ブロックは、計算ブロックに入ってくるデータ上で選択された期間中に付加的な作動を提供するように設定することができるが、次に新しいアバターが創り出されるので、提供される作動は、新しいアバターの継続時間に対して引き算されるように選択することができる。新しいアバターに対する新しい作動の選択は、適切な構成コントローラによって行うことができる。従って、計算ブロックによって提供される機能は、別の機能に動的に変更することができる一方、一部の他の計算ブロックがそれらの選択された作動を継続して提供することができる。計算ブロックの機能変更は、１クロック周期ほど短いか又は複数のクロック周期か又は他の周期とすることができるある一定の期間を要することがある。１つ又はそれよりも多くの計算ブロックの動的な適応は、同時に又はそうでなければ必要に応じて行うことができる。相互接続リソースはまた、ＦＰＧＡの再構成可能な経路指定リソースのそれと同様に達成することができる。図６４は、経路指定リソース６４０７（ａ）から６４０７（ｎ）で構成された経路指定ネットワークを使用して相互接続した計算クラスター（ブロック６４０１（１）から６４０１（Ｚ））と呼ばれる本特許のランタイム適応プロセッサアーキテクチャを示している。これらの経路指定リソースは、クラスター間経路指定スイッチ（６４０３）を使用して相互接続される。クラスター間経路指定スイッチは、様々な計算クラスターの間に高度にプログラマブルな相互接続を提供し、それによってハードウエアの変化するアバターを作り出すために動的に構成することができる。計算クラスターは、ＲＡＰを動的に適応させるために適応コントローラ（図６２のブロック６２０３）と共に働くグローバル構成コントローラ（ブロック６４０５）によって独自に設定することができる。グローバル構成コントローラは、構成メモリコントローラ（ブロック６４０６）と、両方とも図６２に示す構成メモリ（ブロック６２０４）及び適応コントローラ（ブロック６２０３）と共に働き、独自の計算クラスター構成と相互接続構成のクラスター間経路指定スイッチを動的に変更するのに使用される構成情報を取り出す。入力／出力インタフェース及びコントローラ（ブロック６４０４）は、ランタイム適応プロセッサが、全て図６２に示す適応コントローラ（ブロック６２０３）、データバッファ（ブロック６２０９）、ＲＡＰ拡張インタフェース（ブロック６２１１）、又はホスト／ファブリック／ネットワークインタフェース（ブロック６２０７）とインタフェースで接続するのに使用される。グローバルメモリ及びコントローラ（ブロック６４０２）は、クラスターを計算するためにグローバルメモリを提供し、外部メモリインタフェースブロック６２０５とインタフェースで接続するためにコントローラも提供する。コンピュータクラスター６４０１（１）−６４０１（Ｚ）内の計算論理は、各クラスター内のものに加えてメモリを必要とすることがある。グローバルメモリブロック及びコントローラは、この必要性を満たすことができる。この図は、異なる役目をする複数の相互接続要素を示している。相互接続チャンネル６４０７（ａ）から６４０７（ｎ）は、各クラスターをクラスター間経路指定スイッチに接続するための経路指定チャンネルであり、ＲＡＰの他のクラスターからのソース又はシンク情報への各クラスターのための多方向接続機能を可能にする。相互接続チャンネル６４０８（ａ）から６４０８（ｎ）は、計算クラスターに対して、それらがグローバルメモリへのアクセスを得るようにメモリ相互接続リソースを提供する。これらのメモリチャンネルは、列内のクラスター間で共有することができ、又はデータをメモリに書き込むか又はメモリから読み取るために列内の多くの計算クラスターによって同時に使用することができるメモリに対する多重経路を存在させることができる。相互接続チャンネル６４０９（ａ）から６４０９（ｎ）は、構成チャンネルであり、このチャンネルは、グローバル構成コントローラにより、計算クラスターに構成情報を送信することができるようになり、所定のクラスター又は一部のクラスターの構成又は全てのＲＡＰクラスターの構成を変更するのに使用することができる計算クラスターからイベント情報又は他の情報を受信することができるようになる。上述の相互接続チャンネルのアーキテクチャ及び実施例は、幅広いバス、高速シリアル相互接続、又は他の実装選択肢を使用して達成することができる。特定の選択肢又はトポロジーは、図によって指示されておらず、また示唆されていない。
【０１５２】
図６４のランタイム適応プロセッサは、各領域が特定のハードウエア作動を行うように構成することができる部分的な領域に計算アレイを分割することができるように構成することができる。例えば、クラスター６４０１（１）、６４０１（２）が１つの領域を形成することができるのに対して、クラスター６４０１（３）から６４０１（Ｍ）は別の領域を形成することができ、一部の他のクラスターは、更に別の領域を形成することができる。領域の一部は、ランタイム適応プロセッサ上にマップされているハードウエア機能によって要求されることがあるように、パイプライン型ステージとして相互接続することができる。マッピングの領域は、マップされる作動に対して適切になるように、互いに相互接続することができ、又は独立したデータ又はストリームに対して作動することができる。領域は、全て、処理要求の変更の必要性に伴って動的に適応させることができる。領域は、非常に細分性が高い可能性があり、又は同様に部分的計算クラスターだけを伴う場合がある。従って、本特許のランタイム適応プロセッサは、非常に密なレベルに対して動的に適応可能であり、必要な処理の要求を満足させる。
【０１５３】
図６５は、本特許の計算クラスターを示している。計算クラスターは、計算論理を提供する計算要素（ＣＥ）（ブロック６５０１（１）から６５０１（Ｚ））を含む。ＣＥは、ＦＰＧＡのような組合せ論理ブロックと相互接続リソースで構成することができ、又はプログラムされた命令に基づいて所定のハードウエア機能を提供するＡＬＵとメモリを備えた単純なプログラマブルプロセッサとすることができる。ＣＥは、新しいハードウエア機能を実行するために、入力データ又は保存されたデータ又はその組合せに対して実行されている命令を変更することにより動的に構成することができる。プロセッサは、組合せ論理で設定された必要なハードウエア作動を選択することができる組合せ論理を経てハードウエアに組み込まれている命令をサポートする単純なプロセッサとすることができる。ハードウエア構成が、ＡＬＵを経て実行される命令を選択することができ、他の機能的リソースが、仮想ハードウエアのアバター／インカーネーション／構成を提供する場合、プロセッサは、より複雑なプロセッサとすることができる。アバターはまた、より複雑な構成を形成するリソースを経て実行することができる複数の命令を含むことができる。ＣＥは、ビット的演算、並びに構成オプションの細分性によって要求される４ビット、８ビット、１６ビットグループ分けのようなビットのグループに対する演算を提供することができる。このビットのグループ分けは、本特許の教示の原理から逸脱することなく、より大きな又はより小さなグループ分けを選択することができる実施選択肢とすることができる。クラスター構成コントローラ（ブロック６５０７）は、グローバル構成コントローラ（図６４のブロック６４０５）と相互作用することができ、各ＣＥに関する特定のアバターを選択する。相互接続チャンネル（６５０２（１）から６５０２（Ｎ））は、構成コントローラからＣＥに構成情報を提供し、ＣＥからクラスター構成コントローラにあらゆる実行情報又はイベント又はアバター変更要求又はその組合せを提供する。この情報は、グローバル構成コントローラ６４０５及び／又は図６２の適応コントローラ６２０３と共に、異なるアバターをマップする構成コントローラのフローを誘導するのに使用することができる。この情報は、１つ又は複数の計算クラスターの異なる部分が作動の複数のステージを提供する作動のパイプライン型ステージを作り出すために使用することができる。相互接続チャンネル（６５０３（１）から６５０３（Ｍ））は、ＣＥにクラスターメモリ及びコントローラ（ブロック６５０６）への接続性を提供する。クラスターメモリ内への複数の並列経路が存在することができ、そのために図示の通りメモリの異なる領域への複数の同時アクセスが可能になる。所定のチャンネル上のＣＥは、全て、チャンネルを共有することができ、又は同様にメモリに対してチャンネル当たり複数の経路が存在することができる。クラスターメモリは、実施選択肢で単一のメモリアレイとすることができ、又は複数のメモリアレイとすることができる。クラスターメモリはまた、６５０８及び図６４の６４０８（ａ）から６４０８（ｎ）のようなチャンネルを通じてグローバルメモリ及びコントローラ（図６４のブロック６４０２）に連結することができる。グローバルメモリ及びクラスターメモリは、各々、ホスト／ファブリック／ネットワークインタフェース（６２０７）、又は適応コントローラ（６２０３）、又はメモリインタフェース（６２０５）、又はその組合せから個々に読取又は書込メモリ位置に、又は初期化又はＤＭＡアクセス又は試験などのような他の目的に対する一組の位置にアクセス可能である。ＣＥはまた、図６５に矢印で表示されたそれらのすぐ隣に接続性を提供することができる。示されている隣の接続が全て存在する必要があるわけではない。これは、実施選択肢とすることができる。これらの接続により、ＣＥがそれらの隣との間で出力又は入力データ、フラグ、例外条件、又は同様の情報、又はその組合せを送信又は受信することができるようになる。ＣＥに対して選択されたアバターは、作動を続けるために必要とされる情報を検索するためにどの入力を使用するかを判断するであろう。ＣＥからの出力はまた、クラスター経路指定スイッチ（６５０６）と連結するように選択することができ、このスイッチは、次に、クラスター内のＣＥの間で選択された接続性を提供することができると同時に、クラスター間経路指定スイッチ（６４０３）及び６４０７（ａ）から６４０７（ｎ）のような相互接続チャンネルと連結することによって他の計算クラスターとの接続性を提供する。クラスター経路指定スイッチは、相互接続チャンネル（６５０４）と連結することにより、クラスター構成コントローラ（６５０７）を通じて適切な相互接続を得るように構成することができる。
【０１５４】
図６６は、本特許の教示を使用するセキュリティ解決法を示している。このセキュリティ解決法は、中央マネージャ、ネットワーク、１つ又はそれよりも多くのラインカード、及びセキュアチップを含む。中央マネージャは、ＩＴマネージャによって使用される中央管理システムに常駐する機能モジュールの集まりであり、セキュリティ規則を作成し、配備し、更にモニタする。中央マネージャモジュールは、図５６に示す中央マネージャのモジュールに類似しており、これらは、以下の説明において交換することができるように使用される。これらのモジュールは、全体のネットワークを管理するために使用されるシステムの同じセットに常駐することができ、又は独立したシステムに常駐することができる。ブロック６６０１は、ネットワークのために配備することができるネットワーク管理アプリケーション及びセキュリティアプリケーションを表すために示されている。これらのアプリケーションは、そのセキュリティ規則又はポリシーを作成するためにＩＴマネージャによって使用される。中央マネージャは、６６０１のセキュリティ及び管理アプリケーションに均一のインタフェースを提供するアプリケーションプログラマーインタフェース（ＡＰＩ）、ブロック６６０２を提供し、本特許の分散セキュリティシステムを使用する。ＡＰＩは、ネットワーク層規則エンジン、ブロック６６０３、アプリケーション層規則エンジン、ブロック６６０４、ストレージエリアネットワーク規則エンジン、ブロック６６０５、又は他のアプリケーションに特定の規則エンジン、ブロック６６１９、又はこれらの組合せに接続する。これらの規則エンジンは、これらが表す規則の１つ又はそれよりも多くの特定のカテゴリに対してＡＰＩサポート機能を提供する。規則エンジンはまた、その特定の必要性に対して規則の関連のフィールドを満たすことによってＩＴマネージャを使用することができる事前に構成される規則テンプレートを提供することができる。例えば、ネットワークアドレスがローカルアドレスではない全てのユーザへの接続要求を拒否するか、又は全ての外部接続など又はこれらの組合せに対してポート８０のような特定のポートへの要求を拒否する規則のセットが存在することができる。これらの規則エンジンは、規則を組み立て、かつセキュアノードへの分配のために規則をコンパイルするための規則コンパイラ、ブロック６６０６に規則を提供する。コンパイラは、ノード機能及び接続性データベース、ブロック６６１７を使用し、ノードに特定の規則及びアクションをコンパイルする。コンパイルされた規則は、コンパイル規則データベース、ブロック６６１８に預けられる。規則分配エンジン、ブロック６６０７は、図５７及び図５８に示すものに類似の中央マネージャフロー及び規則分配フローを使用して規則を適切なノードに分配する。セキュリティ規則は、図５８に示すようにホストプロセッサ又は制御プレーンプロセッサに、又は以下に説明する制御プロセッサ及びスケジューラー、ブロック７１０３、又はノード機能に応じて適切にこれらの組合せに分配される。規則は、ネットワークを通じて特定のノードの機能に対して適切な専有又は標準的なプロトコルを使用するセキュアリンク又はインセキュアリンクを使用して分配することができる。ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロエリアネットワーク（ＭＡＮ）、無線ＬＡＮ、ストレージエリアネットワーク（ＳＡＮ）、又はシステムエリアネットワーク、又は配備される別のネットワークタイプ、又はこれらの組合せとすることができる。ネットワークは、「イーサネット」ベース、インターネットプロトコルベース、又はＳＯＮＥＴベース、又は他のプロトコルベース、又はこれらの組合せとすることができる。モニタリングインタフェース、ブロック６６０９、及びイベント記録エンジン及びデータベース、ブロック６６０８は、規則によって定められるようにセキュリティ侵害又は他の条件についてモニタされている様々なノードからの様々なセキュリティ及び／又は管理イベントを収集するために利用される。これらのブロックは、上述の中央マネージャブロック５６１３、５６１４、５６１５、及び５６１６を表し、類似の機能を提供する。モニタリングエンジンは、ブロック５６１３について説明したような分析機能を提供することができ、又はブロック６６１０で示す分析及びレポーティングアプリケーションと共に働くことができ、問題の性質及びその深刻度に応じてＩＴマネージャによってプログラムされるように、必要に応じて又は自動的にセキュリティ侵害又は違反又は準拠又は他の問題のインテリジェントレポートをＩＴマネージャに供給する。中央マネージャモジュールは、ネットワークノードシステム、例えば、スイッチ又はルータにローカルに配備することができ、システムの制御及び管理ソフトウエア内で作動することができる。これは、システムのセキュリティ機能を提供する様々なラインカード又はアクセラレータカード又は他のカードにローカルに規則を配備してモニタするために使用することができる。このような場合、規則を伝送するのに使用されるネットワークは、特定のシステムのローカルバス又はシステムエリアネットワーク、又はこれらの組合せとすることができる。
【０１５５】
セキュリティ解決法は、セキュリティプロセッサ、ＳＡＮプロトコルプロセッサ、ＴＣＰ／ＩＰプロセッサ、又はランタイム適応プロトコルプロセッサ、又は本特許に開示する様々な他のプロセッサを実装することができるラインカードを含む。ラインカード構成及びアーキテクチャは、特定のシステム及びアプリケーションに応じて変えることができる。ラインカードアーキテクチャの３つのタイプ、ａ）フロー−スルー、ｂ）ルック−アサイド、及びｃ）アクセラレータカードは、本特許のプロセッサに対する使用モデルを示すために本特許に例示されている。図６８、図６９、及び図７０は、セキュリティプロセッサベースのシステムを使用するこれらの構成を示しているが、これは、本特許の他のプロセッサに基づくことができる。ブロック６６１２及びブロック６６１３は、カード構成のこれらのタイプの２つを示している。これらのカードに示されているセキュリティプロセッサは、本特許に開示するものである。プロセッサに実装される機能に応じて作成することができるセキュリティプロセッサの様々な異なる変形が存在する。ブロック６６１４及びブロック６６１５は、このようなセキュリティプロセッサの２つのバージョンを示している。ブロック６６１４は、ランタイム適応プロセッサに連結されたコンテンツサーチ及び規則処理エンジンを少なくとも含むセキュリティプロセッサコアを示している。このプロセッサは、図７１に示されているものに類似しており、以下に詳しく説明する。ブロック６６１５は、セキュリティプロセッサとしてセキュリティノードで使用可能なより多くの機能を提供するためにＴＣＰ／ＩＰプロセッサ又はプロトコルプロセッサに連結されたブロック６６１４のセキュリティプロセッサを示している。図示されていない低減された機能セキュリティプロセッサは、ブロック６６１４からランタイム適応プロセッサ及び関連の論理を取り除くことによって作成することができ、コンテンツサーチ及び規則処理エンジンベースのセキュリティプロセッサを提供する。セキュリティプロセッサの選択は、配備されるシステム、システムによってサポートされる機能、解決法コスト、性能要件、又は他の理由、又はこれらの組合せに依存することになる。セキュリティプロセッサは、必要な場合に規則情報、又は他の中間データ又はパケット又は他の情報を記憶するのに使用することができる外部メモリ、ブロック６６１６に接続するために１つ又はそれよりも多くのポートを使用することができ、セキュリティ処理に必要な様々な機能を実行する。メモリは、ＤＲＡＭ、ＳＤＲＡＭ、「ＤＤＲ  ＤＲＡＭ」、ＳＲＡＭ、ＲＤＲＡＭ、ＦＣＲＡＭ、「ＱＤＲ  ＳＲＡＭ」、「ＤＤＲ  ＳＲＡＭ」、磁気メモリ、フラッシュ、又はこれらの組合せ、又はこのようなメモリ技術の将来の派生物のような様々なタイプとすることができる。本特許に開示する発明は、図示のアーキテクチャの多くの変形を可能にし、実施形態での変更が本発明の原理及び精神から逸脱することなく行われ得ることが当業者によって認められるであろう。
【０１５６】
図６７は、セキュリティ解決法コンパイラフローを示している。上述のように、セキュリティ規則は、アプリケーション層規則、ブロック６７０１、ネットワーク層規則、ブロック６７０２、ストレージエリアネットワーク規則、ブロック６７０３、又はアプリケーションに特定の規則、ブロック６６１９、又はこれらの組合せのような様々なタイプとすることができる。図６７に示すように、アプリケーション層規則は、特別な言語又は正規表現のような標準表示又はこれらの組合せで表現することができる基本ストリングサーチ規則を含む。一般的にパケットの内側で深く文字ストリングを探索することを要求するアプリケーション層規則は、正規表現を使用して表現することができる。アプリケーション層規則又はネットワーク層規則又はＳＡＮ規則又はアプリケーションに特定の規則のタイプは、配備される特定のノード、規則を使用する組織又はエンティティ、防御されるセキュリティの脅威、又は他の目的、又はこれらの組合せに応じて変えることができる。図は、使用モデルに応じて作成することができる規則の様々なカテゴリを示している。これらの規則は、アンチ−スパムソフトウエア販売業者、又はセキュリティシステムを使用するエンティティ、又はセキュリティ解決法を提供する販売業者、又は他の第三者、又はこれらの組合せによって作成することができる。スパムに対して防御するためのアプリケーション層規則が存在することができる。これは、スパムの知識又は望ましくないメッセージを使用して作成されていた規則を含むことがある。例えば、規則は、ヘッダ及びメッセージを含む電子メール内のあらゆる場所であらゆる入力電子メールの内側の「ｒｅｃｅｉｖｅ  ｍｉｌｌｉｏｎ  ＵＳＤ」のようなメッセージを探索することとすることができる。このような規則は、「．*ｒｅｃｅｉｖｅ  ｍｉｌｌｉｏｎ  ［Ｕ｜ｕ］［ｓ｜Ｓ］［Ｄ｜ｄ］」のような正規表現を使用して表現することができ、関心のメッセージ、すなわち、「ｒｅｃｅｉｖｅ  ｍｉｌｌｉｏｎ  ＵＳＤ」を検出するが、ＵＳＤが全て大文字でない、例えばｕｓｄ又はＵｓＤ又はｕｓＤなどである場合にこの変形を検出することができる。この規則における先頭の「．*」は、受信したデータパケット内のあらゆる所でメッセージを探索することを示している。規則のセットは、アンチ−スパム規則セットを形成するための上述のもののように定めることができる。スパムの新しいタイプ又は方法が見出された時にこれらの規則を更新することができ、絶えず発生している脅威に対して最新の状態にしておくことができる。同様に、規則のセットは、様々な公知のウイルスを検出するためにウイルス走査機能を実行するように開発することができる。アンチ−ウイルス規則は、一般的に、上述したものに類似の署名マッチング又はパターンマッチング規則である。ウイルス署名は、メッセージ又はファイルの特定のロケーションで捜すことができ、類似の方法を使用して説明することができる。アンチ−ウイルス規則のセットは、既知のウイルスを検出するために既知のウイルス署名から定められる。新しいウイルス又はワームが公知のように構成された時、同様にこれらに対して防御するためにアンチ−ウイルス規則を更新するこ���ができる。これらの規則は、次に、セキュリティコンパイラフローを通じてコンパイルされ、上述のように関心の全ノードに分配される。これらの規則が配備された状態で、セキュリティノードは、メッセージを発している特定のノードへのアクセスを拒否し、又は接続を落とし、又はＩＴマネージャへのセッションにフラグを立て、又は規則によって定められるような他の適切なアクションのためにアンチ−スパム又はアンチ−ウイルス規則でのマッチングに対応するアクションを取るようにプログラムすることができる。中央マネージャモジュールは、上述のようなある一定の条件が満たされた場合に、このようなアクションをＩＴマネージャが定めることができる機能を提供する。アクションは、接続のドロップ、アクセスの拒否、侵害のレポート、ネットワークマネージャのページ、アクセスするが後の分析のために侵害を記録することの許可、又は特定の仮想ＬＡＮに対する送信元ノードの分離、又は何らかの他のノードへの接続の転送、又は適切な他の類似のアクションの１つ又はそれよりも多くを含むことができる。
【０１５７】
同様に、アプリケーション層規則の多くの他のカテゴリが存在する場合がある。例えば、適切に電子文書又はメディア又はコンテンツの所有者のデジタル権利を管理するように定められた規則が存在する場合がある。このような規則は、上述の署名又はパターンマッチング又は文字ストリングのマッチング規則と同様に定めることができる。これらの規則は、このようなデジタルコンテンツのアクセス又は使用が所有者に許可されるか又は指示することができるデジタル権利データベースを参照するのに使用することができるコンテンツ内の特定のデジタル権利署名とのマッチングにフラグを立てることができる。デジタル所有権データベースは、以下に説明するブロック６８０９又はブロック７１０３のようなセキュリティプロセッサ及び制御プロセッサに関連したメモリに常駐することができ、有効な所有権が存在するか否かを決めるためにそのデータベースを参照することができ、存在しない場合には、定められた規則に基づいて特定のアクションを取らなくてはならない。デジタル権利確認は、デジタル権利署名マッチングを行っている特定のノードにおいて何らかの他の装置又はプロセッサによって行われる。このような分析機能を実行する場所の決定は、特定のシステム使用モデル及びシステム設計選択に依存する可能性がある。デジタル権利管理のための規則のセットは、セキュリティプロセッサに対するアプリケーション層規則の一部として作成される。
【０１５８】
インスタントメッセージ（ＩＭ）は、個人並びに企業による使用で優れた成功を遂げている。インスタントメッセージは、将来のリファレンスのために維持する金融業界のような様々な業界には規制される可能性があり、電子メールのような通信の他のモードのようにスパムの影響を受ける。従って、一部の組織は、不法な使用の場合にその後の責任に対して保護するためにインスタントメッセージを具体的に対象とした規則を作成することができ、又は望ましくないスパムから又は組織によって適切と思われるような他の理由のためにユーザを保護することができる。インスタントメッセージに伴う問題の１つは、ポリシーイングのどのレベルも通信における遅延を生じることなくストリームで行わなくてはならないことである。従って、本特許のハードウエアベースのセキュリティ実施は、ＩＭをモニタするのに必要とされる可能性がある。これらの規則は、上述の他のアプリケーション層規則に類似しており、正規表現を使用してメッセージサーチストリングを定めるような類似した手段を使用して作成することができる。
【０１５９】
ＦＢＩ及びその他による最近の調査によって、情報技術への攻撃の７０％以上は組織内部からのものであることが分っている。従って、このような攻撃の悪影響から保護するために開発する必要があるセキュリティ装置及び規則のクラスに対する必要性が存在する。これらの規則は、押し出し検出規則として定められる。押し出し検出規則は、ネットワークを使用する組織の機密又は専有又は機密情報の故意の又は故意でない開示を検出するために作成することができ、このような情報が組織の周囲の外側に出ていかないようにする。例えば、ソフトウエア会社は、取得を許可されていない人又はエンティティへの偶然の又は悪意のある開示からそのコアソフトウエアソースコードを守る必要がある。規則のセットは、従って、全てのアウトバウンドメッセージ内の特定のストリング又はパラグラフ又はコードモジュール又は他の適切な情報をサーチして、これらにフラグを立てるか又はこれらが送信されるのを阻止することができる組織によって作成される。このような規則はまた、セキュリティコンパイラフローを使用してコンパイルされ、適切なノード又は複数のノードに分配される。例えば、規則は、組織からアウトバウンドされた送信される全てのメッセージの「Ｔｏｐ  Ｓｅｃｒｅｔ」フレーズをサーチし、ＩＴマネージャによる更に別のレビューのためにこのようなメッセージにフラグを立てるか、又はこのような接続を落として、ユーザ又は他の責任のある人に通知するように定めることができる。正規表現規則「．*Ｔｏｐ  Ｓｅｃｒｅｔ」は、メッセージのあらゆる所で語を探索するように定めることができる。このような規則は、アプリケーション層規則として作成することができ、次に、コンパイルされ、検出及び押し出し検出セキュリティ機能の実施のために適切なノードに分配される。
【０１６０】
ＩＴマネージャは、アプリケーション層規則又はネットワーク層規則又はＳＡＮ規則又はアプリケーションに特定の規則又は他の規則から規則のクラスを作成することができ、規則の何らかのクラスをセキュリティノードの何らかのクラスに、更に規則の別のクラスをセキュリティノードの別のセットに配備することができる。例えば、マネージャは、本特許の教示及び重要なトップシークレット情報を保持する機密サーバに対する押し出し検出規則及びネットワーク層規則のような規則の別のセットによって有効にされるセキュリティである、ネットワークのスイッチ及びルータに配備されるアンチ−スパム又はアンチ−ウイルス規則及びネットワーク層規則のようなある一定のアプリケーション層規則を作成することができる。組織内の機能に応じて配備することができる規則の様々なセットを作成することができる。例えば、製造部門内に配備されるセキュリティノードは、規則の１つのセットを取得することができると共にエンジニアリング部門でのセキュリティノードは、規則の異なるセットを取得することができる。装置の異なるタイプ又は異なる装置ユーザに対する規則の異なるセット又はノードに特定の規則又はこれらの組合せを作成する段階は、組織内で普及させて階層化されるセキュリティを作成する処理として使用することができる。
【０１６１】
同様に、特定のウェブアドレス又はＵＲＬ、又はクレジットカード番号又は健康情報又は財政レポートなどを含む顧客情報のような他の機密情報へのアクセスを検出するか又はフラグを立てるアプリケーション層規則が存在する場合があり、これは、ブロック６７０１に示すようにアプリケーション規則の異なるセットを作成するのに使用することができる。組織内及びインターネットにわたるボイスオーバーＩＰ解決法の使用が増加する時に、セキュリティの脅威も増してきている。ＶＯＩＰに特定の規則を作成する必要があり、例えば、ローグ接続を検出してフラグを立てる必要があるか、又はＶＯＩＰトラフィックが組織の境界の外に出ることを許可してはならないか、又はＶＯＩＰ接続を通じて組織に入るウイルスを検出するか、又は暗号化するなどによってＶＯＩＰトラフィックの機密性を作り出さなくてはならない。ＶＯＩＰ規則は、同じアプリケーション層規則エンジンを使用して作成することができ、ネットワークでの適切なノードで規則へのマッチングを検出することができる。以下に説明するランタイム適応プロセッサ、ブロック７１０２は、このようなトラフィックがＶＯＩＰ規則マッチングによって検出された場合に、ＶＯＩＰトラフィックに暗号化又は解読サービスを提供するのに使用することができる。同様に、他のアプリケーションに特定の規則も開発することができ、図６７に示されているコンパイラフローを使用してネットワークのセキュアノードにプログラムされ、コンパイルされ、更に分配されるように、中央マネージャモジュールに供給することができる。
【０１６２】
ネットワーク層規則、ブロック６７０２は、ネットワーク及びネットワークのトランスポート層を対象とした様々な規則を含むことができる。これらの規則は、図６０に示すものに類似している。これらの規則は、ＩＰレベルアドレス規則、プロトコルポート規則、プロトコルに特定の規則、及び接続方向指定規則などを含むことができる。これらの規則は、特別な言語で又は正規表現を使用して説明することができる。ＴＣＰ／ＩＰベースのネットワークでは、これらは、主にＴＣＰ及びＩＰヘッダフィールドベースの規則であり、ここでマッチングは、送信元アドレス又は宛先アドレス又はアドレス範囲又はポート番号又はプロトコルタイプ又はこれらの組合せで定められる。同様に、組織の重要な情報資産を転送することができるストレージエリアネットワークを具体的に対象とした規則が存在する場合がある。これは規則の異なるカテゴリとして示されているが、ストレージネットワークのネットワーク層規則又はアプリケーション層規則などを含むことができる。特定の論理ユニット番号（ＬＵＮ）又は区画（送信元／宛先アドレスの群）又は論理又は物理ブロックアドレスなどを対象とした規則が存在する場合がある。これらの規則はまた、特定の言語で又は正規表現を使用する文字のストリング又はデータパターンとして表すことができる。
【０１６３】
図６７のセキュア解決法コンパイラによって、ＩＴマネージャは、上述したものとは異なるタイプのセキュリティ規則を作成することができ、セキュリティ規則に階層化及び／又はパーベイシブセキュリティモデルを作成させることができる。コンパイラフローには、セキュリティ機能の有無、規則伝送方法、サポートされる規則ベースのサイズ、ノードの性能メトリクス、又は配備ロケーション、例えばＬＡＮ又はＳＡＮ又はその他などのような特定のノードの特徴が供給されるであろう。コンパイラフローは、次に、この知識を使用してＩＴマネージャによって作成された規則セットからノードに特定の規則をコンパイルする。コンパイラは、規則を分析しコンテンツを分析するために使用される規則データベースを作成する語彙解析発生装置、ブロック６７０５に表示される規則を構文解析するための規則パーサ、ブロック６７０４を含む。規則パーサは、規則エンジンの出力に応じて規則のファイルから又はコマンドラインから直接又はこれらの組合せによって規則を読み取ることができる。特定のノードに対する規則は、規則又は正規表現トークンを説明するのに使用される言語に特定のトークンを識別するために構文解析される。パーサは、次に、トークンを語彙解析発生装置に表示する。語彙解析器は、入りトークンを処理し、コンテンツを構文解析するための規則を表す非決定性有限オートマトン（ＮＡＦ）を生成する。ＮＡＦは、次に、語彙解析発生装置によって決定性有限オートマトン（ＤＦＡ）に変換され規則状態の決定性処理を可能にする。ＮＦＡ及びＤＦＡを作成する処理は、最新のコンパイラ開発者によって良く理解される。しかし、語彙解析発生装置は、規則に対するＤＦＡ状態及び状態遷移テーブルを表す様々なテーブルを作成し、これらは、コンパイラに対して行われるような語彙解析ソフトウエアを作成する代わりにハードウエア語彙解析器によって使用される。規則をビューする１つの方法は、コンテンツを識別するために規則が言語を定めることである。これらのテーブルは、以下に説明する語彙解析ハードウエア又はコンテンツサーチ及び規則処理エンジン、ブロック７１０６によって使用され、本特許のセキュリティプロセッサに表示されるデータのストリームを分析する。正規表現規則は、状態遷移テーブルを定めるものとしてビューされる。例えば、ストリング「ｈｅｌｐ」が正規表現「ｈｅｌｐ」を使用して探索されている場合、正規表現の各文字は、状態を表すためにビューされる。ｓ（ｘ）が文字ｘに対する状態を表すとすると、開始状態ｓ０、及び文字に特定の状態ｓ１（ｈ）、ｓ２（ｅ）、ｓ３（ｌ）、及びｓ４（ｐ）が存在することができる。適切な遷移条件が満たされない場合、サーチを終了する時に入力することができるｓ＿ｅｒｒのようなエラー状態も存在する場合がある。入力ストリームがハードウエア語彙解析器によって解析される場合、最初の「ｈ」に遭遇した時にこの状態機械がアクティブ化され、状態機械はｓ１に達する。ここでストリームの次の文字が「ｅ」である場合、状態機械はｓ２に遷移する。従って、ストリング「ｈｅｌｐ」に遭遇した場合、状態機械は状態ｓ４に到達する。状態ｓ１からｓ３は、次の状態までサーチを続行することを意味する状態を受理する。このストリングに対する状態ｓ４は、終端状態として語彙解析発生装置によってマーク付けされる。これらの状態は、受理テーブルでの受理又は終端状態としてマーク付けされる。比較が終端状態に達した場合、特定の規則とのマッチングが示される。規則のマッチングに基づいて行う必要があるどのようなアクションも、コンテンツサーチ及び規則処理エンジン、ブロック７１０６によって次に使用されるアクションタグ又は命令としてマッチング／アクションテーブルで作成され、特定のアクションを行うか、又は適切な規則に特定のアクションを行うためにマッチング及びアクション情報を制御プロセッサ、ブロック７１０３に転送する。しかし、部分的な規則マッチングのみが存在する場合、例えば、入力コンテンツがストリング「ｈｅｒ」を含む場合、次に規則処理ハードウエアは、「ｈｅ」に遭遇した状態ｓ２を入力し、「ｒ」が解析されたら直ちに、規則マッチングが存在せずに入力ストリームの処理が初期状態ｓ０からそのポイント前方から始まることを意味するエラーが示される。以上の説明は、１つの状態につき単一の文字マッチングを使用することに関して与えられているが、ハードウエア分析を高速化するために同時に複数の文字を分析することができる。例えば、語彙解析発生装置は、コンテンツサーチ速度を４倍にすることによってそこで１つの状態当たり４文字の遷移を可能にするテーブルを作成することができる。語彙解析発生装置は、次にコンパイル規則データベースストレージ、ブロック６７１１に記憶される文字クラステーブル、ブロック６７０６、次の状態ルックアップテーブル、ブロック６７０９、状態遷移テーブル、ブロック６７０７、受理状態、ブロック６７０８、及びマッチング／アクションテーブル、ブロック６７１０を作成する。文字クラステーブルは、状態遷移の類似のセットを作成する文字をコンパクト表示のための状態の群に圧縮することによって作成される。状態遷移テーブルは、次の状態遷移をルックアップするための列として圧縮された文字クラスと共にＤＦＡテーブルの状態の行から構成される。次の状態テーブルは、ＤＦＡによって表された状態機械における現在の状態から次の状態にインデックスするために使用される。これらのテーブルは、本特許のセキュリティプロセッサに関連したオンチップ及びオフチップメモリに記憶される。本特許のコンパイラは、ノード毎に規則を作成するためにノード特徴及び接続性データベースを使用する。コンパイラは、ある規則又は規則サイズが特定のノードの特徴に符合しないというエラーをＩＴマネージャに示し、それによってマネージャによってこれらの規則が訂正される。この情報は、ブロック６７１３で示すようにノード特徴及び接続性データベースから検索される。
【０１６４】
規則分配エンジン、ブロック６７１２は、図５７及び図５８に示されている中央マネージャ及び規則分配フローに従う。セキュリティ規則は、図５８に示すようにホストプロセッサ又は制御プレーンプロセッサに、又は以下に説明する制御プロセッサ及びスケジューラー、ブロック７１０３に、又はノード機能に応じて適切にこれらの組合せに分配される。規則は、ネットワークを通じて特定のノードの機能に対して適切に専有又は標準プロトコルを使用するセキュアリンク又はインセキュアリンクを使用して分配される。
【０１６５】
図７１は、本特許のセキュリティプロセッサを示している。セキュリティプロセッサは、コプロセッサ又はホストバスインタフェース、ブロック７１０１、制御プロセッサ及びスケジューラー、ブロック７１０３、少なくとも１つのコンテンツサーチ及び規則処理エンジン、ブロック７１０６、次の状態メモリ、ブロック７１１０、マッチング／アクションテーブルメモリ、ブロック７１１１、文字クラステーブルメモリ、ブロック７１０７、及び受理及び状態遷移メモリ、ブロック７１０８を含む。セキュリティプロセッサはまた、パケットバッファ、ブロック７１０４、メモリコントローラ、ブロック７１１２、ランタイム適応プロセッサ、ブロック７１０２、適応コントローラ、ブロック７１０５、及び構成メモリ、ブロック７１０９を含むことができる。セキュリティプロセッサの１つのバージョンは、データインタフェース、制御プロセッサ及びスケジューラー、少なくとも１つのコンテンツサーチ及び規則処理エンジン、次の状態メモリ、マッチング／アクションテーブルメモリ、文字クラステーブルメモリ、受理及び状態遷移メモリ、及びメモリコントローラとして作動するコプロセッサ又はホストインタフェースコントローラを使用することによって作成することができる。メモリコントローラは、規則の数がオンチップメモリに符合するほど十分に小さいシステムアプリケーションには必要ない場合がある。このようなプロセッサは、コンテンツサーチタスクの全てを実行することができるが、ランタイム適応プロセッサを含むセキュリティプロセッサによって実現可能な目標とされるアプリケーションアクセラレーションを提供することはできない。
【０１６６】
制御プロセッサ及びスケジューラー、ブロック７１０３は、規則分配エンジン、ブロック６７１２と通信し、コンテンツ検査を始める前に適切なデータテーブルを受け取る。制御プロセッサ及びスケジューラーは、受け取られた状態情報をそのそれぞれの専用メモリに記憶する。ブロック６７０６からの文字クラステーブルは、メモリブロック７１０７に記憶される。状態遷移及び受理テーブル、ブロック６７０７及び６７０８は、ブロック７１０８によって表されるそのそれぞれのメモリに記憶される。ブロック７１０８は、性能の理由のために２つ又はそれよりも多くの別々のメモリとすることができるが、図には１つのブロックによって示されている。ブロック６７０９からの次の状態ルックアップテーブルは、次の状態メモリ、ブロック７１１０に記憶される。ブロック６７１０からのマッチング／アクションテーブルは、そのメモリブロック７１１１に記憶される。これらのテーブルは、オンチップのセキュリティプロセッサで利用可能なメモリより大きくすることができ、メモリコントローラブロック７１１２によってアクセスされる外部メモリ又は複数のメモリに記憶することができる。外部メモリに記憶されたデータテーブルへのアクセスを高速化するためにメモリへの複数のポートが存在する場合がある。これらのメモリは、ＤＲＡＭ、ＳＤＲＡＭ、「ＤＤＲ  ＤＲＡＭ」、ＳＲＡＭ、ＲＤＲＡＭ、ＦＣＲＡＭ、「ＱＤＲ  ＳＲＡＭ」、「ＤＤＲ  ＳＲＡＭ」、磁気メモリ、フラッシュ、又はこれらの組合せ、又はこのようなメモリ技術の将来の派生物のような様々なタイプとすることができる。殆どの用途では、次の状態テーブル及びアクションテーブルは、オフチップとする必要があるが、他のテーブルは、規則のサイズ及び数に応じてオンチップで維持することができる。規則分配エンジンが、制御プロセッサ及びスケジューラー、ブロック７１０３にテーブルを提供し、テーブルが、そのそれぞれのメモリで設定された状態で、セキュリティプロセッサは、コンテンツ検査を実行して潜在的なセキュリティ規則マッチング又は侵害を識別するためにデータストリームの処理を開始する準備ができる。セキュリティプロセッサ状態構成情報は、コプロセッサ／ホストインタフェースコントローラを通じて受け取られる。本特許のセキュリティプロセッサは、図６９に示すルック−アサイド構成、又は図６８に示すフロー−スルー構成、又は図７０に示すアクセラレータアダプタ構成、並びに当業者によって認められる図示されていないその他のような様々な構成で配備することができる。ルック−アサイド又はアクセラレータアダプタ構成において、本特許のセキュリティプロセッサは、このようなカードが常駐するシステムに応じてネットワークプロセッサ又はスイッチプロセッサ又はＴＣＰ／ＩＰプロセッサ又は分類プロセッサ又は転送プロセッサ又はホストプロセッサなどとすることができるマスタープロセッサの制御下にある。制御プロセッサ及びスケジューラーは、構成情報を包含して構成情報をセキュリティプロセッサに渡すパケットを受け取るために規則エンジンと通信するこのようなマスタープロセッサの制御下で構成情報を受け取る。構成が行われた状態で、マスタープロセッサは、コプロセッサ又はホストインタフェースを使用して実行する必要があるコンテンツ検査のためにセキュリティプロセッサにパケットを提供する。コプロセッサ又はホストインタフェースは、ＰＣＩ、ＰＣＩ−Ｘ、ＰＣＩｅｘｐｒｅｓｓ、ＲａｐｉｄＩＯ、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、又はＬＡ−１又はＳＲＡＭメモリインタフェースなど、又は専有バスのような標準バスとすることができる。バスの帯域幅は、そのピーク回線速度でのコンテンツサーチエンジンのオペレーティングを維持するのに十分でなくてはならない。セキュリティプロセッサは、ルック−アサイド又はアクセラレータ構成でパケット及び他の構成情報を受け取るためにマスタープロセッサスペースでマップされたメモリ又はＩＰマップ装置とすることができる。所定のパケットが処理される時間又はプログラムされた規則とのマッチングを見つけた時間を示すために、セキュリティプロセッサをマスタープロセッサによってポーリングすることができ、又はセキュリティプロセッサがドアベル又は割込み機構をこのマスターに供給することができる。制御プロセッサ及びスケジューラー、ブロック７１０３及びブロック７１０１は、上述の機能を提供するためにマスタープロセッサと共に働く。制御プロセッサ及びスケジューラーは、入りパケットをパケットバッファ、ブロック７１０４に記憶し、コンテンツを分析するために利用可能になった時にコンテンツサーチ及び規則処理エンジンによる処理にパケットをスケジュールする。スケジューラーは、特定のエンジンによって処理されるパケットの記録を維持し、パケットが処理された状態でマスタープロセッサに通知する。ブロック７１０６のコンテンツサーチ及び規則処理エンジンは、規則とのマッチング及びマッチング／アクションテーブルにプログラムされたその規則に関連したアクションを見つけた時に、制御プロセッサ及びスケジューラーに通知する。この情報は、次に、制御プロセッサによってマスタープロセッサに送られ、マスタープロセッサは、規則によって示されたパケットに対する特定のアクションを行うことができる。アクションは、上述のようにパケットを落とすか、又は接続を落とすか、又はＩＴマネージャに通知するなどのような多数のアクションからの１つとすることができる。セキュリティプロセッサが、ブロック７１０２のようなランタイム適応プロセッサを含む場合、制御プロセッサ及びスケジューラーは、ブロック７１０２によってパケットのオペレーションをスケジュールすることができる。制御プロセッサは、必要なオペレーションに対してプロセッサの特定のアバターを選択するために適応コントローラ、ブロック７１０５と共に働く。例えば、分析される前に解読する必要があるパケットは、コンテンツサーチエンジンによって分析される前に適応プロセッサにスケジュールすることができる。パケットが適応プロセッサによって解読された状態で、これは、次に、ブロック７１０３によってブロック７１０６にスケジュールされる。しかし、ランタイム適応プロセッサは、マッチングがコンテンツサーチエンジンによって見つかるか又はパケットがいずれの問題もなくサーチエンジンによって処理された時にパケットを操作することができる。例えば、パケットデータは、問題が見つからなかった時に暗号化する必要がある場合がある。制御プロセッサ及びスケジューラーは、オペレーションの必要性によって定められるように適切な順序でパケットをランタイム適応プロセッサにスケジュールする。ランタイム適応プロセッサ、ブロック７１０２、適応コントローラ、ブロック７１０５、及び構成メモリ、ブロック７１０９は、図６２、６３、６４、及び６５に示されているものに類似している。ランタイム適応プロセッサ及び関連のブロックは、セキュリティプロセッサの制御プロセッサ及びスケジューラーに連結するために行われる適切な論理拡張によって類似の機能を提供する。ランタイム適応プロセッサは、適切な適応構成が配備された場合に圧縮及び復元サービスをパケットに提供するために使用することができる。ランタイム適応プロセッサはまた、ＤＳＰ処理又は暗号化又は解読などのような関連のハードウエアアクセラレーションサービスをパケットに提供するＶＯＩＰパケットに対して使用することができる。
【０１６７】
セキュリティプロセッサはまた、送信元と宛先間の接続において複数のパケットにわたって検査機能を提供する必要がある可能性がある。制御プロセッサ及びスケジューラー、ブロック７１０３は、同様にこのような機能を提供する。制御プロセッサは、制御プロセッサのオンチップメモリに又はオフチップメモリに保持することができる接続データベースにコンテンツサーチ及びセキュリティ処理エンジンの内部処理状態を記憶することができる。制御プロセッサ及びスケジューラーは、接続に対応するパケットがマスタープロセッサによって又は以下に説明するフロー−スルー構成の入りトラフィックで表示された場合に、所定の接続に対する実行又は分析状態をルックアップする。接続ＩＤは、マスタープロセッサによって作成され、検査されるパケットと共にセキュリティプロセッサに供給されるか、又はセキュリティ装置が、パケットのヘッダから接続アソシエーションを取得することができる。接続ＩＤは、送信元アドレス、宛先アドレス、送信元ポート、宛先ポート、及びプロトコルタイプから得られる５タプルハッシュを使用することによってＩＰプロトコルケースで作成される。制御プロセッサ及びスケジューラーによってハッシュ競合の場合に接続ＩＤが作成され解決された状態で、制御プロセッサ及びスケジューラーは、次に、その接続に関連した状態を検索し、その状態からのサーチを開始するためにサーチエンジン、ブロック７１０６に状態を提供する。この機構は、接続に対するマルチパケットサーチを作成してパケット境界にまたがるどのようなセキュリティ侵害又は脅威も検出するために使用される。例えば、「Ｍｉｌｌｉｏｎ  ＵＳ  Ｄｏｌｌａｒｓ」を探索するように定められた規則がある場合、「Ｍｉｌｌｉｏｎ  Ｕ」が１つのパケットに現れて「Ｓ  Ｄｏｌｌａｒｓ」が別のパケットに現れる２つの別々のパケットに接続データ転送でこのストリングが現れる場合、次に、本特許の接続ベースのマルチパケットサーチ機構が存在しない場合、各パケットがこの規則に個々に符合しないのでセキュリティ侵害が検出されない可能性がある。しかし、マルチパケットサーチが実行された場合、時間的にたとえどのように離れてこれらの２つのパケットがセキュリティノードに到着したとしても、サーチの状態は、接続のために１つのパケットから別のパケットに維持され、２つのパケットのストリングは、連続のストリング「Ｍｉｌｌｉｏｎ  ＵＳ  Ｄｏｌｌａｒｓ」として検出され、フラグを立てられる。
【０１６８】
上述のように、本特許のセキュリティプロセッサは、フロー−スルー構成で配備することができる。このような構成でセキュリティプロセッサは、ブロック７２０１及び７２１３で示すようにメディアインタフェースコントローラポートの２つのセットを含むことができる。図７２に示されているセキュリティプロセッサは、図７１に非常によく似ているが、ブロック７１０１のようなホスト又はコプロセッサインタフェースブロックに対して複数のメディアインタフェースコントローラポートを有する。ポートの数は、１つのポート当たりの回線速度及びセキュリティプロセッサの性能に依存する可能性がある。入りポート回線速度の和は、ほぼ全入りトラフィックにセキュリティ検査を提供するためにセキュリティプロセッサの処理性能に一致しなくてはならない。トラフィックの全てをセキュリティ目的のために検査する必要がないことが既知である場合には、プロセッサ機能より高い回線速度和を使用するという意識的な選択を行うことができる。検査しなくてはならないトラフィックの決定は、中央マネージャからのプロセッサにプログラムされた接続又はセッションに依存する可能性がある。図７２のセキュリティプロセッサは、従って、トラフィックにフロー−スルーセキュリティ検査を提供するために使用することができ、図６８で示すようなフロー−スルー構成で使用することができる。フロースルー構成は、スイッチ又はルータラインカード又はホストサーバアダプタ又はストレージネットワーキングラインカード又はアダプタなどのようなシステムの様々なタイプに対して作成することができる。フロー−スルー構成でセキュリティプロセッサは、ネットワーク上のトラフィックに直接露出される。従って、中央マネージャ及び規則分配エンジンは、セキュリティプロセッサの制御プロセッサ及びスケジューラー、ブロック７２０３又はブロック６８０９と直接通信することができる。ブロック６８０２のセキュリティプロセッサは、ランタイム適応プロセッサを組み込むことなく図７２に示すセキュリティプロセッサに類似している。対処する必要があるフロー−スルー構成における問題の１つは、セキュリティプロセッサによってトラフィックにもたらされる待ち時間である。例えば、ネットワークスイッチ又はルータは、システムの待ち時間性能に非常にセンシティブである。従って、このような構成では、ディープパケット検査がシステム性能の損失にかなりの待ち時間を付加してしまう可能性がある。従って、本発明のフロー−スルー構成のためのセキュリティプロセッサは、セキュリティプロセッサの入力からその出力にデータトラフィックを渡すのに使用されるブロック６８０７で示すカット−スルー論理を提供し、全体的なシステム性能の必要性をサポートするために最小待ち時間をもたらす。図７２の制御プロセッサ及びスケジューラーブロック７２０３は、カット−スルー論理を提供し、別々には示されていない。フロースルー構成では、マッチングが見つかったら、セキュリティプロセッサは、システム内部に特別な制御パケットを作成することができ、ここでシステムのスイッチプロセッサ又はネットワークプロセッサ又は他のプロセッサが、これらのメッセージを解釈し、パケットがシステムから出て行くのを許可される前にカット−スルーモードを利用するパケットでの適切なアクションを実行することができる。このようなプロトコルは、システム内の専有プロトコルとすることができ、又はフロー−スルーセキュリティ構成を取り入れたシステムに適切な標準プロトコルを利用することができる。
【０１６９】
図７３は、一部の付加的な機能を有して図７１及び７２に非常に類似したセキュリティプロセッサの別のバージョンを示している。付加的な機能は、分類／規則エンジン、ブロック７３１３、分類／規則データベース、ブロック７３１４、及びデータベース拡張コントローラブロック７３１５によって供給される。これらのブロックは、上述の図２０及び３０に類似している。これらのブロックは、ＣＡＭベースのアーキテクチャを使用する高性能ネットワーク層規則処理を提供するために使用することができる。３進ＣＡＭベースデータベースはまた、接続識別及び接続状態検索又は更新のためのハッシュキーを作成するためにネットワークヘッダの特定のフィールドへの高速マッチングを提供するのに使用することができる。制御プロセッサ及びスケジューラーは、コンテンツサーチ及び規則処理エンジンにプログラムされたものに対してプログラムされた規則に応じて分類／規則エンジンに呈するパケットの部分を決める。ＣＡＭベースアーキテクチャは、一般的に、多くの電力を消費し、従って、極端な高速が極端な低待ち時間で要求される場合を除いてその用途で制限される可能性がある。コンテンツサーチ及び規則処理は、より低い電力でこの機能を提供すると共にＣＡＭベースアーキテクチャに比べてより大きな規則セットに対してサーチを実行することができる。データベース拡張ポート、ブロック７３１５は、外部分類／規則エンジンを使用してＣＡＭデータベースサイズを拡張するために使用することができる。
【０１７０】
図７４は、ブロック７１０６、７２０６、７３０６のコンテンツサーチ及び規則処理エンジンを示している。コンテンツサーチ及び規則処理エンジンは、各々、図６７の規則分配エンジンによって分配された規則状態テーブルを保持する様々なメモリへのインタフェースブロックを含む。このエンジンは、パケットバッファブロック７１０４から又は図７２及び７３から同様に分析されるパケットデータをフェッチするコンテンツフェッチブロック、７４０５を含む。文字クラスルックアップ、ブロック７４０６、受理／状態遷移ルックアップ、ブロック７４０７、次の状態ルックアップ、ブロック７４０８、マッチング／アクションルックアップ、ブロック７４０９は、各々、図７１、７２、及び７３の適切な状態メモリからの状態データフェッチを行う。コンテンツサーチ状態機械、ブロック７４０４は、フェッチされた文字又は複数の文字を様々なテーブルのデータによって分析するために使用される状態機械を含む。状態機械は、文字クラステーブルに索引付けしてＤＦＡ状態機械のための列アドレスを検索するためにフェッチされた文字を使用する。同時に、状態機械は、ＤＦＡ状態機械のための行アドレスを検索するためにインデックスとして現在の状態を使用して状態遷移テーブルデータをフェッチする。現在の状態は、新しいサーチを始める場合に始動状態に初期化され、それ以外は、次に検索される次の状態が状態機械の次の反復に対して現在の状態になる。行アドレス及び列アドレスは、次に、状態機械に対して次の状態を検索するために使用される。検索された次の状態インデックスは、これが終端状態である場合にアクションタグをフェッチするために使用される。同時に行われる受理状態ルックアップは、検索された状態が終端状態又はエラー状態又は続行又は受理状態であるかを識別するために使用される。コンテンツサーチ状態機械、ブロック７４０４は、エラーが見つけられる又はマッチングが見つけられる又はパケットがなくなる又はこれらの組合せになるまで上記に概説されたように段階を効率良く反復する。接続ベースルックアップ機能では、アドレスポインタ、現在の状態、及び次の状態などのような現在の内部状態が、接続データベースに状態を保持しておくために制御プロセッサ及びスケジューラーブロック７１０３又は７２０３又は７３０３に供給される。所定の接続のために新しいパケットがスケジュールされた場合、コンテンツサーチ状態機械の記憶されていた内部状態が検索され、ブロック７４０４に供給され、接続のために前のパケットとの連続のストリームが存在しているかのように接続のために新しいパケットの処理を始める。ランタイム適応プロセッサを含むセキュリティプロセッサは、適応コントローラブロック７２０５に連結されたＲＡＰコマンドコントローラ、ブロック７４０３を含むことができ、ランタイム適応プロセッサを適応させマッチング及びマッチングと共に見つけられたアクションタグによって要求されるようにサービスを提供する。アクションタグは、分析されたパケットをランタイム適応プロセッサにスケジュールすることができるように制御プロセッサ及びスケジューラーに供給される。適応コントローラは、ランタイム適応プロセッサ、ブロック７１０２にアバターの１つとしてまだ存在していない場合に、プロセッサを必要なアバター構成情報によって準備させるためのヒント又はコマンドとしてブロック７４０３によって供給されたコマンドを使用することができる。
【０１７１】
上述のように本発明のセキュリティプロセッサは、システム環境、システム機能、システム設計、又は他の考察事項に応じて多くの様々な構成と共にシステムに組み込むことができる。本特許は、図６８、６９、及び７０に３つのこのような構成を示している。上述のように、図６８はフロー−スルーセキュリティを提供するネットワークラインカード又はアダプタにおけるセキュリティプロセッサを示している。この構成でセキュリティプロセッサは、図示のようにメディアインタフェースの隣りに又はホスト又はバックプレーンインタフェースブロック６８０４により近いブロック６８０３の後に常駐することができる。このような決定は、システム設計の決定であり、本特許のセキュリティプロセッサの使用から排除されることはない。セキュリティプロセッサが、ＴＣＰ／ＩＰ又はプロトコル処理機能を組み込むシナリオでは、ブロック６８０３は、一部のシステムでは必要ない可能性がある。図６９は、ネットワークラインカード又はアダプタのためのルック−アサイドセキュリティ構成を示している。このような構成では、ブロック６９０３で示すスイッチプロセッサ、ネットワークプロセッサ、転送エンジン、又は分類エンジン、又は他のプロセッサとすることができるマスタープロセッサが存在する。マスタープロセッサは、上述のように図６６の中央マネージャと通信し、規則を受け取り、更にセキュリティプロセッサと共に働く中央マネージャにイベントを戻す。マスタープロセッサはまた、ブロック６９０２及び６９０４で示す機能を組み込むことができる。マスタープロセッサは、ＴＣＰ／ＩＰプロセッサ又は本特許のプロセッサから同様に実現可能な他のＩＰプロセッサの変形とすることができる。
【０１７２】
図７０は、セキュリティ及びコンテンツサーチアクセラレーションアダプタを示している。このようなアダプタは、サーバ、ルータ、及びスイッチなどのような上述の複数のネットワークシステムにアクセラレータカードとして挿入することができる。このアクセラレータカードのセキュリティプロセッサは、ホストバス又はバックプレーンに直接又はブロック７００３で示すもののようなブリッジ装置を通じて連結することができる。セキュリティプロセッサは、システムのホストプロセッサ又はマスタープロセッサと通信し、検査されるパケット又はコンテンツを受け取って結果を戻す。ホスト又はマスタープロセッサのドライバは、セキュリティプロセッサとのこの通信を行うことができる。ホスト又はマスタープロセッサで作動するこのようなドライバ又は他のソフトウエアは、中央マネージャと通信することができ、規則データベース又は規則データベースへの更新を受け取るか、又はプログラムされたアクションに基づいて中央マネージャにマッチング結果を提供する。アクセラレータカードは、ネットワーク層セキュリティ機能又は接続ＩＤ検出又はハッシュキー生成又は他の機能又はこれらの組合せを実行するために使用することができ、更に、上述のネットワーク層及びアプリケーション層セキュリティアクセラレーション機能の実行を助けることができる３進ＣＡＭベースサーチエンジンのような他の装置を含むことができる。
【０１７３】
図７１、７２、又は７３のセキュリティプロセッサはまた、文書又はデジタル情報でコンテンツサーチを行うために使用することができ、更に、グーグル又はグーグルの競合他社によって供給されるウェブサーチ機能のような加速サーチに使用することができるインデックスを作成するために使用することができる。このようなタスクのために本発明のセキュリティプロセッサを使用することで、汎用プロセッサベースのソフトウエアを使用した場合に比べて、索引付け及びサーチにかなりの性能改善をもたらすことができる。このような用途では、セキュリティプロセッサの制御プロセッサ及びスケジューラーは、コンテンツサーチ及び規則処理エンジンを利用することができ、表示されるデータにキーフレーズサーチを行い、マッチングインデックスを取得することができる。これらの結果は、次に、エンドユーザからのコンテンツサーチ要求を処理するシステムの制御プロセッサ及びスケジューラー又は別のプロセッサで実行することができる処理によってマスターサーチインデックスを作成するのに使用することができる。このマスターインデックスは、次に、迅速かつ広範囲なサーチ結果を提供するために参照することができる。
【０１７４】
上述の図７１、７２、７３のセキュリティプロセッサは、本特許のプロトコル処理アーキテクチャの様々なバージョンにセキュリティ機能を提供するために、図１６、１７、６１、又は６２のプロセッサの要素に連結することができる。例えば、ブロック６６１５は、ＴＣＰ／ＩＰプロトコルプロセッサがＴＣＰ／ＩＰ処理を備えた別のセキュリティプロセッサを作成するために、図７１、７２、又は７３のプロセッサに連結されるような１つの変形を示している。類似のバージョンは、セキュリティプロセッサを備えたＩＰストレージプロトコル処理機能を含む又はＴＣＰ／ＩＰプロセッサを図７１、７２、又は７３のセキュリティプロセッサを備えたＲＤＭＡ機能に連結するか又はこれらの組合せによって作成することができる。図７１、７２、又は７３のセキュリティプロセッサは、セキュリティプロセッサがブロック１７０３で使用される分類フィールドを探索するようにプログラムされた場合に、上述のように、図２０及び３０に詳細に示されている分類エンジン、ブロック１７０３に代わって使用することができる。
【０１７５】
図７５は、正規表現規則の実施例を示している。上述のように、ＲＥは、１９５０年代半ばから使用されており、多くの一般的なアプリケーションによって使用されている。図は、この説明では規則ツリーと呼ばれる正規表現規則の小さなセットを示しており、これは、ＨＴＴＰで使用される構成の一部を分析及び構文解析するのに使用することができる。言語又はプロトコルなどに対する規則の全セットと共に例証されるようなＲＥ規則は、特定の言語又はプロトコルに対してコンテンツを分析するのに使用される語彙解析器を作成するのに使用することができるレックス及びフレックスなどのようなツールに供給される。規則は、説明を容易にするために、この図ではＲ１からＲ９のラベルが付けられており、特定のツールに対する構文を表すものではない。規則は、４つの規則群、すなわち、＜ＣＯＭＭＥＮＴ＞、＜ＦＮＴ＞、＜Ｓ＿ＴＡＧ＞、及び＜ＩＮＩＴＩＡＬ＞を示している。規則Ｒ１からＲ３は、＜ＣＯＭＭＥＮＴ＞規則群に属しており、同様に他の規則は図のように他の規則群に属している。各規則は、正規表現、及び正規表現規則がトリガ又は符合した場合に処理される１つ又はそれよりも多くのアクション／タグを含む。例えば、Ｒ９は、コンテンツの山括弧（＜）を探索する＜ＩＮＩＴＩＡＬ＞群の一部である。山括弧がコンテンツに見つかった場合、アクション／タグが処理される。この規則では、アクションは、Ｓ＿ＴＡＧ規則群を開始する段階を含む。この例証での仮定は、コンテンツサーチが開始され、アクション／タグがフローを移動してコンテンツに基づく他の規則群をアクティブ化した時に初めて＜ＩＮＩＴＩＡＬ＞のラベルを備えた規則群がアクティブ化されるということである。この例証では、最初の山括弧が検出された場合に、Ｓ＿ＴＡＧ群の一部である規則がアクティブ化されてＩＮＩＴＩＡＬ群が保留される。異なるコンテンツが処理される時、規則は、コンテンツサーチの処理が始まる規則ツリーのルートとして＜ＩＮＩＴＩＡＬ＞規則群と共に規則ツリーを流れていく。これは、コンテンツサーチ規則を作成する従来技術の例である。
【０１７６】
上述のように、正規表現は、ＮＦＡ又はＤＦＡのようなＦＳＡを使用して表すことができる。図７６ａは、正規表現（ｘｙ＋ｙ）*ｙｘに対するＴｈｏｍｐｓｏｎの構成を示している。Ｔｈｏｍｐｓｏｎの構成は、各段階が２つの新しい状態を取り入れる段階毎の方式で進み、それによって結果生じたＮＦＡは、正規表現の記号及びオペレータの大体２倍の状態を有する。ＦＳＡは、状態、状態遷移、及び１つの状態から別の状態にＦＳＡを遷移させる記号から構成される。ＦＳＡは、少なくとも１つの開始状態と少なくとも１つの受理状態を含み、開始状態は、ＦＳＡ評価が始まる状態であり、受理状態は、ＦＳＡがストリングを理解した場合に到達する状態である。ブロック７６０１は、ＦＳＡの開始状態を表し、ブロック７６０５は受理状態である。ブロック７６０２は、状態２を表し、７６０４は状態３を表している。状態２から状態３への遷移は、記号ｘ、７６０３でトリガされ、２つの状態間の有向辺として表される。ＴｈｏｍｐｓｏｎのＮＦＡは、どのような入力記号もなしに取ることのできる状態間の遷移である「ε」遷移、７６１６を含む。
【０１７７】
図７６ｂは、正規表現（ｘｙ＋ｙ）*ｙｘに対するＢｅｒｒｙ−ＳｅｔｈｉのＮＦＡを示している。Ｂｅｒｒｙ及びＳｅｔｈｉは、正規表現の「マーキング」と呼ばれる技術を使用して正規表現をＦＳＡに変換するアルゴリズムを説明している。これは、どのような状態へのいかなる遷移も同じ記号からくるという特徴を有するＮＦＡを結果として生じた。例えば、状態１、７６０７への全ての遷移は、記号「ｘ」からである。Ｂｅｒｒｙ−Ｓｅｔｈｉ構成の他の特徴は、ＮＦＡ状態の数が正規表現での記号の数と同じであり、１つの開始状態であることである。構成のこのタイプでは、記号の各出現は、新しい記号として扱われる。構成は、正規表現（ｘｙ＋ｙ）*ｙｘをマーク付けされた表現（ｘ1ｙ2＋ｙ3）*ｙ4ｘ5に変換し、ここで各ｘ1は、同じ状態、７６０７に至る。図は、マーク付けを示していない。ＦＳＡが構成された状態で、マーク付けが取り除かれる。図７６ｂは、マーク付けが取り除かれたＮＦＡを示している。図から分るように、Ｂｅｒｒｙ−Ｓｅｔｈｉ構成では１つの状態への全ての入り遷移が、全て同じ記号に依存している。同様に、Ｂｅｒｒｙ−Ｓｅｔｈｉ構成の二重性が、上述のように研究されて文献に記録されており、同じ記号に依存する全ての入り遷移の代わりに、１つの状態からの全ての出力遷移が同じ記号に依存する。Ｂｅｒｒｙ−Ｓｅｔｈｉ構成は、構成の左バイアスタイプと呼ばれるが、その二重性は、右バイアス構成と呼ばれる。
【０１７８】
図７６ｃは、同じ正規表現（ｘｙ＋ｙ）*ｙｘに対するＤＦＡを示している。ＤＦＡは決定性であり、その状態の１つだけが所定の時間にアクティブであり、単に１つの遷移が入力記号に応じて行われる。しかし、ＮＦＡでは、複数の状態が同時にアクティブであり、１つの入力記号に基づいて遷移が１つの状態から複数の状態に行われる。ＲＥ又はＮＦＡをＤＦＡに変換するために部分集合構成のような公知のアルゴリズムが文献には存在する。正規表現に対して示されたＤＦＡについて注意すべき１つのポイントは、それが、ＴｈｏｍｐｓｏｎのＮＦＡ並びにＢｅｒｒｙ−ＳｅｔｈｉのＮＦＡの両方よりも少ない状態を有するということである。Ｎ文字ＤＦＡに対する状態の数の上限は、２Nであるが、ＤＦＡ状態の数の上限を結果として生じる表現は、上記に引用のされたコンパイラに関する文献の３．７節でＡｈｏ、Ｓｅｔｈｉ、及びＵｌｌｍａｎによって言及されたように、語彙解析アプリケーションに頻繁には出現しない。
【０１７９】
図７７ａは、左バイアスＮＦＡ及びその状態遷移テーブル（従来技術）を示している。この例証は、遷移が依存する適切な記号と共に示す各ノードから他のノードへの全ての遷移を備えた一般的な４つの状態のＢｅｒｒｙ−ＳｅｔｈｉのようなＮＦＡである。例えば、状態Ａ、７７０１は、７７０２及び７７０３のラベルを備えた例示的な遷移で示すように記号「ａ」に依存する全ての入り遷移を有する。ＦＳＡが、状態Ａ、７７０１である場合、入力記号「ｄ」は、状態Ａから状態Ｄへ、遷移、７７０４によってＦＳＡを状態Ｄに遷移させる。図のテーブルは、状態遷移テーブルを使用して同じＦＳＡを示している。列「ＰＳ」、７７１１は、ＦＳＡの現在の状態であり、行「ｓｙｍ」、７７１２は、状態遷移が依存する記号の全てのリストである。テーブル７７１３は、ｓｙｍヘッダ行からの入力記号が受け取られた場合にＦＳＡが現在の状態（ＰＳ）から遷移する次の状態（ＮＳ）を示している。このＦＳＡでは、状態「Ａ」は開始状態であり、状態Ｃは受理状態である。従って、ＦＳＡが現在の状態「Ａ」であって入力記号「ｂ」が受け取られた場合、ＦＳＡは、次の状態「Ｂ」に遷移する。次の入力記号が受け取られた場合、ＦＳＡは、現在の状態「Ｂ」であり、現在の状態「Ｂ」に対応する行による状態遷移について評価される。
【０１８０】
図７７ｂは、右バイアスＮＦＡ及びその状態遷移テーブル（従来技術）を示している。この例証は、遷移が依存する適切な記号と共に示す各ノードから他への全ての遷移を備えたＢｅｒｒｙ−ＳｅｔｈｉＮＦＡの一般的な４つの状態のデュアルである。例えば、状態「Ａ」、７７０５は、７７０８及び７７０９のラベルを備えた例示的な遷移で示すように、記号「ａ」に依存する全ての出力遷移を有するが、上述の左バイアスＮＦＡとは異なり、各入り遷移は、同じ記号ではなく、例えば、７７０６及び７７０７のラベルを備えた遷移は、それぞれ記号「ｂ」及び「ｄ」に依存する。この図の状態遷移テーブルは、ＦＳＡが同じ入力記号に基づいて複数の状態に遷移することを除いて左バイアスに類似している。例えば、ＦＳＡが現在の状態「Ｂ」であって記号「ｂ」が受け取られた場合、ＦＳＡは、全ての状態「Ａ」、「Ｂ」、「Ｃ」、及び「Ｄ」に遷移する。７７１６のような空のボックスにＦＳＡを向ける入力記号が受け取られた場合、ＦＳＡは、理解していないストリングを受け取っていることになる。ＦＳＡは、次に、次のストリングを評価するために再度開始状態から開始するように初期化され、ストリングが理解されていないことを示すことができる。
【０１８１】
図７７ａ及び図７７ｂは、各状態から他への遷移の全てが左バイアス又は右バイアス構成特徴に基づいて示される一般的な４つの状態ＮＦＡを示している。しかし、４つの状態ＮＦＡの全てが現在への遷移の全てを必要とするわけではない。従って、受信した入力記号の遷移が存在しない場合に現在の状態から次の状態に遷移するようにＦＳＡに要求する記号が受け取られた状態で、ＮＦＡは、入力ストリングを認識しないと呼ばれる。このような時は、次のストリングを理解するためにＮＦＡを開始状態で再度開始することができる。一般的に、ＲＥに対して結果生じた４つの状態ＮＦＡに基づいて所定の遷移を有効又は無効にするために機構が存在する場合、左バイアス（ＬＢ）又は右バイアス（ＲＢ）形式でどの４つの状態ＲＥも表すために、これらの例示的な４つの状態ＮＦＡを使用することができる。
【０１８２】
図７８ａは、左バイアス及び右バイアスＮＦＡに対する状態遷移制御を示している。図は、状態「Ｂ」、７８０１、「Ｃ」、７８０２、及び「Ｄ」、７８０３から入力記号「Ｓ１」を受け取ったことに応じて入り遷移を有する状態「Ａ」、７８００を有する左バイアスＮＦＡを示している。しかし、状態「Ｂ」、「Ｃ」、及び「Ｄ」の各々から状態「Ａ」への遷移は、適切な状態依存制御が入力記号「Ｓ１」を受け取った上に設定された場合にのみ発生する。状態「Ｂ」から状態「Ａ」への遷移に対する状態依存制御はＶ2であり、状態「Ｃ」及び「Ｄ」から状態「Ａ」への遷移に対する状態依存制御はそれぞれＶ3及びＶ4である。次の状態「Ａ」への遷移は、状態依存制御Ｖ1を通じて現在の状態「Ａ」に依存する。従って、状態「Ａ」への遷移は、「Ｓ１」である受け取られた入力記号に応じて及び適切な遷移に対する状態依存制御が設定された場合に発生する。従って、特定の遷移に対して状態依存制御を設定又はクリアすることによってあらゆる任意の４つの状態ＮＦＡを表すことができる。従って、４つの状態レフトバイアスＮＦＡが、状態「Ａ」又は「Ｄ」からではなく状態「Ｂ」及び「Ｃ」から状態「Ａ」への遷移を含む場合、状態依存制御は、Ｖ1＝０、Ｖ2＝１、Ｖ3＝１、及びＶ4＝０のように設定することができる。従って、ＮＦＡが状態「Ｄ」であり記号「Ｓ１」が受け取られた場合、ＮＦＡは状態「Ａ」に遷移しないが、ＮＦＡが状態「Ｂ」であり記号「Ｓ１」が受け取られた場合、ＮＦＡは状態「Ａ」に遷移する。
【０１８３】
同様に、図７８ａは、右バイアスＮＦＡに対する状態及び遷移を示している。図は、入力記号「Ｓ２」、「Ｓ３」、及び「Ｓ４」の受け取りに応じてそれぞれ状態「Ｂ」、７８０７、状態「Ｃ」、７８０８、及び状態「Ｄ」、７８０９からの入り遷移を有する状態「Ａ」、７８０６を有する右バイアスＮＦＡを示している。しかし、状態「Ｂ」、「Ｃ」、及び「Ｄ」の各々から状態「Ａ」への遷移は、適切な状態依存制御が適切な入力記号を受け取った上に設定される場合にのみ発生する。状態「Ｂ」から状態「Ａ」への遷移に対する状態依存制御はＶ2であり、状態「Ｃ」及び「Ｄ」から状態「Ａ」への遷移に対する状態依存制御はそれぞれＶ3及びＶ4である。次の状態「Ａ」への遷移は、状態依存制御Ｖ1を通じて現在の状態「Ａ」に依存する。従って、状態「Ａ」への遷移は、受け取られた入力記号に基づいて更に適切な遷移に対する状態依存制御が設定された場合に起こる。従って、特定の遷移に対する状態依存制御を設定又はクリアすることによってどのような任意の４つの状態の右バイアスＮＦＡも表すことができる。所定の状態に対する全ての状態遷移制御は、左バイアス及び右バイアスＮＦＡに対して図７８ａの例示的なＶ1、Ｖ2、Ｖ3、及びＶ4から構成される状態依存ベクトル（ＳＤＶ）を形成する。
【０１８４】
図７８ｂは、１つの状態に対する構成可能な次の状態テーブルを示している。「ＮＳ＝Ａ」に対する左バイアス状態テーブルがテーブル７８１１によって示されており、「ＮＳ＝Ａ」に対する右バイアス状態テーブルがテーブル７８１２によって示されている。左バイアスと右バイアスＮＦＡ状態の両方に対する状態依存ベクトルは同じであり、遷移を起こす受け取られた入力記号は、左バイアス対右バイアスＮＦＡ状態に対して異なっている。従って、状態は、左バイアス（ＬＢ）、右バイアス（ＲＢ）、開始状態、受理状態、ＳＤＶ、並びにこの状態が入力ストリングの評価中にこの状態を含むＮＦＡに達した場合に取られるアクションのような特性によって表すことができる。
【０１８５】
図７９ａは、状態に対する状態遷移論理（ＳＴＬ）を示している。ＳＴＬは、状態に対する次の状態を評価するのに使用される。状態に対してＳＴＬを使用して計算された次の状態は、ＮＦＡの現在の状態、ＳＤＶ、及び受け取られた記号、又は左バイアスＮＦＡ及び右バイアスＮＦＡそれぞれに対する記号に依存する。ＩｎＣｈａｒ入力は、「ｎ」がＮＦＡのＲＥで記号の数を表す整数である場合、記号決定論理、ブロック７９００を使用して記号「Ｓ１」から「Ｓｎ」に対して評価される。「ｎ」の選択は、サーチプロセッサを使用することができるアプリケーションのＮＦＡに対して一般的にどのくらいの数の状態が予想されるかに依存する。従って、「ｎ」は、８、１６、３２、又はあらゆる他の整数になるように選択することができる。記号検出のための最も簡単なオペレーションは、入力記号を「Ｓ１」から「Ｓｎ」までと比較することである。記号検出論理の出力は、個々の検出信号「ＲＳ１」から「ＲＳｎ」を含む受信記号ベクトル（ＲＳＶ）と呼ばれる。ＬＢ／ＲＢ＃は、左バイアスＮＦＡ又は右バイアスＮＦＡが定められるかを指示する信号（すなわち、左バイアス又は右バイアス信号）である。ＬＢ／ＲＢ＃は、状態遷移を評価する場合に入力として使用される。状態に対するＳＴＬは、左バイアス並びに右バイアスＮＦＡ構成の作成をサポートする。ＬＢ／ＲＢ＃信号は、ＳＴＬが左バイアス又は右バイアス構成を達成するか否かを制御する。「Ｖ１」から「Ｖｎ」の形式での状態依存ベクトルはまた、ＳＴＬへの入力として利用される。ＳＤＶは、図７９ｂに示す状態論理ブロックに対する基礎としてＳＴＬを使用して任意の「ｎ」−状態ＮＦＡの作成を可能にする。現在の状態は、「Ｑ１」から「Ｑｎ」を含む現在の状態ベクトル（ＣＳＶ）としてＳＴＬに送り込まれる。ＳＴＬは、次の入力クロック信号で、状態メモリ、ブロック７９０２で更新される信号「Ｎ１」を生成する。「Ｎ１」は、Ｎ１＝（（Ｖ１  ａｎｄ  Ｑ１  ａｎｄ  （ＬＢ／ＲＢ＃ＯＲ  ＲＳ１））  ＯＲ  （Ｖ２  ａｎｄ  Ｑ２  ａｎｄ  （ＬＢ／ＲＢ＃ＯＲ  ＲＳ２））  ＯＲ．．．（Ｖｎ  ａｎｄ  Ｑｎ  ａｎｄ  （ＬＢ／ＲＢ＃ＯＲ  ＲＳｎ））  ＡＮＤ  （（ＮＯＴ  ＬＢ／ＲＢ＃ＯＲ  ＲＳ１）として論理的に表される。別の状態「ｎ」に対する類似の信号は、ＯＲゲート、７９１５に送り込まれる信号７９０１が、（（ＮＯＴ  ＬＢ／ＲＢ＃ＯＲ  ＲＳ１）から（（ＮＯＴ  ＬＢ／ＲＢ＃ＯＲ  ＲＳｎ）にノード「Ｎ１」論理の最後の項を変える「ｎ」番目の記号検出論理の出力である「ＲＳｎ」になることを除いて、類似の論理によって生成される。状態メモリ、７９０２は、以下に説明する状態論理ブロックにシングルビットフリップフロップとして実装される。
【０１８６】
図７９ｂは、状態論理ブロック（ＳＬＢ）を示している。ＳＬＢは、ＳＴＬ、７９０６、初期論理、７９０８、状態メモリ、７９１０、受理状態検出論理、７９１１、この状態に対するＳＤＶ、７９０７、開始フラグ、７９０９、受理フラグ、７９１２、この状態に関連したタグ、７９１９、又はこの状態に関連したアクション、７９１３、又は以上の組合せを含む。ＳＬＢは、ランタイムにＳＬＢでの達成されたＦＳＡの状態を構成するために以下に説明するクラスター構成コントローラ、８６０７、及びグローバル構成コントローラ、８５０５と共に働くアプリケーション状態コントローラ、ブロック８０００を使用してプログラムすることができるＳＤＶ、開始フラグ、受理フラグ、タグフィールド、アクションフィールド、左バイアス又は右バイアス信号、及び状態メモリ、又はこれらの組合せの各々に対するプログラマブルストレージを提供する。ＳＬＢは、次の状態を決めるためにＳＴＬに送り込まれる現在の状態ベクトル及び受信記号ベクトルを受け取る。任意のＮＦＡの状態の実現は、状態に対するＳＤＶを更新し、ＮＦＡが検出してアクションを行う記号を選択することによって行われる。更に、各状態は、開始及び受理フラグによって開始状態又は受理状態又は組合せ又は開始又は受理状態のいずれでもないとしてマーク付けされる。初期論理ブロック、７９０８は、開始状態から初期化するか又は更新からクリア又は無効にし、又は別の状態値を直接ロードする必要があるかを指示する制御信号を受け取り、又は以下に説明するカウンタ値を検出することができ、かつ遷移を受理するか否かなどを決めることができる。初期ブロックは、ＳＴＬ評価を無効にし、状態をアクティブ又は非アクティブにするように状態メモリを設定するために使用することができる。ＳＴＬ、７９０６は、状態メモリが、独立した機能ブロック、７９１０としてＳＬＢに含まれる以外は図７９ａに示すような機能を提供する。状態メモリ、７９１０は、シングルビットフリップフロップとして実装することができる。状態メモリが設定された場合、これは、状態がアクティブであり、それ以外は状態が非アクティブであることを示している。受理検出論理７９１１は、この状態がアクティブ化されているか、及びこれが達成されたＮＦＡの受理状態であるかを検出する。状態が受理状態である場合、及びこの状態がＮＦＡ評価中に達せられた場合、関連のアクション又はタグがＡ１信号、７９１６でＳＬＢの出力として供給され、受理状態アクティブ化が、Ｍ１、７９１７上で示される。アクション又はタグは、状態アクティブ化時に並びに状態がＮＦＡの実装によって要求されるように受理状態でない場合に、ＳＬＢから出力されるように設定される。それによってアクション又はタグが１つの状態への所定の遷移に関連付けられる場合に、タグ付けＮＦＡ実装に対してＳＬＢを使用することができるようなる。
【０１８７】
以下に説明するように、「ｎ」状態がサーチエンジンでサポートされる場合、各ＳＬＢは、フリップフロップ、開始フラグ、及び受理フラグに割り当てられる２ビット、ＬＢ／ＲＢ＃の１ビット、ｍ−ビットアクションストレージ、及びｔ−ビットタグストレージから構成されるレジスタとして記憶することができる「ｎ」ビットＳＤＶを必要とする。従って、ｎ＝１６及びｍ＝６及びｔ＝４である場合、ＳＬＢに対して使用される総ストレージは、１つの状態に対して４バイトより僅かに小さい２９ビットレジスタに等しくなる。
【０１８８】
図８０は、ＮＦＡベースのサーチエンジンを示している。サーチエンジンは、ＳＬＢ１からＳＬＢｎまでの「ｎ」個のＳＬＢ、ブロック８００２、アプリケーション状態制御、ブロック８０００、アプリケーション状態メモリ、ブロック８００１、カウンタ、ブロック８００４、マッチング論理及び受理状態検出、ブロック８００５、ＦＳＡ拡張論理、ブロック８００６、記号検出アレイ、ブロック８００７、又はパターン置換制御、ブロック８００８、又は以上の組合せを含むことができ、ランタイム適応ＮＦＡサーチエンジンを生成する。１つのサーチエンジンに含まれる状態の数は、全ての整数「ｎ」とすることができる。例えば、「ｎ」は、８、１６、又は３２、又はあらゆる他の整数とすることができる。「ｎ」記号までの正規表現は、サーチエンジンによって完全にサポートされる。ＲＥから生じる状態の数がサーチエンジンによってサポートされるものより多い場合、より大きなＲＥを処理するために、ＦＳＡ拡張論理、ブロック８００６を使用して２つ又はそれよりも多くのサーチエンジンを接続させることができる。ＲＥの状態の数が「ｎ」より小さい場合、サーチエンジンは、１つのサーチエンジンに対して複数のＮＦＡを可能にする。これは、１つのサーチエンジンに対して複数のＲＥを可能にしない解決法とは異なり、サーチエンジンリソースの効率的な利用をもたらすことができる。Ｍを「ｎ」より小さいあらゆる整数であるとすると、１つのサーチエンジンに対してサポートすることができる「Ｍ」個の規則が存在する場合がある。例えば、「Ｍ」が４で「ｎ」が１６である場合、同時評価に対してサーチエンジンに４つのＲＥ規則を構成することができる。アプリケーション状態メモリに記憶することができるより多くの規則が存在する場合があるが、「Ｍ」は、評価のためにＳＬＢにも同時に構成することができる数である。アプリケーション状態メモリに記憶される規則及びアプリケーションコンテキストの総数は、１つのサーチエンジンに対して割り当てられたメモリ量の関数であり、「ｎ」又は「Ｍ」に制限されない。ＳＬＢは、図７９ｂに示す状態論理ブロックである。サーチエンジンに含まれるＳＬＢの数は、サーチエンジンによってサポートされる状態の数と同じである。
【０１８９】
サーチエンジンは、入力として、ＦＳＡ制御「ＦＳＡＣｔｒｌ」及びデータバス「ＦＳＡｄａｔａ」、バス上の入力記号「ＩＮＣｈａｒ」、及びバス上の置換制御及びデータ「ＳｕｂＢｕｓ」を受け取る。要求することができる電力、クロック、及びリセットなどのような他の標準的な入力は、説明を複雑にしないように本発明の開示におけるこの図面又は他の図面には示していない。このような信号の使用は、基本ハードウエア設計テキストブックに十分に説明されており、当業者によって良く理解されている。例示するように入力に関して説明するが、情報は、多重バス又は他の並列バスで受信することができ、従って、この説明は、本発明の制限として捉えるべきではない。これらの信号又はバスは、説明を容易にするために示されている。サーチエンジンはまた、ＨＴＴＰ、ＳＭＴＰ、及びＸＭＬなどのような複数のアプリケーションに対してアプリケーションに特定のＮＦＡ規則コンテキストを保持するアプリケーション状態メモリを含む。アプリケーション状態メモリは、各アプリケーションＮＦＡに対するＳＤＶ、初期状態ベクトル（ＩＳＶ）、受理状態ベクトル（ＡＳＶ）、ＬＢ／ＲＢ＃、アクション／タグ、及び規則の数などのような情報を保持する。アプリケーション状態制御、ブロック８０００は、以下に説明するサーチプロセッサのグローバル構成コントローラによって使用され、サポートされるアプリケーションの各々に対してアプリケーション状態メモリに適切なＮＦＡパラメータを構成する。次に、構成コントローラは、特定のアプリケーションのためのサーチを実行するためにそのアプリケーションＮＦＡを使用してＳＬＢをプログラムするようにアプリケーション状態制御に指示することができる。ＲＥに対する状態の数が合わせてサーチエンジンによってサポートされる数より小さい場合にサーチエンジンに１つのアプリケーションに対して複数のＲＥ又は規則が存在することができる。アプリケーション状態制御は、アプリケーション状態メモリから適切なアプリケーションコンテキストを検索することができ、アプリケーションに対してプログラムされたＮＦＡを実装するために適切な情報によって各ＳＬＢをプログラムすることができる。各ＳＬＢから成るパラメータは、ＳＤＶ、開始状態、受理状態、ＬＢ／ＲＢ＃、アクション又はタグを含む。アプリケーション状態コントローラはまた、アプリケーション状態メモリから検索されたＮＦＡのための記号を使用して、記号検出アレイ、ブロック８００７を構成する。「ＩｎＣｈａｒ」で受信した入力記号の処理をサーチエンジンが開始することができる前に、適切なカウンタ初期化が、ＮＦＡのためのアプリケーション状態制御によって行われる。ＳＬＢの状態出力は、ＣＳＶを形成するために共に連結される。ＲＳＶは、記号検出アレイからの出力である。ＲＳＶ及びＣＳＶは、各ＳＬＢに送り込まれる。ＳＬＢは、次に、受理状態に達するか又は入力ストリングがＮＦＡによって理解されたものか又はＮＦＡによって拒否されたものかを示すヌル状態にＮＦＡが達するまで、その構成に基づいて状態遷移評価を行う。記号検出アレイ、８００７は、最も簡単な形式で比較器とすることができるコンピューテーションエンジンのアレイと、探索される記号のためのメモリとを含む。「ＩｎＣｈａｒ」で受信した入力記号は、記号の全てと同時に比較され、探索される記号を受信した記号に符合した場合にＲＳＶの適切な信号が設定される。記号検出アレイは、カウンタブロック、８００４と対話し、特定の遷移を取る前に記号の出現を検出する規則を有効にすることができる。各ＳＬＢからの受理状態及びアクションフィールドは、マッチング及び受理状態検出論理、ブロック８００５によって使用され、ＮＦＡが受理状態に達しているかを検出し、以下に説明するグローバル構成コントローラに供給するためにＮＦＡのためのアクションを登録する。アクション又はタグは、ＲＥ規則が符合しているという指示を提供することができるが、入力ストリームで行われるアクションを提供することもできる。例えば、アクションは、入力ストリームが探索されるコンピュータウイルスを包含しており、従って、入力ストリームを例えば隔離しなくてはならないことを指示することができ、又は探索される機密情報がストリームの一部であることを検出することができ、従って、このストリームの送信を中止しなくてはならないなどを指示することができる。アクション又はタグは、以下に説明するグローバルコントローラ又は制御プロセッサを実行することができるコードルーチンへのポインタを含むことができる。コードルーチンは、規則の異なるセットを探索するためにサーチエンジンの構成を変えさせることができる。例えば、ＮＦＡが上述の規則セット＜ＩＮＩＴＩＡＬ＞の部分であり、更にこれがトリガされた場合、取られるアクションは、規則の＜Ｓ＿ＴＡＧ＞セットをアクティブ化し、例えば、＜ＩＮＩＴＩＡＬ＞セットを保留にしておくことである。当業者に明らかなように、マッチングされるＲＥ規則の結果として呼び出されたコードルーチンを使用して達成されるタスクの無数のタイプがある。関連のアクション又はタグが、これらのアクションを行うようにプログラムされている場合、ＮＦＡが受理状態に達した状態で、アクションの複雑なセットが入力ストリームに行われるか、又は他の制御機能がアクティブ化されるか、又は管理コードがアクティブ化されるかなどが行われる。マッチングの指示並びにマッチングされる規則ＩＤは、以下に説明するクラスターコントローラ、又はグローバル構成コントローラが適切なアクションを行うために、マッチング論理、８００５によってＭ−バス、８００９で出力される。アクション／タグ、８０１０は、関連のアクション又はタグを上述のようにアクションを行うことができるクラスターコントローラ又はグローバル構成コントローラに運ぶ。マッチング論理は、サーチエンジンによる「Ｍ」同時規則評価をサポートするように設定されている。
【０１９０】
イベントのある一定の数を状態遷移が起こる前に数える必要がある正規表現のインスタンスが存在する。例えば、ＲＥ規則は、［３、５］ａｂｃのように作成することができ、これは、ＲＥが、３から５の先頭の「ａ」次に「ｂ」次に「ｃ」が続くストリングを認識することを示している。入力ストリングが「ａａｂｃ」又は「ａｂｃ」又は「ａａａａａａｂｃ」である場合、これは、このＲＥによっては認識されないが、入力ストリング「ａａａａｂｃ」又は「ａａａｂｃ」又は「ａａａａａｂｃ」は、このＲＥによって認識される。このようなＲＥを有効にするために、カウンタブロック、８００４の部分としてサーチエンジンにカウンタが供給される。複数の規則実行を同時にサポートするためにカウンタの「Ｌ」セットが存在することができる。一部の規則がカウンタを使用する必要がない場合、これらのカウンタは、他の規則による使用に割り当てることができる。「Ｌ」の選択は、サーチエンジンリソースの利用可能度の関数とすることができ、アプリケーションのためのカウンタの必要性は、サーチエンジンを使用してサポートされる。サーチエンジンで構成されたＮＦＡがカウンタを必要とする場合に、カウンタ値は、ＳＬＢへのアプリケーション状態の構成でアプリケーション状態コントローラによって読み取られるか又はこれに書き込まれる。カウンタブロックからの出力は、必要な場合にカウンタ値の決定を行うためにＳＬＢに供給される。カウンタはまた、上述のようなある一定の数の時間に出現する記号のカウントに依存するＲＥ規則をサポートするために記号検出アレイによって読取り及び書き込まれる。カウンタブロックはまた、「Ｍ」規則の各々に対してストリングマッチングの開始及び終了を追跡するためにカウンタを保持する。開始及び終了カウントは、クラスターコントローラ又は制御プロセッサに入力ストリームでのストリングマッチングの開始マーカ及び入力ストリームでの終了マーカをそれぞれ示している。
【０１９１】
ＦＳＡ拡張論理、ブロック８００６は、ＲＥに対してサポートされるＮＦＡ状態の数を拡張するために使用される。従って、個々のサーチエンジンによってサポートされる「ｎ」よりも多い状態を必要とするＲＥがある場合、ＲＥをサポートするために複数のサーチエンジンを群に接続することができる。ＦＳＡ拡張論理ブロックは、群の他のサーチエンジンの状態をサーチエンジンが知ることを可能にする入力及び出力信号を提供する。信号は、制御信号としてＳＬＢに送り込まれるが、図７９ａ又は図７９ｂ又は図８０に明確には示されていない。
【０１９２】
サーチエンジンは、ＮＦＡを通してサーチエンジンが進行する時に入力ストリングを置換するために使用されるパターンを保持することができるパターン置換制御、８００８を含むことができる。これは、良く理解されて文献に報告されている有限状態変換器機能をサポートすることができる。このブロックは、２つの連続のＣＳＶを追跡し、有効にされた遷移及び受信した入力ストリングで置換するために生成される関連の変換記号に対して判断することによってＮＦＡを通じて行われる遷移を評価することができる。
【０１９３】
「ｎ＝１６」状態を有するサーチエンジンは、Ｍ＝４である場合に、ＳＬＢのための１６×４＝６４バイトのストレージ容量、加えて１６記号のための１６バイト、及びＭ−カウンタを必要とすることになり、各カウンタが１６ビットである場合は、カウンタのために８バイトになる。従って、以下に説明するアプリケーション状態コンテキストに必要な総ストレージ容量は、ｎ＝１６に対して約９０バイトである。
【０１９４】
図８１は、アプリケーション状態メモリの例示的な構成を示している。アプリケーション状態メモリ、８１００は、図８０のブロック８００１と同じである。図８１は、様々なアプリケーションに対するアプリケーション状態コンテキストを記憶するようにメモリを編成する方法を示している。アプリケーション状態コンテキストは、ＳＤＶ、開始状態、受理状態、ＮＦＡ評価のための記号、及び状態に対するアクション及びタグなどのような情報を含む。これは、アプリケーション状態制御がアプリケーション状態メモリから検索することができ、サーチエンジンのＳＬＢ、カウンタ、記号検出アレイ、及びマッチング検出及び受理検出論理ブロックを構成することができる情報である。情報はまた、この特定のＲＥがサーチエンジンによってサポートされる状態の数によってサポートされるものよりも大きいＲＥをサポートするために他のサーチエンジンブロックとのグループ化を必要とするか否かの指示を含むことができる。従って、コンテキストは、ＮＦＡを評価するのに必要な状態情報の全てを運ぶ。アプリケーション状態メモリに記憶することができるアプリケーション状態コンテキストの数「Ｎ」は、純粋に１つのサーチエンジンに割り当てられたアプリケーション状態メモリの容量と１つのコンテキスト当たり要求されるストレージの関数である。「ｎ＝１６」であるとすると、１つのサーチエンジンに割り当てられたストレージの容量が５１２バイトである場合、５アプリケーションコンテキストをアプリケーション状態コンテキストに記憶することができる。１ＫＢのメモリによって、１０アプリケーションコンテキストを記憶することができる。しかし、１つのサーチエンジン当たりの状態の数が８である場合、コンテキストの数は、１６状態の場合に２倍まで増すことができる。
【０１９５】
アプリケーション状態メモリ、８１００に記憶された「Ｎ」アプリケーション状態コンテキスト（ＡＳＣ）、８１０１、８１０２、８１０３が存在する。ＡＳＣ１、８１０１は、アンチ−スパムアプリケーションのためのＲＥ規則の１つとして示されているが、ＡＳＣｎ、８１０３は、ＸＭＬアプリケーションのためのＲＥ規則の１つとして示されている。各ＡＳＣは、ＮＦＡパラメータ、８１０４、及びＳＬＢパラメータ、８１０５に更に編成することができる。ＳＬＢパラメータは、特定のＳＬＢに適用される「開始フラグ」、「受理フラグ」、「ＳＤＶ」、及び「アクション」などのような状態に特定のパラメータである。これらは、単純に４バイト記憶域とすることができる。同様に、ＮＦＡパラメータは、記号、１つのＮＦＡ当たりの規則の数、及び置換テーブルなどのような全ＮＦＡに適用可能なパラメータである。ＲＢ／ＬＢ情報は、全ＮＦＡに対して共通とすることができ、又は１つの状態毎に記憶することができる。
【０１９６】
ＡＳＣの利点は、以下に説明する制御プロセッサ又はグローバル構成コントローラ又はクラスターコントローラが、サーチエンジンに現在構成されているものとは異なるアプリケーションに対して規則を適用する必要がある場合に、各サーチエンジンのアプリケーション状態制御を通知することによって新しいアプリケーションのための規則への迅速な遷移を行うことができることである。従って、ＲＥの大きな数の評価を同時に行うのに使用することができるサーチエンジンのアレイでは、構成情報をグローバルメモリ又は外部システムメモリから検索して各サーチエンジンに供給すべきである場合とは異なり、アプリケーションコンテキストへのスイッチングを迅速に行うことができる。ｎ＝１６状態の例では、２０から２５クロック内で各サーチエンジンに対するアプリケーションコンテキストを切り換えることができる。１０００ＲＥ規則サーチを行うのに同時に使用される１０００サーチエンジンがある場合、及びアプリケーションベースのコンテキストをグローバルメモリ又は外部メモリからその各々にロードする必要がある場合、潜在的に２０、０００から２５、０００クロックサイクルを使用することになり、これは、本発明のように１つのサーチエンジンにつきＡＳＣを使用するのに比べて、サーチプロセッサの性能をかなり低下させてしまう可能性がある。
【０１９７】
以上の説明は、様々なアプリケーションに関してのものであるが、異なるＡＳＣで同じアプリケーションに対する様々なＲＥを使用することができる。それによってサーチプロセッサは、アプリケーションに対してＲＥのより大きな数をサポートすることができるようになるが、ＲＥの全てを入力ストリームに適用しなくてはならない場合に性能に影響を与えることになる。このような場合、入力ストリームは、実際にストリームにアプリケーションに対する新しいＲＥを適用するＡＳＣを切り換える度にサーチエンジンに複数回表示される。ＡＳＣの別の使用モデルは、同じアプリケーションの入れ子ＲＥ規則に対するものにすることができる。例えば、図７５に示すように、ＲＥ規則は、入れ子規則であり、制限されたセットだけが並行して入力ストリームに適用される。このような場合、入れ子の各レベルからの１つの規則は、個々のＡＳＣで設定することができ、プログラムされたアクションは、現在の規則が受理状態に達した場合にコンテキストを別のＡＳＣに切り換える必要があることを指示することができる。例えば、Ｒ９、Ｒ７、及びＲ４は、各々、初期コンテキストとして使用される規則Ｒ９と共に３つの独立したＡＳＣで記憶される。ここで入力ストリングがＲ９に符合する場合、コンテキストは、次に、「ＦＯＮＴ」ストリングを捜す規則Ｒ７になるように切り換えられる。Ｒ７が受理状態に達した場合、コンテキストがＲ４に切り換えられる等々である。従って、あらゆる所定のアプリケーションに対する入れ子ＲＥ規則セットは、本発明のサーチエンジンで容易にサポートすることができる。従って、上述のＮＦＡベースサーチエンジンの様々なランタイム構成可能及びプログラマブル特徴を使用して、ランタイム適応有限状態オートマトンアーキテクチャを作成することができる。
【０１９８】
上述のように、正規表現は公知の方法を使用してＮＦＡ及びＤＦＡに変換することができる。更に、同じＲＥに対するＮＦＡ及びＤＦＡが両方とも同等であることは公知である。しかし、上述のようにＮＦＡ対ＤＦＡの性能メトリクスの点で違いがある。ＤＦＡは、ＮＦＡに比べて最悪の場合に状態に対する大容量ストレージ要件を結果として生じることがある。しかし、実際にはそのような場合はなく、何度もＤＦＡはＮＦＡより少ない状態を有する可能性がある。従って、ＮＦＡベースのサーチエンジンのみを使用するコンテンツサーチプロセッサは、最も効率的な実装を実現できない。正規表現のセットを評価するためにＮＦＡとＤＦＡの組合せを使用することができる。更に、ＤＦＡ実装がＮＦＡよりも効率的である場合、純粋にＮＦＡを使用するものに比べて単一の統合サーチプロセッサでより多くの規則をサポートすることができる。ＤＦＡは、１つの状態から複数の状態への遷移を有することができ、各遷移は異なる入力記号で行われる。従って、状態を処理するために、複数の記号を検出し、入力記号に基づいて適切な遷移を選択すべきである。ＤＦＡでは、１つの状態のみがＤＦＡの決定性性質によってある時間にアクティブである。従って、図７６ｃに示されているもののようなＤＦＡを選択することができ、ここでＤＦＡの状態の数は、ＮＦＡの状態の数より少ないか又はこれと同等であり、１つの状態からの遷移の数も制限されており、この場合２つの上限であり、評価のためのこれらのプログラムは、図８２に示すようなＤＦＡベースサーチエンジンを使用する。ＤＦＡの状態の数がＤＦＡ命令及び状態フローメモリに保持されるものより多くない限り、以下に説明するように、ＤＦＡは、評価のためにＮＦＡの代わりに選択される。
【０１９９】
図８２は、ＤＦＡベースサーチエンジンを示している。ＤＦＡサーチエンジンは、ランタイム適応ＤＦＡサーチエンジンを生成するために、ＤＦＡオペレーションエンジン、８２０４、ＤＦＡ状態コントローラ、８２０３、ＤＦＡコンテキスト制御、８２００、ＤＦＡ命令及び状態フローメモリ、８２０１、カウンタ、８２０２、ＤＦＡ拡張論理、８２０８、出現カウンタ、８２０６、最小及び最大カウンタ、８２０７、又はパターン置換制御、８２０５、又は以上の組合せを含む。ＤＦＡサーチエンジンは、ＤＦＡ拡張論理、８２０８を使用してＦＳＡの拡張を生成するための機能を有し、これは、図８０のＦＳＡ拡張論理、８００６に類似の機能を提供する。従って、１つのＤＦＡサーチエンジンによってサポートされるより大きなＤＦＡを生じるＲＥをサポートするために、複数のＤＦＡブロックを共にグループ化することができる。ＤＦＡオペレーションエンジンは、目的とされたＤＦＡに特定のオペレーションの実行をサポートする小さなプロセッサであるエンジンである。ＤＦＡオペレーションのタイプの実施例は、図８３に示されている。ＤＦＡ状態コントローラ、８２０３は、クラスターコントローラ又はグローバル構成コントローラからコマンドを受け取り、ＤＦＡフローを形成するＤＦＡオペレーションを使用する命令シーケンスによって、命令メモリ及び状態フローメモリ、８２０１をプログラムする。ＤＦＡコンテキストコントローラ、８２００は、現在実行されているアプリケーション及びＤＦＡコンテキストを制御する。ＤＦＡサーチエンジンは、図８０のＮＦＡサーチエンジンに類似のアプリケーション状態コンテキストをサポートし、これらは、命令及び状態フローメモリ、８２０１に記憶されている。ＤＦＡに対するアプリケーションコンテキストは、主に各アプリケーションに対するＲＥ規則のための命令シーケンスから構成される。ＮＦＡサーチエンジンの以上の説明のように、ＤＦＡサーチエンジンも、同じアプリケーションに対して複数のＲＥを保持することができ、それによってＮＦＡに対して上述したようにＲＥ入れ子をサポートする。ＤＦＡオペレーションエンジン、８２０４は、本質的には、以下に説明する実施例のように全てのＤＦＡオペレーションをサポートするスカラー処理エンジンである。ＤＦＡオペレーションエンジンは、複数の命令を同時に処理することができるマルチ−ウェイスーパースカラーアーキテクチャとすることができる。マルチ−ウェイ命令は、本質的には、受け取られた入力記号に基づいて複数の次の状態の１つにＤＦＡを導く状態遷移評価命令とすることができる。ＤＦＡオペレーションエンジンが、１つの状態当たり高々２つの遷移を有するＤＦＡをサポートするために２つの同時評価をサポートする場合、各ＲＥは、このような要件を満たすためにＤＦＡに変換することができ、又はＮＦＡ又はＤＦＡとしてＲＥを実装するコストを比較し、そのＲＥをコンテンツサーチプロセッサの適切なサーチエンジンにマップすることによってコスト的に最も低い実施を選択することができる。ＤＦＡオペレーションエンジンは、一般的に、ＤＦＡ命令フローが状態の知識を保持するので状態情報を保存しない。更に、ＤＦＡオペレーションエンジンは、同じエンジンからの各入り記号を評価し、従って、ＮＦＡサーチエンジンとは異なり複数の記号検出アレイのハードウエアオーバーヘッドを有することがない。それによってＤＦＡサーチエンジンは、装置利用数の違いが５回までに達するＮＦＡサーチエンジンに比べて、非常に廉価に実装することができる。ＤＦＡコンテキストコントローラ、８２００は、コンテキスト及びコンテキスト内の命令のポインタを命令メモリに提供し、ＤＦＡオペレーションエンジン、８２０４によって評価される命令ベクトルを検索する。命令ベクトルは、命令又はオペレーション、予想される記号、次の状態ポインタ、デフォルト状態、又は制御情報、又は以上の組合せから構成される。命令ベクトルは、マルチ−ウェイアーキテクチャがＤＦＡサーチエンジンに対して選択された場合に、複数の遷移のための情報を包含することができる。ＤＦＡオペレーションエンジンは、受け取られた／入力記号に対して命令を実行又は評価し、次に遷移してその評価を開始する状態に関する決定を行う。受信した記号と予想されるＤＦＡオペレーションの間にマッチングがない場合、デフォルト状態へのフロー遷移は、開始状態又はエラー状態とすることができる。ＤＦＡオペレーションエンジンが受理状態に達した場合、適切なマッチング信号が、この受理状態に関連したタグ又はアクションと共にＤＦＡオペレーションエンジンによってＭ−バスで生成される。この情報は、入力に対して続くアクションの次の進路を決めるクラスターコントローラ又はグローバル構成コントローラによって処理される。ＤＦＡオペレーションエンジンは、様々なＤＦＡオペレーションをサポートするのに使用される出現カウンタ、８２０６、最小及び最大カウンタ、８２０７、及び文字カウンタ、８２０２へのアクセスを有する。文字カウンタは、ＤＦＡ規則に符合するストリングの開始及び終了にマーク付けするのに使用される。パターン置換制御、ブロック８２０５、及びＤＦＡ拡張論理、ブロック８２０８は、図８０にそれぞれ示されたブロック８００８及び８００６について説明したものに類似の機能を提供する。
【０２００】
図８３は、例示的なＤＦＡオペレーションを示している。オペレーションは、モデル共通正規表現オペレータに定められている。ＤＦＡオペレーションの数及びタイプは、本特許の教示から逸脱することなく例示されるものとは異なるものにすることができる。例えば、例示されたオペレーション「ＥＱ  Ｘ」は、受け取られた記号が「Ｘ」に等しいかを評価するために使用することができる。評価が肯定の答えを生じた場合、この評価を要求する遷移が行われる。例示されるＤＦＡオペレーションは、ＤＦＡオペレーションエンジン、８２０４によって処理又は評価される命令を形成する。ＤＦＡ命令は、図８３に示されているものよりも多いフィールドを含む。ＤＦＡ命令は、図８３に示すようなＤＦＡオペレーション、予想される記号、命令の成功した評価において分岐するためのターゲット命令アドレス、評価が成功しなかった場合の他のターゲット命令アドレス、又はカウンタの設定のような他の制御フィールド、カウンタの検索、受理状態フラグ、アクション、又はタグの出力など、又は以上の組合せのようなＤＦＡオペレーションを含むことができる。評価される記号及びターゲット命令アドレスの数は、サポートされる並行遷移の数に依存することになる。ＤＦＡオペレーションエンジンが２方向スーパースカラーである場合、記号の数は２になり、デフォルトアドレスの他にこれらに関連した２つのターゲットアドレスが存在することになる。ＤＦＡオペレーションの各命令は、ＤＦＡの状態からの遷移の評価を表すことになる。従って、ブランチがターゲット命令アドレスに向けられた場合、これがＤＦＡが初期又は開始状態で再開始される場合にエラー状態でない限り、ターゲットの命令は、一般的に、ＤＦＡが遷移する状態の１つになる。例えば、図８３に示されているＤＦＡオペレーションの一部を使用して、以下の図７６ｃに示されているＤＦＡを符号化することができる。以下の実施例は、ＤＦＡオペレーションに対するフォーマットを制限するものではなく、ＤＦＡサーチエンジンオペレーションをより明確に説明する例証目的に使用される。
【０２０１】
（表）
2009523275.tif 000003
【０２０２】
上述の命令のフィールドは、ｏｐ１（第１オペレーション）、Ｓ１（記号１）、Ｔ１（ＩＰターゲット１）、ｏｐ２（第２オペレーション）、Ｓ２（記号２）、Ｔ２（ＩＰターゲット２）、及び他のフィールド（デフォルトターゲット、初期開始カウント、初期終了カウント、アクション、及び他のタグなど）である。図７６ｃに示すＤＦＡの評価において、このようなコードは、そこから各命令が検索され処理されるＤＦＡ命令及び状態フローメモリに記憶することができる。ヘッダ「状態／ＩＰ」を有する列は、ＤＦＡの対応する状態及び対応する命令に対する命令ポインタ（ＩＰ）値を表している。適切なカウンタ及びエラー状態処理などをＤＦＡコードが設定する前に実行する必要があるプリアンブルコードが示されている。しかし、上述の実施例の例示では、開始状態「Ａ」及びそのＩＰは、入力記号がＤＦＡによって予想されるものでない場合にデフォルトターゲットとして使用される。ＤＦＡ評価は、ＩＰ＝０で開始状態で始まる。ＩＰ＝０での命令はまずフェッチされ、入力記号に対して評価される。入力記号が「ｙ」である場合、ＤＦＡは、状態「Ａ」、７６１２から状態「Ｃ」、７６１４に遷移するように予想されるが、受け取られた記号が「ｘ」である場合、遷移は状態「Ｂ」、７６１３への遷移である。入力記号が「ｙ」であると仮定すると、第１命令の命令評価は、「ｙ」と記号２（Ｓ２）の比較の確認をもたらし、従って、２の関連ターゲットＩＰは、次の記号に対してフェッチ及び評価するために次の命令として選択される。ＩＰ＝２は、図７６ｃのＤＦＡによって定められた遷移になると予想される状態「Ｃ」に対応する。ＤＦＡサーチエンジンは、ここで、ＩＰ＝２で命令を処理し、命令によって定められるように適切なフローを辿る。実行が、受理状態「Ｄ」、７６１５に対応するＩＰ＝３に達した場合、ＤＦＡサーチエンジンは、現在のＤＦＡに符合するストリングが見つかったことを示すために、マッチングフラグ及び関連のタグ又はアクションを出力する。ＤＦＡエンジンはまた、ストリングマッチングが入力ストリームで終わる場所を示すために終了カウントを記録する。上記に例示されたもののようなマルチ−ウェイ実行を備えたＤＦＡエンジンは、同時に実行される複数のオペレーションにプリファレンスを提供することができ、第１オペレーションの肯定結果が他のオペレーションよりも上位のプリファレンスを獲得することができる。一般的に、ＤＦＡは決定性であるので、命令の列挙されたオペレーションの１つのみが肯定結果をもたらさなくてはならないが、このような機構を実行の曖昧性を防ぐために作成することができる。
【０２０３】
上述の実施例を通して、オペレーションの２つのタイプのみを使用しているが、図８３に示すようにＤＦＡオペレーションエンジンを実行することができる多くの他のオペレーションが存在する。ＲＡＮＧＥオペレーションを定めることができ、それによって、範囲の下限を示す「Ｘ」と範囲の上限を示す「Ｙ」とを有する２つの記号に対して、ＡＳＣＩＩコードの範囲に入る記号「Ｓ」を探索することができる。この場合の「Ｘ」及び「Ｙ」は、８ビット又は１６ビットあらゆる拡張ＡＳＣＩＩコードとすることができる。同様に、オペレーションのセットは、ある条件が満たされるまで又はある記号の出現のある数が発生した場合に、所定の状態でＤＦＡコードをループさせることができるように定められている。当業者に明らかであるように、本発明の範囲に入るこれらのオペレーションを達成するための他の方法が存在する。
【０２０４】
図８２のＤＦＡベースのサーチエンジンは、本質的には、図８３に示すような目標とされる命令を操作するアプリケーションに特定のプロセッサである。ＤＦＡサーチエンジンは、ＤＦＡコンテキスト制御、８２００にＤＦＡ命令及び状態フローメモリ、８２０１から命令をフェッチさせることによって作動し、命令は、命令によって指示されるオペレーションを実行することによってＤＦＡオペレーションエンジン、８２０４によって評価され、これは、一般的に、命令によって予想されるものに対して「ＩｎＣｈａｒ」で受け取られた入力記号を評価する段階を包含することができ、評価の結果に基づいてフェッチする次の命令を決めることができる。ＤＦＡオペレーションエンジン、８２０４は、次の命令に関する情報をＤＦＡ状態及びコンテキスト制御ブロック８２０３及び８２００に提供し、次にこのブロックが、次の命令アドレスをＤＦＡ命令及び状態フローメモリ、８２０１に供給する。このプロセッサの性能は、高度処理技術を使用する従来のマイクロプロセッサの状態と同じレベル又はそれより高いレベルに達することができ、それによって１Ｇｂｐｓから１０Ｇｂｐｓ及びこれより高い回線速度性能を達成することができる。従って、上述のＤＦＡベースのサーチエンジンの様々なランタイム構成可能及びプログラマブル特徴を使用してランタイム適応有限状態オートマトンアーキテクチャを作成することができる。
【０２０５】
図８２に示されているＤＦＡサーチエンジンは、サポートされるＤＦＡオペレーション及びマルチ−ウェイ実行サポートに応じて、今日のＦＰＧＡには５０から２００の論理要素で実装することができる。命令及びフロー状態メモリは、サポートされるアプリケーションコンテキストの数及びサポートする必要がある状態の数に応じて、１つのサーチエンジン当たり５１２バイト又はそれ未満とすることができる。それによって、１千を超えるＤＦＡを２０万論理要素に近づく単一のＦＰＧＡに含むことができる。従って、ＤＦＡ及びＮＦＡベースコンテンツサーチプロセッサは、ＦＰＧＡで達成可能なクロック速度で作動される１つのＦＰＧＡで千から２千のＲＥをサポートする今日の最高クラスＦＰＧＡに実装することができる。複数のアプリケーション規則が考慮に入れられる場合、規則の数千の数を引き出すことのできるＦＰＧＡフォーマットでＲＥのより多い数をサポートすることができる。本発明は、従って、ＡＳＩＣ、ＡＳＳＰ、及び集積回路の他の形式の他にＦＰＧＡを使用するコンテンツサーチ解決法を作成することをサポートし、これは、製品化までの時間が重要であり、ボリュームがＡＳＩＣ、ＡＳＳＰ、又は他のＩＣを作成する経費に十分見合うほど高くない場合に有用になる。本発明のＮＦＡ及びＤＦＡサーチエンジンが、今日の最先端マイクロプロセッサに使用される９０ｎｍ又は６５ｎｍのような最高クラスの処理技術で達成される場合、これらのエンジンの性能は、同じか又はより高い周波数を取ることができ、従って、今日のマイクロプロセッサとは異なる正規表現の高速回線速度処理を可能にすることができる。上述のように数百ＮＦＡ又はＤＦＡを評価するための４ＧＨｚプロセッサの１００Ｍｂｐｓ性能より下のものとは異なり、本発明のＮＦＡ及びＤＦＡサーチエンジンを備えた千ＲＥコンテンツサーチプロセッサは、先端マイクロプロセッサと同じクロック速度を達成することができ、単一の文字又は複数の文字とすることができる１クロック当たり約１入力記号を評価することができ、それによって１０Ｇｂｐｓ性能を超えるものを達成することができる。更に、９０ｎｍ、６５ｎｍ、及びそれよりも小さな小型処理技術によって装置密度が増すにつれて、ＩＣに組み込むことのできるＲＥの数は、ＮＦＡとＤＦＡの混合の選択に応じて数千にすることができるようなる。コンテンツサーチプロセッサでＮＦＡとＤＦＡの混合を使用することによって、チップに両方の異なる数を提供する一連の製品を作成することができるようなり、例えば、１つの製品は２５％ＤＦＡと７５％ＮＦＡを提供することができ、別の製品は、例えば、７５％ＤＦＡと２５％ＮＦＡを提供することができる。従って、変化する市場の必要性に応じることができるようなる。アプリケーションが単一のコンテンツサーチプロセッサに供給されるより多くのＲＥを必要とする場合、ＲＥの数を増すために複数のプロセッサを同時に使用することができる。従って、一般的な使用に対して不経済にしてしまう複合ＤＦＡに必要とされるようにメモリ使用を増す必要なく数千のＲＥを要求するサーチアプリケーションをサポートするために本発明を使用することができる。
【０２０６】
図８４は、ランタイム適応サーチプロセッサを示している。このプロセッサは、制御プロセッサ及びスケジューラー、８４０２、コプロセッサ／ホストインタフェースコントローラ、８４０１、データ／パケットバッファ、８４０３、適応コントローラ、８４０４、ランタイム適応サーチプロセッサアレイ、８４０５、構成及びグローバルメモリ、８４０６、又はメモリコントローラ、８４０７、又は以上の組合せを含む。ランタイム適応サーチプロセッサは、本発明では、サーチプロセッサ又は適応サーチプロセッサ又はコンテンツサーチプロセッサ又はランタイム適応コンテンツサーチプロセッサと呼ぶこともある。同様に、ランタイム適応サーチプロセッサアレイは、本発明では、サーチプロセッサアレイと呼ぶこともある。サーチプロセッサは、図６８、図６９、及び図７０に類似の可変構成であり、これらの図のセキュリティプロセッサをサーチプロセッサで置換することによってシステムの複数のタイプに組み込むことができる。本発明のプロセッサから得られるサーチ解決法は、サーチプロセッサ、セキュリティプロセッサ、ＳＡＮプロトコルプロセッサ、ＴＣＰ／ＩＰプロセッサ、又はランタイム適応プロトコルプロセッサ、又は本特許に開示する様々な他のプロセッサ、又は以上の組合せを組み込むことができるラインカードを含む。ラインカード構成及びアーキテクチャは、特定のシステム及びアプリケーションに従って変えることができる。ラインカードアーキテクチャの３つのタイプ、ａ）フロー−スルー、ｂ）ルック−アサイド、ｃ）アクセラレータカードは、本特許のプロセッサに対する使用モデルを示すために本特許に例示されている。図６８、図６９、及び図７０は、セキュリティプロセッサベースのシステムを使用するこれらの構成を示しているが、上述のように本特許のサーチプロセッサ又は他のプロセッサに基づくことができる。ブロック６６１２及びブロック６６１３は、カード構成のこれらのタイプの２つを示している。これらのカードに示すセキュリティプロセッサは、本特許に開示するサーチプロセッサで置換することができる。プロセッサに組み込まれた機能に応じて作成することができるサーチプロセッサの様々な異なる変形が存在する。ブロック６６１４及びブロック６６１５は、セキュリティプロセッサをサーチプロセッサで置換することによってサーチプロセッサを示すために使用することができるセキュリティプロセッサの２つのバージョンを示している。ブロック６６１４は、ランタイム適応プロセッサに連結された少なくとも１つのコンテンツサーチ及び規則処理エンジンを含むセキュリティプロセッサを示している。本出願で開示するようにランタイム適応プロセッサをランタイム適応サーチプロセッサアレイ、８４０５で置換することによって類似のサーチプロセッサを作成することができる。このプロセッサは、同じ置換による図７１に示すものに類似しており、セキュリティプロセッサのコンテキスト内で上記に詳しく説明されている。ブロック６６１５は、ＴＣＰ／ＩＰプロセッサ又はプロトコルプロセッサに連結されたブロック６６１４のセキュリティプロセッサを示しており、セキュリティプロセッサとしてセキュリティノードで使用可能なより多くの機能を提供する。同様に、サーチプロセッサは、ＴＣＰ／ＩＰプロセッサ又はプロトコルプロセッサに連結することができ、ネットワーク要素又はクライアントノード又はサーバノードとしてネットワークで使用することができるコンテンツサーチプロセッサノードで使用可能なより多くの機能を提供する。このようなプロセッサは、インテリジェントネットワーキングを達成するためにアプリケーションアウェアネットワーキング機能を有効にするために使用することができる。サーチプロセッサの選択は、配備されるシステム、システムによってサポートされる機能、解決法コスト、性能要件、又は他の理由、又はこれらの組合せに依存することになる。サーチプロセッサは、サーチプロセッサに記憶されているものを超えた付加的な規則、又は他の中間データ又はパケット又は他の情報を必要な場合に記憶するのに使用することができる外部メモリ、ブロック６６１６に接続するために１つ又はそれよりも多くのポートを使用することができ、サーチ処理に必要な様々な機能を実行することができる。メモリは、ＤＲＡＭ、ＳＤＲＡＭ、「ＤＤＲ  ＤＲＡＭ」、「ＤＤＲＩＩ  ＤＲＡＭ」、ＲＬＤＲＡＭ、ＳＲＡＭ、ＲＤＲＡＭ、ＦＣＲＡＭ、「ＱＤＲ  ＳＲＡＭ」、「ＤＤＲ  ＳＲＡＭ」、磁気メモリ、フラッシュ、又はこれらの組合せ、又はこのようなメモリ技術の将来の派生物のような様々なタイプとすることができる。本特許に開示する発明は、例示されるアーキテクチャの多くの変形を可能にし、実施形態における変更が本発明の原理及び精神から逸脱することなく行われ得ることが当業者によって認められるであろう。
【０２０７】
図８４のサーチプロセッサは、ローカルコンテンツ、リモートコンテンツ、又はネットワークパケットで受け取られたコンテンツなどのコンテンツサーチに対してアクセラレーションを必要とするシステムでコプロセッサとして使用することができる。このプロセッサを使用することができる構成は、図６９及び図７０に示されているものに類似しており、ブロック６９０６及び７００５のセキュリティプロセッサを上述のように図８４のサーチプロセッサ又はサーチプロセッサの他の変形で置換することができる。サーチプロセッサは、図８９に示すようにシステムのアクセラレーションカードとして作動することができるアドインカードに組み込むことができ、サーチプロセッサ、８９０４を、上述のように図８４のサーチプロセッサ又はサーチプロセッサの他の変形とすることができる。サーチプロセッサは、図７１によって示された形式で構成することができ、ランタイム適応プロセッサ、ブロック７１０２は、ランタイム適応サーチプロセッサアレイ、ブロック８４０５で置換することができる。このようなサーチプロセッサは、プロセッサがサポートすることができる規則の数をランタイム適応サーチプロセッサアレイによってサポートされる数を超えて増やせるようにする利点を有することができる。従って、このサーチプロセッサアレイが数千ＲＥをサポートすることができ、ユーザがそれを超えてＲＥの数を増す必要がある場合、これは、コンテンツサーチ／規則処理エンジン、７１０６に実装することができる複合ＤＦＡとしてサポートされる。従って、ユーザは、別のサーチプロセッサを追加する必要なく、外部メモリがサポートすることができるポイントまでＲＥの数を増すことができる。本出願のコンテンツサーチプロセッサは、ディープパケット検査を必要とするか、又はアンチ−スパム、アンチ−ウイルス、ＸＭＬセキュリティ、ウェブフィルタリングファイアウォール、及び侵入検知／防止などのようなアプリケーションコンテンツのスクリーニングを必要とするアプリケーションにおけるセキュリティプロセッサとして使用することができる。従って、セキュリティプロセッサに関係する本出願での全ての図は、サーチプロセッサを組み込むことができる。
【０２０８】
サーチプロセッサは、図６９、図７０、図７１、図７３、又は図８９のようなコプロセッサ構成におけるマスタープロセッサから探索する必要があるコンテンツを受け取るか、又は図６８又は図７２のようにネットワークインタフェースに連結された場合にネットワークからコンテンツを受け取ることができる。制御プロセッサ及びスケジューラー、８４０２は、プロセッサアレイがデータ又は情報コンテンツを受け取る準備ができた場合に、これらをサーチプロセッサアレイにスケジュールするためにデータ／パケットバッファ、８４０３に探索されるデータ又は情報コンテンツを預ける。一般的に、サーチプロセッサは、１００Ｍｂｐｓ未満から、１Ｇｂｐｓ−１０Ｇｂｐｓ、及びこれより速いネットワーク回線速度を満たすことができ、従って、パケットをバッファに入れる必要はない。しかし、サーチプロセッサが処理することができるよりも速い速度でパケット又はコンテンツがサーチプロセッサに入ってきた場合は、パケットをバッファに入れるべきである。また、正確なシーケンシャル順序でサーチプロセッサによって処理される同じフロー（例えば、同じトランスポート層接続で）に属するパケットをスケジュールすべきである。このようなフローのパケットは、これらの前のフローのパケットが処理されるまでデータ／パケットバッファに記憶することができる。サーチプロセッサは、送信元と宛先間の接続で複数のパケットにわたって検査機能を供給すべきである。制御プロセッサ及びスケジューラー、ブロック８４０２は、このような機能を提供する。制御プロセッサは、構成及びグローバルメモリ、８４０６、又はオフチップメモリに維持することができる接続データベースにランタイム適応サーチプロセッサアレイの内部処理状態を記憶することができる。制御プロセッサ及びスケジューラーは、接続に対応するパケットがマスタープロセッサ又はフロー−スルー構成での入りトラフィックによって示された場合に所定の接続に対する実行又は分析状態をルックアップする。接続ＩＤは、マスタープロセッサによって作成することができ、検査されるパケットと共にサーチプロセッサに供給されるか、又はサーチプロセッサがパケットのヘッダから接続アソシエーションを得ることができる。接続ＩＤは、送信元アドレス、宛先アドレス、送信元ポート、宛先ポート、及びプロトコルタイプから得られる５タプルハッシュを使用することによってＩＰプロトコルケースで作成される。接続ＩＤが制御プロセッサ及びスケジューラーによって作成されてハッシュ衝突の場合に解決された状態で、次に、その接続に関連した状態を検索してその状態をサーチプロセッサアレイ、ブロック８４０５に提供し、接続の状態からサーチを開始する。この機構は、１つの接続に対してマルチパケットサーチを作成し、パケット境界にまたがるどのようなサーチストリング又はセキュリティ侵害又は脅威も検知するために使用される。例えば、「Ｍｉｌｌｉｏｎ  Ｕ Ｓ  Ｄｏｌｌａｒｓ」を探索するように定められた規則があり、このストリングが２つの別々のパケットに接続データ転送で現れ「Ｍｉｌｌｉｏｎ  Ｕ」が１つのパケットに現れ「Ｓ  Ｄｏｌｌａｒｓ」が別のパケットに現れる場合に、本特許の接続ベースのマルチパケットサーチ機構が存在しない時、各パケットが個々に規則に符合しないのでセキュリティ侵害は検知されない。しかし、マルチパケットサーチが行われる場合、これらの２つのパケットが時間的にどのように離れてサーチプロセッサに到着しても、サーチの状態は、接続に対して１つのパケットから別のパケットに維持され、２つのパケットのストリングが、連続したストリング「Ｍｉｌｌｉｏｎ  Ｕ Ｓ  Ｄｏｌｌａｒｓ」として検出されてフラグを立てられる。
【０２０９】
制御プロセッサ及びスケジューラーは、パケット又はデータを適切な順序でランタイム適応サーチプロセッサアレイにスケジュールする。ランタイム適応サーチプロセッサアレイ、ブロック８４０５、適応コントローラ、ブロック８４０４、及び構成及びグローバルメモリ、ブロック８４０６は、図６２、６３、６４、及び６５に示されているものに類似している。ランタイム適応サーチプロセッサアレイ及び関連のブロックは、サーチプロセッサの制御プロセッサ及びスケジューラーに連結するために行われる適切な論理拡張によって類似の機能を提供する。ランタイム適応サーチプロセッサアレイ及びその構成要素を以下に説明する。サーチプロセッサアレイは、入りパケット又はデータの各文字によって表示され、プログラムされたＲＥ規則とのストリングマッチングを調べる。ストリングが符合した場合、サーチプロセッサアレイは、ＲＥ規則識別、取るべきアクション、この規則に関連したタグ、マッチングの開始カウント、及びマッチングの終了カウントなどのような他の情報と共にこの指示を制御プロセッサ及びスケジューラーに提供し、符合した規則又は複数の規則に応じて適切なアクションを取ることができる。サーチプロセッサアレイの内側のコントローラは、以下に説明するように要求される適切なアクションを取ることができる。
【０２１０】
図９７は、全体及び区分的規則分配に対して使用されるサーチコンパイラフローを示している。図９７のサーチコンパイラによって、ＩＴマネージャは、図６７の説明で上述のように様々なタイプのサーチ及びセキュリティ規則を作成することができ、階層化及び／又はパーベイシブセキュリティモデルを規則に作成させることができる。コンパイラフローは、セキュリティ機能の有無、規則伝送方法、サポートされる規則ベースのサイズ、ノードの性能メトリクス、配備ロケーション、例えば、ＬＡＮ又はＳＡＮ又はＷＡＮ又はその他などのような特定のノードの特徴を供給される。コンパイラフローは、次に、ＩＴマネージャによって作成された規則セットからノードに特定の規則をコンパイルするためにこの知識を使用する。コンパイラは、ＦＳＡコンパイラフロー、ブロック９７０６に表示される規則を構文解析するための規則パーサ、ブロック９７０４を含み、これは、規則を分析し、コンテンツを分析するために使用される規則データベースを作成する。規則パーサは、規則エンジンの出力に応じて規則のファイルから又はコマンドラインから直接又はこれらの組合せによって規則を読み取ることができる。特定のノードに対する規則は、規則又は正規表現トークンを説明するのに使用される言語に特定のトークンを認識するために構文解析され、正規表現規則、９７０５を出力する。パーサは、次に、ＲＥを図９６の以下に詳しく説明されるＦＳＡコンパイラフローに呈する。ＦＳＡコンパイラフローは、入りＲＥを処理し、そのＲＥに対してＮＦＡ及びＤＦＡを生成する。ＦＳＡコンパイラフローは、次に、他方に対して一方を使用するコスト及びノードに対するサーチプロセッサ機能にも基づいて、ＲＥをＤＦＡ又はＮＦＡとして処理するかを決める。ＦＳＡコンパイラフローは、次に、サーチプロセッサにロード可能なフォーマットでＮＦＡ又はＤＦＡ規則を生成し、これをコンパイル規則データベースストレージ、９７０８に記憶する。
【０２１１】
規則分配エンジン、ブロック９７０９は、サーチプロセッサの正確な構成に伝達するための適切な変更を有する図５７及び図５８に示す中央マネージャ及び規則分配フローに従う。サーチ規則は、ノード機能に応じて適切に図５８に示すようにホストプロセッサ又は制御プレーンプロセッサに、又は制御プロセッサ及びスケジューラー、ブロック８４０２に、又はこれらの組合せに分配することができる。規則は、ネットワークを通じて特定のノードの機能に対して適切に専有又は標準プロトコルを使用するセキュアリンク又はインセキュアリンクを使用して分配することができる。
【０２１２】
制御プロセッサ及びスケジューラー、ブロック８４０２は、規則分配エンジン、ブロック９７０９と通信し、コンテンツ検査を開始する前に適切なコンパイル規則テーブルを受け取る。制御プロセッサ及びスケジューラーは、適応コントローラ、８４０４と共に働く上述の適切なＮＦＡ又はＤＦＡサーチエンジンに受け取られた規則をプログラムする。サーチプロセッサによってサポートされるアプリケーションコンテキストの数に応じて各サーチエンジンに複数の規則を記憶することができる。規則分配エンジンがコンパイル規則を制御プロセッサ及びスケジューラーに提供しこれらがそれぞれのエンジンで設定された状態で、サーチプロセッサは、コンテンツ検査を実行するためにデータストリームの処理を開始する準備ができる。サーチプロセッサ状態構成情報は、図示されていないコプロセッサ／ホストインタフェースコントローラ又はメディアインタフェースコントローラを通じて受け取られる。本特許のサーチプロセッサは、図６９に示されているルック−アサイド構成又は図６８に示されているフロー−スルー構成又は図７０に示されているアクセラレータアダプタ構成、並びに当業者によって理解することができる図示されていないその他のような様々な構成で配備することができる。ルック−アサイド又はアクセラレータアダプタ構成での本特許のサーチプロセッサは、このようなカードが常駐することができるシステムに応じてネットワークプロセッサ又はスイッチプロセッサ又はＴＣＰ／ＩＰプロセッサ又は分類プロセッサ又は転送プロセッサ又はホストプロセッサなどとすることができるマスタープロセッサの制御下にある。制御プロセッサ及びスケジューラーは、構成情報を包含して、これをサーチプロセッサに渡すパケットを受け取るために規則エンジンと通信するこのようなマスタープロセッサの制御下で構成情報を受け取る。構成が行われた状態で、マスタープロセッサは、コプロセッサ又はホストインタフェースを使用してコンテンツ検査を実行する必要があるパケット又はデータファイル又はコンテンツをサーチプロセッサに供給する。コプロセッサ又はホストインタフェースは、ＰＣＩ、ＰＣＩ−Ｘ、ＰＣＩｅｘｐｒｅｓｓ、ＲａｐｉｄＩＯ、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、又はＬＡ−１又はＳＲＡＭメモリインタフェースなど、又は専有バスのような標準バスとすることができる。バス上の帯域幅は、そのピーク回線速度でコンテンツサーチエンジンを作動し続けるのに十分なものでなくてはならない。サーチプロセッサは、ルック−アサイド又はアクセラレータ構成でコンテンツ及び他の構成情報を受け取るためにマスタープロセッサスペースでのメモリマップ又はＩＯマップ装置とすることができる。サーチプロセッサは、所定のパケット又はコンテンツを処理する時又はプログラムされた規則とのマッチングが見つかった時を指示するためにマスタープロセッサによってポーリングされるか、又はマスターにドアベル又は割込み機構を提供することができる。制御プロセッサ及びスケジューラー、ブロック８４０２、及びインタフェースコントローラ、ブロック８４０１は、上述の機能を提供するためにマスタープロセッサと共に働く。
【０２１３】
制御プロセッサ及びスケジューラーは、入りパケットをパケットバッファ、ブロック８４０３に記憶し、パケットがコンテンツを解析するために利用可能になった時にサーチプロセッサアレイ、ブロック８４０５による処理にパケットをスケジュールする。スケジューラーは、特定のエンジンによって処理されるパケットの記録を維持し、パケットが処理されたらマスタープロセッサに通知する。サーチプロセッサアレイは、制御プロセッサ及びスケジューラーに規則とのマッチングが見つかった時及びその規則に関連したアクションを通知する。この情報は、制御プロセッサによってマスタープロセッサに送られ、マスタープロセッサは、パケットに対して規則によって指示される特定のアクションを取ることができる。アクションは、上述のようにパケットを落とすか又は接続を落とすか又はＩＴマネージャに通知するなどのような複数のアクションの１つとすることができる。
【０２１４】
図８５は、ランタイム適応サーチプロセッサアレイを示している。ランタイム適応サーチプロセッサアレイは、図６４に示す上述のランタイム適応プロセッサに類似している。ＲＡＰ及びサーチプロセッサの様々なブロックの機能は、類似している。サーチプロセッサアレイは、図６４の各計算クラスター、６４０１（１）から６４０１（Ｚ）が、ブロック８５０１（１）から８５０１（Ｚ）で示すように計算クラスター又はサーチクラスター又はこれらの組合せのいずれでもよいことを示している。クラスターが計算クラスターである場合、その機能は、図６４及び６５で説明したものと同じであるが、クラスターがサーチクラスターである場合、その機能は図８５に示され以下に説明するように異なっている。ランタイム適応サーチプロセッサアレイは、図６２及び図６３のランタイム適応プロセッサの代わりに使用することができ、ランタイム適応サーチ処理及びランタイム適応計算処理機能を上述の機能並びに規則の大きな数の同時サーチを利用することができるディープパケットサーチ、アプリケーション層サーチ、及び上位層（層４−７）セキュリティなどのために適応ＴＣＰ／ＩＰプロセッサに供給する。グローバルメモリ及びグローバルメモリコントローラ、８５０２は、上述のブロック６４０２について説明したものに類似の機能を提供し、図８４に示すランタイム適応サーチプロセッサのグローバル及び構成メモリ、８４０６と対話することができる。
【０２１５】
図８６は、例示的なサーチクラスターを示している。サーチクラスターは、図６５に示す計算クラスターに類似しているが、計算要素の代わりに、サーチクラスターがサーチエンジンを含む。サーチエンジンは、図８２に示すＤＦＡサーチエンジン、又は図８０に示すＮＦＡサーチエンジンとすることができる。サーチクラスターは、ＤＦＡベースサーチエンジンとＮＦＡベースサーチエンジンの組合せを含むことができ、又はＤＦＡベース又はＮＦＡベースのあらゆるサーチエンジンの１つのタイプのみを含むことができる。効率的なエリア利用、電力グリッド、クロックネットワークなどをもたらすことができるサーチクラスター内の標準構造を維持するような選択を様々な設計最適化のためにサーチプロセッサの実装時に行うことができる。サーチクラスターの様々な構成が本特許の教示から実現可能であり、これらを全て説明するのは不可能であることは当業者には明らかである。サーチクラスターは、サーチエンジン、クラスター経路指定スイッチ８６０５、クラスターメモリ及びフローコントローラ８６０６、又はクラスター構成コントローラ８６０７、又は以上の組合せを含むことができる。ブロッククラスターメモリ及びフローコントローラ８６０６は、クラスターメモリ、クラスターメモリコントローラ、及びクラスターフローコントローラを含む。サーチプロセッサは、ＤＦＡベースとすることができる一部のクラスターを含むことができ、他は、ＮＦＡベース又はＤＦＡ及びＮＦＡベースサーチクラスターの組合せとすることができる。従って、上述のようにＤＦＡベース及びＮＦＡベースクラスターの変化する数を提供することができる製品の範囲を作成することができる。サーチエンジン８６０１（１）から８６０１（Ｚ）は、単一のサーチエンジン（ＳＥ）によってサポートされるものよりも大きなＲＥ規則を作成する必要がある場合に互いに相互接続することができる。全てが図７５に示すようなＲＥ規則群の一部であるＳＥの群を作成することができる。１つの群の属するＳＥは、ＳＥの現在有効にされている群によってサーチの結果に応じて、コントローラ８７０７及び８７０９によって有効又は無効にすることができる。サーチエンジンで構成された規則に対して探索する必要があるコンテンツは、クラスター構成コントローラ８６０７、クラスター経路指定スイッチ８６０５、及びクラスター間経路指定スイッチ８５０３を通じて図８５のサーチプロセッサアレイによってサーチエンジンに示されている。サーチの結果は、サーチクラスターから制御プロセッサ及びスケジューラー８４０２への同様のルートを通じて運ばれる。サーチ結果は、符合した規則によって要求されるようなアクションを取るように構成されるクラスターメモリ及びフローコントローラ８６０６、及びクラスター構成コントローラ８６０７に伝送される。これらのコントローラは、他のクラスターに取るべきアクションを通知することができ、それによってサーチクラスターの全てが、アクティブである規則群並びに各クラスターに対してアクティブにする必要がある現在のアプリケーションコンテキストの点から互いに同期化される。
【０２１６】
サーチクラスターのサーチエンジンは、グローバル構成コントローラ８５０５と対話するクラスター構成コントローラ８６０７によって構成されている。グローバル構成コントローラは、グローバル構成制御のために使用され、適応コントローラ８４０４、制御プロセッサ及びスケジューラー８４０２、構成及びグローバルメモリ８４０６、及びメモリコントローラ８４０７と対話し、図９７に示されているサーチコンパイラフローを使用してユーザ又はＩＴマネージャによって構成される規則によって要求されるように様々なハードウエア構成情報を受け取り、記憶し、更に検索する。サーチコンパイラは、サーチ装置の特定のサーチプロセッサの機能に関して規則をコンパイルし、ホスト又はマスタープロセッサを通じて又はそうでなければ上述のように制御プロセッサ及びスケジューラー８４０２と対話し、これらの規則によってサーチプロセッサアレイを構成する。これらの規則は、上記に列挙された様々なブロックと対話する制御プロセッサによってクラスター構成コントローラに伝送される。クラスター構成コントローラは、次に、ＮＦＡベースサーチエンジンのためのアプリケーション状態メモリ８００１と、ＤＦＡベースサーチエンジンのためのＤＦＡ命令及び状態フローメモリ８２０１を構成する。クラスター全てのサーチエンジンの全てが適切な規則及びアプリケーションコンテキストによって構成された状態で、コンテンツサーチを開始することができる。上述のように、異なる時間にサーチプロセッサに到着する可能性がある同じフローのパケット内側でコンテンツのサーチを続行させるためにサーチプロセッサはフロー又はセッションの情報を維持すべきである。同様にホストプロセッサによってサーチプロセッサに送られるメッセージ又はファイル又は他のコンテンツのサーチを要求する解決法では、コンテンツがバイト又はページ又はセグメントなどのチャンクで送られる場合にコンテキストを維持すべきである。フローコンテキストはサーチプロセッサのグローバルメモリ８４０６に維持することができ、又はメモリコントローラ８４０７に連結されたメモリに記憶することができる。サーチエンジンの数が大きい場合、所定のコンテキストに対して記憶する必要がある情報の量は、性能に問題を生じる可能性がある。本特許のＤＦＡ及びＮＦＡサーチエンジンは、１つのコンテキスト当たり最低１つの３２ビットワードを節約すべきである。従って、例えば、サーチエンジンの数が、１６のサーチエンジン各々によって６４クラスターに分配された１０２４である場合、グローバルメモリから１０２４の３２ビットワードまで記憶して検索する必要があると考えられる。これは、１Ｇｂｐｓから１０Ｇｂｐｓ回線速度をサポートするのに必要とされるサーチプロセッサに対して大きな性能障壁になる可能性がある。従って、高速回線速度性能を必要とするアプリケーションでは、本発明によってクラスターがクラスターメモリ８６０６にフローコンテキスト情報をローカルで記憶することができるようなる。既存の実施例では、サーチエンジンが４×４アレイで編成され更にローカルメモリへの４ポートが存在する場合、１つのクラスター毎に４つの３２ビットワードのフローコンテキストをフロ���コンテキストスイッチに対して記憶し検索すべきである。クラスターは、全て同時にそのローカルメモリにアクセス可能なので、フロー情報をグローバルメモリから記憶して検索すべきである場合に、フローコンテキストスイッチを２０４８クロックサイクルに比べて８クロックサイクルで達成することができる。新しいコンテキストのローディングは、４クロックサイクルを必要とし、これは、交換されるコンテキストのストレージが背景で行われ、同時に新しいコンテキストのサーチが始まる場合に、コンテキストの切り換えに必要な最小時間になる。従って、本発明の特許は、グローバルメモリに記憶されるコンテンツを必要とするアーキテクチャに存在する可能な主な性能障害を解決することができる。
【０２１７】
図８７は、サーチクラスター間規則群及びスイッチングの実施例を示している。上述のように、正規表現規則は、図７５に示すように共にグループ化することができる。本発明のサーチプロセッサによって、サーチエンジンのグループ化は、正規表現の規則群を可能にする。図８７は、アプリケーションの必要性及びアプリケーションコンテキストに関して作成することができる２つのこのような規則群を示している。規則群１、８７０１は、３つのサーチエンジンを含むように示されており、規則群２、８７０２は、少なくとも８つのサーチエンジンを含むように示されている。１つの規則群のサーチエンジンの数は、アプリケーションコンテキストに基づいて変えることができ、規則群は、１つ又はそれよりも多くのサーチクラスターを進んでいくことができる。従って、非常に柔軟なサーチプロセッサを本発明によって作成することができる。この図は、主にサーチクラスターに限定された規則群を示している。図は、規則群のスイッチングの実施例を示している。サーチエンジン群１が最初にコンテンツサーチに有効にされ、規則群２が無効にされると仮定する。コンテンツサーチが始まると、構成コントローラ８７０９に類似のメッセージＳｎ８７１１を送ることができるメモリコントローラにメッセージＳ１８７０３を送ることで示すように、規則群１の規則の１つがマッチングを見つけた場合に、クラスターメモリ及びフローコントローラ８７０７及びクラスター構成コントローラ８７０９にマッチングの結果として取る必要があるアクションを通知することができる。メッセージＳｎは、メッセージフローの各段階に対して図を複雑にすることを防ぐためにコントローラ間の複数の対話を示すのに使用されている。コントローラは、次に、群のサーチエンジンを停止するためにメッセージＳ２８７０４を規則群１に送り、規則群２のサーチエンジンをアクティブ化するためにメッセージＳ３８７０５及び８７０６を規則群２に送る。規則群スイッチングが行われた状態で、新しくアクティブ化された規則群２がその規則に対してコンテンツの検査を開始し、規則群１がコンテンツの検査を中止する。従って、本発明を使用して入れ子規則群を作成することができる。クラスター構成コントローラ８７０９は、別のサーチクラスターに常駐する別の規則群へのスイッチを行うか又はサーチ結果によって要求されるようにサーチプロセッサにわたって異なるアプリケーションコンテキストへのスイッチを行うために、グローバル構成コントローラ８５０５と対話することができる。
【０２１８】
図８８は、例示的な規則構成及びコンテキストスイッチを示している。図は、サーチクラスターの各々で構成された規則の様々なタイプを有する図８５のランタイム適応サーチプロセッサアレイを示している。ブロック８８０１（１）から８８０１（Ｚ）は、ブロック８５０１（１）から８５０１（Ｚ）に類似のサーチクラスターである。図は、各クラスターに対して２つのコンテキストを示している。サーチクラスター８８０１（１）のサーチエンジンは、ＨＴＴＰ及びＳＭＴＰ規則の他に示されていないあらゆる他のものによって構成されているが、８８０１（Ｌ）は、ＨＴＭＬ及びＳＭＴＰによって構成されている。ラベル「Ｉ：＜ＡｐｐＮａｍｅ１＞」は、クラスターが初期構成になるように構成された＜ＡｐｐＮａｍｅ１＞アプリケーションを有することを示すものとする。ラベル「Ｓ：＜ＡｐｐＮａｍｅ２＞」は、クラスターがグローバル構成コントローラの制御下でＡｐｐＮａｍｅ２に切り換えることを示すものとする。ラベル「Ｉ：ＷＡＩＴ」によってマーク付けされた一部のクラスターがあり、これは、これらのクラスターがサーチの初期段階中はアクティブでないことを示すものとする。しかし、これらのクラスターは、「Ｓ：＜ａｐｐＮａｍｅ＞」ラベルで示すアプリケーションコンテキストに切り換えることができる。サーチプロセッサが、アクティブであるクラスターの初期セットによって図８８に示すように構成されている場合、これらのクラスターは、最初に入りコンテンツを検査する。この実施例では、各クラスターは、例えば、ネットワークされたシステムで行われる受信されるアプリケーションコンテンツの特定のタイプを探索する。入りパケットがＳＭＴＰアプリケーションに属すると仮定すると、サーチクラスターのサーチエンジン８８０１（３）は、ＳＭＴＰパケットを検知し、ＳＭＴＰコンテンツが見つかったことを示すメッセージ８８１７を送ることによって、グローバル構成コントローラと対話するクラスターコントローラに通知し、従って、他のクラスターは、アンチ−スパム規則又はＳＭＴＰコンテンツをその構成要素などに構文解析するＳＭＴＰに対する規則を適用しなくてはならない。グローバル構成コントローラは、次に、クラスター全てがその構成されたコンテキストを有し、受け取られるコンテンツにその規則の適用を開始する場合には、クラスター全てがコンテキストをＳＭＴＰに切り換えるように、メッセージ８８１８、８８１９、８８２０を送る。従って、サーチプロセッサアレイは、複雑なサーチオペレーションを実行するようにランタイムに適応させることができる。図８７及び図８８の実施例は、説明を簡単にするためにかなり単純であるが、当業者によって認められるようにランタイム適応サーチプロセッサを使用してより多くの複雑なシナリオを作成することができる。
【０２１９】
図８９は、コンテンツサーチアクセラレータを備えたコンピュータ装置を示している。このコンピュータ装置は、サーバ、ワークステーション、パーソナルコンピュータ、スイッチ又はルータのようなネットワーキング装置、又はコンピュータ装置の他のタイプとすることができる。これは、本発明のコンテンツサーチプロセッサの１つのバージョンを使用するコンテンツサーチアクセラレータを使用することができる構成の１つのタイプである。図は、１つ又はそれよりも多くのＣＰＵ８９００（１）から８９００（ｎ）、少なくとも１つのチップセット８９０２、少なくとも１つのコンテンツサーチアクセラレータ８９０３を備えた少なくとも１つのメモリ構成要素８９０１、及び他の機能を提供するゼロ又はそれよりも多くのアダプタを含むコンピュータ装置を示している。コンテンツサーチアクセラレータは、サーチプロセッサ８９０４を含むことができる。コンテンツサーチアクセラレータは、サーチプロセッサに連結された少なくとも１つのメモリ構成要素８９０５を含むことができる。本発明のコンテンツサーチプロセッサによって作成することができる多くの様々なシステム構成がある。従って、本特許の実施例は、これらにその範囲を制限するものとして使用すべきではなく、逆に実施例は、主に、一部のサンプル使用シナリオでサーチプロセッサを説明するための手段である。本特許のサーチプロセッサは、ラインカード、ネットワークアダプタ又はネットワークインタフェースコントローラ、ストレージネットワーキングカード、ＩＯカード、マザーボード、制御処理カード、スイッチングカード、又はルータ、スイッチ、管理装置、セキュリティ装置、ゲートウェイ、仮想化装置、ストレージネットワーキング装置、サーバ、及びストレージアレイのようなネットワーキング装置などのシステムの他のシステム要素などに使用することができる。サーチプロセッサ又はその構成要素は、マイクロプロセッサ、ネットワークプロセッサ、スイッチングチップ、プロトコルプロセッサ、ＴＣＰ／ＩＰプロセッサ、制御プレーンプロセッサ、チップセット、制御プロセッサ、又はこれらのプロセッサ又はチップ上に機能ブロックとして組み込まれるものを含む他の装置に連結することができる。コンテンツサーチプロセッサは、このようなシステムのメインプロセッサにコンテンツ処理をオフロードするか又はそれを助けるために組み込まれるシステムにおいて高速回線速度でコンテンツ検査を行うために使用することができる。コンテンツサーチに対して性能又は規則の数又はこれらの組合せのスケーリングを提供するために、複数のサーチプロセッサをシステムに組み込むことができる構成が存在する場合がある。サーチプロセッサは、トラフィックに合わせてネットワークラインカードに組み込むことができ、上述のように回線速度ディープパケット検査を提供することができる。
【０２２０】
図８９に示す構成は、電子メールセキュリティ、又はインスタンスメッセージセキュリティ、又はアウトバウンドセキュリティ、又は押し出し検知、又はＨＩＰＡＡ遵守又は米国企業改革法遵守又はグラム−リーチ−ブライリー法遵守、又はウェブセキュリティなど、又はこれらの組合せに対して使用することができる。列挙されたセキュリティ機能は、アンチ−スパム、アンチ−ウイルス、アンチ−フィッシング、アンチ−スパイウェア、ディレクトリハーベスト攻撃の検知／防止、ワームの検知／防止、侵入検知／防止、及びファイヤウォールなど、又は機密情報、医療情報、顧客情報、クレジットカード番号、及び社会保障番号などの漏れの検知／防止、又はこれらの組合せを含むことができる。このような装置のコンテンツサーチプロセッサ又は複数のプロセッサは、上記に列挙されたアプリケーションの１つ又はそれよりも多くのセキュリティ規則のセットと共に構成され、装置に入る又は装置から出る情報のコンテンツサーチにアクセラレーションを提供することができる。コンテンツサーチプロセッサは、トラフィックに合わせて使用することができるので、装置を組織のネットワークのルータ又はスイッチ又はゲートウェイの近くのようなネットワークのあらゆる場所に、又は部門レベルで、又はデータセンター内、又はこれらの組合せに配備することができ、ネットワークの入り又は出力トラフィックフローに高速コンテンツ検査を提供することができる。
【０２２１】
図９０は、例示的なアンチ−スパム性能の障害及び解決法を示している。上述のように、マイクロプロセッサでＤＦＡ又はＮＦＡベースサーチを使用するコンテンツサーチ性能は、結果として１００Ｍｂｐｓより下の性能を生じる。図９０は、ハードウエアベースのコンテンツサーチの価値を示すために例示的なアプリケーションとしてアンチ−スパムアプリケーションを示している。性能の数字は、一律の縮尺に従わずに示されている。図は、アプライアンスの４つのタイプにおけるオペレーションの４つの縦のスタックを示している。第１スタック９０００は、電子メールアプライアンススタックを表すために示されている。電子メールアプライアンスは、一般的に、アプライアンスのハードウエア装置を駆動するための装置ドライバ、一般的に他のアプリケーションソフトウエアと共に全てがソフトウエアコンポーネントである「オペレーティングシステム（ＯＳ）」及びメール転送エージェント（ＭＴＡ）の他の機能と共にネットワーキングプロトコルスタックを含むことができる。一般的に電子メールアプライアンスに使用される今日のサーバは、１Ｇｂｐｓまで上がるネットワーク回線速度に追随することができ、高性能プロセッサによりアプリケーション機能を実行することができる。一般的に、１ＧＨｚプロセッサは、ネットワークプロトコルスタック処理に対して１Ｇｂｐｓ回線速度トラフィックを処理すべきである。従来のプロセッサの状態は、現在約４ＧＨｚであるので、サーバは、ネットワークトラフィックを処理することができ、サーバで実行されるＯＳ及びアプリケーションの他の必要性に対処するのに利用可能な処理機能を有することができる。従って、ハイエンドサーバで実行される電子メールアプライアンススタック９０００は、高速回線速度に追随しなくてはならない。２００４年１２月に行われたネットワーク業界雑誌「野生のスパム：続編」による研究は、多数のアンチ−スパムソフトウエア及びアプライアンス販売業者の性能比較を示している。これらの構成の下で列挙された販売業者製品のメッセージ処理性能の範囲は、１秒当たり約５メッセージから１秒当たり２１メッセージであった。この性能数字が１つのメッセージ当たり１０、０００文字のネットワーク界によって使用される最悪メッセージサイズを使用する回線速度性能に変換された場合、回線速度性能は、性能を維持する２Ｍｂｐｓよりも下になる。ソフトウエア又はアプライアンス解決法のあらゆる販売業者の全ては、デュアルＸｅｏｎプロセッササーバに基づいていた。従って、１Ｇｂｐｓネットワーク回線速度トラフィックを処理することができるサーバがアンチ−スパムアプリケーションを実行する場合、その性能は、１０Ｍｂｐｓより下まで下がる。このために、殆どのアンチ−スパム販売業者によって広範囲にわたって使用される特徴の１つは、正規表現として一般的に表される規則のセットに対しての電子メールのサーチである。アンチ−スパムアプライアンススタック９００１は、アンチ−スパム機能をロードされた電子メールアプライアンスを示している。アンチ−スパムアプリケーションは、一般的に、統計フィルタリング及び評判ベースのフィルタリングなどと共に多くの複雑な正規表現規則ベースのフィルタリングを実行する。アンチ−スパム規則は、一般的に、電子メールのコンテンツに符合する規則を見つけるために連続して各入り電子メールに順次適用される。次に、アンチ−スパムアプリケーションは、符合する規則にスコアを加えることができ、受け取った総スコアに基づいてメッセージがスパムであるか否かを決めることができる。このようなオペレーションは、スタック性能の必要性を一般的な電子メールアプライアンススタックよりもかなり高く上げ、アンチ−スパムフィルタ９００５、アプライアンスの性能へのオーバーヘッドが、全アンチ−スパムサーバアプライアンス性能にわたって１０Ｍｂｐｓより下になるようにかなり低減される。本発明のコンテンツサーチプロセッサは、かなりの性能の改善を達成するためにこのようなアンチ−スパムアプライアンスに使用することができる。ハードウエア加速アンチ−スパムアプライアンススタック９００２は、システムの全体的な性能における本発明のサーチプロセッサを使用する影響を示している。このような場合、アンチ−スパムフィルタの全て９０１１から９０１３は、各入りメッセージを検査するのに使用することができるサーチプロセッサ９００６上に構成することができる。全ての規則が同時に探索され、ホストＣＰＵが性能指定正規表現サーチから解放されるので、サーチプロセッサベースのアプライアンスは、１Ｇｂｐｓ回線速度性能又はそれよりも高いものを達成することができる。図８９に示すコンピュータ装置は、標準サーバベースのアンチ−スパムアプライアンスよりも数段上の高性能を達成するためにアンチ−スパムアプライアンスとして使用することができる１つのこのような構成とすることができる。スタック９００３は、本発明のコンテンツサーチプロセッサと共にホストＣＰＵからプロトコル処理をオフロードするためのＴＣＰ／ＩＰオフロードプロセッサを使用することができる拡張メッセージングアプライアンスのスタックを示している。従って、かなりの量のＣＰＵ帯域幅を重大な性能への影響なしにコンピュータ装置で実行できなかった他のアプリケーションに利用可能にすることができる。ＴＣＰ／ＩＰオフロード及びコンテンツサーチプロセッサの使用は、個々に又は組み合わせて行うことができ、１つの使用は、他の使用を必要としない。ＴＣＰオフロード及びコンテンツサーチプロセッサは、ネットワーク接続性及びアクセラレーションを提供する同じ装置に配置することができる。
【０２２２】
図９１は、アンチ−ウイルス性能の障害を有するアンチ−スパムを示している。この図は、スタックが示されているアンチ−スパムアプライアンスがアンチ−ウイルス機能をサポートすることを除いて、図９０と非常によく似ている。アンチ−ウイルスサーチは、アンチ−スパムサーチとは異なるが、スタック９１０４で示すような重大な性能オーバーヘッドを付加する。アンチ−ウイルスに対するフィルタの数は、アンチ−スパムよりかなり多いが、本発明のコンテンツサーチプロセッサが使用される場合には、９１０５で示すようにアンチ−ウイルスオーバーヘッドをかなり低減することができる。
【０２２３】
図９２は、アプリケーションコンテンツサーチ性能の障害及び解決法を示している。本発明のコンテンツサーチプロセッサは、コンテンツサーチを必要とするがホストプロセッサ上でサーチを行う多数のアプリケーションに対してサーチアクセラレータとして使用することができる。コンテンツサーチに対するホストプロセッサの性能が上述のようにあまり高くないので、コンテンツサーチプロセッサベースのアクセラレータは、これらのアプリケーションの性能をかなり改善することができる。コンテンツサーチを必要とするアプリケーションは、データウェアハウシングアプリケーション、データベースアプリケーション、バイオインフォマティクス関連のアプリケーション、遺伝学、プロテオミクス、及び創薬関連のアプリケーションなどのように多数ある。図は、ホストＣＰＵロードの観点からコンテンツサーチベースのアプリケーション性能を表す３つのボックス、９２００、９２０１、及び９２０２を示している。従来のアプリケーションは、サーバ又はワークステーション又はパーソナルコンピュータで実行され、アプリケーションが実行を必要とする他のタスクを割り込ませながらコンテンツサーチを行う。アプリケーションが大量のサーチを行う場合、アプリケーションのサーチ部分の性能要件は、他の部分よりかなり高くなる可能性がある。これは、これらのアプリケーションの他のコード９２０４及び９２０６に対比させて、それぞれアプリケーションのコンテンツサーチ部分ａｐｐ１、９２０３、及びａｐｐＮ、９２０５によって示されている。９２００のスタックは、現在の又は従来技術の解決法がコンテンツサーチアプリケーションに対してどのように存在しているかを示している。スタックはコンテンツサーチ及び他のコードセクションに対して連続のスタックを示しているが、実際の実行は、一般的に、他のコード機能を割り込ませたサーチから構成される。本発明のコンテンツサーチプロセッサ及びアクセラレータがこの機能を実行するコンピュータ装置で使用される場合、サーチアクセラレーションサポートのないコンピュータ装置に比べてプロセッサのサーチ機能をアプリケーションに利用させて、アプリケーションの性能をかなり加速させることができる。９２０１のスタックは、コンテンツサーチアクセラレータを利用するように変換された場合に、ＣＰＵロードにおける影響及びアプリケーションによって消費される結果時間を示している。スタック９２０３及び９２０５は、それぞれスタック９２０７及び９２０８で示すようにかなり少なく負荷及び時間を取ることになる。同様に、９２０９で示すように、ＴＣＰ／ＩＰプロトコル処理をオフロードすることによってシステムの性能を更に改善することができる。上述のように、ＴＣＰ／ＩＰオフロード及びコンテンツサーチオフロードは、互いに独立しており、各々がシステムにおいて他方なしに行われ得る。しかし、別々の構成要素として又は同じ装置上でコンテンツサーチプロセッサをＴＣＰ／ＩＰプロセッサと共に使用することができ、性能利益を達成することができる。
【０２２４】
図９３は、例示的なコンテンツサーチＡＰＩ使用モデルを示している。上述のように、コンテンツサーチプロセッサは、一般アプリケーションのコンテンツサーチ部分を加速するために使用することができる。このようなサーチプロセッサアクセラレーション機能を利用するために新しいアプリケーションの作成を容易にして既存のアプリケーションを移行させるために、コンテンツサーチのためのアプリケーションプログラミングインタフェース（ＡＰＩ）を作成することができる。例示的なコンテンツサーチＡＰＩを図９４に示して以下に説明する。コンテンツサーチＡＰＩは、ユーザレベルに、又はユーザレベルの呼出しによってカーネルレベルに、又はこれらの組合せに常駐することができる。図９３は、ユーザ層のコンテンツサーチＡＰＩ９３０７を示している。コンテンツサーチＡＰＩは、いずれのアプリケーションもコンテンツサーチアクセラレーションの利益を得るために呼び出すことのできるＡＰＩ機能を提供する。コンテンツサーチＡＰＩをアプリケーションを使用する使用慣例がある。例えば、アプリケーションは、アプリケーションが実行されるか又は規則を動的に作成してＡＰＩ又は組合せを使用してコンテンツサーチプロセッサに構成することができるように適切なフォーマットで規則を設定するように要求される前に、ＡＰＩ呼出しを使用してサーチプロセッサに構成することができるサーチ規則を設定すべきである。ハードウエアシステム、オペレーティングシステム、又はサーチプロセッサ、又は組合せに応じて設定されるＡＰＩ呼出し慣例が存在する。アプリケーションは、次に、ＡＰＩ慣例に即して符号化することができ、サーチプロセッサアクセラレーションから恩典を得ることができる。図は、９３１２、９３１３、及び９３１４として示される論理インタフェース経路を使用して、コンテンツサーチアクセラレーションハードウエア９３１７へのアクセスを取得するために、コンテンツサーチＡＰＩ９３０７と共に働くアプリケーションＡｐｐ１９３００からＡｐｐＮ９３０３を示している。コンテンツサーチＡＰＩは、カーネルの下で実行されるポートドライバを通じてコンテンツサーチアクセラレータによって供給されるサービス及びリソースにアクセス可能である。アプリケーションは、探索されるコンテンツをこのインタフェースを通じて直接パスすることができ、又は必要な場合に探索されるコンテンツ並びに設定されるテーブルをアプリケーションのバッファ９３０４、９３０５に入れることができ、コンテンツサーチＡＰＩを通じてこれらのバッファから情報を検索するようにコンテンツサーチプロセッサに指示することができる。ＡＰＩは、サーチＡＰＩのポートドライバがバッファをコンテンツサーチプロセッサに供給することができるか又はバッファがサーチプロセッサハードウエアによる直接メモリアクセスに利用可能になるように、これらのバッファをカーネルスペースにマップすることができる。サーチプロセッサは、オンチップ又はオフチップメモリバッファ９３１８にコンテンツを記憶することができ、コンテンツに要求されたサーチを行うことができる。サーチが終了した状態で、サーチの結果がオペレーティングシステムのモデルによって許可されたようにドアベル機構又はコールバック機構又はデータバッファなどを使用してアプリケーションに戻される。コンテンツサーチＡＰＩは、サーチ結果を検査及び／又は取得するためにアプリケーションによって同様に使用されるポーリング機構を提供することができる。
【０２２５】
図９４は、例示的な機能を備えた例示的なコンテンツサーチＡＰＩを示している。図は、例示的なコンテンツサーチＡＰＩの一部とすることができる機能のセットを示している。機能のリストは、図示のものよりも多いか又は少ないものにすることができるが、これらの機能は、ＡＰＩの使用によってアプリケーションがコンテンツサーチハードウエアを使用することを可能にする基本セットを提供する。例示的な機能は、オペレーティングシステム及び呼出し慣例などに応じて変わる可能なＡＰＩ機能呼出しに対する入力、出力、又は戻りパラメータを示していない。アプリケーションは、最初にハードウエアエンジンの機能を問合せ、次にカーネル又はユーザモード又は組合せを通じてコンテンツサーチプロセッサがアプリケーション及びそのリソースと通信するのに必要とされる適切な規則、ポインタ、及び許可などによって初期化することによってＡＰＩを使用することができる。アプリケーションは、サーチプロセッサに構成することができるＤＦＡ規則又はＮＦＡ規則として特定の規則を設定することができる。アプリケーションは、コンテキストベースのサーチを実行するために利用することができる複数のコンテキストへのアクセスを与えられる。コンテンツサーチプロセッサが全ての必要な規則によって適切に設定された状態で、アプリケーションは、そのコンテンツに対するサーチの実行を開始することができる。アプリケーションは、インタフェースを通じてバイトストリームを送ることによって探索されるコンテンツをＡＰＩを使用してサーチプロセッサに直接伝送することができる。図示していないが、サーチプロセッサへのデータ送信を開始し、サーチを開始し、サーチプロセッサがサーチを中断しなくてはならない時を指示するために、アプリケーションによって使用されるＳｅｎｄＤａｔａ（）のようなＡＰＩ機能のバージョンが存在する場合がある。サーチを行う更に効率的な方法は、アプリケーションが探索されるバッファ又はバッファのセットを満たし、ｓｔａｒｔＨＷｓｅａｒｃｈ（）のようなＡＰＩ呼出しを使用してサーチを開始するための呼出しを受け取ったら構成された規則によってバッファのサーチを開始することができるサーチプロセッサにバッファへのポインタを提供することである。サーチプロセッサは、結果を結果バッファにコピーするか又はサーチプロセッサに関連したメモリに結果を記憶するか又はアプリケーションによって登録されたコールバック機能をオペレーティングシステムに呼び出すなどのような多くの機構の１つによってサーチの結果をアプリケーションに伝送するように初期化されている。サーチプロセッサは、サーチが終了したことを通知するためにドアベル機構によってアプリケーションに伝送することができる。上述のように情報を伝送する多くの様々な方法があり、これは、オペレーティングシステム及びシステムハードウエアアーキテクチャに応じて変わる可能性がある。図示していないがｉｓＳｅａｒｃｈＤｏｎｅ（）のようなＡＰＩ機能によって利用可能になるポーリング機構が存在する場合があり、これは、特定のサーチが終了したか否かのサーチハードウエアへの問合せへの応答を提供することができる。ハードウエアからアプリケーションへの応答が、サーチが終了したである場合、アプリケーションは、ｇｅｔＲｅｓ（）のようなＡＰＩ呼出しを使用して特定の結果を要求することができ、又はアプリケーションは、図９４に示されているｇｅｔＲｅｓＰｔｒ（）のような呼出しを使用して結果を保持することができるバッファへのポインタを要求することができる。アプリケーションが特定のサーチに対処するか又はサーチプロセッサを使用して処理された状態で、このアプリケーションに対してハードウエアプロセッサがサーチを行うのを中止するためにＡＰＩ機能ｓｔｏｐＨＷｓｅａｒｃｈ（）を呼び出すことができる。図示していないが、アプリケーションがサーチプロセッサを使用して対処されたことをＯＳ及びサーチプロセッサハードウエアに指示するためにアプリケーションによって呼び出されるｒｅｍｏｖｅＡｐｐＣｏｎｔｅｘｔ（）のようなＡＰＩ呼出しが存在する場合があり、従って、その関連のコンテキスト全てが、サーチプロセッサリソースを必要とする可能な別のアプリケーションによって使用するためにサーチプロセッサハードウエアによってフリードアップされる。上述の規則グループ化の機構を使用して規則の群及びその実行の順序をアプリケーションが作成することを可能にするｓｅｔＲｕｌｅＧｒｏｕｐ（）、ｓｅｌｅｃｔＲｕｌｅＧｒｏｕｐ（）、及びｓｅｔｌｎｉｔＧｒｏｕｐ（）などのような他のハードウエア機能に特定のＡＰＩ呼出しが存在する場合がある。上述のように、当業者に明らかな本特許の教示からのハードウエアサーチプロセッサを使用した一般的なコンテンツサーチアプリケーションアクセラレーションを達成するために、ＡＰＩ機能の多くの他の機能及び変形を作成することができる。従って、コンテンツサーチ機能を一般的なアプリケーションに供給するためにコンテンツサーチＡＰＩを作成することができる。上述の説明は、使用される規則が、サーチを開始する前にアプリケーションによって設定される実施例と共に示されているが、アプリケーションによるあらゆる将来のサーチに対して更新された規則セットを使用し始めるように既に構成されていた規則を追加、削除、及び／又は修正することによってサーチを進行させながら同時にサーチプロセッサに構成された規則セットを動的に更新することができる。
【０２２６】
図９５は、サーチプロセッサを使用する例示的なアプリケーションフロー（静的設定）を示している。フローは、規則及びハードウエアプロセッサを設定するための静的処理を示しているが、上述のように、当業者に明らかな動的設定も実現可能である。フローによってアプリケーションは、動的フローを可能にするためにアプリケーションがランタイムで実行する場合に、プロセッサで規則を追加／削除／修正することができる。図示のものは、コンテンツサーチプロセッサをアプリケーションを使用することを可能にするコンテンツサーチ規則及びＡＰＩ呼出しによって既存のアプリケーション又は新しいアプリケーションが更新される機構を示している。アプリケーションソース９５００は、コンテンツサーチ規則が別々のコードセクションで設定されるコンテンツサーチに対する修正によってアプリケーションソースを作成するように更新される（９５０１）か、又はコンテンツサーチアウェアコンパイラ９５０３によってコンパイルされるコンパイラ符号化規則によって予想されるように明確にマーク付けされる（９５０２）。コンパイラは、セクションにコンパイルされたコンテンツサーチ規則によって、ローダーがサーチプロセッサでこれらを構成するために使用することができるオブジェクトコード９５０４を作成する。アプリケーションオブジェクトコードは、アプリケーションのサーチ性能を加速するために、コンテンツサーチプロセッサの顧客又はユーザに分配される。アプリケーションコードは、インターネット、ワールドワイドウェブ、企業ネットワーク、又はその他のネットワークを使用して、又はＣＤ、ＤＶＤ、又はアプリケーションをロードするのに使用することができる他のコンピュータストレージのような他の手段を使用して電子的に分配することができる。アプリケーション更新９５０１は、必要に応じてマニュアルで又はツールを使用して又はこれらの両方によって行われる。分配されたオブジェクトコード９５０６は、ローダー９５０７によって読み取られるか、又は類似の機能がアプリケーションに関連するオペレーティングシステムによって供給され、システムにおける実行のために設定される。ローダー又は別の機能は、ブロック９５０８で示すようにオブジェクトコードで符号化される時にアプリケーションが必要とする適切な規則によってコンテンツサーチプロセッサを構成するためにＡＰＩ呼出しのセット又はポートドライバ又は他のＯＳ機能又は組合せを使用することができる。サーチアプリケーションハードウエアが設定されて、アプリケーションが必要とする他のリソースが保証又は設定された状態で、アプリケーションがＯＳによって開始される（９５０９）。アプリケーションは、コンテンツサーチの前に必要な場合にタスクを実行又は実施することができる（９５１０）。アプリケーションは、次に、サーチプロセッサによって探索する必要があるコンテンツを設定することができる（９５１１）。次に、アプリケーションは、サーチを行うためにサーチプロセッサを始動する（９５１３）。サーチが行われた状態で、アプリケーションは、結果を検索することができる（９５１４）。サーチがサーチプロセッサによって行われている間、アプリケーションは、システムのメインＣＰＵ又は他の要素で他のタスクの実行を続行することができる（９５１２）。アプリケーションが終了した場合、アプリケーションは出ることができ、そうでなければアプリケーションは実行を続行させることができ、必要な場合に新しいサーチを含むより多くのタスクが行われる。流れ図は、９５１５から９５１０までのループとしてタスクの実行を示しているが、実行されるタスクは、１回からループを経た次の回には非常に異なる可能性がある。ループは、同じコードシーケンスが繰り返されることを意味するように示されていない。それは、タスクのタイプが繰り返されることを示すものである。更に、９５１０から９５１５への全てのタスクをアプリケーションフローに存在させる必要はない。アプリケーションが行われた状態で、コンテンツサーチプロセッサに対するリソースに加えてアプリケーションを使用するリソースの全てを解放することができる。
【０２２７】
図９６は、ＦＳＡコンパイラフローを示している。正規表現形式のコンテンツサーチ規則は、ＦＳＡコンパイラフローへの入力として使用される。ＦＳＡコンパイラは、規則の全て又は規則の群全体をサーチし、これらを構文解析する（９６０２）。コンパイラは、次に、段階９６０３及び９６０４で示すようにコンテンツサーチプロセッサの実施アーキテクチャを満たすためにＮＦＡ及びＤＦＡを生成する。コンパイラは、次に、ＮＦＡ及びＤＦＡとしてＲＥを実装するコストを比較し、段階９６０６及び９６１１で示すようにプロセッサ機能に従ってＮＦＡ又はＤＦＡを選択する。コンパイラは、ＲＥ又はＲＥ群によって要求されるようにアクション及び／又はタグを好ましくは備えたＮＦＡ又はＤＦＡコードを生成する。コンパイラは、ＲＥ規則の全てが処理されるまで段階９６０２から９６０７を続行させる。コンパイラは、次に、９６０８で示すように全ＲＥ規則セットに対して必要とされるように規則ＦＳＡコード及びタグの全てを生成し、ＲＡＭ、ＲＯＭ、ハードディスク、フロッピー、ＣＤ、ＤＶＤ、又はあらゆる他のコンピュータストレージとすることができる記憶装置の規則データベース９６０９に規則を記憶する。コンパイルされた規則は、次に、段階９６１０で示すようにコンテンツサーチプロセッサに分配される。規則は、セキュリティコンパイラフローに対して上述のような分配エンジンによって分配される。
【０２２８】
図９７は、サーチコンパイラフロー（全体及び区分的規則分配）を示している。このフローは、規則の全セットが定められた場合、又はあらゆる更新又は修正が規則セットに行われ、規則セットへの区分的変更をサーチプロセッサで伝送して構成する必要がある場合に、サーチ規則又はセキュリティ規則を分配するために使用することができる。図９７に示されているフローは、上述のＦＳＡコンパイラフローが図９７のフローの一部であることを除いて、図６７に示すものに非常によく似ている。アプリケーション層規則、ネットワーク層規則、又はストレージネットワーク層規則、又はあらゆる他のサーチ規則のような規則は、マニュアル又は自動手段を使用して作成することができ、所定のフォーマットでサーチコンパイラフローへの入力として供給される。サーチコンパイラの規則パーサ９７０４は、規則を構文解析し、規則がまだその形式でない場合に規則を正規表現フォーマットに変換する。次に、正規表現規則は、図９６に示されているＦＳＡコンパイラフローを通じて送られる。ＦＳＡコンパイラの出力は、コンテンツサーチプロセッサを有するノードのノード機能にコンパイルされ規則データベースに記憶される規則である。規則データベースからの規則は、規則分配エンジンによって検索されて、サーチプロセッサを有する適切なノードに分配される。規則分配エンジン、ブロック９７０９は、図５７及び図５８に示されているものに類似の中央マネージャフロー及び規則分配フローを使用して規則を適切なノードに分配する。サーチ又はセキュリティ規則は、図５８に示すようにホストプロセッサ又は制御プレーンプロセッサに、又は上述の制御プロセッサ及びスケジューラー、ブロック８４０２に、又はノード機能に応じて適切にこれらの組合せに分配される。規則は、ネットワークを通じて特定のノードの機能に応じて適切に専有又は標準プロトコルを使用するセキュアリンク又はインセキュアリンクを使用して分配される。ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネット、メトロエリアネットワーク（ＭＡＮ）、無線ＬＡＮ、ストレージエリアネットワーク（ＳＡＮ）、又はシステムエリアネットワーク、又は配備される別のネットワークタイプ、又はこれらの組合せとすることができる。ネットワークは、「イーサネット」ベース、インターネットプロトコルベース、又はＳＯＮＥＴベース、又は他のプロトコルベース、又はこれらの組合せとすることができる。
【０２２９】
図９８は、ＦＰＧＡのＦＳＡ合成及びコンパイラフローを示している。この図に示すフローは、図９６に示すＦＳＡコンパイラフローに類似している。段階９８０１から９８１１は、本質的には段階９６０１から９６１１と同じである。ＦＰＧＡのＦＳＡ合成及びコンパイラフローは、ＦＰＧＡでこれらのコンテンツサーチプロセッサを合成するためにＦＳＡ規則を変換するのに使用することができる数個の付加的な段階を示している。ＮＦＡ又はＤＦＡに変換されたＲＥ規則は、９８１２で示すように自動化された方法で適切なＲＴＬを生成するのに使用される。ＮＦＡ又は「ＤＦＡ  ＲＴＬ」生成は、９８１７で示すようにライブラリからＮＦＡ及びＤＦＡ構築ブロックＲＴＬを使用することができる。サーチプロセッサアレイの全要素のＲＴＬがＲＥ規則の全てから生成された状態で、サーチプロセッサのトップレベルＲＴＬは、コンパイルされた規則をターゲットにしたＮＦＡ又はＤＦＡに特定のサーチエンジンによって生成することができる。出力ＲＴＬは、次に、サーチプロセッサ、例えば、メモリコントローラのあらゆる他のＲＴＬコードと融合され、出力をコンピュータストレージに記憶することができる。この融合されたＲＴＬは、次に、「ＦＰＧＡ  ＲＴＬ」合成ツールに入力として供給され、ＦＳＡ合成及びコンパイラフローに入力された正規表現規則の必要性を満たすことを具体的に目標としたＦＰＧＡベースのサーチプロセッサを生成する。
【０２３０】
本発明のプロセッサは、限定する意味でなく以下に概説する製造工程を使用して、様々な実現可能な実施形態の選択されたものにおけるハードウエア製品に製造することができる。プロセッサは、特定ターゲット製造工程技術に対する機能性、タイミング、及び他の設計及び製造制約に対するＲＴＬレベル、回路／回路図／ゲートレベル、レイアウトレベルなどのような様々なレベルのチップ設計抽象概念で設計及び検証することができる。適切な物理的／レイアウトレベルでのプロセッサ設計を用いて、ターゲット処理技術においてチップを製造するのに使用されるマスクセットを作り出すことができる。次に、マスクセットを用いて、選択された処理技術に対して使用される段階を通してプロセッサチップが構築される。プロセッサチップは、次に、製造されたプロセッサ製品の品質を保証するのに適切な場合は、試験／包装工程を通過することができる。
上述の事項は本発明の特定的な実施形態に関連したものであるが、当業者は、本発明の原理及び精神から逸脱することなく、これらの実施形態に変更を行うことができることを認めるであろう。
【図面の簡単な説明】
【０２３１】
【図１】階層化されたＳＣＳＩアーキテクチャと、イニシエータとターゲットシステムの間に位置するそれぞれの層の間の対話とを示す図である。
【図２】イニシエータとターゲットシステムの間のｉＳＣＳＩ及びＴＣＰ／ＩＰベースの移送を有する階層化されたＳＣＳＩアーキテクチャを示す図である。
【図３】ファイバチャンネルのようなハードウエア志向プロトコルを有するソフトウエアベースＴＣＰ／ＩＰスタックのＯＳＩスタック比較を示す図である。
【図４】他の非ＩＰハードウエア志向プロトコルとの性能パリティを提供するためのハードウエアベースＴＣＰ／ＩＰ実施によるＯＳＩスタックを示す図である。
【図５】ネットワーキング及びストレージスタックを実行するオペレーティングシステム層を表すホストソフトウエアスタックを示す図である。
【図６】ソフトウエアＴＣＰスタックデータ転送を示す図である。
【図７】本特許に説明するようなホストプロセッサからのＴＣＰ／ＩＰオフロードを使用する遠隔の直接メモリアクセスデータ転送を示す図である。
【図８】ＩＰネットワーク上でブロックストレージデータを移送するためのホストソフトウエアＳＣＳＩストレージスタック層を示す図である。
【図９】本発明の実施形態の特定のｉＳＣＳＩストレージネットワーク層スタックの詳細を示す図である。
【図１０】本発明の実施形態のＴＣＰ／ＩＰネットワークスタックの機能的詳細を示す図である。
【図１１】本発明の実施形態の様々な要素を通じたｉＳＣＳＩストレージデータフローを示す図である。
【図１２】本発明に有用なｉＳＣＳＩストレージデータ構造を示す図である。
【図１３】本発明の実施形態に有用なセッションデータベースエントリのためのＴＣＰ／ＩＰ伝送制御ブロックデータ構造を示す図である。
【図１４】本発明の実施形態に有用なｉＳＣＳＩセッションデータベース構造を示す図である。
【図１５】本発明の実施形態に有用なｉＳＣＳＩセッションメモリ構造を示す図である。
【図１６】本発明の実施形態に有用なＩＰネットワークアプリケーションプロセッサの高レベルアーキテクチャブロック図である。
【図１７】図１６のＩＰネットワークアプリケーションプロセッサのアーキテクチャブロック図の詳細図である。
【図１８】ＩＰプロセッサの一実施形態の入力待ち行列とコントローラを示す図である。
【図１９】ＩＰプロセッサの一実施形態に有用なパケットスケジューラ、シーケンサ、及び負荷均衡化を示す図である。
【図２０】ＩＰストレージプロセッサの一実施形態のポリシーエンジンブロックを含むパケット分類エンジンを示す図である。
【図２１】高レベルでのＩＰプロセッサの一実施形態のＳＡＮパケットプロセッサブロックの実施形態を概略で示す図である。
【図２２】説明したＩＰプロセッサのＳＡＮパケットプロセッサブロックの実施形態をより詳細に示す図である。
【図２３】説明したＳＡＮパケットプロセッサの一部として使用することができるプログラマブルＴＣＰ／ＩＰプロセッサエンジンの実施形態を示す図である。
【図２４】説明したＳＡＮパケットプロセッサの一部として使用することができるプログラマブルＩＰストレージプロセッサエンジンの実施形態を示す図である。
【図２５】図１７のプログラマブルＩＰプロセッサの出力待ち行列ブロックの実施形態を示す図である。
【図２６】ストレージフローコントローラ及びＲＤＭＡコントローラの実施形態を示す図である。
【図２７】本発明の実施形態に有用なＩＰプロセッサのホストインタフェースコントローラブロックの実施形態を示す図である。
【図２８】セキュリティエンジンの実施形態を示す図である。
【図２９】説明したプロセッサに有用なメモリ及びコントローラの実施形態を示す図である。
【図３０】説明した分類エンジンの実施形態に利用可能なデータ構造を示す図である。
【図３１】イニシエータとターゲットの間のストレージ読取フローを示す図である。
【図３２】説明したプロセッサのパイプラインステージを通じた読取データパケットフローを示す図である。
【図３３】イニシエータとターゲットの間のストレージ書込作動フローを示す図である。
【図３４】説明したプロセッサのパイプラインステージを通じた書込データパケットフローを示す図である。
【図３５】イニシエータとターゲットの間の遠隔ＤＭＡ（ＲＤＭＡ）機能を使用したイニシエータとターゲットの間のストレージ読取フローを示す図である。
【図３６】説明したプロセッサのパイプラインステージを通じてＲＤＭＡを使用したイニシエータとターゲットの間の読取データパケットフローを示す図である。
【図３７】ＲＤＭＡ機能を使用したイニシエータとターゲットの間のストレージ書込フローを示す図である。
【図３８】説明したプロセッサのパイプラインステージを通じてＲＤＭＡを使用した書込データパケットフローを示す図である。
【図３９】説明したプロセッサのパイプラインステージを通じたイニシエータコマンドフローをより詳細に示す図である。
【図４０】説明したプロセッサのパイプラインステージを通じた読取パケットデータフローをより詳細に示す図である。
【図４１】説明したプロセッサのパイプラインステージを通じた書込データフローをより詳細に示す図である。
【図４２】パケットがチップセットテキストか又はそうでなければ説明されたプロセッサのパイプラインステージを通じた安全なパケットの時の読取データパケットフローを示す図である。
【図４３】パケットがチップセットテキストか又はそうでなければ説明されたプロセッサのパイプラインステージを通じた安全なパケットの時の書込データパケットフローを示す図である。
【図４４】説明したプロセッサのパイプラインステージを通じたＲＤＭＡバッファ通知フローを示す図である。
【図４５】説明したプロセッサのパイプラインステージを通じたＲＤＭＡ書込フローをより詳細に示す図である。
【図４６】説明したプロセッサのパイプラインステージを通じたＲＤＭＡ読取データフローをより詳細に示す図である。
【図４７】説明したプロセッサのパイプラインステージを通じたセッション作成フローの段階を示す図である。
【図４８】説明したプロセッサのパイプラインステージを通じたセッション取外しフローの段階を示す図である。
【図４９】説明したプロセッサのパイプラインステージを通じてターゲットの展望で見たセッション作成及びセッション取外しの段階を示す図である。
【図５０】説明したプロセッサのパイプラインステージを通じたターゲットサブシステムのＲ２Ｔコマンドフローを示す図である。
【図５１】説明したプロセッサのパイプラインステージを通じたターゲットサブシステムの書込データフローを示す図である。
【図５２】説明したプロセッサのパイプラインステージを通じたターゲット読取データフローを示す図である。
【図５３】周辺セキュリティを有する典型的な企業ネットワークを示す図である。
【図５４】本特許の様々な要素を使用した分散セキュリティを有する企業ネットワークを示す図である。
【図５５】本特許の様々な要素を使用したストレージエリアネットワークのためのセキュリティを含む分散セキュリティを有する企業ネットワークを示す図である。
【図５６】中央マネージャ／ポリシーサーバ及びモニタリングステーションを示す図である。
【図５７】開示するセキュリティ機能の中央マネージャフローを示す図である。
【図５８】中央マネージャに対する規則分散フローを示す図である。
【図５９】本特許のプロセッサに対する制御プレーンプロセッサ／ポリシードライバフローを示す図である。
【図６０】分散セキュリティシステムに配備することができるパケットフィルタリング規則のサンプルを示す図である。
【図６１】図１６及び１７のＩＰプロセッサのＴＣＰ／ＩＰプロセッサバージョンを示す図である。
【図６２】適応ＴＣＰ／ＩＰプロセッサを示す図である。
【図６３】図６の代替として使用可能な適応ＴＣＰ／ＩＰプロセッサを示す図である。
【図６４】ランタイム適応プロセッサを示す図である。
【図６５】計算クラスターを示す図である。
【図６６】ネットワークにおけるセキュリティを提供するためのセキュリティ解決法を示す図である。
【図６７】セキュリティ解決法コンパイラフローを示す図である。
【図６８】フロー−スルーセキュアネットワークカードアーキテクチャを示す図である。
【図６９】ルック−アサイドセキュリティアーキテクチャを備えたネットワークラインカードを示す図である。
【図７０】セキュリティ及びコンテンツサーチアクセラレータアダプタアーキテクチャを示す図である。
【図７１】セキュリティプロセッサアーキテクチャを示す図である。
【図７２】他のセキュリティプロセッサアーキテクチャを示す図である。
【図７３】第３セキュリティプロセッサアーキテクチャを示す図である。
【図７４】コンテンツサーチ及び規則処理エンジンアーキテクチャを示す図である。
【図７５】「正規表現規則」（従来技術）の例を示す図である。
【図７６ａ】ＴｈｏｍｐｓｏｎのＮＦＡ（従来技術）を示す図である。
【図７６ｂ】Ｂｅｒｒｙ−ＳｅｔｈｉのＮＦＡ（従来技術）を示す図である。
【図７６ｃ】ＤＦＡ（従来技術）を示す図である。
【図７７ａ】左−バイアスＮＦＡ及び状態遷移テーブル（従来技術）を示す図である。
【図７７ｂ】右−バイアスＮＦＡ及び状態遷移テーブル（従来技術）を示す図である。
【図７８ａ】状態遷移制御を示す図である。
【図７８ｂ】１つの状態当たり構成可能な次の状態テーブルを示す図である。
【図７９ａ】１つの状態に対する状態遷移論理（ＳＴＬ）を示す図である。
【図７９ｂ】状態論理ブロックを示す図である。
【図８０】ＮＦＡベースのサーチエンジンを示す図である。
【図８１】アプリケーション状態メモリの例示的な構成を示す図である。
【図８２】ＤＦＡベースのサーチエンジンを示す図である。
【図８３】例示的なＤＦＡオペレーションを示す図である。
【図８４】ランタイム適応サーチプロセッサを示す図である。
【図８５】ランタイム適応サーチプロセッサアレイを示す図である。
【図８６】例示的なサーチクラスターを示す図である。
【図８７】サーチクラスター内規則群及びスイッチングの実施例を示す図である。
【図８８】例示的な規則構成及びコンテキストスイッチを示す図である。
【図８９】コンテンツサーチアクセラレータを備えたコンピュータ装置を示す図である。
【図９０】例示的なアンチ−スパム性能障害及び解決法を示す図である。
【図９１】アンチ−ウイルスを備えたアンチ−スパム性能障害を示す図である。
【図９２】アプリケーションコンテンツサーチ性能障害及び解決法を示す図である。
【図９３】例示的なコンテンツサーチＡＰＩ使用モデルを示す図である。
【図９４】例示的な機能を備えた例示的なコンテンツサーチＡＰＩを示す図である。
【図９５】サーチプロセッサを使用する例示的なアプリケーションフロー（静的設定）を示す図である。
【図９６】ＦＳＡコンパイラフローを示す図である。
【図９７】サーチコンパイラフロー（全体＋区分的規則分配）を示す図である。
【図９８】ＦＰＧＡのための「ＦＳＡ合成」及び「コンパイラフロー」を示す図である。
【符号の説明】
【０２３２】
８０００  アプリケーション状態制御ブロック
８００１  アプリケーション状態メモリブロック
８００２  ＳＬＢブロック
８００５  マッチング論理及び受理状態検出ブロック
【図１】
2009523275.tif 000004
【図２】
2009523275.tif 000005
【図３】
2009523275.tif 000006
【図４】
2009523275.tif 000007
【図５】
2009523275.tif 000008
【図６】
2009523275.tif 000009
【図７】
2009523275.tif 000010
【図８】
2009523275.tif 000011
【図９】
2009523275.tif 000012
【図１０】
2009523275.tif 000013
【図１１】
2009523275.tif 000014
【図１２】
2009523275.tif 000015
【図１３】
2009523275.tif 000016
【図１４】
2009523275.tif 000017
【図１５】
2009523275.tif 000018
【図１６】
2009523275.tif 000019
【図１７】
2009523275.tif 000020
【図１８】
2009523275.tif 000021
【図１９】
2009523275.tif 000022
【図２０】
2009523275.tif 000023
【図２１】
2009523275.tif 000024
【図２２】
2009523275.tif 000025
【図２３】
2009523275.tif 000026
【図２４】
2009523275.tif 000027
【図２５】
2009523275.tif 000028
【図２６】
2009523275.tif 000029
【図２７】
2009523275.tif 000030
【図２８】
2009523275.tif 000031
【図２９】
2009523275.tif 000032
【図３０】
2009523275.tif 000033
【図３１】
2009523275.tif 000034
【図３２】
2009523275.tif 000035
【図３３】
2009523275.tif 000036
【図３４】
2009523275.tif 000037
【図３５】
2009523275.tif 000038
【図３６】
2009523275.tif 000039
【図３７】
2009523275.tif 000040
【図３８】
2009523275.tif 000041
【図３９】
2009523275.tif 000042
【図４０】
2009523275.tif 000043
【図４１】
2009523275.tif 000044
【図４２】
2009523275.tif 000045
【図４３】
2009523275.tif 000046
【図４４】
2009523275.tif 000047
【図４５】
2009523275.tif 000048
【図４６】
2009523275.tif 000049
【図４７】
2009523275.tif 000050
【図４８】
2009523275.tif 000051
【図４９】
2009523275.tif 000052
【図５０】
2009523275.tif 000053
【図５１】
2009523275.tif 000054
【図５２】
2009523275.tif 000055
【図５３】
2009523275.tif 000056
【図５４】
2009523275.tif 000057
【図５５】
2009523275.tif 000058
【図５６】
2009523275.tif 000059
【図５７】
2009523275.tif 000060
【図５８】
2009523275.tif 000061
【図５９】
2009523275.tif 000062
【図６０】
2009523275.tif 000063
【図６１】
2009523275.tif 000064
【図６２】
2009523275.tif 000065
【図６３】
2009523275.tif 000066
【図６４】
2009523275.tif 000067
【図６５】
2009523275.tif 000068
【図６６】
2009523275.tif 000069
【図６７】
2009523275.tif 000070
【図６８】
2009523275.tif 000071
【図６９】
2009523275.tif 000072
【図７０】
2009523275.tif 000073
【図７１】
2009523275.tif 000074
【図７２】
2009523275.tif 000075
【図７３】
2009523275.tif 000076
【図７４】
2009523275.tif 000077
【図７５】
2009523275.tif 000078
【図７６ａ】
2009523275.tif 000079
【図７６ｂ】
2009523275.tif 000080
【図７６ｃ】
2009523275.tif 000081
【図７７ａ】
2009523275.tif 000082
【図７７ｂ】
2009523275.tif 000083
【図７８ａ】
2009523275.tif 000084
【図７８ｂ】
2009523275.tif 000085
【図７９ａ】
2009523275.tif 000086
【図７９ｂ】
2009523275.tif 000087
【図８０】
2009523275.tif 000088
【図８１】
2009523275.tif 000089
【図８２】
2009523275.tif 000090
【図８３】
2009523275.tif 000091
【図８４】
2009523275.tif 000092
【図８５】
2009523275.tif 000093
【図８６】
2009523275.tif 000094
【図８７】
2009523275.tif 000095
【図８９】
2009523275.tif 000096
【図９３】
2009523275.tif 000097
【図９４】
2009523275.tif 000098
【図９５】
2009523275.tif 000099
【図９６】
2009523275.tif 000100
【図９７】
2009523275.tif 000101
【図９８】
2009523275.tif 000102
【図８８】
2009523275.tif 000103
【図９０】
2009523275.tif 000104
【図９１】
2009523275.tif 000105
【図９２】
2009523275.tif 000106
【国際調査報告】
2009523275.tif 000107