(57)【要約】      （修正有）【課題】コンテンツセントリックネットワークにおいてパケットストリームの同時ハッシュを実行するためのシステムを提供する。【解決手段】システムは、コントローラにおいてパケットのストリームを受信する。コントローラは、次に、受信したパケットに基づいて、異なる複数のハッシュ操作の種類とパラメータを識別する。コントローラは、さらに、パケット転送を容易にするために使用することができる異なるハッシュ値を生成するために、対応する異なるハッシュモジュールに同時にパケットを送信する。【選択図】なし【特許請求の範囲】
【請求項１】
パケットストリームの同時ハッシュを実行するためのコンピュータシステムであって、
パケットのストリームを受信するようになされている受信キューと、
前記受信キューに接続され、受信したパケットに基づいて、複数の異なるハッシュ操作の種類やパラメータを識別するようになされたコントローラと、
前記コントローラに接続された複数のハッシュモジュールとを備え、前記コントローラが、パケット転送を容易にするために使用することができる異なるハッシュ値を生成するために、異なるハッシュモジュールに同時にパケットを送信するようになされている、コンピュータシステム。
【請求項２】
前記複数のハッシュモジュールのうち、第１のハッシュモジュールが、第２のハッシュモジュールの中間状態を入力として使用する、請求項１に記載のコンピュータシステム。
【請求項３】
前記第１のハッシュモジュールおよび前記第２のハッシュモジュールが、ＳｉｐＨａｓｈ操作を実行するようになされている、請求項２に記載のコンピュータシステム。
【請求項４】
前記複数の異なるハッシュモジュールが、
ＳＨＡ−２ハッシュ操作と、
ＳＨＡ−３ハッシュ操作と
ＳｉｐＨａｓｈ操作と、
ファウラーノルボ（Ｆｏｗｌｅｒ−Ｎｏｌｌ−Ｖｏ（ＦＮＶ））ハッシュ操作との群から選ばれる１以上の操作を実行する、請求項１記載のコンピュータシステム。
【請求項５】
前記コントローラが、
異なるハッシュ操作からステータスを受信し、
異なるハッシュ操作について受信した前記ステータスに基づいて、次のサイクルにおけるハッシュ操作をスケジューリングするように、さらになされている、請求項１に記載のコンピュータシステム。
【請求項６】
複数のパケットストリームを並列に受信するようになされている、対応する複数のコントローラと、
各パケットストリームをハッシュモジュールのアレイにクロスコネクトし、それによって、前記複数のパケットストリームのそれぞれに対して、同時に複数のハッシュ操作を行うことを容易にする、ようになされているクロスコネクトとをさらに備える、請求項１に記載のコンピュータシステム。
【請求項７】
ハッシュ操作が、エラーや障害を示すステータスを返した場合、前記クロスコネクトが、前記対応するハッシュモジュールを使用することを停止するように、さらになされている、請求項６に記載のコンピュータシステム。
【請求項８】
パケットストリームの同時ハッシュを実行するためのコンピュータシステムであって、
プロセッサと、
前記プロセッサに接続され、命令であって、前記プロセッサによって実行されると、前記プロセッサに、ある方法を実行させる、命令を記憶する記憶装置とを備えるコンピュータシステムであって、前記方法が、
コントローラにおいて、パケットのストリームを受信することと、
受信されたパケットに基づいて、複数の異なるハッシュ操作の種類およびパラメータを前記コントローラによって識別することと、
パケット転送を容易にするために使用することができる、異なるハッシュ値を生成するために、対応する異なるハッシュモジュールに同時にパケットを送信することと、を備える、コンピュータシステム。
【請求項９】
前記複数のハッシュ操作のうち、第１のハッシュ操作が、第２のハッシュ操作の中間状態を入力として使用する、請求項８に記載の計算機システム。
【請求項１０】
前記第１のハッシュ操作、および前記第２のハッシュ操作が、ＳｉｐＨａｓｈ操作である、請求項９に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、ネットワークにおけるデータ処理を容易にすることに関するものである。より具体的には、本開示は、データストリームおける直接的な同時のハッシュおよびサブハッシュを容易にするシステムおよび方法に関するものである。
【背景技術】
【０００２】
インターネットおよび電子商取引の普及は、ネットワーク産業において、改革的変化を喚起し続けている。今日、オンライン映画の視聴から、毎日のニュース配信、小売り販売、およびインスタントメッセージに、かなりの数の情報交換が、オンラインで行われる。また、モバイルになるインターネットアプリケーションが増加している。しかし、現在のインターネットは、主として、位置ベースのアドレス指定方式で動作する。２つの最も多いユビキタスプロトコル、すなわちインターネットプロトコル（ＩＰ）およびイーサネット（登録商標）プロトコルは、共に位置ベースのアドレス指定に基づいている。すなわち、コンテンツの利用者は、物理オブジェクトまたは位置に密接に関連するアドレス（例えば、ＩＰアドレスやイーサネット（登録商標）媒体アクセス制御（ＭＡＣ）アドレス）から、コンテンツを明示的に要求することによってのみコンテンツを受信することができる。この限定的なアドレス指定方式は、時々刻々と変化するネットワークの要求を満たすためには、次第に、より不適切となってきている。
【０００３】
コンテンツセントリックネットワーク（ＣＣＮ）アーキテクチャが提案されている。ＣＣＮはコンテンツ送信への新たなアプローチをもたらす。ネットワークトラフィックを、コンテンツが伝わる経路であるエンドツーエンドの対話として、アプリケーションレベルで見るのでなく、コンテンツは、その唯一の名前に基づいて、要求され、または返される。そして、ネットワークは、コンテンツをプロバイダから利用者にルーティングする責任を負う。コンテンツは、通信システムにおいて送信することができるデータを含み、テキスト、画像、映像、および／または音声等のデータのいかなる形態も含むものとする。利用者およびプロバイダは、ＣＣＮの内部または外部において、コンピュータの前にいる人であってもよいし、自動化されたプロセスであってもよい。１つのコンテンツは、コンテンツ全体であってもよいし、コンテンツの各部分を指すこともできる。例えば、新聞記事は、複数のデータパケットとして具体化される複数のコンテンツによって表されることがある。１つのコンテンツは、認証データ、作成日、コンテンツ所有者等の情報によって、当該コンテンツを記述、または拡張するメタデータと関連づけられ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＣＣＮでは、コンテンツオブジェクトおよびインタレストは、それらの名前で識別される。名前は、典型的には、階層構造化された可変長識別子（ＨＳＶＬＩ）である。一部のネットワーク化システムは、複数のパケットを処理するために、同じデータストリームに対する複数のハッシュを要求することがある。これらハッシュは、異なる種類である場合があり、一部のハッシュは、それより前のハッシュから状態を送信することを要求する場合がある。１つのデータストリームについて複数のハッシュを生成しながら、ＣＣＮパケットを効率的に処理することは、いまだに課題である。
【課題を解決するための手段】
【０００５】
本発明の一実施形態は、パケットストリームの同時ハッシュを実行するためのシステムを提供する。動作中、システムは、コントローラにおいてパケットのストリームを受信する。コントローラは、次に、受信したパケットに基づいて、異なる複数のハッシュ操作の種類とパラメータを識別する。コントローラは、さらに、パケット転送を容易にするために使用することができる異なるハッシュ値を生成するために、対応する異なるハッシュモジュールに同時にパケットを送信する。
【０００６】
本実施形態の一変形例では、複数のハッシュ操作のうち、第１のハッシュ操作は、第２のハッシュ操作の中間状態を入力として使用する。
【０００７】
さらなる変形例では、第１のハッシュ操作、および第２のハッシュ操作は、ＳｉｐＨａｓｈ操作である。
【０００８】
本実施形態の一変形例においては、複数の異なるハッシュ操作が、ＳＨＡ−２ハッシュまたはトランケーションと、ＳＨＡ−３ハッシュまたはトランケーションと、ＳｉｐＨａｓｈと、様々なサイズのファウラーノルボ（Ｆｏｗｌｅｒ−Ｎｏｌｌ−Ｖｏ，ＦＮＶ）とのうち、１以上を含む。
【０００９】
本実施形態の一変形例においては、コントローラは、異なるハッシュ操作からステータスを受信し、異なるハッシュ操作について受信されたステータスに基づいて、次のサイクルにおけるハッシュ操作をスケジューリングする。
【００１０】
本実施形態の一変形例においては、システムは、複数のパケットストリームを並列に受信し、複数の対応するコントローラに入力し、各パケットストリームをハッシュモジュールアレイにクロスコネクトすることによって、複数のパケットストリームのそれぞれに対して、同時に複数のハッシュ操作を行うことを容易にする。
【００１１】
さらなる変形例では、ハッシュ操作が、エラーや障害を示すステータスを返した場合、システムは、対応するハッシュモジュールを使用することを停止する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の一実施形態に係るネットワークの例示的なアーキテクチャを示している。
【図２】図２は、本発明の一実施形態による、ＣＣＮコンテンツオブジェクトパケットに対する同時ハッシュを示している。
【図３】図３は、本発明の一実施形態による、ＣＣＮコンテンツオブジェクトに対する同時ハッシュを示している。
【図４】図４は、本発明の一実施形態による、ハッシュ処理部からの出力の例示的な下流処理を示す。
【図５】図５は、本発明の一実施形態に係る、例示的なハッシュ処理部を示す図である。
【図６】図６は、本発明の一実施形態に係る、このようなハッシュアレイを示す。
【図７Ａ】図７Ａは、本発明の一実施形態に係る、パケットハッシュ処理の最初のステージを示す。
【図７Ｂ】図７Ｂは、本発明の一実施形態に係る、パケットハッシュ処理の２番目のステージを示す。
【図７Ｃ】図７Ｃは、本発明の一実施形態に係る、パケットハッシュ処理の３番目のステージを示す。
【図８】図８は、本発明の一実施形態に係る、複数の入力パケットキューの並列処理を容易にする例示的なシステムを示す。
【発明を実施するための形態】
【００１３】
本発明の実施形態は、ＣＣＮデータパケットのハッシュの同時生成を容易にするためのシステムおよび方法を提供する。
【００１４】
動作中に、ＣＣＮ有効化スイッチやルータが、コンテンツオブジェクト、またはコンテンツオブジェクトのフラグメントを受信した場合、このＣＣＮ有効化スイッチは、コンテンツオブジェクトをキャッシュすべきと判断し、コンテンツオブジェクト（またはそのフラグメント）のコピーをコンテンツストアマネージャに送信する。コンテンツストアマネージャは、（必要な場合には）フラグメントを再構成し、コンテンツオブジェクトのコピーを、接続された記憶装置に書き込む。より具体的には、接続された記憶装置に書き込む前に、コンテンツストアマネージャは、送信に適した大きさにコンテンツオブジェクトをフラグメント化してもよい。送信された各フラグメントが、接続された記憶装置内の、連続するブロックの組に書き込まれ、コンテンツストアマネージャは、連続するブロックの組のそれぞれに、送信ヘッダとフラグメントヘッダとを付加する。また、コンテンツストアマネージャは、コンテンツオブジェクトの名前プリフィックスにより示されるキャッシュテーブルを生成し加える。キャッシュテーブル内のエントリは、コンテンツオブジェクトのフラグメントが配置されている記憶ブロックの組の場所を指定する。いくつかの実施形態では、キャッシュエントリは、予め組み立てられたデータ通信フレームの組を含み、各フレームは１つのフラグメント専用である。予め組み立てられたフレームは、適当な送信ヘッダと記憶ブロックへのポインタを含んでもよく、接続された記憶装置から、対応するフラグメントを検索するために使用することができる。
【００１５】
一般的には、ＣＣＮは、２種類のメッセージ、すなわち、インタレストとコンテンツオブジェクトとを使用する。インタレストは、コンテンツオブジェクトの、「名前」とも呼ばれる階層構造化された可変長識別子（ＨＳＶＬＩ）を運び、そのオブジェクトの要求として機能する。ネットワーク要素（例えば、ルータ）が、同一の名前に対して複数のインタレストを受信した場合、このネットワーク要素は、これらのインタレストを集成することができる。一致するコンテンツオブジェクトを有するインタレストのパス上にあるネットワーク要素は、そのオブジェクトをキャッシュし、返すことができ、インタレストを満たすことができる。コンテンツオブジェクトは、インタレストの、１つの、または複数の原点への、インタレストの逆経路に従う。コンテンツオブジェクトは、他の情報の中でも、ＨＳＶＬＩをペイロードに結合させるために使用される、同一のＨＳＶＬＩ、オブジェクトのペイロード、および暗号情報を含む。
【００１６】
本開示において使用される用語は、一般的に次のように定義される（が、それらの解釈は、これに限定されない）。
【００１７】
「ＨＳＶＬＩ」は、階層的に構造化された可変長識別子であり、名前とも呼ばれる。これは、可変長オクテット文字列であってもよい名前構成部の順序付きリストである。人間が読み取り可能な形態で、ＨＳＶＬＩは、ｃｃｎｘ：／／ｐａｔｈ／ｐａｒｔ等の形式で表現することができる。ホスト文字列やクエリ文字列はない。上述したように、ＨＳＶＬＩは、コンテンツを参照する。また、ＨＳＶＬＩは、コンテンツの組織構成を表し、少なくとも部分的には、人間に対して意味のあるものにできることが望ましい。ＨＳＶＬＩの個々の構成部は、任意の長さを有することができる。さらに、ＨＳＶＬＩは、明示的に区切られた構成部を有することができ、任意のバイト列を含むことができるが、人間が読み取り可能な文字に限定されない。最長プリフィックスマッチ探索は、ＨＳＶＬＩを使用したパケット転送において重要である。例えば、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ」に興味を示すＨＳＶＬＩは、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｔｅｓｔ．ｔｘｔ」および「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｂａｒ．ｔｘｔ」の両方と一致する。名前構成部の数に関する最長一致は、最も具体的であるため、最も望ましいとされている。
【００１８】
「インタレスト」は、コンテンツオブジェクトの要求である。インタレストは、同一の名前プリフィックスを有する複数のオブジェクトの中から選択するために使用することができる、ＨＳＶＬＩの名前のプリフィックスおよび他の任意のセレクタを指定する。インタレストの名前プリフィックスおよびセレクタと一致する名前を有するいかなるコンテンツオブジェクトも、インタレストを満たしている。
【００１９】
「コンテンツオブジェクト」は、インタレストに応答して送信されるデータオブジェクトである。コンテンツオブジェクトは、暗号署名を介して互いに結合されているＨＳＶＬＩの名前とコンテンツペイロードとを有している。必要に応じて、全コンテンツオブジェクトは、コンテンツオブジェクトのＳＨＡ−２５６ダイジェストからなる暗黙の終端名前構成部を有している。一実施形態では、暗黙のダイジェストは、電線には転送されず、必要であれば各ホップで計算される。
【００２０】
上述したように、１つのＨＳＶＬＩは１つのコンテンツを示し、階層的に構成され、最も一般的なレベルから最も具体的なレベルまで順序付けられた連続する構成部を含む。各ＨＳＶＬＩの長さは一定ではない。コンテンツセントリックネットワークでは、従来のＩＰネットワークとは異なり、パケットをＨＳＶＬＩによって識別することができる。例えば、「ａｂｃｄ／ｂｏｂ／ｐａｐｅｒｓ／ｃｃｎ／ｎｅｗｓ」がコンテンツの名前となり得、対応するパケットを識別する。すなわち、「ＡＢＣＤ」という名前の組織にいる「Ｂｏｂ」という名前のユーザのための、新聞の「ｃｃｎ」の収集からの「ｎｅｗｓ」記事である。１つのコンテンツを要求するために、あるノードが、コンテンツの名前によって、そのコンテンツ対するインタレストを表現（例えば、ブロードキャスト）する。１つのコンテンツに対するインタレストは、コンテンツの名前または識別子に基づく、コンテンツに対するクエリとなり得る。コンテンツがネットワークで入手できる場合には、コンテンツは、コンテンツを記憶する任意のノードから、要求したノードに戻るようにルーティングされる。ルーティングインフラストラクチャは、インテリジェントに、情報を有する可能性が高い候補ノードにインタレストを伝搬した後、インタレストの移動経路に沿って逆方向に、利用可能なコンテンツを運ぶ。
【００２１】
図１は、本発明の一実施形態に係るネットワークの例示的なアーキテクチャを示している。この例では、ネットワーク１８０は、ノード１００〜１４５を備えている。ネットワーク内の各ノードは、１以上の他のノードに接続されている。ネットワーク接続１８５は、このような接続の例である。ネットワーク接続は、実線として示されているが、各線は、１つのノードを別のノードに接続できるサブネットワークまたはスーパーネットワークであってもよい。ネットワーク１８０は、コンテンツセントリックネットワーク、ローカルネットワーク、スーパーネットワーク、またはサブネットワークであってもよい。これらのネットワークのそれぞれは、１つのネットワーク内のノードが、他のネットワークノードに到達することができるように、相互接続され得る。ネットワーク接続は、ブロードバンド接続、無線接続、電話の接続、衛星接続、その他の任意の種類のネットワーク接続であってもよい。ノードは、コンピュータシステム、ユーザを表すエンドポイント、および／またはインタレストを生成し、またはコンテンツを発信することができる装置とすることができる。
【００２２】
本発明の一実施形態によれば、利用者は、１つのコンテンツに対するインタレストを生成し、次いでそのインタレストをネットワーク１８０内のあるノードに送信することができる。この１つのコンテンツは、ネットワークの内部、または外部の発行者またはコンテンツプロバイダによって、ネットワーク１８０内の、あるノードに記憶され得る。例えば、図１では、１つのコンテンツに対するインタレストが、ノード１０５において発信される。このコンテンツが、当該ノードで利用可能でない場合には、このインタレストは、この最初のノードに接続された１以上のノードに流れる。例えば、図１では、インタレストが、利用可能なコンテンツを有していないノード１１５に流れる（フロー１５０）。次に、インタレストは、ノード１１５からノード１２５に流れる（フロー１５５）が、ノード１２５もまた当該コンテンツを有していない。インタレストは、その後ノード１３０に流れ（フロー１６０）、ノード１３０は、利用可能なコンテンツを有している。コンテンツのフローは、コンテンツの配信先であるノード１０５に達するまで、パスを反対方向に戻る（コンテンツフロー１６５、１７０、１７５）。認証等の他の方法が、コンテンツのフローに含まれていてもよい。
【００２３】
ネットワーク１８０においては、コンテンツホルダ（ノード１３０）とインタレスト生成ノード（ノード１０５）との間のパスにある、任意の数の中間ノード（ノード１００−１４５）は、コンテンツがネットワークを横断して移動するときに、コンテンツのローカルコピーをキャッシュすることに参加することができる。キャッシュは、ローカルにキャッシュされたコンテンツへのアクセスを暗黙的に共有することによって、他の加入者に近接して位置している第２の加入者のためのネットワーク負荷を低減することができる。
【００２４】
典型的には、ＣＣＮネットワーキングシステムは、ＣＣＮパケットを処理し、転送するために、同一のデータストリームに対していくつかのハッシュを要求する場合がある。これらハッシュは、異なる種類である場合があり、一部のハッシュは、それより前のハッシュから状態を送信することを要求する場合がある。例えば、コンテンツオブジェクトパケットは、メッセージ全体にわたってＳＨＡ−２５６ハッシュをする必要があるかもしれない。ＣＣＮ名のパスのセグメントまたは構成部等、埋め込まれたバイトアレイ全体に対する、ＳｉｐＨａｓｈや、のファウラーノルボ（ＦＮＶ）ハッシュ等を必要とすることもある。
【００２５】
図２は、本発明の一実施形態による、ＣＣＮコンテンツオブジェクトパケットに対する同時ハッシュを示している。この例では、ＣＣＮパケット２００は、ハッシュ化されない（「スキップ」として示す）ヘッダ（パケットの先頭部と最後部の両方）を含む。最後部を除く、メッセージ本体２０２の全体に対して、長いＳＨＡ−２５６ハッシュが計算される。メッセージ内には、他のデータ構造、すなわちＣＣＮ名が埋め込まれている。ＣＣＮ名は、通常、ＣＣＮスイッチによって計算される数回の連続するハッシュを必要とする。一実施形態では、初めの名前構成部がハッシュ化され、その後、２番目の名前構成部のハッシュ化は、初めの名前構成部にも依存し、名前全体にわたって、その先も同様である。その結果、ＳｉｐＨａｓｈのアレイ２０６が得られる（この例では、ＳｉｐＨａｓｈが複数の名前構成部について計算されることを暗示している）。名前のハッシュ（すなわち、ＳｉｐＨａｓｈのアレイ２０６）は、（例えば、最長一致検索を行うために）テーブル探索を転送するために使用されるので、暗号ハッシュでなくてもよい。
【００２６】
今後のプロトコルや機能が、異なるハッシュを必要とするかもしれない。したがって、ハッシュ処理部が、柔軟なルールセットを含むことによって、制御ユニットは、利用可能なハッシャ（ｈａｓｈｅｒ）から、使用するハッシュの適切な組を決定することができる。ルールセットは、プロトコルヘッダに基づいて、パケット内のオフセットを計算するためのルールセットに、パケットをマッピングすることによって、ハッシャがハッシュを計算するために、パケットデータから正しい入力を取ることを可能にする。制御部は、演算ユニット（ＡＬＵ）と、タイプレングスバリュー（ＴＬＶ）エンジン、その他のルールに基づくエンジン等のパケットスキーマプロセッサとを含むことができる。
【００２７】
例えば、図３は、連続する名前のハッシュ（すなわち、ＦＮＶ−１ａハッシュのアレイ３０６）に加えて、メッセージ本体３０２のＳＨＡ−３の５１２ビットのハッシュ、およびペイロード３０５のＳＨＡ−３の２５６ビットのハッシュを必要とするパケット３００を示す。この例では、ＦＮＶ−１ａは、名前構成部をハッシュ化するために使用されることに留意されたい。
【００２８】
図４は、本発明の一実施形態による、ハッシュ処理部からの出力の例示的な下流処理を示す。本実施形態では、ハッシュ処理部４００は、到着キュー４０２等の、いくつかの到着（入力）キューと、ハッシュアレイ４０４と、ハッシュ出力キュー等の、いくつかのハッシュ出力キュー４０６とを含んでいる。到着するパケットは、複製されて、種々の到着キュー内に配置され、それによって、異なるハッシュ値を生成するために、ハッシュアレイ４０４の異なる部分に送給される。ハッシュ出力キューからの出力は、その後制御モジュール４０８に接続される。制御モジュール４０８は、それぞれのデータ、およびハッシュを、ファストペンディングインタレストテーブル（ＰＩＴ）探索モジュール４２２やフォワーディングインフォメーションベース（ＦＩＢ）探索モジュール４２４等の、ＣＣＮ特有のハードウェアにディスパッチする。一部のハッシュは、一時的であって、保存されない場合があるが、ＳＨＡ−２５６コンテンツオブジェクトハッシュ等のその他のハッシュは、コンテキストメモリ４２８に保存され得る。さらに、フレームメモリ４２６が、必要に応じて、後に使用するためにデータパケットを保存することができる。
【００２９】
以下は、同じデータストリームに、同時に複数のハッシュを行うことができる柔軟なハッシュ処理部等の、ハードウェアおよびソフトウェアのシステムを記載している。
【００３０】
一実施形態では、ハードウェア内のハッシュ処理部が、上流側（すなわちメディアポート）、および下流側（すなわちネットワークプロセッサまたはＣＰＵ）と通信するために、ＸＡＵＩ、インターラケン（Ｉｎｔｅｒｌａｋｅｎ）またはＰＣＩｅ等のチップ間レーンを使用することができる。ハッシュ処理部は、ネイティブメディアポートも有することができる。図５に示すように、ハッシュ処理部５０２は、パケットを取り込み、そしてマッチングのルールセットを適用して、与えられたパケットのヘッダと内部構造に基づいて、与えられたパケットに対して、どの種類のハッシュを計算するかを決定する。出力は、元のパケットと、計算されたハッシュである。
【００３１】
例えば、出力ストリームは、元のパケット、およびそれに続く、特別パケットであってもよい。この特別パケットは、ネットワーク処理ユニット（ＮＰＵ）等、処理パイプ内の次のステージに対して、それより前のパケットに関連づけられたハッシュを含んでいることを通知するための識別子を含む。ハッシュパケットは、ＮＰＵがパケット内の特定のハッシュを簡単に探索することができるように、コンテンツのテーブルを含むことができる。
【００３２】
ハッシュ処理部内は、出力バッファを有するハッシュのアレイである。ハッシャは、ＳＨＡ−２５６、ＳｉｐＨａｓｈ、ＦＮＶ−１ａの１２８ビット等の様々な種類のハッシャ、またはすべてのＳＨＡ−２やＳＨＡ−３の変形例等のプログラマブルなハッシャであってもよい。複数のハッシュは、パケット内のそれぞれの位置に基づいて、異なる時間に利用可能となるので、各ハッシャは、制御部がそれらの結果をハッシュ出力キューに書き込むことができると判断するまで、結果を保持するための出力バッファを有している。また、元のデータパケットは、パススルーによってデータ出力キューにコピーされる。図６は、本発明の一実施形態に係る、このようなハッシュアレイを示す。着パケットは、制御モジュールによって、まず複製され、ディスパッチされる。パケットは、その後、異なるハッシャに供給され、異なるハッシャからの出力がバッファされる。また、パケットは、パススルーデータパスによって、データ出力キューにも置かれる。
【００３３】
本明細書において、我々は、ハッシュ処理をステータスサイクルと、処理サイクルとに分ける。これは、説明目的のために、パイプラインの複数のステージに対応すると考えることができる。実際の実装は、図示されているよりも微細なパイプラインを有することができ、例示的な６４バイトブロックよりも大きい、または小さいデータブロックにおいて機能することができる。
【００３４】
ハッシャは、また、別のハッシャの中間結果に基づいて、状態を初期化する能力を有する。例えば、最初の名前構成部は、バイトオフセット２８の位置で始まり、バイトオフセット３７の位置で終了することが可能である。ハッシャは、入力に対して、０や、その他のハッシュの特定パターンを（８バイトアライメントの場合は）バイト４０にパッド（ｐａｄ）する可能性が高い。次の名前構成部は、バイトオフセット３８の位置で始まる。ハッシュをつなぎ合わせるために、２番目のハッシャが、バイトオフセット３２の位置にある、初めのハッシャからの中間状態を受ける。バイトオフセット３２の位置は、初めのハッシャがパッドを開始する位置から、最後のフルブロック分手前の位置である。２番目のハッシャは、その後、２番目の名前構成部の端部を通って続く。
【００３５】
図７Ａは、本発明の一実施形態に係るパケットハッシュ処理の例示的な最初のステージを示す。コントローラは、バイトＢ０，Ｂ１，…，Ｂ６３をデータバスに置き、ハッシャ（または少なくともノーオペレーションＮＯＰのないハッシャ）のそれぞれにコマンドを送る。コントローラは、バイトオフセット２０の位置でデータバスのハッシュを開始するよう、ＳＨＡ−２５６プロセッサに指示する。終了が指定されていないので、ＳＨＡ−２５６ハッシャは、ブロックの終わりまでハッシュを続ける。コントローラは、また、ハッシャユニット１に対して、バイトオフセット２４の位置で、そのＳｉｐＨａｓｈを開始し、バイトオフセット６０の位置で終了すべきであると指示する。コントローラは、ハッシャユニット２に対して、バイトオフセット５６の位置で、そのＳｉｐＨａｓｈを開始するよう指示する。これは、ハッシャユニット２が、ハッシャユニット１に続くものであるためである。コントローラは、ユニット２に対して、バイト５５の端部の中間状態をユニット１から転送し、バイトオフセット５６の位置でそのハッシュを開始するように指示する。ＳｉｐＨａｓｈは、８バイトアライメントのハッシュであり、ユニット１が、バイト６０の後に入力をパッドし始めるので、コントローラは、バイト６１における２番目の名前構成部の実際の始まりではなく、バイト５６を指定する。
【００３６】
図７Ｂは、本発明の一実施形態に係る、パケットのハッシュ処理の例示的な２番目のステージを示す。２番目の処理サイクルでは、コントローラは、各ハッシャのステータスを読み取る。ユニット０は、ＳＨＡ−２５６ハッシュを行っている最中であり、かつエラーがないので、「ＯＫ」を通知する。バイト６０で終了し、ＳｉｐＨａｓｈのためにパッドされるメッセージ終了文字をまだ算出しており、その結果をバッファに書き込んでいるため、ユニット１は「ＢＵＳＹ」を通知する。ユニット２は、そのＳｉｐＨａｓｈを行っている最中であり、かつエラーがないので、「ＯＫ」を通知する。ユニット３は、新たな作業に利用可能であるので、「ＩＤＬＥ」を通知する。
【００３７】
図７Ｃは、本発明の一実施形態に係る、パケットのハッシュ処理の例示的な３番目のステージを示す。この３番目の処理サイクルでは、コントローラは、バイトＢ６４，…，Ｂ１２７をデータバスに置き、各ハッシャに対して新たなタスク割り当てを行う。コントローラは、ユニット０に対して、ブロック全体にわたってそのＳＨＡ−２５６ハッシュを継続するよう指示する。ユニット１が「ＢＵＳＹ」を通知したので、コントローラはまた、ユニット１にノーオペレーション命令を送信する。コントローラは、ユニット２に対して、そのハッシュを継続し、バイト６８で終了するよう指示する。ハッシャユニット２は、その後ハッシュをパッドし、結果をそのバッファに書き込む。さらに、コントローラは、ユニット３に対して、バイト６４の位置でハッシュを開始し、バイト６３の位置の後に、ユニット２からの中間状態を読み出すことができる。バイト６４が、ユニット３が、ユニット２からの中間結果として読み出すことができる最後の完全な８バイトの整合されたワードであるため、コントローラは、ユニット３にバイト６４の位置で開始させる。その後のサイクルは、ハッシャのステータスを読み出し、バスに新たなデータブロックを置き、各ハッシャに対してコマンドを発するコントローラにより続けられる。
【００３８】
実用的なシステムでは、多数の並列パケットが到着し得る。例えば、ルータのラインカードは、多くのインターラケンレーン、またはＸＡＵＩインターフェースを介してハッシュ処理部に連結された、複数の媒体インターフェースを有することができる。各パケット到着キューは、解析状態を管理するそれ自体のコントローラを有している。クロスコネクトは、利用可能なハッシャリソースにコントローラを仲介する。クロスコネクトの一例は、クロスバー・スイッチである。コントローラが、ハッシャ（すなわち、ハッシャアレイ）の使用を開始すると、このコントローラは、現在の動作が終了するまで、そのハッシャに留まる。出力クロスコネクトが、パケットデータおよびハッシャデータのために、ハッシャバッファを出力レーンにリンクする。ハッシャが故障し、またはエラーや障害が発生すると、クロスコネクトは、異なるハッシャを選択して、誤りのない動作を保証することができる。
【００３９】
クロスコネクトアービタは、リソースを割り当てる際にパケットの優先度を考慮すべきである。クロスコネクトアービタは、またコントローラ間のデッドロックを回避すべきである。例えば、コントローラは、デッドロックを回避できるようにするために、コントローラは、開始前に、必要とされるリソースの推定値をクロスコネクトに与える必要があるかもしれない。一部のシステムは、常に十分なリソースがあることを保証するために、分かっているパケットフォーマットの最悪の場合のタイミングに基づいて設計されることができる。クロスコネクトがデッドロックした場合には、クロスコネクトは優先度の低いセッションを無効とし、そのデータストリームを出力バッファから入力バッファのキューに再び入れる。
【００４０】
図８は、本発明の一実施形態に係る、複数の入力パケットキューの並列処理を容易にする例示的なシステムを示す。本実施形態では、クロスコネクト８０２が、複数のパケット到着キューを、異なるハッシュ処理部に接続し、第２のクロスコネクト８０４が、ハッシュ結果を、異なるハッシュ出力キューに接続する。具体的には、３つのパケット入力キューがある。入力レーンの数は、より多くても少なくてもよく、入力レーンと、サービスキューとの間には、パケットスケジューラがあってもよい。クロスコネクト８０２は、各コントローラをハッシャリソースに割り当てる。出力クロスコネクト８０４は、次のユニットによる処理のため、ハッシャバッファがキューを出力するようスケジューリングする。
【００４１】
要約すると、本開示は、同じバイトストリームに対する複数の同時ハッシュを計算するためのアーキテクチャおよびシステムを開示している。例えば、コンテンツオブジェクトは、メッセージ全体にわたるＳＨＡ−２５６ハッシュを有し、メッセージの特定のサブストリングは、いくつかの累積的なＳｉｐＨａｓｈ等、他のハッシュを有している。このシステムは、ルールシステムを使用してパケットを記述し、その後、同じバイトストリーム上で動作する複数のハッシャにコマンドを発行する。より大規模なシステムは、複数の入力コントローラと、利用可能なハッシャのアレイとの間にクロスコネクトを使用することができる。
【００４２】
この詳細な説明に記載されるデータ構造およびコードは、通常、コンピュータ可読記憶媒体に記憶されており、この媒体は、コンピュータシステムが使用するために、コードおよび／またはデータを記憶することができる任意の装置または媒体とすることができる。コンピュータ可読記憶媒体は、揮発性メモリ、不揮発性メモリ、ディスクドライブ等の磁気記憶装置および光記憶装置、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）、または現在知られている、もしくは後に開発されるコンピュータ可読媒体を格納できる他の媒体を含むが、これらに限定されるものではない。
【００４３】
詳細な説明の部分に記載された方法およびプロセスは、コードおよび／またはデータとして具現化することができ、これらのコードおよび／またはデータは、上述したようにコンピュータ可読記憶媒体に記憶可能である。コンピュータシステムが、コンピュータ可読記憶媒体に記憶されたコードおよび／またはデータを読み出して実行するとき、コンピュータシステムは、データ構造およびコードとして具体化されてコンピュータ可読記憶媒体内に記憶された方法およびプロセスを実行する。
【００４４】
さらに、本明細書で説明した方法およびプロセスを、ハードウェアモジュールまたはハードウェア装置に含むことができる。これらのモジュールまたは装置は、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定のソフトウェアモジュール、または１つのコードを特定の時間に実行する専用または共用のプロセッサ、および／または現在知られているか、今後開発される他のプログラマブルロジックデバイスを含むことができるが、これらに限定されない。ハードウェアモジュールまたはハードウェア装置が起動されるとき、それらは、ハードウェアモジュールまたはハードウェア装置に含まれる方法およびプロセスを実行する。
【００４５】
上記の説明は、いかなる当業者も上記実施形態を製造し、使用できるようにするために提供されており、特定の用途およびその要件の文脈において提供されている。開示された実施形態に対する種々の変形が、当業者に容易に明らかであり、本明細書で定義される一般原理は、本開示の趣旨および範囲から逸脱することなく他の実施形態および用途に適用され得る。したがって、本発明は、示される実施形態に限定されるものではなく、本明細書に開示される原理および特徴に合致する最も広い範囲を示すものである。
【図１】
2015171145.tif 000002
【図２】
2015171145.tif 000003
【図３】
2015171145.tif 000004
【図４】
2015171145.tif 000005
【図５】
2015171145.tif 000006
【図６】
2015171145.tif 000007
【図７Ａ】
2015171145.tif 000008
【図７Ｂ】
2015171145.tif 000009
【図７Ｃ】
2015171145.tif 000010
【図８】
2015171145.tif 000011