(57)【要約】【課題】アプリケーションがメモリにおけるユーザ空間に保持するデータを、ＯＳが管理するＯＳ空間を介すことなく、直接に計算機が送受信することにより、データのコピー処理を必要としない高速なデータ転送装置を提供する。【解決手段】本発明のネットワークアダプタは、計算機２００において使用され、計算機２００はプロセッサ１００と、メモリ１０１と、ネットワークアダプタ（データ転送装置、以下アダプタ）１とを有して構成され、これらの構成要素は、システムバス１０４を介して接続されている。また、計算機２００のシステム構成によっては、少なくとも１以上のＩ／Ｏ装置１０２を設けて構成するのが好ましい。また、アダプタ１は、アダプタ制御部７、ＤＭＡ制御部４、送信バッファ３、受信バッファ２、送信制御部６、受信制御部５、ネットワーク送受信部８を有して構成され、各構成要素は、内部バス９を介して接続されている。【選択図】　　　図１
2004007354.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、メモリと、ネットワークアダプタを少なくとも含む計算機を、それぞれのネットワークアダプタを介して、少なくとも２以上接続して構成されるネットワークにおいて、ヘッダ部とデータ部を有するパケットを用いて、計算機間のデータ転送を行う方法であって、
データの転送に先立ち、送信側計算機と受信側計算機とのメモリ上に、データの転送に使用する同一サイズの有限長バッファを確保する手順と、
データの転送に先立ち、送信側計算機において、送信対象となるデータに対して、通信プロトコル終端を施さずに、該データを前記手順にて確保した送信元となる有限長バッファである送信元バッファに格納する手順と、
データの転送に先立ち、送信側計算機、および受信側計算機において、メモリ上に確保したバッファとネットワークアダプタ間のデータの転送単位であるブロックのサイズを、プロセッサがネットワークアダプタに通知する手順と、
送信側計算機のプロセッサが、送信元バッファと一意に対応する識別子情報と、受信側計算機において受指先となる有限長バッファである受信先バッファと一意に対応する識別子情報と、
送信元バッファのメモリアドレス、サイズの情報と、受信側計算機を識別するネットワークアドレス情報とを通知して、送信元バッファ単位でネットワークアダプタの送信処理を起動する手順と、
送信側計算機のネットワークアダプタが、送信する全ブロックに対して受信側計算機からの再送要求を管理するテーブル情報を作成する手順と、
送信側計算機のネットワークアダプタが、送信元バッファ内のデータを１個または複数個のブロック単位で読み出し、受信先バッファを識別する識別子情報と、該ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、該ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレスと、ブロックサイズとをヘッダ部に付与し、前記ブロックをパケット化してネットワークに順次送出する手順と、
受信側計算機のプロセッサが、送信元バッファと一意に対応する識別子情報と、受信先バッファと一意に対応する識別子情報と、受信先バッファのメモリアドレス、サイズの情報と、
送信側計算機を識別するネットワークアドレス情報とを通知して、受信先バッファ単位でネットワークアダプタの受信処理を起動する手順と、
受信側計算機のネットワークアダプタが、受信すべき全ブロックの受信状態を管理する受信管理テーブル情報を作成する手順と、
受信側計算機のネットワークアダプタが、パケットを受信した祭、ヘッダ部に格納されたオフセットアドレス、受信先バッファのベースアドレスに基づいて受信先バッファヘの書き込み先となるアドレス情報を取得し、データ部のブロックを受信先バッファ内の所定の領域に直接転送する手順と、
受信側計算機のネットワークアダプタが、前記ブロックの受信先バッファヘの書き込み後、該ブロックの受信を前記受信管理テーブルに登録する手順と、
受信側計算機のネットワークアダプタが、前記受信管理テーブルに基づいて未受信となっているブロックを検出する手順と、
受信側計算機のネットワークアダプタが、未受信となっているブロックを検出した場合、ブロックの送信元バッファを識別する識別子情報と、送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファ内でのベースアドレスからのオフセットアドレスとを、ヘッダ部に付与して、送信側計算機に対して該ブロックの再送を要求する手順と、
送信側計算機のネットワークアダプタが、再送を要求するパケットを受信した場合、前記再送要求管理テーブルに、再送対象となったブロックを登録する手順と、
送信側計算機のネットワークアダプタが、前記再送要求テーブルに登録された情報に基づいて、対象となるブロックを順次再送する手順と、
送信側計算機のネットワークアダプタが、再送するブロックについて、受信先バッファを識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、
ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与し、順次パケット化して再送する手順とを有することを特徴とするデータ転送方法。
【請求項２】
請求項１記載のデータ転送方法において、前記再送要求管理テーブルで管理する再送ブロックの要素数を、前記ブロックサイズと送信元バッファのサイズに基づいて決定する手順と、
前記受信管理テーブルで管理する受信ブロックの要素数を、前記ブロックサイズと受信先バッファのサイズに基づいて決定する手順を有する
ことを特徴とするデータ転送方法。
【請求項３】
請求項２記載のデータ転送方法において、受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部から受信先バッファを識別する識別子情報を取り出し、プロセッサから受信処理を起動されている受信先バッファの識別子情報と一致するか否かを判別する手順と、
一致する場合にのみ、ヘッダ部が指示する受信先バッファヘの所定の受信処理を行う手順を有する
ことを特徴とするデータ転送方法。
【請求項４】
請求項２記載のデータ転送方法において、送信側計算機のネットワークアダプタが、ブロックの再送を要求するパケットを受信した際、ヘッダ部から送信元バッファを識別する識別子情報を取り出し、プロセッサから送信処理を起動されている送信元バッファの識別子情報と一致するか否かを判別する手順と、
一致する場合にのみ、ヘッダ部が指示する送信元バッファからブロックを読み出して所定の再送処理を行う手順を有する
ことを特徴とするデータ転送方法。
【請求項５】
請求項１記載ので−タ転送方法において、ネットワークアドレス情報として、ＩＰ（Ｉｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ）アドレスを使用する
ことを特徴とするデータ転送方法。
【請求項６】
請求項２記載のデータ転送方法において、ネットワークアドレス情報として、
さらにＥｔｈｅｒｎｅｔ（登録商標）アドレスを使用する
ことを特徴とするデータ転送方法
【請求項７】
請求項３記載のデータ転送方法において、ネットワークアドレス情報として、
さらにＵＤＰ（Ｕｓｅｒ　Ｄａｔａｇｒａｍ　Ｐｒｏｔｏｃｏｌ）ポート番号を使用する
ことを特徴とするデータ転送方法。
【請求項８】
プロセッサと、メモリと、ネットワークアダプタを少なくとも含む計算機を、それぞれのアダプタを介して、少なくとも２以上接続して構成されるデータ転送系において、ヘッダ部とデータ部を有するパケットを用いて、データ転送を行う装置であって、
データの転送に先立ち、送信側計算機、および受信側計算機のメモリ上にデータの転送に使用する同一サイズの有限長バッファを確保する手段と、
データの転送に先立ち、送信側計算機において、送信対象となるデータに対して、通信プロトコル終端を施さずに、該データを前記手順にて確保した送信元となる有限長バッファである送信元バッファに格納する手段と、
データの転送に先立ち、送信側計算機、および受信側計算機において、メモリ上に確保したバッファとネットワークアダプタ間のデータの転送単位であるブロックのサイズを、プロセッサがネットワークアダプタに通知する手段と、
送信側計算機のプロセッサが、送信元バッファと一意に対応する識別子情報と、受信側計算機の受信先バッファと一意に対応する識別子情報と、送信元バッファのメモリアドレス、サイズの情報と、受信側計算機を識別するネットワークアドレス情報とを通知して、送信元バッファ単位でネットワークアダプタの送信処理を起動する手段と、
送信側計算機のネットワークアダプタが、送信する全ブロックの受信側計算機からの再送要求を管理するテーブル情報を作成する手段と、
送信側計算機のネットワークアダプタが、送信元バッファ内のデータを１個または複数個のブロック単位で読み出し、受信先バッファを識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与し、前記ブロックをパケット化してネットワークに順次送出する手段と、
受信側計算機のプロセッサが、送信側計算機の送信元バッファと一意に対応する識別子情報と、受信先バッファと一意に対応する識別子情報と、受信先バッファのメモリアドレス、サイズの情報と、送信側計算機を識別するネットワークアドレス情報とを通知して、受信先バッファ単位でネットワークアダプタの受信処理を起動する手段と、
受信側計算機のネットワークアダプタが、受信すべき全ブロックの受信状態を管理する受信管理テーブル情報を作成する手段と、
受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部から受信先バッファを識別する識別子情報を取り出し、プロセッサから受信処理を起動されている受信先バッファの識別子情報と一致するか否かを判別するパケット判別手段と、
受信側計算機のネットワークアダプタが、受信パケットのヘッダ部に格納されたオフセットアドレス、受信先バッフのベースアドレスを元に書き込み先アドレス情報を取得し、データ部のブロックを順次受信先バッファに書き込む手段と、
受信側計算機のネットワークアダプタが、パケット判別手段による判別結果と、受信パケットのヘッダのブロック識別番号に基づいて、データ部に格納された該ブロックの受信を前記受信管理テーブルに登録する手段と、
受信側計算機のネットワークアダプタが、前記受信管理テーブルに基づいて未受信となっているブロックを検出する手段と、
受信側計算機のネットワークアダプタが、ブロックの送信元バッファを識別する識別子情報と、送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファ内でのベースアドレスからのオフセットアドレスとを、ヘッダ部に付与して、送信側計算機に対して未受信となっているブロックの再送を要求するパケットを送出する手段と、
送信側計算機のネットワークアダプタが、再送を要求するパケットを受信した場合、パケットのヘッダ部から送信元バッファを識別する識別子情報を取り出し、プロセッサから送信処理を起動されている送信元バッファの識別子情報と一致するか否かを判別する手段と、
送信側計算機のネットワークアダプタが、識別子情報が一致する場合にのみ、当該ブロックのブロック識別番号に対応する前記再送要求管理テーブルの要素に、受信側計算機からの再送要求を登録する手段と、
送信側計算機のネットワークアダプタが、前記再送要求テーブルで再送が登録されているブロックについて、当該ブロックの識別番号、送信元バッファのベースアドレスを元に、送信元バッファの読み出し先アドレス情報を取得する手段と、
送信側計算機のネットワークアダプタが、前記手段にて取得した読み出し先アドレス情報に基づいて送信元バッファから再送を要求されたブロックを読み出し、受信先バッファを識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与して、順次再送する手段とを備えたことを特徴とするデータ転送装置。
【請求項９】
ネットワークアドレス情報として、ＩＰ（Ｉｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏ１）アドレスを使用する手段を備えたことを特徴とする請求項８記載のデータ転送装置。
【請求項１０】
ネットワークアドレス情報として、さらにＥｔｈｅｒｎｅｔ（登録商標）アドレスを使用する手段を備えたことを特徴とする請求項９記載のデータ転送装置。
【請求項１１】
ネットワークアドレス情報として、さらにＵＤＰ（Ｕｓｅｒ　ＤａｔａｇｒＰｍ　Ｐｒｏｔｏｃｏ１）ポート番号を使用する手段を備えたことを特徴とする請求項１０記載のデータ転送装置。
【請求項１２】
プロセッサと、メモリと、ネットワークアダプタ（以下、アダプタ）を少なくとも含む計算機を、それぞれのアダプタを介して、少なくとも３以上接続して構成されるネットワークにおいて、ヘッダ部とデータ部を有するパケットを用いて、計算機間のデータ同報配信を行う方法であって、
データの転送に先立ち、送信側計算機とマルチキャストグループに所属する２以上の受信側計算機のメモリ上に、データの転送に使用する同一サイズの有限長バッファを確保する手順と、
データの転送に先立ち、送信側計算機において、送信対象となるデータに対して、通信プロトコル終端を施さずに、該データを前記手順にて確保した送信元となる有限長バッファである送信元バッファに格納する手順と、
データの転送に先立ち、送信側計算機、および受信側計算機において、メモリ上に確保したバッファとネットワークアダプタ間のデータの転送単位であるブロックのサイズを、プロセッサがネットワークアダプタに通知する手順と、
送信側計算機のプロセッサが、送信側計算機、およびマルチキャストグループを構成する受信側計算機のメモリ上に確保した前記バッファと一意に対応する識別子情報と、
送信元バッファのメモリアドレス、サイズの情報と、マルチキャストグループ宛のマルチキャスト用ネットワークアドレス情報とを通知して、送信元バッファ単位でネットワークアダプタの送信処理を起動する手順と、
送信側計算機のネットワークアダプタが、送信元バッファ内のデータを１個または複数個のブロック単位で読み出し、前記バッファの識別子情報と、該ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、該ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレスと、ブロックサイズとをヘッダ部に付与し、前記ブロックをパケット化してネットワークに順次送出する手順と、
送信する全ブロックに対してマルチキャストグループを構成する受信側計算機からの再送要求を管理するテーブル情報を作成する手順と、
送信側計算機のネットワークアダプタが、再送を要求するパケットを受信した場合、前記再送要求管理テーブルに、再送対象となったブロックを登録する手順と、
受信側計算機のプロセッサが、受信先となるバッファと一意に対応する識別子情報と、受信先バッファのメモリアドレス、サイズの情報と、送信側計算機を識別するネットワークアドレス情報とを通知して、受信先バッファ単位でネットワークアダプタの受信処理を起動する手順と、
受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部に格納されたオフセットアドレス、受信先バッファのベースアドレスに基づいて受信先バッファヘの書き込み先となるアドレス情報を取得し、データ部のブロックを受信先バッファ内の所定の領域に直接転送する手順と、
送信側計算機のネットワークアダプタが前記再送要求テーブルに登録された情報に基づいて、マルチキャストグループを構成する受信側計算機上に確保された受信先バッファを一意に識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与し、対象となるブロックを順次パケット化して再送する手順とを有することを特徴とするデータ同報配信方法。
【請求項１３】
請求項１２記載のデータ同報配信方法において、送信側計算機のネットワークアダプタが、ブロックの再送を要求するパケットを受信した際、ヘッダ部から送信元バッファを識別する識別子情報を取り出し、プロセッサから送信処理を起動されている送信元バッファの識別子情報と一致するか否かを判別する手順と、
一致する場合にのみ、ヘッダ部が指示する送信元バッファからブロックを読み出して所定の再送処理を行う手順と
を有することを特徴とするデータ同報配信方法。
【請求項１４】
請求項１３記載のデータ同報配信方法において、受信側計算機のネットワークアダプタが、受信すベき全ブロックの受信状態を管理する受信管理テーブル情報を作成する手順と、
受信側計算機のネットワークアダプタが、前記ブロックの受信先バッファヘの書き込み後、該ブロックの受信を前記受信管理テーブルに登録する手順と、
受信側計算機のネットワークアダプタが、前記受信管理テーブルに基づいて未受信となっているブロックを検出する手順と、
受信側計算機のネットワークアダプタが、未受信となっているブロックを検出した場合、ブロックの送信元バッファを識別する識別子情報と、送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファ内でのベースアドレスからのオフセットアドレスとを、ヘッダ部に付与して、送信側計算機に対して該ブロックの再送を要求する手順を有する
ことを特徴とするデータ同報配信方法。
【請求項１５】
請求項１４記載のデータ同報方法において、受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部から受信先バッファを識別する識別子情報を取り出し、プロセッサから受信処理を起動されている受信先バッファの識別子情報と一致するか否かを判別する手順と、
一致する場合にのみ、ヘッダ部が指示する受信先バッファヘの所定の受信処理を行う手順を有することを特徴とするデータ同報配信方法。
【請求項１６】
プロセッサと、メモリと、ネットワークアダプタ（以下、アダプタ）を少なくとも含む計算機を、それぞれのアダプタを介して、少なくとも３以上接続して構成されるデータ転送系において、ヘッダ部とデータ部を有するパケットを用いて、データの同報配信を行う装置であって、
データの転送に先立ち、送信側計算機、およびマルチキャストグループに所属する２以上の受信側計算機のメモリ上にデータの転送に使用する同一サイズの有限長バッファを確保する手段と、
データの転送に先立ち、送信側計算機において、送信対象となるデータに対して、通信プロトコル終端を施さずに、該データを前記手順にて確保した送信元となる有限長バッファである送信元バッファに格納する手段と、
データの転送に先立ち、送信側計算機、および受信側計算機において、メモリ上に確保したバッファとネットワークアダプタ間のデータの転送単位であるブロックのサイズを、プロセッサがネットワークアダプタに通知する手段と、
送信側計算機のプロセッサが、送信側計算機、および受信側計算機上に確保された前記バッファと一意に対応する識別子情報と、送信元バッファのメモリアドレス、サイズの情報と、マルチキャストグループ宛のマルチキャスト用ネットワークアドレス情報とを通知して、送信元バッファ単位でネットワークアダプタの送信処理を起動する手段と、
送信側計算機のネットワークアダプタが、送信元バッファ内のデータを１個または複数個のブロック単位で読み出し、前記バッファ識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるべースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与し、前記ブロックをパケット化してネットワークに順次送出する手段と、
送信する全ブロックについて、マルチキャストグループに所属する２以上の受信側計算機からの再送要求を管理するテーブル情報を作成する手段と、
再送を要求するパケットを受信した場合、パケットのヘッダ部から送信元バッファを識別する識別子情報を取り出し、プロセッサから　送信処理を起動されている送信元バッファの識別子情報と一致するか否かを判別する手段と、
識別子情報が一致する場合にのみ、当該ブロックのブロック識別番号に対応する前記再送要求管理テーブルの要素に、受信側からの再送要求を登録する手段と、
前記再送要求テーブルで再送が登録されているブロックについて、当該ブロックの識別番号、送信元バッファのべースアドレスを元に、送信元バッファの読み出し先アドレス情報を取得する手段と、
前記手段にて取得した読み出し先アドレス情報に基づいて送信元バッファから再送を要求されたブロックを読み出し、受信先バッファを識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるべースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与して、順次再送する手段と、
受信側計算機のプロセッサが、前記バッファと一意に対応する識別子情報と、受信先バッファのメモリアドレス、サイズの情報と、送信側計算機を識別するネットワークアドレス情報とを通知して、受信先バッファ単位でネットワークアダプタの受信処理を起動する手段と、
受信側計算機のネットワークアダプタが、受信パケットのヘッダ部に格納されたオフセットアドレス、受信先バッファのべースアドレスを元に書き込み先アドレス情報を取得し、データ部のブロックを順次受信先バッファに直接書き込む手段を有する
ことを特徴とするデータ同報配信装置。
【請求項１７】
受信側計算機のネットワークアダプタが、受信すべき全ブロックの受信状態を管理する受信管理テーブル情報を作成する手段と、
受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部から受信先バッファを識別する識別子情報を取り出し、プロセッサから受信処理を起動されている受信先バッファの識別子情報と一致するか否かを判別するパケット判別手段と、
受信側計算機のネットワークアダプタが、パケット判別手段による判別結果と、受信パケットのヘッダのブロック識別番号に基づいて、データ部に格納された該ブロックの受信を前記受信管理テーブルに登録する手段と、
受信側計算機のネットワークアダプタが、前記受信管理テーブルに基づいて未受信となっているブロックを検出する手段と、
受信側計算機のネットワークアダプタが、ブロックの送信元バッファを識別する識別子情報と、送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファ内でのべースアドレスからのオフセットアドレスとを、ヘッダ部に付与して、送信側に対して未受信となっているブロックの再送を要求するパケットを送出する手段を有する
ことを特徴とする請求項１６記載のデータ同報配信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機間のデータ転送に係わり、詳しくはそのデータ転送プロトコルの実装に関する。
【０００２】
【従来の技術】
従来のネットワークを構成する計算機の構成例を図２４に示す。
計算機は、プロセッサ１００、メモリ１０１、Ｉ／Ｏ装置１０２、ネットワークアダプタ（パソコンやプリンタなどを構内ネットワーク（ＬＡＮ）に接続するための拡張カードを示し、以下、アダプタとする）１０３を有して構成され、これらの構成要素は、システムバス１０４を介して接続されている。
アダプタ１０３は、さらに、アダプタ制御部１０４、ＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）制御部１０５、送受信用バッファ１０６、ネットワーク送受信部１０７を備えており、これらは内部バスを介して接続された構成になっている。
【０００３】
アダプタ制御部１０４は、送信ＤＭＡ制御情報保持部１０４Ａ、受信ＤＭＡ制御情報保持部１０４Ｂを有して構成され、プロセッサ１００との間でデータの送信、および受信の制御に関する情報を通知するインタフェース処理と、メモリから送信バッファヘ、および受信バッファからメモリヘＤＭＡ処理によりデータを転送する際、ＤＭＡ制御情報の作成を行う。
送信ＤＭＡ制御情報保持部１０４Ａは、メモリ１０１から送受信用バッファ１０６にデータ転送する際に行う制御に関する情報の保持を行う。
受信ＤＭＡ制御情報保持手部１０４Ｂは、送受信用バッファ１０６からメモリ１０１にデータ転送する際に行う制御に関する惰報の保持を行う。
【０００４】
ＤＭＡ制御部１０５は、受信ＤＭＡ制御情報保持部１０４Ｂ、送信ＤＭＡ制御情報保持部１０４Ａに保持された情報に基づいて、送受信用バッファ１０６とメモリ１０１との間のデータ転送の制御を行う。
送受信用バッファ１０６は、ネットワーク１０８を介して送受信するパケットの格納及び保持を行う。
ネットワーク送受信部１０７は、ネットワーク１０８と送受信用バッファ１０６との間でデータ通信を行う。
【０００５】
以下、従来の計算機間のデータ転送における受信処理について示す。
まず、アダプタ１０３は、ネットワーク１０８を介して伝送されてくるパケットの転送先が自計算機であると判断した（自身の接続された計算機が転送先であることを検出した）場合、これを送受信バッファ１０６内に取り込む。
次に、アダプタ制御部１０４は、取り込んだパケットをメモリ１０１に転送するために受信ＤＭＡ制御情報を作成する。
【０００６】
次に、ＤＭＡ制御部１０５は、受信ＤＭＡ制御情報保持部１０４Ｂが保持する受信ＤＭＡ制御情報に基づいて、ＤＭＡ転送（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ：プロセッサを介さず、直接メモリにアクセスして入出力処理を行うこと）によって、取り込んだパケットを、メモリ１０１におけるＯＳ（オペレーティングシステム）空間（記憶領域）１０９内の存在する受信パケット領域に転送する。
【０００７】
次に、アダプタ１０３は、ＤＭＡ転送完了後、プロセッサ１００に割り込みをかける。
次に、プロセッサ１０１は割り込みを受けることにより、ＯＳ空間１０９内に存在する受信パケット領域に存在するパケット内の情報に基づいて、データを転送すべきユーザ空間１１０内に存在するユーザバッファ等の情報を調べ、データをコピーする処理を行うことによって、アプリケーションプロセスにデータを引き渡す一連の処理を行う。
図４９に従来のマルチキャストプロトコル処理の概要を示す概念図である。
図４９に示すように、複数の計算機間でデータの同報配信を行うマルチキャストアプリケーションや、ＵＤＰ（Ｕｓｅｒ　Ｄａｔａｇｒａｍ　Ｐｒｏｔｏｃｏｌ）上に構築されマルチキャストアプリケーションにデータ送達の信頼性を提供するマルチキャストトランスポートは、ユーザメモリ空間において処理が行われる。
また、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ　Ｃｏｎｔｒｏｌ　Ｐｒｏｔｏｃｏｌ）、ＵＤＰ等のトランスポート、マルチキャストパケットのネットワーク内転送処理を司るＩＰ（Ｉｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ）は、ＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）メモリ空間上において処理が行われる。
ここで、上記処理は、それぞれのメモリ空間上において、計算機のプロセッサによってソフトウェア処理されるのが一般的である。
さらに、Ｅｔｈｅｒｎｅｔ（登録商標），トークンリング，ＦＤＤＩ（Ｆｉｂｅｒ　Ｄｉｓｔｒｉｂｙｔｅｄ　Ｄａｔａ　Ｉｎｔｅｒｆａｃｅ）等のデータリンク，およびプロトコルの物理層は、ハードウェア（ネットワークアダプタ）により処理されるのが一般的である。
図４９に処理の概要を示したように、従来のマルチキャストによるデータ同報配信において、ユーザメモリ空間上のデータは、送信時にプロセッサによってＯＳメモリ空間上に一旦メモリコピーされてから、ネットワークアダプタを介して送受信されるのが一般的である。
【０００８】
【特許文献１】
ＷＯ９７／３３２２７
【非特許文献１】
Ｓ．Ｋｏｔａｂｅ，　Ｔｓｕｊｉｏｋａ，　ａｎｄ　Ｔ．Ｏｎｏｄａ，　”Ｔｈｒｏｕｇｈｐｕｔ　Ｃｈａｒａｃｔｅｒｉｓｔｉｃ　ｏｆＴＣＰ　ｗｉｔｈ　Ｗｉｎｄｏｗｓ　Ｓｉｚｅ　Ｅｘｐａｎｓｉｏｎ　ａｎｄ　Ｎｅｔｗｏｒｋ　Ｄｉｒｅｃｔ　Ａｃｃｅｓｓ　ｏｖｅｒ　ａ　Ｌａｒｇｅ　Ｄｅｌａｙ−Ｂａｎｄｗｉｄｔｈ　Ｌｉｎｋ，”　ＩＥＩＣＥ　Ｔｒａｎｓ．Ｃｏｍｍｕｎ．，ｖｏｌ．Ｅ８ｌ−Ｂ，ｎｏ．１２，ｐｐ．２３５７−２３６３，Ｄｅｃ．１９９８．
【非特許文献２】
Ｔ．Ｋａｎａｄａ，Ｔ，Ｏｎｏｄａ，Ｉ．Ｙａｍａｓｈｉｔａ，ａｎｄＴ．Ａｏｙａｍａ，“Ｎｅｔｗａｒｐ：　Ａｎ　Ｕｌｔｒａ−Ｈｉｇｈ−Ｔｈｒｏｕｇｈｐｕｔ　Ｃｏｍｐｕｔｅｒ　Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ　Ｓｅｒｖｉｃｅ，”ＩＥＥＥ　Ｎｅｔｗｏｒｋ，　ｖｏｌ，１１，　ｎｏ．ｌ，ｐｐ．４４−５０，　Ｊａｎ．／Ｆｅｂ．１９９７．
【非特許文献３】
Ｄ．Ｄｕｎｎｉｎｇ，Ｇ，Ｒｅｇｎｉｅｒ，Ｇ．ＭｃＡｌｐｉｎｅ，Ｄ．Ｃａｍｅｒｏｎ，Ｂ．Ｓｈｕｂｅｒｔ，Ｆ．Ｂｅｒｒｙ，Ａ．Ｍｅｒｒｉｔｔ，Ｅ．Ｇｒｏｎｋｅ，ａｎｄ　Ｃ．Ｄｏｄｄ，　Ｔｈｅ　Ｖｉｒｔｕａｌ　Ｉｎｔｅｒｆａｃｅ　Ａｒｃｈｉｔｅｃｔｕｒｅ，”　ＩＥＥＥＭｉｃｒｏ，　ｖｏｌ．１８，ｐｐ．６６−７６，Ｍａｒｃｈ／Ａｐｒｉｌ　１９９８．
【非特許文献４】
Ｃｏｍｐａｑ　Ｃｏｍｐｕｔｅｒ　Ｃｏｒｐ．，　Ｉｎｔｅｌ　Ｃｏｒｐ．，　ａｎｄ　Ｍｉｃｒｏｓｏｆｔ．Ｃｏｒｐ．，Ｖｉｒｔｕａｌ　Ｉｎｔｅｒｆａｃｅ　Ａｒｃｈｉｔｅｃｔｕｒｅ　Ｓｐｅｃｉｆｉｃａｔｉｏｎ　ｖｅｒｓｉｏｎ　１．０，”　ｈｔｔｐ：／／ｗｗｗ．ｖｉａｒｃｈ．ｏｒｇ／．
【非特許文献５】
Ｃ．Ｓａｐｕｎｔｚａｋｉｓ，　Ａ．Ｒｏｍａｎｏｗ，　ａｎｄ　Ｊ．Ｃｈａｓｅ，　Ｔｈｅ　Ｃａｓｅ　ｆｏｒ　ＲＤＭＡ，”　ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｉｎｔｅｒｎｅｔ．ｄｒａｆｔｓ／ｄｒａｆｔ−ｃｓａｐｕｎｔｚ−ｃａｓｅｒｄｍａ−００．ｔｘｔ．
【非特許文献６】
Ｐ．Ｄｒｕｓｃｈｅｌ　ａｎｄ　Ｌ．Ｌ．　Ｐａｔｔｅｒｓｏｎ，“Ｆｂｕｆｓ：　Ａ　Ｈｉｇｈ−Ｂａｎｄｗｉｄｔｈ　Ｃｒｏｓｓ−Ｄｏｍａｉｎ　Ｔｒａｎｓｆｅｒ　Ｆａｃｉｌｉｔｙ，”　Ｐｒｏｃ．Ｆｏｕｔｅｅｎｔｈ　ＡＣＭ　Ｓｙｍｐｏｓｉｕｍ　ｏｎ　Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ　Ｐｒｉｎｃｉｐｌｅｓ，ｐｐ．１８９−２０２，　Ａｓｈｅｖｉｌｌｅ，　ＮＣ，Ｄｅｃ．１９９３．
【非特許文献７】
Ｊ．Ｃ．Ｂｒｕｓｔｏｌｏｎｉ　ａｎｄ　Ｐ．Ｓｔｅｅｎｋｉｓｔｅ，“Ｅｆｆｅｃｔｓ　ｏｆ　ｂｕｆｆｅｒ−ｉｎｇ　ｓｅｍａｎｔｉｃｓ　ｏｎ　Ｉ／Ｏ　ｐｅｒｆｏｒｍａｎｃｅ，”　Ｐｒｏｃ．　１９９６，　ＵＳＥＮＩＸ　Ｔｅｃｈｎｉｃａｌ　Ｃｏｎｆｅｒｅｎｃｅ，　ｐｐ．２７７−２９１，　Ｓａｎ　Ｄｉｅｇｏ，　ＣＡ，　Ｊａｎ．１９９６．
【非特許文献８】
Ｈ．Ｋ．Ｊ．Ｃｈｕ，“Ｚｅｒｏ−Ｃｏｐ　ＴＣＰ　ｉｎ　Ｓｏｌａｒｉｓ，”　Ｐｒｏｃ，　１９９６　ＵＳＥＮ１Ｘ　Ｔｅｃｈｎｉｃａｌ　Ｃｏｎｆｅｒｅｎｃｅ，　ｐｐ．２５３−２６４，　Ｓａｎ　Ｄｉｅｇｏ，　ＣＡ，　Ｊａｎ．　１５９６．
【非特許文献９】
Ｊ．Ｃｈａｓｅ，　Ａ．Ｇａｌｌａｔｉｎ，　ａｎｄ　Ｋ．Ｙｏｃｕｎｍ，“Ｅｎｄ−Ｓｙｓｔｅｍ　Ｏｐｔｉｍｉｚａｔｉｏｎｓ　ｆｏｒ　Ｈｉｇｈ−ｓｐｅｅｄ　ＴＣＰ，”　ＩＥＥＥ　Ｃｏｍｍｕｎ．，　ｖｏｌ．３９，　ｎｏ．４，　ｐｐ．６８−７５，Ａｐｒｉｌ　２００１．
【０００９】
【発明が解決しようとする課題】
しかしながら、従来の計算機では、アダプタ１０３内で最終的なデータの格納先となる、ユーザ空間１１０内のバッファのアドレスを特定することができない。
このため、受信パケットのデータは、一度、ＯＳ空間１０９内に存在する受信パケット領域に格納、保持されてから、データコピー処理等によって、目的のアプリケーションに引き渡す処理が必要となる。
【００１０】
また、従来の計算機では、アダプタ内でアプリケーションが要求する単位でのデータの送達を管理することができないため、ＴＣＰ（トランスミッション・コントロール・プロトコル）等のＯＳ内の送達管理機構によって、信頼性のあるデータ転送を提供している。
ＯＳ内で個々のパケット毎の受信状態を管理するため、アダプタ１０３は、パケット受信の都度、プロセッサ１００に割り込みをかけ、その受信通知を行う処理が必要になる。
上述したようなデータコピー処理や、割り込みは、データ量に比例して処理量（すなわち、負荷処理）が増加することとなる。
従来の計算機間のデータ転送においては、この処理負荷が高いため、高速なデータ転送処理を行う上で問題となっている。
また、従来の計算機において、信頼性のあるデータ同報配信機能を提供するためマルチキャストトランスポートは、ＵＤＰより上位に実装されている。
このため、マルチキャストトランスポートは、受信したマルチキャストパケットを、一度、ＯＳ空間内に存在する受信バッファに格納、保持してから、メモリコピー処理によって、目的のマルチキャストトランスポートに引き渡す必要がある。
したがって、上述したメモリコピー処理は、データ量に比例して、当然、マルチキャストトランスポートの処理量を増加させる。
従来の計算機間のデータ転送においては、この処理負荷が高いため、高速なデータ転送処理を行う上で問題となっている。
【００１１】
そこで、本発明は、このような背景の下になされたもので、アプリケーション（プロセッサで操作しているソフトウェア）がメモリのユーザ空間に保持するデータを、ＯＳが管理するＯＳ空間１０９を介すことなく、直接にネットワークアダプタ（データ転送装置）との間で送受信することにより、データのコピー処理を必要としない高速なデータ転送装置を提供することにある。
また、本発明は、アダプタ１０３内でアプリケーションが要求する単位でのデータ送達を管理することにより、パケットの送受信毎に、アダプタ１０３とプロセッサ１００との間で割り込みを発生させる必要がないため、高速かつ高信頼性なデータ転送装置を提供することにある。
また、本発明は、マルチキャストアプリケーション（プロセッサで操作しているソフトウェア）が、メモリのユーザ空間に保持されるデータを、ＯＳが管理するＯＳ空間を介すことなく、直接にネットワークアダプタ（データ同報配信装置）との間で送受信することにより、データのコピー処理を必要としない高速なデータ同報配信手段を提供することにある。
【００１２】
【課題を解決するための手段】
上記課題を解決するために、以下の手段が考えられる。
本発明のデータ転送方法は、プロセッサと、メモリと、ネットワークアダプタ（以下、アダプタ）を少なくとも含む計算機を、それぞれのアダプタを介して、少なくとも２以上接続して構成されるネットワークにおいて、ヘッダ部とデータ部を有するパケットを用いて、計算機間のデータ転送を行う方法であって、データの転送に先立ち、送信側計算機（以下、送信側）と受信側計算機（以下、受信側）とのメモリ上に、データの転送に使用する同一サイズの有限長バッファを確保する手順と、データの転送に先立ち、送信側において、送信対象となるデータに対して、通信プロトコル終端を施さずに、該データを前記手順にて確保した送信元となる有限長バッファ（以下、送信元バッファ）に格納する手順と、データの転送に先立ち、送信側、および受信側において、メモリ上に確保したバッファとアダプタ間のデータの転送単位であるブロックのサイズを、プロセッサがアダプタに通知する手順と、送信側のプロセッサが、送信元バッファと一意に対応する識別子情報と、受信側において受指先となる有限長バッファ（以下、受信先バッファ）と一意に対応する識別子情報と、送信元バッファのメモリアドレス、サイズの情報と、受信側を識別するネットワークアドレス情報とを通知して、送信元バッファ単位でアダプタの送信処理を起動する手順と、送信側のアダプタが、送信する全ブロックに対して受信側からの再送要求を管理するテーブル情報を作成する手順と、送信側のアダプタが、送信元バッファ内のデータを１個または複数個のブロック単位で読み出し、受信先バッファを識別する識別子情報と、該ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、該ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレスと、ブロックサイズとをヘッダ部に付与し、前記ブロックをパケット化してネットワークに順次送出する手順と、受信側のプロセッサが、送信元バッファと一意に対応する識別子情報と、受信先バッファと一意に対応する識別子情報と、受信先バッファのメモリアドレス、サイズの情報と、送信側を識別するネットワークアドレス情報とを通知して、受信先バッファ単位でアダプタの受信処理を起動する手順と、受信側のアダプタが、受信すべき全ブロックの受信状態を管理する受信管理テーブル情報を作成する手順と、受信側のアダプタが、パケットを受信した祭、ヘッダ部に格納されたオフセットアドレス、受信先バッファのベースアドレスに基づいて受信先バッファヘの書き込み先となるアドレス情報を取得し、データ部のブロックを受信先バッファ内の所定の領域に直接転送する手順と、受信側のアダプタが、前記ブロックの受信先バッファヘの書き込み後、該ブロックの受信を前記受信管理テーブルに登録する手順と、受信側のアダプタが、前記受信管理テーブルに基づいて未受信となっているブロックを検出する手順と、受信側のアダプタが、未受信となっているブロックを検出した場合、ブロックの送信元バッファを識別する識別子情報と、送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファ内でのベースアドレスからのオフセットアドレスとを、ヘッダ部に付与して、送信側に対して該ブロックの再送を要求する手順と、送信側のアダプタが、再送を要求するパケットを受信した場合、前記再送要求管理テーブルに、再送対象となったブロックを登録する手順と、送信側のアダプタが、前記再送要求テーブルに登録された情報に基づいて、対象となるブロックを順次再送する手順と、送信側のアダプタが、再送するブロックについて、受信先バッファを識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与し、順次パケット化して再送する手順とを有することを特徴とする。
【００１３】
本発明のデータ転送方法は、前記再送要求管理テーブルで管理する再送ブロックの要素数を、前記ブロックサイズと送信元バッファのサイズに基づいて決定する手順と、前記受信管理テーブルで管理する受信ブロックの要素数を、前記ブロックサイズと受信先バッファのサイズに基づいて決定する手順を有することを特徴とする。
【００１４】
本発明のデータ転送方法は、受信側のアダプタが、パケットを受信した際、ヘッダ部から受信先バッファを識別する識別子情報を取り出し、プロセッサから受信処理を起動されている受信先バッファの識別子情報と一致するか否かを判別する手順と、一致する場合にのみ、ヘッダ部が指示する受信先バッファヘの所定の受信処理を行う手順を有することを特徴とする。
【００１５】
本発明のデータ転送方法は、送信側のアダプタが、ブロックの再送を要求するパケットを受信した際、ヘッダ部から送信元バッファを識別する識別子情報を取り出し、プロセッサから送信処理を起動されている送信元バッファの識別子情報と一致するか否かを判別する手順と、一致する場合にのみ、ヘッダ部が指示する送信元バッファからブロックを読み出して所定の再送処理を行う手順を有することを特徴とする。
【００１６】
本発明のデータ転送方法は、ネットワークアドレス情報として、ＩＰ（Ｉｎｔｅｒｎｅｔ
Ｐｒｏｔｏｃｏｌ）アドレスを使用することを特徴とする。
本発明のデータ転送方法は、ネットワークアドレス情報として、さらにＥｔｈｅｒｎｅｔ（登録商標）アドレスを使用することを特徴とするデータ転送方法
本発明のデータ転送方法は、ネットワークアドレス情報として、さらにＵＤＰ（Ｕｓｅｒ　Ｄａｔａｇｒａｍ　Ｐｒｏｔｏｃｏｌ）ポート番号を使用することを特徴とする。
【００１７】
計算機は、プロセッサと、メモリと、アダプタ（ネットワークアダプタ）とを有して構成される。さらに、ネットワークは、前記計算機を少なくとも２以上接続して構成される。
送信側、および受信側では、データの転送に先立ち、ユーザ空間上にそれぞれ、同一サイズの有限長バッファを確保する。
送信側のプロセッサは、受信側のユーザ空間に存在する受信先バッファを識別する識別子情報と、自計算機内のユーザ空間に存在する送信元バッファを識別する識別子情報と、送信元バッファのアドレス、サイズの情報と、送信元バッファからアダプタに転送するデータ単位となるブロックサイズの情報と、受信側のネットワークアドレス等の情報とを通知して、アダプタの送信処理を起動する。
【００１８】
送信処理を起動された送信側のアダプタは、ブロックサイズの情報と、送信元バッファのサイズの情報に基づいて、送信するブロックの数を把握し、全ブロックの受信側への送達を管理するための再送要求管理テーブル情報を作成する。
前記テーブル情報の作成後、送信側のアダプタは、送信元バッファからブロック単位でデータを読み出すと共に、受信先となるバッファの識別子情報と、ブロックの送信元バッファ内でのオフセットアドレスと、サイズ等の情報をヘッダ部に付与し、パケット化してネットワークに順次送出する。
【００１９】
一方、受信側のプロセッサは、送信側のユーザ空間に存在する送信元バッファを識別する識別子情報と、自計算機内のユーザ空間に存在する受信先バッファの識別子情報と、受信先バッファのアドレス、サイズの情報と、アダプタから受信先バッファヘ転送するデータ単位となるブロックサイズの情報と、送信側のネットワークアドレス等の情報とを、アダプタに通知して受信処理を起動する。
受信処理を起動された受信側のアダプタは、ブロックサイズの情報と、受信先バッファのサイズの情報に基づいて、これから受信するブコックの数を把握し、全ブロックの受信を管理するための受信管理テーブル情報を作成する。ここで、ブロックサイズは、送信側と同一サイズとする。
【００２０】
さらに、受信側のアダプタは、パケットを受信した場合に、ヘッダ部に付与された受信先バッファを識別する情報、受信先バッファ内での格納位置を示すオフセットアドレス等の情報に基づいて、データ部に格納されたブロックを受信先バッファの所定の領域に直接転送し、その受信を受信管理テーブルに登録する処理を行う。
ネットワーク上でロス、エラー等が発生した場合、受信側のアダプタは、受信管理テーブルに基づいて、未受信となっているブロックの再送を送信側に要求する。再送を要求された送信伺は、再送要求管理テーブルにこれを登録する。そして、再送要求管理テーブルに登録された再送対象となるブロックの情報に基づいて選択的な再送処理を行う。
【００２１】
そして、バッファ間で全データ（ブロックの）送達が完了した後、送信側のアダプタと、受信側のアダプタは、割り込みによってそれぞれ処理の終了をプロセッサに通知する。
以上の手段によって、計算機間のデータ転送において、メモリにおけるＯＳ空間を介したメモリコピー処理が不要となり、データ転送の高速化が図れると共に、選択的な再送処理による送達の信頼性を提供することが可能になる。
【００２２】
また、本発明のデータ同報配信方法は、プロセッサと、メモリと、ネットワークアダプタ（以下、アダプタ）を少なくとも含む計算機を、それぞれのアダプタを介して、少なくとも３以上接続して構成されるネットワークにおいて、ヘッダ部とデータ部を有するパケットを用いて、計算機間のデータ同報配信を行う方法であって、データの転送に先立ち、送信側計算機とマルチキャストグループに所属する２以上の受信側計算機のメモリ上に、データの転送に使用する同一サイズの有限長バッファを確保する手順と、データの転送に先立ち、送信側計算機において、送信対象となるデータに対して、通信プロトコル終端を施さずに、該データを前記手順にて確保した送信元となる有限長バッファである送信元バッファに格納する手順と、データの転送に先立ち、送信側計算機、および受信側計算機において、メモリ上に確保したバッファとネットワークアダプタ間のデータの転送単位であるブロックのサイズを、プロセッサがネットワークアダプタに通知する手順と、送信側計算機のプロセッサが、送信側計算機、およびマルチキャストグループを構成する受信側計算機のメモリ上に確保した前記バッファと一意に対応する識別子情報と、送信元バッファのメモリアドレス、サイズの情報と、マルチキャストグループ宛のマルチキャスト用ネットワークアドレス情報とを通知して、送信元バッファ単位でネットワークアダプタの送信処理を起動する手順と、送信側計算機のネットワークアダプタが、送信元バッファ内のデータを１個または複数個のブロック単位で読み出し、前記バッファの識別子情報と、該ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、該ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレスと、ブロックサイズとをヘッダ部に付与し、前記ブロックをパケット化してネットワークに順次送出する手順と、送信する全ブロックに対してマルチキャストグループを構成する受信側計算機からの再送要求を管理するテーブル情報を作成する手順と、送信側計算機のネットワークアダプタが、再送を要求するパケットを受信した場合、前記再送要求管理テーブルに、再送対象となったブロックを登録する手順と、受信側計算機のプロセッサが、受信先となるバッファと一意に対応する識別子情報と、受信先バッファのメモリアドレス、サイズの情報と、送信側計算機を識別するネットワークアドレス情報とを通知して、受信先バッファ単位でネットワークアダプタの受信処理を起動する手順と、受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部に格納されたオフセットアドレス、受信先バッファのベースアドレスに基づいて受信先バッファヘの書き込み先となるアドレス情報を取得し、データ部のブロックを受信先バッファ内の所定の領域に直接転送する手順と、送信側計算機のネットワークアダプタが前記再送要求テーブルに登録された情報に基づいて、マルチキャストグループを構成する受信側計算機上に確保された受信先バッファを一意に識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるベースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与し、対象となるブロックを順次パケット化して再送する手順とを有することを特徴とする。
【００２３】
本発明のデータ同報配信方法は、送信側計算機のネットワークアダプタが、ブロックの再送を要求するパケットを受信した際、ヘッダ部から送信元バッファを識別する識別子情報を取り出し、プロセッサから送信処理を起動されている送信元バッファの識別子情報と一致するか否かを判別する手順と、一致する場合にのみ、ヘッダ部が指示する送信元バッファからブロックを読み出して所定の再送処理を行う手順とを有することを特徴とするデータ同報配信方法。
【００２４】
本発明のデータ同報配信方法は、受信側計算機のネットワークアダプタが、受信すベき全ブロックの受信状態を管理する受信管理テーブル情報を作成する手順と、受信側計算機のネットワークアダプタが、前記ブロックの受信先バッファヘの書き込み後、該ブロックの受信を前記受信管理テーブルに登録する手順と、受信側計算機のネットワークアダプタが、前記受信管理テーブルに基づいて未受信となっているブロックを検出する手順と、受信側計算機のネットワークアダプタが、未受信となっているブロックを検出した場合、ブロックの送信元バッファを識別する識別子情報と、送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファ内でのベースアドレスからのオフセットアドレスとを、ヘッダ部に付与して、送信側計算機に対して該ブロックの再送を要求する手順を有することを特徴とする。
【００２５】
本発明のデータ同報配信方法は、受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部から受信先バッファを識別する識別子情報を取り出し、プロセッサから受信処理を起動されている受信先バッファの識別子情報と一致するか否かを判別する手順と、一致する場合にのみ、ヘッダ部が指示する受信先バッファヘの所定の受信処理を行う手順を有することを特徴とするデータ同報配信方法。
【００２６】
本発明のデータ同報配信装置は、プロセッサと、メモリと、ネットワークアダプタ（以下、アダプタ）を少なくとも含む計算機を、それぞれのアダプタを介して、少なくとも３以上接続して構成されるデータ転送系において、ヘッダ部とデータ部を有するパケットを用いて、データの同報配信を行う装置であって、データの転送に先立ち、送信側計算機、およびマルチキャストグループに所属する２以上の受信側計算機のメモリ上にデータの転送に使用する同一サイズの有限長バッファを確保する手段と、データの転送に先立ち、送信側計算機において、送信対象となるデータに対して、通信プロトコル終端を施さずに、該データを前記手順にて確保した送信元となる有限長バッファである送信元バッファに格納する手段と、データの転送に先立ち、送信側計算機、および受信側計算機において、メモリ上に確保したバッファとネットワークアダプタ間のデータの転送単位であるブロックのサイズを、プロセッサがネットワークアダプタに通知する手段と、送信側計算機のプロセッサが、送信側計算機、および受信側計算機上に確保された前記バッファと一意に対応する識別子情報と、送信元バッファのメモリアドレス、サイズの情報と、マルチキャストグループ宛のマルチキャスト用ネットワークアドレス情報とを通知して、送信元バッファ単位でネットワークアダプタの送信処理を起動する手段と、送信側計算機のネットワークアダプタが、送信元バッファ内のデータを１個または複数個のブロック単位で読み出し、前記バッファ識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるべースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与し、前記ブロックをパケット化してネットワークに順次送出する手段と、送信する全ブロックについて、マルチキャストグループに所属する２以上の受信側計算機からの再送要求を管理するテーブル情報を作成する手段と、再送を要求するパケットを受信した場合、パケットのヘッダ部から送信元バッファを識別する識別子情報を取り出し、プロセッサから　送信処理を起動されている送信元バッファの識別子情報と一致するか否かを判別する手段と、識別子情報が一致する場合にのみ、当該ブロックのブロック識別番号に対応する前記再送要求管理テーブルの要素に、受信側からの再送要求を登録する手段と、前記再送要求テーブルで再送が登録されているブロックについて、当該ブロックの識別番号、送信元バッファのべースアドレスを元に、送信元バッファの読み出し先アドレス情報を取得する手段と、前記手段にて取得した読み出し先アドレス情報に基づいて送信元バッファから再送を要求されたブロックを読み出し、受信先バッファを識別する識別子情報と、ブロックの送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファにおけるべースアドレスからのオフセットアドレス、ブロックサイズをヘッダ部に付与して、順次再送する手段と、受信側計算機のプロセッサが、前記バッファと一意に対応する識別子情報と、受信先バッファのメモリアドレス、サイズの情報と、送信側計算機を識別するネットワークアドレス情報とを通知して、受信先バッファ単位でネットワークアダプタの受信処理を起動する手段と、受信側計算機のネットワークアダプタが、受信パケットのヘッダ部に格納されたオフセットアドレス、受信先バッファのべースアドレスを元に書き込み先アドレス情報を取得し、データ部のブロックを順次受信先バッファに直接書き込む手段を有する　ことを特徴とする。
【００２７】
本発明のデータ同報配信装置は、受信側計算機のネットワークアダプタが、受信すべき全ブロックの受信状態を管理する受信管理テーブル情報を作成する手段と、受信側計算機のネットワークアダプタが、パケットを受信した際、ヘッダ部から受信先バッファを識別する識別子情報を取り出し、プロセッサから受信処理を起動されている受信先バッファの識別子情報と一致するか否かを判別するパケット判別手段と、受信側計算機のネットワークアダプタが、パケット判別手段による判別結果と、受信パケットのヘッダのブロック識別番号に基づいて、データ部に格納された該ブロックの受信を前記受信管理テーブルに登録する手段と、受信側計算機のネットワークアダプタが、前記受信管理テーブルに基づいて未受信となっているブロックを検出する手段と、受信側計算機のネットワークアダプタが、ブロックの送信元バッファを識別する識別子情報と、送信元バッファ内での格納位置と一意に対応するブロック識別番号と、ブロックの送信元バッファ内でのべースアドレスからのオフセットアドレスとを、ヘッダ部に付与して、送信側に対して未受信となっているブロックの再送を要求するパケットを送出する手段を有することを特徴とする。
【００２８】
また、上記計算機は、プロセッサと、メモリと、ネットワークアダプタ（以下アダプタ）とを有して構成される。さらに、ネットワークは、前記計算機を少なくとも３以上接続して構成される。
送信側計算機（以下送信側）、およびマルチキャストグループに所属する２以上の受信側計算機（以下受信側）では、データの転送に先立ち、ユーザメモリ空間上にそれぞれ、同一サイズの有限長バッファを確保する。
送信側のプロセッサは、送信側、および受信側にて転送に先立ち確保したバッファを識別する識別子情報と、送信元バッファのアドレス、サイズの情報と、送信元バッファからアダプタに転送するデータ単位となるブロックサイズの情報と、マルチキャストグループ宛のマルチキャスト用ネットワークアドレス等の情報とを通知して、アダプタの送信処理を起動する。
送信処理を起動された送信側のアダプタは、ブロックサイズの情報と、送信元バッファのサイズの情報に基づいて、送信するブロックの数を把握し、マルチキャストグループに所属する受信側からの再送要求を管理するための再送要求管理テーブル情報を作成する。
前記テーブル情報の作成後、送信側のアダプタは、送信元バッファからブロック単位でデータを読み出すと共に、バッファ識別子情報と、ブロックの送信元バッファ内でのオフセットアドレスと、サイズ、マルチキャスト用ネットワークアドレス等の情報をヘッダ部に付与し、パケット化してネットワークに順次送出する。
【００２９】
一方、受信側のプロセッサは、送信側、および受信側にて転送に先立ち確保したバッファを識別する識別子情報と、受信先バッファのアドレス、サイズの情報と、アダプタから受信先バッファヘ転送するデータ単位となるブロックサイズの情報と、送信側のネットワークアドレス等の情報を、アダプタに通知して受信処理を起動する。
受信処理を起動された受信側のアダプタは、ブロックサイズの情報と、受信先バッファのサイズの情報に基づいて、これから受信するブロックの数を把握し、全ブロックの受信を管理するための受信管理テーブル情報を作成する。ここで、ブロックサイズは、送信側と同一サイズとする。
さらに、受信側のアダプタは、ネットワーク内のマルチキャスト転送機能によって配信されたパケットを受信した場合に、ヘッダ部に付与された受信先バッファを識別する情報、受信先バッファ内での格納位置を示すオフセットアドレス等の情報に基づいて、データ部に格納されたブロックを受信先バッファの所定の領域に直接転送し、その受信を受信管理テーブルに登録する処理を行う。
ネットワーク上でロス、エラー等が発生した場合、受信側のアダプタは、受信管理テーブルに基づいて、未受信となっているブロックの再送を送信側計算機に要求する。マルチキャストグループに所属する受信側から再送を要求された送信側は、再送要求管理テーブルにこれを登録する。そして、再送要求管理テーブルに登録された再送対象となるブロックの情報に基づいて選択的な再送処理を行う。
そして、バッファ間で全データ（ブロックの）送達が完了した後、送信側のアダプタと、受信側のアダプタは、割り込みによってそれぞれ処理の終了をプロセッサに通知する。
以上の手段によって、本発明においては、計算機間のデータ同報配信において、ユーザメモリ空間とアダプタとの間で直接データを転送することにより、ＯＳ空間を介したメモリコピー処理が不要となり、データ転送の高速化が図れると共に、選択的な再送処理による送達の信頼性を提供することが可能になる。
【００３０】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態について説明する。図１は本発明の第１の実施形態による計算機間データ転送装置を用いた計算機ネットワークの構成例を示すブロック図である。
この図において、ネットワークは、通常、計算機２００を少なくとも２以上備えた構成であり、図示しないが複数の（２つ以上の）計算機２００がネットワーク１０８により接続された構成をしている。
【００３１】
以下、図１を参照して、本願発明の計算機間データ転送装置を組み込んだ計算機２００の構成を説明する。
計算機２００は、プロセッサ１００と、メモリ１０１と、ネットワークアダプタ（すなわち、計算機間データ転送装置、以下、アダプタ）１とを有して構成され、これらの構成要素は、システムバス１０４を介して接続されている。
また、計算機２００のシステム構成によっては、少なくとも１以上のＩ／Ｏ装置１０２を設けて構成するのが好ましい。
また、上記アダプタ１は、アダプタ制御部７、ＤＭＡ制御部４、送信バッファ３、受信バッファ２、送信制御部６、受信制御部５、ネットワーク送受信部８を有して構成され、各構成要素は、内部バス９を介して接続されている。
【００３２】
アダプタ制御部７は、送信ＤＭＡ制御情報保持部７Ａ、受信ＤＭＡ制御情報保持部７Ｂ、バッファ送信管理情報保持部７Ｃ、バッファ受信管理情報保持部７Ｄ、送達制御情報保持部７Ｅ、自ネットワークアドレス情報保持部７Ｆ、分割ブロック情報保持部７Ｇを有して構成され、プロセッサ１００との間でデータの送信、および受信の制御に関する情報を通知するインタフェース処理と、プロセッサ１００から要求されたデータの送信、および受信に関する送達管理処理と、送信制御部６に対してデータの送信を起動する処理と、受信制御部５が受信したデータの管理と、メモリ１０１から送信バッファ３、および受信バッファ２からメモリ１０１ヘＤＭＡ処理によりデータを転送する際、送信ＤＭＡ制御情報、受信ＤＭＡ制御情報の作成を行う構成である。
【００３３】
ここで、送信ＤＭＡ制御情報保持部７Ｂは、メモリ１０１からネットワーク１０８へ出力するデータを一時蓄える送信バッファ３ヘのデータのＤＭＡ転送時に行う制御に関する情報を保持する構成である。
受信ＤＭＡ制御情報保持部７Ａは、受信制御部５を介してネットワークから入力されるデータを一時蓄える受信バッファ２からメモリ１０１ヘのデータのＤＭＡ転送時に行う制御に関する情報を保持する構成である。
バッファ送信管理情報保持部７Ｄは、送信元となる自計算機２００から受信先となる他の計算機（ネットワーク１０８で接続されている）へのデータ送信時に行う制御に関する情報を保持する構成である。
【００３４】
バッファ受信管理情報保持部７Ｃは、送信元となる他の計算機から受信先となる自計算機２００へのデータ受信時に行う制御に関する情報を保持する構成である。
送達制御情報保持部７Ｅは、他の計算機とのデータの送信、および受信において、その送達制御に関する情報を保持する構成である。
自ネットワークアドレス情報保持部７Ｆは、自計算機２００のネットワーク１０８上における識別子となるネットワークアドレス情報を保持するための構成である。
分割ブロック情報保持部７Ｇは、メモリ１０１から送信バッファ３、および受信バッファ２からメモリ１０１にデータを転送する際、その転送単位となるブロックのサイズ情報を保持するための構成である。
【００３５】
ＤＭＡ制御部４は、送信ＤＭＡ制御情報保持７Ｂに保持された情報に基づいて、メモリ１０１から送信バッファ３ヘのＤＭＡ転送処理と、また、受信ＤＭＡ制御情報保持部７Ａに保持された情報に基づいて、受信バツファ２からメモリ１０１ヘのＤＭＡ転送処理を行う構成である。
送信バッファ３は、ネットワーク１０８を介して送信するデータを保持する構成である。
受信バッファ２は、ネットワーク１０８を介して受信するデータを保持する構成である。
【００３６】
送信制御部６は、送信ブロック情報保持部６Ａ及び送信パケット生成部６Ｂを有して構成され、送信ブロック情報保持部６Ａに設定された情報に基づいてネットワーク１０８上に送信するパケットを生成する処理を行う構成である。
受信制御部５は、受信ブロック情報保持部５Ａ、受信パケット判別情報保持部５Ｂ、受信パケット判別部５Ｃを有して構成され、受信パケット判別情報保持部５Ｂに保持された情報に基づいて受信パケットを判別する処理と、判別時の情報、および受信パケットのヘッダ情報に基づいて受信したパケットの情報を受信ブロック情報保持部５Ａに設定する処理を行う構成である。
ネットワーク送受信部８は、ネットワーク１０８と送信制御部６との間のデータ通信、およびネットワーク１０８と受信制御部５との間のデータ通信を行う構成である。
【００３７】
次に、メモリ１０１に格納されるデータの構造について説明する。
メモリ１０１に格納されるデータの構造は、送信処理に関連するデータ構造と、受信処理に関連するデータ構造からなる。
送信処理に関連するデータ構造としては、バッファ送信要求情報、ユーザデータがある。
ユーザデータは、送信側の計算機が送信するユーザバッファ（以下、送信元バッファ）に格納された情報である。
ここでユーザバッファは、メモリ１０１内のユーザ空間１１０内に設けられている。
【００３８】
バッファ送信要求情報は、プロセッサ１００がアダプタ１に対してユーザデータの送信を起動する際に必要となる情報である。図２を参照して、その構成例を示す。
図２に示すように、受信先となる計算機のネットワークアドレス、送信元バッファと一意に対応する識別子情報である送信元バッファＩＤ（識別番号）、受信先となるバッファと一意に対応する識別子情報である受信先バッファＩＤ、送信元バッファのアドレスとサイズを保持するリストヘのポインタである送信元バッファ情報ポインタ、送信ステータス等を保持するその他の制御情報を有して構成される。
受信処理に関連するデータ構造としては、バッファ受信要求情報、ユーザデータがある。
【００３９】
ユーザデータは、受信側計算機がデータを受信する領域として確保した上記ユーザバッファ（以下、受信先バッファ）に格納された情報である。
バッファ受信要求情報は、プロセッサ１００がアダプタ１に対してユーザデータの受信を起動する際に必要となる情報である。図３を参照して、その構成例を示す。
図３に示すように、送信元となる計算機のネットワークアドレス、送信元バッファと一意に対応する識別子情報である送信元バッファＩＤ、受信先バッファと一意に対応する識別子情報である受信先バッファＩＤ、受信先バッファのアドレスとサイズを保持するリストヘのポインタである受信先バッファ情報ポインタ、受信ステータス等を保持するその他の制御情報を有して構成される。
【００４０】
本実施形態においては、ユーザデータは、メモリ１０１内のユーザ空間１１０に存在する。
一方、バッファ送信要求情報、および、バッファ受信要求情報は、メモリ１０１内のＯＳ空間１０９に存在する。
また、本実施形態においては、送信元バッファと受信先バッファを、同一サイズの有限長バッファとし、ユーザデータの転送に先立って、メモリ１０１上に確保するものとする。
【００４１】
次に、アダプタ１内でデータの送受信処理を行う際、その制御に関するデータの構造について説明する。
アダプタ１内の制御に間するデータの構造は、送信処理に関連するデータ構造と、受信処理に関連するデータ構造と、送信元バッファと受信バッファ間のデータ送達管理に関連するデータ構造とからなる。
アダプタ１内の送信処理に関連するデータ構造としては、バッファ送信管理情報、送信パケット情報がある。
【００４２】
バッファ送信管理情報は、プロセッサからのユーザデータの送信要求を管理するための情報であり、図４に構成例の概念図を示す。
図４の概念図に示すように、バッファ送信管理情報は、送信要求単位に設けられリスト構造となっている。
上記リストの各要素は、受信先ネットワークアドレス、送信元バッファＩＤ、受信先バッファＩＤ、送信元バッファ情報ポインタ、送信元バッファアドレス、送信元バッファサイズ、送信するユーザデータに対する受信側からの再送要求を管理する情報へのポインタである再送要求管理テーブルポインタ、送信ステータス等を保持するその他の制御情報を有して構成される。
【００４３】
ここで、受信先ネットワークアドレス、送信元バッファＩＤ、受信先バッファＩＤ、送信元バッファ情報ポインタ、送信元バッファアドレス、送信元バッファサイズの各要素は、プロセッサからバッファ送信要求情報によって指定された情報を保持する要素である。
送信パケット情報は、アダプタ制御部が、送信制御部に対して、本発明にかかるデータパケット、もしくは、制御パケットの送信を要求する際に設定する情報であり、図５に構成例を示す。
【００４４】
図５の概念図に示すように、送信元ネットワークアドレス、受信先ネットワークアドレス、送信パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズ、送信バッファリードアドレスを有して構成される。
送信元ネットワークアドレスは、送信元となる自計算機のネットワークアドレスを指定する情報であり、自ネットワークアドレス保持部７Ｆに保持された情報に基づいて設定される。
受信先ネットワークアドレスは、受信先となる他計算機のネットワークアドレスを指定する情報であり、バッファ送信管理情報保持部７Ｄに保持された情報に基づいて設定される。
【００４５】
送信パケット種別は、アダプタ制御部７が送信制御部６に対して送信を要求するパケットの種別を指定する情報であり、データ、送信完了、再送要求、再送開始要求、受信完了がある。
データは、送信元バッファから送信バッファ３に転送したブロックをパケット化して送信する場合に設定する種別である。
送信完了は、送信元バッファのユーザデータ全体、あるいは、受信側からの再送要求全体の送信が完了した際、送信の完了を通知するパケットを送信する場合に設定する種別である。
【００４６】
再送要求は、ブロック単位にユーザデータの再送を要求するパケットを送信する場合に設定する種別である。
再送開始要求は、再送を要求したユーザデータ（ブロック）の再送処理の開始を要求するパケットを送信する場合に設定する種別である。
受信完了は、ユーザデータの全体の受信が完了したことを通知するパケットを送信する場合に設定する種別である。
ここで、データ、送信完了は、ユーザデータの送信側から受信側に対して送信するパケット種別であり、再送要求、再送開始要求、受信完了は、受信側が送信側に対して送信するパケット種別である。
【００４７】
バッファＩＤは、送信元バッファＩＤ、もしくは受信先バッファＩＤを設定する情報である。
データ、および送信完了のパケット送信を要求する場合は、受信先となる受信先バッファＩＤを設定し、再送要求、再送開始要求、受信完了のパケット送信を要求する場合は、送信元バッファＩＤを設定する。
ブロック識別番号は、送信元バッファユーザデータをブロック単位でパケット化して送信する際、送信元バッファ内の格納アドレスと一意に対応する識別番号を設定する情報である。
【００４８】
ブロック識別番号は、送信元バッファ内のデータをブロック単位で送信する際、その送信順番等を設定する。
オフセットアドレスは、ブロックをパケット化して送信する場合、あるいは、ブロックの再送を要求する場合に、対象となるブロックの送信元バッファのベースアドレスからのオフセットアドレスを設定する情報である。
ブロックサイズは、ブロックをパケット化して送信する場合、あるいは、ブロックの再送を要求する場合に、対象となるブロックのサイズを設定する情報である。
送信バッファリードアドレスは、ブロックをパケット化して送信する場合に、当該ブロックの送信バッファ３内での格納先アドレスを設定する情報である。
【００４９】
アダプタ１内の受信処理に関連するデータ構造としては、バッファ受信管理情報、受信パケット情報、受信パケット判別情報がある。
バッファ受信管理惰報は、プロセッサからのユーザデータ受信要求を管理するための情報であり、図６に構成例を示す。
図６に示すように、バッファ受信管理情報は、受信要求単位にリスト構造となっている。
このリストの各要素は、送信元ネットワークアドレス、送信元バッファＩＤ、受信先バッファＩＤ、送信元バッファ情報ポインタ、送信元バッファアドレス、送信元バッファサイズ、受信するユーザデータの送達を管理する情報へのポインタである受信管理テーブルポインタ、送信ステータス等を保持するその他の制御情報を有して構成される。
【００５０】
ここで、送信元ネットワークアドレス、送信元バッファＩＤ、受信先バッファＩＤ、送信元バッファ情報ポインタ、送信元バッファアドレス、送信元バッファサイズの各要素は、プロセッサからバッファ受信要求情報によって指定された情報を保持する要素である。
受信パケット情報は、受信制御部５が、アダプタ制御部７に対して、本発明にかかるデータパケット、もしくは、制御パケットの受信を通知する際に設定する情報であり、図７に構成例を示す。
【００５１】
図７に示すように、受信パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズ、受信バッファリードアドレスを有して構成される。
受信パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズの各情報は、当該受信パケットのヘッダ情報に基づいて設定する情報である。
受信バッファリードアドレスは、当該受信パケットの受信バッファ２内での格納先アドレスを設定する情報である。
受信パケット判別情報は、受信制御部５がパケットを受信した際、本発明にかかる処理を行うパケットか否かを判別するための情報であり、アダプタ制御部７が受信制御部５の受信パケット判別情報保持部５Ｂに対して設定する。
【００５２】
上記受信パケット判別情報の構成例を図８に示す。
図８に示すように、自ネットワークアドレス、固定識別子、受信先バッファＩＤリスト、受信先バッファＩＤリストポインタ、送信元バッファＩＤリスト、送信元バッファＩＤリストポインタ、を有して構成される。
自ネットワークアドレスは、自計算機２００のネットワークアドレスを保持する情報であり、アダプタ制御部７の自ネットワークアドレス保持部７Ｆの情報に基づいて設定される。
【００５３】
固定識別子は、本発明にかかるパケットが所定位置に有する識別情報である。
受信先バッファＩＤリストは、アダプタにおいて受信処理中であるユーザデータの受信先バッファＩＤを管理するための情報である。
受信先バッファＩＤリストポインタは、受信先バッファＩＤリストヘのポインタである。
送信元バッファＩＤリストは、アダプタにおいて送信処理中であるユーザデータの送信元バッファＩＤを管理するための情報である。
送信元バッファＩＤリストポインタは、送信元バッファＩＤリストヘのポインタである。
【００５４】
アダプタ１内の送信元バッファと受信先バッファ間のデータ送達管理に関連するデータ構造としては、送達制御情報、再送要求管理テーブル、受信管理テーブルがある。
送達制御情報は、ユーザデータの送信、および受信に関連した送達制御に関する情報であり、ブロック送信タイマ値、ブロック受信タイマ値、送信最大リトライ値、受信最大リトライ値を有して構成される。
ブロック送信タイマ値は、送信側のアダプタ制御部７が、受信側に送信完了を通知してから、それに対する応答を待つ最大時間を規定する情報である。
【００５５】
ブロック受信タイマ値は、受信側のアダプタ制御部７が、プロセッサ１００からユーザデータ受信要求を受けてから、当該ユーザデータのパケットを受信するまでに待機する最大時間、および、前記パケット毎の最大受信待機間隔を規定する情報である。
最大送信リトライ値は、ブロック送信タイマの最大タイムアウト回数を規定する情報である。
最大受信リトライ値は、受信側のアダプタ制御部７が、送信側に対して再送開始要求を行った回数、すなわち、ユーザデータの再送を要求する最大回数を規定する情報である。
【００５６】
再送要求管理テーブルは、送信側のアダプタ制御部７が、受信側からの再送要求を管理するための情報である。この再送要求管理テーブルの構成例を図９に示す。
送信側のアダプタ制御部７は、再送要求管理テーブルをプロセッサ１００から送信要求を受けたユーザデータ単位に作成し、バッファ送信管理情報に当該テーブルヘのポインタを保持する。
再送要求管理テーブルは、ユーザデータをパケット化して送信ずる全ブロックの再送要求ステータスを管理するためのテーブルである。
【００５７】
ここで、当該テーブル（再送要求管理テーブル）中のブロック識別番号は、パケットヘッダに付与するブロック識別番号と一意に対応するものである。
アダプタ制御部７は、バッファ送信管理情報に保持されている送信するユーザデータのサイズ（送信元バッファのサイズ）と、分割ブロック情報保持部７Ｇに保持されているブロックサイズの情報とに基づいて、再送の管理対象となるブロックの数（Ｎ）を計算し、当該テーブルの要素数（再送ブロックの要素数）を決定する。
【００５８】
受信管理テーブルは、受信側のアダプタ制御部７が、送信側からパケット化して送信されるブロック毎の受信ステータスを管理するための情報である。この受信管理テーブルの構成例を図１０に示す。
受信側のアダプタ制御部７は、受信管理テーブルをプロセッサ１００から受信要求を受けたユーザデータ単位に作成し、バッファ受信管理情報に当該テーブルヘのポインタを保持する。
受信管理テーブルは、パケット化して送信される全ブロックの受信ステータスを管理するためのテーブルである。
【００５９】
ここで、当該テーブル中のブロック識別番号は、パケットヘッダに付与されたブロック識別番号と一意に対応するものであり、送信側から送信される順番に相当する。
アダプタ制御部７は、バッファ受信管理情報に保持されている受信するユーザデータのサイズ（受信先バッファサイズ）と、分割ブコック情報保持部７Ｇに保持されているブロックサイズの情報に基づいて、受信の管理対象となるブロックの数（Ｎ）を計算し、当該テーブルの要素数（受信ブロックの要素数）を決定する。
【００６０】
ここで、本発明では、ユーザデータを転送する際、次の２つの条件を前提としている。
一つは、送信元バッファと受信先バッファとは、転送開始前に同一サイズバッファがメモリ１０１上に確保されることである。
もう一つは、送信側と受信側との分割ブロック情報保持部７Ｇには、同一のブロックサイズが設定されることである。
【００６１】
この２つの前提から、送信元バッファと受信先バッファとのバッファ間のユーザデータの送達管理において、再送要求管理テーブルサイズ、および受信管理テーブルサイズの計算は、送信側と受信側で交渉することなく決定することが可能である。
また、転送開始前に、転送すべき全ブロックを送信側、受信側で予め把握することが可能である。
【００６２】
次に、ネットワーク上で送受信されるパケットの構成を、図１１を参照して説明する。
従来のパケットは、例えば、送信元ネットワークアドレス、受信先ネットワークアドレス、タイプの情報を保持したヘッダ部とデータ部を有して構成されている。
送信元ネットワークアドレスは、パケットを送出した計算機を識別するための情報である。さらに、受信先ネットワークアドレスは、パケットを受信すべき計算機を識別するための情報である。
タイプは、アダプタ１が所定の処理を行うために必要な情報であり、例えば、データ全体のサイズ等の情報である。
【００６３】
データは、ＯＳ、アプリケーションが処理する対象となる情報である。
本発明にかかるパケットは、送信元ネットワークアドレス、受信先ネットワークアドレス、タイプ、固定識別子、パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズ、の情報を保持したヘッダ部と、パケット種別がデータの場合に、データ部に格納するブロックを有して構成される。ヘッダ部に格納する各情報は、送信ブロック情報保持部６Ａに保持された情報に基づいて、送信制御部６が生成する。
【００６４】
送信元ネットワークアドレス、受信先ネットワークアドレス、タイプは、それぞれ従来のパケットに対応するものである。
固定識別子は、パケットが本発明にかかるパケットであることを識別するための情報である。
パケット種別は、本発明にかかるパケットの種別を識別するための情報である。本発明にかかるパケットの種別は、先に述べたように、データ、送信完了、再送要求、再送開始要求、受信完了がある。
【００６５】
バッファＩＤは、当該パケットが送信するブロックの受信先となる受信先バッファＩＤ、あるいは、当該パケットが送信するブロックが格納されている送信元バッファＩＤを識別するための惰報である。
パケット種別がデータ、送信完了の場合は、受信先バッファＩＤが設定される。パケット種別が再送要求、再送開始要求、受信完了の場合は、送信元バッファＩＤが設定される。
【００６６】
ブロック識別番号は、当該パケツトが送信するブロック、あるいは、再送を要求するブロックを識別するための情報である。
パケット種別がデータの場合、送信するブロックのブロック識別番号が設定されるよパケット種別が再送要求の場合、再送を要求するブロックの識別番号が設定される。
パケット種別が、送信完了、再送開始要求、受信完了の場合、当該領域は未使用とし、例えば、「０」が設定される。
【００６７】
オフセットアドレスは、当該パケットが送信するブロック、あるいは、再送を要求するブロックの送信元バッファ内での格納位置を示すオフセットアドレスを識別するための情報である。
パケット種別が、データと再送要求以外の場合、当該領域は未使用とし、例えば、「０」が設定される。
ブロックサイズは、当該パケットの送信するブロック、再送を要求するブロックのサイズを識別するための情報である。
パケット種別が、データと再送要求以外の場合、当該領域は未使用とし、例えば、「０」が設定される。
【００６８】
以下、送受信事前処理、ユーザデータの送信処理、受信処理の概要について示す。
送受信事前処理は、プコセッサが計算機間のデータの転送に先立ちアダプタに対して行うソフトウェア処理である。
まず、送受信事前処理の動作を、図１２のフローチャートを参照して説明する。
はじめに、自計算機のネットワークアドレスをアダプタの自ネットワークアドレス保持部７Ｆに設定する。
【００６９】
ここで、自ネットワークアドレス保持部７Ｆに設定したネットワークアドレスは、計算機が送信側となる場合に送信元ネットワークアドレスとして使用する（ステップＳ１）。
次に、送信元バッファと送信バッファ３との間、および受信先バッファと受信バッファ２との間の転送単位であるブロックサイズを分割ブロック情報保持部７Ｇに設定する（ステップＳ２）。
次に、ブロック送信タイマ値、ブロック受信タイマ値、送信最大リトライ値、受信最大リトライ値を送達制御情報保持部７Ｅに設定する（ステップＳ３）。
上記の一連の処理によって、送受信事前処理が完了する。
【００７０】
次に、ユーザデータの送信処理について示す。
送信処理は、ユーザデータと、バッファ送信要求情報とを用いて、図１１参照の本発明にかかるパケットをアダプタ内で生成して、ネットワークに送出する処理である。
以下、送信時のソフトウェア前処理の動作、アダプタの動作、ソフトウェア後処理の動作を示す。
はじめに、ユーザデータの送信処理時に行うソフトウェアによる前処理を、図１３のフローチャートを参照して説明する。
【００７１】
送信元バッファには、Ｉ／Ｏ装置１０２等からユーザデータが格納されているものとする。
ここで、送信元バッファに格納する際、ユーザデータには、通信プロトコル終端処理を施さないものとする。
はじめに、バッファ送信要求情報に、受信先ネットワークアドレス、送信元バッファＩＤ、受信先バッファＩＤ、送信元バッファ情報ポインタを設定する（ステップＳ１１）。
次に、バッファ送信要求情報の情報を、アダプタ制御部のバッファ送信管理情報保持手段に設定する（ステップＳ１２）。
最後に、アダプタ制御部に対して、送信動作の起動を通知する（ステップＳ１３）。
上記の一連の処理によりソワトウェアの送信前処理が完了する。
【００７２】
次に、送信処理時のアダプタの動作を、図１４及び１５のフローチャートを参照して説明する。
ここでは、アダプタ制御部７に対する起動通知を受けてからの動作についての明を行う。
まず、アダプタ制御部７は、バッファ送信管理情報保持部７Ｄに設定された送信元バッファ情報ポインタの情報に基づいて、送信元バッファのアドレス、サイズを読み出し、バッファ送信管理情報保持部７Ｄに設定する（ステップＳ２１）。
次に、アダプタ制御部７は、当該ユーザデータの送信に対応する送信リトライカウンタの値を０クリアする（ステップＳ２２）。
【００７３】
次に、アダプタ制御部７は、バッファ送信管理情報保持部７Ｄ、および分割ブロック情報保持部７Ｇに保持された情報に基づいて当該ユーザデータの送信に対応する再送要求管理テーブルを作成する（ステップＳ２３）。
次に、アダプタ制御部７は、バッファ送信管理情報保持部７Ｄ、および分割ブロック情報保持部７Ｇに保持された情報に基づいて、送信元バッファからブロック単位でユーザデータをＤＭＡ転送するための送信ＤＭＡ制御情報を作成する（ステップＳ２４）。
【００７４】
次に、ＤＭＡ制御部４は、送信ＤＭＡ制御情報保持部７Ｂの内容にしたがって、送信元バッファから送信バッファ３にブロック（ユーザデータ）をＤＭＡ転送する（ステップＳ２５）。
次に、アダプタ制御部７は、送信パケット情報を作成して、送信制御部６の送信ブロック情報保持部６Ａに設定し、ＤＭＡ転送したブロックの送信を起動する（ステップＳ２６）。
次に、送信制御部６は、送信ブロック情報保持部６Ａの情報とブロックから本発明にかかるパケットを生成する（ステップＳ２７）。
【００７５】
次に、ネットワーク送受信部８は、送信制御部６が生成したパケットをネットワーク１０８に送信する（ステップＳ２８）。
ここで、フローを示すように送信要求されたユーザデータ分の送付が完了するまで、ブロックのＤＭＡ転送、パケット生成、ネットワークヘの送出の前述した一連の処理を繰り返す（ステップＳ２９）。
次に、ユーザデータ分の送信が完了後、アダプタ制御部７は、受信側に対して送信完了を通知するパケットの送信処理を行い（ステップＳ３０）、受信側からの応答を待機する処理に移行する（ステップＳ３１）。
【００７６】
受信側からの応答は、再送要求、再送開始要求、受信完了がある，それぞれの場合の処理フローは次の通りである。
まず、受信側からの応答が、再送要求の場合（ステップＳ３２で再送要求であると検出された場合）、アダプタ制御部７は、再送要求パケットのヘッダ情報に基づいて再送要求を受けたブロックの情報を、対応する再送要求管理テーブルに登録し、再び受信側からの応答を待機する（ステップＳ３３）。
【００７７】
次に、受信側からの応答が、再送開始要求の場合（ステップＳ３４で再送開始要求であると検出された場合）、アダプタ制御部７は、再送開始要求パケットヘッダの送信元バッファＩＤに対応する再送要求管理テーブルの情報に基づいて、ブロックの再送を行う（ステップＳ３５）。
ここで、再送対象となるブロックの検出は、再送要求管理テーブルで再送が登録されているものを判別することによって行う。
再送は、再送要求されたブロックのブロック識別番号、ブロックサイズの情報から送信元バッファ内での当該ブロックの格納アドレス（＝送信元バッファアドレス＋ブロック識別番号×ブロックサイズ）を決定し、ＤＭＡ転送、パケット送信の一連の処理を実行することにより行う。
【００７８】
要求されたブロックの分の再送完了後、アダプタ制御部７は、受信側に対して送信完了を通知するパケットの送信処理（ステップＳ３６）と、送信リトライカウンタを０クリアする処理（ステップＳ３７）を行った後、再び受信側からの応答を待機する。
次に、受信側からの応答が、受信完了の場合（ステップＳ３８で受信完了であると検出された場合）、アダプタ制御部７は、全ユーザデータの送達が完了したものと判定し、送信した送信バッファ情報ポインタの情報、送信ステータス（正索終了）とともに、プロセッサに対して送信完了を通知する。
【００７９】
ブロック送信タイムアウトが発生しない場合（ステップＳ３９でブロック送信タイムアウトでないと検出された場合）、アダプタ制御部７は、送信完了通知後、当該ユーザデータの送信に対応する送信リトライカウンタを０クリアし、再び受信側からの応答を待機する（ステップＳ３１へ戻る）。
上記は、送達制御情報に規定されたブロック送信タイマ値の範囲内で、受信側からの応答があった場合の一連のフローを示したものである。
ブロック送信タイムアウトが発生した場合（ステップＳ３９でブロック送信タイムアウトであると検出された場合）、以下の処理フローとなる。
アダプタ制御部７は、当該ユーザデータの送信に対応するリトライカウンタの値をインクリメントする（ステップＳ４０）。
【００８０】
ここで、リトライカウンタの値が、送達制御情報の最大送信リトライ値を超えない場合、アダプタ制御部７は、再び受信側からの応答を待機する。
最大送信リトライ値を超えた場合（ステップＳ４１で送信リトライオーバーと検出された場合）、アダプタ制御部７は、送信処理を終了し、送信した送信バッファ情報ポインタの情報、送信ステータス（異常終了）とともに、プロセッサ１００に対して送信完了を通知する（ステップＳ４１）。
以上の一連の処理によって、アダプタによるユーザデータの送信動作が完了する。
【００８１】
次に、送信元バッファのユーザデータがパケットとして送出されるまでのデータ処理の詳細を、図１６を参照して説明する。
図１６では、送受信事前処理によって、分割ブロック情報が３２７６８Ｂ（＝３２Ｋ：Ｂ）に設定されているものとし、１ＭＢのユーザデータを送信する場合を例として説明する。
はじめに、アダプタ制御部７は、メモリ１０１のユーザ空間１１０内にある送信元バッファ（ＩＤ＝Ｘ）からブロックサイズ分の（３２ＫＢ）のデータを、アダプタ（ネットワークアダプタ）１内の送信バッファ３に直接ＤＭＡ転送する（▲１▼）。
そして、アダプタ制御部７は、ブロック識別番号、受信先バッファＩＤ（＝Ｙ）、送信元バッファ内でのオフセットアドレス等の情報を保持するヘッダをアダプタ１内で生成（▲２▼）し、ブロックをパケット化してネットワーク１０８に送出する（▲３▼）。
【００８２】
上記のブロック送信は、送信元バッファ分のデータ全体について一括して行われる。
受信側からブロックの再送を要求された場合も、メモリ１０１内のＯＳ空間１０９を介さずに直接送信バッファ３に当該ブロックをＤＭＡ転送してから、パケット化して送出する。かかる処理を行うことで、高連なデータ送信が可能となる。
次に、プロセッサ１００におけるソフトウェア（アプリケーション）に基づく送信後処理について、図１７のフローチャートを参照して説明する。
【００８３】
まず、プロセッサ１００は、送信前処理を実行後、アダプタ１から送信完了が通知されるのを待機する（ステップＳ５１）。
そして、送信完了が通知された場合、プロセッサ１００は、完了と共に通知される送信バッファ情報ポインタの情報に基づいて、送信処理が完了した送信元バッファを判別する（ステップＳ５２）。
最後に、プロセッサ１００は、送信処理が完了した送信元バッファを解放し、次のユーザデータの送信等に使用可能な領域とする（ステップＳ５３）。
以上示した本発明にかかる送信処理によって、プロセッサ１００によるアダプタ１に対する送信要求処理と、それに対するアダプタ１の応答処理は、バッファ単位で行うことが可能となり、従来パケット単位でおこなわれていたのと比較して、処理オーバーヘッドを削減し、データの高速転送が可能になる。
【００８４】
次に、ユーザデータの受信処理について示す。
受信処理は、ネットワーク１０８から取り込んだパケットを用いて、パケットのデータ部であるブロックを受信先バッファの所定の領域に直接転送することで、ソフトウェアにデータを引き渡すことを可能にするものである。
受信処理には、ユーザデータの受信に先立って行うソフトウェアの受信前処理と、パケット受信時にアダプタが行う受信処理と、ユーザデータを受信した後にソフトウェアが行う受信後処理がある（ここで、ソフトウェアに従いプロセッサ１００が処理を行う）。
【００８５】
まず、受信前処理について、図１８を参照して説明する。
受信前処理は、バッファ受信要求情報に所定の情報を設定し、アダプタに対して、指定する受信先バッファヘの受信動作の起動を通知する処理である。
はじめに、プロセッサ１００は、ＯＳ空間１０９内のバッファ受信要求情報に、送信元ネットワークアドレス、送信元バッファＩＤ、受信先バッファＩＤ、受信先バッファ情報ポインタを設定する（ステップＳ５５）。
次に、プロセッサ１００は、バッファ受信要求情報の情報をアダプタ制御部のバッファ受信制御情報保持手段に設定する（ステップＳ５６）。
最後に、プロセッサ１００は、アダプタ制御部７に対して、受信動作の起動を通知する（ステップＳ５７）。
上記の一連の処理により、ソフトウェアの受信前処理が完了する。
【００８６】
次に、受信処理時のアダプタの動作を、図１９及び２０のフローチャートを参照して説明する。
アダプタ制御部７に対する起動通知を受けてからの動作について示す。
まず、アダプタ制御部７は、受信先バッファ情報ポインタの情報に基づいて、受信先パッファのアドレス、サイズを読み出し、バッファ受信管理情報保持部７Ｃに設定する（ステップＳ６０）。
次に、アダプタ制御部７は、バッファ受信管理情報保持部７Ｃに保持された情報に基づいて、本発明にかかる受信処理を行うべきパケットを識別するための情報を受信パケット判別情報保持部５Ｂに設定する（ステップＳ６１）。
【００８７】
次に、アダプタ制御部７は、当該ユーザデータの受信に対応する受信リトライカウンタの値を０クリアする（ステップＳ６２）。
次に、アダプタ制御部７は、バッファ受信管理情報保持部７Ｃ、分割ブロック情報保持部７Ｇに保持された情報に基づいて、受信先バッファＩＤに対して、すなわち当該ユーザデータの受信に対応する受信管理テーブルを作成する（ステップＳ６３）。
次に、受信制御部５は、ネットワーク送受信部８からパケットの受信通知を待機する（受信通知が入力されるのを待つ）（ステップＳ６４）。
【００８８】
次に、受信制御部５は、パケットの受信通知を受けた場合、受信パケット判別情報保持部５Ｂに保持された情報と、受信パケットのヘッダから取り出した所定の情報を比較し、受信パケット種別の判別を行う（ステップＳ６５）。
この受信パケット判別処理の詳細については、後述する。
次に、受信制御部５は、本発明にかかる処理を行うパケットと判別した場合、受信ブロック情報保持部５Ａに所定の情報を設定する（ステップＳ６６）。
次に、パケットの受信を待機していたアダプタ制御部７は、受信パケット情報から受信したパケットの種別等の情報を取得し、パケット種別に応じた処理を行う。
【００８９】
ここで、パケット種別が、再送要求、再送開始要求、受信完了であった場合、これらは、送信動作時に受信側から通知されるものであり、先にアダプタの送信動作の説明にて示した処理を行う。
パケット種別が、データ、送信完了である場合、以下に示す受信動作時の処理を行う。
まず、受信パケットがデータ（ブロック）の場合（ステップＳ６７において受信パケットがデータであると検出された場合）、アダプタ制御部７は、受信パケット情報、バッファ受信管理情報保持部７Ｃに保持された受信先バッファのアドレス、受信先バッファ内でのブロックの格納先を示すオフセットアドレス等の情報に基づいて受信ＤＭＡ制御情報を作成する（ステップＳ７０）。
【００９０】
次に、ＤＭＡ制御部４は、受信ＤＭＡ制御情報に基づいて受信したブロックを受信先バッファの所定の領域に直接ＤＭＡ転送する（ステップＳ７１）。
次に、アダプタ制御部７は、受信パケット情報のブロック識別情報等の情報に基づいて当該ブロックの受信を受信管理テーブルに登録する（ステップＳ７２）。
アダプタ制御部７は、一連のブロック受信処理後、再びパケットの受信待機状態に移行する（ステップＳ６４へ戻る）。
次に、受信パケットが送信完了の場合（ステップＳ６８において、受信パケットがパケット送信完了のパケットであることを検出した場合）、アダプタ制御部７は、当該送信完了が指定する受信処理中の受信先バッファに対応する受信管理テーブルを検索し、未受信となっているブロックの存在をチェックする（ステップＳ７３）。
【００９１】
ここで、未受信ブロックの有無に応じて処理が分岐する。
アダプタ制御部７は、未受信ブロックが存在する場合、再送要求処理（ステップＳ７４）に処理を移行し、存在しない場合、受信終了処理（ステップＳ８０）に処理を移行する。
まず、未受信ブロックが存在する場合の処理について示す。
はじめに、アダプタ制御部７は、当該ユーザデータの受信に対応する受信リトライカウンタの値をインクリメントする（ステップＳ７４）。
【００９２】
次に、アダプタ制御部７は、受信リトライカウンタの値が、送達制御情報の受信最大リトライ値を超えた場合（ステップＳ７５においてリトライオーバーが検出された場合）、受信リトライオーバーが発生したものとして、受信終了処理（ステップＳ８１）に処理を移行する。
一方、アダプタ制御部７は、受信リトライカウンタの値が、受信最大リトライ値を超えない場合（ステップＳ７５においてリトライオーバーが検出されない場合）、ブロックの再送を要求する処理を継続する（ステップＳ７６の処理へ進む）。
【００９３】
次に、アダプタ制御部７は、再送要求管理テーブルから未受信となっているブロックを検出する（ステップＳ７６）。
次に、アダプタ制御部７は、当該ブロックのブロック識別子、当該ブロックと対応するバッファ受信管理情報保持部７Ｃに保持されている情報に基づいて再送を要求する送信パケット情報を作成し、再送要求（再送要求パケット）を送信側に通知する（ステップＳ７７）。
再送要求は、再送要求管理テーブルで未受信となっているブロック全体について繰り返す（ステップＳ７８）。
【００９４】
未受信となっているブロック全ての再送要求通知後、アダプタ制御部７は、バッファ受信管理情報保持部７Ｃに保持されている情報に基づいて、再送開始を要求する送信パケット情報を作成し、再送開始要求を送信側に通知する。
そして、アダプタ制御部７は、再送開始要求の通知（ステップＳ７９）後、再びパケット受信の待機状態に遷移する（処理をステップＳ６４へ戻す）。
前述した一連の処理は、送信側からの送信完了通知をトリガとして、再送要求処理に移行した場合のものである。
【００９５】
これ以外に、受信処理の開始後、アダプタ制御部７において、当該ユーザデータの受信処理にかかるパケットの受信間隔が、送達制御情報のブロック受信タイマ値で規定する時間を超えた場合（ステップＳ６９）も、前述した再送要求処理（ステップＳ７３）に移行する。
一方、アダプタ制御部７は、当該ユーザデータの受信処理にかかるパケットの受信間隔が、送達制御情報のブロック受信タイマ値で規定する時間を超えない合（ステップＳ６９）、処理をステップＳ６４へ戻す。
次に、受信管理テーブルを検索した結果、未受信ブロックが存在しない場合（ステップＳ７３において未受信ブロックが無いことが検出された場合）の受信終了について示す。
【００９６】
まず、アダプタ制御部７は、全ブロックを正常に受信したことを通知するための送信パケット情報を作成し、受信完了を送信側に通知する（ステップＳ８０）。
次に、アダプタ制御部７は、バッファ受信管理情報保持部７Ｃに保持された情報に基づいて受信処理が完了した当該ユーザバッファの受信バッファ情報ポインタ、受信ステータス（正常終了）と共に受信処理の終了をプロセッサ１００（すなわちソフトウェア）に通知する（ステップＳ８１）。
【００９７】
次に、アダプタ制御部７は、受信パケット判別情報保持部５Ｂ、バッファ受信管理情報保持部７Ｃに設定した当該ユーザデータの受信処理にかかわる情報をクリアし（ステップＳ８２）、一連の受信処理を終了する。
ここで、アダプタ制御部７は、受信リトライオーバーが発生して受信終了処理に移行した場合、送信側に受信完了を通知することなく、前述した受信終了時の処理を行う。
この際、プロセッサ１００に通知する受信ステータスは異常終了となる。
【００９８】
次に、アダプタ１による受信処理の中で、受信パケット判別処理の詳細について、図２１のフローチャートを参照して説明する。
判別処理は以下の手順で行う。
まず、アダプタ制御部７は、当該受信パケットのヘッダ部（図１１参照）の受信先ネットワークアドレスが自計算機２００のネットワークアドレスと一致するか否かを判別する（ステップＳ９１）。
一致しない場合、アダプタ制御部７は、ＯＳよる受信処理を行うパケットと判別する（ステップＳ９７）。
【００９９】
次に、アダプタ制御部７は、ヘッダ部の所定領域の情報が本発明にかかる処理を行うべきパケットであることを表す固定識別子と一致するか否かを判別する（ステップＳ９２）。
一致しない場合、アダプタ制御部７は、ＯＳによる受信処理を行うパケット判別する（ステップＳ９７）。
次に、アダプタ制御部７は、ヘッダ部の所定領域に示されているパケット種別がデータ、または送信完了と一致するか否かを判別する（ステップＳ９３）。
【０１００】
そして、アダプタ制御部７は、パケット種別がデータ、または、送信完了と一致する場合、処理をステップＳ９４へ進める。
ここで、アダプタ制御部７は、ヘッダ部の所定領域に示されている受信先バッファＩＤが受信処理中のものか否かを判別する（ステップＳ９４）。
そして、アダプタ制御部７は、受信処理中でない場合、ＯＳによる受信処理を行うパケットと判別する（ステップＳ９７）。
一方、アダプタ制御部７は、ヘッダ部の所定領域に示されている受信先バッファＩＤが受信処理中である場合、本発明にかかる処理を行うパケットと判別する（ステップＳ９９）。
【０１０１】
次に、アダプタ制御部７は、パケット種別が、再送要求、または再送開始要求、または受信完了と一致するか否かを判別する（ステップＳ９５）。
そして、アダプタ制御部７は、パケット種別が、再送要求、再送開始要求、受信完了のいずれかである場合、処理をステップＳ９６へ進めて、ヘッダ部の所定領域に示されている送信元バッファＩＤが送信処理中のものか否かを判別する（ステップＳ９６）。
【０１０２】
ここで、アダプタ制御部７は、送信元バッファＩＤが送信処理中でない場合、ＯＳによる受信処理を行うパケットと判別する（ステップＳ９７）。
一方、アダプタ制御部７は、送信元バッファＩＤが送信処理中である場合、本発明にかかる処理を行うパケットと判別する（ステップＳ９９）。
また、ステップＳ９５において、アダプタ制御部７は、パケット種別がデータ、送信完了、再送要求、再送開始要求、受信完了のいずれでもない場合、ＯＳによる受信処理を行うパケットと判別する（ステップＳ９７）。
【０１０３】
そして、アダプタ制御部７は、判別処理中において、ＯＳによる受信処理を行うと判別したパケットを、ＯＳ空間１０９内の受信バッファ領域に転送する（ステップＳ９８）。
上記の一連の判別処理によって、本発明にかかる送受信処理、再送処理を固定識別子、送信元バッファＩＤ、受信先バッファＩＤ等の情報に基づいて特定のパケットにのみ許可するアクセス制御が可能となる。
【０１０４】
次に、本発明にかかるパケットを受信してから受信先バッファに格納するまでのデータ処理の様子について、図２２を参照して説明する。
図２２では、送受信事前処理によって分割ブロック情報が３２７６８Ｂ（＝３２ＫＢ）に設定されているものとし、１ＭＢのユーザデータを受信する場合を例として説明する。
【０１０５】
まず、受信したパケット（図中▲１▼）は、ヘッダ部とデータ部に分離されアダプタ１内の受信バッファ２にデータ部のみが、アダプタ制御部７により保持される（図中▲２▼）。
次に、ＤＭＡ制御部４は、当該パケットのヘッダ部の受信先バッファＩＤ、オフセットアドレス、ブロックサイズの情報と、バッファ受信管理情報に保持されている当該受信先バッファのベースアドレスの情報を元に、メモリ１０１のユーザ空間１１０内にある受信先バッファヘの格納先アドレスを決定し、直接ＤＭＡ転送する（図中▲３▼）。
【０１０６】
図１９及び２０に示した受信処理は、予め受信先バッファが確保されており、ヘッダ部の情報に基づいて格納先アドレスを迅速に決定可能なため、パケットの到着順によらず高速に行うことが可能である。ネットワーク中でロス等が発生した場合、未受信となっている部分については、歯抜けの状態としておけばよい。再送処理によって再度ブロックを受信した場合も、ヘッダ情報を元に所定の領域へ迅速に格納することが可能となる。
【０１０７】
さらに、一連の受信処理は、従来のようにＯＳ空間の受信バッファ領域を介して転送せずに、直接受信先バッファに転送することから、高速化が可能になる。次に、ユーザデータ到着後に行うソフトウェアによる受信後処理について、図２３を参照して説明する。
まず、プロセッサ１００（すなわちソフトウェア）は、受信前処理を実行後、アダプタから受信完了が通知されるのを待機する（ステップＳ１００）。
次に、プロセッサ１００は、受信完了が通知された場合、受信バッファ情報ポインタの情報に基づいて受信が完了したバッファを判別する（ステップＳ１０１）。
【０１０８】
次に、プロセッサ１００は、当該受信先バッファヘのデータ受信を要求したアプリケーションプロセスに起動通知を行い、ユーザデータを引き渡す（ステップＳ１０２）。
以上のように、本発明にかかる一連の処理、すなわち、ソワトウェアの送受信事前処理、送信前処理、送信後処理、受信前処理、受信後処理、およブアダプタの送信処理、受信処理が行われ、ネットワークにおけるデータの高速、かつ信頼性のある転送が可能となる。
【０１０９】
以上、本発明の第１の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
次に、第２の実施形態について説明する。
以下、図面を参照して本発明の第２の実施形態について説明する。
図２５は、本発明の第２の実施形態によるデータ同報配信装置を用いた計算機ネットワークの構成例を示す。
ネットワークは、通常、計算機を、少なくとも３以上備えた構成（例えば、ネットワークＮで相互に接続された送信側計算機２０，受信側計算機２１，２２，２３からなる）になっている。
ここで、受信側計算機２１，２２，２３はマルチキャストグループＭを構成しており、ネットワークＮは公衆情報通信網，専用情報通信網，インターネット及びＬＡＮ（ローカルエリアネットワーク）から構成されている。
【０１１０】
図２５に示すように送信側計算機２０から送出されるマルチキャストグループＭ宛のパケットＰ１は、ＩＰマルチキャスト等の機能によってネットワークＮ内でコピーされ、コピーパケットＰ２として、受信側計算機２１，２２，２３各々に転送される。
ここで、本発明にかかるデータ同報配信方法は、ネットワークＮ内のパケットコピー機能をＩＰマルチキャスト等の特定の方法に限定するものではない。
ネットワークＮ内の図示しないノード装置によりユニキャストベースにおけるパケットコピー機能により、マルチキャストが実現される場合にも適用可能である。
【０１１１】
以下、図２６を参照して、本願発明のデータ同報配信装置を組み込んだ計算機３００（例えば、送信側計算機２０，受信側計算機２１，２２，２３）の構成を説明する。構成としては、送信側計算機２０，受信側計算機２１，２２，２３各々計算機３００と同様な構成をしている。
計算機３００は、プロセッサ１００と、メモリ１０１と、ネットワークアダプタ（以下、アダプタ）３１とを有して構成され、これらの構成要索は、システムバス１０４を介して接続されている。
また、計算機３００のシステム構成によっては、少なくとも１以上のＩ／Ｏ装置１０２を設けて構成するのが好ましい。
【０１１２】
また、上記アダプタ３１は、アダプタ制御部３７、ＤＭＡ制御部３４、送信バッファ３３、受信バッファ３２、送信制御部３６、受信制御部３５、ネットワーク送受信部３８を有して構成され、各構成要素は、内部バス３９を介して接続されている。
アダプタ制御部３７は、受信ＤＭＡ制御情報保持手部３７Ａ、送信ＤＭＡ制御情報保持部３７Ｂ、バッファ受信管理情報保持部３７Ｃ、バッファ送信管理情報保持部３７Ｄ、送達制御情報保持部３７Ｅ、自ネットワークアドレス保持部３７Ｆ、分割ブロック情報保持部３７Ｇを有して構成されている。
【０１１３】
また、アダプタ制御部３７は、プロセッサ１００との間でデータの送信、および受信の制御に関する情報を通知するインタフェース処理と、プロセッサ１００から要求されたデータの送信、および受信に関する送達管理処理と、送信制御部３６に対してデータの送信を起動する処理と、受信制御部３５が受信したデータの管理とを行い、メモリ１０１から送信バッファ３３に対して、および受信バッファ３２からメモリ１０１に対してＤＭＡ処理によりデータを転送する際、送信ＤＭＡ制御情報、受信ＤＭＡ制御情報の作成を行う構成である。
【０１１４】
送信ＤＭＡ制御情報保持部３７Ｂは、メモリ１０１から送信バッファ３３ヘのデータのＤＭＡ転送時に行う制御に関する情報を保持する構成である。
受信ＤＭＡ制御情報保持部３７Ａは、受信バッファ３２からメモリ１０１ヘのデータのＤＭＡ転送時に行う制御に関する情報を保持する構成である。
バッファ送信管理情報保持部３７Ｄは、送信元となる自計算機（例えば、送信側計算機２０）から受信先となるマルチキャストグループＭに属する（ネットワークＮで接続されている）他計算機（受信側計算機２１，２２，２３のいずれか、例えば、受信側計算機２１）へのデータ送信時に行う制御に関する情報を保持する構成である。
【０１１５】
以下、送信側を送信側計算機２０とし、受信側を受信側計算機２１，２２，２３として説明するが、双方ともに送受信を行うものであり、計算機としての構成も同様であることから、送受信の機能及び構成を双方の計算機を用いて説明する。なお、送受信の関係が逆となる場合、双方計算機の動作は当然に逆となる。
バッファ受信管理情報保持部３７Ｃは、送信元となる受信側計算機２１から受信先となる自計算機２０へのデータ受信時に行う制御に関する情報を保持する構成である。
【０１１６】
送達制御情報保持部３７Ｅは、他計算機（受信側計算機）２１とのデータの送信、および受信において、その送達制御に関する情報を保持する構成である。
自ネットワークアドレス情報保持部３７Ｆは、自計算機２０のネットワークＮ上における識別子となるネットワークアドレス情報（例えは、ＩＰ（インターネットプロトコル）アドレス、イーサネット（登録商標）アドレス、ＵＤＰポート番号）を保持するための構成である。
【０１１７】
分割ブロック情報保持部３７Ｇは、メモリ１０１から送信バッファ３３、および受信バッファ３２からメモリにデータを転送する際、その転送単位となるブロックのサイズ情報を保持するための構成である。
ＤＭＡ制御部３４は、送信ＤＭＡ制御情報保持部３７Ｂに保持された情報に基づいて、メモリ１０１から送信バッファ３３ヘのＤＭＡ転送処理と、また、受信ＤＭＡ制御情報保持部３７Ａに保持された情報に基づいて、受信バッファ３２からメモリ１０１ヘのＤＭＡ転送処理を行う構成である。
【０１１８】
送信バッファ３３は、ネットワークＮを介して送信するデータを保持する構成である。
受信バッファ３２は、ネットワークＮを介して受信するデータを保持する構成である。
送信制御部３６は、送信ブロック情報保持部３６Ａ、および送信パケット生成部３６Ｂを有して構成され、送信ブロック情報保持部３６Ａに設定された情報に基づいてネットワークＮ上に送信するパケットを生成する処理を行う構成である。
【０１１９】
受信制御部３５は、受信ブロック情報保持部３５Ａ、受信パケット判別情報保持部３５Ｂ、受信パケット判別部３５Ｃを有して構成され、受信パケット判別情報保持部３５Ｂに保持された情報に基づいて受信パケットを判別する処理と、判別時の情報、および受信パケットのヘッダ情報に基づいて受信したパケットの情報を受信ブロック情報保持部３５Ａに設定する処理を行う構成である。
ネットワーク送受信部３８は、ネットワークＮと送信制御部３６との間のデータ通信、およびネットワークＮと受信制御部３５との間のデータ通信を行う構成である。
【０１２０】
次に、図２６におけるメモリ１１０に格納されるデータの構造について説明する。
メモリ１１０に格納されるデータの構造は、送信処理に関連するデータ構造と、受信処理に関連するデータ構造からなる。
送信処理に関連するデータ構造としては、バッファ送信要求情報、ユーザデータがある。
ユーザデータは、送信側の計算機が送信するユーザバッファ（以下、送信元バッファ）に格納された情報である。ここで、ユーザバッファは、メモリ内のユーザメモリ空間内に設けられている。ユーザバッファはユーザメモリ空間（ユーザ空間）及びＯＳメモリ空間（ＯＳ空間）を有している。
【０１２１】
バッファ送信要求情報は、プロセッサ１００がアダプタ３１に対してユーザデータの送信を起動する際に必要となる情報である。図２７の概念図を参照して、その構成例を示す。
図２７に示すように、マルチキャストグループＭを構成する受信側計算機２１（または２２，２３）宛のマルチキャスト用ネットワークアドレス（例えはＩＰマルチキャストアドレス）、送信元バッファおよび受信側計算機２１上に確保され受信先となる受信先バッファと一意に対応する識別子情報であるバッファＩＤ（識別番号）、マルチキャストグループＭに所属する受信側計算機数、送信元バッファのアドレスとサイズを保持するリストヘのポインタである送信元バッファ情報ポインタ、送信ステータス等を保持するその他の制御情報を有して構成される。
【０１２２】
受信処理に関連するデータ構造としては、バッファ受信要求情報、ユーザデータがある。
ユーザデータは、受信側計算機２１がデータを受信する領域としてメモリ１０１内に確保したユーザバッファに格納された情報である。
バッファ受信要求情報は、プロセッサ１００がアダプタ３１に対してユーザデータの受信を起動する際に必要となる情報である。図２８を参照して、その構成例を示す。
図２８に示すように、送信元となる計算機のネットワークアドレス、送信元バッファ、および受信側計算機２１上に確保され受信先となる受信先バッファと一意に対応する識別子情報であるバッファＩＤ、受信先バッファのアドレスとサイズを保持するリストヘのポインタである受信先バッファ情報ポインタ、受信ステータス等を保持するその他の制御情報を有して構成される。
【０１２３】
本第２の実施形態においては、ユーザデータは、メモリ１０１内のユーザ空間に存在する。
一方、バッファ送信要求情報、および、バッファ受信要求情報は、ＯＳ空間に存在する。
また、本第２の実施形態においては、送信元バッファと受信先バッファは、同一サイズの有限長バッファとし、ユーザデータの転送に先立って、メモリ１０１上に確保するものとする。
【０１２４】
次に、アダプタ３１内でデータの送受信処理を行う際、その制御に関するデータの構造について説明する。
アダプタ３１内の制御に関するデータの構造は、送信処理に関連するデータ構造と、受信処理に関連するデータ構造と、送信元バッファと受信バッファ間のデータ送達管理に関連するデータ構造からなる。
アダプタ内の送信処理に関連するデータ構造としては、バッファ送信管理情報、送信パケット情報がある。
【０１２５】
バッファ送信管理情報は、プロセッサ１００からのユーザデータの送信要求を管理するための情報であり、図２９に構成例の概念図を示す。図２９の概念図に示すように、バッファ送信管理情報は、送信要求単位に設けられリスト構造となっている。
上記リストの各要素は、マルチキャスト用ネットワークアドレス、バッファＩＤ、受信側計算機数、送信元バッファ情報ポインタ、送信元バッファアドレス，送信元バッファサイズ、送信するユーザデータに対する受信側からの再送要求を管理する情報へのポインタである再送要求管理テーブルポインタ、送信ステータス等を保持するその他の制御情報を有して構成される。
【０１２６】
ここで、マルチキャスト用ネットワークアドレス、バッファＩＤ、受信側計算機数、送信元バッファ情報ポインタ、送信元バッファアドレス、送信元バッファサイズの各要素は、プロセッサからバッファ送信要求情報によって指定された情報を保持する要素である。
【０１２７】
送信パケット情報は、アダプタ制御部３７が、送信制御部３６に対して、本発明にかかるデータパケット、もしくは、制御パケットの送信を要求する際に設定する情報であり、図３０に構成例の概念図を示す。図３０概念図に示すように、送信元ネットワークアドレス、マルチキャスト用ネットワークアドレス、送信パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズ、送信バッファリードアドレスを有して構成される。
【０１２８】
送信元ネットワークアドレスは、送信元となる自計算機２０のネットワークアドレスを指定する情報であり、自ネットワークアドレス保持部３７Ｆに保持された情報に基づいて設定される。
マルチキャスト用ネットワークアドレスは、受信側計算機２１が所属するマルチキャストグループＭのネットワークアドレスを指定する情報であり、バッファ送信管理情報保持部３７Ｄに保持された情報に基づいて設定される。
【０１２９】
送信パケット種別は、アダプタ制御部３７が送信制御部３６に対して送信を要求するパケットの種別を指定する情報であり、データ、送信完了、再送要求、再送開始要求、受信完了がある。
送信パケット種別において、データは、送信元バッファから送信バッファに転送したブロックをパケット化して送信する場合に設定する種別である。
【０１３０】
送信完了は、送信元バッファのユーザデータ全体、あるいは、受信側計算機２１からの再送要求全体の送信が完了した際、送信の完了を通知するパケットを送信する場合に設定する種別である。
再送要求は、ブロック単位にユーザデータの再送を要求するパケットを送信する場合に設定する種別である。
【０１３１】
再送開始要求は、再送を要求したユーザデータ（ブロック）の再送処理の開始を要求するパケットを送信する場合に設定する種別である。
受信完了は、ユーザデータの全体の受信が完了したことを通知するパケットを送信する場合に設定する種別である。
ここで、データ、送信完了は、ユーザデータの送信側（例えば、送信側計算機２０）から受信側（受信側計算機２１）に対して送信するパケット種別であり、再送要求、再送開始要求、受信完了は、受信側が送信側に対して送信するパケット種別である。
【０１３２】
バッファＩＤは、送信側、および受信側で確保されたバッファの識別番号を設定する情報である。
ブロック識別番号は、送信元バッファユーザデータをブロック単位でパケット化して送信する際、送信元バッファ内の格納アドレスと一意に対応する識別番号を設定する情報である。ブロック識別番号は、送信元バッファ内のデータをブロック単位で送信する際、その送信順番等を設定する。
【０１３３】
オフセットアドレスは、ブロックをパケット化して送信する場合、あるいは、ブロックの再送を要求する場合に、対象となるブロックの送信元バッファのべースアドレスからのオフセットアドレスを設定する情報である。
ブロックサイズは、ブロックをパケット化して送信する場合、あるいは、ブロックの再送を要求する場合に、対象となるブロックのサイズを設定する情報である。
送信バッファリードアドレスは、ブロックをパケット化して送信する場合に、当該ブロックの送信バッファ３３内における格納先アドレスを設定する情報である。
【０１３４】
アダプタ３１内の受信処理に関連するデータ構造としては、バッファ受信管理情報、受信パケット情報、受信パケット判別情報がある。
バッファ受信管理情報は、プロセッサからのユーザデータ受信要求を管理するための情報であり、図３１構成例を示す。図３１示すように、バッファ受信管理情報は、受信要求単位にリスト構造となっている。
このリストの各要素は、送信元ネットワークアドレス、バッファＩＤ、送信元バッファ情報ポインタ、送信元バッファアドレス、送信元バッファサイズ、受信するユーザデータの送達を管理する情報へのポインタである受信管理テーブルポインタ、受信ステータス等を保持するその他の制御情報を有して構成される。
ここで、送信元ネットワークアドレス、バッファＩＤ、送信元バッファ情報ポインタ、送信元バッファアドレス、送信元バッファサイズの各要素は、プロセッサ１００からバッファ受信要求情報によって指定された情報を保持する要素である。
【０１３５】
次に、受信パケット情報は、受信制御部３５が、アダプタ制御部３７に対して、本発明にかかるデータパケット、もしくは、制御パケットの受信を通知する際に設定する情報であり、図３２に構成例を示す。
図３２に示すように、受信パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズ、受信バッファリードアドレスを有して構成される。
受信パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズの各情報は、当該受信パケットのヘッダ情報に基づいて設定する情報である。
【０１３６】
受信バッファリードアドレスは、当該受信パケットの受信バッファ内での格納先アドレスを設定する情報である。
また、受信パケット判別情報は、受信制御部３５がパケットを受信した際、本発明にかかる処理を行うパケットか否かを判別するための情報であり、アダプタ制御部３７が受信制御部３５の受信パケット判別情報保持部３５Ｂに対して設定する。
【０１３７】
上記受信パケット判別情報の構成例を図３３に示す。この図３３に示すように、受信パケット判別情報は、自ネットワークアドレス、固定識別子、バッファＩＤリスト、バッファＩＤリストポインタを有して構成される。
自ネットワークアドレスは、自計算機のネットワークアドレスを保持する情報であり、アダプタ制御部３７の自ネットワークアドレス保持部３７Ｆの情報に基づいて設定する。
【０１３８】
固定識別子は、本発明にかかるパケットが所定位置に有する識別情報である。
バッファＩＤリストは、アダプタにおいて受信処理中であるユーザデータの受信先バッファＩＤを管理するための情報である。
バッファＩＤリストポインタは、バッファＩＤリストヘのポインタである。
アダプタ内の送信元バッファと受信先バッファ間のデータ送達管理に関連するデータ構造としては、送達制御情報、再送要求管理テーブル、受信管理テーブルがある。
【０１３９】
ここで、送達制御情報は、ユーザデータの送信、および受信に関連した送達制御に関する情報であり、ブロック送信タイマ値、ブロック受信タイマ値、送信最大リトライ値、受信完了カウンタ、再送開始要求カウンタ、受信最大リトライ値を有して構成される。
ブロック送信タイマ値は、送信側計算機２０のアダプタ制御部３７が、受信側計算機２１に送信完了を通知してから、それに対する応答を待つ最大時間を規定する情報である。
【０１４０】
ブロック受信タイマ値は、受信側計算機２０のアダプタ制御部３７が、プロセッサ１００からユーザデータ受信要求を受けてから、当該ユーザデータのパケットを受信するまでに待機する最大時間、および、前記パケット毎の最大受信待機間隔を規定する情報である。
最大送信リトライ値は、ブロック送信タイマの最大タイムアウト回数を規定する情報である。
最大受信リトライ値は、受信側計算機２１のアダプタ制御部３１が、送信側計算機２０に対して再送開始要求を行った回数、すなわち、ユーザデータの再送を要求する最大回数を規定する情報である。
【０１４１】
受信完了カウンタは、送信側計算機２０のアダプタ制御部３７がマルチキャストグループＭに所属する各受信側計算機２１，２２，２３から送信される受信完了パケットの受信回数を設定するためのカウンタである。
再送開始要求カウンタは、送信側計算機２０のアダプタ制御部３７がマルチキャストグループＭに所属する各受信側計算機２１，２２，２３（複数の受信側計算機）から送信される再送開始要求の受信回数を設定するためのカウンタである。
【０１４２】
再送要求管理テーブルは、送信側計算機２０のアダプタ制御部３７が、受信側計算機２１からの再送要求を管理するための情報である。この再送要求管理テーブルの構成例を図３４に示す。
送信側計算機２１のアダプタ制御部３７は、再送要求管理テーブルをプロセッサ１０１から送信要求を受けたユーザデータ単位に作成し、バッファ送信管理情報に当該テーブルヘのポインタを保持する。
すなわち、再送要求管理テーブルは、ユーザデータをパケット化して送信する全ブロックの再送要求ステータスを管理するためのテーブルである。ここで、再送要求管理テーブル中のブロック識別番号は、パケットヘッダに付与するブロック識別番号と一意に対応するものである。
【０１４３】
アダプタ制御部３７は、バッファ送信管理情報に保持されている送信するユーザデータのサイズ（送信元バッファのサイズ）と、分割ブロック情報保持部３７Ｇに保持されているブロックサイズの情報に基づいて、再送の管理対象となるブロックの数（Ｎ）とを計算し、当該テーブルの要素数（再送ブロックの要素数）を決定する。
【０１４４】
受信管理テーブルは、受信側計算機２１のアダプタ制御部３７が、送信側計算機２０からパケット化して送信されるブロック毎の受信ステータスを管理するための情報である。この受信管理テーブルの構成例を図１１に示す。
受信側計算機２１のアダプタ制御部は３７、受信管理テーブルをプロセッサ１０１から受信要求を受けたユーザデータ単位に作成し、バッファ受信管理情報に当該テーブルヘのポインタを保持する。
受信管理テーブルは、パケット化して送信される全ブロックの受信ステータスを管理するためのテーブルである。
【０１４５】
ここで、当該テーブル中のブロック識別番号は、パケットヘッダに付与されたブロック識別番号と一意に対応するものであり、送信側から送信される順番に相当する。
受信側計算機２１のアダプタ制御部３７は、バッファ受信管理情報に保持されている受信するユーザデータのサイズ（受信先バッファサイズ）と、分割ブロック情報保持部３７Ｇに保持されているブロックサイズの情報に基づいて計算し、受信の管理対象となるブロックの数（Ｎ）を計算し、当該テーブルの要素数（受信ブロックの要素数）を決定する。
【０１４６】
ここで、本発明では、ユーザデータを転送する際、次の２つの条件を前提としている。一つは、送信元バッファと受信先バフファは、転送開始前に同一サイズバッファがメモリ１０１上に確保されることである。
もう一つは、送信側計算機２０と受信側計算機２１とのアダプタ制御部３７において分割ブロック情報保持不３７Ｇには、同一のブロックサイズが設定されることである。
【０１４７】
この２つの前提から、バッファ間のユーザデータの送達管理において、再送要求管理テーブルサイズ、および受信管理テーブルサイズの計算は、送信側計算機２０と受信側計算機２１で交渉することなく決定することが可能である。
また、転送開始前に、転送すべき全ブロックを送信側計算機２０、受信側計算機２１で予め把握することが可能である。
次に、ネットワーク上で送受信されるパケットの構成例を、図３６を参照して説明する。
【０１４８】
従来のパケットは、図３６（ａ）に示すように、例えば、送信元ネットワークアドレス、受信先ネットワークアドレス、タイプの情報を保持したヘッダ部とデータ部を有して構成されている。
送信元ネットワークアドレスは、パケットを送出した計算機を識別するための情報である。
受信先ネットワークアドレスは、パケットを受信すべき計算機を識別するための情報である。送信側計算機では、受信側計算機のマルチキャストグループ宛のマルチキャスト用アドレスを設定する。受信側計算機では、送信側計算機のネットワークアドレスを設定する。
【０１４９】
タイプは、アダプタが所定の処理を行うために必要な情報であり、例えば、データ全体のサイズ等の情報である。
データは、ＯＳ、アプリケーションが処理する対象となる情報である。
本発明にかかるパケットは、図３６（ｂ）に示すように、送信元ネットワークアドレス、受信先ネットワークアドレス、タイプ、固定識別子、パケット種別、バッファＩＤ、ブロック識別番号、オフセットアドレス、ブロックサイズ、の情報を保持したヘッダ部と、パケット種別がデータの場合に、データ部に格納するブロックを有して構成される。ヘッダ部に格納する各情報は、送信ブロック情報保持部３６Ａに保持された情報に基づいて、送信制御部３６が生成する。
【０１５０】
送信元ネットワークアドレス、受信先ネットワークアドレス、タイプは、それぞれ従来のパケットに対応するものである。
固定識別子は、パケットが本発明にかかるパケットであることを識別するための情報である。
パケット種別は、本発明にかかるパケットの種別を識別するための情報である。本発明にかかるパケットの種別は、先に述べたように、データ、送信完了、再送要求、再送開始要求、受信完了がある。
【０１５１】
バッファＩＤは、当該パケットが送信するブロックの受信先バッファあるいは、当該パケットが送信するブロックが格納されている送信元バッファを識別するための情報である。
ブロック識別番号は、当該パケットが送信するブロック、あるいは、再送を要求するブロックを識別するための情報である。パケット種別がデータの場合、送信するブロックのブロック識別番号が設定される。パケット種別が再送要求の場合、再送を要求するブロックの識別番号が設定される。パケット種別が、送信完了、再送開始要求、受信完了の場合、当該領域は未使用とし、例えば、「０」が設定される。
【０１５２】
オフセットアドレスは、当該パケットが送信するブロック、あるいは、再送を要求するブロックの送信元バッファ内での格納位置を示すオフセットアドレスを識別するための情報である。パケット種別が、データと再送要求以外の場合、当該領域は未使用とし、例えば、「０」が設定される。
ブロックサイズは、当該パケットの送信するブロック、再送を要求するブロックのサイズを識別するための情報である。パケット種別が、データと再送要求以外の場合、当該領域は未使用とし、例えば、「０」が設定される。
【０１５３】
以下、送受信事前処理、ユーザデータの送信処理、受信処理の概要について示す。
送受信事前処理は、プロセッサが計算機間のデータの転送に先立ちアダプタに対して行うソフトウェア処理である。
まず、送受信事前処理の動作を、図３７のフローチャートを参照して説明する。
はじめに、自計算機２０のネットワークアドレスを、アダプタ３１におけるアダプタ制御部３７の自ネットワークアドレス保持部３７Ｆに設定する（ステップＳ２００）。
ここで、自ネットワークアドレス保持部３７Ｆに設定したネットワークアドレスは、受信側計算機２１が送信側計算機２２宛のパケットを送出する場合に送信元ネットワークアドレスとして使用する。
【０１５４】
次に、送信元バッファと送信バッファ３３との間、および受信先バッファと受信バッファ３２との間の転送単位であるブロックサイズを、アダプタ制御部３７における分割ブロック情報保持部３７Ｇに設定する（ステップＳ２０１）。
次に、ブロック送信タイマ値、ブロック受信タイマ値、送信最大リトライ値、受信最大リトライ値を送達制御情報保持部に設定する（ステップＳ２０２）。
上記の一連の処理によって、送受信事前処理が完了する。
【０１５５】
次に、ユーザデータの送信処理について示す。
送信処理は、ユーザデータと、バッファ送信要求情報とを用いて、図３６（ｂ）参照の本発明にかかるパケットをアダプタ内で生成して、ネットワークＮに送出する処理である。
以下、送信時のソフトウェア前処理の動作、アダプタ３１の動作、ソフトウェア後処理の動作を示す。
はじめに、ユーザデータの送信処理時に行うソフトウェアによる前処理を、図３８のフローチャートを参照して説明する。
【０１５６】
送信元バッファには、Ｉ／Ｏ装置等からユーザデータが格納されているものとする。ここで、送信元バッファに格納する際、ユーザデータには、通信プロトコル終端処理を施さないものとする。
はじめに、バッファ送信要求情報に、マルチキャスト用ネットワークアドレス、バッファＩＤ、受信側計算機数、送信元バッファ情報ポインタを設定する（ステップＳ２０５）。
次に、アダプタ３１は、バッファ送信要求情報の情報を、アダプタ制御部３７におけるバッファ送信管理情報保持部３７Ｄに設定する（ステップＳ２０６）。
最後に、アダプタ制御部３７に対して、送信動作の起動を通知する。上記の一連の処理によりソフトウェアの送信前処理が完了する（ステップＳ２０７）。
【０１５７】
次に、送信処理時のアダプタ（ネットワークアダプタ）３１の動作を、図３９、図４０、図４１のフローチャートを参照して説明する。アダプタ制御部３７に対する起動通知を受けてからの動作について説明する。
まず、アダプタ制御部３７は、バッファ送信管理情報保持部３７Ｄに設定された送信元バッファ情報ポインタの情報に基づいて、送信元バッファのアドレス、サイズを読み出し、バッファ送信管理情報保持部３７Ｄに設定する（ステップＳ２１０）。
【０１５８】
次に、アダプタ制御部３７Ｄは、当該ユーザデータの送信に対応する送信りトライカウンタ、受信完了カウンタ、再送開始要求カウンタの値を０クリアする（ステップＳ２１１）。
次に、アダプタ制御部３７は、バッファ送信管理情報保持部３７Ｄ、および分割ブロック情報保持部３７Ｇに保持された情報に基づいて当該ユーザデータの送信に対応する再送要求管理テーブルを作成する（Ｓ２１２）。
【０１５９】
次に、アダプタ制御部３７は、バッファ送信管理情報保持部３７Ｄ、および分割ブロック情報保持部３７Ｇに保持された情報に基づいて、送信元バッファからブロック単位でユーザデータをＤＭＡ転送するための送信ＤＭＡ制御情報を作成する（Ｓ２１３）。
そして、ＤＭＡ制御部３４は、送信ＤＭＡ制御情報保持部３７Ｂの内容にしたがって、送信元バッファから送信バッファ３３にブロック（ユーザデータ）をＤＭＡ転送する（Ｓ２１４）。
【０１６０】
次に、アダプタ制御部３７は、送信パケット情報を作成して、送信制御部３６の送信ブロック情報保持部３６Ａに設定し、ＤＭＡ転送したブロックの送信を起動する（Ｓ２１５）。
次に、送信制御部３６の送信パケット生成部３６Ｂは、送信ブロック情報保持部３６Ａの情報とブロックとから本発明にかかるパケットを生成する（Ｓ２１６）。
次に、ネットワーク送受信部３８は、送信制御部３６の送信パケット生成部３６Ｂが生成したパケットをネットワークＮに送信する。
【０１６１】
ここで、図３９のフローチャートに示すように送信要求されたユーザデータ分の送信が完了するまで、ブロックのＤＭＡ転送、パケット生成、ネットワークヘの送出の前述した一連の処理を繰り返す。
次に、ユーザデータ分の送信が完了後、アダプタ制御部３７は、受信側計算機２１（受信側）に対して送信完了を通知するパケットの送信処理を行い、受信側計算機２１からの応答を待機する処理に移行する。
【０１６２】
受信側計算機２１からの応答は、再送要求、再送開始要求、受信完了がある。それぞれの場合の処理フローは図４０に示す次のフローチャートの通りである。
まず、受信側計算機２１からの応答が、再送要求の場合について説明する。
アダプタ制御部３７は、受信機計算機２１からの応答を待ち（ステップＳ２２０）、この応答が再送要求か否かの判定を行い、再送要求と判定すると、ステップＳ２２３へ処理を移行する（ステップＳ２２１）。
アダプタ制御部３７は、再送要求パケットのヘッダ情報に基づいて再送要求を受けたブロックの情報を、対応する再送要求管理テーブルに登録する（ステップＳ２２３）。ここで、マルチキャストグループに所属する複数の受信側計算機から送出される重複した再送要求は、再送要求管理テーブル上でＯＲを取って登録する。
【０１６３】
そして、アダプタ制御部３７は、再送要求管理テーブル登録後、再び受信側計算機２１からの応答応答待ち状態に遷移し、待機する（ステップＳ２２０）。
以上が受信側からの応答が、再送要求の場合の動作フローである。
次に、受信側からの応答が、再送開始要求の場合について説明する。
アダプタ制御部３７は、受信機計算機２１からの応答を待ち（ステップＳ２２０）、この応答が再送要求か否かの判定を行い、再送要求でないと判定すると、ステップＳ２２２へ処理を移行する（ステップＳ２２１）。
そして、アダプタ制御部３７は、受信機計算機２１からの応答が再送開始要求であると判定すると、処理をステップＳ２２４へ遷移させる（ステップＳ２２２）。
【０１６４】
アダプタ制御部３７は、再送開始要求カウンタの値をインクリメントする（ステップＳ２２４）。
ここで、アダプタ制御部３７は、再送開始要求カウンタ値と受信完了カウンタ値の和がバッファ送信要求情報の受信側計算機数と一致しない場合、すなわち全ての受信側計算機２１，２２，２３からの応答を受信していないことを検出した場合、再び受信側計算機２１，２２、２３からの応答待ち状態（ステップＳ２２０）に処理状態を遷移する（ステップＳ２２５）。
【０１６５】
一方、アダプタ制御部３７は、全ての受信側計算機２１，２２，２３からの応答を受信したことを検出し（ステップＳ２２５）、かつ、リトライオーバーの判定を行い（ステップＳ２２６）、送信リトライカウンタ値が送達制御情報の送信最大リトライ値で規定する値を超えていないと判定した場合、再送開始要求パケットヘッダのバッファＩＤに対応する再送要求管理テーブルの情報に基づいて、ブロックの再送を行う（Ｓ２２７）。
【０１６６】
ここで、再送対象となるブロックの検出は、再送要求管理テーブルで再送が登録されているものを判別することによって行う。再送は、再送要求されたブロックのブロック識別番号、ブロックサイズの情報から送信元バッファ内での当該ブロックの格納アドレス（＝送信元バッファアドレス＋ブロック識別番号×ブロックサイズ）を決定し、ＤＭＡ転送、パケット送信の一連の処理を実行することにより行う。
【０１６７】
要求されたブロックの分の再送完了後、アダプタ制御部３７は、受信側計算機２１に対して送信完了を通知するパケットの送信処理を行い（ステップＳ２２８）、送信リトライカウンタをインクリメントする処理を行、処理をステップＳ２２０へ遷移させる（ステップＳ２２９）。
そして、アダプタ制御部３７は、再び受信側計算機２１からの応答を待機する（ステップＳ２２０）。
【０１６８】
全ての受信側計算機２１から応答を受信したことを検出し（ステップＳ２２５）、かつ、送信リトライカウンタ値が送信最大リトライ値を超えと判定した場合（ステップＳ２２６）、アダプタ制御部３７は、送信処理を終了し、送信した送信バッファ情報ポインタの情報、送信ステータス（異常終了）とともに、プロセッサ１００に対して送信完了を通知する（ステップＳ２４４）。
以上が、受信側からの応答が、再送開始要求の場合の動作フローである。
【０１６９】
次に、受信側計算機２１からの応答が、受信完了の場合について説明する。
アダプタ制御部３７は、受信計算機２１からの応答を受信完了であると判定すると処理をステップＳ２３１へ遷移する（ステップＳ２３０）。
そして、アダプタ制御部３７は、受信完了カウンタをインクリメントする（ステップＳ２３１）。
次に、アダプタ制御部３７は、受信完了カウンタ値と再送開始要求カウンタ値との和が、バッファ送信要求情報の受信側計算機数と一致しないことを検出した場合、すなわち全ての受信側計算機からの応答を受信していないことを検出した場合、ステップＳ２２０へ処理を戻し、再び受信側計算機２１からの応答待ち状態に遷移する（ステップＳ２３２）。
【０１７０】
一方、アダプタ制御部３７は、受信完了カウンタ値と再送開始要求カウンタ値との和が、バッファ送信要求情報の受信側計算機数と一致したことを検出した場合、すなわち全ての受信端末から応答を受信したことを検出した場合、処理をステップＳ２３３へ遷移させる（ステップＳ２３２）。
そして、アダプタ制御部３７は、再送要求があることを検出し（ステップＳ２３３）、かつ送信リトライカウンタ値が送信最大リトライ値を超えていないことを検出した場合（ステップＳ２３４）、処理をステップＳ２３５へ遷移させる。
これにより、アダプタ制御部３７は、受信完了パケットヘッダのバッファＩＤに対応する再送要求管理テーブルの情報に基づいて、ブロックの再送を行う（ステップＳ２３５）。
【０１７１】
一方、アダプタ制御部３７は、再送要求があることを検出した場合（ステップＳ２３３）、かつ送信リトライカウンタ値が送信最大リトライ値を超えたことを検出した場合（ステップＳ２３４）、送信処理を終了し、送信した送信バッファ情報ポインタの情報、送信ステータス（異常終了）とともに、プロセッサ１００に対して送信完了を通知する（ステップＳ２４４）。
また、アダプタ制御部３７は、再送要求が無いことを検出した場合（ステップＳ２３３）、全ユーザデータの送達が完了したものと判定し、送信した送信バッファ情報ポインタの情報、送信ステータス（正常終了）とともに、プロセッサに対して送信完了を通知する（ステップＳ２４４）。
以上が、受信側計算機２１からの応答が、受信完了の場合の動作フローである。
【０１７２】
上述した説明においては、送達制御情報に規定されたブロック送信タイマ値の範囲内で、受信側計算機２１からの応答があった場合の一連の動作のフローチャートを示したものである。
一方、アダプタ制御部３７は、受信側計算機２１からの応答が受信完了でないことを検出し（ステップＳ２３０）、かつブロック送信タイムアウトが発生したことを検出した場合、処理をステップＳ２３９へ遷移させる（ステップＳ２３８）。
【０１７３】
そして、アダプタ制御部３７は、送信リトライカウンタ値が送信最大リトライ値を超えた場合、すなわち、送信リトライオーバーが発生したことを検出した場合（ステップＳ２３９）、送信処理を終了し、送信した送信バッファ情報ポインタの情報、送信ステータス（異常終了）とともに、プロセッサ１００に対して送信完了を通知する（ステップＳ２４４）。
また、アダプタ制御部３７は、送信リトライオーバーが発生していないことを検出した場合、処理をステップＳ２４０へ遷移させる（ステップＳ２３９）。
【０１７４】
そして、アダプタ制御部３７は、受信側計算機２１からの再送要求が無いことを検出した場合（ステップＳ２４０）、対応する受信側計算機２１に対して送信完了パケットの送信を行い（ステップＳ２４２）、当該ユーザデータの送信に対応するリトライカウンタの値をインクリメントし、処理をステップＳ２２０へ遷移させ（ステップＳ２４３）、再び受信側からの応答待ち状態とする（ステップＳ２２０）。
また、アダプタ制御部３７は、受信側計算機２１から再送要求があることを検出した場合（ステップＳ２４０）、再送開始要求を受けたバッファＩＤに対応する再送要求管理テーブルの情報に基づいて、ブロックの再送を行う（ステップＳ２４１）。
【０１７５】
そして、アダプタ制御部３７は、送信完了パケットの送信（ステップ２４２）、送信リトライカウンタ値のインクリメントを行い（ステップＳ２４３）、再び受信側からの応答を待機する（ステップＳ２２０）。
以上の一連の処理によって、アダプタ３１によるユーザデータの送信動作が完了する。
【０１７６】
次に、プロセッサ１００におけるソフトウェア（マルチキャストアプリケーション）に基づく送信後処理について、図４２のフローチャートを参照して説明する。
まず、プロセッサ１００は、送信前処理を実行後、アダプタ３１から送信完了が通知されるのを待機する（ステップＳ２５０）。
そして、プロセッサ１００は、送信完了が通知された場合、完了と共に通知される送信バッファ情報ポインタの情報に基づいて、送信処理が完了した送信元バッファを判別する（ステップＳ２５１）。
【０１７７】
最後に、プロセッサ１００は、送信処理が完了した送信元バッファを解放し、次のユーザデータの送信等に使用可能な領域とする（ステップＳ２５２）。
以上示した本発明にかかる送信処理によって、プロセッサ１００によるアダプタ３１に対する送信要求処理と、それに対するアダプタ３１の応答処理は、バッファ単位で行うことが可能となり、従来パケット単位でおこなわれていたのと比較して、処理オーバーヘッドを削減し、データの高速転送が可能になる。
【０１７８】
次に、ユーザデータの受信処理の動作例について示す。
受信処理は、ネットワークから取り込んだパケットを用いて、パケットのデータ部であるブロックを受信先バッファの所定の領域に直接転送することで、ソフトウェアにデータを引き渡すことを可能にするものである。
受信処理には、ユーザデータの受信に先立って行うソフトウェアの受信前処理と、パケット受信時にアダプタ３１が行う受信処理と、ユーザデータを受信した後にソフトウェアが行う受信後処理がある（ここで、ソフトウェアに従いプロセッサ１００が処理を行う）。
【０１７９】
まず、受信前処理について、図４３のフローチャートを参照して説明する。
受信前処理は、バッファ受信要求情報に所定の情報を設定し、アダプタ３１に対して、指定する受信先バッファヘの受信動作の起動を通知する処理である。
はじめに、プロセッサ１００は、ＯＳ空間内のバッファ受信要求情報に、送信元ネットワークアドレス、送信元バッファＩＤ、受信先バッファＩＤ、受信先バッファ情報ポインタを設定する（ステップＳ２５５）。
【０１８０】
次に、プロセッサ１００は、バッファ受信要求情報の情報をアダプタ制御部３７のバッファ受信制御情報保持部３７Ｃに設定する（ステップＳ２５６）。
最後に、プロセッサ１００は、アダプタ制御部３７に対して、受信動作の起動を通知する（ステップＳ２５７）。
上記の一連の処理により、ソフトウェアの受信前処理が完了する。
【０１８１】
次に、受信処理時のアダプタの動作を、図４４，４５，４６のフローチャートを参照して説明する。アダプタ制御部３７に対する起動通知を受けてからの動作について示す。
まず、アダプタ制御部３７は、受信先バッファ情報ポインタの情報に基づいて、受信先バッファのアドレス、サイズを読み出し、バッファ受信管理情報保持部３７Ｃに設定する（ステップＳ３０１）。
次に、アダプタ制御部３７は、バッファ受信管理情報保持部３７Ｃに保持された情報に基づいて、本発明にかかる受信処理を行うべきパケット（図３６（ｂ））を識別するための情報を受信パケット判別情報保持部３５Ｂに設定する（ステップＳ３０２）。
【０１８２】
次に、アダプタ制御部３７は、当該ユーザデータの受信に対応する受信リトライカウンタの値を０クリアする（ステップＳ３０３）。
そして、アダプタ制御部３７は、バッファ受信管理情報保持部３７Ｃ、分割ブロック情報保持部３７Ｇに保持された情報に基づいて、バッファＩＤに対して、すなわち当該ユーザデータの受信に対応する受信管理テーブルを作成する（ステップＳ３０４）。
次に、受信制御部３５は、ネットワーク送受信部３８からパケットの受信通知を待機する（受信通知が入力されるのを待つ、すなわち、未通知の間は待機状態を続ける、ステップＳ３０５）。
【０１８３】
そして、受信制御部３５は、パケットの受信通知を受けたことを検知した場合処理をステップＳ３０６へ遷移させ（ステップＳ３０５）、受信パケット判別情報保持部３５Ｂに保持された情報と、受信パケットのヘッダから取り出した所定の情報を比較し、受信パケット種別の判別を行う（ステップＳ３０６）。
この受信パケット判別処理の詳細については、後述する。
次に、受信制御部３５は、本発明にかかる処理を行うパケットと判別した場合、受信パケット情報保持部３５Ｂに所定の情報を設定する（ステップＳ３０７）。
【０１８４】
次に、パケットの受信を待機していたアダプタ制御部３７は、受信パケット情報から受信したパケットの種別等の情報を取得し、パケット種別に応じた処理を行う。
ここで、パケット種別が、再送要求、再送開始要求、受信完了であった場合、これらは、送信動作時に受信側から通知されるものであり、先にアダプタの送信動作の説明にて示した処理を行う。パケット種別が、データ、送信完了である場合、以下に示す受信動作時の処理を行う。
【０１８５】
まず、アダプタ制御部３７は、受信パケットがデータ（ブロック）であることを検出した場合（ステップＳ３０８）、受信パケット情報、バッファ受信管理情報保持部３７Ｃに保持された受信先バッファのアドレス、受信先バッファ内でのブロックの格納先を示すオフセットアドレス等の情報に基づいて受信ＤＭＡ制御情報を作成する（ステップＳ３１１）。
次に、ＤＭＡ制御部３４は、受信ＤＭＡ制御情報に基づいて受信したブロックを受信先バッファの所定の領域に直接ＤＭＡ転送する（ステップＳ３１２）。
次に、アダプタ制御部３７は、受信パケット情報のブロック識別情報等の情報に基づいて当該ブロックの受信を受信管理テープルに登録し、処理をステップＳ３０５へ遷移する（ステップＳ３１３）。
すなわち、アダプタ制御部３７は、一連のブロック受信処理後、再びパケットの受信待機状態に移行し、パケットの受信が検出されるまで待機する（ステップＳ３０５）。
【０１８６】
一方、アダプタ制御部３７は、受信パケットがデータ（ブロック）でないことを検出した場合、処理をステップＳ３０９へ進める（ステップＳ３０８）。
そして、アダプタ制御部３７は、受信パケットが送信完了を示すか否かを判定し、送信が完了した（送信完了を示すパケットを受信した）ことを検出した場合（ステップＳ３０９）、当該送信完了が指定する受信処理中の受信先バッファに対応する受信管理テーブルを検索し、未受信となっているブロックの存在をチェックする（ステップＳ３１４）。
このとき、アダプタ制御部３７は、未受信ブロックの有無に応じて分岐処理、すなわち未受信ブロックが存在することを検出した場合、再送要求処理のためステップＳ３１５へ処理を遷移させ、一方、未受信ブロックが無いことを検出した場合、受信終了処理に移行するため処理をステップＳ３２１へ遷移させる（ステップＳ３１４）。
【０１８７】
まず、未受信ブロックが存在する場合の処理について示す。
アダプタ制御部３７は、当該ユーザデータの受信に対応する受信リトライカウンタの値をインクリメントする（ステップＳ３１５）。
次に、アダプタ制御部３７は、受信リトライカウンタの値が、送達制御情報の受信最大リトライ値を超えたことを検出した場合、受信リトライオーバーが発生したものとして、ステップＳ３２２に処理を進め受信終了処理へ移行する（ステップＳ３１６）。
【０１８８】
一方、アダプタ制御部３７は、受信リトライカウンタの値が、受信最大リトライ値を超えないことを検出した場合、ブロックの再送を要求する処理を継続し、処理をステップＳ３１７へ遷移する（ステップＳ３１６）。
次に、アダプタ制御部３７は、再送要求管理テーブルから未受信となっているブロックを検出する（ステップＳ３１７）。
【０１８９】
次に、アダプタ制御部３７は、当該ブロックのブロック識別子、当該ブロックと対応するバッファ受信管理情報保持部３７Ｃに保持されている情報に基づいて再送を要求する送信パケット情報を作成し、再送要求を送信側計算機２０に通知する（ステップＳ３１８）。
このとき、アダプタ制御部３７は、再送要求を、再送要求管理テーブルで未受信となっているブロック全体について繰り返す。
【０１９０】
すなわち、アダプタ制御部３７は、再送要求管理テーブルで未受信となっている各ブロックに全て再送要求が行われたか否かを判定し、全ブロックに対して再送要求が行われるまでステップＳ３１７からステップＳ３１９の処理を繰り返す（ステップＳ３１９）。
そして、アダプタ制御部３７は、未受信となっているブロック全ての再送要求通知後、バッファ受信管理情報保持部３７Ｃに保持されている情報に基づいて、再送開始を要求する送信パケット情報を作成し、再送開始要求を送信側計算機２０に通知し、再送開始要求の通知後、処理をステップＳ３０５へ遷移させる（ステップＳ３２０）。
【０１９１】
そして、アダプタ制御部３７は、再びパケット受信の待機状態に遷移し、パケット受信の検出処理を行う（ステップＳ３０５）。
前述した一連の処理は、送信側計算機２０からの送信完了通知をトリガとして、再送要求処理に移行した場合のものである。
これ以外に、受信処理の開始後、アダプタ制御部３７は、当該ユーザデータの受信処理にかかるパケットの受信間隔が、送達制御情報のブロック受信タイマ値で規定する時間を超えたことを検出した場合も（ステップＳ３１０）、ステップＳ３１４に処理を遷移（移行）して、前述した再送要求処理に移行する。
【０１９２】
一方、アダプタ制御部３７は、当該ユーザデータの受信処理にかかるパケットの受信間隔が、送達制御情報のブロック受信タイマ値で規定する時間を超えないことを検出した場合、処理をステップＳ３０５へ遷移させ（ステップＳ３１０）ネットワーク送受信部３８からのパケットの受信通知を待機する（ステップＳ３０５）。
次に、アダプタ制御部３７は、受信管理テーブルを検索した結果、未受信ブロックが存在しないことを検出した場合（ステップＳ３１４）の受信終了について示す。
【０１９３】
まず、アダプタ制御部３７は、全ブロックを正常に受信したことを通知するための送信パケット情報を作成し、受信完了を送信側計算機２０に通知する（ステップＳ３２１）。
次に、アダプタ制御部３７は、バッファ受信管理情報保持部３７Ｃに保持された情報に基づいて受信処理が完了した当該ユーザバッファの受信バッファ情報ポインタ、受信ステータス（正常終了）と共に受信処理の終了をプロセッサ（すなわちソフトウェア）１００に通知する（ステップＳ３２２）。
【０１９４】
そして、アダプタ制御部３７は、受信パケット判別情報保持部３５Ｂ、バッファ受信管理情報保持部３７Ｃに設定した当該ユーザデータの受信処理にかかわる情報をクリアし、一連の受信処理を終了する（ステップＳ３２３）。
ここで、アダプタ制御部３７は、受信リトライオーバーが発生して受信終了処理に移行した場合、送信側に受信完了を通知することなく、前述した受信終了時の処理を行う。この際、プロセッサ１００に通知する受信ステータスは異常終了となる。
【０１９５】
次に、アダプタによる受信処理の中で、受信パケット判別処理の詳細について、図４７のフローチャートを参照して説明する。
判別処理は以下の手順で行う。
まず、受信パケット判別部３５Ｃは、当該受信パケットのヘッダ部（図３６（ｂ）参照）の受信先ネットワークアドレスが自計算機の所属するマルチキャストグループＭのマルチキャスト用ネットワークアドレスと一致するか否かを判別する（ステップＳ３３１）。
【０１９６】
このとき、受信パケット判別部３５Ｃは、一致しないことを検出した場合、ＯＳにより受信処理を行うパケットと判別（判定）し（ステップＳ３３８）、このパケットのデータをメモリ１０１のＯＳ空間の受信バッファ領域に転送し、判別処理を終了する（ステップＳ３３９）。
一方、受信パケット判別部３５Ｃは、受信パケットのヘッダ部（図３６（ｂ）参照）の受信先ネットワークアドレスが自計算機の所属するマルチキャストグループＭのマルチキャスト用ネットワークアドレスと一致するヘことを検出した場合（ステップＳ３３１）、ヘッダ部の所定領域の情報が本発明にかかる処理を行うベきパケットであることを表す固定識別子と一致するか否かの判定を行う（ステップＳ３３２）。
【０１９７】
このとき、受信パケット判別部３５Ｃは、上記判定において一致しないことを検出した場合、ＯＳによる受信処理を行うパケット判別し、処理をステップＳ３３８へ遷移する（ステップＳ３３２）。
一方、受信パケット判別部３５Ｃは、ヘッダ部の所定領域の情報が本発明にかかる処理を行うベきパケットであることを表す固定識別子と一致することを検出した場合、ヘッダ部の所定領域に示されているパケット種別がデータ、または送信完了と一致するか否かを判別する（ステップＳ３３３）。
【０１９８】
そして、受信パケット判別部３５Ｃは、パケット種別がデータ、または、送信完了と一致することを検出した場合、処理をステップＳ３３４へ遷移させ、ヘッダ部の所定領域に示されているバッファＩＤが受信処理中のものか否かを判別する（ステップＳ３３４）。
このとき、受信パケット判別部３５Ｃは、上記バッファＩＤが受信処理中のものでないことを検出した場合（ステップＳ３３４）、ＯＳによる受信処理を行うパケットと判別する（ステップＳ３３８）。すなわち、受信パケット判別部３５Ｃは、ステップＳ３３４において受信処理中のバッファＩＤではないことを検出した場合、ステップＳ３３８においてＯＳにかかる受信処理を行うパケットと判別する。
【０１９９】
一方、受信パケット判別部３５Ｃは、ヘッダ部の所定領域に示されているバッファＩＤが受信処理中であることを検出した場合（ステップＳ３３４）、本発明にかかる処理を行うパケットと判別する（ステップＳ３３７）。
また、受信パケット判別部３５Ｃは、ヘッダ部の所定領域に示されているパケット種別がデータ、または送信完了と一致することを検出した場合（ステップＳ３３３）、パケット種別が、再送要求、または再送開始要求、または受信完了と一致するか否かを判別する（ステップＳ３３５）。
【０２００】
そして、受信パケット判別部３５Ｃは、再送要求、再送開始要求、受信完了のいずれかである場合、ヘッダ部の所定領域に示されているバッファＩＤが送信処理中のものか否かの判定を行う（ステップＳ３３６）。
ここで、受信パケット判別部３５Ｃは、バッファＩＤが送信処理中でないことを検出した場合、ＯＳによる受信処理を行うパケットと判別し、処理をステップＳ３３８へ遷移する。
【０２０１】
一方、受信パケット判別部３５Ｃは、バッファＩＤが送信処理中であることを検出した場合、本発明にかかる処理を行うパケットと判別する（ステップＳ３３７）。
また、パケット種別が、データ、送信完了、再送要求、再送開始要求、受信完了のいずれでもないことを検出した場合（ステップＳ３３５）、ＯＳによる受信処理を行うパケットと判別する（ステップＳ３３８）。
【０２０２】
そして、アダプタ制御部３７は、受信パケット判別部３５Ｃにおいて、ＯＳによる受信処理を行うと判別したパケットについては、ＯＳ空間内の受信バッファ領域に転送する（ステップＳ３３９）。
上記の一連の判別処理によって、本発明にかかる送受信処理、再送処理を固定識別子、バッファＩＤ等の情報に基づいて特定のパケットにのみ許可するアクセス制御が可能となる。
【０２０３】
次に、ユーザデータ到着後に行うソフトウェアによる受信後処理について、図４８のフローチャートを参照して説明する。
まず、プロセッサ（すなわちソフトウェア）１００は、受信前処理を実行後、アダプタから受信完了が通知されるのを待機する（ステップＳ３５０）。
次に、プロセッサ１００は、アダプタ（ネットワークアダプタ）３１から受信完了が通知された場合、受信バッファ情報ポインタの情報に基づいて受信が完了したバッファを判別する（ステップＳ３５１）。
次に、プロセッサ１００は、当該受信先バッファヘのデータ受信を要求したアプリケーションプロセスに起動通知を行い、ユーザデータを引き渡す（ステップＳ３５２）。
【０２０４】
以上のように、本発明にかかる一連の処理、すなわち、ソフトウェアの送受信事前処理、送信前処理、送信後処理、受信前処理、受信後処理、およびアダプタの送信処理、受信処理が行われ、ネットワークにおけるデータの高速、かつ信頼性のある転送が可能となる。
【０２０５】
【発明の効果】
本発明によれば、複数の計算機を接続して構成したネットワークにおける、パケット内のデータの送受信処理において、プロセッサによるデータコピー処理を行わずに、ユーザバッファ同で高速、かつ信頼性のあるデータ転送が可能な手段を提供することができる。
【０２０６】
また、本発明によれば、複数の計算機を接続して構成したネットワークにおける、パケット内のデータの同報配信処理において、プロセッサによるデータコピー処理を行わずに、ユーザバッファ間で高速、かつ信頼性のあるデータ転送が可能な手段を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態によるデータ転送装置（ネットワークアダプタ１）によるネットワークの構成例を示すブロック図である。
【図２】本発明の第１の実施形態におけるバッファ送信要求情報の構成を示す概念図である。
【図３】本発明の第１の実施形態におけるバッファ受信要求情報の構成を示す概念図である。
【図４】本発明の第１の実施形態におけるバッファ送信管理情報の構成を示す概念図である。
【図５】本発明の第１の実施形態における送信パケット情報の構成を示す概念図である。
【図６】本発明の第１の実施形態におけるバッファ受信管理情報の構成を示す概念図である。
【図７】本発明の第１の実施形態における受信パケット情報の構成を示す概念図である。
【図８】本発明の第１の実施形態における受信パケット判別情報の構成を示す概念図である。
【図９】本発明の第１の実施形態における再送要求管理テーブルの構成を示す概念図である。
【図１０】本発明の第１の実施形態における受信管理テーブルの構成を示す概念図である。
【図１１】本発明の第１の実施形態におけるパケットの構成を示す概念図である。
【図１２】図１における計算機２００の送受信事前処理の動作を説明するフローチャートである。
【図１３】図１における計算機２００の送信前処理の動作を説明するフローチャートである。
【図１４】図１におけるネットワークアダプタ１の送信動作例を示すフローチャートである。
【図１５】図１におけるネットワークアダプタ１の送信動作例を示すフローチャートである。
【図１６】送信時のデータ処理（ブロックからパケット生成）の動作の説明を行う概念図である。
【図１７】図１におけるプロセッサ１００の送信後処理の動作例を示すフローチャートである。
【図１８】図１におけるプロセッサ１００の受信前処理の動作例を示すフローチャートである。
【図１９】図１におけるネットワークアダプタ１における受信動作例を示すフローチャートである。
【図２０】図１におけるネットワークアダプタ１における受信動作例を示すフローチャートである。
【図２１】図１におけるネットワークアダプタ１における受信パケット判別処理の動作例を示すフローチャートである。
【図２２】パケットを受信してから受信先バッファに格納するまでのデータ処理を示す概念図である。
【図２３】図１におけるプロセッサ１００の受信後処理の動作例を示すフローチャートである。
【図２４】従来のデータ転送装置（ネットワークアダプタ１０３）によるネットワークの構成例を示すブロック図である。
【図２５】本発明の第２の実施形態によるデータ同報配信装置によるネットワークの構成例である。
【図２６】本発明の第２の実施形態によるデータ転送装置（ネットワークアダプタ３１）によるネットワークの構成例を示すブロック図である。
【図２７】本発明の第２の実施形態におけるバッファ送信要求情報の構成を示す概念図である。
【図２８】本発明の第２の実施形態におけるバッファ受信要求情報の構成を示す概念図である。
【図２９】本発明の第２の実施形態におけるバッファ送信管理情報の構成を示す概念図である。
【図３０】本発明の第２の実施形態における送信パケット情報の構成を示す概念図である。
【図３１】本発明の第２の実施形態におけるバッファ受信管理情報の構成を示す概念図である。
【図３２】本発明の第２の実施形態における受信パケット情報の構成を示す概念図である。
【図３３】本発明の第２の実施形態における受信パケット判別情報の構成を示す概念図である。
【図３４】本発明の第２の実施形態における再送要求管理テーブルの構成を示す概念図である。
【図３５】本発明の第２の実施形態における受信管理テーブルの構成を示す概念図である。
【図３６】本発明の第２の実施形態におけるパケットの構成を示す概念図である。
【図３７】図２６におけるプロセッサ１００の送受信事前処理の動作例を説明するフローチャートである。
【図３８】図２６におけるプロセッサ１００の送信前処理の動作例を説明するフローチャートである。
【図３９】図２６におけるネットワークアダプタ３１の送信動作例を示すフローチャートである。
【図４０】図２６におけるネットワークアダプタ３１の送信動作例を示すフローチャートである。
【図４１】図２６におけるネットワークアダプタ３１の送信動作例を示すフローチャートである。
【図４２】図２６におけるプロセッサ１００の送信後処理の動作例を示すフローチャートである。
【図４３】図２６におけるプロセッサ１００の受信前処理の動作例を示すフローチャートである。
【図４４】図２６におけるネットワークアダプタ３１の受信動作例を示すフローチャートである。
【図４５】図２６におけるネットワークアダプタ３１の受信動作例を示すフローチャートである。
【図４６】図２６におけるネットワークアダプタ３１の受信動作例を示すフローチャートである。
【図４７】図２６におけるネットワークアダプタ３１の受信パケット判別処理の動作例を示すフローチャートである。
【図４８】図２６におけるプロセッサ１００の受信後処理の動作例を示すフローチャートである。
【図４９】従来のマルチキャストプロトコル処理のプロトコルスタックの構成例を示す概念図である。
【符号の説明】
１，３１　アダプタ（ネットワークアダプタ）
２，３２　受信バッファ
３，３３　送信バッファ
４，３４　ＤＭＡ制御部
５，３５　受信制御部
５Ａ，３５Ａ　受信ブロック情報保持部
５Ｂ，３５Ｂ　受信パケット判別情報保持部
５Ｃ，３５Ｃ　受信パケット判別部
６，３６　送信制御部
６Ａ，３６Ａ　送信ブロック情報保持部
６Ｂ，３６Ｂ　送信パケット生成部
７，３７　アダプタ制御部
７Ａ，３７Ａ　受信ＤＭＡ制御情報保持部
７Ｂ，３７Ｂ　送信ＤＭＡ制御情報保持部
７Ｃ，３７Ｃ　バッファ受信管理情報保持部
７Ｄ，３７Ｄ　バッファ送信管理情報保持部
７Ｅ，３７Ｅ　送達制御情報保持部
７Ｆ，３７Ｆ　自ネットワークアドレス保持部
７Ｇ，３７Ｇ　分割ブロック情報保持部
８，３８　ネットワーク送受信部
９，３９　内部バス
２０　送信側計算機
２１，２２，２３　受信側計算機
１００　プロセッサ
１０１　メモリ
１０２　Ｉ／Ｏ装置
１０４　システムバス
１０９　ＯＳ空間
１１０　ユーザ空間
２００　計算機
Ｍ　マルチキャストグループ
Ｎ　ネットワーク
Ｐ１　パケット
Ｐ２　コピーパケット
【図１】
2004007354.tif 000003
【図２】
2004007354.tif 000004
【図３】
2004007354.tif 000005
【図４】
2004007354.tif 000006
【図５】
2004007354.tif 000007
【図６】
2004007354.tif 000008
【図７】
2004007354.tif 000009
【図８】
2004007354.tif 000010
【図９】
2004007354.tif 000011
【図１０】
2004007354.tif 000012
【図１１】
2004007354.tif 000013
【図１２】
2004007354.tif 000014
【図１３】
2004007354.tif 000015
【図１４】
2004007354.tif 000016
【図１５】
2004007354.tif 000017
【図１６】
2004007354.tif 000018
【図１７】
2004007354.tif 000019
【図１８】
2004007354.tif 000020
【図１９】
2004007354.tif 000021
【図２０】
2004007354.tif 000022
【図２１】
2004007354.tif 000023
【図２２】
2004007354.tif 000024
【図２３】
2004007354.tif 000025
【図２４】
2004007354.tif 000026
【図２５】
2004007354.tif 000027
【図２６】
2004007354.tif 000028
【図２７】
2004007354.tif 000029
【図２８】
2004007354.tif 000030
【図２９】
2004007354.tif 000031
【図３０】
2004007354.tif 000032
【図３１】
2004007354.tif 000033
【図３２】
2004007354.tif 000034
【図３３】
2004007354.tif 000035
【図３４】
2004007354.tif 000036
【図３５】
2004007354.tif 000037
【図３６】
2004007354.tif 000038
【図３７】
2004007354.tif 000039
【図３８】
2004007354.tif 000040
【図３９】
2004007354.tif 000041
【図４０】
2004007354.tif 000042
【図４１】
2004007354.tif 000043
【図４２】
2004007354.tif 000044
【図４３】
2004007354.tif 000045
【図４４】
2004007354.tif 000046
【図４５】
2004007354.tif 000047
【図４６】
2004007354.tif 000048
【図４７】
2004007354.tif 000049
【図４８】
2004007354.tif 000050
【図４９】
2004007354.tif 000051