(57)【要約】チェックサム生成装置及び生成方法を提供する。所定の長さ情報を入力されてその長さほどデータを入力されれば、制御信号を出力する制御部と、入力されたデータを合算して制御信号を受信すれば、その合計を出力する加算部と、合算された結果をチェックサム値に変換する変換部と、を備えることを特徴とするチェックサムを生成する装置である。これにより、チェックサム計算速度を向上させることができる。
2007517433.tif 000002
【特許請求の範囲】
【請求項１】
所定の長さ情報を入力されてその長さほどデータを入力されれば、制御信号を出力する制御部と、
入力されたデータを合算して前記制御信号を受信すれば、その合計を出力する加算部と、
前記合算された結果をチェックサム値に変換する変換部と、を備えることを特徴とするチェックサム生成装置。
【請求項２】
前記チェックサム値は、１６ビット値であることを特徴とする請求項１に記載のチェックサム生成装置。
【請求項３】
前記加算部は、
(３２ビット＋整数ｘ１６ビット)単位でデータを入力されて加算を行うことを特徴とする請求項１に記載のチェックサム生成装置。
【請求項４】
前記変換部は、
前記合算された結果を合計とキャリーとに分けた時、合計を１６ビット単位に分けて、その値をキャリーと合算して最終合計を計算することを特徴とする請求項１に記載のチェックサム生成装置。
【請求項５】
前記変換部は、
前記最終合計でキャリーが発生した場合には、キャリーを除外した最終合計にキャリーを加えて最終合計として出力することを特徴とする請求項４に記載のチェックサム生成装置。
【請求項６】
前記変換部は、
前記合算された最終値に対して１の補数を取って１６ビットチェックサムとして出力することを特徴とする請求項５に記載のチェックサム生成装置。
【請求項７】
前記加算部は、
入力されたデータの合計を計算する(３２ビット＋整数ｘ１６ビット)単位の加算器と、
前記加算器で発生したキャリー同士を合算するキャリー加算器と、を備えることを特徴とする請求項１に記載のチェックサム生成装置。
【請求項８】
前記変換部は、
前記加算部の合算結果でキャリーを除外した値を１６ビット単位に分けてその値の合計を計算する部分和計算部と、
前記計算された部分和と前記キャリーとを加える第１加算器と、
前記第１加算器で発生した合計とその合計から発生したキャリーとをさらに加える第２加算器と、
前記第２加算器の加算結果に対して１の補数を取って出力する補数計算部と、を備えることを特徴とする請求項１に記載のチェックサム生成装置。
【請求項９】
(ａ)所定の制御信号を受信するまで入力されたデータを合算する段階と、
(ｂ)前記制御信号を受信すれば、合算値を合計及びキャリーとして出力する段階と、
(ｃ)前記合計及びキャリーの合計を求めて、チェックサム値に変換する段階と、を含むことを特徴とするチェックサム生成方法。
【請求項１０】
前記チェックサム値は、１６ビット値であることを特徴とする請求項９に記載のチェックサム生成方法。
【請求項１１】
前記制御信号は、前記入力されたデータの長さ情報を入力されて、その長さほどデータを入力されれば出力される信号であることを特徴とする請求項９に記載のチェックサム生成方法。
【請求項１２】
前記(ａ)段階は、
(３２ビット＋整数ｘ１６ビット)単位でデータを入力されて加算を行うことを特徴とする請求項９にチェックサム生成方法。
【請求項１３】
前記(ｃ)段階は、
前記合算された結果を合計とキャリーとに分けた時、合計を１６ビット単位に分けて、その値をキャリーと合算して最終合計を計算することを特徴とする請求項９に記載のチェックサム生成方法。
【請求項１４】
前記(ｃ)段階は、
前記最終合計でキャリーが発生した場合には、キャリーを除外した最終合計にキャリーを加えて最終合計として出力することを特徴とする請求項１３に記載のチェックサム生成方法。
【請求項１５】
前記(ｃ)段階は、
前記合算された最終値に対して１の補数を取って１６ビットチェックサムとして出力することを特徴とする請求項１４に記載のチェックサム生成方法。
【請求項１６】
前記(ｂ)段階は、
(ｂ１)入力されたデータの合計を(３２ビット＋整数ｘ１６ビット)単位で加える段階と、
(ｂ２)前記(ｂ１)段階で発生したキャリー同士を合算する段階を含むことを特徴とする請求項９に記載のチェックサム生成方法。
【請求項１７】
前記(ｃ)段階は、
(ｃ１)前記合算結果でキャリーを除外した値を１６ビット単位に分けてその値の合計を計算する段階と、
(ｃ２)前記(ｃ１)段階で計算された合計と前記キャリーとを加える段階と、
(ｃ３)前記(ｃ２)段階で発生した合計とその合計から発生したキャリーとをさらに加える段階と、
(ｃ４)前記(ｃ３）の加算結果に対して１の補数を取って出力する段階と、を含むことを特徴とする請求項９に記載のチェックサム生成方法。
【請求項１８】
(ａ)所定の制御信号を受信するまで入力されたデータを合算する段階と、
(ｂ)前記制御信号を受信すれば、合算値を合計及びキャリーとして出力する段階と、
(ｃ)前記合計及びキャリーの合計を求めてチェックサム値に変換する段階と、を含むことを特徴とするチェックサム生成方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの処理に係り、より詳細には、データの送信及び受信時にデータがエラーなしに送受信されたか否かを確認するのに使われるチェックサムを生成する装置及び方法に関する。
【背景技術】
【０００２】
チェックサムの計算は、送信者が送ったビット数と同じ数のビットが伝送されたか否かを受信者が確認可能なように伝送単位内のビット数を計算することである。もし、受信側で計算したチェックサムが送信者が送ったチェックサムと一致すれば、エラーなしにデータが受信されたと判断する。インターネットプロトコルでは、ＴＣＰ(Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ)とＵＤＰ(Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ)の通信階層いずれにおいてもチェックサム計算及び検証をする。
【０００３】
チェックサムを計算する部分がインターネットプロトコルデータの処理における最も大きい部分を占めているため、これを速く計算することが必要である。従来のチェックサム計算装置では、加算器がデータを処理するに当って１６ビット単位で処理するために、チェックサムを計算する速度が遅いという問題点がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、本発明が達成しようとする技術的課題は、チェックサムの計算において、３２ビット以上の単位で加算した後、その結果を１６ビットチェックサムに変換することで、計算速度を向上させたチェックサム生成装置及び生成方法を提供することである。
【課題を解決するための手段】
【０００５】
前記技術的課題は、本発明によって、所定の長さ情報を入力されてその長さほどデータを入力されれば、制御信号を出力する制御部と、入力されたデータを合算して前記制御信号を受信すれば、その合計を出力する加算部と、前記合算された結果をチェックサム値に変換する変換部と、を備えることを特徴とするチェックサム生成装置により達成される。
【０００６】
前記加算部は、(３２ビット＋整数ｘ１６ビット)単位でデータを入力されて加算を行うことが望ましい。
【０００７】
また、前記加算部は、入力されたデータの合計を計算する(３２ビット＋整数ｘ１６ビット)単位の加算器と、前記加算器で発生したキャリー同士を合算するキャリー加算器と、を備えることが望ましい。
【０００８】
前記変換部は、前記加算部の合算結果でキャリーを除外した値を１６ビット単位に分けて、その値の合計を計算する部分和計算部と、前記計算された部分和と前記キャリーとを加える第１加算器と、前記第１加算器で発生した合計とその合計から発生したキャリーとをさらに加える第２加算器と、前記第２加算器の加算結果に対して１の補数を取って出力する補数計算部と、を備えることが望ましい。
【０００９】
一方、本発明の他の分野によれば、前記技術的課題は、(ａ)所定の制御信号を受信するまで入力されたデータを合算する段階と、(ｂ)前記制御信号を受信すれば、合算値を合計及びキャリーとして出力する段階と、(ｃ)前記合計及びキャリーの合計を求めてチェックサム値に変換する段階と、を含むことを特徴とするチェックサム生成方法によっても達成される。
【００１０】
前記(ａ)段階は、(３２ビット＋整数ｘ１６ビット)単位でデータを入力されて加算を行うことが望ましい。
【００１１】
前記(ｂ)段階は、(ｂ１)入力されたデータの合計を(３２ビット＋整数ｘ１６ビット)単位で加える段階と、(ｂ２)前記(ｂ１)段階で発生したキャリー同士を合算する段階と、を含むことが望ましい。
【００１２】
前記(ｃ)段階は、(ｃ１)前記合算結果でキャリーを除外した値を１６ビット単位に分けて、その値の合計を計算する段階と、(ｃ２)前記(ｃ１)段階で計算された合計と前記キャリーとを加える段階と、(ｃ３)前記(ｃ２)段階で発生した合計とその合計から発生したキャリーとをさらに加える段階と、(ｃ４)前記(ｃ３）の加算結果に対して１の補数をもって出力する段階と、を含むことが望ましい。
【００１３】
一方、本発明の他の分野によれば、前記技術的課題は、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体によっても達成される。
【発明の効果】
【００１４】
本発明によれば、入力データを分けないことによって、チェックサム計算速度を向上させることができる。すなわち、本発明は、ＡＳＩＣでチェックサム生成装置を具現時に、ＡＳＩＣでライブラリー形態で提供する３２ビットまたは６４ビット加算器を使用して、計算速度を向上させたチェックサム生成装置を具現できる。
【発明を実施するための最良の形態】
【００１５】
以下、添付された図面を参照して、本発明の望ましい実施形態について詳細に説明する。
【００１６】
図１は、チェックサムを生成する過程を説明するための図面である。
【００１７】
データ０００１  ｆ２０３  ｆ４ｆ５  ｆ６７に対するチェックサムを生成するために１６ビット単位で加算を行う。すなわち、０００１＋f３０３＋ｆ４ｆ５＋ｆ６７を計算する。それにより、第１合計Ｓｕｍ１は、２ｄｄｆ０となる。１６ビット加算器を使用したので、キャリーは２となる。それによるキャリーを１６ビット加算器にさらに入れて加算すれば、２＋ｄｄｆ０＝ｄｄｆ２となる。そのようにして得られた最終値を１の補数を取ると、２２０ｄになり、それがチェックサムとなる。前述したチェックサムの計算についてＲＦＣ１０７１文書にさらに詳細に記述されている。
【００１８】
図２は、本発明のチェックサム生成装置のブロック図である。
【００１９】
チェックサム生成装置は、加算部２１０、制御部２２０及び変換部２３０を備える。加算部２１０は、データを３２ビットまたは６４ビット単位で入力される。場合によって、それ以上のビット単位で入力されうるので、加算部２１０は、３２ビット加算器、６４ビット加算器からなり、さらに８０ビット、９６ビットまたは１２８ビット加算器が使われうる。したがって、入力されるデータを１６ビット単位に分けずにそのまま加算する。制御部２２０は、入力データの数、すなわち、長さ情報を入力されてその長さほどデータを受信すれば、チェックサムを計算するために、加算部２１０の出力を変換部２３０に送信するように制御信号を加算部２１０に出力する。変換部２３０は、加算部２１０から受けたデータを１６ビットに変換してチェックサム値を出力する。
【００２０】
これをさらに詳細に説明すれば、加算部２１０は、入力データを制御部２２０からの制御信号を受信するまで累積して加える。この時、キャリーは、別個に合算される。発生しうるキャリーの最大値を考慮して、キャリーの加算結果は、１０ビットで保存される。それにより、キャリー合計及び部分和を保存していて、データ長ほど全て入力されたという制御信号を制御部２２０から受信すれば、キャリー合計及び部分和を変換部２３０に出力する。変換部２３０は、部分和を１６ビット単位に分けてそれぞれ合算し、その値をキャリー合計とさらに合算して最終合計を計算し、１の補数を取って出力する。すなわち、加算部２１０が３２ビット単位で加算を行って部分和が３２ビットであれば、上位１６ビット、下位１６ビット及びキャリー合計を計算し、加算部２１０が６４ビット単位で加算を行って部分和が６４ビットであれば、最上位１６ビット、上位１６ビット、下位１６ビット、最下位１６ビット及びキャリー合計を加えて最終合計を計算する。
【００２１】
図３は、３２ビット加算器を使用した場合のチェックサム生成装置の詳細ブロック図である。
【００２２】
加算部２１０は、３２ビット加算器３０５とキャリー加算器３１０とを備え、それぞれ入力データの合計を計算してキャリーの合計を計算する。変換部２３０は、部分和計算部３１５、第１加算器３２０、第２加算器３２５及び補数計算部３３０を備える。部分和計算部３１５は、３２ビットデータを上位１６ビット、下位１６ビットにそれぞれ分けて、分けられた１６ビット値の合計を計算する。このように計算された合計は、キャリー加算器３１０から出力されたキャリーと第１加算器３２０でさらに合算される。第２加算器３２５は、第１加算器３２０から出力された合計及びキャリーをさらに加算して最終１６ビット合計を出力する。補数計算部３３０は、出力された１６ビット合計に１の補数を取って出力する。
【００２３】
図４は、６４ビット加算器を使用した場合のチェックサム生成装置の詳細ブロック図である。
【００２４】
加算部２１０は、６４ビット加算器４０５とキャリー加算器４１０とを備え、それぞれ入力データの合計を計算してキャリーの合計を計算する。変換部２３０は、部分和計算部４１５、第１加算器４２０、第２加算器４２５及び補数計算部４３０を備える。部分和計算部４１５は、６４ビットデータを１６ビット単位で４個の１６ビット値に分けて、分けられた１６ビット値の合計を計算する。残りの構成要素は、３２ビット加算器を使用した場合と同一である。
【００２５】
前述したチェックサムの計算は、ＩＰ、ＴＣＰ、ＵＤＰなどいかなるインターネットプロトコルの処理時にも使用可能であるが、ＴＣＰの処理時のチェックサムの計算を図５Ａ及び図５Ｂを参照して以下で例を挙げて説明する。
【００２６】
図５Ａは、ＴＣＰセグメントフォーマットを示した図面である。
【００２７】
ＴＣＰセグメントは、ＴＣＰヘッダー５１０とＴＣＰペイロード５２０とから構成されている。ＴＣＰヘッダー５１０には、チェックサムフィールドがあって、その値を計算して入れなければならない。ＴＣＰでチェックサムを計算するために、疑似ヘッダーが必要である。ＴＣＰセグメントの各フィールドの意味は、当業者に公知であるので、詳細に記述しない。
【００２８】
図５Ｂは、疑似ヘッダーフォーマットを示した図面である。
【００２９】
疑似ヘッダーは、送信者ＩＰアドレス、受信者ＩＰアドレス、パッド、プロトコル番号及びＴＣＰパケット長から構成される。疑似ヘッダーは、実際に伝送に使われるヘッダーではなく、ＴＣＰパケットのチェックサムを計算するのに使われる。データの長さが１６ビットの倍数になるようにデータの末端に０をパッドする。この時、ＴＣＰヘッダーのチェックサムフィールドを１とする。そして、１６ビット単位で合計を求め、求めた合計の１の補数をチェックサムフィールドに入れる。受信側は、ＴＣＰセグメントを受信した後、ＩＰヘッダーからＩＰアドレスの情報を得てＴＣＰ疑似ヘッダーを作成することで、チェックサムを計算する。
【００３０】
図６は、本発明のチェックサム生成方法のフローチャートである。
【００３１】
入力されたデータを分けず、３２ビットまたは６４ビット単位でそのまま入力されて合算する(Ｓ６１０)。この時、合算時に発生したキャリーは、別に合算する。発生されうるキャリーの最大値を考慮して、キャリー加算の結果は１０ビットで保存される。入力されたデータの長さほど全て加算されたか否かを判断して(Ｓ６２０)、全て合算するまでに加算し続け、全て合算されれば、その値を１６ビット値に変換する(Ｓ６３０)。そして１の補数を取って出力する(Ｓ６４０)。
【００３２】
入力されたデータが３２ビットである場合に１６ビット値に変換する段階(Ｓ６３０)をさらに詳細に説明すれば、データの長さほど全て合算した値をｓｕｍ１とし、その時に生成されたキャリーの合計をｃａｒｒｙ１とすれば、ｔｅｍｐ１＝(ｓｕｍ１の１６ビットＭＳＢ)＋(ｓｕｍ１の１６ビットＬＳＢ)＋ｃａｒｒｙ１となる。ｔｅｍｐ１のｃａｒｒｙをｃａｒｒｙ２とすれば、ｔｅｍｐ２＝(ｔｅｍｐ１)＋(ｃａｒｒｙ２)で計算された値が最終１６ビット値となる。仮に６４ビット単位で計算するならば、ｓｕｍ１を１６ビット単位に分けた４個の１６ビット値とキャリーとを加えてｔｅｍｐ１を生成し、前述したようにｔｅｍｐ２を計算する。
【００３３】
一方、前述したチェックサム生成方法は、コンピュータプログラムで作成可能である。前記プログラムを構成するコード及びコードセグメントは、当分野のコンピュータプログラマーによって容易に推論できる。また、前記プログラムは、コンピュータが読み取り可能な情報保存媒体に保存され、コンピュータによって読み取られ、実行されることによって、チェックサム生成方法を具現する。前記情報保存媒体は、磁気記録媒体、光記録媒体、及びキャリアウェーブ媒体を含む。
【図面の簡単な説明】
【００３４】
【図１】チェックサムを生成する過程を説明するための図面である。
【図２】本発明のチェックサム生成装置のブロック図である。
【図３】３２ビット加算器を使用した場合のチェックサム生成装置の詳細ブロック図である。
【図４】６４ビット加算器を使用した場合のチェックサム生成装置の詳細ブロック図である。
【図５Ａ】ＴＣＰセグメントフォーマットを示した図面である。
【図５Ｂ】疑似ヘッダーフォーマットを示した図面である。
【図６】本発明のチェックサム生成方法のフローチャートである。
【符号の説明】
【００３５】
２１０  加算部
２２０  制御部
２３０  変換部
【図１】
2007517433.tif 000003
【図２】
2007517433.tif 000004
【図３】
2007517433.tif 000005
【図４】
2007517433.tif 000006
【図５Ａ】
2007517433.tif 000007
【図５Ｂ】
2007517433.tif 000008
【図６】
2007517433.tif 000009
【国際調査報告】
2007517433.tif 000010