(57)【要約】  判断処理部（２１０ａ）が、ユーザプロセス空間（２２０ａ）に蓄積された本体データを、カーネル空間（２２０ｂ）にコピーすること無しに、ドライバ（２３０）を介して直接ネットワークアダプタ（１００）に送信する。そして、ヘッダ生成処理部（２１０ｂ）は、ヘッダおよびＤＭＡディスクプリタを生成し、該生成したデータを、ドライバ（２３０）を介して、ネットワークアダプタ（１００）に送信する。そして、パケット生成処理部（１５０ａ）は、ＤＭＡディスクプリタ、ヘッダおよび本体データを基にしてパケットを生成し、該生成したパケットをネットワークインターフェース部（１４０）を介して、ヘッダのよって特定される宛先に送信する。【特許請求の範囲】
【請求項１】
パケット生成に利用されるヘッダ部や本体データ部を作成する送信ホストに接続されるとともに、ネットワークを介して、外部とパケット通信を行う通信装置であって、
前記送信ホストからヘッダ部と、本体データ部とを別々に受信する受信手段と、
前記受信手段が受信したヘッダ部と、本体データ部とを蓄積する蓄積手段と、
前記蓄積手段によって蓄積されたヘッダ部および本体データ部を結合してパケットを生成するパケット生成手段と、
を備えたことを特徴とする通信装置。
【請求項２】
外部からパケットを受信した際に、該パケットをヘッダ部と、本体データ部とに分離させて前記蓄積手段に蓄積させると共に、前記ヘッダ部と、前記本体データの位置を特定する位置特定情報とを前記送信ホストに送信する分離処理手段を更に備えたことを特徴とする請求項１に記載の通信装置。
【請求項３】
外部からパケットを受信した際に、該パケットのサイズが所定値よりも大きいか否かを判定する判定手段を更に備え、前記判定手段が所定値よりも大きいと判定した場合に、前記分離処理手段は、前記パケットをヘッダ部と、本体データ部とに分離させて前記蓄積手段に蓄積させると共に、前記ヘッダ部と、前記本体データの位置を特定する位置特定情報とを前記送信ホストに送信することを特徴とする請求項２に記載の通信装置。
【請求項４】
パケット生成に利用されるヘッダ部および本体データ部を作成する送信ホストと、ネットワークを介して外部とパケット通信を行う通信装置とからなる通信システムであって、
前記送信ホストは、
前記本体データのサイズが所定値よりも大きいか否かを判定する判定手段と、
前記判定手段が、所定値よりも大きいと判定した場合に、前記本体データを、メモリ間コピーをすること無しに前記通信装置に直接送信する送信処理手段と、
を備え、
前記通信装置は、
前記送信ホストからヘッダ部と、本体データ部とを別々に受信する受信手段と、
前記受信手段が受信したヘッダ部と、本体データ部とを蓄積する蓄積手段と、
前記蓄積手段によって蓄積されたヘッダ部および本体データ部を結合してパケットを生成するパケット生成手段と、
を備えたことを特徴とする通信システム。
【請求項５】
ネットワークを介して、外部とパケット通信を行う通信方法であって、
パケットを構成するヘッダ部と、本体データ部とを別々に受信する受信工程と、
前記受信工程によって受信したヘッダ部と、本体データ部とを記憶装置に蓄積させる蓄積工程と、
前記記憶装置に蓄積されたヘッダ部および本体データ部を結合してパケットを生成するパケット生成工程と、
を含んだことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、パケット生成に利用されるヘッダ部や本体データ部を作成する送信ホストに接続されるとともに、ネットワークを介して、外部とパケット通信を行う通信装置などに関し、特にパケット通信に係る実行効率を向上させることができる通信装置、通信システムおよび通信方法に関するものである。
【背景技術】
【０００２】
現在、一般に広く普及しているSocketＡＰＩ（Application Program Interface）や、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）の通信プロトコルを利用したパケット通信は、データを送受信する処理が完了するまで、データを保護するため、中間的なバッファを用意し、該バッファにデータを一旦蓄積させている。【０００３】
しかし、バッファにデータを一旦蓄積してからデータを送受信する処理は大変重く、ネットワークの高速化が急速に進展するにしたがって、オーバーフローなどが発生してしまい、ネットワークの高速化に対応できなくなりつつある。【０００４】
そこで、非特許文献１に公開された技術では、ＣＯＷ（Copy-On-Write）やPage Flippingなどの技術を利用して、対象となるデータを保護し、中間的なバッファにデータを蓄積させる必要性を無くすことで、ネットワークの高速化に対応させている。【０００５】
なお、特許文献１に公開された技術では、ネットワークアダプタに通信プロトコル処理を実行させ、ホストコンピュータに係る負荷を軽減させることで、通信効率を向上させ、ネットワークの高速化に対応している。
【特許文献１】米国特許第６，４３４，６２０号明細書
【非特許文献１】“Zero copy sockets and NFS patches for FreeBSD”、[２００４年３月２９日検索]、インターネット＜ＵＲＬ： HYPERLINK "http://people.freebsd.org/" http://people.freebsd.org/〜ken/zero_copy/＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら従来に係る技術では、必ずしも、パケット通信に係る実行効率を向上させることができないという問題があった。【０００７】
具体的には、ＣＯＷは、アプリケーションが送信バッファに存在するデータをすぐに書き換えてしまう場合には効果が無いという問題があり、Page Flippingは、所定バイトのページ単位でメモリを管理するため、送受信に係るデータのアドレスを、任意のアドレスに変換できず、技術的に、通信処理を行うことが非常に困難であった。【０００８】
一方、ネットワークアダプタに、通信プロトコル処理を実行させることも考えられるが、消費電力やコストの観点から、複雑な通信プロトコルを十分に処理可能なプロセッサをネットワークカードに搭載することは困難である。【０００９】
また、プロセッサの代わりに、プロトコル処理の一部をハードウェア化し、ネットワークアダプタに搭載する場合でも、ＴＣＰ／ＩＰの通信プロトコルやその中で用いられるアルゴリズムは変更される可能性があるため、ハードウェアによってプロトコル処理を実行させることも難しい。【００１０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、特定の条件に制約を受けることなく、パケット通信にかかる実行効率を向上させることができる通信装置、通信システムおよび通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、本発明は、パケット生成に利用されるヘッダ部や本体データ部を作成する送信ホストに接続されるとともに、ネットワークを介して、外部とパケット通信を行う通信装置であって、前記送信ホストからヘッダ部と、本体データ部とを別々に受信する受信手段と、前記受信手段が受信したヘッダ部と、本体データ部とを蓄積する蓄積手段と、前記蓄積手段によって蓄積されたヘッダ部および本体データ部を結合してパケットを生成するパケット生成手段と、を備えたことを特徴とする。【００１２】
また、本発明は、上記発明において、外部からパケットを受信した際に、該パケットをヘッダ部と、本体データ部とに分離させて前記蓄積手段に蓄積させると共に、前記ヘッダ部と、前記本体データの位置を特定する位置特定情報とを前記送信ホストに送信する分離処理手段を更に備えたことを特徴とする。【００１３】
また、本発明は、上記発明において、外部からパケットを受信した際に、該パケットのサイズが所定値よりも大きいか否かを判定する判定手段を更に備え、前記判定手段が所定値よりも大きいと判定した場合に、前記分離処理手段は、前記パケットをヘッダ部と、本体データ部とに分離させて前記蓄積手段に蓄積させると共に、前記ヘッダ部と、前記本体データの位置を特定する位置特定情報とを前記送信ホストに送信することを特徴とする。【００１４】
また、本発明は、パケット生成に利用されるヘッダ部および本体データ部を作成する送信ホストと、ネットワークを介して外部とパケット通信を行う通信装置とからなる通信システムであって、前記送信ホストは、前記本体データのサイズが所定値よりも大きいか否かを判定する判定手段と、前記判定手段が、所定値よりも大きいと判定した場合に、前記本体データを、メモリ間コピーをすること無しに前記通信装置に直接送信する送信処理手段と、を備え、前記通信装置は、前記送信ホストからヘッダ部と、本体データ部とを別々に受信する受信手段と、前記受信手段が受信したヘッダ部と、本体データ部とを蓄積する蓄積手段と、前記蓄積手段によって蓄積されたヘッダ部および本体データ部を結合してパケットを生成するパケット生成手段と、を備えたことを特徴とする。【００１５】
また、本発明は、ネットワークを介して、外部とパケット通信を行う通信方法であって、パケットを構成するヘッダ部と、本体データ部とを別々に受信する受信工程と、前記受信工程によって受信したヘッダ部と、本体データ部とを記憶装置に蓄積させる蓄積工程と、前記記憶装置に蓄積されたヘッダ部および本体データ部を結合してパケットを生成するパケット生成工程と、を含んだことを特徴とする。
【発明の効果】
【００１６】
本発明によれば、送信ホストからヘッダ部と、本体データ部とを別々に受信し、該受信したヘッダ部と、本体データ部とを蓄積し、蓄積したヘッダ部と本体データ部とを結合してパケットを生成するので、パケット通信に係る実行効率を向上させることができる。【００１７】
また、本発明によれば、外部からパケットを受信した際に、該パケットをヘッダ部と、本体データ部とに分離して蓄積し、ヘッダ部と、本体データ部の位置を特定する位置特定情報を送信ホストに送信するので、送信ホストの負担を軽減させることができ、ネットワークの高速化にも対応することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本実施例に係る通信システムのシステム構成を示す図である。
【図２】図２は、ＤＭＡディスクプリタのデータ構造の一例を示す図である。
【図３】図３は、送信ホストが行う送信前処理を示すフローチャートである。
【図４】図４は、送信ホストが行う送信処理を示すフローチャートである。
【図５】図５は、パケット生成処理部がパケットを生成する処理を示すフローチャートである。
【図６】図６は、ヘッダ分離処理部が行う分離処理を示すフローチャートである。
【符号の説明】
【００１９】
１００    ネットワークアダプタ
１１０    ＤＭＡ機構部
１２０    チェックサム演算機構部
１３０    バッファ
１４０    ネットワークインターフェース部
１５０，２１０    制御部
１５０ａ  パケット生成処理部
１５０ｂ  ヘッダ分離処理部
１５０ｃ  暗号化・復号化処理部
１５０ｄ，２１０ａ  判定処理部
２００    ホスト計算機
２１０ｂ  ヘッダ生成処理部
２１０ｃ  プロトコル処理部
２２０    メインメモリ
２２０ａ  ユーザプロセス空間
２２０ｂ  カーネル空間
２３０    ドライバ
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明に係る通信装置、通信システムおよび通信方法の好適な実施の形態を詳細に説明する。
【実施例】
【００２１】
まず、本実施例に係るパケット通信の概念について説明する。本実施例に示す送信ホストは、本体データのメモリ間コピーを行わず、本体データを、直接ネットワークアダプタに送信し、ネットワークアダプタは、受信した本体データをバッファに蓄積する。【００２２】
その後、送信ホストは、ヘッダをネットワークアダプタに送信し、ネットワークアダプタは、バッファに蓄積された本体データと、ヘッダとを結合してパケットを生成し、該生成したパケットを、ネットワークインターフェース部を介して宛先に送信することで、通信性能を向上させる。【００２３】
次に、本実施例に係る通信システムのシステム構成について説明する。図１は、本実施例に係る通信システムのシステム構成を示す図である。同図に示すように、この通信システムは、ネットワークアダプタ１００およびホスト計算機２００から構成される。また、このネットワークアダプタ１００およびホスト計算機２００は、バスなどによって相互に接続される。【００２４】
ネットワークアダプタ１００は、送信ホストから送信される本体データと、ヘッダとを基にしてパケットを生成し、該作成したパケットをヘッダによって特定される宛先に送信する。なお、本体データとは、パケットを構成するヘッダ以外のデータを示す。【００２５】
また、ネットワークアダプタ１００は、パケットを受信した際に、受信したパケットをヘッダと本体データとに分解し、ヘッダと本体データとを別々にホスト計算機２００に送信する。なお、ここでは説明の便宜上、一台のネットワークアダプタ１００のみを示したが、この通信システムは、任意の台数のネットワークアダプタに接続される。【００２６】
ホスト計算機２００は、ユーザアプリケーションから送信要求を受付け、本体データをメモリ間コピーすること無しに、ネットワークアダプタ１００に送信する。また、ホスト計算機２００は、ヘッダを作成し、該作成したヘッダをネットワークアダプタ１００に送信する。【００２７】
次に、ネットワークアダプタ１００の構成について説明する。図１に示すように、ネットワークアダプタ１００は、ＤＭＡ（Direct Memory Access）機構部１１０と、チェックサム演算機構部１２０と、バッファ１３０と、ネットワークインターフェース部１４０と、制御部１５０とを有する。【００２８】
ＤＭＡ機構部１１０は、送信ホスト３００から本体データやヘッダなどを受信し、受信したデータをチェックサム演算機構部１２０に渡す。また、ＤＭＡ機構部１１０は、制御部１５０の指示に従って、バッファ１２０に蓄積されたデータをホスト計算機２００に送信する。【００２９】
チェックサム演算機構部１２０は、ＤＭＡ機構部１１０または、ネットワークインターフェース部１４０からデータを受取り、受取ったデータに対してチェックサム演算を行い、チェックサム演算結果を制御部１５０に通知する。なお、チェックサムを実行する際に必要となる情報は、制御部１５０から渡される。また、チェックサム演算機構部１２０は、チェックサム演算実行済みデータをバッファ１３０に蓄積させる。【００３０】
バッファ１３０は、チェックサム演算機構部１２０から渡されるデータを蓄積する。ネットワークインターフェース部１４０は、外部のネットワークと接続するためのネットワークカードであり、バッファ１３０から受取ったパケットを、ヘッダによって特定される宛先に送信する。また、ネットワークインターフェース部１４０は、外部から受信したパケットをチェックサム演算機構部１２０に渡す。【００３１】
制御部１５０は、パケット生成処理部１５０ａと、ヘッダ分離処理部１５０ｂと、暗号化・復号化処理部１５０ｃと、判定処理部１５０ｄとを有する。【００３２】
パケット生成処理部１５０ａは、バッファ１３０に蓄積された本体データおよびヘッダを結合してパケットを生成し、生成したパケットをネットワークインターフェース部１４０に渡す。なお、パケット生成部１５０ａは、パケットを生成する際に、ホスト計算機２００から送信されるＤＭＡディスクプリタを基にして、パケットを生成する。【００３３】
図２にＤＭＡディスクプリタのデータ構造の一例を示す。同図に示すように、ＤＭＡディスクプリタは、アドレス、識別フラグ、データ長およびシーケンス番号を含む。アドレスは、ヘッダまたは本体データの位置を特定するための情報であり、識別フラグは、対応するデータが、ホスト計算機２００のメインメモリに存在するか、またはネットワークアダプタ１００内のバッファに存在するかを示す情報である。【００３４】
例えば、識別フラグが「識別１」の場合には、ホスト計算機２００のメインメモリに、対応するデータが存在することを示し、識別フラグが「識別２」の場合には、ネットワークアダプタ１００のバッファに、対応するデータが存在することを示す。なお、データ長
は、対応するデータのサイズを示す。【００３５】
また、シーケンス番号は、ホスト計算機２００内の本体データが全てネットワークアダプタ１００に送信されたか否かを判定するための情報である。【００３６】
すなわち、パケット生成処理部１５０ａは、ＤＭＡディスクプリタに含まれるシーケンス番号を基にして、本体データが全てバッファ１３０に蓄積されたか否かを判定した後に、パケットをネットワークインターフェース部１４０に渡すことになる。【００３７】
ヘッダ分離処理部１５０ｂは、外部から受信したパケットを解析し、パケットをヘッダと本体データとに分離する処理部である。また、ヘッダ分離処理部１５０ｂは、ＤＭＡ機構部１１０に指示を出し、分離したヘッダおよび本体データのアドレスをホスト計算機２００に送信させる。なお、ヘッダおよび本体データのアドレスは、後述するホスト計算機２００のカーネル空間２２０ｂに蓄積されることになる。【００３８】
暗号化・復号化処理部１５０ｃは、パケット生成処理部１５０ａが生成したパケットを暗号化する場合に、パケットを暗号化する処理部である。また、暗号化・復号化処理部１５０ｃは、外部から受信したパケットが暗号化されている場合に、該暗号化されたパケットを復号化する。【００３９】
判定処理部１５０ｄは、外部から受信したパケットサイズなどを基にして、通常の処理を行うか、本発明の動作を行うかを判断する。具体的には、パケットサイズが所定の大きさより小さい場合には、判定処理部１５０ｄは、ヘッダ分離処理部１５０ｂに指示を出し、パケットの分離を行わせず、受信した状態のまま、パケットをホスト計算機２００に送信する。【００４０】
一方、判定処理部１５０ｄは、外部から受信したパケットサイズが所定の大きさ以上の場合には、ヘッダ分離処理部１５０に通常の処理を行わせる。このように、判断処理部１５０ｄが、ヘッダ分離処理部１５０ｂの動作を切り替えることによって、小さいサイズのパケットで性能が劣化するような事態を避けることができる。【００４１】
次に、ホスト計算機２００の構成について説明する。図１に示すように、ホスト計算機２００は、制御部２１０と、メインメモリ２２０と、ドライバ２３０とを有する。制御部２１０は、判定処理部２１０ａと、ヘッダ生成処理部２１０と、プロトコル処理部２１０ｃとを有する。【００４２】
判定処理部２１０ａは、図示しないユーザアプリケーションから送信要求を受付け、パケットサイズなどの条件から、通常の処理を行うか、本発明の動作を行うかを判断する。具体的に判定処理部２１０ａは、パケットサイズが所定の大きさよりも小さい場合には、通常の処理を行うと判定する。【００４３】
判定処理部２１０ａは、通常の処理を行うと判定した場合には、ユーザプロセス空間２２０ａに記録された本体データを、カーネル空間２２０ｂにコピーする。そして、判定処理部２１０ａは、後述するヘッダ生成処理部２１０によって生成されるヘッダとともに、ネットワークアダプタ１００に送信する。【００４４】
また、判定処理部２１０ａは、パケットサイズが所定の大きさ以上の場合には、本発明の動作を行うと判定する。この場合、ユーザプロセス空間２２０ａに記録された本体データは、カーネル空間２２０にコピーされず、ドライバ２３０によってネットワークアダプタ１００に直接送信される。【００４５】
この場合、判定処理部２１０ａは、全ての本体データが、ネットワークアダプタ１００に送信されるまで、ユーザプロセス空間の本体データを、メインメモリに固定し、本体データがハードディスク（図示しない）にページアウトされることを防ぐ。【００４６】
このように、ユーザプロセス空間２２０ａに記録された本体データを直接ネットワークアダプタに送信することによって、ユーザプロセス空間２２０ａおよびカーネル空間２２０ｂの間で、本体データのコピーの必要性をなくすことができるので、通信に伴うメインメモリ２２０の負荷を低減させることができる。【００４７】
ヘッダ生成処理部２１０ｂは、カーネル空間２２０ｂにヘッダおよびＤＭＡディスクプリタを生成し、該生成したヘッダおよびＤＭＡディスクプリタを、ドライバ２３０を介してネットワークアダプタ１００に送信する。【００４８】
プロトコル処理部２１０ｃは、ドライバ２３０を介して、ネットワークアダプタ１００が外部から受信したパケットに係るチェックサムの計算結果や、ヘッダおよび、ネットワークアダプタ１００に蓄積された本体データのアドレスなどを受信する。【００４９】
そして、プロトコル処理部２１０ｃは、ヘッダを基にしてプロトコル処理を行い、最終的な配送先を決定する。そして、プロトコル処理部２１０ｃは、対象となるユーザプロセス空間２２０ａがページアウトされないように設定した上で、本体データのアドレスを基にして、ネットワークアダプタ１００から、ドライバ２３０を介してユーザプロセス空間２２０ａに本体データを送信する。【００５０】
次に、ホスト計算機２００が行う送信前処理について説明する。図３は、ホスト計算機２００が行う送信前処理を示すフローチャートである。なお、図３では、判定処理部２１０ａが、本発明の処理を行うと判断した場合の処理について示し、通常の処理に関する説明は省略する。【００５１】
同図に示すように、判定処理部２１０ａは、ユーザアプリケーションから送信要求を受付け（ステップＳ１０１）、ユーザプロセス空間２２０ａのデータをメモリに固定し（ステップＳ１０２）、ヘッダ生成処理部２１０ｂは、カーネル空間２２０ｂの領域を確保する（ステップＳ１０３）。【００５２】
そして、ホスト計算機２００は、ネットワークアダプタ１００内のバッファ１３０を確保し（ステップＳ１０９）、１パケット分のデータをネットワークアダプタ１００に送信し（ステップＳ１０５）、送信したデータに対するネットワークアダプタ１００内のアドレスと、ＤＭＡシーケンス番号とをカーネル空間２２０ｂに記録する（ステップＳ１０６）。【００５３】
そして、ヘッダ生成処理部は、カーネル空間２２０ｂ内のヘッダを生成する領域をキューに繋ぎ（ステップＳ１０７）、判定処理部２１０ａは、ユーザプロセス空間２２０ａに本体データが有るか否かを判定する（ステップＳ１０８）。【００５４】
ユーザプロセス空間２２０ａに本体データが有る場合には（ステップＳ１０８，Ｙｅｓ）、ステップＳ１０３に移行し、ユーザプロセス空間２２０ａに本体データが無い場合には（ステップＳ１０８，Ｎｏ）、全てのデータ転送が完了するのを待ち（ステップＳ１０９）、判定処理部２１０ａは、ユーザプロセス空間２２０ａのメモリの固定を解除する（ステップＳ１１０）。【００５５】
次に、ホスト計算機２００が行う送信処理について説明する。図４は、ホスト計算機２００が行う送信処理を示すフローチャートである。同図に示すように、ヘッダ生成処理部２１０ｂは、キューに繋がれたカーネル空間２２０ｂ内にヘッダを生成し（ステップＳ２０１）、ヘッダをキューから取り出す（ステップＳ２０２）。【００５６】
そして、ヘッダ生成処理部２１０ｂは、ヘッダのアドレスをＤＭＡディスクプリタに設定し（ステップＳ２０３）、ヘッダのデータ長をＤＭＡディスクプリタに設定する（ステップＳ２０４）。【００５７】
そして、ヘッダ生成処理部２１０ｂは、ネットワークアダプタ１００内の本体データのアドレスを、ＤＭＡディスクプリタに設定し（ステップＳ２０５）、ネットワークアダプタ１００内の本体データのデータ長を、ＤＭＡディスクプリタに設定する（ステップＳ２０６）。【００５８】
そして、ヘッダ生成処理部２１０ｂは、ヘッダに関連する本体データ部分のシーケンス番号をＤＭＡディスクプリタに設定し（ステップＳ２０７）、ＤＭＡディスクプリタおよびヘッダをネットワークアダプタ１００に送信する（ステップＳ２０８）。【００５９】
次に、パケット生成処理部１５０ａがパケットを生成する処理について説明する。図５は、パケット生成処理部１５０ａがパケットを生成する処理を示すフローチャートである。同図に示すように、本体データがバッファ１３０に蓄積され（ステップＳ３０１）、ヘッダがバッファ１３０に蓄積される（ステップＳ３０２）。【００６０】
そして、パケット生成処理部１５０ａは、ＤＭＡディスクプリタを受信し（ステップＳ３０３）、ＤＭＡディスクプリタを基に、全ての本体データをバッファ１３０に蓄積したか否かを判定する（ステップＳ３０４）。【００６１】
全ての本体データをバッファ１３０に蓄積していない場合には（ステップＳ３０５，Ｎｏ）、一定時間待ち（ステップＳ３０６）、ステップＳ３０４に移行する。一方、全ての本体データをバッファ１３０に蓄積した場合には（ステップＳ３０５，Ｙｅｓ）、対応するヘッダおよび本体データを結合し（ステップＳ３０７）、ネットワークインターフェース部１４０に渡す（ステップＳ３０７）。【００６２】
次に、ヘッダ分離処理部１５０ｂが行う分離処理について説明する。図６は、ヘッダ分離処理部１５０ｂが行う分離処理を示すフローチャートである。同図に示すように、ヘッダ分離処理部１５０ｂは、チェックサム演算機構部１２０からチェックサム演算結果を受取り（ステップＳ４０１）、外部からのパケットがバッファ１３０に蓄積される（ステップＳ４０２）。【００６３】
そして、ヘッダ分離処理部１５０ｂは、ヘッダと本体データをと分離させ（ステップＳ４０３）、ヘッダと、チェックサム演算結果と、本体データのアドレスをホスト計算機２００に送信する（ステップＳ４０４）。【００６４】
上述してきたように、本実施例では、判断処理部２１０ａが、ユーザプロセス空間２２０ａに蓄積された本体データを、カーネル空間２２０ｂにコピーすること無しに、ドライバ２３０を介して直接ネットワークアダプタ１００に送信する。また、ヘッダ生成処理部２１０ｂは、ヘッダおよびＤＭＡディスクプリタを生成し、該生成したデータを、ドライバ２３０を介して、ネットワークアダプタ１００に送信する。そして、パケット生成処理部１５０ａは、ＤＭＡディスクプリタ、ヘッダおよび本体データを基にしてパケットを生成し、該生成したパケットをネットワークインターフェース部１４０を介して、宛先に送
信するので、メモリバスなどの資源の浪費を減らし、通信システムのデータ通信に係る実効効率を向上させることができる。
【産業上の利用可能性】
【００６５】
以上説明したように、本発明に係る通信装置、通信システムおよび通信方法は、パケット通信を行うネットワークアダプタなどに有用であり、特に、大量のパケットの送受信に対する実行効率を向上させる場合に適している。
【図１】
2006018895.tif 000002
【図２】
2006018895.tif 000003
【図３】
2006018895.tif 000004
【図４】
2006018895.tif 000005
【図５】
2006018895.tif 000006
【図６】
2006018895.tif 000007
【国際調査報告】
2006018895.tif 000008
2006018895.tif 000009
2006018895.tif 000010
2006018895.tif 000011