(57)【要約】【課題】パケット構文解析に要する処理時間を短縮でき、消費電力を低減できるとともに、処理対象の通信プロトコルの変更を可能にする。【解決手段】特定要素回路１１０では、特定パラメータレジスタ部１２２により要素プロトコルのいずれかに対応するパラメータ群を変更可能に記憶し、特定パラメータレジスタ部１２２のパラメータ群を用いて、特定ヘッダ解析部１１２により当該要素プロトコルの下に作成されたヘッダを解析する。また、適応要素回路１０１０では、適応パラメータレジスタ部１０２４により要素プロトコルに対応するパラメータ群を複数記憶し、特定ヘッダ解析部１１２によりヘッダＩＤで指定して特定パラメータレジスタ部１２２から取得したパラメータ群を用いて、当該要素プロトコルの下に作成されたヘッダを解析する。【選択図】  図１
2005303414.tif 000002
【特許請求の範囲】
【請求項１】
各種通信用プロトコルを要素としこれら要素プロトコルの集合からなる通信保証プロトコルについて、前記要素プロトコルの下に作成されたパケットの構文解析を行うパケット構文解析装置において、
前記要素プロトコルのいずれかの下に作成されたヘッダ内の情報を解析する要素回路を備え、
前記要素回路は、前記要素プロトコルのいずれかに対応するパラメータ群を変更可能に記憶する特定パラメータレジスタ部と、この特定パラメータレジスタ部に記憶されているパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を解析する特定ヘッダ解析部とを有することを特徴とするパケット構文解析装置。
【請求項２】
各種通信用プロトコルを要素としこれら要素プロトコルの集合からなる通信保証プロトコルについて、前記要素プロトコルの下に作成されたパケットの構文解析を行うパケット構文解析装置において、
前記要素プロトコルのいずれかの下に作成されたヘッダ内の情報を解析する要素回路を備え、
前記要素回路は、前記要素プロトコルのいずれか複数に対応するパラメータ群をそれぞれ記憶する適応パラメータレジスタ部と、この適応パラメータレジスタ部に記憶されている任意のパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を解析する適応ヘッダ解析部とを有し、
前記適応ヘッダ解析部は、所定の要素プロトコルに固有の識別情報を前記適応パラメータレジスタ部へ通知することにより、解析対象となる要素プロトコルに対応するパラメータ群を前記適応パラメータレジスタ部から取得することを特徴とするパケット構文解析装置。
【請求項３】
請求項１または請求項２に記載のパケット構文解析装置において、
所定の順序に縦続接続された前記要素回路を複数備え、
前記要素回路は、解析対象となるパケットの作成に組み合わせて用いられる前記要素プロトコルのいずれかの下に作成されたヘッダ内の情報をそれぞれ解析することを特徴とするパケット構文解析装置。
【請求項４】
請求項３に記載のパケット構文解析装置において、
前記要素回路は、前記通信保証プロトコルに応じて決まるヘッダの配列の順序に、縦続接続されていることを特徴とするパケット構文解析装置。
【請求項５】
請求項３に記載のパケット構文解析装置において、
前記要素回路は、縦続接続された前記各要素回路のうち自要素回路よりも先頭寄りの要素回路で生成された識別子マークで特定される情報に応じて、前記パケットを構成する前記ヘッダ内の情報を解析することを特徴とするパケット構文解析装置。
【請求項６】
請求項５に記載のパケット構文解析装置において、
前記要素回路は、前記ヘッダ内の情報を解析して目的とする情報を検出した際、検出された前記情報に関する識別子マークとして、当該パケット内における前記ヘッダの開始位置を特定するアクションコードを生成することを特徴とするパケット構文解析装置。
【請求項７】
請求項５に記載のパケット構文解析装置において、
前記要素回路は、前記ヘッダ内の情報を解析して目的とする情報を検出した際、検出された前記情報に関する識別子マークとして、前記ヘッダ内における前記情報の位置を特定するマークコードを生成することを特徴とするパケット構文解析装置。
【請求項８】
請求項１に記載のパケット構文解析装置において、
前記要素プロトコルのいずれかの下に作成されたヘッダ内の情報を解析する適応要素回路を、前記要素回路の後段に縦続接続して備え、
前記適応要素回路は、前記要素プロトコルのいずれか複数に対応するパラメータ群をそれぞれ記憶する適応パラメータレジスタ部と、この適応パラメータレジスタ部に記憶されている任意のパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を解析する適応ヘッダ解析部とを有し、
前記適応ヘッダ解析部は、所定の要素プロトコルに固有の識別情報を前記適応パラメータレジスタ部へ通知することにより、解析対象となる要素プロトコルに対応するパラメータ群を前記適応パラメータレジスタ部から取得することを特徴とするパケット構文解析装置。
【請求項９】
請求項８に記載のパケット構文解析装置において、
前記特定要素回路での解析結果に基づいて当該適応ヘッダ解析部で解析対象となる要素プロトコルに固有の識別情報を生成する識別情報生成部をさらに有し、
前記適応ヘッダ解析部は、前記識別情報生成部からの識別情報を用いて所望のパラメータ群を前記適応パラメータレジスタ部から取得することを特徴とするパケット構文解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信技術に関し、特にネットワーク上の中継機器に用いられ、受信したパケットの構成の解析（以下、パケット構文解析という）を行うパケット構文解析技術に関する。
【背景技術】
【０００２】
従来、受信したパケットの経路制御を行うネットワーク機器として、Ｌ２スイッチ（Layer 2 Switch）やＬ３スイッチ（Layer 3 Switch）などの中継機器が知られている。これらは、それぞれ、ＯＳＩ（Open System Interconnection）参照モデルにおけるレイヤ２、レイヤ３の情報に基づいて、受信したパケットの経路制御などを行うものである。
一方、通信の多様化に伴い、例えばレイヤ３のＩＰ（Internet Protocol）、レイヤ４のＴＣＰ（Transmission Control Protocol）、ＵＤＰ（User Datagram Protocol）などの、様々な通信プロトコルに基づいて通信が行われるようになってきた。
【０００３】
また、通信品質（ＱｏＳ：Quality of Serviceともいう）を考慮した中継機器も研究され、これらの中継機器では、パケットの所定のフィールドに記録された情報、例えば、ＩＰｖ４の場合は、ＴｏＳ（Type of Service）値などの情報に応じてパケットを振り分けて、パケットごとに異なる通信品質で通信が行われる（例えば、特許文献１など参照）。そして、通信品質に応じて多様にパケットを分類しようとする場合、プログラムに基づいてパケットのヘッダ情報などを読み出すパケット構文解析が行われていた。
【０００４】
なお、出願人は、本明細書に記載した先行技術文献情報で特定される先行技術文献以外には、本発明に関連する先行技術文献を出願時までに発見するには至らなかった。
【特許文献１】特開２００３−２４４２２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような従来のパケット構文解析技術では、種々の通信プロトコルの下に生成されたパケットを多様に分類しようとする場合、プログラムに基づいて演算処理部（ＣＰＵ）が分類処理を行うようになっているため、パケット構文解析に要する処理時間が長い、消費電力が大きい、高価であるなどの問題があった。また、ハードウェアで上記の分類処理を行う構成では、処理対象の通信プロトコルを大きく変えることができないという問題点があった。
本発明はこのような課題を解決するためのものであり、パケット構文解析に要する処理時間を短縮でき、消費電力を低減できるとともに、処理対象の通信プロトコルの変更を可能にするパケット構文解析装置を提供することを目的としている。
【課題を解決するための手段】
【０００６】
このような目的を達成するために、本発明にかかるパケット構文解析装置は、各種通信用プロトコルを要素としこれら要素プロトコルの集合からなる通信保証プロトコルについて、要素プロトコルの下に作成されたパケットの構文解析を行うパケット構文解析装置において、要素プロトコルのいずれかの下に作成されたヘッダ内の情報を解析する要素回路を備え、要素回路は、要素プロトコルのいずれかに対応するパラメータ群を変更可能に記憶する特定パラメータレジスタ部と、この特定パラメータレジスタ部に記憶されているパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を解析する特定ヘッダ解析部とを有するものである。
【０００７】
また、本発明にかかる他のパケット構文解析装置は、各種通信用プロトコルを要素としこれら要素プロトコルの集合からなる通信保証プロトコルについて、要素プロトコルの下に作成されたパケットの構文解析を行うパケット構文解析装置において、要素プロトコルのいずれかの下に作成されたヘッダ内の情報を解析する要素回路を備え、要素回路は、要素プロトコルのいずれか複数に対応するパラメータ群をそれぞれ記憶する適応パラメータレジスタ部と、この適応パラメータレジスタ部に記憶されている任意のパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を解析する適応ヘッダ解析部とを有し、適応ヘッダ解析部は、所定の要素プロトコルに固有の識別情報を適応パラメータレジスタ部へ通知することにより、解析対象となる要素プロトコルに対応するパラメータ群を適応パラメータレジスタ部から取得するようにしたものである。
【０００８】
この際、上記各パケット構文解析装置において、所定の順序に縦続接続された要素回路を複数備え、要素回路で、解析対象となるパケットの作成に組み合わせて用いられる要素プロトコルのいずれかの下に作成されたヘッダ内の情報をそれぞれ解析するようにしてもよい。
【０００９】
さらに、要素回路を、通信保証プロトコルに応じて決まるヘッダの配列の順序に、縦続接続するようにしてもよい。
【００１０】
あるいは、要素回路で、縦続接続された各要素回路のうち自要素回路よりも先頭寄りの要素回路で生成された識別子マークで特定される情報に応じて、パケットを構成するヘッダ内の情報を解析するようにしてもよい。
【００１１】
この際、要素回路で、ヘッダ内の情報を解析して目的とする情報を検出した際、検出された情報に関する識別子マークとして、当該パケット内におけるヘッダの開始位置を特定するアクションコードを生成するようにしてもよい。
【００１２】
あるいは、要素回路で、ヘッダ内の情報を解析して目的とする情報を検出した際、検出された情報に関する識別子マークとして、ヘッダ内における情報の位置を特定するマークコードを生成するようにしてもよい。
【００１３】
また、要素プロトコルのいずれかの下に作成されたヘッダ内の情報を解析する適応要素回路を、要素回路の後段に縦続接続して備え、適応要素回路に、要素プロトコルのいずれか複数に対応するパラメータ群をそれぞれ記憶する適応パラメータレジスタ部と、この適応パラメータレジスタ部に記憶されている任意のパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を解析する適応ヘッダ解析部とを設け、適応ヘッダ解析部で、所定の要素プロトコルに固有の識別情報を適応パラメータレジスタ部へ通知することにより、解析対象となる要素プロトコルに対応するパラメータ群を適応パラメータレジスタ部から取得するようにしてもよい。
【００１４】
この際、特定要素回路での解析結果に基づいて当該適応ヘッダ解析部で解析対象となる要素プロトコルに固有の識別情報を生成する識別情報生成部をさらに設け、適応ヘッダ解析部で、識別情報生成部からの識別情報を用いて所望のパラメータ群を適応パラメータレジスタ部から取得するようにしてもよい。
【発明の効果】
【００１５】
本発明によれば、個々の要素プロトコルに対応する要素回路（特定要素回路）を設けて、その要素プロトコルの下に作成されたヘッダ内の情報を解析するものとし、これに加えて、上記要素回路において、解析に用いるパラメータ群を特定パラメータレジスタ部で変更可能に記憶し、この特定パラメータレジスタ部のパラメータ群を用いて特定ヘッダ解析部でヘッダ内の情報を解析するようにしたので、プログラムを必要とすることなくパケット構文解析でき、パケット構文解析に要する処理時間を短縮し、消費電力を低減できるとともに、処理対象の通信プロトコルを変更することができる。
【００１６】
また、個々の要素プロトコルに対応する要素回路（適応要素回路）を設け、その要素プロトコルの下に作成されたヘッダ内の情報を解析するものとし、これに加えて、上記要素回路において、解析に用いるパラメータ群を適応パラメータレジスタ部で複数記憶し、所定の要素プロトコルに固有の識別情報を適応ヘッダ解析部から適応パラメータレジスタ部へ通知することにより、解析対象となる要素プロトコルに対応するパラメータ群を適応パラメータレジスタ部から取得するようにしたので、プログラムを必要とすることなくパケット構文解析でき、パケット構文解析に要する処理時間を短縮し、消費電力を低減できるとともに、解析対象とする通信プロトコルを任意に選択することができる。
【発明を実施するための最良の形態】
【００１７】
次に、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
まず、図１を参照して、本発明の第１の実施の形態にかかるパケット構文解析装置について説明する。図１は本発明の第１の実施の形態にかかるパケット構文解析装置の構成を示すブロック図である。
このパケット構文解析装置１００は、各種通信用プロトコルを要素としこれら要素プロトコルの集合からなる通信保証プロトコルについて、要素プロトコルのいずれかの下に作成されたヘッダ内の情報をそれぞれ解析する１つ以上の特定要素回路（要素回路）１１０を用いて、要素プロトコルの下に作成されたパケットの構文解析を行う装置である。
【００１８】
この際、特定要素回路１１０では、要素プロトコルのいずれかに対応するパラメータ群を特定パラメータレジスタ部で変更可能に記憶しておき、この特定パラメータレジスタ部に記憶されているパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を特定ヘッダ解析部で解析している。
【００１９】
［第１の実施の形態の構成］
次に、図１を参照して、本発明の第１の実施の形態にかかるパケット構文解析装置の構成について説明する。
パケット構文解析装置１００には、入力パケットデータ、入力制御信号、およびクロックが入力され、パケット構文解析装置１００からは、出力パケットデータおよび出力制御信号が出力される。入力パケットデータでは、所定のパケット間ギャップの時間間隔でパケットが分離されている。各パケットは、最初のヘッダがＥｔｈｅｒｎｅｔ（登録商標）ヘッダであり、１つ以上のヘッダを有するものとする。入力パケットデータは、１ワード（３２ビット）単位でパケット構文解析装置１００に入力されるものとする。
【００２０】
パケット構文解析装置１００は、Ｅｔｈｅｒｎｅｔ用のプロトコル、ＰＰＰ（Point to Point Protocol）、ＩＰｖ４（Internet Protocol version 4）、ＩＰｖ６（Internet Protocol version 6）など、各種通信用プロトコルを要素とし、これら要素プロトコルの集合からなる通信保証プロトコルについて、１つ以上の要素プロトコルの組み合わせの下に作成されるパケットの構文解析を行う。
【００２１】
このパケット構文解析装置１００には、第１の特定要素回路１１０1から第Ｍの特定要素回路１１０MまでのＭ（Ｍは２以上の整数）個の特定要素回路１１０m（ｍは１〜Ｍの整数）が設けられており、これら特定要素回路１１０mが入力パケットデータに対して縦続接続（カスケード接続）された構成をなしている。
各特定要素回路１１０mは、第ｍの特定ヘッダ解析部１１２mと、この第ｍの特定ヘッダ解析部１１２mと接続された特定パラメータレジスタ部１２２mとから構成されており、第ｍの特定ヘッダ解析部１１２mが他の特定要素回路１１０の特定ヘッダ解析部と縦続接続されている。
【００２２】
特定ヘッダ解析部１１２mは、上記通信保証プロトコルの各要素である要素プロトコルごとに設けられ、特定パラメータレジスタ部１２２mで記憶されているパラメータ群に基づき、対応する要素プロトコルの下に作成されたヘッダ内の情報を解析する。
これらヘッダ解析部１１２mは、通信保証プロトコルに応じて決まるヘッダの配列の順序に、縦続接続されているものとする。
【００２３】
具体例としては、第１のヘッダ解析部１１２1がＥｔｈｅｒｎｅｔのヘッダ用、第２のヘッダ解析部１１２2がＶＬＡＮ（Virtual-LAN）のヘッダ用、第３のヘッダ解析部１１２3がＰＰＰｏＥ（PPP over Ethernet）のヘッダ用、第４のヘッダ解析部１１２4がＩＰｖ４のヘッダ用、第５のヘッダ解析部１１２5がＩＰｖ６のヘッダ用、第６のヘッダ解析部１１２6がＡＨ（Authentication Header）ヘッダ用、第７のヘッダ解析部１１２7がＥＳＰ（Encapsulating Security Payload）ヘッダ用、第８のヘッダ解析部１１２8がＴＣＰのヘッダ用、第９のヘッダ解析部１１２9がＵＤＰのヘッダ用であり、この順序にこれらヘッダ解析部１１２mを縦続接続してもよく、他の順序であってもよい。
【００２４】
特定パラメータレジスタ部１２２mは、上記通信保証プロトコルの要素プロトコルのいずれかに対応するパラメータ群を変更可能に記憶する。
図１に示す構成では、第ｍの特定ヘッダ解析部１１２mに対応する第ｍの特定パラメータレジスタ部１２２mから、特定要素回路１１０mで解析対象となる要素プロトコルのパラメータ群［ｍ］が入力される。また、各特定ヘッダ解析部１１２mはレジスタアクセス用バス１３０を介して外部のＣＰＵ等の制御回路（図示せず）に接続されている。
【００２５】
このような構成とすることにより、レジスタアクセス用バス１３０を介した外部のＣＰＵ等からの指示により、特定要素回路レジスタが記憶するパラメータ群を容易に変更することができる。
すなわち、特定パラメータレジスタ部１２２mのアドレスを指定して、読み出した情報を特定ヘッダ解析部１１２mに出力することにより、特定ヘッダ解析部１１２mに入力されるパラメータ群に応じて処理対象のヘッダを変更することができるようになる。
なお、第ｍの特定パラメータレジスタ部１２２mは、パラメータ群として、異なる要素プロトコルのパラメータ群を複数記憶してもよい。
【００２６】
また、特定パラメータレジスタ部１２２mは、各特定要素回路１１０1〜１１０Mで共用される単一のものとして構成し、各特定ヘッダ解析部１１２mへ出力するすべてのパラメータ群を一括して保持するようにしてもよい。さらに各特定要素回路１１０1〜１１０Mに特定パラメータレジスタ部１２２mから通知されたパラメータ群を保持する内部レジスタを設けてもよい。
この場合は、レジスタアクセス用バス１３０を取り除き、直接、外部のＣＰＵ等からの指示が特定パラメータレジスタ部１２２mへ入力される構成としてもよい。ただし、本発明は、上記の構成に限定されるものではなく、特定ヘッダ解析部の特定要素回路レジスタがパラメータ群を変更可能に記憶できる構成であれば、他の構成でもよい。
【００２７】
図１に示す構成では、先頭の特定ヘッダ解析部として、Ｅｔｈｅｒｎｅｔ用のヘッダ（以下、単に「Ｅｔｈｅｒｎｅｔヘッダ」という）を解析する専用のＥｔｈｅｒｎｅｔ特定ヘッダ解析部１１１から設けられている。
これは、図１のパケット構文解析装置１００が、パケットの先頭にＥｔｈｅｒｎｅｔヘッダが存在するパケットを解析処理する装置を前提としているためであり、このように解析する要素プロトコルが固定的に決まる場合には、固定的なパラメータ群を用いればよいことから特定要素回路１１０を用いる必要はない。
【００２８】
このように、パケット構文の解析順序のうち、所定の順序位置で予め決められた要素プロトコルのヘッダを解析する場合は、そのヘッダ専用の特定ヘッダ解析部を、縦列接続された特定要素回路の先頭、後尾、あるいは中間に配置してもよい。なお、解析する要素プロトコルが固定的に決まる場合であっても、特定要素回路１１０を用いてもよい。
また、図１には、特定要素回路１１０が複数縦続接続されている場合が例として示されているが、これに限定されるものではなく、例えば通信保証プロトコルで用いられる要素プロトコルが１つの場合や、要素プロトコルが変更されうる箇所（順序位置）が１つの場合には、特定要素回路１１０として１つ用意するだけでよい。
【００２９】
［第１の実施の形態の動作］
次に、図２を参照して、本発明の第１の実施の形態にかかるパケット構文解析装置１００の動作について説明する。図２は、パケット構文解析装置１００に入力される入力パケットデータおよび入力制御信号の構成、並びにパケット構文解析装置１００の動作についての説明図である。
パケット構文解析装置１００に入力されたクロックは、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１および各特定ヘッダ解析部１１２m（ｍは１〜Ｍの整数）に入力されるものとして説明する。
【００３０】
入力パケットデータは、図２に示すように、パケット間ギャップで分離されたパケットがシリアルに並んだ構成を有している。図２に示す各箱は、デジタル信号を示し、ここでは、１バイト単位の信号を表すものとする。
例えば、Ｅｔｈｅｒｎｅｔヘッダは、先頭から６バイト（図２の「ａ」〜「ｆ」の符号が記載され箱）の宛先ＭＡＣアドレス、それに続く６バイト（図２の「９」〜「ｌ」の符号が記載され箱）の送信元ＭＡＣアドレス、および次ヘッダの種別を示す２バイト（図２の「ｍ」，「ｎ」の符号が記載され箱）のＥｔｈｅｒタイプによって構成されている。そして、このＥｔｈｅｒｎｅｔヘッダに引き続いて後続のヘッダおよびペイロードが形成され、最後に、ＦＣＳ（Frame Check Sequence）が設けられている。このペイロードには、他の要素プロトコルのヘッダやペイロード等を形成できるようになっている。
【００３１】
入力制御信号は、入力パケットデータに対応して設けられ、入力パケットデータに含まれる各パケットの先頭位置や終了位置を特定するための信号である。図２では、入力制御信号が「１」のとき、入力された信号は、Ｅｔｈｅｒｎｅｔパケットの外であることを示す例が示されている。したがって、入力制御信号が「０」のとき、入力された信号はＥｔｈｅｒｎｅｔパケット内のデータに相当していることになる。
【００３２】
パケット構文解析装置１００に入力される入力パケットデータは、パラレルに入力してもよく、以下では、入力パケットデータが、図２に示すように４バイト（３２ビット）ずつパラレルに入力されるものとして説明する。
図２には、パケットが第２列目の上から２段目から始まる例が示されている。このことを示すため、入力制御信号も、第２列目の上から２段目から「０」に変わっている。
【００３３】
パケット構文解析装置１００（図１参照）に、このような入力パケットデータ、入力制御信号、およびクロックが入力されると、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１は、Ｅｔｈｅｒｎｅｔヘッダを解析し、制御信号［０］とリセット信号を生成し、所定の遅延［０］が付与されたパケットデータ［０］とともに出力する。
パケットデータ［０］および制御信号［０］は、後続の第１の特定ヘッダ解析部１１２1に出力され、リセット信号は、後続の各特定ヘッダ解析部１１２mに出力される。
【００３４】
ここで、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１および各特定ヘッダ解析部１１２mは、各パケットデータに対応する制御信号として、例えばパケット内またはヘッダ内の位置を特定する信号であるアクションコードまたはマークコードを含む識別子マーク（以下、アクションコードもしくはマークコードのいずれか、またはアクションコードおよびマークコードの両方を識別子マークという）を生成し、出力するようになっている。
【００３５】
アクションコードは、対応する要素プロトコルのヘッダの開始位置を特定し、または所定の処理を指示する信号である。マークコードは、検出した識別子に対応する、ヘッダ内の情報の位置を特定する信号である。
このうち、アクションコードとしては、次ヘッダ位置フラグを含んでいてもよく、次ヘッダ解析指示を含んでいてもよい。以下では、各制御信号［ｍ］（ｍは０〜Ｍの整数）は、図２に示すように識別子マークおよび次ヘッダ位置フラグを含むものとして説明する。
【００３６】
また、リセット信号は、パケットデータに対応して設けられ、パケットの信号を含まないときに「１」であり、パケットデータにパケットの信号が含まれるときは「０」である。図２の例では、パケットデータの先頭（左端の列のデータ、「＊」の符号が記載され箱が４つ並んだ列のデータ）に対応するタイミングにおいてリセット信号として「１」が出力され、その次の列（「＊」、「＊」、「ａ」、「ｂ」の符号が記載され箱が縦に並んだ列）からパケットの信号が含まれるため、リセット信号として「０」が出力される。
【００３７】
図２に示す例では、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１から出力される制御信号［０］としては、宛先ＭＡＣアドレス（図２の「ａ」〜「ｆ」の符号が記載され箱）に対応して、宛先ＭＡＣアドレスの先頭から１バイトごとに１６進数の「１」を示す１バイトの信号が出力され、送信元ＭＡＣアドレス（図２の「ｇ」〜「ｉ」の符号が記載され箱）に対応して、送信元ＭＡＣアドレスの先頭から１バイトごとに１６進数の「２」を示す１バイトの信号が出力される。
【００３８】
同様にして、Ｅｔｈｅｒタイプを示す２バイトの信号（図２の「ｍ」，「ｎ」の符号が記載され箱）に対応して、Ｅｔｈｅｒタイプの先頭から１バイトごとに１６進数の「３」を示す１バイトの信号が出力される。
Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１は、Ｅｔｈｅｒｎｅｔヘッダを解析対象とするため、後続のヘッダについては解析を行わず、後続のヘッダに対応する制御信号［０］は、「０」のままになっている。そして、次ヘッダの位置（「ｏ」、「ｐ」、「ｑ」、「ｒ」の符号が記載され箱が縦に並んだ列）、すなわち制御信号［０］が「０」に戻った最初のタイミングで、次ヘッダ位置フラグ［０］が「１」となり、次ヘッダの開始タイミングを示している．
【００３９】
図２に示す例では、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１の内部で３クロックの固定遅延が発生するとともに、宛先ＭＡＣアドレスの先頭バイト（図２の「ａ」の符号が記載され箱）がパケットデータの＜１６：２３＞に位置するように、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１によって、１バイトの遅延が付加されている。ここで、付加される遅延は、１バイトに限られるものではなく、０から３バイトの遅延を付加し、宛先ＭＡＣアドレスの先頭バイトがパケットデータの＜１６：２３＞に位置するように調整してもよい。
【００４０】
［特定ヘッダ解析部］
次に、図３を参照して、本発明の第１の実施の形態にかかるパケット構文解析装置を構成する特定ヘッダ解析部について詳細に説明する。図３は、本発明の第１の実施の形態にかかるパケット構文解析装置１００の特定ヘッダ解析部１１２m（ｍは１〜Ｍの整数）で入出力される各種信号を示す説明図である。
各特定ヘッダ解析部１１２mには、特定パラメータレジスタ部１２２mから、解析対象のヘッダ用のパラメータ群［ｍ］が予め入力される。特定パラメータレジスタ部１２２mから入力されるパラメータ群は、パラレルで入力してもよい。
【００４１】
ここで、特定パラメータレジスタ部１２２mから各特定ヘッダ解析部１１２mへのパラメータ群の入力は、パケット構文解析装置１００がヘッダの解析処理を行う前に予め外部のＣＰＵ等の指示によって行うようになっているが、パケット構文解析装置１００のヘッダの解析処理中に外部のＣＰＵ等の指示によって行うようにしてもよい。
【００４２】
各特定ヘッダ解析部１１２m（ｍは１〜Ｍの整数）には、前段の特定ヘッダ解析部１１２m-1（なお、第１の特定ヘッダ解析部１１２1には、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１）から出力されたパケットデータ［ｍ−１］および識別子マーク［ｍ−１］が４バイトずつパラレルで入力される。
また、前段の特定ヘッダ解析部１１２mから出力された次ヘッダ位置フラグ［ｍ−１］、外部から入力されたクロック、およびＥｔｈｅｒｎｅｔ特定ヘッダ解析部１１１から出力されたリセット信号は、それぞれシリアル信号として入力される。
【００４３】
［特定ヘッダ解析部の構成］
図４は、図３に示す各特定ヘッダ解析部１１２m（ｍは１〜Ｍの整数）の詳細な回路構成を示すブロック図である。
図４に示すように、第ｍの特定ヘッダ解析部１１２mには、第１の処理開始判定器４１１、第２の処理開始判定器４１２、第１のＯＲ回路４２１、第１のＡＮＤ回路４２２、第２のＡＮＤ回路４２３、ヘッダ長計測器４３１、第２のＯＲ回路４３２、マーク生成器４４１〜４４５、第３のＯＲ回路４５１、第１の遅延回路４６１、第２の遅延回路４６２、および第３の遅延回路４６３が設けられている。
【００４４】
第１の処理開始判定器４１１および第２の処理開始判定器４１２は、処理を開始するか否に関する信号を出力する回路部である。
第１のＯＲ回路４２１は、第ｍの特定パラメータレジスタ部１２２mから入力されたヘッダ種別モード［ｍ］の信号、並びに、第１の処理開始判定器４１１および第２の処理開始判定器４１２から出力された信号の論理和をとる回路部である。
第１のＡＮＤ回路４２２は、次ヘッダ位置フラグ［ｍ−１］と第１のＯＲ回路４２１の出力の否定との論理積をとる回路部である。
第２のＡＮＤ回路４２３は、次ヘッダ位置フラグ［ｍ−１］と第１のＯＲ回路４２１の出力との論理積をとる回路部である。
【００４５】
ヘッダ長計測器４３１は、パケット中のヘッダ長に関する情報を読み取って次ヘッダ開始フラグを出力する回路部である。
第２のＯＲ回路４３２は、第１のＡＮＤ回路４２２の出力とヘッダ長計測器４３１の出力との論理和をとる回路部である。
マーク生成器４４１〜４４５は、リセット信号と第２のＡＮＤ回路４２３からの出力とに基づいて処理を開始し、第ｍ（ｍは１〜５の整数）の要素マーク（図４には、「マーク」として示す）を生成する回路部である。
【００４６】
第３のＯＲ回路４５１は、識別子マーク［ｍ−１］とマーク生成器４４１〜４４５から出力された要素マークとの論理和をとる回路部である。
第１の遅延回路４６１は、パケットデータ［ｍ−１］に遅延［ｍ］を付加してパケットデータ［ｍ］を生成する回路部である。
第２の遅延回路４６２は、第３のＯＲ回路４５１の出力に遅延を付加してパケットデータ［ｍ］と対応するようにした識別子マーク［ｍ］を生成する回路部である。
第３の遅延回路４６３は、第２のＯＲ回路４４２の出力に遅延を付加して次ヘッダ［ｍ］先頭と同期するようにした次ヘッダ位置フラグ［ｍ］を生成する回路部である。
【００４７】
第１の処理開始判定器４１１および第２の処理開始判定器４１２からは、それぞれ、処理を開始するか否に関する上記の信号である第１の処理開始判定値および第２の処理開始判定値が第１のＯＲ回路４２１に出力される。
第１のＯＲ回路４２１は、少なくとも、後述のヘッダ種別モード、第１の処理開始判定値、または第２の処理開始判定値のいずれかが「１」であれば、「１」のフラグを出力する。
【００４８】
ここで、「ヘッダ種別モード」は、処理対象のヘッダのヘッダ種別を特定する方法を指定するパラメータであり、例えば１ビットのデータからなり、以下のように定義される。
すなわち「ヘッダ種別モード」の値が「０」のときは、ヘッダ種別マーク値とヘッダ種別データ値とに基づいて指定される種別のヘッダを処理対象とすることを示す。また「１」のときは、次ヘッダ位置フラグ［ｍ−１］が示すタイミングでヘッダの解析処理を行うことを示す。
【００４９】
第１の処理開始判定器４１１には、第ｍの特定パラメータレジスタ部１２２mからパラメータとして、例えばヘッダ種別マーク値［ｍ］、ヘッダ種別データ値［ｍ］、およびヘッダ種別長［ｍ］が予め入力されている。また、第２の処理開始判定器４１２にも同様の種類のパラメータが予め入力されているものとする。
なお、以上では、処理開始判定器が２つで構成される場合を示したが、これに限定されるものではなく、１つで構成してもよく、３つ以上で構成してもよい。この場合、処理開始判定器に入力されるパラメータ群の種類は、処理開始判定器の数に応じて決まるようにしてもよい。
【００５０】
ここで、ヘッダ種別長［ｍ］は、例えば１ビットのデータからなり、その値が「０」のときは、パケット中から１バイト分の信号を読み取り、「１」のときは、２バイト分の信号を読み取るようにしてもよい。
ただし、読み出す信号が異なるワードに分割されないものとして処理する。以下では、ヘッダ種別長［ｍ］の値が「０」のときは、パケット中から１バイト分の信号を読み取り、「１」のときは、２バイト分の信号を読み取るものとして説明する。
【００５１】
ヘッダ種別マーク値［ｍ］は、例えば１バイトのデータからなり、第ｍの各特定ヘッダ解析部１１２mが解析を行うヘッダの種別を示す識別子を特定するマークのマーク値である。
なお、ヘッダ種別マーク値［ｍ］として「０」が設定されている場合、および次ヘッダ位置フラグ［ｍ−１］のタイミングまでに識別子マーク［ｍ−１］の値がヘッダ種別マーク値［ｍ］に一致することがなかった場合は、ヘッダの解析処理を行わないものとする。
【００５２】
ヘッダ種別データ値［ｍ］は、例えば２バイトのデータからなり、第ｍの各特定ヘッダ解析部１１２mが解析を行うヘッダの種別を特定するデータである。
なお、ヘッダ種別データ値［ｍ］の下位の１バイト長等のデータであっても第ｍの各特定ヘッダ解析部１１２mが解析を行うヘッダの種別を特定することができるように設定できるものとする。パケット中から読み取った信号とヘッダ種別データ値とが一致しない場合、ヘッダの解析処理を行わないものとする。
【００５３】
［処理開始判定器の動作］
次に、図５を参照して、第１の処理開始判定器４１１および第２の処理開始判定器４１２の動作について説明する。図５は、処理開始判定器４１１、４１２の動作をＶＨＤＬ（ＶＨＳＩＣ（Very High Speed Integrated Circuit）−Hardware Description Language）的に記載した説明図である。
【００５４】
図５において、ステップＳ５１１〜Ｓ５３９までの処理は、処理開始判定中間値に「０」または「１」を代入する処理開始判定中間値代入動作の処理である。
まず、ヘッダ種別長［ｍ］が「０」であって、ヘッダ種別マーク値［ｍ］が正であるという条件（以下、Ｓ５１１条件という）が成立するか否かを判断し（Ｓ５１１）、Ｓ５１１条件が成立すると判断した場合、以下の処理を行う。この場合、ヘッダ種別長［ｍ］が「０」であることは、パケット中のヘッダ種別を特定する信号の長さが１バイトであることを示す。
【００５５】
まず、識別子マーク［ｍ−１］の下位第８ビットのデータがヘッダ種別マーク値［ｍ］に一致し、かつパケットデータ［ｍ−１］の下位第８ビットのデータがヘッダ種別データ値［ｍ］の下位第８ビットのデータに一致するという条件（以下、Ｓ５１２条件という）が成立するか否かを判断し（Ｓ５１２）、Ｓ５１２条件が成立すると判断した場合、処理開始判定中間値として「１」を代入する（Ｓ５１３）。
【００５６】
Ｓ５１２条件が成立しない場合は、識別子マーク［ｍ−１］の第９ビットから第１６ビットまでの間のデータがヘッダ種別マーク値［ｍ］に一致し、かつパケットデータ［ｍ−１］の第９ビットから第１６ビットまでの間のデータがヘッダ種別データ値［ｍ］の下位第８ビットのデータに一致するという条件（以下、Ｓ５１４条件という）が成立するか否かを判断し（Ｓ５１４）、Ｓ５１４条件が成立すると判断した場合、処理開始判定中間値として「１」を代入する（Ｓ５１５）。
【００５７】
同様に、Ｓ５１２条件およびＳ５１４条件が成立しない場合は、識別子マーク［ｍ−１］の第１７ビットから第２４ビットまでの間のデータがヘッダ種別マーク値［ｍ］に一致し、かつパケットデータ［ｍ−１］の第１７ビットから第２４ビットまでの間のデータがヘッダ種別データ値［ｍ］の下位第８ビットのデータに一致するという条件（以下、Ｓ５１６条件という）が成立するか否かを判断し（Ｓ５１６）、Ｓ５１６条件が成立すると判断した場合、処理開始判定中間値として「１」を代入する（Ｓ５１７）。
【００５８】
同様に、Ｓ５１２条件、Ｓ５１４条件、およびＳ５１６条件が成立しない場合は、識別子マーク［ｍ−１］の第２５ビットから第３２ビットまでの間のデータがヘッダ種別マーク値［ｍ］に一致し、かつパケットデータ［ｍ−１］の第２５ビットから第３２ビットまでの間のデータがヘッダ種別データ値［ｍ］の下位第８ビットのデータに一致するという条件（以下、Ｓ５１８条件という）が成立するか否かを判断し（Ｓ５１８）、Ｓ５１８条件が成立すると判断した場合、処理開始判定中間値として「１」を代入する（Ｓ５１９）。
【００５９】
Ｓ５１２条件からＳ５１８条件までのいずれの条件も成立しない場合は、処理開始判定中間値として「０」を代入する（Ｓ５２０）。
【００６０】
次に、Ｓ５１１条件が成立しない場合は、ヘッダ種別長［ｍ］が「１」であるという条件（以下、Ｓ５３１条件という）が成立するか否かを判断し（Ｓ５３１）、Ｓ５３１条件が成立すると判断した場合、以下の処理を行う。この場合、ヘッダ種別長［ｍ］が「１」であることは、パケット中のヘッダ種別を特定する信号の長さが２バイトであることを示す。
【００６１】
まず、識別子マーク［ｍ−１］の下位第８ビットのデータがヘッダ種別マーク値［ｍ］に一致し、かつパケットデータ［ｍ−１］の第１ビットから第１６ビットまでの間のデータがヘッダ種別データ値［ｍ］の第１ビットから第１６ビットまでの間のデータに一致するという条件（以下、Ｓ５３２条件という）が成立するか否かを判断し（Ｓ５３２）、Ｓ５３２条件が成立すると判断した場合、処理開始判定中間値として「１」を代入する（Ｓ５３３）。
【００６２】
Ｓ５３２条件が成立しない場合は、識別子マーク［ｍ−１］の第９ビットから第１６ビットまでの間のデータがヘッダ種別マーク値［ｍ］に一致し、かつパケットデータ［ｍ−１］の第９ビットから第２４ビットまでの間のデータがヘッダ種別データ値［ｍ］の第１ビットから第１６ビットまでの間のデータに一致するという条件（以下、Ｓ５３４条件という）が成立するか否かを判断し（Ｓ５３４）、Ｓ５３４条件が成立すると判断した場合、処理開始判定中間値として「１」を代入する（Ｓ５３５）。
【００６３】
同様に、Ｓ５３２条件およびＳ５３４条件が成立しない場合は、識別子マーク［ｍ−１］の第１７ビットから第２４ビットまでの間のデータがヘッダ種別マーク値［ｍ］に一致し、かつパケットデータ［ｍ−１］の第１７ビットから第３２ビットまでの間のデータがヘッダ種別データ値［ｍ］の第１ビットから第１６ビットまでの間のデータに一致するという条件（以下、Ｓ５３６条件という）が成立するか否かを判断し（Ｓ５３６）、Ｓ５３６条件が成立すると判断した場合、処理開始判定中間値として「１」を代入する（Ｓ５３７）。
【００６４】
Ｓ５３２条件、Ｓ５３４条件、およびＳ５３６条件までのいずれの条件も成立しない場合は、処理開始判定中間値として「０」を代入する（Ｓ５３８）。Ｓ５１１条件とＳ５３１条件のいずれもが成立しない場合は、処理開始判定中間値として「０」を代入する（Ｓ５３９）。
【００６５】
次に、クロックが入力されたら、以下の各ステップでの処理を開始する（Ｓ５４１）。まず、クロックが立ち上がりのタイミングを検出する（Ｓ５４２）。次に、リセット信号が「１」であるという条件が成立するか否かを判断し（Ｓ５４３）、「１」であると判断したときは、処理開始判定レジスタ値として「０」を代入する（Ｓ５４４）。
上記で説明したように、リセット信号が「１」であることは、入力される信号がパケットの外であることを示しているため、処理開始判定レジスタ値として、処理の開始を指示しない「０」を代入するものである。
【００６６】
ステップＳ５４３でリセット信号が「０」であると判断したときは、処理開始判定中間値が「１」であるという条件が成立するか否かを判断し（Ｓ５４５）、「１」であると判断したときは、処理開始判定レジスタ値として「１」を代入する（Ｓ５４６）。ステップＳ５４６での処理が完了すると、クロックに応じて行う処理を終了する（Ｓ５４７）。
また、ステップＳ５４７での処理が終了したら、ステップＳ５１１からＳ５４７までの処理で設定された処理開始判定中間値または処理開始判定レジスタ値を処理開始判定値に代入し、処理開始判定器４１１、４１２から出力する（Ｓ５４８）。
【００６７】
第ｍの特定ヘッダ解析部１１２mには、処理対象のヘッダのヘッダ種別を特定する方法を指定するパラメータであるヘッダ種別モード［ｍ］が第ｍの特定パラメータレジスタ部１２２mから入力される。
このパラメータは、例えば１ビットのデータからなり、値が「１」のときは、ヘッダの種別には無関係にヘッダの解析を指示し、値が「０」のときは、ヘッダ種別データ値によって予め決められた種別のヘッダの解析を指示するように用いられる。
【００６８】
図４において、ヘッダ種別モード［ｍ］の値が「１」のとき、第１のＯＲ回路４２１は、第１の処理開始判定器４１１または第２の処理開始判定器４１２の出力とは無関係に「１」を出力する。
そして、第１のＯＲ回路４２１の出力と次ヘッダ位置フラグ［ｍ−１］とが入力される第２のＡＮＤ回路４２３は、次ヘッダ位置フラグ［ｍ−１］で特定されるタイミングで「１」を出力するため、ヘッダ長計測器４３１およびマーク生成器４４１〜４４５には、ヘッダの種別に無関係にヘッダの解析を指示する信号が第２のＡＮＤ回路４２３から入力される。
【００６９】
一方、ヘッダ種別モード［ｍ］の値が「０」のとき、第１のＯＲ回路４２１は、少なくとも、第１の処理開始判定器４１１または第２の処理開始判定器４１２のいずれかの出力が「１」のときに、「１」を出力する。
そのため、第２のＡＮＤ回路４２３から「１」が出力されるためには、少なくとも、第１の処理開始判定器４１１または第２の処理開始判定器４１２のいずれかの出力が「１」でなければならない。以下、第２のＡＮＤ回路４２３の出力をヘッダ開始フラグという。
【００７０】
第１のＯＲ回路４２１からの出力が「１」であるときは、第１のＡＮＤ回路４２２の出力は、次ヘッダ位置フラグ［ｍ−１］の値に無関係に「０」となり、次ヘッダ位置フラグ［ｍ−１］が有する情報は遮断され、第２のＯＲ回路４３２には伝達されない。
この場合、ヘッダ長計測器４３１から出力される次ヘッダ開始フラグが第２のＯＲ回路４３２から第３の遅延回路４６３に出力され、第３の遅延回路４６３によって遅延が付加され、新たな次ヘッダ位置フラグ［ｍ］として第ｍの特定ヘッダ解析部１１２mから出力される。
【００７１】
一方、第１のＯＲ回路４２１からの出力が「０」であるときは、第１のＡＮＤ回路４２２の出力は、次ヘッダ位置フラグ［ｍ−１］の値が「１」のとき「１」となり、次ヘッダ位置フラグ［ｍ−１］が有する情報が第２のＯＲ回路４３２には伝達される。
この場合、ヘッダ長計測器４３１から出力される次ヘッダ開始フラグは「０」であるため、次ヘッダ位置フラグ［ｍ−１］が第２のＯＲ回路４３２から第３の遅延回路４６３に出力され、第３の遅延回路４６３によって遅延が付加され、新たな次ヘッダ位置フラグ［ｍ］として第ｍの特定ヘッダ解析部１１２mから出力される。
【００７２】
［ヘッダ長計測器の動作］
次に、図６を参照して、ヘッダ長計測器４３１の動作について説明する。図６は、ヘッダ長計測器４３１の動作をＶＨＤＬ的に記載した説明図である。
まず、図５に示すように、ヘッダ長計測器４３１には、第ｍの特定パラメータレジスタ部１２２m（ｍは１、２、…、Ｍ）からパラメータとして、例えばヘッダ長モード［ｍ］およびヘッダ長［ｍ］が予め入力されている。
ここで、ヘッダ長［ｍ］は、例えば、６ビットのデータであり、処理対象のヘッダ長を４バイト単位で指定するパラメータである。具体的には、ヘッダ長［ｍ］は、例えば１６進数で表され、その値は、「０ｘ１」〜「０ｘ３Ｆ」（１０進数の１〜６３）のいずれかをとるものとして予め決定される。
【００７３】
また、ヘッダ長モード［ｍ］は、処理対象のヘッダ長を指定する方法を特定するパラメータである。具体的には、ヘッダ長モード［ｍ］は、３ビットのデータであり、１０進数で、「０」のときはヘッダ長［ｍ］によって指定されるバイト数のヘッダ長であり、「１」のときはＩＰｖ４ヘッダのヘッダ長を示し、「２」のときはＩＰｖ６の拡張ヘッダのヘッダ長を示し、「３」のときはＡＨヘッダのヘッダ長を示し、「４」のときはＴＣＰヘッダのヘッダ長を示すものとしてもよい。
【００７４】
図６に示すように、ヘッダ長計測器４３１は、まず、クロックが入力されたら、以下の各ステップでの処理を開始する（Ｓ６１１）。
ステップＳ６１１〜Ｓ６１９までの処理は、リセット信号が「０」になり、ヘッダ開始フラグが「１」になった以降のクロックの立ち上がりの数をカウントするカウンタ動作の処理である。
【００７５】
まず、クロックが立ち上がりのタイミングを検出し、検出したら以下の処理を行う（Ｓ６１２）。次に、リセット信号が「１」であるという条件が成立するか否かを判断し（Ｓ６１３）、「１」であると判断したときは、処理開始判定レジスタ値として「０」を代入する（Ｓ６１４）。
上記で説明したように、リセット信号が「１」であることは、入力される信号がパケットの外であることを示しているため、ヘッダ長カウンタ値として、次ヘッダ位置フラグを更新しないように「０」を代入するものである。
【００７６】
ステップＳ６１３でリセット信号が「０」であると判断したときは、ヘッダ開始フラグが「１」であるという条件が成立するか否かを判断し（Ｓ６１５）、「１」であると判断したときは、ヘッダ長カウンタ値として「１」を代入する（Ｓ６１６）。
ステップＳ６１３でリセット信号が「０」であると判断し、ステップＳ６１５でヘッダ開始フラグが「１」でない（すなわち、「０」）と判断した場合、ヘッダ長カウンタ値が「１」以上「０ｘ３Ｆ」未満であるか否かを判断し（Ｓ６１７）、ヘッダ長カウンタ値が「１」以上「０ｘ３Ｆ」未満であると判断した場合、ヘッダ長カウンタ値の値を「１」増加させる（Ｓ６１８）。ステップＳ６１８での処理が完了すると、クロックに応じて行うカウンタ動作の処理を終了する（Ｓ６１９）。
【００７７】
次に、クロックが入力されたら、以下の各ステップでの処理を開始する（Ｓ６２１）。ステップＳ６２１〜Ｓ６３９までの処理は、ヘッダ長のデータをレジスタに代入するヘッダ長レジスタ代入動作の処理である。
まず、クロックの立ち上がりのタイミングを検出し、検出したら以下の処理を行う（Ｓ６２２）。次に、リセット信号が「１」であるという条件が成立するか否かを判断し（Ｓ６２３）、「１」であると判断したときは、ヘッダ長モード［ｍ］が「０」であるか否かを判断する（Ｓ６２４）。
【００７８】
ステップＳ６２４でヘッダ長モード［ｍ］が「０」であると判断したとき、ヘッダ長レジスタ値にヘッダ長［ｍ］を代入する（Ｓ６２５）。
ヘッダ長モード［ｍ］が「０」のときは、ヘッダ長の情報は予め保持しているため、リセット信号が「１」のときにヘッダ長レジスタ値にヘッダ長の情報を代入することができるからである。ヘッダ長モード［ｍ］が「０」でないと判断したとき、ヘッダ長レジスタ値に「０」を代入する（Ｓ６２６）。
【００７９】
次に、リセット信号が「１」でない（すなわち、「０」である）と判断したときは、ヘッダ開始フラグが「１」であり、かつヘッダ長モード［ｍ］が「１」であるという条件が満たされるか否かを判断し（Ｓ６３１）、この条件が満たされると判断したときは、ヘッダ長レジスタ値にパケットデータ［ｍ−１］の５ビット目から８ビット目までのデータを代入する（Ｓ６３２）。
【００８０】
ステップＳ６３１で設定された条件が満たされないと判断したときは、ヘッダ開始フラグが「１」であり、かつヘッダ長モード［ｍ］が「２」であるという条件が満たされるか否かを判断し（Ｓ６３３）、この条件が満たされると判断したときは、パケットデータ［ｍ−１］の９ビット目から１６ビット目までのデータを「ｎ」として、２ｎ＋２をヘッダ長レジスタ値に代入する（Ｓ６３４）。
【００８１】
ステップＳ６３１およびステップＳ６３３で設定されたいずれの条件も満たされないと判断したときは、ヘッダ開始フラグが「１」であり、かつヘッダ長モード［ｍ］が「３」であるという条件が満たされるか否かを判断し（Ｓ６３５）、この条件が満たされると判断したときは、パケットデータ［ｍ−１］の９ビット目から１６ビット目までのデータに２を加算した値をヘッダ長レジスタ値に代入する（Ｓ６３６）。
【００８２】
ステップＳ６３１、ステップＳ６３３、およびステップＳ６３５で設定されたいずれの条件も満たされないと判断したときは、ヘッダ開始フラグが「１」であり、かつヘッダ長モード［ｍ］が「４」であるという条件が満たされるか否かを判断し（Ｓ６３７）、この条件が満たされると判断したときは、パケットデータ［ｍ−１］の１ビット目から４ビット目までのデータをヘッダ長レジスタ値に代入する（Ｓ６３８）。
ステップＳ６３８での処理が完了すると、クロックに応じて行うヘッダ長レジスタ代入動作の処理を終了する（Ｓ６３９）。
【００８３】
次に、ヘッダ長レジスタ値が正であり、かつヘッダ長カウンタ値がヘッダ長レジスタ値に等しいか否かを判断し（Ｓ６４１）、等しいと判断したときは、次ヘッダ開始フラグに「１」を代入する（Ｓ６４２）。
すなわち、ヘッダ長カウンタ値がヘッダ長レジスタ値に等しいタイミングで、次ヘッダ開始フラグが「１」となるようにして出力するものである。
【００８４】
ステップＳ６４１で、少なくとも、ヘッダ長レジスタ値が正でないか、またはヘッダ長カウンタ値がヘッダ長レジスタ値に等しくないと判断したときは、次ヘッダ開始フラグに「０」を代入する（Ｓ６４３）。
これによって、ヘッダ長カウンタ値がヘッダ長レジスタ値に等しいタイミング以外は、次ヘッダ開始フラグは「０」となる。
【００８５】
［マーク生成器の動作］
次に、図７を参照して、各マーク生成器４４１〜４４５の動作について説明する。図７は、各マーク生成器４４１〜４４５の動作をＶＨＤＬ的に記載した説明図である。
マーク生成器４４１には、第ｍの特定パラメータレジスタ部１２２m（ｍは１〜Ｍの整数）からパラメータとして、例えば、マーク開始位置［ｍ］、マーク終了位置［ｍ］、および識別子マークパターン［ｍ］が予め入力されている。また、マーク生成器４４２〜４４５にも同様の種類のパラメータが予め入力されているものとする。
【００８６】
ここで、識別子マークパターン［ｍ］は、識別子マーク［ｍ］に追加するマーク値を表すパラメータであり、例えば４バイトのデータとして表される。
マーク開始位置［ｍ］は、識別子マークパターン［ｍ］を識別子マーク［ｍ］に追加する際の開始位置を示すパラメータである。
マーク終了位置［ｍ］は、識別子マークパターン［ｍ］を識別子マーク［ｍ］に追加する際の終了位置を示すパラメータである。
【００８７】
マーク開始位置［ｍ］は、追加する識別子マークパターン［ｍ］の開始位置を、例えば４バイト単位で指定し、この単位である４バイトの個数を、例えば１６進数で「０ｘ０」〜「０ｘ３Ｆ」（「０ｘ０」は、ヘッダ先頭のワード位置を示す）で指定する。
同様に、マーク終了位置［ｍ］は、追加する識別子マークパターン［ｍ］の終了位置を、例えば４バイト単位で指定し、この単位である４バイトの個数を、例えば１６進数で「０ｘ０」〜「０ｘ３Ｆ」（「０ｘ０」は、ヘッダ先頭のワード位置を示す）で指定する。
これらマーク開始位置［ｍ］およびマーク終了位置［ｍ］は、例えば６ビットのデータとして表される。識別子マークパターン［ｍ］は、マーク開始位置［ｍ］からマーク終了位置［ｍ］まで４バイト単位で繰り返し追加される。
【００８８】
図７に示すように、各マーク生成器４４１〜４４５は、まず、クロックが入力されたら、以下の各ステップでの処理を開始する（Ｓ７１１）。
ステップＳ７１１〜Ｓ７１９までの処理は、リセット信号が「０」になり、ヘッダ開始フラグが「１」になった以降のクロックの立ち上がりの数をカウントするカウンタ動作の処理である。
【００８９】
まず、クロックが立ち上がりのタイミングを検出し、検出したら以下の処理を行う（Ｓ７１２）。次に、リセット信号が「１」であるという条件が成立するか否かを判断し（Ｓ７１３）、「１」であると判断したときは、処理開始判定レジスタ値として「０」を代入する（Ｓ７１４）。
上記で説明したように、リセット信号が「１」であることは、入力される信号がパケットの外であることを示しているため、ヘッダ長カウンタ値として、次ヘッダ位置フラグを更新しないように「０」を代入するものである。
【００９０】
ステップＳ７１３でリセット信号が「０」であると判断したときは、ヘッダ開始フラグが「１」であるという条件が成立するか否かを判断し（Ｓ７１５）、「１」であると判断したときは、ヘッダ長カウンタ値として「１」を代入する（Ｓ７１６）。
ステップＳ７１３でリセット信号が「０」であると判断し、ステップＳ７１５でヘッダ開始フラグが「１」でない（すなわち、「０」）と判断した場合、ヘッダ長カウンタ値が「１」以上「０ｘ３Ｆ」未満であるか否かを判断し（Ｓ７１７）、ヘッダ長カウンタ値が「１」以上「０ｘ３Ｆ」未満であると判断した場合、ヘッダ長カウンタ値の値を「１」増加させる（Ｓ７１８）。ステップＳ７１８での処理が完了すると、クロックに応じて行うカウンタ動作の処理を終了する（Ｓ７１９）。
【００９１】
次に、マーク開始位置［ｍ］が「０」であり、かつヘッダ開始フラグが「１」であるという条件、またはマーク開始位置［ｍ］が「０」より大きく、かつマーク開始位置［ｍ］がヘッダ長カウンタ値以下であるという条件のいずれかの条件が満たされているか否かを判断し（Ｓ７２１）、ステップＳ７２１でいずれかの条件が満たされていると判断したとき、マーク終了位置［ｍ］がヘッダ長カウンタ値以上であるか否かを判断する（Ｓ７２２）。
【００９２】
ステップＳ７２２でマーク終了位置［ｍ］がヘッダ長カウンタ値以上であると判断したとき、マーク値として識別子マークパターン［ｍ］を代入する（Ｓ７２３）。
一方、ステップＳ７２２でマーク終了位置［ｍ］がヘッダ長カウンタ値未満である判断したとき、マーク値として「０」を代入する（Ｓ７２４）。
また、ステップＳ７２１で判断した両方の条件がすべて満たされないとき、マーク値として「０」を代入する（Ｓ７２５）。
【００９３】
マーク生成器４４１〜４４５から出力された要素マークは、第３のＯＲ回路４５１によって識別子マーク［ｍ−１］と論理和をとることによって、識別子マーク［ｍ−１］に付加される。
マーク生成器４４１〜４４５から出力された要素マークは、識別子マーク［ｍ−１］に付加されて第２の遅延回路４６２に出力され、第２の遅延回路４６２によって、遅延が付加され、識別子マーク［ｍ］として第ｍの特定ヘッダ解析部１１２mから出力される。
【００９４】
［特定ヘッダ解析部の動作例］
次に、図８および図９を参照して、パラメータ群の設定例がＩＰｖ６（IPv6 over Ethernet）用のものであるときの各特定ヘッダ解析部１１２mの動作例について説明する。図８は、ＩＰｖ６（IPv6 over Ethernet）用のパラメータ群の設定例である。図９は、図８に示す設定例のパラメータ群が特定ヘッダ解析部１１２mに入力されている場合に、特定ヘッダ解析部１１２mに入力されたパケットデータ［ｍ−１］および制御信号［ｍ−１］と・特定ヘッダ解析部１１２mから出力されるパケットデータ［ｍ］および制御信号［ｍ］とを示す図である。
【００９５】
図８に示すパラメータ群の設定例では、ヘッダ種別モード［ｍ］は「０」であり、第１の処理開始判定器４１１に入力されたヘッダ種別マーク値［ｍ］およびヘッダ種別データ値［ｍ］に基づいて第ｍの特定ヘッダ解析部１１２mでの処理を行うか否かを判断する。
ヘッダ種別マーク値［ｍ］が「０ｘ３」、ヘッダ種別データ値［ｍ］が「０ｘ８６ＤＤ」であるため、ヘッダ種別がＥｔｈｅｒタイプを示すヘッダ種別マーク値［ｍ］である「０ｘ３」のとき、２バイトのヘッダ種別データ値［ｍ］が「０ｘ８６ＤＤ」であるか否かが判断され、ヘッダ種別データ値［ｍ］が「０ｘ８６ＤＤ」であるとき、ヘッダ解析の処理が開始される。
【００９６】
一方、第２の処理開始判定器４１２に関しては、ヘッダ種別マーク値［ｍ］が「０ｘ０」に設定されているため、ヘッダ解析の処理を開始するか否かの判断は行われない。
なお、IPv6 over Ethernet以外で、例えばIPv6 over PPPoE、IPv6 over VLAN、あるいはIPv6 over IPv4等の構成に対応させる場合は、ヘッダ種別マーク値［ｍ］を「０ｘ１」以上の所定の値に設定して有効にする。
【００９７】
ＩＰｖ６ヘッダは、固定長であるため、ヘッダ長計測器４３１には、ヘッダ長モード［ｍ］として「０」が設定されている。同様に、ＩＰｖ６ヘッダは、１０×４バイトの固定長であるため、ヘッダ長［ｍ］として「１０」が設定されている。
第１のマーク生成器４４１は、次ヘッダ位置フラグが「１」のタイミングをヘッダの開始（以下、「０」番目のビットという）のタイミングとし、このタイミングで入力される３２ビットのデータが、ＩＰｖ６ヘッダでは、最初の４ビットが「version」を示し、次の４ビットが「Traffic Class」の上位４ビットを示す情報であると定義されているため、マーク値として「０ｘ２１」を設定する。
【００９８】
図９において「ｏ」と記載された箱は、特定ヘッダ解析部１１２mが処理対象とするヘッダの先頭である。
特定ヘッダ解析部１１２mから出力されるパケットデータ［ｍ］は、入力されたパケットデータ［ｍ−１］より１ビット遅延している。
また、制御信号［ｍ］は、上記の「ｏ」と記載された箱に対応する位置を先頭位置として、制御信号［ｍ−１］にマーク値が追加されたものとなっている。
【００９９】
同様にして、次の１バイトが「Traffic Class」の下位４ビットと「Flow Label」の上位４ビットを示す情報であると定義されているため、マーク値として「０ｘ２２」を設定する。
さらに、次の２バイトが「Flow Label」の５ビット以降の情報を示す情報であると定義されているため、マーク値として「０ｘ２３」を設定する。
【０１００】
その結果、第１のマーク生成器４４１からは、第１の識別子マークパターン［ｍ］として「０ｘ２１２２２３２３」が設定され、第３のＯＲ回路４５１に出力される。
ここで、「version」、「Traffic Class」、および「Flow Label」が記録されたタイミングが、上記の「０」番目のビットであるため、マーク開始位置［ｍ］とマーク終了位置［ｍ］には「０」が設定されている。
【０１０１】
同様にして、第２のマーク生成器４４２は、次ヘッダ位置フラグが「１」のタイミングの次のタイミング（以下、「１」番目のビットという）で入力される３２ビットのデータが、ＩＰｖ６ヘッダでは、最初の２バイトが「ペイロード長」を示す情報であると定義されているため、マーク値として「０ｘ２４」を設定する。
そして、次の１バイトが「Next Header」を示す情報であると定義されているため、マーク値として「０ｘ２５」を設定する。さらに、次の１バイトが「Hop Limit」を示す情報であると定義されているため、マーク値として「０ｘ２６」を設定する。
【０１０２】
その結果、第２のマーク生成器４４２からは、第２の識別子マークパターン［ｍ］として「０ｘ２４２４２５２６」が設定され、第３のＯＲ回路４５１に出力される。
ここで、「ペイロード長」、「Next Header」、および「Hop Limit」が記録されたタイミングが、上記の「１」番目のビットであるため、マーク開始位置［ｍ］とマーク終了位置［ｍ］には「１」が設定されている。
以下では、次ヘッダ位置フラグが「１」のタイミングから順番に、「０」番目のビット、「１」番目のビット、…、「ｎ」番目のビット（ｎは自然数）という。
【０１０３】
同様にして、第３のマーク生成器４４３は、上記の「２」番目のビットのタイミングから「５」番目のビットのタイミングで入力される４ワード（４×３２ビット）のデータが、ＩＰｖ６ヘッダでは「Source Address」を示す情報であると定義されているため、マーク値として「０ｘ２７」を設定する。
その結果、第３のマーク生成器４４３からは、第３の識別子マークパターン［ｍ］として「０ｘ２７２７２７２７」が設定され、第３のＯＲ回路４５１に出力される。
【０１０４】
同様にして、第４のマーク生成器４４４は、上記の「６」番目のビットのタイミングから「９」番目のビットのタイミングで入力される４ワード（４×３２ビット）のデータが、ＩＰｖ６ヘッダでは「Destination Address」を示す情報であると定義されているため、マーク値として「０ｘ２８」を設定する。
その結果・第４のマーク生成器４４４からは、第４の識別子マークパターン［ｍ］として「０ｘ２８２８２８２８」が設定され、第３のＯＲ回路４５１に出力される。
【０１０５】
第５のマーク生成器４４５は、第５の識別子マークパターン［ｍ］として「０ｘ００００００００」が設定されているため、第５の識別子マークパターン［ｍ］が第３のＯＲ回路４５１に出力されても第３のＯＲ回路４５１によって識別子マーク［ｍ−１］には要素マークが付加されない。
【０１０６】
以上説明したように、本発明の第１の実施の形態にかかるパケット構文解析装置では、要素プロトコルに対応して１つ以上の特定要素回路を設け、その特定要素回路で対応する要素プロトコルの下に作成されたヘッダ内の情報を解析するようにしたので、プログラムを必要とすることなくパケット構文解析でき、パケット構文解析に要する処理時間を短縮し、消費電力を低減できる。
これに加えて、上記特定要素回路において、解析に用いるパラメータ群を特定パラメータレジスタ部で変更可能に記憶し、この特定パラメータレジスタ部のパラメータ群を用いて特定ヘッダ解析部でヘッダ内の情報を解析するようにしたので、処理対象の通信プロトコルを変更することができる。
【０１０７】
また、各特定要素回路が、対応する要素プロトコルのヘッダの開始位置を特定するアクションコード、および対応するヘッダ内の情報の位置を特定するマークコードを少なくとも生成するようにしたので、次段の特定要素回路（特定ヘッダ解析部）が解析開始のタイミング等を容易に検出でき、処理時間を一層短縮できるとともに、消費電力をさらに低減することができる。
【０１０８】
［第２の実施の形態］
次に、図１０を参照して、本発明の第２の実施の形態にかかるパケット構文解析装置について説明する。図１０は、本発明の第２の実施の形態にかかるパケット構文解析装置のブロック構成を示す図である。
本発明の第２の実施の形態にかかるパケット構文解析装置１０００は、各種通信用プロトコルを要素としこれら要素プロトコルの集合からなる通信保証プロトコルについて、要素プロトコルのいずれかの下に作成されたヘッダ内の情報をそれぞれ解析する１つ以上の適応要素回路１０１０を用いて、要素プロトコルの下に作成されたパケットの構文解析を行う装置である。
【０１０９】
この際、適応要素回路１０１０では、要素プロトコルに対応する複数のパラメータ群を適応パラメータレジスタ部で記憶しておき、この適応パラメータレジスタ部に記憶されているパラメータ群のいずれかを用いて当該要素プロトコルの下に作成されたヘッダ内の情報を特定ヘッダ解析部で解析している。
【０１１０】
［第２の実施の形態の構成］
次に、図１０を参照して、本発明の第２の実施の形態にかかるパケット構文解析装置の構成について説明する。なお、前述した本発明の第１の実施の形態にかかるパケット構文解析装置（図１参照）と同じまたは同等部分には同一符号を付してある。
このパケット構文解析装置１０００には、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１、特定要素回路１１０1〜１１０K、および適応要素回路１０１０が設けられている。
このうち、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１および特定要素回路１１０1〜１１０Kは、本発明の第１の実施の形態にかかるパケット構文解析装置１００を構成する回路部と同等である。
【０１１１】
適応要素回路１０１０には、適応ヘッダ解析部１０１４、および適応パラメータレジスタ部１０２４が設けられている。
適応パラメータレジスタ部１０２４は、要素プロトコルのいずれか複数に対応するパラメータ群をそれぞれ記憶する回路部である。
適応ヘッダ解析部１０１４は、所定の要素プロトコルに固有の識別情報からなるヘッダＩＤを適応パラメータレジスタ部へ通知することにより、所望のパラメータ群を適応パラメータレジスタ部から取得し、そのパラメータ群を用いて当該要素プロトコルの下に作成されたヘッダ内の情報を解析する回路部である。
【０１１２】
このほか、パケット構文解析装置１０００には、ヘッダＩＤ生成部１０１３、およびヘッダＩＤ生成パラメータレジスタ部１０２３が設けられている。
ヘッダＩＤ生成部１０１３は、特定ヘッダ解析部１１２Kの出力信号に基づいて適応ヘッダ解析部１０１４に入力する信号として、例えばパラメータ群を選択するためのヘッダＩＤを生成する回路部である。
ヘッダＩＤ生成パラメータレジスタ部１０２３は、ヘッダＩＤ生成部１０１３での処理に用いるパラメータを記憶する回路部である。
【０１１３】
図１０において、パケット構文解析装置１０００には、本発明の第１の実施の形態と同様に、パケットデータ、入力制御信号、およびクロックが入力され、各パケットは、最初のヘッダがＥｔｈｅｒｎｅｔヘッダであり、１つ以上のヘッダを有するものとする。
また、パケット構文解析装置１０００からは、出力パケットデータおよび出力制御信号が出力される。
【０１１４】
ここで、ヘッダＩＤ生成部１０１３と適応ヘッダ解析部１０１４が出力する制御信号は、各パケットデータに対応する制御信号として、例えばパケット内またはヘッダ内の位置を特定する信号であるアクションコードまたはマークコードを含む識別子マーク（以下、アクションコードもしくはマークコードのいずれか、またはアクションコードおよびマークコードの両方を識別子マークという）を生成し、出力するようになっている。
【０１１５】
アクションコードは、対応する要素プロトコルのヘッダの開始位置を特定し、または所定の処理を指示する信号である。マークコードは、検出した識別子に対応する、ヘッダ内の情報の位置を特定する信号である。
このうち、アクションコードとしては、次ヘッダ位置フラグを含んでもよく、次ヘッダ解析指示を含んでもよい。以下では、ヘッダＩＤ生成部１０１３と適応ヘッダ解析部１０１４とから出力される制御信号は、識別子マークおよび次ヘッダ位置フラグを含むものとして説明する。
【０１１６】
次に、ヘッダＩＤ生成部１０１３について説明する。ヘッダＩＤ生成部１０１３には、前段の第Ｋの特定ヘッダ解析部１１２Kから出力されたパケットデータ［Ｋ］および制御信号［Ｋ］が入力されるとともに、Ｅｔｈｅｒｎｅｔ特定ヘッダ解析部１１１から出力されたリセット信号、および外部からのクロックが入力される。
また、ヘッダＩＤ生成パラメータレジスタ部１０２３からは、ヘッダＩＤ生成用のパラメータ群が予め入力されているものとする。ここで、制御信号［Ｋ］には、次ヘッダ位置フラグが含まれる。
【０１１７】
ヘッダＩＤ生成部１０１３は、入力された次ヘッダ位置フラグおよびパラメータ群に基づいて、パケットデータ［Ｋ］からヘッダＩＤを抽出するものである。
なお、ヘッダＩＤ生成部１０１３の動作の詳細については、後述する適応ヘッダ解析部１０１４に含まれるヘッダＩＤ生成器１３３０の動作と同様であり、説明が重複することを避けるために適応ヘッダ解析部１０１４について説明する際に述べる。
【０１１８】
ヘッダＩＤ生成部１０１３からは、ＩパケットデータおよびＩ制御信号が適応ヘッダ解析部１０１４に出力される。Ｉ制御信号には、識別子マーク（以下、Ｉ識別子マークという）、ヘッダ位置フラグ（以下、Ｉヘッダ位置フラグという）に、ヘッダＩＤ（以下、ＩヘッダＩＤという）が付加されている。
【０１１９】
［第２の実施の形態の動作］
次に、図１１を参照して、本発明の第２の実施の形態にかかるパケット構文解析装置１０００の動作について説明する。図１１は、本発明の第２の実施の形態にかかるパケット構文解析装置１０００の適応ヘッダ解析部１０１４で入出力される各種信号を示す説明図である。
適応ヘッダ解析部１０１４には、適応パラメータレジスタ部１０２４から、ヘッダ解析に用するパラメータ群の一部または全部が入力される。
【０１２０】
ここでは、パラメータ群の一部は予め入力され、パラメータ群の他の部分はヘッダＩＤを適応パラメータレジスタ部１０２４に出力したときに、ヘッダＩＤに応じたパラメータ（識別子マークの生成に必要なパラメータ等）が適応パラメータレジスタ部１０２４から入力されるものとする。適応パラメータレジスタ部１０２４から入力されるパラメータ群は、パラレルで入力してもよい。
【０１２１】
ここで、ＩＤ生成パラメータレジスタ部１０２３または適応パラメータレジスタ部１０２４から、ヘッダＩＤ生成部１０１３または適応ヘッダ解析部１０１４へのパラメータ群の入力は、パケット構文解析装置１０００がヘッダの解析処理を行う前に予め外部のＣＰＵ等の指示によって行うようになっているが、所定の場合には、パケット構文解析装置１０００のヘッダの解析処理中に外部のＣＰＵ等の指示によって行うようにしてもよい。
【０１２２】
このようにすることで、レジスタアクセス用バス１３０を介した外部のＣＰＵ等からの指示により、ヘッダＩＤ生成部１０１３または適応要素回路レジスタが記憶するパラメータ群を容易に変更することができる。
すなわち、ＩＤ生成パラメータレジスタ部１０２３または適応パラメータレジスタ部１０２４のアドレスを指定して、読み出した情報を、それぞれヘッダＩＤ生成部１０１３または適応ヘッダ解析部１０１４に出力することにより、ヘッダＩＤ生成部１０１３または適応ヘッダ解析部１０１４に入力されるパラメータ群に応じて処理対象のヘッダを変更することができるようになる。
【０１２３】
適応ヘッダ解析部１０１４には、外部から入力されたクロック、並びに前段のヘッダＩＤ生成部１０１３から出力されたＩパケットデータおよびＩ制御信号が入力される。
Ｉ制御信号には、Ｉ識別子マーク、Ｉヘッダ位置フラグ、およびＩヘッダＩＤが含まれる。図１１に示す例では、Ｉ識別子マークが３２ビット単位でパラレルに入力され、ＩヘッダＩＤが５ビット単位でパラレルに入力され、Ｉヘッダ位置フラグがシリアルで入力される。
【０１２４】
また、適応ヘッダ解析部１０１４は、各入力信号に応じて、ヘッダＩＤを適応パラメータレジスタ部１０２４に出力するとともに、適応パラメータレジスタ部１０２４からパラメータ群が入力されるようになっている。なお、ヘッダＩＤは、５ビット単位でパラレルに出力してもよい。
適応ヘッダ解析部１０１４からは、Ｏパケットデータ（パケット構文解析装置１０００からの出力パケットデータ）と、Ｏ識別子マークからなるＯ制御信号（パケット構文解析装置１０００からの出力制御信号）とが出力される。
【０１２５】
［適応パラメータレジスタ部の構成］
次に、図１２を参照して、適応パラメータレジスタ部１０２４の構成について詳細に説明する。図１２は、適応パラメータレジスタ部１０２４の構成を示すブロック図である。
適応パラメータレジスタ部１０２４は、ヘッダＩＤで特定されるヘッダ種別ごとにパラメータ群を格納している。図１２に示す例では、３２個のパラメータ群（Ｐ０１〜Ｐ３２）を記憶できるレジスタ１２０１1〜１２０１Nが設けられ、各パラメータ群としてＮ個のパラメータが記憶できるようになっている。
【０１２６】
適応パラメータレジスタ部１０２４は、適応ヘッダ解析部１０１４からヘッダＩＤが入力されると、そのヘッダＩＤで特定されるヘッダ種別のパラメータ群を、選択回路１２０２が選択し、遅延回路１２０３によって、例えばヘッダＩＤの入力から１クロック遅れて適応ヘッダ解析部１０１４に出力するようになっている。
【０１２７】
［適応ヘッダ解析部の構成］
次に、図１３を参照して、適応ヘッダ解析部１０１４の構成について詳細に説明する。図１３は、適応ヘッダ解析部１０１４の構成を示すブロック図である。
図１３において、適応ヘッダ解析部１０１４には、遅延回路１３１１、１３１２、ヘッダ長カウンタ器１３２０、ヘッダＩＤ生成器１３３０、およびマーク生成器１３４０が設けられている。
【０１２８】
遅延回路１３１１、１３１２は、入力されるＩパケットデータを所定時間遅延させる回路部である。
ヘッダ長カウンタ器１３２０は、ヘッダ長カウンタ値を出力する回路部である。
ヘッダＩＤ生成器１３３０は、ヘッダＩＤを適応パラメータレジスタ部１０２４に出力する回路部である。
マーク生成器１３４０は、Ｉ識別子マークに処理対象のヘッダの識別子を追加してＯ識別子マークを出力する回路部である。
【０１２９】
ここで、ヘッダ長カウンタ器１３２０には、適応パラメータレジスタ部１０２４からパラメータとして、例えば「ヘッダ長モード」および「ヘッダ長」が予め入力されている。「ヘッダ長モード」は、処理対象のヘッダのヘッダ長を特定する方法を指定するパラメータであり、例えば、３ビットのデータであり、以下のように定義される。
【０１３０】
「ヘッダ長モード」の値が「０」のときは、ヘッダ長として予め決められた長さを用いる。次に「１」のときは、ＩＰｖ４ヘッダを処理対象とし、ＩＰｖ４ヘッダのＩＨＬ（Internet Header Length）のフィールドのデータをＩパケットデータから読み出し、読み出したデータを４倍した値（単位はバイト）のヘッダ長を用いる。
「２」のときは、ＩＰｖ６の拡張ヘッダを処理対象とし、ＩＰｖ６の拡張ヘッダのＨＥＬ（Header Extension Length）のフィールドのデータをＩパケットデータから読み出し、読み出したデータを８倍して８を加算した値（単位はバイト）のヘッダ長を用いる。
【０１３１】
「３」のときは、ＡＨ（Authentication Header）を処理対象とし、ＡＨのＨＰＬ（Header Payload Length）のフィールドのデータをＩパケットデータから読み出し、読み出したデータを４倍して８を加算した値（単位はバイト）のヘッダ長を用いる。
「４」のときは、ＴＣＰヘッダを処理対象とし、ＴＣＰヘッダのＤＯ（Data Offset）のフィールドのデータをＩパケットデータから読み出し、読み出したデータを４倍した値（単位はバイト）のヘッダ長を用いる。
なお、上記の定義は一例であり、他の定義でもよいが、以下では、説明の便宜上、上記の定義を用いて説明を行う。
【０１３２】
パラメータの「ヘッダ長」は、「ヘッダ長モード」が「０」のときにヘッダ長カウンタ値を算出するために用いるパラメータである。
「ヘッダ長」は、例えばバイト単位でヘッダ長を指定し、「０ｘ０１」〜「０ｘ３Ｆ」の値をとる６ビットのデータである。具体的には、パラメータの「ヘッダ長」が「０ｘ０１」のとき、ヘッダ長が８バイト長であることを示す。
【０１３３】
［ヘッダ長カウンタ器の動作］
次に、図１４を参照して、ヘッダ長カウンタ器の動作について説明する。図１４は、ヘッダ長カウンタ器１３２０の動作をＶＨＤＬ的に記載した説明図である。
図１４において、ステップＳ１４１１〜Ｓ１４１９までの処理は、ヘッダ長カウンタ値を算出するヘッダ長カウンタ値算出動作の処理である。
クロックが入力されたら、以下の各ステップでの処理を開始する（Ｓ１４１１）。まず、クロックの立ち上がりのタイミングを検出する（Ｓ１４１２）。次に、Ｉヘッダ位置フラグが「１」であるか否かを判断し（Ｓ１４１３）、「１」であると判断したときは、ヘッダ長カウンタ値として「１」を代入する（Ｓ１４１４）。
【０１３４】
ステップＳ１４１３で、Ｉヘッダ位置フラグが「１」でないと判断したとき、ヘッダ終了フラグが「１」であるという条件が成立するか否かを判断し（Ｓ１４１５）、「１」であると判断したときは、ヘッダ長カウンタ値として「０」を代入する（Ｓ１４１６）。
ここで、ヘッダ終了フラグは、この値が「１」のときはヘッダ長の設定が終了したことを示し、「０」のときはまだ終了していないことを示す。ヘッダ終了フラグには、初期値として「０」が代入されているものとする。
【０１３５】
ステップＳ１４１３でＩヘッダ位置フラグが「１」でなく、ステップＳ１４１５でヘッダ終了フラグが「１」でないと判断したとき、ヘッダ長カウンタ値が「０ｘ３Ｆ」以下であるという条件が成立するか否かを判断し（Ｓ１４１７）、「０ｘ３Ｆ」以下であると判断したときは、ヘッダ長カウンタ値に「１」を加算する（Ｓ１４１８）。
ステップＳ１４１８での処理が完了すると、ヘッダ長カウンタ値算出動作の処理を終了する（Ｓ１４１９）。
【０１３６】
次に、ステップＳ１４２１〜Ｓ１４３０までの処理は、各種のヘッダ長を算出するヘッダ長算出動作の処理である。
クロックが入力されたら、以下の各ステップでの処理を開始する（Ｓ１４２１）。まず、クロックの立ち上がりのタイミングを検出する（Ｓ１４２２）。次に、Ｉヘッダ位置フラグが「１」、またはヘッダ長カウンタ値が「０」であるという条件が成立するか否かを判断し（Ｓ１４２３）、条件が成立すると判断したときは、以下のヘッダ長として以下に述べる値を代入する。
【０１３７】
まず、ＩＰｖ４ヘッダ長として、Ｉパケットデータから読み出した５ビット目から８ビット目までのデータを代入する（Ｓ１４２４）。次に、拡張ヘッダ長として、Ｉパケットデータから読み出した９ビット目から１６ビット目までのデータを２倍して２を加算した値を代入する（Ｓ１４２５）。
そして、ＡＨヘッダ長として、Ｉパケットデータから読み出した９ビット目から１６ビット目までのデータを２倍した値を代入する（Ｓ１４２６）。また、ＴＣＰヘッダ長としては、「０」を代入する（Ｓ１４２７）。
【０１３８】
ステップＳ１４２３で、Ｉヘッダ位置フラグが「１」、またはヘッダ長カウンタ値が「０」であるという条件が成立しないと判断したとき、ＴＣＰヘッダ長として、Ｉパケットデータから読み出した１ビット目から４ビット目までのデータを代入する（Ｓ１４２８）。
ステップＳ１４２８での処理が完了すると、ヘッダ長算出動作の処理を終了する（Ｓ１４２９）。
【０１３９】
次に、ステップＳ１４３１〜Ｓ１４３３までの処理は、ヘッダ終了フラグを設定するヘッダ終了フラグ設定動作の処理である。
まず、以下に示す第１の条件から第５の条件のうちのいずれか１つ以上の条件が満たされているか否かを判断する（Ｓ１４３１）。ここで、第１の条件は、ヘッダ長カウンタ値が正であり、かつヘッダ長モードが「０」であり、かつヘッダ長カウンタ値とパラメータとして入力された「ヘッダ長」とが等しいことである。第２の条件は、ヘッダ長カウンタ値が正であり、かつヘッダ長モードが「１」であり、かつヘッダ長カウンタ値と上記で代入した「ＩＰｖ４ヘッダ長」とが等しいことである。
【０１４０】
また、第３の条件は、ヘッダ長カウンタ値が正であり、かつヘッダ長モードが「２」であり、かつヘッダ長カウンタ値と上記で代入した「拡張ヘッダ長」とが等しいことである。第４の条件は、ヘッダ長カウンタ値が正であり、かつヘッダ長モードが「３」であり、かつヘッダ長カウンタ値と上記で代入した「ＡＨヘッダ長」とが等しいことである。第５の条件は、ヘッダ長カウンタ値が「３」を超える値であり、かつヘッダ長モードが「４」であり、かつヘッダ長カウンタ値と上記で代入した「ＴＣＰヘッダ長」とが等しいことである。
【０１４１】
ステップＳ１４３１で、上記の第１の条件から第５の条件のうちのいずれか１つ以上の条件が満たされていると判断したとき、いずれかのヘッダ長カウンタ値が設定されたため、ヘッダ終了フラグに「１」を代入する（Ｓ１４３２）。
また、いずれの条件も満たされていないと判断したとき、ヘッダ終了フラグに「０」を代入し（Ｓ１４３２）、このクロックでの処理は終了する。
【０１４２】
［ヘッダＩＤ生成器の構成］
次に、ヘッダＩＤ生成器１３３０について説明する。ヘッダＩＤ生成器１３３０には、適応パラメータレジスタ部１０２４からパラメータとして、例えば「次ヘッダＩＤモード」、「次ヘッダＩＤ値０」、「次ヘッダＩＤ識別子位置」、「第１の次ヘッダＩＤ識別子値」〜「第８の次ヘッダＩＤ識別子値」、および「第１の次ヘッダＩＤ値」〜「第８の次ヘッダＩＤ値」が予め入力されている。
【０１４３】
ここで、「次ヘッダＩＤモード」は、処理対象のヘッダの次ヘッダＩＤを特定する方法を指定するパラメータであり、例えば、１ビットのデータであり、以下のように定義される。
まず「次ヘッダＩＤモード」の値が「０」のときは、次ヘッダＩＤの値として、次ヘッダＩＤ値０によって指定される値を用いる。次ヘッダＩＤ値０は、例えば５ビットのデータからなり、「０ｘ０１」〜「０ｘ１Ｆ」の値をとる。
また「次ヘッダＩＤモード」の値が「１」のときは、「次ヘッダＩＤ識別子位置」、「第１の次ヘッダＩＤ識別子値」〜「第８の次ヘッダＩＤ識別子値」、および「第１の次ヘッダＩＤ値」〜「第８の次ヘッダＩＤ値」を用いて「次ヘッダＩＤ」を特定する。
【０１４４】
「次ヘッダＩＤ識別子位置」は、「次ヘッダＩＤ」を判断するための識別子の位置をヘッダの先頭からのバイト数で指定する、例えば８ビットのデータからなる。識別子の位置がヘッダの先頭である場合は、「０」が指定される。
【０１４５】
「第１の次ヘッダＩＤ識別子値」および「第１の次ヘッダＩＤ値」は、次ヘッダＩＤを判定する識別子を特定し、特定された識別子が処理対象の次ヘッダＩＤであるか否かを判断するために用いられるパラメータである。
このうち、「第１の次ヘッダＩＤ識別子値」は、例えば８ビットのデータからなり、次ヘッダＩＤを判断するための識別子の値を指定するものである。この「次ヘッダＩＤ識別子位置」によってヘッダの先頭からの位置が指定された次ヘッダＩＤ識別子の値を読み取る。読み取った値が「第１の次ヘッダＩＤ値」と一致するとき、「第１の次ヘッダＩＤ値」が「次ヘッダＩＤ」となる。
【０１４６】
「第２の次ヘッダＩＤ識別子値」〜「第８の次ヘッダＩＤ識別子値」、および「第２の次ヘッダＩＤ値」〜「第８の次ヘッダＩＤ値」についても上記と同様である。なお、上記では、８個の次ヘッダＩＤを設定できるようにしたが、この値に限られるものではなく、７個以下でも、９個以上でもよい。
【０１４７】
［ヘッダＩＤ生成器の動作］
次に、図１５を参照して、ヘッダＩＤ生成器１３３０の動作について説明する。図１５は、ヘッダＩＤ生成器１３３０の動作をＶＨＤＬ的に記載した説明図である。
図１５において、ステップＳ１５１１〜Ｓ１５１９までの処理は、次ヘッダＩＤ識別子の値を読み取る次ヘッダＩＤ識別子読取動作の処理である。まず、次ヘッダＩＤ識別子位置の３ビット目から８ビット目までの値が「０」であるか否かを判断し（Ｓ１５１１）、「０」であると判断したとき、以下の処理を行う。
【０１４８】
まず、次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が「０」であるか否かを判断し、「０」であると判断したとき、遅延回路１３１１から出力された遅延パケットデータの１ビット目から８ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１２）。
ステップＳ１５１１で「０」でないと判断したとき、次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が「１」であるか否かを判断し、「１」であると判断したとき、上記の遅延パケットデータの９ビット目から１６ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１３）。
【０１４９】
次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が、ステップＳ１５１２で「０」でなく、ステップＳ１５１３で「１」でないと判断したとき、次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が「２」であるか否かを判断し、「２」であると判断したとき、上記の遅延パケットデータの１７ビット目から２４ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１４）。
【０１５０】
次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が、ステップＳ１５１２で「０」でなく、ステップＳ１５１３で「１」でなく、ステップＳ１５１４で「２」でないと判断したとき、上記の遅延パケットデータの２５ビット目から３２ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１５）。
【０１５１】
また、ステップＳ１５１１で、次ヘッダＩＤ識別子位置の３ビット目から８ビット目までの値が「０」でないと判断したとき、以下の処理を行う。
まず、次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が「０」であるか否かを判断し、「０」であると判断したとき、Ｉパケットデータの１ビット目から８ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１６）。
ステップＳ１５１６で「０」でないと判断したとき、次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が「１」であるか否かを判断し、「１」であると判断したとき、上記のＩパケットデータの９ビット目から１６ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１７）。
【０１５２】
次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が、ステップＳ１５１６で「０」でなく、ステップＳ１５１７で「１」でないと判断したとき、次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が「２」であるか否かを判断し、「２」であると判断したとき、上記のＩパケットデータの１７ビット目から２４ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１８）。
【０１５３】
次ヘッダＩＤ識別子位置の１ビット目と２ビット目の値が、ステップＳ１５１６で「０」でなく、ステップＳ１５１７で「１」でなく、ステップＳ１５１８で「２」でないと判断したとき、上記のＩパケットデータの２５ビット目から３２ビット目までの値を次ヘッダＩＤ識別子読取値として代入する（Ｓ１５１５）。
【０１５４】
次に、ステップＳ１５２１〜Ｓ１５３４までの処理は、次ヘッダＩＤ値を決定する次ヘッダＩＤ値決定動作の処理である。
まず、クロックが入力されたら、以下の各ステップでの処理を開始する（Ｓ１５２１）。次に、クロックの立ち上がりのタイミングを検出する（Ｓ１．５２２）。次に、「次ヘッダＩＤモード」が「０」であるか否かを判断し、「０」であると判断したときは、次ヘッダＩＤ値として「次ヘッダＩＤ値０」を代入する（Ｓ１５２３）。
【０１５５】
ステップＳ１５２３で「次ヘッダＩＤモード」が「０」でないと判断したときは、「Ｉヘッダ位置フラグ」が「１」、またはヘッダ長カウンタ値が「０」であるという条件のいずれかが満たされるか否かを判断し、いずれか１つ以上の条件が満たされると判断したとき、次ヘッダＩＤ値として「０ｘ０」を代入する（Ｓ１５２４）。
【０１５６】
ステップＳ１５２３で「次ヘッダＩＤモード」が「０」でなく、ステップＳ１５２４で「Ｉヘッダ位置フラグ」が「１」、またはヘッダ長カウンタ値が「０」であるという条件のいずれの条件も満たされないと判断したとき、以下の判断を行う。
すなわち、次ヘッダＩＤ識別子位置の３ビット目から８ビット目までの値が「０」であり、かつヘッダ長カウンタ値が「１」であるという第１のヘッダＩＤ詳細識別条件、または、次ヘッダＩＤ識別子位置の３ビット目から８ビット目までの値が「０」であり、かつ次ヘッダＩＤ識別子位置の３ビット目から８ビット目までの値がヘッダ長カウンタ値に等しいという第２のヘッダＩＤ詳細識別条件、のいずれか１つ以上の条件が満たされるか否かを判断する（Ｓ１５２５）。
【０１５７】
ステップＳ１５２５で第１のヘッダＩＤ詳細識別条件または第２のヘッダＩＤ詳細識別条件のいずれかが満たされていると判断したとき、以下の処理を行う。
まず、次ヘッダＩＤ識別子読取値が第１の次ヘッダＩＤ識別子値と等しいか否かを判断し、等しいと判断したとき、次ヘッダＩＤ値にパラメータである「第１の次ヘッダＩＤ値」を代入する（Ｓ１５２６）。
ステップＳ１５２６で等しくないと判断したとき、次ヘッダＩＤ識別子読取値が第２の次ヘッダＩＤ識別子値と等しいか否かを判断し、等しいと判断したとき、次ヘッダＩＤ値にパラメータである「第２の次ヘッダＩＤ値」を代入する（Ｓ１５２７）。
【０１５８】
同様にして、ステップＳ１５２６以降の各ステップでの判断で等しくないと判断したときは、次ヘッダＩＤ値に、ステップＳ１５２８でパラメータである「第３の次ヘッダＩＤ値」を代入し、ステップＳ１５１９でパラメータである「第４の次ヘッダＩＤ値」を代入し、ステップＳ１５２０でパラメータである「第５の次ヘッダＩＤ値」を代入し、ステップＳ１５３１でパラメータである「第６の次ヘッダＩＤ値」を代入し、ステップＳ１５３２でパラメータである「第７の次ヘッダＩＤ値」を代入し、ステップＳ１５３３でパラメータである「第８の次ヘッダＩＤ値」を代入する。
【０１５９】
ステップＳ１５２６からＳ１５３３までの各ステップでの判断で等しくないと判断したときは、次ヘッダＩＤ値に、「０ｘ０」を代入する（Ｓ１５３４）。
ステップＳ１５３４での処理が完了すると、ヘッダ長算出動作の処理を終了する（Ｓ１５３５）。
【０１６０】
次に、ステップＳ１５４１〜Ｓ１５４３までの処理は、ヘッダＩＤを決定するヘッダＩＤ決定動作の処理である。
まず、Ｉヘッダ位置フラグが「１」であるか否かを判断し、「１」であると判断したとき、ヘッダＩＤとしてＩヘッダＩＤを代入する（Ｓ１５４１）。ステップＳ１５４１でＩヘッダ位置フラグが「１」でないと判断したとき、ヘッダ長カウンタ値が「０」であるか否かを判断し、「０」であると判断したとき、ヘッダＩＤとして上記で算出した次ヘッダＩＤ値を代入する（Ｓ１５４２）。
ステップＳ１５４１での判断、およびステップＳ１５４２での判断で、条件が満たされないと判断したとき、ヘッダＩＤとしてヘッダＩＤレジスタ値を代入する（Ｓ１５４３）。ステップＳ１５４３での処理が完了すると、ヘッダＩＤ決定動作の処理を終了する。
【０１６１】
次に、クロックが入力されたら（Ｓ１５５１）、クロックの立ち上がりのタイミングを検出し、ヘッダＩＤレジスタ値にヘッダＩＤを代入する（Ｓ１５５２）。
ステップＳ１５５２での処理が完了すると、このクロックでの処理を終了する（Ｓ１５５３）。
【０１６２】
［マーク生成器の構成］
次に、マーク生成器１３４０について説明する。マーク生成器１３４０には、適応パラメータレジスタ部１０２４からパラメータとして、例えば、「マーク開始位置」、「マーク終了位置」、および「識別子マークパターン」からなるパラメータの組が予め５組、入力されている。以上では、５組のパラメータを設定できるようにしたが、５組に限られるものではなく、４組以下でも、６組以上でもよい。
【０１６３】
ここで、「第１の識別子マークパターン」は、Ｉ識別子マークに追加するマーク値を３２ビットで指定するパラメータである。
このうち、「第１のマーク開始位置」は、「第１の識別子マークパターン」をＩ識別子マークに追加する開始位置を示す、例えば６バイトのパラメータからなる。
また、「第１のマーク終了位置」は、Ｉ識別子マークに追加する「第１の識別子マークパターン」の終了位置を示す、例えば、６バイトのパラメータからなる。他の組のパラメータについても同様である。
【０１６４】
「第１のマーク開始位置」は、マークを開始する位置を、ヘッダの先頭（Ｉヘッダ位置フラグが示すタイミング）からのバイト数を４バイト単位で指定する。具体的には、「０ｘ０」〜「０ｘ３Ｆ」のいずれかの値をとり、「０ｘ０」がヘッダの先頭のワード位置を意味するものとする。
同様にして、「第１のマーク終了位置」は、マークを終了する位置を、ヘッダの先頭（Ｉヘッダ位置フラグが示すタイミング）からのバイト数を４バイト単位で指定する。具体的には、「０ｘ０」〜「０ｘ３Ｆ」のいずれかの値をとり、「０ｘ０」がヘッダの先頭のワード位置を意味するものとする。
「第１の識別子マークパターン」は、「第１のマーク開始位置」から「第１のマーク終了位置」まで４バイト単位で継続して追加される。他の組のパラメータについても同様である。
【０１６５】
［マーク生成器の動作］
次に、図１６を用いてマーク生成器１３４０の動作について説明する。図１６は、マーク生成器１３４０の動作をＶＨＤＬ的に記載した説明図である。
図１６において、ステップＳ１６１１〜Ｓ１６１５までの処理はマーク値１を設定する処理であり、ステップＳ１６２１〜Ｓ１６２５までの処理はマーク値２を設定する処理であり、ステップＳ１６５１〜Ｓ１６５５までの処理はマーク値５を設定する処理である。なお、マーク値３およびマーク値４の設定の処理については記載しないが、上記の記載から明らかである。
【０１６６】
まず、Ｉヘッダ位置フラグが「１」であり、かつ第１のマーク開始位置が「０」であるという条件と、第１のマーク開始位置がヘッダ長カウンタ値以下であるという条件のうちの少なくとも一方の条件が満たされていることを条件とする第１のマーク開始条件が満たされているか否かの判断を行い（Ｓ１６１１）、満たされていると判断したとき、以下のステップＳ１６１２での判断を行う。
ステップＳ１６１２では、Ｉヘッダ位置フラグが「１」であり、かつ第１のマーク終了位置が「０」であるという条件と、第１のマーク終了位置がヘッダ長カウンタ値以上であるという条件のうちの少なくとも一方の条件が満たされていることを条件とする第１のマーク終了条件が満たされているか否かの判断を行う。
【０１６７】
ステップＳ１６１２で、第１のマーク終了条件が満たされていると判断したとき、マーク値１に「第１の識別子マークパターン」を代入し（Ｓ１６１３）、満たされていないと判断したときは、マーク値１に「０」を代入する（Ｓ１６１４）。
ステップＳ１６１１で第１のマーク開始条件が満たされていないと判断したときは、マーク値１に「０」を代入する（Ｓ１６１５）。
ステップＳ１６２１〜Ｓ１６５５までの各ステップで、上記と同様の処理を行い、マーク値２〜マーク値５を設定する。
【０１６８】
次に、クロックが入力されたら（Ｓ１６６１）、クロックの立ち上がりのタイミングを検出して、遅延識別子マーク値にＩ識別子マーク値を代入し（Ｓ１６６２）、ステップＳ１６６３で処理を終了する。
次に、クロックが入力されたら（Ｓ１６７１）、クロックの立ち上がりのタイミングを検出して、Ｏ識別子マーク値にＩ識別子マーク値、マーク値１、マーク値２、マーク値３、マーク値４、またはマーク値５のうちのいずれかを代入し（Ｓ１６７２）、ステップＳ１６７３で処理を終了する。
【０１６９】
上記では、特定ヘッダ解析部１１２1〜１１２Kを設けた構成例について説明したが、Ｅｔｈｅｒヘッド解析部１１１や特定要素回路１１０1〜１１０Kを設けなくともよい。また、適応ヘッダ解析部１０１４から識別子マーク、ヘッダ位置フラグ、およびヘッダＩＤを出力させ、適応ヘッダ解析部１０１４を複数有する構成としてもよい。
【０１７０】
以上説明したように、本発明の第２の実施の形態にかかるパケット構文解析装置は、要素プロトコルに対応して１つ以上の適応要素回路を設け、その適応要素回路で対応する要素プロトコルの下に作成されたヘッダ内の情報を解析するようにしたので、プログラムを必要とすることなくパケット構文解析でき、パケット構文解析に要する処理時間を短縮し、消費電力を低減できる。
【０１７１】
これに加えて、上記適応要素回路において、解析に用いるパラメータ群を適応パラメータレジスタ部で複数記憶し、所定の要素プロトコルに固有の識別情報（ヘッダＩＤ）を適応ヘッダ解析部から適応パラメータレジスタ部へ通知することにより、解析対象となる要素プロトコルに対応するパラメータ群を適応パラメータレジスタ部から取得するようにしたので、解析対象とする通信プロトコルを任意に選択することができる。
この際、適応ヘッダ解析部のヘッダＩＤ生成部で、入力されたパケットデータ、さらには前段でのヘッダ解析結果に基づき識別情報（ヘッダＩＤ）を生成するようにしたので、未知のパケットデータに対して適切な要素プロトコルのパラメータ群を選択できる。
【０１７２】
また、各適応要素回路が、対応する要素プロトコルのヘッダの開始位置を特定するアクションコード、および対応するヘッダ内の情報の位置を特定するマークコードを少なくとも生成するようにしたので、次段の適応要素回路が解析開始のタイミング等を容易に検出でき、処理時間を一層短縮できるとともに、消費電力をさらに低減することができる。
また、適応パラメータレジスタの選択回路で、特定ヘッダ解析部へ入力するパラメータ群の一部または全部を選択して出力するようにしたので、パケット構文解析に要する処理時間を短縮し、消費電力を低減できるとともに、処理対象の通信プロトコルの変更をより柔軟に行うことができる。
【０１７３】
また、各適応要素回路では、対応する要素プロトコルのヘッダの開始位置を特定するアクションコード、および対応するヘッダ内の情報の位置を特定するマークコードを少なくとも生成するようにしたので、次段の適応要素回路が解析開始のタイミング等を容易に検出でき、処理時間を一層短縮できるとともに、消費電力をさらに低減することができる。
【０１７４】
また、特定要素回路と適応要素回路を縦続接続したので、処理時間の短縮と、処理可能な通信プロトコルの変更とのバランスの適正化を図ることができる。
この際、特定要素回路での解析結果に基づいて当該適応ヘッダ解析部で解析対象となる要素プロトコルに固有の識別情報（ヘッダＩＤ）を生成する識別情報生成部（ヘッダＩＤ生成部）をさらに設け、適応ヘッダ解析部により、識別情報生成部からの識別情報を用いて所望のパラメータ群を適応パラメータレジスタ部から取得するようにしたので、前段が特定要素回路であっても、未知のパケットデータに対して適切な要素プロトコルのパラメータ群を選択できる。
【０１７５】
また、各適応要素回路では、次適応要素回路が対象とする要素プロトコルの識別情報である次ヘッダＩＤを生成して、次段の適応要素回路に出力するようにしたので、処理の一層の高速化を図ることができる。
【産業上の利用分野】
【０１７６】
本発明にかかるパケット構文解析装置は、パケット構文解析に要する処理時間を短縮し、消費電力を低減できるとともに、処理対象の通信プロトコルの変更できるという効果を有し、かかる効果が有用なネットワーク上の中継器やスイッチ等の用途にも適用できる。
【図面の簡単な説明】
【０１７７】
【図１】本発明の第１の実施の形態にかかるパケット構文解析装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態にかかるパケット構文解析装置に入力される入力パケットデータおよび入力制御信号の構成、並びにパケット構文解析装置の動作を示す説明図である。
【図３】本発明の第１の実施の形態にかかるパケット構文解析装置で入出力される各種信号を示す説明図である。
【図４】各特定ヘッダ解析部の詳細な回路構成を示すブロック図である。
【図５】処理開始判定器の動作をＶＨＤＬ的に記載した説明図である。
【図６】ヘッダ長計測器の動作をＶＨＤＬ的に記載した説明図である。
【図７】各マーク生成器の動作をＶＨＤＬ的に記載した説明図である。
【図８】ＩＰｖ６用のパラメータ群の設定例である。
【図９】図８に示すパラメータ群の下での各特定ヘッダ解析部の動作を示す説明図である。
【図１０】本発明の第２の実施の形態にかかるパケット構文解析装置のブロック構成を示す図である。
【図１１】本発明の第２の実施の形態にかかるパケット構文解析装置で入出力される各種信号を示す説明図である。
【図１２】適応パラメータレジスタ部の構成を示すブロック図である。
【図１３】適応ヘッダ解析部の構成を示すブロック図である。
【図１４】ヘッダ長カウンタ器の動作をＶＨＤＬ的に記載した説明図である。
【図１５】ヘッダＩＤ生成器の動作をＶＨＤＬ的に記載した説明図である。
【図１６】マーク生成器の動作をＶＨＤＬ的に記載した説明図である。
【符号の説明】
【０１７８】
１００，１０００…パケット構文解析装置、１１０1〜１１０M，１１０m，１１０K…特定要素回路、１１１…Ｅｔｈｅｒｎｅｔヘッダ解析部、１１２1〜１１２M，１１２m，１１２K…特定ヘッダ解析部、１２２1〜１２２M，１２２m，１２２K…特定パラメータレジスタ部、１３０…レジスタアクセス用バス、４１１，４１２…処理開始判定器、４２１，４３２，４５１…ＯＲ回路、４２２，４２３…ＡＮＤ回路、４３１…ヘッダ長計測器、４４１〜４４５…マーク生成器、４６１〜４６３…遅延回路、１０１０…適応要素回路、１０１３…ヘッダＩＤ生成部、１０１４…適応ヘッダ解析部、１０２３…ＩＤ生成パラメータレジスタ部、１０２４…適応パラメータレジスタ部、１２０１1〜１２０１N…レジスタ、１２０２…選択回路、１２０３，１３１１，１３１２…遅延回路、１３２０…ヘッダ長カウンタ器、１３３０…ヘッダＩＤ生成器、１３４０…マーク生成器、Ｐ０１〜Ｐ３２…パラメータ群。
【図１】
2005303414.tif 000003
【図２】
2005303414.tif 000004
【図３】
2005303414.tif 000005
【図４】
2005303414.tif 000006
【図５】
2005303414.tif 000007
【図６】
2005303414.tif 000008
【図７】
2005303414.tif 000009
【図８】
2005303414.tif 000010
【図９】
2005303414.tif 000011
【図１０】
2005303414.tif 000012
【図１１】
2005303414.tif 000013
【図１２】
2005303414.tif 000014
【図１３】
2005303414.tif 000015
【図１４】
2005303414.tif 000016
【図１５】
2005303414.tif 000017
【図１６】
2005303414.tif 000018