(58)【調査した分野】(Int.Cl.,DB名)
前記プロセッサコアが、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するため、前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサのスイッチングバスモジュールを利用することによって、前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すことを含む、請求項1記載のディープパケットインスペクション方法。
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、前記コプロセッサに含まれる文字列マッチングエンジンを呼び出し、前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記アプリケーションレイヤプロトコルタイプを利用することを含む、請求項1又は2記載のディープパケットインスペクション方法。
前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行することは、
前記プロトコル特定サブコプロセッサの呼び出しの下、前記文字列マッチングエンジンが、第1メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記オリジナルデータパケットに対して前記文字列マッチングを実行することを含む、請求項3記載のディープパケットインスペクション方法。
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、エンドポイント検索結果を取得するため、前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む、請求項1又は2記載のディープパケットインスペクション方法。
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、前記プロセッサコアが、前記コプロセッサに含まれる正規表現マッチングエンジンを呼び出し、前記プロセッサコアの呼び出しの下で前記正規表現マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む、請求項1又は2記載のディープパケットインスペクション方法。
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、前記オリジナルデータパケットのアプリケーションレイヤプロトコルを特定するのに前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出すステップと、
前記プロセッサコアが、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行するのに前記コプロセッサに含まれるプロトコル解析サブコプロセッサを呼び出し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記解析結果と前記アプリケーションレイヤプロトコルタイプとを利用するステップと、
を含む、請求項1又は2記載のディープパケットインスペクション方法。
前記サブコプロセッサは、エンドポイント検索結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返すよう構成され、
前記プロセッサコアは、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される、請求項10又は11記載のコプロセッサ。
前記文字列マッチングエンジンは、前記プロトコル特定サブコプロセッサの呼び出しの下、第1メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、
前記第1メモリは、前記文字列マッチングアルゴリズム状態テーブルを格納するよう構成される、請求項13又は14記載のコプロセッサ。
前記プロセッサコアは、第2メモリから条件ルールデータ構造を読み出し、前記特徴マッチング結果と前記条件ルールデータ構造とに従って前記アプリケーションレイヤプロトコルタイプを決定するよう構成され、
前記第2メモリは、前記条件ルールデータ構造を格納するよう構成される、請求項15記載のコプロセッサ。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施例は、DPIパフォーマンス及びスケーラビリティを向上させるため、ディープパケットインスペクション方法及び装置並びにコプロセッサを提供する。
【課題を解決するための手段】
【0006】
第1の態様によると、本発明の実施例は、ディープパケットインスペクション(DPI)方法であって、
コプロセッサの送受信モジュールが、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信するステップと、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップであって、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、呼び出すステップと、前記プロセッサコアが、前記汎用プロセッサが前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップと、を有するディープパケットインスペクション方法を提供する。
【0007】
第1の可能な実現方式では、前記コプロセッサの送受信モジュールが汎用プロセッサにより送信されたオリジナルデータパケットを受信した後であって、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信する前、当該方法は更に、前記オリジナルデータパケットに対してフロー処理を実行するステップを有し、前記オリジナルデータパケットをプロセッサコアに送信するステップは、前記フロー処理されたデータパケットを前記プロセッサコアに送信することを含み、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すことは、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記フロー処理されたデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すことを含む。
【0008】
第1の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、前記送受信モジュールのフロー処理サブモジュールが前記オリジナルデータパケットに対してフロー処理を実行するステップは、前記フロー処理サブモジュールが前記オリジナルデータパケットに対してフラグメント化IPパケット再構成処理及びアウトオブオーダTCPパケットリオーダリング処理を実行することを含む。
【0009】
第1の態様を参照して、第3の可能な実現方式では、少なくとも2つのプロセッサコアが前記コプロセッサに備えられ、前記オリジナルデータパケットを前記コプロセッサのプロセッサコアに送信するステップは、
前記プロセッサコアのそれぞれのロード状態に従って前記少なくとも2つのプロセッサコアから1つのプロセッサコアを選択し、前記オリジナルデータパケットを前記選択されたプロセッサコアに送信することを含む。
【0010】
第1の態様を参照して、第4の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するため、前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、具体的には、
前記プロセッサコアが、前記コプロセッサのスイッチングバスモジュールを利用することによって、前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すことを含む。
【0011】
第1の態様を参照して、第5の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、エンドポイント検索結果を取得するため、前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む。
【0012】
第1の態様を参照して、第6の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、前記プロセッサコアの呼び出しの下で前記プロトコル特定サブコプロセッサが、前記コプロセッサに含まれる文字列マッチングエンジンを呼び出し、前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記アプリケーションレイヤプロトコルタイプを利用することを含む。
【0013】
第1の態様を参照して、第7の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記コプロセッサに含まれる正規表現マッチングエンジンを呼び出し、前記プロセッサコアの呼び出しの下で前記正規表現マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアが、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用することを含む。
【0014】
第1の態様を参照して、第8の可能な実現方式では、前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すステップは、
前記プロセッサコアが、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、前記オリジナルデータパケットのアプリケーションレイヤプロトコルを特定するのに前記コプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出すステップと、
前記プロセッサコアが、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行するのに前記コプロセッサに含まれるプロトコル解析サブコプロセッサを呼び出し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記解析結果と前記アプリケーションレイヤプロトコルタイプとを利用するステップと、
を含む。
【0015】
第1の態様の第6の可能な実現方式を参照して、第9の可能な実現方式では、前記プロトコル特定サブコプロセッサの呼び出しの下で前記文字列マッチングエンジンが、特徴マッチング結果を取得するため、前記オリジナルデータパケットに対して文字列マッチングを実行することは、
前記プロトコル特定サブコプロセッサの呼び出しの下、前記文字列マッチングエンジンが、第1メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従ってフロー処理されたデータパケットに対して文字列マッチングを実行することを含む。
【0016】
第1の態様又は第1の態様の第1〜9の可能な実現方式の何れか1つを参照して、第11の可能な実現方式では、前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップは、前記プロセッサコアが、前記アプリケーションレイヤ解析結果を前記コプロセッサに含まれる結果報告処理モジュールに送信するステップと、前記結果報告処理モジュールが、所定のフォーマットに従って前記アプリケーションレイヤ解析結果をカプセル化し、前記カプセル化されたアプリケーションレイヤ解析結果を前記汎用プロセッサに送信するステップとを含む。
【0017】
第2の態様によると、本発明の実施例は、ディープパケットインスペクション方法であって、
汎用プロセッサが、オリジナルデータパケットをコプロセッサに送信するステップと、前記汎用プロセッサが、前記コプロセッサにより送信された前記オリジナルデータパケットのアプリケーションレイヤ解析結果を受信するステップであって、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアによって取得され、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、受信するステップと、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップと、を有するディープパケットインスペクション方法を提供する。
【0018】
第1の可能な実現方式では、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、前記汎用プロセッサが、前記アプリケーションレイヤ解析結果に従って、前記オリジナルデータパケットが暗号化されたデータパケットであるか判断し、前記オリジナルデータパケットが暗号化されたデータパケットである場合、前記オリジナルデータパケットを解読することを含む。
【0019】
第2の可能な実現方式では、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、
前記汎用プロセッサが、前記アプリケーションレイヤ解析結果に従って、前記オリジナルデータパケットが属するフローのサービスタイプを決定し、前記サービスタイプに従って前記フローに対してトラフィック統計、課金又は送信アクセラレーションを実行することを含む。
【0020】
第3の可能な実現方式では、前記オリジナルデータパケットのアプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとURLマッチング結果とを有し、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプは、前記オリジナルデータパケットに対してプロトコル特定を実行するために前記コプロセッサのプロトコル特定サブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、前記URLマッチング結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがHTTP(HyperText Transfer Protocol)であると判断したとき、前記オリジナルデータパケットに対してURLマッチングを実行するために前記コプロセッサのURLマッチングエンジンを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、前記汎用プロセッサが、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するステップは、前記汎用プロセッサが、前記アプリケーションレイヤ解析結果と前記URLマッチング結果とに従って、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、前記フローをブロックすることを含む。
【0021】
第3の態様によると、送受信モジュール、サブコプロセッサ及びプロセッサコアを有するコプロセッサであって、
前記送受信モジュールは、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、前記オリジナルデータパケットを前記プロセッサコアに送信するよう構成され、
前記プロセッサコアは、前記オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記サブコプロセッサを呼び出すよう構成され、前記アプリケーションレイヤ解析結果は前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用され、前記プロセッサコアは、前記汎用プロセッサが少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するように、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成され、
前記サブコプロセッサは、前記オリジナルデータパケットのアプリケーションレイヤ情報を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行するよう構成されるコプロセッサを提供する。
【0022】
第1の可能な実現方式では、前記送受信モジュールは、
前記汎用プロセッサによって送信された前記オリジナルデータパケットを受信するよう構成される受信部と、
前記受信部が前記汎用プロセッサにより送信された前記オリジナルデータパケットを受信した後、前記オリジナルデータパケットに対してフロー処理を実行するよう構成されるフロー処理部と、
前記フロー処理されたデータパケットを前記プロセッサコアに送信するよう構成される配信部と、
を有し、
前記プロセッサコアは、具体的には、前記フロー処理されたデータパケットに対して前記アプリケーションレイヤ解析を実行するために前記サブコプロセッサを呼び出すよう構成される。
【0023】
第3の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、前記フロー処理部は、具体的には、前記オリジナルデータパケットに対してフラグメント化IPパケット再構成処理及びアウトオブオーダTCPパケットリオーダリング処理を実行するよう構成される。
【0024】
第3の態様の第1又は第2の可能な実現方式を参照して、第3の可能な実現方式では、少なくとも2つのプロセッサコアがあり、
前記配信部は、具体的には、前記少なくとも2つのプロセッサコアの各プロセッサコアのロード状態を決定し、前記各プロセッサコアのロード状態に従って前記少なくとも2つのプロセッサコアから1つのプロセッサコアを選択し、前記フロー処理されたデータパケットを前記選択されたプロセッサコアに送信するよう構成される。
【0025】
第3の態様又は第3の態様の第1、第2若しくは第3の可能な実現方式を参照して、第4の可能な実現方式では、当該コプロセッサはスイッチングバスモジュールを更に有し、
前記プロセッサコアは、具体的には、当該コプロセッサのスイッチングバスモジュールを利用して前記オリジナルデータパケットに対して前記アプリケーションレイヤ解析を実行することによって、前記サブコプロセッサを呼び出すよう構成される。
【0026】
第3の態様を参照して、第5の可能な実現方式では、前記サブコプロセッサは、具体的には、エンドポイント検索結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対してエンドポイント検索を実行し、前記エンドポイント検索結果を前記プロセッサコアに返すよう構成され、前記プロセッサコアは、具体的には、少なくとも前記エンドポイント検索結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される。
【0027】
第3の態様を参照して、第6の可能な実現方式では、前記サブコプロセッサは、プロトコル特定サブコプロセッサと文字列マッチングエンジンとを有し、前記プロトコル特定サブコプロセッサは、具体的には、前記プロセッサコアの呼び出しの下で前記文字列マッチングエンジンを呼び出すよう構成され、前記文字列マッチングエンジンは、特徴マッチング結果を取得するため、前記プロトコル特定サブコプロセッサの呼び出しの下で前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返し、前記プロセッサコアは、具体的には、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される。
【0028】
第3の態様を参照して、第7の可能な実現方式では、前記サブコプロセッサは、具体的には、正規表現マッチングエンジンであり、前記正規表現マッチングエンジンは、特徴マッチング結果を取得するため、前記プロセッサコアの呼び出しの下で前記オリジナルデータパケットに対して正規表現マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、前記プロセッサコアは、具体的には、少なくとも前記特徴マッチング結果に従って前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、前記オリジナルデータパケットのアプリケーションレイヤ解析結果として前記決定されたアプリケーションレイヤプロトコルタイプを利用し、前記アプリケーションレイヤ解析結果を前記汎用プロセッサに送信するよう構成される。
【0029】
第3の態様の第6の可能な実現方式を参照して、第8の可能な実現方式では、前記サブコプロセッサは更に、プロトコル解析サブコプロセッサを有し、前記プロトコル解析サブコプロセッサは、解析結果を取得するため、前記オリジナルデータパケットに対してプロトコル解析を実行し、前記解析結果を前記プロセッサコアに返すよう構成され、前記プロセッサコアは更に、前記汎用プロセッサが前記アプリケーションレイヤプロトコルタイプと前記解析結果とに従って前記オリジナルデータパケットを処理するように、前記解析結果を前記汎用プロセッサに送信するよう構成される。
【0030】
第3の態様の第6の可能な実現方式を参照して、第9の可能な実現方式では、前記文字列マッチングエンジンは、具体的には、前記プロトコル特定サブコプロセッサの呼び出しの下、第1メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、前記特徴マッチング結果を取得するため、前記文字列マッチングアルゴリズム状態テーブルに従って前記オリジナルデータパケットに対して文字列マッチングを実行し、前記特徴マッチング結果を前記プロセッサコアに返すよう構成され、前記第1メモリは、前記文字列マッチングアルゴリズム状態テーブルを格納するよう構成される。
【0031】
第3の態様の第9の可能な実現方式を参照して、第10の可能な実現方式では、前記プロセッサコアは、具体的には、第2メモリから条件ルールデータ構造を読み出し、前記特徴マッチング結果と前記条件ルールデータ構造とに従って前記アプリケーションレイヤプロトコルタイプを決定するよう構成され、前記第2メモリは、前記条件ルールデータ構造を格納するよう構成される。
【0032】
第4の態様によると、本発明の実施例は、
オリジナルデータパケットをコプロセッサに送信するよう構成される送信モジュールと、前記コプロセッサにより送信された前記オリジナルデータパケットのアプリケーションレイヤ解析結果を受信するよう構成される受信モジュールであって、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するために前記コプロセッサの少なくとも1つのサブコプロセッサを呼び出すことによって、前記コプロセッサのプロセッサコアによって取得され、前記アプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される、受信モジュールと、少なくとも前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットを処理するよう構成される処理モジュールと、を有する汎用プロセッサを提供する。
【0033】
第1の可能な実現方式では、前記処理モジュールは、具体的には、前記アプリケーションレイヤ解析結果に従って前記オリジナルデータパケットが暗号化されたデータパケットであると特定された場合、前記オリジナルデータパケットを解読するよう構成される。
【0034】
第2の可能な実現方式では、
前記オリジナルデータパケットのアプリケーションレイヤ解析結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとURLマッチング結果とを有し、前記URLマッチング結果は、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがHTTP(HyperText Transfer Protocol)であると判断するとき、前記オリジナルデータパケットに対してURLマッチングを実行するために前記コプロセッサのURLマッチングエンジンを呼び出すことによって、前記コプロセッサのプロセッサコアにより取得され、
前記処理モジュールは、具体的には、前記オリジナルデータパケットのアプリケーションレイヤプロトコルタイプと前記URLマッチング結果とに従って、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、前記オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、前記フローをブロックするよう構成される。
【0035】
第5の態様によると、本発明の実施例は、本発明の何れかの実施例により提供されたコプロセッサと、本発明の何れかの実施例により提供された汎用プロセッサとを有するディープパケットインスペクション装置を提供する。
【0036】
第1の可能な実現方式では、1つの汎用プロセッサがある。
【0037】
第2の可能な実現方式では、少なくとも2つの汎用プロセッサがあり、当該DPI装置は更に、ネットワークアダプタとロードバランシング装置とを有し、前記ネットワークアダプタは、ネットワークからデータパケットを受信し、前記データパケットを前記ロードバランシング装置に送信するよう構成され、前記ロードバランシング装置は、前記少なくとも2つの汎用プロセッサの各汎用プロセッサのロード状態を決定し、前記各汎用プロセッサのロード状態に従って1つの汎用プロセッサを選択し、前記データパケットを前記選択された汎用プロセッサに送信するよう構成される。
【発明の効果】
【0038】
上記の技術的手段から、本発明の実施例により提供されるディープパケットインスペクション方法及び装置とコプロセッサとにおいて、汎用プロセッサとコプロセッサとはDPIを実現するよう連係し、コプロセッサのサブコプロセッサは、汎用プロセッサからDPI機能を解放するためDPIサービスのために特別に設計されてもよく、汎用プロセッサのリソース占有を軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、中間状態情報が保持可能であり、プロセッサコアとサブコプロセッサとの間のやりとりは全てチップ内のやりとりであり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、処理遅延を短縮する。
【発明を実施するための形態】
【0040】
本発明の実施例の課題、技術的手段及び効果をより明確にするため、以下において、本発明の実施例における添付した図面を参照して本発明の実施例における技術的手段が明確かつ完全に説明される。明らかに、説明される実施例は、本発明の全ての実施例でなく一部である。創作的な努力なく本発明の実施例に基づき当業者により取得される他の全ての実施例は、本発明の保護範囲内に属する。
【0041】
当業者が本発明の技術的手段をより良好に理解するため、
図2に示される本発明の実施例のディープパケットインスペクション(Deep Packet Inspection,略してDPI)アーキテクチャがまず全体的に説明される。
【0042】
本発明の実施例では、DPI処理タスクの機能モジュールは複数のレイヤ(典型的には、4つのレイヤ)に分割され、ここで、上位レイヤはより複雑で全体的なサービスを処理し、下位レイヤはよりシンプルで専用のアルゴリズムを有する。
【0043】
これらのレイヤは、それぞれ汎用プロセッサとDPIコプロセッサである2つのチップによって実現される。ハードウェアアクセラレーションパフォーマンスを向上させるため、可能な限り多くのDPI関連タスクがDPIコプロセッサによって実行されてもよい。この場合、汎用プロセッサはより算術集中タスクを実行してもよい。これは、汎用プロセッサは、このタイプのタスクのパフォーマンスについて改善され、付加価値のあるサービスの処理に集中するためである。DPIコプロセッサは、DPIサービス制御レイヤ、DPIサブサービス論理レイヤ及びアルゴリズムエンジンレイヤのロジックを実現するためのものである。DPIコプロセッサは更に、複数のサブコプロセッサを内部的に有し、ここで、各サブコプロセッサは、DPIサブサービスのコンプレクシティの相違に従って特定のDPIサブサービスを完了させるよう構成され、サブコプロセッサは、上位レイヤサブコプロセッサ(
図2のサブコプロセッサAなど)と下位レイヤサブコプロセッサ(
図2のサブコプロセッサB,C及びDなど)とに具体的に分類されてもよく、ここで、下位レイヤサブコプロセッサは、具体的にはソフトウェア又はハードウェアにより実現されるアルゴリズムエンジンであってもよく、文字列マッチングエンジン及び正規表現マッチングエンジンなどの特定のアルゴリズムを利用することによって、専用の機能を実現するよう構成されてもよく、下位レイヤサブコプロセッサと比較して、上位レイヤサブコプロセッサは、プロトコル特定及び構文解析などのより一般的なDPIサブサービスを実行するよう構成される。例えば、上位レイヤサブコプロセッサは、複数のサブコプロセッサ及び/又はアルゴリズムエンジン機能を統合する論理又は物理エンティティであってもよく、より先進的で汎用的なDPIサブ機能を実現するよう構成されてもよく、さらに、上位レイヤサブコプロセッサは要求される機能を実現するため下位レイヤ
サブコプロセッサを呼び出してもよく、同じレイヤのサブコプロセッサはまた、連係して機能を完了させるため互いに呼び出してもよい。
【0044】
具体的には、
図3に示されるようなアプリケーションシナリオでは、タスクは以下のレイヤに分割されてもよい。
【0045】
レイヤ1:DPIサービスロジックにおける暗号化及び解読、符号化及び復号化、及び複雑なロジック処理、付加価値のあるサービスなどの他の非DPIサービス、ポリシーマッチング、パケットアクションの実行などを含む大量の算術処理を要求するタスクを担当する算術集中レイヤ。本発明の実施例では、このレイヤのタスクは汎用プロセッサにより完了される。
【0046】
レイヤ2:DPIコプロセッサにおいてコアを配置することによって、DPIエンジン、条件ルールマッチング、クロスパケット処理及び中間状態格納のステップに対するシーケンス制御の実行などのDPIサービス関連制御ロジックを含むDPIサービス制御ロジックを実行するDPIサービス制御レイヤ。本発明の実施例では、このレイヤのタスクは、DPIコプロセッサにおけるプロセッサコア(コア)によって完了される。
【0047】
レイヤ3:アプリケーションプロトコル特定、プロトコルディープ解析及びデータパケット動作特徴解析など、永続的に書き込みされうるDPI固有のサブサービスを担当するDPIサブサービス論理レイヤ。本発明の実施例では、このレイヤのタスクは、データパケットのアプリケーションレイヤプロトコルタイプを特定するためのプロトコル特定サブコプロセッサ、プロトコル上でディープな構文解析を実行するためのプロトコル解析サブコプロセッサなど、DPIコプロセッサにおける上位レイヤサブコプロセッサによって完了される。
【0048】
レイヤ4:汎用的な正規表現マッチング、浮動小数点算術、マルチモード文字列マッチング、シングルモード文字列マッチング、動作パラメータ算術などのDPIについて具体的に最適化されるアルゴリズムエンジンタスクを担当するアルゴリズムエンジンレイヤ。このレイヤのタスクは、正規表現マッチングエンジン、浮動小数点算術エンジン、文字列マッチングエンジンなどのDPIコプロセッサにおける下位レイヤサブコプロセッサによって完了される。
【0049】
DPIコプロセッサの内部において、すなわち、レイヤ2〜4において、内部バス又はスイッチングバスモジュールがこれらの階層化されたモジュール間のメッセージ及びデータのやりとりに必要とされることに特に留意すべきである。しかしながら、チップ間のやりとりはレイヤ1と他のレイヤとの間で、すなわち、汎用プロセッサとDPIコプロセッサとの間で実行され、これは、典型的には、PCIE(Personal
Component Interconnect Express)バスなどであってもよい、当該やりとりを実行するため産業界においてすでに利用可能ないくつかの標準化されたバスを求める。使用中のバスのタイプは、汎用プロセッサによって提供される外部インタフェースに依存する。
【0050】
より好ましくは、階層化設計アーキテクチャに加えて、本発明の実施例では、外部メモリは更に、DPI中間状態を格納するため、DPIコプロセッサのために構成されてもよく、これにより、より良好なスケーラビリティ及びパフォーマンスを実現する。この場合、状態が格納される必要があるタスクが処理されると、当該タスクは、汎用プロセッサにより完了される必要はなく、DPIコプロセッサは、それのより多くのプロセッサリソースをオフロードしてもよい。さらに、構成された外部メモリは更に、DPI処理中に使用される必要がある各種特徴フィールドのデータ構造及びアルゴリズムに固有のデータ構造とを格納してもよい。この場合、DPIコプロセッサは、バスを介し汎用プロセッサを利用することによってそれを読み出す代わりに、データを直接的に迅速に読み出すことが可能であり、より高い処理パフォーマンスを実現することができる。
【0051】
例えば、外部メモリAは、DPIコプロセッサがパケットに基づき処理を実行する代わりにフローの状態を検出できるように、フローテーブル並びに状態及びルールを含むソフトウェアコアに固有のデータ構造を格納する。外部メモリBは、サブコプロセッサのDFA(決定性有限オートマトン、Deterministic Finite Automaton)状態テーブル、シングルモードマッチングアルゴリズム補助データ及びアルゴリズムデータ構造などの各種マッチングエンジン及びサブコプロセッサのデータ構造を格納する。外部メモリA及び外部メモリBは単に論理的に分割され、これら2つが同一の物理メモリに配置されてもよいことに留意すべきである。
【0052】
上述したDPIアーキテクチャに基づき、本発明の実施例はディープパケットインスペクション方法を提供する。
図4は、本発明の実施例による第1ディープパケットインスペクション方法のフローチャートである。
図4に示されるように、本実施例により提供されるディープパケットインスペクション方法は、具体的にはネットワーク装置のディープパケットインスペクションDPIプロセスに適用可能であり、ここで、ネットワーク装置は、例えば、ルータ及びゲートウェイなどであってもよい。ディープパケットインスペクション装置はネットワーク装置に備えられてもよく、ここで、ディープパケットインスペクション装置は汎用プロセッサとコプロセッサとを含み、本実施例により提供されるディープパケットインスペクション方法は、コプロセッサを利用することによって実行される。
【0053】
本実施例により提供されるディープパケットインスペクション方法は、具体的には以下のステップを有する。
【0054】
ステップA10:コプロセッサの送受信モジュールが、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、オリジナルデータパケットをコプロセッサのプロセッサコアに送信する。
【0055】
ステップA20:プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも1つのサブコプロセッサを呼び出し、ここで、オリジナルデータパケットのアプリケーションレイヤ解析結果は、ここでは1つずつ列記はしない、アプリケーションレイヤプロトコルタイプ、データパケットが属するサービスなどのデータパケットのアプリケーションレイヤ情報を示すのに利用される。
【0056】
ステップA30:プロセッサコアが、汎用プロセッサがアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理するように、オリジナルデータパケットのアプリケーションレイヤ解析結果を汎用プロセッサに送信する。
【0057】
具体的には、ネットワーク装置は、受信したフローにおけるデータパケットをディープ解析することによって、ネットワーク最適化及びアプリケーショントラフィック制御を実現する必要があり、ネットワーク装置は、ネットワークアダプタを利用することによってデータパケットを汎用プロセッサに送信し、汎用プロセッサは、実行のためDPIコプロセッサにDPI関連タスクを引き渡す。
【0058】
本発明の本実施例では、コプロセッサは、FPGA(Filed Programmable Gate Array)又はASIC(Application Specific Integrated Circuit)を利用することによって実現されてもよく、1以上のプロセッサコアがコプロセッサに配置され、送受信モジュール及び複数のサブコプロセッサが更にプロセッサに備えられ、サブコプロセッサがハードウェア記述言語を利用することによって実現され、ここで、ハードウェア記述言語は、VHDL(Very−High−Speed Integrated Circuit Hardware Description Language)又はVerilog HDLであってもよい。サブコプロセッサは、サービス処理パフォーマンスを向上させるため、データパケットに対してアプリケーションプロトコル特定、プロトコル解析などを実行するよう構成されてもよい。
【0059】
汎用プロセッサはオリジナルデータパケットをコプロセッサの送受信モジュールに送信し、その後、送受信モジュールはオリジナルデータパケットをコプロセッサのプロセッサコアに提供し、コプロセッサのプロセッサコアは、解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにサブコプロセッサを呼び出し、プロセッサコアは解析結果を汎用プロセッサに返し、その後、汎用プロセッサはトラフィック統計、アクセラレーション、トラフィック制限、ブロッキング及びフィルタリングを実行するなど、解析結果に従ってオリジナルデータパケットを処理する。汎用プロセッサは解析結果に従ってフローテーブルを生成し、ここで、フローテーブルは、複数のフローテーブルエントリ及び処理命令を記録し、汎用プロセッサは、データパケットが属するフローを決定し、対応する処理を実行するため、受信したデータパケットとフローテーブルのエントリとをマッチングする。
【0060】
本実施例により提供されるディープパケットインスペクション方法では、汎用プロセッサ及びコプロセッサはDPIを実現するため連係し、コプロセッサのサブコプロセッサは、より詳細な粒度に従ってコプロセッサを分割することによってDPIサービスについて特別に設計されてもよく、このため、DPI機能は汎用プロセッサから解放され、汎用プロセッサのリソース占有が軽減し、この結果、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアが、DPIサービス制御を実行するためコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、サービス処理のフレキシビリティを大きく向上させ、プロセッサコアとサブコプロセッサとのやりとりが全てチップ内のやりとりとなり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりを回避し、これにより、DPIパフォーマンスを向上させることができる。
【0061】
図5は、本発明の実施例による第2ディープパケットインスペクション方法のフローチャートである。
図5に示されるように、本発明の本実施例によるディープパケットインスペクション方法は以下のステップを有する。
【0062】
ステップA101:コプロセッサの送受信モジュールが汎用プロセッサにより送信されたオリジナルデータパケットを受信する。
【0063】
ステップA102:オリジナルデータパケットに対してフロー処理を実行する。
【0064】
具体的には、オリジナルデータパケットに対するフロー処理の実行は、オリジナルデータパケットに対してフラグメント化IPパケットの再構成処理及びアウトオブオーダTCPパケットのリオーダリング処理を実行することを含むものであってもよい。さらに、オリジナルデータパケットに対するフロー処理の実行は更に、オリジナルデータパケットに対してフローメッセージ保証シーケンス処理を実行することを含むものであってもよい。
【0065】
ステップA103:フロー処理されたデータパケットをコプロセッサのプロセッサコアに送信する。
【0066】
実際のアプリケーション処理では、コプロセッサ上のプロセッサコアの個数は、DPIサービスの要求に従って設定されてもよく、すなわち、1以上のプロセッサコアがあってもよい。少なくとも2つのプロセッサコアがコプロセッサに備えられるとき、オリジナルデータパケットをコプロセッサのプロセッサコアに送信することは、具体的には、
連係して処理を実行する複数のプロセッサコアの各プロセッサコアのロード状態を決定し、ロードバランシングポリシーに従って複数のプロセッサコアから1つのプロセッサコアを選択し、オリジナルデータパケットを選択されたプロセッサコアに送信することを含む。
【0067】
具体的には、全てのプロセッサコアのロード状態がモニタされてもよく、プロセッサコアが、データパケットを提供する処理において各プロセッサコアのロード状態に従って選択され、データパケットが、処理リソースが処理のため相対的にアイドルであるプロセッサコアに送信される。
【0068】
ステップA104:プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも1つのサブコプロセッサを呼び出す。
【0069】
本実施例では、プロセッサコアは、具体的には、コプロセッサのスイッチングバスモジュールを利用して、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行することによって、少なくとも1つのサブコプロセッサを呼び出してもよい。
【0070】
具体的には、スイッチングバスモジュールはSwitch−Arbiterスイッチングモジュールであってもよく、プロセッサコアと当該プロセッサコアに含まれる各種サブコプロセッサとの間の通信は、スイッチングバスモジュールを利用することによって実現される。
【0071】
ステップA105:プロセッサコアは、汎用プロセッサがアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理するように、オリジナルデータパケットのアプリケーションレイヤ解析結果を汎用プロセッサに送信する。
【0072】
具体的には、一実施例では、結果報告処理モジュールが更にコプロセッサに備えられてもよく、プロセッサコアはオリジナルデータパケットのアプリケーションレイヤ解析結果を結果報告処理モジュールに送信してもよく、結果報告処理モジュールは、所定のフォーマットに従ってアプリケーションレイヤ解析結果をカプセル化し、カプセル化された結果を汎用プロセッサに送信し、ここで、所定のフォーマットは、例えば、TLV(Type Length Value)構造であってもよく、TLV構造は、タイプ、長さ及び値を有する汎用的なデータ記述フォーマットである。
【0073】
本実施例では、外部メモリがコプロセッサが利用するため備えられてもよく、ここで、当該メモリは第1メモリと第2メモリとを有してもよく、第1メモリと第2メモリとは2つの物理的に独立したメモリであってもよいし、又は第1メモリと第2メモリとはまた、同一メモリ上に物理的にあってもよいが、論理的には別々である。第1メモリはサブコプロセッサにより求められるデータ構造を格納するよう構成され、第2メモリは、フロー中間状態データ、エンドポイントテーブルデータ、ポート機能テーブル並びに条件ルールテーブルなど、DPIサービス制御レイヤにより利用されるデータを格納するよう構成される。
【0074】
通常、ルールは、アプリケーションプロトコル特定のためのプロトコル特徴又はネットワーク攻撃を防ぐための動作の特徴を記述するのに利用され、第2メモリの条件ルールテーブルは1以上のルールを記録するのに利用される。ルールは、通常は特徴グループを含み、これらの特徴は、データパケットのソース/デスティネーションアドレス、ソース/デスティネーションポート、送信プロトコルタイプ、データパケットのロードに含まれるある特別な文字列及びデータパケットがフラグメント化されているかなど、データパケットの詳細を記述するのに利用される。サブコプロセッサは、特徴マッチング結果を取得するためデータパケットを解析し、プロセッサコアは、アプリケーションレイヤプロトコルタイプを決定するとき、特徴マッチング結果に従って各ルールの特徴をマッチングし、データパケットがルールに一致する場合、当該ルールに対応するアプリケーションレイヤプロトコルタイプは、データパケットのアプリケーションレイヤプロトコルタイプである。特徴は、例えば、文字列、正規表現及び動作特徴などの複数の方法により記述されてもよく、特徴マッチング結果は、異なる特徴について異なる方法により取得されてもよい。
【0075】
本実施例では、DPIサブサービスのコンプレクシティの相違に従って、コプロセッサに含まれるサブコプロセッサは、具体的には、汎用的なDPIサブサービスを実行するための上位レイヤサブコプロセッサ(プロトコル特定サブコプロセッサ及びプロトコル解析サブコプロセッサなど)と、ソフトウェア又はハードウェアにより実現されるアルゴリズムエンジン(文字列マッチングエンジン及び正規表現マッチングエンジンなど)などの専用の機能を実現するための下位レイヤサブコプロセッサとに分類されてもよく、ここで、上位レイヤサブコプロセッサは要求される機能を実現するために下位レイヤ
サブコプロセッサを呼び出してもよく、同じレイヤのサブコプロセッサはまた、連係してある機能を完了させるため互いを呼び出してもよい。これに基づき、サブコプロセッサのタイプの相違に従って、ステップA104の具体的な実現方法はまた異なる。
【0076】
(1)プロセッサコアがデータパケットのアプリケーションレイヤプロトコルタイプを特定するためにプロトコル特定サブコプロセッサなどの上位レイヤサブコプロセッサを呼び出す場合、可能な実現方法では、プロトコル特定サブコプロセッサは、エンドポイント検索結果を取得するため、プロセッサコアの呼び出しの下でオリジナルデータパケットに対してエンドポイント検索を実行し、エンドポイント検索結果をプロセッサコアに返してもよく、プロセッサコアは、少なくともエンドポイント検索結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用する。
【0077】
具体的には、状態マシーンがプロトコル特定サブコプロセッサに備えられる。1以上のレコードが、データパケットが配置されるフローのデスティネーションIPアドレス、ソースIPアドレス、デスティネーションポート及びソースポートの複数のものについてエンドポイントテーブルに検出されるかもしれない場合、データパケットのアプリケーションレイヤプロトコルタイプは、更なるステップを実行することなくエンドポイントテーブルから直接取得されてもよい。例えば、エンドポイントテーブルのレコードは、デスティネーションIPアドレス:103.224.1.9、デスティネーションポート:443、アプリケーションレイヤプロトコルタイプ:gmail_webmailである。フローのデータパケットがデスティネーションIPアドレスの443ポートに送信される場合、DPI処理結果が直接指定されてもよく、これは、当該フローのデータパケットのアプリケーションレイヤプロトコルタイプがgmail_webmailであることを示す。
【0078】
他の可能な実現方法では、プロトコル特定サブコプロセッサは、対応する機能を完了させるのを助けるため、プロセッサの呼び出しの下で文字列マッチングエンジンなどの下位レイヤサブコプロセッサを呼び出してもよく、プロトコル特定サブコプロセッサの呼び出しの下で文字列マッチングエンジンが、特徴マッチング結果を取得するため、オリジナルデータパケットに対して文字列マッチングを実行し、特徴マッチング結果をプロセッサコアに返し、プロセッサコアが、少なくとも特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果としてアプリケーションレイヤプロトコルタイプを利用する。
【0079】
具体的には、文字列マッチングエンジンは、シングルモード文字列マッチングエンジン又はマルチモード文字列マッチングエンジンであってもよい。シングルモード文字列マッチングエンジンはシングルモード文字列マッチングアルゴリズムを利用し、シングルモード文字列マッチングアルゴリズムはBM(Boyer Moore)アルゴリズムを利用してもよい。マルチモード文字列マッチングエンジンはマルチモード文字列マッチングアルゴリズムを利用し、マルチモード文字列マッチングアルゴリズムは、AC(Aho−Corasick)アルゴリズム、Wu−Manberアルゴリズム、ExBアルゴリズムなどであってもよい。マルチモード文字列マッチング処理では、1以上の文字列特徴が、ターゲット文字列を1回スキャンすることによって検出されてもよい。
【0080】
マルチモード文字列マッチングがデータパケットに対して実行される必要があるとき、プロトコル特定サブコプロセッサはマルチモード文字列マッチングエンジンを呼び出し、マルチモード文字列マッチングエンジンは、特徴マッチング結果を取得するため、データパケットをスキャンし、データパケットにおいて1以上の文字列特徴を検出し、特徴マッチング結果をプロセッサコアに返し、その後、プロセッサコアは、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定する。
【0081】
本実施例では、文字列マッチングエンジンがプロトコル特定サブコプロセッサの呼び出しの下でフロー処理されたデータパケットに対して文字列マッチングを実行することは、
文字列マッチングエンジンが、プロトコル特定サブコプロセッサの呼び出しの下、第1メモリから文字列マッチングアルゴリズム状態テーブルを読み出し、文字列マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して文字列マッチングを実行する。
【0082】
具体的には、第1メモリは文字列マッチングアルゴリズム状態テーブルを格納し、文字列マッチングエンジンがマルチモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはマルチモード文字列マッチングアルゴリズム状態テーブルであり、文字列マッチングエンジンがシングルモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはシングルモード文字列マッチングアルゴリズム状態テーブルである。例えば、マルチモード文字列マッチングアルゴリズムはACアルゴリズムであり、マルチモード文字列マッチングアルゴリズム状態テーブルはAC状態テーブルであり、マルチモード文字列マッチングエンジンは、マルチモード文字列マッチングアルゴリズム状態テーブルに従ってデータパケットに対してマルチモード文字列マッチングを実現してもよい。文字列マッチングエンジンは、第1メモリに対してリード又はライト処理を直接的に実行せず、キャッシュはコプロセッサに備えられ、データインタラクションは、DMA(Direct Memory Access)方式によりキャッシュと第1メモリとの間で実現されてもよい。キャッシュを備えることは、外部メモリへのアクセス数を大きく減少させることが可能であり、ここで、大部分のメモリアクセスリクエストはキャッシュを利用することによって完了されてもよく、これは、システムパフォーマンスを大きく向上させる。
【0083】
(2)プロセッサコアが、例えば、正規表現マッチングを実行するため特別に用いられる正規表現マッチングエンジンなどの下位レイヤサブコプロセッサを呼び出す場合、プロセッサコアの呼び出しの下で正規表現マッチングエンジンは、特徴マッチング結果を取得するため、オリジナルデータパケットに対して正規表現マッチングを実行し、特徴マッチング結果をプロセッサコアに返し、プロセッサコアが、少なくとも特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用する。
【0084】
具体的には、正規表現マッチングエンジンは正規表現マッチングアルゴリズムを利用してもよく、ここで、正規表現マッチングアルゴリズムは、NFA(Nondeterministic Finite Automaton、非決定性有限オートマトン)アルゴリズム、DFA(Deterministic Finite Automaton、決定性有限オートマトン)アルゴリズムなどであってもよく、正規表現マッチング処理では、特徴は文字列を利用することによって記述されず、正規表現を利用することによって記述される。
【0085】
正規表現マッチングがデータパケットに対して実行される必要があるとき、プロセッサコアは正規表現マッチングエンジンを直接呼び出してもよく、正規表現マッチングエンジンは、特徴マッチング結果を取得するため、データパケットを検索し、特徴マッチング結果をプロセッサコアに返し、その後、プロセッサコアは、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定する。
【0086】
本実施例では、正規表現マッチングエンジンがプロセッサコアの呼び出しの下でオリジナルデータパケットに対して正規表現マッチングを実行することは、
プロセッサコアの呼び出しの下で正規表現マッチングエンジンが、第1メモリから正規表現マッチングアルゴリズム状態テーブルを読み出し、正規表現マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して正規表現マッチングを実行することを含む。
【0087】
具体的には、第1メモリは正規表現マッチングアルゴリズム状態テーブルを格納し、例えば、正規表現マッチングアルゴリズムがDFAアルゴリズムであるとき、正規表現マッチングアルゴリズム状態テーブルはDFA状態テーブルであり、正規表現マッチングエンジンは、正規表現マッチングアルゴリズム状態テーブルに従ってデータパケットに対して正規表現マッチングを実現してもよい。
【0088】
本発明の他の実施例では、プロセッサコアは更に、動作特徴統計サブコプロセッサを呼び出すことによって、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得してもよい。具体的には、動作特徴統計サブコプロセッサは、特徴マッチング結果を取得するため、プロセッサコアの呼び出しの下でオリジナルデータパケットに対して動作特徴マッチングを実行し、特徴マッチング結果をプロセッサコアに返し、プロセッサコアは、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。
【0089】
具体的には、動作特徴モデルが異なるアプリケーションプロトコルについて予め作成されてもよく、動作特徴マッチングがデータパケットに対して実行される必要があるとき、動作特徴統計サブコプロセッサは、特徴マッチング結果を取得するため、データパケットにおける動作特徴をマッチングし、特徴マッチング結果をプロセッサコアに返し、その後、プロセッサコアは、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定する。本実施例では、プロセッサコアが特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することは、
プロセッサコアが、キャッシュを利用することによって第2メモリから条件ルールテーブルを読み出し、特徴マッチング結果と条件ルールテーブルとに従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定することを含む。
【0090】
具体的には、第2メモリは条件ルールテーブルを格納し、当該条件ルールテーブルは、ルールとアプリケーションレイヤプロトコルタイプとの間の対応関係を格納し、プロセッサコアは、特徴マッチング結果がルールを充足しているか判断するため、特徴マッチング結果とルールにおける特徴とをマッチングし、ルールが充足されている場合、データパケットのアプリケーションレイヤプロトコルタイプを決定してもよい。プロセッサコアは、第2メモリに対するリード又はライト処理を直接的に実行せず、キャッシュはプロセッサに備えられ、キャッシュと第2メモリとの間のデータのやりとりはDMA方式により実現されてもよい。
【0091】
他の実施例では、プロトコル解析サブコプロセッサが更にコプロセッサに備えられ、ここで、状態マシーンがプロトコル解析サブコプロセッサに備えられてもよい。データパケットによって保持されるアプリケーションレイヤプロトコルタイプが、データパケットに対してアプリケーションプロトコル特定を実行することによって分かった後、データパケットにおける情報が更に各種付加価値サービスに対する処理又はルールマッチングを実行するため分かる必要がある場合、ディープ解析が更に、解析結果を取得するため、関連情報を抽出するためにアプリケーションプロトコルフォーマットに従ってデータパケットに対して実行されてもよい。
【0092】
具体的には、プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも1つのサブコプロセッサを呼び出すことは、具体的には、
プロセッサコアが、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、オリジナルデータパケットのアプリケーションレイヤプロトコルを特定するためにコプロセッサに含まれるプロトコル特定サブコプロセッサを呼び出し、
プロセッサコアが、解析結果を取得するため、オリジナルデータパケットに対してプロトコル解析を実行するためにコプロセッサに含まれるプロトコル解析サブコプロセッサを呼び出し、オリジナルデータパケットのアプリケーションレイヤ解析結果として解析結果とアプリケーションレイヤプロトコルタイプとを利用することを含む。
【0093】
本実施例では、URLマッチングエンジンが更にコプロセッサに備えられてもよく、プロセッサコアがオリジナルデータパケットのアプリケーションプロトコルを特定するためにコプロセッサのプロトコル特定サブコプロセッサを呼び出した後、プロセッサコアが、アプリケーションレイヤプロトコルタイプがHTTP(HyperText Transfer Protocol)であると判断した場合、コプロセッサのURL(Uniform Resource Locator)マッチングエンジンが呼び出され、URLマッチングエンジンは、URLマッチング結果を取得するため、プロセッサコアの呼び出しの下でオリジナルデータパケットに対してURLマッチングを実行し、URLマッチング結果をプロセッサコアに返し、ここで、処理結果は更にURLマッチング結果を含む。
【0094】
例えば、プロセッサコアが、データパケットに対応するフローのアプリケーションレイヤプロトコルタイプがHTTPであると特定した場合、URLマッチングエンジンは、データパケットを更に解析するため呼び出されてもよい。URLマッチングエンジンは、URLマッチング結果を取得するため、データパケットのURL値を取得するために解析を実行してもよい。コプロセッサは、処理結果としてURLマッチング結果を利用し、処理結果を汎用プロセッサに送信し、汎用プロセッサは、URLマッチング結果に従ってURL関連ネットワーク管理ジョブを実行してもよい。
【0095】
実際のアプリケーションでは、ディープパケットインスペクション装置の汎用プロセッサとコプロセッサとは、連係してDPIサービスを実現してもよく、ここで、コプロセッサにおける機能モジュールは実施債のDPIサービス要求に従って備えられてもよく、上記の実施例は機能モジュールの複数の実現方法を提供するが、本発明はこれに限定されるものでない。さらに、処理手順はまた異なるDPIサービスについて異なるものであってもよい。特徴マッチングのジョブはまた、特徴マッチング結果を取得するため、コプロセッサのプロセッサコアを利用することによって完了されてもよく、その後、プロセッサコアが、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。例えば、HTTPプロトコルの特徴の1つは、TCPポート番号が80であることであってもよく、多くの計算リソースは要求されないため、当該ポートのマッチング処理はコプロセッサのプロセッサコアによって完了されてもよい。
【0096】
本実施例により提供されるディープパケットインスペクション方法では、汎用プロセッサとコプロセッサとはDPIを実現するよう連係し、コプロセッサのサブコプロセッサは、より詳細な粒度に従ってコプロセッサを分割することによって、DPIサービスのために特別に設計されてもよく、従って、DPI機能は汎用プロセッサから解放され、汎用プロセッサのリソース占有が軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアが、DPIサービス制御を実行するためにコプロセッサに備えられ、サブコプロセッサがプロセッサコアの呼び出しの下で実行され、サービス処理のフレキシビリティが大きく向上し、外部メモリは、DPIコプロセッサがDPI中間状態を格納するよう構成され、これにより、より良好なスケーラビリティ及びパフォーマンスが実現される。状態が格納される必要があるタスクが処理されると、当該タスクは汎用プロセッサにより完了される必要はなく、DPIコプロセッサはそれのプロセッサリソースをより多く解放してもよい。さらに、外部メモリは、DPIコプロセッサがDPI処理中に利用される必要がある各種特徴フィールドのデータ構造とアルゴリズムに固有のデータ構造とを格納するよう構成される。この場合、DPIコプロセッサは、バスを介し汎用プロセッサを利用することによってそれを読み出す代わりに、データを直接的に迅速に読み出してもよく、処理パフォーマンスを更に向上させることが可能である。
【0097】
以下において、具体例を参照して本発明の実施例によるDPIアーキテクチャに基づきディープパケットインスペクションを実行する具体的な処理が説明される。
図6A及び6Bは、本発明の実施例によるディープパケットインスペクション方法のフローチャートである。以下において、
図6A及び6Bを参照して本実施例により提供されるディープパケットインスペクション方法が説明される。
【0098】
ステップ1a:汎用プロセッサは、コプロセッサの送受信モジュールにデータパケットを送信する。
【0099】
ステップ2a:送受信モジュールは、データパケットをプロセッサコアに送信する。
【0100】
ステップ3a:プロセッサコアは、プロトコル特定サブコプロセッサを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをプロトコル特定サブコプロセッサに送信し、プロトコル特定サブコプロセッサは、データパケットに対してエンドポイント検索を実行する。
【0101】
ステップ4a:プロトコル特定サブコプロセッサは、検索が成功したか判断し、成功した場合、ステップ5aを実行し、不成功の場合、ステップ6aを実行する。
【0102】
ステップ5a:プロトコル特定サブコプロセッサは、スイッチングバスモジュールを利用することによって、取得したエンドポイント検索結果をプロセッサコアに送信し、ステップ15aを実行する。
【0103】
ステップ6a:プロトコル特定サブコプロセッサは、スイッチングバスモジュールを利用することによって、検索失敗結果をプロセッサコアにフィードバックする。
【0104】
ステップ7a:プロトコル特定サブコプロセッサは、マルチモード文字列マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをマルチモード文字列マッチングエンジンに送信し、マルチモード文字列マッチングエンジンは、データパケットに対してマルチモード文字列マッチングを実行する。
【0105】
ステップ8a:マルチモード文字列マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ9aを実行し、不成功の場合、ステップ10aを実行する。
【0106】
ステップ9a:マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ15aを実行する。
【0107】
ステップ10a:マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックする。
【0108】
ステップ11a:プロセッサコアは、正規表現マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットを正規表現マッチングエンジンに送信し、正規表現マッチングエンジンは、データパケットに対して正規表現マッチングを実行する。
【0109】
ステップ12a:正規表現マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ13aを実行し、不成功の場合、ステップ14aを実行する。
【0110】
ステップ13a:正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ15aを実行する。
【0111】
ステップ14a:正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックし、プロセッサコアは、処理結果としてマッチング失敗結果を結果報告処理モジュールに送信し、ステップ20aを実行する。
【0112】
ステップ15a:プロセッサコアは、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。
【0113】
ステップ16a:プロセッサコアは、ディープ解析がデータパケットに対して実行される必要があるか判断し、必要がある場合、ステップ17aを実行し、不必要の場合、ステップ19aを実行する。
【0114】
ステップ17a:プロセッサコアは、プロトコル解析サブコプロセッサを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをプロトコル解析サブコプロセッサに送信し、プロトコル解析サブコプロセッサは、解析結果を取得するため、データパケットに対してプロトコル解析を実行し、スイッチングバスモジュールを利用することによって、解析結果をプロセッサコアに送信する。
【0115】
ステップ18a:プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプと解析結果とを結果報告処理モジュールに送信し、ステップ20aを実行する。
【0116】
ステップ19a:プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプを結果報告処理モジュールに送信する。
【0117】
ステップ20a:結果報告処理モジュールは、処理結果をカプセル化し、それを汎用プロセッサに送信する。
【0118】
以下において、他の具体例を参照して本発明の実施例によるDPIアーキテクチャに基づきディープパケットインスペクションを実行する具体的な処理が説明される。
図7A及び7Bは、本発明の実施例による他のディープパケットインスペクション方法のフローチャートである。以下において、
図7A及び7Bを参照して本実施例により提供されるディープパケットインスペクション方法が説明される。
【0119】
ステップ1b:汎用プロセッサは、データパケットをコプロセッサの送受信モジュールに送信する。
【0120】
ステップ2b:送受信モジュールは、データパケットをプロセッサコアに送信する。
【0121】
ステップ3b:プロセッサコアは、マルチモード文字列マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをマルチモード文字列マッチングエンジンに送信し、マルチモード文字列マッチングエンジンは、データパケットに対してマルチモード文字列マッチングを実行する。
【0122】
ステップ4b:マルチモード文字列マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ5bを実行し、不成功の場合、ステップ6bを実行する。
【0123】
ステップ5b:マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ15bを実行する。
【0124】
ステップ6b:マルチモード文字列マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックする。
【0125】
ステップ7b:プロセッサコアは、正規表現マッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットを正規表現マッチングエンジンに送信し、正規表現マッチングエンジンは、データパケットに対して正規表現マッチングを実行する。
【0126】
ステップ8b:正規表現マッチングエンジンは、マッチングが成功したか判断し、成功した場合、ステップ9bを実行し、不成功の場合、ステップ10bを実行する。
【0127】
ステップ9b:正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ15bを実行する。
【0128】
ステップ10b:正規表現マッチングエンジンは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックする。
【0129】
ステップ11b:プロセッサコアは、動作特徴統計サブコプロセッサを呼び出し、スイッチングバスモジュールを利用することによって、データパケットを動作特徴統計サブコプロセッサに送信し、動作特徴統計サブコプロセッサは、データパケットに対して動作特徴マッチングを実行する。
【0130】
ステップ12b:動作特徴統計サブコプロセッサは、マッチングが成功したか判断し、成功した場合、ステップ13bを実行し、不成功の場合、ステップ14bを実行する。
【0131】
ステップ13b:動作特徴統計サブコプロセッサは、スイッチングバスモジュールを利用することによって、取得した特徴マッチング結果をプロセッサコアに送信し、ステップ15bを実行する。
【0132】
ステップ14b:動作特徴統計サブコプロセッサは、スイッチングバスモジュールを利用することによって、マッチング失敗結果をプロセッサコアにフィードバックし、プロセッサコアは、処理結果としてマッチング失敗結果を結果報告処理モジュールに送信し、ステップ20bを実行する。
【0133】
ステップ15b:プロセッサコアは、特徴マッチング結果に従ってアプリケーションレイヤプロトコルタイプを決定する。
【0134】
ステップ16b:アプリケーションレイヤプロトコルタイプがHTTPである場合、プロセッサコアは、データパケットのURLの値が取得される必要があるか判断し、必要である場合、ステップ17bを実行し、不必要の場合、ステップ19bを実行する。
【0135】
ステップ17b:プロセッサコアは、URLマッチングエンジンを呼び出し、スイッチングバスモジュールを利用することによって、データパケットをURLマッチングエンジンに送信し、URLマッチングエンジンは、URLマッチング結果を取得するため、データパケットのURLの値を取得するために解析を実行し、スイッチングバスモジュールを利用することによって、URLマッチング結果をプロセッサコアに送信する。
【0136】
ステップ18b:プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプとURLマッチング結果とを結果報告処理モジュールに送信する。
【0137】
ステップ19b:プロセッサコアは、処理結果としてアプリケーションレイヤプロトコルタイプを結果報告処理モジュールに送信する。
【0138】
ステップ20b:結果報告処理モジュールは、処理結果をカプセル化し、それを汎用プロセッサに送信する。
【0139】
図8は、本発明の実施例による他のディープパケットインスペクション方法のフローチャートである。
図8に示されるように、本実施例により提供されるディープパケットインスペクション方法は、
図4に示される実施例により提供される方法と連係して実現されてもよく、ここで、具体的な実現処理はここでは詳細には再説明しない。本実施例により提供されるディープパケットインスペクション方法は、汎用プロセッサを利用することによって実行され、本方法は、具体的には以下のステップを含む。
【0140】
ステップB10:汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信する。
【0141】
ステップB20:汎用プロセッサは、コプロセッサにより送信されたオリジナルデータパケットのアプリケーションレイヤ解析結果を受信し、アプリケーションレイヤ解析結果は、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも1つのサブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアによって取得され、アプリケーションレイヤ解析結果は、ここでは詳細には再説明しない、アプリケーションレイヤプロトコルタイプ、オリジナルデータパケットが属するサービスなどのオリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される。
【0142】
ステップB30:汎用プロセッサは、少なくともアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理する。
【0143】
具体的には、ネットワーク装置が受信したフローにおいてデータパケットをディープ解析することによって、ネットワーク最適化及びアプリケーショントラフィック制御を実現する必要があるとき、ネットワーク装置のネットワークアダプタは、当該フローを汎用プロセッサに送信する。汎用プロセッサはオリジナルデータパケットをコプロセッサに送信し、コプロセッサは、アプリケーションレイヤ解析結果を取得するため、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行し、ここで、アプリケーションレイヤ解析結果は、アプリケーションレイヤプロトコルタイプ、プロトコルディープ解析結果、URLマッチング結果などを含むものであってもよく、コプロセッサはアプリケーションレイヤ解析結果を汎用プロセッサに返し、汎用プロセッサは、トラフィック統計、アクセラレーション、トラフィック制限、ブロッキング及びフィルタリングの実行など、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理する。
【0144】
本実施例により提供されるディープパケットインスペクション方法では、汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信し、コプロセッサにより送信された処理結果を受信し、処理結果に従ってオリジナルデータパケットを処理する。汎用プロセッサとコプロセッサとは、DPIを実現するため連係し、コプロセッサのサブコプロセッサは、汎用プロセッサからDPI機能を解放するためDPIサービスのために特別に設計されてもよく、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサは、プロセッサコアの呼び出しの下でプロセッサコアとサブコプロセッサとの間のやりとりを実行し、それはまたチップ内のやりとりであってもよく、コプロセッサと汎用プロセッサとの間の頻繁なやりとりを回避し、これにより、実行速度を増大させることができる。
【0145】
一実施例では、汎用プロセッサが、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理することは、具体的には、
汎用プロセッサが、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが暗号化されたデータパケットであると判断した場合、オリジナルデータパケットを解読することを含む。
【0146】
具体的には、汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信し、オリジナルデータパケットが暗号化されていることを特定すると、コプロセッサは、オリジナルデータパケットが暗号化されたデータパケットであることを示すための処理結果を汎用プロセッサに返し、汎用プロセッサはオリジナルデータパケットを解読し、その後、解読したオリジナルデータパケットをコプロセッサに送信してもよく、ここで、コプロセッサがオリジナルデータパケットを処理する処理については、上記の実施例の説明が参照されてもよい。
【0147】
実際のアプリケーションでは、解読処理などの処理の実現は複雑であり、コプロセッサが実行できないタスクは汎用プロセッサにより実現されてもよい。確かに、解読モジュールがコプロセッサに備えられているとき、コプロセッサは自らオリジナルデータパケットを解読してもよい。
【0148】
他の実施例では、汎用プロセッサが、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理することは、汎用プロセッサが、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが属するフローのサービスタイプを決定し、サービスタイプに従ってフローに対してトラフィック統計、課金又は送信アクセラレーションを実行することを含むものであってもよい。
【0149】
具体的には、オペレータは、VoIP(Voice over Internet Protocol)トラフィックに対して課金することを所望し、汎用プロセッサは、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが配置されるデータフローがSkypeプロトコルを利用したVoIP電話のデータフローであると判断すると、当該フローに対してトラフィック統計を実行し、これにより、VoIP電話サービスに対する課金を実現してもよい。
【0150】
ユーザがオンラインゲームなどのいくつかのアプリケーションに対してトラフィックアクセラレーションを実行することを所望するとき、汎用プロセッサは、フローの送信速度を確保するため、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットが属するフローがオンラインゲームサービスに利用されると判断すると、当該フローに対してアクセラレーションを実行する。
【0151】
ユーザがいくつかのアプリケーションをブロックすることを所望するとき、汎用プロセッサは、アプリケーションレイヤ解析結果に従ってオリジナルデータパケットが属するフローが特定のアプリケーションプログラムに利用されると判断すると、当該フローをブロックしてもよい。
【0152】
好ましくは、他の実施例では、オリジナルデータパケットのアプリケーションレイヤ解析結果は、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとURLマッチング結果とを有し、ここで、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプは、オリジナルデータパケットに対してプロトコル特定を実行するためにコプロセッサのプロトコル特定サブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアにより取得され、さらに、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがHTTP(HyperText Transfer Protocol)であると判断したとき、コプロセッサのプロセッサコアは更に、URLマッチング結果を取得するため、オリジナルデータパケットに対してURLマッチングを実行するためにコプロセッサのURLマッチングエンジンを呼び出し、URLマッチング結果を汎用プロセッサに送信してもよく、コプロセッサにより送信されたURLマッチング結果を受信した後、汎用プロセッサは、アプリケーションレイヤプロトコルタイプとURLマッチング結果とに従って、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、当該フローをブロックする。
【0153】
具体的には、ユーザは、若者が不健全なウェブサイトにアクセスすることを防ぐためグリーンインターネットアクセスサービスを有効にすることを所望し、汎用プロセッサは、処理結果においてHTTPであるアプリケーションレイヤプロトコルタイプとURLマッチング結果とに従って、URLによって指示されるウェブサイトへのアクセスが制限されると判断すると、若者が不健全なウェブサイトにアクセスすることを防ぐため、フローをブロックする。
【0154】
図9は、本発明の実施例によるコプロセッサの概略的な構成図である。
図9に示されるように、本実施例により提供されるコプロセッサ91は、具体的には、本発明の何れかの実施例により提供され、コプロセッサに適用可能なディープパケットインスペクション方法のステップを実現し、ここで、特定の実現処理はここでは詳細には再説明しない。本実施例により提供されるコプロセッサ91は、具体的には、送受信モジュール11、プロセッサコア12及びサブコプロセッサ13を有する。
【0155】
送受信モジュール11は、汎用プロセッサにより送信されたオリジナルデータパケットを受信し、オリジナルデータパケットをプロセッサコア12に送信するよう構成される。
【0156】
プロセッサコア12は、処理結果を取得するため、オリジナルデータパケットに対してアプリケーションプロトコル特定を実行するためにコプロセッサ91のサブコプロセッサ13を呼び出し、処理結果を汎用プロセッサに送信するよう構成される。
【0157】
サブコプロセッサ13は、プロセッサコア12の呼び出しの下でオリジナルデータパケットに対してアプリケーションプロトコル特定を実行するよう構成される。
【0158】
コプロセッサ91は、FPGA又はASICを利用することによって実現されてもよく、1以上のプロセッサコア12がコプロセッサ91に配置され、送受信モジュール11及びサブコプロセッサ13は更にコプロセッサ91に備えられ、サブコプロセッサ13はハードウェア記述言語を利用することによって実現され、ここで、ハードウェア記述言語はVHDL又はVerilog HDLであってもよい。サブコプロセッサ13は、特にデータパケットに対してアプリケーションプロトコル特定を実行するよう構成され、これにより、サービス処理効果を向上させる。
【0159】
本実施例では、コプロセッサ91は更にスイッチングバスモジュール14を有してもよい。対応して、プロセッサコア12は、コプロセッサ91のスイッチングバスモジュール14を利用することによってサブコプロセッサ13を呼び出してもよい。
【0160】
さらに、第1メモリ15及び第2メモリ16は更にコプロセッサ91の機能モジュールのために構成されてもよく、ここで、第1メモリはフローテーブルと条件及びルールとを含むソフトウェアコアに固有のデータ構造を格納し、これにより、DPIコプロセッサは、パケットに基づき処理を実行する代わりにフローの状態を検知することができる。第2メモリは、DFA状態テーブル、シングルモードマッチングアルゴリズム補助データ及びサブコプロセッサのアルゴリズムデータ構造などの各種マッチングエンジン及びサブコプロセッサのデータ構造を格納する。第1メモリ及び第2メモリは単に論理的に分割され、ここで、これら2つは同一の物理メモリに配置されてもよいことに留意すべきである。
【0161】
本実施例により提供されるコプロセッサ91では、送受信モジュール11は、汎用プロセッサ91により送信されたオリジナルデータパケットを受信し、オリジナルデータパケットをコプロセッサ91のプロセッサコア12に送信し、プロセッサコア12は、処理結果を生成するため、オリジナルデータパケットに対してアプリケーションプロトコル特定を実行するためにコプロセッサ91のサブコプロセッサ13を呼び出し、プロセッサコア12は、処理結果を汎用プロセッサに送信し、これにより、汎用プロセッサは、処理結果に従ってオリジナルデータパケットを処理する。汎用プロセッサとコプロセッサ91とはDPIを実現するため連係し、コプロセッサ91のサブコプロセッサ13は、汎用プロセッサからDPI機能を解放するためにDPIサービスのために特別に設計されてもよく、これは、汎用プロセッサのリソース占有を軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することができる。さらに、プロセッサコア12はコプロセッサ91に備えられ、サブコプロセッサ13はプロセッサコア12の呼び出しの下で実行され、これにより、中間状態情報が保持可能であり、プロセッサコア12とサブコプロセッサ13との間のやりとりは全てチップ内のやりとりになり、コプロセッサ91と汎用プロセッサとの頻繁なやりとりを回避し、これにより、実行速度を向上させる。
【0162】
図10は、本発明の実施例による他のコプロセッサ10の概略的な構成図である。
図10に示されるように、本実施例では、送受信モジュール11は、受信部111、フロー処理部112及び配信部113を有してもよい。受信部111は汎用プロセッサによって送信された前記オリジナルデータパケットを受信するよう構成され、フロー処理部112はオリジナルデータパケットに対してフロー処理を実行するよう構成され、配信部113はフロー処理されたデータパケットをプロセッサコア12に送信するよう構成され、具体的には、フロー処理部112は、オリジナルデータパケットに対してフラグメント化IPパケット再構成処理及びアウトオブオーダTCPパケットリオーダリング処理を実行するよう具体的に構成され、コプロセッサ10が複数のプロセッサコアを有するとき、配信部113は、具体的には、少なくとも2つのプロセッサコアの各プロセッサコアのロード状態を決定し、各プロセッサコアのロード状態に従って少なくとも2つのプロセッサコアから1つのプロセッサコアを選択し、フロー処理されたデータパケットを選択されたプロセッサコアに送信し、対応して、選択されたプロセッサコアは、フロー処理されたデータパケットに対して、例えば、アプリケーションプロトコル特定などのアプリケーションレイヤ解析を実行するためにサブコプロセッサ13を呼び出すよう構成される。
【0163】
本実施例では、コプロセッサ10は更にスイッチングバスモジュールを有してもよい。対応して、プロセッサコア12は、具体的には、コプロセッサ10のスイッチングバスモジュール14を利用することによって、サブコプロセッサ13を呼び出す。
【0164】
一実施例では、サブコプロセッサ13はエンドポイント検索サブコプロセッサであってもよく、この場合、サブコプロセッサ13は、具体的には、エンドポイント検索結果を取得するため、プロセッサコア12の呼び出しの下でオリジナルデータパケットに対してエンドポイント検索を実行し、エンドポイント検索結果をプロセッサコア12に返すよう構成される。プロセッサコア12は、具体的には、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【0165】
他の実施例では、
図10に示されるように、サブコプロセッサ13はプロトコル特定サブコプロセッ
サ及び文字列マッチングエンジン132を有する。プロトコル特定サブコプロセッ
サは、プロセッサコアがサブコプロセッサ13を呼び出した後、文字列マッチングエンジン132を呼び出すよう構成され、文字列マッチングエンジン132は、特徴マッチング結果を取得するため、プロトコル特定サブコプロセッ
サの呼び出しの下でオリジナルデータパケットに対して文字列マッチングを実行し、特徴マッチング結果をプロセッサコアに返すよう構成される。
【0166】
対応して、プロセッサコア12は、具体的には、少なくとも特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【0167】
他の実施例では、サブコプロセッサ13はまた正規表現マッチングエンジンであってもよい。正規表現マッチングエンジンは、特徴マッチング結果を取得するため、プロセッサコア12の呼び出しの下でオリジナルデータパケットに対して正規表現マッチングを実行し、特徴マッチング結果をプロセッサコア12に返すよう構成される。プロセッサコア12は、具体的には、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【0168】
好ましくは、サブコプロセッサ13は更に、特徴マッチング結果を取得するため、プロセッサコア12の呼び出しの下でオリジナルデータパケットに対して動作特徴マッチングを実行し、特徴マッチング結果をプロセッサコア12に返すよう構成される動作特徴統計サブコプロセッサ133を有してもよい。プロセッサコア12は、具体的には、特徴マッチング結果に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定し、オリジナルデータパケットのアプリケーションレイヤ解析結果として決定されたアプリケーションレイヤプロトコルタイプを利用し、アプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【0169】
好ましくは、本実施例では、コプロセッサ10は更に、解析結果を取得するため、プロセッサコア12の呼び出しの下でオリジナルデータパケットに対してプロトコル解析を実行し、解析結果をプロセッサコア12に返すよう構成されるプロトコル解析サブコプロセッサ15を有してもよく、対応して、プロセッサコア12は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果としてオリジナルデータパケットのアプリケーションレイヤプロトコルタイプとプロトコル解析サブコプロセッサ15により取得された解析結果とを汎用プロセッサに送信するよう構成される。
【0170】
好ましくは、本実施例では、コプロセッサ10は更に、URLマッチング結果を取得するため、プロセッサコア12の呼び出しの下でオリジナルデータパケットに対してURLマッチングを実行し、URLマッチング結果をプロセッサコア12に返すよう構成されるURL(Uniform Resource Locator)マッチングエンジン16を有してもよく、対応して、プロセッサコア12は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果としてオリジナルデータパケットのアプリケーションレイヤプロトコルタイプとURLマッチング結果とを汎用プロセッサに送信するよう構成される。
【0171】
好ましくは、本実施例では、コプロセッサ10は更に結果報告処理モジュール17を有する。プロセッサコア12は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果を結果報告処理モジュール17に送信するよう構成され、結果報告処理モジュール17は、所定のフォーマットに従ってアプリケーションレイヤ解析結果をカプセル化し、カプセル化されたアプリケーションレイヤ解析結果を汎用プロセッサに送信するよう構成される。
【0172】
実際のアプリケーションでは、DPI装置の汎用プロセッサとコプロセッサ91とは連係してDPIサービスを実現し、ここで、コプロセッサ91の機能モジュールは実際のDPIサービス要求に従って備えられてもよく、プロセッサコア12のロジックはまた、実際のDPIサービス要求に従ってプログラムされてもよい。上記の実施例は機能モジュールの複数の実現方法を提供するが、本発明はこれに限定されるものでない。
【0173】
DPI装置は複数のレイヤ、例えば、算術集中レイヤ、DPIサービス制御レイヤ、DPIサブサービスロジックレイヤ及びアルゴリズムエンジンレイヤの先頭から最後尾への4つのレイヤに分割されてもよい。より上位のレイヤはより複雑で汎用的なサービスを処理し、より下位のレイヤはよりシンプルでより専用のアルゴリズムを有する。ハードウェアアクセラレーションパフォーマンスを向上させるため、可能な限り多くのDPI関連タスクがコプロセッサによって実行されるべきである。この場合、汎用プロセッサはより多くの算術集中タスクを実行してもよい。コプロセッサは、DPIサービス制御レイヤ、DPIサブサービス論理レイヤ及びアルゴリズムエンジンレイヤのロジックを実現することを担当する。
【0174】
原理的には、上位レイヤモジュールは、要求される機能を実現するため下位レイヤモジュールを呼び出す。確かに、同一レイヤのモジュールはまた、連係して機能を完了させるため互いを呼び出してもよい。レイヤは以下において詳細に説明される。
【0175】
レイヤ1:DPIサービスロジックにおける暗号化及び解読、符号化及び復号化、及び複雑なロジック処理、付加価値のあるサービスなどの他の非DPIサービス、ポリシーマッチング、パケットアクションの実行などを含む大量の算術処理を要求するタスクを担当する算術集中レイヤ。
【0176】
レイヤ2:コプロセッサにおいてプロセッサコアを配置することによって、DPIエンジン、条件ルールマッチング、クロスパケット処理及び中間状態格納のステップに対するシーケンス制御の実行などのDPIサービス関連制御ロジックを含むDPIサービス制御ロジックを実行するDPIサービス制御レイヤ。
【0177】
レイヤ3:プロトコル特定サブコプロセッサ、プロトコル解析サブコプロセッサ及び動作特徴統計サブコプロセッサなど固定されてもよいDPI固有のサブサービスを担当するDPIサブサービス論理レイヤ。
【0178】
レイヤ4:正規表現マッチンエンジング、浮動小数点表現エンジン、マルチモード文字列マッチングアルゴリズムエンジン、シングルモード文字列マッチングアルゴリズムエンジン、動作パラメータ算術エンジンなどのDPIについて具体的に最適化されるアルゴリズムエンジンタスクを担当するアルゴリズムエンジンレイヤ。
【0179】
コプロセッサの内部において、すなわち、レイヤ2〜4において、スイッチングバスモジュールがこれらの階層化されたモジュール間のメッセージ及びデータのやりとりを実行するよう構成されることに特に留意すべきである。しかしながら、チップ間のやりとりはレイヤ1と他のレイヤとの間で、すなわち、汎用プロセッサとコプロセッサとの間で実行され、これは、例えば、PCIE(Personal Computer Interface Express)などの標準化されたバスを利用することによって実現されてもよい。バスのタイプは、汎用プロセッサによって提供される外部インタフェースに従って設定されてもよい。
【0180】
対応するレイヤに割り当てられてもよいモジュールに加えて、補助的処理のためのいくつかのモジュールがあり、ここで、これらのモジュールはレイヤから独立し、コプロセッサ91における送受信モジュール、結果報告処理モジュール、メモリリードライトモジュール、キャッシュなどの固定的なロジックを利用することによって実現されてもよい。
【0181】
実際の実現処理では、汎用プロセッサは更に、サービスタイプに従って汎用プロセッサ自体又はコプロセッサが処理を実行するか予め決定してもよく、サービスタイプが上位レイヤのものであって複雑な処理アルゴリズムに相当する場合、汎用プロセッサが処理を実行し、サービスタイプがDPI関連サービスである場合、コプロセッサが処理を実行する。
【0182】
階層化された設計アーキテクチャに加えて、本発明の本実施例は更に、DPI中間状態を格納するため、コプロセッサのための外部メモリを構成することを提案し、これにより、
図10における第1メモリ83及び第2メモリ84などのより良好なスケーラビリティ及びパフォーマンスを実現する。この場合、状態が格納される必要があるタスクが処理されると、当該タスクは汎用プロセッサによって完了される必要はなく、コプロセッサはそれのより多くのプロセッサリソースを解放する。さらに、構成された外部メモリは更に、DPI処理中に利用される必要がある各種特徴フィールドのデータ構造及びアルゴリズムに固有のデータ構造を格納してもよい。この場合、コプロセッサは、バスを介し汎用プロセッサを利用することによって読み出す代わりに、データを直接的に迅速に読み出してもよく、より高い処理パフォーマンスを実現してもよい。
【0183】
本実施例では、文字列マッチングエンジン132は、具体的には、プロセッサコア12の呼び出しの下、第1メモリ83から文字列マッチングアルゴリズム状態テーブルを読み出し、特徴マッチング結果を取得するため、文字列マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して文字列マッチングを実行するよう構成され、ここで、第1メモリ83は文字列マッチングアルゴリズム状態テーブルを格納するよう構成される。
【0184】
具体的には、第1メモリ83はコプロセッサ10の機能モジュールのために構成され、第1メモリ83は文字列マッチングアルゴリズム状態テーブルを格納し、文字列マッチングエンジン132がマルチモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはマルチモード文字列マッチングアルゴリズム状態テーブルであり、文字列マッチングエンジン132がシングルモード文字列マッチングエンジンであるとき、文字列マッチングアルゴリズム状態テーブルはシングルモード文字列マッチングアルゴリズム状態テーブルである。例えば、マルチモード文字列マッチングアルゴリズムはACアルゴリズムであり、マルチモード文字列マッチングアルゴリズム状態テーブルはAC状態テーブルであり、マルチモード文字列マッチングエンジンは、マルチモード文字列マッチングアルゴリズム状態テーブルに従ってデータパケットに対してマルチモード文字列マッチングを実現してもよい。マルチモード文字列マッチングエンジンは、第1メモリ83に対してリード又はライト処理を直接的には実行せず、コプロセッサ10にはキャッシュが備えられ、キャッシュを利用することによって第1メモリ83にアクセスする。
【0185】
本実施例では、正規表現マッチングエンジンは、具体的には、プロセッサコア12の呼び出しの下、第1メモリ83から正規表現マッチングアルゴリズム状態テーブルを読み出し、正規表現マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して正規表現マッチングを実行するよう構成され、ここで、第1メモリ83は、正規表現マッチングアルゴリズム状態テーブルを格納するよう構成される。
【0186】
具体的には、第1メモリ83は正規表現マッチングアルゴリズム状態テーブルを格納し、例えば、正規表現マッチングアルゴリズムがDFAアルゴリズムであるとき、正規表現マッチングアルゴリズム状態テーブルはDFA状態テーブルであり、正規表現マッチングエンジンは、正規表現マッチングアルゴリズム状態テーブルに従ってデータパケットに対して正規表現マッチングを実現してもよい。正規表現マッチングエンジンは、第1メモリ83に対してリード又はライト処理を直接的には実行せず、コプロセッサ10にはキャッシュが備えられ、キャッシュを利用することによって第1メモリ83にアクセスする。
【0187】
本実施例では、文字列マッチングエンジン132が特徴マッチング結果を取得するため、第1メモリ83における文字列マッチングアルゴリズム状態テーブルに従ってオリジナルデータパケットに対して文字列マッチングを実行した後、プロセッサコア12は、第2メモリ84から条件ルールデータ構造を読み出し、特徴マッチング結果及び条件ルールデータ構造に従ってオリジナルデータパケットのアプリケーションレイヤプロトコルタイプを決定するよう構成され、ここで、第2メモリ84が、条件ルールデータ構造を格納するよう構成される。
【0188】
具体的には、第2メモリ84はコプロセッサ10のプロセッサコア12のために構成され、第2メモリ84は条件ルールデータ構造を格納し、ここで、条件ルールデータ構造は、サービスルールとアプリケーションレイヤプロトコルタイプとの間の対応関係を格納するのに利用され、プロセッサコア12は、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプを取得するため、文字列マッチングエンジンにより取得された特徴マッチング結果に従って第2メモリの条件ルールデータ構造を検索する。プロセッサコア12が第2メモリに対してリード又はライト処理を直接的には実行しないことが許容され、コプロセッサ10にはキャッシュが備えられ、キャッシュを利用することによって第2メモリ84にアクセスする。
【0189】
本実施例では、第1メモリ83及び第2メモリ84はダブルバンクモードを有してもよい。
【0190】
具体的には、第1メモリ83及び第2メモリ84はダブルバンク(Double Bank)モードとなるよう設計されてもよく、ここで、第1バンクは、現在使用され、現在バンクとして参照されるデータ構造を格納するのに利用され、第2バンクは、アップグレードされたデータ構造を格納するのに利用され、アップグレードバンクとして参照される。システムの実行中の処理では、コプロセッサ10は、サービス処理を実現するため現在のバンクにおけるデータにアクセスする。この処理では、メモリのデータがアップグレードされる必要があるとき、アップグレード対象のデータはアップグレードバンクにロードされてもよく、アップグレード処理は、メモリの現在のバンクへのコプロセッサ10のアクセスに影響を与えず、新たなデータがロード後にシステムバンクにスイッチされ、この場合、第1バンクがシステムバンクとして利用され、第2バンクが現在バンクとして利用され、同様に、第1バンク及び第2バンクは、アップグレードデータを格納するため交互に利用され、これは、現在のサービスを中断することなくアップグレードが有効であることを保証する。実際のアプリケーションでは、システムバンクがスイッチされた後、いくつかのサービストラフィックは依然として処理中の処理にあるため、処理中の処理に依然としてあるサービストラフィックは新たなシステムバンクに強制的にスイッチされ得ないことが重要である。この場合、新たなサービストラフィックは新たなシステムバンクのデータを利用することによって処理され、既存のサービストラフィックはオリジナルのシステムバンクを利用することによって処理され続ける。オリジナルのシステムバンクは、全ての既存のサービストラフィックが完全に処理された後に限って非アクティブ状態に設定される。これは、現在のサービスを中断することなくシステムアップグレードを実現する。
【0191】
例えば、BitTorrentプロトコルのオリジナルの特定機能は“Bttorrent”であるが、BitTorrentソフトウェアはアップグレードされているため、新たな機能は“XBttorrent”である。従って、DPI特定のための知識ベースは更新される必要があり、ここで、本発明のコプロセッサ10の対応するデータ構造は、AC状態テーブルに格納される特定の文字列特徴である。従って、新たにコンパイルされた特徴データ構造はアップグレードバンクにロードされる必要がある。ロード処理では、マルチモード文字列マッチングエンジンは依然として現在バンクを利用する。ロード処理が完了した後、現在バンク及びシステムバンクはスイッチされる。マルチモード文字列マッチングエンジンは、新たなAC状態テーブルを読み出してもよい。
【0192】
実際のアプリケーション処理は、主としてコンパイル部分と実行部分とを含む。
【0193】
コンパイル部分:特徴コンパイラ、解析サブプロセッサコンパイラ、結果テンプレートコンパイラ及びポリシーコンパイラ。
【0194】
実際のアプリケーションでは、コンパイラは主として、
a.フロントエンドコンパイラ:特徴コンパイラ、解析サブプロセッサコンパイラ、マッチングルールコンパイラなど
b.バックグラウンドコンパイラ:正規表現コンパイラ、シングルモード文字列アルゴリズムコンパイラ、マルチモード文字列アルゴリズムコンパイラなど
を含む。
【0195】
フロントエンドコンパイラの主要な機能は、各種DPIサービスのルール(例えば、アプリケーションプロトコル特定、IPS/IDS及びURLフィルタリングなど)を、本発明によるコプロセッサにより利用可能なルール、すなわち、正規表現、文字列、値などに分類し、第2メモリにおいてデータ構造、すなわち、条件ルールデータ構造などを生成し、コプロセッサにおけるプロセッサコアのソフトウェアロジックハイレベルプログラミング言語コードを、コプロセッサのプロセッサコアにより実行可能な命令にコンパイルし、汎用プロセッサにより利用される各種DPIサービスデータ構造、すなわち、解読特定及びアルゴリズム特定をサポートするため上述されたデータ構造をコンパイルすることを含む。
【0196】
バックグラウンドコンパイラの主要な機能は、各種コプロセッサにおける最下位レイヤのアルゴリズムエンジンモジュールにより利用されるデータ構造、すなわち、上記説明で例示され、ここでは詳細には再説明しない第1メモリにおけるデータ構造を有する。
【0197】
2つのタイプのコンパイラに加えて、コンパイル部分のモジュールは更にコプロセッサドライブプログラムを有し、当該プログラムは、各種のコンパイルされたデータ構造をコプロセッサの第1メモリ及び第2メモリとコプロセッサのチップ内メモリ(プロセッサコアのロジック命令はプロセッサのチップ内メモリに格納されるなど)とにロードすることを担当する。
【0198】
実行部分:コンフィギュレーションAPI、DPI処理API、ドライブプログラム、DPIサービス制御レイヤのプロセッサコアのファムウェア、DPIサブサービス処理レイヤ(解析文字プロセッサ、URLフィルタリングモジュール及びポリシーマッチングモジュール)及びアルゴリズムエンジンレイヤ(シングルモード文字列マッチングエンジン、正規表現マッチングエンジン及びマルチモード文字列マッチングエンジン)のハードウェアモジュール。
【0199】
図11は、本発明の実施例による汎用プロセッサの概略的な構成図である。
図11に示されるように、本実施例により提供される汎用プロセッサ82は、具体的には、本発明の何れかの実施例により提供され、汎用プロセッサに適用可能なディープパケットインスペクション方法のステップを実現してもよく、ここで、特定の実現処理はここでは詳細には再説明しない。本実施例により提供される汎用プロセッサは、送信モジュール21、送受信モジュール22及び処理モジュール23を有する。
【0200】
送信モジュール21は、オリジナルデータパケットをコプロセッサに送信するよう構成される。
【0201】
受信モジュール22は、コプロセッサによって送信されたオリジナルデータパケットのアプリケーションレイヤ解析結果を受信するよう構成され、ここで、アプリケーションレイヤ解析結果は、オリジナルデータパケットに対してアプリケーションレイヤ解析を実行するためにコプロセッサの少なくとも1つのサブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアにより取得され、アプリケーションレイヤ解析結果は、オリジナルデータパケットのアプリケーションレイヤ情報を示すのに利用される。
【0202】
処理モジュール23は、少なくともアプリケーションレイヤ解析結果に従ってオリジナルデータパケットを処理するよう構成される。
【0203】
本実施例により提供される汎用プロセッサでは、汎用プロセッサは、オリジナルデータパケットをコプロセッサに送信し、コプロセッサにより送信された処理結果を受信し、処理結果に従ってオリジナルデータパケットを処理する。汎用プロセッサとコプロセッサとはDPIを実現するため連係し、コプロセッサのサブコプロセッサは、汎用プロセッサからDPI機能を解放するためDPIサービスのために特別に設計されてもよく、これは、汎用プロセッサのリソース占有を軽減し、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、これにより、中間状態情報が保持可能になり、プロセッサコアとサブコプロセッサとの間のやりとりは全てチップ内のやりとりになり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、これにより、実行速度を向上させることができる。
【0204】
一実施例では、処理モジュール23は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータ
パケットが暗号化されたデータパケットであると特定された場合、オリジナルデータパケットを解読するよう構成される。
【0205】
他の実施例では、処理モジュール23は、具体的には、オリジナルデータパケットのアプリケーションレイヤ解析結果に従って、オリジナルデータパケットが属するフローのサービスタイプを決定し、サービスタイプに従ってオリジナルデータパケットが属するフローに対してトラフィック統計、課金又は送信アクセラレーションを実行するよう構成される。
【0206】
他の実施例では、オリジナルデータパケットのアプリケーションレイヤ解析結果は、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプとURLマッチング結果とを含み、ここで、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプは、オリジナルデータパケットに対してプロトコル特定を実行するためにコプロセッサのプロトコル特定サブコプロセッサを呼び出すことによって、コプロセッサのプロセッサコアによって取得されてもよく、さらに、オリジナルデータパケットのアプリケーションレイヤプロトコルタイプがHTTP(HyperText Transfer Protocol)であると判断すると、コプロセッサのプロセッサコアは更に、URLマッチング結果を取得するため、オリジナルデータパケットに対してURLマッチングを実行するためにコプロセッサのURL(Uniform Resource Locator)マッチングエンジンを呼び出し、URLマッチング結果を汎用プロセッサに送信してもよく、対応して、コプロセッサにより送信されたURLマッチング結果を受信した後、汎用プロセッサは、アプリケーションレイヤプロトコルタイプとURLマッチング結果とに従って、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用されるか判断し、オリジナルデータパケットが属するフローが制限されたウェブサイトにアクセスするのに利用される場合、当該フローをブロックする。
【0207】
図12は、本発明の実施例による第1DPI装置の概略的な構成図である。
図12に示されるように、本実施例により提供されるDPI装置は、本発明の何れかの実施例により提供されるコプロセッサ81と、本発明の何れかの実施例により提供される汎用プロセッサ82とを含む。
【0208】
本実施例により提供されるDPI装置では、汎用プロセッサ82とコプロセッサ81とはDPIを実現するため連係し、コプロセッサ81のサブコプロセッサはDPIサービスのために特別に設計されてもよく、DPI機能は汎用プロセッサ82から解放され、これは、汎用プロセッサ82のリソース占有を軽減し、これにより、汎用プロセッサ82は他の付加価値サービスを処理してもよい。さらに、プロセッサコアがコプロセッサ81に備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、中間状態情報が保持されてもよく、プロセッサコアとサブコプロセッサとの間の全てのやりとりがチップ内のやりとりとなり、コプロセッサ81と汎用プロセッサ82との間の頻繁なやりとりが回避され、これにより、実行速度が向上する。
【0209】
一実施例では、DPI装置に含まれる1つの汎用プロセッサがある。実際のアプリケーションでは、1つのコプロセッサはまた、1以上の汎用プロセッサと連係してDPIサービスを実現してもよい。
【0210】
他の実施例では、DPI装置に含まれる少なくとも2つの汎用プロセッサがあり、DPI装置は更にネットワークアダプタとロードバランシング装置とを有する。
【0211】
ネットワークアダプタは、ネットワークからデータパケットを受信し、データパケットをロードバランシング装置に送信するよう構成され、
ロードバランシング装置は、少なくとも2つの汎用プロセッサの各汎用プロセッサのロード状態を取得し、各汎用プロセッサのロード状態に従って1つの汎用プロセッサを選択し、データパケットを選択された汎用プロセッサに送信するよう構成される。
【0212】
図13は、本発明の実施例による第2DPI装置の概略的な構成図である。
図13に示されるように、2つの汎用CPU(
図13の33及び35)がDPI装置に備えられる具体例を利用して、ネットワークアダプタ31及びロードバランシング装置32が更にDPI装置に備えられる。ネットワークアダプタ31は、ネットワークにおける他の装置により送信されたデータパケットを受信し、ロードシェアリングを担当するロードバランシング装置32を利用することによって、処理のため適切な汎用CPUに送信し、DMA(Direct Memory Access)方式を利用しない。汎用CPUは、DPI処理が要求されていると判断すると、データパケットをコプロセッサ34に送信し、コプロセッサ34が処理を終了した後、PCIEインタフェースを介しDPI処理結果を受信し、DPI処理結果に従って他のサービス処理を更に実行した後、ネットワークアダプタ31を利用することによって、転送対象のデータパケットを転送する。
【0213】
ロードバランシング装置32はFPGAを利用することによって実現されてもよく、ロードバランシング装置32は、一方では各汎用CPUのロード状態に従ってデータパケットを処理するのに適切な汎用CPUを選択し、他方では、メッセージ送受信ロジックを実現してもよい。DPI装置が1つの汎用CPUしか有さないとき、ロードバランシング装置32が備えられないことが許容され、メッセージ送受信ロジックは他のチップを利用することによって実現されてもよく、本発明の本実施例の汎用CPUは、具体的には、Cavium汎用CPUであってもよい。
【0214】
本発明の本実施例により提供されるDPI装置では、汎用プロセッサとコプロセッサとはDPIを実現するため連係し、コプロセッサにおけるサブコプロセッサは、汎用プロセッサからDPI機能を解放するためにDPIサービスのために特別に設計されてもよく、汎用プロセッサのリソース占有が軽減され、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサがプロセッサコアの呼び出しの下で実行され、中間状態情報が保持可能であり、プロセッサコアとサブコプロセッサとの間のやりとりが全てチップ内のやりとりとなり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、これにより、処理遅延を短縮できる。
【0215】
図14は、本発明の実施例による第3DPI装置の概略的な構成図である。
図14に示されるように、本実施例では、DPI装置は2つの汎用CPU(
図14の42,45)を有し、DDR3メモリ43は汎用CPU42のために構成され、DDR3memory46は汎用CPU45のために構成される。ネットワークアダプタ41が更にDPI装置に備えられ、ネットワークの他の装置により送信されたデータパケットを受信した後、ネットワークアダプタ41はまず、PCI−Eインタフェースを利用することによってDMA方式によりデータパケットを読み出しよう汎用CPU42をトリガし、データパケットをネットワークアダプタにより用いられるDDR3メモリ43に格納する。汎用CPU42がある処理の実行後にDPI処理が実行される必要があると検出した場合、汎用CPU42は、DPI処理のためデータパケットをDMA方式によりコプロセッサ44に送信し、処理の完了後、コプロセッサ44は、更なる処理のためDPI処理結果を汎用CPU42に返し、その後、Sandy−Bridge汎用CPU42は、転送される必要があるデータパケットをネットワークアダプタ41を利用することによってネットワークの次のネットワーク装置に送信する。本発明の本実施例による汎用CPUがSandy−Bridge汎用CPUであってもよいことに留意すべきである。
【0216】
本発明の本実施例により提供されるDPI装置では、汎用プロセッサとコプロセッサとはDPIを実現するよう連係し、コプロセッサのサブコプロセッサは、DPI機能を汎用プロセッサから解放するため、DPIサービスのために特別に設計されてもよく、汎用プロセッサのリソース占有が軽減され、これにより、汎用プロセッサは他の付加価値サービスを処理することが可能になる。さらに、プロセッサコアがコプロセッサに備えられ、サブコプロセッサはプロセッサコアの呼び出しの下で実行され、これにより、中間状態情報が保持可能となり、プロセッサコアとサブコプロセッサとの間のやりとりが全てチップ内のやりとりになり、コプロセッサと汎用プロセッサとの間の頻繁なやりとりが回避され、これにより、処理遅延が短縮される。
【0217】
本発明の実施例により提供されるディープパケットインスペクション方法及び装置は複数のアプリケーションシナリオに適用されてもよく、例えば、限定することなく、DPIコプロセッサを利用して企業ネットワークルータ上でアプリケーションプロトコル特定、ディーププロトコル解析、IDS(Intrusion Detection System)及びポリシーエンジンを実行し、DPIコプロセッサを利用してルータ及びBRAS(Broadband Remote Access Server)上でアプリケーションプロトコル特定、ディーププロトコル解析及びポリシーエンジンを実行し、DPIコプロセッサを利用してアプリケーションゲートウェイ上でアプリケーションプロトコル特定、ディーププロトコル解析、コンテンツフィルタリング及びポリシーエンジンを実行し、DPIコプロセッサを利用して無線アクセスネットワーク要素RNC(Radio Network Controller)及びNodeB上でアプリケーションプロトコル特定、ディーププロトコル解析、無線リソース最適化及びポリシーエンジンを実行する。
【0218】
当業者は、方法の実施例のステップの全て又は一部がプログラムが関連するハードウェアに命令することによって実現されてもよい。プログラムはコンピュータ可読記憶媒体に格納されてもよい。プログラムが実行されると、方法の実施例のステップが実行される。上記の記憶媒体は、ROM、RAM、磁気ディスク又は光ディスクなどのプログラムコードを格納可能な何れかの媒体を含む。
【0219】
最後に、上記の実施例は本発明を限定する以外の本発明の技術的手段を説明することを単に意図したものであることに留意すべきである。本発明は上記の実施例を参照して詳細に説明されたが、当業者は、本発明の実施例の技術的手段の範囲から逸脱することなく、上記の実施例において説明された技術的手段に対して修正したり、又はある技術的特徴との等価な置換をしてもよいことを理解すべきである。