(57)【要約】【課題】送信動作完了までの処理時間を短縮する。【解決手段】メモリ１１は、送信対象のパケットのデータを記憶する。チェックサム算出部１２は、チェックサム格納領域を含むフラグメントを除いた他の複数のフラグメントにおけるそれぞれのデータをメモリ１１から読み出して順次累積的に加算してチェックサム値を算出し、さらにチェックサム格納領域を含むフラグメントのデータをメモリ１１から読み出してチェックサム値に加算して得られた最終チェックサム値を算出する。送信部１３は、チェックサム算出部１２によってチェックサム値が算出された、メモリ１１から読み出されてなるフラグメントを順次送信し、最後に最終チェックサム値をチェックサム格納領域に格納して得られるチェックサム格納領域を含む、メモリ１１から読み出されてなるフラグメントの送信を行う。【選択図】図１
2008301210.tif 000002
【特許請求の範囲】
【請求項１】
ヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割して送信するパケット送信装置であって、
前記パケットのデータを記憶する記憶部と、
前記チェックサム格納領域を含むフラグメントを除いた他の複数のフラグメントにおけるそれぞれのデータを前記記憶部から読み出して順次累積的に加算してチェックサム値を算出し、さらに前記チェックサム格納領域を含むフラグメントのデータを前記記憶部から読み出して前記チェックサム値に加算して得られた最終チェックサム値を算出するチェックサム算出部と、
前記チェックサム算出部によってチェックサム値が算出された、前記記憶部から読み出されてなるフラグメントを順次送信し、最後に前記最終チェックサム値を前記チェックサム格納領域に格納して得られる前記チェックサム格納領域を含む、前記記憶部から読み出されてなるフラグメントの送信を行う送信部と、
前記パケットのデータを前記記憶部から読み出して前記チェックサム算出部および前記送信部に与えるように制御する制御部と、
を備えることを特徴とするパケット送信装置。
【請求項２】
前記制御部は、前記送信部がフラグメントを順次送信した後に、擬似ヘッダを生成して前記記憶部に書き込み、前記擬似ヘッダを前記チェックサム値の累積加算の対象とするように前記チェックサム算出部を制御することを特徴とする請求項１記載のパケット送信装置。
【請求項３】
前記制御部は、予め擬似ヘッダを生成して前記記憶部に書き込んでおき、前記擬似ヘッダを前記チェックサム値の累積加算の初期値とするように前記チェックサム算出部を制御することを特徴とする請求項１記載のパケット送信装置。
【請求項４】
前記制御部は、前記記憶部におけるアクセス位置を表すポインタを備え、該ポインタを更新して前記チェックサム算出部の演算対象となるデータおよび前記送信部の送信対象となるデータへのアクセスを制御することを特徴とする請求項２または３記載のパケット送信装置。
【請求項５】
ヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割して送信するパケット送信方法であって、
前記チェックサム格納領域を含むフラグメントを除いた他の複数のフラグメントにおけるそれぞれのデータを順次累積的に加算してチェックサム値を算出すると共に前記チェックサム値が算出されたフラグメントを順次送信するステップと、
最後に前記チェックサム格納領域を含むフラグメントのデータを前記チェックサム値に加算して得られた最終チェックサム値を前記チェックサム格納領域に格納して、前記チェックサム格納領域を含むフラグメントの送信を行うステップと、
を含むことを特徴とするパケット送信方法。
【請求項６】
前記フラグメントを順次送信するステップと前記チェックサム格納領域を含むフラグメントの送信を行うステップとの間に、擬似ヘッダを生成するステップをさらに含み、
前記擬似ヘッダを前記チェックサム値の累積加算の対象とすることを特徴とする請求項５記載のパケット送信方法。
【請求項７】
前記他の複数のフラグメントにおけるそれぞれのデータを順次累積的に加算する前に、予め擬似ヘッダを生成するステップをさらに含み、
前記擬似ヘッダを前記チェックサム値の累積加算の初期値とすることを特徴とする請求項５記載のパケット送信方法。
【請求項８】
パケットのヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割し前記パケットの送受信を行うネットワークプロトコルによるパケットの送信方法であって、
前記チェックサム格納領域を含むフラグメントを除いた他の前記複数のフラグメント各々のデータを順次累積的に加算してチェックサム値を算出し、チェックサムが算出された前記フラグメントを順次送信し、
最後にチェックサム格納領域を含む前記フラグメントのデータを前記チェックサム値に加算して得られた最終チェックサム値を前記チェックサム格納領域に格納して、前記チェックサム格納領域を含むフラグメントの送信を行うことを特徴とするパケットの送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット送信装置およびパケット送信方法に係り、特に、ヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割して送信する技術に係る。
【背景技術】
【０００２】
従来、ネットワーク・データを送受信する際には、データ誤りが発生したことを検出するために、誤り検出符号をデータに付加している。この代表的なプロトコルとして、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）といったプロトコルがＩＥＴＦ（Ｔｈｅ  Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ、ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／）において、ＲＦＣ７９３、ＲＦＣ７６８として規格化されている。これらのパケット形式は、チェックサム・フィールドを持っており、送信側が付与したチェックサムを受信側において確認することで誤り検出を行う。
【０００３】
図６は、ＴＣＰにおけるパケットフォーマットを表す図であり、図７は、ＵＤＰにおけるパケットフォーマットを表す図である。図６、図７で示すように、両プロトコルのフォーマットは、通信で必要とされる各種の制御情報をヘッダ内に格納し、ヘッダに後続してデータが存在する書式となっている。ヘッダ内に格納される制御情報のひとつに１６ビットのチェックサム・フィールドがある。このチェックサム・フィールドは、初期値として０が格納され、送信時に疑似ヘッダと呼ばれるデータを含めてパケットの全てに渡り加算によって求める値である。計算上に生じる桁上げ値は、最下位へ回され、巡回させて必ず１６ビットとなるように計算して求める。
【０００４】
以上のようなプロトコルが規格化された時代的背景としては、ミニコンでのソフトウェアによって処理することを前提として設計されており、誤り検出符号の一種であるチェックサム計算もソフトウェアによって処理していた。プロトコルが考案された当時は、ネットワークの通信速度が遅く、ソフトウェア処理でも充分であったと考えられる。
【０００５】
しかし、近年、光通信技術等の進展によってネットワークの高速化が進み、ソフトウェアによる処理だけでは、処理が間に合わなくなり、ハードウェアでの処理が必要となってきた。これらのプロトコルで用いられるチェックサム計算は、パケット内の全てのデータを計算対象とするために高速通信処理において大きな計算負荷となっている。そこでチェックサムの計算もハードウェアによって処理する必要性が生じてきた。
【０００６】
ところで、ＩＥＴＦでは、幾つかインターネットでのチェックサム計算について述べている。唯一ハードウェアでの計算に関し、非特許文献１において開示され、具体的なチェックサム回路がＰＬＤを用いて紹介されている。ここではチェックサム計算をハードウェアで高速計算するため、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）内に組み込むハードウェアとしてパイプライン並列処理で高速に計算している。
【０００７】
しかし、非特許文献１は、ＴＣＰ、ＵＤＰパケットに対する適用を前提としてはいるものの、ヘッダの格納領域への書き込みや送信動作までを含む具体的な構成までは示していない。実際の動作では、パケット内のヘッダ部にチェックサムの格納領域をもつため、一般にＤＭＡ転送と送信動作の兼用はうまく行かない。そこで、一旦全てのデータをＤＭＡ転送によってメモリから読み出してチェックサム計算を行い、ヘッダ領域にあるチェックサム格納領域に格納した上で、送信のために再度メモリに格納しているパケット・データを読み出すことになる。
【０００８】
次に、従来のパケット送信装置の構成について述べる。図８は、従来のパケット送信装置におけるメモリアクセス動作を模式的に示す図である。パケット送信装置は、パケットを格納するメモリ１０１と、パケット・データを読み出す位置を示すポインタ１０５と、メモリ１０１から読み出されたデータのチェックサムを計算するチェックサム算出部１０２から構成される。また、チェックサム算出部１０２は、チェックサム計算回路１０６と、計算結果保持回路１０７から構成される。図８では、１つのパケットを３つのフラグメントに分割する例を示している。先頭のフラグメントは、パケット・ヘッダのデータ１０１ｂと先頭のデータ（先頭フラグメント・パケット・データ）１０１ｃから構成される。２番目のフラグメントは、先頭データの続きとなるデータ１０１ｄから構成される。３番目のフラグメントは、最終フラグメント１０１ｅで構成される。さらに、メモリ１０１上において、パケット・ヘッダのデータ１０１ｂの前には、擬似ヘッダのデータ１０１ａが記録される。
【０００９】
次に、パケット送信の動作について説明する。図８の左側にメモリ１０１を指すポインタ１０５の移動順序を示す。ポインタ１０５は、データ１０１ａ、データ１０１ｂ、データ１０１ｃ、データ１０１ｄ、データ１０１ｅ、データ１０１ｂ、データ１０１ｃ、データ１０１ｄ、データ１０１ｅの順にそれぞれのデータの先頭から末尾に移動するように制御される。ただし、データ１０１ｅとデータ１０１ｂとのアクセス間には、データ１０１ｂにおけるチェックサム格納領域（チェックサム・フィールド）への書き込みのためのアクセスが存在する。
【００１０】
図９は、従来のパケット送信装置の動作を示すフローチャートである。なお、図８に示す丸で囲まれた１〜８と、図９のフローチャートに付した丸で囲まれた１〜８とは、同一の符号が対応するものとする。
【００１１】
図９のステップＳ１００において、パケットの送信を開始する。
【００１２】
ステップＳ１０１において、疑似ヘッダのデータ１０１ａの生成とメモリ１０１からの読み出しを行い、読み出された疑似ヘッダのデータ１０１ａは、チェックサム計算するためチェックサム計算回路１０６へ送られる。なお、疑似ヘッダのデータ１０１ａは、チェックサム計算回路１０６で使用するのみであり、送信データとしては扱わない。
【００１３】
次に、送信すべきヘッダを含むパケットのデータ１０１ｂ、１０１ｃ、１０１ｄ、１０１ｅを順次読み出していき、読み出したデータは、チェックサム計算回路１０６へ送られてチェックサム計算に用いられる。さらに、チェックサム最終結果を計算結果保持回路１０７に保持する。
【００１４】
ステップＳ１０３において、チェックサム結果を格納するヘッダ位置（チェックサム・フィールド）へポインタ１０５を移動させて、チェックサム計算結果を格納する。
【００１５】
ステップＳ１０４において、チェックサム計算結果が格納されたヘッダ領域を含むフラグメントを送信するため、ポインタ１０５をパケットの先頭位置（データ１０１ｂの先頭位置）まで移動する。
【００１６】
ステップＳ１０５において、ポインタ１０５をインクリメントしながらデータ１０１ｂ、１０１ｃ、１０１ｄ、１０１ｅを順次メモリ１０１から読み出して送信する。
【００１７】
最終フラグメントを読み出して送信し終えるまで、ステップＳ１０６、Ｓ１０７を繰り返す。
【００１８】
ステップＳ１０８において、送信が完了した際に、次に送信パケットが控えている場合は、次のパケット格納領域へポインタ１０５を移動させる。次にパケット送信がなければ、一連の処理を終了する。
【００１９】
パケット送信装置は、以上のように動作してヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割して送信する。
【００２０】
なお、関連する技術として、特許文献１には、データ配送の都度、パケット転送単位が相違し得るような場合にもパケット生成時のチェックサムの計算の高速化およびパケット生成の高速化の技術が記載されている。
【００２１】
【非特許文献１】Ｊ．Ｔｏｕｃｈ，  Ｂ．Ｐａｒｈａｍ，”Ｉｍｐｌｅｍｅｎｔｉｎｇ  ｔｈｅ  Ｉｎｔｅｒｎｅｔ  Ｃｈｅｃｋｓｕｍ  ｉｎ  Ｈａｒｄｗａｒｅ”，ＩＥＴＦ，ｒｆｃ１９３６，Ａｐｒｉｌ  １９９６
【特許文献１】特開２０００-２５３０５４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
図６、図７に示すように、ＴＣＰ、ＵＤＰパケットのヘッダ部にチェックサムの格納領域があるため、送信順序と同じようにパケットの先頭から末尾データまでを扱う場合、先頭データから最終データまでのチェックサム計算を完了させる。その後、パケットの先頭にあるヘッダ領域まで一旦ポインタを戻して、計算したチェックサムを書き込んでいた。したがって、全てのデータに対してチェックサムで１回と、送信で１回の計２回のメモリアクセスを要することとなり、処理に時間が掛かっていた。また、処理が完了するまで、１つのパケットに対応するデータを保持し続けなければならないため、メモリ使用効率も悪く、多くのメモリ空き空間を確保する必要がある。
【課題を解決するための手段】
【００２３】
本発明の１つのアスペクトに係るパケット送信装置は、ヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割して送信するパケット送信装置であって、パケットのデータを記憶する記憶部と、チェックサム格納領域を含むフラグメントを除いた他の複数のフラグメントにおけるそれぞれのデータを記憶部から読み出して順次累積的に加算してチェックサム値を算出し、さらにチェックサム格納領域を含むフラグメントのデータを記憶部から読み出してチェックサム値に加算して得られた最終チェックサム値を算出するチェックサム算出部と、チェックサム算出部によってチェックサム値が算出された、記憶部から読み出されてなるフラグメントを順次送信し、最後に最終チェックサム値をチェックサム格納領域に格納して得られるチェックサム格納領域を含む、記憶部から読み出されてなるフラグメントの送信を行う送信部と、パケットのデータを記憶部から読み出してチェックサム算出部および送信部に与えるように制御する制御部と、を備える。
【００２４】
本発明の他のアスペクトに係るパケット送信方法は、ヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割して送信するパケット送信方法であって、チェックサム格納領域を含むフラグメントを除いた他の複数のフラグメントにおけるそれぞれのデータを順次累積的に加算してチェックサム値を算出すると共にチェックサム値が算出されたフラグメントを順次送信するステップと、最後にチェックサム格納領域を含むフラグメントのデータをチェックサム値に加算して得られた最終チェックサム値をチェックサム格納領域に格納して、チェックサム格納領域を含むフラグメントの送信を行うステップと、を含む。
【００２５】
本発明のさらに他のアスペクトに係るパケットの送信方法は、パケットのヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割しパケットの送受信を行うネットワークプロトコルによるパケットの送信方法であって、チェックサム格納領域を含むフラグメントを除いた他の複数のフラグメント各々のデータを順次累積的に加算してチェックサム値を算出し、チェックサムが算出されたフラグメントを順次送信し、最後にチェックサム格納領域を含むフラグメントのデータをチェックサム値に加算して得られた最終チェックサム値をチェックサム格納領域に格納して、チェックサム格納領域を含むフラグメントの送信を行う。
【発明の効果】
【００２６】
本発明によれば、パケットを複数のフラグメントに分割して送信する際に、２番目のフラグメントから最終のフラグメントに対して、メモリからの１度のデータ読出しでチェックサム計算を行いながら送信する。したがって、送信動作完了までの処理時間を短縮することができる。また、メモリの空き空間をより早く作ることができるため、システムとして、多くのメモリ空き空間を確保することができる。
【発明を実施するための最良の形態】
【００２７】
図１は、本発明の実施形態に係るパケット送信装置の構成を示すブロック図である。図１において、パケット送信装置１０は、ヘッダにチェックサム格納領域を有するパケットを複数のフラグメントに分割し、ネットワーク３０を介して受信装置２０に送信する。パケット送信装置１０は、メモリ１１、チェックサム算出部１２、送信部１３、制御部１４、接続線１８を備える。
【００２８】
ここで、接続線１８は、メモリ１１、チェックサム算出部１２、送信部１３、制御部１４をそれぞれ接続し、それぞれの間でデータや制御信号のやり取りを行う。また、接続線１８は、バスのような構成としてもよい。このようなデータや制御信号のやり取りによって以下で説明するような処理を実行する。
【００２９】
なお、チェックサム算出部１２や制御部１４は、ステートマシン、シーケンサなどから構成される専用制御回路で構成してもよい。あるいは、プロセッサ等を利用し、プロセッサがプログラム（ソフトウェア）を実行することで、メモリ１１とのデータの読み書き、チェックサムの算出、ポインタの制御などを実現するようにしてもよい。
【００３０】
メモリ１１は、予め送信の対象となるパケットのデータを記憶しておく。
【００３１】
チェックサム算出部１２は、チェックサム格納領域を含むフラグメントを除いた他の複数のフラグメントにおけるそれぞれのデータをメモリ１１から読み出して順次累積的に加算してチェックサム値を算出する。さらに、チェックサム格納領域を含むフラグメントのデータをメモリ１１から読み出してチェックサム値に加算して得られた最終チェックサム値を算出する。
【００３２】
送信部１３は、チェックサム算出部１２によってチェックサム値が算出された、メモリ１１から読み出されてなるフラグメントを順次送信する。そして、最後に最終チェックサム値をチェックサム格納領域に格納して得られるチェックサム格納領域を含む、メモリ１１から読み出されてなるフラグメントの送信を行う。
【００３３】
制御部１４は、メモリ１１におけるアクセス位置（アドレス）を表すポインタ１５を備え、このポインタ１５の内容を更新することでチェックサム算出部１２を制御する。すなわち、ポインタ１５によって、パケットのデータをメモリ１１から読み出してチェックサム算出部１２および送信部１３に与えるように制御する。この場合、制御部１４は、送信部１３がフラグメントを順次送信した後に、擬似ヘッダを生成してメモリ１１に書き込み、擬似ヘッダをチェックサム値の累積的加算の対象とするようにチェックサム算出部１２を制御するようにしてもよい。また、制御部１４は、予め擬似ヘッダを生成してメモリ１１に書き込んでおき、擬似ヘッダをチェックサム値の累積的加算の初期値とするようにチェックサム算出部１２を制御するようにしてもよい。
【００３４】
ここで、チェックサム算出部１２におけるチェックサム計算は、単純な加算計算であるため、パケット内のどこから計算しても、最終的に全ての値を加算すれば同じ値が求められる。パケット送信装置１０は、大きなデータ量のパケットについては、複数のフラグメントに分割してパケットを送信する。その際に、チェックサム算出部１２によって２番目のフラグメント・パケットからチェックサムの計算を行い、送信部１３は、計算が終了したフラグメントから順次送信し、最後に先頭フラグメントのチェックサムを計算して送信処理するように制御して、パケット・データを格納したメモリから１回の読み出しで、チェックサム計算処理と送信処理とを実行する。このような処理によって処理時間を短縮すると共に、使用したメモリ空間を開放して他のパケット処理のためにメモリ使用を可能としメモリ使用効率を向上させることができる。
【００３５】
なお、フラグメント化されたパケットは、途中経路がパケット単位で判断され転送されるため、受信装置２０に到達するときに、必ずしも順序が保証されるわけではない。しかし、受信装置２０でフラグメント化されたパケットを組み立てなおすことは、通常の動作として行っているため、順序を変えて（先頭フラグメントのパケットを最後に）送信しても問題とはならない。受信装置２０のフラグメント到着順序は、本来ネットワーク３０で複数経路からの到着することを想定しているため、受信装置２０が正しい順序へ組み立てる機能を持っていることを利用している。以下、実施例に即し、詳しく説明する。
【実施例１】
【００３６】
図２は、本発明の第１の実施例に係るパケット送信装置におけるメモリアクセス動作を模式的に示す図である。チェックサム算出部１２は、メモリ１１から読み出されたデータのチェックサムを計算するチェックサム計算回路１６と、チェックサム計算の結果を保持する計算結果保持回路１７から構成される。
【００３７】
図２では、１つのパケットが３つのフラグメントに分割している例を示している。先頭のフラグメントは、ヘッダのデータ１１ｂとこれに続く先頭のデータ１１ｃから構成されている。２番目もフラグメントは、先頭のデータ１１ｃに続くデータ１１ｄから構成されている。３番目のフラグメントは、最終フラグメントのデータ１１ｅで構成されている。ここでは３つのフラグメントに分割されている例を示すが、もちろんパケット長に応じて分割数は異なっていてもよい。
【００３８】
次に、パケット送信装置の動作について説明する。図２の左側にメモリ１１を指すポインタ１５の移動順序を示す。ポインタ１５は、データ１１ｄ、データ１１ｅ、擬似ヘッダのデータ１１ａ、データ１１ｂ、データ１１ｃ、データ１１ｂ、データ１１ｃの順にそれぞれのデータの先頭から末尾に移動するように制御される。ただし、データ１１ｃとデータ１１ｂとのアクセス間には、データ１１ｂにおけるチェックサム格納領域（チェックサム・フィールド）への書き込みのためのアクセスが存在する。
【００３９】
図３は、本発明の第１の実施例に係るパケット送信装置の動作を示すフローチャートである。なお、図２に示す丸で囲まれた１〜１１と図３のフローチャート中の丸で囲まれた１〜１１とは、同一の符号が対応する。
【００４０】
ステップＳ１０において、パケットの送信を開始する。
【００４１】
ステップＳ１１において、送信対象となるパケットがフラグメント・パケットであるか否か、すなわちフラグメントとして分割されるパケットか否かを判断する。もし、フラグメントとして分割されないパケットであるならば、ステップＳ１５へ進む。フラグメント・パケットとして分割される場合は、ステップＳ１２へ進む。
【００４２】
ステップＳ１２において、ポインタ１５を２番目のフラグメント・パケット・データ位置（データ１１ｄの位置）へ移動して、２番目のフラグメント・パケット・データを読み出す。そして、読み出したデータをチェックサム計算回路１６へ渡し、チェックサム計算を行う。また、チェックサム計算と同時に読み出したデータを、送信データとして送信する。
【００４３】
ステップＳ１３において、最終フラグメント・パケットか否かを判断する。もし、最終フラグメントでなければ、ステップＳ１４において、次のフラグメント・パケット・データを読み出す。そして、読み出したデータをチェックサム計算回路１６へ渡すことで、チェックサム計算を行う。また、チェックサム計算と同時に読み出したデータを、送信データとして送信する。最終フラグメントの処理が終わるまで、ステップＳ１３とステップＳ１４を繰り返す。
【００４４】
最終フラグメントの処理を終えると、ステップＳ１５において、ポインタ１５をメモリ１１の疑似ヘッダ位置（データ１１ａの位置）へ移動する。
【００４５】
ステップＳ１６において、メモリ１１から読み出しを行い、読み出された疑似ヘッダのデータ１１ａは、チェックサム計算するためチェックサム計算回路１６へ送られる。なお、疑似ヘッダのデータ１１ａは、チェックサム計算回路１６で使用するのみであって、送信データとしては扱わない。
【００４６】
ステップＳ１７において、送信すべきヘッダを含む先頭フラグメント・パケットのデータ１１ｂ、１１ｃを読み出し、読み出したデータをチェックサム計算回路１６へ送り、チェックサム計算に用いる。チェックサム最終結果を計算結果保持回路１７へ保持する。
【００４７】
ステップＳ１８において、チェックサム結果を格納するヘッダ位置（チェックサム・フィールド）へポインタ１５を移動して、チェックサム計算結果をヘッダ領域へ格納する。
【００４８】
ステップＳ１９において、チェックサム計算結果が格納されたヘッダ領域を含むフラグメントを送信するため、ポインタ１５をパケットの先頭位置まで移動する。
【００４９】
ステップＳ２０において、ポインタ１５をインクリメントしながらパケット・データ（データ１１ｂ、１１ｃ）を順次メモリ１１から読み出して送信する。送信し終えたら、ステップＳ２１において、次に送信パケットが控えている場合は、次のパケット格納領域へポインタ１５を移動する。次にパケット送信がなければ、一連の処理を終了する。
【００５０】
以上のように動作するパケット送信装置は、パケット・データのチェックサム計算を２番目のフラグメントから行う。この時、２番目から最終までのフラグメントのデータをメモリ１１から１度読出すことでチェックサム計算と送信とを行って、２回のメモリアクセスを回避する。また、チェックサム計算後のデータを速やかに送信することができるため、データを保持するメモリ１１を送信と共に空けることができる。したがって、メモリ１１からのデータ読出し回数を減らし、時間と記憶領域の効率化を図ることができる。
【実施例２】
【００５１】
図４は、本発明の第２の実施例に係るパケット送信装置におけるメモリアクセス動作を模式的に示す図である。パケット送信装置の構成は、図１と同じであって、その説明を省略する。また、図４において、メモリ１１内のデータの配置は、図２と同じであり、その説明を省略する。第２の実施例に係るパケット送信装置では、メモリ１１に対するアクセス順序、具体的には疑似ヘッダのデータ１１ａへのアクセス順序が第１の実施例の場合と異なる。
【００５２】
図４の左側にメモリ１１を指すポインタ１５の移動順序を示す。ポインタ１５は、擬似ヘッダのデータ１１ａ、データ１１ｄ、データ１１ｅ、データ１１ｂ、データ１１ｃ、データ１１ｂ、データ１１ｃの順にそれぞれのデータの先頭から末尾に移動するように制御される。すなわち、一連のパケット・データへのアクセスに先立って擬似ヘッダのデータ１１ａがアクセスされる。ただし、データ１１ｃとデータ１１ｂとのアクセス間には、データ１１ｂにおけるチェックサム格納領域（チェックサム・フィールド）への書き込みのためのアクセスが存在する。
【００５３】
次に、パケット送信装置の動作について説明する。図５は、本発明の第２の実施例に係るパケット送信装置の動作を示すフローチャートを示す。なお、図４に示す丸で囲まれた１〜１２と図５のフローチャートに付した丸で囲まれた１〜１２とは、同一の符号が対応する。
【００５４】
ステップＳ３０において、パケットの送信を開始する。
【００５５】
ステップＳ３１において、ポインタ１５をメモリ１１の疑似ヘッダ位置へ移動させる。擬似ヘッダを生成し読み出して、チェックサム計算回路１６へデータを渡す。メモリ１１から読み出された疑似ヘッダのデータ１１ａは、チェックサムを計算するためにチェックサム計算回路１６へ送られる。疑似ヘッダ・データは、チェックサム計算回路１６で使用するのみであり、送信データとしては扱わない。
【００５６】
ステップＳ３２において、送信対象となるパケットがフラグメント・パケットであるか否か、すなわちフラグメントとして分割されるパケットか否かを判断する。もし、フラグメントとして分割されないパケットであるならば、ステップＳ３７へ進む。フラグメント・パケットとして分割される場合は、ステップＳ３３へ進む。
【００５７】
ステップＳ３３において、ポインタ１５を２番目のフラグメント・パケット・データ位置へ移動する。
【００５８】
ステップＳ３４において、２番目のフラグメント・パケット・データを読み出す。そして、読み出したデータをチェックサム計算回路１６へ渡すことで、チェックサム計算を行う。また、チェックサム計算と同時に読み出したデータを、送信データとして送信する。
【００５９】
ステップＳ３５において、最終フラグメント・パケットか否かを判断する。もし、最終フラグメントでなければ、ステップＳ３６において、次のフラグメント・パケット・データを読み出す。そして、読み出したデータをチェックサム計算回路１６へ渡すことで、チェックサム計算を行う。また、チェックサム計算と同時に読み出したデータを送信データとして送信する。最終フラグメントの処理が終わるまで、ステップＳ３５とステップＳ３６を繰り返す。
【００６０】
最終フラグメントの処理を終えると、ステップＳ３７において、ポインタ１５を先頭フラグメント・パケットの位置へ移動する。
【００６１】
ステップＳ３８において、送信すべきヘッダを含む先頭フラグメント・パケットのデータ１１ｂ、１１ｃを読み出し、読み出したデータをチェックサム計算回路１６へ送りチェックサム計算に用いる。チェックサム最終結果を計算結果保持回路１７へ保持する。
【００６２】
ステップＳ３９において、チェックサム結果を格納するヘッダ位置へポインタ１５を移動して、チェックサム計算結果をヘッダ領域のチェックサム格納領域（チェックサム・フィールド）へ格納する。
【００６３】
ステップＳ４０において、チェックサム計算結果が格納されたヘッダ領域を含むフラグメントを送信するため、ポインタ１５をパケットの先頭位置まで移動する。
【００６４】
ステップＳ４１において、ポインタ１５をインクリメントしながらパケット・データ（データ１１ｂ、１１ｃ）を順次メモリ１１から読み出して送信する。送信し終えたら、ステップＳ４２において、次に送信パケットが控えている場合は、次のパケット格納領域へポインタ１５を移動する。次にパケット送信がなければ、一連の処理を終了する。
【００６５】
以上のように動作するパケット送信装置は、２番目のフラグメント・パケットのチェックサム計算を行う前に、疑似ヘッダの生成と読み出しを行う。このように、２番目のフラグメント・パケットからチェックサム計算を求めることは変えずに、パケット・データの計算より前に疑似ヘッダの計算を行っても構わない。
【００６６】
以上本発明を上記実施例に即して説明したが、本発明は、上記実施例にのみ限定されるものではなく、本願特許請求の範囲の各請求項の発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施形態に係るパケット送信装置の構成を示すブロック図である。
【図２】本発明の第１の実施例に係るパケット送信装置におけるメモリアクセス動作を模式的に示す図である。
【図３】本発明の第１の実施例に係るパケット送信装置の動作を示すフローチャートである。
【図４】本発明の第２の実施例に係るパケット送信装置におけるメモリアクセス動作を模式的に示す図である。
【図５】本発明の第２の実施例に係るパケット送信装置の動作を示すフローチャートである。
【図６】ＴＣＰパケットのフォーマットを示す図である。
【図７】ＵＤＰパケットのフォーマットを示す図である。
【図８】従来のパケット送信装置におけるメモリアクセス動作を模式的に示す図である。
【図９】従来のパケット送信装置の動作を示すフローチャートである。
【符号の説明】
【００６８】
１０  パケット送信装置
１１  メモリ
１１ａ、１１ｂ、１１ｃ、１１ｄ、１１ｅ  データ
１２  チェックサム算出部
１３  送信部
１４  制御部
１５  ポインタ
１６  チェックサム計算回路
１７  計算結果保持回路
１８  接続線
２０  受信装置
３０  ネットワーク
【図１】
2008301210.tif 000003
【図２】
2008301210.tif 000004
【図３】
2008301210.tif 000005
【図４】
2008301210.tif 000006
【図５】
2008301210.tif 000007
【図６】
2008301210.tif 000008
【図７】
2008301210.tif 000009
【図８】
2008301210.tif 000010
【図９】
2008301210.tif 000011