転送データが格納されるメモリと、ネットワークインタフェースとを備え、前記ネットワークインタフェースは、前記転送データを含む転送パケットを生成するパケット処理部と、前記メモリから前記転送データを読み出すDMAコントローラとを備え、前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、前記パケット処理部は、前記転送パケットのパケットヘッダを取得し、また、前記DMAコントローラによって読み出された前記転送データに前記取得したパケットヘッダを付加することにより前記転送パケットを生成する再送制御システム。請求項1に記載の再送制御システムであって、前記ネットワークインタフェースは、パケットヘッダ取得テーブルを更に備え、前記転送データの1回目の転送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記データ転送命令に基づいて前記転送パケットの前記パケットヘッダを生成し、前記生成したパケットヘッダを前記パケットヘッダ取得テーブルに登録する再送制御システム。請求項2に記載の再送制御システムであって、前記転送データの再送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを読み出す再送制御システム。請求項2又は3に記載の再送制御システムであって、前記転送パケットに応答するACKパケットを受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを削除する再送制御システム。請求項1乃至4のいずれか一項に記載の再送制御システムであって、前記ネットワークインタフェースは、CPUによって発行される、前記転送データの転送を指示する前記データ転送命令が格納される命令キューと、前記転送データの再送を指示する前記データ転送命令が格納される再送命令キューと、前記命令キューあるいは前記再送命令キューから前記データ転送命令を読み出し、前記読み出したデータ転送命令を前記パケット処理部に出力し、且つ、前記読み出したデータ転送命令を前記再送命令キューに格納する命令発行部とを更に備える再送制御システム。請求項5に記載の再送制御システムであって、前記転送パケットに応答するACKパケットを受け取った場合、前記命令発行部は、前記転送データの再送を指示する前記データ転送命令を前記再送命令キューから削除する再送制御システム。請求項5又は6に記載の再送制御システムであって、前記データ転送命令は、前記転送データのサイズを示し、前記転送データのサイズがネットワークのMTUMaximumTransmissionUnitを超える場合、前記命令発行部は、前記データ転送命令を複数に分割し、前記複数のデータ転送命令を個別に前記パケット処理部に出力する再送制御システム。ネットワークインタフェースにおける再送制御方法であって、転送データは、前記ネットワークインタフェースとは別に設けられたメモリに格納され、前記ネットワークインタフェースは、前記メモリから前記転送データを読み出すDMAコントローラを備え、前記再送制御方法は、前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、転送パケットのパケットヘッダを取得するステップと、前記DMAコントローラによって、前記メモリから前記転送データを読み出すステップと、前記DMAコントローラによって読み出された前記転送データに前記取得したパケットヘッダを付加することによって、前記転送パケットを生成するステップとを含む再送制御方法。TCPよりも高速に再送制御を行う高速再送制御機能をネットワークインタフェースNICに搭載することを考える。NIC上で再送制御を行う場合、再送バッファ用のメモリの配置に関して問題が発生する。ネットワークが高速になるにつれて再送バッファ用に大量のメモリが必要になるが、カードサイズや消費電力に制限のあるNICに大量のメモリを搭載することは現実的ではないからである。その一方で、サーバやPC側以下、ホスト側と参照されるには、メモリ領域の余裕が比較的ある。そこで、ホスト上のメモリを利用して高速再送制御を行うことが考えられる。但し、その場合であっても、ホスト側になるべく負荷をかけないことが望まれる。本発明の1つの目的は、NIC上に大量のメモリを必要とせず、且つ、ホスト側にかかる負荷を抑制することができる高速再送制御技術を提供することにある。本発明の1つの観点において、再送制御システムが提供される。その再送制御システムは、転送データが格納されるメモリと、ネットワークインタフェースとを備える。ネットワークインタフェースは、転送データを含む転送パケットを生成するパケット処理部と、メモリから転送データを読み出すDMAコントローラとを備える。転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、パケット処理部は、転送パケットのパケットヘッダを取得し、また、DMAコントローラによって読み出された転送データに上記取得したパケットヘッダを付加することにより転送パケットを生成する。本発明の他の観点において、ネットワークインタフェースにおける再送制御方法が提供される。転送データは、ネットワークインタフェースとは別に設けられたメモリに格納される。ネットワークインタフェースは、メモリから転送データを読み出すDMAコントローラを備える。本発明に係る再送制御方法は、A転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、転送パケットのパケットヘッダを取得するステップと、BDMAコントローラによって、メモリから転送データを読み出すステップと、CDMAコントローラによって読み出された転送データに上記取得したパケットヘッダを付加することによって、転送パケットを生成するステップと、を含む。本発明に係る高速再送制御技術は、NIC上に大量のメモリを必要とせず、且つ、ホスト側にかかる負荷を抑制することができる。添付図面を参照して、本発明の実施の形態を説明する。1.第1の実施の形態1-1.構成図1は、本発明の第1の実施の形態に係る再送制御システム1の構成を示すブロック図である。再送制御システム1は、メモリ2、ネットワークインタフェース3、CPU4、及びこれらを相互に接続するホストバス5を備えている。メモリ2には、転送データ再送データも含むが格納される。より詳細には、メモリ2には、再送バッファ201が確保される。例えば、再送バッファ201は、転送データとは別に、再送データだけを格納するバッファとして確保されてもよい。これは、例えば最近のOSのように、ユーザとOSカーネルでメモリ空間が異なっており、ユーザが通信を行う際に、データをカーネルのメモリ領域にコピーする必要がある際に、そのコピー先を再送バッファとすることに対応する。あるいは、CPU4がデータ転送命令をネットワークインタフェース3に発行する際に、転送データが格納されているメモリ領域を再送バッファ201としてロックしてもよい。この場合、ネットワークインタフェース3からデータ転送完了の通知がなされるまで、データ内容の変更や、最近のOSでサポートされているようなハードディスクへのスワップアウトが禁止される。CPU4は、ネットワークインタフェース3から再送バッファ201のデータをアンロックする通知を受けると、再送バッファ201の領域をアンロックする。アンロックにより、そのメモリ領域のデータの変更や、ハードディスクへのスワップアウトが可能になる。この方式は、ユーザレベル通信のように、カーネルを経由せずに通信を行う場合に対応する。ホストバス5は少なくとも、CPU4、メモリ2、ネットワークインタフェース3を相互に接続するためのバスである。ネットワークインタフェース3は、ホストバスインタフェース301、命令キュー303、命令発行部305、タイマ307、再送命令キュー309、パケット処理部311、DMADirectMemoryAccessコントローラ313、パケットヘッダ取得テーブル315、パケット送信部319、パケット受信部321、及び動作設定レジスタ323を備えている。ホストバスインタフェース301は、ホストバス5を介して、CPU4やメモリ2と、ホストバス5に依存したデータ転送プロトコルに従ったデータの送受信を行う。ホストバス5に依存したデータ転送プロトコルとは、例えばホストバス5がPCI-Expressであれば、PCI-Expressの規格に準じた信号の送受信手順、タイミング、フォーマット、などを指す。動作設定レジスタ323は、ネットワークインタフェース3が動作する上で必要なパラメータを設定するための領域である。動作設定レジスタ323は、少なくとも、同じデータを何回再送するかを示す再送上限回数と、その再送の間隔を示す再送間隔と、を設定する領域を備える。命令キュー303は、CPU4によって発行される、転送データの転送を指示するデータ転送命令を格納するためのキューである。データ転送命令は、少なくとも、メモリ2の開始アドレスと、そのアドレスからどれだけの量のデータを転送するかを示すデータ転送サイズと、宛先ホストアドレスと、を含む。尚、宛先ホストアドレスについては次の通りである。例えば、ネットワークがIPによってホストを識別する場合、通信相手のIPアドレスが宛先ホストアドレスとして用いられる。また、宛先ホストのネットワークインタフェース3がRDMARemoteDirectMemoryAccessに対応している場合、IPアドレスに加えて、宛先ホストのメモリ2の領域を示す転送先アドレスを組み合わせて用いてもよい。再送命令キュー309は、データ再送を指示するデータ転送命令を格納するためのキューである。具体的には、再送命令キュー309には、命令発行部305によって命令キュー303から読み出された命令が、再送命令として格納される。また、再送処理の際には、命令発行部305によって再送命令キュー309から読み出された命令が、再度、再送命令として書き込まれる。再送命令キュー309に格納された命令は、当該命令によって転送されたパケットの宛先ホストからのACKパケットの受信に応答して、削除される。また、再送回数が、動作設定レジスタ323に設定された再送上限回数に達した場合、命令発行部305は、その命令を再送命令キュー309に書き戻さない。タイマ307は、時刻をカウントするために用いられる。例えば、タイマ307は、再送制御システム1が起動してからの経過時刻を保持する。あるいは、ネットワークインタフェース3がCPU4とは異なる同期信号クロックで動作する場合には、タイマ307は、その同期信号のOn/Offの切り替え回数をカウントしてもよい。いずれにしても、実現したい再送間隔のオーダでの時刻カウントが可能である必要があり、この機能は、一般的なプロセッサにクロックカウンタという形で搭載されている。命令発行部305は、命令キュー303あるいは再送命令キュー309に発行すべきデータ転送命令が存在している場合に、当該命令キューからデータ転送命令を読み出し、読み出したデータ転送命令をパケット処理部311に転送する。更に、当該データ転送命令の実行回数が再送上限回数に達していなければ、命令発行部305は、当該データ転送命令を再送命令キュー309に書き込む。また、命令発行部305は、命令キュー303あるいは再送命令キュー309から命令を読み出し、パケット処理部311に当該命令を転送した際に、そのときの時刻をタイマ307から取得する。そして、命令発行部305は、当該命令を再送命令キュー309に書き込む際に、取得した時刻と当該命令の実行回数を同時に書き込む。そのため、再送命令キュー309には、命令そのものを書き込む領域のほかに、その命令が最後に実行された時刻と、実行回数を記録する領域が必要である。あるいは、ネットワークインタフェース3上にこれらの情報を記録する領域を設け、再送命令キュー309に格納されている命令と関連付けて情報を管理してもよい。また、命令に含まれる情報のみで命令を一意に識別することが困難な場合は、命令に命令シーケンス番号のような命令を一意に識別可能な情報を付与し、再送命令キュー309に書き込むことも考えられる。また、命令発行部305は、再送命令キュー309に格納されている再送命令に関連付けられた時刻をチェックし、当該時刻とタイマ307が示す現在時刻との比較を行う。比較の結果、動作設定レジスタ323に設定された再送間隔以上の時間が経過していた場合、命令発行部305は、再送命令キュー309から当該再送命令を読み出し、読み出した再送命令をパケット処理部311に転送する。当該再送命令を再送命令キュー309に再度書き込む際には、命令発行部305は、新たにタイマ307から取得した時刻を共に書き込む。尚、命令発行部305は、パケット処理部311に命令を転送した時刻順に、再送命令キュー309に再送命令を格納してもよい。この場合、命令発行部305は、再送命令キュー309の先頭の再送命令だけをチェックするだけで、再送間隔を超えた命令が存在するかどうかを確認することができる。データ転送命令の優先度などの重みに応じて、再送間隔を可変にする場合には、その重みごとに再送命令キュー309を分け、各再送命令キュー309に時刻順に命令を格納することが考えられる。また、単一の再送命令キュー309の場合でも、命令発行部305が再送命令キュー309に格納されている再送命令全てをチェックすることで、再送間隔を超えた命令が存在するかどうかを確認することができる。パケット送信部319は、パケット処理部311が生成したパケットをネットワークに転送する機能ブロックである。パケット受信部321は、ネットワークから受信したパケットをパケット処理部311に転送する機能ブロックである。DMAコントローラ313は、メモリ2に対してデータの送受信を直接行う。DMAコントローラ313は、メモリ2から転送データを読み出すことができる。また、DMAコントローラ313は、メモリ2に受信データを書き込むことができる。パケット処理部311は、大きく分けて2つの処理を実行する。パケット処理部311による1つ目の処理は、転送パケットの構築生成である。つまり、パケット処理部311は、命令発行部305から受け取ったデータ転送命令に従って、転送データを含む転送パケットを構築生成し、その転送パケットをパケット送信部319に転送する。パケット構築の際、パケット処理部311は、データ転送命令に含まれる開始アドレスとデータ転送サイズを参照して、DMAコントローラ313にデータ読み出し命令を発行する。これにより、パケット処理部311は、DMAコントローラ313を通して、転送データをメモリ2から読み出すことができる。また、パケット処理部311は、データ転送サイズ、宛先ホストアドレス、及び使用するネットワークプロトコルに応じたパケットヘッダを生成する。そして、パケット処理部311は、DMAコントローラ313を通して読み出した転送データにパケットヘッダを付加することにより、転送パケットを構築生成する。ネットワークプロトコルに応じたパケットヘッダには、一般的に、宛先ホストアドレス、送信元ホストアドレス、パケットサイズ、などが含まれ、他にもネットワークプロトコルに応じた情報が格納される。これらについては、各ネットワークプロトコルの規格を参照すると、詳細な情報が得られる。更に、パケットヘッダには、本実施の形態の再送制御機構を使用するパケットであることを示すフラグが含まれる。受信側ホストのネットワークインタフェースが、本実施の形態の再送制御機構を備えている場合、このフラグをチェックすることで、データを受信したことを示す通知を送信元ホストに出すことができる。受信側ホストのネットワークインタフェースが本実施の形態の再送制御機構に対応していない場合であっても、再送回数に上限を設けているため、同じデータが無限に再送されるということはない。また、上記のパケットヘッダの情報だけでパケットを一意に識別することが困難な場合は、再送制御機構が管理するパケットシーケンス番号をパケットに付与し、再送制御機構がパケットを一意に識別できるようにすることも考えられる。これらの、再送制御機構のために追加されるフラグやパケットシーケンス番号といった情報は、従来のネットワークプロトコルで定めるプロトコルヘッダの未使用フィールドや、新たに追加するフィールドに格納され得る。このパケットシーケンス番号は、1つのデータ転送命令に対して1つのパケットが対応する場合には、前述した命令シーケンス番号と同一でもよい。また、1つのデータ転送命令に対して複数のパケットが対応する場合には、異なるパケットシーケンス番号体系を用いることで、パケットを一意に識別することができる。パケット処理部311は、パケットヘッダを新たに生成した場合、そのパケットヘッダをパケットヘッダ取得テーブル315に格納する。パケットヘッダ取得テーブル315におけるパケットヘッダの格納先アドレスは、パケットを一意に識別可能な情報を用いることにより生成される。パケットを一意に識別可能な情報の例として、データ転送命令から生成されるパケットヘッダの特定のフィールドの値を用いることや、パケットヘッダの一部、または全ての情報を用いてハッシュ値を生成し、このハッシュ値を用いることが考えられる。パケット処理部311による2つ目の処理は、パケット受信部321がネットワークから受信した受信パケットを処理することである。ここで、受信パケットの種別に応じて、パケット処理部311の処理が異なってくる。まず、受信パケットが、自ホストが送信したパケットを宛先ホストが受信したことを示すACKパケットである場合を考える。ACKパケットは、少なくとも、当該ACKパケットに対応する、自ホストが送信した転送パケットを一意に識別する情報を含む。例えば、自ホストが送信した転送パケットのパケットヘッダに含まれる宛先ホストアドレスと送信元ホストアドレスとが入れ替えられ、更に、パケットヘッダのどこかのフィールドにACKパケットであることを示すフラグが格納される。ACKパケットを受信した場合、パケット処理部311は、このACKパケットに対応する転送パケットのパケットヘッダを、パケットヘッダ取得テーブル315から削除する。また、パケット処理部311は、命令発行部305に対して、ACKパケットを受信したことを、送信パケットを一意に識別する情報とともに通知する。命令発行部305は、この通知に応答して、再送命令キューから対応する再送命令を削除する。更に、パケット処理部311は、ACKパケットに対応するデータ転送命令に対応する再送バッファ201の領域をアンロックするための通知を、CPU4に出す。次に、受信パケットが、ネットワークに接続された他のホストから送られてきたデータパケットである場合を考える。この場合、パケット処理部311は、受信パケットのパケットヘッダを解析してデータの受信先アドレスを取得し、DMAコントローラ313を使用して当該データをメモリ2あるいはCPU4へ転送する。また、本実施の形態の再送制御機構を備えたネットワークインタフェースから送信されたパケットであることを示すフラグが立っていた場合、パケット処理部311は、受信パケットに応答するACKパケットを生成し、生成したACKパケットをパケット送信部19に送信する。パケットヘッダ取得テーブル315は、パケットヘッダを格納するためのメモリ領域である。各パケットヘッダは、パケットを一意に識別可能な情報をアクセスアドレスとして用いることによりアクセス可能である。パケットを一意に識別可能なアドレスの実現例の1つとして、ハッシュテーブルを用いる方法が考えられる。具体的には、データ転送命令や生成したパケットヘッダの情報を用いてハッシュ値を計算し、それをキーとしてテーブルにアクセスする。この場合、ハッシュ値を計算する機能がネットワークインタフェース3に必要となる。但し、パケットヘッダとデータ転送命令の双方からアドレスを生成可能なように、情報を選択することが望ましい。尚、本実施の形態に係る再送制御機構は、常に有効にしておく必要は必ずしも無い。動作設定レジスタ323などを用いて、本実施の形態に係る再送制御機構のOn/Offを切り換えてもよい。1-2.処理フロー次に、本実施の形態に係る再送制御システム1の動作を説明する。1-2-1.パケット送信図2は、本実施の形態におけるパケット送信処理を概略的に示すシーケンス図である。パケット送信処理では、CPU4が、データ転送命令をネットワークインタフェース3に発行し、ネットワークインタフェース3が、メモリ2に格納された転送データをネットワークに送出する。まず、CPU4は、転送データが格納されたメモリ2のメモリ領域をロックする図2のステップS40。次に、CPU4は、データ転送命令をネットワークインタフェース3に発行する図2のステップS41。データ転送命令には、少なくとも、転送先ホストの識別情報、データの転送サイズ、データの転送元の情報が含まれる。次に、ネットワークインタフェース3は、データ転送命令を参照して、メモリ2からデータを読み出す図2のステップS31。その後、ネットワークインタフェース3は、データ転送命令に基づいてパケットヘッダを取得し、パケットヘッダとデータとを組み合わせることによって転送パケットを生成し、生成したパケットをネットワークに送出する図2のステップS33。図3は、ある転送パケットに関する1回目のパケット送信処理を示すシーケンス図であり、図2中のステップS31~S33の内容を詳細に示している。まず、命令発行部305は、転送データの1回目の転送を指示するデータ転送命令を、命令キュー303から読み出す図3のステップS3051。次に、命令発行部305は、パケット処理部311に当該命令を発行する図3のステップS3052。次に、命令発行部305は、タイマ307から時刻を取得し、取得した時刻と共に、当該命令を再送命令キュー309に書き込む図3のステップS3053。パケット処理部311は、命令発行部305から受け取った命令を解釈する図3のステップS3111。パケット処理部311は、命令を解釈することで、少なくとも、転送データの格納領域を示すアドレス、送信先ホストの識別子、転送データサイズに関する情報を得る。次に、パケット処理部311は、転送データの格納領域を示すアドレスと転送データサイズに基づいて、データ読み出し要求をDMAコントローラ313に発行する図3のステップS3112。データ読み出し要求は、メモリ2から当該転送データを読み出すことを要求する。また、パケット処理部311は、DMAコントローラ313がメモリ2から転送データを読み出している間に、データ転送命令に基づいてパケットヘッダを生成する図3のステップS3113。DMAコントローラ313は、メモリ2から読み出した転送データをパケット処理部311に転送する図3のステップS3131。次に、パケット処理部311は、DMAコントローラ313によって読み出された転送データと、ステップS3113で生成したパケットヘッダとを組み合わせることによって、転送パケットを構築する。そして、パケット処理部311は、生成したパケットをパケット送信部319に出力する図3のステップS3114。尚、DMAコントローラ313のデータの読み出しに要する時間が、パケットヘッダを構築する時間よりも短い場合には、データをDMAコントローラ313から受け取ってから、パケットヘッダを構築することや、DMAコントローラ313にデータ読み出し要求を発行する前にパケットヘッダを構築することも考えられる。次に、パケット処理部311は、パケットを一意に識別する情報を生成し、パケットヘッダ取得テーブル315への格納先アドレスを生成する図3のステップS3115。次に、パケット処理部311は、上記格納先アドレスを用いて、パケットヘッダをパケットヘッダ取得テーブル315に格納する図3のステップS3116。尚、ステップS3114と、ステップS3115~ステップS3116の処理は独立であるため、並行して実行することも可能である。図4は、本実施の形態におけるパケット再送処理を示すシーケンス図である。尚、図3で示された処理と同じ処理に関しては、重複する説明を適宜省略する。まず、命令発行部305は、再送命令キュー309に格納されているデータ転送命令再送命令が最後に実行された時刻と、タイマ307の現在時刻とを比較する。そして、命令発行部305は、それらの差が再送間隔を超えているような再送命令を再送命令キュー309から読み出す図4のステップS3054。次に、命令発行部305は、パケット処理部311に再送命令を発行する図4のステップS3052。また、当該再送命令の実行回数が上限に達していない場合、命令発行部305は、ステップS3054でタイマ307から取得した時刻とともに、再送命令を再送命令キュー309に再度書き込む図4のステップS3056。パケット処理部311は、命令発行部305から受け取った再送命令を解釈し図4のステップS3111、DMAコントローラ313にデータ読み出し要求を出す図4のステップS3112。DMAコントローラ313は、データ読み出し要求に対応した再送バッファ201から、転送データ再送データを読み出し、そのデータをパケット処理部311に転送する図4のステップS3131。一方、パケット処理部311は、データ転送命令に基づいて、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する図4のステップS3117。次に、パケット処理部311は、そのアクセスアドレスを用いてパケットヘッダ取得テーブル315にアクセスし、パケットヘッダを取得する図4のステップS3118。つまり、パケット再送処理の場合、パケット処理部311は、パケットヘッダ取得テーブル315からパケットヘッダを読み出す。次に、パケット処理部311は、DMAコントローラ313によって読み出された転送データと、ステップS3118で取得したパケットヘッダとを組み合わせることによって、転送パケットを構築する。そして、パケット処理部311は、生成したパケットをパケット送信部319に出力する図4のステップS3114。図5A及び図5Bは、図3及び図4で示されたパケット送信処理を統合的に示すシーケンス図である。まず、命令発行部305は、命令キュー303にデータ転送命令が格納されているかどうか判定する図5AのステップF001。命令キュー303にデータ転送命令が格納されていない場合図5AのステップF001;No、命令発行部305は、再送命令キュー309に再送命令が格納されているかどうか判定する図5AのステップF003。再送命令キュー309に再送命令が格納されていない場合図5AのステップF003;No、処理はステップF001に戻る。再送命令キュー309に再送命令が格納されている場合図5AのステップF003;Yes、命令発行部305は、再送条件が満たす再送命令があるかどうかを判定する図5AのステップF005。具体的には、命令発行部305は、再送命令キュー309に格納されている再送命令の中で、再送間隔以上の期間、実行されていない命令があるかどうか判定する。再送条件を満たす再送命令が存在しない場合図5AのステップF005;No、処理はステップF001に戻る。命令キュー303に命令が格納されている場合図5AのステップF001;Yes、または、再送命令キュー309に再送条件を満たす再送命令が存在する場合図5AのステップF005;Yes、命令発行部305は、タイマ307から現在時刻を取得する図5AのステップF007。また、命令発行部305は、命令キュー303または再送命令キュー309から命令を読み出す図5AのステップF009。なお、ステップF001の処理と、ステップF003、F005の処理を入れ替えることも可能である。つまり、命令発行部305は、再送命令キュー309のチェックを先に行い、続いて、命令キュー303のチェックを行ってもよい。次に、命令発行部305は、読み出した命令を解釈する図5AのステップF011。また、パケット処理部311は、DMAコントローラ313を用いて、転送データをメモリ2から読み出す図5AのステップF013。次に、パケット処理部311は、パケットを一意に識別する情報を生成し、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する図5BのステップF015。処理中の命令が再送命令である場合図5BのステップF017;Yes、パケット処理部311は、ステップF015で生成したアクセスアドレスを用いてパケットヘッダ取得テーブル315へアクセスし、パケットヘッダを取得する図5BのステップF021。一方、処理中の命令が再送命令ではない場合図5BのステップF017;No、パケット処理部311は、当該命令に基づいてパケットヘッダを構築する図5BのステップF019。次に、パケット処理部311は、パケットヘッダを転送データに付加することによって転送パケットを構築する図5BのステップF023。そして、ネットワークインタフェース3は、転送パケットをネットワークに送出する。処理中の命令が再送命令である場合図5BのステップF025;Yes、パケット処理部311は、再送命令の実行回数が上限に達しているかどうか判定する図5BのステップF029。再送命令の実行回数が上限に達している場合図5BのステップF029;Yes、パケット処理部311は、パケットヘッダをパケットヘッダ格納テーブル315から削除する図5BのステップF033。一方、再送命令の実行回数が上限に達していない場合図5BのステップF029;No、パケット処理部311は、実行した命令を、ステップF007で取得した時刻とともに、再送命令キュー309に格納する図5BのステップF031。処理中の命令が再送命令でない場合図5BのステップF025;No、パケット処理部311は、パケットヘッダをパケットヘッダ取得テーブル315に登録する図5BのステップF027。そして、パケット処理部311は、実行した命令を、ステップF007で取得した時刻と共に、再送命令キュー309に格納する図5BのステップF031。尚、ステップF027の処理と、ステップF017~ステップF031の処理は独立であるため、順序を入れ替えることも可能である。また、ステップF007の処理と、ステップF009~ステップF031の処理は独立であるため、順序を入れ替えることも可能である。1-2-2.パケット受信図6は、本実施の形態におけるACKパケット受信処理を示すシーケンス図である。パケット受信部321は、ネットワークからパケットを受信すると、当該受信パケットをパケット処理部311に転送する図6のステップS3211。次に、パケット処理部311は、パケット処理部321から受け取った受信パケットの種別を判定する図6のステップS3119。ここでは、受信パケットはACKパケットである。次に、パケット処理部311は、ACKパケットに含まれる情報から、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する図6のステップS3120。上述の通り、ACKパケットには、ACKパケットに対応する送出パケットを一意に識別する情報が含まれるため、その情報からパケットヘッダ取得テーブル315に対する適切なアクセスアドレスを取得することができる。次に、パケット処理部311は、上記のアクセスアドレスを参照して、ACKパケットに対応するパケットヘッダのエントリをパケットヘッダ取得テーブル315から削除する図6のステップS3121。次に、パケット処理部311は、ACKパケットに含まれる情報から、再送命令キュー309に格納されている再送命令を識別する情報を生成する図6のステップS3122。次に、パケット処理部311は、ACKパケットに対応する再送命令を削除するリクエストを、命令発行部305に出す図6のステップS3123。次に、命令発行部305は、パケット処理部311からのリクエストに従って、再送命令キュー309に格納されている再送命令を削除する図6のステップS3057。次に、パケット処理部311は、ACKパケットに対応するパケットの転送データが格納されている再送バッファ201の領域をアンロックするリクエストを、CPU4に出す図6のステップS3127。次に、CPU4は、パケット処理部311からのリクエストに従って、再送バッファ201をアンロックする図6のステップS4001。図7は、本実施の形態におけるデータパケット受信処理を示すシーケンス図である。尚、図6で示された処理と同じ処理に関しては、重複する説明を適宜省略する。パケット受信部321は、ネットワークからパケットを受信すると、当該受信パケットをパケット処理部311に転送する図7のステップS3211。次に、パケット処理部311は、パケット処理部321から受け取った受信パケットの種別を判定する図7のステップS3119。ここでは、受信パケットはデータパケットである。次に、パケット処理部311は、受信先メモリ領域のアドレスとパケットヘッダに含まれるサイズを参照して、DMAコントローラ313にデータ転送リクエストを出す図7のステップS3124。受信先メモリ領域のアドレスは、ネットワークインタフェース3がRDMA通信に対応している場合には、パケットヘッダに含まれていることが多い。この場合、ネットワークインタフェース3自身で受信先メモリ領域のアドレスを管理する必要はない。一方、そうでない場合であっても、例えば、OSによって、ネットワークインタフェース3のドライバをロードした際などに、メモリ2の領域を割り当てられるため、そのメモリ領域の開始アドレスや、サイズ、使用状況などをネットワークインタフェース3で管理することで、受信先メモリ領域のアドレスを取得することができる。DMAコントローラ313は、パケット処理部311からのリクエストに従って、受信データをメモリ2に転送する図7のステップS3132。次に、パケット処理部311は、パケットヘッダに含まれる情報に基づいて、受信パケットに応答するACKパケットを生成する図7のステップS3125。ACKパケットには、少なくとも、ACKパケットであることを示すフラグと、送信側ホストでどのパケットを送信したのかを一意に識別するのに必要な情報を含む。次に、パケット処理部311は、ACKパケットをパケット送信部319に転送し、パケット送信部319はネットワークにACKパケットを送出する図7のステップS3126。図8は、図6及び図7で示されたパケット受信処理を統合的に示すシーケンス図である。まず、パケット受信部321は、ネットワークからパケットを受信したかどうか判定する図8のステップF101。パケット受信部321がネットワークからパケットを受信していない場合図8のステップF101;No、処理はステップF101に戻る。パケット受信部321がネットワークからパケットを受信すると図8のステップF101;Yes、パケット処理部311は、受信パケットの種別を判定する図8のステップF103。受信パケットがデータパケットである場合図8のステップF103;データパケット、パケット処理部311は、そのデータパケットが本実施の形態に係る再送制御システムに対応したものかどうか判定する図8のステップF105。当該データパケットが本実施の形態に係る再送制御システムに対応していない場合図8のステップF105;No、ネットワークインタフェース3は、そのデータパケットを受信先メモリ領域に転送する図8のステップF111。当該データパケットが本実施の形態に係る再送制御システムに対応している場合図8のステップF105;Yes、パケット処理部311は、パケットヘッダに含まれる情報に基づいてACKパケットを生成する図8のステップF107。そして、ネットワークインタフェース3は、生成したACKパケットをデータパケットの送信元に返信し図8のステップF109、また、受信データパケットを受信先メモリ領域に転送する図8のステップF111。尚、ステップF107~F109の処理と、ステップF111の処理は独立であるため、順序を入れ替えることも可能である。一方、受信パケットがACKパケットである場合図8のステップF103;ACKパケット、パケット処理部311は、ACKパケットに含まれる情報に基づいて、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する図8のステップF113。次に、パケット処理部311は、ステップF113で生成したアクセスアドレスを用いて、パケットヘッダ取得テーブル315に格納されているパケットヘッダを削除する図8のステップF115。また、パケット処理部311は、ACKパケットに含まれる情報に基づいて、再送命令キュー309に格納されている再送命令を一意に識別する情報を生成する図8のステップF117。尚、上記のステップF113で生成されたアドレスをそのまま利用可能である場合は、ステップF117を実行する必要はない。次に、パケット処理部311は、ステップF117で生成した情報を用いて、再送命令キュー309に格納されている再送命令を削除する図8のステップF119。次に、ネットワークインタフェース3は、受信したACKパケットに対応する転送パケットの転送データが格納されている再送バッファ201の領域をアンロックする図8のステップF121。1-3.効果以上に説明されたように、本実施の形態によれば、ネットワークインタフェース3とは異なるホスト側のメモリ2を利用することにより、高速再送制御が実現される。つまり、ネットワークインタフェース3上に大量のメモリを搭載しなくても、高速再送制御を実現することが可能である。更に、本実施の形態に係る高速再送制御において、CPU4は一連の再送処理にはほとんど介在しない。従って、高速再送制御によってCPU4にかかる負荷が軽減される。本実施の形態に係る高速再送制御は、CPU4で稼動する他のアプリケーションに対して影響を与えない。本実施の形態は、例えば、ネットワークで互いに接続されたPCやサーバから構成されるデータセンタなどのコンピュータシステムに適用可能である。2.第2の実施の形態図9は、本発明の第2の実施の形態に係る再送制御システム1の構成を示すブロック図である。第1の実施の形態と重複する説明は適宜省略される。第2の実施の形態では、ネットワークインタフェース3の上記命令発行部305が、命令分割発行部325に置き換えられている。この命令分割発行部325は、必要に応じて、データ転送命令を複数に分割する。より詳細には、命令分割発行部325は、命令キュー303に格納されたデータ転送命令に含まれるデータサイズと、ネットワークのMTUMaximumTransmissionUnitとを比較する。転送データのサイズがMTUを超えている場合、命令分割発行部325は、当該データ転送命令を複数に分割し、それら複数のデータ転送命令のそれぞれを個別にパケット処理部311に出力する。また、命令分割発行部325は、分割後のパケット転送命令を再送命令キュー309に書き込む。このように、第2の実施の形態は、CPU4から発行されるデータ転送要求で指定される転送サイズが1つのパケットに収まらないような場合であっても、CPU4に負荷をかけることなく高速再送制御を実現可能である。比較例として、上記の特許文献1や特許文献2の場合を考える。転送データのサイズがネットワークのMTUを超える場合、転送データを分割し、分割したデータそれぞれにパケットヘッダを付加する必要がある。そのため、転送データを別のメモリ領域にコピーする必要があるが、これはホスト側に負荷をかけるという問題点を生ずる。また、一般に、CPUの性能向上に比べて、メモリの性能向上の速度は遅く、データコピーの遅延も無視できない問題である。さらに、ホスト側のメモリ領域を余分に必要とするという問題点がある。一方、本実施の形態によれば、データ転送命令が複数に分割される。また、パケットヘッダは、ネットワークインタフェース3において生成され、あるいは、管理される。そして、分割後のそれぞれのデータ転送命令に応答して、ネットワークインタフェース3において転送データとパケットヘッダとが組み合わされる。このとき、分割後のそれぞれのデータ転送命令に応答して、転送データをメモリ2から読み出すだけでよい。転送データの分割は不要であり、転送データを分割するために別の記憶領域にコピーする必要はない。従って、転送データのサイズがMTUを超えている場合であっても、CPU4に負荷をかけることなく、高速再送制御を実現可能である。3.第3の実施の形態図10は、本発明の第3の実施の形態に係る再送制御システム1の構成を示すブロック図である。既出の実施の形態と重複する説明は適宜省略される。第3の実施の形態によれば、ネットワークインタフェース3に再送データ取得テーブル327が追加される。再送データ取得テーブル327は、再送バッファ201と同様に、再送データを格納するためのバッファである。図11は、第3の実施の形態におけるパケット送信処理を説明するためのシーケンス図である。図11に示される処理は、図5AのステップF011とステップF013との間に挿入される。命令発行部305は、読み出した命令を解釈する図11のステップF011。パケット処理部311は、現在のデータ転送命令に対応する再送データが、再送データ取得テーブル327に存在するかどうか判定する図11のステップF012a。この判定に際し、パケット処理部311は、データ転送命令に基づいて、再送データ取得テーブル327へのアクセスアドレスを生成する。このアドレスは、再送データを一意に識別することができるものであり、パケットヘッダ取得テーブル315へのアクセスアドレスと同様となる。再送データが再送データ取得テーブル327に存在する場合図11のステップF012a;Yes、パケット処理部311は、再送データ取得テーブル327から再送データを取得する図11のステップF012b。更に、パケット処理部311は、パケットヘッダ取得テーブル315からパケットヘッダを取得する図11のステップF021。ここで、再送データに対応するパケットヘッダは一意に定まるため、パケットヘッダ取得テーブル315へのアクセスアドレスは、ステップF012aにおける再送データ取得テーブル327へのアクセスアドレスと同一であってもよい。以降の処理は、図5BのF021以降の処理と同様である。ただし、図5BのステップF033の際に、再送データ取得テーブル327から再送データを削除する処理が追加される。一方、再送データが再送データ取得テーブル327に存在しない場合図11のステップF012a;No、処理は、上記のステップF013に進む。再送データ取得テーブル327の利用方法として、優先度の高いパケット、データサイズが小さいパケットなどを格納することが考えられる。再送データ取得テーブル327は、ネットワークインタフェース3に搭載されるため、再送バッファ201ほど大きな容量を確保することは困難であると考えられるが、再送バッファ201から再送データを読み出すよりも低遅延に再送データを取得することができる。そのため、優先度の高いパケットを格納することで、当該パケットについては、低遅延な再送を実現できる。また、容量の関係から、サイズの大きなパケットを再送データ取得テーブル327に格納すると、格納できるパケット数が少なくなる。そのため、サイズがある一定値以下の再送データを再送データ取得テーブル327に格納するようにすることで、多くのパケットを格納することが可能になる。また、一般に、通信遅延が問題となるのは、転送データサイズが小さい場合であり、この点でも再送データ取得テーブルにサイズの小さな再送データを格納することは理にかなっている。この場合、動作設定レジスタ323に、再送データ取得テーブル327を利用する最大データサイズを設定するといったことが必要になる。再送データ取得テーブル327の容量が足りなくなった場合は、データサイズや優先度に関わらず、再送バッファ201が利用されるとよい。再送データ取得テーブル327に再送データを書き込むタイミングの例として、図5AのステップF013にて、転送データをメモリ2から読み出すと同時に、その転送データを再送データ取得テーブル327に書き込むことが考えられる。その際、パケットの優先度やサイズに応じて再送データ取得テーブル327と再送バッファ201を使い分ける場合には、どちらを使用するか判定処理を行う。再送データ取得テーブル327に格納されている再送データは、図5BのステップF033に加えて、図8のステップF115を実行する際にも削除される。本実施の形態によれば、ネットワークインタフェース3に再送データ取得テーブル327を設けることで、より低遅延な再送処理を実現することが可能である。以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。付記1転送データが格納されるメモリと、ネットワークインタフェースとを備え、前記ネットワークインタフェースは、前記転送データを含む転送パケットを生成するパケット処理部と、前記メモリから前記転送データを読み出すDMAコントローラとを備え、前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、前記パケット処理部は、前記転送パケットのパケットヘッダを取得し、また、前記DMAコントローラによって読み出された前記転送データに前記取得したパケットヘッダを付加することにより前記転送パケットを生成する再送制御システム。付記2付記1に記載の再送制御システムであって、前記ネットワークインタフェースは、パケットヘッダ取得テーブルを更に備え、前記転送データの1回目の転送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記データ転送命令に基づいて前記転送パケットの前記パケットヘッダを生成し、前記生成したパケットヘッダを前記パケットヘッダ取得テーブルに登録する再送制御システム。付記3付記2に記載の再送制御システムであって、前記転送データの再送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを読み出す再送制御システム。付記4付記2又は3に記載の再送制御システムであって、前記転送パケットに応答するACKパケットを受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを削除する再送制御システム。付記5付記1乃至4のいずれか一項に記載の再送制御システムであって、前記ネットワークインタフェースは、CPUによって発行される、前記転送データの転送を指示する前記データ転送命令が格納される命令キューと、前記転送データの再送を指示する前記データ転送命令が格納される再送命令キューと、前記命令キューあるいは前記再送命令キューから前記データ転送命令を読み出し、前記読み出したデータ転送命令を前記パケット処理部に出力し、且つ、前記読み出したデータ転送命令を前記再送命令キューに格納する命令発行部とを更に備える再送制御システム。付記6付記5に記載の再送制御システムであって、前記転送パケットに応答するACKパケットを受け取った場合、前記命令発行部は、前記転送データの再送を指示する前記データ転送命令を前記再送命令キューから削除する再送制御システム。付記7付記5又は6に記載の再送制御システムであって、前記データ転送命令は、前記転送データのサイズを示し、前記転送データのサイズがネットワークのMTUMaximumTransmissionUnitを超える場合、前記命令発行部は、前記データ転送命令を複数に分割し、前記複数のデータ転送命令を個別に前記パケット処理部に出力する再送制御システム。付記8ネットワークインタフェースにおける再送制御方法であって、転送データは、前記ネットワークインタフェースとは別に設けられたメモリに格納され、前記ネットワークインタフェースは、前記メモリから前記転送データを読み出すDMAコントローラを備え、前記再送制御方法は、前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、転送パケットのパケットヘッダを取得するステップと、前記DMAコントローラによって、前記メモリから前記転送データを読み出すステップと、前記DMAコントローラによって読み出された前記転送データに前記取得したパケットヘッダを付加することによって、前記転送パケットを生成するステップとを含む再送制御方法。本出願は、2011年3月28日に出願された日本国特許出願2011-069826を基礎とする優先権を主張し、その開示の全てをここに取り込む。