(57)【要約】【課題】高速なＩＰｓｅｃパケットの送受信処理を行うとともに、拡張ヘッダが付加されたＩＰＳｅｃパケットについても送受信処理を行う。【解決手段】拡張ヘッダを有するＩＰｓｅｃパケットの送信時、ＣＰＵ６５０は、内側ＩＰパケットをカプセル化した拡張ヘッダ付ＩＰｖ６カプセル化パケットを生成する。ＩＰｓｅｃ回路６２０は、該パケットにＥＳＰヘッダを付加し、ＩＰヘッダ内のペイロード長の情報を書き替え、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを生成する。拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットの受信時、ＩＰｓｅｃ回路６２０は、復号処理により内側ＩＰパケットを取得し、拡張ヘッダ内の次ヘッダを書き替え、該ＩＰｓｅｃパケットのＩＰヘッダ内のペイロード長を書き替える。そして、書き替えたＩＰヘッダ及び拡張ヘッダを有し、内側ＩＰパケットをカプセル化した拡張ヘッダ付ＩＰｖ６カプセル化パケットをＣＰＵ６５０へ出力する。【選択図】図１
2007135035.tif 000002
【特許請求の範囲】
【請求項１】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置において、
前記内側ＩＰパケットをＩＰｖ６カプセル化したＩＰｖ６カプセル化パケットに対して前記拡張ヘッダを付加した拡張ヘッダ付ＩＰｖ６カプセル化パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力するソフトウェア処理部と、
前記ソフトウェア処理部により出力されたＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記ＩＰｖ６パケットの内側ＩＰパケットに対してＥＳＰ暗号処理を行い、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットとして出力するＩＰｓｅｃ処理部と、
前記ＩＰｓｅｃ処理部により出力された拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信するインタフェース部と、
を備えることを特徴とする通信装置。
【請求項２】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置において、
前記ＩＰｖ６  ＩＰｓｅｃパケットの長さがＭＴＵを越える場合に、内側ＩＰパケットをＩＰｖ６カプセル化し、前記ＩＰｖ６カプセル化パケットを各々フラグメント拡張ヘッダが付加された複数のフラグメントＩＰｖ６パケットに分割し、前記各フラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力するソフトウェア処理部と、
前記ソフトウェア処理部により出力されたフラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記フラグメントＩＰｖ６パケットのフラグメント拡張ヘッダ以後のデータに対してＥＳＰ暗号処理を行い、ＩＰｖ６  ＩＰｓｅｃパケットとして出力するＩＰｓｅｃ処理部と、
前記ＩＰｓｅｃ処理部により出力されたＩＰｖ６  ＩＰｓｅｃパケットを送信するインタフェース部と、
を備えることを特徴とする通信装置。
【請求項３】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置において、
ＩＰｖ６  ＩＰｓｅｃパケットを受信し出力するインタフェース部と、
前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットが、拡張ヘッダが付加されたＩＰｓｅｃ受信処理対象のパケットであることを検出し、前記検出されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードのＩＰパケットを内側ＩＰパケットとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもち、前記拡張ヘッダが付加された、拡張ヘッダ付ＩＰｖ６カプセル化パケットを出力するＩＰｓｅｃ処理部と、
前記ＩＰｓｅｃ処理部から出力された拡張ヘッダ付ＩＰｖ６カプセル化パケットの拡張ヘッダに基づく所定の拡張ヘッダ処理を行い、前記拡張ヘッダ付ＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得するソフトウェア処理部と、
を備えることを特徴とする通信装置。
【請求項４】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置において、
ＩＰｖ６  ＩＰｓｅｃパケットを受信し出力するインタフェース部と、
前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードの先頭にフラグメント拡張ヘッダが付加されていることを検出し、前記検出されたデータをペイロードとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもつ、フラグメントＩＰｖ６パケットを出力するＩＰｓｅｃ処理部と、
１個のＩＰｖ６パケットから分割された複数の前記フラグメントＩＰｖ６パケットを収集し、再構成を行って分割前のＩＰｖ６パケットを取得し、前記ＩＰｖ６パケットがＩＰパケットをＩＰｖ６カプセル化されたＩＰｖ６カプセル化パケットであることを検出して、前記検出されたＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得するソフトウェア処理部と、
を備えることを特徴とする通信装置。
【請求項５】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置に用いられるパケット処理方法であって、
ソフトウェア処理部が、前記内側ＩＰパケットをＩＰｖ６カプセル化したＩＰｖ６カプセル化パケットに対して前記拡張ヘッダを付加した拡張ヘッダ付ＩＰｖ６カプセル化パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力し、
ＩＰｓｅｃ処理部が、前記ソフトウェア処理部により出力されたＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記ＩＰｖ６パケットの内側ＩＰパケットに対してＥＳＰ暗号処理を行い、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットとして出力し、
インタフェース部が、前記ＩＰｓｅｃ処理部により出力された拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信する、
ことを特徴とするパケット処理方法。
【請求項６】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置用いられるパケット処理方法であって、
ソフトウェア処理部が、前記ＩＰｖ６  ＩＰｓｅｃパケットの長さがＭＴＵを越える場合に、内側ＩＰパケットをＩＰｖ６カプセル化し、前記ＩＰｖ６カプセル化パケットを各々フラグメント拡張ヘッダが付加された複数のフラグメントＩＰｖ６パケットに分割し、前記各フラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力し、
ＩＰｓｅｃ処理部が、前記ソフトウェア処理部により出力されたフラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記フラグメントＩＰｖ６パケットのフラグメント拡張ヘッダ以後のデータに対してＥＳＰ暗号処理を行い、ＩＰｖ６  ＩＰｓｅｃパケットとして出力し、
インタフェース部が、前記ＩＰｓｅｃ処理部により出力されたＩＰｖ６  ＩＰｓｅｃパケットを送信する、
ことを特徴とするパケット処理方法。
【請求項７】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置に用いられるパケット処理方法であって、
インタフェース部が、ＩＰｖ６  ＩＰｓｅｃパケットを受信して出力し、
ＩＰｓｅｃ処理部が、前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットが、拡張ヘッダが付加されたＩＰｓｅｃ受信処理対象のパケットであることを検出して、前記検出されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードのＩＰパケットを内側ＩＰパケットとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもち、前記拡張ヘッダが付加された、拡張ヘッダ付ＩＰｖ６カプセル化パケットを出力し、
前記ソフトウェア処理部が、前記ＩＰｓｅｃ処理部から出力された拡張ヘッダ付ＩＰｖ６カプセル化パケットの拡張ヘッダに基づく所定の拡張ヘッダ処理を行い、前記拡張ヘッダ付ＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得する、
ことを特徴とするパケット処理方法。
【請求項８】
ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置に用いられるパケット処理方法であって、
インタフェース部が、ＩＰｖ６  ＩＰｓｅｃパケットを受信して出力し、
ＩＰｓｅｃ処理部が、前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードの先頭にフラグメント拡張ヘッダが付加されていることを検出して、前記検出されたデータをペイロードとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもつ、フラグメントＩＰｖ６パケットを出力し、
ソフトウェア処理部が、１個のＩＰｖ６パケットから分割された複数の前記フラグメントＩＰｖ６パケットを収集し、再構成を行って分割前のＩＰｖ６パケットを取得し、前記ＩＰｖ６パケットがＩＰパケットをＩＰｖ６カプセル化されたＩＰｖ６カプセル化パケットであることを検出して、前記検出されたＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得する、
ことを特徴とするパケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＰｓｅｃパケットを送受信する通信装置及びパケット処理方法に関する。
【背景技術】
【０００２】
近年、ＩＰ（Internet Protocol）通信を安全に行うために、ＩＰパケットの認証・暗号化を行うＩＰｓｅｃ（Security Architecture for Internet Protocol）が使用されている。
【０００３】
図９は、ＩＰｓｅｃパケットの構成を説明するための図である。ＩＰｓｅｃには、トンネルモードとトランスポートモードがあるが、ここでは、トンネルモードについてのみ説明する。
なお、本明細書においては、ＯＳＩ（Open Systems Interconnection）参照モデルの第２層にあたるデータリンク層において送受信されるデータをフレームと記載し、第３層において送受信されるデータ、すなわちフレームからＭＡＣ（Media Access Control）ヘッダやＶＬＡＮ（Virtual Local Area Network）ヘッダを除いたものをパケットと記載する。例えば、ＩＰパケットは、ＩＰヘッダ及びＩＰデータからなる。
【０００４】
ＩＰｓｅｃは、ＩＰにＥＳＰ（Encapsulating Security Payload）などのプロトコルを追加して構成される。送受信データを暗号化する場合、トンネルモードのＩＰｓｅｃでは、ＩＰパケット７１０を暗号化して暗号化パケット７２０を生成し、トレーラ７３０を付加する。さらに、新たなＩＰヘッダ７４０及びＩＰｓｅｃヘッダ７５０を付加して、暗号化パケット７２０及びトレーラ７３０がカプセル化されたＩＰｓｅｃパケットを生成する。ここでは、ＩＰｓｅｃパケットに設定される新たなＩＰヘッダ７４０を外側ＩＰヘッダとよび、外側ＩＰヘッダがＩＰｖ６を用いている場合は、外側ＩＰｖ６ヘッダと記載する。ＥＳＰを用いる場合、ＩＰｓｅｃヘッダ７５０にはＥＳＰヘッダが用いられる。ＥＳＰヘッダは、ＳＰＩ（セキュリティパラメータインデックス）と、シーケンス番号からなる。ＳＰＩは、ＩＰｓｅｃにおける論理的なコネクションであるＳＡ（セキュリティアソシエーション）を管理するＳＡＤ（セキュリティアソシエーションデータベース）の検索に用いられる値を示す。また、シーケンス番号は、パケットの順番を示す。
【０００５】
暗号化に用いられるアルゴリズムには、ＮＵＬＬ暗号アルゴリズム（暗号化機能を使用しない）、ＣＢＣ−ＡＥＳ（Cipher Block Chaining - Advanced Encryption Standard）などがある。ＣＢＣ−ＡＥＳを使用する場合、次の暗号化に用いるための情報であるＩＶ（初期ベクトル）７６０がＩＰｓｅｃヘッダ（ＥＳＰヘッダ）７５０と暗号化パケット７２０との間に設定される。また、暗号化パケット７２０を生成する際は、ＩＰパケット７１０にパディングを行って暗号化する。ＩＰパケット７１０へパディングする長さは、生成された暗号化パケット７２０とトレーラ７３０を合わせた長さが、所定のバイト数の整数倍となるように決められる。トレーラ７３０は、パディング長と、次ヘッダの情報とを含むデータであり、ＮＵＬＬ暗号アルゴリズム以外では暗号化される。パディング長とは、暗号化パケット７２０を生成する際にＩＰパケット７１０に行ったパディングの長さを示す。また、次ヘッダとは、パケット内でＩＰｓｅｃヘッダ（ＥＳＰヘッダ）７５０の次に来るヘッダのプロトコルを示し、同図においては、トンネルモードであるのでＩＰを示す値が設定される。認証を行う場合は、認証データであるＩＣＶ（Integrity Check Value）７７０がトレーラ７３０の後ろに付加される。
【０００６】
ＩＰｓｅｃを搭載する従来の装置の構成には、ルックアサイド型とインライン型の２つがある（例えば、非特許文献１参照）。
図１０は、ルックアサイド型のＩＰｓｅｃ回路を搭載したパケット転送装置の構成を示すブロック図である。同図においては、ＣＰＵ（Central Processing Unit）、ＩＰｓｅｃのパケットを含むフレームを送受信する第１ＬＡＮ（Local Area Network）ポート、ＩＰパケットを含むフレームを送受信する第２ＬＡＮポート、及び、ＩＰｓｅｃ回路がバスを介して接続されている。この構成において、ＣＰＵが第１ＬＡＮポートからＩＰｓｅｃパケットを受信してデカプセル化を含むパケットヘッダ処理を行い（ステップＳ１００１）、暗号化データをＩＰｓｅｃ回路に転送する（ステップＳ１００２）。ＩＰｓｅｃ回路は、復号したデータをＣＰＵに転送し（ステップＳ１００３）、ＣＰＵから第２ＬＡＮポートへ復号されたＩＰパケットが転送されて送信処理が行われる（ステップＳ１００４）。
【０００７】
このように、同図に示すパケット転送装置では、ＣＰＵがＩＰｓｅｃパケットを送受信し、暗号・復号・認証の各定型処理のみをワイヤードロジックにより構成されるＩＰｓｅｃ回路により処理させている。ＣＰＵ上で実行されたソフトウェアによってカプセル化やデカプセル化などを含むパケットヘッダ処理が行われるため、多様なパケット形式に対して対応できるという柔軟性がある。しかし、受信したパケットデータは、バスを介して、ＣＰＵ／メモリ／ＩＰｓｅｃ回路間を複数回転送される。このため、バス性能がパケット処理能力を制限するとともに、パケットヘッダ処理のためのＣＰＵ負荷が大きくなる。
【０００８】
図１１は、インライン型ＩＰｓｅｃ回路を搭載したパケット転送装置の構成を示すブロック図である。同図においては、ＩＰｓｅｃのパケットを含むフレームを送受信する第１ＬＡＮポートと、ＩＰｓｅｃ回路とが直接接続されており、ＩＰｓｅｃ回路、ＣＰＵ、及び、ＩＰパケットを含むフレームを送受信する第２ＬＡＮポートがバスを介して接続されている。この構成において、ＩＰｓｅｃ回路が第１ＬＡＮポートからＩＰｓｅｃのパケットを受信してデカプセル化を含むパケットヘッダ処理と、復号・認証処理を行い（ステップＳ１０１１）、デカプセル化したパケットをＣＰＵに転送する（ステップＳ１０１２）。そして、ＣＰＵからＬＡＮポートにＩＰパケットが転送されて送信処理が行われる（ステップＳ１０１３）。
【０００９】
このように、同図に示すパケット転送装置では、ＩＰｓｅｃ回路が、暗号、復号、認証の各定型処理のみならず、パケットの送受信と前記パケットに対するパケットヘッダ処理を行うため、ＣＰＵの割り込みがなく、負荷が軽減されるとともに、パケットデータがバス９６２を介して転送される回数が軽減する。
【非特許文献１】東京エレクトロンデバイス株式会社、“東京エレクトロンデバイスニュース”、[online]、[平成１７年８月３日]、インターネット＜ＵＲＬ： http://www.teldevice.co.jp/tednews/Vol-78/engineer.html＞
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述したインライン型のＩＰｓｅｃ回路は、高速処理が可能となる。しかし、ＩＰｓｅｃ回路はハードウェア処理で実現されているため、パケットヘッダ処理が定型処理となり、例外的なパケット構造には対応できないという問題があった。特に、ＩＰｖ６ルータ装置のＩＰｓｅｃ回路はトンネルモードのＩＰｓｅｃパケットを処理するが、カプセル化やデカプセル化の処理をＩＰｓｅｃ回路が行うため、カプセル化後の外側ＩＰｖ６ヘッダに拡張ヘッダを追加して送信することや、拡張ヘッダが追加されたパケットを受信したとき、その拡張ヘッダ内容に応じた拡張ヘッダ処理を行うことができないという問題がっあた。
【００１１】
また、受信したＩＰパケットに対して、外側ＩＰヘッダ等を付加するＩＰｓｅｃカプセル化を行うため、ＩＰｓｅｃカプセル化前のフレーム長よりもＩＰｓｅｃカプセル化後のフレーム長が大きくなるが、ＩＰｓｅｃカプセル化前後の両フレームとも、データリンク層の最大フレーム長を超えることができない。このため、ＩＰｓｅｃカプセル化前のフレーム長がデータリンク層の最大フレーム長に近い場合、ＩＰｓｅｃカプセル化後のフレーム長は前記最大フレーム長を超えてしまう。このままでは送信できないため、通常は、受信したＩＰパケットを分割した後、ＩＰｓｅｃカプセル化して送信し、前記ＩＰｓｅｃパケットを受信したときにＩＰｓｅｃデカプセル化して、分割されたＩＰパケットを取得し、これらを再構成して分割前のＩＰパケットに戻している（第１の方法）。あるいは、受信したＩＰパケットをＩＰｓｅｃカプセル化した後分割して送信し、前記分割されたＩＰｓｅｃパケットを受信したとき、これらを再構成して分割前のＩＰｓｅｃパケットに戻した後、ＩＰｓｅｃデカプセル化してＩＰパケットを取得している（第２の方法）。ここで、前記分割処理や再構成処理は複雑であるため、回路規模が増大するハードウェア処理よりも、ソフトウェア処理が望ましい。また、計算量が多いＩＰｓｅｃカプセル化やデカプセル化の処理はハードウェア処理が望ましい。しかし、第１の方法は、分割禁止ビットが立っていないＩＰｖ４パケットに限られるという問題があった。また、第２の方法は、ＩＰｓｅｃ処理の後に分割処理を行って送信し、また、受信パケットの再構成処理の後にＩＰｓｅｃ処理を行う必要があるため、ハードウェアによる送受信とＩＰｓｅｃ処理の間に、ソフトウェアによる分割処理や再構成処理が入り、インライン型のＩＰｓｅｃ処理が困難になるという問題があった。
なお、ＩＰｖ６パケットの拡張ヘッダには、ホップバイホップ・オプション、デスティネーション・オプション、ルーティング、フラグメント、認証（Authentication）、ＥＳＰなどがあるが、詳細は、ＩＥＴＦ（Internet Engineering Task Force）  ＲＦＣ（Request For Comments） ２４６０を参照のこと。
【００１２】
本発明は、上記問題を解決するためになされたもので、その目的は、高速なＩＰｓｅｃパケットの送受信処理を行うとともに、拡張ヘッダが付加されたＩＰＳｅｃパケットや、フラグメントを伴うＩＰｓｅｃパケットについても送受信処理を行うことができる通信装置及びパケット処理方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記問題を解決するために、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置において、前記内側ＩＰパケットをＩＰｖ６カプセル化したＩＰｖ６カプセル化パケットに対して前記拡張ヘッダを付加した拡張ヘッダ付ＩＰｖ６カプセル化パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力するソフトウェア処理部と、前記ソフトウェア処理部により出力されたＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記ＩＰｖ６パケットの内側ＩＰパケットに対してＥＳＰ暗号処理を行い、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットとして出力するＩＰｓｅｃ処理部と、前記ＩＰｓｅｃ処理部により出力された拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信するインタフェース部と、を備えることを特徴とする通信装置である。
【００１４】
また、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置において、前記ＩＰｖ６  ＩＰｓｅｃパケットの長さがＭＴＵを越える場合に、内側ＩＰパケットをＩＰｖ６カプセル化し、前記ＩＰｖ６カプセル化パケットを各々フラグメント拡張ヘッダが付加された複数のフラグメントＩＰｖ６パケットに分割し、前記各フラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力するソフトウェア処理部と、前記ソフトウェア処理部により出力されたフラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記フラグメントＩＰｖ６パケットのフラグメント拡張ヘッダ以後のデータに対してＥＳＰ暗号処理を行い、ＩＰｖ６  ＩＰｓｅｃパケットとして出力するＩＰｓｅｃ処理部と、前記ＩＰｓｅｃ処理部により出力されたＩＰｖ６  ＩＰｓｅｃパケットを送信するインタフェース部と、を備えることを特徴とする通信装置である。
【００１５】
また、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置において、ＩＰｖ６  ＩＰｓｅｃパケットを受信し出力するインタフェース部と、前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットが、拡張ヘッダが付加されたＩＰｓｅｃ受信処理対象のパケットであることを検出し、前記検出されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードのＩＰパケットを内側ＩＰパケットとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもち、前記拡張ヘッダが付加された、拡張ヘッダ付ＩＰｖ６カプセル化パケットを出力するＩＰｓｅｃ処理部と、前記ＩＰｓｅｃ処理部から出力された拡張ヘッダ付ＩＰｖ６カプセル化パケットの拡張ヘッダに基づく所定の拡張ヘッダ処理を行い、前記拡張ヘッダ付ＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得するソフトウェア処理部と、を備えることを特徴とする通信装置である。
【００１６】
また、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置において、ＩＰｖ６  ＩＰｓｅｃパケットを受信し出力するインタフェース部と、
前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードの先頭にフラグメント拡張ヘッダが付加されていることを検出し、前記検出されたデータをペイロードとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもつ、フラグメントＩＰｖ６パケットを出力するＩＰｓｅｃ処理部と、１個のＩＰｖ６パケットから分割された複数の前記フラグメントＩＰｖ６パケットを収集し、再構成を行って分割前のＩＰｖ６パケットを取得し、前記ＩＰｖ６パケットがＩＰパケットをＩＰｖ６カプセル化されたＩＰｖ６カプセル化パケットであることを検出して、前記検出されたＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得するソフトウェア処理部と、を備えることを特徴とする通信装置である。
【００１７】
また、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置に用いられるパケット処理方法であって、ソフトウェア処理部が、前記内側ＩＰパケットをＩＰｖ６カプセル化したＩＰｖ６カプセル化パケットに対して前記拡張ヘッダを付加した拡張ヘッダ付ＩＰｖ６カプセル化パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力し、ＩＰｓｅｃ処理部が、前記ソフトウェア処理部により出力されたＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記ＩＰｖ６パケットの内側ＩＰパケットに対してＥＳＰ暗号処理を行い、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットとして出力し、インタフェース部が、前記ＩＰｓｅｃ処理部により出力された拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを送信する、ことを特徴とするパケット処理方法である。
【００１８】
また、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを送信する通信装置用いられるパケット処理方法であって、ソフトウェア処理部が、前記ＩＰｖ６  ＩＰｓｅｃパケットの長さがＭＴＵを越える場合に、内側ＩＰパケットをＩＰｖ６カプセル化し、前記ＩＰｖ６カプセル化パケットを各々フラグメント拡張ヘッダが付加された複数のフラグメントＩＰｖ６パケットに分割し、前記各フラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化されたＩＰｓｅｃ送信処理対象のパケットであることを示すＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して出力し、ＩＰｓｅｃ処理部が、前記ソフトウェア処理部により出力されたフラグメントＩＰｖ６パケットに、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報が付加されている場合に、前記フラグメントＩＰｖ６パケットのフラグメント拡張ヘッダ以後のデータに対してＥＳＰ暗号処理を行い、ＩＰｖ６  ＩＰｓｅｃパケットとして出力し、インタフェース部が、前記ＩＰｓｅｃ処理部により出力されたＩＰｖ６  ＩＰｓｅｃパケットを送信する、ことを特徴とするパケット処理方法である。
【００１９】
また、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行い、かつ、外側ＩＰｖ６パケットに拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置に用いられるパケット処理方法であって、インタフェース部が、ＩＰｖ６  ＩＰｓｅｃパケットを受信して出力し、ＩＰｓｅｃ処理部が、前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットが、拡張ヘッダが付加されたＩＰｓｅｃ受信処理対象のパケットであることを検出して、前記検出されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードのＩＰパケットを内側ＩＰパケットとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもち、前記拡張ヘッダが付加された、拡張ヘッダ付ＩＰｖ６カプセル化パケットを出力し、前記ソフトウェア処理部が、前記ＩＰｓｅｃ処理部から出力された拡張ヘッダ付ＩＰｖ６カプセル化パケットの拡張ヘッダに基づく所定の拡張ヘッダ処理を行い、前記拡張ヘッダ付ＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得する、ことを特徴とするパケット処理方法である。
【００２０】
また、本発明は、ＩＰパケットを内側ＩＰパケットとしてＥＳＰトンネルモードのＩＰｖ６  ＩＰｓｅｃカプセル化を行ったＩＰｖ６  ＩＰｓｅｃパケットを受信する通信装置に用いられるパケット処理方法であって、インタフェース部が、ＩＰｖ６  ＩＰｓｅｃパケットを受信して出力し、ＩＰｓｅｃ処理部が、前記インタフェース部により出力されたＩＰｖ６  ＩＰｓｅｃパケットに対してＥＳＰ復号処理を行い、ＥＳＰペイロードの先頭にフラグメント拡張ヘッダが付加されていることを検出して、前記検出されたデータをペイロードとし、前記ＩＰｖ６  ＩＰｓｅｃパケットのＩＰｖ６ヘッダを外側ＩＰｖ６ヘッダにもつ、フラグメントＩＰｖ６パケットを出力し、ソフトウェア処理部が、１個のＩＰｖ６パケットから分割された複数の前記フラグメントＩＰｖ６パケットを収集し、再構成を行って分割前のＩＰｖ６パケットを取得し、前記ＩＰｖ６パケットがＩＰパケットをＩＰｖ６カプセル化されたＩＰｖ６カプセル化パケットであることを検出して、前記検出されたＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得する、ことを特徴とするパケット処理方法である。
【発明の効果】
【００２１】
この発明によれば、通信装置は、拡張ヘッダが付加されたＩＰＳｅｃパケットに対して、ハードウェア処理と、ソフトウェアの処理とを組み合わせて、送受信処理を実現することができる。また、本発明では、ＩＰｖ６カプセル化したパケットを分割するため、内側ＩＰパケットが制約されない。すなわち、受信パケットについてはＩＰｓｅｃ処理の後に再構成処理を行い、また、分割処理の後にＩＰｓｅｃ処理を行って送信するため、ハードウェアによる送受信とＩＰｓｅｃ処理が連続して実施され、インライン型のＩＰｓｅｃ処理が可能となる。加えて、ＩＰｓｅｃパケットの生成により、送受信可能な信号長を超えてしまう場合には、転送対象のＩＰパケットを分割して送受信することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態を図面を参照して説明する。
本実施の形態においては、ＯＳＩ（Open Systems Interconnection）参照モデルの第２層にあたるデータリンク層において送受信されるデータをフレームと記載し、第３層において送受信されるデータ、すなわちフレームからＭＡＣ（Media Access Control）ヘッダやＶＬＡＮ（Virtual Local Area Network）ヘッダを除いたものをパケットと記載する。
【００２３】
図１は、一実施の形態による通信装置の構成を示す図である。
本実施の形態で送受信するＩＰｓｅｃは、ＩＰｖ６により送受信され、トンネルモードのＥＳＰ（Encapsulating Security Payload）を使用する。
同図において、ＩＰｓｅｃ（IP Security Architecture for Internet Protocol）のパケットを含むフレームを送受信する第１ＬＡＮ（Local Area Network）ポート６１０（インタフェース部）と、ワイヤードロジックにより構成され、ＩＰｓｅｃの処理を行うＩＰｓｅｃ回路６２０（ＩＰｓｅｃ処理部）とが接続されている。また、ＩＰパケットを含むフレームを送受信する第２ＬＡＮポート６４０（インタフェース部）と、ＩＰｓｅｃ回路６２０と、ＣＰＵ（Central Processing Unit）６５０（ソフトウェア処理部）とが、パケットを転送する転送回路６３０（転送部）に接続されている。
【００２４】
この構成において、ＩＰｓｅｃ回路６２０は、第１ＬＡＮポート６１０から受信したＩＰｖ６トンネルモードのＩＰｓｅｃパケットに拡張ヘッダが付加されていない場合、デカプセル化を行い（ステップＳ１）、転送回路６３０は、デカプセル化されたＩＰパケットを第２ＬＡＮポート６４０へ転送する（ステップＳ２）。
一方、ステップＳ１において受信したＩＰｖ６トンネルモードのＩＰｓｅｃパケットの外側ＩＰｖ６ヘッダに拡張ヘッダが付加されている場合、ＩＰｓｅｃ回路６２０は、暗号化されている本来のＩＰパケットを復号し、外側ＩＰｖ６ヘッダと、拡張ヘッダと、復号したＩＰパケットがカプセル化されたＩＰデータとからなる形式のＩＰｖ６パケットに変換する。以下、このようにＩＰパケットがＩＰｖ６パケットにカプセル化された形式を、「ＩＰ  ｉｎ  Ｖ６形式」と記載する。ＩＰｓｅｃ回路６２０は、ＩＰ  ｉｎ  ＩＰｖ６形式のパケットを転送回路６３０によりＣＰＵ６５０に転送する（ステップＳ２’）。
【００２５】
上記のように、高速のパケット転送を行うため、通信装置１００がＣＰＵ６５０ではなく、ハードウェア（転送回路６３０）によるパケット転送を行う場合、転送回路６３０は、例外的な拡張ヘッダ処理を行うことができないため、ＩＰ  ｉｎ  ＩＰｖ６形式に変換したパケットについてはＣＰＵ６５０に転送し、通常のデカプセル化されたパケットについては、ＣＰＵ６５０を介さずに、ハードウェアによるＬＡＮポート６４０へパケットの転送を行う。
【００２６】
図２は、ＬＡＮ（Local Area Network）及びＷＡＮ（Wide Area Network）に接続される通信装置１００の詳細な構成を示すブロック図である。
通信装置１００は、ＧＭＩＩ（Gigabit Medium Independent Interface）やＭＩＩ(Medium Independent Interface)の規格のインタフェースを介してＷＡＮに接続する物理Ｉ／Ｆ（Interface）５００及びＬＡＮに接続する物理Ｉ／Ｆ５０１と接続し、ＬＡＮ側から送信されるパケットをＷＡＮ側へ転送し、また、ＷＡＮ側から送信されるパケットをＬＡＮ側へ転送する。本実施形態の通信装置１００では、ＯＳＩの第３層にあたるネットワーク層では、ＩＰｖ４あるいはＩＰｖ６のパケットの送受信を行い、ＯＳＩの第２層にあたるデータリンク層では、イーサネット（登録商標）のフレームの送受信を行う。
【００２７】
通信装置１００は、転送処理の高速化を図るため半導体素子で構成される通信処理回路２００と、ＣＰＵ４００と、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate-Synchronous Dynamic Random Access Memory）３００とを備えている。
【００２８】
ＤＤＲ−ＳＤＲＡＭ３００は、半導体記憶素子であり、一定容量値、例えば２キロバイトごとに領域分割され、フレーム長が長いフレームであっても、短いフレームであっても分割した１つの領域を割り当てて記憶する。なお、分割されたそれぞれの領域は、後述するハンドル管理部２５５が付与するハンドル番号に対応付けられる。
【００２９】
ＣＰＵ４００は、主に通信処理回路２００で転送処理を行うことができないフレームを通信処理回路２００から受信し、受信したフレームに対する転送先を検出する等の処理を予め内部で動作するソフトウェアに基づいて行う。ＣＰＵ４００が備えるドライバ４００ａは、通信処理回路２００がＣＰＵ４００に入力するパケットのＣＰＵ４００の内部のメモリへの書き込み及び読み出しを行い、また、通信処理回路２００の各機能部の動作を制御する情報の設定を各機能部に対して行う。
【００３０】
通信処理回路２００において、ＷＡＮ用ＭＡＣ（Media Access Control）  Ｉ／Ｆ２０５は、ＷＡＮに接続される物理Ｉ／Ｆ５００へ接続する接続インタフェースである。ＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５は、ＬＡＮに接続される物理Ｉ／Ｆ５０１へ接続する接続インタフェースである。ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５及び、ＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５は、上記したＧＩＩ及びＭＩＩに準拠した規格を有し、送受信するイーサネット（登録商標）のフレーム（以下、フレームと記載）に対してＩＥＥＥ８０２．３準拠のＭＡＣ処理を行い、また、物理Ｉ／Ｆ５００あるいは５０１との間で送受信されるフレームに対してＣＲＣ（Cyclic Redundancy Check）処理などを行う。
【００３１】
ＩＰｓｅｃ部２１０は、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５、書き込みスケジューラ部２１５、及び、フレーム生成部２６０に接続される。ＩＰｓｅｃ部２１０は、ＲＦＣ（Request for Comments）２４０６準拠のＩＰｓｅｃ処理に基づき、ＷＡＮに送信するパケットに対して暗号処理を行い、また、ＷＡＮから受信するパケットに対して復号処理を行う。ここで、ＲＦＣ２４０６準拠のＩＰｓｅｃ処理とは、ＲＦＣ２４０３／２４０４準拠のＨＭＡＣ−ＭＤ５（Keyed Hashing for Message Authentication Code-Message Digest 5）やＨＭＡＣ−ＳＨＡ−１（HMAC-Secure Hash Algorithm-1）の認証機能や、ＲＦＣ２４１０／２４５１のＮＵＬＬ，ＣＢＣ−ＡＥＳ（Cipher Block Chaining - Advanced Encryption Standard）の暗号機能などによるＩＰｖ４及びＩＰｖ６パケットに対する暗号及び復号処理である。
【００３２】
書き込みスケジューラ部２１５は、ＩＰｓｅｃ部２１０と、ＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５と、ＣＰＵ４００に接続するＣＰＵ  Ｉ／Ｆ２６５とに接続され、ラウンドロビン方式により、ＩＰｓｅｃ部２１０と、ＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５と、ＣＰＵ  Ｉ／Ｆ２６５の順に、これら３つの機能部によって情報が付加されたフレーム（以下、前記３つの機能部によって情報が付加されたフレームをフレーム情報と記載）を出力する。
【００３３】
ＣＰＵ  Ｉ／Ｆ２６５は、通信処理回路２００の各機能部と、書き込みスケジューラ部２１５と、メモリコントローラ部２２０とＣＰＵ４００とに接続され、ＣＰＵ４００から出力されるフレームを書き込みスケジューラ部２１５に入力する。ＣＰＵ４００が通信処理回路２００の各機能部に対して設定を行う際、ＣＰＵ  Ｉ／Ｆ２６５は、設定情報を該当する機能部に入力する。また、メモリコントローラ部２２０から出力されるフレーム情報をＣＰＵ４００に入力する。
【００３４】
ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５は、メモリコントローラ部２２０とＤＤＲ−ＳＤＲＡＭ３００に接続され、メモリコントローラ部２２０とＤＤＲ−ＳＤＲＡＭ３００の間でフレームの入出力を行う。
【００３５】
メモリコントローラ部２２０は、書き込みスケジューラ部２１５と、フレーム生成部２６０と、ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５と、パーサ部２３０と、ハンドル管理部２５５と、ＱｏＳ部２５０とに接続されている。メモリコントローラ部２２０は、書き込みスケジューラ部２１５から入力されるフレーム情報に対し、ハンドル管理部２５５から付与された空きハンドルのハンドル番号に対応するＤＤＲ−ＳＤＲＡＭ３００の分割された領域に、ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５を介してＤＤＲ−ＳＤＲＡＭ３００に書き込む。また、メモリコントローラ部２２０は、書き込みスケジューラ部２１５から入力されるフレーム情報に対し、ハンドル管理部２５５から付与されたハンドル番号を付加してパーサ部２３０に出力する。また、メモリコントローラ部２２０は、後述するＱｏＳ部２５０から出力されるジョブ情報に含まれるハンドル番号に対応するＤＤＲ−ＳＤＲＡＭ３００の領域からＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５を介してフレーム情報を読み出し、読み出したフレーム情報に対してジョブ情報に基づく情報を付加し、フレーム生成部２６０に出力、あるいはＣＰＵ  Ｉ／Ｆ２６５を介してＣＰＵ４００に出力する。
【００３６】
パーサ部２３０は、メモリコントローラ部２２０によりハンドル番号が付加されたフレーム情報に対して解析を行い、フレーム情報から転送処理に係る情報であるヘッダ情報などを抽出し、解析結果情報としてメモリコントローラ部２２０が付加したハンドル番号等の情報とともに出力する。
【００３７】
検索部２３５は、パーサ部２３０から入力される解析結果情報に基づいて、予めＣＰＵ４００により検索部２３５の内部に設定される転送条件情報を参照し、転送条件情報に基づいて、当該フレームを破棄するか、通過させるか、ＣＰＵ４００へ転送、すなわちＣＰＵ４００へ入力するかを示すフィルタ検索結果情報、及び品質クラスなどの情報を示す分類検索結果などを検出し、検出したフィルタ検索結果情報及び分類検索結果と、パーサ部２３０から入力される解析結果情報の一部の情報、例えば、フレーム長等とをＣＰＵ転送判定部２４０に出力する。ここで、転送条件情報に含まれる条件としては、ＭＡＣアドレス、ＩＰアドレス、ポート番号などがあり、解析結果情報に含まれるフレームのヘッダ情報がこれらの転送条件情報に一致するか否かの検索が行われる。
【００３８】
検索部２３５は、パーサ部２３０にエラーを検出したフレームと、ＣＰＵ  Ｉ／Ｆ２６５を介してＣＰＵ４００から入力されたフレームに対しては、検索を行わない。検索は、受信論理Ｉ／Ｆ検索、ＮＡＴ（Network Address Translation）／ＮＡＰＴ（Network Address Port Translation）検索、経路検索、フィルタ検索、分類検索である。各検索では、解析結果情報に含まれる各種情報の全てまたは一部（検索によって対象となる情報が異なる）と、ＣＰＵ４００から設定された判定条件及び前記判定条件毎の判定マスク（判定条件の無効や一部ビットの無効などの指定であり、マスクがない判定条件もある）により構成される規則（検索毎に複数個の規則を設定できる）と、適合判定を行う。前述の適合判定では、前記判定マスクによって無効とならなかった各判定条件について、入力されたフレームからパーサ部２３０が得た解析結果情報との一致・不一致を得る比較演算を実施し、前記判定条件の全てについて一致を得た場合にのみ、前記規則に適合すると判定される。その後、各検索は、適合した規則（複数個の適合した規則がみつかった場合は、規則毎に設定された優先度を比較し、より優先度の高い規則）に付加された検索結果を出力する。
【００３９】
受信論理Ｉ／Ｆ検索の規則を構成する判定条件は、受信物理Ｉ／Ｆ、送信元ＭＡＣアドレス、ＶＬＡＮ有無、ＶＬＡＮ有のときのＶＬＡＮ  ＩＤ、ＰＰＰｏＥ有無、ＰＰＰｏＥ有のときのＰＰＰｏＥセッションＩＤ、受信ＩＰｓｅｃ有無、受信ＩＰｓｅｃ有のときの受信ＳＡ番号であり、検索結果は、受信論理Ｉ／Ｆ番号、ＣＰＵ転送の有無、ＮＡＴ／ＮＡＰＴの有無である。ここで、受信論理Ｉ／Ｆ番号とは、パケットを受信した論理Ｉ／Ｆを識別する番号であり、ＶＬＡＮやＩＰｓｅｃ  ＶＰＮによって１個の物理Ｉ／Ｆに複数個の論理Ｉ／Ｆを設定できる。また、前記でＮＡＴ／ＮＡＰＴ有の結果を得たパケットのみが、後述のＮＡＴ／ＮＡＰＴ検索（グローバル→ローカル）の対象となる。
【００４０】
ＮＡＴ／ＮＡＰＴ検索（グローバル→ローカル）の規則を構成する検索条件は、宛先ＩＰアドレスと宛先ＴＣＰ／ＵＤＰポート番号（ＮＡＰＴのみ）であり、検索結果は、付け替え後のＩＰアドレスと宛先ＴＣＰ／ＵＤＰポート番号（ＮＡＰＴのみ）である。ここで、ＮＡＴ／ＮＡＰＴ検索（グローバル→ローカル）の対象となったパケットに対する、経路検索、フィルタ検索、分類検索の各々は、解析結果情報に含まれる宛先ＩＰアドレスと宛先ＴＣＰ／ＵＤＰポートではなく、ＮＡＴ／ＮＡＰＴ検索結果である付け替え後の宛先ＩＰアドレスと宛先ＴＣＰ／ＵＤＰポートを検索対象として、前述の検索の規則との適合判定を行う（グローバル→ローカルＮＡＴ／ＮＡＰＴを行うパケットについては、ローカルアドレスやポート番号に基づく検索が行われる）。また、ＮＡＴ／ＮＡＰＴ検索（グローバル→ローカル）の対象となったパケットで、適合する規則が見つからなかった場合は、ＣＰＵ転送要因にＮＡＴ／ＮＡＰＴ（グローバル→ローカル）検索ミスヒットの情報が付加される。
【００４１】
経路検索の規則を構成する判定条件は、受信論理Ｉ／Ｆ番号、送信元ＩＰアドレス、宛先ＩＰアドレスであり、検索結果は、送信論理Ｉ／Ｆ番号、宛先ＭＡＣアドレス、ＭＴＵ（Maximum Transmission Unit）長、ＮＡＴ／ＮＡＰＴ有無、ＭＡＣアドレス未解決有無、自宛有無である。ここで、送信論理Ｉ／Ｆ番号とは、パケットを送信する論理Ｉ／Ｆを識別する番号（受信論理Ｉ／Ｆと送信論理Ｉ／Ｆが同一である場合は番号も共通）である。また、前記でＮＡＴ／ＮＡＰＴ有の結果を得たパケットのみが。後述のＮＡＴ／ＮＡＰＴ検索（ローカル→グローバル）の対象となる。また、前記ＭＴＵ長とパケット長が比較され、パケット長のほうが長い場合に、ＣＰＵ転送要因にＭＴＵ長超過の情報が付加される。また、ＭＡＣアドレス未解決有のパケットには、ＣＰＵ転送要因にＭＡＣアドレス未解決の情報が付加される。また、自宛有のパケットには、ＣＰＵ転送要因に自宛パケットの情報が付加される。
【００４２】
ＮＡＴ／ＮＡＰＴ検索（ローカル→グローバル）の規則を構成する検索条件は、送信元ＩＰアドレスと送信元ＴＣＰ／ＵＤＰポート番号（ＮＡＰＴのみ）であり、検索結果は、付け替え後の送信元ＩＰアドレスと送信元ＴＣＰ／ＵＤＰポート番号（ＮＡＰＴのみ）である。ここで、ＮＡＴ／ＮＡＰＴ検索（ローカル→グローバル）の対象となったパケットで、適合する規則が見つからなかった場合は、ＣＰＵ転送要因にＮＡＴ／ＮＡＰＴ（ローカル→グローバル）検索ミスヒットの情報が付加される。
【００４３】
フィルタ検索及び分類検索の規則を構成する判定条件は、受信論理Ｉ／Ｆ番号、送信論理Ｉ／Ｆ番号、ＶＬＡＮ優先度、ＩＰｖ４／ＩＰｖ６、送信元ＩＰアドレス、宛先ＩＰアドレス、ＴＯＳ／トラフィック・クラス（ＩＰｖ４の場合はＴＯＳを、ＩＰｖ６の場合はトラフィック・クラスを使用する）、オプション・拡張ヘッダ有無、フラグメント状態（フラグメント無、先頭／最後尾／中間）、ＴＯＳ／トラフィック・クラス、上位プロトコル、送信元ポート番号、宛先ポート番号、ＴＣＰフラグ、ＩＣＭＰタイプ・コードを条件として検索する。フィルタ検索結果は、破棄／通過／ＣＰＵ転送の指定であり、分類検索結果は、品質クラスに関する各種情報（送信時のＶＬＡＮ優先度、リマークの有無、リマーク時のＴＯＳ／トラフィック・クラス、キューの指定など）である。
【００４４】
ＣＰＵ転送判定部２４０は、検索部２３５においてＣＰＵ４００へ転送する要因があるとして検出されたフレームに対して、ＣＰＵ転送要因を示す情報、すなわち後述するＣＰＵ転送要因フラグを付与し、ＣＰＵ４００へ転送するか、あるいは破棄するかを判定し、判定した判定結果情報を、検索部２３５から出力される情報とともに出力する。
【００４５】
キュー選択部２４５は、ＣＰＵ転送判定部２４０から入力される情報に含まれる品質クラス情報や送信先の論理Ｉ／Ｆの情報に基づいてＱｏＳ部２５０がキューを選択する際に参照するキュー番号を検出し、ＣＰＵ転送判定部２４０から出力される情報と、検出したキュー番号とを出力する。
【００４６】
ＱｏＳ部２５０は、キュー選択部２４５から出力される情報に基づいてジョブ情報を生成し、同じくキュー選択部２４５から出力されるキュー番号に基づいて、生成したジョブ情報を該当するキューに記録する。また、ＱｏＳ部２５０は、キューに記録されているジョブ情報を予め定められているキューごとの優先度に基づいて読み出し、メモリコントローラ部２２０へ出力する。また、メモリコントローラ部２２０へ出力する際に、ハンドル番号を返却するためハンドル管理２５５へ出力する。ここで、ジョブ情報とは、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５やＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５から送信されるフレームに対しては、受信フレーム長、送信フレーム長、送信論理Ｉ／Ｆ、宛先ＭＡＣアドレス、ＮＡＴ／ＮＡＰＴ指定、ＤＳＣＰやＶＬＡＮ  ｐｒｉｏｒｉｔｙ等の情報に対応する品質クラス、ハンドル番号等の情報から構成されている。また、ＣＰＵ４００に転送されるフレームに対しては、ジョブ情報は、受信フレーム長、送信フレーム長、受信論理Ｉ／Ｆ、ＣＰＵ転送理由、品質クラス、ハンドル番号等の情報から構成される。
【００４７】
ハンドル管理部２５５は、ＱｏＳ（Quality of Service）部２５０と、メモリコントローラ部２２０とに接続され、ＤＤＲ−ＳＤＲＡＭ３００の分割された領域のそれぞれに対応するハンドル番号に基づいてＤＤＲ−ＳＤＲＡＭ３００の分割された領域の空塞管理を行う。ここで、空塞管理とは、メモリコントローラ部２２０へは空きハンドル番号を出力して使用中のハンドル番号として管理し、ＱｏＳ部２５０から入力されるフレーム破棄により返却対象となるハンドル番号や、送信により返却対象となるハンドル番号については領域が空きとなるため、空きのハンドル番号として管理する。また、ハンドル管理部２５５は、マルチキャストフレームの場合には、マルチキャストの回数分送信が終了するまで、フレームを削除できないため、ＱｏＳ部２５０が、メモリコントローラ部２２０にジョブ情報を出力した情報をＱｏＳ部２５０からメモリコントローラ部２２０へ直接接続する接続線から分岐する線により参照して、送信開始時に定められるマルチキャストの回数を管理する。
【００４８】
フレーム生成部２６０は、予めＣＰＵ４００のドライバ４００ａから設定される情報に基づいて、メモリコントローラ部２２０から出力されるフレームに対して送信先の論理インタフェースに応じたＶＬＡＮ（Virtual LAN）タグやＰＰＰｏＥ（Point to Point Protocol over Ethernet：Ethernetは登録商標）ヘッダの挿入を行い、当該挿入を行ったフレームを出力する。また、フレーム生成部２６０は、宛先ＭＡＣアドレスの付け替え、ＮＡＴ（Network Address Translation）／ＮＡＰＴ（Network Address Port Translation）のためのＩＰアドレス及びポート番号の付け替えを行う。また、フレーム生成部２６０は、ＩＰｓｅｃ部２１０に出力するフレーム対してＩＰｓｅｃ  ＳＡ（Security Association）の情報の付加を行う。また、フレーム生成部２６０は、ＤＳＣＰ（DiffServ Code Point）のＩＰパケットのヘッダへの付加、ＶＬＡＮ  ｐｒｉｏｒｉｔｙのフレームのヘッダへの付加を行う。ＤＳＣＰやＶＬＡＮ  ｐｒｉｏｒｉｔｙは、優先制御の際に参照される品質クラス情報となる。ここで、品質クラス情報とは、転送されるフレームに含まれる情報の種別を分類する分類情報であり、分類情報によって示される情報の種別が例えば音声の場合には、当該分類種別を有するフレームには遅延が少ない高い品質の通信処理が適用されることになる。
【００４９】
なお、ＣＰＵ転送判定部２４０において破棄すると判定されたフレームついてはＣＰＵ転送判定部２４０あるいはＱｏＳ部２５０のいずれかにより破棄されることとなる。
【００５０】
なお、インタフェース部としてのＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５、ＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５は、それぞれ、図１における第１ＬＡＮポート６１０、第２ＬＡＮポート６４０に対応する。また、ＩＰｓｅｃ処理部としてのＩＰｓｅｃ部２１０は、図１におけるＩＰｓｅｃ回路６２０に対応する。また、ソフトウェア処理部としてのＣＰＵ４００は、図１におけるＣＰＵ６５０に対応する。また、書き込みスケジューラ部２１５、メモリコントローラ部２２０、ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５、パーサ部２３０、検索部２３５、ＣＰＵ転送判定部２４０、キュー選択部２４５、ＱｏＳ部２５０、ハンドル管理部２５５、フレーム生成部２６０、ＣＰＵ  Ｉ／Ｆ２６５、及び、ＤＤＲ−ＳＤＲＭ３００は、図１における転送回路６３０に対応する。
【００５１】
＜第１の実施の形態＞
第１の実施の形態では、通信処理回路２００におけるＩＰｓｅｃ処理手順について説明する。
まず、図１に示す構成におけるＩＰｓｅｃパケットの基本的な送受信処理について説明する。
ＣＰＵ６５０は、ＩＰｓｅｃトンネルモードで送信するＩＰパケットについては、ＩＰｓｅｃ処理対象であることと、トンネルを指定して（トンネル毎に設定した番号を付加して）、パケットデータをＩＰｓｅｃ回路６２０に転送する。ただし、ＩＰｓｅｃトンネルに送信するパケットのうち、各種の拡張ヘッダを付加する場合は、パケットデータをＩＰｓｅｃ回路６２０に転送する前に、ＩＰ  ｉｎ  ＩＰｖ６形式によって前記パケットをカプセル化し、さらに外側ＩＰｖ６ヘッダに所定の拡張ヘッダを付加したパケットデータを転送し、ＩＰｓｅｃ処理対象であることと、トンネルを指定するとともに、ＩＰ  ｉｎ  ＩＰｖ６形式であることを示すフラグを付加する。
【００５２】
また、ＣＰＵ６５０は、各ポートから受信したパケットのＩＰヘッダを読み取り、転送処理によって送信するポートやＩＰｓｅｃトンネルを決め、パケットデータを所定のインタフェース（ＩＰｓｅｃ回路６２０を含む）に転送する。ただし、受信したパケットに、ＩＰ  ｉｎ  ＩＰｖ６形式であることを示すフラグが立っている場合、外側ＩＰｖ６ヘッダに付加された拡張ヘッダに従って拡張ヘッダ処理を行い、デカプセル化した後、内側ＩＰヘッダ等を読み取って、転送処理によって送信するポートやＩＰｓｅｃトンネルを決め、パケットデータを所定のインタフェース（ＩＰｓｅｃ処理回路６２０を含む）に転送する。
このように、ＩＰｓｅｃ処理対象の受信パケットがＩＰｓｃｅ回路６２０（受信側）で処理された後、転送回路６３０でＣＰＵ転送と判断されてＣＰＵ６５０に転送される場合、ＣＰＵ６５０は、転送されたパケットデータに付加されたＩＰ  ｉｎ  ＩＰｖ６形式であることを示すフラグを用いて、デカプセル化の有無を判断することが可能である。しかし、ＩＰｓｅｃ回路６２０（受信側）がフラグを生成せず、ＣＰＵ６５０に転送されたパケットデータにＩＰ  ｉｎ  ＩＰｖ６形式であることを示すフラグを付加しない方法も可能である。この場合、ＣＰＵ６５０は、転送されたパケットデータを解析してＩＰ  ｉｎ  ＩＰｖ６形式であることを検出する。
【００５３】
ＩＰｓｅｃ回路６２０（受信側）は、受信処理後、ＣＰＵ６５０から転送回路６３０に入力されたパケットデータを除き、ＩＰｓｅｃ処理対象であるか否かに関わらず、全ての受信パケットデータを転送回路６３０へ出力する。転送回路６３０は、パケットデータをＣＰＵへ転送するか否かの判断を行い、ＣＰＵへ転送すると判断したパケットデータのみをＣＰＵ６５０へ転送する。ＣＰＵへ転送しないと判断したパケットは、転送回路６３０が決定した送信インタフェース（ＩＰｓｃｅ回路６２０を介して送信する場合はトンネル）から送信される。
なお、転送回路６３０は、パケットデータに付加されたＩＰ  ｉｎ  ＩＰｖ６形式であることを示すフラグを用いて、ＣＰＵ転送を判断することが可能である。しかし、フラグが付加されない場合であっても、転送回路６３０は、ＩＰ  ｉｎ  ＩＰｖ６形式のパケットデータを解析し、外側ＩＰｖ６ヘッダの宛先ＩＰアドレスに基づいて、ＣＰＵ転送を判断することも可能である。
【００５４】
ＩＰｓｅｃ回路６２０におけるパケットの受信動作を、図２に示す構成を用いて説明する。
ＩＰｓｅｃ部２１０（ＩＰｓｅｃ回路６２０）は、ＳＡ（受信）に対応させて、外側ＩＰｖ６ヘッダの宛先ＩＰｖ６アドレスと、ＥＳＰヘッダ内のＳＰＩを、ＳＡ判定条件として記憶している。ＩＰｓｅｃ部２１０は、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５より受信したＩＰｓｅｃパケットから抽出した外側ＩＰｖ６ヘッダの宛先ＩＰアドレスと、ＥＳＰヘッダに含まれるＳＰＩが前述したＳＡ判定条件と一致するＳＡ（受信）を取得する。ＩＰｓｅｃパケットを含まないフレームや、ＩＰｓｅｃパケットを含むが一致するＳＡ（受信）が見つからなかったフレームについては、ＩＰｓｅｃ部２１０は、前記フレームに、受信ＩＰｓｅｃ無を示す情報を付加して、書き込みスケジューラ部２１５へ出力する。ここで、外側ＩＰｖ６ヘッダの後のＥＳＰヘッダ以外の拡張ヘッダ有無を検出しておく。
【００５５】
以下に、ＳＡ（受信）が見つかったＩＰｓｅｃパケットに対するＩＰｓｅｃ部２１０の動作を説明する。
ＩＰｓｅｃ部２１０は、ＳＡ（受信）に対応させて、暗号アルゴリズム、暗号鍵（ＮＵＬＬ暗号以外の場合）、認証アルゴリズム、認証鍵（認証ありの場合）、アンチリプレイの有無を、ＳＡ処理条件（受信）として記憶している。ＩＰｓｅｃ部２１０は、受信したＩＰｓｅｃパケットのＳＡ（受信）に基づいて、ＳＡ処理条件（受信）を取得する。
【００５６】
ＩＰｓｅｃ部２１０は、この取得したＳＡ処理条件（受信）を使用して、認証と復号とデカプセル化の各処理を行い、復号された内側ＩＰパケットを取得する。さらに、復号された内側ＩＰパケットを含むフレームに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号を付加して、書き込みスケジューラ部２１５に出力する。なお、ＳＡ処理条件（受信）のアンチリプレイが有りの場合は、アンチリプレイの処理が行われる。以下に、認証、復号、デカプセル、アンチリプレイの各処理の動作を説明する。
【００５７】
＜認証処理＞
受信したＩＰｓｅｃパケットに対する認証処理では、前記ＩＰｓｅｃパケットのＥＳＰヘッダ先頭から暗号化されたトレーラ終了までの復号前のデータに対して、所定の認証アルゴリズムと認証鍵を使用してＩＣＶを計算し、前記ＩＰｓｅｃパケット内のＩＣＶとの一致を判定する。この判定で一致を得た場合は認証成功であり、不一致の場合は認証失敗となる。なお、認証アルゴリズムとして認証なしが指定されている場合は、前述の認証処理を行わず、認証成功とみなす。前述の認証処理において失敗と判定されたパケットや、受信したＩＰｓｅｃパケットからＩＣＶを得られなかった場合（パケット長が短すぎる場合など）は、ＩＰｓｅｃ部２１０内で破棄される。
【００５８】
＜復号処理＞
受信したＩＰｓｅｃパケットに対する復号処理では、前記ＩＰｓｅｃパケット内の暗号化されたＩＶ直後（ＮＵＬＬ暗号やＥＢＣモードでの暗号アルゴリズムなどＩＶ無しの場合はＥＳＰヘッダ直後）から暗号化されたトレーラ終了までの復号前のデータを、所定の暗号アルゴリズム、暗号鍵を使用して復号する。なおＣＢＣモードでの復号演算の初期値として、前記ＩＰｓｅｃパケット内のＩＶを使用する。暗号アルゴリズムとしてＮＵＬＬ暗号（暗号なし）が指定されている場合は、前述の復号処理を行わない。なお、復号対象のデータ長が、暗号アルゴリズムによって予め決められたブロック長の整数倍となっていない場合は、ＩＰｓｅｃ部２１０内で破棄される。
【００５９】
＜デカプセル処理；ＥＳＰを除く拡張ヘッダ無＞
外側ＩＰｖ６ヘッダの後にＥＳＰ以外の拡張ヘッダ無の場合、受信したＩＰｓｅｃパケットに対するデカプセル処理では、前記ＩＰｓｅｃパケットから外側ＩＰヘッダ、ＥＳＰヘッダ、ＩＶ、トレーラ、ＩＣＶを削除し、復号された内側ＩＰパケットを取得する。このとき、復号されたトレーラのパッド長に基づいてパッドの削除を行い、内側ＩＰパケットのプロトコルに基づいて、フレームのレイヤ３プロトコルとして、ＩＰｖ４あるいはＩＰｖ６を指定する。すなわち、イーサネット（登録商標）フレームのＴｙｐｅフィールドを、内側ＩＰパケットのプロトコルに相当する値に書き換える。ここで、前記ＩＰｖ６カプセル化パケットに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号に加えて、ＩＰｖ６カプセル化無しを示す情報を付加してもよい。
【００６０】
＜デカプセル処理；ＥＳＰを除く拡張ヘッダ有＞
外側ＩＰｖ６ヘッダの後にＥＳＰ以外の拡張ヘッダ有の場合、受信したＩＰｓｅｃパケットに対するデカプセル処理では、前記ＩＰｓｅｃパケットからＥＳＰヘッダ、ＩＶ、トレーラ、ＩＣＶを削除し、外側ＩＰｖ６ヘッダと前記外側ＩＰｖ６ヘッダの後のＥＳＰ以外の拡張ヘッダを残し、復号された内側ＩＰパケットを内側ＩＰパケットとしたＩＰｖ６カプセル化パケットに書き換える。このとき、復号されたトレーラのパッド長に基づいてパッドの削除を行い、内側ＩＰパケットのプロトコルに基づいて、前記内側ＩＰパケットの直前の拡張ヘッダ内の次ヘッダフィールドに、ＩＰｖ４あるいはＩＰｖ６を指定する。すなわち、拡張ヘッダの次ヘッダフィールドを、内側ＩＰパケットのプロトコルに相当する値に書き換える。さらに、外側ＩＰｖ６ヘッダ直後から内側ＩＰパケット終了までの長さに基づいて、外側ＩＰｖ６ヘッダのペイロード長を書き換える。ここで、前記ＩＰｖ６カプセル化パケットに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号に加えて、ＩＰｖ６カプセル化有りを示す情報を付加してもよい。
【００６１】
＜アンチリプレイ処理＞
受信したＩＰｓｅｃパケットに対するアンチリプレイ処理では、認証に成功したＩＰｓｅｃパケットのＥＳＰヘッダ内のシーケンス番号と、ＩＰｓｅｃ部２１０がＳＡ（受信）別に管理しているシーケンス番号の状態情報により、アンチリプレイの成功・失敗を判定し、前記シーケンス番号の状態情報の更新（アンチリプレイ処理の成功時のみ）を行う。このアンチリプレイ処理では、シーケンス番号の状態情報としてスライディング受信ウィンドウを使用する。前記ウィンドウの右端は、このＳＡで受信され、認証に成功したパケットについてシーケンス番号の最大値を表す。ウィンドウの左端より小さいシーケンス番号を含むパケットは拒否される。ウィンドウ内に収まるパケットは、ウィンドウ内で受信したパケットのリストに対して既受信としてチェックされる。受信されたパケットがウィンドウに収まり、かつ新しい（既受信としてチェックされていない）場合、あるいは受信されたパケットがウィンドウの右端にある場合、アンチリプレイに成功したと判定する。前記において失敗と判定されたパケットは、ＩＰｓｅｃ部２１０内で破棄される。
【００６２】
ＩＰｓｅｃ部２１０が、書き込みスケジューラ部２１５へデータを出力した以降の動作は、上述した図２における各部の説明に従う。ただし、外側ＩＰｖ６ヘッダの後のＥＳＰ以外の拡張ヘッダ有の場合にＩＰｓｅｃ部２１０が出力するＩＰｖ６カプセル化パケットは、外側ＩＰｖ６ヘッダ内のあて先ＩＰｖ６アドレスに基づいて自宛と判断して、ＣＰＵ４００に転送される。ＩＰｖ６カプセル化有りを示す情報が前記ＩＰｖ６カプセル化パケットに付加されている場合は、前記情報に基づきＣＰＵ４００に転送してもよい。
【００６３】
ＣＰＵ４００は、拡張ヘッダ付ＩＰｖ６カプセル化パケットを、転送回路から入力し、前記拡張ヘッダに基づく所定の拡張ヘッダ処理を行うとともに、前記拡張ヘッダ付ＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得する。前記内側ＩＰパケットに対する処理は、通常のＩＰパケットに対する処理と同じである。
【００６４】
続いて、ＩＰｓｅｃ回路６２０におけるパケットの送信動作を、図２に示す構成を用いて説明する。
ＩＰｓｅｃ部２１０（ＩＰｓｅｃ回路６２０）は、フレーム生成部２６０より、送信ＩＰｓｅｃの有無を示す情報と、ＳＡ（送信）を識別する送信ＳＡ番号とが付加された、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５から送信すべきフレームの入力を受ける。ＩＰｓｅｃ部２１０は、送信ＩＰｓｅｃ無を示す情報が付加されている場合、当該フレームをそのままＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５へ出力する。また、ＣＰＵ  Ｉ／Ｆ２６５を介してＣＰＵ４００から入力されたフレームに対しては、前述の送信ＩＰｓｅｃ有無を示す情報とＳＡ（送信）を識別する送信ＳＡ番号に加えて、ＩＰｖ６カプセル化の有無を示す情報が、ＣＰＵ４００によって付加される。ここで、前記がＩＰｖ６カプセル化有を示す場合は、これらの情報をまとめて、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報と定義する。
【００６５】
ＣＰＵ４００は、所定の拡張ヘッダを付加するとともにＩＰｓｅｃカプセル化を行って送信するＩＰパケットについて、前記ＩＰパケットを内側ＩＰパケットとしてＩＰｖ６カプセル化し、このＩＰｖ６カプセル化パケットに前記拡張ヘッダを付加した拡張ヘッダ付ＩＰｖ６カプセル化パケットにＬ２ヘッダ（宛先・送信元ＭＡＣアドレスとイーサネット（登録商標）フレームのＴｙｐｅなど）を付与して、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加し、ＣＰＵ  Ｉ／Ｆ２６５を介して転送回路に入力する。なお、拡張ヘッダを付加せずに、ＩＰｓｅｃカプセル化を行って送信するＩＰパケットについても、前記ＩＰパケットを内側ＩＰパケットとしてＩＰｖ６カプセル化し、Ｌ２ヘッダ（宛先・送信元ＭＡＣアドレスとイーサネット（登録商標）フレームのＴｙｐｅなど）を付与して、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加し、ＣＰＵ  Ｉ／Ｆ２６５を介して転送回路に入力してもよい。
【００６６】
ＷＡＮ／ＬＡＮの物理Ｉ／Ｆ５００，５０１で受信したフレームが転送回路内で転送されてＩＰｓｅｃ部２１０に入力されたフレームに対するＩＰｓｅｃ部２１０の処理は、ＩＰｖ６カプセル化無を示す情報が付加された場合の処理に一致し、本実施の形態では、前記フレームを、ＩＰｖ６カプセル化無を示す情報が付加されたフレームとして説明する。
【００６７】
以下に、送信ＩＰｓｅｃ有の場合の送信フレームに対するＩＰｓｅｃ部２１０の動作を説明する。
ＩＰｓｅｃ部２１０は、ＳＡ（送信）に対応させて、暗号アルゴリズム、暗号鍵（ＮＵＬＬ暗号以外の場合）、認証アルゴリズム、認証鍵（認証ありの場合）を、ＳＡ処理条件（送信）として記憶する。ＩＰｓｅｃ部２１０は、ＳＡ（送信）に基づいて、ＳＡ処理条件（送信）を取得する。
【００６８】
また、ＩＰｓｅｃ部２１０は、ＳＡ（送信）に対応させて、外側ＩＰヘッダの宛先ＩＰドレス、送信元ＩＰｖ６アドレス、ホップ・リミット、及び、トラフィック・クラス（内側ＩＰパケットのトラフィック・クラスを外側ＩＰヘッダに複製することも可能）と、ＥＳＰヘッダのＳＰＩとをカプセル化条件として記憶している。ＩＰｓｅｃ部２１０は、ＳＡ（送信）に基づいて、カプセル化条件を取得する。
【００６９】
さらに、ＩＰｓｅｃ部２１０は、ＳＡ（送信）に対応させて、送信するＩＰｖ６パケットのＥＳＰヘッダ内のシーケンス番号を管理する。すなわち、ＳＡ（送信）別に送信したＩＰパケットの個数を計測し、シーケンス番号とする。ＩＰｓｅｃ部２１０は、ＳＡ（送信）に基づいて、シーケンス番号を取得する。
【００７０】
ＩＰｓｅｃ部２１０は、フレーム生成部２６０より入力されたフレームに含まれるＩＰパケットに対して、上記の取得したＳＡ処理条件（送信）、カプセル化条件、シーケンス番号を使用して、暗号とＩＣＶ生成とカプセルの各処理を行う。
以下に、暗号、ＩＣＶ生成、カプセルの各処理の動作を説明する。
【００７１】
＜暗号処理；ＩＰｖ６カプセル化無＞
ＩＰｖ６カプセル化無を示す情報が付加されている場合、ＩＰｓｅｃ部２１０は、フレーム生成部２６０より入力されたフレームに含まれるＩＰパケットを、ＩＰｓｅｃパケットの内側ＩＰパケットとするため、所定のトレーラを当該ＩＰパケットの直後に付加する。前記トレーラは、パッド、当該パッドのパッド長、内側ＩＰパケットのプロトコルから構成されるが、前記パッドを付加するパディング処理において、当該ＩＰパケットとトレーラを合計した長さが、これらを暗号化するときの暗号アルゴリズムによって予め決められたブロック長の整数倍となるよう、パッド長を取得する。
次に、ＩＰｓｅｃ部２１０は、前記内側ＩＰパケット及び前記トレーラを、所定の暗号アルゴリズムと暗号鍵を使用して暗号化する。ＣＢＣモードの暗号アルゴリズムを使用する場合は、暗号演算の初期値としてＩＶが必要となるが、前回暗号化した結果をＩＶとして利用することが可能である。さらに、前記ＩＶを、前記内側ＩＰパケットの直前に挿入する（ＣＢＣモードの暗号アルゴリズムの場合のみ）。なお、暗号アルゴリズムとしてＮＵＬＬ暗号（暗号なし）が指定された場合は、この暗号処理を行わない。
【００７２】
＜暗号処理；ＩＰｖ６カプセル化有＞
ＩＰｖ６カプセル化有を示す情報が付加されている場合、ＩＰｓｅｃ部２１０は、フレーム生成部２６０より入力されたフレームに含まれるＩＰｖ６パケットがカプセル化している内側ＩＰパケットを、ＩＰｓｅｃパケットの内側ＩＰパケットとするため、所定のトレーラを、前記内側ＩＰパケットの直後に付加する。前記トレーラは、パッド、前記パッドのパッド長、内側ＩＰパケットのプロトコルから構成されるが、前記パッドを付加するパディング処理において、前記内側ＩＰパケットとトレーラの合計した長さが、これらを暗号化するときの暗号アルゴリズムによって予め決められたブロック長の整数倍となるよう、パッド長を取得する。以後の暗号化の処理については、ＩＰｖ６カプセル化無を示す情報が付加されている場合の処理と同じである。
【００７３】
＜ＩＣＶ生成処理＞
ＩＣＶ生成処理では、ＩＰｓｅｃ部２１０は、取得したカプセル化条件のＳＰＩとシーケンス番号に基づいてＥＳＰヘッダを生成し、挿入する。この挿入位置は、ＩＶ（ＩＶがない場合は内側ＩＰパケット）の直前である。さらに、ＥＳＰヘッダ先頭から暗号化されたトレーラ終了までの復号前のデータに対して、所定の認証アルゴリズムと認証鍵を使用してＩＣＶを計算し、トレーラの直後に計算したＩＣＶを付加する。
【００７４】
＜カプセル処理；ＩＰｖ６カプセル化無＞
ＩＰｖ６カプセル化無を示す情報が付加されている場合、ＩＰｓｅｃ部２１０は、取得したカプセル化条件のうち外側ＩＰｖ６ヘッダに関する条件（宛先ＩＰｖ６アドレス、送信元ＩＰｖ６アドレス、ホップ・リミット、トラフィック・クラス）と、ＥＳＰヘッダ先頭から暗号化されたトレーラ終了までの長さに基づいて、外側ＩＰｖ６ヘッダを生成し、ＥＳＰヘッダ直前に挿入する。さらにフレームのレイヤ３プロトコルとして、外側ＩＰｖ６ヘッダのプロトコルを指定する。すなわち、イーサネット（登録商標）フレームのＴｙｐｅフィールドを、ＩＰｖ６に相当する値に書き換える。
【００７５】
＜カプセル処理；ＩＰｖ６カプセル化有＞
ＩＰｖ６カプセル化有を示す情報が付加されている場合、ＩＰｓｅｃ部２１０は、外側ＩＰｖ６ヘッダ直後から暗号化されたトレーラ終了までの長さに基づいて、外側ＩＰｖ６ヘッダのペイロード長を書き換える。また、ＥＳＰヘッダ直前の外側ＩＰｖ６ヘッダもしくは拡張ヘッダに含まれる次ヘッダフィールドをＥＳＰを示す値に書き換える。
【００７６】
次に、図２の構成によるＩＰｓｅｃパケットの基本的な送受信処理の詳細について説明する。
図３は、拡張ヘッダがなく、フラグメントの必要がないＩＰｓｅｃパケットを送信する場合の処理を示す図である。
ＣＰＵ４００においてＩＰｓｅｃを用いてＩＰパケット１０を転送すべきと判断した場合、ＣＰＵ４００は、ＣＰＵ  Ｉ／Ｆ２６５を介して、ＩＰパケット１０のパケットデータと、送信インタフェースの情報を書き込みスケジューラ部２１５へ出力する。送信インタフェースの情報には、送信するＬＡＮポートを指定する番号、ＩＰｓｅｃカプセル化の有無（ＩＰｓｅｃ処理対象であるか否か）、ＩＰｓｅｃカプセル化有りの場合のＩＰｓｅｃトンネルを指定する番号（ＩＰｓｅｃトンネル番号）、ＩＰ  ｉｎ  ＩＰｖ６であるか否かを示すフラグなどの情報が含まれる。ＩＰパケット１０は、ＩＰｖ４またはＩＰｖ６のパケット（以下、「ＩＰｖ４／ＩＰｖ６パケット」と記載）である。また、ＩＰｓｅｃトンネルを指定する番号は、ＳＡを示す。ＩＰパケット１０のパケットデータは、送信インタフェース情報とともに、ＣＰＵ  Ｉ／Ｆ部２６５及び書き込みスケジューラ部２１５を介してメモリコントローラ部２２０へ入力される。
【００７７】
メモリコントローラ部２２０は、ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５を介してＤＤＲ−ＳＤＲＡＭ３００へＩＰパケット１０のパケットデータを書き込む。検索部２３５は、ＩＰｓｅｃを用いたＩＰパケットの送信のジョブを選択し、ＣＰＵ転送判定部２４０は、ＣＰＵ４００への転送が不要であると判断する。キュー選択部２４５は、送信インタフェースの情報に基づいてキューを選択し、この選択されたＱｏＳ部２５０内のキューに、ＩＰパケット１０のパケットデータの記録位置を示すハンドル番号と送信インタフェースの情報とがジョブとして記録される。なお、ＣＰＵ４００から転送されたパケットデータに対するパーサ部２３０、検索部２３５、ＣＰＵ転送判定部２４０の動作は、前記ジョブの生成に必要となるハンドル番号、送信インタフェースの情報などの各種情報を次段に転送するのみである。Ｑｏｓ部２５０から出力されたジョブは、メモリコントローラ部２２０に出力され、このジョブに基づいてＤＤＲ−ＳＤＲＡＭ３００からパケットデータが読み出されて、フレーム生成部２６０へ出力される。フレーム生成部２６０は、入力されたジョブに基づき、ＩＰｓｅｃカプセル化を除く送信フレームを生成する。フレーム生成部２６０は、前記ジョブにＩＰｓｅｃカプセル化有を示す情報が含まれている場合、生成した送信フレームに、ＩＰｓｅｃトンネル番号、ＩＰ  ｉｎ  ＩＰｖ６形式であるか否かを示すフラグを併せてＩＰｓｅｃ部２１０（送信側）に出力する。
【００７８】
一方、ＷＡＮまたはＬＡＮから受信したパケットを、ＩＰｓｅｃにより送信する場合は、以下のように動作する。
ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５はパケットを受信すると、受信したパケットにＭＡＣ処理、ＣＲＣ処理などを行う。書き込みスケジューラ部２１５は、ＩＰｓｅｃ部２１０を介して、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５によりフレーム情報が付加された受信パケットのパケットデータを受信する。あるいは、ＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５がパケットを受信すると、受信したパケットにＭＡＣ処理、ＣＲＣ処理などを行う。書き込みスケジューラ部２１５は、ＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５によりフレーム情報が付加された受信パケットのパケットデータを受信する。受信パケットのパケットデータは、フレーム情報とともに、書き込みスケジューラ部２１５を介してメモリコントローラ部２２０へ入力される。
【００７９】
メモリコントローラ部２２０は、ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５を介してＤＤＲ−ＳＤＲＡＭ３００へ受信パケットのパケットデータを書き込む。検索部２３５は、ＩＰｓｅｃトンネルへの送信を指定し、ＣＰＵ転送判定部２４０は、ＣＰＵ４００への転送が不要であるか否かを判断する。キュー選択部２４５は、フレーム情報に基づいてキューを選択し、この選択されたＱｏＳ部２５０内のキューに、受信パケットのパケットデータの記録位置を示すハンドル番号と送信インタフェースの情報とがジョブとして記録される。Ｑｏｓ部２５０から出力されたジョブは、メモリコントローラ部２２０に出力され、このジョブに基づいてＤＤＲ−ＳＤＲＡＭ３００からパケットデータが読み出されて、フレーム生成部２６０へ出力される。フレーム生成部２６０は、入力されたジョブに基づき、ＩＰｓｅｃカプセル化を除く送信フレームを生成し、生成した送信フレームに、ＩＰｓｅｃトンネル番号を併せてＩＰｓｅｃ部２１０へ出力する。
【００８０】
ＩＰｓｅｃ部２１０は、ＩＰｓｅｃトンネル番号をキーに暗号化アルゴリズムと、認証キーとを読み出す。ＩＰｓｅｃ部２１０は、暗号化アルゴリズムがｎｕｌｌ暗号以外であれば、暗号化アルゴリズムに従って、ＩＰパケット１０から暗号化パケット１１を生成する。さらに、ＩＰｓｅｃ部２１０は、トレーラ１２を生成して付加し、暗号アルゴリズムがｎｕｌｌ暗号以外であれば、暗号化パケット１１の前にＩＶ１５を付加する。また、認証ありの場合、ＩＣＶ１６をトレーラ１２の後ろに付加する。ＩＰｓｅｃ部２１０は、ＩＰｓｅｃトンネル番号に対応したＩＰドレスから外側ＩＰｖ６ヘッダ１３を、ＩＰｓｅｃトンネル番号に対応したＳＰＩからＥＳＰヘッダ１４を生成して付加する。これにより、外側ＩＰｖ６ヘッダ１３、ＥＳＰヘッダ１４、ＩＶ１５、暗号化パケット１１、トレーラ１２、及び、ＩＣＶ１６からなるＩＰｖ６  ＩＰｓｅｃパケットを生成する。
ＩＰｓｅｃ部２１０は、生成したＩＰｖ６  ＩＰｓｅｃパケットを含み、ＩＰｓｅｃトンネル番号に対応したＭＡＣアドレスから生成したＬ２ヘッダを付加したフレームをＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５に出力する。ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５は受信したフレームを物理Ｉ／Ｆ５００を介してＷＡＮに送出する。
【００８１】
図４は、フラグメントされていないＩＰｓｅｃパケットを受信した場合の処理を示す図である。
ＩＰｓｅｃ部２１０は、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５からＩＰｖ６  ＩＰｓｅｃパケットを含むフレームを受信する。ＩＰｖ６  ＩＰｓｅｃパケットは、外側ＩＰｖ６ヘッダ２０、ＥＳＰヘッダ２１、ＩＶ２２、暗号化パケット２３、トレーラ２４、及び、ＩＣＶ２５からなる。ＩＰｓｅｃ部２１０は、パケットのヘッダからＩＰｓｅｃ処理対象であり、拡張ヘッダがないことを認識すると、ＥＳＰヘッダ２１に含まれるＳＰＩからＳＡ、暗号化アルゴリズム、認証鍵を取得する。認証ありの場合、ＩＰｓｅｃ部２１０は、読み出した認証鍵により、ＩＣＶ２５の認証を行った後、ＩＣＶ２５を削除する。ＩＰｓｅｃ部２１０は、暗号化アルゴリズムがｎｕｌｌ暗号以外であれば、暗号化アルゴリズムに従い、ＩＶ２２を用いて暗号化パケット２３及びトレーラ２４を復号する。そして、復号したトレーラ２４で示されるパディング長に従い、復号した暗号化パケット２３からパディングを削除してＩＰｖ４／ＩＰｖ６パケットであるＩＰパケット２６を取得する。ＩＰｓｅｃ部２１０は、外側ＩＰｖ６ヘッダ２０、ＥＳＰヘッダ２１を削除し、ｎｕｌｌ暗号以外の場合、さらに、ＩＶ２２を削除する。
【００８２】
ＩＰｓｅｃ部２１０は、復号したＩＰパケット２６を含むフレームと、ＳＡを示すＩＰｓｅｃトンネル番号とを書き込みスケジューラ部２１５に出力する。出力されたフレームは、ＤＤＲ−ＳＤＲＡＭ３００に書き込まれ、パーサ部２３０は、この書き込まれたフレーム内のアドレス等に基づき処理を行う。そして、検索部２３５においてジョブが発生し、ＱｏＳ部２５０に書き込まれる。メモリコントローラ部２２０は、ＤＤＲ−ＳＤＲＡＭ３００から読み出したＩＰパケット２６と、ＩＰｓｅｃトンネル番号とをＣＰＵ  Ｉ／Ｆ２６５を介してＣＰＵ４００に出力する。あるいは、フレーム生成部２６０からＬＡＮ用ＭＡＣ  Ｉ／Ｆ２７５に出力され、ＬＡＮに送出される。
【００８３】
図５は、拡張ヘッダがあり、フラグメントの必要がないＩＰｓｅｃパケットを送信する場合の処理を示す図である。
ＣＰＵ４００においてＩＰｓｅｃを用いてＩＰｖ４／ＩＰｖ６パケットであるＩＰパケット３０を転送すべきと判断した場合、ＣＰＵ４００は、ＣＰＵ  Ｉ／Ｆ２６５を介して、ＩＰｖ６ヘッダ３１、拡張ヘッダ３２、及び、カプセル化されたＩＰパケット３０からなるＩＰ  ｉｎ  ＩＰｖ６形式の拡張ヘッダ付ＩＰｖ６カプセル化パケットと、ＳＡを示すＩＰｓｅｃトンネル番号と、ＩＰ  ｉｎ  ＩＰｖ６形式であることを示すフラグとを書き込みスケジューラ部２１５へ出力する。ＩＰｖ６ヘッダ３１に設定するＩＰアドレスは、ＩＰｓｅｃカプセル化で付加される外側ＩＰｖ６ヘッダのＩＰアドレスと一致させる。また、拡張ヘッダ数は１以上あればよい。ＩＰパケット３０の直前の拡張ヘッダ３２内にある次ヘッダの情報には、ＩＰパケット３０のプロトコルであるＩＰｖ４／ＩＰｖ６のプロトコルを示す情報を設定する。
【００８４】
メモリコントローラ部２２０は、ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５を介してＤＤＲ−ＳＤＲＡＭ３００へ拡張ヘッダ付ＩＰｖ６カプセル化パケットを書き込み、パーサ部２３０は、ＩＰｓｅｃトンネル番号及びフラグを検索部２３５に出力する。検索部２３５は、ＩＰｓｅｃを用いたパケットの送信のジョブを選択し、ＣＰＵ転送判定部２４０は、ＣＰＵ４００への転送が不要であると判断する。ＱｏＳ部２５０は、ジョブ情報を生成してキューに記録する。フレーム生成部２６０は、ＩＰｓｅｃトンネル番号及びフラグと、メモリコントローラ部２２０がＤＤＲ−ＳＤＲＡＭ３００から読み出した拡張ヘッダ付ＩＰｖ６カプセル化パケットとをＩＰｓｅｃ部２１０に出力する。
【００８５】
ＩＰｓｅｃ部２１０は、パケットがＩＰｓｅｃ処理対象であり、かつ、拡張ヘッダがあることを認識し、さらに、フラグによりパケットがＩＰ  ｉｎ  ＩＰｖ６形式であることを認識する。ＩＰｓｅｃ部２１０は、ＩＰｓｅｃトンネル番号（ＳＡ）をキーに暗号化アルゴリズムと、認証鍵を読み出す。ＩＰｓｅｃ部２１０は、暗号化アルゴリズムがｎｕｌｌ暗号以外であれば、暗号化アルゴリズムに従ってＩＰパケット３０から暗号化パケット３３を生成し、さらに、トレーラ３４を生成して暗号化パケット３３の後ろに付加するとともに、暗号化パケット３３の前にＩＶ３８を付加する。また、認証ありの場合、ＩＣＶ３９をトレーラ３４の後ろに付加する。
【００８６】
ＩＰｓｅｃ部２１０は、ＥＳＰヘッダ３７を生成し、ＩＶ３８の直前に付加する。そして、ＩＰｖ６ヘッダ３１内のペイロード長を、生成したＩＰｓｅｃパケットの長さとなるよう更正して外側ＩＰｖ６ヘッダ３５とする。さらに、拡張ヘッダ３２のうちＥＳＰヘッダ直前の拡張ヘッダ内の次ヘッダを、ＥＳＰを示す情報に更正して拡張ヘッダ３６とする。このようにして、ＩＰｓｅｃ部２１０は、外側ＩＰｖ６ヘッダ３５、拡張ヘッダ３６、ＥＳＰヘッダ３７、ＩＶ３８、暗号化パケット３３、トレーラ３４、及び、ＩＣＶ３９からなる拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを生成する。ＩＰｓｅｃ部２１０は、生成した拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを含み、ＩＰｓｅｃトンネル番号に対応したＭＡＣアドレスから生成したＬ２ヘッダを付加したフレームをＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５に出力し、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５は受信したフレームを物理Ｉ／Ｆ５００を介してＷＡＮに送出する。
【００８７】
図６は、拡張ヘッダがあり、フラグメントされていないＩＰｓｅｃパケットを受信した場合の処理を示す図である。
ＩＰｓｅｃ部２１０は、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５から拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットを含むフレームを受信する。拡張ヘッダ付ＩＰｖ６  ＩＰｓｅｃパケットは、外側ＩＰｖ６ヘッダ４０、拡張ヘッダ４１、ＥＳＰヘッダ４２、ＩＶ４３、暗号化パケット４４、トレーラ４５、及び、ＩＣＶ４６からなる。ＩＰｓｅｃ部２１０は、パケットのヘッダからＩＰｓｅｃ処理対象であり、拡張ヘッダがあることを認識すると、ＥＳＰヘッダ４２に含まれるＳＰＩからＳＡ、暗号化アルゴリズム、認証鍵を取得する。認証ありの場合、ＩＰｓｅｃ部２１０は、読み出した認証鍵により、ＩＣＶ４６の認証を行った後、ＩＣＶ４６を削除する。さらに、ＩＰｓｅｃ部２１０は、暗号化アルゴリズムがｎｕｌｌ暗号以外であれば、暗号化アルゴリズムに従い、ＩＶ４３を用いて暗号化パケット４４及びトレーラ４５を復号する。そして、復号したトレーラ４５で示されるパディング長に従い、復号した暗号化パケット４４からパディングを削除してＩＰｖ４／ＩＰｖ６パケットであるＩＰパケット４９を取得し、ＩＶ４３を削除する。
【００８８】
ＩＰｓｅｃ部２１０は、ＥＳＰヘッダ４２を削除し、拡張ヘッダ４１のうちＥＳＰヘッダ４２直前の拡張ヘッダ内の次ヘッダを、ＩＰｖ４／ＩＰｖ６パケットのプロトコルを示す情報に更正して拡張ヘッダ４８とする。また、ＩＰｓｅｃ部２１０は、外側ＩＰｖ６ヘッダ４０内のペイロード長を更正し、ＩＰｖ６ヘッダ４７とする。これにより、ＩＰｖ６ヘッダ４７、拡張ヘッダ４８、及び、カプセル化されたＩＰパケット４９からなるＩＰ  ｉｎ  ＩＰｖ６形式の拡張ヘッダ付きＩＰｖ６カプセル化パケットが生成される。ＩＰｓｅｃ部２１０は、生成した拡張ヘッダ付きＩＰｖ６カプセル化パケットを含むフレームと、ＩＰ  ｉｎ  ＩＰｖ６形式であることを示すフラグと、ＳＡを示すＩＰｓｅｃトンネル番号とを書き込みスケジューラ部２１５に出力する。
【００８９】
ＩＰｓｅｃ部２１０から出力されたフレームは、ＤＤＲ−ＳＤＲＡＭ３００に書き込まれ、パーサ部２３０は、この書き込まれたフレーム内のアドレス等により処理を行う。そして、検索部２３５においてジョブが発生し、ＱｏＳ部２５０に書き込まれる。メモリコントローラ部２２０は、ＤＤＲ−ＳＤＲＡＭ３００から読み出した拡張ヘッダ付きＩＰｖ６カプセル化パケットと、ＩＰｓｅｃトンネル番号と、フラグとをＣＰＵ  Ｉ／Ｆ２６５を介してＣＰＵ４００に出力する。ＣＰＵ４００は、拡張ヘッダ４８に従った拡張ヘッダ処理を実行した後、拡張ヘッダ４８を削除し、ＩＰパケット４９を用いた処理が行われる。
【００９０】
＜第２の実施形態＞
第２の実施の形態では、フラグメントを伴うＩＰｓｅｃ処理について説明する。
ＩＰｓｅｃのカプセル化を行うと、パケット長が増加するため、１回の転送で送信できるデータの最大値であるＭＴＵ（Maximum Transmission Unit）を超えてしまう場合がある。そこで、ＭＴＵを超えないよう複数のＩＰｓｅｃパケットに分割することで、送信可能な長さとする。以下では、ＩＰｓｅｃのカプセル化時のパケット分割と、ＩＰｓｅｃのデカプセル化時のパケット再構築の方法を説明する。
【００９１】
ＩＰパケットを暗号化した後にカプセル化して分割する場合は、ＩＰｓｅｃ回路が送信するパケットをさらに分割する処理と、ＩＰｓｅｃ回路が受信する前に分割されたパケットを再構築する処理が必要となる。これらの処理は、ハードウェア化が困難であるため、ＣＰＵでのソフトウェア処理が望ましいが、パケット転送回数が増加するため、インライン型の特徴である高速性は損なわれることになる。
そこで、本実施の形態では、ＣＰＵ６５０において転送パケットをカプセル化して分割し、その後、ＩＰｓｅｃ回路６２０が分割された各パケットを暗号化する。つまり、フラグメントヘッダを含めた暗号化（ＥＳＰヘッダをフラグメントヘッダの前に挿入）によって、形式的な暗号・復号処理をＩＰｓｅｃ回路６２０にて行うことができる。
【００９２】
第２の実施形態の通信装置の通信処理回路２００に関して、第１の実施形態との差分について説明する。
第２の実施形態では、ＳＡ（受信）が見つかったＩＰｓｅｃパケットに対するＩＰｓｅｃ部２１０の動作に関して、第１の実施形態の動作とは異なる点がある。以下にＩＰｓｅｃ部２１０における第１の実施の形態との差分の動作を説明する。
【００９３】
まず、ＩＰｓｅｃパケットの受信動作について差分を説明する。
ＩＰｓｅｃ部２１０は、ＳＡ（受信）に対応させて、暗号アルゴリズム、暗号鍵（ＮＵＬＬ暗号以外の場合）、認証アルゴリズム、認証鍵（認証ありの場合）、アンチリプレイの有無を、ＳＡ処理条件（受信）として記憶している。ＩＰｓｅｃ部２１０は、受信したＩＰｓｅｃパケットのＳＡ（受信）に基づいて、ＳＡ処理条件（受信）を取得する。
【００９４】
ＩＰｓｅｃ部２１０は、上記の取得したＳＡ処理条件（受信）を使用して、認証と復号とデカプセルの各処理を行い、復号された内側ＩＰパケットを取得する。さらに、前記ＩＰパケットを含むフレームに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号を付加して、書き込みスケジューラ部２１５に出力する。なお、ＳＡ処理条件（受信）のアンチリプレイが有りの場合は、アンチリプレイの処理が行われる。
以下に、認証、復号、デカプセル、アンチリプレイの各処理の動作を説明する。
【００９５】
＜認証処理＞
第１の実施形態と同じ処理を行う。
【００９６】
＜復号処理＞
第１の実施形態と同じ処理を行う。ただし、復号後のトレーラ内に含まれている次ヘッダ値に基づいて、ＥＳＰペイロードの先頭にフラグメント拡張ヘッダが付加されているか否かを検出する。第１の実施形態では、ＥＳＰペイロードの先頭は、内側ＩＰパケットのＩＰｖ４ヘッダ、または、ＩＰｖ６ヘッダの何れかであった。第２の実施形態では、前記ＩＰｖ４ヘッダもしくはＩＰｖ６ヘッダの場合の他に、フラグメント拡張ヘッダの場合があり、前者の場合をフラグメント拡張ヘッダ無として、後者の場合をフラグメント拡張ヘッダ有として検出しておく。
【００９７】
＜デカプセル処理；ＥＳＰを除く拡張ヘッダ無、フラグメント拡張ヘッダ無＞
外側ＩＰｖ６ヘッダの後にＥＳＰ以外の拡張ヘッダ無の場合で、かつ、ＥＳＰペイロードの先頭がフラグメント拡張ヘッダ無の場合、受信したＩＰｓｅｃパケットに対するデカプセル処理では、前記パケットから外側ＩＰヘッダ、ＥＳＰヘッダ、ＩＶ、トレーラ、ＩＣＶを削除し、復号された内側ＩＰパケットを取得する。このとき、復号されたトレーラのパッド長に基づいてパッドの削除を行い、内側ＩＰパケットのプロトコルに基づいて、フレームのレイヤ３プロトコルとして、ＩＰｖ４あるいはＩＰｖ６を指定する。すなわち、イーサネット（登録商標）フレームのＴｙｐｅフィールドを、内側ＩＰパケットのプロトコルに相当する値に書き換える。さらに、外側ＩＰｖ６ヘッダ直後から内側ＩＰパケット終了までの長さに基づいて、外側ＩＰｖ６ヘッダのペイロード長を書き換える。ここで、前記ＩＰｖ６カプセル化パケットに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号に加えて、ＩＰｖ６カプセル化無しを示す惰報を付加してもよい。
【００９８】
＜デカプセル処理；ＥＳＰを除く拡張ヘッダ無、フラグメント拡張ヘッダ有＞
外側ＩＰｖ６ヘッダの後にＥＳＰ以外の拡張ヘッダ無の場合で、かつ、ＥＳＰペイロードの先頭がフラグメント拡張ヘッダ有の場合、受信したＩＰｓｅｃパケットに対するデカプセル処理では、前記パケットからＥＳＰヘッダ、ＩＶ、トレーラ、ＩＣＶを削除し、外側ＩＰｖ６ヘッダと、ペイロードとして復号されたフラグメント拡張ヘッダを先頭にもつフラグメントデータから構成される、フラグメントＩＰｖ６パケットに書き換える。このとき、復号されたトレーラのパッド長に基づいてパッドの削除を行い、外側ＩＰｖ６ヘッダ内の次ヘッダフィールドを、フラグメント拡張ヘッダを示す値に書き換える。さらに、外側ＩＰｖ６ヘッダ直後からフラグメントデータ終了までの長さに基づいて、外側ＩＰｖ６ヘッダのペイロード長を書き換える。ここで、前記ＩＰｖ６カプセル化パケットに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号に加えて、ＩＰｖ６カプセル化有りを示す情報を付加してもよい。
【００９９】
＜デカプセル処理；ＥＳＰを除く拡張ヘッダ有、フラグメント拡張ヘッダ無＞
外側ＩＰｖ６ヘッダの後のＥＳＰ以外の拡張ヘッダ有の場合で、かつ、ＥＳＰペイロードの先頭がフラグメント拡張ヘッダ無の場合、受信したＩＰｓｅｃパケットに対するデカプセルにおいて、前記パケットからＥＳＰヘッダ、ＩＶ、トレーラ、ＩＣＶを削除し、外側ＩＰｖ６ヘッダと前記外側ＩＰｖ６ヘッダの後のＥＳＰ以外の拡張ヘッダを残し、復号された内側ＩＰパケットを内側ＩＰパケットとした、ＩＰｖ６カプセル化パケットに書き換える。このとき、復号されたトレーラのパッド長に基づいてパッドの削除を行い、内側ＩＰパケットのプロトコルに基づいて、前記内側ＩＰパケットの直前の拡張ヘッダ内の次ヘッダフィールドに、ＩＰｖ４あるいはＩＰｖ６を指定する。すなわち、拡張ヘッダの次ヘッダフィールドを、内側ＩＰパケットのプロトコルに相当する値に書き換える。さらに、外側ＩＰｖ６ヘッダ直後から内側ＩＰパケット終了までの長さに基づいて、外側ＩＰｖ６ヘッダのペイロード長を書き換える。ここで、前記ＩＰｖ６カプセル化パケットに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号に加えて、ＩＰｖ６カプセル化有りを示す情報を付加してもよい。
【０１００】
＜デカプセル処理；ＥＳＰを除く拡張ヘッダ有、フラグメント拡張ヘッダ有＞
外側ＩＰｖ６ヘッダの後にＥＳＰ以外の拡張ヘッダ有の場合で、かつ、ＥＳＰペイロードの先頭がフラグメント拡張ヘッダ有の場合、受信したＩＰｓｅｃパケットに対するデカプセルにおいて、前記パケットからＥＳＰヘッダ、ＩＶ、トレーラ、ＩＣＶを削除し、外側ＩＰｖ６ヘッダと、外側ＩＰｖ６ヘッダと前記外側ＩＰｖ６ヘッダの後のＥＳＰ以外の拡張ヘッダと、前記拡張ヘッダに続く復号されたフラグメント拡張ヘッダを先頭にもつフラグメントデータから構成される、フラグメントＩＰｖ６パケットに書き換える。このとき、復号されたトレーラのパッド長に基づいてパッドの削除を行い、フラグメント拡張ヘッダの直前の拡張ヘッダ内の次ヘッダフィールドを、フラグメント拡張ヘッダを示す値に書き換える。さらに、外側ＩＰｖ６ヘッダ直後からフラグメントデータ終了までの長さに基づいて、外側ＩＰｖ６ヘッダのペイロード長を書き換える。ここで、前記ＩＰｖ６カプセル化パケットに、受信ＩＰｓｅｃ有を示す情報とＳＡ（受信）を識別する受信ＳＡ番号に加えて、ＩＰｖ６カプセル化有を示す情報を付加してもよい。
【０１０１】
＜アンチリプレイ処理＞
第１の実施形態と同じ処理を行う。
【０１０２】
なお、ＩＰｓｅｃ部２１０が書き込みスケジューラ部２１５ヘデータを出力した以後の動作は、上述した図２に示す各部の説明に従う。ただし、外側ＩＰｖ６ヘッダの後のＥＳＰ以外の拡張ヘッダ有の場合にＩＰｓｅｃ部２１０が出力するＩＰｖ６カプセル化パケットを、外側ＩＰｖ６ヘッダ内のあて先ＩＰｖ６アドレスに基づいて自宛と判断し、ＣＰＵ４００に転送される。ＩＰｖ６カプセル化有りを示す情報が前記ＩＰｖ６カプセル化パケットに付加されている場合は、前記情報に基づきＣＰＵ４００に転送してもよい。
【０１０３】
ＣＰＵ４００は、１個のＩＰｖ６パケットから分割された複数の前記フラグメントＩＰｖ６パケットを、転送回路から入力し、これらを再構成を行って分割前のＩＰｖ６パケットを取得する。さらに、前記ＩＰｖ６パケットが、ＩＰパケットをＩＰｖ６カプセル化したＩＰｖ６カプセル化パケットであることを検出して、前記検出されたＩＰｖ６カプセル化パケットをデカプセル化して内側ＩＰパケットを取得する。前記内側ＩＰパケットに対する処理は、通常のＩＰパケットに対する処理と同じである。
【０１０４】
続いて、ＩＰｓｅｃパケットの送信動作について差分を説明する。
ＣＰＵ４００は、所定の拡張ヘッダを付加するとともにＩＰｓｅｃカプセル化を行って送信するＩＰパケットについて、前記ＩＰパケットを内側ＩＰパケットとしてＩＰｖ６カプセル化し、前記ＩＰｖ６カプセル化パケットに前記拡張ヘッダを付加した、拡張ヘッダ付ＩＰｖ６カプセル化パケットにＬ２ヘッダ（あて先・送信元ＭＡＣアドレスとイーサネット（登録商標）フレームのＴｙｐｅなど）を付与し、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して、ＣＰＵ  Ｉ／Ｆ２６５を介して転送回路に入力する。
【０１０５】
またＣＰＵ４００は、ＩＰｓｅｃカプセル化後のパケットの長さがＭＴＵを越える場合に、内側ＩＰパケットに対してＩＰｖ６カプセル化し、前記ＩＰｖ６カプセル化パケットを各々フラグメント拡張ヘッダが付加された複数のフラグメントＩＰｖ６パケットに分割し、前記各フラグメントＩＰｖ６パケットにＬ２ヘッダを付与し、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報を付加して、ＣＰＵ  Ｉ／Ｆ２６５を介して転送回路に入力する。なお、上述の拡張ヘッダ付ＩＰｖ６カプセル化パケットと、フラグメントＩＰｖ６パケットとを区別する情報を、ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報として付加してもよい。
【０１０６】
ＷＡＮ／ＬＡＮの物理Ｉ／Ｆ５００，５０１で受信したフレームが転送回路内で転送されてＩＰｓｅｃ部２１０に入力されたフレームに対するＩＰｓｅｃ部２１０の処理は、ＩＰｖ６カプセル化無を示す情報が付加された場合の処理に一致し、本実施の形態では、前記フレームを、ＩＰｖ６カプセル化無を示す情報が付加されたフレームとして説明する。
【０１０７】
以下に、送信ＩＰｓｅｃ有の場合の送信フレームに対するＩＰｓｅｃ部２１０の動作を説明する。
ＩＰｓｅｃ部２１０は、ＳＡ（送信）に対応させて、暗号アルゴリズム、暗号鍵（ＮＵＬＬ暗号以外の場合）、認証アルゴリズム、認証鍵（認証ありの場合）を、ＳＡ処理条件（送信）として記憶する。ＩＰｓｅｃ部２１０は、ＳＡ（送信）に基づいて、ＳＡ処理条件（送信）を取得する。
【０１０８】
また、ＩＰｓｅｃ部２１０は、ＳＡ（送信）に対応させて、外側ＩＰｖ６ヘッダの宛先ＩＰｖ６アドレス、送信元ＩＰｖ６アドレス、ホップ・リミット、トラフィック・クラス（内側ＩＰパケットのトラフィック・クラスを外側ＩＰヘッダに複製する指定も可能）と、ＥＳＰヘッダのＳＰＩをカプセル化条件として記憶する。ＩＰｓｅｃ部２１０は、ＳＡ（送信）に基づいて、カプセル化条件を取得する。
【０１０９】
さらに、ＩＰｓｅｃ部２１０は、ＳＡ（送信）に対応させて、送信するＩＰｖ６パケットのＥＳＰヘッダ内のシーケンス番号を管理する。すなわち、ＳＡ（送信）別に送信したＩＰパケットの個数を計数し、シーケンス番号とする。ＩＰｓｅｃ部２１０は、ＳＡ（送信）に基づいて、シーケンス番号を取得する。
【０１１０】
ＩＰｓｅｃ部２１０は、フレーム生成部２６０より入力されたフレームに含まれるＩＰパケットに対して、上記の取得したＳＡ処理条件（送信）、カプセル化条件、シーケンス番号を使用して、暗号とＩＣＶ生成とカプセルの各処理を行う。
以下に、暗号、ＩＣＶ生成、カプセルの各処理の動作を説明する。
【０１１１】
＜暗号処理；ＩＰｖ６カプセル化無＞
第１の実施形態と同じ処理を行う。
【０１１２】
＜暗号処理；ＩＰｖ６カプセル化有＞
ＩＰｖ６カプセル化有を示す情報が付加されている場合、外側ＩＰｖ６ヘッダに続く拡張ヘッダにフラグメント拡張ヘッダが含まれているか否かを検出する。ＩＰｖ６カプセル化済みＩＰｓｅｃ送信情報にフラグメントＩＰｖ６パケットの有無を示す情報が含まれている場合は、前記情報に基づいて検出してもよい。前記検出によりフラグメント拡張ヘッダ無である場合、以後の暗号化の処理については、第１の実施形態と同じである。
前記検出によりフラグメント拡張ヘッダ有である場合、前記フラグメント拡張ヘッダ以後のＩＰｖ６パケットデータを、ＥＳＰカプセル化するため、所定のトレーラを、前記内側ＩＰパケットの直後に付加する。前記トレーラは、パッド、前記パッドのパッド長、フラグメント拡張ヘッダを示す次ヘッダ値から構成されるが、前記パッドを付加するパディング処理において、前記内側ＩＰパケットとトレーラの合計した長さが、これらを暗号化するときの暗号アルゴリズムによって予め決められたブロック長の整数倍となるよう、パッド長を取得する。以後の暗号化の処理については、ＩＰｖ６カプセル化無を示す情報が付加されている場合の処理と同じである。
【０１１３】
＜ＩＣＶ生成処理＞
第１の実施形態と同じ処理を行う。
【０１１４】
＜カプセル処理；ＩＰｖ６カプセル化無＞
第１の実施形態と同じ処理を行う。
【０１１５】
＜カプセル処理；ＩＰｖ６カプセル化有＞
第１の実施形態と同じ処理を行う。
【０１１６】
図７は、フラグメントを伴うＩＰｓｅｃパケットを送信する場合の処理を示す図である。
図２に示す通信装置１００において、ＣＰＵ４００がＩＰｓｅｃを用いてＩＰｖ４／ＩＰｖ６パケットであるＩＰパケット５０を転送すべきと判断し、かつ、ＩＰｓｅｃ処理によりＭＴＵを超過すると判断した場合、ＩＰパケット５０を分割し、分割ＩＰパケット５０ａ及び分割ＩＰパケット５０ｂを生成する。そして、ＩＰｖ６ヘッダ５１ａ、フラグメントヘッダである拡張ヘッダ５２ａ、及び、カプセル化された分割ＩＰパケット５０ａからなるＸ  ｉｎ  ＩＰｖ６形式のフラグメントＩＰｖ６パケットと、ＩＰｖ６ヘッダ５１ｂ、フラグメントヘッダである拡張ヘッダ５２ｂ、及び、カプセル化された分割ＩＰパケット５０ｂからなるＸ  ｉｎ  ＩＰｖ６形式のフラグメントＩＰｖ６パケットを生成する。Ｘ  ｉｎ  ＩＰｖ６形式とは、拡張ヘッダを含み、分割されたＩＰパケットをパケットデータとしてカプセル化したＩＰｖ６パケットを示す。フラグメントヘッダには、フラグメントの識別番号と、分割順序の情報が含まれる。ＣＰＵ４００は、分割ＩＰパケット５０ａをカプセル化したフラグメントＩＰｖ６パケットと、ＳＡを示すＩＰｓｅｃトンネル番号と、Ｘ  ｉｎ  ＩＰｖ６形式であることを示すフラグとを書き込みスケジューラ部２１５へ出力する。さらに、ＣＰＵ４００は、分割ＩＰパケット５０ｂをカプセル化したフラグメントＩＰｖ６パケットと、ＳＡを示すＩＰｓｅｃトンネル番号と、Ｘ  ｉｎ  ＩＰｖ６形式であることを示すフラグとを書き込みスケジューラ部２１５へ出力する。
なお、ＬＡＮポート（ＷＡＮ，ＬＡＮ）で受信したパケットをＩＰｓｅｃにより送信する場合、検索部２３５においてＭＴＣ超過であると検出されたときには、当該受信パケットがＣＰＵ４００へ転送される。ＣＰＵ４００は、転送された受信パケットがＭＴＵ超過であることを認識すると、受信パケットを分割し、分割した受信パケットをカプセル化したフラグメントＩＰｖ６パケットを生成して、上記と同様の処理を行う。
【０１１７】
以下、分割ＩＰパケット５０ａをカプセル化したフラグメントＩＰｖ６パケットについて処理を説明するが、分割ＩＰパケット５０ｂをカプセル化したフラグメントＩＰｖ６パケットについても同様の処理を行う。
メモリコントローラ部２２０は、ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ２２５を介してＤＤＲ−ＳＤＲＡＭ３００へ分割ＩＰパケット５０ａをカプセル化したフラグメントＩＰｖ６パケットを書き込み、パーサ部２３０は、ＩＰｓｅｃトンネル番号及びフラグを検索部２３５に出力する。検索部２３５は、ＩＰｓｅｃを用いたパケットの送信のジョブを選択し、ＣＰＵ転送判定部２４０は、ＣＰＵ４００への転送が不要であると判断する。ＱｏＳ部２５０は、ジョブ情報を生成してキューに記録する。フレーム生成部２６０は、ＩＰｓｅｃトンネル番号、フラグ、メモリコントローラ部２２０がＤＤＲ−ＳＤＲＡＭ３００から読み出したフラグメントＩＰｖ６パケットをＩＰｓｅｃ部２１０に出力する。
【０１１８】
ＩＰｓｅｃ部２１０は、パケットがＩＰｓｅｃ処理対象であり、かつ、拡張ヘッダを含み、Ｘ  ｉｎ  ＩＰｖ６形式であることを認識する。ＩＰｓｅｃ部２１０は、ＩＰｓｅｃトンネル番号（ＳＡ）をキーに暗号化アルゴリズムと、認証鍵とを読み出す。そして、暗号化アルゴリズムがｎｕｌｌ暗号以外であれば、暗号化アルゴリズムに従って拡張ヘッダ５２ａから暗号化拡張ヘッダ５３ａを、分割ＩＰパケット５０ａから暗号化分割ＩＰパケット５４ａを生成し、さらに、トレーラ５５ａを生成して暗号化分割ＩＰパケット５４ａの後ろに付加するとともに、暗号化拡張ヘッダ５３ａの前にＩＶ５６ａを付加する。また、認証ありの場合、ＩＣＶ５７ａをトレーラ５５ａの後ろに付加する。
【０１１９】
ＩＰｓｅｃ部２１０は、ＥＳＰヘッダ５９ａを生成し、ＩＶ５６ａの直前に付加する。そして、ＩＰｖ６ヘッダ５１ａ内のペイロード長を、生成したＩＰｓｅｃパケットの長さとなるよう更正してＩＰｖ６ヘッダ５８ａとする。このようにして、ＩＰｓｅｃ部２１０は、ＩＰｖ６ヘッダ５８ａ、ＥＳＰヘッダ５９ａ、ＩＶ５６ａ、暗号化拡張ヘッダ５３ａ、暗号化分割ＩＰパケット５４ａ、トレーラ５５ａ、及び、ＩＣＶ５７ａからなるＩＰｖ６  ＩＰｓｅｃパケットを生成する。ＩＰｓｅｃ部２１０は、生成したＩＰｖ６  ＩＰｓｅｃパケットを含み、ＩＰｓｅｃトンネル番号に対応したＭＡＣアドレスから生成したＬ２ヘッダを付加したフレームをＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５に出力する。ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５は受信したＩＰｓｅｃパケットを物理Ｉ／Ｆ５００を介してＷＡＮに送出する。
一方、同様の処理によりＩＰｖ６ヘッダ５８ｂ、ＥＳＰヘッダ５９ｂ、ＩＶ５６ｂ、暗号化拡張ヘッダ５３ｂ、暗号化分割ＩＰパケット５４ｂ、トレーラ５５ｂ、及び、ＩＣＶ５７ｂからなるＩＰｖ６  ＩＰｓｅｃパケットが生成され、ＷＡＮに送出される。
【０１２０】
次に、フラグメントされたパケットを含むＩＰｓｅｃパケットを受信した場合の処理について説明する。図１に示す構成において、ＩＰｓｅｃ回路６２０は、受信したＩＰｓｅｃパケットを復号したとき、トレーラから読み出した次ヘッダの示すプロトコルがＩＰｖ４／ＩＰｖ６以外である場合、外側ＩＰｖ６ヘッダの削除は行わず、ＥＳＰ拡張ヘッダの削除、ＩＶの削除（ｎｕｌｌ暗号化以外の場合のみ）、トレーラからパッド長及び次ヘッダの読み出し、トレーラの削除を行う。また、ＥＳＰ拡張ヘッダ直前のヘッダ内の次ヘッダをトレーラから読み出した次ヘッダが示すプロトコルに更正する。前記処理の後、ＩＰｓｅｃ処理対象であることと、トンネルを指定するとともに、Ｘ  ｉｎ  ＩＰｖ６形式であることを示すフラグを付加して、パケットデータをＣＰＵ６５０に転送する。なお、本実施の形態のＩＰｓｅｃ回路６２０を用いたとき、ＣＰＵ６５０がフラグメントの有無によらず、Ｘ  ｉｎ  ＩＰｖ６形式であることを示すフラグをつけてＩＰｓｅｃ回路６２０にパケットを転送することで、ＩＰｓｅｃトランスポートモードを実現することが可能となる。
【０１２１】
図８は、フラグメントされたＩＰｓｅｃパケットを受信した場合の処理を示す図である。
図２の構成において、ＩＰｓｅｃ部２１０は、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５からＩＰｖ６  ＩＰｓｅｃパケットを含むフレームを受信する。ＩＰｖ６  ＩＰｓｅｃパケットは、外側ＩＰｖ６ヘッダ７０ａ、ＥＳＰヘッダ７１ａ、ＩＶ７２ａ、暗号化拡張ヘッダ７３ａ、暗号化分割ＩＰパケット７４ａ、トレーラ７５ａ、及び、ＩＣＶ７６ａからなる。ＩＰｓｅｃ部２１０は、パケットのヘッダからＩＰｓｅｃ処理対象であり、拡張ヘッダがないことを認識すると、ＥＳＰヘッダ７１ａに含まれるＳＰＩからＳＡ、暗号化アルゴリズム、認証鍵を取得する。認証ありの場合、ＩＰｓｅｃ部２１０は、読み出した認証鍵により、ＩＣＶ７６ａの認証を行った後、ＩＣＶ７６ａを削除する。さらに、ＩＰｓｅｃ部２１０は、暗号化アルゴリズムがｎｕｌｌ暗号以外であれば、暗号化アルゴリズムに従い、ＩＶ７２ａを用いて暗号化拡張ヘッダ７３ａ、暗号化分割ＩＰパケット７４ａ及びトレーラ７５ａを復号する。復号したトレーラ７５ａの示すプロトコルがＩＰｖ４／ＩＰｖ６以外である場合、ＩＰｓｅｃ部２１０は、外側ＩＰｖ６ヘッダ７０ａの削除を行わず、ＥＳＰヘッダ７１ａを削除する。また、復号したトレーラ７５ａの示すパディング長に従い、復号した暗号化分割ＩＰパケット７４ａからパディングを削除して分割されたＩＰｖ４／ＩＰｖ６パケットである分割ＩＰパケット７８ａを取得し、ＩＶ７２ａを削除する。
【０１２２】
ＩＰｓｅｃ部２１０は、外側ＩＰｖ６ヘッダ７０ａ内のペイロード長を更正し、ＩＰｖ６ヘッダ７９ａとする。これにより、ＩＰｖ６ヘッダ７９ａ、暗号化拡張ヘッダ７３ａを復号して得た拡張ヘッダ７７ａ、及び、カプセル化された分割ＩＰパケット７８ａからなるＸ  ｉｎ  ＩＰｖ６形式のフラグメントＩＰｖ６パケットが生成される。ＩＰｓｅｃ部２１０は、生成したフラグメントＩＰｖ６パケットを含むフレームと、Ｘ  ｉｎ  ＩＰｖ６形式であることを示すフラグと、ＳＡを示すＩＰｓｅｃトンネル番号とを書き込みスケジューラ部２１５に出力する。
【０１２３】
ＩＰｓｅｃ部２１０から出力されたフレームは、ＤＤＲ−ＳＤＲＡＭ３００に書き込まれ、パーサ部２３０は、この書き込まれたフレーム内のアドレス等により処理を行う。そして、検索部２３５においてジョブが発生し、ＱｏＳ部２５０に書き込まれる。メモリコントローラ部２２０は、ＤＤＲ−ＳＤＲＡＭ３００から読み出したフラグメントＩＰｖ６パケットと、ＩＰｓｅｃトンネル番号と、フラグとをＣＰＵ  Ｉ／Ｆ２６５を介してＣＰＵ４００に出力する。
【０１２４】
続いて、ＩＰｓｅｃ部２１０は、ＷＡＮ用ＭＡＣ  Ｉ／Ｆ２０５から、外側ＩＰｖ６ヘッダ７０ｂ、ＥＳＰヘッダ７１ｂ、ＩＶ７２ｂ、暗号化拡張ヘッダ７３ｂ、暗号化分割ＩＰパケット７４ｂ、トレーラ７５ｂ、及び、ＩＣＶ７６ｂからなるＩＰｖ６  ＩＰｓｅｃパケットを含むフレームを受信する。そして、上記と同様の処理により、ＩＰｖ６ヘッダ７０ｂのペイロード長を更正したＩＰｖ６ヘッダ７９ｂ、暗号化拡張ヘッダ７３ｂを復号して得た拡張ヘッダ７７ｂ、及び、暗号化分割ＩＰパケット７４ｂを復号して得られ、カプセル化された分割ＩＰパケット７８ｂからなるフラグメントＩＰｖ６パケットが生成され、ＣＰＵ４００に、ＩＰｓｅｃトンネル番号及びフラグとともに出力される。
【０１２５】
ＣＰＵ４００は、分割ＩＰパケット７８ａ、７８ｂがカプセル化されたフラグメントＩＰｖ６パケットを受信すると、拡張ヘッダ７７ａ及び７７ｂのフラグメントの識別番号及び分割順序の情報を用いて、分割ＩＰパケット７８ａ及び７８ｂからフラグメント前のＩＰパケット７８を生成する。
【０１２６】
上記実施の形態によれば、通信装置は、拡張ヘッダが付加されていないＩＰパケットについては、ワイヤードロジックによる高速な送受信処理を行う。また、拡張ヘッダが付加されたＩＰＳｅｃパケットに対しては、ハードウェア処理と、ソフトウェアの処理とを組み合わせて、送受信処理を実現することができる。また、上記実施の形態によれば、ＩＰｖ６カプセル化したパケットを分割するため、内側ＩＰパケットが制約されない。すなわち、受信パケットについてはＩＰｓｅｃ処理の後に再構成処理を行い、また、分割処理の後にＩＰｓｅｃ処理を行って送信するため、ハードウェアによる送受信とＩＰｓｅｃ処理が連続して実施され、インライン型のＩＰｓｅｃ処理が可能となる。加えて、ＩＰｓｅｃパケットの生成により、送受信可能な信号長を超えてしまう場合には、転送対象のＩＰパケットを分割して送受信することができる。
【図面の簡単な説明】
【０１２７】
【図１】本発明の一実施の形態に係る通信装置の概要構成を示すブロック図である。
【図２】同実施の形態による通信装置の詳細な構成を示すブロック図である。
【図３】同実施の形態による通信装置におけるＩＰｓｅｃパケット送信時の処理を示す図である。
【図４】同実施の形態による通信装置におけるＩＰｓｅｃパケット受信時の処理を示す図である。
【図５】同実施の形態による通信装置におけるＩＰｓｅｃパケット送信時の処理を示す図である。
【図６】同実施の形態による通信装置におけるＩＰｓｅｃパケット受信時の処理を示す図である。
【図７】同実施の形態による通信装置におけるＩＰｓｅｃパケット送信時の処理を示す図である。
【図８】同実施の形態による通信装置におけるＩＰｓｅｃパケット受信時の処理を示す図である。
【図９】ＩＰｓｅｃパケットの構成を示す図である。
【図１０】従来のパケット転送装置の構成を示す図である。
【図１１】従来のパケット転送装置の構成を示す図である。
【符号の説明】
【０１２８】
１００…通信装置、  ２００…通信処理回路、  ２０５…ＷＡＮ用ＭＡＣ  Ｉ／Ｆ、  ２１０…ＩＰｓｅｃ部、  ２１５…書き込みスケジューラ部、  ２２０…メモリコントローラ部、  ２２５…ＤＤＲ−ＳＤＲＡＭ  Ｉ／Ｆ、  ２３０…パーサ部、  ２３５…検索部、  ２４０…ＣＰＵ転送判定部、２４５…キュー選択部、  ２５０…ＱｏＳ部、  ２５５…ハンドル管理部、  ２６０…フレーム生成部、  ２６５…ＣＰＵ  Ｉ／Ｆ、  ２７５…ＬＡＮ用ＭＡＣ  Ｉ／Ｆ、  ３００…ＤＤＲ−ＳＤＲＡＭ、  ４００…ＣＰＵ、  ５００、５０１…物理Ｉ／Ｆ、  ６１０…第１ＬＡＮポート、  ６２０…ＩＰｓｅｃ回路、  ６３０…転送回路、  ６４０…第２ＬＡＮポート、  ６５０…ＣＰＵ
【図１】
2007135035.tif 000003
【図２】
2007135035.tif 000004
【図３】
2007135035.tif 000005
【図４】
2007135035.tif 000006
【図５】
2007135035.tif 000007
【図６】
2007135035.tif 000008
【図７】
2007135035.tif 000009
【図８】
2007135035.tif 000010
【図９】
2007135035.tif 000011
【図１０】
2007135035.tif 000012
【図１１】
2007135035.tif 000013