(57)【要約】ネットワーク内またはネットワーク全体にわたるサービス品質を提供するように設計されたプログラミング可能なネットワークポリシーを実行するために、ポリシーゲートウェイとして機能するネットワーク処理システム（４０）が記述されている。プログラミング可能なネットワークポリシーは、リモートサーバの管理インタフェースを使用して、イメージロードファイルに変換され、ネットワーク処理システム（４０）に送信される。ネットワーク処理システム（４０）では、イメージは、処理エンジン（４４、４６）にロードされる。ネットワーク処理システム（４０）は、ネットワークからデータを取り込み、かつ、処理されたデータをネットワーク上に再び送信するラインインタフェース（３８、４２）を含む。単方向処理エンジンは、ラインインタフェース（３８、４２）からデータを取り込み、各データパケットを識別子と関連付ける。識別子は、データパケットがその一部をなすフローを識別する。次に、フローは、プログラミング可能なネットワークポリシーのデータベースと比較され、処理エンジン（４４、４６）は、その比較結果に基づいて取り扱いを決定する。次に、処理エンジン（４４、４６）内のサービス品質プロセッサは、この取り扱いを使用して、ネットワークポリシーと整合するように、データパケットを変更し、方向付ける。
2004532559.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上でネットワークポリシーを実行するネットワーク処理システムであって、前記ネットワークは、複数のデータパケットからなり、該データパケットは、複数のフローを形成し、該ネットワーク処理システムは、
前記ネットワークからデータパケットを受信するように動作でき、さらに、処理されたデータパケットを前記ネットワーク上に再び送信するように動作できるネットワークインタフェースと、
前記ネットワークインタフェースと通信する処理エンジンであって、該処理エンジンは、各データパケットを識別子と関連付けるように動作でき、該識別子は、前記データパケットがその一部をなす前記フローと関連付けられ、該処理エンジンは、さらに、各フローを、該処理エンジンに記憶されたデータベースと比較するように動作でき、該データベースは、一組のプログラミング可能なネットワークポリシーに関する情報を記憶し、該一組のプログラミング可能なネットワークポリシーは、各フローの取り扱いを決定して、これによって、該処理エンジンが、指示された取り扱いに従って前記データパケットを変更して方向付けることができる、処理エンジンと、
を備えるネットワーク処理システム。
【請求項２】
第２の処理エンジンをさらに備え、各処理エンジンは、単方向であって、互いに逆方向であり、これにより、双方向のネットワーク処理システムを作成する、請求項１に記載のネットワーク処理システム。
【請求項３】
前記処理エンジンは、１つまたは２つ以上のフローの状態を保持し、該状態は、前記識別子を使用して各フローと関連付けられる、請求項１に記載のネットワーク処理システム。
【請求項４】
特定のフローに属する新たなパケットが検査される時の該特定のフローに対して存在する状態が、前記データベースと共に使用されて、前記取り扱いが決定される、請求項３に記載のネットワーク処理システム。
【請求項５】
前記処理エンジンは、各パケットの全内容を検査することができる、請求項１に記載のネットワーク処理システム。
【請求項６】
前記プログラミング可能なネットワークポリシーは、分離した別のサーバでプログラミングされて、イメージファイルの形式で該ネットワーク処理システムにダウンロードされる、請求項１に記載のネットワーク処理システム。
【請求項７】
前記一組のプログラミング可能なネットワークポリシーは、シグネチャメモリにシグネチャとして記憶される、請求項１に記載のネットワーク処理システム。
【請求項８】
前記処理エンジンは、前記パケットのヘッダ情報を検査するヘッダプリプロセッサと、前記パケットを前記データベースと比較して、取り扱いを決定する内容プロセッサと、前記パケットを変更して、前記取り扱いに従って前記パケットを方向付けるサービス品質プロセッサとを含む、請求項１に記載のネットワーク処理システム。
【請求項９】
各処理エンジンは、補助的な操作を行うマイクロプロセッサをさらに含む、請求項８に記載のネットワーク処理システム。
【請求項１０】
ネットワーク上でネットワークポリシーを実行するネットワーク処理システムであって、前記ネットワークは、複数のデータパケットからなり、該複数のデータパケットは、複数のフローを形成し、該ネットワーク処理システムは、
前記ネットワークからデータパケットを受信し、処理されたデータパケットを前記ネットワーク上に送信するように動作できる少なくとも１つの左ラインインタフェースと、
前記ネットワークからデータパケットを受信し、処理されたデータパケットを前記ネットワーク上に送信するように動作できる少なくとも１つの右ラインインタフェースと、
前記左インタフェースからデータパケットを受信し、処理されたデータパケットを前記右ラインインタフェースに送信する右処理エンジンと、
前記右インタフェースからデータパケットを受信し、処理されたデータパケットを前記左ラインインタフェースに送信する左処理エンジンと、
を備え、
前記右処理エンジンおよび前記左処理エンジンのそれぞれは、
前記データパケットを処理して、各データパケットを特定のフローと関連付け、フローのサブセットの状態を保持し、かつ、各フローを、各フローの前記データパケットの取り扱いを指示するネットワークポリシーのデータベースと比較するトラフィックフロープロセッサと、
前記トラフィックフロープロセッサと通信するサービス品質プロセッサであって、該サービス品質プロセッサに、前記データパケットの内容をどのように変更するか、および、前記データパケットにどのサービス品質を与えるかを指示する前記トラフィックフロープロセッサからの前記取り扱いを受信するサービス品質プロセッサと、
をさらに備えるネットワーク処理システム。
【請求項１１】
前記左処理エンジンおよび前記右処理エンジンにバスインタフェースを通じて接続された管理モジュールをさらに備え、該管理モジュールは、前記左処理エンジンおよび前記右処理エンジンと通信できるマイクロプロセッサを含む、請求項１０に記載のネットワーク処理システム。
【請求項１２】
前記左処理エンジンおよび前記右処理エンジンは、フローに関する情報を交換する、請求項１０に記載のネットワーク処理システム。
【請求項１３】
前記トラフィックフロープロセッサは、ヘッダプリプロセッサおよび内容プロセッサを備え、前記ヘッダプリプロセッサは、各パケットのヘッダ情報を検査するように動作でき、前記内容プロセッサは、前記パケットを前記ネットワークポリシーのデータベースと比較するように動作できる、請求項１０に記載のネットワーク処理システム。
【請求項１４】
前記ネットワークポリシーのデータベースは、シグネチャのメモリイメージであり、該シグネチャが、前記ネットワークポリシーを形成する、請求項１０に記載のネットワーク処理システム。
【請求項１５】
特定のフローに属する新たなパケットが検査される時の該特定のフローに対して存在する状態が、前記データベースと共に使用されて、前記取り扱いが決定される、請求項１０に記載のネットワーク処理システム。
【請求項１６】
前記プログラミング可能なネットワークポリシーは、分離した別のサーバの管理インタフェースを使用してプログラミングされ、イメージファイルの形式で該ネットワーク処理システムにダウンロードされる、請求項１０に記載のネットワーク処理システム。
【請求項１７】
前記管理インタフェースは、該ネットワーク処理システムから統計情報およびイベント情報を検索するようにも動作する、請求項１６に記載のネットワーク処理システム。
【請求項１８】
前記左処理エンジンおよび前記右処理エンジンは、補助的な処理操作を行うマイクロプロセッサをさらに備える、請求項１０に記載のネットワーク処理システム。
【請求項１９】
ネットワーク上でネットワークポリシーを実行するネットワーク処理システムおよび管理インタフェースであって、前記ネットワークは、複数のフローを形成する複数のデータパケットからなり、該ネットワーク処理システムは、
ネットワークトラフィックを処理するように動作できる少なくとも１つのネットワーク処理システムであって、各ネットワーク処理システムは、
前記ネットワークからデータパケットを受信するように動作でき、さらに、処理されたデータパケットを前記ネットワーク上に再び送信するように動作できるネットワークインタフェースと、
前記ネットワークインタフェースと通信する処理エンジンであって、該処理エンジンは、各データパケットを識別子と関連付けるように動作でき、該識別子は、前記データパケットが属する前記フローと関連付けられ、該処理エンジンは、さらに、各フローを、該処理エンジンに記憶されたデータベースと比較するように動作でき、該データベースは、一組のプログラミング可能なネットワークポリシーに関する情報を記憶し、該一組のプログラミング可能なネットワークポリシーは、各フローの取り扱いを決定して、これによって、該処理エンジンが、指示された取り扱いに従って前記データパケットを変更して方向付けることができる、処理エンジンと、
をさらに備える少なくとも１つのネットワーク処理システムと、
各ネットワーク処理システムと通信する分離した別のサーバ上でプログラミングされた各ネットワーク処理システムを制御する管理インタフェースであって、各ネットワーク処理システムをプログラミングすることをユーザに可能にするプログラミングインタフェースと、適切なネットワーク処理システムにロードできるイメージに前記プログラムを変換するイメージビルダと、前記適切なネットワーク処理システムと通信して、該適切なネットワーク処理システムに前記イメージファイルを送信するように動作できるインタフェースプログラムとを含む、管理インタフェースと、
を備えるネットワーク処理システムおよび管理インタフェース。
【請求項２０】
前記管理インタフェースは、さらに、該ネットワーク処理システムのそれぞれから統計情報およびイベント情報を検索するように動作できる、請求項１９に記載のネットワーク処理システムおよび管理インタフェース。
【請求項２１】
前記イメージは、該イメージの作成に使用されるソースファイルを含む、請求項１９に記載のネットワーク処理システムおよび管理インタフェース。
【請求項２２】
前記ネットワーク処理システムは、前記処理エンジンおよび前記管理インタフェースと通信する管理モジュールをさらに含む、請求項１９に記載のネットワーク処理システムおよび管理インタフェース。
【請求項２３】
前記ネットワーク処理システムは、第２の処理エンジンをさらに備え、各処理エンジンは、単方向であって、互いに逆方向であり、これにより、双方向のネットワーク処理システムを作成する、請求項１９に記載のネットワーク処理システムおよび管理インタフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広帯域データネットワーク機器に関する。特に、本発明は、ネットワークプロセッサを使用してネットワークのポリシー管理を実行するネットワーク処理システムに関する。
【背景技術】
【０００２】
ほとんど誰もが、ビジネスを行う第１の手段として、インターネットおよびウェブ基盤のサービスを使用している。電子メール、電子商取引、ＩＰ上の音声（ＶｏＩＰ（Voice over IP））、およびウェブブラウジングといったサービスは、組織内および組織間の通信にとって重要となってきた。ネットワークベースのサービスに対する依存度が増加するにつれて、それらサービスの可用性、信頼性、および応答性に対する消費者の要求も増加している。通常、顧客は、サービスがどのように構成されているかは気にせず、彼らにとって重要なものは、サービス品質（ＱｏＳ（quality of service））である。適切なＱｏＳを提供するために、ネットワークプロバイダは、ＱｏＳの裏側を実行しなければならず、これがポリシーである。ポリシーは、ＱｏＳがいつどこでどのようにしてさまざまなネットワークトラフィックに適用されるかについての詳細を定めるルールを定義する。
【０００３】
サービス品質は、それ自体、他のパケットと比較して、特定の方法でパケットの所定のクラスまたはフローを取り扱う目的でなされたパケットの分類をいう。この分類および取り扱いの基準が、ポリシー条項である。理想的には、ＱｏＳおよびポリシーは、普通なら予測不可能なベストエフォート型広帯域ネットワークの配信サービスを、予測可能なものにすることを意味する。
【０００４】
多くの標準規格が、少なくともある程度は作成および実施され、これにより、例えばインターネットなどのインターネットプロトコル（ＩＰ）ネットワークにＱｏＳを提供する試みがなされてきた。このような標準規格の例には、ＤｉｆｆＳｅｒｖ、ＭＰＬＳ、およびＲＳＶＰが含まれる。これらの標準規格のすべては、適切に起動されたネットワーク機器が、特定のＱｏＳタグを読み取ることができ、それに従ってパケットを取り扱うことができるように、パケットヘッダ内のフィールドの設定（ＤｉｆｆＳｅｒｖ）またはパケットヘッダ内へのシム（shim）の挿入（ＭＰＬＳ）を必要とする。
【０００５】
ＩＰネットワーク上でＱｏＳを有効にすることは、本来、あるユーザまたはアプリケーションが、他のものよりも良好なネットワークサービスを得ることを意味する。したがって、ＱｏＳを有効にすることは、アプリケーションに関係なく、その一部のユーザのネットワークトラフィックの優先度を他のユーザまたはネットワークのトラフィックよりも高くするように試みることにより、あるいは、ネットワークをだまして、一部のユーザトラフィックが、彼ら自身のものよりも高いＱｏＳを有するユーザまたはネットワークに属すると信じさせるように試みることにより、一部のユーザ、さらにはネットワーク管理者に対して、あるインセンティブを与えて、ごまかすことになる。その結果、ネットワークを通過するトラフィックを正確に識別するために送信元ユーザまたはネットワークに頼ることなく、独立にトラフィックの送信元、宛先および性質を識別できることが必要である。
【０００６】
エンドユーザ、アプリケーション、インターネットホスト、企業、またはネットワークプロバイダといったトラフィック所有者が、要求するサービスを受けられる状況は変化するので、ルールが必要となり、また、それらのルールを実行し、かつそれらのルールがいつ適用されるかを決定する必要がある。これらのルール、実行、および決定は、ＱｏＳが有効にされたネットワークの不可欠なコンポーネントであるポリシーシステムを構成する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、必要とされるものは、ネットワークを流れるトラフィックの性質を決定し、そのトラフィック内の各パケットおよび各フローに対する適切な取り扱いを決定し、その取り扱いに従って各パケットを変更してルーティングすることにより、ネットワークポリシーを実行できるネットワーク処理システムである。
【課題を解決するための手段】
【０００８】
本発明は、広帯域ネットワーク上で、プログラミング可能なネットワークポリシーを実行するネットワーク処理システムを提供する。このネットワーク処理システムは、ネットワークインタフェースまたはラインインタフェースを含む。このネットワークインタフェースまたはラインインタフェースは、広帯域ネットワークからパケットの形式でデータを受信し、処理されたデータまたはパケットを、ネットワーク上に再び送信する。ネットワークインタフェースは、ネットワーク処理システムの処理エンジンと通信する。この処理エンジンは、パケットに識別子を割り当てるように動作できる。この識別子は、パケットを、そのパケットが一部をなす特定のセッションまたはフローと関連付ける。この識別子により、処理エンジンは、フロー全体にわたるパケットからパケットへの状態を保持することが可能になる。前に決定された任意の状態および処理されるパケットを使用して、処理エンジンは、パケットを、既知のシグネチャのデータベースと比較する。このデータベースは、一組のプログラミング可能なネットワークポリシーを含む。この比較の結果、処理エンジンは、パケットの取り扱いを決定する。この取り扱いは、ネットワーク上に戻されるパケットの変更、ならびにルーティングおよび／または方向を含み得る。ネットワーク処理システムの一実施の形態では、相互に通信し、管理モジュールと通信する２つの単方向処理エンジンが使用されて、双方向ネットワーク処理システムが作成される。
【０００９】
ネットワーク処理システムの１つまたは複数の処理エンジンは、トラフィックフロー走査プロセッサまたはトラフィックフロープロセッサをさらに含む。このトラフィックフロー走査プロセッサまたはトラフィックフロープロセッサは、各パケットを、そのフローを識別する識別子と関連付けるように動作できる。トラフィックフロープロセッサは、各パケットを、ネットワークポリシーを含む、プログラミングされたシグネチャのデータベースと比較して、そのパケットの取り扱いを決定する。決定される取り扱いは、事前にプログラミングされた１つまたは２つ以上のポリシーに基づくことができる。また、トラフィックフロープロセッサは、各フローの状態も保持する。サービス品質プロセッサは、トラフィックフロープロセッサと通信し、取り扱いを使用して、ネットワーク上に戻されるパケットを変更し、方向付ける。
【００１０】
ネットワーク処理システムから分離した別のサーバ上に存在する管理インタフェースも説明される。この管理インタフェースは、プログラミングインタフェースと、コマンドラインインタフェースまたはグラフィカルユーザインタフェースのいずれかとを含む。コマンドラインインタフェースまたはグラフィカルユーザインタフェースは、ネットワークポリシーならびに他のシグネチャおよび環境設定情報を設定するために使用される。プログラミング情報は、他のデータベースおよびライブラリと共に使用されて、イメージファイルを構築する。イメージファイルは、管理インタフェースに制御されて、適切なネットワーク処理システムへリモートにロードすることができる。イメージファイルは、ネットワーク処理システムがポリシーゲートウェイとして動作するのに必要なすべてのプログラミング可能な情報を含み、この情報には、環境設定のイメージおよびシグネチャのイメージが含まれる。
【００１１】
当業者が、以下に続く本発明の詳細な説明をより良く理解できるように、上記は、本発明の好ましい特徴および選択的な特徴の概要をかなり広く説明したものである。本発明の特許請求の範囲の主題を成す本発明のさらなる特徴は、以下で説明される。当業者は、開示された着想および具体的な実施の形態を、本発明の同じ目的を実行する他の構造を設計または変更する基礎として容易に使用できることを十分理解するであろう。また、当業者は、このような均等な構成が、その最も広い形の本発明の精神および範囲から逸脱しないことにも気付くであろう。
【００１２】
本発明をより完全に理解するために、次に、以下の説明が添付図面と共に参照される。
【発明を実施するための最良の形態】
【００１３】
まず、図１を参照して、例えばインターネットなどの広域公衆ＩＰネットワーク内に存在するネットワーク基盤の一例のネットワークトポロジーが示されている。図１は、決して、正確なネットワークアーキテクチャを意図するものではなく、広帯域ＩＰネットワーク上に存在し得るさまざまなネットワーク構造体の概略図としての機能を果たすことだけを意図している。図１は、コアＩＰネットワーク１０およびアクセスネットワーク１２を示している。コアＩＰネットワーク１０は、例えばＭＣＩまたはＵＵＮＥＴなどの企業のＩＰネットワークの場合がある。アクセスネットワーク１２は、例えばＤＳＬＡＭ１４または企業ルータ１６などの機器を通じてユーザをコアＩＰネットワーク１０へ接続する。公衆ＩＰネットワークに接続された他のネットワークにアクセスするために、数限りないネットワーク構造体を、コアＩＰネットワーク１０およびアクセスネットワーク１２に接続することができ、これらのネットワーク構造体は、図１では、雲１８として表されている。
【００１４】
アクセスネットワーク１２は、公衆ＩＰネットワーク上でデータアクセスおよび音声アクセスの双方を提供するために使用される。アクセスネットワーク１２の例としては、インターネットサービスプロバイダ（ＩＳＰ）（Internet Service Provider）または地域電話会社（ＬＥＣ）（Local Exchange Carrier）がある。アクセスネットワーク１２は、企業ルータ１６（例えば、Lucent TechnologiesまたはMerrill Lynchなどの企業用の企業ネットワーク）を通じて企業に対して、または、ダイアルアップ接続もしくはディジタル加入者線（ＤＳＬ）（digital subscriber line）などの高速接続を通じて個々の家庭、ホームオフィス、もしくは小企業に対して、サービスを提供することができる。なお、ＤＳＬは、例えばＤＳＬＡＭ１４などの集約デバイスを通じて接続する。
【００１５】
アクセスネットワーク１２は、スイッチバックボーン２０を含む。スイッチバックボーン２０は、本明細書では、非同期転送モード（ＡＴＭ）（asynchronous transfer mode）ネットワークとして示され、交換機およびルータによって形成されて、そのネットワーク上でデータをルーティングする。図示しないドメインネームサーバおよび他のネットワーク機器も、アクセスネットワーク１２に含まれる。アクセスネットワーク１２は、それ自身の加入者間の接続、ならびに、その加入者とコアＩＰネットワーク１０および他のネットワーク１６との間の接続を提供して、その加入者が、他のアクセスネットワークの顧客と接触できるようにする。
【００１６】
ネットワーク構造体の縁部およびネットワーク構造体間には、ネットワーク境界を横切ってデータを渡すポイントが存在することが、容易に見て取れる。図１に示すネットワーク構造体の主な１つの問題は、例えば、サービス品質、ポリシー実行、セキュリティ、および統計的計測といったサービスの提供をネットワークで可能にするあらゆるタイプのインテリジェンスが、これらのネットワーク境界ポイントに欠如していることである。これらのサービスを提供するインテリジェンスは、ネットワークが、これらのネットワーク境界ポイントを通過するデータのタイプを理解することを必要とする。このデータのタイプは、単に宛先情報および／または送信元情報だけではなく、現在理解されるものすべてである。このデータのタイプ、すなわちヘッダ情報だけでなく、関連付けられたペイロードの内容を含むデータの内容を理解し、さらに、それぞれの個別のトラフィックフローの全体にわたる状態アウェアネス（state awareness）を理解して保持することにより、ネットワークは、ネットワークポリシーを実時間で実行することが可能となる。これにより、ネットワークは、ＭＰＬＳおよびＤｉｆｆＳｅｒｖなどの標準規格を使用して真のクロスネットワークＱｏＳを提供すること、サービス品質が基本的な要求となるＶｏＩＰまたはビデオなどのアプリケーションのためにネットワーク上で帯域幅要件に対してリアルタイムで構成すること、あるいは、そのセッションでインテリジェンスを必要とする他のネットワークサービス、すなわちパケット転送だけでなくフローおよびレベルを提供することが可能となる。また、インテリジェントネットワークは、例えば、電子メールのワーム、ウィルス、サービス拒否（ＤｏＳ）（denial of service）攻撃、および違法なハッキング行為といったセキュリティ問題を、エンドユーザにトランスペアレントな形式で識別し、選択除去することもできる。さらに、インテリジェントネットワークは、企業およびサービスプロバイダをホスティングすることによって計測機能を提供し、これにより、これらの企業が、帯域幅および例えばセキュリティといった付加的な機能に対して正確に料金を請求するだけでなく、個々の顧客に割り当てる帯域幅の量を調整することを可能にする。
【００１７】
このようなデバイスを使用した例が、ネットワーク処理システム２２によって図１に示されている。このネットワーク処理システム２２は、ＤＳＬＡＭ１４または企業ルータ１６の背後にあるアクセスネットワーク１２の縁部だけでなく、クロスネットワークの境界にも存在する。これらの位置に存在するデバイスが、フローを識別して追跡することができ、かつ、それらのフローの状態を維持できるならば、このデバイスは、そのデバイスが接続されたネットワークに真のサービス品質およびポリシー管理を提供することができることになる。
【００１８】
上述した要件に従って、本発明は、ＤＳ３、ＯＣ−３、ＯＣ−１２、ＯＣ−４８およびそれ以上の速度のペイロード情報を含むネットワークトラフィックの走査、分類、および変更を行うことができるネットワーク処理システムを提供し、これによって、効果的なポリシー管理プラットフォームを提供する。
【００１９】
本明細書で説明するネットワーク処理システムの動作の理解を助けるために、本明細書で広く使用されることになるネットワークトラフィックに関連した概念を示す図２が提供される。図２は、フロー（ＮＩＤ＿ａ）、フロー（ＮＩＤ＿ｂ）、およびフロー（ＮＩＤ＿ｃ）の３つの個別のフローを示している。これらの３つのフローは、ネットワーク上に同時に存在することができる。各フローは、ネットワーク上に存在する個別のセッションを表す。これらのセッションは、実時間ストリーミングビデオセッションの場合もあるし、ＩＰ上の音声（ＶｏＩＰ）呼の場合もあるし、ウェブブラウジングや、ファイル転送や、他の任意のネットワークトラフィックの場合もある。各フローは、個別のデータパケットから構成される。フロー（ＮＩＤ＿ａ）は、パケットｘおよびｘ＋１から構成され、フロー（ＮＩＤ＿ｂ）は、パケットｙおよびｙ＋１から構成され、フロー（ＮＩＤ＿ｃ）は、パケットｚおよびｚ＋１から構成される。２つのパケットが示されているが、各フローは、任意の個数のパケットから構成され、各パケットは、任意のサイズを有する。各パケットは、各パケットについてＢｌｋ＿ｉ、Ｂｌｋ＿ｉ＋１、およびＢｌｋ＿ｉ＋２として示された固定長のブロックにさらに分解することができる。パケットおよびフローが、ネットワークトラフィックとして登場するが、図２に示す固定長のブロックが、本発明のネットワーク処理システムによって作成され、以下にさらに詳細に説明される。
【００２０】
次に図３を参照して、本発明によるネットワーク処理システムの一実施の形態が示されている。ネットワーク処理システム４０は、双方向システムであり、右ラインインタフェース４２からの情報を処理した後、左ラインインタフェース３８を通じてネットワークに再び送信することができるか、または、左ラインインタフェース３８からの情報を処理した後、右ラインインタフェース４２を通じてネットワークに再び送信することができる。左ラインインタフェース３８および右ラインインタフェース４２の双方とも、それぞれ、任意の複数のポートから構成することができ、例えば、ＯＣ−３、ＯＣ−１２、ＯＣ−４８、ならびに１０／１００イーサネット、ギガビットイーサネット、ＡＴＭ、およびＳＯＮＥＴを含むプロトコルといった高速を含んだ任意の個数のネットワーク速度およびプロトコルを受け入れることができる。
【００２１】
ラインインタフェースカードは、パケットの形で入来するデータを取り込み、そのデータをデータバス５４に出力する(place)。データバス５４は、例えばＰＯＳ−ＰＨＹレベル３タイプ、ＣＳＩＸタイプ、またはＡＴＭ  ＵＴＯＰＩＡレベル３タイプのデータバスなどの工業規格のデータバスであることが好ましい。左ラインインタフェース３８に受信されたデータは、処理エンジン４４に送信される一方、右ラインインタフェース４２に受信されたデータは、処理エンジン４６に送信される。ネットワーク処理システム４０は双方向であるが、ネットワーク処理システム４０内の個々の処理エンジン４４および４６は、単方向であり、双方向の情報を処理するのに２つを必要とする。各処理エンジン４４および４６は、各データパケットの内容の走査、データパケットと特定のフローとの関連付け、各データパケットの内容および関連付けられたフローの任意の状態に基づく各データパケットの取り扱いの決定、ならびに決定された取り扱いに適合したデータパケットのキューイングおよび変更を行うように動作できる。各処理エンジン４４および４６の動作については、図４を参照してさらに詳細に説明する。フローの状態は、すでに処理済みのフローと関連付けられたパケットからネットワーク処理システム４０によって識別されたそのフローに関連した情報である。
【００２２】
内部バス５２は、処理エンジン４４および４６を相互に通信可能にし、かつ、管理モジュール４８およびオプションの補助プロセッサモジュール５０を双方の処理エンジン４４および４６と通信可能にするために使用される。内部バス５２は、ＰＣＩバスであることが好ましい。処理エンジン４４および４６の相互通信により、これらの処理エンジンは、フローから学習した情報を交換することが可能になり、この情報を、戻りのフローの取り扱いに適用することができる。例えば、高優先度の顧客の取り扱いは、送出する情報および入来する情報の双方に適用される必要がある。各処理エンジンは、単方向であるので、情報は、双方向のトラフィックに作用するように、処理エンジン間で共有されなければならない。
【００２３】
管理モジュール４８は、処理エンジン４４および４６のそれぞれの動作を制御し、外部デバイスと通信するために使用される。これらの外部デバイスは、ネットワーク処理システム４０に、ポリシー、ＱｏＳ、および取り扱い命令をロードするために使用される。これらのポリシー、ＱｏＳ、および取り扱い命令は、ネットワーク処理システム４０によって、当該ネットワーク処理システム４０が処理するネットワークトラフィックに適用される。
【００２４】
次に図４を参照して、本発明によるネットワーク処理システムに使用される内容処理エンジンの一実施の形態が示されている。処理エンジン４４および４６のそれぞれは、先に述べたように同一である。それぞれの動作は、一般的に述べられ、処理エンジンの動作のあらゆる説明は、処理エンジン４４および４６の双方に等しく当てはまる。図３に示すラインインタフェースカード４２および３８は、物理ポートからデータを取り込み、そのデータを組み立て、次にデータをフォーマットして高速パスデータバス１２６に出力(placement)する。高速パスデータバス１２６は、前述したように、例えば、ＰＯＳ−ＰＨＹレベル３タイプまたはＡＴＭ  ＵＴＯＰＩＡレベル３タイプのデータバスなどの工業標準のデータバスであることが好ましい。
【００２５】
高速パスデータバス１２６は、データをトラフィックフロー走査プロセッサ１４０に搬送する。トラフィックフロー走査プロセッサ１４０は、ヘッダプリプロセッサ１０４および内容プロセッサ１１０を含む。データは、まず、ヘッダプリプロセッサ１０４に送信される。ヘッダプリプロセッサ１０４は、データパケットヘッダに含まれる情報を用いていくつかの動作を実行するように動作できる。ヘッダプリプロセッサ１０４は、受信したデータパケットを、ヘッダプリプロセッサ１０４と関連付けられたパケットストレージメモリに記憶し、ヘッダ情報を走査する。ヘッダ情報が走査されて、データパケットのタイプ、すなわちプロトコルが識別される。識別されたプロトコルは、ルーティング情報の決定およびＩＰヘッダの開始バイトのデコードのために使用される。以下に述べるように、処理エンジンは、適切に機能するために、順序がバラバラのパケットの再配列およびデータパケットフラグメントの再組み立てを必要とする。ヘッダプリプロセッサ１０４は、非同期転送モード（ＡＴＭ）セルの完全なデータパケット（ＰＤＵ）への組み立てを実行するように動作できる。この組み立てには、ＡＴＭヘッダ情報のストリッピング（stripping）が含まれる。
【００２６】
データパケットが、ヘッダプリプロセッサ１０４によって処理された後、データパケット、および、ＱｏＳ情報などのヘッダプリプロセッサによってまとめられたあらゆる結論は、高速データバス１２６上を、トラフィックフロー走査エンジン１４０の他の半分である内容プロセッサ１１０に送信される。受信したパケットは、内容プロセッサ１１０によって処理される間に、パケットストレージメモリ（図示せず）に記憶される。内容プロセッサ１１０は、ヘッダプリプロセッサ１０４から受信したデータパケットの内容を走査するように動作できる。このデータパケットの内容には、データパケットの全ペイロードの内容が含まれる。ヘッダも同様に走査される。その１つの目的は、データパケットの予め定められた属性に使用して、セッションＩＤを作成することである。
【００２７】
好ましい実施の形態では、セッションＩＤは、送信元アドレス、宛先アドレス、送信元ポート、宛先ポート、およびプロトコルからなるセッション情報を用いて作成される。ただし、本発明の範囲から逸脱することなく、列挙したフィールドの任意のサブセットまたはデータパケットの任意の付加的なフィールドを用いてセッションＩＤを作成できることが、当業者には分かるであろう。新しいセッション情報を有するデータパケットが受信されると、ヘッダプリプロセッサは、その特定のトラフィックフローを識別するユニークなセッションＩＤを作成する。同じセッション情報を有するそれぞれの連続的なデータパケットには、同じセッションＩＤが割り当てられ、これにより、そのフロー内の各パケットが識別される。セッションＩＤは、その特定のトラフィックフローが明示的な動作を通じて終了した時、または、そのトラフィックフローがタイムアウトした時に、廃棄される。タイムアウトとは、そのトラフィックフローのデータパケットが、予め定められた時間内に受信されなかったことを意味する。本明細書では、セッションＩＤが、内容プロセッサ１１０によって生成されるものとして述べられているが、セッションＩＤは、ヘッダプリプロセッサ１０４を含む、トラフィックフロー走査エンジン１４０のいずれでも作成することができる。
【００２８】
任意のデータパケットまたはすべてのデータパケットの内容が、既知のシグネチャのデータベースと比較される。データパケットの内容、または複数のデータパケットの内容が、既知のシグネチャと整合すると、処理エンジンは、そのシグネチャおよび／またはセッションＩＤと関連付けられた行動を取ることができる。その上、内容プロセッサ１１０は、それぞれの個別のトラフィックフローの全体にわたって状態アウェアネスを保持するように動作できる。換言すると、内容プロセッサ１１０は、トラフィックフローからの現在のデータパケットに関連した状態情報だけでなく、トラフィックフローの全体に関連した状態情報を記憶する各セッション用のデータベースを保持する。これにより、ネットワーク処理システム４０は、走査するデータパケットの内容に基づくだけでなく、トラフィックフロー全体の内容に基づいて動作することが可能になる。内容プロセッサ１１０の具体的な動作については、図５を参照して説明する。
【００２９】
パケットの内容が走査され、トラフィックフロー走査エンジン１４０が結論に到達すると、パケットと、ヘッダプリプロセッサ１０４および内容プロセッサ１１０のいずれかまたは双方の関連付けられた結論とは、サービス品質（ＱｏＳ）プロセッサ１１６に送信される。この場合も、ＱｏＳプロセッサ１１６は、転送のために、それ自身のパケットストレージメモリにパケットを記憶する。ＱｏＳプロセッサ１１６は、ネットワーク処理システム４０によって処理されるデータパケットのストリームに対してトラフィックフロー管理を実行するように動作できる。ＱｏＳプロセッサは、トラフィック管理用のエンジン、トラフィックシェーピング(traffic shaping)用のエンジン、およびパケット変更用のエンジンを収容する。
【００３０】
ＱｏＳプロセッサ１１６は、ヘッダプリプロセッサ１０４および内容プロセッサ１１０のいずれかまたは双方の結論を取り入れ、その結論に基づいて、その内部のサービス品質キューの１つにデータパケットを割り当てる。サービス品質キューには、相互に対する優先度を割り当てることができるか、または、当該デバイスを通過するトラフィックフローの最大パーセンテージもしくは最小パーセンテージを割り当てることができる。これにより、ＱｏＳプロセッサ１１６は、例えば、ＶｏＩＰ、ビデオ、および高品質および高信頼性の要件を有する他のフローといったトラフィックフローに対しては、必要な帯域幅を割り当てることが可能になる一方、例えば、低い優先度のキューに割り当てられた電子メールおよび一般のウェブサーフィンといった低品質の要件を有するトラフィックフローに対しては、残りの帯域幅を割り当てることが可能になる。ＱｏＳエンジンに従ってキューに現在存在するすべてのデータを送信するのに利用可能な帯域幅を持たない、そのキュー内の情報は、選択的に廃棄され、これにより、トラフィックフローからそのデータは除去される。
【００３１】
また、サービス品質キューにより、ネットワーク処理システム４０は、例えばサービス拒否（ＤｏＳ）攻撃などのネットワーク攻撃を管理することも可能になる。ネットワーク処理シングル４０は、パケットの内容を走査して、その内容が、既知の送信元と既知の宛先との間の正当なネットワークトラフィックを収容することを検証することによって、トラフィックフローに資格を与えるように動作することができる。トラフィックフローが未知の送信元からのものであるか、または、トラフィックフローが新しい未分類のフローであることから検証を受けなかったトラフィックフローは、その送信元が検証されるか、または、そのトラフィックフローが正当なトラフィックとして分類されるまで、低いサービス品質キューに割り当てることができる。ほとんどのＤｏＳ攻撃は、新しいセッション情報か、他人になりすまされた送信元からのデータか、あるいは意味のないデータかを送信するので、ネットワーク処理システム４０は、それらのトラフィックフローを低品質のトラフィックキューに割り当てることになる。これにより、ＤｏＳトラフィックは、利用可能な帯域幅の低いパーセンテージ（すなわち５％）しか受信しないことが保証され、これによって、攻撃者が、下流のネットワーク機器をフラッディングさせることが防止される。
【００３２】
ＱｏＳプロセッサ１１６のＱｏＳキュー（本実施の形態のＱｏＳプロセッサでは、６４ｋ個のキューが存在するが、任意の個数のキューを使用することができる）は、スケジューラ（本実施の形態では１０２４個）に送り込まれ、スケジューラは、論理ポート（本実施の形態では２５６個）に送り込まれ、論理ポートは、データを、このネットワークデバイス用の物理的な出口ポート（egress port）に対応することができるフロー制御ポートマネージャ（本実施の形態では３２個）に送信する。トラフィック管理エンジンおよびトラフィックシェーピングエンジンは、プログラミングされたパラメータに従ってトラフィックフローを維持するために、スケジューラおよび論理ポートの動作を決定する。
【００３３】
また、ＱｏＳプロセッサ１１６は、パケット変更エンジンも含む。このパケット変更エンジンは、データパケットのいずれのフィールドのビットも、変更、追加、または削除するように動作できる。これにより、ＱｏＳプロセッサ１１６は、ＤｉｆｆＳｅｒｖビットを変更したり、あるいは、適切なＭＰＬＳシムをデータパケットに置いたりして、必要な取り扱いが行われるようにすることができる。ＱｏＳプロセッサ１１６内のパケット変更エンジンは、必要に応じて、ペイロード自体の情報を変更するために使用することもできる。その後、データパケットは、高速データパス１２６に沿って送信され、関連付けられたラインインタフェースに出力される。このラインインタフェースでは、データパケットは、ネットワークに適合した信号に再び変換され、ネットワーク上に出力される。
【００３４】
すべてのネットワーク機器と同様に、ある量のネットワークトラフィックは、高速データパス１２６に沿って処理することができない。このトラフィックは、オンボードマイクロプロセッサ１２４によって処理される必要がある。高速パストラフィックフロー走査エンジン１４０およびＱｏＳプロセッサ１１６は、追加の処理を必要とするパケットをフロー管理プロセッサ１２２に送信する。フロー管理プロセッサ１２２は、それらのパケットをマイクロプロセッサ１２４に転送して処理させる。その後、マイクロプロセッサ１２４は、折り返し、フロー管理プロセッサ１２２を通じてトラフィックフロー走査エンジン１４０およびＱｏＳプロセッサ１１６に通信する。フロー管理プロセッサ１２２は、処理システム４０と通るトラフィックフローの性質に関するデータおよび統計値を収集するように動作できる。ブリッジ１４６は、ＰＣＩバスが氾濫状態にある間に発生し得るデータの損失を防止するためにＰＣＩバス１４８上でバッファとして機能する素子間に使用される。
【００３５】
図４の記述から分かるように、処理エンジン４４および４６により、受信した任意のデータパケットまたはすべてのデータパケットの全内容を、既知のシグネチャのデータベースと比較して走査することが可能である。走査した内容は、可変の長さであってもよいし、任意の長さであってもよく、さらに、パケットの境界を横切っていてもよい。処理エンジン４４および４６の能力により、インテリジェンスを有するネットワークデバイスの構築が可能になり、この構築により、データパケットの内容に基づいてそのデータパケットを操作する能力が、ネットワークデバイスに与えられる。
【００３６】
次に図５を参照して、図４の内容プロセッサ１１０が、さらに詳細に記述されている。上述したように、内容プロセッサ１１０は、図４のヘッダプリプロセッサ１０４から転送されたデータパケットの内容を走査するように動作できる。内容プロセッサ１１０は、キューエンジン３０２、コンテクスト（context）エンジン３０４、および内容走査エンジン３０６の３つの別個のエンジンを含む。
【００３７】
内容プロセッサ１１０は、ペイロードの内容を走査し、パケットの境界を横切って走査することができるので、内容プロセッサ１１０は、フラグメントになったパケットを再組み立てできなければならず、順序がバラバラのパケットを各セッション単位で再配列できなければならない。再配列および再組み立ては、キューエンジン３０２の機能である。キューエンジン３０２は、高速パスインタフェース３１０を用いて、内部バス１２７からデータを受信する。次に、パケットは、パケット再配列および再組み立てエンジン３１２に送信される。このパケット再配列および再組み立てエンジン３１２は、パケットメモリコントローラ３１６を使用して、パケットをパケットメモリ１１２に記憶する。また、再配列および再組み立てエンジン３１２は、リンクリストコントローラ３１４およびリンクリストメモリ３１８を使用して、データパケットを処理用に配列するために使用される詳細なリンクリストも作成する。データパケットは、キューエンジン３０２内への記憶用に、２５６バイトのブロックに分解される。セッションＣＡＭ３２０は、内容プロセッサ１１０のキューエンジン３０２によって生成されたセッションＩＤを記憶することができる。再配列および再組み立てエンジン３１２は、セッションＩＤを使用して、同じデータフローに属するデータパケットをリンクする。
【００３８】
必要とされる高いスループット速度を得るために、内容プロセッサ１１０は、複数のセッションからのパケットを同時に処理できなければならない。内容プロセッサ１１０は、複数のデータパケットからのデータのブロックを処理する。これら複数のデータパケットのそれぞれは、関連付けられたセッションＩＤを有するユニークなトラフィックフローに属する。本発明の好ましい実施の形態では、内容プロセッサ１１０のコンテクストエンジン３０４が、ユニークなトラフィックフローからの６４個の異なるデータパケットの６４バイトのブロックを同時に処理する。６４個の異なるデータフローの６４バイトのブロックのそれぞれは、内容プロセッサにとって単一のコンテクスト（context）を表す。内容プロセッサ１１０に対して同時に起こるコンテクストのすべてのスケジューリングおよび管理は、コンテクストエンジン３０４によって操作される。
【００３９】
あるコンテクストが、処理を完了し、内容プロセッサ１１０から送出されると、コンテクストエンジン３０４は、キューエンジン３０２と連携して、新しいコンテクストを選択する。次フリーコンテクスト／次フリーブロックエンジン３３０は、リンクリストコントローラ３１４と通信して、処理を行う次のデータパケットのブロックを特定する。内容プロセッサ１１０は、データパケットを順に走査しなければならないので、１つのデータパケットか、または、特定のセッションＩＤを有する１つのトラフィックフローしか、同時にアクティブになることができない。アクティブ制御リスト３３２は、アクティブなコンテクストを有するセッションＩＤのリストを保持し、新しいコンテクストをアクティブなリストと比較してチェックし、新しいコンテクストが、アクティブでないセッションＩＤからのものであることを保証する。新しいコンテクストが特定されると、パケットローダ３４０が、次フリーコンテクスト／次フリーブロックエンジン３３０によって検索されたリンクリスト情報を使用し、パケットメモリコントローラ３１６を用いてパケットメモリ１１２から必要なデータのブロックを検索する。次に、この新しいデータブロックは、コンテクストバッファ３４２からフリーバッファにロードされ、フリーバッファにおいて、内容走査エンジンインタフェース３４４による検索を待機する。
【００４０】
内容走査エンジンインタフェース３４４は、コンテクストエンジン３０４と内容走査エンジン３０６との間のインタフェースである。内容走査エンジン３０６が走査される新しいコンテクストのための空間を有する場合、内容走査エンジンインタフェース３４４は、新しいコンテクストを内容走査エンジン３０６の文字列プリプロセッサ３６０に送信する。文字列プリプロセッサ３６０は、例えば、余白（すなわち、空白文字、タブ、改行）を単一の空白文字に圧縮して走査を簡単にするなどの操作を実行することにより、コンテクストを簡単にするように動作できる。文字列プリプロセッサ３６０が処理を完了すると、コンテクストは、文字列比較器３６４によって検索されるまで、コンテクストバッファ３６２内のバッファの１つにロードされる。文字列比較器３６４は、シグネチャメモリ３６６の入力および出力を制御する。なお、４つのシグネチャメモリ３６６が示されているが、任意の個数を使用して、内容走査エンジン１１０を介するスループットを増大させるか、または、減少させることができる。４つのシグネチャメモリ３０６のそれぞれは、潜在的に、複数のコンテクストを操作することができる。本実施の形態では、シグネチャメモリ３６６のそれぞれは、同時に４つのコンテクストを処理することができる。
【００４１】
シグネチャメモリ３６６の１つは、文字列比較器３６４によってコンテクストを割り当てられた後、コンテクストの有効ビットを、シグネチャメモリ３６６に存在する既知の文字列のデータベースと比較する。このシグネチャメモリ３６６との比較によって、コンテクストと、有効ビットを使用する既知のシグネチャの１つとの間に整合の可能性があるかどうかが判断される。この有効ビットは、特定のシグネチャに固有のビットである。整合の可能性がある場合には、そのコンテクストおよびその整合の可能性のある文字列は、リーフ文字列比較器３６８に送信される。リーフ文字列比較器３６８は、リーフ文字列メモリ３７０を使用して、コンテクストと、整合の可能性のある文字列とのビットごとの比較を実行する。なお、４つのシグネチャメモリ３６６および２つのリーフ文字列メモリ３７０が示されているが、内容プロセッサ１１０のスループットを最適化するために、任意の個数の文字列メモリ３６６および任意の個数のリーフ文字列メモリ３７０を使用することができる。
【００４２】
次に、内容走査の結論が、ペイロード走査インタフェース３４４に再び送信される。この送信では、場合によっては、走査される新しいデータの要求も、共に送信される。内容走査の結論は、多数の可能性のある結論のいずれかである場合がある。走査によっては、まだ結論に到達していないこともあり得、走査を継続するために新しいデータパケットからの追加データが必要な場合もあり得る。この場合には、中間状態と呼ぶことができるトラフィックフローの状態、および、あらゆる未完了な走査が、例えば連続番号、カウンタなどの他の適切な情報と共に、セッションメモリ３５４に記憶される。また、シグネチャメモリ３６６によって到達された結論は、走査が完了したこと、および、整合するものが存在したかまたは存在しなかったことである場合もある。この場合には、データパケットおよび結論が、送信エンジン３５２に送信され、図４のＱｏＳプロセッサ１１６に渡される。また、走査により、データパケットを図４のマイクロプロセッサ１２４へ転送して、さらに処理する必要があると判断される場合もある。これにより、データパケットは、ホストインタフェース３５０に送信され、ホストインタフェースバス３７２に出力される。ホストインタフェース３５０は、残りのパケットを操作することに加えて、マイクロプロセッサ１２４に、任意のバッファへの書き込みまたはコンテクストエンジン３０４の登録を行わせることにより、マイクロプロセッサ１２４が、内容プロセッサ１１０の任意の態様の動作を制御できるようにする。
【００４３】
特定のトラフィックフローに関連付けられたデータが走査された後、状態情報が、セッションメモリ３５４に記憶され、必要に応じて更新される。状態は、整合が未完了であり、走査を継続するために追加データが必要であることを表す中間状態である場合もある。また、状態は、１つまたは２つ以上のイベントが、特定の結論を生成するために必要とされる複数のイベントから発生したことを示す部分状態の場合もある。状態は、関連付けられたトラフィックフローについて、最終結論に到達し、もはや走査が必要でないことを示す最終状態の場合もある。あるいは、状態は、内容プロセッサ１１０に必要とされるか、または、内容プロセッサ１１０にプログラミングされた他の任意の状況を表す場合もある。各トラフィックフローの状態情報は、どんな形式であっても、図３のネットワーク処理システム４０のインテリジェンスを表し、ネットワーク処理システムが、走査される情報だけでなく、各トラフィックフローに対して以前に走査されたすべて情報に基づいて動作することを可能にする。
【００４４】
送信エンジン３５２、ホストインタフェース３５０、セッションメモリコントローラ３４８、および汎用算術論理演算ユニット（ＧＰＡＬＵ）（general-purpose arithmetic logic unit）３４６の動作は、スクリプトエンジン３３４によって制御される。なお、セッションメモリコントローラ３４８は、セッションメモリ３５４の使用を制御し、ＧＰＡＬＵ３４６は、カウンタのインクリメントまたはディクリメント、ポインタの移動などを行うのに使用される。スクリプトエンジン３３４は、スクリプトメモリ３３６に記憶されたプログラミング可能スクリプトを、必要に応じてレジスタ３３８を使用して実行するように動作する。スクリプトエンジン３３４は、制御バス３７４を使用して、コンテクストエンジン３０４の素子の任意のものに命令を送信する。スクリプトエンジン３３４または内容プロセッサ１１０内の他のエンジンは、走査されるデータパケットの内容を変更する能力を有する。
【００４５】
内容プロセッサ１１０の能力は、多くの観点でユニークである。内容プロセッサ１１０は、あるシグネチャまたは一連のシグネチャとして表すことができる任意の情報に対して、任意のデータパケットまたは任意の複数のデータパケットの内容を走査する能力を有する。このシグネチャは、任意の長さであってもよく、パケット内のどの箇所からでも開始することができ、またどの箇所でも終了することができ、パケットの境界を横切ることもできる。さらに、内容プロセッサ１１０は、各トラフィックフローの過程において整合する任意のシグネチャまたはすべてのシグネチャを表す、その各トラフィックフローの状態情報を記憶することにより、個々のトラフィックフローのすべてにわたって状態アウェアネスを保持することができる。既存のネットワークプロセッサは、各データパケット内の正確なポイントにおいて、固定長の情報を探索することにより動作し、パケットの境界を横切って探索することはできない。パケット内の正確なポイントにおいて固定長の情報を調べることができるだけであることから、既存のネットワークプロセッサは、あるレベルのパケットヘッダ内の識別可能な位置に収容される情報に対する動作に限定され、データパケットのペイロード内を調べることはできない。ましてや、既存のネットワークプロセッサは、トラフィックフロー全体の状態情報も決定できないし、ペイロードを含めたデータパケットの内容さえも決定できない。
【００４６】
次に図６を参照して、プロセッサの環境設定と、最も重要なものとして、内容プロセッサ１１０内のシグネチャのデータベースを形成するメモリイメージとを作成するソフトウェアの略図が示されている。各パケットと各フローは、その内容プロセッサ１１０と比較される。メモリイメージおよび環境設定を構築するソフトウェアは、図３に示すネットワーク処理システムからは分離した別のサーバ上で実行される。メモリイメージおよび環境設定は、この別のサーバ上で作成されるとすぐに、図７を参照して説明するように、ネットワーク処理システムに送信されてダウンロードされる。
【００４７】
図３のネットワーク処理システムは、プログラミング可能であり、ユーザによってネットワークポリシーが設定される。ネットワーク処理システムは、この設定されたネットワークポリシーを実行することになる。プログラミングは、ポリシーイメージビルダ５００を使用して行われる。ポリシーイメージビルダ５００は、上述したように、分離された別のサーバにロードされる。ポリシーイメージビルダ５００は、グラフィカルユーザインタフェース（ＧＵＩ）（graphical user interface）５０２およびコマンドラインインタフェース（ＣＬＩ）（command line interface）５０４を含む。ＧＵＩ５０２およびＣＬＩ５０４の機能は、同一であり、プログラマが、好ましいインタフェースを選択できるように提供される。ポリシーゲートウェイ環境設定データベース５１０は、各ポリシーゲートウェイの環境設定に関連した情報を保持する。この情報には、例えば、メモリサイズ、ポート番号、ラインインタフェースのタイプなどの情報が含まれる。プログラマは、これらの情報にアクセスする。また、ポリシーゲートウェイ環境設定データベース５１０は、ＣＬＩインタプリタ５０８およびＧＵＩプログラム５０６とやり取りを行って、既存の処理エンジン環境設定ファイル５１４および既存のポリシーの記述５１２を保持するデータベースに新たなユーザプログラムを送信する。その後、この新たなユーザプログラムならびに既存の環境設定および記述は、ポリシーオブジェクト言語（ＰＯＬ）（Policy Object Language）コンストラクタ５１６によって、オブジェクトライブラリ５１８と結合される。ＰＯＬコンストラクタ５１６は、プログラムおよび環境設定情報を取り込み、ネットワーク処理システムの個々のコンポーネントのいくつかのマップおよび環境設定ファイルを作成する。
【００４８】
まず、ネットワーク処理エンジン内部の記憶場所のマップが作成され、メモリおよびカウンタマップ５２０に記憶される。ネットワーク処理システムは、全面的にプログラミング可能であるので、個々の記憶場所、カウンタ、およびレジスタには、プログラムによって機能が割り当てられる。割り当てのマップなしで、ネットワーク処理システムからその後読み出されるデータは、理解することができないであろう。作成されたメモリおよびカウンタマップにより、ネットワーク処理システムによって作成されるいずれのデータも、後に解釈することが可能になる。
【００４９】
その上、ＰＯＬコンストラクタ５１６は、ネットワーク処理システムのコンポーネントのそれぞれについての環境設定ファイルを作成する。ＱｏＳ環境設定ファイル５２８が作成され、ＱｏＳコンパイラ５３０に送信されて、ＱｏＳ環境設定イメージ５４６を作成するために使用される。ヘッダプリプロセッサ（ＨＰＰ）（Header Preprocessor）プログラム５２６が作成され、ＨＰＰコンパイラ５３２に送信される。ＨＰＰコンパイラ５３２は、ＨＰＰバイナリファイル５４４を作成する。同様に、コンテクストエンジンスクリプトファイル５２４が、ＰＯＬコンストラクタ５１６によって作成され、コンテクストエンジンスクリプトコンパイラ５３４によってコンパイルされ、コンテクストエンジンバイナリファイル５４２が作成される。最後に、ネットワークポリシーの記述を含むシグネチャマップファイル５２２が作成され、シグネチャアルゴリズム発生器５３６に送信される。シグネチャアルゴリズム発生器５３６は、ネットワーク処理システムのメモリをより効率的に使用するために、シグネチャマップを効率的なシグネチャメモリマップ５４０に圧縮する。また、プログラムは、部分的なシグネチャメモリマップ５３８を使用することにより、シグネチャメモリの部分的な更新を可能にする。部分的なシグネチャメモリマップ５３８は、シグネチャメモリの全面的な再配置が不要な場合に、シグネチャメモリの小さな部分のみを変更するのに使用することができる。
【００５０】
これらＱｏＳ環境設定イメージファイル５４６、ＨＰＰバイナリファイル５４４、コンテクストエンジンバイナリファイル５４２、およびシグネチャメモリマップ５４０（または必要に応じて、部分的なシグネチャメモリマップ５３８）の４つのバイナリファイルは、その後、処理エンジン環境設定ソースファイル５５２、ポリシー記述ソースファイル５５０、ならびにカウンタおよびメモリマップソースファイル５４８と共に結合される。結合は、処理エンジンイメージビルダ５５４によって行われ、処理エンジンイメージビルダ５５４は、ポリシーゲートウェイイメージロードファイル５５６を作成する。ポリシーゲートウェイイメージロードファイル５５６は、分離された別のサーバから実際のネットワーク処理システムへ送信されて、実行に必要な情報およびプログラムをネットワーク処理システムに提供するファイルである。これらソースファイルが、ポリシーゲートウェイイメージロードファイル５５６に含まれることによって、何かがネットワークまたはシステムのいずれかの部分に発生した場合に、他の場所にあるソースファイルを遡って調べる必要なく、ポリシーゲートウェイイメージロードファイルのみから４つのバイナリファイルを再構成して理解することができる。
【００５１】
ポリシーゲートウェイイメージファイル５５６に含まれるものを正確に理解するために、その個々のコンポーネントが、処理エンジンデータ５５８、制御プロセッサデータ５６０、および管理プロセッサデータ５６２として説明される。処理エンジンデータ５５８は、図３の左右の処理エンジン４４および４６の双方についての左右のシグネチャメモリマップを含む。これらのシグネチャメモリマップは、図４に示す内容プロセッサ１１０のシグネチャメモリにロードされる。また、処理エンジンデータ５５８も、図４に示すように、左右の処理エンジン４４および４６のそれぞれのＱｏＳプロセッサ１１６についての左右の環境設定ファイルを含む。最後に、処理エンジンデータ５５８は、左右の処理エンジン４４および４６のそれぞれのヘッダプリプロセッサ１０４についての左右のヘッダプリプロセッサイメージファイルを含む。
【００５２】
制御プロセッサデータ５６０は、左右のカウンタメモリマップを含む。これらの左右のカウンタメモリマップは、左右の処理エンジンのそれぞれにあるマイクロプロセッサ１２４にそれぞれロードされる。最後に、管理プロセッサデータ５６２は、処理エンジン環境設定ソース５５２およびポリシーソース５５０を参照して上述したように、左右の環境設定ソースおよび左右のポリシーソースを含む。これらのファイルは、図３に示す管理モジュール４８に記憶される。
【００５３】
次に図７を参照して、ネットワーク処理システムとの通信のメカニズムを示す略図が記述されている。図７に示す略図を実施するプログラムも、図６に記述したポリシーイメージビルダ５００を含む、分離された別のサーバ上に存在する。上述したように、ＣＬＩ５０４およびＧＵＩ５０２は、ポリシーイメージビルダ５００によって環境設定ファイル５１０と共に使用されて、ポリシーゲートウェイイメージファイル５５６とメモリおよびカウンタマップ５２０との双方を作成する。ポリシーゲートウェイイメージファイル５５６は、イメージリポジトリマネージャー(image repository manager)５７０によって取り込まれ、イメージリポジトリデータベース（image repository database）５７２にロードされる。イメージリポジトリデータベース５７２は、制御されるネットワーク処理システムのすべてについての全ポリシーゲートウェイイメージファイルを保持する。ネットワーク処理システム（ＮＰＳ）（network processing system）インタフェースプログラム５８０は、管理されるネットワーク処理システムＮＰＳ＃００１、ＮＰＳ＃００２、およびＮＰＳ＃００ｎのそれぞれと直接通信を行う役割を有する。ＮＰＳ＃００ｎによって示されるように、任意の個数のネットワーク処理システムを、１つの分離された別のサーバから管理することができる。イメージリポジトリプログラム５７４は、イメージリポジトリデータベース５７２から適切なイメージファイルを取り込み、それをＮＰＳインタフェースプログラム５８０に送信する。ＮＰＳインタフェースプログラム５８０は、認証プログラム５８４を使用して、各ネットワークプログラミングシステムを認証するように動作し、次に、ポリシーゲートウェイイメージファイルを適切なネットワーク処理システムに送信する。
【００５４】
イメージファイルをネットワーク処理システムにプッシュ（push）することに加えて、ＮＰＳインタフェースプログラム５８０は、各ネットワーク処理システムに、その統計情報およびイベント情報をアップロードする要求を定期的に送信することにより、各ネットワーク処理システムから統計データおよびイベントデータをプル（pull）するように動作する。この情報がＮＰＳインタフェースプログラムによって受信されると、その情報は、統計データベース管理５８６に送信され、統計データベース管理５８６は、その情報を統計データベース５８８に記憶する。統計データベースマネージャ５９０は、メモリおよびカウンタマップ５２０からの情報を使用して、統計データベース５８８を解読するのに必要な情報を統計環境設定データベース５９２に置く。統計データベース５８８および統計環境設定データベース５９２は、その後、サービスに対して課金を行う課金システムと、ネットワーク動作および効率を分析するネットワーク管理システムとに情報を供給するために使用することができる。
【００５５】
図３および図４を参照して説明したヘッダプリプロセッサ、ＱｏＳプロセッサ、およびフロー管理プロセッサは、説明した機能を実行できる任意の適したプロセッサとすることができるが、好ましい実施の形態では、ヘッダプリプロセッサは、Ｆａｓｔ  Ｐａｔｔｅｒｎ  Ｐｒｏｃｅｓｓｏｒ（ＦＰＰ）（高速パターンプロセッサ）であり、ＱｏＳプロセッサは、Ｒｏｕｔｉｎｇ  Ｓｗｉｔｃｈ  Ｐｒｏｃｅｓｓｏｒ（ＲＳＰ）（ルーティングスイッチプロセッサ）であり、フロー管理プロセッサは、ＡＳＩプロセッサである。これらのすべては、テキサス州オースチンのLucent TechnologiesのAgere Divisionによって製造されている。図３を参照して説明したマイクロプロセッサおよび図４の管理モジュールは、Motorola, Incが提供しているＰｏｗｅｒＰＣ系列のマイクロプロセッサまたはIntel Corporationが販売しているＸ８６もしくはＰｅｎｔｉｕｍ系列のマイクロプロセッサを含む任意の適したマイクロプロセッサとすることができる。具体的なプロトコル、実施および材料を具体的に参照しているが、当業者は、ネットワーク処理システム、ポリシーゲートウェイが、プロトコルとは独立に機能でき、本発明の範囲から逸脱することなく、さまざまな異なる実施で機能できることを理解すべきである。
【００５６】
本発明を詳細に説明してきたが、当業者は、本発明の最も広い形での精神および範囲から逸脱することなく、本明細書にさまざまな変更、置換、および改変をなし得ることを理解すべきである。
【図面の簡単な説明】
【００５７】
【図１】本発明が動作することができるネットワーク構造体の例を示すネットワークトポロジー図である。
【図２】本発明に使用されるフロー、パケットおよびブロックの概念を示す図である。
【図３】本発明によるネットワーク処理システムのブロック図である。
【図４】図３に示す処理エンジンのブロック図である。
【図５】図４の内容プロセッサのブロック図である。
【図６】本発明のネットワーク処理システムに使用されるイメージファイルおよび環境設定ファイルの作成に使用されるイメージビルダの図である。
【図７】イメージファイルがロードされ、統計情報およびイベント情報が本発明のネットワーク処理システムから検索されるメカニズムを示す図である。
【図１】
2004532559.tif 000003
【図２】
2004532559.tif 000004
【図３】
2004532559.tif 000005
【図４】
2004532559.tif 000006
【図５】
2004532559.tif 000007
【図６】
2004532559.tif 000008
【図７】
2004532559.tif 000009
【国際公開パンフレット】
2004532559.tif 000010
2004532559.tif 000011
2004532559.tif 000012
2004532559.tif 000013
2004532559.tif 000014
2004532559.tif 000015
2004532559.tif 000016
2004532559.tif 000017
2004532559.tif 000018
2004532559.tif 000019
2004532559.tif 000020
2004532559.tif 000021
2004532559.tif 000022
2004532559.tif 000023
2004532559.tif 000024
2004532559.tif 000025
2004532559.tif 000026
2004532559.tif 000027
2004532559.tif 000028
2004532559.tif 000029
2004532559.tif 000030
2004532559.tif 000031
2004532559.tif 000032
2004532559.tif 000033
2004532559.tif 000034
2004532559.tif 000035
2004532559.tif 000036
2004532559.tif 000037
【国際調査報告】
2004532559.tif 000038