(57)【要約】    【課題】      ＩＰｖ６に準拠して動作する通信制御部をハードウエア化することができ、ＣＰＵの処理能力に影響されることのない高速通信を実現すること。    【解決手段】  複数のインターフェース部３０−１〜３０−ｎ、３１でＣＰＵ１１又はネットワークからのパケットデータを受信し、送受信用メモリ２３にコピーする。送受信用メモリ２３から読み出したパケットデータを複数のバッファ２４，２５，２６間を順次転送し、処理バッファ２６から送受信用メモリ２３にパケットデータをコピーする。受信パケットの処理工程を複数アクションに分割して、パケット毎に定まる各アクションの処理内容を順番にアクション指示発生回路１０２−１〜１０２−ｎ、アクション回路１０３−１〜１０３−ｎでハードウエア処理し、パケットデータがバッファ２４，２５，２６間を転送してＲＸ  ＢＵＦからＴＸ  ＢＵＦに一方向へ移動するようにした。  【選択図】      図２
2006180246.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ又はネットワークとの間でパケットデータを送受信する複数のインターフェース部と、前記インターフェース部からパケットデータがコピーされる受信バッファと、受信バッファから読み出したパケットデータが順次転送される複数の処理バッファと、最終段の処理バッファからパケットデータがコピーされる送信バッファと、受信パケットの処理工程を通信プロトコルに対応した複数アクションに分割して、パケット毎に定まる各アクションの処理内容を順番にハードウエア処理し、パケットデータが処理バッファ間を転送して受信バッファから送信バッファに一方向へ移動するようにしたステート制御回路と、を具備したパケット処理装置。
【請求項２】
前記ステート制御回路は、直列に接続した複数のアクション指示発生回路と、各アクション指示発生回路に対してそれぞれ設けられた複数のアクション回路とを備え、
前記各アクション指示発生回路は、対応するアクション回路のアクション開始と完了を管理し、上段のアクション指示発生回路からのリクエストを受け付けると対応するアクション回路へアクション開始指示信号を出し、対応するアクション回路からアクション完了信号を受けると下段のアクション指示発生回路にリクエストを出力し、
前記各アクション回路は、アクション指示発生回路からアクション開始指示信号を受けてパケット毎に定まる処理内容を実行し、処理完了すると前記アクション指示発生回路に対してアクション完了信号を出力する、請求項１記載のパケット処理装置。
【請求項３】
前記ステート制御回路は、優先的にアクセス可能な位置に配置され受信パケット毎にパケット制御情報が格納される制御用メモリを備え、
前記各アクション回路は、アクション開始後の初期段階で前記制御用メモリにアクセスして対象パケットのパケット制御情報から当該パケットの処理を実行するか否かの判定を行う、請求項２記載のパケット処理装置。
【請求項４】
前記各アクション回路は、パケット毎に定まる処理内容を実行する過程で得られた、後続アクション回路が使用する情報を、前記制御用メモリ上の該当パケット制御情報にコピーする、請求項３記載のパケット処理装置。
【請求項５】
前記複数アクション回路は、アクション開始指示信号を受けたら、実質的な処理を行うこと無く、次の動作タイミングでアクション完了信号を出力する空アクション回路を含む請求項２から請求項４のいずれかに記載のパケット処理装置。
【請求項６】
前記空アクション回路を、暗号化されたパケットデータを復号化するアクションを割り当てたアクション回路の直前に、複数個配置する請求項５記載のパケット処理装置。
【請求項７】
前記空アクション回路を、平文のパケットデータを暗号化するアクションを割り当てたアクション回路の直前に、複数個配置する請求項５記載のパケット処理装置。
【請求項８】
前記空アクション回路を、処理バッファからパケットデータの一部を前記制御用メモリ上の該当パケット制御情報にコピーするアクションを割り当てたアクション回路の直前に、複数個配置する請求項５記載のパケット処理装置。
【請求項９】
前記通信プロトコルはＩＰｖ６であることを特徴とする請求項１から請求項８のいずれかに記載のパケット処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＰ（インターネットプロトコル）の下でパケットデータを処理するＩＰパケット処理装置に係り、特にＩＰｖ６の通信プロトコルに基づいた通信制御を実現するためのＩＰパケット処理装置に関する。
【背景技術】
【０００２】
ルータ、ＩＰ電話、ＩＰカメラ、ネット家電等のＩＰネットワーク対応の通信機器は、受信パケット又は送信パケットを装置内に取り込んで解析し暗号認証等の処理を行ってから装置外へ送り出すＩＰパケット処理装置を備えている。かかるＩＰパケット処理装置は、ネットワークインターフェース（以下、ネットワークＩ／Ｆ部という）を介してＩＰネットワークに接続し、ＣＰＵがデータバッファを利用して送受信パケットの処理を行っていた。しかし、全てのパケット処理をＣＰＵによるソフトウエア処理で行ったのでは、ＣＰＵの負荷が大きくなりすぎて処理効率が低下するという問題がある。ＩＰｖ６をサポートするＩＰｓｅｃ対応の通信機器の場合、暗号（暗号化／復号化）処理並びに認証処理といった特別の処理がある。そのため、ＩＰｓｅｃ等の特定の演算だけを専用のハードウエア回路で行うことにより、ＣＰＵの負荷を軽減し高速動作を実現することが考えられている（例えば特許文献１参照）。
【特許文献１】特開２００４−３０４６９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、ＣＰＵによるソフトウエア処理と専用の演算回路によるハードウエア処理との組合せでパケット処理を行う方式の場合、メモリ、ＣＰＵ及び演算回路間のデータ転送が頻繁に発生し、データ転送に使用するデータバスに掛かる負荷が大きくなる傾向にあり、パケット処理能力の向上を妨げる要因となっていた。
【０００４】
本発明は、以上のような実情に鑑みてなされたものであり、ＩＰｖ６に準拠して動作する通信制御部をハードウエア化することができ、ＣＰＵの処理能力に影響されることのない高速通信を実現したＩＰパケット処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、受信パケットの処理工程を通信プロトコルに対応した複数アクションに分割し、パケット毎に定まる各アクションの処理内容を順番にハードウエア処理し、パケットデータが各アクションで順次必要な処理を加えられながら受信バッファから送信バッファに向けて一方向へバッファ間を移動するようなハードウエア構成とした。
【０００６】
このように、受信パケットの処理工程を通信プロトコルに対応した複数アクションに分割することにより、個々のアクションの処理をハードウエアで処理可能になる。また、パケットデータに対し各アクションで順次必要な処理を加えながらバッファ間を一方向へ移動させるので、受信パケットの処理工程に関してパイプライン的なハードウエア処理が可能になり、ＣＰＵが介在することなく、受信パケットを廃棄することなくスムーズに入力ＩＦから出力ＩＦへ移動でき、ＣＰＵの処理能力に影響されることのない高速通信を実現できる。
【発明の効果】
【０００７】
本発明によれば、ＩＰｖ６に基づいて動作する通信制御部をハードウエア化することができ、ＣＰＵの処理能力に影響されることのない高速通信を実現するＩＰパケット処理装置を提供できる。
【発明を実施するための最良の形態】
【０００８】
本発明の第１の態様は、ＣＰＵ又はネットワークとの間でパケットデータを送受信する複数のインターフェース部と、前記インターフェース部からパケットデータがコピーされる受信バッファと、受信バッファから読み出したパケットデータが順次転送される複数の処理バッファと、最終段の処理バッファからパケットデータがコピーされる送信バッファと、受信パケットの処理工程を通信プロトコルに対応した複数アクションに分割して、パケット毎に定まる各アクションの処理内容を順番にハードウエア処理し、パケットデータが処理バッファ間を転送して受信バッファから送信バッファに一方向へ移動するようにしたステート制御回路と、を具備したパケット処理装置である。
【０００９】
このように構成したパケット処理装置によれば、パケット処理をハードウエア処理可能になるので、ＣＰＵの負荷を軽減できると共にＣＰＵの処理能力に依らず高速処理が可能になる。
【００１０】
本発明の第２の態様は、第１の態様のパケット処理装置において、前記ステート制御回路は、直列に接続した複数のアクション指示発生回路と、各アクション指示発生回路に対してそれぞれ設けられた複数のアクション回路とを備え、前記各アクション指示発生回路は、対応するアクション回路のアクション開始と完了を管理し、上段のアクション指示発生回路からのリクエストを受け付けると対応するアクション回路へアクション開始指示信号を出し、対応するアクション回路からアクション完了信号を受けると下段のアクション指示発生回路にリクエストを出力し、前記各アクション回路は、アクション指示発生回路からアクション開始指示信号を受けてパケット毎に定まる処理内容を実行し、処理完了すると前記アクション指示発生回路に対してアクション完了信号を出力するものとした。
【００１１】
これにより、パケット毎に定まる各アクションの処理内容を該当アクション回路が判定して順次ハードウエア処理し、通信プロトコルに基づいた一連の処理工程をハードウエア処理できる。また、各アクション指示発生回路が対応するアクション回路のアクション開始と完了を管理するので通信プロトコルに基づいた一連の処理工程が上流から下流に向けて順番に処理されていくこととなる。
【００１２】
本発明の第３の態様は、第２の態様のパケット処理装置において、前記ステート制御回路は、優先的にアクセス可能な位置に配置され受信パケット毎にパケット制御情報が格納される制御用メモリを備え、前記各アクション回路は、アクション開始後の初期段階で前記制御用メモリにアクセスして対象パケットのパケット制御情報から当該パケットの処理を実行するか否かの判定を行うものとした。
【００１３】
このように、優先的にアクセス可能な制御用メモリにパケット制御情報を格納したのでバス調停回路を経由する外部アクセスに比べて処理を高速化でき、またアクション開始後の初期段階で当該パケットの処理を実行するか否かの判定を行うので処理を実行する必要の無い場合は当該処理を飛ばすことができる。
【００１４】
本発明の第４の態様は、第３の態様のパケット処理装置において、前記各アクション回路は、パケット毎に定まる処理内容を実行する過程で得られた、後続アクション回路が使用する情報を、前記制御用メモリ上の該当パケット制御情報にコピーするものとした。
【００１５】
これにより、後段のアクション回路は前段のアクション回路が取得した情報をパケット制御情報から取得でき、重複した処理を回避して処理の効率化を図ることができる。
【００１６】
本発明の第５の態様は、第２から第４のいずれかの態様のパケット処理装置において、前記複数アクション回路は、アクション開始指示信号を受けたら、実質的な処理を行うこと無く、次の動作タイミングでアクション完了信号を出力する空アクション回路を含むものとした。
【００１７】
このように、空アクション回路を挿入したことにより、次段のアクション回路での処理開始タイミングを遅らせる方向に調整することができ、処理に時間を要するアクションがあってもパケットの廃棄を防止してスループットを改善することができる。
【００１８】
本発明の第６の態様は、第５の態様のパケット処理装置において、前記空アクション回路を、暗号化されたパケットデータを復号化するアクションを割り当てたアクション回路の直前に、複数個配置するものとした。
【００１９】
暗号化されたパケットデータを復号化するアクションはパケットデータのデータ量が大きいと後続パケットが停滞する可能性があるので、そのような場所に空アクション回路を複数個配置することにより、復号化を割り当てたアクション回路の手前で後続パケットが廃棄されるのを防止できる。
【００２０】
本発明の第７の態様は、第５の態様のパケット処理装置において、前記空アクション回路を、平文のパケットデータを暗号化するアクションを割り当てたアクション回路の直前に、複数個配置するものとした。
【００２１】
平文のパケットデータを暗号化するアクションはパケットデータのデータ量が大きいと後続パケットが停滞する可能性があるので、そのような場所に空アクション回路を複数個配置することにより、暗号化を割り当てたアクション回路の手前で後続パケットが廃棄されるのを防止できる。
【００２２】
本発明の第８の態様は、第５の態様のパケット処理装置において、前記空アクション回路を、処理バッファからパケットデータの一部を前記制御用メモリ上の該当パケット制御情報にコピーするアクションを割り当てたアクション回路の直前に、複数個配置するものとした。
【００２３】
処理バッファからパケットデータの一部をパケット制御情報にコピーするアクションは処理バッファへのアクセスで待ち時間が発生する。そのような場所に空アクション回路を複数個配置することにより、パケットデータのコピーを割り当てたアクション回路の手前で後続パケットが廃棄されるのを防止できる。
【００２４】
以下、本発明のＩＰパケット処理装置の一実施の形態について図面を参照して具体的に説明する。
【００２５】
図１はＩＰｖ６をサポートしている通信機器に備えたＩＰパケット処理装置の機能ブロック図である。同図に示すパケット処理装置は、ＣＰＵ１１、ＩＰｖ６フォワーディング制御用ＬＳＩ回路（以下、ＩＰｖ６用ＬＳＩ回路という）１２、ＤＡ変換機能を有するＰＨＹ部１３−１〜１３−ｎを主な構成要素としている。ＰＨＹ部１３−１〜１３−ｎの先に、各ネットワークケーブルに物理的に接続するコネクタが設置される。本実施の形態では、当該通信機器をインターネット等のＩＰネットワークに接続するものとするが、このような形態に限定されるものではない。
【００２６】
ＩＰｖ６用ＬＳＩ回路１２は、ＩＰｖ６に対応したフォワーディング制御をＣＰＵ１１が介在することなく実行するハードウエア回路である。ＩＰｖ６用ＬＳＩ回路１２は、暗号化／復号化処理及び認証処理をハードウエアにて実行する暗号認証回路２１と、テーブルを内蔵するステート制御部２２と、受信したＩＰパケット、ＣＰＵ１１からのイーサフレームやＩＰパケットが格納される送受信用メモリ２３と、ＩＰパケットやイーサフレームのフォワーディング制御において使用する複数のバッファメモリ２４、２５、２６と、これらメモリ間のデータ転送のためのＤＭＡコントローラ２７とを備える。ＩＰｖ６用ＬＳＩ回路１２内部でのデータ転送は内部バスを経由して行われるが、バス調停回路２８が内部バスの動作管理を行う。なお、制御用メモリ２９はステート制御部２２が優先的に使用可能な内部メモリであり、処理パケットの制御情報を記述したパケットディスクリプタが格納（登録）される。ＩＰｖ６用ＬＳＩ回路１２は、各ＰＨＹ部１３−１〜１３−ｎに対してネットワークＩ／Ｆ部３０−１〜３０−ｎを介して接続される。ネットワークＩ／Ｆ部３０−１〜３０−ｎは当該通信機器が接続されるネットワークのプロトコルに対応したインターフェース機能をサポートしている。
【００２７】
図２は、ＩＰｖ６用ＬＳＩ回路１２で行うフォワーディング制御の概念図である。同図において、図１に示す送受信用メモリ２３を「ＴＸ／ＲＸ  ＢＵＦ」、図１に示すメモリ２４を「ＢＵＦ１」、図１に示すメモリ２５を「ＢＵＦ２」、図１に示すメモリ２６を「ＢＵＦ３」、図１に示すネットワークＩ／Ｆ部３０−１、３０−２を「ＥｔｈｅｒＭＡＣ」と表示している。図１に示す暗号認証回路２１のうち復号化回路を「Ｃｉｐｈｅｒ（decryption）」とし、暗号認証回路２１のうち暗号化回路を「Ｃｉｐｈｅｒ（encryption）」として表示している。なお、図１にはＣＰＵ１１とのインターフェース部は図示されていないが、図２ではＣＰＵｉ／ｆ３１として示している。
【００２８】
ネットワークから受信したＩＰパケット又はホスト側から与えられたＩＰパケットは、双方共にＩＰｖ６用ＬＳＩ回路１２にて処理される。
【００２９】
ステート制御部２２は、ＲＸ  ＢＵＦ（２３）に新たなパケットを受信すると、当該パケットに対してパケットディスクリプタを割り当てた後、ＢＵＦ１へデータ転送する。これにより、ＲＸ  ＢＵＦ（２３）に対して後続パケットデータを連続的に格納することが可能になる。
【００３０】
ステート制御部２２は、ＢＵＦ１（２４）がオーバーフローする前に後段のＢＵＦ２（２５）へデータ転送する。図２の例では、ＢＵＦ１（２４）からＢＵＦ２（２５）へのデータ転送の際にパケットデータを復号化するか否か判断し、復号化の必要がある場合は復号化している。ステート制御部２２は、Ｃｉｐｈｅｒ（decryption）（２１）に対して復号化処理を指示する。復号化の要否は当該パケットに関して生成したパケットディスクリプタを参照することにより判断できる。ＢＵＦ１（２４）のデータはＣｉｐｈｅｒ（decryption）（２１）で復号化処理してからＢＵＦ２（２５）へ転送する。ＢＵＦ１（２４）のデータを復号化する必要がない場合は、Ｃｉｐｈｅｒ（decryption）（２１）で復号化処理することなくＢＵＦ２（２５）へ転送する。例えば、ネットワーク上へ送信する送信パケットがＩＰｓｅｃが必要でない場合、復号化処理は不要であるので、Ｃｉｐｈｅｒ（decryption）（２１）を通過するように制御することになる。
【００３１】
ステート制御部２２は、ＢＵＦ２（２５）に転送された入力パケットデータがオーバーフローする前に後段のＢＵＦ３（２６）へデータ転送する。このとき、ＢＵＦ２（２５）のパケットデータを暗号化する必要がある場合、Ｃｉｐｈｅｒ（encryption）（２１）に暗号化処理を指示する。暗号化の要否は当該パケットに関するパケットディスクリプタを参照することにより判断できる。例えば、ＢＵＦ２（２５）にこれから送信するパケットデータが格納されていたような場合は暗号化する可能性がある。一方、ＢＵＦ２（２５）に格納されたパケットデータを暗号化する必要が無い場合は、Ｃｉｐｈｅｒ（encryption）（２１）で暗号化することなくＢＵＦ３（２６）へデータ転送する指示を発する。例えば、受信パケットデータを復号化してＣＰＵ１１が内部に取り込むような場合である。
【００３２】
ステート制御部２２は、ＢＵＦ３（２６）のデータをＴＸ  ＢＵＦ（２３）へ転送し、さらに送信先に対応した出力ＩＦ（ＥｔｈｅｒＭＡＣ又はＣＰＵｉ／ｆ）に送信要求を出す。送信要求を受けたインターフェース部、例えばＥｔｈｅｒＭＡＣ３０−２はＴＸ  ＢＵＦ（２３）にあるデータを外部へ送信する。以上のようにして１つの処理が完了する。
【００３３】
このように、ＩＰｖ６用ＬＳＩ回路１２のＲＸ  ＢＵＦ（２３）からＴＸ  ＢＵＦ（２３）に向けてデータが滞ることなく順次転送され、その過程で復号化、暗号化等のその入力パケットデータに対して必要な処理が施されてから、送信先に対応した出力ＩＦ（ＣＰＵｉ／ｆを含む）から外部へ出力する。これにより、途中でＣＰＵ１１が介在することなく、ＩＰｖ６フォワーディング制御を実行することができる。
【００３４】
図２に示す概念図では、フォワーディング制御の過程で実行される処理として、ＢＵＦ１〜ＢＵＦ３へのデータ転送と、該当する場合には復号化（Ｃｉｐｈｅｒ（decryption））と、該当する場合には暗号化（Ｃｉｐｈｅｒ（encryption））とを例示しているが、その他の処理を随時挿入することが可能である。
【００３５】
図３はステート制御部２２の具体的な回路構成を示す図である。受信検出回路１０１は、ＩＰｖ６用ＬＳＩ回路１２のネットワークＩ／Ｆ部３０−１〜３０−ｎ及びＣＰＵｉ／ｆ３１から受信完了信号１〜３を受信する。本例はネットワークＩ／Ｆ部３０−１、３０−２に対応した２つのＥｔｈｅｒＭＡＣ（３０−１，３０−２）とＣＰＵｉ／ｆ３１との３つのインターフェース部を想定しているので、３つの受信完了信号１〜３を受信可能になっている。ＥｔｈｅｒＭＡＣ（３０−１、３０−２）及びＣＰＵｉ／ｆ３１は、パケットデータの受信を完了したときに受信完了信号１〜３を出力する。
【００３６】
ｎ個のアクション指示発生回路１０２−１〜１０２−ｎを直列に配置し、各アクション指示発生回路１０２−１〜１０２−ｎに対してアクション回路１０３−１〜１０３−ｎを設置している。すなわち、アクション指示発生回路とアクション回路とのセットをｎ段直列配置した構成となっている。例えば、パケットを受信してから出力するまでに、３０の処理段階が存在するとすれば、後述する「空アクション」を含めて５０段構成とすることができる。
【００３７】
アクション指示発生回路（１０２−１〜１０２−ｎ）は、上段のアクション指示発生回路（最上段は受信検出回路１０１）に対してビジー／レディー状態を示すステート信号を出力する。レディー状態で上段回路からリクエストを受け付けることができる。アクション指示発生回路（１０２−１〜１０２−ｎ）は、レディー状態の時にリクエストを受信すると、アクション回路（１０３−１〜１０３−ｎ）に対してアクション開始指示信号(act go)を出力し、上段回路に対するステート信号をビジー信号に切り替える。また、アクション回路（１０３−１〜１０３−ｎ）からアクション完了信号(act done)を受信すると、下段回路に対してリクエストを出力すると共に上段回路に対するステート信号をレディー信号に切り替える。
【００３８】
このように、アクション指示発生回路（１０２−１〜１０２−ｎ）は、同一のアクション回路（１０３−１〜１０３−ｎ）に対してアクション指示が時間的に重複しないように管理すると共に、自己のアクション完了後に下段回路に後続のアクションを引き継がせるように構成されている。
【００３９】
アクション回路（１０３−１〜１０３−ｎ）は、各自のアクション内容に応じて各々対応するテーブルを参照可能に構成されている。アクション回路（１０３−１〜１０３−ｎ）は、アクション指示発生回路（１０２−１〜１０２−ｎ）からアクション開始指示信号(act go)を受けて所定のアクションが実行されるような命令を必要回路に出力し、命令したアクションが完了したことを検出するとアクション完了信号(act done)をアクション指示発生回路（１０２−１〜１０２−ｎ）へ出力する。
【００４０】
また、図２に示す２つのＥｔｈｅｒＭＡＣ（３０−１、３０−２）とＣＰＵｉ／ｆ３１との３つのインターフェース部に対応させて３つの送信制御回路１０４−１〜１０４−３を備えている。送信制御回路１０４−１〜１０４−３は、アクション回路１０３−ｎからアクション開始指示信号(act go)を受けると、対応するインターフェース部（３０−１、３０−２、３１）に対して送信命令を出力し、送信完了信号（１〜３）を受信したら送信命令を停止する。
【００４１】
本ステート制御部２２は、アクション開始前に初期値の設定を行う初期値設定回路１０５を備える。ＣＰＵ１１は入力パケットに対して新しく処理を開始するときにリセット信号を初期値設定回路１０５に与える。初期値設定回路１０５は、ＣＰＵ１１からのリセット信号を受けて当該ステート制御部２２の他の回路に内部リセットをかける働きをする。
【００４２】
また、ステート制御部２２は、外部アクセスするためのセレクタ回路１０６と内部アクセスするためのセレクタ回路１０７とを備える。セレクタ回路１０６は、ＢＵＦ１、ＢＵＦ２、ＢＵＦ３等のバス調停回路２８経由の外部アクセスを行うための回路である。セレクタ回路１０７は制御用メモリ２９のパケットディスクプリタに内部アクセスするための回路である。
【００４３】
図４は、アクション回路（１０３−１、１０３−２、１０３−３、・・・１０３−ｎ）内の部分的な構成であって、レジスタから命令セットを読み出して内部アクセス又は外部アクセスするための構成を示している。アクション回路は、命令セットを格納したレジスタ４１と、命令セットの読み出し位置を指定するカウンタ４２と、カウンタ４２の指定する命令セットをセレクタ回路１０６又はセレクタ回路１０７へ出力するセレクタ４３とを備えている。その他にも内部アクセスで取得したデータを解析して実行する制御回路等を備える。なお、レジスタ４１に格納する命令セットは後から追加及び削除が可能であり、仕様の変更に対応して適宜変更することがきるようにしている。
【００４４】
以上のように構成された実施の形態の具体的な動作について説明する。
【００４５】
ＣＰＵ１１からのアクセスによってステート制御部２２の各テーブルが設定される。各アクション回路１０３−１〜１０３−ｎに各々必要なテーブルが割り当てられる。テーブル設定が終わると、ＣＰＵ１１からリセット信号を解除する信号が初期値設定回路１０５に対して与えられる。
【００４６】
初期値設定回路１０５は、リセット解除信号を受けて必要な初期値設定を行う。初期値設定では、図２のＥｈｔｅｒＭＡＣ（３０−１，３０−２）を受信可能な状態に設定し、自身の内部メモリをクリアする処理を含む。また、制御用メモリ２９に例えば５６個分のパケットディスクプリタ空間を確保し、０番から５５番までのパケットディスクプリタを登録する。パケットディスクリプタの割当は識別番号（アドレス）によって行われる。なお、パケットディスクリプタの初期化は受信開始後に行っても良い。
【００４７】
初期値設定が終了すると、内部回路である受信検出回路１０１、アクション指示発生回路１０２−１〜１０２−ｎ、アクション回路１０３−１〜１０３−ｎ等に対してリセット解除信号を与えてリセット解除する。このリセット解除により各回路が動作開始する。
【００４８】
リセット解除された受信検出回路１０１は、ポーリングを開始してＣＰＵｉ／ｆ３１又はＥｔｈｅｒＭＡＣ（３０−１、３０−２）に新たにパケットが受信された否か検出する。データ受信したインターフェース部（３０−１、３０−２、３１）から受信完了信号を受信した受信検出回路１０１は、下段回路であるアクション指示発生回路１０２−１に対してリクエストを出力する。
【００４９】
ここで、インターフェース部（３０−１、３０−２、３１）からＲＸ  ＢＵＦ（２３）に新しいパケットデータが格納されると、当該パケットの制御情報であるパケットディスクプリタが１つ識別番号と共に割り当てられる。ＲＸ  ＢＵＦにパケットが受信される毎に、制御用メモリ２９に登録したパケットディスクプリタ（０番から５５番）を識別番号の小さい順に順番に割付け、５５番目まで割り付けたら０番目に戻るように制御する。受信パケットに割り付けたパケットディスクリプタは出力されるまで識別番号で管理される。識別番号は０番から５５番に対応した制御用メモリ２９のアドレスを用いることができる。パケットディスクプリタの識別番号はリクエストと共にアクション指示発生回路１０２−１へ通知される。
【００５０】
アクション指示発生回路１０２−１は、ステート信号がレディー状態となっていればリクエストを受け付ける。なお、動作開始後で受信パケットの処理が開始されている場合、アクション回路１０３−１から先行アクション指示に対するアクション完了信号(act done)を未受信であればステート信号はビジー状態となっていて、リクエストは受け付けられない。アクション指示発生回路１０２−１は、リクエストを受け付けるとアクション回路１０３−１に対してアクション開始指示信号(act go)を出力する。それと共にステート信号をビジー状態に変化させる。
【００５１】
これによって、今回実行するアクションが終了するまで上段回路（受信検出回路）からのリクエストは受け付けない状態となる。
【００５２】
アクション回路１０３−１は、アクション開始指示信号(act go)を受けてレジスタ内容に登録された命令セットを実行する。後述する空アクション回路を除いて、レジスタ４１の命令セットを順に読み出して実行することとなる。アクション回路１０３−１のように初期段階のアクション回路に割り当てる処理として「フレーム受信処理」がある。「フレーム受信処理」は、ＲＸ  ＢＵＦ（２３）にあるパケットデータをＢＵＦ１にコピーする処理である。
【００５３】
ＣＰＵ１１からＩＰパケット又はＭＡＣフレームが渡された場合は、ＩＰパケット又はＭＡＣフレームにＣＰＵ１１が生成したパケットディスクリプタを付加することができる。この場合は、ＢＵＦ１にコピーしたＩＰパケット又はＭＡＣフレームからパケットディスクリプタを取り出し、識別番号で指定された制御用メモリ２９のアドレス空間に上書きする。
【００５４】
また、ＥｔｈｅｒＭＡＣ（３０−１，３０−２）から渡されたＩＰパケット又はＭＡＣフレームの場合は、パケットディスクリプタが付加されていないのが普通である。そのため、一般的にはパケットディスクリプタのコピー作業は含まれないこととなる。当該パケットのＢＵＦ１での格納先アドレス（先頭アドレス）及びデータ長をパケットディスクリプタの該当箇所に書き込む。パケットディスクリプタには、常に現在の格納先アドレス及びデータ長が書き込まれることとなる。
【００５５】
ＲＸ  ＢＵＦ（２３）からＢＵＦ１（２４）へのパケットデータの転送はＤＭＡコントローラ２７によって行う。なお、ＢＵＦ間のデータ転送及びＢＵＦ３からＴＸ  ＢＵＦへのデータ転送もＤＭＡコントローラ２７が行う。アクション回路１０３−１は、ＤＭＡコントローラ２７にアクセスして、書き込みアドレス及びデータ長等の必要な情報を伝えた上で転送命令を与える。
【００５６】
ＤＭＡコントローラ２７は、アクション回路１０３−１からの転送命令を受けて指定されたＲＸ  ＢＵＦ（２３）にアクセスし、ＲＸ  ＢＵＦ（２３）の指定アドレスにあるパケットデータをＢＵＦ１（２４）へＤＭＡ転送する。ＤＭＡコントローラ２７は、指定されたデータの転送が完了するとアクション回路１０３−１に転送完了を通知する。
【００５７】
以上の「フレーム受信処理」はレジスタ４１に記憶した命令セット及び当該パケットのパケットディスクリプタの内容に基づいてハード的に行われる。
【００５８】
アクション回路１０３−１は、ＤＭＡコントローラ２７によるデータ転送が完了したことを検出すると、アクション指示発生回路１０２−１に対してアクション完了信号(act done)を出力する。アクション指示発生回路１０２−１は、アクション完了信号(act done)を受信すると、下段回路であるアクション指示発生回路１０２−２に対してリクエストを送出すると共に、上段回路である受信検出回路１０１に対するステート信号をビジー状態からレディー状態に変化させる。
【００５９】
これにより、アクション回路１０３−１は、次のパケットデータに対して「フレーム受信処理」を実行することができる状態になると共に、下段回路に対して「フレーム受信処理」の後のアクションを実行させることができる。
【００６０】
アクション指示発生回路１０２−２は、上段回路であるアクション指示発生回路１０２−１からリクエスト及びパケットディスクリプタの識別番号を受信し、自信のステート信号がレディー状態となったところで当該リクエストを受け付ける。アクション指示発生回路１０２−２は、リクエストを受け付けると、ステート信号をビジー状態に変化させると共に、アクション回路１０３−２に対してアクション開始指示信号(act go)を出力する。
【００６１】
アクション回路１０３−２は、アクション開始指示信号(act go)を受信すると、レジスタ４１からカウンタ４２で指定されたアドレスの命令セットを読み出し、当該命令セットに応じたアクションを実行する。例えば「ＭＡＣヘッダコピー処理」を実行する。例えば、最初の命令セットには、制御用メモリ２９にアクセスしてパケットディスクリプタの所定情報を取り出すように命令を設定しておく。当該処理である「ＭＡＣヘッダコピー処理」を実行する必要があるか否か判断できる情報を最初にチェックすることが望ましい。アクション回路１０３−２は、当該パケットの識別番号に基づいて制御用メモリ２９に内部アクセスし、該当パケットディスクリプタからＭＡＣヘッダのコピーが必要か否かを判断する情報を取得する。パケットディスクリプタに、当該パケットがＣＰＵ１１からのパケットでＭＡＣフレームの受信処理が必要ない旨のビットが立てられていれば、アクション完了信号(act done)を出力する。この結果、「ＭＡＣヘッダコピー処理」について実質的な処理を行うことなく完了することができる。ここで、アクション回路１０３−２が「ＭＡＣヘッダコピー処理」を実行するか否かの判断に使用している情報は前段回路であるアクション回路１０３−１が「フレーム受信処理」で当該パケットディスクリプタに書き込んだ情報である。このように、前段回路で書き込んだパケットディスクリプタの情報を後段回路のアクション回路で使用できるようにしている。このことは、他のアクション回路でも同様である。
【００６２】
一方、ＭＡＣヘッダのコピーが「必要」と判断した場合は、ＢＵＦ１（２４）に格納しているパケットデータからＭＡＣヘッダを取り出して当該パケットディスクリプタにコピーする。例えば、ＭＡＣフレームでは、先頭から２８バイトまでにＭＡＣヘッダが含まれるので、この部分をコピーすれば良いことになる。アクション回路１０３−２は、「ＭＡＣヘッダコピー処理」が完了したら、アクション指示発生回路１０２−２に対してアクション完了信号(act done)を出力する。
【００６３】
アクション指示発生回路１０２−２は、アクション回路１０３−２からアクション完了信号(act done)を受信すると、下段回路であるアクション指示発生回路１０２−３に対してリクエストを出力すると共に、上段回路であるアクション指示発生回路１０２−１に対するステート信号をレディー信号に切り替える。すなわち、上段回路からリクエストされたアクションが完了すると当該上段回路に対しては次のリクエストを受け付け可能にすると共に、下段回路に対しては後続アクションを引き継がせるためのリクエストを出す。
【００６４】
アクション指示発生回路１０２−３は、上段回路であるアクション指示発生回路１０２−２からリクエスト及びパケットディスクリプタの識別番号を受信し、自信のステート信号がレディー状態となったところで当該リクエストを受け付ける。アクション指示発生回路１０２−３は、リクエストを受け付けると、ステート信号をビジー状態に変化させると共に、アクション回路１０３−３に対してアクション開始指示信号(act go)を出力する。
【００６５】
アクション回路１０３−３は、アクション開始指示信号(act go)を受信すると、レジスタ４１に格納した命令セットに応じたアクションを実行する。例えば「ＭＡＣヘッダコピー処理」の後であれば、「送信元ＭＡＣアドレス登録処理」を実行することができる。アクション回路１０３−３は、当該パケットの識別番号に基づいて制御用メモリ２９に内部アクセスし、該当パケットディスクリプタから「送信元ＭＡＣアドレス登録処理」を実行するか否かの情報を取得する。この情報も「フレーム受信処理」で当該パケットディスクリプタに書き込んだ情報である。当該処理を実行しないと判断した場合はアクション完了信号(act done)を送信する。
【００６６】
一方、「送信元ＭＡＣアドレス登録処理」を実行する場合は、制御用メモリ２９にアクセスして、該当パケットディスクリプタから送信元ＭＡＣアドレスを取得すると共に、当該パケットを受信したインターフェース部を示すデータ（入力ＩＦ）を取得する。送信元ＭＡＣアドレスは「ＭＡＣヘッダコピー処理」で該当パケットディスクリプタに書き込んだ情報である。そして、送信元ＭＡＣアドレスと入力ＩＦとをＭＡＣアドレステーブルに登録する。ＭＡＣアドレステーブルは制御用メモリ２９内に登録することもできるし、アクション回路１０３−３の内部レジスタに登録することもできる。ここで登録したデータはフレーム送信時に出力ＩＦを決めるための情報として用いる。
【００６７】
アクション回路１０３−３は、「送信元ＭＡＣアドレス登録処理」が完了したら、アクション指示発生回路１０２−３に対してアクション完了信号(act done)を出力する。
【００６８】
このように、送信元ＭＡＣアドレスはＢＵＦ１に格納されたパケットデータからも取得できるが、バスアクセスを伴うＢＵＦ１へのアクセスは外部アクセスとなるため、内部アクセスとなる制御用メモリ２９にアクセスして必要な情報を取得することを優先している。この考え方は他のアクション回路でも同様である。内部アクセスを優先して外部アクセスを低減させる思想の下にアクセス先を設定している。
【００６９】
アクション指示発生回路１０２−３は、アクション回路１０３−３からアクション完了信号(act done)を受信すると、下段回路であるアクション指示発生回路１０２−４に対してリクエストを出力すると共に、上段回路であるアクション指示発生回路１０２−２に対するステート信号をレディー信号に切り替える。
【００７０】
アクション指示発生回路１０２−４は、上段回路であるアクション指示発生回路１０２−３からリクエスト及びパケットディスクリプタの識別番号を受信し、自信のステート信号がレディー状態となったところで当該リクエストを受け付ける。アクション指示発生回路１０２−４は、リクエストを受け付けると、ステート信号をビジー状態に変化させると共に、アクション回路１０３−４に対してアクション開始指示信号(act go)を出力する。
【００７１】
アクション回路１０３−４は、アクション開始指示信号(act go)を受信すると、レジスタ４１に格納した命令セットに応じたアクションを実行する。例えば「送信元ＭＡＣアドレス登録処理」の後であれば「宛先ＭＡＣアドレス判定処理」を実行することができる。「宛先ＭＡＣアドレス判定処理」では、先行アクション回路においてパケットディスクリプタにコピーしたデータを用いて宛先ＭＡＣアドレスがブロードキャストやマルチキャストでないかを確認する。アクション回路１０３−４は、当該パケットの識別番号に基づいて制御用メモリ２９に内部アクセスし、該当パケットディスクリプタから「宛先ＭＡＣアドレス判定処理」を実行するか否かの情報を取得し、実行しないと判断した場合はアクション完了信号(act done)を出力する。ＣＰＵ１１からのパケットの場合は「宛先ＭＡＣアドレス判定処理」を行わないことも可能である。
【００７２】
一方、「宛先ＭＡＣアドレス判定処理」を実行する場合は、制御用メモリ２９にアクセス（内部アクセス）して、該当パケットディスクリプタの所定箇所から宛先ＭＡＣアドレスを読み出す。宛先ＭＡＣアドレスを解析した結果、宛先ＭＡＣアドレスがブロードキャスト、ＩＰｖ４マルチキャスト、ＩＰｖ６マルチキャストのいずれかであれば、パケットディスクリプタにそれぞれのフラグを立てる。アクション回路１０３−４は、「宛先ＭＡＣアドレス判定処理」が完了したら、アクション指示発生回路１０２−４に対してアクション完了信号(act done)を出力する。
【００７３】
以下、同様にして上段回路でのアクションが完了すると下段回路へアクションが移行していく。
【００７４】
以下、主なアクションの処理内容について列挙するが、これらの処理は上記アクション回路と同様にハードウエアで実現している。
【００７５】
「ＩＰｖ６受信処理」：先行アクション回路がパケットディスクリプタにコピーしたデータを用いて、ＩＰｖ６パケットか否か判定する処理である。最初にパケットディスクリプタの所定箇所のデータを読み出して「ＩＰｖ６受信処理」を行うか否か判定する。ＩＰｖ６パケットの場合はＢＵＦ１からＩＰｖ６ヘッダを取り出してパケットディスクリプタの該当箇所にコピーする。次に、制御用メモリ２９にアクセスして当該パケットディスクリプタからＩＰｖ６ヘッダを読み出し、バージョンチェック、データレングスチェック、ネクストヘッダチェックを行う。不正パケットであれば廃棄処分して、その情報を当該パケットディスクリプタに書き込む。以降のアクション回路では廃棄処分されたパケットであることを判定し、すぐにアクション完了信号(act done)を出力することができる。
【００７６】
「自ノード宛判定処理」：先行アクション回路がパケットディスクリプタにコピーしたデータを用いて、自ノード宛パケットか否か判定する処理である。最初にパケットディスクリプタの所定箇所のデータを読み出して「自ノード宛判定処理」を行うか否か判定する。不正パケット、ＣＰＵ１１からの受信である場合は「自ノード宛判定処理」を行わないで、すぐにアクション完了信号(act done)を出力することができる。「自ノード宛判定処理」を行う場合は、入力ＩＦのアドレスが登録された自ノードアドレステーブルを、受信ＩＦと宛先ＩＰアドレスを使って検索する。ヒットすれば、自ノード宛パケットであるのでパケットディスクリプタの所定箇所にその旨のデータを書き込む。ヒットしなければ、自ノード宛パケットでないので廃棄処分して、その情報を当該パケットディスクリプタに書き込む。
【００７７】
「ＩＰｓｅｃ受信処理」：先行アクション回路がパケットディスクリプタにコピーしたデータを用いて、ＩＰｓｅｃに準拠した受信処理を行うか否か判定する処理である。パケットディスクリプタにコピーされているネクストヘッダを取り出して、ネクストヘッダがＥＳＰヘッダか否は判定する。ＥＳＰヘッダの場合は、パケットディスクリプタにコピーされているＳＰＩを使って、ＳＡが登録されているか否か判定する。具体的には、宛先ＩＰアドレスとプロトコル番号とＳＰＩを用いて、ＳＡＤを検索し、ＳＡ−ＩＤを得る。ＥＳＰヘッダでなければ処理を終了する。ＳＡが登録されていた場合は、シーケンス番号（ＳＮ）を用いて再生攻撃防止のための判定を行う。再生攻撃防止チェックを行い、ＯＫの場合は「ＩＰｓｅｃ受信処理」を行う。ＮＧの場合は破棄するか又はソフトウエア（ＣＰＵ１１側の処理）へ渡す。ＮＧの場合はパケットディスクリプタにその旨の情報を書き込む。また、再生攻撃防止チェックを終えたら、ＳＡ−ＩＤをパケットディスクリプタに登録し、さらにＩＰｓｅｃ受信処理の要否を示すデータを記述する。「ＩＰｓｅｃ受信処理」によりパケットディスクリプタにはその後に復号化処理を行うか否かの情報が設定されたことになる。
【００７８】
「復号Ｃｉｐｈｅｒ設定処理」：先行アクション回路がパケットディスクリプタに設定したＩＰｓｅｃ受信処理の結果を示す情報をチェックし、ＩＰｓｅｃ復号処理を行うか、ＢＵＦ２へパケットデータをコピーするだけかを判定する処理である。ＩＰｓｅｃ復号処理を行うと判定した場合、Ｃｉｐｈｅｒ(decryption)２１にＩＰｓｅｃ復号処理用のデータ設定を行う。具体的には、暗号化処理／復号化処理のどちらであるかを示す情報、暗号方式、認証方式、鍵情報、認証範囲、復号範囲等をデータ設定する。また、ＩＰｓｅｃ復号処理を行なわないと判定した場合、Ｃｉｐｈｅｒ(decryption)２１にパケットデータコピー処理用のデータ設定を行う。具体的には、復号せずにパケットデータをそのままコピーする範囲等をデータ設定する。Ｃｉｐｈｅｒ(decryption)２１に対するデータ設定後は、パケットディスクリプタに記述された格納アドレス、データ長を修正し、Ｃｉｐｈｅｒ(decryption)２１の処理が終わるのを待つ。
【００７９】
「ＩＰｓｅｃ受信処理確認」：Ｃｉｐｈｅｒ(decryption)２１の処理が終了してから、認証データの比較をし、認証結果が正しいか否か判定する処理である。ＩＰｓｅｃ復号済みのデータは既にＢＵＦ２（２４）へ書き出されている。ＢＵＦ１（２４）に格納しているパケットデータより認証データを予め読み出しておき、当該認証データ（パケットに付加されていた値）と今回Ｃｉｐｈｅｒ(decryption)２１が計算した認証値とを比較する。認証に成功したら、パケットディスクリプタにネクストヘッダの値を保持すると共に、シーケンス番号（ＳＮ）をＳＮテーブルへ書き込む。認証に成功しなかった場合、パケットを破棄する。これによってパケットデータはＢＵＦ１（２４）からＢＵＦ２（２５）へ転送されなくなる。パケットを破棄する場合、不正パケットによる攻撃があったことをＣＰＵ１１が把握するために、パケットディスクリプタはＣＰＵ１１へ送信するように、パケットディスクリプタの出力先としてＣＰＵｉ／ｆ３１のビットを設定しておく。
【００８０】
「ＩＰｓｅｃトンネルヘッダ処理」：トンネルモードの場合にトンネルヘッダの削除、内部パケットのヘッダ確認、自ノード宛判定を行う処理である。ＩＰｓｅｃ受信処理によって暗号化されていたネクストヘッダはペイロードの最後に現れる。パケットディスクリプタに保管しておいたネクストヘッダをチェックして、トンネルモード処理を行うか否かを判定する。ネクストヘッダがＩＰｖ４またはＩＰｖ６の場合はトンネルモードであることを示す。本例ではＩＰｖ６の場合だけハードウエア処理する。トンネルモードであった場合は、ＩＰｖ６ヘッダをＢＵＦ２（２５）からパケットディスクリプタにコピーし、バージョン、データ長等をチェックし、自ノード宛判定処理を行う。すなわち、「ＩＰｖ６パケット受信処理」と同じ処理を行う。
【００８１】
「ルーティング検索処理」：ＩＰヘッダ領域内の宛先ＩＰアドレスと入力ＩＦとを用いてルーティングテーブルを検索する処理である。「ルーティング検索処理」では、宛先ＩＰアドレスと入力ＩＦとを用いてルーティングテーブルを検索し、検索に成功した場合はパケットディスクリプタのステータスに記録し、検索結果として取得した出力ＩＦとネクストホップＩＤをパケットディスクリプタに設定する。検索に失敗した場合は、そのことを示すデータをパケットディスクリプタに設定する。なお、送信元ＩＰアドレスを用いてルーティング検索を行うことができる。また、ルーティング検索処理を行う前に自ノード宛パケットであることがパケットディスクリプタに登録されていることが判明している場合は、所定データを設定してこの処理を完了する。
【００８２】
「出力ＩＦ確認処理」：パケット長が大きすぎないことを確認すると共に、入力ＩＦと出力ＩＦとが異なることを確認する処理である。パケット長が大きすぎる場合、又は入力ＩＦと出力ＩＦとが一致する場合はソフトウエア処理部（ＣＰＵ１１側）へエラー通知する。
【００８３】
「ＩＰｓｅｃ送信判定処理」：出力ＩＦを用いてＩＰｓｅｃ送信処理が必要か否か判定する処理である。パケットディスクリプタの所定データを参照してＩＰｓｅｃ送信判定処理を実行するか否か判定し、ＩＰｓｅｃ送信判定処理を実行すると判定した場合は出力ＩＦからＩＰｓｅｃ送信処理が必要か否か判定する。ＩＰｓｅｃ送信処理が必要な場合は、ＳＡ−ＩＤを用いてＳＰＩを取得し、さらにＳＮテーブルを検索してシーケンス番号（ＳＮ）を取得し、それぞれパケットディスクリプタに設定する。さらに、ＳＡ−ＩＤを用いてＩＶ長を検索し、ＩＶ長からＩＶを生成してパケットディスクリプタに設定する。ＳＡテーブルを検索してトンネルモードであるか否か判定し、トンネルモードであればトンネルヘッダ付加処理を実行する。これはパケットディスクリプタのヘッダ領域にトンネルヘッダを上書きすることにより行われる。なお、ＣＰＵ１１からのパケットでこの処理を行わない場合はすぐに処理を完了する。
【００８４】
「トンネルヘッダルーティング検索処理」：パケットディスクリプタにあるＩＰヘッダの情報を用いてルーティング検索処理を行う処理である。トンネルモードのときだけ必要な処理である。最初にパケットディスクリプタを確認してトンネルモードか否か判定する。トンネルモードでなければ処理を完了する。トンネルモードであった場合は、ルーティング検索処理を行い、検索結果として得られたネクストホップＩＤと出力ＩＦをパケットディスクリプタに設定する。
【００８５】
「ＭＡＣアドレス解決処理」：ルーティング検索結果を用いて、ネクストホップのＭＡＣアドレスを求める処理である。パケットディスクリプタを参照してＭＡＣアドレス解決処理が必要か否か判定する。宛先ＩＰアドレス又はネクストホップＩＤを用いてテーブル検索したＩＰアドレスを取得し、出力ＩＦと取得したＩＰアドレスを用いてＮＣ検索を行いＭＡＣアドレスを取得する。取得したＭＡＣアドレスをパケットディスクリプタの宛先ＭＡＣアドレスに書き込む。
【００８６】
「暗号Ｃｉｐｈｅｒ設定処理」：暗号化処理のための情報をＣｉｐｈｅｒ(encryption)２１に設定する処理である。パケットディスクリプタを参照して、ＩＰｓｅｃ暗号化処理を行うか否か、ＢＵＦ２（２５）のパケットデータをＢＵＦ３（２６）へコピーするだけか否を判定する。ＩＰｓｅｃ暗号化を行う場合は、Ｃｉｐｈｅｒ(encryption)２１に対して、暗号化処理／復号化処理のどちらを行うか（ここでは暗号化）、暗号方式、認証方式、鍵情報、ＩＶ、暗号化せずにパケットデータをそのままコピーする範囲（ＩＰヘッダ）、認証範囲、暗号化範囲を、データ設定する。暗号化処理を行わない場合は、Ｃｉｐｈｅｒ(encryption)２１に対して、暗号化せずにパケットデータをそのままコピーする範囲（ＢＵＦ２にあるデータのすべて）、認証範囲（ゼロ）、暗号化範囲（ゼロ）をデータ設定する。なお、ＣＰＵ１１からのパケットでこの処理を飛ばしたい場合はその旨のデータがパケットディスクリプタに予め設定されている。
【００８７】
「認証データ付加処理」：Ｃｉｐｈｅｒ(encryption)２１のレジスタからＩＣＶを取り出し、ＳＡテーブルの認証データ長を参照して、認証値を作成し、ＢＵＦ３（２６）へ書き出す処理である。認証値を付加して後、データ長を計算する。パケットディスクリプタに計算したデータ長が設定される。
【００８８】
「ＭＡＣヘッダ生成処理」：ＩＰｖ４／ＩＰｖ６に合わせてイーサタイプ(Ether Type)をパケットディスクリプタのＭＡＣヘッダ領域に設定する処理である。パケットディスクリプタを参照して「ＭＡＣヘッダ生成処理」が必要か否か判定する。必要な場合は送信元ＭＡＣアドレスを取得して、パケットディスクリプタに設定する。送信元ＭＡＣアドレスは出力ＩＦから決定可能である。次にイーサタイプ(Ether Type)をパケットディスクリプタに設定する。
【００８９】
以上のように、各アクション回路（１０３−１〜１０３−ｎ）は処理対象のパケットについて生成したパケットディスクリプタを最初に参照することで各自のアクションを実行すべきか否か判定でき、実行しないと判定した場合には当該アクションを飛ばして次段のアクション回路へアクションを以降できる。したがって、ｎ段構成のアクション回路（１０３−１〜１０３−ｎ）の中から受信パケットに応じて必要なアクションだけを選択して実行することができる。選択されなかったアクション（不要アクション）についてはパケットディスクリプタを参照して飛ばし判定をするだけの時間で済み、処理の高速化を図ることができる。
【００９０】
上段のアクション回路がパケットディスクリプタに設定したデータを下段のアクション回路で使用するので、アクション回路間での重複処理を削除できると共に、バスアクセスを伴うＢＵＦ１、２、３へのアクセスを削減でき、外部アクセスよりも高速な内部アクセスを優先的に発生させることができ、高速処理を実現できる。
【００９１】
また、パケットディスクリプタを制御メモリ２９に格納してステート制御部２２がバス調停回路２８を介さずに制御メモリ２９に高速にアクセス可能にしたので、パケットディスクリプタの参照に関してはＣＰＵ１１から完全に処理を分離でき、ＣＰＵ１１と処理が衝突することが無くなり、待ち時間を削減できる。
【００９２】
ところで、アクション回路に割り当てた処理の中には、コピー処理（外部アクセスを伴う）、復号化処理、暗号化処理等のように、アクション完了までに時間がかかるものがある。後続パケットが到着しているにも拘わらず、先行パケットのアクションがいつまでも完了しない場合、後続パケットを廃棄することとなりスループットが低下する。例えば、図２に示すＢＵＦ１からＢＵＦ２へデータ転送する際に復号化処理をしているが、データ量の大きいパケットを復号化処理している間に後続パケットが多数入力してくる可能性がある。
【００９３】
そこで、本実施の形態は、処理に所定以上の時間を要することが予想されるアクション回路の前段に、１つ又は複数の空アクション回路を配置することとした。空アクション回路とは、アクション指示発生回路からアクション開始指示信号(act go)を受信すると、次の動作タイミングでアクション指示発生回路に対してアクション完了信号(act done)を出力する回路のことである。このような空アクション回路も通常のアクション回路と同様にアクション指示回路とのセットで組み込むこととなる。
【００９４】
具体的には、１パケットの最大データ量を１５００バイト、最小データ量を６４バイトであるとする。１５００バイトのデータ量を持つパケットを受信した直後に、６４バイトのパケットを連続的に２０個受信した場合を想定すると、１５００バイトのパケットの復号化処理を行っている間に、２０個の後続パケットを廃棄する必要が生じる。このようなケースを想定して、復号化のアクション回路の前段に２０個の空アクション回路（及び対応する２０個のアクション指示発生回路）を配置する。このような構成をとれば、１５００バイトのデータ量を持つパケットの復号化が完了する直前で、２０個の後続パケット（６４バイトのパケット）でアクション回路直前の２０個の空アクション回路が満たされた状態となる。図５は復号化のアクション回路の直前に配置した空アクション回路で後続パケットが処理されている状態を示している。
【００９５】
このように、復号化処理のアクション回路の直前にシステムに応じた適切な複数の空アクション回路を配置することにより、１つのパケットも廃棄されることなく復号化のアクション回路へ渡すことができるものとなる。なお、空アクション回路の数は適宜変更可能である。
【００９６】
また、復号化処理のアクション回路に限らず、処理が遅延する可能性のあるアクション回路の前段に１つ又は複数の空アクション回路を配置することが望ましい。ＲＸ  ＢＵＦからＢＵＦ１へのデータコピーは、バスアクセスが発生すると共にＣＰＵ１１が優先的に使用しているのでアクセスタイミングによっては時間を要する。よって、ＲＸ  ＢＵＦからＢＵＦ１へのデータコピーが割り当てられたアクション回路の前段に空アクション回路を配置することが望ましい。同様に、暗号化処理のアクション回路の直前にも暗号化速度に応じた適切な数の空アクション回路を配置することが望ましい。
【産業上の利用可能性】
【００９７】
本発明は、ＩＰｖ６での通信制御部をハードウエア化可能で、ＣＰＵの処理能力に影響されることなく高速通信を実現することができ、パケットデータをＩＰｖ６の下で処理する機器に適用可能である。
【図面の簡単な説明】
【００９８】
【図１】本発明の一実施の形態に係るＩＰパケット処理装置の全体構成図
【図２】ＩＰｖ６用ＬＳＩ回路で行うフォワーディング制御の概念図
【図３】ステート制御部の回路構成図
【図４】アクション回路の回路構成図
【図５】空アクション回路を配置したステート制御部のタイミング図
【符号の説明】
【００９９】
１１  ＣＰＵ
１２  ＩＰｖ６フォワーディング制御用ＬＳＩ回路
１３−１〜１３−ｎ  ＰＨＹ部
２１  暗号認証回路
２２  ステート制御部
２３  送受信用メモリ
２４、２５、２６  バッファメモリ
２７  ＤＭＡコントローラ
２８  バス調停回路
２９  制御用メモリ
３０−１〜３０−ｎ  ネットワークＩ／Ｆ部
３１  ＣＰＵｉ／ｆ
１０１  受信検出回路
１０２−１〜１０２−ｎ  アクション指示発生回路
１０３−１〜１０３−ｎ  アクション回路
【図１】
2006180246.tif 000003
【図２】
2006180246.tif 000004
【図３】
2006180246.tif 000005
【図４】
2006180246.tif 000006
【図５】
2006180246.tif 000007