(57)【要約】  本発明の実施例は、ディープパケットインスペクション方法及び装置並びにコプロセッサを提供する。ディープパケットインスペクション方法は、コプロセッサの送受信モジュールが、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、オリジナルデータパケットをコプロセッサのプロセッサコアに送信するステップと、プロセッサコアが、アプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップと、プロセッサコアが、汎用プロセッサが解析結果に従ってオリジナルデータパケットを処理するように、解析結果を汎用プロセッサに送信するステップとを有する。本発明の実施例により提供されるディープパケットインスペクション方法及び装置は、汎用プロセッサのリソース占有を軽減し、実行速度を向上させる。
2015537278.tif 000002
【特許請求の範囲】
【請求項１】
ディープパケットインスペクション（ＤＰＩ）方法であって、
コプロセッサの送受信モジュールが、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信するステップと、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップであって、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、呼び出すステップと、
前記プロセッサコアが、前記汎用プロセッサが前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップと、
を有するディープパケットインスペクション方法。
【請求項２】
前記コプロセッサの送受信モジュールが汎用プロセッサにより送信されたオリジナルデータパケットを受信した後であって、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信する前、
当該方法は更に、前記オリジナルデータパケットに対してフロー処理を実行するステップを有し、
前記オリジナルデータパケットをプロセッサコアに送信するステップは、前記フロー処理されたデータパケットを前記プロセッサコアに送信することを含み、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことは、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記フロー処理されたデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことを含む、請求項１記載のディープパケットインスペクション方法。
【請求項３】
前記オリジナルデータパケットに対してフロー処理を実行するステップは、前記オリジナルデータパケットに対してフラグメント化ＩＰパケット再構成処理及びアウトオブオーダＴＣＰパケットリオーダリング処理を実行することを含む、請求項２記載のディープパケットインスペクション方法。
【請求項４】
少なくとも２つのプロセッサコアが前記コプロセッサに含まれ、
前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信するステップは、前記プロセッサコアのそれぞれのロード状態に従って前記少なくとも２つのプロセッサコアから１つのプロセッサコアを選択し、前記オリジナルデータパケットを前記選択されたプロセッサコアに送信することを含む、請求項１記載のディープパケットインスペクション方法。
【請求項５】
前記プロセッサコアが、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するため、前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、具体的には、前記プロセッサコアが、前記コプロセッサのスイッチングバスモジュールを利用することによって、前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことを含む、請求項１記載のディープパケットインスペクション方法。
【請求項６】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、エンドポイント検索結果を取得するため、前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む、請求項１記載のディープパケットインスペクション方法。
【請求項７】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、前記コプロセッサに含まれる文字列マッチングエンジンを呼び出し、前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記アプリケーションレイヤプロトコルタイプを利用することを含む、請求項１記載のディープパケットインスペクション方法。
【請求項８】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサに含まれる正規表現マッチングエンジンを呼び出し、前記プロセッサコアの呼び出しの下で前記正規表現マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む、請求項１記載のディープパケットインスペクション方法。
【請求項９】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、前記オリジナルデータパケットのアプリケーションレイヤプロトコルを特定するのに前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出すステップと、
前記プロセッサコアが、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行するのに前記コプロセッサに含まれるプロトコル解析サブコプロセッサを呼び出し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記解析結果と前記アプリケーションレイヤプロトコルタイプとを利用するステップと、
を含む、請求項１記載のディープパケットインスペクション方法。
【請求項１０】
前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップは、
前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記コプロセッサに含まれる結果報告処理モジュールに送信するステップと、
前記結果報告処理モジュールが、所定のフォーマットに従って前記アプリケーションレイヤ解析結果をカプセル化し、前記カプセル化されたアプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップと、
を含む、請求項１乃至９何れか一項記載のディープパケットインスペクション方法。
【請求項１１】
前記プロトコル特定サブプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行することは、前記プロトコル特定サブプロセッサの呼び出しの下、前記文字列マッチングエンジンが、第１メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記フロー制御されたデータパケットに対して前記文字列マッチングを実行することを含む、請求項７記載のディープパケットインスペクション方法。
【請求項１２】
前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することは、前記プロセッサコアが、第２メモリから条件ルールデータ構造を読み出し、前記特徴マッチング結果と前記条件ルールデータ構造とに従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することを含む、請求項１１記載のディープパケットインスペクション方法。
【請求項１３】
ディープパケットインスペクション方法であって、
汎用プロセッサが、オリジナルデータパケットをコプロセッサに送信するステップと、
前記汎用プロセッサが、前記コプロセッサにより送信された前記オリジナルデータパケットのアプリケーションレイヤ解析結果を受信するステップであって、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアによって取得され、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、受信するステップと、
前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップと、
を有するディープパケットインスペクション方法。
【請求項１４】
前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、前記汎用プロセッサが、前記アプリケーションレイヤ解析結果に従って、前記オリジナルデータパケットが暗号化されたデータパケットであるか判断し、前記オリジナルデータパケットが暗号化されたデータパケットである場合、前記オリジナルデータパケットを解読することを含む、請求項１３記載のディープパケットインスペクション方法。
【請求項１５】
前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、前記汎用プロセッサが、前記アプリケーションレイヤ解析結果に従って、前記オリジナルデータパケットが属するフローのサービスタイプを決定し、前記サービスタイプに従って前記フローに対してトラフィック統計、課金又は送信アクセラレーションを実行することを含む、請求項１３記載のディープパケットインスペクション方法。
【請求項１６】
前記オリジナルデータパケットのアプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを有し、
前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプは、前記オリジナルデータパケットに対してプロトコル特定を実行するために前記コプロセッサのプロトコル特定サブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、
前記ＵＲＬマッチング結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）であると判断したとき、前記オリジナルデータパケットに対してＵＲＬマッチングを実行するために前記コプロセッサのＵＲＬマッチングエンジンを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、
前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、前記汎用プロセッサが、前記アプリケーションレイヤ解析結果と前記ＵＲＬマッチング結果とに従って、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、前記フローをブロックすることを含む、請求項１３記載のディープパケットインスペクション方法。
【請求項１７】
送受信モジュール、サブコプロセッサ及びプロセッサコアを有するコプロセッサであって、
前記送受信モジュールは、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記プロセッサコアに送信するよう構成され、
前記プロセッサコアは、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記サブコプロセッサを呼び出すよう構成され、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用され、前記プロセッサコアは、前記汎用プロセッサが少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成され、
前記サブコプロセッサは、前記オリジナルデータパケットのアプリケーションレイヤ情報を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するよう構成されるコプロセッサ。
【請求項１８】
前記送受信モジュールは、
前記汎用プロセッサによって送信された前記オリジナルデータパケットを受信するよう構成される受信部と、
前記受信部が前記汎用プロセッサにより送信された前記オリジナルデータパケットを受信した後、前記オリジナルデータパケットに対してフロー処理を実行するよう構成されるフロー処理部と、
前記フロー処理されたデータパケットを前記プロセッサコアに送信するよう構成される配信部と、
を有し、
前記プロセッサコアは、具体的には、前記フロー処理されたデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記サブコプロセッサを呼び出すよう構成される、請求項１７記載のコプロセッサ。
【請求項１９】
前記フロー処理部は、具体的には、前記オリジナルデータパケットに対してフラグメント化ＩＰパケット再構成処理及びアウトオブオーダＴＣＰパケットリオーダリング処理を実行するよう構成される、請求項１８記載のコプロセッサ。
【請求項２０】
少なくとも２つのプロセッサコアがあり、
前記配信部は、具体的には、前記少なくとも２つのプロセッサコアの各プロセッサコアのロード状態を決定し、前記各プロセッサコアのロード状態に従って前記少なくとも２つのプロセッサコアから１つのプロセッサコアを選択し、前記フロー処理されたデータパケットを前記選択されたプロセッサコアに送信するよう構成される、請求項１８又は１９記載のコプロセッサ。
【請求項２１】
スイッチングバスモジュールを更に有し、
前記プロセッサコアは、具体的には、当該コプロセッサのスイッチングバスモジュールを利用して前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行することによって、前記サブコプロセッサを呼び出すよう構成される、請求項１７乃至２０何れか一項記載のコプロセッサ。
【請求項２２】
前記サブコプロセッサは、具体的には、エンドポイント検索結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返すよう構成され、
前記プロセッサコアは、具体的には、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１７記載のコプロセッサ。
【請求項２３】
前記サブコプロセッサは、プロトコル特定サブコプロセッサと文字列マッチングエンジンとを有し、
前記プロトコル特定サブコプロセッサは、具体的には、前記プロセッサコアの呼び出しの下で前記文字列マッチングエンジンを呼び出すよう構成され、前記文字列マッチングエンジンは、特徴マッチング結果を取得するため、前記プロトコル特定サブコプロセッサの呼び出しの下で前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、
前記プロセッサコアは、具体的には、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１７記載のコプロセッサ。
【請求項２４】
前記サブコプロセッサは、具体的には、正規表現マッチングエンジンであり、
前記正規表現マッチングエンジンは、特徴マッチング結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、
前記プロセッサコアは、具体的には、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１７記載のコプロセッサ。
【請求項２５】
前記サブコプロセッサは更に、プロトコル解析サブコプロセッサを有し、
前記プロトコル解析サブコプロセッサは、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行し、前記解析結果を前記プロセッサコアに返すよう構成され、
前記プロセッサコアは更に、前記汎用プロセッサが前記アプリケーションレイヤプロトコルタイプと前記解析結果とに従って前記オリジナルデータパケットを処理するように、前記解析結果を前記汎用プロセッサに送信するよう構成される、請求項２３記載のコプロセッサ。
【請求項２６】
結果報告処理モジュールを更に有し、
前記プロセッサコアは、具体的には、前記アプリケーションレイヤ解析結果を前記結果報告処理モジュールに送信するよう構成され、
前記結果報告処理モジュールは、所定のフォーマットに従って前記アプリケーションレイヤ解析結果をカプセル化し、前記カプセル化されたアプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１７乃至２５何れか一項記載のコプロセッサ。
【請求項２７】
前記文字列マッチングエンジンは、具体的には、前記プロトコル特定サブコプロセッサの呼び出しの下、第１メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、
前記第１メモリは、前記文字列マッチングアルゴリズム状態テーブルを格納するよう構成される、請求項２３記載のコプロセッサ。
【請求項２８】
前記プロセッサコアは、具体的には、第２メモリから条件ルールデータ構造を読み出し、前記特徴マッチング結果と前記条件ルールデータ構造とに従って前記アプリケーションレイヤプロトコルタイプを決定するよう構成され、
前記第２メモリは、前記条件ルールデータ構造を格納するよう構成される、請求項２７記載のコプロセッサ。
【請求項２９】
前記第１メモリと前記第２メモリとは、ダブルバンクモードにある、請求項２８記載のコプロセッサ。
【請求項３０】
オリジナルデータパケットをコプロセッサに送信するよう構成される送信モジュールと、
前記コプロセッサにより送信された前記オリジナルデータパケットのアプリケーションレイヤ解析結果を受信するよう構成される受信モジュールであって、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアによって取得され、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、受信モジュールと、
少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するよう構成される処理モジュールと、
を有する汎用プロセッサ。
【請求項３１】
前記処理モジュールは、具体的には、前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットが暗号化されたデータパケットであると特定された場合、前記オリジナルデータパケットを解読するよう構成される、請求項３０記載の汎用プロセッサ。
【請求項３２】
前記オリジナルデータパケットのアプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを有し、
前記ＵＲＬマッチング結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）であると判断するとき、前記オリジナルデータパケットに対してＵＲＬマッチングを実行するために前記コプロセッサのＵＲＬマッチングエンジンを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、
前記処理モジュールは、具体的には、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプと前記ＵＲＬマッチング結果とに従って、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、前記フローをブロックするよう構成される、請求項３０又は３１記載の汎用プロセッサ。
【請求項３３】
請求項１７乃至２９何れか一項記載のコプロセッサと、請求項３０乃至３２何れか一項記載の汎用プロセッサとを有するディープパケットインスペクション（ＤＰＩ）装置。
【請求項３４】
１つの汎用プロセッサがある、請求項３３記載のディープパケットインスペクション装置。
【請求項３５】
少なくとも２つの汎用プロセッサがあり、
当該ＤＰＩ装置は更に、ネットワークアダプタとロードバランシング装置とを有し、
前記ネットワークアダプタは、ネットワークからデータパケットを受信し、前記データパケットを前記ロードバランシング装置に送信するよう構成され、
前記ロードバランシング装置は、前記少なくとも２つの汎用プロセッサの各汎用プロセッサのロード状態を決定し、前記各汎用プロセッサのロード状態に従って１つの汎用プロセッサを選択し、前記データパケットを前記選択された汎用プロセッサに送信するよう構成される、請求項３３記載のディープパケットインスペクション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、コンピュータ技術に関し、特にディープパケットインスペクション方法及び装置並びにコプロセッサに関する。
【背景技術】
【０００２】
ディープパケットインスペクション（Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ，略してＤＰＩ）技術は、ネットワーク侵入検出及びアプリケーションプロトコル特定のためのコア技術として、ネットワーク及び情報セキュリティの分野においてますます重要な役割を担っている。ＤＰＩ技術は、ネットワーク最適化、アプリケーショントラフィック制御及びセキュリティ検出などのサービスを実現するため、特徴マッチングアルゴリズムを利用してデータパケットのアプリケーション情報を取得することによって、データパケットに対してディープ解析を実現する。
【０００３】
従来技術では、ＤＰＩサービスは、通常は汎用プロセッサを用いることによって実現され、ここで、汎用プロセッサはマッチング手段を統合し、ソフトウェアロジックを用いてマッチング手段を駆動することによって特徴マッチングを実現する。汎用プロセッサは、普遍性要求を保証するため、ＤＰＩサービスのために特別に設計されていないため、汎用プロセッサにより統合されるマッチング手段は、一般に正規表現マッチングアルゴリズムなどのユニバーサルマッチングアルゴリズムしかサポートしないが、ＤＰＩサービスのために特別に設計されたマッチングアルゴリズムをサポートせず、これは、不良なマッチングパフォーマンスをもたらし、サービス処理のボトルネックになる。さらに、全てのＤＰＩサービスは汎用プロセッサにおいて実現され、汎用プロセッサのリソースは限定的であるため、ＤＰＩサービスのパフォーマンスは限定的である。図１に示されるように、従来技術では、ＤＰＩサービスを実現する他の方法は、ＤＰＩサービスロジックをハードウェアエンティティに永続的に書き込むことであり、ここで、ハードウェアエンティティは、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であってもよい。例えば、デバイスのＤＰＩサービスロジックは、１．エンドポイントテーブルマッチング、２．ＩＰポート特定、３．アプリケーションレイヤパケットテキスト特徴マッチング、及び４．複雑な復号化後特定の３つのステップに分割される。最初の３つのステップは全て実現のためにハードウェアロジックに永続的に書き込まれてもよいが、ロジックが大変複雑であるステップ４はハードウェアロジックによって実現可能でなく、このため、完了させるのに汎用プロセッサが残される。
【０００４】
ハードウェアを用いることによって実現されるロジックの永続的な書き込みは、不良なスケーラビリティを受けることが明らかであり、ＤＰＩサービスロジック（例えば、上記の具体例における３つのステップは４つのステップになるか、又は順番に変わる）が変わると、ハードウェアコードが書き換えられ、エミュレートされ、その後にフィールドネットワーク上のデバイスに公開される。これは、ネットワークトラフィックの変化に迅速に適応できず、さらに、ＤＰＩサービスロジックの複数のステップが、ソフトウェア及びハードウェアアクセラレーションチップロジックを利用することによって、別々に汎用プロセッサにより実現されるため、必然的に汎用プロセッサはハードウェアアクセラレーションチップと複数回やりとりすることになり、ＤＰＩ処理における長い遅延を生じさせる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施例は、ＤＰＩパフォーマンス及びスケーラビリティを向上させるため、ディープパケットインスペクション方法及び装置並びにコプロセッサを提供する。
【課題を解決するための手段】
【０００６】
第１の態様によると、本発明の実施例は、ディープパケットインスペクション（ＤＰＩ）方法であって、
コプロセッサの送受信モジュールが、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信するステップと、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップであって、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、呼び出すステップと、前記プロセッサコアが、前記汎用プロセッサが前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップと、を有するディープパケットインスペクション方法を提供する。
【０００７】
第１の可能な実現方式では、前記コプロセッサの送受信モジュールが汎用プロセッサにより送信されたオリジナルデータパケットを受信した後であって、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信する前、当該方法は更に、前記オリジナルデータパケットに対してフロー処理を実行するステップを有し、前記オリジナルデータパケットをプロセッサコアに送信するステップは、前記フロー処理されたデータパケットを前記プロセッサコアに送信することを含み、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことは、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記フロー処理されたデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことを含む。
【０００８】
第１の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、前記送受信モジュールのフロー処理サブモジュールが前記オリジナルデータパケットに対してフロー処理を実行するステップは、前記フロー処理サブモジュールが前記オリジナルデータパケットに対してフラグメント化ＩＰパケット再構成処理及びアウトオブオーダＴＣＰパケットリオーダリング処理を実行することを含む。
【０００９】
第１の態様を参照して、第３の可能な実現方式では、少なくとも２つのプロセッサコアが前記コプロセッサに備えられ、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信するステップは、
前記プロセッサコアのそれぞれのロード状態に従って前記少なくとも２つのプロセッサコアから１つのプロセッサコアを選択し、前記オリジナルデータパケットを前記選択されたプロセッサコアに送信することを含む。
【００１０】
第１の態様を参照して、第４の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するため、前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、具体的には、
前記プロセッサコアが、前記コプロセッサのスイッチングバスモジュールを利用することによって、前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことを含む。
【００１１】
第１の態様を参照して、第５の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、エンドポイント検索結果を取得するため、前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む。
【００１２】
第１の態様を参照して、第６の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、前記コプロセッサに含まれる文字列マッチングエンジンを呼び出し、前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記アプリケーションレイヤプロトコルタイプを利用することを含む。
【００１３】
第１の態様を参照して、第７の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれる正規表現マッチングエンジンを呼び出し、前記プロセッサコアの呼び出しの下で前記正規表現マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む。
【００１４】
第１の態様を参照して、第８の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、前記オリジナルデータパケットのアプリケーションレイヤプロトコルを特定するのに前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出すステップと、
前記プロセッサコアが、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行するのに前記コプロセッサに含まれるプロトコル解析サブコプロセッサを呼び出し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記解析結果と前記アプリケーションレイヤプロトコルタイプとを利用するステップと、
を含む。
【００１５】
第１の態様の第６の可能な実現方式を参照して、第９の可能な実現方式では、前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行することは、
前記プロトコル特定サブコプロセッサの呼び出しの下、前記文字列マッチングエンジンが、第１メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従ってフロー処理されたデータパケットに対して文字列マッチングを実行することを含む。
【００１６】
第１の態様又は第１の態様の第１〜９の可能な実現方式の何れか１つを参照して、第１１の可能な実現方式では、前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップは、前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記コプロセッサに含まれる結果報告処理モジュールに送信するステップと、前記結果報告処理モジュールが、所定のフォーマットに従って前記アプリケーションレイヤ解析結果をカプセル化し、前記カプセル化されたアプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップとを含む。
【００１７】
第２の態様によると、本発明の実施例は、ディープパケットインスペクション方法であって、
汎用プロセッサが、オリジナルデータパケットをコプロセッサに送信するステップと、前記汎用プロセッサが、前記コプロセッサにより送信された前記オリジナルデータパケットのアプリケーションレイヤ解析結果を受信するステップであって、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアによって取得され、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、受信するステップと、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップと、を有するディープパケットインスペクション方法を提供する。
【００１８】
第１の可能な実現方式では、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、前記汎用プロセッサが、前記アプリケーションレイヤ解析結果に従って、前記オリジナルデータパケットが暗号化されたデータパケットであるか判断し、前記オリジナルデータパケットが暗号化されたデータパケットである場合、前記オリジナルデータパケットを解読することを含む。
【００１９】
第２の可能な実現方式では、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、
前記汎用プロセッサが、前記アプリケーションレイヤ解析結果に従って、前記オリジナルデータパケットが属するフローのサービスタイプを決定し、前記サービスタイプに従って前記フローに対してトラフィック統計、課金又は送信アクセラレーションを実行することを含む。
【００２０】
第３の可能な実現方式では、前記オリジナルデータパケットのアプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを有し、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプは、前記オリジナルデータパケットに対してプロトコル特定を実行するために前記コプロセッサのプロトコル特定サブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、前記ＵＲＬマッチング結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）であると判断したとき、前記オリジナルデータパケットに対してＵＲＬマッチングを実行するために前記コプロセッサのＵＲＬマッチングエンジンを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、前記汎用プロセッサが、前記アプリケーションレイヤ解析結果と前記ＵＲＬマッチング結果とに従って、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、前記フローをブロックすることを含む。
【００２１】
第３の態様によると、送受信モジュール、サブコプロセッサ及びプロセッサコアを有するコプロセッサであって、
前記送受信モジュールは、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記プロセッサコアに送信するよう構成され、
前記プロセッサコアは、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記サブコプロセッサを呼び出すよう構成され、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用され、前記プロセッサコアは、前記汎用プロセッサが少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成され、
前記サブコプロセッサは、前記オリジナルデータパケットのアプリケーションレイヤ情報を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するよう構成されるコプロセッサを提供する。
【００２２】
第１の可能な実現方式では、前記送受信モジュールは、
前記汎用プロセッサによって送信された前記オリジナルデータパケットを受信するよう構成される受信部と、
前記受信部が前記汎用プロセッサにより送信された前記オリジナルデータパケットを受信した後、前記オリジナルデータパケットに対してフロー処理を実行するよう構成されるフロー処理部と、
前記フロー処理されたデータパケットを前記プロセッサコアに送信するよう構成される配信部と、
を有し、
前記プロセッサコアは、具体的には、前記フロー処理されたデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記サブコプロセッサを呼び出すよう構成される。
【００２３】
第３の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、前記フロー処理部は、具体的には、前記オリジナルデータパケットに対してフラグメント化ＩＰパケット再構成処理及びアウトオブオーダＴＣＰパケットリオーダリング処理を実行するよう構成される。
【００２４】
第３の態様の第１又は第２の可能な実現方式を参照して、第３の可能な実現方式では、少なくとも２つのプロセッサコアがあり、
前記配信部は、具体的には、前記少なくとも２つのプロセッサコアの各プロセッサコアのロード状態を決定し、前記各プロセッサコアのロード状態に従って前記少なくとも２つのプロセッサコアから１つのプロセッサコアを選択し、前記フロー処理されたデータパケットを前記選択されたプロセッサコアに送信するよう構成される。
【００２５】
第３の態様又は第３の態様の第１、第２若しくは第３の可能な実現方式を参照して、第４の可能な実現方式では、当該コプロセッサはスイッチングバスモジュールを更に有し、
前記プロセッサコアは、具体的には、当該コプロセッサのスイッチングバスモジュールを利用して前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行することによって、前記サブコプロセッサを呼び出すよう構成される。
【００２６】
第３の態様を参照して、第５の可能な実現方式では、前記サブコプロセッサは、具体的には、エンドポイント検索結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返すよう構成され、前記プロセッサコアは、具体的には、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される。
【００２７】
第３の態様を参照して、第６の可能な実現方式では、前記サブコプロセッサは、プロトコル特定サブコプロセッサと文字列マッチングエンジンとを有し、前記プロトコル特定サブコプロセッサは、具体的には、前記プロセッサコアの呼び出しの下で前記文字列マッチングエンジンを呼び出すよう構成され、前記文字列マッチングエンジンは、特徴マッチング結果を取得するため、前記プロトコル特定サブコプロセッサの呼び出しの下で前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアは、具体的には、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される。
【００２８】
第３の態様を参照して、第７の可能な実現方式では、前記サブコプロセッサは、具体的には、正規表現マッチングエンジンであり、前記正規表現マッチングエンジンは、特徴マッチング結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、前記プロセッサコアは、具体的には、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される。
【００２９】
第３の態様の第６の可能な実現方式を参照して、第８の可能な実現方式では、前記サブコプロセッサは更に、プロトコル解析サブコプロセッサを有し、前記プロトコル解析サブコプロセッサは、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行し、前記解析結果を前記プロセッサコアに返すよう構成され、前記プロセッサコアは更に、前記汎用プロセッサが前記アプリケーションレイヤプロトコルタイプと前記解析結果とに従って前記オリジナルデータパケットを処理するように、前記解析結果を前記汎用プロセッサに送信するよう構成される。
【００３０】
第３の態様の第６の可能な実現方式を参照して、第９の可能な実現方式では、前記文字列マッチングエンジンは、具体的には、前記プロトコル特定サブコプロセッサの呼び出しの下、第１メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、前記第１メモリは、前記文字列マッチングアルゴリズム状態テーブルを格納するよう構成される。
【００３１】
第３の態様の第９の可能な実現方式を参照して、第１０の可能な実現方式では、前記プロセッサコアは、具体的には、第２メモリから条件ルールデータ構造を読み出し、前記特徴マッチング結果と前記条件ルールデータ構造とに従って前記アプリケーションレイヤプロトコルタイプを決定するよう構成され、前記第２メモリは、前記条件ルールデータ構造を格納するよう構成される。
【００３２】
第４の態様によると、本発明の実施例は、
オリジナルデータパケットをコプロセッサに送信するよう構成される送信モジュールと、前記コプロセッサにより送信された前記オリジナルデータパケットのアプリケーションレイヤ解析結果を受信するよう構成される受信モジュールであって、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアによって取得され、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、受信モジュールと、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するよう構成される処理モジュールと、を有する汎用プロセッサを提供する。
【００３３】
第１の可能な実現方式では、前記処理モジュールは、具体的には、前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットが暗号化されたデータパケットであると特定された場合、前記オリジナルデータパケットを解読するよう構成される。
【００３４】
第２の可能な実現方式では、
前記オリジナルデータパケットのアプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを有し、前記ＵＲＬマッチング結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）であると判断するとき、前記オリジナルデータパケットに対してＵＲＬマッチングを実行するために前記コプロセッサのＵＲＬマッチングエンジンを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、
前記処理モジュールは、具体的には、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプと前記ＵＲＬマッチング結果とに従って、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、前記フローをブロックするよう構成される。
【００３５】
第５の態様によると、本発明の実施例は、本発明の何れかの実施例により提供されたコプロセッサと、本発明の何れかの実施例により提供された汎用プロセッサとを有するディープパケットインスペクション装置を提供する。
【００３６】
第１の可能な実現方式では、１つの汎用プロセッサがある。
【００３７】
第２の可能な実現方式では、少なくとも２つの汎用プロセッサがあり、当該ＤＰＩ装置は更に、ネットワークアダプタとロードバランシング装置とを有し、前記ネットワークアダプタは、ネットワークからデータパケットを受信し、前記データパケットを前記ロードバランシング装置に送信するよう構成され、前記ロードバランシング装置は、前記少なくとも２つの汎用プロセッサの各汎用プロセッサのロード状態を決定し、前記各汎用プロセッサのロード状態に従って１つの汎用プロセッサを選択し、前記データパケットを前記選択された汎用プロセッサに送信するよう構成される。
【発明の効果】
【００３８】
上記の技術的手段から、本発明の実施例により提供されるディープパケットインスペクション方法及び装置とコプロセッサとにおいて、汎用プロセッサとコプロセッサとはＤＰＩを実現するよう連係し、コプロセッサのサブコプロセッサは、汎用プロセッサからＤＰＩ機能を解放するためＤＰＩサービスのために特別に設計されてもよく、汎用プロセッサのリソース占有を軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、中間状態情報が保持可能であり、プロセッサコアとサブコプロセッサとの間のやりとりは全てチップ内のやりとりであり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、処理遅延を短縮する。
【図面の簡単な説明】
【００３９】
【図１】図１は、本発明の実施例による従来技術におけるディープパケットインスペクション方法の概略図である。
【図２】図２は、本発明の実施例によるディープパケットインスペクションアーキテクチャの概略図である。
【図３】図３は、本発明の実施例によるディープパケットインスペクションのアプリケーションシナリオの概略図である。
【図４】図４は、本発明の実施例による第１ディープパケットインスペクション方法のフローチャートである。
【図５】図５は、本発明の実施例による第２ディープパケットインスペクション方法のフローチャートである。
【図６Ａ】図６Ａは、本発明の実施例によるディープパケットインスペクション方法のフローチャートである。
【図６Ｂ】図６Ｂは、本発明の実施例によるディープパケットインスペクション方法のフローチャートである。
【図７Ａ】図７Ａは、本発明の実施例による他のディープパケットインスペクション方法のフローチャートである。
【図７Ｂ】図７Ｂは、本発明の実施例による他のディープパケットインスペクション方法のフローチャートである。
【図８】図８は、本発明の実施例による更なる他のディープパケットインスペクション方法のフローチャートである。
【図９】図９は、本発明の実施例による第１コプロセッサの概略的な構成図である。
【図１０】図１０は、本発明の実施例による第２コプロセッサの概略的な構成図である。
【図１１】図１１は、本発明の実施例による汎用プロセッサの概略的な構成図である。
【図１２】図１２は、本発明の実施例による第１ディープパケットインスペクション装置の概略的な構成図である。
【図１３】図１３は、本発明の実施例による第２ディープパケットインスペクション装置の概略的な構成図である。
【図１４】図１４は、本発明の実施例による第３ディープパケットインスペクション装置の概略的な構成図である。
【発明を実施するための形態】
【００４０】
本発明の実施例の課題、技術的手段及び効果をより明確にするため、以下において、本発明の実施例における添付した図面を参照して本発明の実施例における技術的手段が明確かつ完全に説明される。明らかに、説明される実施例は、本発明の全ての実施例でなく一部である。創作的な努力なく本発明の実施例に基づき当業者により取得される他の全ての実施例は、本発明の保護範囲内に属する。
【００４１】
当業者が本発明の技術的手段をより良好に理解するため、図２に示される本発明の実施例のディープパケットインスペクション（Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ，略してＤＰＩ）アーキテクチャがまず全体的に説明される。
【００４２】
本発明の実施例では、ＤＰＩ処理タスクの機能モジュールは複数のレイヤ（典型的には、４つのレイヤ）に分割され、ここで、上位レイヤはより複雑で全体的なサービスを処理し、下位レイヤはよりシンプルで専用のアルゴリズムを有する。
【００４３】
これらのレイヤは、それぞれ汎用プロセッサとＤＰＩコプロセッサである２つのチップによって実現される。ハードウェアアクセラレーションパフォーマンスを向上させるため、可能な限り多くのＤＰＩ関連タスクがＤＰＩコプロセッサによって実行されてもよい。この場合、汎用プロセッサはより算術集中タスクを実行してもよい。これは、汎用プロセッサは、このタイプのタスクのパフォーマンスについて改善され、付加価値のあるサービスの処理に集中するためである。ＤＰＩコプロセッサは、ＤＰＩサービス制御レイヤ、ＤＰＩサブサービス論理レイヤ及びアルゴリズムエンジンレイヤのロジックを実現するためのものである。ＤＰＩコプロセッサは更に、複数のサブコプロセッサを内部的に有し、ここで、各サブコプロセッサは、ＤＰＩサブサービスのコンプレクシティの相違に従って特定のＤＰＩサブサービスを完了させるよう構成され、サブコプロセッサは、上位レイヤサブコプロセッサ（図２のサブコプロセッサＡなど）と下位レイヤサブコプロセッサ（図２のサブコプロセッサＢ，Ｃ及びＤなど）とに具体的に分類されてもよく、ここで、下位レイヤサブコプロセッサは、具体的にはソフトウェア又はハードウェアにより実現されるアルゴリズムエンジンであってもよく、文字列マッチングエンジン及び正規表現マッチングエンジンなどの特定のアルゴリズムを利用することによって、専用の機能を実現するよう構成されてもよく、下位レイヤサブコプロセッサと比較して、上位レイヤサブコプロセッサは、プロトコル特定及び構文解析などのより一般的なＤＰＩサブサービスを実行するよう構成される。例えば、上位レイヤサブコプロセッサは、複数のサブコプロセッサ及び／又はアルゴリズムエンジン機能を統合する論理又は物理エンティティであってもよく、より先進的で汎用的なＤＰＩサブ機能を実現するよう構成されてもよく、さらに、上位レイヤサブコプロセッサは要求される機能を実現するため下位レイヤモジュールを呼び出してもよく、同じレイヤのサブコプロセッサはまた、連係して機能を完了させるため互いに呼び出してもよい。
【００４４】
具体的には、図３に示されるようなアプリケーションシナリオでは、タスクは以下のレイヤに分割されてもよい。
【００４５】
レイヤ１：ＤＰＩサービスロジックにおける暗号化及び解読、符号化及び復号化、及び複雑なロジック処理、付加価値のあるサービスなどの他の非ＤＰＩサービス、ポリシーマッチング、パケットアクションの実行などを含む大量の算術処理を要求するタスクを担当する算術集中レイヤ。本発明の実施例では、このレイヤのタスクは汎用プロセッサにより完了される。
【００４６】
レイヤ２：ＤＰＩコプロセッサにおいてコアを配置することによって、ＤＰＩエンジン、条件ルールマッチング、クロスパケット処理及び中間状態格納のステップに対するシーケンス制御の実行などのＤＰＩサービス関連制御ロジックを含むＤＰＩサービス制御ロジックを実行するＤＰＩサービス制御レイヤ。本発明の実施例では、このレイヤのタスクは、ＤＰＩコプロセッサにおけるプロセッサコア（コア）によって完了される。
【００４７】
レイヤ３：アプリケーションプロトコル特定、プロトコルディープ解析及びデータパケット動作特徴解析など、永続的に書き込みされうるＤＰＩ固有のサブサービスを担当するＤＰＩサブサービス論理レイヤ。本発明の実施例では、このレイヤのタスクは、データパケットのアプリケーションレイヤプロトコルタイプを特定するためのプロトコル特定サブコプロセッサ、プロトコル上でディープな構文解析を実行するためのプロトコル解析サブコプロセッサなど、ＤＰＩコプロセッサにおける上位レイヤサブコプロセッサによって完了される。
【００４８】
レイヤ４：汎用的な正規表現マッチング、浮動小数点算術、マルチモード文字列マッチング、シングルモード文字列マッチング、動作パラメータ算術などのＤＰＩについて具体的に最適化されるアルゴリズムエンジンタスクを担当するアルゴリズムエンジンレイヤ。このレイヤのタスクは、正規表現マッチングエンジン、浮動小数点算術エンジン、文字列マッチングエンジンなどのＤＰＩコプロセッサにおける下位レイヤサブコプロセッサによって完了される。
【００４９】
ＤＰＩコプロセッサの内部において、すなわち、レイヤ２〜４において、内部バス又はスイッチングバスモジュールがこれらの階層化されたモジュール間のメッセージ及びデータのやりとりに必要とされることに特に留意すべきである。しかしながら、チップ間のやりとりはレイヤ１と他のレイヤとの間で、すなわち、汎用プロセッサとＤＰＩコプロセッサとの間で実行され、これは、典型的には、ＰＣＩＥ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｅｘｐｒｅｓｓ）バスなどであってもよい、当該やりとりを実行するため産業界においてすでに利用可能ないくつかの標準化されたバスを求める。使用中のバスのタイプは、汎用プロセッサによって提供される外部インタフェースに依存する。
【００５０】
より好ましくは、階層化設計アーキテクチャに加えて、本発明の実施例では、外部メモリは更に、ＤＰＩ中間状態を格納するため、ＤＰＩコプロセッサのために構成されてもよく、これにより、より良好なスケーラビリティ及びパフォーマンスを実現する。この場合、状態が格納される必要があるタスクが処理されると、当該タスクは、汎用プロセッサにより完了される必要はなく、ＤＰＩコプロセッサは、それのより多くのプロセッサリソースをオフロードしてもよい。さらに、構成された外部メモリは更に、ＤＰＩ処理中に使用される必要がある各種特徴フィールドのデータ構造及びアルゴリズムに固有のデータ構造とを格納してもよい。この場合、ＤＰＩコプロセッサは、バスを介し汎用プロセッサを利用することによってそれを読み出す代わりに、データを直接的に迅速に読み出すことが可能であり、より高い処理パフォーマンスを実現することができる。
【００５１】
例えば、外部メモリＡは、ＤＰＩコプロセッサがパケットに基づき処理を実行する代わりにフローの状態を検出できるように、フローテーブル並びに状態及びルールを含むソフトウェアコアに固有のデータ構造を格納する。外部メモリＢは、サブコプロセッサのＤＦＡ（決定性有限オートマトン、Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｆｉｎｉｔｅ  Ａｕｔｏｍａｔｏｎ）状態テーブル、シングルモードマッチングアルゴリズム補助データ及びアルゴリズムデータ構造などの各種マッチングエンジン及びサブコプロセッサのデータ構造を格納する。外部メモリＡ及び外部メモリＢは単に論理的に分割され、これら２つが同一の物理メモリに配置されてもよいことに留意すべきである。
【００５２】
上述したＤＰＩアーキテクチャに基づき、本発明の実施例はディープパケットインスペクション方法を提供する。図４は、本発明の実施例による第１ディープパケットインスペクション方法のフローチャートである。図４に示されるように、本実施例により提供されるディープパケットインスペクション方法は、具体的にはネットワーク装置のディープパケットインスペクションＤＰＩプロセスに適用可能であり、ここで、ネットワーク装置は、例えば、ルータ及びゲートウェイなどであってもよい。ディープパケットインスペクション装置はネットワーク装置に備えられてもよく、ここで、ディープパケットインスペクション装置は汎用プロセッサとコプロセッサとを含み、本実施例により提供されるディープパケットインスペクション方法は、コプロセッサを利用することによって実行される。
【００５３】
本実施例により提供されるディープパケットインスペクション方法は、具体的には以下のステップを有する。
【００５４】
ステップＡ１０：コプロセッサの送受信モジュールが、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、オリジナルデータパケットをコプロセッサのプロセッサコアに送信する。
【００５５】
ステップＡ２０：プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも１つのサブコプロセッサを呼び出し、ここで、オリジナルデータパケットのアプリケーションレイヤ解析結果は、ここでは１つずつ列記はしない、アプリケーションレイヤプロトコルタイプ、データパケットが属するサービスなどのデータパケットのアプリケーションレイヤ情報を示すのに利用される。
【００５６】
ステップＡ３０：プロセッサコアが、汎用プロセッサがアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理するように、オリジナルデータパケットのアプリケーションレイヤ解析結果を汎用プロセッサに送信する。
【００５７】
具体的には、ネットワーク装置は、受信したフローにおけるデータパケットをディープ解析することによって、ネットワーク最適化及びアプリケーショントラフィック制御を実現する必要があり、ネットワーク装置は、ネットワークアダプタを利用することによってデータパケットを汎用プロセッサに送信し、汎用プロセッサは、実行のためＤＰＩコプロセッサにＤＰＩ関連タスクを引き渡す。
【００５８】
本発明の本実施例では、コプロセッサは、ＦＰＧＡ（Ｆｉｌｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を利用することによって実現されてもよく、１以上のプロセッサコアがコプロセッサに配置され、送受信モジュール及び複数のサブコプロセッサが更にプロセッサに備えられ、サブコプロセッサがハードウェア記述言語を利用することによって実現され、ここで、ハードウェア記述言語は、ＶＨＤＬ（Ｖｅｒｙ−Ｈｉｇｈ−Ｓｐｅｅｄ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）又はＶｅｒｉｌｏｇ  ＨＤＬであってもよい。サブコプロセッサは、サービス処理パフォーマンスを向上させるため、データパケットに対してアプリケーションプロトコル特定、プロトコル解析などを実行するよう構成されてもよい。
【００５９】
汎用プロセッサはオリジナルデータパケットをコプロセッサの送受信モジュールに送信し、その後、送受信モジュールはオリジナルデータパケットをコプロセッサのプロセッサコアに提供し、コプロセッサのプロセッサコアは、解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにサブコプロセッサを呼び出し、プロセッサコアは解析結果を汎用プロセッサに返し、その後、汎用プロセッサはトラフィック統計、アクセラレーション、トラフィック制限、ブロッキング及びフィルタリングを実行するなど、解析結果に従ってオリジナルデータパケットを処理する。汎用プロセッサは解析結果に従ってフローテーブルを生成し、ここで、フローテーブルは、複数のフローテーブルエントリ及び処理命令を記録し、汎用プロセッサは、データパケットが属するフローを決定し、対応する処理を実行するため、受信したデータパケットとフローテーブルのエントリとをマッチングする。
【００６０】
本実施例により提供されるディープパケットインスペクション方法では、汎用プロセッサ及びコプロセッサはＤＰＩを実現するため連係し、コプロセッサのサブコプロセッサは、より詳細な粒度に従ってコプロセッサを分割することによってＤＰＩサービスについて特別に設計されてもよく、このため、ＤＰＩ機能は汎用プロセッサから解放され、汎用プロセッサのリソース占有が軽減し、この結果、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアが、ＤＰＩサービス制御を実行するためコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、サービス処理のフレキシビリティを大きく向上させ、プロセッサコアとサブコプロセッサとのやりとりが全てチップ内のやりとりとなり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりを回避し、これにより、ＤＰＩパフォーマンスを向上させることができる。
【００６１】
図５は、本発明の実施例による第２ディープパケットインスペクション方法のフローチャートである。図５に示されるように、本発明の本実施例によるディープパケットインスペクション方法は以下のステップを有する。
【００６２】
ステップＡ１０１：コプロセッサの送受信モジュールが汎用プロセッサにより送信されたオリジナルデータパケットを受信する。
【００６３】
ステップＡ１０２：オリジナルデータパケットに対してフロー処理を実行する。
【００６４】
具体的には、オリジナルデータパケットに対するフロー処理の実行は、オリジナルデータパケットに対してフラグメント化ＩＰパケットの再構成処理及びアウトオブオーダＴＣＰパケットのリオーダリング処理を実行することを含むものであってもよい。さらに、オリジナルデータパケットに対するフロー処理の実行は更に、オリジナルデータパケットに対してフローメッセージ保証シーケンス処理を実行することを含むものであってもよい。
【００６５】
ステップＡ１０３：フロー処理されたデータパケットをコプロセッサのプロセッサコアに送信する。
【００６６】
実際のアプリケーション処理では、コプロセッサ上のプロセッサコアの個数は、ＤＰＩサービスの要求に従って設定されてもよく、すなわち、１以上のプロセッサコアがあってもよい。少なくとも２つのプロセッサコアがコプロセッサに備えられるとき、オリジナルデータパケットをコプロセッサのプロセッサコアに送信することは、具体的には、
連係して処理を実行する複数のプロセッサコアの各プロセッサコアのロード状態を決定し、ロードバランシングポリシーに従って複数のプロセッサコアから１つのプロセッサコアを選択し、オリジナルデータパケットを選択されたプロセッサコアに送信することを含む。
【００６７】
具体的には、全てのプロセッサコアのロード状態がモニタされてもよく、プロセッサコアが、データパケットを提供する処理において各プロセッサコアのロード状態に従って選択され、データパケットが、処理リソースが処理のため相対的にアイドルであるプロセッサコアに送信される。
【００６８】
ステップＡ１０４：プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも１つのサブコプロセッサを呼び出す。
【００６９】
本実施例では、プロセッサコアは、具体的には、コプロセッサのスイッチングバスモジュールを利用して、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行することによって、少なくとも１つのサブコプロセッサを呼び出してもよい。
【００７０】
具体的には、スイッチングバスモジュールはＳｗｉｔｃｈ−Ａｒｂｉｔｅｒスイッチングモジュールであってもよく、プロセッサコアと当該プロセッサコアに含まれる各種サブコプロセッサとの間の通信は、スイッチングバスモジュールを利用することによって実現される。
【００７１】
ステップＡ１０５：プロセッサコアは、汎用プロセッサがアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理するように、オリジナルデータパケットのアプリケーションレイヤ解析結果を汎用プロセッサに送信する。
【００７２】
具体的には、一実施例では、結果報告処理モジュールが更にコプロセッサに備えられてもよく、プロセッサコアはオリジナルデータパケットのアプリケーションレイヤ解析結果を結果報告処理モジュールに送信してもよく、結果報告処理モジュールは、所定のフォーマットに従ってアプリケーションレイヤ解析結果をカプセル化し、カプセル化された結果を汎用プロセッサに送信し、ここで、所定のフォーマットは、例えば、ＴＬＶ（Ｔｙｐｅ  Ｌｅｎｇｔｈ  Ｖａｌｕｅ）構造であってもよく、ＴＬＶ構造は、タイプ、長さ及び値を有する汎用的なデータ記述フォーマットである。
【００７３】
本実施例では、外部メモリがコプロセッサが利用するため備えられてもよく、ここで、当該メモリは第１メモリと第２メモリとを有してもよく、第１メモリと第２メモリとは２つの物理的に独立したメモリであってもよいし、又は第１メモリと第２メモリとはまた、同一メモリ上に物理的にあってもよいが、論理的には別々である。第１メモリはサブコプロセッサにより求められるデータ構造を格納するよう構成され、第２メモリは、フロー中間状態データ、エンドポイントテーブルデータ、ポート機能テーブル並びに条件ルールテーブルなど、ＤＰＩサービス制御レイヤにより利用されるデータを格納するよう構成される。
【００７４】
通常、ルールは、アプリケーションプロトコル特定のためのプロトコル特徴又はネットワーク攻撃を防ぐための動作の特徴を記述するのに利用され、第２メモリの条件ルールテーブルは１以上のルールを記録するのに利用される。ルールは、通常は特徴グループを含み、これらの特徴は、データパケットのソース／デスティネーションアドレス、ソース／デスティネーションポート、送信プロトコルタイプ、データパケットのロードに含まれるある特別な文字列及びデータパケットがフラグメント化されているかなど、データパケットの詳細を記述するのに利用される。サブコプロセッサは、特徴マッチング結果を取得するためデータパケットを解析し、プロセッサコアは、アプリケーションレイヤプロトコルタイプを決定するとき、特徴マッチング結果に従って各ルールの特徴をマッチングし、データパケットがルールに一致する場合、当該ルールに対応するアプリケーションレイヤプロトコルタイプは、データパケットのアプリケーションレイヤプロトコルタイプである。特徴は、例えば、文字列、正規表現及び動作特徴などの複数の方法により記述されてもよく、特徴マッチング結果は、異なる特徴について異なる方法により取得されてもよい。
【００７５】
本実施例では、ＤＰＩサブサービスのコンプレクシティの相違に従って、コプロセッサに含まれるサブコプロセッサは、具体的には、汎用的なＤＰＩサブサービスを実行するための上位レイヤサブコプロセッサ（プロトコル特定サブコプロセッサ及びプロトコル解析サブコプロセッサなど）と、ソフトウェア又はハードウェアにより実現されるアルゴリズムエンジン（文字列マッチングエンジン及び正規表現マッチングエンジンなど）などの専用の機能を実現するための下位レイヤサブコプロセッサとに分類されてもよく、ここで、上位レイヤサブコプロセッサは要求される機能を実現するために下位レイヤモジュールを呼び出してもよく、同じレイヤのサブコプロセッサはまた、連係してある機能を完了させるため互いを呼び出してもよい。これに基づき、サブコプロセッサのタイプの相違に従って、ステップＡ１０４の具体的な実現方法はまた異なる。
【００７６】
（１）プロセッサコアがデータパケットのアプリケーションレイヤプロトコルタイプを特定するためにプロトコル特定サブコプロセッサなどの上位レイヤサブコプロセッサを呼び出す場合、可能な実現方法では、プロトコル特定サブコプロセッサは、エンドポイント検索結果を取得するため、プロセッサコアの呼び出しの下でオリジナルデータパケットに対してエンドポイント検索を実行し、エンドポイント検索結果をプロセッサコアに返してもよく、プロセッサコアは、少なくともエンドポイント検索結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用する。
【００７７】
具体的には、状態マシーンがプロトコル特定サブコプロセッサに備えられる。１以上のレコードが、データパケットが配置されるフローのデスティネーションＩＰアドレス、ソースＩＰアドレス、デスティネーションポート及びソースポートの複数のものについてエンドポイントテーブルに検出されるかもしれない場合、データパケットのアプリケーションレイヤプロトコルタイプは、更なるステップを実行することなくエンドポイントテーブルから直接取得されてもよい。例えば、エンドポイントテーブルのレコードは、デスティネーションＩＰアドレス：１０３．２２４．１．９、デスティネーションポート：４４３、アプリケーションレイヤプロトコルタイプ：ｇｍａｉｌ＿ｗｅｂｍａｉｌである。フローのデータパケットがデスティネーションＩＰアドレスの４４３ポートに送信される場合、ＤＰＩ処理結果が直接指定されてもよく、これは、当該フローのデータパケットのアプリケーションレイヤプロトコルタイプがｇｍａｉｌ＿ｗｅｂｍａｉｌであることを示す。
【００７８】
他の可能な実現方法では、プロトコル特定サブコプロセッサは、対応する機能を完了させるのを助けるため、プロセッサの呼び出しの下で文字列マッチングエンジンなどの下位レイヤサブコプロセッサを呼び出してもよく、プロトコル特定サブコプロセッサの呼び出しの下で文字列マッチングエンジンが、特徴マッチング結果を取得するため、オリジナルデータパケットに対して文字列マッチングを実行し、特徴マッチング結果をプロセッサコアに返し、プロセッサコアが、少なくとも特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果としてアプリケーションレイヤプロトコルタイプを利用する。
【００７９】
具体的には、文字列マッチングエンジンは、シングルモード文字列マッチングエンジン又はマルチモード文字列マッチングエンジンであってもよい。シングルモード文字列マッチングエンジンはシングルモード文字列マッチングアルゴリズムを利用し、シングルモード文字列マッチングアルゴリズムはＢＭ（Ｂｏｙｅｒ  Ｍｏｏｒｅ）アルゴリズムを利用してもよい。マルチモード文字列マッチングエンジンはマルチモード文字列マッチングアルゴリズムを利用し、マルチモード文字列マッチングアルゴリズムは、ＡＣ（Ａｈｏ−Ｃｏｒａｓｉｃｋ）アルゴリズム、Ｗｕ−Ｍａｎｂｅｒアルゴリズム、ＥｘＢアルゴリズムなどであってもよい。マルチモード文字列マッチング処理では、１以上の文字列特徴が、ターゲット文字列を１回スキャンすることによって検出されてもよい。
【００８０】
マルチモード文字列マッチングがデータパケットに対して実行される必要があるとき、プロトコル特定サブコプロセッサはマルチモード文字列マッチングエンジンを呼び出し、マルチモード文字列マッチングエンジンは、特徴マッチング結果を取得するため、データパケットをスキャンし、データパケットにおいて１以上の文字列特徴を検出し、特徴マッチング結果をプロセッサコアに返し、その後、プロセッサコアは、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定する。
【００８１】
本実施例では、文字列マッチングエンジンがプロトコル特定サブコプロセッサの呼び出しの下でフロー処理されたデータパケットに対して文字列マッチングを実行することは、
文字列マッチングエンジンが、プロトコル特定サブコプロセッサの呼び出しの下、第１メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、文字列マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して文字列マッチングを実行する。
【００８２】
具体的には、第１メモリは文字列マッチングアルゴリズム状態テーブルを格納し、文字列マッチングエンジンがマルチモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはマルチモード文字列マッチングアルゴリズム状態テーブルであり、文字列マッチングエンジンがシングルモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはシングルモード文字列マッチングアルゴリズム状態テーブルである。例えば、マルチモード文字列マッチングアルゴリズムはＡＣアルゴリズムであり、マルチモード文字列マッチングアルゴリズム状態テーブルはＡＣ状態テーブルであり、マルチモード文字列マッチングエンジンは、マルチモード文字列マッチングアルゴリズム状態テーブルに従ってデータパケットに対してマルチモード文字列マッチングを実現してもよい。文字列マッチングエンジンは、第１メモリに対してリード又はライト処理を直接的に実行せず、キャッシュはコプロセッサに備えられ、データインタラクションは、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）方式によりキャッシュと第１メモリとの間で実現されてもよい。キャッシュを備えることは、外部メモリへのアクセス数を大きく減少させることが可能であり、ここで、大部分のメモリアクセスリクエストはキャッシュを利用することによって完了されてもよく、これは、システムパフォーマンスを大きく向上させる。
【００８３】
（２）プロセッサコアが、例えば、正規表現マッチングを実行するため特別に用いられる正規表現マッチングエンジンなどの下位レイヤサブコプロセッサを呼び出す場合、プロセッサコアの呼び出しの下で正規表現マッチングエンジンは、特徴マッチング結果を取得するため、オリジナルデータパケットに対して正規表現マッチングを実行し、特徴マッチング結果をプロセッサコアに返し、プロセッサコアが、少なくとも特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用する。
【００８４】
具体的には、正規表現マッチングエンジンは正規表現マッチングアルゴリズムを利用してもよく、ここで、正規表現マッチングアルゴリズムは、ＮＦＡ（Ｎｏｎｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｆｉｎｉｔｅ  Ａｕｔｏｍａｔｏｎ、非決定性有限オートマトン）アルゴリズム、ＤＦＡ（Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｆｉｎｉｔｅ  Ａｕｔｏｍａｔｏｎ、決定性有限オートマトン）アルゴリズムなどであってもよく、正規表現マッチング処理では、特徴は文字列を利用することによって記述されず、正規表現を利用することによって記述される。
【００８５】
正規表現マッチングがデータパケットに対して実行される必要があるとき、プロセッサコアは正規表現マッチングエンジンを直接呼び出してもよく、正規表現マッチングエンジンは、特徴マッチング結果を取得するため、データパケットを検索し、特徴マッチング結果をプロセッサコアに返し、その後、プロセッサコアは、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定する。
【００８６】
本実施例では、正規表現マッチングエンジンがプロセッサコアの呼び出しの下でオリジナルデータパケットに対して正規表現マッチングを実行することは、
プロセッサコアの呼び出しの下で正規表現マッチングエンジンが、第１メモリから正規表現マッチングアルゴリズム状態テーブルを読み出し、正規表現マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して正規表現マッチングを実行することを含む。
【００８７】
具体的には、第１メモリは正規表現マッチングアルゴリズム状態テーブルを格納し、例えば、正規表現マッチングアルゴリズムがＤＦＡアルゴリズムであるとき、正規表現マッチングアルゴリズム状態テーブルはＤＦＡ状態テーブルであり、正規表現マッチングエンジンは、正規表現マッチングアルゴリズム状態テーブルに従ってデータパケットに対して正規表現マッチングを実現してもよい。
【００８８】
本発明の他の実施例では、プロセッサコアは更に、動作特徴統計サブコプロセッサを呼び出すことによって、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得してもよい。具体的には、動作特徴統計サブコプロセッサは、特徴マッチング結果を取得するため、プロセッサコアの呼び出しの下でオリジナルデータパケットに対して動作特徴マッチングを実行し、特徴マッチング結果をプロセッサコアに返し、プロセッサコアは、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。
【００８９】
具体的には、動作特徴モデルが異なるアプリケーションプロトコルについて予め作成されてもよく、動作特徴マッチングがデータパケットに対して実行される必要があるとき、動作特徴統計サブコプロセッサは、特徴マッチング結果を取得するため、データパケットにおける動作特徴をマッチングし、特徴マッチング結果をプロセッサコアに返し、その後、プロセッサコアは、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定する。本実施例では、プロセッサコアが特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することは、
プロセッサコアが、キャッシュを利用することによって第２メモリから条件ルールテーブルを読み出し、特徴マッチング結果と条件ルールテーブルとに従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することを含む。
【００９０】
具体的には、第２メモリは条件ルールテーブルを格納し、当該条件ルールテーブルは、ルールとアプリケーションレイヤプロトコルタイプとの間の対応関係を格納し、プロセッサコアは、特徴マッチング結果がルールを充足しているか判断するため、特徴マッチング結果とルールにおける特徴とをマッチングし、ルールが充足されている場合、データパケットのアプリケーションレイヤプロトコルタイプを決定してもよい。プロセッサコアは、第２メモリに対するリード又はライト処理を直接的に実行せず、キャッシュはプロセッサに備えられ、キャッシュと第２メモリとの間のデータのやりとりはＤＭＡ方式により実現されてもよい。
【００９１】
他の実施例では、プロトコル解析サブコプロセッサが更にコプロセッサに備えられ、ここで、状態マシーンがプロトコル解析サブコプロセッサに備えられてもよい。データパケットによって保持されるアプリケーションレイヤプロトコルタイプが、データパケットに対してアプリケーションプロトコル特定を実行することによって分かった後、データパケットにおける情報が更に各種付加価値サービスに対する処理又はルールマッチングを実行するため分かる必要がある場合、ディープ解析が更に、解析結果を取得するため、関連情報を抽出するためにアプリケーションプロトコルフォーマットに従ってデータパケットに対して実行されてもよい。
【００９２】
具体的には、プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも１つのサブコプロセッサを呼び出すことは、具体的には、
プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、オリジナルデータパケットのアプリケーションレイヤプロトコルを特定するためにコプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、
プロセッサコアが、解析結果を取得するため、オリジナルデータパケットに対してプロトコル解析を実行するためにコプロセッサに含まれるプロトコル解析サブコプロセッサを呼び出し、オリジナルデータパケットのアプリケーションレイヤ解析結果として解析結果とアプリケーションレイヤプロトコルタイプとを利用することを含む。
【００９３】
本実施例では、ＵＲＬマッチングエンジンが更にコプロセッサに備えられてもよく、プロセッサコアがオリジナルデータパケットのアプリケーションプロトコルを特定するためにコプロセッサのプロトコル特定サブコプロセッサを呼び出した後、プロセッサコアが、アプリケーションレイヤプロトコルタイプがＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）であると判断した場合、コプロセッサのＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）マッチングエンジンが呼び出され、ＵＲＬマッチングエンジンは、ＵＲＬマッチング結果を取得するため、プロセッサコアの呼び出しの下でオリジナルデータパケットに対してＵＲＬマッチングを実行し、ＵＲＬマッチング結果をプロセッサコアに返し、ここで、処理結果は更にＵＲＬマッチング結果を含む。
【００９４】
例えば、プロセッサコアが、データパケットに対応するフローのアプリケーションレイヤプロトコルタイプがＨＴＴＰであると特定した場合、ＵＲＬマッチングエンジンは、データパケットを更に解析するため呼び出されてもよい。ＵＲＬマッチングエンジンは、ＵＲＬマッチング結果を取得するため、データパケットのＵＲＬ値を取得するために解析を実行してもよい。コプロセッサは、処理結果としてＵＲＬマッチング結果を利用し、処理結果を汎用プロセッサに送信し、汎用プロセッサは、ＵＲＬマッチング結果に従ってＵＲＬ関連ネットワーク管理ジョブを実行してもよい。
【００９５】
実際のアプリケーションでは、ディープパケットインスペクション装置の汎用プロセッサとコプロセッサとは、連係してＤＰＩサービスを実現してもよく、ここで、コプロセッサにおける機能モジュールは実施債のＤＰＩサービス要求に従って備えられてもよく、上記の実施例は機能モジュールの複数の実現方法を提供するが、本発明はこれに限定されるものでない。さらに、処理手順はまた異なるＤＰＩサービスについて異なるものであってもよい。特徴マッチングのジョブはまた、特徴マッチング結果を取得するため、コプロセッサのプロセッサコアを利用することによって完了されてもよく、その後、プロセッサコアが、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。例えば、ＨＴＴＰプロトコルの特徴の１つは、ＴＣＰポート番号が８０であることであってもよく、多くの計算リソースは要求されないため、当該ポートのマッチング処理はコプロセッサのプロセッサコアによって完了されてもよい。
【００９６】
本実施例により提供されるディープパケットインスペクション方法では、汎用プロセッサとコプロセッサとはＤＰＩを実現するよう連係し、コプロセッサのサブコプロセッサは、より詳細な粒度に従ってコプロセッサを分割することによって、ＤＰＩサービスのために特別に設計されてもよく、従って、ＤＰＩ機能は汎用プロセッサから解放され、汎用プロセッサのリソース占有が軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアが、ＤＰＩサービス制御を実行するためにコプロセッサに備えられ、サブコプロセッサがプロセッサコアの呼び出しの下で実行され、サービス処理のフレキシビリティが大きく向上し、外部メモリは、ＤＰＩコプロセッサがＤＰＩ中間状態を格納するよう構成され、これにより、より良好なスケーラビリティ及びパフォーマンスが実現される。状態が格納される必要があるタスクが処理されると、当該タスクは汎用プロセッサにより完了される必要はなく、ＤＰＩコプロセッサはそれのプロセッサリソースをより多く解放してもよい。さらに、外部メモリは、ＤＰＩコプロセッサがＤＰＩ処理中に利用される必要がある各種特徴フィールドのデータ構造とアルゴリズムに固有のデータ構造とを格納するよう構成される。この場合、ＤＰＩコプロセッサは、バスを介し汎用プロセッサを利用することによってそれを読み出す代わりに、データを直接的に迅速に読み出してもよく、処理パフォーマンスを更に向上させることが可能である。
【００９７】
以下において、具体例を参照して本発明の実施例によるＤＰＩアーキテクチャに基づきディープパケットインスペクションを実行する具体的な処理が説明される。図６Ａ及び６Ｂは、本発明の実施例によるディープパケットインスペクション方法のフローチャートである。以下において、図６Ａ及び６Ｂを参照して本実施例により提供されるディープパケットインスペクション方法が説明される。
【００９８】
ステップ１ａ：汎用プロセッサは、コプロセッサの送受信モジュールにデータパケットを送信する。
【００９９】
ステップ２ａ：送受信モジュールは、データパケットをプロセッサコアに送信する。
【０１００】
ステップ３ａ：プロセッサコアは、プロトコル特定サブコプロセッサを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをプロトコル特定サブコプロセッサに送信し、プロトコル特定サブコプロセッサは、データパケットに対してエンドポイント検索を実行する。
【０１０１】
ステップ４ａ：プロトコル特定サブコプロセッサは、検索が成功したか判断し、成功した場合、ステップ５ａを実行し、不成功の場合、ステップ６ａを実行する。
【０１０２】
ステップ５ａ：プロトコル特定サブコプロセッサは、スイッチングバスモジュールを利用することによって、取得したエンドポイント検索結果をプロセッサコアに送信し、ステップ１５ａを実行する。
【０１０３】
ステップ６ａ：プロトコル特定サブコプロセッサは、スイッチングバスモジュールを利用することによって、検索失敗結果をプロセッサコアにフィードバックする。
【０１０４】
ステップ７ａ：プロトコル特定サブコプロセッサは、マルチモード文字列マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをマルチモード文字列マッチングエンジンに送信し、マルチモード文字列マッチングエンジンは、データパケットに対してマルチモード文字列マッチングを実行する。
【０１０５】
ステップ８ａ：マルチモード文字列マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ９ａを実行し、不成功の場合、ステップ１０ａを実行する。
【０１０６】
ステップ９ａ：マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ１５ａを実行する。
【０１０７】
ステップ１０ａ：マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックする。
【０１０８】
ステップ１１ａ：プロセッサコアは、正規表現マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットを正規表現マッチングエンジンに送信し、正規表現マッチングエンジンは、データパケットに対して正規表現マッチングを実行する。
【０１０９】
ステップ１２ａ：正規表現マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ１３ａを実行し、不成功の場合、ステップ１４ａを実行する。
【０１１０】
ステップ１３ａ：正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ１５ａを実行する。
【０１１１】
ステップ１４ａ：正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックし、プロセッサコアは、処理結果としてマッチング失敗結果を結果報告処理モジュールに送信し、ステップ２０ａを実行する。
【０１１２】
ステップ１５ａ：プロセッサコアは、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。
【０１１３】
ステップ１６ａ：プロセッサコアは、ディープ解析がデータパケットに対して実行される必要があるか判断し、必要がある場合、ステップ１７ａを実行し、不必要の場合、ステップ１９ａを実行する。
【０１１４】
ステップ１７ａ：プロセッサコアは、プロトコル解析サブコプロセッサを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをプロトコル解析サブコプロセッサに送信し、プロトコル解析サブコプロセッサは、解析結果を取得するため、データパケットに対してプロトコル解析を実行し、スイッチングバスモジュールを利用することによって、解析結果をプロセッサコアに送信する。
【０１１５】
ステップ１８ａ：プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプと解析結果とを結果報告処理モジュールに送信し、ステップ２０ａを実行する。
【０１１６】
ステップ１９ａ：プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプを結果報告処理モジュールに送信する。
【０１１７】
ステップ２０ａ：結果報告処理モジュールは、処理結果をカプセル化し、それを汎用プロセッサに送信する。
【０１１８】
以下において、他の具体例を参照して本発明の実施例によるＤＰＩアーキテクチャに基づきディープパケットインスペクションを実行する具体的な処理が説明される。図７Ａ及び７Ｂは、本発明の実施例による他のディープパケットインスペクション方法のフローチャートである。以下において、図７Ａ及び７Ｂを参照して本実施例により提供されるディープパケットインスペクション方法が説明される。
【０１１９】
ステップ１ｂ：汎用プロセッサは、データパケットをコプロセッサの送受信モジュールに送信する。
【０１２０】
ステップ２ｂ：送受信モジュールは、データパケットをプロセッサコアに送信する。
【０１２１】
ステップ３ｂ：プロセッサコアは、マルチモード文字列マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをマルチモード文字列マッチングエンジンに送信し、マルチモード文字列マッチングエンジンは、データパケットに対してマルチモード文字列マッチングを実行する。
【０１２２】
ステップ４ｂ：マルチモード文字列マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ５ｂを実行し、不成功の場合、ステップ６ｂを実行する。
【０１２３】
ステップ５ｂ：マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ１５ｂを実行する。
【０１２４】
ステップ６ｂ：マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックする。
【０１２５】
ステップ７ｂ：プロセッサコアは、正規表現マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットを正規表現マッチングエンジンに送信し、正規表現マッチングエンジンは、データパケットに対して正規表現マッチングを実行する。
【０１２６】
ステップ８ｂ：正規表現マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ９ｂを実行し、不成功の場合、ステップ１０ｂを実行する。
【０１２７】
ステップ９ｂ：正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ１５ｂを実行する。
【０１２８】
ステップ１０ｂ：正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックする。
【０１２９】
ステップ１１ｂ：プロセッサコアは、動作特徴統計サブコプロセッサを呼び出し、スイッチングバスモジュールを利用することによって、データパケットを動作特徴統計サブコプロセッサに送信し、動作特徴統計サブコプロセッサは、データパケットに対して動作特徴マッチングを実行する。
【０１３０】
ステップ１２ｂ：動作特徴統計サブコプロセッサは、マッチングが成功したか判断し、成功した場合、ステップ１３ｂを実行し、不成功の場合、ステップ１４ｂを実行する。
【０１３１】
ステップ１３ｂ：動作特徴統計サブコプロセッサは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ１５ｂを実行する。
【０１３２】
ステップ１４ｂ：動作特徴統計サブコプロセッサは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックし、プロセッサコアは、処理結果としてマッチング失敗結果を結果報告処理モジュールに送信し、ステップ２０ｂを実行する。
【０１３３】
ステップ１５ｂ：プロセッサコアは、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。
【０１３４】
ステップ１６ｂ：アプリケーションレイヤプロトコルタイプがＨＴＴＰである場合、プロセッサコアは、データパケットのＵＲＬの値が取得される必要があるか判断し、必要である場合、ステップ１７ｂを実行し、不必要の場合、ステップ１９ｂを実行する。
【０１３５】
ステップ１７ｂ：プロセッサコアは、ＵＲＬマッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをＵＲＬマッチングエンジンに送信し、ＵＲＬマッチングエンジンは、ＵＲＬマッチング結果を取得するため、データパケットのＵＲＬの値を取得するために解析を実行し、スイッチングバスモジュールを利用することによって、ＵＲＬマッチング結果をプロセッサコアに送信する。
【０１３６】
ステップ１８ｂ：プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを結果報告処理モジュールに送信する。
【０１３７】
ステップ１９ｂ：プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプを結果報告処理モジュールに送信する。
【０１３８】
ステップ２０ｂ：結果報告処理モジュールは、処理結果をカプセル化し、それを汎用プロセッサに送信する。
【０１３９】
図８は、本発明の実施例による他のディープパケットインスペクション方法のフローチャートである。図８に示されるように、本実施例により提供されるディープパケットインスペクション方法は、図４に示される実施例により提供される方法と連係して実現されてもよく、ここで、具体的な実現処理はここでは詳細には再説明しない。本実施例により提供されるディープパケットインスペクション方法は、汎用プロセッサを利用することによって実行され、本方法は、具体的には以下のステップを含む。
【０１４０】
ステップＢ１０：汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信する。
【０１４１】
ステップＢ２０：汎用プロセッサは、コプロセッサにより送信されたオリジナルデータパケットのアプリケーションレイヤ解析結果を受信し、アプリケーションレイヤ解析結果は、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも１つのサブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアによって取得され、アプリケーションレイヤ解析結果は、ここでは詳細には再説明しない、アプリケーションレイヤプロトコルタイプ、オリジナルデータパケットが属するサービスなどのオリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される。
【０１４２】
ステップＢ３０：汎用プロセッサは、少なくともアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理する。
【０１４３】
具体的には、ネットワーク装置が受信したフローにおいてデータパケットをディープ解析することによって、ネットワーク最適化及びアプリケーショントラフィック制御を実現する必要があるとき、ネットワーク装置のネットワークアダプタは、当該フローを汎用プロセッサに送信する。汎用プロセッサはオリジナルデータパケットをコプロセッサに送信し、コプロセッサは、アプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行し、ここで、アプリケーションレイヤ解析結果は、アプリケーションレイヤプロトコルタイプ、プロトコルディープ解析結果、ＵＲＬマッチング結果などを含むものであってもよく、コプロセッサはアプリケーションレイヤ解析結果を汎用プロセッサに返し、汎用プロセッサは、トラフィック統計、アクセラレーション、トラフィック制限、ブロッキング及びフィルタリングの実行など、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理する。
【０１４４】
本実施例により提供されるディープパケットインスペクション方法では、汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信し、コプロセッサにより送信された処理結果を受信し、処理結果に従ってオリジナルデータパケットを処理する。汎用プロセッサとコプロセッサとは、ＤＰＩを実現するため連係し、コプロセッサのサブコプロセッサは、汎用プロセッサからＤＰＩ機能を解放するためＤＰＩサービスのために特別に設計されてもよく、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサは、プロセッサコアの呼び出しの下でプロセッサコアとサブコプロセッサとの間のやりとりを実行し、それはまたチップ内のやりとりであってもよく、コプロセッサと汎用プロセッサとの間の頻繁なやりとりを回避し、これにより、実行速度を増大させることができる。
【０１４５】
一実施例では、汎用プロセッサが、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理することは、具体的には、
汎用プロセッサが、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが暗号化されたデータパケットであると判断した場合、オリジナルデータパケットを解読することを含む。
【０１４６】
具体的には、汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信し、オリジナルデータパケットが暗号化されていることを特定すると、コプロセッサは、オリジナルデータパケットが暗号化されたデータパケットであることを示すための処理結果を汎用プロセッサに返し、汎用プロセッサはオリジナルデータパケットを解読し、その後、解読したオリジナルデータパケットをコプロセッサに送信してもよく、ここで、コプロセッサがオリジナルデータパケットを処理する処理については、上記の実施例の説明が参照されてもよい。
【０１４７】
実際のアプリケーションでは、解読処理などの処理の実現は複雑であり、コプロセッサが実行できないタスクは汎用プロセッサにより実現されてもよい。確かに、解読モジュールがコプロセッサに備えられているとき、コプロセッサは自らオリジナルデータパケットを解読してもよい。
【０１４８】
他の実施例では、汎用プロセッサが、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理することは、汎用プロセッサが、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが属するフローのサービスタイプを決定し、サービスタイプに従ってフローに対してトラフィック統計、課金又は送信アクセラレーションを実行することを含むものであってもよい。
【０１４９】
具体的には、オペレータは、ＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）トラフィックに対して課金することを所望し、汎用プロセッサは、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが配置されるデータフローがＳｋｙｐｅプロトコルを利用したＶｏＩＰ電話のデータフローであると判断すると、当該フローに対してトラフィック統計を実行し、これにより、ＶｏＩＰ電話サービスに対する課金を実現してもよい。
【０１５０】
ユーザがオンラインゲームなどのいくつかのアプリケーションに対してトラフィックアクセラレーションを実行することを所望するとき、汎用プロセッサは、フローの送信速度を確保するため、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットが属するフローがオンラインゲームサービスに利用されると判断すると、当該フローに対してアクセラレーションを実行する。
【０１５１】
ユーザがいくつかのアプリケーションをブロックすることを所望するとき、汎用プロセッサは、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットが属するフローが特定のアプリケーションプログラムに利用されると判断すると、当該フローをブロックしてもよい。
【０１５２】
好ましくは、他の実施例では、オリジナルデータパケットのアプリケーションレイヤ解析結果は、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを有し、ここで、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプは、オリジナルデータパケットに対してプロトコル特定を実行するためにコプロセッサのプロトコル特定サブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアにより取得され、さらに、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）であると判断したとき、コプロセッサのプロセッサコアは更に、ＵＲＬマッチング結果を取得するため、オリジナルデータパケットに対してＵＲＬマッチングを実行するためにコプロセッサのＵＲＬマッチングエンジンを呼び出し、ＵＲＬマッチング結果を汎用プロセッサに送信してもよく、コプロセッサにより送信されたＵＲＬマッチング結果を受信した後、汎用プロセッサは、アプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とに従って、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、当該フローをブロックする。
【０１５３】
具体的には、ユーザは、若者が不健全なウェブサイトにアクセスすることを防ぐためグリーンインターネットアクセスサービスを有効にすることを所望し、汎用プロセッサは、処理結果においてＨＴＴＰであるアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とに従って、ＵＲＬによって指示されるウェブサイトへのアクセスが制限されると判断すると、若者が不健全なウェブサイトにアクセスすることを防ぐため、フローをブロックする。
【０１５４】
図９は、本発明の実施例によるコプロセッサの概略的な構成図である。図９に示されるように、本実施例により提供されるコプロセッサ９１は、具体的には、本発明の何れかの実施例により提供され、コプロセッサに適用可能なディープパケットインスペクション方法のステップを実現し、ここで、特定の実現処理はここでは詳細には再説明しない。本実施例により提供されるコプロセッサ９１は、具体的には、送受信モジュール１１、プロセッサコア１２及びサブコプロセッサ１３を有する。
【０１５５】
送受信モジュール１１は、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、オリジナルデータパケットをプロセッサコア１２に送信するよう構成される。
【０１５６】
プロセッサコア１２は、処理結果を取得するため、オリジナルデータパケットに対してアプリケーションプロトコル特定を実行するためにコプロセッサ９１のサブコプロセッサ１３を呼び出し、処理結果を汎用プロセッサに送信するよう構成される。
【０１５７】
サブコプロセッサ１３は、プロセッサコア１２の呼び出しの下でオリジナルデータパケットに対してアプリケーションプロトコル特定を実行するよう構成される。
【０１５８】
コプロセッサ９１は、ＦＰＧＡ又はＡＳＩＣを利用することによって実現されてもよく、１以上のプロセッサコア１２がコプロセッサ９１に配置され、送受信モジュール１１及びサブコプロセッサ１３は更にコプロセッサ９１に備えられ、サブコプロセッサ１３はハードウェア記述言語を利用することによって実現され、ここで、ハードウェア記述言語はＶＨＤＬ又はＶｅｒｉｌｏｇ  ＨＤＬであってもよい。サブコプロセッサ１３は、特にデータパケットに対してアプリケーションプロトコル特定を実行するよう構成され、これにより、サービス処理効果を向上させる。
【０１５９】
本実施例では、コプロセッサ９１は更にスイッチングバスモジュール１４を有してもよい。対応して、プロセッサコア１２は、コプロセッサ９１のスイッチングバスモジュール１４を利用することによってサブコプロセッサ１３を呼び出してもよい。
【０１６０】
さらに、第１メモリ１５及び第２メモリ１６は更にコプロセッサ９１の機能モジュールのために構成されてもよく、ここで、第１メモリはフローテーブルと条件及びルールとを含むソフトウェアコアに固有のデータ構造を格納し、これにより、ＤＰＩコプロセッサは、パケットに基づき処理を実行する代わりにフローの状態を検知することができる。第２メモリは、ＤＦＡ状態テーブル、シングルモードマッチングアルゴリズム補助データ及びサブコプロセッサのアルゴリズムデータ構造などの各種マッチングエンジン及びサブコプロセッサのデータ構造を格納する。第１メモリ及び第２メモリは単に論理的に分割され、ここで、これら２つは同一の物理メモリに配置されてもよいことに留意すべきである。
【０１６１】
本実施例により提供されるコプロセッサ９１では、送受信モジュール１１は、汎用プロセッサ９１により送信されたオリジナルデータパケットを受信し、オリジナルデータパケットをコプロセッサ９１のプロセッサコア１２に送信し、プロセッサコア１２は、処理結果を生成するため、オリジナルデータパケットに対してアプリケーションプロトコル特定を実行するためにコプロセッサ９１のサブコプロセッサ１３を呼び出し、プロセッサコア１２は、処理結果を汎用プロセッサに送信し、これにより、汎用プロセッサは、処理結果に従ってオリジナルデータパケットを処理する。汎用プロセッサとコプロセッサ９１とはＤＰＩを実現するため連係し、コプロセッサ９１のサブコプロセッサ１３は、汎用プロセッサからＤＰＩ機能を解放するためにＤＰＩサービスのために特別に設計されてもよく、これは、汎用プロセッサのリソース占有を軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することができる。さらに、プロセッサコア１２はコプロセッサ９１に備えられ、サブコプロセッサ１３はプロセッサコア１２の呼び出しの下で実行され、これにより、中間状態情報が保持可能であり、プロセッサコア１２とサブコプロセッサ１３との間のやりとりは全てチップ内のやりとりになり、コプロセッサ９１と汎用プロセッサとの頻繁なやりとりを回避し、これにより、実行速度を向上させる。
【０１６２】
図１０は、本発明の実施例による他のコプロセッサ１０の概略的な構成図である。図１０に示されるように、本実施例では、送受信モジュール１１は、受信部１１１、フロー処理部１１２及び配信部１１３を有してもよい。受信部１１１は汎用プロセッサによって送信された前記オリジナルデータパケットを受信するよう構成され、フロー処理部１１２はオリジナルデータパケットに対してフロー処理を実行するよう構成され、配信部１１３はフロー処理されたデータパケットをプロセッサコア１２に送信するよう構成され、具体的には、フロー処理部１１２は、オリジナルデータパケットに対してフラグメント化ＩＰパケット再構成処理及びアウトオブオーダＴＣＰパケットリオーダリング処理を実行するよう具体的に構成され、コプロセッサ１０が複数のプロセッサコアを有するとき、配信部１１３は、具体的には、少なくとも２つのプロセッサコアの各プロセッサコアのロード状態を決定し、各プロセッサコアのロード状態に従って少なくとも２つのプロセッサコアから１つのプロセッサコアを選択し、フロー処理されたデータパケットを選択されたプロセッサコアに送信し、対応して、選択されたプロセッサコアは、フロー処理されたデータパケットに対して、例えば、アプリケーションプロトコル特定などのアプリケーションレイヤ解析を実行するためにサブコプロセッサ１３を呼び出すよう構成される。
【０１６３】
本実施例では、コプロセッサ１０は更にスイッチングバスモジュールを有してもよい。対応して、プロセッサコア１２は、具体的には、コプロセッサ１０のスイッチングバスモジュール１４を利用することによって、サブコプロセッサ１３を呼び出す。
【０１６４】
一実施例では、サブコプロセッサ１３はエンドポイント検索サブコプロセッサであってもよく、この場合、サブコプロセッサ１３は、具体的には、エンドポイント検索結果を取得するため、プロセッサコア１２の呼び出しの下でオリジナルデータパケットに対してエンドポイント検索を実行し、エンドポイント検索結果をプロセッサコア１２に返すよう構成される。プロセッサコア１２は、具体的には、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【０１６５】
他の実施例では、図１０に示されるように、サブコプロセッサ１３はプロトコル特定サブコプロセッサ１３１及び文字列マッチングエンジン１３２を有する。プロトコル特定サブコプロセッサ１３１は、プロセッサコアがサブコプロセッサ１３を呼び出した後、文字列マッチングエンジン１３２を呼び出すよう構成され、文字列マッチングエンジン１３２は、特徴マッチング結果を取得するため、プロトコル特定サブコプロセッサ１３１の呼び出しの下でオリジナルデータパケットに対して文字列マッチングを実行し、特徴マッチング結果をプロセッサコアに返すよう構成される。
【０１６６】
対応して、プロセッサコア１２は、具体的には、少なくとも特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【０１６７】
他の実施例では、サブコプロセッサ１３はまた正規表現マッチングエンジンであってもよい。正規表現マッチングエンジンは、特徴マッチング結果を取得するため、プロセッサコア１２の呼び出しの下でオリジナルデータパケットに対して正規表現マッチングを実行し、特徴マッチング結果をプロセッサコア１２に返すよう構成される。プロセッサコア１２は、具体的には、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【０１６８】
好ましくは、サブコプロセッサ１３は更に、特徴マッチング結果を取得するため、プロセッサコア１２の呼び出しの下でオリジナルデータパケットに対して動作特徴マッチングを実行し、特徴マッチング結果をプロセッサコア１２に返すよう構成される動作特徴統計サブコプロセッサ１３３を有してもよい。プロセッサコア１２は、具体的には、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【０１６９】
好ましくは、本実施例では、コプロセッサ１０は更に、解析結果を取得するため、プロセッサコア１２の呼び出しの下でオリジナルデータパケットに対してプロトコル解析を実行し、解析結果をプロセッサコア１２に返すよう構成されるプロトコル解析サブコプロセッサ１５を有してもよく、対応して、プロセッサコア１２は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果としてオリジナルデータパケットのアプリケーションレイヤプロトコルタイプとプロトコル解析サブコプロセッサ１５により取得された解析結果とを汎用プロセッサに送信するよう構成される。
【０１７０】
好ましくは、本実施例では、コプロセッサ１０は更に、ＵＲＬマッチング結果を取得するため、プロセッサコア１２の呼び出しの下でオリジナルデータパケットに対してＵＲＬマッチングを実行し、ＵＲＬマッチング結果をプロセッサコア１２に返すよう構成されるＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）マッチングエンジン１６を有してもよく、対応して、プロセッサコア１２は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果としてオリジナルデータパケットのアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを汎用プロセッサに送信するよう構成される。
【０１７１】
好ましくは、本実施例では、コプロセッサ１０は更に結果報告処理モジュール１７を有する。プロセッサコア１２は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果を結果報告処理モジュール１７に送信するよう構成され、結果報告処理モジュール１７は、所定のフォーマットに従ってアプリケーションレイヤ解析結果をカプセル化し、カプセル化されたアプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【０１７２】
実際のアプリケーションでは、ＤＰＩ装置の汎用プロセッサとコプロセッサ９１とは連係してＤＰＩサービスを実現し、ここで、コプロセッサ９１の機能モジュールは実際のＤＰＩサービス要求に従って備えられてもよく、プロセッサコア１２のロジックはまた、実際のＤＰＩサービス要求に従ってプログラムされてもよい。上記の実施例は機能モジュールの複数の実現方法を提供するが、本発明はこれに限定されるものでない。
【０１７３】
ＤＰＩ装置は複数のレイヤ、例えば、算術集中レイヤ、ＤＰＩサービス制御レイヤ、ＤＰＩサブサービスロジックレイヤ及びアルゴリズムエンジンレイヤの先頭から最後尾への４つのレイヤに分割されてもよい。より上位のレイヤはより複雑で汎用的なサービスを処理し、より下位のレイヤはよりシンプルでより専用のアルゴリズムを有する。ハードウェアアクセラレーションパフォーマンスを向上させるため、可能な限り多くのＤＰＩ関連タスクがコプロセッサによって実行されるべきである。この場合、汎用プロセッサはより多くの算術集中タスクを実行してもよい。コプロセッサは、ＤＰＩサービス制御レイヤ、ＤＰＩサブサービス論理レイヤ及びアルゴリズムエンジンレイヤのロジックを実現することを担当する。
【０１７４】
原理的には、上位レイヤモジュールは、要求される機能を実現するため下位レイヤモジュールを呼び出す。確かに、同一レイヤのモジュールはまた、連係して機能を完了させるため互いを呼び出してもよい。レイヤは以下において詳細に説明される。
【０１７５】
レイヤ１：ＤＰＩサービスロジックにおける暗号化及び解読、符号化及び復号化、及び複雑なロジック処理、付加価値のあるサービスなどの他の非ＤＰＩサービス、ポリシーマッチング、パケットアクションの実行などを含む大量の算術処理を要求するタスクを担当する算術集中レイヤ。
【０１７６】
レイヤ２：コプロセッサにおいてプロセッサコアを配置することによって、ＤＰＩエンジン、条件ルールマッチング、クロスパケット処理及び中間状態格納のステップに対するシーケンス制御の実行などのＤＰＩサービス関連制御ロジックを含むＤＰＩサービス制御ロジックを実行するＤＰＩサービス制御レイヤ。
【０１７７】
レイヤ３：プロトコル特定サブコプロセッサ、プロトコル解析サブコプロセッサ及び動作特徴統計サブコプロセッサなど固定されてもよいＤＰＩ固有のサブサービスを担当するＤＰＩサブサービス論理レイヤ。
【０１７８】
レイヤ４：正規表現マッチンエンジング、浮動小数点表現エンジン、マルチモード文字列マッチングアルゴリズムエンジン、シングルモード文字列マッチングアルゴリズムエンジン、動作パラメータ算術エンジンなどのＤＰＩについて具体的に最適化されるアルゴリズムエンジンタスクを担当するアルゴリズムエンジンレイヤ。
【０１７９】
コプロセッサの内部において、すなわち、レイヤ２〜４において、スイッチングバスモジュールがこれらの階層化されたモジュール間のメッセージ及びデータのやりとりを実行するよう構成されることに特に留意すべきである。しかしながら、チップ間のやりとりはレイヤ１と他のレイヤとの間で、すなわち、汎用プロセッサとコプロセッサとの間で実行され、これは、例えば、ＰＣＩＥ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｅｘｐｒｅｓｓ）などの標準化されたバスを利用することによって実現されてもよい。バスのタイプは、汎用プロセッサによって提供される外部インタフェースに従って設定されてもよい。
【０１８０】
対応するレイヤに割り当てられてもよいモジュールに加えて、補助的処理のためのいくつかのモジュールがあり、ここで、これらのモジュールはレイヤから独立し、コプロセッサ９１における送受信モジュール、結果報告処理モジュール、メモリリードライトモジュール、キャッシュなどの固定的なロジックを利用することによって実現されてもよい。
【０１８１】
実際の実現処理では、汎用プロセッサは更に、サービスタイプに従って汎用プロセッサ自体又はコプロセッサが処理を実行するか予め決定してもよく、サービスタイプが上位レイヤのものであって複雑な処理アルゴリズムに相当する場合、汎用プロセッサが処理を実行し、サービスタイプがＤＰＩ関連サービスである場合、コプロセッサが処理を実行する。
【０１８２】
階層化された設計アーキテクチャに加えて、本発明の本実施例は更に、ＤＰＩ中間状態を格納するため、コプロセッサのための外部メモリを構成することを提案し、これにより、図１０における第１メモリ８３及び第２メモリ８４などのより良好なスケーラビリティ及びパフォーマンスを実現する。この場合、状態が格納される必要があるタスクが処理されると、当該タスクは汎用プロセッサによって完了される必要はなく、コプロセッサはそれのより多くのプロセッサリソースを解放する。さらに、構成された外部メモリは更に、ＤＰＩ処理中に利用される必要がある各種特徴フィールドのデータ構造及びアルゴリズムに固有のデータ構造を格納してもよい。この場合、コプロセッサは、バスを介し汎用プロセッサを利用することによって読み出す代わりに、データを直接的に迅速に読み出してもよく、より高い処理パフォーマンスを実現してもよい。
【０１８３】
本実施例では、文字列マッチングエンジン１３２は、具体的には、プロセッサコア１２の呼び出しの下、第１メモリ８３から文字列マッチングアルゴリズム状態テーブルを読み出し、特徴マッチング結果を取得するため、文字列マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して文字列マッチングを実行するよう構成され、ここで、第１メモリ８３は文字列マッチングアルゴリズム状態テーブルを格納するよう構成される。
【０１８４】
具体的には、第１メモリ８３はコプロセッサ１０の機能モジュールのために構成され、第１メモリ８３は文字列マッチングアルゴリズム状態テーブルを格納し、文字列マッチングエンジン１３２がマルチモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはマルチモード文字列マッチングアルゴリズム状態テーブルであり、文字列マッチングエンジン１３２がシングルモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはシングルモード文字列マッチングアルゴリズム状態テーブルである。例えば、マルチモード文字列マッチングアルゴリズムはＡＣアルゴリズムであり、マルチモード文字列マッチングアルゴリズム状態テーブルはＡＣ状態テーブルであり、マルチモード文字列マッチングエンジンは、マルチモード文字列マッチングアルゴリズム状態テーブルに従ってデータパケットに対してマルチモード文字列マッチングを実現してもよい。マルチモード文字列マッチングエンジンは、第１メモリ８３に対してリード又はライト処理を直接的には実行せず、コプロセッサ１０にはキャッシュが備えられ、キャッシュを利用することによって第１メモリ８３にアクセスする。
【０１８５】
本実施例では、正規表現マッチングエンジンは、具体的には、プロセッサコア１２の呼び出しの下、第１メモリ８３から正規表現マッチングアルゴリズム状態テーブルを読み出し、正規表現マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して正規表現マッチングを実行するよう構成され、ここで、第１メモリ８３は、正規表現マッチングアルゴリズム状態テーブルを格納するよう構成される。
【０１８６】
具体的には、第１メモリ８３は正規表現マッチングアルゴリズム状態テーブルを格納し、例えば、正規表現マッチングアルゴリズムがＤＦＡアルゴリズムであるとき、正規表現マッチングアルゴリズム状態テーブルはＤＦＡ状態テーブルであり、正規表現マッチングエンジンは、正規表現マッチングアルゴリズム状態テーブルに従ってデータパケットに対して正規表現マッチングを実現してもよい。正規表現マッチングエンジンは、第１メモリ８３に対してリード又はライト処理を直接的には実行せず、コプロセッサ１０にはキャッシュが備えられ、キャッシュを利用することによって第１メモリ８３にアクセスする。
【０１８７】
本実施例では、文字列マッチングエンジン１３２が特徴マッチング結果を取得するため、第１メモリ８３における文字列マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して文字列マッチングを実行した後、プロセッサコア１２は、第２メモリ８４から条件ルールデータ構造を読み出し、特徴マッチング結果及び条件ルールデータ構造に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定するよう構成され、ここで、第２メモリ８４が、条件ルールデータ構造を格納するよう構成される。
【０１８８】
具体的には、第２メモリ８４はコプロセッサ１０のプロセッサコア１２のために構成され、第２メモリ８４は条件ルールデータ構造を格納し、ここで、条件ルールデータ構造は、サービスルールとアプリケーションレイヤプロトコルタイプとの間の対応関係を格納するのに利用され、プロセッサコア１２は、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、文字列マッチングエンジンにより取得された特徴マッチング結果に従って第２メモリの条件ルールデータ構造を検索する。プロセッサコア１２が第２メモリに対してリード又はライト処理を直接的には実行しないことが許容され、コプロセッサ１０にはキャッシュが備えられ、キャッシュを利用することによって第２メモリ８４にアクセスする。
【０１８９】
本実施例では、第１メモリ８３及び第２メモリ８４はダブルバンクモードを有してもよい。
【０１９０】
具体的には、第１メモリ８３及び第２メモリ８４はダブルバンク（Ｄｏｕｂｌｅ  Ｂａｎｋ）モードとなるよう設計されてもよく、ここで、第１バンクは、現在使用され、現在バンクとして参照されるデータ構造を格納するのに利用され、第２バンクは、アップグレードされたデータ構造を格納するのに利用され、アップグレードバンクとして参照される。システムの実行中の処理では、コプロセッサ１０は、サービス処理を実現するため現在のバンクにおけるデータにアクセスする。この処理では、メモリのデータがアップグレードされる必要があるとき、アップグレード対象のデータはアップグレードバンクにロードされてもよく、アップグレード処理は、メモリの現在のバンクへのコプロセッサ１０のアクセスに影響を与えず、新たなデータがロード後にシステムバンクにスイッチされ、この場合、第１バンクがシステムバンクとして利用され、第２バンクが現在バンクとして利用され、同様に、第１バンク及び第２バンクは、アップグレードデータを格納するため交互に利用され、これは、現在のサービスを中断することなくアップグレードが有効であることを保証する。実際のアプリケーションでは、システムバンクがスイッチされた後、いくつかのサービストラフィックは依然として処理中の処理にあるため、処理中の処理に依然としてあるサービストラフィックは新たなシステムバンクに強制的にスイッチされ得ないことが重要である。この場合、新たなサービストラフィックは新たなシステムバンクのデータを利用することによって処理され、既存のサービストラフィックはオリジナルのシステムバンクを利用することによって処理され続ける。オリジナルのシステムバンクは、全ての既存のサービストラフィックが完全に処理された後に限って非アクティブ状態に設定される。これは、現在のサービスを中断することなくシステムアップグレードを実現する。
【０１９１】
例えば、ＢｉｔＴｏｒｒｅｎｔプロトコルのオリジナルの特定機能は“Ｂｔｔｏｒｒｅｎｔ”であるが、ＢｉｔＴｏｒｒｅｎｔソフトウェアはアップグレードされているため、新たな機能は“ＸＢｔｔｏｒｒｅｎｔ”である。従って、ＤＰＩ特定のための知識ベースは更新される必要があり、ここで、本発明のコプロセッサ１０の対応するデータ構造は、ＡＣ状態テーブルに格納される特定の文字列特徴である。従って、新たにコンパイルされた特徴データ構造はアップグレードバンクにロードされる必要がある。ロード処理では、マルチモード文字列マッチングエンジンは依然として現在バンクを利用する。ロード処理が完了した後、現在バンク及びシステムバンクはスイッチされる。マルチモード文字列マッチングエンジンは、新たなＡＣ状態テーブルを読み出してもよい。
【０１９２】
実際のアプリケーション処理は、主としてコンパイル部分と実行部分とを含む。
【０１９３】
コンパイル部分：特徴コンパイラ、解析サブプロセッサコンパイラ、結果テンプレートコンパイラ及びポリシーコンパイラ。
【０１９４】
実際のアプリケーションでは、コンパイラは主として、
ａ．フロントエンドコンパイラ：特徴コンパイラ、解析サブプロセッサコンパイラ、マッチングルールコンパイラなど
ｂ．バックグラウンドコンパイラ：正規表現コンパイラ、シングルモード文字列アルゴリズムコンパイラ、マルチモード文字列アルゴリズムコンパイラなど
を含む。
【０１９５】
フロントエンドコンパイラの主要な機能は、各種ＤＰＩサービスのルール（例えば、アプリケーションプロトコル特定、ＩＰＳ／ＩＤＳ及びＵＲＬフィルタリングなど）を、本発明によるコプロセッサにより利用可能なルール、すなわち、正規表現、文字列、値などに分類し、第２メモリにおいてデータ構造、すなわち、条件ルールデータ構造などを生成し、コプロセッサにおけるプロセッサコアのソフトウェアロジックハイレベルプログラミング言語コードを、コプロセッサのプロセッサコアにより実行可能な命令にコンパイルし、汎用プロセッサにより利用される各種ＤＰＩサービスデータ構造、すなわち、解読特定及びアルゴリズム特定をサポートするため上述されたデータ構造をコンパイルすることを含む。
【０１９６】
バックグラウンドコンパイラの主要な機能は、各種コプロセッサにおける最下位レイヤのアルゴリズムエンジンモジュールにより利用されるデータ構造、すなわち、上記説明で例示され、ここでは詳細には再説明しない第１メモリにおけるデータ構造を有する。
【０１９７】
２つのタイプのコンパイラに加えて、コンパイル部分のモジュールは更にコプロセッサドライブプログラムを有し、当該プログラムは、各種のコンパイルされたデータ構造をコプロセッサの第１メモリ及び第２メモリとコプロセッサのチップ内メモリ（プロセッサコアのロジック命令はプロセッサのチップ内メモリに格納されるなど）とにロードすることを担当する。
【０１９８】
実行部分：コンフィギュレーションＡＰＩ、ＤＰＩ処理ＡＰＩ、ドライブプログラム、ＤＰＩサービス制御レイヤのプロセッサコアのファムウェア、ＤＰＩサブサービス処理レイヤ（解析文字プロセッサ、ＵＲＬフィルタリングモジュール及びポリシーマッチングモジュール）及びアルゴリズムエンジンレイヤ（シングルモード文字列マッチングエンジン、正規表現マッチングエンジン及びマルチモード文字列マッチングエンジン）のハードウェアモジュール。
【０１９９】
図１１は、本発明の実施例による汎用プロセッサの概略的な構成図である。図１１に示されるように、本実施例により提供される汎用プロセッサ８２は、具体的には、本発明の何れかの実施例により提供され、汎用プロセッサに適用可能なディープパケットインスペクション方法のステップを実現してもよく、ここで、特定の実現処理はここでは詳細には再説明しない。本実施例により提供される汎用プロセッサは、送信モジュール２１、送受信モジュール２２及び処理モジュール２３を有する。
【０２００】
送信モジュール２１は、オリジナルデータパケットをコプロセッサに送信するよう構成される。
【０２０１】
受信モジュール２２は、コプロセッサによって送信されたオリジナルデータパケットのアプリケーションレイヤ解析結果を受信するよう構成され、ここで、アプリケーションレイヤ解析結果は、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも１つのサブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアにより取得され、アプリケーションレイヤ解析結果は、オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される。
【０２０２】
処理モジュール２３は、少なくともアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理するよう構成される。
【０２０３】
本実施例により提供される汎用プロセッサでは、汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信し、コプロセッサにより送信された処理結果を受信し、処理結果に従ってオリジナルデータパケットを処理する。汎用プロセッサとコプロセッサとはＤＰＩを実現するため連係し、コプロセッサのサブコプロセッサは、汎用プロセッサからＤＰＩ機能を解放するためＤＰＩサービスのために特別に設計されてもよく、これは、汎用プロセッサのリソース占有を軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、これにより、中間状態情報が保持可能になり、プロセッサコアとサブコプロセッサとの間のやりとりは全てチップ内のやりとりになり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、これにより、実行速度を向上させることができる。
【０２０４】
一実施例では、処理モジュール２３は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータが暗号化されたデータパケットであると特定された場合、オリジナルデータパケットを解読するよう構成される。
【０２０５】
他の実施例では、処理モジュール２３は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが属するフローのサービスタイプを決定し、サービスタイプに従ってオリジナルデータパケットが属するフローに対してトラフィック統計、課金又は送信アクセラレーションを実行するよう構成される。
【０２０６】
他の実施例では、オリジナルデータパケットのアプリケーションレイヤ解析結果は、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とを含み、ここで、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプは、オリジナルデータパケットに対してプロトコル特定を実行するためにコプロセッサのプロトコル特定サブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアによって取得されてもよく、さらに、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）であると判断すると、コプロセッサのプロセッサコアは更に、ＵＲＬマッチング結果を取得するため、オリジナルデータパケットに対してＵＲＬマッチングを実行するためにコプロセッサのＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）マッチングエンジンを呼び出し、ＵＲＬマッチング結果を汎用プロセッサに送信してもよく、対応して、コプロセッサにより送信されたＵＲＬマッチング結果を受信した後、汎用プロセッサは、アプリケーションレイヤプロトコルタイプとＵＲＬマッチング結果とに従って、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、当該フローをブロックする。
【０２０７】
図１２は、本発明の実施例による第１ＤＰＩ装置の概略的な構成図である。図１２に示されるように、本実施例により提供されるＤＰＩ装置は、本発明の何れかの実施例により提供されるコプロセッサ８１と、本発明の何れかの実施例により提供される汎用プロセッサ８２とを含む。
【０２０８】
本実施例により提供されるＤＰＩ装置では、汎用プロセッサ８２とコプロセッサ８１とはＤＰＩを実現するため連係し、コプロセッサ８１のサブコプロセッサはＤＰＩサービスのために特別に設計されてもよく、ＤＰＩ機能は汎用プロセッサ８２から解放され、これは、汎用プロセッサ８２のリソース占有を軽減し、これにより、汎用プロセッサ８２は他の付加価値サービスを処理してもよい。さらに、プロセッサコアがコプロセッサ８１に備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、中間状態情報が保持されてもよく、プロセッサコアとサブコプロセッサとの間の全てのやりとりがチップ内のやりとりとなり、コプロセッサ８１と汎用プロセッサ８２との間の頻繁なやりとりが回避され、これにより、実行速度が向上する。
【０２０９】
一実施例では、ＤＰＩ装置に含まれる１つの汎用プロセッサがある。実際のアプリケーションでは、１つのコプロセッサはまた、１以上の汎用プロセッサと連係してＤＰＩサービスを実現してもよい。
【０２１０】
他の実施例では、ＤＰＩ装置に含まれる少なくとも２つの汎用プロセッサがあり、ＤＰＩ装置は更にネットワークアダプタとロードバランシング装置とを有する。
【０２１１】
ネットワークアダプタは、ネットワークからデータパケットを受信し、データパケットをロードバランシング装置に送信するよう構成され、
ロードバランシング装置は、少なくとも２つの汎用プロセッサの各汎用プロセッサのロード状態を取得し、各汎用プロセッサのロード状態に従って１つの汎用プロセッサを選択し、データパケットを選択された汎用プロセッサに送信するよう構成される。
【０２１２】
図１３は、本発明の実施例による第２ＤＰＩ装置の概略的な構成図である。図１３に示されるように、２つの汎用ＣＰＵ（図１３の３３及び３５）がＤＰＩ装置に備えられる具体例を利用して、ネットワークアダプタ３１及びロードバランシング装置３２が更にＤＰＩ装置に備えられる。ネットワークアダプタ３１は、ネットワークにおける他の装置により送信されたデータパケットを受信し、ロードシェアリングを担当するロードバランシング装置３２を利用することによって、処理のため適切な汎用ＣＰＵに送信し、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）方式を利用しない。汎用ＣＰＵは、ＤＰＩ処理が要求されていると判断すると、データパケットをコプロセッサ３４に送信し、コプロセッサ３４が処理を終了した後、ＰＣＩＥインタフェースを介しＤＰＩ処理結果を受信し、ＤＰＩ処理結果に従って他のサービス処理を更に実行した後、ネットワークアダプタ３１を利用することによって、転送対象のデータパケットを転送する。
【０２１３】
ロードバランシング装置３２はＦＰＧＡを利用することによって実現されてもよく、ロードバランシング装置３２は、一方では各汎用ＣＰＵのロード状態に従ってデータパケットを処理するのに適切な汎用ＣＰＵを選択し、他方では、メッセージ送受信ロジックを実現してもよい。ＤＰＩ装置が１つの汎用ＣＰＵしか有さないとき、ロードバランシング装置３２が備えられないことが許容され、メッセージ送受信ロジックは他のチップを利用することによって実現されてもよく、本発明の本実施例の汎用ＣＰＵは、具体的には、Ｃａｖｉｕｍ汎用ＣＰＵであってもよい。
【０２１４】
本発明の本実施例により提供されるＤＰＩ装置では、汎用プロセッサとコプロセッサとはＤＰＩを実現するため連係し、コプロセッサにおけるサブコプロセッサは、汎用プロセッサからＤＰＩ機能を解放するためにＤＰＩサービスのために特別に設計されてもよく、汎用プロセッサのリソース占有が軽減され、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサがプロセッサコアの呼び出しの下で実行され、中間状態情報が保持可能であり、プロセッサコアとサブコプロセッサとの間のやりとりが全てチップ内のやりとりとなり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、これにより、処理遅延を短縮できる。
【０２１５】
図１４は、本発明の実施例による第３ＤＰＩ装置の概略的な構成図である。図１４に示されるように、本実施例では、ＤＰＩ装置は２つの汎用ＣＰＵ（図１４の４２，４５）を有し、ＤＤＲ３メモリ４３は汎用ＣＰＵ４２のために構成され、ＤＤＲ３ｍｅｍｏｒｙ４６は汎用ＣＰＵ４５のために構成される。ネットワークアダプタ４１が更にＤＰＩ装置に備えられ、ネットワークの他の装置により送信されたデータパケットを受信した後、ネットワークアダプタ４１はまず、ＰＣＩ−Ｅインタフェースを利用することによってＤＭＡ方式によりデータパケットを読み出しよう汎用ＣＰＵ４２をトリガし、データパケットをネットワークアダプタにより用いられるＤＤＲ３メモリ４３に格納する。汎用ＣＰＵ４２がある処理の実行後にＤＰＩ処理が実行される必要があると検出した場合、汎用ＣＰＵ４２は、ＤＰＩ処理のためデータパケットをＤＭＡ方式によりコプロセッサ４４に送信し、処理の完了後、コプロセッサ４４は、更なる処理のためＤＰＩ処理結果を汎用ＣＰＵ４２に返し、その後、Ｓａｎｄｙ−Ｂｒｉｄｇｅ汎用ＣＰＵ４２は、転送される必要があるデータパケットをネットワークアダプタ４１を利用することによってネットワークの次のネットワーク装置に送信する。本発明の本実施例による汎用ＣＰＵがＳａｎｄｙ−Ｂｒｉｄｇｅ汎用ＣＰＵであってもよいことに留意すべきである。
【０２１６】
本発明の本実施例により提供されるＤＰＩ装置では、汎用プロセッサとコプロセッサとはＤＰＩを実現するよう連係し、コプロセッサのサブコプロセッサは、ＤＰＩ機能を汎用プロセッサから解放するため、ＤＰＩサービスのために特別に設計されてもよく、汎用プロセッサのリソース占有が軽減され、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、これにより、中間状態情報が保持可能となり、プロセッサコアとサブコプロセッサとの間のやりとりが全てチップ内のやりとりになり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、これにより、処理遅延が短縮される。
【０２１７】
本発明の実施例により提供されるディープパケットインスペクション方法及び装置は複数のアプリケーションシナリオに適用されてもよく、例えば、限定することなく、ＤＰＩコプロセッサを利用して企業ネットワークルータ上でアプリケーションプロトコル特定、ディーププロトコル解析、ＩＤＳ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ）及びポリシーエンジンを実行し、ＤＰＩコプロセッサを利用してルータ及びＢＲＡＳ（Ｂｒｏａｄｂａｎｄ  Ｒｅｍｏｔｅ  Ａｃｃｅｓｓ  Ｓｅｒｖｅｒ）上でアプリケーションプロトコル特定、ディーププロトコル解析及びポリシーエンジンを実行し、ＤＰＩコプロセッサを利用してアプリケーションゲートウェイ上でアプリケーションプロトコル特定、ディーププロトコル解析、コンテンツフィルタリング及びポリシーエンジンを実行し、ＤＰＩコプロセッサを利用して無線アクセスネットワーク要素ＲＮＣ（Ｒａｄｉｏ  Ｎｅｔｗｏｒｋ  Ｃｏｎｔｒｏｌｌｅｒ）及びＮｏｄｅＢ上でアプリケーションプロトコル特定、ディーププロトコル解析、無線リソース最適化及びポリシーエンジンを実行する。
【０２１８】
当業者は、方法の実施例のステップの全て又は一部がプログラムが関連するハードウェアに命令することによって実現されてもよい。プログラムはコンピュータ可読記憶媒体に格納されてもよい。プログラムが実行されると、方法の実施例のステップが実行される。上記の記憶媒体は、ＲＯＭ、ＲＡＭ、磁気ディスク又は光ディスクなどのプログラムコードを格納可能な何れかの媒体を含む。
【０２１９】
最後に、上記の実施例は本発明を限定する以外の本発明の技術的手段を説明することを単に意図したものであることに留意すべきである。本発明は上記の実施例を参照して詳細に説明されたが、当業者は、本発明の実施例の技術的手段の範囲から逸脱することなく、上記の実施例において説明された技術的手段に対して修正したり、又はある技術的特徴との等価な置換をしてもよいことを理解すべきである。
【図１】
2015537278.tif 000003
【図２】
2015537278.tif 000004
【図３】
2015537278.tif 000005
【図４】
2015537278.tif 000006
【図５】
2015537278.tif 000007
【図６Ａ】
2015537278.tif 000008
【図６Ｂ】
2015537278.tif 000009
【図７Ａ】
2015537278.tif 000010
【図７Ｂ】
2015537278.tif 000011
【図８】
2015537278.tif 000012
【図９】
2015537278.tif 000013
【図１０】
2015537278.tif 000014
【図１１】
2015537278.tif 000015
【図１２】
2015537278.tif 000016
【図１３】
2015537278.tif 000017
【図１４】
2015537278.tif 000018
【手続補正書】
【提出日】平成27年3月20日(2015.3.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ディープパケットインスペクション（ＤＰＩ）方法であって、
コプロセッサの送受信モジュールが、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信するステップと、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップであって、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、呼び出すステップと、
前記プロセッサコアが、前記汎用プロセッサが前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップと、
を有するディープパケットインスペクション方法。
【請求項２】
前記プロセッサコアが、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するため、前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサのスイッチングバスモジュールを利用することによって、前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すことを含む、請求項１記載のディープパケットインスペクション方法。
【請求項３】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、前記コプロセッサに含まれる文字列マッチングエンジンを呼び出し、前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記アプリケーションレイヤプロトコルタイプを利用することを含む、請求項１又は２記載のディープパケットインスペクション方法。
【請求項４】
前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行することは、
前記プロトコル特定サブコプロセッサの呼び出しの下、前記文字列マッチングエンジンが、第１メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記フロー処理されたデータパケットに対して前記文字列マッチングを実行することを含む、請求項３記載のディープパケットインスペクション方法。
【請求項５】
前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することは、
前記プロセッサコアが、第２メモリから条件ルールデータ構造を読み出し、前記特徴マッチング結果と前記条件ルールデータ構造とに従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することを含む、請求項４記載のディープパケットインスペクション方法。
【請求項６】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、エンドポイント検索結果を取得するため、前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む、請求項１又は２記載のディープパケットインスペクション方法。
【請求項７】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサに含まれる正規表現マッチングエンジンを呼び出し、前記プロセッサコアの呼び出しの下で前記正規表現マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む、請求項１又は２記載のディープパケットインスペクション方法。
【請求項８】
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも１つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、前記オリジナルデータパケットのアプリケーションレイヤプロトコルを特定するのに前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出すステップと、
前記プロセッサコアが、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行するのに前記コプロセッサに含まれるプロトコル解析サブコプロセッサを呼び出し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記解析結果と前記アプリケーションレイヤプロトコルタイプとを利用するステップと、
を含む、請求項１又は２記載のディープパケットインスペクション方法。
【請求項９】
前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップは、
前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記コプロセッサに含まれる結果報告処理モジュールに送信するステップと、
前記結果報告処理モジュールが、所定のフォーマットに従って前記アプリケーションレイヤ解析結果をカプセル化し、前記カプセル化されたアプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップと、
を含む、請求項１乃至８何れか一項記載のディープパケットインスペクション方法。
【請求項１０】
送受信モジュール、サブコプロセッサ及びプロセッサコアを有するコプロセッサであって、
前記送受信モジュールは、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記プロセッサコアに送信するよう構成され、
前記プロセッサコアは、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記サブコプロセッサを呼び出すよう構成され、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用され、前記プロセッサコアは、前記汎用プロセッサが少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成され、
前記サブコプロセッサは、前記オリジナルデータパケットのアプリケーションレイヤ情報を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するよう構成されるコプロセッサ。
【請求項１１】
スイッチングバスモジュールを更に有し、
前記プロセッサコアは、当該コプロセッサのスイッチングバスモジュールを利用して前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行することによって、前記サブコプロセッサを呼び出すよう構成される、請求項１０記載のコプロセッサ。
【請求項１２】
前記サブコプロセッサは、エンドポイント検索結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返すよう構成され、
前記プロセッサコアは、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１０又は１１記載のコプロセッサ。
【請求項１３】
前記サブコプロセッサは、プロトコル特定サブコプロセッサと文字列マッチングエンジンとを有し、
前記プロトコル特定サブコプロセッサは、前記プロセッサコアの呼び出しの下で前記文字列マッチングエンジンを呼び出すよう構成され、前記文字列マッチングエンジンは、特徴マッチング結果を取得するため、前記プロトコル特定サブコプロセッサの呼び出しの下で前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、
前記プロセッサコアは、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１０又は１１記載のコプロセッサ。
【請求項１４】
前記サブコプロセッサは更に、プロトコル解析サブコプロセッサを有し、
前記プロトコル解析サブコプロセッサは、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行し、前記解析結果を前記プロトコルコアに返すよう構成され、
前記プロセッサコアは更に、前記汎用プロセッサが前記アプリケーションレイヤプロトコルタイプと前記解析結果とに従って前記オリジナルデータパケットを処理するように、前記解析結果を前記汎用プロセッサに送信するよう構成される、請求項１３記載のコプロセッサ。
【請求項１５】
前記文字列マッチングエンジンは、前記プロトコル特定サブコプロセッサの呼び出しの下、第１メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、
前記第１メモリは、前記文字列マッチングアルゴリズム状態テーブルを格納するよう構成される、請求項１３又は１４記載のコプロセッサ。
【請求項１６】
前記プロセッサコアは、第２メモリから条件ルールデータ構造を読み出し、前記特徴マッチング結果と前記条件ルールデータ構造とに従って前記アプリケーションレイヤプロトコルタイプを決定するよう構成され、
前記第２メモリは、前記条件ルールデータ構造を格納するよう構成される、請求項１５記載のコプロセッサ。
【請求項１７】
前記第１メモリと前記第２メモリとは、ダブルバンクモードである、請求項１６記載のコプロセッサ。
【請求項１８】
前記サブコプロセッサは、正規表現マッチングエンジンであり、
前記正規表現マッチングエンジンは、特徴マッチング結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、
前記プロセッサコアは、具体的には、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１０又は１１記載のコプロセッサ。
【請求項１９】
結果報告処理モジュールを更に有し、
前記プロセッサコアは、前記アプリケーションレイヤ解析結果を前記結果報告処理モジュールに送信するよう構成され、
前記結果報告処理モジュールは、所定のフォーマットに従って前記アプリケーションレイヤ解析結果をカプセル化し、前記カプセル化されたアプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項１０乃至１８何れか一項記載のコプロセッサ。
【請求項２０】
請求項１０乃至１９何れか一項記載のコプロセッサと、汎用プロセッサとを有するディープパケットインスペクション（ＤＰＩ）装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
これらのレイヤは、それぞれ汎用プロセッサとＤＰＩコプロセッサである２つのチップによって実現される。ハードウェアアクセラレーションパフォーマンスを向上させるため、可能な限り多くのＤＰＩ関連タスクがＤＰＩコプロセッサによって実行されてもよい。この場合、汎用プロセッサはより算術集中タスクを実行してもよい。これは、汎用プロセッサは、このタイプのタスクのパフォーマンスについて改善され、付加価値のあるサービスの処理に集中するためである。ＤＰＩコプロセッサは、ＤＰＩサービス制御レイヤ、ＤＰＩサブサービス論理レイヤ及びアルゴリズムエンジンレイヤのロジックを実現するためのものである。ＤＰＩコプロセッサは更に、複数のサブコプロセッサを内部的に有し、ここで、各サブコプロセッサは、ＤＰＩサブサービスのコンプレクシティの相違に従って特定のＤＰＩサブサービスを完了させるよう構成され、サブコプロセッサは、上位レイヤサブコプロセッサ（図２のサブコプロセッサＡなど）と下位レイヤサブコプロセッサ（図２のサブコプロセッサＢ，Ｃ及びＤなど）とに具体的に分類されてもよく、ここで、下位レイヤサブコプロセッサは、具体的にはソフトウェア又はハードウェアにより実現されるアルゴリズムエンジンであってもよく、文字列マッチングエンジン及び正規表現マッチングエンジンなどの特定のアルゴリズムを利用することによって、専用の機能を実現するよう構成されてもよく、下位レイヤサブコプロセッサと比較して、上位レイヤサブコプロセッサは、プロトコル特定及び構文解析などのより一般的なＤＰＩサブサービスを実行するよう構成される。例えば、上位レイヤサブコプロセッサは、複数のサブコプロセッサ及び／又はアルゴリズムエンジン機能を統合する論理又は物理エンティティであってもよく、より先進的で汎用的なＤＰＩサブ機能を実現するよう構成されてもよく、さらに、上位レイヤサブコプロセッサは要求される機能を実現するため下位レイヤサブコプロセッサを呼び出してもよく、同じレイヤのサブコプロセッサはまた、連係して機能を完了させるため互いに呼び出してもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４９
【補正方法】変更
【補正の内容】
【００４９】
ＤＰＩコプロセッサの内部において、すなわち、レイヤ２〜４において、内部バス又はスイッチングバスモジュールがこれらの階層化されたモジュール間のメッセージ及びデータのやりとりに必要とされることに特に留意すべきである。しかしながら、チップ間のやりとりはレイヤ１と他のレイヤとの間で、すなわち、汎用プロセッサとＤＰＩコプロセッサとの間で実行され、これは、典型的には、ＰＣＩＥ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスなどであってもよい、当該やりとりを実行するため産業界においてすでに利用可能ないくつかの標準化されたバスを求める。使用中のバスのタイプは、汎用プロセッサによって提供される外部インタフェースに依存する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
本実施例では、ＤＰＩサブサービスのコンプレクシティの相違に従って、コプロセッサに含まれるサブコプロセッサは、具体的には、汎用的なＤＰＩサブサービスを実行するための上位レイヤサブコプロセッサ（プロトコル特定サブコプロセッサ及びプロトコル解析サブコプロセッサなど）と、ソフトウェア又はハードウェアにより実現されるアルゴリズムエンジン（文字列マッチングエンジン及び正規表現マッチングエンジンなど）などの専用の機能を実現するための下位レイヤサブコプロセッサとに分類されてもよく、ここで、上位レイヤサブコプロセッサは要求される機能を実現するために下位レイヤサブコプロセッサを呼び出してもよく、同じレイヤのサブコプロセッサはまた、連係してある機能を完了させるため互いを呼び出してもよい。これに基づき、サブコプロセッサのタイプの相違に従って、ステップＡ１０４の具体的な実現方法はまた異なる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１６５
【補正方法】変更
【補正の内容】
【０１６５】
他の実施例では、図１０に示されるように、サブコプロセッサ１３はプロトコル特定サブコプロセッサ及び文字列マッチングエンジン１３２を有する。プロトコル特定サブコプロセッサは、プロセッサコアがサブコプロセッサ１３を呼び出した後、文字列マッチングエンジン１３２を呼び出すよう構成され、文字列マッチングエンジン１３２は、特徴マッチング結果を取得するため、プロトコル特定サブコプロセッサの呼び出しの下でオリジナルデータパケットに対して文字列マッチングを実行し、特徴マッチング結果をプロセッサコアに返すよう構成される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０２０４
【補正方法】変更
【補正の内容】
【０２０４】
一実施例では、処理モジュール２３は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが暗号化されたデータパケットであると特定された場合、オリジナルデータパケットを解読するよう構成される。
【国際調査報告】
2015537278.tif 000019
2015537278.tif 000020
2015537278.tif 000021
2015537278.tif 000022