パケット再送制御を行うネットワークプロトコルスタックと、前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行う下位層再送制御手段とを備え、前記下位層再送制御手段は、送信パケットを送出する際、送出順を示すシーケンス番号を前記送信パケットに付与し、前記下位層再送制御手段は、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すACKパケットを受け取り、前記下位層再送制御手段は、前記受け取ったACKパケットの前記シーケンス番号を参照することによって、前記ACKパケットを前記シーケンス番号の順番で受け取っているか否かを判定し、第1送信パケットに対する前記ACKパケットは、第1ACKパケットであり、前記第1送信パケットの次に送出される第2送信パケットに対する前記ACKパケットは、第2ACKパケットであり、前記第2送信パケットの後に送出される第3送信パケットに対する前記ACKパケットは、第3ACKパケットであり、前記第1ACKパケットを受け取り、前記第1ACKパケットの次に前記第2ACKパケットを受け取ることなく前記第3ACKパケットを受け取った場合、前記下位層再送制御手段は、高速再送制御処理を実行し、前記高速再送制御処理において、前記下位層再送制御手段は、前記第3ACKパケットの受信時刻から高速再送判定期間が経過するまでに前記第2ACKパケットを受け取るか否かを判定し、前記高速再送判定期間に前記第2ACKパケットを受け取らない場合、前記下位層再送制御手段は、前記第2送信パケットを再送するパケット再送制御システム。請求項1に記載のパケット再送制御システムであって、送信パケット情報が格納される記憶装置を更に備え、前記送信パケット情報は、前記送信パケット毎に、前記シーケンス番号及び送信時刻を示し、前記下位層再送制御手段は、前記ACKパケットを受け取ると前記送信パケット情報を参照し、前記受け取ったACKパケットと同じ前記シーケンス番号を有する前記送信パケットの前記送信時刻を取得し、前記下位層再送制御手段は、前記取得した送信時刻と前記受け取ったACKパケットの受信時刻とに基いて、前記受け取ったACKパケットに関するRTTRoundTripTimeを算出し、前記高速再送判定期間は、前記RTTに依存するパケット再送制御システム。請求項2に記載のパケット再送制御システムであって、前記RTTの範囲は、RTTmin~RTTmaxで定義され、前記下位層再送制御手段は、前記送信パケット情報を参照することによって、前記第2送信パケットと前記第3送信パケットとの間の前記送信時刻の差Δを算出し、前記下位層再送制御手段は、前記高速再送判定期間を、RTTmax-RTTmin-Δに設定するパケット再送制御システム。請求項3に記載のパケット再送制御システムであって、前記算出されたRTTが前記RTTmaxより大きい場合、前記下位層再送制御手段は、前記RTTmaxを前記算出されたRTTに更新し、前記算出されたRTTが前記RTTminより小さい場合、前記下位層再送制御手段は、前記RTTminを前記算出されたRTTに更新するパケット再送制御システム。請求項3に記載のパケット再送制御システムであって、前記下位層再送制御手段は、前記算出されたRTTを所定の閾値と比較し、前記算出されたRTTが前記所定の閾値より大きい場合、前記下位層再送制御手段は、前記RTTmax及び前記RTTminを更新することなく、前記受け取ったACKパケットと同じ前記シーケンス番号を有する前記送信パケットを解放し、前記算出されたRTTが前記所定の閾値以下であり、且つ、前記RTTmaxより大きい場合、前記下位層再送制御手段は、前記RTTmaxを前記算出されたRTTに更新し、前記算出されたRTTが前記RTTminより小さい場合、前記下位層再送制御手段は、前記RTTminを前記算出されたRTTに更新するパケット再送制御システム。請求項3に記載のパケット再送制御システムであって、前記下位層再送制御手段は、前記受け取ったACKパケットの送信元毎に、前記RTTの平均値を算出し、前記算出された平均値が前記RTTmaxより大きい場合、前記下位層再送制御手段は、前記RTTmaxを前記算出された平均値に更新し、前記算出された平均値が前記RTTminより小さい場合、前記下位層再送制御手段は、前記RTTminを前記算出された平均値に更新するパケット再送制御システム。請求項3乃至6のいずれか一項に記載のパケット再送制御システムであって、特定の条件が満たされた場合、前記下位層再送制御手段は、前記RTTmax及び前記RTTminをリセットするパケット再送制御システム。請求項1乃至7のいずれか一項に記載のパケット再送制御システムであって、送信装置と、前記受信装置とを具備し、前記送信装置と前記受信装置の各々が、前記ネットワークプロトコルスタックと前記下位層再送制御手段とを備え、前記送信装置の前記下位層再送制御手段が、前記受信装置に対する前記送信パケットの送出を行い、前記受信装置の前記下位層再送制御手段が、前記送信装置に対する前記ACKパケットの返信を行うパケット再送制御システム。ネットワークプロトコルスタックによってパケット再送制御を行うことと、前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うこととを含み、前記下位層においてパケット再送制御を行うことは、送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すACKパケットを受け取ることとを含み、第1送信パケットに対する前記ACKパケットは、第1ACKパケットであり、前記第1送信パケットの次に送出される第2送信パケットに対する前記ACKパケットは、第2ACKパケットであり、前記第2送信パケットの後に送出される第3送信パケットに対する前記ACKパケットは、第3ACKパケットであり、前記下位層においてパケット再送制御を行うことは、更に、前記受け取ったACKパケットの前記シーケンス番号を参照することによって、前記ACKパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、前記第1ACKパケットを受け取り、前記第1ACKパケットの次に前記第2ACKパケットを受け取ることなく前記第3ACKパケットを受け取った場合、高速再送制御処理を実行することとを含み、前記高速再送制御処理は、前記第3ACKパケットの受信時刻から高速再送判定期間が経過するまでに前記第2ACKパケットを受け取るか否かを判定することと、前記高速再送判定期間に前記第2ACKパケットを受け取らない場合、前記第2送信パケットを再送することとを含むパケット再送制御方法。パケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが記録された記録媒体であって、前記パケット再送制御処理は、パケット再送制御を行うネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことを含み、前記下位層においてパケット再送制御を行うことは、送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すACKパケットを受け取ることとを含み、第1送信パケットに対する前記ACKパケットは、第1ACKパケットであり、前記第1送信パケットの次に送出される第2送信パケットに対する前記ACKパケットは、第2ACKパケットであり、前記第2送信パケットの後に送出される第3送信パケットに対する前記ACKパケットは、第3ACKパケットであり、前記下位層においてパケット再送制御を行うことは、更に、前記受け取ったACKパケットの前記シーケンス番号を参照することによって、前記ACKパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、前記第1ACKパケットを受け取り、前記第1ACKパケットの次に前記第2ACKパケットを受け取ることなく前記第3ACKパケットを受け取った場合、高速再送制御処理を実行することとを含み、前記高速再送制御処理は、前記第3ACKパケットの受信時刻から高速再送判定期間が経過するまでに前記第2ACKパケットを受け取るか否かを判定することと、前記高速再送判定期間に前記第2ACKパケットを受け取らない場合、前記第2送信パケットを再送することとを含む記録媒体。添付図面を参照して、本発明の実施の形態を説明する。1.構成図2は、本実施の形態に係るパケット再送制御システムを概略的に示すブロック図である。パケット再送制御システムは、送信装置1-1と受信装置1-2とを備えている。送信装置1-1と受信装置1-2は、ネットワークを介して互いに接続されている。送信装置1-1は、送信パケットPKTを受信装置1-2に送信する。受信装置1-2は、送信装置1-1からの送信パケットを受信パケットとして受け取り、その受信パケットに応じたACKパケットを送信装置1-1に送信する。本実施の形態によれば、上位層例:TCP層だけでなく、その上位層よりも下位の下位層例:MAC層においても、パケット再送制御が実施される。下位層でのパケット再送制御のために、下位層のシーケンス番号が用いられる。以下、特に断りがない限り、下位層のシーケンス番号は、単にシーケンス番号と参照される。送信装置1-1の下位層は、宛先によらずただ送出順に、連番のシーケンス番号を送信パケットに付与する。つまり、シーケンス番号は、宛先に依存せず、ただ単に、送信パケットの送出順を示す。受信装置1-2の下位層は、シーケンス番号が付いた受信パケットを受信すると、当該シーケンス番号を示す下位層のACKパケットを送信装置1-1に返信する。以下、特に断りがない限り、下位層のACKパケットは、単にACKパケットと参照される。図3は、送信パケットのヘッダを示す概念図である。送信パケットのヘッダは、フィールドE11~E16を含んでいる。フィールドE11は、宛先MACアドレスMACDAを示す。フィールドE12は、送信元MACアドレスMACSAを示す。フィールドE13は、Ethernet登録商標タイプを示す。フィールドE14は、31ビットの下位層のシーケンス番号を示す。フィールドE15は、当該パケットがACKパケットか否かを示す1ビットのACKフラグを示す。送信パケットの場合、ACKフラグは0にセットされる。フィールドE16は、IPヘッダ等の上位層のヘッダを示す。尚、送信パケットが下位層でのパケット再送制御の対象ではない場合、下位層シーケンス番号とACKフラグは付与されない。図4は、ACKパケットのヘッダを示す概念図である。ACKパケットのヘッダは、フィールドE21~E26を含んでいる。フィールドE21は、宛先MACアドレスMACDAを示す。フィールドE22は、送信元MACアドレスMACSAを示す。フィールドE23は、Ethernet登録商標タイプを示す。フィールドE24は、31ビットの下位層のシーケンス番号を示す。フィールドE25は、当該パケットがACKパケットか否かを示す1ビットのACKフラグを示す。ACKパケットの場合、ACKフラグは1にセットされる。フィールドE26は、Ethernet登録商標Paddingを示す。図5は、本実施の形態に係る送受信装置1送信装置1-1、受信装置1-2の各々の構成例を示している。送受信装置1は、プログラム処理装置10及びネットワークインタフェース装置20を備えている。プログラム処理装置10は、アプリケーションやネットワークプロトコルスタックを処理する。このプログラム処理装置10は、サーバやPCをはじめとするホストのCPUCentralProcessingUnit等により実現される。より詳細には、プログラム処理装置10は、プログラムを実行することにより実現されるアプリケーション処理部11及びネットワークプロトコルスタック12を備えている。アプリケーション処理部11は、ネットワーク通信を行うユーザーアプリケーションを処理する。アプリケーション処理部11は、ネットワークデータの送受信の要求をネットワークプロトコルスタック12に対して行う。ネットワークプロトコルスタック12は、CPUで動作するOSOperatingSystemのカーネルプログラムの一部である。ネットワークプロトコルスタック12は、TCP層などの上位層におけるパケット送受信処理及びパケット再送制御を行う。ネットワークインタフェース装置20は、例えば、サーバの拡張カードやオンボードで搭載されるNICNetworkInterfaceCardである。ネットワークインタフェース装置20は、下位層におけるパケット送受信処理及びパケット再送制御を行う。より詳細には、ネットワークインタフェース装置20は、下位層再送制御部30及び記憶部40を備えている。下位層再送制御部30は、ネットワークプロトコルスタック12よりも下位層において、パケット送受信処理及びパケット再送制御を行う。下位層再送制御部30は、データ送信部311、RTO再送制御部312、高速再送制御部313、ACK生成部314、送信パケット多重部315、受信パケット分配部316、データ受信部317、ACK受信部318といった機能ブロックを備えている。各機能ブロックによる詳細な処理は、後述される。記憶部40は、ネットワークインタフェース装置20に搭載されるSRAMやDRAM等のメモリである。記憶部40には、送信パケット情報41、高速再送制御情報42等が格納される。各情報の詳細は、後述される。2.パケット送出処理送信装置1-1のアプリケーション処理部11は、送信データをネットワークプロトコルスタック12に送る。ネットワークプロトコルスタック12は、送信データをMSSMaximumSegmentSize毎に分割する。ネットワークで転送可能なパケットの最大サイズがMTUMaximumTransferUnitであるとき、MSSは、MTU-MACヘッダのサイズ-下位層ヘッダのサイズ-上位プロトコルヘッダのサイズで表される。下位層ヘッダのサイズは、ネットワークプロトコルスタック12にあらかじめ通知されている。ネットワークプロトコルスタック12は、MACヘッダや上位プロトコルヘッダ図3参照を分割後データに付与して送信パケットを生成し、その送信パケットを下位層再送制御部30に送信する。図6は、送信装置1-1の下位層再送制御部30によるパケット送出処理を示すフローチャートである。ステップS11:データ送信部311は、ネットワークプロトコルスタック12から送信パケットを受信する。ステップS12:データ送信部311は、送信パケットに付与すべきシーケンス番号と、前回の送信パケットの送信時刻タイムスタンプを保持している。データ送信部311は、それらシーケンス番号及び前回の送信時刻を読み出す。ステップS13:データ送信部311は、送信パケットの下位層ヘッダ図3参照にシーケンス番号を挿入する。そして、データ送信部311は、送信パケット多重部315に送信パケットを送る。ステップS14:データ送信部311は、今回の送信パケットに関する情報を、記憶部40に格納されている送信パケット情報41に登録する。図7は、送信パケット情報41の例を示している。図7の例において、送信パケット情報41は、送信パケットのシーケンス番号、宛先MACアドレス及び送信時刻タイムスタンプ、差分Δ、送信パケットのデータ本体を示している。ここで、差分Δとは、パケット送信間隔であり、今回の送信パケットと前回の送信パケットとの間のタイムスタンプの差分値を表す。送信パケット情報41は、対応するACKパケットが未だ到着していない送信済みパケット毎に、このような情報を示している。ステップS15:データ送信部311は、シーケンス番号を更新する。具体的には、データ送信部311は、送信パケットの宛先とは無関係に、シーケンス番号に1を加算する。つまり、シーケンス番号は、宛先に依存せず、ただ単に、送信パケットの送出順を示す。ステップS16:送信パケットは、送信パケット多重部315を経由して、外部のネットワークへ送出される。3.タイムアウト再送制御処理送信装置1-1の下位層再送制御部30は、下位層において、RTOによるパケット再送制御を行う。下位層におけるRTOは、ネットワークプロトコルスタック12におけるRTOよりも短く設定されている。つまり、下位層再送制御部30は、ネットワークプロトコルスタック12よりも短いRTOでタイムアウト再送制御を行う。図8は、送信装置1-1の下位層再送制御部30によるタイムアウト再送制御処理を示すフローチャートである。ステップS21:RTO再送制御部312は、記憶部40に格納されている送信パケット情報41図7参照を参照する。そして、RTO再送制御部312は、送信済みパケットの送信時刻Tpktを現在時刻Tnowと比較する。ステップS22:RTO再送制御部312は、Tnow-Tpktが所定のRTOを超過したか否かを判定する。Tnow-Tpktが所定のRTOを超過した場合ステップS22;Yes、RTO再送制御部312は、次のステップS23を行う。ステップS23:RTO再送制御部312は、送信パケット情報41から、タイムアウトが発生した送信パケットのデータ本体を読み出す。そして、RTO再送制御部312は、読みだしたデータ本体を基に再送パケットを生成し、その再送パケットを送信パケット多重部315に送る。再送パケットは、送信パケット多重部315を経由して、外部のネットワークへ送出される。ステップS24:RTO再送制御部312は、再送した送信パケットに関して、送信パケット情報41送信時刻等を更新する。4.パケット受信処理次に、図9を参照して、下位層におけるパケット受信時の処理を説明する。そのパケット受信には、受信装置1-2が送信装置1-1から送られた送信パケットを受信する場合と、送信装置1-1が受信装置1-2から送られたACKパケットを受信する場合とがある。尚、上位層のACKパケットは、送信装置1-1の下位層においては、通常のパケットとみなされる。このような上位層のACKパケットに対する下位層での処理方式は任意であり、ここでは説明を省略する。ステップS31:受信パケット分配部316は、外部のネットワークからパケットを受信する。ステップS32:受信したパケットが下位層ヘッダを有する場合ステップS32;Yes、受信パケット分配部316は、ステップS33を行う。一方、受信したパケットが下位層ヘッダを有さない場合ステップS32;No、受信パケット分配部316は、受信したパケットをデータ受信部317に送る。ステップS33:受信パケット分配部316は、下位層ヘッダのACKフラグを参照して、受信したパケットがACKパケットか否かを判定する。受信したパケットがACKパケットの場合ステップS33;Yesは、送信装置1-1が受信装置1-2から送られたACKパケットを受信した場合に相当する。この場合、送信装置1-1の受信パケット分配部316は、当該ACKパケットをACK受信部318に転送する。その後、処理はステップS100に移行する。このステップS100ACKパケット受信処理に関しては、次の第5節において詳細に説明する。一方、受信したパケットがACKパケットではない場合ステップS33;Noは、受信装置1-2が送信装置1-1から送られた送信パケットを受信した場合に相当する。この場合、受信装置1-1の受信パケット分配部316は、当該受信パケットを、データ受信部317を介してACK生成部314に転送する。そして、処理はステップS34に移行する。ステップS34:ACK生成部314は、当該受信パケットから、シーケンス番号と送信元MACアドレスを抽出する。ステップS35:ACK生成部314は、当該受信パケットに対して確認応答するACKパケットを生成する。ここで、生成されるACKパケットの宛先MACアドレスは、ステップS34で抽出された送信元MACアドレスに設定される。また、生成されるACKパケットのシーケンス番号は、当該受信パケットのシーケンス番号と同じに設定される。ステップS36:ACK生成部314は、ACKパケットを送信パケット多重部315に送る。ACKパケットは、送信パケット多重部315から送信装置1-1に返送される。ステップS37:データ受信部317は、受信パケットをネットワークプロトコルスタック12へ転送する。受信パケットに下位層ヘッダが付いている場合、ここでその下位層ヘッダが除去される。5.ACKパケット受信処理次に、送信装置1-1が下位層のACKパケットを受信した場合の処理ステップS100を詳しく説明する。本実施の形態によれば、下位層のACKパケットの受信を契機として、下位層における高速再送制御処理が実施される場合がある。まず、図10を参照して、本実施の形態に係る高速再送制御処理の概要を説明する。送信装置1-1は、時刻ts1に、第1送信パケットPKT1シーケンス番号=1を送出する。送信装置1-1は、第1送信パケットPKT1の次に第2送信パケットPKT2シーケンス番号=2を送出する。第2送信パケットPKT2の送信時刻はts2である。その後の時刻ts3に、送信装置1-1は、第3送信パケットPKT3シーケンス番号=3を送出する。第1送信パケットPKT1に対するACKパケットは、第1ACKパケットACK1シーケンス番号=1である。第2送信パケットPKT2に対するACKパケットは、第2ACKパケットACK2シーケンス番号=2である。第3送信パケットPKT3に対するACKパケットは、第3ACKパケットACK3シーケンス番号=3である。前回受信したACKパケットに対してシーケンス番号が連続するACKパケットは、以下In-OrderACKパケットと参照される。それ以外のACKパケットは、以下Out-of-OrderACKパケットと参照される。時刻tr1に、送信装置1-1は、第1ACKパケットACK1を受信する。ここで、送信装置1-1が、第1ACKパケットACK1の次にOut-of-OrderACKパケットを受信した場合を考える。つまり、送信装置1-1が、第2ACKパケットACK2を受信することなく、第1ACKパケットACK1の次に第3ACKパケットACK3を受信した場合を考える。送信装置1-1は、前回受信した第1ACKパケットACK1のシーケンス番号1と今回受信した第3ACKパケットACK3のシーケンス番号3から、Out-of-OrderACKパケットを受信したことを認識することができる。送信装置1-1がOut-of-OrderACKパケットを受信する原因としては、次の2つ考えられる。第1の原因は、送信装置1-1と受信装置1-2との間のネットワーク経路上でのパケット廃棄packetdropである。第2の原因は、RTTRoundTripTimeの違いである。まず、RTTについて考える。RTTは、送信パケットの送信時刻から、対応するACKパケットの受信時刻までの時間である。このRTTは、均一であるとは限らず、送信パケットの宛先に依存して異なり得る。例えば、図10において、RTT2は、第2送信パケットPKT2の送信時刻ts2から第2ACKパケットACK2の受信時刻tr2までの時間であり、RTT3は、第3送信パケットPKT3の送信時刻ts3から第3ACKパケットACK3の受信時刻tr3までの時間である。図10に示されるように、RTT2がRTT3よりも大きい場合、第2ACKパケットACK2の到着が第3ACKパケットACK3の到着よりも遅れる可能性がある。Out-of-Orderの第3ACKパケットACK3の受信時刻tr3から、In-Orderの第2ACKパケットACK2の受信時刻tr2までの遅延時間Delayは、次の式1で表される。式1:Delay=RTT2-RTT3-Δここで、Δは、第3送信パケットPKT3の送信時刻ts3と第2送信パケットPKT2の送信時刻ts2との差であり、ts3-ts2で与えられる。この差Δは、図7で示された送信パケット情報41から取得することができる。RTTは宛先等に依存して様々な値を取るため、RTTに関してある分布範囲を定義することができる。その分布範囲の上限の指標となるパラメータは、以下RTTmaxと参照され、その分布範囲の下限の指標となるパラメータは、以下RTTminと参照される。このとき、遅延時間Delayの最大値である最大遅延時間DelayMaxは、次の式2で表される。式2:DelayMax=RTTmax-RTTmin-Δ時刻tr3から最大遅延時間DelayMaxが経過しても第2ACKパケットACK2が到着しない場合、パケット廃棄が発生した可能性が極めて高い。従って、この場合、RTOによるパケット再送を待つことなく、第2送信パケットPKT2の再送が行われる。これが、本実施の形態で実施される下位層における高速再送FastRetransmissionである。要約すれば、次の通りである。時刻tr3でのOut-of-Orderの第3ACKパケットACK3の受信を契機として、送信装置1-1は、高速再送制御処理を実行する。その高速再送制御処理において、送信装置1-1は、時刻tr3から高速再送判定期間Tが経過するまでにIn-Orderの第2ACKパケットACK2を受信するか否かを判定する。その高速再送判定期間Tは、RTTに依存しており、次の式3で表される。式3:T=DelayMax=RTTmax-RTTmin-Δその高速再送判定期間Tの間に第2ACKパケットACK2を受けとらない場合、送信装置1-1は、第2送信パケットPKT2の廃棄が発生したとみなし、第2送信パケットPKT2の再送処理を実施する。尚、2以上のシーケンス番号の空きが発生している場合は、ACKパケットが到着していない全てのシーケンス番号の送信パケットについて再送を行う。図11は、このような高速再送制御を行うために必要な高速再送制御情報42を示している。この高速再送制御情報42は、例えば記憶部40に格納される。高速再送制御情報42は、基準ACKパケット情報とRTT範囲情報を含んでいる。基準ACKパケットとは、最後に受け取ったIn-OrderACKパケットであり、図10の例では第1ACKパケットACK1である。基準ACKパケット情報は、基準ACKパケットのシーケンス番号と到着時刻を含んでいる。この基準ACKパケット情報は、今回受け取ったACKパケットがIn-OrderかOut-of-Orderかを判定するために用いられる。RTT範囲情報は、上述のパラメータRTTmax、RTTminを示しており、高速再送判定期間Tの算出に用いられる。このRTT範囲情報は、適宜更新される。以下、様々な処理例を説明する。5-1.第1の例図12は、ステップS100の第1の例を示すフローチャートである。ステップS110:下位層再送制御部30のACK受信部318は、ACKパケットを受信する。ステップS120:ACK受信部318は、受信ACKパケットのヘッダからシーケンス番号を抽出する。ステップS130:ACK受信部318は、送信パケット情報41図7参照を参照して、ステップS120で抽出したものと同じシーケンス番号を有する送信パケットに関する情報送信時刻等を読みだす。ステップS140:ACK受信部318は、ステップS130で取得した送信時刻と受信ACKパケットの受信時刻とに基いて、受信ACKパケットに関するRTTを算出する。ステップS150:ACK受信部318は、ステップS140で算出されたRTTを用い、高速再送制御情報42で示されるRTTmax、RTTminを、必要に応じて更新する。具体的には、算出RTT>RTTmaxの場合、ACK受信部318は、RTTmaxを算出RTTに更新する。また、算出RTT<RTTminの場合、ACK受信部318は、RTTminを算出RTTに更新する。つまり、RTTmax及びRTTminは、これまで算出されたRTTの最大値及び最小値にそれぞれ設定される。尚、初期状態において、RTTmax及びRTTminは適当な初期値に設定される。ステップS160:また、ACK受信部318は、シーケンス番号を参照し、ACKパケットをシーケンス番号の順番で受け取っているか否かを判定する。言い換えれば、ACK受信部318は、受信ACKパケットがIn-OrderかOut-of-Orderかの判定を行う。具体的には、ACK受信部318は、ステップS120で抽出されたシーケンス番号を、高速再送制御情報42で示される基準ACKパケットのシーケンス番号基準シーケンス番号と比較する。受信ACKパケットのシーケンス番号が基準シーケンス番号1ではない場合、受信ACKパケットはOut-of-OrderACKパケットであるステップS160;No。この場合、下位層再送制御部30は、高速再送制御処理ステップS200を実行する。このステップS200については後述される。一方、受信ACKパケットのシーケンス番号が基準シーケンス番号1である場合、受信ACKパケットはIn-OrderACKパケットであるステップS160;Yes。この場合、処理はステップS170に移る。ステップS170:ACK受信部318は、今回受信したIn-OrderACKパケットを、最新の基準ACKパケットとする。つまり、ACK受信部318は、高速再送制御情報42の基準ACKパケット情報を、今回受信したACKパケットの情報に更新する。ステップS180:ACK受信部318は、今回受信したACKパケットと同じシーケンス番号を有する送信パケットを解放する。つまり、ACK受信部318は、上記ステップS130で読みだしたエントリを送信パケット情報41から削除する。次に、図13を参照して、高速再送制御処理ステップS200を説明する。ステップS210:高速再送制御部313は、Out-of-OrderACKパケットの受信からの経過時間を計測する。図10の例で言えば、高速再送制御部313は、第3ACKパケットACK3の受信時刻tr3からの経過時間を計測する。ステップS220:高速再送制御部313は、時刻tr3から高速再送判定期間Tが経過するまでにIn-Orderの第2ACKパケットACK2を受け取るか否かを判定する。高速再送判定期間Tは、上記式3で与えられる。式3中のパラメータRTTmax、RTTminは、高速再送制御情報42から得られる。差分Δは、送信パケット情報41を参照することによって算出可能である。つまり、高速再送制御部313は、送信パケット情報41及び高速再送制御情報42に基いて、高速再送判定期間Tを算出することができる。高速再送判定期間T以内にIn-Orderの第2ACKパケットACK2を受け取った場合ステップS220;Yes、第2送信パケットPKT2の再送は不要である。この場合、パケット再送は実施されることなく、処理はステップS170へ進む。一方、高速再送判定期間Tの間にIn-Orderの第2ACKパケットACK2を受けとらない場合ステップS220;No、高速再送制御部313は、第2送信パケットPKT2の廃棄が発生したとみなし、第2送信パケットPKT2の再送処理を実施する。この場合、処理はステップS230に進む。ステップS230:高速再送制御部313は、送信パケット情報41から、再送対象のデータ本体を読み出す。ステップS240:そして、高速再送制御部313は、読みだしたデータ本体を基に再送パケットを生成し、その再送パケットを送信パケット多重部315に送る。再送パケットは、送信パケット多重部315を経由して、外部のネットワークへ送出される。以上に説明されたように、本実施の形態によれば、ネットワークプロトコルスタック12より下位層においても、RTOによらない高速再送制御を実現することが可能となる。例えば、Δ=1.2μsec約10Gbpsのリンクに相当、RTTmin=20μsec、RTTmax=25μsecという状況を考える。この場合、高速再送判定期間Tは3.8μsecである。従って、RTT3=RTTmaxであったとしても、第2送信パケットPKT2の送信から30μsec程度で、第2送信パケットPKT2の高速再送が実施される。一方、RTOによるパケット再送制御に関しては、誤再送を防ぐために、RTOはRTTより充分大きい値数百μsecに設定されることが一般的である。本実施の形態によれば、下位層においても、RTOより十分短い時間で高速再送を実現することが可能である。これにより、FCTを減少させ、通信効率を向上させることができる。5-2.第2の例通信経路の設定不良や経路変更等により、計測されるRTTが非常に大きくなってしまう場合がある。そのような極端なRTTもRTTmaxの更新に適用されると、高速再送判定期間Tがいたずらに長くなってしまう。高速再送判定期間Tが長くなり過ぎると、適切なタイミングで高速再送が実施されなくなってしまい、効果が減ってしまう。そこで、第2の例として、極端に長いRTTが観測された場合にRTTmaxの更新を行わないフローを提案する。図14は、ステップS100の第2の例を示すフローチャートである。図12で示されたフローと比較して、ステップS140とステップS150との間にステップS145が追加されている。他の処理は第1の例と同じであり、重複する説明は適宜省略される。ステップS145:ACK受信部318は、ステップS140で算出されたRTTを所定の閾値TH_RMAXと比較する。算出RTTが所定の閾値TH_RMAXより大きい場合ステップS145;Yes、ACK受信部318は、ステップS150~S170をスキップし、ステップS180を実施する。一方、算出RTTが所定の閾値TH_RMAX以下の場合ステップS145;No、ACK受信部318は、第1の例と同じ処理を実行する。第2の例によれば、第1の例と同じ効果が得られる。更に、異常に大きいRTTが観測された場合であっても、高速再送制御処理を正常に維持することが可能となる。5-3.第3の例第3の例では、最新のネットワーク状態をパラメータRTTmax、RTTminに反映させるために、特定の条件が満たされる毎にパラメータRTTmax、RTTminがリセットされる。図15は、第3の例における処理フローを示している。図15に示される処理フローは、ステップS100と並行して行われる。ステップS300:ACK受信部318は、ACKパケットを受信するとステップS110、特定の条件が満たされるか否かを判定する。ステップS310:特定の条件が満たされる場合ステップS300;Yes、ACK受信部318は、パラメータRTTmax、RTTminをリセットリフレッシュする。例えば、ACK受信部318は、パラメータRTTmax、RTTminを、上記ステップS140で算出されるRTTに設定する。特定の条件としては、次の例が考えられる。条件1ACKパケットの受信数が規定値RT_REFRESH_ACKを超える;この場合、ACKパケットの受信数が規定値RT_REFRESH_ACKを超える毎に、パラメータRTTmax、RTTmin、及びACKパケットの受信カウント値はリセットされる。条件2データ送信部311で計測されるデータ送信レートが所定の閾値TH_REFRESH_RATEを下回る;フロー切断時にはデータ送信レートが減少するため、データ送信レートを所定の閾値TH_REFRESH_RATEと比較することによって、フロー切断つまり、ネットワーク状態の変化を検知することができる。条件3所定の時間TH_REFRESH_TIMEが経過した;この場合、所定の時間TH_REFRESH_TIME毎に、パラメータRTTmax、RTTmin、及びタイマがリセットされる。第3の例によれば、第1の例と同じ効果が得られる。更に、最新のネットワーク状態に即した適切な高速再送制御処理が可能となる。5-4.第4の例第4の例では、RTTの平均値RTTaveが用いられる。本例では、図16に示されるような平均値情報43が記憶部40に格納される。平均値情報43は、ACKパケットの送信元MACアドレス送信パケットの宛先MACアドレス毎に、RTTの平均値RTTaveを示している。図17は、ステップS100の第4の例を示すフローチャートである。本例では、ステップS130、S140、S150、S170が、それぞれ、ステップS130’、S140’、S150’、S170’に置換されている。第1の例と重複する説明は適宜省略される。ステップS130’:ステップS130と同様に、ACK受信部318は、送信パケット情報41を参照して、受信ACKパケットと同じシーケンス番号を有する送信パケットに関する情報送信時刻等を読みだす。更に、ACK受信部318は、平均値情報43と受信ACKパケットの送信元MACアドレスを参照して、当該送信元に対応する平均値RTTave以下、RTToldと参照されるを読み出す。ステップS140’:ステップS140と同様に、ACK受信部318は、受信ACKパケットに関するRTT以下、RTTmeasureと参照されるを算出する。更に、ACK受信部318は、受信ACKパケットに関する新たな平均値RTTave以下、RTTnewと参照されるを算出する。例えば、RTTnewは、次の式4で計算される。式4中のパラメータgは、例えば0.2に設定される。式4:RTTnew=1-g×RTToldg×RTTmeasureステップS150’:ACK受信部318は、ステップS140’で算出されたRTTnewを用い、高速再送制御情報42で示されるRTTmax、RTTminを、必要に応じて更新する。具体的には、RTTnew>RTTmaxの場合、ACK受信部318は、RTTmaxをRTTnewに更新する。また、RTTnew<RTTminの場合、ACK受信部318は、RTTminをRTTnewに更新する。つまり、RTTmax及びRTTminは、これまで算出されたRTTaveの最大値及び最小値にそれぞれ設定される。ステップS170’:ステップS170と同様に、ACK受信部318は、高速再送制御情報42の基準ACKパケット情報を更新する。更に、ACK受信部318は、ステップS140’で算出されたRTTnewを用いて平均値情報43を更新する。第4の例によれば、第1の例と同じ効果が得られる。更に、宛先毎の平均値RTTaveを利用することによって、異常に大きいRTTが観測された場合であっても、高速再送制御処理を正常に維持することが可能となる。つまり、高速再送制御処理をより高精度に実施することが可能となる。5-5.第5の例第5の例では、高速再送判定期間Tは、次の式5で表される。式5:T=RTTmax-RTTmin-Δαパラメータαは、ネットワーク管理者もしくはユーザによって適宜される。このようなパラメータαを導入することによって、パケットの誤再送を抑えることが可能となる。5-6.第6の例パケット送信間隔Δが非常に大きい状況では、そのΔの値が格納される変数のビット幅が足りずに、高速再送判定期間Tが誤った値になってしまう可能性がある。また、既出の第4の例において、サンプル数がまだ少ない状況ではRTTの平均値RTTaveの算出精度も低いままである。このように、高速再送制御処理には不適切な状況も存在し得る。そこで、第6の例では、特定の条件が満たされる場合にのみ、高速再送制御処理ステップS200が実施される。図18は、ステップS100の第6の例を示すフローチャートである。図12で示されたフローと比較して、ステップS160とステップS200との間にステップS190が追加されている。他の処理は第1の例と同じであり、重複する説明は適宜省略される。ステップS190:下位層再送制御部30は、特定の条件が満たされるか否かを判定する。特定の条件が満たされる場合ステップS190;Yes、ステップS200が実施される。一方、特定の条件が満たされない場合ステップS190;No、ステップS200は実施されず、処理は終了する。特定の条件としては、次の例が考えられる。条件1データ送信部311で計測されるデータ送信レートが所定の閾値TH_FR_RATEを超える;逆に言えば、パケット送信間隔Δが非常に大きい状況では、ステップS200は実施されない。条件2パケット送信間隔Δが所定の閾値TH_FR_DELTAを下回る;逆に言えば、パケット送信間隔Δが非常に大きい状況では、ステップS200は実施されない。条件3ACKパケットの受信回数が規定値TH_FR_ACKを超える;ACKパケットの受信回数が規定値TH_FR_ACKを超えると、平均値RTTaveの値も適正となる。第6の例では、第1の例と同じ効果が得られる。更に、適切な状況においてのみ高速再送制御処理が実行される。その結果、高速再送制御処理の精度及び信頼性が向上する。尚、矛盾しない限りにおいて、上述の第1~第6の例のうち2以上を組み合わせることも可能である。6.他の構成例図19は、本実施の形態に係る送受信装置1の変形例を示している。本変形例において、下位層再送制御部30は、プログラム処理装置10に組み込まれている。下位層再送制御部30は、プログラム処理装置10のCPUがパケット再送制御プログラムPROGを実行することにより実現される。パケット再送制御プログラムPROGは、プログラム処理装置10によって実行されるコンピュータプログラムである。このパケット再送制御プログラムPROGは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。記憶部40は、プログラム処理装置10がアクセス可能なRAM等により実現される。本変形例における処理は、既出の実施の形態と同じである。以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。付記1パケット再送制御を行うネットワークプロトコルスタックと、前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行う下位層再送制御手段とを備え、前記下位層再送制御手段は、送信パケットを送出する際、送出順を示すシーケンス番号を前記送信パケットに付与し、前記下位層再送制御手段は、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すACKパケットを受け取り、前記下位層再送制御手段は、前記受け取ったACKパケットの前記シーケンス番号を参照することによって、前記ACKパケットを前記シーケンス番号の順番で受け取っているか否かを判定し、第1送信パケットに対する前記ACKパケットは、第1ACKパケットであり、前記第1送信パケットの次に送出される第2送信パケットに対する前記ACKパケットは、第2ACKパケットであり、前記第2送信パケットの後に送出される第3送信パケットに対する前記ACKパケットは、第3ACKパケットであり、前記第1ACKパケットを受け取り、前記第1ACKパケットの次に前記第2ACKパケットを受け取ることなく前記第3ACKパケットを受け取った場合、前記下位層再送制御手段は、高速再送制御処理を実行し、前記高速再送制御処理において、前記下位層再送制御手段は、前記第3ACKパケットの受信時刻から高速再送判定期間が経過するまでに前記第2ACKパケットを受け取るか否かを判定し、前記高速再送判定期間に前記第2ACKパケットを受け取らない場合、前記下位層再送制御手段は、前記第2送信パケットを再送するパケット再送制御システム。付記2付記1に記載のパケット再送制御システムであって、送信パケット情報が格納される記憶装置を更に備え、前記送信パケット情報は、前記送信パケット毎に、前記シーケンス番号及び送信時刻を示し、前記下位層再送制御手段は、前記ACKパケットを受け取ると前記送信パケット情報を参照し、前記受け取ったACKパケットと同じ前記シーケンス番号を有する前記送信パケットの前記送信時刻を取得し、前記下位層再送制御手段は、前記取得した送信時刻と前記受け取ったACKパケットの受信時刻とに基いて、前記受け取ったACKパケットに関するRTTRoundTripTimeを算出し、前記高速再送判定期間は、前記RTTに依存するパケット再送制御システム。付記3付記2に記載のパケット再送制御システムであって、前記RTTの範囲は、RTTmin~RTTmaxで定義され、前記下位層再送制御手段は、前記送信パケット情報を参照することによって、前記第2送信パケットと前記第3送信パケットとの間の前記送信時刻の差Δを算出し、前記下位層再送制御手段は、前記高速再送判定期間を、RTTmax-RTTmin-Δに設定するパケット再送制御システム。付記4付記3に記載のパケット再送制御システムであって、前記算出されたRTTが前記RTTmaxより大きい場合、前記下位層再送制御手段は、前記RTTmaxを前記算出されたRTTに更新し、前記算出されたRTTが前記RTTminより小さい場合、前記下位層再送制御手段は、前記RTTminを前記算出されたRTTに更新するパケット再送制御システム。付記5付記3に記載のパケット再送制御システムであって、前記下位層再送制御手段は、前記算出されたRTTを所定の閾値と比較し、前記算出されたRTTが前記所定の閾値より大きい場合、前記下位層再送制御手段は、前記RTTmax及び前記RTTminを更新することなく、前記受け取ったACKパケットと同じ前記シーケンス番号を有する前記送信パケットを解放し、前記算出されたRTTが前記所定の閾値以下であり、且つ、前記RTTmaxより大きい場合、前記下位層再送制御手段は、前記RTTmaxを前記算出されたRTTに更新し、前記算出されたRTTが前記RTTminより小さい場合、前記下位層再送制御手段は、前記RTTminを前記算出されたRTTに更新するパケット再送制御システム。付記6付記3に記載のパケット再送制御システムであって、前記下位層再送制御手段は、前記受け取ったACKパケットの送信元毎に、前記RTTの平均値を算出し、前記算出された平均値が前記RTTmaxより大きい場合、前記下位層再送制御手段は、前記RTTmaxを前記算出された平均値に更新し、前記算出された平均値が前記RTTminより小さい場合、前記下位層再送制御手段は、前記RTTminを前記算出された平均値に更新するパケット再送制御システム。付記7付記3乃至6のいずれか一項に記載のパケット再送制御システムであって、特定の条件が満たされた場合、前記下位層再送制御手段は、前記RTTmax及び前記RTTminをリセットするパケット再送制御システム。付記8付記1乃至7のいずれか一項に記載のパケット再送制御システムであって、送信装置と、前記受信装置とを具備し、前記送信装置と前記受信装置の各々が、前記ネットワークプロトコルスタックと前記下位層再送制御手段とを備え、前記送信装置の前記下位層再送制御手段が、前記受信装置に対する前記送信パケットの送出を行い、前記受信装置の前記下位層再送制御手段が、前記送信装置に対する前記ACKパケットの返信を行うパケット再送制御システム。付記9ネットワークプロトコルスタックによってパケット再送制御を行うことと、前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うこととを含み、前記下位層においてパケット再送制御を行うことは、送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すACKパケットを受け取ることとを含み、第1送信パケットに対する前記ACKパケットは、第1ACKパケットであり、前記第1送信パケットの次に送出される第2送信パケットに対する前記ACKパケットは、第2ACKパケットであり、前記第2送信パケットの後に送出される第3送信パケットに対する前記ACKパケットは、第3ACKパケットであり、前記下位層においてパケット再送制御を行うことは、更に、前記受け取ったACKパケットの前記シーケンス番号を参照することによって、前記ACKパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、前記第1ACKパケットを受け取り、前記第1ACKパケットの次に前記第2ACKパケットを受け取ることなく前記第3ACKパケットを受け取った場合、高速再送制御処理を実行することとを含み、前記高速再送制御処理は、前記第3ACKパケットの受信時刻から高速再送判定期間が経過するまでに前記第2ACKパケットを受け取るか否かを判定することと、前記高速再送判定期間に前記第2ACKパケットを受け取らない場合、前記第2送信パケットを再送することとを含むパケット再送制御方法。付記10パケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムであって、前記パケット再送制御処理は、パケット再送制御を行うネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことを含み、前記下位層においてパケット再送制御を行うことは、送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すACKパケットを受け取ることとを含み、第1送信パケットに対する前記ACKパケットは、第1ACKパケットであり、前記第1送信パケットの次に送出される第2送信パケットに対する前記ACKパケットは、第2ACKパケットであり、前記第2送信パケットの後に送出される第3送信パケットに対する前記ACKパケットは、第3ACKパケットであり、前記下位層においてパケット再送制御を行うことは、更に、前記受け取ったACKパケットの前記シーケンス番号を参照することによって、前記ACKパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、前記第1ACKパケットを受け取り、前記第1ACKパケットの次に前記第2ACKパケットを受け取ることなく前記第3ACKパケットを受け取った場合、高速再送制御処理を実行することとを含み、前記高速再送制御処理は、前記第3ACKパケットの受信時刻から高速再送判定期間が経過するまでに前記第2ACKパケットを受け取るか否かを判定することと、前記高速再送判定期間に前記第2ACKパケットを受け取らない場合、前記第2送信パケットを再送することとを含むパケット再送制御プログラム。本出願は、2010年3月3日に出願された日本国特許出願2010-046418を基礎とする優先権を主張し、その開示の全てをここに取り込む。