(57)【要約】【課題】  パケット内の任意の位置のデータを抽出することが可能なパケットデータ抽出回路を提供する。【解決手段】  パケットから抽出するデータの位置を記述したプログラムを蓄積するプログラム蓄積手段と、プログラム蓄積手段から読み出したプログラムの命令を解釈する命令解釈手段と、命令解釈手段により解釈した命令に従って入力パケットからデータを抽出するデータ抽出手段とを備えてパケットデータ抽出回路を構成する。【選択図】  図１  
2005039615.tif 000002
【特許請求の範囲】
【請求項１】
通信パケットからパケット内の任意の位置のデータを抽出するためのパケットデータ抽出回路であって、
パケットから抽出するデータの位置を記述したプログラムを蓄積するプログラム蓄積手段と、
プログラム蓄積手段から読み出したプログラムの命令を解釈する命令解釈手段と、
命令解釈手段により解釈した命令に従って入力パケットからデータを抽出するデータ抽出手段と
を有することを特徴とするパケットデータ抽出回路。
【請求項２】
前記プログラムの命令は、パケット内の所定のデータ単位での移動の命令、移動位置から連続する少なくとも１つの前記データ単位の箇所からのデータ抽出の命令、抽出動作終了の命令を含む請求項１に記載のパケットデータ抽出回路。
【請求項３】
前記パケットデータ抽出回路は、前記プログラムの命令に従ってパケット内の所定のデータ単位の抽出位置を蓄積する第１の抽出位置蓄積手段を更に有し、
前記データ抽出手段は、前記データ単位に前記パケットのデータを一時蓄積し、当該データ抽出手段が蓄積するデータの前記パケット内での位置と、前記第１の抽出位置蓄積手段が示す位置とが一致した場合にデータ抽出を行う請求項１に記載のパケットデータ抽出回路。
【請求項４】
前記パケットデータ抽出回路は、前記プログラムの命令に従って前記データ単位のデータ内のデータ抽出位置を蓄積する第２の抽出位置蓄積手段を有し、
前記データ抽出手段は、当該第２の抽出位置蓄積手段から出力されるデータ抽出位置に従って前記データ単位のデータ内のデータ抽出を行う請求項３に記載のパケットデータ抽出回路。
【請求項５】
前記パケットデータ抽出回路は、前記プログラム蓄積手段からのプログラム読み出し位置を指定するためのアドレス指定手段を更に有し、
前記プログラム蓄積手段に複数のプログラムを蓄積し、当該アドレス指定手段により複数のプログラムのうちの１つのプログラムの開始先頭位置を指定することによりプログラムを選択する請求項１に記載のパケットデータ抽出回路。
【請求項６】
前記プログラム蓄積手段に蓄積されたプログラムを変更するためのプログラム変更手段を更に有する請求項１に記載のパケットデータ抽出回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信を目的とするネットワーク上を流れるパケット内の任意の位置に格納されたデータを抽出し、それによりネットワーク内でのパケットの扱いを決定するネットワークノード装置に必要なハードウエア回路に関する。
【背景技術】
【０００２】
インターネットの出現以来、コンピュータネットワークではＩＰ(Internet Protocol)を使用したデータ交換を行なってきた。今日、主に使用されているのはＩＰｖ４と呼ばれるものである。その、拡張版ともいえるＩＰｖ６も普及促進が図られ始めている。ルータ等のネットワークノード装置では、従来はＩＰのアドレスを参照したパケット処理を行うだけでその役割を果たすことができたが、ＩＰを利用するアプリケーションの多様化が著しいため、今日では、アプリケーションデータを参照してパケット処理を行う必要が生じている（アプリケーションフィルタ、等）。
【０００３】
アプリケーションデータはそのフォーマットが標準化されることは稀であり、多様である。そのため、個々のアプリケーションに応じるために、パケット内の任意の場所のデータを抽出する必要が生じる。
【０００４】
しかしながら、従来は標準化されたパケットヘッダ構造、予め構造が明らかなパケットペーロード内データ構造に応じて、データ抽出回路を固定的に設計し、それを用いてルータ等のノード装置を構成していた。そのため、パケット内の任意の場所のデータを抽出することはできなかった。
【０００５】
ここで、汎用ＣＰＵとそのプログラムを使用することで、パケット内の任意の場所のデータを抽出するようにプログラム可能なパケット情報抽出機能を実現することは可能である。しかしながら、汎用ＣＰＵはその動作をプログラムで実現するため、終了時刻の保障が困難である。終了時刻の保障が確保できなければ、パケットが連続で到着した場合の処理時間が保障できず、パケット損失が発生する。
【０００６】
さて、従来のパケット情報抽出回路としては、例えば特許文献１や特許文献２に開示された技術がある。
【０００７】
特許文献１に開示されている情報中継装置は、ＩＰｖ６に特化したルータ機能を効率的に提供することを目的としたものであり、ＩＰｖ６専用のパケット情報抽出を行う。そのため、他のプロトコルヘの柔軟な対応、及び、アプリケーションヘの対応は困難である。特許文献２に開示されているパケット交換装置は、ＣＰＵを組み合わせたノード装置であり、そのＣＰＵ間でのブロッキングパケットの転送時間短縮を目的としている。ＣＰＵでのパケット情報抽出を行なっており、回線速度を保障する性能の確保は困難である。
【０００８】
【特許文献１】特開２００２−７７２６２号公報
【０００９】
【特許文献２】特開平１０−１７３７０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は上記の点に鑑みてなされたものであり、パケットを生成する多様なアプリケーションに応じて柔軟にパケット内データを抽出することによって、多様なアプリケーションに応じたネットワークサービスを実現可能なノード装置を構成するためのパケットデータ抽出回路を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題は、通信パケットからパケット内の任意の位置のデータを抽出するためのパケットデータ抽出回路であって、パケットから抽出するデータの位置を記述したプログラムを蓄積するプログラム蓄積手段と、プログラム蓄積手段から読み出したプログラムの命令を解釈する命令解釈手段と、命令解釈手段により解釈した命令に従って入力パケットからデータを抽出するデータ抽出手段とを有するパケットデータ抽出回路により解決できる。
【００１２】
本パケットデータ抽出回路によれば、プログラム蓄積手段に蓄積される、パケットから抽出するデータの位置を記述したプログラムによって入力パケットからデータを抽出するので、プログラムを変更することにより抽出位置を任意に変更でき、アプリケーションに応じて柔軟にパケット内データを抽出することが可能となる。
【００１３】
前記プログラムの命令は、パケット内の所定のデータ単位での移動の命令、移動位置から連続する少なくとも１つの前記データ単位の箇所からのデータ抽出の命令、抽出動作終了の命令を含むものである。
【００１４】
また、前記パケットデータ抽出回路は、前記プログラムの命令に従ってパケット内の前記データ単位の抽出位置を蓄積する第１の抽出位置蓄積手段を更に有し、前記データ抽出手段は、前記データ単位に前記パケットのデータを一時蓄積し、当該データ抽出手段が蓄積するデータの前記パケット内での位置と、前記第１の抽出位置蓄積手段が示す位置とが一致した場合にデータ抽出を行う。
【００１５】
また、前記パケットデータ抽出回路は、前記プログラムの命令に従って前記データ単位のデータ内のデータ抽出位置を蓄積する第２の抽出位置蓄積手段を有し、前記データ抽出手段は、当該第２の抽出位置蓄積手段から出力されるデータ抽出位置に従って前記データ単位のデータ内のデータ抽出を行う。
【００１６】
また、前記パケットデータ抽出回路は、前記プログラム蓄積手段からのプログラム読み出し位置を指定するためのアドレス指定手段を更に有し、前記プログラム蓄積手段に複数のプログラムを蓄積し、当該アドレス指定手段により複数のプログラムのうちの１つのプログラムの開始先頭位置を指定することによりプログラムを選択することにより、複数のプログラムの中で任意にプログラムを変更できる。
【００１７】
更に、前記プログラム蓄積手段に蓄積されたプログラムを変更するためのプログラム変更手段を有することによっても、プログラムを変更できる。
【発明の効果】
【００１８】
本発明によれば、パケットを生成する多様なアプリケーションに応じて柔軟にパケット内データを抽出することによって、多様なアプリケーションに応じたネットワークサービスを実現可能なノード装置を構成するためのパケットデータ抽出回路を提供することができる。
【発明を実施するための最良の形態】
【００１９】
図１に本発明の実施に形態における回路の概略構成を示す。図１に示すように、本実施の形態における回路は、プログラム蓄積手段１、プログラム読み出し手段２、命令解釈手段３、データ抽出手段４、抽出データ蓄積手段５、プログラム変更手段６を有する。これらの各手段はハードウェアにより構成されるものである。
【００２０】
同図中、参照符号７はプログラム読み出し手段２からプログラム蓄積手段１へ送出されるプログラム読み出し信号である。このプログラム読み出し信号は、例えば、プログラム蓄積手段１の実現手段の１つである半導体メモリのアドレスである。８はプログラム読み出し信号７に関連してプログラム蓄積手段１より出力されるプログラムの１命令である。９はプログラム読み出し手段２に一時蓄積された命令８の情報である。１０は命令解釈手段３で解釈された命令９の内容をデータ抽出手段４で実施するために必要な信号である。
【００２１】
また、１１は入力パケットの流れを示し、１２は出カパケットの流れを示す。１３は信号１０に従い入力パケット１１から逐次的に抽出される情報である。１４はデータ抽出手段４からの抽出データ１パケット分を抽出データ蓄積手段５に一まとめに蓄積したデータである。
【００２２】
１５はプログラム蓄積手段１に蓄積されたデータ抽出のプログラムをプログラム変更手段６を介して外部から変更するためのデータの流れを示し、１６はプログラム変更のための外部とのデータ授受の流れを示す。この回路の概略動作は以下の通りである。
【００２３】
データ抽出手段４に入力パケット１１として入力され、出力パケット１２として出力されるパケットの１パケットから、ヘッダを含むパケット内の任意の位置のデータを、プログラム蓄積手段１に蓄積されたプログラムに従い、データ抽出手段４が抽出し、抽出データ蓄積手段５に１パケット分の抽出データを蓄積し、抽出終了後、抽出データ蓄積手段５から抽出データを出力する。パケット内データの抽出位置はプログラム変更手段１に蓄積されるプログラムにより決定される。また、プログラム変更手段１に蓄積されるプログラムは変更可能であり、これにより、パケット内データの抽出位置を任意に変更できる。
【００２４】
次に、本実施の形態の回路をより詳細に説明する。
【００２５】
図２に、本実施の形態の回路のより詳細な構成である実装レベルの構成を示す。図２に示す回路は、メモリ素子で構成するプログラム蓄積手段２０、プログラム蓄積手段２０のアドレスを生成するアドレスカウンタ２１、プログラム蓄積手段２０が出力するプログラムの１命令を解釈する命令解釈手段２２、命令解釈手段２２が出力するワード内の抽出位置情報を一時蓄積する抽出位置蓄積手段２３、抽出パケット内の位置をワード単位で示すパケット位置カウンタ２４、ワード単位の抽出対象位置を蓄積するパケット内抽出位置カウンタ２５、パケット位置カウンタ２４とパケット内抽出位置カウンタ２５の一致した箇所を検出する比較器２６、抽出位置蓄積手段２３の出力を比較器２６の出力により抑制する動作抑制器２７、パケットからデータを抽出するパケット情報抽出手段２８、抽出したデータを１パケット分蓄積する抽出情報蓄積手段２９、プログラム蓄積手段２０の内容を変更するプログラム変更手段３０、プログラム蓄積手段２０に蓄積された複数の抽出プログラムのどれを使用するかを選択するためにプログラムの先頭を指し示す開始アドレス変更手段３１を有している。また、パケット情報抽出手段２８は、抽出対象パケットをワード単位で一時蓄積する抽出パケットワード蓄積手段を有している。
【００２６】
同図中、参照符号３２はプログラム蓄積手段２０のアドレスの流れを示し、３３はプログラム蓄積手段２０からのデータ出力の流れを示す。また、３４はアドレスカウンタ２１の値を進める信号の流れを示し、３５は命令解釈手段２２に一時蓄積されたデータ３３におけるワード内の抽出位置情報の流れを示し、３６は命令解釈手段２２に一時蓄積されたパケット内のワード単位の抽出位置の流れを示す。３７は抽出位置蓄積手段２３が出力するワード内の抽出位置の流れを示し、３８はパケット位置カウンタ２４の出力するワード単位のパケット位置情報の流れを示す。３９はパケット内抽出位置カウンタ２５の出力するワード単位のパケット内抽出位置の流れを示す。また、４０はパケット位置カウンタ２４のパケット位置カウンタを進める信号の流れである。なお、パケット情報抽出手段２８にパケットが到着した際にパケット位置カウンタ２４はリセットされる。
【００２７】
４１は、抽出対象パケット内のワード単位の位置３８と抽出位置３９が一致した時にワード内の抽出位置情報３７を動作制約器２７を介して出力させる信号の流れを示す。また、４２は動作制約器２７の出力の流れを示し、４３はパケット情報抽出手段２８で抽出されたパケット内情報の流れを示す。４４はプログラムを変更するデータの流れを示す。また、４５は抽出対象パケットの流れを示し、４６はパケット情報抽出手段２８を通過して出力されるパケットの流れを示す。
【００２８】
４７は１パケット分まとめて抽出情報蓄積手段２９に蓄積された抽出パケット情報の流れを示し、４８は外部から与えられるプログラム蓄積手段２０に蓄積された抽出プログラムの実行先頭位置を指定するデータの流れを示す。
【００２９】
図３に本実施の形態のパケット情報抽出プログラムで用いる命令の構成を示す。制御命令のフォーマット５０は、データフィールド５１、命令フィールド５２、パラメータフィールド５３を含む。データフィールド５１は、図２に示す命令解釈手段２２が、カウンタ値３２に応じてプログラム蓄積手段２０から出力された命令を制御命令もしくは抽出命令に分類するためのフィールドである。命令フィールド５２は命令を格納するフィールドであり、パラメータフィールド５３は命令フィールド５２に格納された命令が使用するパラメータのフィールドである。抽出命令のフォーマットは参照符号５１に示す通りである。
【００３０】
図４に本実施の形態で使用する命令系を示す。命令には、ジャンプ（ＪＭＰ）命令６０、停止命令６１、抽出命令６２の３種がある。
【００３１】
ジャンプ（ＪＭＰ）命令６０は抽出位置をワード単位で移動するための命令であり、パラメータとしては移動するワード数の相対値を後方に向けて正の整数で指定する。停止命令６１は、処理を停止するための命令であり、これ以降はデータ抽出を行なわず、次のパケットの到着を待つ。抽出命令６２は、パケットからデータを抽出するための命令であり、抽出命令６２内で１が指定されている場所を抽出する。本実施の形態では、１が指定された場所を抽出位置のワードから、バイト単位で抽出する。
【００３２】
図５に図２に示したプログラム蓄積手段２０の内容の一例を示す。参照符号７０はプログラム蓄積手段２０のメモリ空間全てを示すものである。図５の例では、メモリ空間７０内に、１つ目の抽出プログラム７１、２つ目の抽出プログラム７２、３つ目の抽出プログラム７３が存在する。先頭アドレス１（７４）は１つ目の抽出プログラム７１の先頭アドレスであり、先頭アドレス２（７５）は２つ目の抽出プログラム７２の先頭アドレスであり、先頭アドレス３（７６）は３つ目の抽出プログラム７３である。メモリ空間７０に格納可能なプログラムの数は、メモリ空間７０の全容量と、各プログラムの大きさで決定される。また先頭アドレス７４、７５、７６は、図２の開始アドレス変更手段３１に入力されるアドレス４８として、パケット毎に抽出位置を変更する目的で外部から与えられる。
【００３３】
図６に図２に示す回路の動作フローチャートを示す。図６を参照して動作を説明する。
【００３４】
回路の起動後、パケット到着待ちとなる（ステップ１）。パケットが到着すると、アドレスカウンタ２１、パケット位置カウンタ２４、パケット内抽出位置カウンタ２５を初期化する（ステップ２）。
【００３５】
次に、命令解釈手段２２は、プログラム蓄積手段２０におけるアドレスカウンタ２１で確定したアドレスからプログラムを１行（１ワード）読み込み（ステップ３）、制御命令／抽出パターンを判断する（ステップ４）。
【００３６】
制御命令の場合、ＳＴＯＰかＪＭＰかの命令判断を行なう（ステップ５）。命令がＳＴＯＰである場合、パケット到着待ちに戻る。
【００３７】
ＪＭＰの場合には、パケット内抽出位置カウンタ２５にオフセット値を加算し（ステップ６）、次のプログラム行を読み込む動作に戻る。
【００３８】
ステップ４の判断において、プログラムが抽出パターンの場合、抽出対象判断を比較器２６で、パケット情報抽出手段２８におけるパケット中のワード（パケット位置カウンタ２４により示されている位置のワード）が抽出対象のワードであるか否かを判断する（ステップ７）。抽出対象でない場合、パケット位置カウンタ２４を加算し（ステップ８）、抽出対象判断に戻る。抽出対象である場合（パケット位置カウンタ２４の値＝パケット内抽出位置カウンタ２５である場合）、ワード内抽出位置蓄積手段２３内のパターンに従いデータ抽出を実行し（ステップ９）、パケット位置カウンタ２４、パケット内抽出位置カウンタ２５、アドレスカウンタ２１を加算する（ステップ１０）。パケットが終了したか否か判断し（ステップ１１）、パケットが終了した場合、パケット到着待ちに戻る。パケットが終了していない場合、プログラム１行読み込みに戻る。
【００３９】
次に、本実施の形態の具体的な動作について説明する。
【００４０】
図７に、入力パケット８０と、抽出プログラム８３の一例を示す。図中、入力パケット８０の中の黒塗りの部分（８１）はパケット８０内の抽出対象バイトデータ（８Bit）を示し、白い部分（８２）はパケット８０内の非抽出バイトデータ（８Bit）を示す。パケット８０は、パケット情報抽出手段２８に４バイトを１ワードとする形態で入力される。
【００４１】
参照符号８３に示す記述は、パケット８０内の複数の位置の抽出対象バイトデータを図２の機構を使用して抽出するためのプログラム記述である。以下、プログラムの実行順に従い、プログラム１行ずつ順を追って説明する。
【００４２】
ここでは、図２のプログラム蓄積手段２０の先頭から７ワード目に抽出プログラム８３が格納され、開始アドレス変更手段３１の入力４８には開始アドレスとしてプログラム蓄積手段２０の先頭アドレスが指定されているものとする。
【００４３】
プログラムの抽出命令は、１ワード内の抽出位置として下位の４Bitを使用する。また、１Bitは１Byteの抽出を意味する。
【００４４】
パケット８０がパケット情報抽出手段２８に入力されると、パケット位置カウンタ２４は先頭ワード位置０に設定される。また、アドレスカウンタ２１はプログラムの先頭アドレスが設定される。
【００４５】
その結果、プログラム蓄積手段２０に先頭アドレスが出力され、プログラムの第１ワード（８４）がプログラム蓄積手段２０から命令解釈手段２２に出力される。命令解釈手段２２はプログラムの第１ワード（８４）を取り込み、プログラムの第１ワード（８４）が制御命令であり、ジャンプであり、パラメータが２であることを解釈し、初期値０としたパケット内抽出位置カウンタ２５にパラメータ２を加算する。これにより、パケット内抽出位置カウンタ２５の値は２となる。
【００４６】
そして、パケット情報抽出手段２８は入力パケット８０を先頭から２ワード進める。この時点でプログラムの第１ワード（８４）の命令は終了する。
【００４７】
次に、命令解釈手段２２はアドレスカウンタ２１を１つ進める。アドレスは先頭アドレス＋１となり、プログラム蓄積手段２０から抽出プログラム８３の２ワード目の命令８５が出力される。命令解釈手段２２は命令８５が抽出命令であり、“００１０”の１の部分を抽出すると判断し、ワード内抽出位置蓄積手段２３に“００１０”を出力する。また、パケット内抽出位置カウンタ２５を１つ加算する。この時、ワード内抽出位置蓄積手段２３は“００１０”を格納している。また、パケット位置カウンタ２４は値“２”、パケット内抽出位置カウンタ２５は値“３”を格納している。ここで、パケット内抽出位置カウンタ２５とパケット位置カウンタ２４は一致していないので、信号４１は活性化されておらず、動作制約器２７の出力は“００００”となっている。
【００４８】
ここで、パケット情報抽出手段２８はパケット８０をさらに１ワード読み込み、パケット位置カウンタ２４を１つ加算する。すると、パケット位置カウンタ２４の値は“３”となり、パケット内抽出位置カウンタ２５の値と一致し、比較器２６により、４１は活性化され、動作制約器２７が動作し、パケット情報抽出手段２８に対して３７の値“００１０”が出力される。
【００４９】
パケット情報抽出手段２８は、その出力“００１０”に従い、パケット８０からデータを抽出し、抽出情報蓄積手段２９に対して出力し、抽出情報蓄積手段２９はそのデータを格納する。これで、８５の命令が終了する。
【００５０】
次に、命令解釈手段２２はアドレスカウンタ２１を１つ進める。アドレスは先頭アドレス＋２となり、プログラム蓄積手段２０から命令解釈手段２２に対して抽出プログラム８３の３ワード目の命令８６が出力される。命令解釈手段２２は命令８６が抽出命令であり、“００１１”の１の部分を抽出すると判断し、ワード内抽出位置蓄積手段２３に対して“００１１”を出力する。また、パケット内抽出位置カウンタ２５を１つ加算する。この時、ワード内抽出位置蓄積手段２３は“００１１”を格納している。また、パケット位置カウンタ２４は値“３”、パケット内抽出位置カウンタ２５は値“４”を格納している。ここで、パケット内抽出位置カウンタ２５とパケット位置カウンタ２４は一致していないので、信号４１は活性化されておらず、動作制約器２７の出力は“００００”となっている。
【００５１】
ここで、パケット情報抽出手段２８はパケット８０をさらに１ワード読み込み、パケット位置カウンタ２４を１つ加算する。すると、パケット位置カウンタ２４の値は“４”となり、パケット内抽出位置カウンタ２５の値と一致し、比較器２６により、４１は活性化され、動作制約器２７が動作し、パケット情報抽出手段２８に対して３７の値“００１１”が出力される。
【００５２】
パケット情報抽出手段２８は、その出力“００１１”に従い、パケット８０からデータを抽出し、抽出情報蓄積手段２９に対して出力し、抽出情報蓄積手段２９はそのデータを格納する。これで、８６の命令が終了する。
【００５３】
次に、命令解釈手段２２はアドレスカウンタ２１を１つ進める。アドレスは先頭アドレス＋３となり、プログラム蓄積手段２０から命令解釈手段２２に対して抽出プログラム８３の４ワード目の命令８７が出力される。命令解釈手段２２は命令８７が抽出命令であり、“１１１０”の１の部分を抽出すると判断し、ワード内蓄積手段２３に対して“１１１０”を出力する。また、パケット内抽出位置カウンタ２５を１つ加算する。この時、ワード内抽出位置蓄積手段２３は“１１１０”を格納している。また、パケット位置カウンタ２４は値“４”、パケット内抽出位置カウンタ２５は値“５”を格納している。ここで、パケット内抽出位置カウンタ２５とパケット位置カウンタ２４は一致していないので、信号４１は活性化されておらず、動作制約器２７の出力は“００００”となっている。
【００５４】
ここで、パケット情報抽出手段２８はパケット８０をさらに１ワード読み込み、パケット位置カウンタ２４を１つ加算する。すると、パケット位置カウンタ２４の値は“５”となり、パケット内抽出位置カウンタ２５の値と一致し、比較器２６により、４１は活性化され、動作制約器２７が動作し、パケット情報抽出手段２８に対して３７の値“１１１０”が出力される。
【００５５】
パケット情報抽出手段２８は、その出力“１１１０”に従い、パケット８０からデータを抽出し、抽出情報蓄積手段２９に対して出力し、抽出情報蓄積手段２９はそのデータを格納する。これで、８７の命令が終了する。
【００５６】
次に、命令解釈手段２２はアドレスカウンタ２１を１つ進める。アドレスは先頭アドレス＋４となり、プログラム蓄積手段２０から抽出プログラム８３の５ワード目の命令８８が出力される。命令解釈手段２２は命令８８を取り込み、命令８８が制御命令であり、ジャンプであり、パラメータが７である事を解釈し、現在“５”であるパケット内抽出位置カウンタ２５に命令８８のパラメータ７を加算する。パケット内抽出位置カウンタ２５の値は１２となる。パケット情報抽出手段２８はパケット８０を先頭から７ワード進める。この時点で８８の命令は終了する。
【００５７】
次に、命令解釈手段２２はアドレスカウンタ２１を１つ進める。アドレスは先頭アドレス＋５となり、プログラム蓄積手段２０から命令解釈手段２２に対して抽出プログラム８３の６ワード目の命令８９が出力される。命令解釈手段２２は命令８９が抽出命令であり、“０１０１”の１の部分を抽出すると判断し、ワード内蓄積手段２３に対して“０１０１”を出力する。また、パケット内抽出位置カウンタ２５を１つ加算する。この時、ワード内抽出位置蓄積手段２３は“０１０１”を格納している。また、パケット位置カウンタは値“１２”、パケット内抽出位置カウンタ２５は値“１３”を格納している。ここで、パケット内抽出位置カウンタ２５とパケット位置カウンタ２４は一致していないので、信号４１は活性化されておらず、動作制約器２７の出力は“００００”となっている。
【００５８】
ここで、パケット情報抽出手段２８はパケット８０をさらに１ワード読み込み、パケット位置カウンタ２４を１つ加算する。すると、パケット位置カウンタ２４の値は“１３”となり、パケット内抽出位置カウンタ２５の値と一致し、比較器２６により、４１は活性化され、動作制約器２７が動作し、パケット情報抽出手段２８に対して３７の値“０１０１”が出力される。
【００５９】
パケット情報抽出手段２８は、その出力“０１０１”に従い、パケット８０からデータを抽出し、抽出情報蓄積手段２９に対して出力し、抽出情報蓄積手段２９はそのデータを格納する。これで、８９の命令が終了する。
【００６０】
次に、命令解釈手段２２はアドレスカウンタ２１を１つ進める。アドレスは先頭アドレス＋６となり、プログラム蓄積手段２０から命令解釈手段２２に対して抽出プログラム８３の７ワード目の命令９０が出力される。命令解釈手段２２は命令９０を取り込み、命令９０が制御命令であり、ストップ（ＳＴＯＰ）である事を解釈し、パケット８０をパケット情報抽出手段２８を経由して、全て出力し、ワード内抽出位置蓄積手段２３、パケット位置カウンタ２４、ケット内抽出位置カウンタ２５、アドレスカウンタ２１を初期化し、次のパケット到着を待つ。
【００６１】
次に、図２の回路におけるパケット情報抽出手段２８についてより詳細に説明する。図８は、パケット情報抽出手段２８の詳細構成例である。図８に示す例は、パケット情報抽出手段２８を４Byte（３２Bit）幅で構成した例である。
【００６２】
図８に示すように、パケット情報抽出手段２８はバイト毎にセレクタ２８１〜２８４を備えている。また、シフトレジスタ２８５を備えている。
【００６３】
ワード内抽出位置指示（４Bit）に応じて、セレクタはシフトレジスタ２８５へByteのデータを複製出力する。シフトレジスタ２８５は、各セレクタからのByteデータを、ワード内抽出位置指示に従い、空きByteが生じないように詰める。シフトレジスタ２８５が４Byteで、入力ワード内抽出位置指示で４Byte全てが抽出対象となった場合、シフトレジスタ２８５は通常の４Byteレジスタと同じ動作となる。
【００６４】
入力ワード内抽出位置指示で、特定のByteが抽出対象となった場合（例えば、ワード内抽出位置指示が０１０１の場合）、０で指示された部分は１の部分をシフトして埋める。すなわち、ワード内抽出位置指示が０１０１の場合、２Byte分の空きができる。そして、次の入力ワード内抽出位置指示で２Byte抽出する場合、その時点で抽出情報蓄積手段２９に抽出データが転送される。次の入力ワード内抽出位置指示で指示される抽出データが１Byteだった場合、１Byteの空きがあるので、次の、次の入力ワード内抽出位置指示で抽出データが１Byte以上となった時点で抽出データが抽出情報蓄積手段に転送される。
【００６５】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内で種々変更・応用が可能である。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施に形態におけるデータ抽出回路の概略構成を示す図である。
【００６７】
【図２】本発明の実施に形態におけるデータ抽出回路の詳細構成を示す図である。
【００６８】
【図３】データ抽出回路で用いられるパケット情報抽出プログラムの中の命令の構成を示す図である。
【００６９】
【図４】パケット情報抽出プログラムにおける命令系を示す図である。
【００７０】
【図５】プログラム蓄積手段２０の内容の一例を示す図である。
【００７１】
【図６】本発明の実施の形態のデータ抽出回路の動作フローチャートである。
【００７２】
【図７】入力パケット８０と、抽出プログラム８３の一例を示す図である。
【００７３】
【図８】パケット情報抽出手段２８の詳細構成例である。
【符号の説明】
【００７４】
１  プログラム蓄積手段
２  プログラム読み出し手段
３  命令解釈手段
４  データ抽出手段
５  抽出データ蓄積手段
６  プログラム変更手段
２０  プログラム蓄積手段
２１  アドレスカウンタ
２２  命令解釈手段
２３  抽出位置蓄積手段
２４  パケット位置カウンタ
２５  パケット内抽出位置カウンタ
２６  比較器
２７  動作抑制器
２８  パケット情報抽出手段
２９  抽出情報蓄積手段
３０  プログラム変更手段
３１  開始アドレス変更手段
２８１〜２８４  セレクタ
２８５  シフトレジスタ
【図１】
2005039615.tif 000003
【図２】
2005039615.tif 000004
【図３】
2005039615.tif 000005
【図４】
2005039615.tif 000006
【図５】
2005039615.tif 000007
【図６】
2005039615.tif 000008
【図７】
2005039615.tif 000009
【図８】
2005039615.tif 000010