(57)【要約】  パケット再送制御装置は、フローテーブルと処理決定部とを備える。フローテーブルは、再送制御を管理するための再送管理情報を、パケットが属するフロー毎に示す。再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含む。処理決定部は、フローテーブルを参照することによって、パケットに対する再送制御の適用可否を決定する。具体的には、処理決定部は、上位レイヤからパケットを受け取ると、フローテーブルを参照し、受け取ったパケットが属するフローに対応付けられた再送管理パラメータを取得する。再送管理パラメータが閾値以内である場合、処理決定部は、受け取ったパケットに対して再送制御を適用することを決定する。一方、再送管理パラメータが閾値を超えている場合、処理決定部は、受け取ったパケットに対する再送制御の適用を中止する。
2011114910.tif 000002
【特許請求の範囲】
【請求項１】
上位レイヤから入力されたパケットの再送制御を行うパケット再送制御装置であって、
前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示すフローテーブルと、
前記フローテーブルを参照することによって、前記パケットに対する前記再送制御の適用可否を決定する処理決定部と
を備え、
前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含み、
前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、
前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得し、
前記再送管理パラメータが閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、
前記再送管理パラメータが前記閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止する
パケット再送制御装置。
【請求項２】
請求項１に記載のパケット再送制御装置であって、
前記再送管理パラメータは、前記パケット再送回数を含み、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数を取得し、
前記パケット再送回数が再送回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、
前記パケット再送回数が前記再送回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止する
パケット再送制御装置。
【請求項３】
請求項２に記載のパケット再送制御装置であって、
前記再送制御が適用される前記パケットを前記処理決定部から受け取り、前記受け取ったパケットを再送バッファに蓄積し、また、前記受け取ったパケットを下位レイヤに出力する送信部と、
前記下位レイヤからパケットを受信する受信部と
を更に備え、
前記受信部が前記再送バッファに蓄積されたパケットに対する確認応答を再送タイムアウト以内に受信しない場合、前記送信部は、再送処理を行い、
前記再送処理において、前記送信部は、前記再送バッファに蓄積されたパケットを前記下位レイヤに再送し、また、前記フローテーブルにおいて当該再送パケットが属するフローに対応付けられた前記パケット再送回数を増加させる
パケット再送制御装置。
【請求項４】
請求項３に記載のパケット再送制御装置であって、
前記再送タイムアウトは、フロー毎に決定され、
前記再送管理情報は、フロー毎に決定された前記再送タイムアウトを更に含み、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数及び前記再送タイムアウトを取得し、
前記処理決定部は、前記再送制御が適用される前記パケットと共に、対応する前記再送タイムアウトの情報を前記送信部に出力する
パケット再送制御装置。
【請求項５】
請求項４に記載のパケット再送制御装置であって、
前記受信部は、前記再送制御が適用される前記パケットに対する前記確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、当該パケットが属するフローに対応付けられた前記再送タイムアウトを前記算出された往復遅延時間に基いて更新する
パケット再送制御装置。
【請求項６】
請求項５に記載のパケット再送制御装置であって、
前記フローテーブルは、外部のコントローラから変更可能であり、
前記外部のコントローラによって、前記再送タイムアウトの更新は、フロー毎に、強制的に有効化あるいは無効化される
パケット再送制御装置。
【請求項７】
請求項１乃至６のいずれか一項に記載のパケット再送制御装置であって、
前記再送管理パラメータは、前記遅延超過回数を含み、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記遅延超過回数を取得し、
前記遅延超過回数が超過回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、
前記遅延超過回数が前記超過回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止する
パケット再送制御装置。
【請求項８】
請求項７に記載のパケット再送制御装置であって、
更に、前記下位レイヤからパケットを受信する受信部を備え、
前記受信部は、前記再送制御が適用される前記パケットに対する確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、
前記算出された往復遅延時間が前記許容時間を超過している場合、前記受信部は、前記フローテーブルにおいて当該パケットが属するフローに対応付けられた前記遅延超過回数を増加させる
パケット再送制御装置。
【請求項９】
請求項１乃至８のいずれか一項に記載のパケット再送制御装置であって、
更に、フロー管理部を備え、
前記フロー管理部は、前記フローテーブル中の前記再送管理パラメータを時間経過とともに減少させる、あるいは、前記再送制御が適用される度に、前記再送制御が適用される前記パケットが属するフローに対応付けられた前記再送管理パラメータを減少させる
パケット再送制御装置。
【請求項１０】
請求項１乃至９のいずれか一項に記載のパケット再送制御装置であって、
前記フローテーブルは、外部のコントローラから参照及び変更可能である
パケット再送制御装置。
【請求項１１】
請求項１乃至９のいずれか一項に記載のパケット再送制御装置であって、
前記フローテーブルは、外部のコントローラから変更可能であり、
前記外部のコントローラによって、前記再送制御は、フロー毎に、前記再送管理パラメータに拘わらず強制的に有効化あるいは無効化される
パケット再送制御装置。
【請求項１２】
請求項１乃至１１のいずれか一項に記載のパケット再送制御装置であって、
前記フローテーブルの変更内容は、前記パケット再送制御装置から外部のコントローラに通知される
パケット再送制御装置。
【請求項１３】
上位レイヤから入力されたパケットの再送制御を行うパケット再送制御方法であって、
前記上位レイヤからパケットを受け取ることと、
フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することと
を含み、
前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、
前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含み、
前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、
前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、
前記適用可否を決定することは、
前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、
前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、
前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することと
を含む
パケット再送制御方法。
【請求項１４】
上位レイヤから入力されたパケットの再送制御を行うパケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが記録された記録媒体であって、
前記パケット再送制御処理は、
前記上位レイヤからパケットを受け取ることと、
フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することと
を含み、
前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、
前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含み、
前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、
前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、
前記適用可否を決定することは、
前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、
前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、
前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することと
を含む
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信におけるパケット再送制御（ｐａｃｋｅｔ  ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ）に関する。
【背景技術】
【０００２】
パケット通信ネットワークでは、伝送中のパケットの廃棄や破壊が発生する可能性がある。これは、パケットを転送するルータやスイッチにおける輻輳の発生や信号受信感度の低下、あるいは外部からの電磁ノイズ等に起因する。一般的に、廃棄や破壊によるパケットの消失は、アプリケーション層あるいはトランスポート層で動作するプロトコルによって検知される。そして、そのようなプロトコルの制御により、消失したパケットの再送（ｒｅｔｒａｎｓｍｉｓｓｉｏｎ）が行われ、送信されるべきデータの完全性が保証される。【０００３】
具体的には、送信装置は受信装置にパケットを送信し、受信装置はパケットの受信を契機に確認応答（ＡＣＫ：ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）を送信装置に返信する。この確認応答をもって、送信装置は、送出パケットが受信装置に無事到達したことを認識する。一方、送信装置と受信装置との間のネットワーク上でパケットが消失した場合、送信装置は、当該パケットに対する確認応答を受け取らない。送信装置は、パケット送出後、所定の待ち時間以内に確認応答を受け取らない場合、当該パケットを受信装置に再送する。尚、上記所定の待ち時間は、「再送タイムアウト（ＲＴＯ：Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅ  Ｏｕｔ）」と呼ばれている。また、このようなパケット再送制御を実施する送信装置は、確認応答を受け取るまで送出パケットを一時的に保管するための記憶領域を備えており、この記憶領域は、以下「再送バッファ」と参照される。【０００４】
インターネットで用いられるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）は、このようなパケット再送制御を行う代表的なトランスポート層のプロトコルである。【０００５】
このようなパケット再送制御に関連する技術が、非特許文献１に記載されている。当該関連技術によれば、トランスポート層よりも下位のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層において、パケット再送制御が実施される。その理由は次の通りである。【０００６】
例として、データセンタ内のネットワークのような、往復遅延時間（ＲＴＴ：Ｒｏｕｎｄ−Ｔｒｉｐ  ｄｅｌａｙ  Ｔｉｍｅ）が非常に短いネットワークを考える。このようなネットワークでは、再送タイムアウトをマイクロ秒レベルにまで短縮することによって、パケット再送までの待ち時間を減少させ、通信効率を向上させることができる。しかしながら、一般的にＴＣＰはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に実装されているため、ＴＣＰの再送タイムアウトをマイクロ秒レベルまで短縮することは困難である。例えば、Ｌｉｎｕｘにおける単位時間（Ｊｉｆｆｉｅｓ）の精度は高々ミリ秒であり、マイクロ秒単位の時間計測には不十分である。そこで非特許文献１は、ＯＳより下位のＭＡＣ層においてパケット再送制御を実施し、再送タイムアウトをマイクロ秒レベルにまで短縮することで、このような問題を解決する。【０００７】
しかし、非特許文献１に記載されている関連技術には、次のような３つの問題点がある。【０００８】
１つ目の問題点は、対向の受信装置がトランスポート層よりも下位の層での再送制御の能力を持つか否かを、送信装置が検知する手段を有していない、ということである。例えば、送信装置は下位層での再送制御の能力を持つが、対向の受信装置がその能力を持たないとき、その受信装置は下位層における確認応答を送信装置に返信しない。この場合、送信装置は、いくら待っても確認応答を受け取らないために、パケットが途中で廃棄されたと誤認して下位層で再送を繰り返す。この無駄な再送パケットのトラヒックが伝送帯域を圧迫することで、通信効率が大幅に低下する恐れがある。【０００９】
２つ目の問題点は、宛先に拘わらず再送タイムアウトが一律である、ということである。例えば、ある１つの送信装置が２つの受信装置“Ａ”、“Ｂ”と通信する場合であって、その送信装置と受信装置“Ａ”との間の往復遅延時間が５０マイクロ秒、その送信装置と受信装置“Ｂ”との間の往復遅延時間が１００マイクロ秒である場合を考える。このとき、受信装置“Ａ”にとっての最適な再送タイムアウトは５０マイクロ秒であり、受信装置“Ｂ”にとっての最適な再送タイムアウトは１００マイクロ秒である。しかし、上記関連技術では宛先に拘わらず再送タイムアウトは一律であるため、再送タイムアウトを長い方の１００マイクロ秒に設定せざるを得ない。従って、送信装置と受信装置“Ａ”の間でパケット廃棄が発生した場合、本来であれば５０マイクロ秒後にパケット再送を実施できるが、送信装置はさらに５０マイクロ秒だけ待たなければならない。このような冗長な待ち時間も通信効率を悪化させる可能性がある。【００１０】
３つ目の問題点は、往復遅延時間が許容範囲を超えているときに、送信装置は再送制御を無効化する手段を有していない、ということである。例えば、ある１つの送信装置が２つの受信装置“Ａ”、“Ｃ”と通信する場合であって、その送信装置と受信装置“Ａ”との間の往復遅延時間が５０マイクロ秒、その送信装置と受信装置“Ｃ”との間の往復遅延時間が５００マイクロ秒である場合を考える。また、その送信装置は、２００マイクロ秒までの往復遅延時間を吸収できるだけの記憶容量を持つ再送バッファを有しているとする。この場合、送信装置と受信装置“Ｃ”との間の往復遅延時間と比較して、再送バッファの記憶容量は明らかに不足している。そのため、受信装置“Ｃ”から送信装置へ確認応答が到着する前に再送バッファがオーバフローし、再送制御が機能しなくなる事態が容易に発生し得る。再送バッファは全ての宛先で共有されるため、再送バッファがオーバフローすると、受信装置“Ｃ”とは無関係であるはずの受信装置“Ａ”宛てのトラヒックに対しても、再送制御が働かなくなってしまう。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】高道  透  他、“Ｕｌｔｒａ−Ｈｉｇｈ  Ｓｐｅｅｄ  ＭＡＣ  Ｔｅｃｈｎｏｌｏｇｙ  ｆｏｒ  Ｔｅｒａｂｉｔ−Ｃｌａｓｓ  ＬＡＮ”、電子情報通信学会  通信ソサイエティ大会、２００８．
【発明の概要】
【００１２】
上述の関連技術では、下位層でパケット再送制御を行う場合に、通信効率の低下等の機能不全が発生する恐れがある。
【００１３】
本発明の１つの目的は、下位層でパケット再送制御を行う場合の機能不全を未然に防止することができる技術を提供することにある。
【００１４】
本発明の１つの観点において、上位レイヤから入力されたパケットの再送制御を行うパケット再送制御装置が提供される。パケット再送制御装置は、フローテーブルと処理決定部とを備える。フローテーブルは、再送制御を管理するための再送管理情報を、パケットが属するフロー毎に示す。再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含む。遅延超過回数とは、パケットに関する往復遅延時間が許容時間を超過した回数であり、往復遅延時間とは、パケットの送信時刻からパケットに対する確認応答の受信時刻までの時間である。処理決定部は、フローテーブルを参照することによって、パケットに対する再送制御の適用可否を決定する。具体的には、処理決定部は、上位レイヤからパケットを受け取ると、フローテーブルを参照し、受け取ったパケットが属するフローに対応付けられた再送管理パラメータを取得する。再送管理パラメータが閾値以内である場合、処理決定部は、受け取ったパケットに対して再送制御を適用することを決定する。一方、再送管理パラメータが閾値を超えている場合、処理決定部は、受け取ったパケットに対する再送制御の適用を中止する。
【００１５】
本発明の他の観点において、上位レイヤから入力されたパケットの再送制御を行うパケット再送制御方法が提供される。そのパケット再送制御方法は、（Ａ）上位レイヤからパケットを受け取ることと、（Ｂ）フローテーブルを参照することによって、受け取ったパケットに対する再送制御の適用可否を決定することと、を含む。フローテーブルは、再送制御を管理するための再送管理情報を、パケットが属するフロー毎に示す。再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含む。遅延超過回数とは、パケットに関する往復遅延時間が許容時間を超過した回数であり、往復遅延時間とは、パケットの送信時刻からパケットに対する確認応答の受信時刻までの時間である。上記（Ｂ）適用可否を決定することは、（Ｂ１）受け取ったパケットが属するフローに対応付けられた再送管理パラメータを取得することと、（Ｂ２）再送管理パラメータが閾値以内である場合、受け取ったパケットに対して再送制御を適用することを決定することと、（Ｂ３）再送管理パラメータが閾値を超えている場合、受け取ったパケットに対する再送制御の適用を中止することと、を含む。
【００１６】
本発明の更に他の観点において、上位レイヤから入力されたパケットの再送制御を行うパケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが提供される。そのパケット再送制御処理は、（Ａ）上位レイヤからパケットを受け取ることと、（Ｂ）フローテーブルを参照することによって、受け取ったパケットに対する再送制御の適用可否を決定することと、を含む。フローテーブルは、再送制御を管理するための再送管理情報を、パケットが属するフロー毎に示す。再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含む。遅延超過回数とは、パケットに関する往復遅延時間が許容時間を超過した回数であり、往復遅延時間とは、パケットの送信時刻からパケットに対する確認応答の受信時刻までの時間である。上記（Ｂ）適用可否を決定することは、（Ｂ１）受け取ったパケットが属するフローに対応付けられた再送管理パラメータを取得することと、（Ｂ２）再送管理パラメータが閾値以内である場合、受け取ったパケットに対して再送制御を適用することを決定することと、（Ｂ３）再送管理パラメータが閾値を超えている場合、受け取ったパケットに対する再送制御の適用を中止することと、を含む。
【００１７】
本発明によれば、下位層でパケット再送制御を行う場合の機能不全を未然に防止することが可能となる。
【図面の簡単な説明】
【００１８】
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。【００１９】
【図１】図１は、本発明の実施の形態に係る通信ネットワークシステムを示すブロック図である。
【図２】図２は、本発明の実施の形態に係る再送制御装置の概要を示すブロック図である。
【図３】図３は、本発明の実施の形態に係る再送制御装置の構成を示すブロック図である。
【図４】図４は、本発明の実施の形態におけるフローテーブルを示す概念図である。
【図５】図５は、本発明の実施の形態における送信部の構成を示すブロック図である。
【図６】図６は、本発明の実施の形態における待ち時間リストの例を示す概念図である。
【図７】図７は、本発明の実施の形態における待ちキューの構成を示す概念図である。
【図８】図８は、本発明の実施の形態におけるカプセル化パケットのフォーマットの一例を示している。
【図９】図９は、本発明の実施の形態における受信部の構成を示す図である。
【図１０】図１０は、本発明の実施の形態におけるＡＣＫパケットのフォーマットの一例を示している。
【図１１Ａ】図１１Ａは、本発明の実施の形態におけるパケット送信時の処理を示すフローチャートである。
【図１１Ｂ】図１１Ｂは、本発明の実施の形態におけるパケット送信時の処理を示すフローチャートである。
【図１２】図１２は、本発明の実施の形態におけるパケット再送時の処理を示すフローチャートである。
【図１３Ａ】図１３Ａは、本発明の実施の形態におけるパケット受信時の処理を示すフローチャートである。
【図１３Ｂ】図１３Ｂは、本発明の実施の形態におけるパケット受信時の処理を示すフローチャートである。
【図１４】図１４は、本発明の実施の形態におけるクリーンナップ時の処理を示すフローチャートである。
【図１５】図１５は、本発明の実施の形態に係る再送制御装置を情報処理装置に適用した場合の構成を示す図である。
【図１６】図１６は、本発明の実施の形態の変形例を示すブロック図である。
【図１７】図１７は、本発明の実施の形態の変形例におけるフローテーブルを示す概念図である。
【発明を実施するための形態】
【００２０】
添付図面を参照して、本発明の実施の形態を説明する。
【００２１】
１．概要
図１は、本実施の形態に係る通信ネットワークシステムを示している。通信ネットワークシステムは、ネットワーク４と複数の通信装置５を備えている。複数の通信装置５は、ネットワーク４を介して互いに接続されている。
【００２２】
ネットワーク４は、複数の通信装置５の間で通信されるパケットを転送する。ネットワーク４では、ルータやスイッチに例示される複数の伝送装置が伝送線路によって相互に接続されている。ネットワーク４は、予め定められた転送経路に沿って、あるいはパケットに含まれる宛先情報に従って、パケットを適切な宛先に転送する。ネットワーク４では、電磁ノイズやトラヒックの輻輳などの要因により、転送中のパケットの消失が発生する可能性がある。
【００２３】
各々の通信装置５は、他の通信装置５との間でネットワーク４を介してパケットの送受信を行う。各々の通信装置５は、再送制御装置１、上位レイヤ処理部２、及び下位レイヤ処理部３を備えている。
【００２４】
上位レイヤ処理部２は、トランスポート層またはアプリケーション層の処理を行う。トランスポート層のプロトコルは、ＴＣＰやＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などである。アプリケーション層のプロトコルは、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）やＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などである。本実施の形態では、上位レイヤ処理部２が生成もしくは終端するパケットを、他種のパケットと区別するために、通常パケット１０と呼ぶ。
【００２５】
再送制御装置１は、上位レイヤ処理部２から通常パケット１０を受け取る。そして、再送制御装置１は、上位レイヤ処理部２から入力された通常パケット１０に再送制御処理を施し、それを送信パケット１１として下位レイヤ処理部３に送信する。また、再送制御装置１は、下位レイヤ処理部３から受信パケット１２を受け取る。その受信パケット１２が確認応答（ＡＣＫ）である場合、再送制御装置１は、その確認応答を終端する。その受信パケット１２が通常パケット１０を含んでいる場合、再送制御装置１は、当該通常パケット１０を上位レイヤ処理部２に転送するとともに、確認応答を生成して送信側に返信する。再送制御装置１については、後に詳細に説明する。
【００２６】
下位レイヤ処理部３は、物理層とリンク層の処理を行う。物理層とリンク層のプロトコルは、イーサネットなどである。下位レイヤ処理部３は、再送制御装置１から入力された送信パケット１１を、所定の手順に従ってネットワーク４に送信する。また、下位レイヤ処理部３は、ネットワーク４から受信した受信パケット１２を再送制御装置１に出力する。
【００２７】
図２は、本実施の形態に係る再送制御装置１の概要を示すブロック図である。本実施の形態に係る再送制御装置１は、処理決定部２０、送信部２１、受信部２４、及びフローテーブル２７を備えている。
【００２８】
フローテーブル２７は、再送制御装置１が扱うフロー（通信フロー）に関する情報を示す。より詳細には、フローテーブル２７は、フロー毎に「再送管理情報」を示している。フローとは、一連のパケットの集合である。フローの単位は、通信装置、ユーザ、リンク、搬送波の周波数、コネクション、セッション、アプリケーション等である。各フローは、フロー識別子により識別可能である。フロー識別子は、例えば、ＭＡＣフレームの宛先・送信元アドレス、ＶＬＡＮタグ、タイプや、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットの送信元・宛先アドレス、プロトコル番号、ＴＣＰ／ＵＤＰ送信元・宛先ポート番号、などの一部または全てである。
【００２９】
一方、「再送管理情報」は、再送制御装置１による再送制御処理を管理するための情報である。再送管理情報の例として、パケット再送回数、遅延超過回数、再送タイムアウト（ＲＴＯ）などが挙げられる。パケット再送回数は、該当フローに属するパケットが再送された回数である。遅延超過回数とは、該当フローに属するパケットに関する往復遅延時間（ＲＴＴ）が許容時間を超過した回数である。往復遅延時間は、あるパケットの送信時刻からそのパケットに対する確認応答の受信時刻までの時間である。本実施の形態によれば、フローテーブル２７において、このような再送管理情報がフロー毎に別々に管理されている。
【００３０】
処理決定部２０は、上位レイヤ処理部２から通常パケット１０を受け取る。上位レイヤ処理部２から通常パケット１０を受け取ると、処理決定部２０は、フローテーブル２７を参照し、当該通常パケット１０に対する再送制御の適用可否を決定する。より詳細には、処理決定部２０は、フローテーブル２７を参照し、当該通常パケット１０が属するフローに対応付けられている「再送管理パラメータ」を取得する。本実施の形態において、再送管理パラメータは、上述のパケット再数回数及び遅延超過回数のうち少なくとも１つを含む。その再送管理パラメータが閾値以内である場合、処理決定部２０は、当該通常パケット１０に対して再送制御を適用することを決定する。一方、その再送管理パラメータが閾値を超えている場合、処理決定部２０は、当該通常パケット１０に対する再送制御の適用を中止する。
【００３１】
一例として、再送管理パラメータがパケット再送回数である場合を考える。処理決定部２０は、上位レイヤ処理部２から通常パケット１０を受け取ると、フローテーブル２７を参照し、当該通常パケット１０が属するフローに対応付けられているパケット再送回数を取得する。そのパケット再送回数が再送回数閾値以内である場合、処理決定部２０は、当該通常パケット１０に対して再送制御を適用することを決定する。一方、そのパケット再送回数が再送回数閾値を超えている場合、処理決定部２０は、当該通常パケット１０に対する再送制御の適用を中止する。このように、再送回数が所定の閾値を超過した場合、そのフローに属する以降のパケットについて再送制御が無効化される。従って、対向の通信装置５が再送制御の能力を持たない場合に、パケット再送が過剰に繰り返されて通信効率が低下するといった現象が防止される。
【００３２】
送信部２１は、再送制御が適用される通常パケット１０を処理決定部２０から受け取る。そして、送信部２１は、当該通常パケット１０を再送バッファ５１に蓄積し、また、当該通常パケット１０を下位レイヤ処理部３に向けて出力する。受信部２４は、下位レイヤ処理部３から受信パケット１２を受信する。再送バッファ５１に蓄積された通常パケット１０に対する確認応答を受信部２４が再送タイムアウト以内に受信しない場合、送信部２１は、再送処理を行う。その再送処理において、送信部２１は、再送バッファ５１に蓄積された通常パケット１０を下位レイヤ処理部３に再送し、また、フローテーブル２７において当該再送パケットが属するフローに対応付けられたパケット再送回数を増加させる。
【００３３】
フローテーブル２７の再送管理情報は、再送タイムアウトを含んでいてもよい。すなわち、再送タイムアウトが、フロー毎に別々に設定されていてもよい。その場合、処理決定部２０は、上位レイヤ処理部２から通常パケット１０を受け取ると、フローテーブル２７を参照し、当該通常パケット１０が属するフローに対応付けられているパケット再送回数及び再送タイムアウトを取得する。そして、処理決定部２０は、再送制御が適用される通常パケット１０と共に、対応する再送タイムアウトの情報を送信部２１に出力する。送信部２１は、フロー毎に設定された再送タイムアウトに基いて、再送処理を実施する。フロー毎に独立した再送タイムアウトが用いられるため、フローによって往復遅延時間が異なる場合であっても、パケット再送が効率的に実施される。すなわち、パケット再送までの待ち時間を減少させ、通信効率を向上させることが可能となる。
【００３４】
他の例として、再送管理パラメータが遅延超過回数である場合を考える。処理決定部２０は、上位レイヤ処理部２から通常パケット１０を受け取ると、フローテーブル２７を参照し、当該通常パケット１０が属するフローに対応付けられている遅延超過回数を取得する。その遅延超過回数が超過回数閾値以内である場合、処理決定部２０は、当該通常パケット１０に対して再送制御を適用することを決定する。一方、その遅延超過回数が超過回数閾値を超えている場合、処理決定部２０は、当該通常パケット１０に対する再送制御の適用を中止する。このように、往復遅延時間（ＲＴＴ）が長すぎるフローが存在し、遅延超過回数が所定の閾値を超過した場合、そのフローに属する以降のパケットについて再送制御が無効化される。従って、往復遅延時間が再送バッファで吸収できる時間を超えている場合に、再送バッファのオーバフローによって再送制御の機能不全が発生するといった事態が防止される。
【００３５】
受信部２４は、下位レイヤ処理部３から受信パケット１２を受信する。その受信パケット１２が、再送制御が適用された通常パケット１０に対する確認応答（ＡＣＫ）である場合、受信部２４は、該当フローに関する往復遅延時間（当該通常パケット１０の送信時刻から当該確認応答の受信時刻までの時間）を算出する。算出された往復遅延時間が許容時間を超過している場合、受信部２４は、フローテーブル２７において該当フローに対応付けられている遅延超過回数を増加させる。また、受信部２４は、フローテーブル２７において該当フローに対応付けられている再送タイムアウトを、算出された往復遅延時間に基いて更新してもよい。
【００３６】
以上に説明されたように、本実施の形態によれば、下位層でパケット再送制御を行う場合の機能不全を未然に防止することが可能となる。
【００３７】
２．再送制御装置１の構成例
２−１．全体構成
図３は、本実施の形態に係る再送制御装置１の構成を示すブロック図である。再送制御装置１は、処理決定部２０、送信部２１、多重部２２、分離部２３、受信部２４、多重部２５、フロー管理部２６、及びフローテーブル２７を備えている。
【００３８】
処理決定部２０は、上位レイヤ処理部２から入力された通常パケット１０について再送制御の適用可否を判定する。処理決定部２０は、上位レイヤ処理部２から受け取った通常パケット１０から、フローを識別するための情報を抽出し、その情報をフロー識別子３０としてフロー管理部２６に出力する。
【００３９】
フロー識別子３０は、例えば、ＭＡＣフレームの宛先・送信元アドレス、ＶＬＡＮタグ、タイプや、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットの送信元・宛先アドレス、プロトコル番号、ＴＣＰ／ＵＤＰ送信元・宛先ポート番号、などの一部または全てである。
【００４０】
処理決定部２０は、フロー識別子３０に対応する再送タイムアウト３１、再送回数３２及び遅延超過回数３３をフロー管理部２６から受け取る。そして、処理決定部２０は、再送回数３２が所定の再送回数閾値を超えているか否かと、遅延超過回数３３が所定の超過回数閾値を超えているか否か、を判定する。再送回数３２と遅延超過回数３３のいずれかが閾値を超えていれば、処理決定部２０は、処理中の通常パケット１０が再送制御の適用対象でないと判断し、その通常パケット１０を多重部２２に転送する。一方、再送回数３２と遅延超過回数３３の両方が閾値を超えていなければ、処理決定部２０は、処理中の通常パケット１０が再送制御の適用対象であると判断し、その通常パケット１０を再送タイムアウト３１と共に送信部２１に出力する。
【００４１】
送信部２１は、再送制御の適用対象となった通常パケット１０に対して送信処理を行って、カプセル化パケット３４を生成する。カプセル化パケット３４は、通常パケット１０に、再送制御に必要な情報を付与したものである。送信部２１については、後に詳細に説明する。
【００４２】
多重部２２は、処理決定部２０から受け取る通常パケット１０、送信部２１から受け取るカプセル化パケット３４、受信部２４から受け取るＡＣＫ（確認応答）パケット３５をパケット単位に多重し、それを下位レイヤ処理部３に送信パケット１１として出力する。尚、カプセル化パケット３４とＡＣＫパケット３５は、再送制御装置１によって生成もしくは終端されるパケットである。
【００４３】
分離部２３は、下位レイヤ処理部３から受信パケット１２を受信する。分離部２３は、受信パケット１２の種別に応じて、受信パケット１２を受信部２４または多重部２５に振り分ける。具体的には、受信パケット１２が通常パケット１０の場合、分離部２３は、その受信パケット１２を多重部２５に出力する。また、受信パケット１２がカプセル化パケット３４またはＡＣＫパケット３５の場合、分離部２３は、その受信パケット１２を受信部２４に出力する。
【００４４】
受信部２４は、分離部２３から受け取るカプセル化パケット３４とＡＣＫパケット３５を終端する。また、受信部２４は、カプセル化パケット３４から抽出される通常パケット１０を多重部２５に出力するとともに、ＡＣＫパケット３５を生成して、そのＡＣＫパケット３５を多重部２２に出力する。受信部２４については、後に詳細に説明する。
【００４５】
多重部２５は、分離部２３と受信部２４から受け取る通常パケット１０をパケット単位に多重して、それを上位レイヤ処理部２に出力する。
【００４６】
フロー管理部２６は、フローテーブル２７を管理する。フロー管理部２６は、処理決定部２０、送信部２１、及び受信部２４からの要求に従って、フローテーブル２７にアクセスする。フロー管理部２６については、後に詳細に説明する。
【００４７】
２−２．フロー管理部２６及びフローテーブル２７
２−２−１．フローテーブル２７
図４は、本実施の形態におけるフローテーブル２７を概念的に示している。フローテーブル２７は、０個以上のフローエントリ４０を有している。各フローエントリ４０は、再送制御装置１が通信中の各フローに対応しており、対応するフローに関する情報を示す。具体的には、各フローエントリ４０は、フロー識別子３０、再送タイムアウト３１、再送回数３２、遅延超過回数３３、最終アクセス時刻４１、及び遅延統計情報４２を含んでいる。これらの情報が、再送管理情報である。
【００４８】
再送タイムアウト３１は、該当フローに属する通常パケット１０に適用される再送タイムアウトの下限値である。例えば、あるフローエントリ４０の再送タイムアウト３１が４９．１２３マイクロ秒の場合、そのフローエントリ４０に対応するフローに属する通常パケット１０に実際に適用される再送タイムアウトは、４９．１２３マイクロ秒「以上」になる。実際の再送タイムアウトが４９．１２３マイクロ秒「丁度」になるとは限らない理由は、後述される再送バッファ５１の待ちキュー５２の個数が有限であり、実際の再送タイムアウトが離散的になるからである。
【００４９】
再送回数３２は、該当フローに属する通常パケット１０が再送された回数の累計である。
【００５０】
遅延超過回数３３は、往復遅延時間３６が所定の閾値を超えた回数の累計である。往復遅延時間３６は、該当フローに属するカプセル化パケット３４の送信時刻と対応するＡＣＫパケット３５の受信時刻の差である。再送バッファ５１のオーバフローを避けるため、その所定の閾値は、再送バッファ５１が許容できる往復遅延時間以下であることが望ましい。
【００５１】
最終アクセス時刻４１は、フロー管理部２６が該当フローエントリ４０に最後にアクセスした時刻である。このアクセスは、フローエントリ４０の参照操作と更新操作の両方を含む。例外的に、後述されるフローテーブル２７のクリーンナップ実行中は、最終アクセス時刻４１は更新されない。最終アクセス時刻４１は、長時間アクセスの無いフローエントリ４０をフローテーブル２７から削除する際に使用される。
【００５２】
遅延統計情報４２は、往復遅延時間３６に関する統計情報を収容する。遅延統計情報４２は、往復遅延時間３６の履歴・平均値・偏差・分散などであり、再送タイムアウト３１の算出の際に参照・更新される。遅延統計情報４２に含まれる情報は、再送タイムアウト３１の算出アルゴリズムによって決まる。例えば、ＴＣＰの再送タイムアウト算出アルゴリズムであるＩＥＴＦ  ＲＦＣ２９８８「Ｃｏｍｐｕｔｉｎｇ  ＴＣＰ’ｓ  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅｒ」規格は、再送タイムアウト算出の際に往復遅延時間３６の平均値と平均偏差を用いる。従って、例えば、このアルゴリズムが採用される場合は、遅延統計情報４２に往復遅延時間３６の平均値と平均偏差が含まれる。
【００５３】
２−２−２．フロー管理部２６
フロー管理部２６は、処理決定部２０、送信部２１、受信部２４とインタフェースする。また、フロー管理部２６は、フローテーブル２７を定期的にクリーンナップする。
【００５４】
＜処理決定部２０とのインタフェース＞
フロー管理部２６は、処理決定部２０からフロー識別子３０を受け取ると、次の２つの処理を順に行う。
【００５５】
１つ目の処理は、フローテーブル２７を検索し、フロー識別子３０に対応するフローエントリ４０の内容の一部を処理決定部２０に出力することである。具体的には、フロー管理部２６は、フローテーブル２７を検索し、処理決定部２０から受け取ったフロー識別子３０と同一のフロー識別子３０を持つフローエントリ４０がフローテーブル２７に存在するか否かを判定する。検索に成功した場合、フロー管理部２６は、当該フローエントリ４０の再送タイムアウト３１と再送回数３２、遅延超過回数３３を処理決定部２０に出力する。
【００５６】
一方、検索に失敗した場合、フロー管理部２６は、処理決定部２０から受け取ったフロー識別子３０に対応する新しいフローエントリ４０を、フローテーブル２７に追加する。この際、フロー管理部２６は、新しいフローエントリ４０の内容を初期化する。再送回数３２と遅延超過回数３３の初期値は０である。再送タイムアウト３１の初期値は、再送バッファ５１が許容できる往復遅延時間以下であることが望ましい。遅延統計情報４２は、再送タイムアウト３１の算出アルゴリズムに応じて適切に初期化される。その後、フロー管理部２６は、新しいフローエントリ４０の再送タイムアウト３１、再送回数３２、及び遅延超過回数３３を、処理決定部２０に出力する。
【００５７】
２つ目の処理は、処理決定部２０から受け取ったフロー識別子３０に対応するフローエントリ４０の再送回数３２から所定の値を減算し、また、そのフローエントリ４０の遅延超過回数３３から所定の値を減算することである。例えば、フロー管理部２６は、再送回数３２から０．２を引き、遅延超過回数３３から０．１を引く。減算の結果、値が負になる場合は、減算結果は０に補正される。ただし、再送回数３２が所定の閾値を超えているか、または、遅延超過回数３３が所定の閾値を超えている場合、これらの減算処理は実施されない。これら所定の閾値は、処理決定部２０でのものと同一である。
【００５８】
２つ目の処理の目的は、次の通りである。偶発的なパケット消失や往復遅延時間の超過が繰り返されると、本来であれば再送制御を適用すべきフローの再送回数３２と遅延超過回数３３がいつかは閾値を超過してしまい、そのフローについて再送制御が誤って非適用にされることが考えられる。このような事態を防ぐために、上位レイヤ処理部２から通常パケット１０が再送制御装置１に入力されるたびに、その通常パケット１０が属するフローに対応するフローエントリ４０の再送回数３２及び遅延超過回数３３が減少させられる。
【００５９】
＜送信部２１とのインタフェース＞
フロー管理部２６は、送信部２１からフロー識別子３０を受け取ると、フローテーブル２７を検索し、そのフロー識別子３０と同一のフロー識別子３０を持つフローエントリ４０がフローテーブル２７に存在するか否かを判定する。検索に失敗した場合、フロー管理部２６は何もしない。検索に成功した場合、フロー管理部２６は、該当フローエントリ４０の再送回数３２を１だけ増加させる。
【００６０】
＜受信部２４とのインタフェース＞
フロー管理部２６は、受信部２４からフロー識別子３０と往復遅延時間３６を受け取ると、フローテーブル２７を検索し、そのフロー識別子３０と同一のフロー識別子３０を持つフローエントリ４０がフローテーブル２７に存在するか否かを判定する。検索に失敗した場合、フロー管理部２６は何もしない。検索に成功した場合、フロー管理部２６は、次の２つの処理を行う。
【００６１】
１つ目の処理は、該当フローエントリ４０の再送タイムアウト３１を、往復遅延時間３６を用いて更新することである。この際、該当フローエントリ４０の遅延統計情報４２が、必要に応じて参照・更新されてもよい。往復遅延時間３６と遅延統計情報４２から適切な再送タイムアウト３１を推定する方法としては、先に挙げたＩＥＴＦ  ＲＦＣ２９８８「Ｃｏｍｐｕｔｉｎｇ  ＴＣＰ’ｓ  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅｒ」などがある。
【００６２】
２つ目の処理は、往復遅延時間３６が、再送バッファ５１が許容できる往復遅延時間を超えている場合、該当フローエントリ４０の遅延超過回数３３を１だけ増加させることである。
【００６３】
＜フローテーブル２７のクリーンナップ＞
フロー管理部２６は、フローテーブル２７を定期的にクリーンナップする。具体的には、フロー管理部２６は、フローテーブル２７の全てのフローエントリ４０のそれぞれについて、次の２つの処理を行う。
【００６４】
１つ目の処理は、フローエントリ４０の最終アクセス時刻４１と現在時刻の差からアイドル時間を求め、アイドル時間が所定の閾値を超えていれば、そのフローエントリ４０をフローテーブル２７から削除することである。
【００６５】
１つ目の処理の目的は、長時間アクセスの無いフローエントリ４０をフローテーブル２７から削除することで、フローテーブル２７の空きを確保することである。
【００６６】
２つ目の処理は、フローエントリ４０の再送回数３２から所定の値を減算し、また、フローエントリ４０の遅延超過回数３３から所定の値を減算することである。減算の結果、値が負になる場合は、減算結果は０に補正される。ただし、再送回数３２が所定の閾値を超えているか、または、遅延超過回数３３が所定の閾値を超えている場合、これらの減算処理は実施されない。これら所定の閾値は処理決定部２０でのものと同一である。
【００６７】
２つ目の処理の目的は、次の通りである。偶発的なパケット消失や往復遅延時間の超過が繰り返されると、本来であれば再送制御を適用すべきフローの再送回数３２と遅延超過回数３３がいつかは閾値を超過してしまい、そのフローについて再送制御が誤って非適用にされることが考えられる。このような事態を防ぐために、時間経過とともに、各フローエントリ４０の再送回数３２及び遅延超過回数３３が減少させられる。
【００６８】
２−３．送信部２１
図５は、再送制御装置１の送信部２１の構成例を示している。送信部２１は、待ち時間リスト５０、再送バッファ５１、パケット識別子生成部５３、カプセル化部５４、及びフロー識別子生成部５５を備えている。再送バッファ５１は、Ｍ個（Ｍは自然数）の待ちキュー５２−１〜５２−Ｍを備えている。
【００６９】
２−３−１．待ち時間リスト５０
図６は、待ち時間リスト５０の例を示している。待ち時間リスト５０は、待ちキュー５２−１〜５２−Ｍのそれぞれの待ち時間７０−１〜７０−Ｍを示す。待ち時間リスト５０内の待ち時間７０−Ｘ（１≦Ｘ≦Ｍ）は、再送バッファ５１内のＸ番目の待ちキュー５２−Ｘの待ち時間である。待ち時間７０は、待ちキュー５２ごとに異なっている。
【００７０】
送信部２１は、処理決定部２０から通常パケット１０と再送タイムアウト３１を受け取ると、待ち時間リスト５０を参照して、「待ち時間７０−Ｙ≧再送タイムアウト３１」の関係を満たす最小の待ち時間７０−Ｙ（１≦Ｙ≦Ｍ）を選ぶ。この選択されたＹを、待ちキュー番号６０とする。
【００７１】
待ちキュー番号６０は、処理決定部２０から入力された通常パケット１０の格納先となる待ちキュー５２を特定する。つまり、通常パケット１０は再送バッファ５１内のＹ番目の待ちキュー５２−Ｙに格納される。言い換えれば、通常パケット１０は、フロー毎に設定される再送タイムアウト３１に応じた適切な待ちキュー５２−Ｙに格納される。
【００７２】
例えば、処理決定部２０から入力された再送タイムアウト３１が１１１マイクロ秒である場合を考える。この場合、図６で示された待ち時間リスト５０によれば、待ちキュー番号６０は“３”となる。従って、処理決定部２０から入力された通常パケット１０は、待ちキュー５２−３に格納される。
【００７３】
２−３−２．再送バッファ５１
再送バッファ５１は、再送制御装置１がＡＣＫパケット３５を受け取るまでに通常パケット１０を一時的に保管するための記憶領域である。再送バッファ５１は、Ｍ個（Ｍは自然数）の物理的もしくは論理的な待ちキュー５２−１〜５２−Ｍを含んでいる。
【００７４】
図７は、待ちキュー５２の構成例を示している。待ちキュー５２は、０個以上のキューエントリ８０を有するＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）型のキューである。待ちキュー５２−Ｘ（１≦Ｘ≦Ｍ）は、自身に追加されたキューエントリ８０を待ち時間７０−Ｘだけ待機させる。待ちキュー５２の先頭のキューエントリ８０が最も古く、末尾のキューエントリ８０が最も新しい。
【００７５】
待ちキュー５２の各キューエントリ８０は、上位レイヤ処理部２から再送制御装置１に入力された通常パケット１０のひとつひとつに対応しており、対応する通常パケット１０に関する情報を示す。具体的には、各キューエントリ８０は、パケット識別子３７、通常パケット１０、及び再送回数８１を含んでいる。
【００７６】
パケット識別子３７は、上位レイヤ処理部２から再送制御装置１に入力された通常パケット１０を識別するための情報である。パケット識別子３７は、例えば、ＴＣＰのシーケンス番号、アドレス６１、フロー識別子３０、などの一部または全てである。アドレス６１は、通常パケット１０に対応するキューエントリ８０が格納されている待ちキュー５２のメモリアドレスである。
【００７７】
キューエントリ８０の通常パケット１０は、上位レイヤ処理部２から再送制御装置１に入力された通常パケット１０のうち、再送制御の適用対象となったものである。
【００７８】
キューエントリ８０の再送回数８１は、そのキューエントリ８０の通常パケット１０を含むカプセル化パケット３４が再送された回数の累計である。
【００７９】
送信部２１は、待ちキュー番号６０が確定すると、待ちキュー５２−Ｙ（Ｙは待ちキュー番号６０）に新しいキューエントリ８０を追加する。この時点では新しいキューエントリ８０の内容は設定されない。その後、新しいキューエントリ８０が格納された待ちキュー５２−Ｙのメモリアドレスが、アドレス６１としてパケット識別子生成部５３に通知される。パケット識別子生成部５３によってパケット識別子３７が生成されると、送信部２１は、新しいキューエントリ８０にパケット識別子３７と処理中の通常パケット１０を登録する。また、送信部２１は、新しいキューエントリ８０の再送回数８１を１に初期化する。
【００８０】
送信部２１は、待ちキュー５２−Ｘ（１≦Ｘ≦Ｍ）に追加されてから待ち時間７０−Ｘが経過したキューエントリ８０について、次の処理（つまり再送）を行う。送信部２１は、当該キューエントリ８０のパケット識別子３７と通常パケット１０を、カプセル化部５４に出力する。その後、送信部２１は、当該キューエントリ８０の再送回数８１が所定の上限回数に達しているかを判定する。再送回数８１が所定の上限回数に達している場合、送信部２１は、当該キューエントリ８０を待ちキュー５２−Ｘから削除する。再送回数８１が所定の上限回数に達していなければ、送信部２１は、当該キューエントリ８０を待ちキュー５２−Ｘの末尾に移動させる。この操作は、当該キューエントリ８０を一旦削除して再度追加することと等価である。再送の事実を記録するため、送信部２１は、移動後のキューエントリ８０の再送回数８１を１だけ増加させる。
【００８１】
また、送信部２１は、受信部２４からパケット識別子３７を受け取ると、次の処理を行う。すなわち、送信部２１は、そのパケット識別子３７と同一のパケット識別子３７を持つキューエントリ８０を、待ちキュー５２−１〜５２−Ｍの中から削除する。そのようなキューエントリ８０が待ちキュー５２−１〜５２−Ｍに存在しなかった場合、送信部２１は、何もしない。
【００８２】
２−３−３．パケット識別子生成部５３
パケット識別子生成部５３は、処理決定部２０から入力された通常パケット１０と再送バッファ５１から受け取ったアドレス６１に基いて、パケット識別子３７を生成する。そして、パケット識別子生成部５３は、そのパケット識別子３７を、再送バッファ５１とカプセル化部５４に出力する。
【００８３】
２−３−４．カプセル化部５４
カプセル化部５４は、処理決定部２０や再送バッファ５１（再送時）から受け取る通常パケット１０とパケット識別子生成部５３から受け取るパケット識別子３７をもとに、カプセル化パケット３４を生成する。そして、カプセル化部５４は、生成したカプセル化パケット３４を多重部２２に出力する。
【００８４】
図８は、カプセル化パケット３４のフォーマットの一例を示している。カプセル化パケット３４は、パケット識別子３７、タイムスタンプ３８、及び通常パケット１０を含んでいる。パケット識別子３７は、パケット識別子生成部５３から受け取ったものである。通常パケット１０は、処理決定部２０あるいは再送バッファ５１（再送時）から受け取ったものである。タイムスタンプ３８には現在時刻が代入される。このタイムスタンプ３８は往復遅延時間３６の計測に使用される。
【００８５】
ここで、生成されるカプセル化パケット３４が重複する情報を含んでいる場合、その冗長な情報を省略し、カプセル化パケット３４の長さを短縮することが通信効率の観点で好ましい。例えば、上位レイヤ処理部２がタイムスタンプを通常パケット１０の中に含めている場合、カプセル化パケット３４のタイムスタンプ３８は省略されてもよい。また、カプセル化パケット３４の通常パケット１０の送信元・宛先アドレスの情報がパケット識別子３７にも含まれている場合、パケット識別子３７の当該情報は省略されてもよい。
【００８６】
２−３−５．フロー識別子生成部５５
フロー識別子生成部５５は、再送バッファ５１から通常パケット１０を受け取ると、その通常パケット１０からフロー識別子３０を抽出する。そして、フロー識別子生成部５５は、そのフロー識別子３０をフロー管理部２６に出力する。このフロー識別子３０は、対応するフローエントリ４０の再送回数３２を増加させるために使用される。
【００８７】
２−４．受信部２４
図９は、再送制御装置１の受信部２４の構成例を示している。受信部２４は、脱カプセル部９０、ＡＣＫ生成部９１、ＡＣＫ終端部９２、及び遅延計算部９３を備えている。
【００８８】
２−４−１．脱カプセル部９０
脱カプセル部９０は、分離部２３からカプセル化パケット３４を受け取る。脱カプセル部９０は、受け取ったカプセル化パケット３４から、パケット識別子３７、タイムスタンプ３８及び通常パケット１０を取り出す。その後、脱カプセル部９０は、通常パケット１０を多重部２５に出力する。また、脱カプセル部９０は、パケット識別子３７、タイムスタンプ３８及び通常パケット１０を、ＡＣＫ生成部９１に出力する。
【００８９】
２−４−２．ＡＣＫ生成部９１
ＡＣＫ生成部９１は、脱カプセル部９０から受け取った情報をもとにＡＣＫパケット３５を生成し、そのＡＣＫパケット３５を多重部２２に出力する。具体的には、ＡＣＫ生成部９１は、脱カプセル部９０からパケット識別子３７、タイムスタンプ３８及び通常パケット１０を受け取ると、次の２つの処理を順に行う。
【００９０】
１つ目の処理は、通常パケット１０からフローを識別するための情報、すなわちフロー識別子３０を抽出することである。
【００９１】
２つ目の処理は、フロー識別子３０とパケット識別子３７、タイムスタンプ３８をもとにＡＣＫパケット３５を生成し、そのＡＣＫパケット３５を多重部２２に出力することである。
【００９２】
図１０は、ＡＣＫパケット３５のフォーマットの一例を示している。ＡＣＫパケット３５は、フロー識別子３０、パケット識別子３７、及びタイムスタンプ３８を含んでいる。フロー識別子３０は、１つ目の処理で抽出されたものである。パケット識別子３７及びタイムスタンプ３８としては、脱カプセル部９０から受け取ったパケット識別子３７とタイムスタンプ３８がそれぞれ用いられる。
【００９３】
ここで、生成されるＡＣＫパケット３５が重複する情報を含んでいる場合、その冗長な情報を省略し、ＡＣＫパケット３５の長さを短縮することが通信効率の観点で好ましい。例えば、ＡＣＫパケット３５のフロー識別子３０とパケット識別子３７の両方が送信元・宛先アドレスの情報を含んでいる場合、どちらか片方の当該情報が省略されてもよい。
【００９４】
２−４−３．ＡＣＫ終端部９２
ＡＣＫ終端部９２は、分離部２３からＡＣＫパケット３５を受け取る。ＡＣＫ終端部９２は、受け取ったＡＣＫパケット３５から、フロー識別子３０、パケット識別子３７及びタイムスタンプ３８を取り出す。その後、ＡＣＫ終端部９２は、パケット識別子３７を送信部２１に出力する。送信部２１に送られるパケット識別子３７は、対応するキューエントリ８０を待ちキュー５２から削除するために使用される。また、ＡＣＫ終端部９２は、フロー識別子３０とタイムスタンプ３８を遅延計算部９３に出力する。
【００９５】
２−４−４．遅延計算部９３
遅延計算部９３は、ＡＣＫ終端部９２からフロー識別子３０とタイムスタンプ３８を受け取ると、タイムスタンプ３８と現在時刻の差から往復遅延時間３６を算出する。そして、遅延計算部９３は、その往復遅延時間３６とフロー識別子３０をフロー管理部２６に出力する。
【００９６】
３．処理フロー
３−１．パケット送信時の処理フロー
図１１Ａ及び図１１Ｂは、再送制御装置１が、上位レイヤ処理部２から入力された通常パケット１０を下位レイヤ処理部３に送信する際のフローチャートである。
【００９７】
再送制御装置１は、上位レイヤ処理部２からの通常パケット１０の入力を待つ（ステップＳ１００）。
【００９８】
処理決定部２０は、ステップＳ１００で入力された通常パケット１０からフロー識別子３０を抽出する（ステップＳ１０１）。フロー管理部２６は、フローテーブル２７を検索し、ステップＳ１０１で抽出されたフロー識別子３０と同一のフロー識別子３０を持つフローエントリ４０がフローテーブル２７に存在するか否かを判定する（ステップＳ１０２）。存在する場合（ステップＳ１０３；Ｙｅｓ）、処理はステップＳ１０５に進み、存在しない場合（ステップＳ１０３；Ｎｏ）、処理はステップＳ１０４に進む。
【００９９】
ステップＳ１０４において、フロー管理部２６は、ステップＳ１０１で抽出されたフロー識別子３０に対応する新しいフローエントリ４０をフローテーブル２７に追加する。この際、フロー管理部２６は、新しいフローエントリ４０の内容を初期化する。その後、処理はステップＳ１０５に進む。
【０１００】
ステップＳ１０５において、フロー管理部２６は、ステップＳ１０１で抽出されたフロー識別子３０に対応するフローエントリ４０から、再送タイムアウト３１、再送回数３２及び遅延超過回数３３を読み出す。続いて、処理決定部２０は、再送回数３２と遅延超過回数３３のそれぞれを所定の閾値と比較し、処理中の通常パケット１０に再送制御を適用すべきか否かを判定する（ステップＳ１０６）。
【０１０１】
再送回数３２と遅延超過回数３３のいずれかが閾値を超えている場合（ステップＳ１０６；Ｙｅｓ）、処理中の通常パケット１０は再送制御の適用対象ではない。この場合、処理はステップＳ１０７に進む。ステップＳ１０７において、処理決定部２０は、通常パケット１０を多重部２２経由で下位レイヤ処理部３に出力する。このステップＳ１０７は最終ステップの１つである。
【０１０２】
一方、再送回数３２と遅延超過回数３３の両方が閾値を超えていない場合（ステップＳ１０６；Ｎｏ）、処理中の通常パケット１０は再送制御の適用対象である。この場合、処理はステップＳ１０８に進む。ステップＳ１０８において、フロー管理部２６は、ステップＳ１０１で抽出されたフロー識別子３０に対応するフローエントリ４０の再送回数３２と遅延超過回数３３のそれぞれから所定の値を減算する。減算の結果、値が負になる場合は、減算結果は０に補正される。
【０１０３】
また、送信部２１は、待ち時間リスト５０を参照して、「待ち時間７０−Ｙ≧ステップＳ１０５で読み出された再送タイムアウト３１」の関係を満たす最小の待ち時間７０−Ｙを選び、そのＹを待ちキュー番号６０とする（ステップＳ１０９）。続いて、送信部２１は、待ちキュー５２−Ｙに新しいキューエントリ８０を追加する（ステップＳ１１０）。送信部２１のパケット識別子生成部５３は、パケット識別子３７を生成する（ステップＳ１１１）。送信部２１は、ステップＳ１１０で追加されたキューエントリ８０に、処理中の通常パケット１０とステップＳ１１１で生成されたパケット識別子３７を格納するとともに、そのキューエントリ８０の再送回数８１を１に初期化する（ステップＳ１１２）。
【０１０４】
送信部２１のカプセル化部５４は、ステップＳ１１１で生成されたパケット識別子３７と処理中の通常パケット１０をもとにカプセル化パケット３４を生成し、それを多重部２２経由で下位レイヤ処理部３に出力する（ステップＳ１１３）。この際、カプセル化部５４は、カプセル化パケット３４のタイムスタンプ３８に現在時刻をセットする。このステップＳ１１３は最終ステップの１つである。
【０１０５】
３−２．パケット再送時の処理フロー
図１２は、再送制御装置１が、再送バッファ５１の待ちキュー５２内のキューエントリ８０の満了を契機としてパケット再送を行う際のフローチャートである。
【０１０６】
送信部２１は、待ちキュー５２−Ｘ（１≦Ｘ≦Ｍ）に追加されてから待ち時間７０−Ｘが経過したキューエントリ８０が出現するまで、すなわち、キューエントリ８０が満了するまで待つ（ステップＳ２００）。送信部２１は、ステップＳ２００で満了したキューエントリ８０から、通常パケット１０、パケット識別子３７、及び再送回数８１を読み出す（ステップＳ２０１）。
【０１０７】
ステップＳ２０１の後、ステップＳ２０２〜Ｓ２０４、ステップＳ２０５、及びステップＳ２０６〜Ｓ２０７が実施される。尚、ステップＳ２０２〜Ｓ２０４、ステップＳ２０５、及びステップＳ２０６〜Ｓ２０７は並列に実行されてもよい。
【０１０８】
＜ステップＳ２０２〜Ｓ２０４＞
送信部２１は、ステップＳ２０１で読み出された再送回数８１が所定の上限回数に達しているか否かを判定する（ステップＳ２０２）。再送回数８１が上限回数に達している場合（ステップＳ２０２；Ｙｅｓ）、送信部２１は、満了したキューエントリ８０を待ちキュー５２から削除する（ステップＳ２０３）。ステップＳ２０３は最終ステップの１つである。一方、再送回数８１が上限回数に達していない場合（ステップＳ２０２；Ｎｏ）、送信部２１は、満了したキューエントリ８０を待ちキュー５２の末尾に移動させ、移動後のキューエントリ８０の再送回数８１を１だけ増加させる（ステップＳ２０４）。ステップＳ２０４は最終ステップの１つである。
【０１０９】
＜ステップＳ２０５＞
送信部２１のカプセル化部５４は、ステップＳ２０１で読み出された通常パケット１０とパケット識別子３７をもとに、カプセル化パケット３４を生成する。そして、カプセル化部５４は、生成したカプセル化パケット３４を多重部２２経由で下位レイヤ処理部３に出力する。この際、カプセル化部５４は、カプセル化パケット３４のタイムスタンプ３８に現在時刻をセットする。ステップＳ２０５は最終ステップの１つである。
【０１１０】
＜ステップＳ２０６〜Ｓ２０７＞
送信部２１のフロー識別子生成部５５は、ステップＳ２０１で読み出された通常パケット１０からフロー識別子３０を抽出する（ステップＳ２０６）。フロー管理部２６は、ステップＳ２０６で抽出されたフロー識別子３０に対応するフローエントリ４０の再送回数３２を１だけ増加させる（ステップＳ２０７）。このステップＳ２０７は最終ステップの１つである。
【０１１１】
３−３．パケット受信時の処理フロー
図１３Ａ及び図１３Ｂは、再送制御装置１が、下位レイヤ処理部３から受信パケット１２を受け取る際のフローチャートである。
【０１１２】
再送制御装置１は、下位レイヤ処理部３からの受信パケット１２の入力を待つ（ステップＳ３００）。受信パケット１２が入力されると、分離部２３は、その受信パケット１２の種別を判定する（ステップＳ３０１）。受信パケット１２が通常パケット１０の場合、ステップＳ３０２が実施される。受信パケット１２がカプセル化パケット３４の場合、ステップＳ３０３〜Ｓ３０６が実施される。受信パケット１２がＡＣＫパケット３５の場合、ステップＳ３０７〜Ｓ３１１が実施される。
【０１１３】
＜ステップＳ３０２：通常パケットの場合＞
分離部２３は、ステップＳ３００で入力された受信パケット１２（通常パケット１０）を、多重部２５経由で上位レイヤ処理部２に出力する。このステップＳ３０２は最終ステップの１つである。
【０１１４】
＜ステップＳ３０３〜Ｓ３０６：カプセル化パケット３４の場合＞
受信部２４の脱カプセル部９０は、ステップＳ３００で入力された受信パケット１２（カプセル化パケット３４）から、パケット識別子３７、タイムスタンプ３８、及び通常パケット１０を取り出す（ステップＳ３０３）。ステップＳ３０３の後、ステップＳ３０４、及びステップＳ３０５〜Ｓ３０６が実行される。尚、ステップＳ３０４とステップＳ３０５〜Ｓ３０６は並列に実行されてもよい。
【０１１５】
ステップＳ３０４において、脱カプセル部９０は、ステップＳ３０３で取り出された通常パケット１０を、多重部２５経由で上位レイヤ処理部２に出力する。このステップＳ３０４は最終ステップの１つである。
【０１１６】
ステップＳ３０５において、ＡＣＫ生成部９１は、ステップＳ３０３で取り出された通常パケット１０からフロー識別子３０を抽出する。ステップＳ３０６において、ＡＣＫ生成部９１は、抽出されたフロー識別子３０と、ステップＳ３０３で取り出されたパケット識別子３７とタイムスタンプ３８をもとに、ＡＣＫパケット３５を生成する。そして、ＡＣＫ生成部９１は、そのＡＣＫパケット３５を、多重部２２経由で下位レイヤ処理部３に出力する。このステップＳ３０６は最終ステップの１つである。
【０１１７】
＜ステップＳ３０７〜Ｓ３１１：ＡＣＫパケット３５の場合＞
受信部２４のＡＣＫ終端部９２は、ステップＳ３００で入力された受信パケット１２（ＡＣＫパケット３５）から、フロー識別子３０、パケット識別子３７、及びタイムスタンプ３８を取り出す（ステップＳ３０７）。ステップＳ３０７の後、ステップＳ３０８、及びステップＳ３０９〜Ｓ３１１が実行される。尚、ステップＳ３０８とステップＳ３０９〜Ｓ３１１は並列に実行されてもよい。
【０１１８】
ステップＳ３０８において、送信部２１は、ステップＳ３０７で取り出されたパケット識別子３７と同一のパケット識別子３７を持つキューエントリ８０を、待ちキュー５２−１〜５２−Ｍの中から削除する。このステップＳ３０８は最終ステップの１つである。
【０１１９】
ステップＳ３０９において、受信部２４の遅延計算部９３は、ステップＳ３０７で取り出されたタイムスタンプ３８と現在時刻の差から往復遅延時間３６を算出する。ステップＳ３０９の後、ステップＳ３１０とステップＳ３１１が実行される。尚、ステップＳ３１０とステップＳ３１１は並列に実行されてもよい。
【０１２０】
ステップＳ３１０において、フロー管理部２６は、ステップＳ３０７で取り出されたフロー識別子３０に対応するフローエントリ４０の再送タイムアウト３１を、ステップＳ３０９で算出された往復遅延時間３６を用いて更新する。このステップＳ３１０は最終ステップの１つである。
【０１２１】
ステップＳ３１１において、フロー管理部２６は、ステップＳ３０９で算出された往復遅延時間３６が、再送バッファ５１が許容できる往復遅延時間を超えているか否かを判定する。その往復遅延時間３６が許容時間を超えている場合、フロー管理部２６は、ステップＳ３０７で取り出されたフロー識別子３０に対応するフローエントリ４０の遅延超過回数３３を１だけ増加させる。このステップＳ３１１は最終ステップの１つである。
【０１２２】
３−４．クリーンナップ時の処理フロー
図１４は、再送制御装置１のフロー管理部２６が定期的に実施する、フローテーブル２７のクリーンナップの際のフローチャートである。フロー管理部２６は、フローテーブル２７中の全てのフローエントリ４０の各々について、次のループ処理を実行する。
【０１２３】
フロー管理部２６は、対象のフローエントリ４０の最終アクセス時刻４１と現在時刻の差からアイドル時間を算出する（ステップＳ４００）。そして、フロー管理部２６は、算出されたアイドル時間が所定の閾値を超過しているか判定する（ステップＳ４０１）。
【０１２４】
アイドル時間が所定の閾値を超過している場合（ステップＳ４０１；Ｙｅｓ）、フロー管理部２６は、対象のフローエントリ４０をフローテーブル２７から削除する（ステップＳ４０２）。このステップＳ４０２は、ループ処理の最終ステップの１つである。
【０１２５】
一方、アイドル時間が所定の閾値を超過していない場合（ステップＳ４０１；Ｎｏ）、処理はステップＳ４０３に進む。ステップＳ４０３において、フロー管理部２６は、対象のフローエントリ４０の再送回数３２と遅延超過回数３３のそれぞれを所定の閾値と比較し、当該フローエントリ４０に対応するフローに再送制御が適用されているか否かを判定する。
【０１２６】
再送回数３２と遅延超過回数３３のいずれかが閾値を超えている場合、すなわち、そのフローに再送制御が適用されていない場合（ステップＳ４０３；Ｙｅｓ）、ループ処理は終了する。
【０１２７】
一方、再送回数３２と遅延超過回数３３の両方が閾値を超えていない場合、すなわち、そのフローに再送制御が適用されている場合（ステップＳ４０３；Ｎｏ）、処理はステップＳ４０４に進む。ステップＳ４０４において、フロー管理部２６は、対象のフローエントリ４０の再送回数３２と遅延超過回数３３のそれぞれから所定の値を減算する。減算の結果、値が負になる場合、減算結果は０に補正される。ステップＳ４０４は、ループ処理の最終ステップの１つである。
【０１２８】
４．他の構成例
本実施の形態に係る再送制御装置１は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置に適用可能である。図１５は、再送制御装置１が情報処理装置に適用された場合の構成を示している。図１５に示されるように、再送制御装置１は、データ処理装置２００と記憶装置２０１を備えている。
【０１２９】
記憶装置２０１として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）が例示される。記憶装置２０１には、フローテーブル２７、待ち時間リスト５０、再送バッファ５１、再送バッファ５１中のＭ個（Ｍは自然数）の待ちキュー５２−１〜５２−Ｍ、などが格納される。
【０１３０】
データ処理装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含む。データ処理装置２００は、処理決定部２２０、送信部２２１、多重部２２２、分離部２２３、受信部２２４、多重部２２５、及びフロー管理部２２６を備えている。処理決定部２２０、送信部２２１、多重部２２２、分離部２２３、受信部２２４、多重部２２５、及びフロー管理部２２６は、それぞれ、前述の処理決定部２０と送信部２１、多重部２２、分離部２３、受信部２４、多重部２５、及びフロー管理部２６と同様である。
【０１３１】
尚、データ処理装置２００が備えるこれら機能ブロックは、データ処理装置２００がパケット再送制御プログラムを実行することによって実現される。パケット再送制御プログラムは、データ処理装置２００によって実行されるコンピュータプログラムであり、記憶装置２０１に格納される。パケット再送制御プログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
【０１３２】
５．効果
第１の効果は、対向の通信装置が再送制御の能力を持たない場合に、パケットの再送が過剰に繰り返されて通信効率が低下する現象を回避できることである。その理由は、パケットを再送した回数をフロー毎に記録し、その再送回数が所定の閾値を超過すると、そのフローに属する以降のパケットについて再送制御を無効化するからである。
【０１３３】
第２の効果は、送信元と複数の宛先の間の往復遅延時間が互いに異なっている状況において、再送までの待ち時間を減少させ、通信効率を向上させられることである。その理由は、フロー毎に往復遅延時間を計測し、その往復遅延時間をもとにフロー毎に適切な再送タイムアウトを算出し、パケットを再送する際にそのパケットに対応するフローの再送タイムアウトを用いるからである。
【０１３４】
第３の効果は、ある送信元と宛先の間の往復遅延時間が再送バッファで吸収できる時間を超えている場合に、再送バッファのオーバフローによる再送制御の機能不全を防止できることである。その理由は、フロー毎に往復遅延時間を計測し、遅延超過回数が所定の閾値を超過すると、そのフローに属する以降のパケットについて再送制御を無効化するからである。
【０１３５】
６．変形例
図１６は、本発明の実施の形態の変形例を示すブロック図である。本変形例によれば、再送制御装置１のフローテーブル２７の内容は、外部のコントローラ３００から参照及び変更（書き換え、追加、削除）が可能である。
【０１３６】
より詳細には、本変形例に係る再送制御装置１は、外部のコントローラ３００と通信可能なコントローラ通信部２８を更に備えている。コントローラ通信部２８は、コントローラ３００からのテーブル参照要求に応じて、フローテーブル２７中の指定された内容を読み出し、当該内容をコントローラ３００に返送する。また、コントローラ通信部２８は、コントローラ３００からのテーブル変更要求に応じて、フローテーブル２７中の指定された内容を変更（書き換え、追加、削除）する。また、コントローラ通信部２８は、フローテーブル２７の内容に変更が有った場合、その旨をコントローラ３００に通知する。
【０１３７】
図１７は、本変形例におけるフローテーブル２７の一例を示す概念図である。各フローエントリ４０は、既出の図４で示された情報に加えて、更に制御モード４５及び再送タイムアウト設定４６を再送管理情報として含んでいる。あるいは、制御モード４５及び再送タイムアウト設定４６のうちいずれか一方だけが、各フローエントリ４０に追加されていてもよい。コントローラ３００は、これら制御モード４５あるいは再送タイムアウト設定４６を適宜変更することができる。以下、制御モード４５及び再送タイムアウト設定４６のそれぞれの使用方法を説明する。
【０１３８】
制御モード４５は、「自律制御」、「強制無効」及び「強制有効」の３値を取る。「自律制御」の場合は、上述の実施の形態と同じである。すなわち、再送制御装置１による再送制御機能は、再送回数３２や遅延超過回数３３に基いて自律的に有効化／無効化される。「強制無効」の場合、再送制御装置１による再送制御機能は、再送回数３２や遅延超過回数３３に拘わらず、強制的に無効化される。「強制有効」の場合、再送制御装置１による再送制御機能は、再送回数３２や遅延超過回数３３に拘わらず、強制的に有効化される。
【０１３９】
コントローラ３００は、制御モード４５の内容を自由に設定、変更することができる。具体的には、コントローラ３００は、ある対象フローに関する制御モード４５の設定変更を指示するテーブル変更要求を、対象の再送制御装置１に送る。当該再送制御装置１のコントローラ通信部２８は、当該テーブル変更要求に従って、当該対象フローに対応するフローエントリ４０の制御モード４５の内容を設定する。
【０１４０】
パケット送信時、再送制御装置１の処理決定部２０は、該当フローエントリ４０の制御モード４５も参照する。制御モード４５が「自律制御」の場合、処理決定部２０は、既出の実施の形態と同じように動作する（図１１Ａ、図１１Ｂ参照）。制御モード４５が「強制無効」の場合、処理決定部２０は、再送回数３２や遅延超過回数３３に拘わらず、ステップＳ１０７（図１１Ｂ参照）を実行する。制御モード４５が「強制有効」の場合、処理決定部２０は、再送回数３２や遅延超過回数３３に拘わらず、ステップＳ１０８〜Ｓ１１３（図１１Ｂ参照）を実行する。
【０１４１】
再送タイムアウト設定４６は、「自律制御」及び「強制固定」の２値を取る。「自律制御」の場合は、上述の実施の形態と同じである。すなわち、既出の図１３ＢのステップＳ３１０で説明されたように、フローエントリ４０の再送タイムアウト３１は、往復遅延時間３６に基いて自律的に更新される。一方、「強制固定」の場合、ステップＳ３１０は実施されず、再送タイムアウト３１の値はそのまま維持される。
【０１４２】
コントローラ３００は、再送タイムアウト設定４６の内容を自由に設定、変更することができる。具体的には、コントローラ３００は、ある対象フローに関する再送タイムアウト設定４６の設定変更を指示するテーブル変更要求を、対象の再送制御装置１に送る。当該再送制御装置１のコントローラ通信部２８は、当該テーブル変更要求に従って、当該対象フローに対応するフローエントリ４０の再送タイムアウト設定４６の内容を設定する。尚、フローエントリ４０の再送タイムアウト３１の値も、コントローラ３００によって設定され得る。
【０１４３】
パケット受信時、再送制御装置１のフロー管理部２６は、該当フローエントリ４０の再送タイムアウト設定４６も参照する。再送タイムアウト設定４６が「自律制御」の場合、フロー管理部２６は、既出の実施の形態と同様に、ステップＳ３１０（図１３Ｂ参照）を実行する。一方、再送タイムアウト設定４６が「強制固定」の場合、フロー管理部２６は、ステップＳ３１０をスキップし、再送タイムアウト３１の値を維持する。
【０１４４】
その他、コントローラ３００は、新規のフローエントリ４０の追加を指示するテーブル変更要求を、対象の再送制御装置１に送ってもよい。また、コントローラ３００は、既存のフローエントリ４０の削除を指示するテーブル変更要求を、対象の再送制御装置１に送ってもよい。また、再送制御装置１によって、フローエントリ４０が“自律的”に追加された場合（ステップＳ１０４；図１１Ａ参照）や、フローエントリ４０が“自律的”に削除された場合（ステップＳ４０２；図１４参照）、コントローラ通信部２８は、その旨をコントローラ３００に通知する。また、再送制御装置１によって再送制御機能が“自律的”に無効化された場合、すなわち、ステップＳ２０７（図１２参照）の実行後にフローエントリ４０の再送回数３２が初めて閾値を超えたときや、ステップＳ３１１（図１３Ｂ参照）の実行後にフローエントリ４０の遅延超過回数３３が初めて閾値を超えたとき、コントローラ通信部２８は、その旨をコントローラ３００に通知する。
【０１４５】
本変形例による効果は、次の通りである。再送制御機能を有効にすべきでない通信区間（例えば、データセンタと外界との間の通信区間、データセンタ間の通信区間）が既知である場合は多い。このとき、その通信区間に関して再送制御機能をあらかじめ無効化しておくことによって、自律制御の過程で発生する無駄な再送パケットを抑制することができる。また、往復遅延時間（ＲＴＴ）の最大値が予測できている通信経路に関しては、再送タイムアウト３１をその最大値にあらかじめ設定しておくことにより、再送タイムアウト３１が最適値に収束するまでの時間を短縮することができる。
【０１４６】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【０１４７】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１４８】
（付記１）
上位レイヤから入力されたパケットの再送制御を行うパケット再送制御装置であって、
前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示すフローテーブルと、
前記フローテーブルを参照することによって、前記パケットに対する前記再送制御の適用可否を決定する処理決定部と
を備え、
前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含み、
前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、
前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得し、
前記再送管理パラメータが閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、
前記再送管理パラメータが前記閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止する
パケット再送制御装置。
【０１４９】
（付記２）
付記１に記載のパケット再送制御装置であって、
前記再送管理パラメータは、前記パケット再送回数を含み、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数を取得し、
前記パケット再送回数が再送回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、
前記パケット再送回数が前記再送回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止する
パケット再送制御装置。
【０１５０】
（付記３）
付記２に記載のパケット再送制御装置であって、
前記再送制御が適用される前記パケットを前記処理決定部から受け取り、前記受け取ったパケットを再送バッファに蓄積し、また、前記受け取ったパケットを下位レイヤに出力する送信部と、
前記下位レイヤからパケットを受信する受信部と
を更に備え、
前記受信部が前記再送バッファに蓄積されたパケットに対する確認応答を再送タイムアウト以内に受信しない場合、前記送信部は、再送処理を行い、
前記再送処理において、前記送信部は、前記再送バッファに蓄積されたパケットを前記下位レイヤに再送し、また、前記フローテーブルにおいて当該再送パケットが属するフローに対応付けられた前記パケット再送回数を増加させる
パケット再送制御装置。
【０１５１】
（付記４）
付記３に記載のパケット再送制御装置であって、
前記再送タイムアウトは、フロー毎に決定され、
前記再送管理情報は、フロー毎に決定された前記再送タイムアウトを更に含み、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記パケット再送回数及び前記再送タイムアウトを取得し、
前記処理決定部は、前記再送制御が適用される前記パケットと共に、対応する前記再送タイムアウトの情報を前記送信部に出力する
パケット再送制御装置。
【０１５２】
（付記５）
付記４に記載のパケット再送制御装置であって、
前記受信部は、前記再送制御が適用される前記パケットに対する前記確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、当該パケットが属するフローに対応付けられた前記再送タイムアウトを前記算出された往復遅延時間に基いて更新する
パケット再送制御装置。
【０１５３】
（付記６）
付記５に記載のパケット再送制御装置であって、
前記フローテーブルは、外部のコントローラから変更可能であり、
前記外部のコントローラによって、前記再送タイムアウトの更新は、フロー毎に、強制的に有効化あるいは無効化される
パケット再送制御装置。
【０１５４】
（付記７）
付記１乃至６のいずれか一項に記載のパケット再送制御装置であって、
前記再送管理パラメータは、前記遅延超過回数を含み、
前記処理決定部は、前記上位レイヤからパケットを受け取ると、前記フローテーブルを参照し、前記受け取ったパケットが属するフローに対応付けられた前記遅延超過回数を取得し、
前記遅延超過回数が超過回数閾値以内である場合、前記処理決定部は、前記受け取ったパケットに対して前記再送制御を適用することを決定し、
前記遅延超過回数が前記超過回数閾値を超えている場合、前記処理決定部は、前記受け取ったパケットに対する前記再送制御の適用を中止する
パケット再送制御装置。
【０１５５】
（付記８）
付記７に記載のパケット再送制御装置であって、
更に、前記下位レイヤからパケットを受信する受信部を備え、
前記受信部は、前記再送制御が適用される前記パケットに対する確認応答を受信すると、当該パケットに関する前記往復遅延時間を算出し、
前記算出された往復遅延時間が前記許容時間を超過している場合、前記受信部は、前記フローテーブルにおいて当該パケットが属するフローに対応付けられた前記遅延超過回数を増加させる
パケット再送制御装置。
【０１５６】
（付記９）
付記１乃至８のいずれか一項に記載のパケット再送制御装置であって、
更に、フロー管理部を備え、
前記フロー管理部は、前記フローテーブル中の前記再送管理パラメータを時間経過とともに減少させる、あるいは、前記再送制御が適用される度に、前記再送制御が適用される前記パケットが属するフローに対応付けられた前記再送管理パラメータを減少させる
パケット再送制御装置。
【０１５７】
（付記１０）
付記１乃至９のいずれか一項に記載のパケット再送制御装置であって、
前記フローテーブルは、外部のコントローラから参照及び変更可能である
パケット再送制御装置。
【０１５８】
（付記１１）
付記１乃至９に記載のパケット再送制御装置であって、
前記フローテーブルは、外部のコントローラから変更可能であり、
前記外部のコントローラによって、前記再送制御は、フロー毎に、前記再送管理パラメータに拘わらず強制的に有効化あるいは無効化される
パケット再送制御装置。
【０１５９】
（付記１２）
付記１乃至１１のいずれか一項に記載のパケット再送制御装置であって、
前記フローテーブルの変更内容は、前記パケット再送制御装置から外部のコントローラに通知される
パケット再送制御装置。
【０１６０】
（付記１３）
上位レイヤから入力されたパケットの再送制御を行うパケット再送制御方法であって、
前記上位レイヤからパケットを受け取ることと、
フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することと
を含み、
前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、
前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含み、
前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、
前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、
前記適用可否を決定することは、
前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、
前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、
前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することと
を含む
パケット再送制御方法。
【０１６１】
（付記１４）
上位レイヤから入力されたパケットの再送制御を行うパケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムであって、
前記パケット再送制御処理は、
前記上位レイヤからパケットを受け取ることと、
フローテーブルを参照することによって、前記受け取ったパケットに対する前記再送制御の適用可否を決定することと
を含み、
前記フローテーブルは、前記再送制御を管理するための再送管理情報を、前記パケットが属するフロー毎に示し、
前記再送管理情報は、パケット再送回数及び遅延超過回数のうち少なくとも１つを再送管理パラメータとして含み、
前記遅延超過回数とは、前記パケットに関する往復遅延時間が許容時間を超過した回数であり、
前記往復遅延時間とは、前記パケットの送信時刻から前記パケットに対する確認応答の受信時刻までの時間であり、
前記適用可否を決定することは、
前記受け取ったパケットが属するフローに対応付けられた前記再送管理パラメータを取得することと、
前記再送管理パラメータが閾値以内である場合、前記受け取ったパケットに対して前記再送制御を適用することを決定することと、
前記再送管理パラメータが前記閾値を超えている場合、前記受け取ったパケットに対する前記再送制御の適用を中止することと
を含む
パケット再送制御プログラム。
【０１６２】
本出願は、２０１０年３月１５日に出願された日本国特許出願２０１０−０５７３８１及び２０１０年１１月４日に出願された日本国特許出願２０１０−２４７９０２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2011114910.tif 000003
【図２】
2011114910.tif 000004
【図３】
2011114910.tif 000005
【図４】
2011114910.tif 000006
【図５】
2011114910.tif 000007
【図６】
2011114910.tif 000008
【図７】
2011114910.tif 000009
【図８】
2011114910.tif 000010
【図９】
2011114910.tif 000011
【図１０】
2011114910.tif 000012
【図１１Ａ】
2011114910.tif 000013
【図１１Ｂ】
2011114910.tif 000014
【図１２】
2011114910.tif 000015
【図１３Ａ】
2011114910.tif 000016
【図１３Ｂ】
2011114910.tif 000017
【図１４】
2011114910.tif 000018
【図１５】
2011114910.tif 000019
【図１６】
2011114910.tif 000020
【図１７】
2011114910.tif 000021
【国際調査報告】
2011114910.tif 000022
2011114910.tif 000023
2011114910.tif 000024
2011114910.tif 000025