(57)【要約】  本開示の実施形態の一部は、本開示は、反復解析分類エンジンにより、データパケットのヘッダ情報に少なくとも一部基づいて、データパケットの第１解析分類サイクルを実行する段階と、第１解析分類サイクルの実行に少なくとも一部基づいて、第１解析分類結果を生成する段階と、データパケットのヘッダ情報及び第１解析分類結果に少なくとも一部基づいて、データパケットの第２解析分類サイクルを実行する段階とを備える方法を提供する。その他の実施形態についても記載及び特許請求される。【選択図】図１
2013511223.tif 000002
【特許請求の範囲】
【請求項１】
反復解析分類エンジンにより、データパケットのヘッダ情報に少なくとも一部基づいて、前記データパケットの第１解析分類サイクルを実行する段階と、
前記第１解析分類サイクルの実行に少なくとも一部基づいて、第１解析分類結果を生成する段階と、
前記データパケットのヘッダ情報及び前記第１解析分類結果に少なくとも一部基づいて、前記データパケットの第２解析分類サイクルを実行する段階と
を備える方法。
【請求項２】
前記第１解析分類サイクルを実行する段階は、
前記データパケットのヘッダ部分に少なくとも一部基づいて、連想メモリ（content-addressable memory：ＣＡＭ）における第１参照を実行する段階と、
前記第１参照の実行に少なくとも一部基づいて、第１メモリアドレスを生成する段階と、
メモリの前記第１メモリアドレスからの第１コンテンツにアクセスする段階と
を有し、
前記第１コンテンツは、第１解析分類結果を含む請求項１に記載の方法。
【請求項３】
前記第２解析分類サイクルの実行に少なくとも一部基づいて、第２解析分類結果を生成する段階を更に備える請求項１に記載の方法。
【請求項４】
前記第２解析分類結果を生成する段階は、
前記第２解析分類結果が、前記データパケットの解析及び分類に更なる解析分類サイクルが必要であるかを示す解析分類完了フラグを含むように、前記第２解析分類結果を生成する段階を有し、
前記解析分類完了フラグが、前記データパケットの解析及び分類に更なる解析分類サイクルが必要であることを示す場合には、前記データパケットのヘッダ情報及び前記第２解析分類結果に少なくとも一部基づいて、前記データパケットの第３解析分類サイクルを実行し、
前記解析分類完了フラグが、前記データパケットの解析及び分類に更なる解析分類サイクルが必要でないことを示す場合には、前記データパケットの分類結果を出力する請求項３に記載の方法。
【請求項５】
前記分類結果を出力する段階は、
前記第２解析分類結果に含まれる分類情報に少なくとも一部基づいて、前記分類結果を出力する段階を含む請求項４に記載の方法。
【請求項６】
前記分類結果を出力する段階は、
前記データパケットに関するキュー、優先度、フローＩＤのうちの１以上に関する情報を含む前記分類結果を出力する段階を含む請求項４に記載の方法。
【請求項７】
前記第１解析分類サイクルを実行する段階は、前記データパケットのヘッダの第１ヘッダ部分に少なくとも一部基づいて、前記第１解析分類サイクルを実行する段階を有し、
前記第２解析分類サイクルを実行する段階は、前記データパケットの前記ヘッダの第２ヘッダ部分に少なくとも一部基づいて、前記第２解析分類サイクルを実行する段階を有し、
前記第２ヘッダ部分は、前記第１ヘッダ部分とは異なる請求項１に記載の方法。
【請求項８】
前記第２解析分類サイクルを実行する段階は、前記第１解析分類結果に含まれるヘッダオフセット情報に少なくとも一部基づいて、前記第２解析分類サイクルを実行する段階を有する請求項１に記載の方法。
【請求項９】
プロセッシングコアと、
反復解析分類エンジン（iterative parser and classifier engine：ＩＰＡＣ）と
を備えるシステムオンチップ（ＳＯＣ）であって、
前記ＩＰＡＣは、
データパケットを受信し、第１反復サイクルの間に、前記データパケットのヘッダから第１ヘッダ部分を生成するパケットヘッダオフセットユニットと、
３値連想メモリ（ＴＣＡＭ）と、
メモリと
を有し、
前記ＩＰＡＣは、前記第１反復サイクルの間に、前記第１ヘッダ部分を使用して前記ＴＣＡＭにおける第１参照を実行し、前記第１参照に応じて第１メモリアドレスを生成し、
前記ＩＰＡＣは、前記第１反復サイクルの間に、前記メモリ内の前記第１メモリアドレスからの第１コンテンツにアクセスするシステムオンチップ。
【請求項１０】
前記ＩＰＡＣは、
前記メモリから前記第１コンテンツを受信し、第１フィードバックを生成するフィードバックプロセッシングユニットを更に有し、
前記パケットヘッダオフセットユニットは、第２反復サイクルの間に、前記第１フィードバックに少なくとも一部基づいて、前記データパケットの前記ヘッダから第２ヘッダ部分を生成する請求項９に記載のシステムオンチップ。
【請求項１１】
前記ＩＰＡＣは更に、
前記第１コンテンツに少なくとも一部基づいて、前記ＴＣＡＭの複数のエントリをマスクすることにより、前記ＴＣＡＭの有効部分を生成し、
前記第１コンテンツに基づいて生成される第２ヘッダ部分を使用して、前記ＴＣＡＭの前記有効部分における第２参照を実行することにより、第２反復サイクルを実行する請求項９に記載のシステムオンチップ。
【請求項１２】
前記ＩＰＡＣは更に、前記第２反復サイクルの間に、前記第２ヘッダ部分及び前記第１フィードバックを使用して前記ＴＣＡＭにおける第２参照を実行し、前記第２参照に応じて第２メモリアドレスを生成する請求項１０に記載のシステムオンチップ。
【請求項１３】
前記ＩＰＡＣは、前記第２反復サイクルの間に、前記メモリ内の前記第２メモリアドレスからの第２コンテンツにアクセスする請求項１２に記載のシステムオンチップ。
【請求項１４】
前記ＩＰＡＣは更に、前記データパケットの分類情報を生成するための分類ユニットを有し、
前記フィードバックプロセッシングユニットは、前記第２コンテンツにアクセスし、解析分類完了フラグを含む第２フィードバックを生成し、
前記解析分類完了フラグが、前記データパケットの解析及び分類に更なる解析分類サイクルが必要であることを示す場合には、前記ＩＰＡＣは、前記データパケットの第３ヘッダ情報及び前記第２フィードバックに少なくとも一部基づいて、前記データパケットに対して第３解析分類サイクルを実行し、
前記解析分類完了フラグが、前記データパケットの解析及び分類に更なる解析分類サイクルが必要でないことを示す場合には、前記分類ユニットは、前記第２コンテンツに少なくとも一部基づいて前記データパケットの分類結果を出力する請求項１３に記載のシステムオンチップ。
【請求項１５】
前記メモリは、スタティックランダムアクセスメモリ（ＳＲＡＭ）である請求項９に記載のシステムオンチップ。
【請求項１６】
前記パケットヘッダオフセットユニットは、ネットワークコントローラから前記データパケットを受信する請求項９に記載のシステムオンチップ。
【請求項１７】
データパケットを受信する段階と、
前記データパケットのヘッダの第１ヘッダ部分を使用して、３値連想メモリ（ＴＣＡＭ）における第１参照を実行し、前記ＴＣＡＭの出力に基づいて第１コンテンツを生成する段階と、
第２アドレスを生成するべく、前記データパケットの前記ヘッダの第２ヘッダ部分及び前記第１コンテンツを使用して、前記ＴＣＡＭにおける第２参照を実行する段階と
を備える方法。
【請求項１８】
前記第１参照を実行する段階は、
第１メモリアドレスを生成するべく前記第１参照を実行する段階と、
メモリの前記第１メモリアドレスにアクセスすることにより、前記第１コンテンツを生成する段階と
を有する請求項１７に記載の方法。
【請求項１９】
前記メモリの前記第２アドレスからの第２コンテンツにアクセスする段階を更に備え、
前記第２コンテンツは解析分類完了フラグを含み、
前記解析分類完了フラグが、前記データパケットの解析及び分類に更なる解析分類サイクルが必要であることを示す場合には、前記データパケットの前記ヘッダの第３ヘッダ部分及び前記第２コンテンツを使用して、前記ＴＣＡＭにおける第３参照を実行して、第３アドレスを生成し、
前記解析分類完了フラグが、前記データパケットの解析及び分類に更なる解析分類サイクルが必要でないことを示す場合には、前記第２コンテンツに少なくとも一部基づいて前記データパケットの分類結果を出力し、
前記第３ヘッダ部分は、前記第２コンテンツに少なくとも一部基づいて前記ヘッダから生成される請求項１７に記載の方法。
【請求項２０】
前記第２ヘッダ部分は、前記第１コンテンツに少なくとも一部基づき、
前記第２ヘッダ部分は、前記第１ヘッダ部分とは異なる請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、概して、解析（parsing）及び分類に関し、より詳細には、データパケットの反復解析（iterative parsing）及び分類に関する。
【０００２】
［優先権情報］
本出願は、２００９年１１月１６日出願の米国特許出願第６１／２６１，４７２号明細書の優先権を主張するものであり、前記出願の内容は、参照により本明細書に組み込まれる。
【背景技術】
【０００３】
本明細書に特に示されていない限り、本章において記載される方法は、本願特許請求の範囲に対する従来技術ではなく、この章に記載することによって従来技術と認めているわけではない。
【０００４】
パケット通信ネットワークは一般的に、スイッチ、ルータ、トラフィックコントローラ及びトラフィックシェーパのように、ネットワーク全体にわたるデータパケットのフローの経路選択及び管理を行う複数のネットワークデバイスを備える。データパケットの各々は、データに加えて、データパケットのヘッダに配置される複数の制御フィールドを有する。このようなフィールドは、例えば、ソースアドレス、データパケットの宛先アドレス、データパケットの種類、データパケットに関連付けられたプロトコル等を含む。データパケットは、総合的にデータパケットの包括構造を規定する所定のネットワークプロトコル及び規則のセットに従って、解析ツール（parser）によって解析される。例えば、インターネットプロトコル（ＩＰ）データパケットを解析する場合、構文解析ツールは、データパケットのＩＰバージョン番号（例えば、バージョン４又は６）を調べる。そして分類ツール（classifier）は、解析結果に少なくとも一部基づいて、データパケットを分類する。
【発明の概要】
【０００５】
様々な実施形態において、本開示は、反復解析分類エンジンにより、データパケットのヘッダ情報に少なくとも一部基づいて、データパケットの第１解析分類サイクルを実行する段階と、第１解析分類サイクルの実行に少なくとも一部基づいて、第１解析分類結果を生成する段階と、データパケットのヘッダ情報及び第１解析分類結果に少なくとも一部基づいて、データパケットの第２解析分類サイクルを実行する段階とを備える方法を提供する。
【０００６】
また、プロセッシングコアと、反復解析分類エンジン（iterative parser and classifier engine：ＩＰＡＣ）とを備えるシステムオンチップ（ＳＯＣ）であって、ＩＰＡＣは、データパケットを受信し、第１反復サイクルの間に前記データパケットのヘッダから第１ヘッダ部分を生成するパケットヘッダオフセットユニットと、３値連想メモリ（ＴＣＡＭ）と、メモリとを有し、ＩＰＡＣは、第１反復サイクルの間に、第１ヘッダ部分を使用してＴＣＡＭにおける第１参照を実行し、第１参照に応じて第１メモリアドレスを生成し、ＩＰＡＣは、第１反復サイクルの間に、メモリ内の第１メモリアドレスからの第１コンテンツにアクセスするシステムオンチップを提供する。
【０００７】
データパケットを受信する段階と、データパケットのヘッダの第１ヘッダ部分を使用して、３値連想メモリ（ＴＣＡＭ）における第１参照を実行し、前記ＴＣＡＭの出力に基づいて第１コンテンツを生成する段階と、第２アドレスを生成するべく、データパケットのヘッダの第２ヘッダ部分及び第１コンテンツを使用して、ＴＣＡＭにおける第２参照を実行する段階とを備える方法を提供する。
【０００８】
以下の詳細な説明では、添付の図面を参照して説明が行われ、本開示の原理を例示するための実施形態の例が図面に示されている。なお、図面中の同様な参照番号は、同様な構成要素を指している。その他の実施形態を使用してもよく、本開示の範囲から逸脱することなく構造的又は論理的変更を行うことができる。したがって、以下の詳細な説明は、限定する意味で解釈されるべきではなく、本開示に係る実施形態の範囲は、添付の特許請求の範囲及びその均等物によって規定される。
【図面の簡単な説明】
【０００９】
【図１】本開示の一実施形態に係る、反復解析ツール及び分類エンジンを有するシステムオンチップを備えるパケット通信システムを概略的に示した図である。
【図２】本開示の一実施形態に係る、図１の反復解析ツール及び分類エンジンをより詳細に示した概略図である。
【図３】本開示の一実施形態に係る、図１の反復解析ツール及び分類エンジンをより詳細に示した概略図である。
【図４ａ】本開示の一実施形態に係る、第１解析分類サイクルの間の、図１〜図２の反復解析ツール及び分類エンジンの３値連想メモリへの入力の例を概略的に示した図である。
【図４ｂ】本開示の一実施形態に係る、第１解析分類サイクルを概略的に示した図である。
【図５ａ】本開示の一実施形態に係る、第２解析分類サイクルの間の、図１〜図３の反復解析ツール及び分類エンジンの３値連想メモリへの入力の例を概略的に示した図である。
【図５ｂ】本開示の一実施形態に係る、第２解析分類サイクルを概略的に示した図である。
【図６】本開示の一実施形態に係る、図１〜図３の反復解析ツール及び分類エンジンを動作させる方法の一例を描いた図である。
【発明を実施するための形態】
【００１０】
連想メモリ（associative memory）又は連想記憶装置としても知られるコンテント・アドレッサブル・メモリ（content-addressable memory：ＣＡＭ）は、一般的に、高速検索に使用されている。ＣＡＭは多くの場合、ユーザーがデータワードをＣＡＭに供給し、ＣＡＭがメモリ全体を検索して、ＣＡＭのどこかに、このデータワードが格納されていないかを確認する。データワードがＣＡＭ内で発見された場合（すなわち、データワードがヒットした場合）、ＣＡＭは、データワードに関する情報を返答する（例えば、データワードに関連付けられているアドレス、及び／又は、その他の適切な情報を返答する）。一例として、ＣＡＭが返答するアドレスが、メモリ（例えば、ランダムアクセスメモリ）のアドレスである場合を考える。２値連想メモリ（ＣＡＭ）は、全てが１及び０で構成されるサーチターム（検索語）を採用する。３値連想メモリ（ＴＣＡＭ）は、１及び０並びに第３の状態である"Ｘ"又は"ドントケア（Don't-Care）"ビットで構成されるサーチタームを採用する。"Ｘ"又は"ドントケア"ビットとは、実行される検索に無関係の値を有するビットのことである。
【００１１】
図１には、本開示の一実施形態に係る反復解析分類エンジン２０（以下、ＩＰＡＣ２０とも称される）を有するシステムオンチップ（ＳＯＣ）１４を備えるパケット通信システム１０が概略的に示されている。ＳＯＣ１４はまた、１以上のプロセッシングコア及びパケットプロセッサ１６を含む。一実施形態において、パケットプロセッサ１６は、イーサーネットスイッチ、ホームゲートウェイ、又は、その他のパケットプロセッシングデバイスのような、スイッチの一部である。しかしながら、本開示は、このような実装形態に限定されない。ＳＯＣ１４は、その他の構成要素を複数含む（例えば、通信バス、１以上の周辺機器、インターフェース等）が、例示を簡単にするために、図１には図示していない。
【００１２】
ＩＰＡＣ２０は、ネットワークコントローラ１２からデータパケットを受信し、受信したデータパケットを解析及び／又は分類する。図１には、一実施形態として、ネットワークコントローラ１２が、ＳＯＣとは別に示されているが、ネットワークコントローラ１２は、ＳＯＣ１４内に含まれていてもよい。また、図１には、１つのネットワークコントローラ１２のみが示されているが、一実施形態では、ＩＰＡＣ２０は、複数のネットワークコントローラからデータパケットを受信する。また、図１には示されていないが、一実施形態では、ＩＰＡＣ２０は、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサーネットポート、パケットプロセッサ１６等のその他のデバイスからもデータパケットを受信し、受信したデータパケットを解析及び／又は分類する。
【００１３】
一実施形態では、ＩＰＡＣ２０は、パケットプロセッサ、例えば、パケットプロセッサ１６内のネットワークスイッチ、ネットワークルータ、ホームゲートウェイ、その他のネットワーク接続性を有する好適なデバイス内に実装される。ネットワークコントローラ１２は、例えば、デバイス１２ａ、デバイス１２ｂ及び／又はデバイス１２ｃである複数のデバイスとデータパケットを送受信（例えば、送信及び／又は受信）する。一実施形態において、デバイス１２ａ、１２ｂ及び／又は１２ｃも、ネットワークデバイスであり、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサーネットポート、その他のネットワーク接続性を有する好適なデバイス等である。
【００１４】
一実施形態において、ＩＰＡＣ２０は、ネットワークコントローラ１２からデータパケットを受信するパケットヘッダオフセットユニット２４を含む。以下に詳細に説明するように、ＩＰＡＣ２０は、データパケットを解析及び／又は分類するべく、解析分類サイクルを複数回反復して実行する。パケットヘッダオフセットユニット２４は、１つ前の解析分類サイクル（第１解析分類サイクルを除く）で得られた解析及び分類結果を受信し、１つ前の解析分類サイクルから受信した解析分類結果に一部基づいて、現在の解析及び分類サイクルの間のデータパケットのヘッダからのヘッダ情報を出力する。例えば、異なる解析分類サイクルでは、パケットヘッダオフセットユニット２４は、異なる態様でデータパケットのヘッダをオフセットすることができ、それにより、ヘッダの異なる部分を出力することができる。
【００１５】
ＩＰＡＣ２０も、ＴＣＡＭ２８を含む。各解析分類サイクルにおいて、ＴＣＡＭ２８は、パケットヘッダオフセットユニット２４からの入力及びフィードバック４６ｃを受信し、受信した入力に基づいてＴＣＡＭ２８のデータベース検索を実行し、メモリアドレスを出力する。ＩＰＡＣ２０は、ＴＣＡＭ２８から出力（例えば、メモリアドレス）を受信し、フィードバック情報４６ａ及び分類情報４４ａ（以下、それぞれフィードバック４６ａ及び分類４４ａとも称される）を出力するためのメモリ３２を更に含む。一実施形態において、メモリ３２は、例えば、スタティックＲＡＭ（ＳＲＡＭ）のような、ランダムアクセスメモリ（ＲＡＭ）の好適な種類である、あらゆる好適なメモリであってもよい。
【００１６】
フィードバックプロセッシングユニット３６は、フィードバック４６ａを受信し、少なくとも一部フィードバック４６ａに基づいて、フィードバック情報４６ｂ及びフィードバック情報４６ｃ（以下、それぞれフィードバック４６ｂ及びフィードバック４６ｃとも称される）。以下でより詳細に説明される一実施形態において、フィードバック４６ａは、１以上の解析分類サイクルの解析及び分類結果と関連付けられる。フィードバックプロセッシングユニット３６は、フィードバック４６ａを処理して、フィードバック４６ｂ及び４６ｃを生成する。
【００１７】
第１解析分類サイクルの間に、パケットヘッダオフセットユニット２４は、ネットワークコントローラ１２から受信したデータパケットについて、このデータパケットのヘッダからの１バイト以上を選択的に出力する。１以上の次に続く解析分類サイクルの間に、パケットヘッダオフセットユニット２４は、ネットワークコントローラ１２から受信したデータパケットについて、少なくとも一部フィードバック４６ｂに基づいて、このデータパケットのヘッダからの１バイト以上を選択的に出力する。ＴＣＡＭ２８は、パケットヘッダオフセットユニット２４の出力及びフィードバック４６ｃを受信し（例えば、１以上の次に続く解析分類サイクルの間にフィードバック４６ｃを受信する）、対応する出力を生成する。
【００１８】
分類ユニット４０は、分類４４ａを受信して、分類４４ａに少なくとも一部基づいて、分類情報４４ｂ（分類４４ｂとも称される）を生成する。一実施形態において、分類４４ａは、ＩＰＡＣ２０が受信したデータパケット分類と関連付けられた情報を含み、分類ユニット４０は、分類４４ａを処理して、分類４４ｂを生成する。一実施形態において、分類４４ｂにより、ＩＰＡＣ２０が受信したデータパケットを分類する。例えば、分類４４ｂは、受信されたデータパケットの、種類、優先順位、宛先アドレス、キューアドレス等に関連する情報を含む。
【００１９】
ＩＰＡＣ２０は、ＩＰＡＣ２０がネットワークコントローラ１２から受信したデータパケットを反復して解析及び分類する。一例では、ＩＰＡＣ２０は、データパケットのヘッダ情報に少なくとも一部基づいて、ネットワークコントローラ１２から受信されたデータパケットに対して第１解析分類サイクルを実行する。そして、ＩＰＡＣ２０は、第１解析分類サイクルの実行に少なくとも一部基づいて、第１解析分類結果（例えば、フィードバック４６ａ及び分類４４ａを含む）を生成する。次いで、ＩＰＡＣ２０は、データパケットのヘッダ情報及び第１解析分類結果に少なくとも一部基づいて（例えば、フィードバック４６ａから生成されたフィードバック４６ｂ及びフィードバック４６ｃに少なくとも一部基づいて）、データパケットに対して第２解析分類サイクルを実行する。ＩＰＡＣ２０は、データパケットが、完全に解析及び／又は分類されるまで（例えば、データパケットの完全な解析分類結果が生成されるまで）、このようなオペレーションを継続する。
【００２０】
別の例では、ＩＰＡＣ２０は、ネットワークコントローラ１２からデータパケットを受信する。ＩＰＡＣ２０は、データパケットのヘッダの第１ヘッダ部分を使用して、ＴＣＡＭ２８において第１参照を実行し、第１アドレスを生成する。ＩＰＡＣ２０は、メモリ３２の第１アドレスからの第１コンテンツにアクセスする。そして、ＩＰＡＣ２０は、データパケットのヘッダの第２ヘッダ部分及び第１コンテンツを使用して、ＴＣＡＭ２８において第２参照を実行し、第２アドレスを生成する。ＩＰＡＣ２０は、データパケットが完全に解析及び分類されるまで、このようなオペレーションを継続する。
【００２１】
図２には、本開示の一実施形態に係る、図１のＩＰＡＣ２０の詳細が概略的に描かれている。具体的には、図２には、フィードバックプロセッシングユニット３６、パケットヘッダオフセットユニット２４、フィードバック４６ａ、フィードバック４６ｂ及びフィードバック４６ｃが詳細に描かれている。
【００２２】
図１及び図２に示すように、一実施形態において、フィードバック４６ｂは、参照（look-up：ＬＵ）完了信号１４６ｂ（以下、ＬＵ完了１４６ｂとも称される）、次のＬＵオフセットインデックス１４６ｃ、及び、オフセットテーブル書き込みアクセス１４６ｄを含む。フィードバック４６ｃはまた、付加情報１４８ｂ及びＬＵ  ＩＤ１４６ａを含み、これについても以下で詳細に説明する。
【００２３】
図１及び図２に示すように、パケットヘッダオフセットユニット２４は、オフセットテーブル２４ａ及びオフセットセレクタ２４ｂを含む。オフセットセレクタ２４ｂは、図２に示されるようにマルチプレクサを含む。一実施形態において、パケットヘッダオフセットユニット２４（例えば、オフセットセレクタ２４ｂ）は、データパケットＤＰ１を含む一連のデータパケットを、ネットワークコントローラ１２から受信する。データパケットＤＰ１は、ヘッダＨ１を含む。別の実施形態では、データパケットＤＰ１全体を受信する替わりに、パケットヘッダオフセットユニット２４は、データパケットＤＰ１のヘッダＨ１のみを受信する。
【００２４】
データパケットＤＰ１の解析分類は、ＩＰＡＣ２０により反復的な態様で実行される。例えば、データパケットＤＰ１の解析分類は、第１解析分類サイクル、第２解析分類サイクル等を使用して、データパケットＤＰ１が完全に解析及び分類されるまで実行される。
【００２５】
第１解析分類サイクルの間に、オフセットセレクタ２４ｂは、１以上のバイト（データパケットＤＰ１のヘッダＨ１からのヘッダ部分Ｈ１ａと称される）を出力する。一例では、オフセットセレクタ２４ｂは、データパケットＤＰ１のヘッダＨ１の最初の１２０バイトを受信し、ヘッダＨ１の最初の２４バイトをヘッダ部分Ｈ１ａとして選択及び出力する。ヘッダ部分Ｈ１ａにおける"１"は、ヘッダ部分Ｈ１ａがデータパケットＤＰ１と関連付けられていることを意味し、ヘッダ部分Ｈ１ａにおける"ａ"は、ヘッダ部分Ｈ１ａが、第１解析分類サイクルの間に出力されることを意味する。
【００２６】
一実施形態において、第１解析分類サイクルの間に、オフセットセレクタ２４ｂによって出力されるヘッダ部分Ｈ１ａは、オフセットテーブル２４ａの出力とは無関係である（例えば、フィードバック４６ｂとは無関係である）。また、第１解析分類サイクルの間、フィードバック４６ｂの１以上のビットは、意味のある情報を含まない（第１解析分類サイクルの間は、フィードバック４６ｂの１以上のビットは、データパケットＤＰ１の前の解析分類サイクルから生成されていないため）。一方、次に続く解析分類サイクルでは、オフセットセレクタ２４ｂの出力は、１つ前の解析分類サイクルからのフィードバック４６ｂに基づくオフセットテーブル２４ａの出力に少なくとも一部基づく。例えば、第２解析分類サイクルの間に、オフセットセレクタ２４ｂによって出力されたヘッダ部分Ｈ１ｂは、第１解析分類サイクルからのフィードバック４６ｂに少なくとも一部基づく。
【００２７】
ある実施形態では、第１解析分類サイクルの間に、ＴＣＡＭ２８は、ヘッダ部分Ｈ１ａ、すなわち、オフセットセレクタ２４ｂの出力を受信する。図１には描かれていないが（図２に描かれている）、ＴＣＡＭ２８はまた、ポートＩＤ情報２１６ｂ（以下ポートＩＤ２１６ｂとも称される）を、例えば、システム１０の適切な構成要素から（例えば、ネットワークコントローラ１２）から受信する。ポートＩＤ２１６ｂは、データパケットＤＰ１と関連付けられたポートのＩＤを含む（例えば、データパケットＤＰ１が入力されるポートのＩＤ、データパケットＤＰ１が受信されるポートのＩＤ等）。
【００２８】
先に説明したように、ＴＣＡＭ２８はまた、フィードバック４６ｃを受信する（すなわち、付加情報１４８ｂ及びＬＵ  ＩＤ１４６ａ）。ただし、第１解析分類サイクルの間は、フィードバック４６ｂの１以上のビットは、意味のある情報を含まない（第１解析分類サイクルの間は、フィードバック４６ｂの１以上のビットは、データパケットＤＰ１の前の解析分類サイクルから生成されていないため）。したがって、第１解析分類サイクルの間は、フィードバック４６ｃのこれらのビットは、ドントケアビット（例えば、ビットＸ）としてＴＣＡＭ２８に扱われる（例えば、ＴＣＡＭ２８は、現在のサイクルが第１解析分類サイクルであることを示す情報を受信及び／又は生成し、それに基づいて、ＴＣＡＭ２８は、フィードバック４６ｃのビットをドントケアビットとして扱う）。
【００２９】
第１解析分類サイクルの間に、ヘッダ部分Ｈ１ａ及びポートＩＤ２１６ｂ（フィードバック４６ｃのドントケアビットを含むフィードバック４６ｃの複数のビットと共に）の少なくとも一部に基づいて、ＴＣＡＭ２８は、ＴＣＡＭ２８のコンテンツにおける参照を実行する。例えば、ＴＣＡＭ２８は、受信されたデータと、ＴＣＡＭ２８に格納されているデータとを比較する。一致する情報が存在する場合には（すなわち、第１解析分類サイクルがＴＣＡＭヒットである）、対応する情報がＴＣＡＭ２８によってメモリ３２へと出力される。一実施形態において、ＴＣＡＭ２８は、第１解析分類サイクルの間のＴＣＡＭヒットに基づいて、対応するアドレスＡ１ａを出力する。アドレスＡ１ａにおける"１"は、アドレスＡ１ａがデータパケットＤＰ１と関連付けられていることを意味し、アドレスＡ１ａにおける"ａ"は、アドレスＡ１ａが、第１解析分類サイクルと関連付けられていることを意味する。
【００３０】
一実施形態において、アドレスＡ１ａは、メモリ３２のアドレスである。第１解析分類サイクルの間のＴＣＡＭ２８の参照の後に、メモリ３２は、アドレスＡ１ａに格納されているデータを出力する。例えば、メモリ３２は、フィードバック４６ａ及び分類４４ａを出力する。一実施形態において、図２に示すように、フィードバック４６ａは、ＬＵ  ＩＤ１４６ａ、ＬＵ完了１４６ｂ、次のＬＵオフセットインデックス１４６ｃ、オフセットテーブル書き込みアクセス１４６ｄ、及び／又は、付加情報１４８ａを含む。
【００３１】
図２には、フィードバックプロセッシングユニット３６が、ＬＵ完了１４６ｂ、次のＬＵオフセットインデックス１４６ｃ、オフセットテーブル書き込みアクセス１４６ｄ及びＬＵ  ＩＤ１４６ａを受信及び再送する様子が描かれている。例えば、一実施形態において、ＬＵ完了１４６ｂ、次のＬＵオフセットインデックス１４６ｃ、オフセットテーブル書き込みアクセス１４６ｄ及びＬＵ  ＩＤ１４６ａは、フィードバックプロセッシングユニット３６によって受信され、これら信号を更に処理することなく、対応する宛先にそれぞれ送信される。一実施形態では、ＬＵ完了１４６ｂ、オフセットテーブル書き込みアクセス１４６ｄ及び次のＬＵオフセットインデックス１４６ｃは、フィードバックプロセッシングユニット３６をバイパスして、メモリ３２からパケットヘッダオフセットユニット２４へと送信されてもよい。同様に、一実施形態では、ＬＵ  ＩＤ１４６ａは、フィードバックプロセッシングユニット３６をバイパスして、メモリ３２からＴＣＡＭ２８へと送信されてもよい。
【００３２】
フィードバックプロセッシングユニット３６は、付加情報１４８ａを受信及び処理する。一例では、付加情報１４８ａは１４ビット信号であり、フィードバックプロセッシングユニット３６は、付加情報１４８ａの１以上のビットを付加情報１４８ｂとして出力するマルチプレクサ（ビット毎セレクタ１４８ｃとして図示されている）を含む。フィードバックプロセッシングユニット３６によって実行される多重化オペレーションは、例えば、付加情報１４８ａの１以上のビット及び／又は付加情報１４８ｂの１以上のビットに基づく。図２に示されるフィードバックプロセッシングユニット３６は、一例に過ぎず、例えば、ＩＰＡＣ２０のアプリケーション、ＩＰＡＣ２０が受信するデータパケットの性質等に少なくとも一部基づいて構成することができる。
【００３３】
第１解析分類サイクルの間に、メモリ３２も分類４４ａを出力する。上述したように、ＩＰＡＣ２０は、データパケットＤＰ１を解析及び分類するために、１以上の解析分類サイクルを実行する。一実施形態において、分類プロセッシングユニット４０は、分類４４ａを使用して、データパケットＤＰ１に対する最後の解析分類サイクルの間にのみ、分類４４ｂを出力する。例えば、図２には示されていないが、分類プロセッシングユニット４０は、現在の解析分類サイクルがデータパケットに対する最後の解析分類サイクルであることを示す情報を（例えば、フィードバック４６ａ、分類４４ａ及び／又はその他の好適な態様で）受信して、分類プロセッシングユニット４０は、この情報に基づいて、現在の解析分類サイクルの間に分類４４ｂを出力する。例えば、データパケットＤＰ１に対して、３つの解析分類サイクルが使用される場合、分類プロセッシングユニット４０は、３番目の解析分類サイクルの間にメモリ３２によって出力される分類４４ａを使用して、分類４４ｂを出力する。別の実施形態では、解析分類サイクルそれぞれの後に、分類４４ｂが更新される。更なる別の実施形態では、分類４４ｂと関連付けられた信号の一部は、解析分類サイクルそれぞれの後に更新されると同時に、分類４４ｂと関連付けられた残りの信号は、データパケットＤＰ１に対する最後の解析分類サイクルの間にのみ、更新される。
【００３４】
一実施形態において、１ビット信号であってもよいＬＵ完了１４６ｂ（この生成については以下に詳細に説明する）は、データパケットＤＰ１を解析及び／又は分類するのに更なる解析分類サイクルが必要かを示す。したがって、ＬＵ完了１４６ｂは、解析分類完了フラグとして機能する。ＬＵ完了１４６ｂのＬｏｗ値は、例えば、解析オペレーションが未完了であり更なる解析分類サイクルが必要であることを示す。ＬＵ完了１４６ｂのＨｉｇｈ値は、解析オペレーションが完了したことを示す。例えば、第１解析分類サイクルの終了時点で、ＬＵ完了１４６ｂがＬｏｗである場合（すなわち、ＬＵ完了１４６ｂが、データパケットＤＰ１の解析及び／又は分類オペレーションが未完了であることを示している場合）には、ＩＰＡＣ２０は、データパケットＤＰ１に対する第２解析分類サイクルを開始する。同様に、第２解析分類サイクルの終了時点で、ＬＵ完了１４６ｂがＨｉｇｈである場合（すなわち、ＬＵ完了１４６ｂが、データパケットＤＰ１の解析及び／又は分類オペレーションが完了したことを示している場合）には、ＩＰＡＣ２０は、データパケットＤＰ１に対する更なる解析分類サイクルを実行しない。
【００３５】
一実施形態において、現在の解析分類サイクルの次のＬＵオフセットインデックス１４６ｃ及びオフセットテーブル書き込みアクセス１４６は、データパケットＤＰ１のヘッダのオフセットと関連付けられて、次の解析分類サイクルにおいてパケットヘッダオフセットユニット２４によって選択される。例えば、上記したように、第１解析分類サイクルの間に、ヘッダ部分Ｈ１ａは、データパケットＤＰ１のヘッダＨ１の最初の２４バイトを含む。第２解析分類サイクルの間に、パケットヘッダオフセットユニット２４は、データパケットＤＰ１のヘッダＨ１からのヘッダ部分Ｈ１ｂを選択及び出力する。しかしながら、ヘッダＨ１の最初の２４バイトが含まれたヘッダ部分Ｈ１ａとは異なり、ヘッダ部分Ｈ１ｂは、例えば、次のＬＵオフセットインデックス１４６ｃ及び第１解析分類サイクルのオフセットテーブル書き込みアクセス１４６に少なくとも一部基づいて、ヘッダＨ１のその他のバイトを含むことができる。一実施形態において、ヘッダ部分Ｈ１ｂは、例えば、次のＬＵオフセットインデックス１４６ｃ及び第１解析分類サイクルのオフセットテーブル書き込みアクセス１４６に少なくとも一部基づいて、ヘッダＨ１のバイト番号１２から開始する１４バイトを含む。
【００３６】
一実施形態において、解析分類サイクルのＬＵ  ＩＤ１４６は、次の解析分類サイクルの参照ＩＤと関連付けられる。例えば、第１解析分類サイクルのＬＵ  ＩＤ１４６ａは、第２解析分類サイクルの参照ＩＤと関連付けられる。第２解析分類サイクルの参照ＩＤは、例えば、第２解析分類サイクルの間に検索される（参照される）ＴＣＡＭ２８の論理的エリアを特定する。一例では、第２解析分類サイクルが、データパケットＤＰ１の優先順位とＴＣＡＭ２８のエントリとの一致と関連付けられている場合には、第１解析分類サイクルのＬＵ  ＩＤ１４６ａは、データパケットＤＰ１の優先順位と関連付けられたデータバイトを含む。
【００３７】
現在の解析分類サイクルの間に出力される付加情報１４８ｂは、次の解析分類サイクルにおけるＴＣＡＭ参照で使用される付加情報と関連付けられる。例えば、第１解析分類サイクルの間に出力される付加情報１４８ｂは、第２解析分類サイクルにおけるＴＣＡＭ参照で使用される付加情報と関連付けられる。一実施形態において、付加情報１４８ｂは、１つの解析分類サイクルから次の解析分類サイクルへと渡されるあらゆる関連情報を含む。例えば、付加情報１４８ｂは、現在の解析分類サイクルの間に知り得た次の解析分類サイクルの間に関連する情報を含む。付加情報１４８ｂフィールドは、例えば、データパケットＤＰ１の種類及び構造、ＩＰＡＣ２０のアプリケーション領域等に基づく。
【００３８】
図３には、本開示の一実施形態に係る、図１のＩＰＡＣ２０の詳細が概略的に描かれている。具体的には、図３には、分類プロセッシングユニット４０、分類４４ａ及び分類４４ｂがより詳細に描かれている。
【００３９】
上記したように、一実施形態において、分類プロセッシングユニット４０は、分類４４ａを使用して、データパケットＤＰ１に対する最後の解析分類サイクルの間にのみ、分類４４ｂを出力する。例えば、データパケットＤＰ１に対して、３つの解析分類サイクルが使用される場合、分類プロセッシングユニット４０は、３番目の解析分類サイクルの間にメモリ３２によって出力される分類４４ａを使用して、分類４４ｂを出力する。別の実施形態では、解析分類サイクルそれぞれの後に、分類４４ｂが更新される。更なる別の実施形態では、分類４４ｂと関連付けられた信号の一部は、解析分類サイクルそれぞれの後に更新されると同時に、分類４４ｂと関連付けられた残りの信号は、データパケットＤＰ１に対する最後の解析分類サイクルの間にのみ、更新される。
【００４０】
一実施形態において、分類４４ａは、キュー情報３２０ａ、結果情報３２４ａ、及び／又は、フローＩＤ情報３２８ａを含む。
【００４１】
分類プロセッシングユニット４０は、キュー情報３２０ａを処理してキュー結果３２０ｃを出力するキュープロセッシングユニット３２０ｂ、結果情報３２４ａを処理して結果情報３２４ｃを出力する結果情報ユニット３２４ｂ、及び、フローＩＤ情報３２８ａを処理してフローＩＤ情報３２８ｃを出力するフローＩＤユニット３２８ｂを含む。
【００４２】
上述したように、分類４４ｂは、ＩＰＡＣ２０が受信したデータパケットＤＰ１を分類する。例えば、キュー結果３２０ｃは、データパケットＤＰ１に関するキュー情報（例えば、データパケットＤＰ１が元々属するキュー、データパケットＤＰ１の宛先キュー、データパケットＤＰ１の優先順位等）を含む。結果情報３２４ｃは、例えば、データパケットＤＰ１に関するデータパケットＤＰ１の種類（例えば、データパケットＤＰ１に関するプロトコル（ＩＰバージョン４（ＩＰｖ４）、ＩＰｖ６等）、データパケットＤＰ１を修正する修正コマンド等のコマンド）、及び／又は、データパケットＤＰ１に関するその他の関連情報を含む。フローＩＤ情報３２８ｃは、例えば、データパケットＤＰ１のフローと関連付けられた情報を含む。例えば、フローＩＤ情報３２８ｃは、データパケットＤＰ１に関するフローＩＤナンバー、ルーティング情報、ポインタ情報、フロークッキー情報等を含む。
【００４３】
分類４４ｂのキュー結果３２０ｃ、結果情報３２４ｃ及びフローＩＤ情報３２８ｃは一例に過ぎず、別の実施形態では、分類４４ｂは、データパケットＤＰ１のその他の如何なる関連情報を含んでもよい。
【００４４】
図４ａには、本開示の一実施形態に係る、第１解析分類サイクルの間のＴＣＡＭ２８への入力４００ａの例が概略的に示されている。図１〜図３のヘッダ部分Ｈ１ａは、入力４００ａの一部分を形成しており、図１〜図３のフィードバック４６ｃは、入力４００ａの別の部分を形成している。入力４００ａにおけるフィールド値及び関連する値は、一例に過ぎず、本開示の教示するところを何ら限定するものではない。
【００４５】
上記したように、フィードバック４６ｃは、ＬＵ  ＩＤ１４６ａを含む。第１解析分類サイクルの間に、ＬＵ  ＩＤ１４６ａは、図４ａに示すように、初期値の０である。更に、フィードバック４６ｃは、付加バイト（例えば、付加情報１４８ｂ）を含み、図４ａの入力４００ａの例では、ドントケア状態ｘに設定されている。図４ａの例におけるヘッダ部分Ｈ１ａは、データパケットＤＰ１のイーサーネット種類（０ｘ８１００に等しい）、優先順位ビット（０ｘ１に等しい）、及び、付加されるドントケアビットを含むその他の複数のフィールドを含む。
【００４６】
図４ｂは、本開示の一実施形態に係る、第１解析分類サイクルを概略的に示した図である。図４ｂの第１解析分類サイクルにおいて、図４ａの入力４００ａが、ＴＣＡＭ２８への入力として使用されている。
【００４７】
図４ｂには、複数のエントリ例を含め、ＴＣＡＭ２８が示されている。例えば、ＴＣＡＭエントリ番号８は、ＬＵ  ＩＤの０、イーサーネット種類０ｘ８１００、及び、ｘｘｘと表記されている複数のその他のフィールド（例えば、優先ビットフィールド）を含む。別の例として、ＴＣＡＭエントリ番号１２は、ＬＵ  ＩＤの１、及び、ｘｘｘと表記されている複数のその他のフィールド（例えば、優先ビットフィールド）を含む。図４ｂには、その他のＴＣＡＭエントリの例も示されている。図４ｂにおいて、複数のＴＣＡＭフィールドは、ｘｘｘを含むように描かれているが、これらフィールドは実際には０又は１を含むが、図示を明瞭にし、本開示の教示を不明瞭にしない目的から、図４ｂには示されていない。一実施形態において、ｘｘｘフィールドの少なくとも一部は、ＴＣＡＭ２８に対するドントケアビットである。第１解析分類サイクルの間に、ＬＵ  ＩＤ１４６ａは、ＬＵ  ＩＤフィールドが"１"の値を有するＴＣＡＭ２８のデータベースの一部分をマスクし、第１解析分類サイクルの間のＴＣＡＭ検索は、ＬＵ  ＩＤ１４６でマスクされていないＴＣＡＭ２８の部分でのみ実行される。
【００４８】
図４ｂには、複数のエントリ例を含めたメモリ３２が示されている。例えば、メモリアドレスＡ１に対応するエントリの一例は、ＬＵ  ＩＤの１及びＬＵ完了の０を含む。一実施形態において、アドレスＡ１は、複数のその他のフィールドを含むが、これらのフィールドについては、簡略化のために図示されていない。メモリアドレスＡ１５の一例に対応する別のエントリ例には、ＬＵ完了の１、キュー情報（例えば、図３のキュー情報３２０ａ）の０ｘ０、結果情報（図２の結果情報３２４ａ）の０ｘ１、及び、フローＩＤ情報（例えば、図２のフローＩＤ情報３２８ａ）の０ｘ１０が含まれる。メモリアドレスの例Ａ１６及びＡ２２に対応するその他の幾つかのエントリ例が、図４ｂに描かれている。
【００４９】
図４ａ及び図４ｂに示すように、第１解析分類サイクルの間に、入力４００ａとＴＣＡＭエントリ８とのマッチングが行われる。図４ｂにおいて、ＴＣＡＭエントリ８は、灰色の影で示されており、これは、入力４００ａとの一致を表す。したがって、入力４００ａがＴＣＡＭヒットであり、ＴＣＡＭ２８は、ＴＣＡＭエントリ８と関連付けられた情報を出力する。例えば、ＴＣＡＭ２８は、ＴＣＡＭエントリ８と関連付けられているアドレスＡ１ａを出力する。
【００５０】
一実施形態において、アドレスＡ１ａは、メモリ３２のアドレスである。例えば、アドレスＡ１ａは、メモリ３２のアドレスＡ１と一致する。したがって、アドレスＡ１ａの受信に基づいて、第１解析分類サイクルの間に、メモリ３２は、アドレスＡ１に格納されているコンテンツを出力する。アドレスＡ１に格納されているメモリ３２のコンテンツは、図４ｂでは、灰色の影で示されており、メモリ３２がこのアドレスのコンテンツを出力することを示している。例えば、メモリ３２は、ＬＵ  ＩＤ１４６ａ及びＬＵ完了１４６ｂに対応する値"１"及び"０"を出力する。ＬＵ完了１４６ｂに対応する値"０"は、第１解析分類サイクルが、データパケットＤＰ１の最後の第１解析分類サイクルではないことを示しており、データパケットＤＰ１を解析及び／又は分類するのに、少なくとも１つの別の解析分類サイクルが必要であることを意味している。ＬＵ  ＩＤ１４６ａに対応する値"１"は、第２解析分類サイクルに対する参照ＩＤを表す。
【００５１】
図５ａには、本開示の一実施形態に係る、第２解析分類サイクルの間のＴＣＡＭ２８への入力５００ａの例が概略的に示されている。ヘッダ部分Ｈ１ｂは、入力５００ａの一部を形成し、第１解析分類サイクルからのフィードバック４６ｃは、入力５００ａの別の部分を形成する。
【００５２】
上記したように、第１解析分類サイクルの間に、メモリ３２は、図４ｂに示すように、ＬＵ  ＩＤ１４６ａの１を出力する。そして、入力５００ａにおけるＬＵ  ＩＤは、１である。図５ａにおけるヘッダ部分Ｈ１ｂは、図４ａにおけるヘッダ部分Ｈ１ａと同様に描かれている。しかしながら、別の実施形態では、ヘッダ部分Ｈ１ｂは、第１解析分類サイクルの間に、メモリ３２及び／又はフィードバックプロセッシングユニット３６によって出力されたフィードバック４６ｂに少なくとも部分的に基づいて、図４ａにおけるヘッダ部分Ｈ１ａと異なってもよい。
【００５３】
図５ｂは、本開示の一実施形態に係る、第２解析分類サイクルを概略的に示した図である。図５ｂの第２解析分類サイクルにおいて、図５ａの入力５００ａが、ＴＣＡＭ２８への入力として使用されている。図５ｂにおけるＴＣＡＭ２８及びメモリ３２のエントリは、図４ｂと同様なものである。例えば、図４ｂと同様に、図５ｂには、ＴＣＡＭ２８のエントリ例８、１２、１３及び１９、並びに、メモリ３２におけるアドレスＡ１ａ、Ａ１５、Ａ１６及びＡ２２に対応するエントリ例が示されている。
【００５４】
図５ａ及び図５ｂに示すように、第２解析分類サイクルの間に、入力５００ａとＴＣＡＭエントリ１２とのマッチングが行われる。図５ｂにおいて、ＴＣＡＭエントリ１２は、灰色の影で示されており、これは、入力５００ａとの一致を表す。したがって、入力５００ａがＴＣＡＭヒットであり、ＴＣＡＭ２８は、ＴＣＡＭエントリ１２と関連付けられた情報を第２解析分類サイクルの間に出力する。例えば、ＴＣＡＭ２８は、ＴＣＡＭエントリ１２と関連付けられているアドレスＡ１ｂを出力する。
【００５５】
一実施形態において、アドレスＡ１ｂは、メモリ３２のアドレスである。例えば、図５ｂにおいて、アドレスＡ１ｂは、メモリ３２のアドレスＡ１５と一致する。したがって、アドレスＡ１ｂの受信に基づいて、第２解析分類サイクルの間に、メモリ３２は、アドレスＡ１５に格納されているコンテンツを出力する。アドレスＡ１５に格納されているメモリ３２のコンテンツは、図５ｂでは、灰色の影で示されており、メモリ３２がこのアドレスのコンテンツを出力することを示している。例えば、メモリ３２は、ＬＵ完了１４６ｂ、キュー情報（例えば、図３のキュー情報３２０ａ）、結果情報（図２の結果情報３２４ａ）、及び、フローＩＤ情報（例えば、図２のフローＩＤ情報３２８ａ）にそれぞれ対応する、値"１"、０ｘ０、０ｘ１及び０ｘ１０を出力する。
【００５６】
ＬＵ完了１４６ｂに対応する値"１"は、第２解析分類サイクルが、データパケットＤＰ１の最後の第１解析分類サイクルであることを示しており、データパケットＤＰ１を解析及び／又は分類するのに、これ以上解析分類サイクルが必要でないことを意味している。したがって、第２分類サイクルの間に、分類プロセッシングユニット４０は、メモリ３２から受信したキュー情報、結果情報及びフローＩＤ情報に一部基づいて、分類４４ｂを出力する。
【００５７】
図４ａ、図４ｂ、図５ａ及び図５ｂでは、２つの解析分類サイクルのみを使用してデータパケットＤＰ１の解析及び分類が例示されていたが、一実施形態では、データパケットＤＰ１の解析分類に、より多い数（例えば、３又は８以上）の解析分類サイクルを使用してもよい。
【００５８】
一実施形態において、ＴＣＡＭ２８における実際のエントリは、様々な反復解析分類サイクルの個々のサイクルについて同様である（例えば、第１及び第２分類解析サイクルにおいて同様である）。しかしながら、現在の解析分類サイクルにおけるＴＣＡＭ２８内の複数のラインの一部をマスクするのにフィードバック４６ｃが使用されるため、現在の解析分類サイクルにおいて使用されるＴＣＡＭ２８の有効な部分は限定されており、１つ前の解析分類サイクルから得られる知識に基づいている。単純な例として、第２解析分類サイクルにおいてＬＵ  ＩＤ１４６ａが"１"である場合、第２解析分類サイクルの間にＴＣＡＭエントリの大部分（例えば、ＬＵ  ＩＤフィールドが０のエントリ）がマスクされる（すなわち、検索されない）。このように、１つ前のサイクルから受信されたフィードバック４６ｃに基づいて、フィードバック４６ｃは、現在のサイクルにおいて検索されるＴＣＡＭ２８のエリアを効果的に低減させる。したがって、ＴＣＡＭ２８における検索有効エリアは、解析分類サイクル毎に変化する。例えば、ＴＣＡＭ２８は、多数のエントリを含む大きなテーブルであってもよい。しかしながら、上述したように、各解析分類サイクルの間に、フィードバック４６ｃは、ＴＣＡＭエントリの多数をマスクする（すなわち、これらのエントリは検索されない）。ＴＣＡＭエントリのうちフィードバック４６ｃによってマスクされていない一部分のみが、パケットヘッダオフセットユニット２４の出力について検索される（すなわち、ヘッダ部分Ｈ１ａ、Ｈ１ｂ等について検索される）。
【００５９】
したがって、解析分類サイクルのそれぞれにおいて、フィードバック４６ｂは、ヘッダ部分Ｈ１ａ、Ｈ１ｂ等の選択を簡易にすることにより、（ＴＣＡＭ２８において検索される）探索キーを精度の高いものにする。一方、解析分類サイクルのそれぞれにおいて、フィードバック４６ｃ、ＴＣＡＭエントリの一部をマスクすることによりＴＣＡＭ２８のデータベースの範囲を縮めて、ＴＣＡＭの低減された有効なデータベースにおいて検索が実行されることを可能にする。
【００６０】
様々な実施形態において、図には示していないが、実際のＴＣＡＭエントリも、様々な解析分類サイクル間で異なる。
【００６１】
一実施形態において、ＴＣＡＭ２８及び／又はメモリ３２のコンテンツは、例えば、ＳＯＣ１４のアプリケーション領域、ＩＰＡＣ２０によって扱われるデータパケットの種類等に少なくとも一部基づいて、動的に及び／又は周期的に更新される。このようにＴＣＡＭ２８及び／又はメモリ３２のコンテンツを更新することにより、ＩＰＡＣ２０のハードウェア構成を実質的に修正することなく、ＩＰＡＣ２０がデータパケットの複数の種類を解析及び分類できるようにしている。
【００６２】
本開示に開示されたように、データパケットの反復解析分類は、幾つかの有益な効果を有する。例えば、解析分類サイクルそれぞれの間に、データパケットのヘッダ部分に対応するフィールドと、ＴＣＡＭ２８における様々なフィールドとのマッチングが行われる。また、解析分類サイクルそれぞれの間に、ＴＣＡＭ２８の個々の論理エリアを参照することができる。一実施形態において、反復解析分類オペレーションにより、ＴＣＡＭ２８のサイズは、従来の解析分類エンジンで使用されるＴＣＡＭと比較して小さくなる。一実施形態において、反復解析分類オペレーションにより（例えば、相対的に小さなサイズのＴＣＡＭを使用することにより）、本開示に開示された解析分類オペレーションは、従来の解析分類オペレーションと比較して相対的に速くなる。更に、ＩＰＡＣ２０は、完全にプログラム可能及び設定可能であるので、（例えば、ＴＣＡＭ２８及び／又はメモリ３２をプログラムすることにより）所望の分類データをＩＰＡＣ２０から出力させることができる。更に、ＩＰＡＣ２０は、（例えば、ＴＣＡＭ２８及び／又はメモリ３２をプログラムすることにより）ＩＰＡＣ２０の解析オペレーションと分類オペレーションとの間の柔軟な区分を提供する。また、ＩＰＡＣ２０は、ＳＯＣ１４のプロセッシングコアのリソースを最低限のみ利用する又は全く利用しないので、ＳＯＣ１４のその他のオペレーションのためにプロセッシングコアのリソースを残すことができる。
【００６３】
図６には、本開示の一実施形態に係る図１〜３のＩＰＡＣ２０を動作させる方法６００の一例が示されている。方法６００によれば、段階６０４において、（例えば、パケットヘッダオフセットユニット２４によりネットワークコントローラ１２から）データパケットＤＰ１を受信する。
【００６４】
６０８では、ＩＰＡＣ２０は、データパケットＤＰ１に対して、解析分類サイクル（例えば、第１解析分類サイクル）を実行する。例えば、パケットヘッダオフセットユニット２４は、第１解析分類サイクルの間に、データパケットの第１ヘッダ部分Ｈ１ａを生成し、それに基づいて、ＩＰＡＣ２０は、ＴＣＡＭ２８において第１参照を実行する。一実施形態において、第１参照は、データパケットの元のポートアドレス（例えば、ポートＩＤ２１６）に基づく。第１アドレスＡ１ａは、第１参照の実行に少なくとも一部基づいて生成される。
【００６５】
６１２において、ＩＰＡＣ２０は、解析分類サイクルに基づいて（例えば、メモリ３２の第１アドレスＡ１ａからのフィードバック４６ａ及び分類４４ａを含む第１コンテンツへのアクセスに基づいて）、解析及び分類結果（例えば、フィードバック４６ｂ、フィードバック４６ｃ及び分類４４ｂを含む第１解析分類結果）を生成する。
【００６６】
６１６において、ＩＰＡＣ２０は、更なる解析分類サイクルが必要であるかを判断する。第１解析分類結果は、解析分類完了フラグ（すなわち、ＬＵ完了１４６ｂ）を含む。例えば、解析分類完了フラグがｌｏｗである場合には、６１６において、更なる解析分類サイクルが必要であると判断される。一方、６１６において、解析分類完了フラグがＨｉｇｈである場合には、更なる解析分類サイクルは必要ないと判断される。
【００６７】
データパケットの解析分類に更なる解析分類サイクルが必要ない場合、６２０において、分類ユニット４０により分類４４ｂが第１解析分類サイクルから出力される。６２４において、分類４４ｂを出力した後、受信されたデータパケットＤＰ１の解析及び分類が終了する。
【００６８】
６２８において、更なる解析分類サイクルが必要な場合は、（６１２において生成された）第１解析分類結果が、次の（例えば、第２）解析分類サイクルに対して使用される。ブロック６０８、６１２、６１６及び６２８のオペレーションは、６２０において、更なる解析分類サイクルが必要ないと判断されるまで繰り替えされる。
【００６９】
特定の実施形態が例示及び説明されたが、当業者であれば、本開示の範囲内において、図示及び説明された実施形態に替えて様々な代替及び均等物の実装形態を採用可能であることは理解できる。本開示は、添付の特許請求の範囲の文言又は均等論の適用される範囲内であると判断される全ての方法、装置及び物品を範囲としている。本願は、明細書に記載された実施形態の採用及び変形例も範囲に含むことを意図している。したがって、本開示は、特許請求の範囲及びその均等物によってのみ限定されることを意図している。
【図１】
2013511223.tif 000003
【図２】
2013511223.tif 000004
【図３】
2013511223.tif 000005
【図４ａ】
2013511223.tif 000006
【図４ｂ】
2013511223.tif 000007
【図５ａ】
2013511223.tif 000008
【図５ｂ】
2013511223.tif 000009
【図６】
2013511223.tif 000010
【国際調査報告】
2013511223.tif 000011
2013511223.tif 000012
2013511223.tif 000013