上位レイヤから入力されたパケットの再送制御を行うパケット再送制御装置であって、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示すフローテーブルと、前記フローテーブルを参照することによって、前記パケットに対する前記再送制御の適用可否を決定する処理決定部とを備え、前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも1つを再送管理パラメータとして含み、前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得し、前記再送管理パラメータが閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、前記再送管理パラメータが前記閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止するパケット再送制御装置。請求項1に記載のパケット再送制御装置であって、前記再送管理パラメータは、前記パケット再送回数を含み、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数を取得し、前記パケット再送回数が再送回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、前記パケット再送回数が前記再送回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止するパケット再送制御装置。請求項2に記載のパケット再送制御装置であって、前記再送制御が適用される前記パケットを前記処理決定部から受け取り、前記受け取ったパケットを再送バッファに蓄積し、また、前記受け取ったパケットを下位レイヤに出力する送信部と、前記下位レイヤからパケットを受信する受信部とを更に備え、前記受信部が前記再送バッファに蓄積されたパケットに対する確認応答を再送タイムアウト以内に受信しない場合、前記送信部は、再送処理を行い、前記再送処理において、前記送信部は、前記再送バッファに蓄積されたパケットを前記下位レイヤに再送し、また、前記フローテーブルにおいて当該再送パケットが属するフローに対応付けられた前記パケット再送回数を増加させるパケット再送制御装置。請求項3に記載のパケット再送制御装置であって、前記再送タイムアウトは、フロー毎に決定され、前記再送管理情報は、フロー毎に決定された前記再送タイムアウトを更に含み、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数及び前記再送タイムアウトを取得し、前記処理決定部は、前記再送制御が適用される前記パケットと共に、対応する前記再送タイムアウトの情報を前記送信部に出力するパケット再送制御装置。請求項4に記載のパケット再送制御装置であって、前記受信部は、前記再送制御が適用される前記パケットに対する前記確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、当該パケットが属するフローに対応付けられた前記再送タイムアウトを前記算出された往復遅延時間に基いて更新するパケット再送制御装置。請求項5に記載のパケット再送制御装置であって、前記フローテーブルは、外部のコントローラから変更可能であり、前記外部のコントローラによって、前記再送タイムアウトの更新は、フロー毎に、強制的に有効化あるいは無効化されるパケット再送制御装置。請求項1乃至6のいずれか一項に記載のパケット再送制御装置であって、前記再送管理パラメータは、前記遅延超過回数を含み、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記遅延超過回数を取得し、前記遅延超過回数が超過回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、前記遅延超過回数が前記超過回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止するパケット再送制御装置。請求項7に記載のパケット再送制御装置であって、更に、前記下位レイヤからパケットを受信する受信部を備え、前記受信部は、前記再送制御が適用される前記パケットに対する確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、前記算出された往復遅延時間が前記許容時間を超過している場合、前記受信部は、前記フローテーブルにおいて当該パケットが属するフローに対応付けられた前記遅延超過回数を増加させるパケット再送制御装置。請求項1乃至8のいずれか一項に記載のパケット再送制御装置であって、更に、フロー管理部を備え、前記フロー管理部は、前記フローテーブル中の前記再送管理パラメータを時間経過とともに減少させる、あるいは、前記再送制御が適用される度に、前記再送制御が適用される前記パケットが属するフローに対応付けられた前記再送管理パラメータを減少させるパケット再送制御装置。請求項1乃至9のいずれか一項に記載のパケット再送制御装置であって、前記フローテーブルは、外部のコントローラから参照及び変更可能であるパケット再送制御装置。請求項1乃至9のいずれか一項に記載のパケット再送制御装置であって、前記フローテーブルは、外部のコントローラから変更可能であり、前記外部のコントローラによって、前記再送制御は、フロー毎に、前記再送管理パラメータに拘わらず強制的に有効化あるいは無効化されるパケット再送制御装置。請求項1乃至11のいずれか一項に記載のパケット再送制御装置であって、前記フローテーブルの変更内容は、前記パケット再送制御装置から外部のコントローラに通知されるパケット再送制御装置。上位レイヤから入力されたパケットの再送制御を行うパケット再送制御方法であって、前記上位レイヤからパケットを受け取ることと、フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することとを含み、前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも1つを再送管理パラメータとして含み、前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、前記適用可否を決定することは、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することとを含むパケット再送制御方法。上位レイヤから入力されたパケットの再送制御を行うパケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが記録された記録媒体であって、前記パケット再送制御処理は、前記上位レイヤからパケットを受け取ることと、フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することとを含み、前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも1つを再送管理パラメータとして含み、前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、前記適用可否を決定することは、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することとを含む記録媒体。添付図面を参照して、本発明の実施の形態を説明する。1.概要図1は、本実施の形態に係る通信ネットワークシステムを示している。通信ネットワークシステムは、ネットワーク4と複数の通信装置5を備えている。複数の通信装置5は、ネットワーク4を介して互いに接続されている。ネットワーク4は、複数の通信装置5の間で通信されるパケットを転送する。ネットワーク4では、ルータやスイッチに例示される複数の伝送装置が伝送線路によって相互に接続されている。ネットワーク4は、予め定められた転送経路に沿って、あるいはパケットに含まれる宛先情報に従って、パケットを適切な宛先に転送する。ネットワーク4では、電磁ノイズやトラヒックの輻輳などの要因により、転送中のパケットの消失が発生する可能性がある。各々の通信装置5は、他の通信装置5との間でネットワーク4を介してパケットの送受信を行う。各々の通信装置5は、再送制御装置1、上位レイヤ処理部2、及び下位レイヤ処理部3を備えている。上位レイヤ処理部2は、トランスポート層またはアプリケーション層の処理を行う。トランスポート層のプロトコルは、TCPやUDPUserDatagramProtocolなどである。アプリケーション層のプロトコルは、HTTPHyperTextTransferProtocolやSMTPSimpleMailTransferProtocolなどである。本実施の形態では、上位レイヤ処理部2が生成もしくは終端するパケットを、他種のパケットと区別するために、通常パケット10と呼ぶ。再送制御装置1は、上位レイヤ処理部2から通常パケット10を受け取る。そして、再送制御装置1は、上位レイヤ処理部2から入力された通常パケット10に再送制御処理を施し、それを送信パケット11として下位レイヤ処理部3に送信する。また、再送制御装置1は、下位レイヤ処理部3から受信パケット12を受け取る。その受信パケット12が確認応答ACKである場合、再送制御装置1は、その確認応答を終端する。その受信パケット12が通常パケット10を含んでいる場合、再送制御装置1は、当該通常パケット10を上位レイヤ処理部2に転送するとともに、確認応答を生成して送信側に返信する。再送制御装置1については、後に詳細に説明する。下位レイヤ処理部3は、物理層とリンク層の処理を行う。物理層とリンク層のプロトコルは、イーサネットなどである。下位レイヤ処理部3は、再送制御装置1から入力された送信パケット11を、所定の手順に従ってネットワーク4に送信する。また、下位レイヤ処理部3は、ネットワーク4から受信した受信パケット12を再送制御装置1に出力する。図2は、本実施の形態に係る再送制御装置1の概要を示すブロック図である。本実施の形態に係る再送制御装置1は、処理決定部20、送信部21、受信部24、及びフローテーブル27を備えている。フローテーブル27は、再送制御装置1が扱うフロー通信フローに関する情報を示す。より詳細には、フローテーブル27は、フロー毎に再送管理情報を示している。フローとは、一連のパケットの集合である。フローの単位は、通信装置、ユーザ、リンク、搬送波の周波数、コネクション、セッション、アプリケーション等である。各フローは、フロー識別子により識別可能である。フロー識別子は、例えば、MACフレームの宛先送信元アドレス、VLANタグ、タイプや、IPInternetProtocolパケットの送信元宛先アドレス、プロトコル番号、TCP/UDP送信元宛先ポート番号、などの一部または全てである。一方、再送管理情報は、再送制御装置1による再送制御処理を管理するための情報である。再送管理情報の例として、パケット再送回数、遅延超過回数、再送タイムアウトRTOなどが挙げられる。パケット再送回数は、該当フローに属するパケットが再送された回数である。遅延超過回数とは、該当フローに属するパケットに関する往復遅延時間RTTが許容時間を超過した回数である。往復遅延時間は、あるパケットの送信時刻からそのパケットに対する確認応答の受信時刻までの時間である。本実施の形態によれば、フローテーブル27において、このような再送管理情報がフロー毎に別々に管理されている。処理決定部20は、上位レイヤ処理部2から通常パケット10を受け取る。上位レイヤ処理部2から通常パケット10を受け取ると、処理決定部20は、フローテーブル27を参照し、当該通常パケット10に対する再送制御の適用可否を決定する。より詳細には、処理決定部20は、フローテーブル27を参照し、当該通常パケット10が属するフローに対応付けられている再送管理パラメータを取得する。本実施の形態において、再送管理パラメータは、上述のパケット再数回数及び遅延超過回数のうち少なくとも1つを含む。その再送管理パラメータが閾値以内である場合、処理決定部20は、当該通常パケット10に対して再送制御を適用することを決定する。一方、その再送管理パラメータが閾値を超えている場合、処理決定部20は、当該通常パケット10に対する再送制御の適用を中止する。一例として、再送管理パラメータがパケット再送回数である場合を考える。処理決定部20は、上位レイヤ処理部2から通常パケット10を受け取ると、フローテーブル27を参照し、当該通常パケット10が属するフローに対応付けられているパケット再送回数を取得する。そのパケット再送回数が再送回数閾値以内である場合、処理決定部20は、当該通常パケット10に対して再送制御を適用することを決定する。一方、そのパケット再送回数が再送回数閾値を超えている場合、処理決定部20は、当該通常パケット10に対する再送制御の適用を中止する。このように、再送回数が所定の閾値を超過した場合、そのフローに属する以降のパケットについて再送制御が無効化される。従って、対向の通信装置5が再送制御の能力を持たない場合に、パケット再送が過剰に繰り返されて通信効率が低下するといった現象が防止される。送信部21は、再送制御が適用される通常パケット10を処理決定部20から受け取る。そして、送信部21は、当該通常パケット10を再送バッファ51に蓄積し、また、当該通常パケット10を下位レイヤ処理部3に向けて出力する。受信部24は、下位レイヤ処理部3から受信パケット12を受信する。再送バッファ51に蓄積された通常パケット10に対する確認応答を受信部24が再送タイムアウト以内に受信しない場合、送信部21は、再送処理を行う。その再送処理において、送信部21は、再送バッファ51に蓄積された通常パケット10を下位レイヤ処理部3に再送し、また、フローテーブル27において当該再送パケットが属するフローに対応付けられたパケット再送回数を増加させる。フローテーブル27の再送管理情報は、再送タイムアウトを含んでいてもよい。すなわち、再送タイムアウトが、フロー毎に別々に設定されていてもよい。その場合、処理決定部20は、上位レイヤ処理部2から通常パケット10を受け取ると、フローテーブル27を参照し、当該通常パケット10が属するフローに対応付けられているパケット再送回数及び再送タイムアウトを取得する。そして、処理決定部20は、再送制御が適用される通常パケット10と共に、対応する再送タイムアウトの情報を送信部21に出力する。送信部21は、フロー毎に設定された再送タイムアウトに基いて、再送処理を実施する。フロー毎に独立した再送タイムアウトが用いられるため、フローによって往復遅延時間が異なる場合であっても、パケット再送が効率的に実施される。すなわち、パケット再送までの待ち時間を減少させ、通信効率を向上させることが可能となる。他の例として、再送管理パラメータが遅延超過回数である場合を考える。処理決定部20は、上位レイヤ処理部2から通常パケット10を受け取ると、フローテーブル27を参照し、当該通常パケット10が属するフローに対応付けられている遅延超過回数を取得する。その遅延超過回数が超過回数閾値以内である場合、処理決定部20は、当該通常パケット10に対して再送制御を適用することを決定する。一方、その遅延超過回数が超過回数閾値を超えている場合、処理決定部20は、当該通常パケット10に対する再送制御の適用を中止する。このように、往復遅延時間RTTが長すぎるフローが存在し、遅延超過回数が所定の閾値を超過した場合、そのフローに属する以降のパケットについて再送制御が無効化される。従って、往復遅延時間が再送バッファで吸収できる時間を超えている場合に、再送バッファのオーバフローによって再送制御の機能不全が発生するといった事態が防止される。受信部24は、下位レイヤ処理部3から受信パケット12を受信する。その受信パケット12が、再送制御が適用された通常パケット10に対する確認応答ACKである場合、受信部24は、該当フローに関する往復遅延時間当該通常パケット10の送信時刻から当該確認応答の受信時刻までの時間を算出する。算出された往復遅延時間が許容時間を超過している場合、受信部24は、フローテーブル27において該当フローに対応付けられている遅延超過回数を増加させる。また、受信部24は、フローテーブル27において該当フローに対応付けられている再送タイムアウトを、算出された往復遅延時間に基いて更新してもよい。以上に説明されたように、本実施の形態によれば、下位層でパケット再送制御を行う場合の機能不全を未然に防止することが可能となる。2.再送制御装置1の構成例2-1.全体構成図3は、本実施の形態に係る再送制御装置1の構成を示すブロック図である。再送制御装置1は、処理決定部20、送信部21、多重部22、分離部23、受信部24、多重部25、フロー管理部26、及びフローテーブル27を備えている。処理決定部20は、上位レイヤ処理部2から入力された通常パケット10について再送制御の適用可否を判定する。処理決定部20は、上位レイヤ処理部2から受け取った通常パケット10から、フローを識別するための情報を抽出し、その情報をフロー識別子30としてフロー管理部26に出力する。フロー識別子30は、例えば、MACフレームの宛先送信元アドレス、VLANタグ、タイプや、IPInternetProtocolパケットの送信元宛先アドレス、プロトコル番号、TCP/UDP送信元宛先ポート番号、などの一部または全てである。処理決定部20は、フロー識別子30に対応する再送タイムアウト31、再送回数32及び遅延超過回数33をフロー管理部26から受け取る。そして、処理決定部20は、再送回数32が所定の再送回数閾値を超えているか否かと、遅延超過回数33が所定の超過回数閾値を超えているか否か、を判定する。再送回数32と遅延超過回数33のいずれかが閾値を超えていれば、処理決定部20は、処理中の通常パケット10が再送制御の適用対象でないと判断し、その通常パケット10を多重部22に転送する。一方、再送回数32と遅延超過回数33の両方が閾値を超えていなければ、処理決定部20は、処理中の通常パケット10が再送制御の適用対象であると判断し、その通常パケット10を再送タイムアウト31と共に送信部21に出力する。送信部21は、再送制御の適用対象となった通常パケット10に対して送信処理を行って、カプセル化パケット34を生成する。カプセル化パケット34は、通常パケット10に、再送制御に必要な情報を付与したものである。送信部21については、後に詳細に説明する。多重部22は、処理決定部20から受け取る通常パケット10、送信部21から受け取るカプセル化パケット34、受信部24から受け取るACK確認応答パケット35をパケット単位に多重し、それを下位レイヤ処理部3に送信パケット11として出力する。尚、カプセル化パケット34とACKパケット35は、再送制御装置1によって生成もしくは終端されるパケットである。分離部23は、下位レイヤ処理部3から受信パケット12を受信する。分離部23は、受信パケット12の種別に応じて、受信パケット12を受信部24または多重部25に振り分ける。具体的には、受信パケット12が通常パケット10の場合、分離部23は、その受信パケット12を多重部25に出力する。また、受信パケット12がカプセル化パケット34またはACKパケット35の場合、分離部23は、その受信パケット12を受信部24に出力する。受信部24は、分離部23から受け取るカプセル化パケット34とACKパケット35を終端する。また、受信部24は、カプセル化パケット34から抽出される通常パケット10を多重部25に出力するとともに、ACKパケット35を生成して、そのACKパケット35を多重部22に出力する。受信部24については、後に詳細に説明する。多重部25は、分離部23と受信部24から受け取る通常パケット10をパケット単位に多重して、それを上位レイヤ処理部2に出力する。フロー管理部26は、フローテーブル27を管理する。フロー管理部26は、処理決定部20、送信部21、及び受信部24からの要求に従って、フローテーブル27にアクセスする。フロー管理部26については、後に詳細に説明する。2-2.フロー管理部26及びフローテーブル272-2-1.フローテーブル27図4は、本実施の形態におけるフローテーブル27を概念的に示している。フローテーブル27は、0個以上のフローエントリ40を有している。各フローエントリ40は、再送制御装置1が通信中の各フローに対応しており、対応するフローに関する情報を示す。具体的には、各フローエントリ40は、フロー識別子30、再送タイムアウト31、再送回数32、遅延超過回数33、最終アクセス時刻41、及び遅延統計情報42を含んでいる。これらの情報が、再送管理情報である。再送タイムアウト31は、該当フローに属する通常パケット10に適用される再送タイムアウトの下限値である。例えば、あるフローエントリ40の再送タイムアウト31が49.123マイクロ秒の場合、そのフローエントリ40に対応するフローに属する通常パケット10に実際に適用される再送タイムアウトは、49.123マイクロ秒以上になる。実際の再送タイムアウトが49.123マイクロ秒丁度になるとは限らない理由は、後述される再送バッファ51の待ちキュー52の個数が有限であり、実際の再送タイムアウトが離散的になるからである。再送回数32は、該当フローに属する通常パケット10が再送された回数の累計である。遅延超過回数33は、往復遅延時間36が所定の閾値を超えた回数の累計である。往復遅延時間36は、該当フローに属するカプセル化パケット34の送信時刻と対応するACKパケット35の受信時刻の差である。再送バッファ51のオーバフローを避けるため、その所定の閾値は、再送バッファ51が許容できる往復遅延時間以下であることが望ましい。最終アクセス時刻41は、フロー管理部26が該当フローエントリ40に最後にアクセスした時刻である。このアクセスは、フローエントリ40の参照操作と更新操作の両方を含む。例外的に、後述されるフローテーブル27のクリーンナップ実行中は、最終アクセス時刻41は更新されない。最終アクセス時刻41は、長時間アクセスの無いフローエントリ40をフローテーブル27から削除する際に使用される。遅延統計情報42は、往復遅延時間36に関する統計情報を収容する。遅延統計情報42は、往復遅延時間36の履歴平均値偏差分散などであり、再送タイムアウト31の算出の際に参照更新される。遅延統計情報42に含まれる情報は、再送タイムアウト31の算出アルゴリズムによって決まる。例えば、TCPの再送タイムアウト算出アルゴリズムであるIETFRFC2988ComputingTCP’sRetransmissionTimer規格は、再送タイムアウト算出の際に往復遅延時間36の平均値と平均偏差を用いる。従って、例えば、このアルゴリズムが採用される場合は、遅延統計情報42に往復遅延時間36の平均値と平均偏差が含まれる。2-2-2.フロー管理部26フロー管理部26は、処理決定部20、送信部21、受信部24とインタフェースする。また、フロー管理部26は、フローテーブル27を定期的にクリーンナップする。<処理決定部20とのインタフェース>フロー管理部26は、処理決定部20からフロー識別子30を受け取ると、次の2つの処理を順に行う。1つ目の処理は、フローテーブル27を検索し、フロー識別子30に対応するフローエントリ40の内容の一部を処理決定部20に出力することである。具体的には、フロー管理部26は、フローテーブル27を検索し、処理決定部20から受け取ったフロー識別子30と同一のフロー識別子30を持つフローエントリ40がフローテーブル27に存在するか否かを判定する。検索に成功した場合、フロー管理部26は、当該フローエントリ40の再送タイムアウト31と再送回数32、遅延超過回数33を処理決定部20に出力する。一方、検索に失敗した場合、フロー管理部26は、処理決定部20から受け取ったフロー識別子30に対応する新しいフローエントリ40を、フローテーブル27に追加する。この際、フロー管理部26は、新しいフローエントリ40の内容を初期化する。再送回数32と遅延超過回数33の初期値は0である。再送タイムアウト31の初期値は、再送バッファ51が許容できる往復遅延時間以下であることが望ましい。遅延統計情報42は、再送タイムアウト31の算出アルゴリズムに応じて適切に初期化される。その後、フロー管理部26は、新しいフローエントリ40の再送タイムアウト31、再送回数32、及び遅延超過回数33を、処理決定部20に出力する。2つ目の処理は、処理決定部20から受け取ったフロー識別子30に対応するフローエントリ40の再送回数32から所定の値を減算し、また、そのフローエントリ40の遅延超過回数33から所定の値を減算することである。例えば、フロー管理部26は、再送回数32から0.2を引き、遅延超過回数33から0.1を引く。減算の結果、値が負になる場合は、減算結果は0に補正される。ただし、再送回数32が所定の閾値を超えているか、または、遅延超過回数33が所定の閾値を超えている場合、これらの減算処理は実施されない。これら所定の閾値は、処理決定部20でのものと同一である。2つ目の処理の目的は、次の通りである。偶発的なパケット消失や往復遅延時間の超過が繰り返されると、本来であれば再送制御を適用すべきフローの再送回数32と遅延超過回数33がいつかは閾値を超過してしまい、そのフローについて再送制御が誤って非適用にされることが考えられる。このような事態を防ぐために、上位レイヤ処理部2から通常パケット10が再送制御装置1に入力されるたびに、その通常パケット10が属するフローに対応するフローエントリ40の再送回数32及び遅延超過回数33が減少させられる。<送信部21とのインタフェース>フロー管理部26は、送信部21からフロー識別子30を受け取ると、フローテーブル27を検索し、そのフロー識別子30と同一のフロー識別子30を持つフローエントリ40がフローテーブル27に存在するか否かを判定する。検索に失敗した場合、フロー管理部26は何もしない。検索に成功した場合、フロー管理部26は、該当フローエントリ40の再送回数32を1だけ増加させる。<受信部24とのインタフェース>フロー管理部26は、受信部24からフロー識別子30と往復遅延時間36を受け取ると、フローテーブル27を検索し、そのフロー識別子30と同一のフロー識別子30を持つフローエントリ40がフローテーブル27に存在するか否かを判定する。検索に失敗した場合、フロー管理部26は何もしない。検索に成功した場合、フロー管理部26は、次の2つの処理を行う。1つ目の処理は、該当フローエントリ40の再送タイムアウト31を、往復遅延時間36を用いて更新することである。この際、該当フローエントリ40の遅延統計情報42が、必要に応じて参照更新されてもよい。往復遅延時間36と遅延統計情報42から適切な再送タイムアウト31を推定する方法としては、先に挙げたIETFRFC2988ComputingTCP’sRetransmissionTimerなどがある。2つ目の処理は、往復遅延時間36が、再送バッファ51が許容できる往復遅延時間を超えている場合、該当フローエントリ40の遅延超過回数33を1だけ増加させることである。<フローテーブル27のクリーンナップ>フロー管理部26は、フローテーブル27を定期的にクリーンナップする。具体的には、フロー管理部26は、フローテーブル27の全てのフローエントリ40のそれぞれについて、次の2つの処理を行う。1つ目の処理は、フローエントリ40の最終アクセス時刻41と現在時刻の差からアイドル時間を求め、アイドル時間が所定の閾値を超えていれば、そのフローエントリ40をフローテーブル27から削除することである。1つ目の処理の目的は、長時間アクセスの無いフローエントリ40をフローテーブル27から削除することで、フローテーブル27の空きを確保することである。2つ目の処理は、フローエントリ40の再送回数32から所定の値を減算し、また、フローエントリ40の遅延超過回数33から所定の値を減算することである。減算の結果、値が負になる場合は、減算結果は0に補正される。ただし、再送回数32が所定の閾値を超えているか、または、遅延超過回数33が所定の閾値を超えている場合、これらの減算処理は実施されない。これら所定の閾値は処理決定部20でのものと同一である。2つ目の処理の目的は、次の通りである。偶発的なパケット消失や往復遅延時間の超過が繰り返されると、本来であれば再送制御を適用すべきフローの再送回数32と遅延超過回数33がいつかは閾値を超過してしまい、そのフローについて再送制御が誤って非適用にされることが考えられる。このような事態を防ぐために、時間経過とともに、各フローエントリ40の再送回数32及び遅延超過回数33が減少させられる。2-3.送信部21図5は、再送制御装置1の送信部21の構成例を示している。送信部21は、待ち時間リスト50、再送バッファ51、パケット識別子生成部53、カプセル化部54、及びフロー識別子生成部55を備えている。再送バッファ51は、M個Mは自然数の待ちキュー52-1~52-Mを備えている。2-3-1.待ち時間リスト50図6は、待ち時間リスト50の例を示している。待ち時間リスト50は、待ちキュー52-1~52-Mのそれぞれの待ち時間70-1~70-Mを示す。待ち時間リスト50内の待ち時間70-X1≦X≦Mは、再送バッファ51内のX番目の待ちキュー52-Xの待ち時間である。待ち時間70は、待ちキュー52ごとに異なっている。送信部21は、処理決定部20から通常パケット10と再送タイムアウト31を受け取ると、待ち時間リスト50を参照して、待ち時間70-Y≧再送タイムアウト31の関係を満たす最小の待ち時間70-Y1≦Y≦Mを選ぶ。この選択されたYを、待ちキュー番号60とする。待ちキュー番号60は、処理決定部20から入力された通常パケット10の格納先となる待ちキュー52を特定する。つまり、通常パケット10は再送バッファ51内のY番目の待ちキュー52-Yに格納される。言い換えれば、通常パケット10は、フロー毎に設定される再送タイムアウト31に応じた適切な待ちキュー52-Yに格納される。例えば、処理決定部20から入力された再送タイムアウト31が111マイクロ秒である場合を考える。この場合、図6で示された待ち時間リスト50によれば、待ちキュー番号60は3となる。従って、処理決定部20から入力された通常パケット10は、待ちキュー52-3に格納される。2-3-2.再送バッファ51再送バッファ51は、再送制御装置1がACKパケット35を受け取るまでに通常パケット10を一時的に保管するための記憶領域である。再送バッファ51は、M個Mは自然数の物理的もしくは論理的な待ちキュー52-1~52-Mを含んでいる。図7は、待ちキュー52の構成例を示している。待ちキュー52は、0個以上のキューエントリ80を有するFIFOFirst-InFirst-Out型のキューである。待ちキュー52-X1≦X≦Mは、自身に追加されたキューエントリ80を待ち時間70-Xだけ待機させる。待ちキュー52の先頭のキューエントリ80が最も古く、末尾のキューエントリ80が最も新しい。待ちキュー52の各キューエントリ80は、上位レイヤ処理部2から再送制御装置1に入力された通常パケット10のひとつひとつに対応しており、対応する通常パケット10に関する情報を示す。具体的には、各キューエントリ80は、パケット識別子37、通常パケット10、及び再送回数81を含んでいる。パケット識別子37は、上位レイヤ処理部2から再送制御装置1に入力された通常パケット10を識別するための情報である。パケット識別子37は、例えば、TCPのシーケンス番号、アドレス61、フロー識別子30、などの一部または全てである。アドレス61は、通常パケット10に対応するキューエントリ80が格納されている待ちキュー52のメモリアドレスである。キューエントリ80の通常パケット10は、上位レイヤ処理部2から再送制御装置1に入力された通常パケット10のうち、再送制御の適用対象となったものである。キューエントリ80の再送回数81は、そのキューエントリ80の通常パケット10を含むカプセル化パケット34が再送された回数の累計である。送信部21は、待ちキュー番号60が確定すると、待ちキュー52-YYは待ちキュー番号60に新しいキューエントリ80を追加する。この時点では新しいキューエントリ80の内容は設定されない。その後、新しいキューエントリ80が格納された待ちキュー52-Yのメモリアドレスが、アドレス61としてパケット識別子生成部53に通知される。パケット識別子生成部53によってパケット識別子37が生成されると、送信部21は、新しいキューエントリ80にパケット識別子37と処理中の通常パケット10を登録する。また、送信部21は、新しいキューエントリ80の再送回数81を1に初期化する。送信部21は、待ちキュー52-X1≦X≦Mに追加されてから待ち時間70-Xが経過したキューエントリ80について、次の処理つまり再送を行う。送信部21は、当該キューエントリ80のパケット識別子37と通常パケット10を、カプセル化部54に出力する。その後、送信部21は、当該キューエントリ80の再送回数81が所定の上限回数に達しているかを判定する。再送回数81が所定の上限回数に達している場合、送信部21は、当該キューエントリ80を待ちキュー52-Xから削除する。再送回数81が所定の上限回数に達していなければ、送信部21は、当該キューエントリ80を待ちキュー52-Xの末尾に移動させる。この操作は、当該キューエントリ80を一旦削除して再度追加することと等価である。再送の事実を記録するため、送信部21は、移動後のキューエントリ80の再送回数81を1だけ増加させる。また、送信部21は、受信部24からパケット識別子37を受け取ると、次の処理を行う。すなわち、送信部21は、そのパケット識別子37と同一のパケット識別子37を持つキューエントリ80を、待ちキュー52-1~52-Mの中から削除する。そのようなキューエントリ80が待ちキュー52-1~52-Mに存在しなかった場合、送信部21は、何もしない。2-3-3.パケット識別子生成部53パケット識別子生成部53は、処理決定部20から入力された通常パケット10と再送バッファ51から受け取ったアドレス61に基いて、パケット識別子37を生成する。そして、パケット識別子生成部53は、そのパケット識別子37を、再送バッファ51とカプセル化部54に出力する。2-3-4.カプセル化部54カプセル化部54は、処理決定部20や再送バッファ51再送時から受け取る通常パケット10とパケット識別子生成部53から受け取るパケット識別子37をもとに、カプセル化パケット34を生成する。そして、カプセル化部54は、生成したカプセル化パケット34を多重部22に出力する。図8は、カプセル化パケット34のフォーマットの一例を示している。カプセル化パケット34は、パケット識別子37、タイムスタンプ38、及び通常パケット10を含んでいる。パケット識別子37は、パケット識別子生成部53から受け取ったものである。通常パケット10は、処理決定部20あるいは再送バッファ51再送時から受け取ったものである。タイムスタンプ38には現在時刻が代入される。このタイムスタンプ38は往復遅延時間36の計測に使用される。ここで、生成されるカプセル化パケット34が重複する情報を含んでいる場合、その冗長な情報を省略し、カプセル化パケット34の長さを短縮することが通信効率の観点で好ましい。例えば、上位レイヤ処理部2がタイムスタンプを通常パケット10の中に含めている場合、カプセル化パケット34のタイムスタンプ38は省略されてもよい。また、カプセル化パケット34の通常パケット10の送信元宛先アドレスの情報がパケット識別子37にも含まれている場合、パケット識別子37の当該情報は省略されてもよい。2-3-5.フロー識別子生成部55フロー識別子生成部55は、再送バッファ51から通常パケット10を受け取ると、その通常パケット10からフロー識別子30を抽出する。そして、フロー識別子生成部55は、そのフロー識別子30をフロー管理部26に出力する。このフロー識別子30は、対応するフローエントリ40の再送回数32を増加させるために使用される。2-4.受信部24図9は、再送制御装置1の受信部24の構成例を示している。受信部24は、脱カプセル部90、ACK生成部91、ACK終端部92、及び遅延計算部93を備えている。2-4-1.脱カプセル部90脱カプセル部90は、分離部23からカプセル化パケット34を受け取る。脱カプセル部90は、受け取ったカプセル化パケット34から、パケット識別子37、タイムスタンプ38及び通常パケット10を取り出す。その後、脱カプセル部90は、通常パケット10を多重部25に出力する。また、脱カプセル部90は、パケット識別子37、タイムスタンプ38及び通常パケット10を、ACK生成部91に出力する。2-4-2.ACK生成部91ACK生成部91は、脱カプセル部90から受け取った情報をもとにACKパケット35を生成し、そのACKパケット35を多重部22に出力する。具体的には、ACK生成部91は、脱カプセル部90からパケット識別子37、タイムスタンプ38及び通常パケット10を受け取ると、次の2つの処理を順に行う。1つ目の処理は、通常パケット10からフローを識別するための情報、すなわちフロー識別子30を抽出することである。2つ目の処理は、フロー識別子30とパケット識別子37、タイムスタンプ38をもとにACKパケット35を生成し、そのACKパケット35を多重部22に出力することである。図10は、ACKパケット35のフォーマットの一例を示している。ACKパケット35は、フロー識別子30、パケット識別子37、及びタイムスタンプ38を含んでいる。フロー識別子30は、1つ目の処理で抽出されたものである。パケット識別子37及びタイムスタンプ38としては、脱カプセル部90から受け取ったパケット識別子37とタイムスタンプ38がそれぞれ用いられる。ここで、生成されるACKパケット35が重複する情報を含んでいる場合、その冗長な情報を省略し、ACKパケット35の長さを短縮することが通信効率の観点で好ましい。例えば、ACKパケット35のフロー識別子30とパケット識別子37の両方が送信元宛先アドレスの情報を含んでいる場合、どちらか片方の当該情報が省略されてもよい。2-4-3.ACK終端部92ACK終端部92は、分離部23からACKパケット35を受け取る。ACK終端部92は、受け取ったACKパケット35から、フロー識別子30、パケット識別子37及びタイムスタンプ38を取り出す。その後、ACK終端部92は、パケット識別子37を送信部21に出力する。送信部21に送られるパケット識別子37は、対応するキューエントリ80を待ちキュー52から削除するために使用される。また、ACK終端部92は、フロー識別子30とタイムスタンプ38を遅延計算部93に出力する。2-4-4.遅延計算部93遅延計算部93は、ACK終端部92からフロー識別子30とタイムスタンプ38を受け取ると、タイムスタンプ38と現在時刻の差から往復遅延時間36を算出する。そして、遅延計算部93は、その往復遅延時間36とフロー識別子30をフロー管理部26に出力する。3.処理フロー3-1.パケット送信時の処理フロー図11A及び図11Bは、再送制御装置1が、上位レイヤ処理部2から入力された通常パケット10を下位レイヤ処理部3に送信する際のフローチャートである。再送制御装置1は、上位レイヤ処理部2からの通常パケット10の入力を待つステップS100。処理決定部20は、ステップS100で入力された通常パケット10からフロー識別子30を抽出するステップS101。フロー管理部26は、フローテーブル27を検索し、ステップS101で抽出されたフロー識別子30と同一のフロー識別子30を持つフローエントリ40がフローテーブル27に存在するか否かを判定するステップS102。存在する場合ステップS103;Yes、処理はステップS105に進み、存在しない場合ステップS103;No、処理はステップS104に進む。ステップS104において、フロー管理部26は、ステップS101で抽出されたフロー識別子30に対応する新しいフローエントリ40をフローテーブル27に追加する。この際、フロー管理部26は、新しいフローエントリ40の内容を初期化する。その後、処理はステップS105に進む。ステップS105において、フロー管理部26は、ステップS101で抽出されたフロー識別子30に対応するフローエントリ40から、再送タイムアウト31、再送回数32及び遅延超過回数33を読み出す。続いて、処理決定部20は、再送回数32と遅延超過回数33のそれぞれを所定の閾値と比較し、処理中の通常パケット10に再送制御を適用すべきか否かを判定するステップS106。再送回数32と遅延超過回数33のいずれかが閾値を超えている場合ステップS106;Yes、処理中の通常パケット10は再送制御の適用対象ではない。この場合、処理はステップS107に進む。ステップS107において、処理決定部20は、通常パケット10を多重部22経由で下位レイヤ処理部3に出力する。このステップS107は最終ステップの1つである。一方、再送回数32と遅延超過回数33の両方が閾値を超えていない場合ステップS106;No、処理中の通常パケット10は再送制御の適用対象である。この場合、処理はステップS108に進む。ステップS108において、フロー管理部26は、ステップS101で抽出されたフロー識別子30に対応するフローエントリ40の再送回数32と遅延超過回数33のそれぞれから所定の値を減算する。減算の結果、値が負になる場合は、減算結果は0に補正される。また、送信部21は、待ち時間リスト50を参照して、待ち時間70-Y≧ステップS105で読み出された再送タイムアウト31の関係を満たす最小の待ち時間70-Yを選び、そのYを待ちキュー番号60とするステップS109。続いて、送信部21は、待ちキュー52-Yに新しいキューエントリ80を追加するステップS110。送信部21のパケット識別子生成部53は、パケット識別子37を生成するステップS111。送信部21は、ステップS110で追加されたキューエントリ80に、処理中の通常パケット10とステップS111で生成されたパケット識別子37を格納するとともに、そのキューエントリ80の再送回数81を1に初期化するステップS112。送信部21のカプセル化部54は、ステップS111で生成されたパケット識別子37と処理中の通常パケット10をもとにカプセル化パケット34を生成し、それを多重部22経由で下位レイヤ処理部3に出力するステップS113。この際、カプセル化部54は、カプセル化パケット34のタイムスタンプ38に現在時刻をセットする。このステップS113は最終ステップの1つである。3-2.パケット再送時の処理フロー図12は、再送制御装置1が、再送バッファ51の待ちキュー52内のキューエントリ80の満了を契機としてパケット再送を行う際のフローチャートである。送信部21は、待ちキュー52-X1≦X≦Mに追加されてから待ち時間70-Xが経過したキューエントリ80が出現するまで、すなわち、キューエントリ80が満了するまで待つステップS200。送信部21は、ステップS200で満了したキューエントリ80から、通常パケット10、パケット識別子37、及び再送回数81を読み出すステップS201。ステップS201の後、ステップS202~S204、ステップS205、及びステップS206~S207が実施される。尚、ステップS202~S204、ステップS205、及びステップS206~S207は並列に実行されてもよい。<ステップS202~S204>送信部21は、ステップS201で読み出された再送回数81が所定の上限回数に達しているか否かを判定するステップS202。再送回数81が上限回数に達している場合ステップS202;Yes、送信部21は、満了したキューエントリ80を待ちキュー52から削除するステップS203。ステップS203は最終ステップの1つである。一方、再送回数81が上限回数に達していない場合ステップS202;No、送信部21は、満了したキューエントリ80を待ちキュー52の末尾に移動させ、移動後のキューエントリ80の再送回数81を1だけ増加させるステップS204。ステップS204は最終ステップの1つである。<ステップS205>送信部21のカプセル化部54は、ステップS201で読み出された通常パケット10とパケット識別子37をもとに、カプセル化パケット34を生成する。そして、カプセル化部54は、生成したカプセル化パケット34を多重部22経由で下位レイヤ処理部3に出力する。この際、カプセル化部54は、カプセル化パケット34のタイムスタンプ38に現在時刻をセットする。ステップS205は最終ステップの1つである。<ステップS206~S207>送信部21のフロー識別子生成部55は、ステップS201で読み出された通常パケット10からフロー識別子30を抽出するステップS206。フロー管理部26は、ステップS206で抽出されたフロー識別子30に対応するフローエントリ40の再送回数32を1だけ増加させるステップS207。このステップS207は最終ステップの1つである。3-3.パケット受信時の処理フロー図13A及び図13Bは、再送制御装置1が、下位レイヤ処理部3から受信パケット12を受け取る際のフローチャートである。再送制御装置1は、下位レイヤ処理部3からの受信パケット12の入力を待つステップS300。受信パケット12が入力されると、分離部23は、その受信パケット12の種別を判定するステップS301。受信パケット12が通常パケット10の場合、ステップS302が実施される。受信パケット12がカプセル化パケット34の場合、ステップS303~S306が実施される。受信パケット12がACKパケット35の場合、ステップS307~S311が実施される。<ステップS302:通常パケットの場合>分離部23は、ステップS300で入力された受信パケット12通常パケット10を、多重部25経由で上位レイヤ処理部2に出力する。このステップS302は最終ステップの1つである。<ステップS303~S306:カプセル化パケット34の場合>受信部24の脱カプセル部90は、ステップS300で入力された受信パケット12カプセル化パケット34から、パケット識別子37、タイムスタンプ38、及び通常パケット10を取り出すステップS303。ステップS303の後、ステップS304、及びステップS305~S306が実行される。尚、ステップS304とステップS305~S306は並列に実行されてもよい。ステップS304において、脱カプセル部90は、ステップS303で取り出された通常パケット10を、多重部25経由で上位レイヤ処理部2に出力する。このステップS304は最終ステップの1つである。ステップS305において、ACK生成部91は、ステップS303で取り出された通常パケット10からフロー識別子30を抽出する。ステップS306において、ACK生成部91は、抽出されたフロー識別子30と、ステップS303で取り出されたパケット識別子37とタイムスタンプ38をもとに、ACKパケット35を生成する。そして、ACK生成部91は、そのACKパケット35を、多重部22経由で下位レイヤ処理部3に出力する。このステップS306は最終ステップの1つである。<ステップS307~S311:ACKパケット35の場合>受信部24のACK終端部92は、ステップS300で入力された受信パケット12ACKパケット35から、フロー識別子30、パケット識別子37、及びタイムスタンプ38を取り出すステップS307。ステップS307の後、ステップS308、及びステップS309~S311が実行される。尚、ステップS308とステップS309~S311は並列に実行されてもよい。ステップS308において、送信部21は、ステップS307で取り出されたパケット識別子37と同一のパケット識別子37を持つキューエントリ80を、待ちキュー52-1~52-Mの中から削除する。このステップS308は最終ステップの1つである。ステップS309において、受信部24の遅延計算部93は、ステップS307で取り出されたタイムスタンプ38と現在時刻の差から往復遅延時間36を算出する。ステップS309の後、ステップS310とステップS311が実行される。尚、ステップS310とステップS311は並列に実行されてもよい。ステップS310において、フロー管理部26は、ステップS307で取り出されたフロー識別子30に対応するフローエントリ40の再送タイムアウト31を、ステップS309で算出された往復遅延時間36を用いて更新する。このステップS310は最終ステップの1つである。ステップS311において、フロー管理部26は、ステップS309で算出された往復遅延時間36が、再送バッファ51が許容できる往復遅延時間を超えているか否かを判定する。その往復遅延時間36が許容時間を超えている場合、フロー管理部26は、ステップS307で取り出されたフロー識別子30に対応するフローエントリ40の遅延超過回数33を1だけ増加させる。このステップS311は最終ステップの1つである。3-4.クリーンナップ時の処理フロー図14は、再送制御装置1のフロー管理部26が定期的に実施する、フローテーブル27のクリーンナップの際のフローチャートである。フロー管理部26は、フローテーブル27中の全てのフローエントリ40の各々について、次のループ処理を実行する。フロー管理部26は、対象のフローエントリ40の最終アクセス時刻41と現在時刻の差からアイドル時間を算出するステップS400。そして、フロー管理部26は、算出されたアイドル時間が所定の閾値を超過しているか判定するステップS401。アイドル時間が所定の閾値を超過している場合ステップS401;Yes、フロー管理部26は、対象のフローエントリ40をフローテーブル27から削除するステップS402。このステップS402は、ループ処理の最終ステップの1つである。一方、アイドル時間が所定の閾値を超過していない場合ステップS401;No、処理はステップS403に進む。ステップS403において、フロー管理部26は、対象のフローエントリ40の再送回数32と遅延超過回数33のそれぞれを所定の閾値と比較し、当該フローエントリ40に対応するフローに再送制御が適用されているか否かを判定する。再送回数32と遅延超過回数33のいずれかが閾値を超えている場合、すなわち、そのフローに再送制御が適用されていない場合ステップS403;Yes、ループ処理は終了する。一方、再送回数32と遅延超過回数33の両方が閾値を超えていない場合、すなわち、そのフローに再送制御が適用されている場合ステップS403;No、処理はステップS404に進む。ステップS404において、フロー管理部26は、対象のフローエントリ40の再送回数32と遅延超過回数33のそれぞれから所定の値を減算する。減算の結果、値が負になる場合、減算結果は0に補正される。ステップS404は、ループ処理の最終ステップの1つである。4.他の構成例本実施の形態に係る再送制御装置1は、PCPersonalComputer等の情報処理装置に適用可能である。図15は、再送制御装置1が情報処理装置に適用された場合の構成を示している。図15に示されるように、再送制御装置1は、データ処理装置200と記憶装置201を備えている。記憶装置201として、RAMRandomAccessMemoryやHDDHardDiskDriveが例示される。記憶装置201には、フローテーブル27、待ち時間リスト50、再送バッファ51、再送バッファ51中のM個Mは自然数の待ちキュー52-1~52-M、などが格納される。データ処理装置200は、CPUCentralProcessingUnitを含む。データ処理装置200は、処理決定部220、送信部221、多重部222、分離部223、受信部224、多重部225、及びフロー管理部226を備えている。処理決定部220、送信部221、多重部222、分離部223、受信部224、多重部225、及びフロー管理部226は、それぞれ、前述の処理決定部20と送信部21、多重部22、分離部23、受信部24、多重部25、及びフロー管理部26と同様である。尚、データ処理装置200が備えるこれら機能ブロックは、データ処理装置200がパケット再送制御プログラムを実行することによって実現される。パケット再送制御プログラムは、データ処理装置200によって実行されるコンピュータプログラムであり、記憶装置201に格納される。パケット再送制御プログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。5.効果第1の効果は、対向の通信装置が再送制御の能力を持たない場合に、パケットの再送が過剰に繰り返されて通信効率が低下する現象を回避できることである。その理由は、パケットを再送した回数をフロー毎に記録し、その再送回数が所定の閾値を超過すると、そのフローに属する以降のパケットについて再送制御を無効化するからである。第2の効果は、送信元と複数の宛先の間の往復遅延時間が互いに異なっている状況において、再送までの待ち時間を減少させ、通信効率を向上させられることである。その理由は、フロー毎に往復遅延時間を計測し、その往復遅延時間をもとにフロー毎に適切な再送タイムアウトを算出し、パケットを再送する際にそのパケットに対応するフローの再送タイムアウトを用いるからである。第3の効果は、ある送信元と宛先の間の往復遅延時間が再送バッファで吸収できる時間を超えている場合に、再送バッファのオーバフローによる再送制御の機能不全を防止できることである。その理由は、フロー毎に往復遅延時間を計測し、遅延超過回数が所定の閾値を超過すると、そのフローに属する以降のパケットについて再送制御を無効化するからである。6.変形例図16は、本発明の実施の形態の変形例を示すブロック図である。本変形例によれば、再送制御装置1のフローテーブル27の内容は、外部のコントローラ300から参照及び変更書き換え、追加、削除が可能である。より詳細には、本変形例に係る再送制御装置1は、外部のコントローラ300と通信可能なコントローラ通信部28を更に備えている。コントローラ通信部28は、コントローラ300からのテーブル参照要求に応じて、フローテーブル27中の指定された内容を読み出し、当該内容をコントローラ300に返送する。また、コントローラ通信部28は、コントローラ300からのテーブル変更要求に応じて、フローテーブル27中の指定された内容を変更書き換え、追加、削除する。また、コントローラ通信部28は、フローテーブル27の内容に変更が有った場合、その旨をコントローラ300に通知する。図17は、本変形例におけるフローテーブル27の一例を示す概念図である。各フローエントリ40は、既出の図4で示された情報に加えて、更に制御モード45及び再送タイムアウト設定46を再送管理情報として含んでいる。あるいは、制御モード45及び再送タイムアウト設定46のうちいずれか一方だけが、各フローエントリ40に追加されていてもよい。コントローラ300は、これら制御モード45あるいは再送タイムアウト設定46を適宜変更することができる。以下、制御モード45及び再送タイムアウト設定46のそれぞれの使用方法を説明する。制御モード45は、自律制御、強制無効及び強制有効の3値を取る。自律制御の場合は、上述の実施の形態と同じである。すなわち、再送制御装置1による再送制御機能は、再送回数32や遅延超過回数33に基いて自律的に有効化/無効化される。強制無効の場合、再送制御装置1による再送制御機能は、再送回数32や遅延超過回数33に拘わらず、強制的に無効化される。強制有効の場合、再送制御装置1による再送制御機能は、再送回数32や遅延超過回数33に拘わらず、強制的に有効化される。コントローラ300は、制御モード45の内容を自由に設定、変更することができる。具体的には、コントローラ300は、ある対象フローに関する制御モード45の設定変更を指示するテーブル変更要求を、対象の再送制御装置1に送る。当該再送制御装置1のコントローラ通信部28は、当該テーブル変更要求に従って、当該対象フローに対応するフローエントリ40の制御モード45の内容を設定する。パケット送信時、再送制御装置1の処理決定部20は、該当フローエントリ40の制御モード45も参照する。制御モード45が自律制御の場合、処理決定部20は、既出の実施の形態と同じように動作する図11A、図11B参照。制御モード45が強制無効の場合、処理決定部20は、再送回数32や遅延超過回数33に拘わらず、ステップS107図11B参照を実行する。制御モード45が強制有効の場合、処理決定部20は、再送回数32や遅延超過回数33に拘わらず、ステップS108~S113図11B参照を実行する。再送タイムアウト設定46は、自律制御及び強制固定の2値を取る。自律制御の場合は、上述の実施の形態と同じである。すなわち、既出の図13BのステップS310で説明されたように、フローエントリ40の再送タイムアウト31は、往復遅延時間36に基いて自律的に更新される。一方、強制固定の場合、ステップS310は実施されず、再送タイムアウト31の値はそのまま維持される。コントローラ300は、再送タイムアウト設定46の内容を自由に設定、変更することができる。具体的には、コントローラ300は、ある対象フローに関する再送タイムアウト設定46の設定変更を指示するテーブル変更要求を、対象の再送制御装置1に送る。当該再送制御装置1のコントローラ通信部28は、当該テーブル変更要求に従って、当該対象フローに対応するフローエントリ40の再送タイムアウト設定46の内容を設定する。尚、フローエントリ40の再送タイムアウト31の値も、コントローラ300によって設定され得る。パケット受信時、再送制御装置1のフロー管理部26は、該当フローエントリ40の再送タイムアウト設定46も参照する。再送タイムアウト設定46が自律制御の場合、フロー管理部26は、既出の実施の形態と同様に、ステップS310図13B参照を実行する。一方、再送タイムアウト設定46が強制固定の場合、フロー管理部26は、ステップS310をスキップし、再送タイムアウト31の値を維持する。その他、コントローラ300は、新規のフローエントリ40の追加を指示するテーブル変更要求を、対象の再送制御装置1に送ってもよい。また、コントローラ300は、既存のフローエントリ40の削除を指示するテーブル変更要求を、対象の再送制御装置1に送ってもよい。また、再送制御装置1によって、フローエントリ40が自律的に追加された場合ステップS104;図11A参照や、フローエントリ40が自律的に削除された場合ステップS402;図14参照、コントローラ通信部28は、その旨をコントローラ300に通知する。また、再送制御装置1によって再送制御機能が自律的に無効化された場合、すなわち、ステップS207図12参照の実行後にフローエントリ40の再送回数32が初めて閾値を超えたときや、ステップS311図13B参照の実行後にフローエントリ40の遅延超過回数33が初めて閾値を超えたとき、コントローラ通信部28は、その旨をコントローラ300に通知する。本変形例による効果は、次の通りである。再送制御機能を有効にすべきでない通信区間例えば、データセンタと外界との間の通信区間、データセンタ間の通信区間が既知である場合は多い。このとき、その通信区間に関して再送制御機能をあらかじめ無効化しておくことによって、自律制御の過程で発生する無駄な再送パケットを抑制することができる。また、往復遅延時間RTTの最大値が予測できている通信経路に関しては、再送タイムアウト31をその最大値にあらかじめ設定しておくことにより、再送タイムアウト31が最適値に収束するまでの時間を短縮することができる。以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。付記1上位レイヤから入力されたパケットの再送制御を行うパケット再送制御装置であって、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示すフローテーブルと、前記フローテーブルを参照することによって、前記パケットに対する前記再送制御の適用可否を決定する処理決定部とを備え、前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも1つを再送管理パラメータとして含み、前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得し、前記再送管理パラメータが閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、前記再送管理パラメータが前記閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止するパケット再送制御装置。付記2付記1に記載のパケット再送制御装置であって、前記再送管理パラメータは、前記パケット再送回数を含み、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数を取得し、前記パケット再送回数が再送回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、前記パケット再送回数が前記再送回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止するパケット再送制御装置。付記3付記2に記載のパケット再送制御装置であって、前記再送制御が適用される前記パケットを前記処理決定部から受け取り、前記受け取ったパケットを再送バッファに蓄積し、また、前記受け取ったパケットを下位レイヤに出力する送信部と、前記下位レイヤからパケットを受信する受信部とを更に備え、前記受信部が前記再送バッファに蓄積されたパケットに対する確認応答を再送タイムアウト以内に受信しない場合、前記送信部は、再送処理を行い、前記再送処理において、前記送信部は、前記再送バッファに蓄積されたパケットを前記下位レイヤに再送し、また、前記フローテーブルにおいて当該再送パケットが属するフローに対応付けられた前記パケット再送回数を増加させるパケット再送制御装置。付記4付記3に記載のパケット再送制御装置であって、前記再送タイムアウトは、フロー毎に決定され、前記再送管理情報は、フロー毎に決定された前記再送タイムアウトを更に含み、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数及び前記再送タイムアウトを取得し、前記処理決定部は、前記再送制御が適用される前記パケットと共に、対応する前記再送タイムアウトの情報を前記送信部に出力するパケット再送制御装置。付記5付記4に記載のパケット再送制御装置であって、前記受信部は、前記再送制御が適用される前記パケットに対する前記確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、当該パケットが属するフローに対応付けられた前記再送タイムアウトを前記算出された往復遅延時間に基いて更新するパケット再送制御装置。付記6付記5に記載のパケット再送制御装置であって、前記フローテーブルは、外部のコントローラから変更可能であり、前記外部のコントローラによって、前記再送タイムアウトの更新は、フロー毎に、強制的に有効化あるいは無効化されるパケット再送制御装置。付記7付記1乃至6のいずれか一項に記載のパケット再送制御装置であって、前記再送管理パラメータは、前記遅延超過回数を含み、前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記遅延超過回数を取得し、前記遅延超過回数が超過回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、前記遅延超過回数が前記超過回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止するパケット再送制御装置。付記8付記7に記載のパケット再送制御装置であって、更に、前記下位レイヤからパケットを受信する受信部を備え、前記受信部は、前記再送制御が適用される前記パケットに対する確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、前記算出された往復遅延時間が前記許容時間を超過している場合、前記受信部は、前記フローテーブルにおいて当該パケットが属するフローに対応付けられた前記遅延超過回数を増加させるパケット再送制御装置。付記9付記1乃至8のいずれか一項に記載のパケット再送制御装置であって、更に、フロー管理部を備え、前記フロー管理部は、前記フローテーブル中の前記再送管理パラメータを時間経過とともに減少させる、あるいは、前記再送制御が適用される度に、前記再送制御が適用される前記パケットが属するフローに対応付けられた前記再送管理パラメータを減少させるパケット再送制御装置。付記10付記1乃至9のいずれか一項に記載のパケット再送制御装置であって、前記フローテーブルは、外部のコントローラから参照及び変更可能であるパケット再送制御装置。付記11付記1乃至9に記載のパケット再送制御装置であって、前記フローテーブルは、外部のコントローラから変更可能であり、前記外部のコントローラによって、前記再送制御は、フロー毎に、前記再送管理パラメータに拘わらず強制的に有効化あるいは無効化されるパケット再送制御装置。付記12付記1乃至11のいずれか一項に記載のパケット再送制御装置であって、前記フローテーブルの変更内容は、前記パケット再送制御装置から外部のコントローラに通知されるパケット再送制御装置。付記13上位レイヤから入力されたパケットの再送制御を行うパケット再送制御方法であって、前記上位レイヤからパケットを受け取ることと、フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することとを含み、前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも1つを再送管理パラメータとして含み、前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、前記適用可否を決定することは、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することとを含むパケット再送制御方法。付記14上位レイヤから入力されたパケットの再送制御を行うパケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムであって、前記パケット再送制御処理は、前記上位レイヤからパケットを受け取ることと、フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することとを含み、前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも1つを再送管理パラメータとして含み、前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、前記適用可否を決定することは、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することとを含むパケット再送制御プログラム。本出願は、2010年3月15日に出願された日本国特許出願2010-057381及び2010年11月4日に出願された日本国特許出願2010-247902を基礎とする優先権を主張し、その開示の全てをここに取り込む。