本発明の実施形態は、同じ参照符号が同様の要素を示す添付図面の図において例示として示され、限定として示されるものではない。本開示における「ある」又は「1つの」実施形態への言及は、必ずしも同じ実施形態である必要はなく、これらの言及は少なくとも1つを意味する点に留意されたい。
図1は、ネットワークデバイス100のブロック図である。ネットワークデバイス100は、イーサネットトークンリング、又は類似のネットワークのような物理層109に接続されたフレーマデバイス101を含む。フレーマ101は、物理層接続109を介してフレームを送受信することができる。フレーマ101は、セキュリティプロセッサ103に直接接続される。セキュリティプロセッサ103は、フレーマ101からパケットを受信してこれを調べ、該パケットがネットワークプロセッサ105に渡される前に復号を必要とする暗号化データを含むかどうかを判定する。セキュリティプロセッサ103は、メモリデバイス107のセットに接続される。メモリデバイス107は、パケットの処理に関するオペレーションを実行し且つパケットの処理に関係するデータを記憶するワーキングメモリとして機能することができる。
ネットワークプロセッサ105は、フレーマ101からの着信パケットを調べて転送する必要があるかどうかを判定し、更にコンピュータシステム又はスイッチファブリックからフレーマ101と物理接続109を介してアウトバンドされるパケットを受信する。ネットワークプロセッサ105は、バス111又は類似の通信媒体を介してネットワークデバイスのスイッチファブリックに接続することができる。別の実施形態において、ネットワークプロセッサは、コンピュータシステム又は類似のシステムの一部とすることができる。
インバウンドパケットは、フレーマ101からセキュリティプロセッサ103に流れ込む。セキュリティプロセッサ103は、必要な場合にパケットを復号し、該パケットをネットワークプロセッサ105に転送する。アウトバウンドパケットは、ネットワークプロセッサ105から、パケットを暗号化するセキュリティプロセッサ103に流れることが多い。次いで、セキュリティプロセッサ103は、暗号化されたパケットをフレーマ101に転送し、物理層109を介して送信する。
1つの実施形態において、セキュリティプロセッサ103は、フレーマ101とネットワークプロセッサ105とのマルチポートSPIインターフェースを扱うことができる。別の実施形態において、セキュリティプロセッサは、PCI、PCI−Express、又は類似のシステムのような他のバス又は入力機構からの入力を受信することができる。セキュリティプロセッサ103は、IPv4とIPv6のESP/AHや、UDP−エンキャプスレートESP、トンネリング、トランスポートを含むIPv4及びIPv6変換を実行できる。セキュリティプロセッサ103は、IPsec例外検出を実行でき、セキュリティプロセッサ103でのトラフィックと処理の統計を累算することができる。セキュリティプロセッサ103は、半二重通信方式又は全二重通信方式で用いることができる。1つの実施形態において、別のネットワークプロセッサが、例えば非同期転送モード(ATM)装置によるセグメンテーションと再組立て(SAR)を行うために、セキュリティプロセッサ103とフレーマ101の間に配置される。
IPsecトラフィックを扱う場合、セキュリティプロセッサ103は、2つの発信元のいずれか1つからの完全なセキュリティアソシエーション(SA)情報、すなわち入力パケットの要求ヘッダを利用する。これは、完全なセキュリティアソシエーションコンテキストを直接、及び宛先が一致するIPsec復号でのインバウンドパケットのセキュリティパラメータインデックス(SPI)値から指定することができる。
図2Aは、セキュリティプロセッサ103によるパケットのトランスペアレント処理を示すブロック図である。1つの実施形態において、セキュリティプロセッサは、フレーマ101と残りのシステム250で「インライン」である。このシステムは、ネットワークデバイス、コンピュータシステム、又は類似のシステムとすることができる。フレーマ101とシステム250は、標準IPやIPsecパケットを送受信するよう構成されている。パケットA、Bは、フレーマ101及びネットワーク上の次の送信に向かうアウトバウンドパケットである。パケットC、Dは、フレーマ101によって受信されたインバウンドパケットであり、システム250に向けられる。
1つの実施形態において、セキュリティプロセッサ103は、インバウンドIPsecパケットを標準IPパケットに変換し、アウトバウンドIPパケットをIPsecパケットに変換する。別の実施形態において、セキュリティプロセッサは、IPsec−IP又はIP−IPsec変換が必要とされる構成要素間の通信のライン上のどの位置にも位置することができる。セキュリティプロセッサ103は、その変換プロセスがトランスペアレントであり、他のプロトコル層を終了させないので、「インライン」に位置付けることができる。従って、他のパケットデータは、変換プロセスによって破損されることはなく、パケットは、変換プロセスにおいていずれのアドレス指定又はメタデータ(例えばセグメント長)も失うことはない。
例えば、着信パケットA、Bは、ヘッダ(HDR)情報、IPsecセグメント、末尾データを含む。これらのパケットは、IPsecセグメントを標準IPに変換し、これらの宛先まで持続させるようにセキュリティプロセッサ103によって処理される。他のプロトコル層のヘッダと末尾データは終了されず、すなわち失われるか或いは除去される。逆に、プロトコル情報は維持され、必要な場合は、変換プロセス中の長さとコンテンツの変更に起因するパケット破損を防ぐために更新される。パケットA’、B’は、パケットA、BのIPsecセグメントから復号されたIPセグメントを含む。A’、B’のヘッダと末尾データは、他のプロトコル層を終了させることなくどのような必要な変更も反映するよう更新される。
同様に、パケットC、Dは、パケットC’、D’を生成するためにセキュリティプロセッサ103によって暗号化されるアウトバウンドIPパケットである。C’、D’は、パケットC、DのIPセグメントデータを暗号化するIPsecセグメントを含む。C’、D’は、各パケットのサイズとコンテンツの変更を反映するために修正することができるヘッダデータと末尾データを維持する。フレーマ101は、パケットが元々は標準IP形式であったという知識を必要とせずに、パケットC’、D’を送受信することができる。
図2Bは、ネットワーク経路の各端部においてフレーマ101と隣接するセキュリティプロセッサ103を有する例示的なネットワークシステムを示す。パケットAは、第1コンピュータシステム又はネットワークデバイスから第2システム又はネットワークデバイスへまで、ネットワーク、例えばイーサネットネットワーク、トークンリングネットワーク、又は類似のネットワークを介してネットワーク全体を移動するIPパケットである。1つの実施形態において、パケットAは、セキュリティプロセッサ103によってIPsecパケットA’に暗号化される。A’は、ネットワークを介して宛先システムのフレーマ101とセキュリティプロセッサまで移動し、オリジナルパケットAに復号される。パケットBは同様にパケットB’に変換され、安全な方法でネットワークを介して移動し、宛先マシンでパケットBに戻すよう変換される。この方法では、IPsecはトランスペアレントに実装することができ、すなわち、標準IPパケットでのみ各々が処理される元のすなわち宛先システムの知識又は介在を必要としない。
図2Cは、インライン構成で使用する例示的なセキュリティプロセッサ103のブロック図である。パケットは、セキュリティプロセッサ103によって物理接続部109から入力インターフェース201を通じて受信される。入力インターフェース201は、着信パケットデータを入力バッファマネージャ203に転送する。入力インターフェース201は、SPI、PCI、PCI−Express、又は類似のシステムを介してパケットを受信する。入力インターフェース201は、SPIエラー、仮想ポート、長さ情報のようなパケットや類似の情報に対して巡回冗長検査(CRC)データをチェックすることができる。1つの実施形態において、エラーが検出された場合、着信パケットはドロップされる。別の実施形態において、着信パケットは例外ポートに転送される。1つの実施形態において、入力インターフェース201は、32のSPI入力ポートをサポートすることができる。別の実施形態において、PCI、PCI Express、又は類似のシステムも入力インターフェース201がサポートすることができる。
入力バッファマネージャ203は、入力バッファ205に着信パケットを記憶する。1つの実施形態において、入力バッファ203マネージャは、着信パケットの一部をレベル2(L2)プロセッサ207に転送する。レベル2は、オペレーションシステム相互接続(OSI)モデルからデータリンク層プロトコルに照会する。別の実施形態において、入力バッファマネージャ203は、パケットを識別するポインタ又はタグをL2プロセッサ207に転送する。ポインタは、ヘッダ、末尾、末尾−1、ペイロード、パケットの類似セグメントへのポインタを含む。入力バッファマネージャ205は、入力バッファ203のフリースペースを管理する。入力バッファマネージャ205は、リンクされたリスト又は類似のデータ構造を使用して入力バッファ203を維持し、バッファ203のフリーブロックを追跡する。1つの実施形態において、ブロックサイズは256バイトである。
L2プロセッサ207は、着信パケットのヘッダ情報を構文解析する。L2プロセッサ207は、着信パケットが何らかのレベル2ヘッダ又はエンキャプスレーションを有するかどうかを判定する。L2プロセッサ207は、発見した何らかのレベル2情報と共に、レベル3(L3)プロセッサ209に受信したポインタを転送する。L3プロセッサ209は、パケットがインターネットプロトコル(IP)とインターネットプロトコルセキュリティ(IPsec)ヘッダ情報、或いはその内部のIPXのような他のOSIレベル3データ又はプロトコルを包含するかどうかを判定する。L3プロセッサ209はまた、TCP/UDPヘッダを構文解析し、次いで、後で使用するための関連情報を抽出し分類する。IPsecヘッダ情報又は他のIPsecデータがパケット内で検出されると、パケットに関係して蓄積された他のデータと共にこの情報は、パケット順序マネージャ(POM)211に転送される。IP又はIPsecデータを包含しないパケットは、POM211に転送されて適切な宛先ポートに送られる。また、L3プロセッサ209は、パケットのIPsecヘッダ情報からSAインデックスを抽出し、POM211に渡される。
L3プロセッサは、パケットの例外ケースをチェックする。L3入力プロセッサ209は、パケットを例外ポート又は類似のハンドリング機構のいずれかに渡すよう要求するオプションや類似のパケット異常によって、IPチェックサムエラー、不正形式パケット、IPv4、又はIPv6についてチェックする。また、L3入力プロセッサ209は、構成されたプロトコルヘッダ値又はUDPポートを特定の例外ポート又は実行ユニットグループのいずれかに一致させるパケットを転送することができる。L3プロセッサ209は、パケットデータを入力パケット完了順序でPOM211に送る。
L2プロセッサ207とL3プロセッサ209は、パケットを構文解析して、該パケットを実行ユニット215によって処理する必要があるか、或いは処理せずにセキュリティプロセッサ103を介して渡す必要があるかどうかを判定する。1つの実施形態において、L2プロセッサ207とL3プロセッサ209は、1サイクルにつきパケットヘッダ64ビットを処理することができる。1つの実施形態において、L2プロセッサ207とL3プロセッサは、層2、層3、層4のIPパケット情報を構文解析できる。別の実施形態において、L2、L3ヘッダの構文解析は、幾つかの専用ユニットに分配された単一のユニットで実行されるか、或いは実行ユニット215のような汎用プロセッサ又は汎用プロセッサのセットによって達成される。
POM211は、パケットデータの処理において相対的な順序を保持する。復号されることになるIPsecデータを包含する、L2プロセッサ207とL3プロセッサ209によって取得されるデータから識別されたパケットに関する情報は、文脈検索システム213に転送される。他のパケットは、出力インターフェース225に転送されて宛先ポート又は例外ポートに送られる。POM211は、パケットが待ち行列に並んでいるか或いは処理されているときのパケットに関するフライト中の情報を保持する。POM211は、実行ユニット215用のパケットをスケジュールする。POM211は、L2プロセッサ207とL3プロセッサ209から集められた情報と共に入力バッファ205からパケットを抽出するのに必要な情報を記憶する。1つの実施形態において、POM211は、所与の時間において2048パケットを追跡できるバッファを管理する。POM211はまた、処理を必要としないパケット情報を入力バッファ205から出力インターフェース225に転送する。実際のパケットデータは、入力バッファ205又は出力バッファ221のいずれかにおいて保持され、POM211のような他のデバイスは、そのパケットデータの位置を識別するポインタ、アドレス、又はタグを他の構成要素に渡す。
また、POM211は、文脈検索213が必要とする情報を供給し、実行ユニット215が使用するのに適切なSA文脈情報を検索する。POM211は、実行ユニット215によって作成されたパケットについての情報を受信する。パケットがセキュリティプロセッサ103によって処理されてアウトバウンド送信のために待ち行列に並んだ後、POM211はパケット送信の順序付けを指示する。この種々の機能を達成するために、POM211は、入力バッファ205と出力バッファ221に記憶されたパケットを探し出して処理するのに要求される情報を内部に保持するとともに、セキュリティプロセッサ103にパケットが残っている間、パケットに固有の他の制御情報を内部に保持する。POM211はまた、パケットの到着時間の点で該パケットを互いに対して順序付けるのに要求されるデータを保持する。
文脈及びデータ検索システム213は、メモリ及び文脈記憶装置223にアクセスし、実行ユニット215が使用するためのパケットに関連付けられたセキュリティアクセス情報にアクセスする。IPsecでは、暗号文脈情報が1つのセキュリティアソシエーション(SA)ごとに要求される。文脈は、対称暗号化と認証に必要な秘密鍵だけでなく、再生に関する情報、シーケンス番号、SA生存期間、機密性を含んでいる。また、文脈メモリ223は汎用メモリとしても使用できる。POM211と連動する文脈及びデータ検索システム213は、セキュリティアソシエーション文脈情報と共にパケットデータを実行ユニット215にロードする。1つの実施形態において、文脈メモリは、ダブルデータレート(DDR)ランダムアクセスメモリユニット又は類似の装置のような外部メモリデバイスである。別の実施形態において、文脈メモリは、内部メモリデバイス又はメモリデバイスのセットやキャッシ或いは類似の記憶装置構造である。
実行ユニット215は、RFC2401に従うIPsec変換を適用することによってパケットを復号又は暗号化する。1つの実施形態において、実行ユニット215はまた、復号又は暗号化後のパケットの新しい長さを反映するようにL2ヘッダとトレーラ情報を調整する。1つの実施形態において、セキュリティプロセッサ103は、24の実行ユニットを含むことができる。実行ユニット215の出力は、出力バッファ221に記憶され、次いで、ポイント又はアドレスは、L3出力プロセッサ217に転送される。
1つの実施形態において、実行ユニット215は多くの暗号化プリミティブをサポートするマイクロコードエンジンである。暗号化プリミティブには、DES/3DES、AES、RC4などの対称暗号化アルゴリズムのための直接ハードウェアサポート、MD5とSHA−1暗号化ハッシュのための直接サポート、RSAのような非対称暗号化アルゴリズムを含む。別の実施形態において、実行ユニット215は、IPsecのような特定のプロトコルを実行するようカスタマイズされる。実行ユニット215はまた、パケット処理要件を決定するために層3の構文解析された情報を利用することができる。実行ユニット215は、入力パケットを処理するために、スクラッチメモリとして文脈記憶メモリ223を使用できる。
L3出力プロセッサ217は、出力パケットを評価して、レベル3のデータ(OSIモデルに基づく)が正確であり内部的に矛盾がないかどうかを判定する。L3出力プロセッサ217はまた、TCPとUDPヘッダを構文解析し、次の処理で使用するための情報を抽出することができる。L3出力プロセッサ217はまた、パケットをドロップするか或いは例外ポート又は類似のハンドリング機構に渡すよう要求するオプションや類似のパケット異常によって、IPチェックサムエラー、不正形式パケット、IPv4、又はIPv6についてチェックする。1つの実施形態において、L3出力プロセッサ217又は類似の装置はまた、変更されたパケットサイズ又はレベル2のパケットデータへの類似の変更を反映するようにレベル2の情報を修正することができる。
1つの実施形態において、L3出力プロセッサ217は、暗号化又は復号されたパケットをチェックして、IPエンキャプスレーションでのIPのようなパケットの更なる処理、ネストされた又はバンドルドIPsecセグメント、さらにはパケットが付加的な処理を要求する類似のシナリオを必要とする特別な状況が適用されるかどうかを判定することができる。更なる処理を要求するパケットは、POM211に転送されたこれらのポインタとタグ情報を有する。更なる処理を要求しないパケットのパケットポインタデータは、出力バッファマネージャ219に転送される。
出力バッファマネージャ219は、出力バッファ221内にパケット又はパケットポインタとタグデータを記憶する。出力インターフェース225がパケットを送信できる状態にある場合には、出力バッファマネージャ219は、パケットデータをインターフェース225に転送する。出力バッファマネージャ219は、出力バッファ221のフリーメモリスペースを管理する。1つの実施形態において、出力バッファマネージャは、出力バッファ221でのフリーメモリスペースを追跡するためにリンクされたリスト又は類似のデータ構造を使用する。1つの実施形態において、フリーメモリスペースは、256バイトブロックで追跡される。出力インターフェース225は、統計データを収集し、出力パケットにCRCコードを付加することができる。1つの実施形態において、出力インターフェース225は、32のSPIポートをサポートすることができる。別の実施形態において、PCI、PCI Express、又は類似のシステムはまた、出力インターフェース225がサポート可能である。
図3は、セキュリティプロセッサ103を通る例示的なパケットのフロー図である。着信パケットは、パケットが有効であるか或いは認知されたプロトコル層タイプを包含するかどうかを判定するために分析される。パケットが処理を要求せず、或いは認知されたプロトコルタイプからのものではない場合には、これらのパケットは、出力待ち行列301に渡され、宛先ポート又は例外ポートで出力される。1つの実施形態において、出力待ち行列は、出力バッファ221や出力インターフェース225の一部である。幾つかの「通過」パケットは、適切なシーケンスを維持するかため、或いは送信されることになるパケットのシーケンスを修正するために再順序付け待ち行列303に転送される。再順序付け待ち行列303は、パケットがセキュリティプロセッサ103によって処理される間、パケットの1ポート当たりの順序を維持する。
処理を要求するものとして識別されたパケットは、入力待ち行列305に転送される。1つの実施形態において、入力待ち行列305は、入力インターフェース201又は入力バッファ205に実装される。これらのパケットは更に処理されて、宛先、発信元、タイプ、指定された実行ユニット215、或いは類似の基準によってパケットを分類するグループ待ち行列207に転送される。入力待ち行列205は、実行ユニット215により処理されるのを待機している入力パケットに関するデータをバッファする。
1つの実施形態において、グループ待ち行列207はPOM211に実装される。パケットは、該パケットがその待ち行列の先頭に到達すると実行ユニット215によって処理される。パケットは、要求されたオペレーションのグループに基づいて実行ユニット215に割り当てられる。1つの実施形態において、8つの異なるグループがサポートされる。実行ユニット215は、いずれかの単一のグループ又はグループのいずれかの組合せをサポートすることができる。パケットは、パケットシーケンスを維持又は修正するために再順序付け待ち行列303に処理後に転送され、或いは出力待ち行列301に直接転送される。出力待ち行列は、その実行ユニット215の処理要件を完了させた結果として得られるパケットの順序を維持し、且つ全ての他の順序付け要件を満足する。
待ち行列のこのセットにより、幾つかの異なるIPsec順序付けの実装が使用できるようになる。1つの実施形態において、再順序付け待ち行列303は、適切な順序で入力バッファ205及び出力バッファ221内に記憶されたパケットのポインタ又はタグのセットを保持しているPOM211によって実施される。
1つの実施形態において、IPsecアプリケーションは、1ポートにつき順序付け保証を要求することができる。セキュリティプロセッサ103は、同じ入出力ポートで出入りする全ての単一パケットが、プロセッサ103に入った順序でセキュリティプロセッサ103から出ることを保証することができる。別の実施形態において、IPsec実装により、通過トラフィックが再順序付け待ち行列303をバイパスできるようになる。これは、IPsecパケットの順序付けを維持し、パケットの全体的な順序付け以外の非IPsecパケットの順序付けを維持する。更なる実施形態において、再順序付け待ち行列は使用されず、パケット順序は保証されない。
図4Aは、セキュリティプロセッサ103によって処理されることになる例示的なパケット400の図である。パケット400は、パケットについてのデータを包含するプロプラエタリヘッダ401と、相補ユーザ定義データ(udd)セクション403とを含むことができる。プロプラエタリヘッダ401とudd403セクションは、セキュリティプロセッサ103とネットワークプロセッサ105又は他のプログラム可能なシステム装置との間に付加的な情報とデータを提供するために使用できる。
パケット400は、レベル2のプロトコルヘッダ405を含み、イーサネットを介したポイントツーポイント(PPoE)のようなレベル2「シム」ヘッダ情報407、マルチプロトコルラベルスイッチング(MPLS)、その他の類似のシステムを含むことができる。レベル2のヘッダフィールドは、パケット演算コードに応じてパケット内には存在しない可能性がある。セキュリティプロセッサ103は、セキュリティプロセッサ103によって構文解析又は検出されたレベル2のヘッダに関してプログラミングをサポートする。パケットは、ペイロードの宛先415とパケット400に関連するセキュリティアソシエーションをそれぞれ識別するIP411とIPsec411のヘッダのセットを含むことができる。IPヘッダは、パケット演算コードに応じてパケット内に存在しない可能性がある。パケット400はまた、レベル2のプロトコル末尾情報417と巡回冗長検査(CRC)フィールド419を含むことができる。パケットに関係するATMは、重要なトレーラを有することができる。
図4Bは、フレーマ101とネットワークプロセッサ105との間の処理にトランスペアレントなオペレーションを提供するセキュリティプロセッサ103によって可能なパケット構文解析と再組立てのフローチャートである。初期パケット400は、プロプラエタリヘッダ401とデータ403のフィールドを含むことができる。これらのフィールドを用いて、これらのヘッダとデータ用の設定されたフォーマットを確立することができる、セキュリティプロセッサ103とネットワークプロセッサ105のような「スマート」デバイス間で情報を通信することができる。1つの実施形態において、パケットは、プロプラエタリヘッダ401とデータ403を含まない。このヘッダ401とデータ403は、パケットがスマートデバイスに転送されることになる場合に加えることができる。別の実施形態において、パケット400は、プロプラエタリヘッダ401とデータ403を含むが、ダムデバイス(例えばフレーマ101)に転送されることになる。ヘッダ401とデータ403は、パケットから取り除かれる。
1つの実施形態において、パケット400は、レベル2のヘッダ情報を含む。この情報は、レベル2(L2)構文解析システム421によって分析される。1つの実施形態において、L2構文解析システム421は、L2ヘッダ405、L2シム407、L2末尾データを分析し、これらのフィールドでコード化されるプロトコルタイプ並びに情報を決定する。1つの実施形態において、L2構文解析システムは、この情報を直接転送して、処理されたパケット431のこれらのセクションを再組立てする。別の実施形態において、レベル2構文解析システム421は、L2 405とL2 シム407フィールドから復号された情報を、存在する場合には、実行ユニット425に渡す。1つの実施形態において、L2構文解析システム421は、L2プロセッサ207のような装置によって部分的に或いは完全に実現できる。
1つの実施形態において、初期パケット400は、レベル3(L3)構文解析システム423によって分析される。L3構文解析システム423は、例えばIPヘッダ409とIPsecヘッダ411情報であるパケット400内に存在するレベル3のプロトコルのタイプと、どのようなデータをそこで符号化できるかを判断する。1つの実施形態において、L3構文解析システム423は、ヘッダ情報を直接転送して、処理されたパケット431のレベル3セクションを再組立てすることができる。別の実施形態において、L3構文解析システムは、復号された情報を実行ユニット425に渡す。1つの実施形態において、L3構文解析システム423は、L3プロセッサ209とL3出力プロセッサ217のようなデバイス又はデバイスのセットによって部分的に或いは完全に実現可能である。
実行ユニット425は、それぞれの構文解析システムからレベル2とレベル3の情報を受信する。実行ユニット425は、パケット400でのオペレーション、例えばIPsecペイロード415での復号オペレーションを主として実行する役割を担う。実行ユニットは、データが供給されたL2、L3構文解析システム421、423からパケット400上で実行されることになるオペレーションに関連する情報を受信する。パケット400でのオペレーションの終了後、実行ユニットは、修正されたデータを直接渡して、処理されたパケット431を再組立てすることができる。別の実施形態において、実行ユニット425は、L2構文解析システム421とL3構文解析システム423から受信されたデータを含む、処理されたパケット431を再組立てするために、処理されたデータを後処理システム又は論理に渡す。更なる実施形態において、実行ユニット425は、主として、処理されたデータと構文解析システムから受信されたデータからパケット431を再組立てする役割を担うことができる。1つの実施形態において、実行ユニット425は、実行ユニット215のようなデバイスで実現できる。
1つの実施形態において、後処理システム427は、主として実行ユニット425によって行われたオペレーションから結果として生じたパケット修正を反映するため、パケット400の情報を修正する役割を担う。後処理ユニット427は、パケット431が正確なヘッダと末尾データを確実に有するようにするため、処理されたパケット431のフィールドのいずれかにおけるデータを修正することができる。1つの実施形態において、後処理システム427は、パケット431でのデータ及び長さのどのような変更も反映する新しいCRCとL2値を生成する。1つの実施形態において、後処理システムは、実行ユニット215、L3出力プロセッサ217、出力インターフェース225といったデバイス又はデバイスのセットによって実現することができる。
図5は、L2プロセッサ207の機能のフローチャートである。L2プロセッサ207は、入力バッファマネージャ203からパケットのヘッダ情報、ポインタ、又はタグを受信する(ブロック501)。1つの実施形態において、パケットは、完全なパケットが受信され、そのCRCがチェックされるまで処理されない。1つの実施形態において、L2プロセッサ207は、レベル2のヘッダの種々のタイプやエンキャプスレーションを見つけるためにレベル2ヘッダから予め決められたバイトのセットにパターンマッチさせる比較器のセットを包含する。比較器は、1ビットにつきマスク可能であり、従って比較器は、パケットのあらゆるビットシーケンスも検出するようプログラムすることができる。1つの実施形態において、20の前置比較器と20の後置比較器が使用される。この構成により、パケットの2つの別々のシーケンシャル比較を行い、ヘッダのセットを識別することができる。前置比較器による第1比較により、見出されたヘッダのタイプと第2後置比較器比較に基づいてパケット内で前方にスキップする。
レベル2のヘッダが存在する場合、セキュリティプロセッサ103は、構成された前パターンに対して入力パケットの最初のバイトを比較する。各パターンは可変長であり、無効にすることができる。入力パケットに一致する前パターンが無い場合には、デフォルト情報を使用する。各パターンが記憶された情報とデフォルト情報は構成可能である。1つより多いパターンが一致する場合には、一致した第1パターンに関連する情報が選択される。1つの実施形態において、前パターン一致によって選択される情報は、更なる処理の前にスキップするパケットのバイト数を表すスキップカウント、実行ユニット215に転送されるレベル2のタイプ、この情報を使用して異なるレベル2のタイプを明確にする実行ユニット215、IPフィールド、スキップしたバイトの後にMPLSが現れる場合にセットされるMPLSイネーブルビット、さらには対応するビットがセットされる場合に後置比較器をイネーブルにする後置比較器イネーブルマスクである。前パターン一致の結果により、L2プロセッサ207がMPLSスタックにおいて次のバイトを変換する方法を決定する。MPLSスタックをスキップする論理は、最後のエントリーを除いてスタックの全てをスキップさせる。1つの実施形態において、L2プロセッサ207は、エラーチェックのための構成可能な最大MPLSスタック深さをサポートする。次の比較でチェックされ集められる情報は、第1の比較のものと同じである。
L2プロセッサ207は、所与のレベル2ヘッダが存在するかどうかをチェックする(ブロック503)。レベル2ヘッダが見つけられた場合、パターンマッチングは、通常見つかったヘッダのタイプの長さに基づいてバイトの予め決められた数だけ前にスキップする(ブロック505)。次にL2プロセッサ207は、MPLSスタックをチェックする(ブロック507)。このプロセスは、前−MPLSと後−MPLSパターンを含む各MPLSセクションが見つけられるまで繰り返される。L2プロセッサ207は、そのサーチを続ける前に識別されたMPLSセグメントのサイズに応じて、そのサーチを予め決められたバイト数だけ前に移動させる(ブロック509)。
L2プロセッサ207は続いてパケットの構文解析を行い、レベル2のエンキャプスレーションが存在するかどうかを判定する(ブロック511)。このエンキャプスレーションが見つかると、パケットへのポインタは、エンキャプスレーションセクションのサイズに基づいて予め決められたバイト数だけ進められる(ブロック513)。レベル2の情報を構文解析するプロセスでは、L2プロセッサ207はまた、より大きなパケット内のIPパケットの開始位置を求める。パケットがIPパケットを含まない場合には、パケットの更なる処理はセキュリティプロセッサ103によって要求されず、パケット情報は、宛先又は例外ポートに転送することができる。IPパケットが存在する場合には、パケット情報は、見つかったレベル2の情報と共にL3プロセッサ209に渡される。
図6は、例示的なL3プロセッサ209の機能のフローチャートである。L3プロセッサは、L2プロセッサ207からポインタ、タグ、又はパケット情報を受信する(ブロック601)。L3プロセッサ209はパケットをチェックし、パケットがIPv4又はIPv6パケットを含んでいるかどうかを判定する(ブロック603)。これらのフォーマットのいずれも存在しない場合、パケットは例外ポートに転送される(ブロック605)。次いで、L3プロセッサ209は、検出されたIPヘッダ情報を確認する(ブロック607)。IP情報が正確でない場合には、パケットは例外ポートに転送される(ブロック605)。次にL3プロセッサは、IPパケットが正常なIPパケットであるか、又はIPsecパケットを含むか、或いは非IPsecIPエンキャプスレーションを包含するかを識別する(ブロック609)。
IPエンキャプスレーションのない正常なIPパケットは、適切な宛先ポートに転送される(ブロック611)。非IPsecエンキャプスレートIPパケットは、特別なハンドリングを検出するように構成された特別なプロトコル又はUDP/TCPポートを包含するか否かをチェックするために調べられる(ブロック613)。パケットがそのプロトコルタイプ又はポート数のいずれかによって識別された構成されたエンキャプスレーションを含まない場合には、該パケットは、例外ポートに転送される(ブロック615)。パケットが、特別なハンドリングのために構成されたエンキャプスレーションを含む場合、そのパケットは、実行ユニットによって処理されることになる待ち行列に配置される(ブロック617)。別の実施形態において、非IPsecIPエンキャプスレートパケットは、正常なIPパケットが処理されたときに識別され、分類され、更に処理される。
IPsecを含むパケットは、IPヘッダで指定された宛先ポートについてチェックされる(ブロック619)。宛先ポートは、プロセッサ103の宛先アドレスの構成可能な範囲に基づいてパケットがIPsecゲートウェイに向けられるかどうかを判定するためにチェックされる(ブロック621)。パケットがIPsecゲートウェイに向けられない場合には、パケットは適切な出力ポートに転送される(ブロック623)。IPsecゲートウェイに向けられたパケットは、そこに包含されるセキュリティパラメータインデックス(SPI)を求めるために構文解析されたそのIPseヘッダを有する(ブロック625)。次いで、L3プロセッサは、SPIをメモリ223内のSA文脈に対するインデックスに変換する(ブロック627)。次に、この情報は、実行ユニット215による処理のための待ち行列に転送される(ブロック629)。
図7は、実行ユニット215によるパケット情報の処理と、L3出力プロセッサ217による次の処理についての1つの実施形態のフローチャートである。実行ユニット215は、パケットがL2、L3プロセッサ207、209によって処理された後、POM211・SA文脈データ及びパケットデータ検索システム213からの処理のパケットを受信する。実行ユニット215は、RFC2401に従ってパケットの暗号化データに対してIPsec変換を適用する(ブロック701)。次いで、実行ユニット215は、レベル2のトレーラ情報と共に復号されたIPsecセクションに対してL2プロセッサによって識別されたL2ヘッダ情報を付加することによってパケットを再構成する(ブロック703)。実行ユニット215は、L2ヘッダ又はトレーラ情報で必要な場合にはパケット長情報を修正する(ブロック705)。1つの実施形態において、実行ユニット215のマイクロコードは、どのようなレベル2のヘッダの変更が必要であるかを判定する。例えば、IEEE802.3パケットは、適切なパケットを生成するために実行ユニット215によって修正を必要とする可能性のある長さフィールドを有する。また実行ユニットは、パケットの最後まで「パッド」(サイズ要件を満たすために含まれる無意味なデータ)を計算して加え、長さフィールドを挿入することが必要となる場合がある。
L3出力プロセッサ217は、実行ユニット215によって生成されたパケットをチェックし、デキャプスレート或いは復号されたパケットが有効IPパケットであるかどうかをチェックする。パケットが有効IPパケットである場合には、該パケットはPOM211によって出力待ち行列に配置され、或いは適切な例外ポートに送られる。
1つの実施形態において、構文解析と復号後のパケットの再組立ては、L3プロセッサ217に送られる前に実行ユニット215によって主に行われる。別の実施形態において再組立ては、専用のデバイス、例えば出力プロセッサか分散システムで実行される。分散システムは、例えばL2データを作成するL2プロセッサ207、L3データを作成するL3プロセッサ209又はL3出力プロセッサ217などの複数のデバイスがパケットの種々のフィールドを構成する。或いは再組み立ては、正確なヘッダと末尾データを有する処理されたパケットを生成するのに必要なフィールドを作成する類似するデバイスによって実行される。従って、セキュリティプロセッサ103がフレーマ101とネットワークプロセッサ105との間でインライン方式でトランスペアレントに動作することが可能となる。
CRCを計算し、復号されたパケットに付加する(ブロック709)。1つの実施形態において、CRCフィールドは、出力インターフェース225によって作成される。別の実施形態において、CRCフィールドは、実行ユニット215、L3出力プロセッサ、又は同等の構造体によって作成される。出力インターフェース及び実行ユニット215は、同じ生成多項式を使用する種々のCRC規格を実装するようにプログラム可能である。アウトバウンドパケットは送信のための待ち行列である(ブロック711)。
上記明細書では、特定の実施形態に関して本発明を説明してきた。しかしながら、添付の請求項に記載の本発明の広範な精神及び範囲から逸脱することなく、種々の修正及び変更を本発明に対し行い得ることは明らかであろう。本明細書及び図面は、従って限定ではなく例証とみなすべきである。