(57)【要約】【課題】  送受信パケットの分割および併合によるホストコンピュータの負荷の軽減と、送受信パケットの伝送遅延時間の短縮とを両立させる。【解決手段】  送信側ホスト１０Ａの送信側通信制御装置２０Ａにおいて、送信側ホスト１０Ａから送出されるＩＰパケット５０を、複数のＩＰフラグメントパケット６０に分割して情報ネットワーク３０に送出し、受信側通信制御装置２０Ｂで、ＩＰフラグメントパケット６０を元のＩＰパケット５０に併合して受信側ホスト１０Ｂに渡す通信システムにおいて、受信側通信制御装置２０Ｂでは、ＩＰフラグメントパケット６０の併合完了前に、ＩＰパケット５０のプロトコル処理に必要な併合ヘッダ５１−１を生成して当該受信側ホスト１０Ｂに送出し、受信側通信制御装置２０Ｂでの併合処理と、受信側ホスト１０Ｂでのプロトコル処理を並行して行うことで、併合処理に伴う伝送遅延時間を短縮する。【選択図】図１
2006005878.tif 000002
【特許請求の範囲】
【請求項１】
送信側の情報処理装置から出力される第１パケットを送信側の通信制御装置で複数の第２パケットに分割してネットワークに送信し、受信側の通信制御装置では複数の前記第２パケットを併合し前記第１パケットに復元して受信側の情報処理装置に送る通信システムの制御方法であって、
受信側の前記通信制御装置は、前記第２パケットの併合処理が終了する前に前記第１パケットを処理するための併合ヘッダを受信側の前記情報処理装置に送り、前記情報処理装置が併合ヘッダを解析して行うプロトコル処理と前記通信制御装置での前記第２パケットの併合処理とを並行して行うことを特徴とする通信システムの制御方法。
【請求項２】
情報処理装置とネットワークとの間に介在して情報の送受信を制御する通信制御装置であって、
送信側で第１パケットを断片化して生成された複数の第２パケットを受信して併合して受信側の前記情報処理装置に受け渡す機能と、
前記第２パケットから併合後の前記第１パケットを処理するための併合ヘッダを生成して、前記第２パケットの併合完了前に、受信側の前記情報処理装置に送るヘッダ解析機能と、
を含むことを特徴とする通信制御装置。
【請求項３】
情報処理装置とネットワークとの間に介在し、前記情報処理装置から受け取った第１パケットを断片化し複数の第２パケットを生成して前記ネットワークに送出する機能を備えた通信制御装置であって、
前記第２パケットのうち、併合後の前記第１パケットを処理するための併合ヘッダの生成に必要な情報を含む前記第２パケットを優先して前記ネットワークに送出する機能を含むことを特徴とする通信制御装置。
【請求項４】
情報処理装置とネットワークとの間に介在し、前記情報処理装置から受け取った第１パケットを断片化し複数の第２パケットを生成して前記ネットワークに送出する機能を備えた通信制御装置であって、
前記第２パケットのうち、併合後の前記第１パケットを処理するための併合ヘッダの生成に必要な情報を含む第３パケットを前記第２パケットとは別に前記ネットワークに送出する機能を含むことを特徴とする通信制御装置。
【請求項５】
情報処理装置とネットワークとの間に介在して情報の送受信を制御するネットワークコントローラのプログラムであって、
送信側で第１パケットを断片化して生成された複数の第２パケットを受信して併合して受信側の前記情報処理装置に受け渡す機能と、
前記第２パケットから併合後の前記第１パケットを処理するための併合ヘッダを生成して、前記第２パケットの併合完了前に、受信側の前記情報処理装置に送るヘッダ解析機能と、
を前記ネットワークコントローラに実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムの制御方法、通信制御装置、情報処理システムの制御方法、通信システム、プログラムに関し、特に、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）等の通信プロトコルを用いてパケット通信を行うコンピュータネットワーク技術等に適用して有効な技術に関する。
【背景技術】
【０００２】
コンピュータネットワークの分野では、年々高速なネットワークの物理媒体が開発され普及してきている。現在はパーソナルコンピュータがギガビットイーサネット（登録商標）のポートを備えることも珍しくは無く、最近では１０ギガビットのイーサネット（登録商標）を使うためのネットワークアダプタ（情報処理装置に接続しネットワークにデータを送れるようにするためのハードウェア）も登場している。
【０００３】
物理媒体が高速化している一方で、コンピュータネットワークで主に使われているＴＣＰ／ＩＰプロトコルの処理速度は物理媒体の通信速度に追いついていない。１０Ｇｂｉｔイーサネット（登録商標）のような超高速ネットワークでは非常に高速なＣＰＵをもつ情報処理装置でも実際の通信速度が物理媒体の速度に到達せず、ネットワークの通信能力を十分に活用できないという課題がある。このようなプロトコル処理の課題を解決し通信を高速化するための技術が盛んに検討されている。
【０００４】
現在普及しているプロトコル処理の高速化技術は、ＴＣＰフラグメントオフロードと呼ばれる技術である。この技術では、情報処理装置からネットワークアダプタにパケットを転送する際に、パケットのサイズをネットワークに転送できる最大サイズ（ＭＴＵ）よりも大きな単位で転送し、ネットワークアダプタ内で大きなサイズのパケットをネットワークに転送できるだけの大きさのパケットに分割する。このようにすると送信側の情報処理装置は、大きなデータサイズの単位でパケットのヘッダを生成することができ、パケットヘッダを生成するプロトコル処理等の頻度を下げることができる。従って低い能力のＣＰＵでも大量のデータを高速に転送することが可能になる。
【０００５】
この考え方は受信側にも適用できる。すなわち、小さなサイズのパケットをまとめあげて大きなサイズのパケットにしてから情報処理装置に送ることで、情報処理装置のプロトコル処理の負荷を軽減することができる（たとえば、特許文献１）。
【０００６】
しかしながら、この併合処理では通信のスループット（単位時間あたりの転送データ量）を向上させることはできるものの、逆に、ネットワークアダプタが併合処理を行う間、情報処理装置はプロトコル処理を開始できないために、通信の遅延時間は長くなる、という課題がある。
【０００７】
ＴＣＰセグメンテーションオフロードは、ＴＣＰのレベルでセグメントを分割する方式であるが、これ以外にも、ＩＰレベルでパケットを分割しホストの負荷を軽減する考え方もある。たとえば、特許文献２では、ネットワークカードではなく、サーバ間を接続する高速バスと、外部のイーサネット（登録商標）との間に介在する通信サーバ内で、高速バス上のデータと、イーサネット（登録商標）上でのＩＰパケットとの間におけるリアセンブル（併合）／フラグメント化を行うことで、送信元、送信先の情報処理装置の負荷を下げている。
【０００８】
上述のように、ネットワークカードで受信したパケットを蓄積し、一つの大きなパケットに併合して情報処理装置に送ることで、情報処理装置上のプロトコル処理の負荷を軽減することができる。しかしながら、受信時においてパケットを蓄積することは、蓄積するための時間だけ受信側の情報処理装置へのパケットの到達が遅れ、遅延時間の増大につながってしまうという問題がある。すなわち、受信側におけるパケット併合処理による受信側の情報処理装置の負荷軽減の効果を維持しつつ、パケットの伝送遅延時間の増大を抑制することが課題となっている。
【特許文献１】特開平６−８５８２２号公報
【特許文献２】特開平２０００−１０１６１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、送受信パケットの分割および併合によるホストコンピュータの負荷の軽減と、送受信パケットの伝送遅延時間の短縮とを両立させることが可能な技術を提供することにある。
【００１０】
本発明の他の目的は、送受信パケットの分割および併合による情報ネットワークの伝送速度の有効利用と、送受信パケットの伝送遅延時間の短縮とを両立させることが可能な技術を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の観点は、送信側の情報処理装置から出力される第１パケットを送信側の通信制御装置で複数の第２パケットに分割してネットワークに送信し、受信側の通信制御装置では複数の前記第２パケットを併合し前記第１パケットに復元して受信側の情報処理装置に送る通信システムの制御方法であって、
受信側の前記通信制御装置は、前記第２パケットの併合処理が終了する前に前記第１パケットを処理するための併合ヘッダを受信側の前記情報処理装置に送り、前記情報処理装置が併合ヘッダを解析して行うプロトコル処理と前記通信制御装置での前記第２パケットの併合処理とを並行して行う通信システムの制御方法を提供する。
【００１２】
本発明の第２の観点は、情報処理装置とネットワークとの間に介在して情報の送受信を制御する通信制御装置であって、
送信側で第１パケットを断片化して生成された複数の第２パケットを受信して併合して受信側の前記情報処理装置に受け渡す機能と、
前記第２パケットから併合後の前記第１パケットを処理するための併合ヘッダを生成して、前記第２パケットの併合完了前に、受信側の前記情報処理装置に送るヘッダ解析機能と、
を含む通信制御装置を提供する。
【００１３】
本発明の第３の観点は、情報処理装置とネットワークとの間に介在し、前記情報処理装置から受け取った第１パケットを断片化し複数の第２パケットを生成して前記ネットワークに送出する機能を備えた通信制御装置であって、
前記第２パケットのうち、併合後の前記第１パケットを処理するための併合ヘッダの生成に必要な情報を含む前記第２パケットを優先して前記ネットワークに送出する機能を含む通信制御装置を提供する。
【００１４】
本発明の第４の観点は、情報処理装置とネットワークとの間に介在し、前記情報処理装置から受け取った第１パケットを断片化し複数の第２パケットを生成して前記ネットワークに送出する機能を備えた通信制御装置であって、
前記第２パケットのうち、併合後の前記第１パケットを処理するための併合ヘッダの生成に必要な情報を含む第３パケットを前記第２パケットとは別に前記ネットワークに送出する機能を含む通信制御装置を提供する。
【００１５】
本発明の第５の観点は、情報処理装置と、前記情報処理装置とネットワークとの間に介在する通信制御装置とを含む情報処理システムの制御方法であって、
送信側において断片化されて前記ネットワークに送出された複数のパケットを前記通信制御装置において併合して一つのパケットにして前記情報処理装置に受け渡す際に、前記通信制御装置内での前記パケットの併合処理が終了する以前に併合後の前記パケットを処理するための併合ヘッダを前記情報処理装置に送り、前記情報処理装置が前記併合ヘッダを解析して行うプロトコル処理と通信制御装置における前記パケットの併合処理とを並行して行う情報処理システムの制御方法を提供する。
【００１６】
すなわち、本発明では、遅延時間の増大を抑えるため、受信側でパケットの併合を行う前に、最初のパケットがネットワークカード等の通信制御装置に到達した時点で、併合状態でのヘッダを通信制御装置内で作り、上位の情報処理装置に送ってプロトコル処理を開始させる。
【００１７】
併合状態でのヘッダの作成や、後続するネットワークからのパケットについて併合するべきか判断を行うために、通信制御装置内に簡単なヘッダ解析機構を設けることでこれを実現することもできる。
【００１８】
これによって、情報処理装置のプロトコル処理と、通信制御装置における併合するべき後続のパケットの受信を並行動作させることができる。情報処理装置のプロトコル処理は、ヘッダが送られてきた時点で開始でき、併合するべき全てのパケットデータが情報処理装置に転送された時点で完了できる。決められた一定時間内に併合するべきデータが到達しない場合には、送られてきたデータだけで処理をやり直すか、データを廃棄する。
【発明の効果】
【００１９】
本発明によれば、送受信パケットの分割および併合によるホストコンピュータの負荷の軽減と、送受信パケットの伝送遅延時間の短縮とを両立させることが可能となる。
また、送受信パケットの分割および併合による情報ネットワークの伝送速度の有効利用と、送受信パケットの伝送遅延時間の短縮とを両立させることが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図１は、本発明の一実施の形態である通信システムの構成の一例を示す概念図であり、図２は、本実施の形態の通信システムを構成する通信制御装置および情報処理装置の構成の一例を示す概念図である。
【００２１】
本実施の形態の通信システムは、送信側通信制御装置２０Ａを備えた送信側ホスト１０Ａと、受信側通信制御装置２０Ｂを備えた受信側ホスト１０Ｂと、送信側通信制御装置２０Ａと受信側通信制御装置２０Ｂの間に介在する情報ネットワーク３０、を含んでいる。
【００２２】
送信側ホスト１０Ａおよび受信側ホスト１０Ｂは、たとえば、図２に例示されるような情報処理装置１０で構成され、送信側通信制御装置２０Ａおよび受信側通信制御装置２０Ｂは、同じく図２に例示されるネットワークカード２０で構成されている。
【００２３】
なお、以下の説明では、便宜上、送信側および受信側においてネットワークカード２０の機能を区別して説明するが、通常、情報通信は、送受信が一体で行われるため、送信側通信制御装置２０Ａ、および受信側通信制御装置２０Ｂは、共通のネットワークカード２０を用いて構成することができる。
【００２４】
情報処理装置１０は、全体を制御するＣＰＵ１１と、このＣＰＵ１１にて実行されるプログラムや、データ等が格納される主記憶１２と、両者を接続するメモリバス１３を備えている。
【００２５】
主記憶１２には、基本ソフトウェアであるカーネル１２ａと、このカーネル１２ａの上で稼働するユーザプロセス１２ｂ、等のプログラムが実装されており、これらのプログラムがＣＰＵ１１にて実行されることで、情報ネットワーク３０を介した情報通信が行われる。
【００２６】
ネットワークカード２０は、ネットワークコントローラ２１、バッファメモリ２２、エンコーダ／デコーダ２３、トランシーバ２４、バスコントローラ２５等を含んでいる。
ネットワークコントローラ２１は、情報処理装置１０から受けた送信パケットを分割して情報ネットワーク３０の側に送出したり、情報ネットワーク３０を経由して到来する分割されたパケットを併合して情報処理装置１０に渡す、等の情報の送受信制御を行う。このネットワークコントローラ２１は、たとえばマイクロコンピュータ、あるいは論理回路で構成され、内蔵する図示しないＲＯＭに記憶されたプログラムで動作することにより、後述のような多様な機能を実現する。
【００２７】
バッファメモリ２２は、パケットの分割や併合処理のために、当該パケットを一時的に保持したり、管理情報を格納するために用いられる。
エンコーダ／デコーダ２３は、送信パケットのデータを通信用のデータに符号化する動作、送信側から符号化されて到来する受信パケットのデータを復号する動作、等を行う。
【００２８】
トランシーバ２４は、エンコーダ／デコーダ２３で符号化された送受信データを情報ネットワーク３０を構成する物理的な通信媒体に応じた信号形態に変換して送受信したり、情報ネットワーク３０の規格に応じた送受信動作の制御を行う。
【００２９】
バスコントローラ２５は、バッファメモリ２２と情報処理装置１０の主記憶１２との間におけるメモリバス１３を介したデータ転送の制御を行う。また、ネットワークコントローラ２１による、情報処理装置１０の主記憶１２へのアクセスの仲介を行う。
【００３０】
この実施の形態では、送信側ホスト１０Ａで最大６４ＫＢのＩＰパケットを送信側通信制御装置２０ＡでＩＰフラグメントパケットに分割し、受信側通信制御装置２０ＢにはこのＩＰフラグメントパケットが送られてくるものとする。フラグメント分割前のＩＰパケットのペイロード部にはＴＣＰのパケットが含まれているものとする。
【００３１】
図３に、本実施の形態におけるパケットのフラグメント化の一例を示す。分割前のＩＰパケット５０（第１パケット）には、ＩＰヘッダ５１と、ＴＣＰヘッダ５２およびデータ部５３が含まれている。このＩＰパケット５０は、送信側ホスト１０Ａで生成され、送信側通信制御装置２０Ａに渡される。
【００３２】
送信側通信制御装置２０Ａでは、このＩＰパケット５０をフラグメント化することにより、複数のＩＰフラグメントパケット６０（第２パケット）を構成する。個々のＩＰフラグメントパケット６０には、ＩＰフラグメントヘッダ６１が付加されている。個々のＩＰフラグメントパケット６０のサイズは、情報ネットワーク３０において転送可能な最大サイズに設定される。これにより、送信側ホスト１０Ａでは、ＩＰパケット５０の長さを、情報ネットワーク３０における最大サイズを超えるサイズにすることで、データ部５３の先頭部に、ＩＰヘッダ５１およびＴＣＰヘッダ５２を生成して付加する等の送信プロトコル処理の頻度、すなわち負荷を軽減することができる。
【００３３】
図４に例示されるように、本実施の形態の場合、受信側通信制御装置２０Ｂであるネットワークカード２０のネットワークコントローラ２１には、ヘッダ解析機構２１ａが設けられ、複数に分割されて到来するＩＰフラグメントパケット６０を併合して受信側ホスト１０Ｂに渡す際に、個々のＩＰフラグメントパケット６０のＩＰフラグメントヘッダ６１を解析することにより、併合後の併合ヘッダ５１−１を構築し、先行して受信側ホスト１０Ｂに渡し、ネットワークカード２０におけるＩＰフラグメントパケット６０の併合処理と、受信側ホスト１０Ｂの側におけるプロトコル処理とを並行して行うことを可能にする。
【００３４】
併合ヘッダ５１−１は、後述のように、併合後のＩＰパケット５０におけるＩＰヘッダ５１のうち、受信側ホスト１０Ｂにおける受信側のプロトコル処理の開始に必要な情報を含むように、ネットワークコントローラ２１の一部に設けられたヘッダ解析機構２１ａにて生成される。
【００３５】
まず、ＩＰフラグメントパケット６０から、併合ヘッダ５１−１を再構成する方法を説明する。
図５に例示されるように、分割前のＩＰパケット５０のＩＰヘッダ５１は、バージョン５１ａ、ヘッダ長５１ｂ、サービスタイプ５１ｃ、パケット長５１ｄ（Ｔｏｔａｌ  Ｌｅｎｇｔｈ）、識別子５１ｅ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）、フラグ５１ｆ（Ｆｒａｇｓ）、フラグメントオフセット５１ｇ（Ｆｒａｇｍｅｎｔ  Ｏｆｆｓｅｔ）、生存時間５１ｈ、プロトコル５１ｉ、ヘッダチェックサム５１ｊ、送信元ＩＰアドレス５１ｋ、宛先ＩＰアドレス５１ｍ、の情報で構成されている。
【００３６】
一方、分割後のＩＰフラグメントパケット６０のＩＰフラグメントヘッダ６１は、最後尾以外では、図６に例示されるように、バージョン６１ａ、ヘッダ長６１ｂ、サービスタイプ６１ｃ、パケット長６１ｄ、識別子６１ｅ。フラグ６１ｆ、フラグメントオフセット６１ｇ、生存時間６１ｈ、プロトコル６１ｉ、ヘッダチェックサム６１ｊ、送信元ＩＰアドレス６１ｋ、宛先ＩＰアドレス６１ｍ、の情報で構成されている。そして、フラグ６１ｆは、“ｘｘ１”（ｘは任意のビット）となっている。
【００３７】
最後尾のＩＰフラグメントパケット６０のＩＰフラグメントヘッダ６１は、図７に例示されるように、フラグ６１ｆが“ｘｘ０”となっている点が、最後尾以外のＩＰフラグメントヘッダ６１（図６）と異なっているのみで、他は同じである。
【００３８】
そして、このような形式のＩＰフラグメントヘッダ６１は、識別子６１ｅ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）、フラグ６１ｆ（Ｆｒａｇｓ）、フラグメントオフセット６１ｇ（Ｆｒａｇｍｅｎｔ  Ｏｆｆｓｅｔ）、パケット長６１ｄ（Ｔｏｔａｌ  Ｌｅｎｇｔｈ）を用いてＩＰフラグメントパケット６０の再構成を行うことができる。
【００３９】
フラグ６１ｆ（Ｆｒａｇｓ）中の１ビットは後続フラグメントがあるかどうかを示し、フラグメントオフセット６１ｇ（Ｆｒａｇｍｅｎｔ  Ｏｆｆｓｅｔ）はもとのＩＰデータグラムからのフラグメントのオフセットを０から始まる８バイト（Ｂｙｔｅ）単位で指定している。パケット長６１ｄ（Ｔｏｔａｌ  Ｌｅｎｇｔｈ）は、そのＩＰフラグメントパケット６０（ヘッダとデータを含む）のバイト（Ｂｙｔｅ）単位の長さである。再構成されるべきＩＰフラグメントパケット６０は同じ識別子６１ｅ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）の値をもつ。
【００４０】
ＩＰフラグメントパケット６０の場合、併合処理後のＩＰヘッダ（フラグメント再構成後のパケットヘッダ）はフラグメントの最後尾のＩＰフラグメントヘッダ６１から得られる。なお併合処理後のパケットのＴＣＰヘッダ部は最初のフラグメントにあるため、受信側ホスト１０Ｂに渡す併合ヘッダ５１−１としてはＩＰフラグメントパケット６０の先頭のフラグメントと末尾のフラグメントの両方が必要である。
【００４１】
受信側のネットワークカード２０は、ＩＰフラグメントパケット６０を、ネットワークコントローラ２１に設けられた、後述の図１０に例示される併合パケットヘッダ生成装置４１にかける。併合パケットヘッダ生成装置４１は、最後のフラグメントを認識すると、そのフラグメントで併合処理後のＩＰヘッダ（併合ヘッダ５１−１）を生成することができる。
【００４２】
具体的には、図７に示した再構成されるＩＰフラグメントヘッダ６１のパケット長６１ｄ（Ｔｏｔａｌ  Ｌｅｎｇｔｈ）を、図８に例示されるように、最後尾のＩＰフラグメントパケット６０のパケット長６１ｄ（Ｔｏｔａｌ  Ｌｅｎｇｔｈ）  ＋  最後尾のＩＰフラグメントパケット６０のフラグメントオフセット６１ｇ（Ｆｒａｇｍｅｎｔ  Ｏｆｆｓｅｔ）  ×  ８  で置き換え、ヘッダチェックサム６１ｊの値を再計算すればよい。併合パケットヘッダ生成装置４１は、この計算動作を行う。
【００４３】
こうして得られたヘッダと、最初のＩＰフラグメントパケット６０に含まれるＴＣＰヘッダ５２の部分をあわせることで、併合ヘッダ５１−１を生成することができる。
ＩＰフラグメントの場合、本実施の形態の併合ヘッダ５１−１を作成するための情報は最後のフラグメント（ＩＰフラグメントパケット６０）にある。本発明を有効に機能させるためには、最後のフラグメントを時間的に先に送ることが必要である。このため、送信側通信制御装置２０Ａには、後述の図１３で説明する併合パケットヘッダ先行送信装置４２が設けられている。通常、送信側通信制御装置２０Ａのバッファメモリ２２に格納されたＩＰパケット５０の内容のうち、ＩＰフラグメントパケット６０にフラグメント化する際の最後の部分を先に転送することは普通無いが、もともと送信データとしてのＩＰパケット５０の全体がバッファメモリ２２内にあることを考えれば最後の部分を先に転送することは可能である。
【００４４】
受信側通信制御装置２０Ｂは、併合ヘッダ５１−１を生成すると、受信側ホスト１０Ｂに送り、当該受信側ホスト１０Ｂに対して併合ヘッダ５１−１を送ったことを通知する。この通知手段としては、本実施の形態では、受信側ホスト１０Ｂの主記憶１２の一部に通知領域１２ｃを設け、この通知領域１２ｃに、バスコントローラ２５を介してアクセスして、フラグ等の通知情報を書き込むことで実現する。
【００４５】
あるいは、受信側ホスト１０Ｂへの割り込みを用いたり、逆に受信側ホスト１０Ｂから受信側通信制御装置２０Ｂの側をポーリングするなどの方法やこれらを併用する方法も考えられる。
【００４６】
併合ヘッダ５１−１が到来したことを受信側ホスト１０Ｂが認識すると、受信側ホスト１０Ｂは、その併合ヘッダ５１−１を見て、受信側としてのプロトコル処理を行う。このプロトコル処理では、ＴＣＰのようにコネクションに対応した状態を書き換えるプロトコルについては、書き換える値の作成作業だけを行い、まだ結果の反映はさせない（後述の図１８参照）。
【００４７】
この間、情報ネットワーク３０からは送信側（送信側通信制御装置２０Ａ）で生成したＩＰフラグメントパケット６０が順に到着する。受信側ホスト１０Ｂの併合ヘッダ５１−１を用いたプロトコル処理と、情報ネットワーク３０からのデータ（ＩＰフラグメントパケット６０）の到着は並行して行われる。
【００４８】
受信側通信制御装置２０Ｂに到着したデータは、受信側ホスト１０Ｂでのプロトコル処理が終わるまで当該受信側通信制御装置２０Ｂのバッファメモリ２２等に格納する方法、併合処理が終わった時点で受信側ホスト１０Ｂに転送する方法、受信側通信制御装置２０Ｂには格納せずに、順次、受信側ホスト１０Ｂ側に転送してしまう方法、のいずれの方法で処理してもよい。
【００４９】
本実施の形態では、受信側ホスト１０Ｂでのプロトコル処理が終わるまで受信側通信制御装置２０Ｂのバッファメモリ２２に格納する場合を示す。受信側通信制御装置２０Ｂ内で複数のＩＰフラグメントパケット６０の併合が完了すると、完了を受信側ホスト１０Ｂに通知し、受信側ホスト１０Ｂはこの完了を認識した時点で、併合後のデータを当該受信側ホスト１０Ｂに転送させると同時に、プロトコル処理によって書き換える状態を反映する。
【００５０】
送信側ホスト１０Ａと受信側ホスト１０Ｂとの間における情報通信での、上述の一連の処理を図９のフローチャートにまとめて示す。
すなわち、送信側ホスト１０Ａにおけるユーザプロセス１２ｂで生成された通信データは、カーネル１２ａに渡され（ステップ１０１）、ＴＣＰ／ＩＰのプロトコル処理により（ステップ１０２）、ＩＰパケット５０に構成され、送信側通信制御装置２０Ａに渡される（ステップ１０３）。
【００５１】
送信側通信制御装置２０Ａでは、ＩＰパケット５０をバッファメモリ２２上でフラグメント化する過程で、まず最後尾のＩＰフラグメントパケット６０を生成して（ステップ１０４）、受信側通信制御装置２０Ｂの側に送信し（ステップ１０５）、以降、ＩＰパケット５０の複数のＩＰフラグメントパケット６０への分割処理を行うとともに（ステップ１０６）、先頭のＩＰフラグメントパケット６０を受信側通信制御装置２０Ｂに送る（ステップ１０７）。
【００５２】
受信側通信制御装置２０Ｂでは、ステップ１０５で受け取った最後尾のＩＰフラグメントパケット６０と、ＴＣＰヘッダ５２を含む先頭のＩＰフラグメントパケット６０から、併合ヘッダ５１−１を生成し（ステップ１０８）、この併合ヘッダ５１−１を受信側ホスト１０Ｂに送る（ステップ１０９）。
【００５３】
この併合ヘッダ５１−１を受け取った受信側ホスト１０Ｂは、当該併合ヘッダ５１−１に含まれる情報に基づいて、受信側のＴＣＰ／ＩＰのプロトコル処理を開始する（ステップ１１３）。
【００５４】
この時、受信側通信制御装置２０Ｂでは、情報ネットワーク３０を介して送信側通信制御装置２０Ａから順次到来するＩＰフラグメントパケット６０を受信して（ステップ１１０）、元のＩＰパケット５０に併合する併合処理を、受信側ホスト１０Ｂ側のプロトコル処理と並行して遂行し（ステップ１１１）、併合中にＩＰフラグメントパケット６０にエラーが検出された場合には、後述の図１６、図１７に例示される方法にて必要に応じてエラー通知を受信側ホスト１０Ｂに対して行い、併合後のＩＰパケット５０を受信側ホスト１０Ｂに渡す（ステップ１１２）。
【００５５】
受信側ホスト１０Ｂは、ステップ１１２にて受け取ったデータを、プロトコル処理結果に基づいて自装置内のユーザプロセス１２ｂに渡す（ステップ１１４）。
また、プロトコル処理中に受信側通信制御装置２０Ｂからエラーが通知された場合には、必要に応じてプロトコル処理結果をキャンセルする。
【００５６】
このような本実施の形態の場合の時間的な処理の流れを、従来の方法と比べると図１０のようになる。
すなわち、図１０（ｂ）の従来の方法では、受信側通信制御装置２０ＢにおけるＩＰフラグメントパケット６０の併合処理と、受信側通信制御装置２０Ｂから受信側ホスト１０Ｂへの併合後のＩＰパケット５０のデータ転送処理と、受信側ホスト１０Ｂにおけるプロトコル処理とが、逐次、時系列的に行われるので、ＩＰパケット５０のＩＰフラグメントパケット６０への分割および受信側通信制御装置２０Ｂ側でのＩＰパケット５０への復元に伴う伝送遅延時間が大きくなる。
【００５７】
これに対して、図１０（ａ）のように、本実施の形態の場合には、従来の方法に比べると、受信側ホスト１０Ｂにおけるプロトコル処理と、受信側通信制御装置２０Ｂにおける併合処理の並行動作が可能なため、ＩＰフラグメントパケット６０のＩＰパケット５０への併合処理に伴う遅延時間の短縮が可能となる。この本実施の形態の並行処理のメリットは、受信側ホスト１０Ｂにおけるプロトコル処理が重い（複雑で所要時間が長い）場合に特に顕著なものとなる。
【００５８】
このような、本実施の形態の効果を、図１１にてより具体的に示す。この図１１では具体例として、１０Ｇｂｐｓ（１．２５ＧＢ／ｓ）のネットワークを用いて、送信側の送信側通信制御装置２０Ａが４ＫＢのＩＰパケットを（登録商標）の一般的なＭＴＵ（Maximum Transfer Unit）でＩＰフラグメント分割して送り、これらのパケットを受信側通信制御装置２０Ｂが受信する場合を考える。この場合１．５ＫＢのパケット２つと約５００Ｂのパケットに分割されて転送が行われることになる。
【００５９】
まず、図１１（ｂ）のように、従来方式の場合で考える。受信側では全てのパケットがネットワークカードに受信されるまでに４ＫＢ／１．２５ＧＢ／ｓ＝３．２μｓの時間がかかる。このネットワークからネットワークカード内へのデータ転送の間に併合処理が同時に行われ、併合処理が完了するには結局３．２μｓかかる。
【００６０】
次にネットワークカードとホスト計算機間の速度も１０Ｇｂｐｓと仮定すると、ネットワークカードからホスト計算機への転送も３．２μｓかかる。ＴＣＰ／ＩＰのプロトコル処理は、２．４ＧＨｚのＣＰＵを用いたとしても、１パケットあたり５μｓ〜１０μｓかかる。更にプロトコル処理のうち、ホスト計算機のカーネルからユーザにデータコピーする部分が別途かかり、４ＫＢのデータでコピー速度が１０Ｇｂｐｓとすると３．２μｓかかる。従って図１１（ｂ）の従来方式で、ネットワークカードに先頭パケットが到着してからホスト計算機でプロトコル処理が終了するまでの時間を合計すると、プロトコル処理（ヘッダ部だけで可能なもの）を５μｓとして１４．６μｓの時間がかかる。
【００６１】
次に、図１１（ａ）に例示される本実施の形態のように併合ヘッダを先行転送する場合を考える。この場合は、受信側ホスト１０Ｂが併合ヘッダ５１−１を受け取ってすぐにプロトコル処理を開始できる。併合ヘッダ作成時間＋状態反映の時間は、プロトコル処理の時間に比べて非常に小さくできるので、併合ヘッダ作成時間＋状態反映＋プロトコル処理の時間は６．４μｓ以下にできる。従って、合計の処理時間は受信側通信制御装置２０Ｂ上の併合処理＋受信側ホスト１０Ｂへのデータ転送時間＋カーネル−ユーザ間コピーの合計９．６μｓとなる。したがってこの図１１（ａ）の本実施の形態の場合、従来方式に比べ３５％遅延時間を改善できる。このような短縮効果は、科学技術計算のように情報ネットワーク３０の遅延時間が性能に影響するようなアプリケーションプログラム（ユーザプロセス１２ｂ）に有効である。
【００６２】
上記の例からもわかるように本実施の形態の方式の効果は受信側ホスト１０ＢのＣＰＵ１１の能力と、分割前のＩＰパケット５０のパケットサイズに依存する。さまざまなシステムでこの方式の効果を最大にするために、受信側ホスト１０Ｂの能力に応じて分割前のＩＰパケット５０のパケットサイズを選択するようにしてもよい。
【００６３】
本実施の形態の併合ヘッダ先行転送方式では、受信側ホスト１０ＢにおけるＴＣＰ／ＩＰプロトコル処理として、データ部なしの、ヘッダ情報のみで処理を行う必要がある。ヘッダ情報のみの場合でも、基本的にＴＣＰのデータチェックサム以外の処理は可能である。例えば、（処理１）ＴＣＰやＩＰのヘッダサイズのチェック、（処理２）ヘッダチェックサムの検証、（処理３）ＴＣＰのソース、デスティネーションポートペアの判定によるコネクションの識別、（処理４）受信パケットのシーケンス番号とデータサイズから受信したデータが受信Ｗｉｎｄｏｗの範囲にあるかどうかの判定、（処理５）受信パケットのＡｃｋフィールドを読み、逆方向のストリームについての転送がどこまで終わったかを認識し、転送が終了したデータのバッファを解放して再利用に備える、等の各処理である。更に、一般的にはパケット単位の処理ではないが、割り込みの処理も併合ヘッダ５１−１が受信側ホスト１０Ｂに到着した時点で先行して行うことができる。
【００６４】
ＴＣＰのデータチェックサムに関しては従来方式でもネットワークカード内で生成できるものが既にあり、チェックサムオフロードとして利用されている。上記の例においても、チェックサム計算はネットワークからパケットをネットワークカードが受け取る時点で行うことを想定している。従って上記の例で受信側ホスト１０Ｂのプロトコル処理にチェックサムの処理は含んでいない。従来方式の場合、チェックサム結果はネットワークからのパケットの転送時にホストに渡している。
【００６５】
本実施の形態の併合ヘッダ先行転送方式においても、パケットデータを受信側ホスト１０Ｂに転送する時点で、チェックサム結果を当該受信側ホスト１０Ｂ側に通知することを想定している。もしくは、チェックサムエラーを検出したらデータ転送さえせずにエラー通知するような方法も考えられる。
【００６６】
図１２に、ネットワークカード２０における併合パケットヘッダ生成装置４１の実現例を示す。この併合パケットヘッダ生成装置４１はヘッダチェックサム判定機構４１ａ、フラグメントオフセット判定機構４１ｂ、フラグ判定機構４１ｃ、Ｔｏｔａｌ＿Ｌｅｎｇｔｈ演算反映機構４１ｄ、チェックサム演算反映機構４１ｅ、上位層ヘッダ抽出機構４１ｆ、併合ヘッダ構成用メモリ領域４１ｇ、論理積回路４１ｉ、論理積回路４１ｊからなっている。
【００６７】
最終フラグメントのＩＰフラグメントパケット６０がこの装置に入力されると、まずヘッダチェックサムを判定したあと、フラグメントオフセット判定機構４１ｂはフラグメントオフセット６１ｇが０でないことを判定し、フラグ判定機構４１ｃは後続フラグメントが無いことを判定する。
【００６８】
すなわち、フラグメントオフセット判定機構４１ｂは、判定結果４１ｂ−１として、フラグメントオフセットが０の場合は０を、フラグメントオフセットが非０の場合は１を出力する。
【００６９】
また、フラグ判定機構４１ｃは、判定結果４１ｃ−１として、後続フラグメントありの場合は１を、なしの場合は０を出力する。
そして、先頭フラグメントパケット判定を行う論理積回路４１ｊには、判定結果４１ｂ−１を論理反転したものと、判定結果４１ｃ−１を論理反転したものが入力され、これらの論理積が１の時に先頭フラグメントパケットと判定され、判定結果が上位層ヘッダ抽出機構４１ｆに入力される。
【００７０】
また、最終フラグメントパケット判定を行う論理積回路４１ｉには、判定結果４１ｂ−１と、判定結果４１ｃ−１を論理反転したものが入力され、これらの論理積が１のときに、最終フラグメントパケットと判定され、判定結果がＴｏｔａｌ＿Ｌｅｎｇｔｈ演算反映機構４１ｄに入力される。
【００７１】
論理積回路４１ｉで最終フラグメントパケットの判定が成立するとＴｏｔａｌ＿Ｌｅｎｇｔｈ演算反映機構４１ｄを起動し、フラグメントオフセット６１ｇとパケット長６１ｄ（Ｔｏｔａｌ  Ｌｅｎｇｔｈ）から新たなＴｏｔａｌ  Ｌｅｎｇｔｈを計算する。結果はパケットのヘッダ部に反映され、このパケットのヘッダ部についてチェックサム演算反映機構４１ｅがチェックサムを計算し反映させる。この結果できあがった併合後のＩＰヘッダ５１を、バッファメモリ２２における併合ヘッダ構成用メモリ領域４１ｇに入れる。
【００７２】
先頭フラグメントのパケットがこの装置に入力されると、チェックサムを判定したあと、フラグ判定機構４１ｃ、フラグメントオフセット判定機構４１ｂ、論理積回路４１ｊによって上位層ヘッダ抽出機構４１ｆが動作し、先頭フラグメントパケットから上位層ヘッダ部（この場合、ＴＣＰヘッダ５２）を含む部分が抽出され、併合ヘッダ構成用メモリ領域４１ｇに送られる。この部分は正確に上位層ヘッダ部だけでなくともよく、上位層ヘッダを含んでいればよい。併合ヘッダ構成用メモリ領域４１ｇにある両方のヘッダは組み合わされて、併合ヘッダ５１−１として出力される。
【００７３】
次に、図１３を参照して、ネットワークカード２０における併合パケットヘッダ先行送信装置４２の構成例について説明する。この併合パケットヘッダ先行送信装置４２は、たとえば、送信側通信制御装置２０Ａとしてのネットワークカード２０におけるネットワークコントローラ２１に備えられる。
【００７４】
この装置は、送信側ホスト１０ＡからうけとったＩＰパケット５０を格納するメモリ装置４２ａ、分割後のＩＰフラグメントヘッダ６１を生成する分割ヘッダ生成装置４２ｂ、生成したヘッダとデータを組み合わせて、ＩＰフラグメントパケット６０を構成し、情報ネットワーク３０へ送り出すパケット送信装置４２ｃからなる。メモリ装置４２ａとしては、バッファメモリ２２の一部を使用することができる。
【００７５】
最後の分割パケット（受信側通信制御装置２０Ｂで併合ヘッダ５１−１を生成可能なパケット）を他の分割パケットに対して先行して送るために、分割ヘッダ生成装置４２ｂはパケットを受信するとヘッダ部からまず分割後の最後のヘッダを生成する。分割ヘッダ生成装置４２ｂはそのヘッダと、ヘッダに対応するデータ部分のアドレスをパケット送信装置４２ｃに送る。パケット送信装置４２ｃはメモリ装置４２ａに対して、そのアドレスを用いてデータを要求し、ヘッダと組み合わせてパケットを作成し、送信する。
【００７６】
次に、図１４を参照して、送信側通信制御装置２０Ａとしてのネットワークカード２０における併合パケットヘッダ重複送信装置４３の実現例について説明する。この併合パケットヘッダ重複送信装置４３は、送信側ホスト１０Ａから到来するＩＰパケット５０を一時的に保持するメモリ装置４３ａと、分割ヘッダ生成装置４３ｂと、パケット送信装置４３ｃを含んでいる。この併合パケットヘッダ重複送信装置４３は、たとえば、ネットワークコントローラ２１の一部に実装される。
【００７７】
上述の併合パケットヘッダ先行送信装置４２では分割前のＩＰパケット５０の全体が、送信側ホスト１０Ａから送信側通信制御装置２０Ａに届いてからでなければ分割パケット（ＩＰフラグメントパケット６０）の送出を開始できなかった。それに対して、この併合パケットヘッダ重複送信装置４３においては、分割ヘッダ生成装置４３ｂは、分割前のＩＰパケット５０のヘッダが送信側通信制御装置２０Ａのバッファメモリ２２（メモリ装置４３ａ）に届いた段階で、受信側通信制御装置２０Ｂで併合ヘッダ５１−１を生成可能な、最後尾のＩＰフラグメントパケット６０に相当する冗長パケット７０（第３パケット）を作り、パケット送信装置４３ｃを経由して情報ネットワーク３０に送信する。
【００７８】
この冗長パケット７０の送信後、本来のデータを含む分割パケットを送信する。受信側通信制御装置２０Ｂではこの冗長パケット７０が到着した時点で併合ヘッダ５１−１を生成する。先行して送信する冗長パケット７０のパケットヘッダ７１は見かけ上分割パケットの最後尾のＩＰフラグメントパケット６０のＩＰフラグメントヘッダ６１のように見せかけて作る。具体的にはパケットヘッダ７１を本来の最後の分割パケットと同じにする。冗長パケット７０のデータ７２はすべて０にする。図１４はこの冗長パケット７０を送信する時点の動作を示している。
【００７９】
受信側通信制御装置２０Ｂでは、この先行送信する冗長パケット７０と、本来の最後の分割パケット（ＩＰフラグメントパケット６０）のどちらが本来の分割パケットかは区別できない。このため受信側通信制御装置２０Ｂでは、受けたパケットのデータ部として、両方のパケットのデータ部（ＩＰフラグメントパケット６０のデータ部５３と、冗長パケット７０のデータ７２）を論理和した値を使う。この論理和演算をなるべく軽減するために、最後の分割パケットがなるべく小さいサイズになるように、送信側通信制御装置２０Ａで分割のしかたを調整することができる。具体的には最後の分割の一つ前の分割パケットのサイズを調整し、最後の分割パケットのサイズが最小になるようにする。
【００８０】
図１５にて、受信側通信制御装置２０Ｂとしてのネットワークカード２０に備えられるパケット併合完了通知装置４４の一例を説明する。パケット併合完了通知装置４４は、ネットワークコントローラ２１の一部として実装することができる。
【００８１】
このパケット併合完了通知装置４４は、受信側通信制御装置２０Ｂでパケットの併合処理完了を受信側ホスト１０Ｂに伝え、受信側ホスト１０Ｂがプロトコル処理の終了後、受信側通信制御装置２０Ｂでの併合処理完了をチェックし、認識するための機構を提供する。受信側ホスト１０Ｂは併合ヘッダ５１−１に対するプロトコル処理を終えてから、受信側通信制御装置２０Ｂの併合処理完了をチェックし、完了を認識するとデータをアプリケーション（ユーザプロセス１２ｂ）に転送することができる。
【００８２】
このパケット併合完了通知装置４４は、受信側通信制御装置２０Ｂにおける併合処理の完了を判定する併合完了機構４４ａ、判定結果を、受信側ホスト１０Ｂの主記憶１２の特定の通知領域１２ｃに書き込むフラグ書込機構４４ｂから成る。主記憶１２の通知領域１２ｃは、ネットワークカード２０内のバッファメモリ２２における併合処理用バッファアドレス（各併合パケット毎にある）に対応するエントリをもつ。受信側ホスト１０Ｂは併合ヘッダ５１−１と一緒に受信側ホスト１０Ｂに転送した併合処理用バッファアドレスから対応する通知領域１２ｃのエントリを算出することで、その併合ヘッダ５１−１に対するＩＰパケット５０の併合処理が完了したか否かを判定することができる。
【００８３】
図１６にて、受信側通信制御装置２０Ｂとしてのネットワークカード２０に備えられるデータエラー検出・通知装置４５の一例を説明する。このデータエラー検出・通知装置４５は、ネットワークコントローラ２１の一部に実装することができる。データエラー検出・通知装置４５は、パケットエラー判定機構４５ａと、フラグ書込機構４５ｂと、併合処理用バッファ４５ｃからなる。
【００８４】
このデータエラー検出・通知装置４５は、パケットエラー判定機構４５ａにて、情報ネットワーク３０から受信側通信制御装置２０Ｂに到来するパケットのチェックサム（ＩＰヘッダチェックサム、ＴＣＰヘッダチェックサム）を判定し、そのパケットが分割パケット（ＩＰフラグメントパケット６０）でエラーがある場合は、フラグ書込機構４５ｂが、分割パケットが格納される併合処理用バッファ４５ｃに対応する、受信側ホスト１０Ｂの主記憶１２の通知領域１２ｃにエラーを記録することで、併合処理が失敗したことを受信側ホスト１０Ｂに通知する。
【００８５】
このデータエラー検出・通知装置４５の機構は、上述のパケット併合完了通知装置４４と組み合わせて実現でき、例えば通知領域１２ｃの、併合後の個々のＩＰパケット５０に対応するビットを１ｂｉｔから２ｂｉｔにして実現することができる。
【００８６】
パケットエラー判定機構４５ａは入力パケットのＩＰヘッダチェックサムを判定すると同時に、そのパケットのデータ部に対するチェックサムを計算し、併合処理を行うパケットの群ごとに用意するチェックサム蓄積領域にチェックサムを蓄積（前の値に加算）していく。併合処理が終わった時点でこのチェックサムからＴＣＰチェックサムを計算するための擬似ヘッダのチェックサムを加算することで、併合処理終了後にデータ全体にエラーがあるかを判定する。エラーの通知はＩＰヘッダチェックサムエラー、ＴＣＰチェックサムエラーの両方の場合に通知領域１２ｃに設定される。
【００８７】
図１７にて、受信側通信制御装置２０Ｂとしてのネットワークカード２０に備えられるデータタイムアウト検出・通知装置４６の一例について説明する。このデータタイムアウト検出・通知装置４６は、ネットワークコントローラ２１の一部に実装することができる。
【００８８】
このデータタイムアウト検出・通知装置４６は併合処理の開始時にタイマを起動して併合処理のタイムアウトが起きたら受信側ホスト１０Ｂの通知領域１２ｃにエラーを記録することで併合処理の失敗を通知する。図１７はその実現例であり、タイムアウト検出機構４６ａ、フラグ書込機構４６ｂ、タイマ用カウンタ４６ｃ等で構成されている。
【００８９】
このデータタイムアウト検出・通知装置４６は上述のデータエラー検出・通知装置４５と組み合わせることができ、通知領域１２ｃを共通化することも可能である。
タイムアウトの検出は、同時並行的に行っている複数の併合処理に対してそれぞれ行う必要がある。このために、タイムアウト検出機構４６ａはその内部に併合処理ごとのタイマ用カウンタ４６ｃをもつ。併合処理ごとにある複数のタイマ用カウンタ４６ｃは、一つのタイマ用カウンタの出力によってカウントアップされる。併合処理開始時には併合処理ごとのタイマ用カウンタ４６ｃの０ｂｉｔをクリアしておき、この値がある値になったらタイムアウトのトリガを発生させる。例えば併合処理ごとのタイマ用カウンタ４６ｃは２ｂｉｔのカウンタにしておき、それらのタイマ用カウンタ４６ｃは、もとになる１つのカウンタ（例えば１０ｂｉｔ）が全て１になったらカウントアップするようにすることで、併合処理ごとのタイマ用カウンタ４６ｃのビット数を減らすことができる。
【００９０】
図１８を参照して、受信側ホスト１０Ｂとしての情報処理装置１０に備えられるデータ無効化機構４７の一例について説明する。このデータ無効化機構４７は、情報処理装置１０におけるカーネル１２ａの一部として実装することができる。
【００９１】
データ無効化機構４７は、プロトコル処理プログラム４７ａ、プロトコル処理結果一時格納領域４７ｂ、プロトコル処理状態設定領域４７ｃ、からなる。
このデータ無効化機構４７は、上述のデータエラー検出・通知装置４５やデータタイムアウト検出・通知装置４６によるエラーやタイムアウトした場合、受信側ホスト１０Ｂにおいて、先行して行っていたプロトコル処理を無効にする機構である。
【００９２】
受信側ホスト１０Ｂのプロトコル処理プログラム４７ａは、併合ヘッダ５１−１に対するプロトコル処理を行う際、受信側通信制御装置２０Ｂで併合処理が完了するまではプロトコル処理結果を、プロトコル処理結果一時格納領域４７ｂに記憶し、受信側ホスト１０Ｂがもつプロトコル処理の状態（プロトコル処理状態設定領域４７ｃ）に反映させない。
【００９３】
そして、プロトコル処理の終了段階で通知領域１２ｃにエラーやタイムアウトが出ていないかチェックし、エラーやタイムアウトの場合にはその併合ヘッダ５１−１に対するプロトコル処理にて行った処理結果を状態に反映させずに廃棄する。エラーがない場合には、プロトコル処理状態設定領域４７ｃに反映させる。
【００９４】
以上説明したように、本発明の実施の形態によれば、送信側通信制御装置２０ＡでＩＰパケット５０をＩＰフラグメントパケット６０に分割し、受信側通信制御装置２０Ｂでは、ＩＰフラグメントパケット６０を併合してＩＰパケット５０を復元する受信側併合処理による、送信側ホスト１０Ａおよび受信側ホスト１０Ｂでのプロトコル処理の負荷軽減効果を損なわずに、受信側ホスト１０Ｂおよび受信側通信制御装置２０Ｂの側における併合処理による伝送遅延時間の増大を防止でき、スループットの向上と、伝送遅延時間の削減の両方で、高速な情報ネットワーク３０の転送性能を有効に活用することができる。
【００９５】
換言すれば、情報ネットワーク３０の情報伝送速度を有効に活用した送信側ホスト１０Ａおよび受信側ホスト１０Ｂによる高速なコンピュータネットワークを実現できる。
なお、本発明は、上述の実施の形態に例示した構成に限らず、その趣旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
（付記１）
送信側の情報処理装置から出力される第１パケットを送信側の通信制御装置で複数の第２パケットに分割してネットワークに送信し、受信側の通信制御装置では複数の前記第２パケットを併合し前記第１パケットに復元して受信側の情報処理装置に送る通信システムの制御方法であって、
受信側の前記通信制御装置は、前記第２パケットの併合処理が終了する前に前記第１パケットを処理するための併合ヘッダを受信側の前記情報処理装置に送り、前記情報処理装置が併合ヘッダを解析して行うプロトコル処理と前記通信制御装置での前記第２パケットの併合処理とを並行して行うことを特徴とする通信システムの制御方法。
（付記２）
付記１記載の通信システムの制御方法において、送信側の前記通信制御装置では、前記第１パケットから生成した前記第２パケットのうち、前記併合ヘッダの生成に必要な情報を含む前記第２パケットを優先して前記ネットワークに送出することを特徴とする通信システムの制御方法。
（付記３）
付記１記載の通信システムの制御方法において、前記第１パケットはＩＰパケットであり、前記第２パケットは、前記ＩＰパケットを断片化したＩＰフラグメントであることを特徴とする通信システムの制御方法。
（付記４）
情報処理装置とネットワークとの間に介在して情報の送受信を制御する通信制御装置であって、
送信側で第１パケットを断片化して生成された複数の第２パケットを受信して併合して受信側の前記情報処理装置に受け渡す機能と、
前記第２パケットから併合後の前記第１パケットを処理するための併合ヘッダを生成して、前記第２パケットの併合完了前に、受信側の前記情報処理装置に送るヘッダ解析機能と、
を含むことを特徴とする通信制御装置。
（付記５）
情報処理装置とネットワークとの間に介在し、前記情報処理装置から受け取った第１パケットを断片化し複数の第２パケットを生成して前記ネットワークに送出する機能を備えた通信制御装置であって、
前記第２パケットのうち、併合後の前記第１パケットを処理するための併合ヘッダの生成に必要な情報を含む前記第２パケットを優先して前記ネットワークに送出する機能を含むことを特徴とする通信制御装置。
（付記６）
情報処理装置とネットワークとの間に介在し、前記情報処理装置から受け取った第１パケットを断片化し複数の第２パケットを生成して前記ネットワークに送出する機能を備えた通信制御装置であって、
前記第２パケットのうち、併合後の前記第１パケットを処理するための併合ヘッダの生成に必要な情報を含む第３パケットを前記第２パケットとは別に前記ネットワークに送出する機能を含むことを特徴とする通信制御装置。
（付記７）
情報処理装置とネットワークとの間に介在して情報の送受信を制御するネットワークコントローラのプログラムであって、
送信側で第１パケットを断片化して生成された複数の第２パケットを受信して併合して受信側の前記情報処理装置に受け渡す機能と、
前記第２パケットから併合後の前記第１パケットを処理するための併合ヘッダを生成して、前記第２パケットの併合完了前に、受信側の前記情報処理装置に送るヘッダ解析機能と、
を前記ネットワークコントローラに実現させるプログラム。
（付記８）
情報処理装置と、前記情報処理装置とネットワークとの間に介在する通信制御装置とを含む情報処理システムの制御方法であって、
送信側において断片化されて前記ネットワークに送出された複数のパケットを前記通信制御装置において併合して一つのパケットにして前記情報処理装置に受け渡す際に、前記通信制御装置内での前記パケットの併合処理が終了する以前に併合後の前記パケットを処理するための併合ヘッダを前記情報処理装置に送り、前記情報処理装置が前記併合ヘッダを解析して行うプロトコル処理と通信制御装置における前記パケットの併合処理とを並行して行うことを特徴とする情報処理システムの制御方法。
（付記９）
付記１１記載の情報処理システムの制御方法において、前記通信制御装置から前記情報処理装置に前記併合処理の完了を前記情報処理装置内のメモリに設けられた通知フィールドを介して伝達する機能を備え、前記情報処理装置は、前記併合ヘッダに基づくプロトコル処理を完了したあと、前記パケットのデータをアプリケーションに転送する前に該当する前記パケットの併合処理が完了したかどうかを前記通知フィールドを参照して判断し、完了していればデータ転送を開始することを特徴とする情報処理システムの制御方法。
（付記１０）
付記１１記載の情報処理システムの制御方法において、前記通信制御装置内に受信した前記パケットのエラー検出をするエラー検出装置を備え、併合するべきパケット内にエラーパケットが含まれる場合は併合失敗の通知を受信側情報処理装置に伝えることを特徴とする情報処理システムの制御方法。
（付記１１）
付記１１記載の情報処理システムの制御方法において、受信側の前記通信制御装置内にタイマを備え、一定時間後に併合するべきパケットが全て到着しなかった場合は併合失敗の通知を受信側の前記情報処理装置に伝えることを特徴とする情報処理システムの制御方法。
（付記１２）
付記１１記載の情報処理システムの制御方法において、受信側の前記情報処理装置が受信側の通信制御装置から前記パケットの併合失敗の通知を受け取った場合、既に受け取った前記併合ヘッダを廃棄し、前記通信制御装置との間のデータ転送の開始をやめ、必要があれば送達確認の送付をやめ、前記通信制御装置の側では併合するべきパケットデータを廃棄することで既にプロトコル処理と併合処理がスタートしている場合でも処理を中止することを特徴とする情報処理システムの制御方法。
（付記１３）
送信側の情報処理装置のパケットを通信制御装置で分割してネットワークに送信し、受信側の通信制御装置でこれらを併合して一つのパケットにしてから受信側の情報処理装置に送る通信システムにおいて、前記通信制御装置内でのパケット併合処理が終了する以前に併合ヘッダを前記情報処理装置に送り、前記情報処理装置が併合ヘッダを解析して行うプロトコル処理と前記通信制御装置の内部での併合処理を並行して行うことを特徴とする通信システム。
【図面の簡単な説明】
【００９６】
【図１】本発明の一実施の形態である通信システムの構成の一例を示す概念図である。
【図２】本発明の一実施の形態である通信システムを構成する通信制御装置および情報処理装置の構成の一例を示す概念図である。
【図３】本発明の一実施の形態である通信システムにおけるパケットのフラグメント化の一例を示す概念図である。
【図４】本発明の一実施の形態である通信システムを構成する通信制御装置の内部構成の一例を示す概念図である。
【図５】本発明の一実施の形態である通信システムで取り扱う分割前のＩＰパケットの構成を示す概念図である。
【図６】本発明の一実施の形態である通信システムで取り扱う分割後の最後尾以外のＩＰパケットの構成を示す概念図である。
【図７】本発明の一実施の形態である通信システムで取り扱う分割後の最後尾のＩＰパケットの構成を示す概念図である。
【図８】本発明の一実施の形態である通信システムを構成する通信制御装置における併合ヘッダの生成方法を示す概念図である。
【図９】本発明の一実施の形態である通信システムにおける送受信処理を示すフローチャートである。
【図１０】（ａ）および（ｂ）は、本発明の通信システムの制御方法と従来の方法の効果を比較対照して示す概念図である。
【図１１】（ａ）および（ｂ）は、本発明の通信システムの制御方法と従来の方法の効果を具体的な数値で比較対照して示す概念図である。
【図１２】本発明の一実施の形態である通信システムを構成する通信制御装置に備えられる併合パケットヘッダ装置の構成の一例を示す概念図である。
【図１３】本発明の一実施の形態である通信システムを構成する通信制御装置に備えられる併合パケットヘッダ先行送信装置の構成の一例を示す概念図である。
【図１４】本発明の一実施の形態である通信システムを構成する通信制御装置に備えられる併合パケットヘッダ重複送信装置の構成の一例を示す概念図である。
【図１５】本発明の一実施の形態である通信システムを構成する通信制御装置に備えられるパケット併合完了通知装置の構成の一例を示す概念図である。
【図１６】本発明の一実施の形態である通信システムを構成する通信制御装置に備えられるデータエラー検出・通知装置の構成の一例を示す概念図である。
【図１７】本発明の一実施の形態である通信システムを構成する通信制御装置に備えられるデータタイムアウト検出・通知装置の構成の一例を示す概念図である。
【図１８】本発明の一実施の形態である通信システムを構成する通信制御装置に備えられるデータ無効化機構の構成の一例を示す概念図である。
【符号の説明】
【００９７】
１０  情報処理装置
１０Ａ  送信側ホスト
１０Ｂ  受信側ホスト
１１  ＣＰＵ
１２  主記憶
１２ａ  カーネル
１２ｂ  ユーザプロセス
１２ｃ  通知領域
１３  メモリバス
２０  ネットワークカード
２０Ａ  送信側通信制御装置
２０Ｂ  受信側通信制御装置
２１  ネットワークコントローラ
２１ａ  ヘッダ解析機構
２２  バッファメモリ
２３  エンコーダ／デコーダ
２４  トランシーバ
２５  バスコントローラ
３０  情報ネットワーク
４１  併合パケットヘッダ生成装置
４１ａ  ヘッダチェックサム判定機構
４１ｂ  フラグメントオフセット判定機構
４１ｃ  フラグ判定機構
４１ｄ  Ｔｏｔａｌ＿Ｌｅｎｇｔｈ演算反映機構
４１ｅ  チェックサム演算反映機構
４１ｆ  上位層ヘッダ抽出機構
４１ｇ  併合ヘッダ構成用メモリ領域
４２  併合パケットヘッダ先行送信装置
４２ａ  メモリ装置
４２ｂ  分割ヘッダ生成装置
４２ｃ  パケット送信装置
４３  併合パケットヘッダ重複送信装置
４３ａ  メモリ装置
４３ｂ  分割ヘッダ生成装置
４３ｃ  パケット送信装置
４４  パケット併合完了通知装置
４４ａ  併合完了機構
４４ｂ  フラグ書込機構
４５  データエラー検出・通知装置
４５ａ  パケットエラー判定機構
４５ｂ  フラグ書込機構
４５ｃ  併合処理用バッファ
４６  データタイムアウト検出・通知装置
４６ａ  タイムアウト検出機構
４６ｂ  フラグ書込機構
４６ｃ  タイマ用カウンタ
４７  データ無効化機構
４７ａ  プロトコル処理プログラム
４７ｂ  プロトコル処理結果一時格納領域
４７ｃ  プロトコル処理状態設定領域
５０  ＩＰパケット
５１  ＩＰヘッダ
５１−１  併合ヘッダ
５１ａ  バージョン
５１ｂ  ヘッダ長
５１ｃ  サービスタイプ
５１ｄ  パケット長
５１ｅ  識別子
５１ｆ  フラグ
５１ｇ  フラグメントオフセット
５１ｈ  生存時間
５１ｉ  プロトコル
５１ｊ  ヘッダチェックサム
５１ｋ  送信元ＩＰアドレス
５１ｍ  宛先ＩＰアドレス
５２  ＴＣＰヘッダ
５３  データ部
６０  ＩＰフラグメントパケット
６１  ＩＰフラグメントヘッダ
６１ａ  バージョン
６１ｂ  ヘッダ長
６１ｃ  サービスタイプ
６１ｄ  パケット長
６１ｅ  識別子
６１ｆ  フラグ
６１ｇ  フラグメントオフセット
６１ｈ  生存時間
６１ｉ  プロトコル
６１ｊ  ヘッダチェックサム
６１ｋ  送信元ＩＰアドレス
６１ｍ  宛先ＩＰアドレス
７０  冗長パケット
７１  パケットヘッダ
７２  データ
【図１】
2006005878.tif 000003
【図２】
2006005878.tif 000004
【図３】
2006005878.tif 000005
【図４】
2006005878.tif 000006
【図５】
2006005878.tif 000007
【図６】
2006005878.tif 000008
【図７】
2006005878.tif 000009
【図８】
2006005878.tif 000010
【図９】
2006005878.tif 000011
【図１０】
2006005878.tif 000012
【図１１】
2006005878.tif 000013
【図１２】
2006005878.tif 000014
【図１３】
2006005878.tif 000015
【図１４】
2006005878.tif 000016
【図１５】
2006005878.tif 000017
【図１６】
2006005878.tif 000018
【図１７】
2006005878.tif 000019
【図１８】
2006005878.tif 000020