以下、本発明に係る実施形態を図面に基づいて説明する。なお、各図において同一の符号を付した構成は、同一の構成であることを示し、その説明を省略する。
まず、本実施形態に係るネットワーク及びIPsecルータ装置の構成について説明する。図1は、実施形態におけるネットワークの全体構成を示す図である。図2は、IPsecルータ装置を含むネットワークの構成を示すブロック図である。
図1において、ネットワーク1は、所謂ネットワーク層の通信プロトコルとしてIPを利用する複数のネットワーク2、3を備えて構成される通信網である。ネットワーク1を構成するネットワーク2、3の中には、トンネル12によってIPsecを利用した通信パケットを送受信するIPsecルータ装置11を含むIPvxのネットワーク2と、当該トンネル12が設定されるIPvyのネットワーク3とがある。
IPvxのネットワーク2は、例えば、1又は複数の機器等が通信線によって接続されたローカル・エリア・ネットワーク(Local Area Network、LAN)、及び、これら機器を遠隔に監視及び/又は制御する遠隔監視制御装置を含むLAN等である。図1では、3個のIPvxのネットワーク2−A、2−B、2−Cが示されており、各IPvxのネットワーク2−A、2−B、2−Cは、各IPsecルータ装置11−A、11−B、11−Cをそれぞれ含む。そして、IPsecルータ装置11−AとIPsecルータ装置11−Bとの間であってIPvyのネットワーク3−A中に設定されたトンネル12−AB、及び、IPsecルータ装置11−AとIPsecルータ装置11−Cとの間であってIPvyのネットワーク3−B中に設定されたトンネル12−ACが示されている。IPvxは、IPのバージョンがxであることを示し、そして、IPvyは、IPのバージョンがyであることを示す。本明細書の作成時においてIPのバージョンは、バージョン4(x=4、y=4)及びバージョン6(x=6、y=6)が知られている。
そのため、x=4及びy=4の場合には、トンネル12−AB、12−ACは、IPv4のネットワークがIPv4のネットワーク上に設定するトンネルであるIPv4 over IPv4のトンネルとなる。また、x=4及びy=6の場合には、トンネル12−AB、12−ACは、IPv4のネットワークがIPv6のネットワーク上に設定するトンネルであるIPv4 over IPv6のトンネルとなる。x=6及びy=6の場合には、トンネル12−AB、12−ACは、IPv6のネットワークがIPv6のネットワーク上に設定するトンネルであるIPv6 over IPv6のトンネルとなる。そして、x=6及びy=4の場合には、トンネル12−AB、12−ACは、IPv6のネットワークがIPv4のネットワーク上に設定するトンネルであるIPv6 over IPv4のトンネルとなる。
なお、本明細書において、総称する場合にはアルファベットの添え字を省略した参照符号で示し、個別の構成を指す場合には添え字を付した参照符号で示す。また、IPsecにおいて、通常、IPsecのIPsecプロトコルモードがトンネルモードの場合における通信経路をトンネルと呼んでいるが、本明細書において、IPsecプロトコルモードがトンネルモードの場合及びトランスポートモードを適用した通信経路上にIPvx over IPvyトンネルを適用した通信経路をトンネルと呼ぶこととする。
ネットワーク1は、例えば、電話網、ディジタル通信網及び無線通信網等であり、所定の通信プロトコルを用いて情報を収容した通信信号が伝送される。本実施形態では、ネットワーク1は、通信プロトコルにHTTP(Hyper Text Transfer Protocol)、FTP(File Transfer Protocol)、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)及びIP(Internet Protocol)等のインターネットプロトコル群が用いられてインターネットを構成する。
IPvxのネットワーク2に含まれるIPsecルータ装置11は、本実施形態では、例えば、IPvxのネットワーク2と別のネットワークであるIPvyのネットワーク3との境界に配置され、IPvyのネットワーク3から送信されてきた通信パケット、当該IPsecルータ装置11が属するIPvxのネットワーク2内から送信されて来た通信パケット、及び、当該IPsecルータ装置11自身が送信する通信パケット等をルーティング(経路選択)すると共に、他のIPvxのネットワーク2内に在るIPsecルータ装置11との間にIPvx over IPvyトンネル(以下、「IPvx−IPvyトンネル」と略記する。)を設定する装置である。図1に示す例では、IPvxのネットワーク2−A内のIPsecルータ装置11−AとIPvxのネットワーク2−B内のIPsecルータ装置11−Bとの間にIPvx−IPvyトンネル12−ABが設定され、そして、IPvxのネットワーク2−A内のIPsecルータ装置11−AとIPvxのネットワーク2−C内のIPsecルータ装置11−Cとの間にIPvx−IPvyトンネル12−ACが設定されている。
IPsecルータ装置11は、図2に示す例では、一戸建て住宅、集合住宅、公共施設、オフィスビル等の建造物内に構成されるIPvxのネットワーク2内に含まれると共に、IPvyのネットワーク3に接続されている。IPvxのネットワーク2は、IPsecルータ装置11、電気をエネルギー源として稼動する1又は複数の機器13(13−a、13−b、・・・)、及び、IPsecルータ装置11と機器13とを接続する通信線14を備えて、例えば、イーサネット(Ethernet、登録商標)を利用したIPvxのイントラネットを構成している。
機器13は、IPsecルータ装置11と通信線14を介して通信を行う通信部51と、機器13の機能を実行する機能部52とを備えて構成され、機能部52の状態(例えば、電源のオン・オフ、稼動状態、故障状態等)をネットワーク1に含まれる他のネットワーク内の遠隔監視制御装置等に通信線14及びIPsecルータ装置11を介して通信部51を用いて送信すると共に、機能部52の状態を制御する制御命令をネットワーク1に含まれる他のネットワーク内の遠隔監視制御装置等からIPsecルータ装置11及び通信線14を介して通信部51を用いて受信し制御命令の通りに制御するものである。制御命令は、例えば、遠隔監視制御装置等にアクセスする携帯電話やPDA(Personal Digital Assistants)やパーソナルコンピュータ等の端末装置から送信される。機能部52は、機器13が、例えば、ガスの使用量を計量するガスメータである場合には、ガスの使用量を計量する計量機能である。機器13は、ガスメータの他に、例えば、電気の使用量を計量する電気メータ、及び、水道の使用量を計量する水道メータ等の計量メータ、照明器具及び空調装置等の住戸環境やオフィス環境等を調整する装置、煙センサ、温度センサ及び湿度センサ等のセンサ、電子錠装置等の住戸設備、テレビジョン、ビデオテープレコーダ、DVDレコーダ及び洗濯機等の家電製品、コンピュータ等の情報処理装置、電話機及びファクシミリ装置等の通信機器、そして、脈拍計、体温計、血中酸素濃度計及び心電図計等の医療機器等である。
IPsecルータ装置11は、図2に示すように、ローカル・エリア・ネットワーク側インターフェース部(以下、「LAN側IF部」と略記する。)21と、制御部22と、記憶部23と、入力部24と、論理インターフェース部(以下、「論理IF部」と略記する。)25と、ワイド・エリア・ネットワーク側インターフェース部(以下、「WAN側IF部」と略記する。)26とを備えて構成される。
LAN側IF部21は、当該IPsecルータ装置11が属するIPvxのネットワーク2内における機器13との間で通信線14を介して通信パケットを送受信するインターフェース回路であり、例えば、イーサネットカード等である。入力部24は、PMTU探索の使用の可否の情報や、IPvx−IPvyトンネルを設定するために必要な情報等の各種情報を当該IPsecルータ装置11に入力する装置であり、例えば、テンキーやキーボード等である。なお、入力内容を確認するために液晶表示装置等の表示部をさらに備えてもよい。論理IF部25は、LAN側IF部21と制御部22との間に配置され、IPvx−IPvyトンネルを構築するための論理的なインターフェースである。WAN側IF部26は、ネットワーク1を構成する他のネットワークとの間で通信パケットを送受信するインターフェース回路であり、例えば、イーサネットカード、56Kモデム、ターミナルアダプタ、ADSLモデム等である。
記憶部23は、パケット長計算式を記憶するパケット長計算式記憶部41、セキュリティポリシデータベース(Security Policy Database、以下、「SPD」と略記する。)を記憶するSPD記憶部42、及び、セキュリティアソシエーションデータベース(Security Association Database、以下、「SAD」と略記する。)を記憶するSAD記憶部43を備え、パケット長計算式を用いて通信パケットのパケット長を最適化するパケット長計算プログラム、インターネットを利用するためのプログラム、通信パケットのルーティングを行うルーティングプログラム等の各種プログラム、及び、各種プログラムの実行中に生じる情報等の各種情報を記憶する。記憶部23は、例えば、RAM(Random Access Memory)等の揮発性のメモリ、及び、ROM(Read Only Memory)や書換え可能なEEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性のメモリを備えて構成される。
パケット長計算式は、IPsecを適用して通信パケットを送信する場合に、IPsecを適用した通信パケットが通信経路の途中でIPフラグメンテーションされない範囲における最大のオリジナルな通信パケットのパケット長を計算するための計算式である。
IPsecのIPsecプロトコルモードには、トランスポートモード及びトンネルモードである。図3は、トランスポートモードにおける通信パケットのフォーマットを示す図である。図3(A)は、IPv6の通信パケットのフォーマットを示し、図3(B)は、IPv4のトランスポートモードを適用したIPv6−IPv4の通信パケットのフォーマットを示し、そして、図3(C)は、IPv6のトランスポートモードを適用したIPv6−IPv6の通信パケットのフォーマットを示す。図4は、トンネルモードにおける通信パケットのフォーマットを示す図である。図4(A)は、IPv6の通信パケットのフォーマットを示し、図4(B)は、トンネルモードを適用したIPv6−IPv4の通信パケットのフォーマットを示し、そして、図4(C)は、トンネルモードを適用したIPv6−IPv6の通信パケットのフォーマットを示す。
なお、本実施形態においてWAN側で送受信されるIPパケットについては、説明を簡略化するために、フラグメント、ESP(Encapslating Security Payload)及びAH(Authentication Header)以外の拡張ヘッダが存在しない場合について説明しているが、拡張ヘッダが存在する場合においても同様に取り扱うことが可能である。
まず、トランスポートモードの場合について説明する。トランスポートモードは、トランスポート層の通信パケットをIPsecによってカプセル化し、認証や暗号化の対象とするものである。IPv6の通信パケット60のフォーマットは、図3(A)に示すように、IPv6ヘッダを収容するIPv6ヘッダ部61と、このIPv6ヘッダ部61以外のデータを収容するデータ部62とを備えて構成される。
本実施形態では、トランスポートモードの場合では、IPv6の通信パケット60にIPvx−IPvyトンネルを適用した後にトランスポートモードを適用する。そのため、IPv4のトランスポートモードを適用したIPv6−IPv4の通信パケット70aは、図3(B)に示すように、IPv4ヘッダを収容するIPv4ヘッダ部71と、AHを収容するAHヘッダ部72aと、ESPヘッダを収容するESPヘッダ部73aと、元の通信パケット60におけるIPv6ヘッダ部61及びデータ部62と、ESPトレーラ74aと、ESP認証データを収容するESP認証データ部75aとを備えて構成される。そして、元の通信パケット60におけるIPv6ヘッダ部61及びデータ部62と、ESPトレーラ74aとが暗号化される。一方、IPv6のトランスポートモードを適用したIPv6−IPv6の通信パケット70bは、図3(C)に示すように、IPv6ヘッダを収容するIPv6ヘッダ部76と、AHを収容するAHヘッダ部72bと、ESPヘッダを収容するESPヘッダ部73bと、元の通信パケット60におけるIPv6ヘッダ部61及びデータ部62と、ESPトレーラ74bと、ESP認証データを収容するESP認証データ部75bとを備えて構成される。そして、元の通信パケット60におけるIPv6ヘッダ部61及びデータ部62と、ESPトレーラ74bとが暗号化される。
次に、トンネルモードについて説明する。トンネルモードは、通信パケット全体をIPsecによってカプセル化し、認証や暗号化の対象とするものである。IPv6の通信パケット60’のフォーマットは、図4(A)に示すように、IPv6ヘッダを収容するIPv6ヘッダ部61と、拡張IPv6ヘッダを収容する拡張ヘッダ部63と、データを収容するデータ部64とを備えて構成される。トンネルモードを適用したIPv6−IPv4の通信パケット80aは、図4(B)に示すように、トンネル用のIPv4ヘッダを収容するトンネルIPv4ヘッダ部81と、AHヘッダを収容するAHヘッダ部82aと、ESPヘッダを収容するESPヘッダ部83aと、元の通信パケット60’におけるIPv6ヘッダ部61、拡張IPv6ヘッダ部63及びデータ部64と、ESPトレーラ84aと、ESP認証データを収容するESP認証データ部85aとを備えて構成される。また、トンネルモードを適用したIPv6−IPv6の通信パケット80bは、図4(C)に示すように、トンネル用のIPv6ヘッダを収容するトンネルIPv6ヘッダ部87と、AHヘッダ部82bと、ESPヘッダ部83bと、元の通信パケット60’におけるIPv6ヘッダ部61、拡張IPv6ヘッダ部63及びデータ部64と、ESPトレーラ84bと、ESP認証データ部85bとを備えて構成される。そして、元の通信パケット60’におけるIPv6ヘッダ部61、拡張IPv6ヘッダ部63及びデータ部64と、ESPトレーラ84a、84bとが暗号化される。
また、暗号化アルゴリズムの種類別に見ると、例えば、IV(Initialization Vector、初期化ベクタ)の無い64ビット(bit)ブロック暗号の場合では、オーバヘッドは、ESPヘッダを収容するESPヘッダ部、パディング(Padding)を収容するパディング部、パディング長を収容するパディング長部及び次ヘッダ番号を収容する次ヘッダ番号部を備えて構成される。ESPヘッダ部は、8バイト(byte)であり、パディング部は、0〜7バイトの変動値であり、パディング長部及び次ヘッダ番号部は、1バイトである。このIVの無い64ビットブロック暗号は、例えば、DES(Data Encryption Standard)、3DES、IDEA(International Data Encryption Algorithm)、Blowfish及びCAST−128における各ECB(Electric CodeBook)モードがある。また例えば、IVの有る64ビットブロック暗号の場合では、オーバヘッドは、8バイトのESPヘッダ部、IVを収容する8バイトのIV部、0〜7バイトで変動するパディング部1バイトのパディング長部及び1バイトの次ヘッダ番号部を備えて構成される。このIVの有る64ビットブロック暗号は、例えば、DES、3DES、IDEA、Blowfish及びCAST−128における各CBC(Cipher Block Chaining)モード、各CFB(Cipher FeedBack)モード、各OFB(Output-FeedBack)モード及び各CTR(CounTeR)モードがある。また例えば、IVの無い128ビットブロック暗号の場合では、オーバヘッドは、8バイトのESPヘッダ部、0〜15バイトで変動するパディング部、1バイトのパディング長部及び1バイトの次ヘッダ番号部を備えて構成される。このIVの無し128ビットブロック暗号は、例えば、AES、Twofish、CAST−256及びCamelliaにおける各ECBモードがある。また例えば、IVの有る128ビットブロック暗号の場合では、オーバヘッドは、8バイトのESPヘッダ部、IVを収容する8バイトのIV部、0〜15バイトで変動するパディング部、1バイトのパディング長部及び1バイトの次ヘッダ番号部を備えて構成される。このIVの有り128ビットブロック暗号は、例えば、AES、Twofish、CAST−256及びCamelliaにおける各CBCモード、各CFBモード、各OFBモード及び各CTRモードがある。なお、パディング部のバイト長は、規格上0〜255バイトまで可能であるが、実施形態におけるブロック暗号のバイト数に応じた変動幅になっている。
認証データのサイズ別に見ると、例えば、認証データのサイズが64ビットの場合において、オーバヘッドは、AHの場合では8バイトの認証データを内包した認証ヘッダを収容する20バイトの認証ヘッダ部を備えて構成され、ESPの場合では認証データを収容する8バイトの認証データ部を備えて構成される。認証データのサイズが64ビットになるのは、例えばDES−MACである。また例えば、認証データのサイズが96ビットの場合において、オーバヘッドは、AHの場合では12バイトの認証データを内包した認証ヘッダを収容する24バイトの認証データ部を備えて構成され、ESPの場合では認証データを収容する12バイトの認証データ部を備えて構成される。認証データのサイズが96ビットになるのは、例えばHMAC−MD5、HMAC−SHA−1、HMAC−RIPEMD−160及びAES−MACである。また例えば、認証データのサイズが128ビットの場合において、オーバヘッドは、AHの場合では16バイトの認証データを内包した認証ヘッダを収容する28バイトの認証データ部を備えて構成され、ESPの場合では認証データを収容する16バイトの認証データ部を備えて構成される。
従って、IPsecを適用して通信パケットを送信する場合、IPのバージョンの違い、IPsecのIPsecプロトコルモードの違い、ESPの暗号化アルゴリズムの違い、ESPの認証データのサイズ及びAHの認証データのサイズに応じて通信パケットのパケット長が変動することになる。
ここで、IPsecが適用される前のオリジナルの通信パケットのサイズ(パケット長)をSとすると、トランスポートモードの場合では、最大のパケット長は、各場合に応じて次の式1−1乃至式1−3によって計算される。
まず、AHのみを適用するトランスポートモードの場合では、最大パケット長は、次の式1−1によって計算される。
通信パケット長={S−(IPヘッダ長)}
+(IPヘッダ長)
+(AHヘッダ長) ・・・(式1−1)
但し、AHヘッダ長は、AH認証データを含むものであり、12バイト+AH認証データ長である。
次に、ESPのみを適用するトランスポートモードの場合では、最大パケット長は、次の式1−2によって計算される。
通信パケット長=[{S−(IPヘッダ長)
+(初期化ベクタ長)
+(ESPトレーラパディング長さフィールド長)
+(ESPトレーラ次ヘッダ番号フィールド長)
}÷(ESP暗号化ブロック長)
]×(ESP暗号化ブロック長)
+(IPヘッダ長)
+(ESPヘッダ長)
+(ESP認証データ長) ・・・(式1−2)
但し、初期化ベクタ長は、存在しない場合は0である。
次に、AH及びESPを共に適用するトランスポートモードの場合では、最大パケット長は、次の式1−3によって計算される。
通信パケット長=[{S−(IPヘッダ長)
+(初期化ベクタ長)
+(ESPトレーラパディング長さフィールド長)
+(ESPトレーラ次ヘッダ番号フィールド長)
}÷(ESP暗号化ブロック長)
]×(ESP暗号化ブロック長)
+(IPヘッダ長)
+(AHヘッダ長)
+(ESPヘッダ長)
+(ESP認証データ長) ・・・(式1−3)
但し、AHヘッダ長は、AH認証データを含むものであり、12バイト+AH認証データ長であり、初期化ベクタ長は、存在しない場合は0である。
ここで、[ ]は、[ ]内の計算結果に端数が生じた場合に正数値に繰り上げる計算子である。例えば[10÷8]=[1.25]=2であり、また例えば[12÷5]=[2.4]=3である。以下も同様である。
一方、トンネルモードの場合では、最大のパケット長は、各場合に応じて次の式2−1乃至式2−3によって計算される。
まず、AHのみを適用するトンネルモードの場合では、最大パケット長は、次の式2−1によって計算される。
通信パケット長=S+(外部IPヘッダ長)
+(AHヘッダ長) ・・・(式2−1)
但し、AHヘッダ長は、AH認証データを含むものであり、12バイト+AH認証データ長である。
次に、ESPのみを適用するトンネルモードの場合では、最大パケット長は、次の式2−2によって計算される。
通信パケット長=[{S+(初期化ベクタ長)
+(ESPトレーラパディング長さフィールド長)
+(ESPトレーラ次ヘッダ番号フィールド長)
}÷(ESP暗号化ブロック長)
]×(ESP暗号化ブロック長)
+(外部IPヘッダ長)
+(ESPヘッダ長)
+(ESP認証データ長) ・・・(式2−2)
但し、初期化ベクタ長は、存在しない場合は0である。
次に、AH及びESPを共に適用するトンネルモードの場合では、最大パケット長は、次の式2−3によって計算される。
通信パケット長=[{S+(初期化ベクタ長)
+(ESPトレーラパディング長さフィールド長)
+(ESPトレーラ次ヘッダ番号フィールド長)
}÷(ESP暗号化ブロック長)
]×(ESP暗号化ブロック長)
+(外部IPヘッダ長)
+(AHヘッダ長)
+(ESPヘッダ長)
+(ESP認証データ長) ・・・(式2−3)
但し、AHヘッダ長は、AH認証データを含むものであり、12バイト+AH認証データ長であり、初期化ベクタ長は、存在しない場合は0である。なお、IPv4のIPヘッダ長は、20バイトの固定長として計算している。また、当然のことながら、トランスポートモードでもトンネルモードでもAH及びESPを共に適用しない場合におけるパケット長は、IPsec自体が非適用となるから、Sである。
上述の具体的な場合ごとに式1−1、式1−2、式1−3、式2−1、式2−2又は式2−3を適用すると、表1乃至表8のようになる。表1及び表2は、IPv4トランスポートモードの場合におけるパケット長を求める計算式を示す表である。表3及び表4は、IPv6トランスポートモードの場合におけるパケット長を求める計算式を示す表である。表5及び表6は、IPv4−IPv4及びIPv6−IPv4トンネルモードの場合におけるパケット長を求める計算式を示す表である。表7及び表8は、IPv4−IPv6及びIPv6−IPv6トンネルモードの場合におけるパケット長を求める計算式を示す表である。
ここで、表1乃至表8には、ESPを適用しない場合(ESP無)に、ESPを適用する場合(ESP有)であって暗号化アルゴリズムの種類別(暗号:暗号化アルゴリズムの種類名)ごとに、及び、ESPを適用する場合であって認証データのサイズ別(認証:ICV サイズ(64ビット、96ビット、128ビット))ごとに、それぞれ、AHの適用が無い場合(AH無)、AHが適用され認証データのサイズが64ビットの場合(AH有 ICV 64ビット)、AHが適用され認証データのサイズが96ビットの場合(AH有 ICV 96ビット)、及び、AHが適用され認証データのサイズが128ビットの場合(AH有 ICV 128ビット)に対応する最大通信パケット長を計算する計算式が対応する各欄にそれぞれ示されている。さらに、表1乃至表8の各欄には、計算式に加えてS=1500バイトの場合における当該計算式による例も記載されている。なお、表1乃至表4では、IVの無い64ビット(ビット)ブロック暗号は、「IV無64ビット」と略記され、IVの有る64ビットブロック暗号は、「IV有64ビット」と略記され、IVの無し128ビットブロック暗号は、「IV無128ビット」と略記され、そして、IVの有り128ビットブロック暗号は、「IV有128ビット」と略記されている。
例えば、表1において、IPv4トランスポートモードの場合であって、ESPは、IVの有る128ビットかつ認証データ(ICV)なしであり、AHは、認証データ(ICV)のサイズが64ビットである場合では、最大通信パケット長は、[(S−2)÷16]×16+48によって計算され、S=1500バイトの場合には1552バイトである。また例えば、表3において、IPv6トランスポートモードの場合であって、ESPは、IVの有る128ビットかつ認証データ(ICV)なしであり、AHは、認証データ(ICV)のサイズが64ビットである場合では、最大通信パケット長は、[(S−22)÷16]×16+68によって計算され、S=1500バイトの場合には1564バイトである。また例えば、表5において、IPv4−IPv4及びIPv6−IPv4トンネルモードの場合であって、ESPは、IVの有る128ビットかつ認証データ(ICV)なしであり、AHは、認証データ(ICV)のサイズが64ビットである場合では、最大通信パケット長は、[(S+18)÷16]×16+48によって計算され、S=1500バイトの場合には1568バイトである。そして、また例えば、表7において、IPv4−IPv6及びIPv6−IPv6トンネルモードの場合であって、ESPは、IVの有る128ビットかつ認証データ(ICV)ないであり、AHは、認証データ(ICV)のサイズが64ビットの場合では、最大通信パケット長は、[(S+2)÷16]×16+84によって計算され、S=1500バイトの場合には1588バイトである。
パケット長計算式記憶部41には、表1乃至表8に示す各欄の各計算式がIPのバージョンの種類、IPsecのIPsecプロトコルモードの種類、ESPの暗号化アルゴリズムの種類、ESPの認証データのサイズ及びAHの認証データのサイズに対応付けて記憶されている。
SPDは、IP通信パケットの処理方法とIP通信パケットを特定するための情報(セレクタ)とを対応付けて登録するデータベースである。セレクタは、セキュリティポリシ番号、送信元IPアドレス範囲、宛先IPアドレス範囲、送信元ポート番号範囲、宛先ポート番号範囲、トランスポート層プロトコルであり、これらの組み合わせに対応付けて入出力の方向、アクション、セキュリティプロトコル、セキュリティプロトコルのパラメータ、ポリシレベル等のポリシが登録されている。IP通信パケットの処理方法は、IP通信パケットの破棄、IPsec不適用の通過及びIPsec適用の通過である。
SADは、通信パケットにIPsecを適用する場合に必要となる情報を登録したデータベースであり、IPsecルータ装置11がトンネル12の接続先のIPsecルータ装置11との間で、IKE(Internet Key Exchange)を用いて暗号化アルゴリズム及び認証アルゴリズムのそれぞれについて、提示、決定及び暗号鍵の交換等を行うネゴシエーションを実行して決定したSAを登録するデータベースである。SAは、接続元から接続先及び接続先から接続元のそれぞれについて確立される。SAのパラメータの種類は、IPsecプロトコルの種類(AH、ESP)、SAを識別するためのSPI(Security Parameter Index、セキュリティパラメータインデックス)、送信元IPアドレス範囲、宛先IPアドレス範囲、送信元ポート番号範囲、宛先ポート番号範囲、トランスポート層プロトコル、セキュリティプロトコル、プロトコルモード、シーケンス番号、シーケンス番号オーバフローフラグ、SAの有効期限、認証アルゴリズム、認証鍵、暗号化アルゴリズム、暗号化鍵等である。
なお、各種情報や各種プログラムが記憶部23に記憶されていない場合には、これら各種情報や各種プログラムは、これらを記録したCD−ROMやDVD−ROM等の記録媒体を用いて図略のドライブ装置を介してインストールされたり、これら各種情報や各種プログラムを管理するサーバからネットワーク1を介してダウンロードされることによってインストールされたりしてもよい。
制御部22は、各種プログラムを実行することによって通信パケットのルーティングやIPsecを適用して通信パケットを送信する場合にIPsecを適用した通信パケットが通信経路の途中でIPフラグメンテーションされない範囲における最大のオリジナルな通信パケットのパケット長の計算等を行ってIPsecルータ装置11全体を制御するものであり、機能的に、通信パケットのルーティングを行うルーティング部31、IPsecを適用して通信パケットを送信する場合にIPsecを適用した通信パケットが通信経路の途中でIPフラグメンテーションされない範囲における最大のオリジナルな通信パケットのパケット長を計算する最大パケット長計算部32、LAN側IF部21のMTU値の設定を行うMTU設定部33、及び、通信パケットにIPsecを適用する処理を行うIPsec処理部34を備える。制御部22は、例えば、マイクロプロセッサ及びその周辺回路等を備えて構成される。
本実施形態に係るIPsecルータ装置11は、トンネルモードの場合は同時に複数のトンネルが設定可能であり、さらにLAN側IF部21と制御部22との間に論理的なインターフェースである複数の論理IF部25を生成することによって、トランスポートモードの場合に複数のトンネルが設定可能に構成され、この論理IF部25を生成する場合はさらにトンネルモード、トランスポートモード共に、各トンネルごとに異なるMTU値を設定可能に構成されている。これら複数の論理IF部25は、生成した論理IF部25に付与された識別子である論理IFデバイス名ごとに管理される。そして、トンネルが同時に複数設定されている場合には、制御部22は、各トンネルを時分割で運用する。
次に、本実施形態に係る、IPsecを適用した通信においてIPsecを適用する前のオリジナルな通信パケットのパケット長をPMTUの範囲で可能な限り最大に最適化する最大パケット長最適化動作について説明する。
図5乃至図8は、最大パケット長計算部の動作を示すフローチャート(その1乃至その4)である。
ルーティング部31は、トンネル12を用いて接続先のIPsecルータ装置11にIPsecを適用して通信パケットを送信する場合に、最大パケット長計算部32に当該通信パケットのパケット長を計算させる。
図5乃至図8において、最大パケット長計算部32は、WAN側IF部26の設定及び本フローチャートの適用対象であるトンネルに対応するSPDに格納されたSPの設定を参照することによってWAN側IF部26のIPの種別(IPのバージョン)を検出する(S11)。
検出の結果、IPの種別がIPv4である場合(IPv4)には、最大パケット長計算部32は、MinWMTUをIPv4のMTUにおける最小値に、WIHLを最小のIPv4ヘッダ長に、WFHLを0にそれぞれ設定する(S12)。ここで、MinWMTUは、WAN側IF部26におけるメディア規定のMTUの最小値であり、IPv4の場合では68バイトであり、IPv6の場合では1280バイトである。WIHLは、WAN側IF部26におけるIPの種別に応じたIPヘッダ長であり、IPv4の場合では20バイトであり、IPv6の場合では40バイトである。なお、IPv4の場合は、オプションが無い場合の最小のヘッダ長としている。WFHLは、WAN側IF部26におけるIPの種別に応じたフラグメントヘッダ長であり、IPv4の場合では0バイトであり、IPv6の場合では8バイトである。なお、IPv4の場合は、これが存在しないため、0としている。また、上記各値は、本特許出願の時点における最新の仕様に基づいた値である。
次に、最大パケット長計算部32は、入力部24からの設定に基づいてPMTU探索を使用するか否かを判断する(S13)。判断の結果、PMTU探索を使用する場合(YES)には、最大パケット長計算部32は、PMTU探索を実行し、PMTU探索で得られたPMTUの値をWMTUとし(S14)、後述の処理S21を実行する。一方、判断の結果、PMTU探索を使用しない場合(NO)には、最大パケット長計算部32は、WAN側IF部26におけるLink・MTU(リンク・MTU)の値をWMTUとし(S17)、処理S21を実行する。ここで、WMTUは、WAN側IF部26におけるMTUの値である。
一方、処理S11における検出の結果、IPの種別がIPv6である場合(IPv6)には、最大パケット長計算部32は、MinWMTUをIPv6のMTUにおける最小値に、WIHLを最小のIPv6ヘッダ長に、WFHLをフラグメントヘッダ長にそれぞれ設定する(S15)。そして、最大パケット長計算部32は、PMTU探索を実行し、PMTU探索で得られたPMTUの値をWMTUとし(S16)、後述の処理S21を実行する。
処理S21において、最大パケット長計算部32は、WMTU<MinWMTUであるか否かを判断する。判断の結果、WMTU<MinWMTUである場合(YES)には、WMTU、即ち、WAN側IF部26におけるMTUの値が不正であるか、あるいは、経路のPMTUの値が不正であるので、最大パケット長計算部32は、パケット長の計算を中断し、本処理を終了する。一方、判断の結果、WMTU≧MinWMTUである場合(NO)には、WMTUは正常であるので、最大パケット長計算部32は、LAN側IF部21におけるIPの種別(IPのバージョン)を検出する(S22)。
検出の結果、IPの種別がIPv4である場合(IPv4)には、最大パケット長計算部32は、MinLMTUをIPv4のMTUにおける最小値に設定し(S23)、後述の処理S31を実行する。ここで、MinLMTUは、LAN側IF部21におけるMTUの最小値であり、IPv4の場合では68バイトであり、IPv6の場合では1280バイトである。なお、この値は、本特許出願の時点における最新の仕様に基づいた値である。一方、検出の結果、IPの種別がIPv6である場合(IPv6)には、最大パケット長計算部32は、MinLMTUをIPv6のMTUにおける最小値に設定し(S24)、処理S31を実行する。
処理S31において、最大パケット長計算部32は、ルーティング部31が送信しようとしている通信パケットに適用するIPsecにおけるIPsecプロトコルモードの種別をSPD記憶部42におけるSPDを参照することによって取得する。
次に、最大パケット長計算部32は、当該通信パケットに適用するIPsecにおけるESP及びAHの暗号化アルゴリズムの種別及び認証アルゴリズムの種別をSAD記憶部43におけるSADを参照することによって取得する(S32)。
次に、最大パケット長計算部32は、収集したWAN側インターフェース部26のIPの種別(バージョン)、IPsecにおけるプロトコルモードの種別、ESPの暗号化アルゴリズムの種別、ESPの認証アルゴリズムの種別及びAHの認証アルゴリズムの種別に基づいてパケット長計算式記憶部41の記憶内容を参照することによって、最大パケット長を計算する計算式を取得する(S33)。
次に、最大パケット長計算部32は、IPvx−IPvyの論理IF部25を使用するか否かを判断する(S34)。
判断の結果、IPvx−IPvyの論理IF部25を使用しない場合(NO)には、最大パケット長計算部32は、後述の処理S61を実行する。一方、判断の結果、IPvx−IPvyの論理IF部25を使用する場合(YES)には、最大パケット長計算部32は、使用するIPvx−IPvyの論理IF部25の種別を判別する(S41)。
判断の結果、使用するIPvx−IPvyの論理IF部25の種別がIPv4−IPv4又はIPv6−IPv4である場合(IPvx−IPv4(xは4又は6))には、最大パケット長計算部32は、VIHLを最小のIPv4ヘッダ長に設定し(S42)、後述の処理S44を実行する。一方、判断の結果、使用するIPvx−IPvyの論理IF部25の種別がIPv4−IPv6又はIPv6−IPv6である場合(IPvx−IPv6(xは4又は6))には、最大パケット長計算部32は、VIHLをIPv6ヘッダ長に設定し(S43)、後述の処理S44を実行する。ここで、VIHLは、IPvx−IPvyの論理IF部25におけるトンネル外部のIPの種別に応じたIPヘッダ長であり、IPv4の場合では20バイトであり、IPv6の場合では40バイトである。なお、これら各値は、本特許出願の時点における最新の仕様に基づいた値である。
処理S44において、最大パケット長計算部32は、処理S33で取得した計算式による算出値がWMTU以下であって最大となるカプセル化前のパケット長S(IPsecが適用される前のオリジナルな通信パケットのパケット長S)を算出する。そして、最大パケット長計算部32は、算出したこの最大のIPsec適用前のパケットにおけるパケット長SからVIHLを減算し、この減算した値をLMTUとする。
次に、最大パケット長計算部32は、LMTU<MinLMTUであるか否かを判断する(S45)。判断の結果、LMTU≧MinLMTUである場合(NO)には、最大パケット長計算部32は、後述の処理S49を実行する。一方、判断の結果、LMTU<MinLMTUである場合(YES)には、最大パケット長計算部32は、処理S33で取得した計算式による算出値が(n(WMTU−WIHL−WFHL)+WIHL)以下であって最大となるカプセル化前のパケット長S(IPsecが適用される前のオリジナルな通信パケットのパケット長S)を算出する。そして、最大パケット長計算部32は、算出したこの最大のパケット長SからVIHLを減算し、この減算した値をLMTUとする(S46)。ここで、nは、LMTUがMinLMTU以上となる+2以上の最小の整数である。
次に、最大パケット長計算部32は、LMTU>(LAN側IF部21のメディアにおける規定MTUの最大値)であるか否かを判断する(S47)。判断の結果、LMTU≦(LAN側IF部21のメディアにおける規定MTUの最大値)である場合(NO)には、最大パケット長計算部32は、処理S49を実行する。一方、判断の結果、LMTU>(LAN側IF部21のメディアにおける規定MTUの最大値)である場合(YES)には、最大パケット長計算部32は、LAN側IF部21のメディアにおける規定MTUの最大値をLMTUに設定し(S48)、処理S49を実行する。
処理S49において、最大パケット長計算部32は、IPvx−IPvyの論理IF部25におけるMTUの値をLMTUに設定する。
次に、最大パケット長計算部32は、LAN側IF部21のMTU<LMTUであるか否かを判断する(S50)。判断の結果、LAN側IF部21のMTU≧LMTUである場合(NO)には、最大パケット長計算部32は、本処理を終了する。一方、判断の結果、LAN側IF部21のMTU<LMTUである場合(YES)には、最大パケット長計算部32は、LAN側IF部21のMTU値をMTU設定部33を介してLMTUに設定し(S51)、本処理を終了する。
一方、処理S34の判断の結果、IPvx−IPvyの論理IF部25を使用しない場合(NO)には、最大パケット長計算部32は、処理S33で取得した計算式による算出値がWMTU以下であって最大となるカプセル化前のパケット長S(IPsecが適用される前のオリジナルな通信パケットのパケット長S)を算出する(S61)。
次に、最大パケット長計算部32は、LMTU<MinLMTUであるか否かを判断する(S62)。判断の結果、LMTU≧MinLMTUである場合(NO)には、最大パケット長計算部32は、後述の処理S66を実行する。一方、判断の結果、LMTU<MinLMTUである場合(YES)には、最大パケット長計算部32は、処理S33で取得した計算式による算出値が(n(WMTU−WIHL−WFHL)+WIHL)以下であって最大となるカプセル化前のパケット長S(IPsecが適用される前のオリジナルな通信パケットのパケット長S)を算出し、この算出した値をLMTUとする(S63)。ここで、nは、LMTUがMinLMTU以上となる+2以上の最小の整数である。
次に、最大パケット長計算部32は、LMTU>(LAN側IF部21のメディアにおける規定MTUの最大値)であるか否かを判断する(S64)。判断の結果、LMTU≦(LAN側IF部21のメディアにおける規定MTUの最大値)である場合(NO)には、最大パケット長計算部32は、処理S66を実行する。一方、判断の結果、LMTU>(LAN側IF部21のメディアにおける規定MTUの最大値)である場合(YES)には、最大パケット長計算部32は、LAN側IF部21のメディアにおける規定MTUの最大値をLMTUに設定し(S65)、処理S66を実行する。
処理S66において、最大パケット長計算部32は、LAN側IF部21のMTU>LMTUであるか否かを判断する。判断の結果、LAN側IF部21のMTU≦LMTUである場合(NO)には、最大パケット長計算部32は、本処理を終了する。一方、判断の結果、LAN側IF部21のMTU>LMTUである場合(YES)には、最大パケット長計算部32は、LAN側IF部21のMTU値をMTU設定部33を介してLMTUに設定し(S67)、本処理を終了する。
そして、ルーティング部31は、IPsecが適用される前のオリジナルな通信パケットが、LAN側IF部21又は論理IF部に新たなMTUの値が設定されたことで、パケット長は、この値以下になっているので、この通信パケットにIPsec処理部34でIPsecを適用して接続先のIPsecルータ装置11に送信する。
このように動作することによって、本実施形態に係るIPsecルータ装置11は、IPsecを適用したIPvx−IPvyトンネル12を用いて通信パケットを送信する場合において、当該通信パケットに適用されるIPのバージョン、IPsecのIPsecプロトコルモード、ESPの暗号化アルゴリズム、ESPの認証データのサイズ及びAHの認証データのサイズに応じて、当該通信パケットのパケット長を最適にすることができる。また、IPフラグメンテーションが行われないので、IPvx−IPv6トンネルの場合でも通信ができないといった事態を避けることができる。そして、IPフラグメンテーションの処理を実行する処理時間が不要となるため、データ転送効率が向上する。そして、IPフラグメンテーションの処理が不要であるのでルータ装置に負担をかけることがない。さらに、フラグメント化によるデータグラムの喪失もないので元のデータを全て送り直す事態も生じない。
次に、本発明を適用した場合と適用しない場合との比較を具体例を示しつつ説明する。
図9は、一具体例のトンネルにおける本発明を適用した通信パケットのパケット長の最適化の様子を説明する図である。図9(A)は、オリジナルな通信パケットを示し、図9(B)は、カプセル化後の通信パケット(トンネル適用)を示し、図9(C)は、通信経路を伝送中における通信パケットの様子を示す。図10は、一具体例のトンネルにおける本発明を適用しない通信パケットのパケット長の最適化の様子を説明する図である。図10(A)は、オリジナルな通信パケットを示し、図10(B)は、カプセル化後の通信パケット(トンネル適用)を示し、そして、図10(C)は、通信経路を伝送中における通信パケットの様子を示す。
まず、第1に、例えば、IPsecを適用したIPv6−IPv6トンネルを用いてトンネルモードでTCP接続により合計10000バイトのデータを連続して送信する場合について説明する。ここで、ESPの暗号化アルゴリズムは、DESのECBモード(即ち、IV無し64ビットブロック暗号)であり、ESPの認証方式及びAHの認証方式は、HMAC−MD5(即ち、認証データのサイズが96ビット)であるとする。また、LAN側IF部21及びWAN側IF部26は、以下の具体例も同様に、イーサネットカードであるとする。即ち、LAN側IF部21及びWAN側IF部26のMTUは、1500バイトである。
このような場合において本発明を適用する場合では、表4における計算式[(S+2)÷8]×8+84が用いられることとなり、最大パケット長計算部32は、図5乃至図8に示す処理S11乃至処理S67を実行することによって、[(S+2)÷8]×8+84=1500が解かれ、IPsecを適用する前のオリジナルな通信パケットのパケット長S=1414を計算することとなる。IPv6ヘッダを収容するIPv6ヘッダ部が40バイトであり、TCPヘッダを収容するTCPヘッダ部が20バイトであるから、データを収容するデータ部は、1354バイトと計算される。
よって、図9(A)に示すように、合計10000バイトのデータは、40バイトのIPv6ヘッダ部111、20バイトのTCPヘッダ部112及び1354バイトのデータ部113からなる1414バイトの通信パケット101が7個、そして、40バイトのIPv6ヘッダ部111、20バイトのTCPヘッダ部112及び522バイトのデータ部113’からなる582バイトの通信パケット101’が1個となる。これら7個の通信パケット101と1個の通信パケット101’の総バイト数は、10480バイトである。なお、イーサフレームを含めると総バイト数は、10624バイトである。
このため、図9(B)に示すように、7個の1414バイトの各通信パケット101は、カプセル化後、40バイトのIPv6ヘッダ部121、AHを収容する24バイトのAHヘッダ部122、ESPヘッダを収容する8バイトのESPヘッダ部123、1414バイトの通信パケット101が暗号化され収容される1416バイトの暗号化ペイロード部124及び認証データが収容される12バイトの認証データ部125からなる1500バイトの通信パケット102になる。そして、1個の582バイトの通信パケット101’は、カプセル化後、40バイトのIPv6ヘッダ部121、24バイトのAHヘッダ部122、8バイトのESPヘッダ部123、582バイトの通信パケット101’が暗号化され収容される584バイトの暗号化ペイロード部124’及び12バイトの認証データ部125からなる668バイトの通信パケット102’になる。カプセル化後におけるこれら7個の通信パケット102と1個の通信パケット102’の総バイト数は、11168バイトである。なお、イーサフレームを含めると総バイト数は、11312バイトである。
従って、カプセル化後の図9(B)に示す各通信パケット102、102’は、図9(C)に示すように、IPv6−IPv6トンネルを伝送中においてIPフラグメンテーションが行われない。
一方、上述の場合において本発明が適用されない場合には、図10(A)に示すように、合計10000バイトのデータは、40バイトのIPv6ヘッダ部131、20バイトのTCPヘッダ部132及び1440バイトのデータ部133からなる1500バイトの通信パケット103が6個、そして、40バイトのIPv6ヘッダ部131、20バイトのTCPヘッダ部132及び1360バイトのデータ部133’からなる1420バイトの通信パケット103’が1個になる。これら6個の通信パケット103と1個の通信パケット103’の総バイト数は、10420バイトである。なお、イーサフレームを含めると総バイト数は、10546バイトである。
このため、図10(B)に示すように、6個の1500バイトの各通信パケット103は、カプセル化後、40バイトのIPv6ヘッダ部141、24バイトのAHヘッダ部142、8バイトのESPヘッダ部143、1500バイトの通信パケット103が暗号化され収容される1504バイトの暗号化ペイロード部144(2バイトのパディングデータ145を含む)及び12バイトの認証データ部146からなる1588バイトの通信パケット104になる。そして、1個の1420バイトの通信パケット103’は、カプセル化後、40バイトのIPv6ヘッダ部141、24バイトのAHヘッダ部142、8バイトのESPヘッダ部143、1420バイトの通信パケット103’が暗号化され収容される1424バイトの暗号化ペイロード部144’(2バイトのパディングデータ145を含む)及び12バイトの認証データ部146からなる1508バイトの通信パケット104’になる。
従って、図10(C)に示すように、各通信パケット104、104’は、IPフラグメンテーションが行われる。即ち、6個の1588バイトの各通信パケット104は、1452バイトのフラグメント断片#1と、96バイトのフラグメント断片#2にフラグメント化され、1個の1508バイトの通信パケット104’は、1452バイトのフラグメント断片#3と、16バイトのフラグメント断片#4にフラグメント化される。そして、各フラグメント断片#1〜#4に40バイトのIPv6ヘッダ部151及びフラグメントヘッダ収容する8バイトのフラグメントヘッダ部152が付加され、それぞれ通信パケット105、105’、105”、105”’となる。これら通信パケット105、105’、105”、105”’の総バイト数は、11428バイトである。なお、イーサフレームを含めると総バイト数は、11680バイトである。
以上より、上述の場合において、本発明を適用した場合と本発明を適用しない場合とを比較すると、通信パケットのパケット長が最大に最適化されることにより、11428−11168=260バイトだけ伝送すべきバイト数が少なくなり、データ転送効率が向上する。なお、イーサフレームまで考慮した場合では、11680−11312=368バイトだけ伝送すべきバイト数が少なくなる。一方、無駄は、本発明を適用した場合では無いが、本発明を適用しない場合では、断片化されたパケットが本来送信可能な大きさのパケットのサイズより小さいことによるものが1356×6=8136バイトと、送信されるデータ内部にESPのパディングフィールドを含むことによるものが2×6+2=14バイトの合計8150バイトである。
図11は、他の具体例のトンネルにおける本発明を適用した通信パケットのパケット長の最適化の様子を説明する図である。図11(A)は、オリジナルな通信パケットを示し、図11(B)は、カプセル化(IPv6−IPv4トンネル適用後、IPsecIPv4トランスポートモード)後の通信パケット(トンネル適用)を示し、そして、図11(C)は、通信経路を伝送中における通信パケットの様子を示す。図12は、他の具体例のトンネルにおける本発明を適用しない通信パケットのパケット長の最適化の様子を説明する図である。図12(A)は、オリジナルな通信パケットを示し、図12(B)は、カプセル化後の通信パケット(トンネル適用)を示し、そして、図12(C)は、通信経路を伝送中における通信パケットの様子を示す。
次に、第2に、例えば、IPsecを適用したIPv6−IPv4トンネルを用いてIPv4のトランスポートモードでTCP接続により合計10000バイトのデータを連続して送信する場合について説明する。ここで、ESPの暗号化アルゴリズムは、DESのECBモード(即ち、IV無し64ビットブロック暗号)であり、ESPの認証方式及びAHの認証方式は、HMAC−MD5(即ち、認証データのサイズが96ビット)であるとする。
このような場合において本発明を適用する場合では、表1における計算式[(S−18)÷8]×8+64が用いられることとなり、最大パケット長計算部32は、図5乃至図8に示す処理S11乃至処理S67を実行することによって、[(S−18)÷8]×8+64=1500が解かれ、S=1430を計算することとなる。IPv6ヘッダ部の40バイト及びTCPヘッダ部の20バイトが差し引かれ、データ部は、1370バイトと計算される。
よって、図11(A)に示すように、合計10000バイトのデータは、40バイトのIPv6ヘッダ部211、20バイトのTCPヘッダ部212及び1370バイトのデータ部213からなる1430バイトの通信パケット201が7個、そして、40バイトのIPv6ヘッダ部211、20バイトのTCPヘッダ部212及び410バイトのデータ部213’からなる470バイトの通信パケット201’が1個となる。これら7個の通信パケット201と1個の通信パケット201’の総バイト数は、10480バイトである。なお、イーサフレームを含めると総バイト数は、10624バイトである。
このため、図11(B)に示すように、7個の1430バイトの各通信パケット201は、カプセル化(IPv6−IPv4トンネル適用後、IPsecIPv4トランスポートモード)後、20バイトのIPv4ヘッダ部221、24バイトのAHヘッダ部222、8バイトのESPヘッダ部223、1430バイトの通信パケット201が暗号化され収容される1432バイトの暗号化ペイロード部224及び12バイトの認証データ部225からなる1496バイトの通信パケット202になる。そして、1個の470バイトの通信パケット201’は、カプセル化後、20バイトのIPv4ヘッダ部221、24バイトのAHヘッダ部222、8バイトのESPヘッダ部223、470バイトの通信パケット201’が暗号化され収容される472バイトの暗号化ペイロード部224’及び12バイトの認証データ部225からなる536バイトの通信パケット202’になる。カプセル化後におけるこれら7個の通信パケット202と1個の通信パケット202’の総バイト数は、11008バイトである。なお、イーサフレームを含めると総バイト数は、11152バイトである。
従って、カプセル化後の図11(B)に示す各通信パケット202、202’は、図11(C)に示すように、IPv6−IPv4トンネルを伝送中においてIPフラグメンテーションが行われない。
一方、上述の場合において本発明が適用されない場合には、図12(A)に示すように、合計10000バイトのデータは、40バイトのIPv6ヘッダ部231、20バイトのTCPヘッダ部232及び1440バイトのデータ部233からなる1500バイトの通信パケット203が6個、そして、40バイトのIPv6ヘッダ部231、20バイトのTCPヘッダ部232及び1360バイトのデータ部233’からなる1420バイトの通信パケット203’が1個になる。これら6個の通信パケット203と1個の通信パケット203’との総バイト数は、10420バイトである。なお、イーサフレームを含めると総バイト数は、10546バイトである。
このため、図12(B)に示すように、6個の1500バイトの各通信パケット203は、カプセル化後、20バイトのIPv4ヘッダ部241、24バイトのAHヘッダ部242、8バイトのESPヘッダ部243、1500バイトの通信パケット203が暗号化され収容される1504バイトの暗号化ペイロード部244(2バイトのパディングデータ245を含む)及び12バイトの認証データ部246からなる1568バイトの通信パケット204になる。そして、1個の1420バイトの通信パケット203’は、カプセル化後、20バイトのIPv4ヘッダ部241、24バイトのAHヘッダ部242、8バイトのESPヘッダ部243、1420バイトの通信パケット203’が暗号化され収容される1424バイトの暗号化ペイロード部244’(2バイトのパディングデータ245を含む)及び12バイトの認証データ部246からなる1488バイトの通信パケット204’になる。
従って、図12(C)に示すように、6個の1568バイトの各通信パケット204は、IPフラグメンテーションが行われる。即ち、6個の1568バイトの各通信パケット204は、1480バイトのフラグメント断片#1と、68バイトのフラグメント断片#2とにフラグメント化される。そして、各フラグメント断片#1、#2に20バイトのIPv4ヘッダ部251が付加され、それぞれ通信パケット205、205’となる。これら通信パケットの総バイト数は、11016バイトである。なお、イーサフレームを含めると総バイト数は、11250バイトである。
以上より、上述の場合において、本発明を適用した場合と本発明を適用しない場合とを比較すると、通信パケットのパケット長が最大に最適化されることにより、11016−11008=8バイトだけ伝送すべきバイト数が少なくなり、データ転送効率が向上する。なお、イーサフレームまで考慮した場合では、11250−11152=98バイトだけ伝送すべきバイト数が少なくなる。一方、無駄は、本発明を適用した場合では(1500-1496)×7=28バイトであるが、本発明を適用しない場合では、断片化されたパケットが本来送信可能な大きさのパケットのサイズより小さいことによるものが1412×6=8472バイトと、送信されるデータ内部にESPのパディングフィールドを含むことによるものが2×6+2=14バイトの合計8486バイトである。
図13は、他の具体例のトンネルにおける本発明を適用した通信パケットのパケット長の最適化の様子を説明する図である。図13(A)は、元の通信パケットを示し、図13(B)は、カプセル化後の通信パケット(トンネル適用)を示し、そして、図13(C)は、通信経路を伝送中における通信パケットの様子を示す。
次に、第3に、例えば、IPsecを適用したIPv6−IPv4トンネルを用いてIPv4のトランスポートモードでTCP接続により合計10000バイトのデータを連続して送信する場合について説明する。ここで、ESPの暗号化アルゴリズムは、AESのECBモード(即ち、IV無し64ビットブロック暗号)であり、ESPの認証方式及びAHの認証方式は、HMAC−MD5(即ち、認証データのサイズが96ビット)であるとする。
このような場合において本発明を適用する場合では、表1における計算式[(S−18)÷16]×16+64が用いられることとなり、最大パケット長計算部32は、図5乃至図8に示す処理S11乃至処理S67を実行することによって、[(S−18)÷16]×16+64=1500が解かれ、S=1422を計算することとなる。IPv6ヘッダ部の40バイト及びTCPヘッダ部の20バイトが差し引かれ、データ部は、1362バイトと計算される。
よって、図13(A)に示すように、合計10000バイトのデータは、40バイトのIPv6ヘッダ部311、20バイトのTCPヘッダ部312及び1362バイトのデータ部313からなる1422バイトの通信パケット301が7個、そして、40バイトのIPv6ヘッダ部311、20バイトのTCPヘッダ部312及び466バイトのデータ部313’からなる526バイトの通信パケット301’が1個となる。これら7個の通信パケット301と1個の通信パケット301’との総バイト数は、10480バイトである。なお、イーサフレームを含めると総バイト数は、10624バイトである。
このため、図13(B)に示すように、7個の1422バイトの各通信パケット301は、カプセル化(IPv6−IPv4トンネル適用後、IPsecIPv4トランスポートモード)後、20バイトのIPv4ヘッダ部321、24バイトのAHヘッダ部322、8バイトのESPヘッダ部323、1422バイトの通信パケット301が暗号化され収容される1424バイトの暗号化ペイロード部324及び12バイトの認証データ部325からなる1488バイトの通信パケット302になる。そして、1個の526バイトの通信パケット301’は、カプセル化後、20バイトのIPv4ヘッダ部321、24バイトのAHヘッダ部322、8バイトのESPヘッダ部323、526バイトの通信パケット301’が暗号化され収容される528バイトの暗号化ペイロード部324’及び12バイトの認証データ部325からなる592バイトの通信パケット302’になる。カプセル化後におけるこれら7個の通信パケット302と1個の通信パケット302’との総バイト数は、11008バイトである。なお、イーサフレームを含めると総バイト数は、11152バイトである。
従って、カプセル化後の図13(B)に示す各通信パケット302、302’は、図13(C)に示すように、IPv6−IPv4トンネルを伝送中においてIPフラグメンテーションが行われない。
一方、上述の場合において本発明が適用されない場合には、図12に示す各場合と同様であるので、その説明を省略する。
以上より、上述の場合において、本発明を適用した場合と本発明を適用しない場合とを比較すると、通信パケットのパケット長が最大に最適化されることにより、11016−11008=8バイトだけ伝送すべきバイト数が少なくなり、データ転送効率が向上する。なお、イーサフレームまで考慮した場合では、11250−11152=98バイトだけ伝送すべきバイト数が少なくなる。一方、無駄は、本発明を適用した場合では(1500−1488)×7=84バイトであるが、本発明を適用しない場合では、断片化されたパケットが本来送信可能な大きさのパケットのサイズより小さいことによるものが1412×6=8472バイトと、送信されるデータ内部にESPのパディングフィールドを含むことによるものが2×6+2=14バイトの合計8486バイトである。
なお、上述の実施形態では、IPsecルータ装置11は、1個の物理的なWAN側IF部26を備える構成について説明したが、複数個の物理的なWAN側IF部26を備えることによって複数の他のIPsecルータ装置11へ複数のIPvx−IPvyトンネルをそれぞれ同時に設定するように構成してもよい。
図14は、複数のWAN側インターフェース部を備えるIPsecルータ装置を含むネットワークの構成を示すブロック図である。
図14において、IPsecルータ装置11’は、LAN側IF部21と、制御部22と、記憶部23と、入力部24と、論理IF部25と、複数のWAN側IF部26(26−0、26−1、・・・、26−n)とを備えて構成される。これらLAN側IF部21、制御部22、記憶部23、入力部24、論理IF部25及びWAN側IF部26は、WAN側IF部26が複数であって各WAN側IF部26−0、26−1、・・・、26−nを識別するための識別子である物理IFデバイス名が各WAN側IF部26−0、26−1、・・・、26−nにそれぞれ付与され。この物理IFデバイス名に基づいてWAN側IF部26ごとに最大パケット長最適化動作を行うことを除き、上述したLAN側IF部21、制御部22、記憶部23、入力部24、論理IF部25及びWAN側IF部26とそれぞれ同様であるので、その説明を省略する。また、最大パケット長最適化動作は、各WAN側IF部26−0、26−1、・・・、26−nに対して上述と同様に行えばよいので、その説明を省略する。
そして、上述の実施形態において、例えば、動的ルーティング(ダイナミックルーティング)を採用している場合等のように、通信経路における最大パケット長が動的に変化する場合にその変化に対応することができるようにする観点から、上述の最大パケット長最適化動作を定期的に実行することが好ましい。
さらに、上述の実施形態では、IPsecを利用可能なIPsecルータ装置の場合について説明したが、これに限定されるものではなく、例えば、通信パケットのルーティングを行うルーティング機能に加えてプロトコル変換を行う機能をさらに備えてもよい。