(57)【要約】  下位層再送制御手段は、次の処理を行う。送信パケットを送出する際、送出順を示すシーケンス番号を送信パケットに付与する。パケットとして受け取った受信装置から、当該受信パケットのシーケンス番号を示すＡＣＫパケットを受け取る。受け取ったＡＣＫパケットのシーケンス番号を参照することにより、ＡＣＫパケットをシーケンス番号の順番で受け取っているか否かを判定する。第１〜第３送信パケットを送信し、第１ＡＣＫパケットを受け取り、第１ＡＣＫパケットの次に第２ＡＣＫパケットを受け取ることなく第３ＡＣＫパケットを受け取った場合、高速再送制御処理を実行する。詳細には、第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに第２ＡＣＫパケットを受け取るか否かを判定する。高速再送判定期間に第２ＡＣＫパケットを受け取らない場合、第２送信パケットを再送する。
2011108480.tif 000002
【特許請求の範囲】
【請求項１】
パケット再送制御を行うネットワークプロトコルスタックと、
前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行う下位層再送制御手段と
を備え、
前記下位層再送制御手段は、送信パケットを送出する際、送出順を示すシーケンス番号を前記送信パケットに付与し、
前記下位層再送制御手段は、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すＡＣＫパケットを受け取り、
前記下位層再送制御手段は、前記受け取ったＡＣＫパケットの前記シーケンス番号を参照することによって、前記ＡＣＫパケットを前記シーケンス番号の順番で受け取っているか否かを判定し、
第１送信パケットに対する前記ＡＣＫパケットは、第１ＡＣＫパケットであり、
前記第１送信パケットの次に送出される第２送信パケットに対する前記ＡＣＫパケットは、第２ＡＣＫパケットであり、
前記第２送信パケットの後に送出される第３送信パケットに対する前記ＡＣＫパケットは、第３ＡＣＫパケットであり、
前記第１ＡＣＫパケットを受け取り、前記第１ＡＣＫパケットの次に前記第２ＡＣＫパケットを受け取ることなく前記第３ＡＣＫパケットを受け取った場合、前記下位層再送制御手段は、高速再送制御処理を実行し、
前記高速再送制御処理において、前記下位層再送制御手段は、前記第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに前記第２ＡＣＫパケットを受け取るか否かを判定し、
前記高速再送判定期間に前記第２ＡＣＫパケットを受け取らない場合、前記下位層再送制御手段は、前記第２送信パケットを再送する
パケット再送制御システム。
【請求項２】
請求項１に記載のパケット再送制御システムであって、
送信パケット情報が格納される記憶装置を更に備え、
前記送信パケット情報は、前記送信パケット毎に、前記シーケンス番号及び送信時刻を示し、
前記下位層再送制御手段は、前記ＡＣＫパケットを受け取ると前記送信パケット情報を参照し、前記受け取ったＡＣＫパケットと同じ前記シーケンス番号を有する前記送信パケットの前記送信時刻を取得し、
前記下位層再送制御手段は、前記取得した送信時刻と前記受け取ったＡＣＫパケットの受信時刻とに基いて、前記受け取ったＡＣＫパケットに関するＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）を算出し、
前記高速再送判定期間は、前記ＲＴＴに依存する
パケット再送制御システム。
【請求項３】
請求項２に記載のパケット再送制御システムであって、
前記ＲＴＴの範囲は、ＲＴＴｍｉｎ〜ＲＴＴｍａｘで定義され、
前記下位層再送制御手段は、前記送信パケット情報を参照することによって、前記第２送信パケットと前記第３送信パケットとの間の前記送信時刻の差Δを算出し、
前記下位層再送制御手段は、前記高速再送判定期間を、ＲＴＴｍａｘ−ＲＴＴｍｉｎ−Δに設定する
パケット再送制御システム。
【請求項４】
請求項３に記載のパケット再送制御システムであって、
前記算出されたＲＴＴが前記ＲＴＴｍａｘより大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘを前記算出されたＲＴＴに更新し、
前記算出されたＲＴＴが前記ＲＴＴｍｉｎより小さい場合、前記下位層再送制御手段は、前記ＲＴＴｍｉｎを前記算出されたＲＴＴに更新する
パケット再送制御システム。
【請求項５】
請求項３に記載のパケット再送制御システムであって、
前記下位層再送制御手段は、前記算出されたＲＴＴを所定の閾値と比較し、
前記算出されたＲＴＴが前記所定の閾値より大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘ及び前記ＲＴＴｍｉｎを更新することなく、前記受け取ったＡＣＫパケットと同じ前記シーケンス番号を有する前記送信パケットを解放し、
前記算出されたＲＴＴが前記所定の閾値以下であり、且つ、前記ＲＴＴｍａｘより大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘを前記算出されたＲＴＴに更新し、
前記算出されたＲＴＴが前記ＲＴＴｍｉｎより小さい場合、前記下位層再送制御手段は、前記ＲＴＴｍｉｎを前記算出されたＲＴＴに更新する
パケット再送制御システム。
【請求項６】
請求項３に記載のパケット再送制御システムであって、
前記下位層再送制御手段は、前記受け取ったＡＣＫパケットの送信元毎に、前記ＲＴＴの平均値を算出し、
前記算出された平均値が前記ＲＴＴｍａｘより大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘを前記算出された平均値に更新し、
前記算出された平均値が前記ＲＴＴｍｉｎより小さい場合、前記下位層再送制御手段は、前記ＲＴＴｍｉｎを前記算出された平均値に更新する
パケット再送制御システム。
【請求項７】
請求項３乃至６のいずれか一項に記載のパケット再送制御システムであって、
特定の条件が満たされた場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘ及び前記ＲＴＴｍｉｎをリセットする
パケット再送制御システム。
【請求項８】
請求項１乃至７のいずれか一項に記載のパケット再送制御システムであって、
送信装置と、
前記受信装置と
を具備し、
前記送信装置と前記受信装置の各々が、前記ネットワークプロトコルスタックと前記下位層再送制御手段とを備え、
前記送信装置の前記下位層再送制御手段が、前記受信装置に対する前記送信パケットの送出を行い、
前記受信装置の前記下位層再送制御手段が、前記送信装置に対する前記ＡＣＫパケットの返信を行う
パケット再送制御システム。
【請求項９】
ネットワークプロトコルスタックによってパケット再送制御を行うことと、
前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことと
を含み、
前記下位層においてパケット再送制御を行うことは、
送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、
前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すＡＣＫパケットを受け取ることと
を含み、
第１送信パケットに対する前記ＡＣＫパケットは、第１ＡＣＫパケットであり、
前記第１送信パケットの次に送出される第２送信パケットに対する前記ＡＣＫパケットは、第２ＡＣＫパケットであり、
前記第２送信パケットの後に送出される第３送信パケットに対する前記ＡＣＫパケットは、第３ＡＣＫパケットであり、
前記下位層においてパケット再送制御を行うことは、更に、
前記受け取ったＡＣＫパケットの前記シーケンス番号を参照することによって、前記ＡＣＫパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、
前記第１ＡＣＫパケットを受け取り、前記第１ＡＣＫパケットの次に前記第２ＡＣＫパケットを受け取ることなく前記第３ＡＣＫパケットを受け取った場合、高速再送制御処理を実行することと
を含み、
前記高速再送制御処理は、
前記第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに前記第２ＡＣＫパケットを受け取るか否かを判定することと、
前記高速再送判定期間に前記第２ＡＣＫパケットを受け取らない場合、前記第２送信パケットを再送することと
を含む
パケット再送制御方法。
【請求項１０】
パケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが記録された記録媒体であって、
前記パケット再送制御処理は、パケット再送制御を行うネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことを含み、
前記下位層においてパケット再送制御を行うことは、
送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、
前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すＡＣＫパケットを受け取ることと
を含み、
第１送信パケットに対する前記ＡＣＫパケットは、第１ＡＣＫパケットであり、
前記第１送信パケットの次に送出される第２送信パケットに対する前記ＡＣＫパケットは、第２ＡＣＫパケットであり、
前記第２送信パケットの後に送出される第３送信パケットに対する前記ＡＣＫパケットは、第３ＡＣＫパケットであり、
前記下位層においてパケット再送制御を行うことは、更に、
前記受け取ったＡＣＫパケットの前記シーケンス番号を参照することによって、前記ＡＣＫパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、
前記第１ＡＣＫパケットを受け取り、前記第１ＡＣＫパケットの次に前記第２ＡＣＫパケットを受け取ることなく前記第３ＡＣＫパケットを受け取った場合、高速再送制御処理を実行することと
を含み、
前記高速再送制御処理は、
前記第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに前記第２ＡＣＫパケットを受け取るか否かを判定することと、
前記高速再送判定期間に前記第２ＡＣＫパケットを受け取らない場合、前記第２送信パケットを再送することと
を含む
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信における「パケット再送制御（ｐａｃｋｅｔ  ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ）」に関する。特に、本発明は、パケット再送制御機能を有するプロトコルよりも下位層においてもパケット再送制御を行う場合の技術に関する。
【背景技術】
【０００２】
トランスポート層におけるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）の役割の１つは、パケット通信の信頼性を確保することである。パケット通信の信頼性を確保するための技術として、ＴＣＰのパケット再送制御が知られている。【０００３】
具体的には、送信装置は受信装置にパケットを送信し、受信装置は、パケットを受信するとＡＣＫパケット（確認応答（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）パケット）を送信装置に返信する。このＡＣＫパケットをもって、送信装置は、送出パケットが受信装置に無事到達したことを認識する。しかしながら、例えば送信装置と受信装置との間のネットワークでパケットが廃棄された場合、送信装置は、当該パケットに対するＡＣＫパケットを受け取らない。パケット送出後、所定の待ち時間以内にＡＣＫパケットを受け取らない場合、送信装置は、当該パケットを受信装置に再度送信する。尚、上記所定の待ち時間は、再送タイムアウト（ＲＴＯ：  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅ  Ｏｕｔ）と呼ばれている。【０００４】
非特許文献１によれば、トランスポート層よりも下位のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層において、パケット再送制御が実施される。その理由は次の通りである。例として、データセンター内のネットワークのような、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）が非常に短いネットワークを考える。このようなネットワークでは、再送タイムアウトをマイクロ秒レベルにまで短縮することにより、ＦＣＴ（Ｆｌｏｗ  Ｃｏｍｐｌｅｔｉｏｎ  Ｔｉｍｅ）を減少させ、通信効率を向上させることができる。しかしながら、一般的にＴＣＰはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に実装されているため、ＴＣＰによるパケット再送制御では、再送タイムアウトをマイクロ秒レベルまで短縮できない。例えば、Ｌｉｎｕｘにおける単位時間（Ｊｉｆｆｉｅｓ）は１０ミリ秒であるため、Ｌｉｎｕｘの標準的なＴＣＰでは再送タイムアウトを１０ミリ秒未満に短縮できない。このような問題を解決するために、非特許文献１によれば、ＭＡＣ層においてパケット再送制御を実施し、それにより、再送タイムアウトを短縮する。【０００５】
また、ＴＣＰは、ＲＴＯによるパケット再送制御よりも高速な「高速再送（Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ）制御」の機能も有する。図１を参照して、ＴＣＰの高速再送制御を説明する。送信装置は、パケットＰＫＴ１〜ＰＫＴ５を順番に送信する。受信装置は、パケットＰＫＴ１の受信に応答して、ＡＣＫパケットＡＣＫ１を返信する。次のパケットＰＫＴ２を受信すると、受信装置は、そのシーケンス番号から当該受信パケットＰＫＴ２がＩｎ−Ｏｒｄｅｒパケットであることを認識し、次のＡＣＫパケットＡＣＫ２を返信する。ここで、パケットＰＫＴ３が廃棄されたとする。受信装置は、パケットＰＫＴ４、ＰＫＴ５を受信するが、それらのシーケンス番号から、当該受信パケットがＯｕｔ−ｏｆ−Ｏｒｄｅｒパケットであると判断する。この場合、受信装置は、前回のＡＣＫパケットＡＣＫ２を返信する。その結果、送信装置は、同じＡＣＫパケットＡＣＫ２を重複して受け取ることになる。このような重複ＡＣＫパケットを所定回数（例：３回）受け取った場合、送信装置は、パケット廃棄が発生したと判断し、再送タイムアウトを待つことなくパケットＰＫＴ３の再送を行う。これが、ＴＣＰの高速再送制御である。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】高道  透  他，“Ｕｌｔｒａ−Ｈｉｇｈ  Ｓｐｅｅｄ  ＭＡＣ  Ｔｅｃｈｎｏｌｏｇｙ  ｆｏｒ  Ｔｅｒａｂｉｔ−Ｃｌａｓｓ  ＬＡＮ”，電子情報通信学会通信ソサイエティ大会，２００８年
【発明の概要】
【０００７】
非特許文献１のように下位のＭＡＣ層でパケット再送制御を実現するためには、送信したパケットの順番を管理するためのシーケンス番号が必要となる。上位層がＴＣＰであると分かっている場合はＴＣＰのシーケンス番号をそのまま使えばよいが、上位層がＴＣＰ以外のプロトコル、例えばＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）、ＦＣｏＥ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）、もしくはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）である場合には、上位層でシーケンス番号が定義されているとは限らない。そのような場合に下位層でのパケット再送制御を実現するには、下位層専用のシーケンス番号を用いる必要がある。
【０００８】
下位層のシーケンス番号は、送信パケットに対して、その送出順に従って順番に付与される。ここで、下位層のシーケンス番号は、送信パケットの宛先別に独立して付与されるわけではないことに留意されたい。もし、下位層のシーケンス番号を宛先によって別々に付与するとなれば、シーケンス番号の管理、ＲＴＯの管理、パケット再送処理等を、それぞれの宛先に関して独立に実施する必要がある。下位層における処理量及び必要な記憶領域は、宛先の数が増えるにつれて著しく増大してしまい、実用的な処理性能が得られない。
【０００９】
従って、送信装置の下位層は、宛先によらずただ送出順に、連番のシーケンス番号を送信パケットに付与する。受信装置の下位層は、下位層のシーケンス番号が付いたパケットを受信すると、当該シーケンス番号の情報を含む「下位層のＡＣＫパケット」を返信する。送信装置の下位層は、送信済みパケットに対する下位層のＡＣＫパケットを所定のＲＴＯ以内に受け取らない場合、該当パケットの再送を行う。
【００１０】
しかしながら、このような非特許文献１の技術では、ＴＣＰと同様の高速再送制御（図１参照）を、下位層において実現することができない。
【００１１】
例えばＴＣＰの場合、シーケンス番号は宛先別に割り当てられる。この場合、各宛先の受信装置は、シーケンス番号を参照することによって、受信パケットがＩｎ−ＯｒｄｅｒパケットかＯｕｔ−ｏｆ−Ｏｒｄｅｒパケットかを判別することができるため、図１で示された高速再送制御が可能となる。一方、下位層のシーケンス番号は、宛先によらずに、パケット送出順に順番に割り当てられる。この場合、各宛先の受信装置は、下位層のシーケンス番号を参照しても、受信パケットがＩｎ−ＯｒｄｅｒパケットかＯｕｔ−ｏｆ−Ｏｒｄｅｒパケットかを判別できるとは限らない。すなわち、図１で示されたような高速再送制御は、下位層においては正常に機能しない。
【００１２】
本発明の１つの目的は、上位のネットワークプロトコルスタックよりも下位層において、ＲＴＯによらない高速再送制御を実現することにある。
【００１３】
本発明の１つの観点において、パケット再送制御システムが提供される。パケット再送制御システムは、パケット再送制御を行うネットワークプロトコルスタックと、ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行う下位層再送制御手段と、を備える。下位層再送制御手段は、送信パケットを送出する際、送出順を示すシーケンス番号を送信パケットに付与する。下位層再送制御手段は、送信パケットを受信パケットとして受け取った受信装置から、当該受信パケットのシーケンス番号を示すＡＣＫパケットを受け取る。下位層再送制御手段は、受け取ったＡＣＫパケットのシーケンス番号を参照することによって、ＡＣＫパケットをシーケンス番号の順番で受け取っているか否かを判定する。第１送信パケットに対するＡＣＫパケットは、第１ＡＣＫパケットである。第１送信パケットの次に送出される第２送信パケットに対するＡＣＫパケットは、第２ＡＣＫパケットである。第２送信パケットの後に送出される第３送信パケットに対するＡＣＫパケットは、第３ＡＣＫパケットである。第１ＡＣＫパケットを受け取り、第１ＡＣＫパケットの次に第２ＡＣＫパケットを受け取ることなく第３ＡＣＫパケットを受け取った場合、下位層再送制御手段は、高速再送制御処理を実行する。その高速再送制御処理において、下位層再送制御手段は、第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに第２ＡＣＫパケットを受け取るか否かを判定する。高速再送判定期間に第２ＡＣＫパケットを受け取らない場合、下位層再送制御手段は、第２送信パケットを再送する。
【００１４】
本発明の他の観点において、パケット再送制御方法が提供される。そのパケット再送制御方法は、ネットワークプロトコルスタックによってパケット再送制御を行うことと、ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことと、を含む。下位層においてパケット再送制御を行うことは、（１）送信パケットを送出する際に、送出順を示すシーケンス番号を送信パケットに付与することと、（２）送信パケットを受信パケットとして受け取った受信装置から、当該受信パケットのシーケンス番号を示すＡＣＫパケットを受け取ることと、を含む。第１送信パケットに対するＡＣＫパケットは、第１ＡＣＫパケットである。第１送信パケットの次に送出される第２送信パケットに対するＡＣＫパケットは、第２ＡＣＫパケットである。第２送信パケットの後に送出される第３送信パケットに対するＡＣＫパケットは、第３ＡＣＫパケットである。下位層においてパケット再送制御を行うことは、更に、（３）受け取ったＡＣＫパケットのシーケンス番号を参照することによって、ＡＣＫパケットをシーケンス番号の順番で受け取っているか否かを判定することと、（４）第１ＡＣＫパケットを受け取り、第１ＡＣＫパケットの次に第２ＡＣＫパケットを受け取ることなく第３ＡＣＫパケットを受け取った場合、高速再送制御処理を実行することと、を含む。高速再送制御処理は、第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに第２ＡＣＫパケットを受け取るか否かを判定することと、高速再送判定期間に第２ＡＣＫパケットを受け取らない場合、第２送信パケットを再送することと、を含む。
【００１５】
本発明の更に他の観点において、パケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが提供される。パケット再送制御処理は、パケット再送制御を行うネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことを含む。下位層においてパケット再送制御を行うことは、（１）送信パケットを送出する際に、送出順を示すシーケンス番号を送信パケットに付与することと、（２）送信パケットを受信パケットとして受け取った受信装置から、当該受信パケットのシーケンス番号を示すＡＣＫパケットを受け取ることと、を含む。第１送信パケットに対するＡＣＫパケットは、第１ＡＣＫパケットである。第１送信パケットの次に送出される第２送信パケットに対するＡＣＫパケットは、第２ＡＣＫパケットである。第２送信パケットの後に送出される第３送信パケットに対するＡＣＫパケットは、第３ＡＣＫパケットである。下位層においてパケット再送制御を行うことは、更に、（３）受け取ったＡＣＫパケットのシーケンス番号を参照することによって、ＡＣＫパケットをシーケンス番号の順番で受け取っているか否かを判定することと、（４）第１ＡＣＫパケットを受け取り、第１ＡＣＫパケットの次に第２ＡＣＫパケットを受け取ることなく第３ＡＣＫパケットを受け取った場合、高速再送制御処理を実行することと、を含む。高速再送制御処理は、第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに第２ＡＣＫパケットを受け取るか否かを判定することと、高速再送判定期間に第２ＡＣＫパケットを受け取らない場合、第２送信パケットを再送することと、を含む。
【００１６】
本発明によれば、上位のネットワークプロトコルスタックよりも下位層において、ＲＴＯによらない高速再送制御を実現することが可能となる。
【図面の簡単な説明】
【００１７】
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。【００１８】
【図１】図１は、ＴＣＰの高速再送制御を説明するための概念図である。
【図２】図２は、本発明の実施の形態に係るパケット再送制御システムを概略的に示すブロック図である。
【図３】図３は、本発明の実施の形態における送信パケットのヘッダを示す概念図である。
【図４】図４は、本発明の実施の形態におけるＡＣＫパケットのヘッダを示す概念図である。
【図５】図５は、本発明の実施の形態に係る送受信装置の構成例を示すブロック図である。
【図６】図６は、本発明の実施の形態におけるパケット送出処理を示すフローチャートである。
【図７】図７は、本発明の実施の形態における送信パケット情報を示す概念図である。
【図８】図８は、本発明の実施の形態におけるタイムアウト再送制御処理を示すフローチャートである。
【図９】図９は、本発明の実施の形態におけるパケット受信処理を示すフローチャートである。
【図１０】図１０は、本発明の実施の形態における高速再送制御処理を説明するための図である。
【図１１】図１１は、本発明の実施の形態における高速再送制御情報を示す概念図である。
【図１２】図１２は、本発明の実施の形態におけるＡＣＫパケット受信処理の第１の例を示すフローチャートである。
【図１３】図１３は、本発明の実施の形態における高速再送制御処理を示すフローチャートである。
【図１４】図１４は、本発明の実施の形態におけるＡＣＫパケット受信処理の第２の例を示すフローチャートである。
【図１５】図１５は、本発明の実施の形態におけるＡＣＫパケット受信処理の第３の例を示すフローチャートである。
【図１６】図１６は、本発明の実施の形態における平均値情報を示す概念図である。
【図１７】図１７は、本発明の実施の形態におけるＡＣＫパケット受信処理の第４の例を示すフローチャートである。
【図１８】図１８は、本発明の実施の形態におけるＡＣＫパケット受信処理の第６の例を示すフローチャートである。
【図１９】図１９は、本発明の実施の形態に係る送受信装置の変形例を示すブロック図である。
【発明を実施するための形態】
【００１９】
添付図面を参照して、本発明の実施の形態を説明する。
【００２０】
１．構成
図２は、本実施の形態に係るパケット再送制御システムを概略的に示すブロック図である。パケット再送制御システムは、送信装置１−１と受信装置１−２とを備えている。送信装置１−１と受信装置１−２は、ネットワークを介して互いに接続されている。送信装置１−１は、送信パケット（ＰＫＴ）を受信装置１−２に送信する。受信装置１−２は、送信装置１−１からの送信パケットを受信パケットとして受け取り、その受信パケットに応じたＡＣＫパケットを送信装置１−１に送信する。
【００２１】
本実施の形態によれば、上位層（例：ＴＣＰ層）だけでなく、その上位層よりも下位の下位層（例：ＭＡＣ層）においても、パケット再送制御が実施される。下位層でのパケット再送制御のために、「下位層のシーケンス番号」が用いられる。以下、特に断りがない限り、下位層のシーケンス番号は、単に「シーケンス番号」と参照される。送信装置１−１の下位層は、宛先によらずただ送出順に、連番のシーケンス番号を送信パケットに付与する。つまり、シーケンス番号は、宛先に依存せず、ただ単に、送信パケットの送出順を示す。受信装置１−２の下位層は、シーケンス番号が付いた受信パケットを受信すると、当該シーケンス番号を示す「下位層のＡＣＫパケット」を送信装置１−１に返信する。以下、特に断りがない限り、下位層のＡＣＫパケットは、単に「ＡＣＫパケット」と参照される。
【００２２】
図３は、送信パケットのヘッダを示す概念図である。送信パケットのヘッダは、フィールドＥ１１〜Ｅ１６を含んでいる。フィールドＥ１１は、宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）を示す。フィールドＥ１２は、送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）を示す。フィールドＥ１３は、Ｅｔｈｅｒｎｅｔ（登録商標）タイプを示す。フィールドＥ１４は、３１ビットの下位層のシーケンス番号を示す。フィールドＥ１５は、当該パケットがＡＣＫパケットか否かを示す１ビットのＡＣＫフラグを示す。送信パケットの場合、ＡＣＫフラグは“０”にセットされる。フィールドＥ１６は、ＩＰヘッダ等の上位層のヘッダを示す。尚、送信パケットが下位層でのパケット再送制御の対象ではない場合、下位層シーケンス番号とＡＣＫフラグは付与されない。
【００２３】
図４は、ＡＣＫパケットのヘッダを示す概念図である。ＡＣＫパケットのヘッダは、フィールドＥ２１〜Ｅ２６を含んでいる。フィールドＥ２１は、宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）を示す。フィールドＥ２２は、送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）を示す。フィールドＥ２３は、Ｅｔｈｅｒｎｅｔ（登録商標）タイプを示す。フィールドＥ２４は、３１ビットの下位層のシーケンス番号を示す。フィールドＥ２５は、当該パケットがＡＣＫパケットか否かを示す１ビットのＡＣＫフラグを示す。ＡＣＫパケットの場合、ＡＣＫフラグは“１”にセットされる。フィールドＥ２６は、Ｅｔｈｅｒｎｅｔ（登録商標）Ｐａｄｄｉｎｇを示す。
【００２４】
図５は、本実施の形態に係る送受信装置１（送信装置１−１、受信装置１−２の各々）の構成例を示している。送受信装置１は、プログラム処理装置１０及びネットワークインタフェース装置２０を備えている。
【００２５】
プログラム処理装置１０は、アプリケーションやネットワークプロトコルスタックを処理する。このプログラム処理装置１０は、サーバやＰＣをはじめとするホストのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等により実現される。より詳細には、プログラム処理装置１０は、プログラムを実行することにより実現されるアプリケーション処理部１１及びネットワークプロトコルスタック１２を備えている。
【００２６】
アプリケーション処理部１１は、ネットワーク通信を行うユーザーアプリケーションを処理する。アプリケーション処理部１１は、ネットワークデータの送受信の要求をネットワークプロトコルスタック１２に対して行う。
【００２７】
ネットワークプロトコルスタック１２は、ＣＰＵで動作するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のカーネルプログラムの一部である。ネットワークプロトコルスタック１２は、ＴＣＰ層などの上位層におけるパケット送受信処理及びパケット再送制御を行う。
【００２８】
ネットワークインタフェース装置２０は、例えば、サーバの拡張カードやオンボードで搭載されるＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。ネットワークインタフェース装置２０は、下位層におけるパケット送受信処理及びパケット再送制御を行う。より詳細には、ネットワークインタフェース装置２０は、下位層再送制御部３０及び記憶部４０を備えている。
【００２９】
下位層再送制御部３０は、ネットワークプロトコルスタック１２よりも下位層において、パケット送受信処理及びパケット再送制御を行う。下位層再送制御部３０は、データ送信部３１１、ＲＴＯ再送制御部３１２、高速再送制御部３１３、ＡＣＫ生成部３１４、送信パケット多重部３１５、受信パケット分配部３１６、データ受信部３１７、ＡＣＫ受信部３１８といった機能ブロックを備えている。各機能ブロックによる詳細な処理は、後述される。
【００３０】
記憶部４０は、ネットワークインタフェース装置２０に搭載されるＳＲＡＭやＤＲＡＭ等のメモリである。記憶部４０には、送信パケット情報４１、高速再送制御情報４２等が格納される。各情報の詳細は、後述される。
【００３１】
２．パケット送出処理
送信装置１−１のアプリケーション処理部１１は、送信データをネットワークプロトコルスタック１２に送る。ネットワークプロトコルスタック１２は、送信データをＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）毎に分割する。ネットワークで転送可能なパケットの最大サイズがＭＴＵ（Ｍａｘｉｍｕｍ  Ｔｒａｎｓｆｅｒ  Ｕｎｉｔ）であるとき、ＭＳＳは、「ＭＴＵ−（ＭＡＣヘッダのサイズ）−（下位層ヘッダのサイズ）−（上位プロトコルヘッダのサイズ）」で表される。下位層ヘッダのサイズは、ネットワークプロトコルスタック１２にあらかじめ通知されている。ネットワークプロトコルスタック１２は、ＭＡＣヘッダや上位プロトコルヘッダ（図３参照）を分割後データに付与して送信パケットを生成し、その送信パケットを下位層再送制御部３０に送信する。
【００３２】
図６は、送信装置１−１の下位層再送制御部３０によるパケット送出処理を示すフローチャートである。
【００３３】
ステップＳ１１：
データ送信部３１１は、ネットワークプロトコルスタック１２から送信パケットを受信する。
【００３４】
ステップＳ１２：
データ送信部３１１は、送信パケットに付与すべきシーケンス番号と、前回の送信パケットの送信時刻（タイムスタンプ）を保持している。データ送信部３１１は、それらシーケンス番号及び前回の送信時刻を読み出す。
【００３５】
ステップＳ１３：
データ送信部３１１は、送信パケットの下位層ヘッダ（図３参照）にシーケンス番号を挿入する。そして、データ送信部３１１は、送信パケット多重部３１５に送信パケットを送る。
【００３６】
ステップＳ１４：
データ送信部３１１は、今回の送信パケットに関する情報を、記憶部４０に格納されている送信パケット情報４１に登録する。図７は、送信パケット情報４１の例を示している。図７の例において、送信パケット情報４１は、送信パケットのシーケンス番号、宛先ＭＡＣアドレス及び送信時刻（タイムスタンプ）、差分Δ、送信パケットのデータ本体を示している。ここで、差分Δとは、パケット送信間隔であり、今回の送信パケットと前回の送信パケットとの間のタイムスタンプの差分値を表す。送信パケット情報４１は、対応するＡＣＫパケットが未だ到着していない送信済みパケット毎に、このような情報を示している。
【００３７】
ステップＳ１５：
データ送信部３１１は、シーケンス番号を更新する。具体的には、データ送信部３１１は、送信パケットの宛先とは無関係に、シーケンス番号に１を加算する。つまり、シーケンス番号は、宛先に依存せず、ただ単に、送信パケットの送出順を示す。
【００３８】
ステップＳ１６：
送信パケットは、送信パケット多重部３１５を経由して、外部のネットワークへ送出される。
【００３９】
３．タイムアウト再送制御処理
送信装置１−１の下位層再送制御部３０は、下位層において、ＲＴＯによるパケット再送制御を行う。下位層におけるＲＴＯは、ネットワークプロトコルスタック１２におけるＲＴＯよりも短く設定されている。つまり、下位層再送制御部３０は、ネットワークプロトコルスタック１２よりも短いＲＴＯでタイムアウト再送制御を行う。
【００４０】
図８は、送信装置１−１の下位層再送制御部３０によるタイムアウト再送制御処理を示すフローチャートである。
【００４１】
ステップＳ２１：
ＲＴＯ再送制御部３１２は、記憶部４０に格納されている送信パケット情報４１（図７参照）を参照する。そして、ＲＴＯ再送制御部３１２は、送信済みパケットの送信時刻Ｔｐｋｔを現在時刻Ｔｎｏｗと比較する。
【００４２】
ステップＳ２２：
ＲＴＯ再送制御部３１２は、“Ｔｎｏｗ−Ｔｐｋｔ”が所定のＲＴＯを超過したか否かを判定する。“Ｔｎｏｗ−Ｔｐｋｔ”が所定のＲＴＯを超過した場合（ステップＳ２２；Ｙｅｓ）、ＲＴＯ再送制御部３１２は、次のステップＳ２３を行う。
【００４３】
ステップＳ２３：
ＲＴＯ再送制御部３１２は、送信パケット情報４１から、タイムアウトが発生した送信パケットのデータ本体を読み出す。そして、ＲＴＯ再送制御部３１２は、読みだしたデータ本体を基に再送パケットを生成し、その再送パケットを送信パケット多重部３１５に送る。再送パケットは、送信パケット多重部３１５を経由して、外部のネットワークへ送出される。
【００４４】
ステップＳ２４：
ＲＴＯ再送制御部３１２は、再送した送信パケットに関して、送信パケット情報４１（送信時刻等）を更新する。
【００４５】
４．パケット受信処理
次に、図９を参照して、下位層におけるパケット受信時の処理を説明する。そのパケット受信には、受信装置１−２が送信装置１−１から送られた送信パケットを受信する場合と、送信装置１−１が受信装置１−２から送られたＡＣＫパケットを受信する場合とがある。尚、上位層のＡＣＫパケットは、送信装置１−１の下位層においては、通常のパケットとみなされる。このような上位層のＡＣＫパケットに対する下位層での処理方式は任意であり、ここでは説明を省略する。
【００４６】
ステップＳ３１：
受信パケット分配部３１６は、外部のネットワークからパケットを受信する。
【００４７】
ステップＳ３２：
受信したパケットが下位層ヘッダを有する場合（ステップＳ３２；Ｙｅｓ）、受信パケット分配部３１６は、ステップＳ３３を行う。一方、受信したパケットが下位層ヘッダを有さない場合（ステップＳ３２；Ｎｏ）、受信パケット分配部３１６は、受信したパケットをデータ受信部３１７に送る。
【００４８】
ステップＳ３３：
受信パケット分配部３１６は、下位層ヘッダのＡＣＫフラグを参照して、受信したパケットがＡＣＫパケットか否かを判定する。受信したパケットがＡＣＫパケットの場合（ステップＳ３３；Ｙｅｓ）は、送信装置１−１が受信装置１−２から送られたＡＣＫパケットを受信した場合に相当する。この場合、送信装置１−１の受信パケット分配部３１６は、当該ＡＣＫパケットをＡＣＫ受信部３１８に転送する。その後、処理はステップＳ１００に移行する。このステップＳ１００（ＡＣＫパケット受信処理）に関しては、次の第５節において詳細に説明する。
【００４９】
一方、受信したパケットがＡＣＫパケットではない場合（ステップＳ３３；Ｎｏ）は、受信装置１−２が送信装置１−１から送られた送信パケットを受信した場合に相当する。この場合、受信装置１−１の受信パケット分配部３１６は、当該受信パケットを、データ受信部３１７を介してＡＣＫ生成部３１４に転送する。そして、処理はステップＳ３４に移行する。
【００５０】
ステップＳ３４：
ＡＣＫ生成部３１４は、当該受信パケットから、シーケンス番号と送信元ＭＡＣアドレスを抽出する。
【００５１】
ステップＳ３５：
ＡＣＫ生成部３１４は、当該受信パケットに対して確認応答するＡＣＫパケットを生成する。ここで、生成されるＡＣＫパケットの宛先ＭＡＣアドレスは、ステップＳ３４で抽出された送信元ＭＡＣアドレスに設定される。また、生成されるＡＣＫパケットのシーケンス番号は、当該受信パケットのシーケンス番号と同じに設定される。
【００５２】
ステップＳ３６：
ＡＣＫ生成部３１４は、ＡＣＫパケットを送信パケット多重部３１５に送る。ＡＣＫパケットは、送信パケット多重部３１５から送信装置１−１に返送される。
【００５３】
ステップＳ３７：
データ受信部３１７は、受信パケットをネットワークプロトコルスタック１２へ転送する。受信パケットに下位層ヘッダが付いている場合、ここでその下位層ヘッダが除去される。
【００５４】
５．ＡＣＫパケット受信処理
次に、送信装置１−１が下位層のＡＣＫパケットを受信した場合の処理（ステップＳ１００）を詳しく説明する。本実施の形態によれば、下位層のＡＣＫパケットの受信を契機として、「下位層における高速再送制御処理」が実施される場合がある。まず、図１０を参照して、本実施の形態に係る高速再送制御処理の概要を説明する。
【００５５】
送信装置１−１は、時刻ｔｓ１に、第１送信パケットＰＫＴ１（シーケンス番号＝＃１）を送出する。送信装置１−１は、第１送信パケットＰＫＴ１の次に第２送信パケットＰＫＴ２（シーケンス番号＝＃２）を送出する。第２送信パケットＰＫＴ２の送信時刻はｔｓ２である。その後の時刻ｔｓ３に、送信装置１−１は、第３送信パケットＰＫＴ３（シーケンス番号＝＃３）を送出する。
【００５６】
第１送信パケットＰＫＴ１に対するＡＣＫパケットは、第１ＡＣＫパケットＡＣＫ１（シーケンス番号＝＃１）である。第２送信パケットＰＫＴ２に対するＡＣＫパケットは、第２ＡＣＫパケットＡＣＫ２（シーケンス番号＝＃２）である。第３送信パケットＰＫＴ３に対するＡＣＫパケットは、第３ＡＣＫパケットＡＣＫ３（シーケンス番号＝＃３）である。前回受信したＡＣＫパケットに対してシーケンス番号が連続するＡＣＫパケットは、以下「Ｉｎ−Ｏｒｄｅｒ  ＡＣＫパケット」と参照される。それ以外のＡＣＫパケットは、以下「Ｏｕｔ−ｏｆ−Ｏｒｄｅｒ  ＡＣＫパケット」と参照される。
【００５７】
時刻ｔｒ１に、送信装置１−１は、第１ＡＣＫパケットＡＣＫ１を受信する。ここで、送信装置１−１が、第１ＡＣＫパケットＡＣＫ１の次にＯｕｔ−ｏｆ−Ｏｒｄｅｒ  ＡＣＫパケットを受信した場合を考える。つまり、送信装置１−１が、第２ＡＣＫパケットＡＣＫ２を受信することなく、第１ＡＣＫパケットＡＣＫ１の次に第３ＡＣＫパケットＡＣＫ３を受信した場合を考える。送信装置１−１は、前回受信した第１ＡＣＫパケットＡＣＫ１のシーケンス番号＃１と今回受信した第３ＡＣＫパケットＡＣＫ３のシーケンス番号＃３から、Ｏｕｔ−ｏｆ−Ｏｒｄｅｒ  ＡＣＫパケットを受信したことを認識することができる。
【００５８】
送信装置１−１がＯｕｔ−ｏｆ−Ｏｒｄｅｒ  ＡＣＫパケットを受信する原因としては、次の２つ考えられる。第１の原因は、送信装置１−１と受信装置１−２との間のネットワーク経路上でのパケット廃棄（ｐａｃｋｅｔ  ｄｒｏｐ）である。第２の原因は、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の違いである。
【００５９】
まず、ＲＴＴについて考える。ＲＴＴは、送信パケットの送信時刻から、対応するＡＣＫパケットの受信時刻までの時間である。このＲＴＴは、均一であるとは限らず、送信パケットの宛先に依存して異なり得る。例えば、図１０において、ＲＴＴ２は、第２送信パケットＰＫＴ２の送信時刻ｔｓ２から第２ＡＣＫパケットＡＣＫ２の受信時刻ｔｒ２までの時間であり、ＲＴＴ３は、第３送信パケットＰＫＴ３の送信時刻ｔｓ３から第３ＡＣＫパケットＡＣＫ３の受信時刻ｔｒ３までの時間である。図１０に示されるように、ＲＴＴ２がＲＴＴ３よりも大きい場合、第２ＡＣＫパケットＡＣＫ２の到着が第３ＡＣＫパケットＡＣＫ３の到着よりも遅れる可能性がある。Ｏｕｔ−ｏｆ−Ｏｒｄｅｒの第３ＡＣＫパケットＡＣＫ３の受信時刻ｔｒ３から、Ｉｎ−Ｏｒｄｅｒの第２ＡＣＫパケットＡＣＫ２の受信時刻ｔｒ２までの遅延時間Ｄｅｌａｙは、次の式（１）で表される。
【００６０】
式（１）：Ｄｅｌａｙ＝ＲＴＴ２−ＲＴＴ３−Δ
【００６１】
ここで、Δは、第３送信パケットＰＫＴ３の送信時刻ｔｓ３と第２送信パケットＰＫＴ２の送信時刻ｔｓ２との差であり、ｔｓ３−ｔｓ２で与えられる。この差Δは、図７で示された送信パケット情報４１から取得することができる。
【００６２】
ＲＴＴは宛先等に依存して様々な値を取るため、ＲＴＴに関してある分布範囲を定義することができる。その分布範囲の上限の指標となるパラメータは、以下「ＲＴＴｍａｘ」と参照され、その分布範囲の下限の指標となるパラメータは、以下「ＲＴＴｍｉｎ」と参照される。このとき、遅延時間Ｄｅｌａｙの最大値である最大遅延時間Ｄｅｌａｙ（Ｍａｘ）は、次の式（２）で表される。
【００６３】
式（２）：Ｄｅｌａｙ（Ｍａｘ）＝ＲＴＴｍａｘ−ＲＴＴｍｉｎ−Δ
【００６４】
時刻ｔｒ３から最大遅延時間Ｄｅｌａｙ（Ｍａｘ）が経過しても第２ＡＣＫパケットＡＣＫ２が到着しない場合、パケット廃棄が発生した可能性が極めて高い。従って、この場合、ＲＴＯによるパケット再送を待つことなく、第２送信パケットＰＫＴ２の再送が行われる。これが、本実施の形態で実施される「下位層における高速再送（Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ）」である。
【００６５】
要約すれば、次の通りである。時刻ｔｒ３でのＯｕｔ−ｏｆ−Ｏｒｄｅｒの第３ＡＣＫパケットＡＣＫ３の受信を契機として、送信装置１−１は、高速再送制御処理を実行する。その高速再送制御処理において、送信装置１−１は、時刻ｔｒ３から「高速再送判定期間Ｔ」が経過するまでにＩｎ−Ｏｒｄｅｒの第２ＡＣＫパケットＡＣＫ２を受信するか否かを判定する。その高速再送判定期間Ｔは、ＲＴＴに依存しており、次の式（３）で表される。
【００６６】
式（３）：Ｔ＝Ｄｅｌａｙ（Ｍａｘ）＝ＲＴＴｍａｘ−ＲＴＴｍｉｎ−Δ
【００６７】
その高速再送判定期間Ｔの間に第２ＡＣＫパケットＡＣＫ２を受けとらない場合、送信装置１−１は、第２送信パケットＰＫＴ２の廃棄が発生したとみなし、第２送信パケットＰＫＴ２の再送処理を実施する。尚、２以上のシーケンス番号の空きが発生している場合は、ＡＣＫパケットが到着していない全てのシーケンス番号の送信パケットについて再送を行う。
【００６８】
図１１は、このような高速再送制御を行うために必要な高速再送制御情報４２を示している。この高速再送制御情報４２は、例えば記憶部４０に格納される。高速再送制御情報４２は、基準ＡＣＫパケット情報とＲＴＴ範囲情報を含んでいる。基準ＡＣＫパケットとは、最後に受け取ったＩｎ−Ｏｒｄｅｒ  ＡＣＫパケットであり、図１０の例では第１ＡＣＫパケットＡＣＫ１である。基準ＡＣＫパケット情報は、基準ＡＣＫパケットのシーケンス番号と到着時刻を含んでいる。この基準ＡＣＫパケット情報は、今回受け取ったＡＣＫパケットがＩｎ−ＯｒｄｅｒかＯｕｔ−ｏｆ−Ｏｒｄｅｒかを判定するために用いられる。ＲＴＴ範囲情報は、上述のパラメータＲＴＴｍａｘ、ＲＴＴｍｉｎを示しており、高速再送判定期間Ｔの算出に用いられる。このＲＴＴ範囲情報は、適宜更新される。
【００６９】
以下、様々な処理例を説明する。
【００７０】
５−１．第１の例
図１２は、ステップＳ１００の第１の例を示すフローチャートである。
【００７１】
ステップＳ１１０：
下位層再送制御部３０のＡＣＫ受信部３１８は、ＡＣＫパケットを受信する。
【００７２】
ステップＳ１２０：
ＡＣＫ受信部３１８は、受信ＡＣＫパケットのヘッダからシーケンス番号を抽出する。
【００７３】
ステップＳ１３０：
ＡＣＫ受信部３１８は、送信パケット情報４１（図７参照）を参照して、ステップＳ１２０で抽出したものと同じシーケンス番号を有する送信パケットに関する情報（送信時刻等）を読みだす。
【００７４】
ステップＳ１４０：
ＡＣＫ受信部３１８は、ステップＳ１３０で取得した送信時刻と受信ＡＣＫパケットの受信時刻とに基いて、受信ＡＣＫパケットに関するＲＴＴを算出する。
【００７５】
ステップＳ１５０：
ＡＣＫ受信部３１８は、ステップＳ１４０で算出されたＲＴＴを用い、高速再送制御情報４２で示されるＲＴＴｍａｘ、ＲＴＴｍｉｎを、必要に応じて更新する。具体的には、算出ＲＴＴ＞ＲＴＴｍａｘの場合、ＡＣＫ受信部３１８は、ＲＴＴｍａｘを算出ＲＴＴに更新する。また、算出ＲＴＴ＜ＲＴＴｍｉｎの場合、ＡＣＫ受信部３１８は、ＲＴＴｍｉｎを算出ＲＴＴに更新する。つまり、ＲＴＴｍａｘ及びＲＴＴｍｉｎは、これまで算出されたＲＴＴの最大値及び最小値にそれぞれ設定される。尚、初期状態において、ＲＴＴｍａｘ及びＲＴＴｍｉｎは適当な初期値に設定される。
【００７６】
ステップＳ１６０：
また、ＡＣＫ受信部３１８は、シーケンス番号を参照し、ＡＣＫパケットをシーケンス番号の順番で受け取っているか否かを判定する。言い換えれば、ＡＣＫ受信部３１８は、受信ＡＣＫパケットがＩｎ−ＯｒｄｅｒかＯｕｔ−ｏｆ−Ｏｒｄｅｒかの判定を行う。具体的には、ＡＣＫ受信部３１８は、ステップＳ１２０で抽出されたシーケンス番号を、高速再送制御情報４２で示される基準ＡＣＫパケットのシーケンス番号（基準シーケンス番号）と比較する。
【００７７】
受信ＡＣＫパケットのシーケンス番号が“基準シーケンス番号＋１”ではない場合、受信ＡＣＫパケットはＯｕｔ−ｏｆ−Ｏｒｄｅｒ  ＡＣＫパケットである（ステップＳ１６０；Ｎｏ）。この場合、下位層再送制御部３０は、高速再送制御処理（ステップＳ２００）を実行する。このステップＳ２００については後述される。
【００７８】
一方、受信ＡＣＫパケットのシーケンス番号が“基準シーケンス番号＋１”である場合、受信ＡＣＫパケットはＩｎ−Ｏｒｄｅｒ  ＡＣＫパケットである（ステップＳ１６０；Ｙｅｓ）。この場合、処理はステップＳ１７０に移る。
【００７９】
ステップＳ１７０：
ＡＣＫ受信部３１８は、今回受信したＩｎ−Ｏｒｄｅｒ  ＡＣＫパケットを、最新の基準ＡＣＫパケットとする。つまり、ＡＣＫ受信部３１８は、高速再送制御情報４２の基準ＡＣＫパケット情報を、今回受信したＡＣＫパケットの情報に更新する。
【００８０】
ステップＳ１８０：
ＡＣＫ受信部３１８は、今回受信したＡＣＫパケットと同じシーケンス番号を有する送信パケットを解放する。つまり、ＡＣＫ受信部３１８は、上記ステップＳ１３０で読みだしたエントリを送信パケット情報４１から削除する。
【００８１】
次に、図１３を参照して、高速再送制御処理（ステップＳ２００）を説明する。
【００８２】
ステップＳ２１０：
高速再送制御部３１３は、Ｏｕｔ−ｏｆ−Ｏｒｄｅｒ  ＡＣＫパケットの受信からの経過時間を計測する。図１０の例で言えば、高速再送制御部３１３は、第３ＡＣＫパケットＡＣＫ３の受信時刻ｔｒ３からの経過時間を計測する。
【００８３】
ステップＳ２２０：
高速再送制御部３１３は、時刻ｔｒ３から高速再送判定期間Ｔが経過するまでにＩｎ−Ｏｒｄｅｒの第２ＡＣＫパケットＡＣＫ２を受け取るか否かを判定する。高速再送判定期間Ｔは、上記式（３）で与えられる。式（３）中のパラメータＲＴＴｍａｘ、ＲＴＴｍｉｎは、高速再送制御情報４２から得られる。差分Δは、送信パケット情報４１を参照することによって算出可能である。つまり、高速再送制御部３１３は、送信パケット情報４１及び高速再送制御情報４２に基いて、高速再送判定期間Ｔを算出することができる。
【００８４】
高速再送判定期間Ｔ以内にＩｎ−Ｏｒｄｅｒの第２ＡＣＫパケットＡＣＫ２を受け取った場合（ステップＳ２２０；Ｙｅｓ）、第２送信パケットＰＫＴ２の再送は不要である。この場合、パケット再送は実施されることなく、処理はステップＳ１７０へ進む。
【００８５】
一方、高速再送判定期間Ｔの間にＩｎ−Ｏｒｄｅｒの第２ＡＣＫパケットＡＣＫ２を受けとらない場合（ステップＳ２２０；Ｎｏ）、高速再送制御部３１３は、第２送信パケットＰＫＴ２の廃棄が発生したとみなし、第２送信パケットＰＫＴ２の再送処理を実施する。この場合、処理はステップＳ２３０に進む。
【００８６】
ステップＳ２３０：
高速再送制御部３１３は、送信パケット情報４１から、再送対象のデータ本体を読み出す。
【００８７】
ステップＳ２４０：
そして、高速再送制御部３１３は、読みだしたデータ本体を基に再送パケットを生成し、その再送パケットを送信パケット多重部３１５に送る。再送パケットは、送信パケット多重部３１５を経由して、外部のネットワークへ送出される。
【００８８】
以上に説明されたように、本実施の形態によれば、ネットワークプロトコルスタック１２より下位層においても、ＲＴＯによらない高速再送制御を実現することが可能となる。
【００８９】
例えば、Δ＝１．２μｓｅｃ（約１０Ｇｂｐｓのリンクに相当）、ＲＴＴｍｉｎ＝２０μｓｅｃ、ＲＴＴｍａｘ＝２５μｓｅｃという状況を考える。この場合、高速再送判定期間Ｔは３．８μｓｅｃである。従って、ＲＴＴ３＝ＲＴＴｍａｘであったとしても、第２送信パケットＰＫＴ２の送信から３０μｓｅｃ程度で、第２送信パケットＰＫＴ２の高速再送が実施される。一方、ＲＴＯによるパケット再送制御に関しては、誤再送を防ぐために、ＲＴＯはＲＴＴより充分大きい値（数百μｓｅｃ）に設定されることが一般的である。本実施の形態によれば、下位層においても、ＲＴＯより十分短い時間で高速再送を実現することが可能である。これにより、ＦＣＴを減少させ、通信効率を向上させることができる。
【００９０】
５−２．第２の例
通信経路の設定不良や経路変更等により、計測されるＲＴＴが非常に大きくなってしまう場合がある。そのような極端なＲＴＴもＲＴＴｍａｘの更新に適用されると、高速再送判定期間Ｔがいたずらに長くなってしまう。高速再送判定期間Ｔが長くなり過ぎると、適切なタイミングで高速再送が実施されなくなってしまい、効果が減ってしまう。そこで、第２の例として、極端に長いＲＴＴが観測された場合にＲＴＴｍａｘの更新を行わないフローを提案する。
【００９１】
図１４は、ステップＳ１００の第２の例を示すフローチャートである。図１２で示されたフローと比較して、ステップＳ１４０とステップＳ１５０との間にステップＳ１４５が追加されている。他の処理は第１の例と同じであり、重複する説明は適宜省略される。
【００９２】
ステップＳ１４５：
ＡＣＫ受信部３１８は、ステップＳ１４０で算出されたＲＴＴを所定の閾値ＴＨ＿ＲＭＡＸと比較する。算出ＲＴＴが所定の閾値ＴＨ＿ＲＭＡＸより大きい場合（ステップＳ１４５；Ｙｅｓ）、ＡＣＫ受信部３１８は、ステップＳ１５０〜Ｓ１７０をスキップし、ステップＳ１８０を実施する。一方、算出ＲＴＴが所定の閾値ＴＨ＿ＲＭＡＸ以下の場合（ステップＳ１４５；Ｎｏ）、ＡＣＫ受信部３１８は、第１の例と同じ処理を実行する。
【００９３】
第２の例によれば、第１の例と同じ効果が得られる。更に、異常に大きいＲＴＴが観測された場合であっても、高速再送制御処理を正常に維持することが可能となる。
【００９４】
５−３．第３の例
第３の例では、最新のネットワーク状態をパラメータＲＴＴｍａｘ、ＲＴＴｍｉｎに反映させるために、特定の条件が満たされる毎にパラメータＲＴＴｍａｘ、ＲＴＴｍｉｎがリセットされる。図１５は、第３の例における処理フローを示している。図１５に示される処理フローは、ステップＳ１００と並行して行われる。
【００９５】
ステップＳ３００：
ＡＣＫ受信部３１８は、ＡＣＫパケットを受信すると（ステップＳ１１０）、特定の条件が満たされるか否かを判定する。
【００９６】
ステップＳ３１０：
特定の条件が満たされる場合（ステップＳ３００；Ｙｅｓ）、ＡＣＫ受信部３１８は、パラメータＲＴＴｍａｘ、ＲＴＴｍｉｎをリセット（リフレッシュ）する。例えば、ＡＣＫ受信部３１８は、パラメータＲＴＴｍａｘ、ＲＴＴｍｉｎを、上記ステップＳ１４０で算出されるＲＴＴに設定する。
【００９７】
特定の条件としては、次の例が考えられる。
【００９８】
（条件１）ＡＣＫパケットの受信数が規定値ＲＴ＿ＲＥＦＲＥＳＨ＿ＡＣＫを超える；この場合、ＡＣＫパケットの受信数が規定値ＲＴ＿ＲＥＦＲＥＳＨ＿ＡＣＫを超える毎に、パラメータＲＴＴｍａｘ、ＲＴＴｍｉｎ、及びＡＣＫパケットの受信カウント値はリセットされる。
【００９９】
（条件２）データ送信部３１１で計測されるデータ送信レートが所定の閾値ＴＨ＿ＲＥＦＲＥＳＨ＿ＲＡＴＥを下回る；フロー切断時にはデータ送信レートが減少するため、データ送信レートを所定の閾値ＴＨ＿ＲＥＦＲＥＳＨ＿ＲＡＴＥと比較することによって、フロー切断（つまり、ネットワーク状態の変化）を検知することができる。
【０１００】
（条件３）所定の時間ＴＨ＿ＲＥＦＲＥＳＨ＿ＴＩＭＥが経過した；この場合、所定の時間ＴＨ＿ＲＥＦＲＥＳＨ＿ＴＩＭＥ毎に、パラメータＲＴＴｍａｘ、ＲＴＴｍｉｎ、及びタイマがリセットされる。
【０１０１】
第３の例によれば、第１の例と同じ効果が得られる。更に、最新のネットワーク状態に即した適切な高速再送制御処理が可能となる。
【０１０２】
５−４．第４の例
第４の例では、ＲＴＴの平均値ＲＴＴａｖｅが用いられる。本例では、図１６に示されるような平均値情報４３が記憶部４０に格納される。平均値情報４３は、ＡＣＫパケットの送信元ＭＡＣアドレス（送信パケットの宛先ＭＡＣアドレス）毎に、ＲＴＴの平均値ＲＴＴａｖｅを示している。
【０１０３】
図１７は、ステップＳ１００の第４の例を示すフローチャートである。本例では、ステップＳ１３０、Ｓ１４０、Ｓ１５０、Ｓ１７０が、それぞれ、ステップＳ１３０’、Ｓ１４０’、Ｓ１５０’、Ｓ１７０’に置換されている。第１の例と重複する説明は適宜省略される。
【０１０４】
ステップＳ１３０’：
ステップＳ１３０と同様に、ＡＣＫ受信部３１８は、送信パケット情報４１を参照して、受信ＡＣＫパケットと同じシーケンス番号を有する送信パケットに関する情報（送信時刻等）を読みだす。更に、ＡＣＫ受信部３１８は、平均値情報４３と受信ＡＣＫパケットの送信元ＭＡＣアドレスを参照して、当該送信元に対応する平均値ＲＴＴａｖｅ（以下、「ＲＴＴｏｌｄ」と参照される）を読み出す。
【０１０５】
ステップＳ１４０’：
ステップＳ１４０と同様に、ＡＣＫ受信部３１８は、受信ＡＣＫパケットに関するＲＴＴ（以下、「ＲＴＴｍｅａｓｕｒｅ」と参照される）を算出する。更に、ＡＣＫ受信部３１８は、受信ＡＣＫパケットに関する新たな平均値ＲＴＴａｖｅ（以下、「ＲＴＴｎｅｗ」と参照される）を算出する。例えば、ＲＴＴｎｅｗは、次の式（４）で計算される。式（４）中のパラメータｇは、例えば０．２に設定される。
【０１０６】
式（４）：ＲＴＴｎｅｗ＝（１−ｇ）×ＲＴＴｏｌｄ＋ｇ×ＲＴＴｍｅａｓｕｒｅ
【０１０７】
ステップＳ１５０’：
ＡＣＫ受信部３１８は、ステップＳ１４０’で算出されたＲＴＴｎｅｗを用い、高速再送制御情報４２で示されるＲＴＴｍａｘ、ＲＴＴｍｉｎを、必要に応じて更新する。具体的には、ＲＴＴｎｅｗ＞ＲＴＴｍａｘの場合、ＡＣＫ受信部３１８は、ＲＴＴｍａｘをＲＴＴｎｅｗに更新する。また、ＲＴＴｎｅｗ＜ＲＴＴｍｉｎの場合、ＡＣＫ受信部３１８は、ＲＴＴｍｉｎをＲＴＴｎｅｗに更新する。つまり、ＲＴＴｍａｘ及びＲＴＴｍｉｎは、これまで算出されたＲＴＴａｖｅの最大値及び最小値にそれぞれ設定される。
【０１０８】
ステップＳ１７０’：
ステップＳ１７０と同様に、ＡＣＫ受信部３１８は、高速再送制御情報４２の基準ＡＣＫパケット情報を更新する。更に、ＡＣＫ受信部３１８は、ステップＳ１４０’で算出されたＲＴＴｎｅｗを用いて平均値情報４３を更新する。
【０１０９】
第４の例によれば、第１の例と同じ効果が得られる。更に、宛先毎の平均値ＲＴＴａｖｅを利用することによって、異常に大きいＲＴＴが観測された場合であっても、高速再送制御処理を正常に維持することが可能となる。つまり、高速再送制御処理をより高精度に実施することが可能となる。
【０１１０】
５−５．第５の例
第５の例では、高速再送判定期間Ｔは、次の式（５）で表される。
【０１１１】
式（５）：Ｔ＝ＲＴＴｍａｘ−ＲＴＴｍｉｎ−Δ＋α
【０１１２】
パラメータαは、ネットワーク管理者もしくはユーザによって適宜される。このようなパラメータαを導入することによって、パケットの誤再送を抑えることが可能となる。
【０１１３】
５−６．第６の例
パケット送信間隔Δが非常に大きい状況では、そのΔの値が格納される変数のビット幅が足りずに、高速再送判定期間Ｔが誤った値になってしまう可能性がある。また、既出の第４の例において、サンプル数がまだ少ない状況ではＲＴＴの平均値ＲＴＴａｖｅの算出精度も低いままである。このように、高速再送制御処理には不適切な状況も存在し得る。そこで、第６の例では、特定の条件が満たされる場合にのみ、高速再送制御処理（ステップＳ２００）が実施される。
【０１１４】
図１８は、ステップＳ１００の第６の例を示すフローチャートである。図１２で示されたフローと比較して、ステップＳ１６０とステップＳ２００との間にステップＳ１９０が追加されている。他の処理は第１の例と同じであり、重複する説明は適宜省略される。
【０１１５】
ステップＳ１９０：
下位層再送制御部３０は、特定の条件が満たされるか否かを判定する。特定の条件が満たされる場合（ステップＳ１９０；Ｙｅｓ）、ステップＳ２００が実施される。一方、特定の条件が満たされない場合（ステップＳ１９０；Ｎｏ）、ステップＳ２００は実施されず、処理は終了する。
【０１１６】
特定の条件としては、次の例が考えられる。
【０１１７】
（条件１）データ送信部３１１で計測されるデータ送信レートが所定の閾値ＴＨ＿ＦＲ＿ＲＡＴＥを超える；逆に言えば、パケット送信間隔Δが非常に大きい状況では、ステップＳ２００は実施されない。
【０１１８】
（条件２）パケット送信間隔Δが所定の閾値ＴＨ＿ＦＲ＿ＤＥＬＴＡを下回る；逆に言えば、パケット送信間隔Δが非常に大きい状況では、ステップＳ２００は実施されない。
【０１１９】
（条件３）ＡＣＫパケットの受信回数が規定値ＴＨ＿ＦＲ＿ＡＣＫを超える；ＡＣＫパケットの受信回数が規定値ＴＨ＿ＦＲ＿ＡＣＫを超えると、平均値ＲＴＴａｖｅの値も適正となる。
【０１２０】
第６の例では、第１の例と同じ効果が得られる。更に、適切な状況においてのみ高速再送制御処理が実行される。その結果、高速再送制御処理の精度及び信頼性が向上する。
【０１２１】
尚、矛盾しない限りにおいて、上述の第１〜第６の例のうち２以上を組み合わせることも可能である。
【０１２２】
６．他の構成例
図１９は、本実施の形態に係る送受信装置１の変形例を示している。本変形例において、下位層再送制御部３０は、プログラム処理装置１０に組み込まれている。下位層再送制御部３０は、プログラム処理装置１０のＣＰＵがパケット再送制御プログラムＰＲＯＧを実行することにより実現される。パケット再送制御プログラムＰＲＯＧは、プログラム処理装置１０によって実行されるコンピュータプログラムである。このパケット再送制御プログラムＰＲＯＧは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。記憶部４０は、プログラム処理装置１０がアクセス可能なＲＡＭ等により実現される。本変形例における処理は、既出の実施の形態と同じである。
【０１２３】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【０１２４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１２５】
（付記１）
パケット再送制御を行うネットワークプロトコルスタックと、
前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行う下位層再送制御手段と
を備え、
前記下位層再送制御手段は、送信パケットを送出する際、送出順を示すシーケンス番号を前記送信パケットに付与し、
前記下位層再送制御手段は、前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すＡＣＫパケットを受け取り、
前記下位層再送制御手段は、前記受け取ったＡＣＫパケットの前記シーケンス番号を参照することによって、前記ＡＣＫパケットを前記シーケンス番号の順番で受け取っているか否かを判定し、
第１送信パケットに対する前記ＡＣＫパケットは、第１ＡＣＫパケットであり、
前記第１送信パケットの次に送出される第２送信パケットに対する前記ＡＣＫパケットは、第２ＡＣＫパケットであり、
前記第２送信パケットの後に送出される第３送信パケットに対する前記ＡＣＫパケットは、第３ＡＣＫパケットであり、
前記第１ＡＣＫパケットを受け取り、前記第１ＡＣＫパケットの次に前記第２ＡＣＫパケットを受け取ることなく前記第３ＡＣＫパケットを受け取った場合、前記下位層再送制御手段は、高速再送制御処理を実行し、
前記高速再送制御処理において、前記下位層再送制御手段は、前記第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに前記第２ＡＣＫパケットを受け取るか否かを判定し、
前記高速再送判定期間に前記第２ＡＣＫパケットを受け取らない場合、前記下位層再送制御手段は、前記第２送信パケットを再送する
パケット再送制御システム。
【０１２６】
（付記２）
付記１に記載のパケット再送制御システムであって、
送信パケット情報が格納される記憶装置を更に備え、
前記送信パケット情報は、前記送信パケット毎に、前記シーケンス番号及び送信時刻を示し、
前記下位層再送制御手段は、前記ＡＣＫパケットを受け取ると前記送信パケット情報を参照し、前記受け取ったＡＣＫパケットと同じ前記シーケンス番号を有する前記送信パケットの前記送信時刻を取得し、
前記下位層再送制御手段は、前記取得した送信時刻と前記受け取ったＡＣＫパケットの受信時刻とに基いて、前記受け取ったＡＣＫパケットに関するＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）を算出し、
前記高速再送判定期間は、前記ＲＴＴに依存する
パケット再送制御システム。
【０１２７】
（付記３）
付記２に記載のパケット再送制御システムであって、
前記ＲＴＴの範囲は、ＲＴＴｍｉｎ〜ＲＴＴｍａｘで定義され、
前記下位層再送制御手段は、前記送信パケット情報を参照することによって、前記第２送信パケットと前記第３送信パケットとの間の前記送信時刻の差Δを算出し、
前記下位層再送制御手段は、前記高速再送判定期間を、ＲＴＴｍａｘ−ＲＴＴｍｉｎ−Δに設定する
パケット再送制御システム。
【０１２８】
（付記４）
付記３に記載のパケット再送制御システムであって、
前記算出されたＲＴＴが前記ＲＴＴｍａｘより大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘを前記算出されたＲＴＴに更新し、
前記算出されたＲＴＴが前記ＲＴＴｍｉｎより小さい場合、前記下位層再送制御手段は、前記ＲＴＴｍｉｎを前記算出されたＲＴＴに更新する
パケット再送制御システム。
【０１２９】
（付記５）
付記３に記載のパケット再送制御システムであって、
前記下位層再送制御手段は、前記算出されたＲＴＴを所定の閾値と比較し、
前記算出されたＲＴＴが前記所定の閾値より大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘ及び前記ＲＴＴｍｉｎを更新することなく、前記受け取ったＡＣＫパケットと同じ前記シーケンス番号を有する前記送信パケットを解放し、
前記算出されたＲＴＴが前記所定の閾値以下であり、且つ、前記ＲＴＴｍａｘより大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘを前記算出されたＲＴＴに更新し、
前記算出されたＲＴＴが前記ＲＴＴｍｉｎより小さい場合、前記下位層再送制御手段は、前記ＲＴＴｍｉｎを前記算出されたＲＴＴに更新する
パケット再送制御システム。
【０１３０】
（付記６）
付記３に記載のパケット再送制御システムであって、
前記下位層再送制御手段は、前記受け取ったＡＣＫパケットの送信元毎に、前記ＲＴＴの平均値を算出し、
前記算出された平均値が前記ＲＴＴｍａｘより大きい場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘを前記算出された平均値に更新し、
前記算出された平均値が前記ＲＴＴｍｉｎより小さい場合、前記下位層再送制御手段は、前記ＲＴＴｍｉｎを前記算出された平均値に更新する
パケット再送制御システム。
【０１３１】
（付記７）
付記３乃至６のいずれか一項に記載のパケット再送制御システムであって、
特定の条件が満たされた場合、前記下位層再送制御手段は、前記ＲＴＴｍａｘ及び前記ＲＴＴｍｉｎをリセットする
パケット再送制御システム。
【０１３２】
（付記８）
付記１乃至７のいずれか一項に記載のパケット再送制御システムであって、
送信装置と、
前記受信装置と
を具備し、
前記送信装置と前記受信装置の各々が、前記ネットワークプロトコルスタックと前記下位層再送制御手段とを備え、
前記送信装置の前記下位層再送制御手段が、前記受信装置に対する前記送信パケットの送出を行い、
前記受信装置の前記下位層再送制御手段が、前記送信装置に対する前記ＡＣＫパケットの返信を行う
パケット再送制御システム。
【０１３３】
（付記９）
ネットワークプロトコルスタックによってパケット再送制御を行うことと、
前記ネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことと
を含み、
前記下位層においてパケット再送制御を行うことは、
送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、
前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すＡＣＫパケットを受け取ることと
を含み、
第１送信パケットに対する前記ＡＣＫパケットは、第１ＡＣＫパケットであり、
前記第１送信パケットの次に送出される第２送信パケットに対する前記ＡＣＫパケットは、第２ＡＣＫパケットであり、
前記第２送信パケットの後に送出される第３送信パケットに対する前記ＡＣＫパケットは、第３ＡＣＫパケットであり、
前記下位層においてパケット再送制御を行うことは、更に、
前記受け取ったＡＣＫパケットの前記シーケンス番号を参照することによって、前記ＡＣＫパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、
前記第１ＡＣＫパケットを受け取り、前記第１ＡＣＫパケットの次に前記第２ＡＣＫパケットを受け取ることなく前記第３ＡＣＫパケットを受け取った場合、高速再送制御処理を実行することと
を含み、
前記高速再送制御処理は、
前記第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに前記第２ＡＣＫパケットを受け取るか否かを判定することと、
前記高速再送判定期間に前記第２ＡＣＫパケットを受け取らない場合、前記第２送信パケットを再送することと
を含む
パケット再送制御方法。
【０１３４】
（付記１０）
パケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムであって、
前記パケット再送制御処理は、パケット再送制御を行うネットワークプロトコルスタックよりも下位層においてパケット再送制御を行うことを含み、
前記下位層においてパケット再送制御を行うことは、
送信パケットを送出する際に、送出順を示すシーケンス番号を前記送信パケットに付与することと、
前記送信パケットを受信パケットとして受け取った受信装置から、前記受信パケットの前記シーケンス番号を示すＡＣＫパケットを受け取ることと
を含み、
第１送信パケットに対する前記ＡＣＫパケットは、第１ＡＣＫパケットであり、
前記第１送信パケットの次に送出される第２送信パケットに対する前記ＡＣＫパケットは、第２ＡＣＫパケットであり、
前記第２送信パケットの後に送出される第３送信パケットに対する前記ＡＣＫパケットは、第３ＡＣＫパケットであり、
前記下位層においてパケット再送制御を行うことは、更に、
前記受け取ったＡＣＫパケットの前記シーケンス番号を参照することによって、前記ＡＣＫパケットを前記シーケンス番号の順番で受け取っているか否かを判定することと、
前記第１ＡＣＫパケットを受け取り、前記第１ＡＣＫパケットの次に前記第２ＡＣＫパケットを受け取ることなく前記第３ＡＣＫパケットを受け取った場合、高速再送制御処理を実行することと
を含み、
前記高速再送制御処理は、
前記第３ＡＣＫパケットの受信時刻から高速再送判定期間が経過するまでに前記第２ＡＣＫパケットを受け取るか否かを判定することと、
前記高速再送判定期間に前記第２ＡＣＫパケットを受け取らない場合、前記第２送信パケットを再送することと
を含む
パケット再送制御プログラム。
【０１３５】
本出願は、２０１０年３月３日に出願された日本国特許出願２０１０−０４６４１８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2011108480.tif 000003
【図２】
2011108480.tif 000004
【図３】
2011108480.tif 000005
【図４】
2011108480.tif 000006
【図５】
2011108480.tif 000007
【図６】
2011108480.tif 000008
【図７】
2011108480.tif 000009
【図８】
2011108480.tif 000010
【図９】
2011108480.tif 000011
【図１０】
2011108480.tif 000012
【図１１】
2011108480.tif 000013
【図１２】
2011108480.tif 000014
【図１３】
2011108480.tif 000015
【図１４】
2011108480.tif 000016
【図１５】
2011108480.tif 000017
【図１６】
2011108480.tif 000018
【図１７】
2011108480.tif 000019
【図１８】
2011108480.tif 000020
【図１９】
2011108480.tif 000021
【国際調査報告】
2011108480.tif 000022
2011108480.tif 000023
2011108480.tif 000024
2011108480.tif 000025