(57)【要約】【課題】リンクエラーによって多くのパケットが損失してしまうネットワークにおいてリンク帯域を効率的に利用することができるフロー制御方法を提供する。【解決手段】ＴＣＰによるデータ通信におけるフロー制御方法であって、送信側通信機器のアプリケーションから受信側通信機器のアプリケーションに受け渡すべきデータ列が有するデータをデータセグメントとして送信する段階と、データ列が有する送信が完了していないデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータをサプリメントセグメントとして送信する段階と、サプリメントセグメントに対して受信側通信機器から送信される確認応答に基づいて、利用可能なネットワークの帯域幅を測定する段階とを備える。【選択図】図４
2006074251.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰによるデータ通信におけるフロー制御方法であって、
送信側通信機器のアプリケーションから受信側通信機器のアプリケーションに受け渡すべきデータ列が有するデータをデータセグメントとして送信するデータセグメント送信段階と、
前記データ列が有する送信が完了していないデータであって、送信が完了しているデータのうちで前記データ列の先頭から連続するデータに連続しないデータをサプリメントセグメントとして送信するサプリメントセグメント送信段階と、
前記サプリメントセグメントに対して前記受信側通信機器から送信される確認応答に基づいて、利用可能なネットワークの帯域幅を測定する帯域幅測定段階と
を備えるフロー制御方法。
【請求項２】
前記サプリメントセグメントがネットワーク内の通信機器により転送される優先度は、前記データセグメントがネットワーク内の通信機器により転送される優先度より低い
請求項１に記載のフロー制御方法。
【請求項３】
前記サプリメントセグメントに対する確認応答がネットワーク内の通信機器により転送される優先度は、前記サプリメントセグメントがネットワーク内の通信機器により転送される優先度と等しく、前記データセグメントに対する確認応答がネットワーク内の通信機器により転送される優先度は、前記データセグメントがネットワーク内の通信機器により転送される優先度と等しい
請求項２に記載のフロー制御方法。
【請求項４】
前記データセグメント送信段階は、
前記データ列において、送信が完了しているデータのうちで前記データ列の先頭から連続するデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータをデータセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
【請求項５】
前記サプリメントセグメント送信段階は、
送信が完了しているデータのうちで前記データ列の先頭から連続するデータから所定のセグメント数だけ後方に位置するデータをサプリメントセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
【請求項６】
前記サプリメントセグメント送信段階は、
前記データ列において、送信が完了しているデータのうちで前記データ列の先頭から連続するデータから所定のセグメント数だけ後方に位置するデータが存在しない場合、前記データ列において、サプリメントセグメントとして送信されていないデータのうちの最も後方に位置するデータをサプリメントセグメントとして送信する段階
を有する請求項５に記載のフロー制御方法。
【請求項７】
コネクション開始時又はタイムアウト発生時において、送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ×２−１以上の場合、
前記サプリメントセグメント送信段階は、
シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｍａｘｃｗｎｄ−１個のデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
但し、ｍａｘｃｗｎｄは、前記送信側通信機器が前記受信側通信機器に割り当てることを認めた最大の輻輳ウインドウ数とし、ｔ＿ｓｅｑｎｏは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最小のデータのシーケンス番号とする。
【請求項８】
コネクション開始時又はタイムアウト発生時において、前記データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ＋１以上でｍａｘｃｗｎｄ×２−１以下の場合、
前記サプリメントセグメント送信段階は、
シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑまでのデータを選択しながら、選択したデータをサプリメントセグメントとして送信した後、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ−１のデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
但し、ｍａｘｃｗｎｄは、前記送信側通信機器が前記受信側通信機器に割り当てることを認めた最大の輻輳ウインドウ数とし、ｔ＿ｓｅｑｎｏは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最小のデータのシーケンス番号とし、ｃｕｒｓｅｑは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最大のデータのシーケンス番号とする。
【請求項９】
コネクション開始時又はタイムアウト発生時において、前記データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ以下の場合、
前記サプリメントセグメント送信段階は、
シーケンス番号がｃｕｒｓｅｑのデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
但し、ｍａｘｃｗｎｄは、前記送信側通信機器が前記受信側通信機器に割り当てることを認めた最大の輻輳ウインドウ数とし、ｃｕｒｓｅｑは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最大のデータのシーケンス番号とする。
【請求項１０】
前記受信側通信機器から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合であって、前記データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ×２−ｃｗｎｄ／２以上の場合、
前記データセグメント送信段階は、
ネットワークにおいて損失したと判断されたデータセグメントを再送する段階
を有し、
前記サプリメントセグメント送信段階は、
シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑ−ｃｗｎｄ／２個のデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
但し、ｃｗｎｄは、帯域幅測定段階において測定された帯域幅に対応する輻輳ウインドウ数とし、ｔ＿ｓｅｑｎｏは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最小のデータのシーケンス番号とし、ｃｕｒｓｅｑは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最大のデータのシーケンス番号とする。
【請求項１１】
前記受信側通信機器から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合であって、前記データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ以上でｍａｘｃｗｎｄ×２−ｃｗｎｄ／２−１以下の場合、
前記データセグメント送信段階は、
ネットワークにおいて損失したと判断されたデータセグメントを再送する段階
を有し、
前記サプリメントセグメント送信段階は、
シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑまでのデータを選択しながら、選択したデータをサプリメントセグメントとして送信した後、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ−１のデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
但し、ｃｗｎｄは、帯域幅測定段階において測定された帯域幅に対応する輻輳ウインドウ数とし、ｔ＿ｓｅｑｎｏは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最小のデータのシーケンス番号とし、ｃｕｒｓｅｑは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最大のデータのシーケンス番号とする。
【請求項１２】
前記受信側通信機器から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合であって、前記データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ−１以下の場合、
前記データセグメント送信段階は、
ネットワークにおいて損失したと判断されたデータセグメントを再送する段階
を有し、
前記サプリメントセグメント送信段階は、
シーケンス番号がｃｕｒｓｅｑのデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階
を有する請求項１に記載のフロー制御方法。
但し、ｃｗｎｄは、帯域幅測定段階において測定された帯域幅に対応する輻輳ウインドウ数とし、ｃｕｒｓｅｑは、前記データ列が有する送信が完了していないデータのうちでシーケンス番号が最大のデータのシーケンス番号とする。
【請求項１３】
前記データセグメント送信段階は、
ネットワークに存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、前記受信側通信機器にデータセグメントを送信する段階
を有する請求項１に記載のフロー制御方法。
但し、ｃｗｎｄは、帯域幅測定段階において測定された帯域幅に対応する輻輳ウインドウ数とする。
【請求項１４】
前記帯域幅測定段階は、
前記サプリメントセグメントに対する確認応答のうち、既に確認応答を受け取っているデータに対する確認応答に依存せず、未だ確認応答を受け取っていないデータに対する確認応答に基づいて、利用可能なネットワークの帯域幅を測定する段階
を有する請求項１に記載のフロー制御方法。
【請求項１５】
ＴＣＰによるデータ通信を行う通信機器であって、
送信側通信機器のアプリケーションから受信側通信機器のアプリケーションに受け渡すべきデータ列が有するデータをデータセグメントとして送信するデータセグメント送信部と、
前記データ列が有する送信が完了していないデータであって、送信が完了しているデータのうちで前記データ列の先頭から連続するデータに連続しないデータを選択するデータ選択部と、
前記データ選択部が選択したデータをサプリメントセグメントとして送信するサプリメントセグメント送信部と、
前記サプリメントセグメントに対して前記受信側通信機器から送信される確認応答に基づいて、利用可能なネットワークの帯域幅を測定する帯域幅測定部と
を備える通信機器。
【請求項１６】
送信側通信機器及び受信側通信機器を備えるＴＣＰ通信システムであって、
前記送信側通信機器は、
送信側通信機器のアプリケーションから受信側通信機器のアプリケーションに受け渡すべきデータ列が有するデータをデータセグメントとして送信するデータセグメント送信部と、
前記データ列が有する送信が完了していないデータであって、送信が完了しているデータのうちで前記データ列の先頭から連続するデータに連続しないデータを選択するデータ選択部と、
前記データ選択部が選択したデータをサプリメントセグメントとして送信するサプリメントセグメント送信部と、
前記サプリメントセグメントに対して前記受信側通信機器から送信される確認応答に基づいて、利用可能なネットワークの帯域幅を測定する帯域幅測定部と
を有するＴＣＰ通信システム。
【請求項１７】
前記受信側通信機器は、
前記送信側通信機器から送信された前記データセグメント及び前記サプリメントセグメントを受信する受信部と、
前記受信部がデータセグメント又はサプリメントセグメントを受信した場合に、前記受信部が既に受信しているデータセグメント及びサプリメントセグメントのデータのシーケンス番号に、前記受信部が最後に受信したデータセグメント又はサプリメントセグメントのデータのシーケンス番号が付加された確認応答を前記送信側通信機器に送信する確認応答送信部と
を有する請求項１６に記載のＴＣＰ通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フロー制御方法、通信機器、及びＴＣＰ通信システムに関する。特に本発明は、ＴＣＰによるデータ通信におけるフロー制御方法、ＴＣＰによるデータ通信を行う通信機器、及び送信側通信機器及び受信側通信機器を備えるＴＣＰ通信システムに関する。
【背景技術】
【０００２】
パケットによるデータ通信において、通信経路上でのパケット損失によるデータ通信エラーを回避して信頼性を保証するフロー制御方法として、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）が広く使用されており、ＴＣＰ−Ｔａｈｏｅ、ＴＣＰ−Ｒｅｎｏ、ＴＣＰ−ＮｅｗＲｅｎｏ、ＴＣＰ−Ｐｅａｃｈ、ＴＣＰ−ＰｅａｃｈＰｌｕｓ等のバージョンが提案されている。
【非特許文献１】Ｉ．Ｆ．Ａｋｙｉｌｄｉｚ、Ｇ．Ｍｏｒａｂｉｔｏ、Ｓ．Ｐａｌａｚｚｏ、ＴＣＰ−Ｐｅａｃｈ：Ａ  Ｎｅｗ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｓｃｈｅｍｅ  ｆｏｒ  Ｓａｔｅｌｌｉｔｅ  ＩＰ  Ｎｅｔｗｏｒｋｓ、ＩＥＥＥ／ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｎｅｔｗｏｒｋｉｎｇ、Ｊｕｎｅ  ２００１、Ｖｏｌ．９、Ｎｏ．３、ｐ．３０７−３２１
【非特許文献２】Ｇ．Ｍｏｒａｂｉｔｏ、Ｉ．Ｆ．Ａｋｙｉｌｄｉｚ、Ｓ．Ｐａｌａｚｚｏ、ＴＣＰ−Ｐｅａｃｈ：Ａｎａｌｙｔｉｃａｌ  Ｍｏｄｅｌ  ａｎｄ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｅｖａｌｕａｔｉｏｎ、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｊｏｕｒｎａｌ  ｏｆ  Ｓａｔｅｌｌｉｔｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ、Ｓｅｐｔｅｍｂｅｒ／Ｏｃｔｏｒｂｅｒ  ２００１、Ｖｏｌ．１９、Ｎｏ．５、ｐ．４２９−４４２
【非特許文献３】Ｉ．Ｆ．Ａｋｙｉｌｄｉｚ、Ｇ．Ｍｏｒａｂｉｔｏ、Ｓ．Ｐａｌａｚｚｏ、Ｒｅｓｅａｒｃｈ  Ｉｓｓｕｅｓ  ｆｏｒ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌｓ  ｉｎ  Ｓａｔｅｌｌｉｔｅ  ＩＰ  Ｎｅｔｗｏｒｋｓ、ＩＥＥＥ  Ｐｅｒｓｏｎａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ、Ｊｕｎｅ  ２００１、Ｖｏｌ．８、Ｎｏ．３、ｐ．４４−４８
【非特許文献４】Ｉ．Ｆ．Ａｋｙｉｌｄｉｚ、Ｘｉｎ  Ｚｈａｎｇ、Ｊｉａｎ  Ｆａｎｇ、ＴＣＰ−ＰｅａｃｈＰｌｕｓ：Ｅｎｈａｎｃｅｍｅｎｔ  ｏｆ  ＴＣＰ  Ｐｅａｃｎ  ｆｏｒ  Ｓａｔｅｌｌｉｔｅ  ＩＰ  Ｎｅｔｗｏｒｋｓ、ＩＥＥＥ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｌｅｔｔｅｒｓ、Ｊｕｌｙ  ２００２、Ｖｏｌ．６、Ｎｏ．７、ｐ．３０３−３０５
【非特許文献５】Ｍ．Ｍａｔｈｉｓ、Ｊ．Ｍａｈｄａｖｉ、Ｓ．Ｆｌｏｙｄ、Ａ．Ｒｏｍａｎｏｗ、ＴＣＰ  Ｓｅｌｅｃｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｏｐｔｉｏｎ、ＲＦＣ２０１８、Ｏｃｔｏｂｅｒ  １９９６
【非特許文献６】Ｓ．Ｆｌｏｙｄ、Ｊ．Ｍａｈｄａｖｉ、Ｍ．Ｍａｔｈｉｓ、Ｍ．Ｐｏｄｏｌｓｋｙ、Ａｎ  Ｅｘｔｅｎｓｉｏｎ  ｔｏ  ｔｈｅ  Ｓｅｌｅｃｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ（ＳＡＣＫ）  Ｏｐｔｉｏｎ  ｆｏｒ  ＴＣＰ、ＲＦＣ２８８３、Ｊｕｌｙ  ２０００
【非特許文献７】Ｖ．Ｊａｃｏｂｓｏｎ、Ｃｏｎｇｅｓｔｉｏｎ  Ａｖｏｉｄａｎｃｅ  ａｎｄ  Ｃｏｎｔｒｏｌ、ｉｎ  Ｐｒｏｃ．ＡＣＭ  ＳＩＧＣＯＭＭ、Ａｕｇｕｓｔ  １９８８、ｐ．３１４−３２９
【非特許文献８】Ｖ．Ｊａｃｏｂｓｏｎ、Ｍｏｄｉｆｉｅｄ  ＴＣＰ  Ｃｏｎｇｅｓｔｉｏｎ  Ａｖｏｉｄａｎｃｅ  Ａｌｇｏｒｉｔｈｍ、Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ、Ａｐｒｉｌ  １９９０
【非特許文献９】Ｋ．Ｆａｌｌ、Ｓ．Ｆｌｏｙｄ、Ｓｉｍｕｌａｔｏｎ−Ｂａｓｅｄ  Ｃｏｍｐａｒｉｓｏｎｓ  ｏｆ  Ｔａｈｏｅ，Ｒｅｎｏ  ａｎｄ  ＳＡＣＫ  ＴＣＰ、ＡＣＭ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｒｅｖｉｅｗ、Ｊｕｌｙ  １９９６、Ｖｏｌ．２６、Ｎｏ．３、ｐ．５−１２
【非特許文献１０】Ｋ．Ｆａｌｌ、Ｋ．Ｖａｒａｄｈａｎ、ｎｓ  Ｎｏｔｅｓ  ａｎｄ  Ｄｏｃｕｍｅｎｔａｔｉｏｎ、Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ、ｔｈｅ  ＶＩＮＴ  ＵＣ  Ｂｅｒｋｅｌｅｙ、ＬＢＬ、ＵＳＣ／ＩＳＩ、Ｘｅｒｏｘ  ＰＡＲＣ、２００３
【非特許文献１１】Ｓ  Ｕｔｓｕｍｉ、Ｓ．Ｍ．Ｓ．Ｚａｂｉｒ、Ｇ．Ｋｉｔａｇａｔａ、Ｎ．Ｓｈｉｒａｔｏｒｉ、Ｉｍｐｒｏｖｉｎｇ  ＴＣＰ  Ｐｅｒｆｏｒｍａｎｃｅ  ｏｖｅｒ  Ｗｉｒｅｌｅｓｓ  ｗｉｔｈ  Ｄａｔａ  Ｌｉｎｋ  Ｌａｙｅｒ  ＡＲＱ、Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｏｃｉｅｔｙ  ｏｆ  Ｊａｐａｎ（ＩＰＳＪ）  Ｊｏｕｒｎａｌ、Ａｐｒｉｌ  ２００４、Ｖｏｌ．４５、Ｎｏ．４、ｐ．１１１２−１１２０
【非特許文献１２】Ｓ．Ｕｔｓｕｍｉ、Ｓ．Ｍ．Ｓ．Ｚａｂｉｒ、Ｎ．Ｓｈｉｒａｔｏｒｉ、Ａｎ  Ｅｆｆｉｃｉｅｎｔ  Ａｐｐｒｏａｃｈ  ｔｏ  Ｉｍｐｒｏｖｅ  ＴＣＰ  Ｐｅｒｆｏｒｍａｎｃｅ  ｏｖｅｒ  Ｗｉｒｅｌｅｓｓ  Ｎｅｔｗｏｒｋｓ、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ（ＬＮＣＳ）  ２５１０、Ｏｃｔｏｒｂｅｒ  ２００２、ｐ．９１６−９２５
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＴＣＰ−Ｒｅｎｏ又はＴＣＰ−ＮｅｗＲｅｎｏによるフロー制御方法は、フローの数に対してリンク帯域の小さい有線リンクのみを有するネットワークにおいて、リンク帯域を効率的に利用できるが、帯域幅遅延積が大きいネットワークやリンクエラーによって多くのパケットが損失してしまうネットワーク、特に衛星ネットワークにおいて、リンク帯域を効率的に利用することができない。また、ＴＣＰ−Ｐｅａｃｈ又はＴＣＰ−ＰｅａｃｈＰｌｕｓによるフロー制御方法は、帯域幅遅延積が大きいネットワークやリンクエラーによって多くのパケットが損失してしまうネットワーク、特に衛星ネットワークにおいて、リンク帯域を効率的に利用することができるが、ＴＣＰの受信側ホストが、送信側ホストから受信した利用可能な帯域幅を測定するためのセグメントより多くの確認応答を返信するように改ざんすることによって、ＴＣＰフロー間のスループットの公平性が損なわれるという問題がある。
【０００４】
そこで本発明は、上記の課題を解決することができるフロー制御方法、通信機器、及びＴＣＰ通信システムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００５】
本発明の第１の形態によると、ＴＣＰによるデータ通信におけるフロー制御方法であって、送信側通信機器のアプリケーションから受信側通信機器のアプリケーションに受け渡すべきデータ列が有するデータをデータセグメントとして送信するデータセグメント送信段階と、データ列が有する送信が完了していないデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータをサプリメントセグメントとして送信するサプリメントセグメント送信段階と、サプリメントセグメントに対して受信側通信機器から送信される確認応答に基づいて、利用可能なネットワークの帯域幅を測定する帯域幅測定段階とを備える。
【０００６】
サプリメントセグメントがネットワーク内の通信機器により転送される優先度は、データセグメントがネットワーク内の通信機器により転送される優先度より低くてもよい。
【０００７】
サプリメントセグメントに対する確認応答がネットワーク内の通信機器により転送される優先度は、サプリメントセグメントがネットワーク内の通信機器により転送される優先度と等しく、データセグメントに対する確認応答がネットワーク内の通信機器により転送される優先度は、データセグメントがネットワーク内の通信機器により転送される優先度と等しくてもよい。
【０００８】
データセグメント送信段階は、データ列において、送信が完了しているデータのうちでデータ列の先頭から連続するデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータをデータセグメントとして送信する段階を有してもよい。
【０００９】
サプリメントセグメント送信段階は、送信が完了しているデータのうちでデータ列の先頭から連続するデータから所定のセグメント数だけ後方に位置するデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１０】
サプリメントセグメント送信段階は、データ列において、送信が完了しているデータのうちでデータ列の先頭から連続するデータから所定のセグメント数だけ後方に位置するデータが存在しない場合、データ列において、サプリメントセグメントとして送信されていないデータのうちの最も後方に位置するデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１１】
コネクション開始時又はタイムアウト発生時において、送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ×２−１以上の場合、サプリメントセグメント送信段階は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｍａｘｃｗｎｄ−１個のデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１２】
コネクション開始時又はタイムアウト発生時において、データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ＋１以上でｍａｘｃｗｎｄ×２−１以下の場合、サプリメントセグメント送信段階は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑまでのデータを選択しながら、選択したデータをサプリメントセグメントとして送信した後、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ−１のデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１３】
コネクション開始時又はタイムアウト発生時において、データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ以下の場合、サプリメントセグメント送信段階は、シーケンス番号がｃｕｒｓｅｑのデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１４】
受信側通信機器から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合であって、データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ×２−ｃｗｎｄ／２以上の場合、データセグメント送信段階は、ネットワークにおいて損失したと判断されたデータセグメントを再送する段階を有し、サプリメントセグメント送信段階は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑ−ｃｗｎｄ／２個のデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１５】
受信側通信機器から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合であって、データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ以上でｍａｘｃｗｎｄ×２−ｃｗｎｄ／２−１以下の場合、データセグメント送信段階は、ネットワークにおいて損失したと判断されたデータセグメントを再送する段階を有し、サプリメントセグメント送信段階は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑまでのデータを選択しながら、選択したデータをサプリメントセグメントとして送信した後、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ−１のデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１６】
受信側通信機器から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合であって、データ列が有する送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ−１以下の場合、データセグメント送信段階は、ネットワークにおいて損失したと判断されたデータセグメントを再送する段階を有し、サプリメントセグメント送信段階は、シーケンス番号がｃｕｒｓｅｑのデータから降順にデータを選択しながら、選択したデータをサプリメントセグメントとして送信する段階を有してもよい。
【００１７】
データセグメント送信段階は、ネットワークに存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、受信側通信機器にデータセグメントを送信する段階を有してもよい。
【００１８】
帯域幅測定段階は、サプリメントセグメントに対する確認応答のうち、既に確認応答を受け取っているデータに対する確認応答に依存せず、未だ確認応答を受け取っていないデータに対する確認応答に基づいて、利用可能なネットワークの帯域幅を測定する段階を有してもよい。
【００１９】
本発明の第２の形態によると、ＴＣＰによるデータ通信を行う通信機器であって、送信側通信機器のアプリケーションから受信側通信機器のアプリケーションに受け渡すべきデータ列が有するデータをデータセグメントとして送信するデータセグメント送信部と、データ列が有する送信が完了していないデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータを選択するデータ選択部と、データ選択部が選択したデータをサプリメントセグメントとして送信するサプリメントセグメント送信部と、サプリメントセグメントに対して受信側通信機器から送信される確認応答に基づいて、利用可能なネットワークの帯域幅を測定する帯域幅測定部とを備える。
【００２０】
本発明の第３の形態によると、送信側通信機器及び受信側通信機器を備えるＴＣＰ通信システムであって、送信側通信機器は、送信側通信機器のアプリケーションから受信側通信機器のアプリケーションに受け渡すべきデータ列が有するデータをデータセグメントとして送信するデータセグメント送信部と、データ列が有する送信が完了していないデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータを選択するデータ選択部と、データ選択部が選択したデータをサプリメントセグメントとして送信するサプリメントセグメント送信部と、サプリメントセグメントに対して受信側通信機器から送信される確認応答に基づいて、利用可能なネットワークの帯域幅を測定する帯域幅測定部とを有する。
【００２１】
受信側通信機器は、送信側通信機器から送信されたデータセグメント及びサプリメントセグメントを受信する受信部と、受信部がデータセグメント又はサプリメントセグメントを受信した場合に、受信部が既に受信しているデータセグメント及びサプリメントセグメントのデータのシーケンス番号に、受信部が最後に受信したデータセグメント又はサプリメントセグメントのデータのシーケンス番号が付加された確認応答を送信側通信機器に送信する確認応答送信部とを有してもよい。
【００２２】
但し、ｍａｘｃｗｎｄは、送信側通信機器が受信側通信機器に割り当てることを認めた最大の輻輳ウインドウ数とし、ｔ＿ｓｅｑｎｏは、データ列が有する送信が完了していないデータのうちでシーケンス番号が最小のデータのシーケンス番号とし、ｃｕｒｓｅｑは、データ列が有する送信が完了していないデータのうちでシーケンス番号が最大のデータのシーケンス番号とし、ｃｗｎｄは、帯域幅測定段階において測定された帯域幅に対応する輻輳ウインドウ数とする。また、ｃｗｎｄは、Ｎ個の重複確認応答受信直前の輻輳ウインドウ数であってもよい。
【００２３】
なお上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた発明となりうる。
【発明の効果】
【００２４】
本発明のフロー制御方法によれば、受信側通信機器による不正によってＴＣＰフロー間のスループットの公平性が失われず、また帯域幅遅延積の大きいネットワークやリンクエラーによって多くのパケットが損失してしまうネットワーク、特に衛星ネットワークにおいて、リンク帯域を効率的に利用することができる。
【発明を実施するための最良の形態】
【００２５】
以下、発明の実施形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２６】
図１は、本発明の一実施形態に係るＴＣＰ通信システム１００の一例を示す。ＴＣＰ通信システム１００は、送信側通信機器１０２及び受信側通信機器１０４を備える。送信側通信機器１０２と受信側通信機器１０４とは、衛星ＩＰネットワーク等のネットワーク１０６を介してＴＣＰによるデータ通信を行う。
【００２７】
ＴＣＰ通信システム１００は、リンクエラーによって多くのパケットが損失してしまう衛星ＩＰネットワーク等のネットワーク１０６におけるＴＣＰのパフォーマンスを改善し、また受信側通信機器１０４の不正によって不公平に大きなスループットを実現することを防ぐため、ＴＣＰ−Ｐｅａｃｈのフロー制御方法を改造することを目的とする。本実施形態に係るＴＣＰ通信システム１００のフロー制御方法のバージョンをＴＣＰ−Ｃｈｅｒｒｙと呼ぶ。
【００２８】
送信側通信機器１０２は、データ列格納部１１０、データセグメント送信部１１２、タイマ部１１４、ｐｉｐｅ値保持部１１６、確認応答受信部１１８、通信インタフェース１２０、重複確認応答カウンタ部１２４、帯域幅測定部１２６、データ選択部１２８、及びサプリメントセグメント送信部１３０を有する。また、受信側通信機器１０４は、受信部１３２、バッファ１３４、通信インタフェース１３８、及び確認応答送信部１４０を有する。なお、送信側通信機器１０２と受信側通信機器１０４とは同一の機能を有してもよい。即ち、図１に示した送信側通信機器１０２の各構成要素を受信側通信機器１０４が有してもよく、図１に示した受信側通信機器１０４の各構成要素を送信側通信機器１０２が有してもよい。
【００２９】
まず、送信側通信機器１０２の各構成要素の動作を説明する。データ列格納部１１０は、送信側通信機器１０２のアプリケーションから受信側通信機器１０４のアプリケーションに受け渡すべきデータ列を格納する。データセグメント送信部１１２は、データ列格納部１１０が格納するデータ列が有するデータをデータセグメントとして、通信インタフェース１２０を介して送信する。そして、確認応答受信部１１８は、データセグメント送信部１１２から送信されたデータセグメントに対して受信側通信機器１０４から送信される確認応答を、通信インタフェース１２０を介して受信する。
【００３０】
ｐｉｐｅ値保持部１１６は、ネットワーク１０６に存在するデータセグメントの数を示すｐｉｐｅ値を保持する。また、ｐｉｐｅ値保持部１１６は、確認応答受信部１１８が受信した確認応答に基づいて、保持しているｐｉｐｅ値を更新する。具体的には、ｐｉｐｅ値保持部１１６は、データセグメント送信部１１２がデータセグメントをネットワーク１０６に対して送信した場合にｐｉｐｅ値を１増加させ、確認応答受信部１１８がデータセグメントに対する確認応答を受信した場合にｐｉｐｅ値を１減少させる。なお、ｐｉｐｅ値保持部１１６は、サプリメントセグメント送信部１３０がサプリメントセグメントをネットワーク１０６に対して送信した場合、及び確認応答受信部１１８がサプリメントセグメントに対する確認応答を受信した場合には、ｐｉｐｅ値を増減させない。
【００３１】
タイマ部１１４は、データセグメント送信部１１２がデータセグメントを送信してから、確認応答受信部１１８が当該データセグメントに対する確認応答を受信するまでの時間を計測する。そして、タイマ部１１４は、データセグメント送信部１１２がデータセグメントを送信してから、確認応答受信部１１８が当該データセグメントに対する確認応答を受信しない状態が予め定められた時間続くと、タイムアウトによって、当該データセグメントがネットワーク１０６上で損失したと判断し、帯域幅測定部１２６にその旨を通知する。
【００３２】
重複確認応答カウンタ部１２４は、受信側通信機器１０４からの同一のデータセグメントの送信を要求する確認応答の数を計数する。そして、重複確認応答カウンタ部１２４は、受信側通信機器１０４から同一のデータセグメントの送信を要求する確認応答を、予め定められた数であるＮ個重複して受信した場合に、Ｎ個の重複確認応答の受信によって、当該データセグメントがネットワーク１０６上で損失したと判断し、帯域幅測定部１２６にその旨を通知する。
【００３３】
帯域幅測定部１２６は、タイマ部１１４によってタイムアウトが通知された場合、又は重複確認応答カウンタ部１２４によってＮ個の重複確認応答の受信が通知された場合に、利用可能なネットワーク１０６の帯域幅に対応する輻輳ウインドウ数、即ちｃｗｎｄを測定する。即ち、帯域幅測定部１２６は、サプリメントセグメント送信部１３０からサプリメントセグメントを送信させ、当該サプリメントセグメントに対する確認応答に基づいてｃｗｎｄを測定する。なお、帯域幅測定部１２６は、サプリメントセグメントに対する確認応答のうち、確認応答受信部１１８が既に確認応答を受け取っているデータに対する確認応答に依存せず、確認応答受信部１１８が未だ確認応答を受け取っていないデータに対する確認応答に基づいてｃｗｎｄを測定する。
【００３４】
具体的には、データ選択部１２８は、データ列格納部１１０が格納するデータ列が有する、データセグメント送信部１１２による送信が完了していないデータのうちで、データセグメント送信部１１２による送信が完了しているデータと連続しないデータを選択する。そして、サプリメントセグメント送信部１３０は、データ選択部１２８が選択したデータをパケットのペイロードとして含むサプリメントセグメントを、通信インタフェース１２０を介して送信する。そして、確認応答受信部１１８は、サプリメントセグメント送信部１３０から送信されたサプリメントセグメントに対して受信側通信機器１０４から送信される確認応答を、通信インタフェース１２０を介して受信する。そして、帯域幅測定部１２６は、確認応答受信部１１８がサプリメントセグメントに対する確認応答を受信したか否かに基づいてｃｗｎｄを測定する。そして、データセグメント送信部１１２は、帯域幅測定部１２６が測定したｃｗｎｄが、ｐｉｐｅ値保持部１１６が保持するｐｉｐｅ値以上の場合に、データ列格納部１１０が格納するデータ列が有する、送信が完了していないデータのうちでシーケンス番号が最小のデータをデータセグメントとして送信する。
【００３５】
なお、データセグメントは通信における優先度が高く、サプリメントセグメントは通信における優先度が低い。即ち、サプリメントセグメントが送信側通信機器１０２、受信側通信機器１０４を含めたネットワーク１０６内の通信機器により転送される優先度は、データセグメントが送信側通信機器１０２、受信側通信機器１０４を含めたネットワーク１０６内の通信機器により転送される優先度より低く、通信機器内にサプリメントセグメントとデータセグメントが転送待ちしているとき、データセグメントが先に転送される。また、サプリメントセグメントが送信側通信機器１０２、受信側通信機器１０４を含めたネットワーク１０６内の通信機器により破棄されない優先度は、データセグメントが送信側通信機器１０２、受信側通信機器１０４を含めたネットワーク１０６内の通信機器により破棄されない優先度より低く、通信機器内のバッファオーバフロー時、サプリメントセグメントが先に破棄される。また、サプリメントセグメントに対する確認応答の通信における優先度は、サプリメントセグメントの通信における優先度に等しく、データセグメントに対する確認応答における通信の優先度は、データセグメントの通信における優先度に等しい。
【００３６】
なお、本実施形態において、データの送信が完了している状態とは、データセグメント送信部１１２がデータをデータセグメントとして送信し、当該データについて、既に確認応答を受け取った状態、未だ再送要求がない状態、若しくは既に再送要求があって、既に再送し、未だ新たな再送要求がない状態、又はサプリメントセグメント送信部１３０がデータをサプリメントセグメントとして送信し、確認応答受信部１１８が当該データに対する確認応答を受信した状態をいう。ただし、タイムアウト発生時に、タイムアウトしたデータセグメント送信以降に送信したデータが再送要求され、Ｎ個重複確認応答やＳＡＣＫオプションにより、ネットワーク１０６でデータセグメントの損失を検出した場合、検出された損失デ−タが再送要求される。
【００３７】
次に、受信側通信機器１０４の各構成要素の動作を説明する。受信部１３２は、送信側通信機器１０２から送信されたデータセグメント及びサプリメントセグメントを、通信インタフェース１３８を介して受信する。そして、バッファ１３４は、受信部１３２が受信したデータセグメントのデータ又はサプリメントセグメントのデータを保持する。バッファ１３４は、受信部１３２が受信したデータのうち、データ列の先頭から連続しないデータを保持し、データ列の先頭から連続するデータは、受信部１３２からアプリケーションに受け渡される。バッファ１３４は、輻輳ウインドウ数ｍａｘｃｗｎｄに対応する大きさである。ｍａｘｃｗｎｄは、例えば１６ビットウインドウサイズである。但し、バッファ１３４は、受信側通信機器１０４は、ウインドウスケールオプションによって表現される３２ビットウインドウサイズだけのデータセグメントのデータをバッファすることができる。
【００３８】
確認応答送信部１４０は、受信部１３２がデータセグメント又はサプリメントセグメントを受信した場合に、確認応答を送信側通信機器１０２に送信する。具体的には、確認応答送信部１４０は、受信部１３２が既に受信しているデータセグメント及びサプリメントセグメントのデータのシーケンス番号に、受信部１３２が最後に受信したデータセグメント又はサプリメントセグメントのデータのシーケンス番号が付加された確認応答を送信側通信機器１０２に送信する。
【００３９】
図２は、本実施形態に係る送信側通信機器１０２によるフロー制御方法の一例を示す。送信側通信機器１０２によるフロー制御方法は、第１帯域幅測定工程（Ｓｕｒｐｒｉｓｅ  Ｓｔａｒｔ：Ｓ３００）、輻輳回避工程（Ｃｏｎｇｅｓｔｉｏｎ  Ａｖｏｉｄａｎｃｅ：Ｓ３０２）、タイムアウト発生又はＮ個重複確認応答受信の判断工程（Ｓ３０４）、第１損失セグメント再送工程（Ｒｅｔｒａｎｓｍｉｔ：Ｓ３０６）、第２損失セグメント再送工程（Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｔ：Ｓ３０８）、及び第２帯域幅測定工程（Ｊｏｙｆｕｌ  Ｒｅｃｏｖｅｒｙ：Ｓ３１０）を備える。第１帯域幅測定工程（Ｓ３００）及び第２帯域幅測定工程（Ｓ３１０）は、本発明のサプリメントセグメント送信段階及び帯域幅測定段階の一例であり、輻輳回避工程（Ｓ３０２、第１損失セグメント再送工程（Ｓ３０６）、及び第２損失セグメント再送工程（Ｓ３０８）は、本発明のデータセグメント送信段階の一例である。
【００４０】
送信側通信機器１０２は、ＴＣＰコネクションの確立後、又はタイムアウトによるデータセグメントの再送後、即ち第１損失セグメント再送工程（Ｓ３０６）の後に、第１帯域幅測定工程（Ｓ３００）を実行する。第１帯域幅測定工程（Ｓ３００）については、図３から図５において詳細に説明する。
【００４１】
送信側通信機器１０２は、Ｎ個重複確認応答受信によるデータセグメントの再送後、即ち第２損失セグメント再送工程（Ｓ３０８）の後に、第２帯域幅測定工程（Ｓ３１０）を実行する。第２帯域幅測定工程（Ｓ３１０）については、図６から図８において詳細に説明する。
【００４２】
送信側通信機器１０２は、第１帯域幅測定工程（Ｓ３００）の実行後、又は第２帯域幅測定工程（Ｓ３１０）の実行後に、輻輳回避工程（Ｓ３０２）を実行する。輻輳回避工程（Ｓ３０２）において、データセグメント送信部１１２は、データ列格納部１１０が格納しているデータ列が有するデータを順次データセグメントとして送信し、確認応答受信部１１８が応答確認を受信するごとにｃｗｎｄをシフトさせてデータセグメントを送信する。そして、タイマ部１１４によりタイムアウトの発生が検出された場合（Ｓ３０４−１）、重複確認応答カウンタ部１２４により同一のデータセグメントを要求する確認応答Ｎ個の受信が検出された場合（Ｓ３０４−２）に、輻輳回避工程（Ｓ３０２）が終了する。
【００４３】
図３は、本実施形態に係る第１帯域幅測定工程（Ｓ３００）におけるサプリメントセグメントの選択方法の第１の例を示す。図３では、コネクション開始時又はタイムアウト発生時（Ｓ３０４−１）において、データ列格納部１１０が格納するデータ列のうちで受信側通信機器１０４への送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ×２−１以上の場合について説明する。
【００４４】
コネクション開始時又はタイムアウト発生時、データセグメント送信部１１２がデータ列におけるシーケンス番号がｔ＿ｓｅｑｎｏ−１のデータをデータセグメントとして再送した後、データ選択部１２８は、送信が完了しているデータのうちでデータ列の先頭から連続するデータの最後のデータから所定のセグメント数だけ後方に位置するデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。
【００４５】
具体的には、データ選択部１２８は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｍａｘｃｗｎｄ−１個のデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。そして、帯域幅測定部１２６は、サプリメントセグメントに対して受信側通信機器１０４から送信される確認応答に基づいて、利用可能なネットワーク１０６の帯域幅に対応する輻輳ウインドウｃｗｎｄを測定する。
【００４６】
データセグメント送信部１１２は、ネットワーク１０６に存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、データ列において、データセグメントとして送信が完了しているデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータを、データセグメントとして送信する。具体的には、データセグメント送信部１１２は、シーケンス番号ｔ＿ｓｅｑｎｏのデータから順にデータセグメントとして送信する。
【００４７】
図４は、本実施形態に係る第１帯域幅測定工程（Ｓ３００）におけるサプリメントセグメントの選択方法の第２の例を示す。図４では、コネクション開始時又はタイムアウト発生時（Ｓ３０４−１）において、データ列格納部１１０が格納するデータ列のうちで受信側通信機器１０４への送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ＋１以上でｍａｘｃｗｎｄ×２−１以下の場合について説明する。
【００４８】
コネクション開始時又はタイムアウト発生時、データセグメント送信部１１２がデータ列におけるシーケンス番号がｔ＿ｓｅｑｎｏ−１のデータをデータセグメントとして再送した後、データ選択部１２８は、送信が完了しているデータのうちでデータ列の先頭から連続するデータの最後のデータから所定のセグメント数だけ後方に位置するデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。また、データ選択部１２８は、データ列において、データセグメントとして送信が完了しているデータから所定のセグメント数だけ後方に位置するデータが存在しない場合、データ列において、サプリメントセグメントとして送信されていないデータのうちの最も後方に位置するデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。
【００４９】
具体的には、データ選択部１２８は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑまでのデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。その後、データ選択部１２８は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ−１のデータから降順にｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ×２−ｃｕｒｓｅｑ−１個のデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。そして、帯域幅測定部１２６は、サプリメントセグメントに対して受信側通信機器１０４から送信される確認応答に基づいて、利用可能なネットワーク１０６の帯域幅に対応する輻輳ウインドウｃｗｎｄを測定する。
【００５０】
データセグメント送信部１１２は、ネットワーク１０６に存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、データ列において、送信が完了しているデータのうちでデータ列の先頭から連続するデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータを、データセグメントとして送信する。具体的には、データセグメント送信部１１２は、シーケンス番号ｔ＿ｓｅｑｎｏのデータから順にデータセグメントとして送信する。
【００５１】
図５は、本実施形態に係る第１帯域幅測定工程（Ｓ３００）におけるサプリメントセグメントの選択方法の第３の例を示す。図５では、コネクション開始時又はタイムアウト発生時（Ｓ３０４−１）において、データ列格納部１１０が格納するデータ列のうちで受信側通信機器１０４への送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ以下の場合について説明する。
【００５２】
コネクション開始時又はタイムアウト発生時、データセグメント送信部１１２がデータ列におけるシーケンス番号がｔ＿ｓｅｑｎｏ−１のデータをデータセグメントとして再送した後、データ選択部１２８は、データ列において、サプリメントセグメントとして送信されていないデータのうちの最も後方に位置するデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。
【００５３】
具体的には、データ選択部１２８は、シーケンス番号がｃｕｒｓｅｑのデータから降順にｍａｘｃｗｎｄ−１個のデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。そして、帯域幅測定部１２６は、サプリメントセグメントに対して受信側通信機器１０４から送信される確認応答に基づいて、利用可能なネットワーク１０６の帯域幅に対応する輻輳ウインドウｃｗｎｄを測定する。
【００５４】
データセグメント送信部１１２は、ネットワーク１０６に存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、データ列において、送信が完了しているデータのうちでデータ列の先頭から連続するデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータを、データセグメントとして送信する。具体的には、データセグメント送信部１１２は、シーケンス番号ｔ＿ｓｅｑｎｏのデータから順にデータセグメントとして送信する。
【００５５】
図６は、本実施形態に係る第２帯域幅測定工程（Ｓ３１０）におけるサプリメントセグメントの選択方法の第１の例を示す。図６では、受信側通信機器１０４から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合（Ｓ３０４−２）であって、データ列格納部１１０が格納するデータ列のうちで受信側通信機器１０４への送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ×２−ｃｗｎｄ／２以上の場合について説明する。
【００５６】
Ｎ個重複確認応答受信時、データセグメント送信部１１２がネットワーク１０６において損失したと判断されたデータセグメント（ｄｒｏｐ）を再送した後、データ選択部１２８は、送信が完了しているデータのうちでデータ列の先頭から連続するデータの最後のデータから所定のセグメント数だけ後方に位置するデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。
【００５７】
具体的には、データ選択部１２８は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｍａｘｃｗｎｄ−ｃｗｎｄ／２個のデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。そして、帯域幅測定部１２６は、サプリメントセグメントに対して受信側通信機器１０４から送信される確認応答に基づいて、利用可能なネットワーク１０６の帯域幅に対応する輻輳ウインドウｃｗｎｄを測定する。
【００５８】
データセグメント送信部１１２は、ネットワーク１０６に存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、データ列において、送信が完了しているデータのうちでデータ列の先頭から連続するデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータを、データセグメントとして送信する。具体的には、データセグメント送信部１１２は、シーケンス番号ｔ＿ｓｅｑｎｏのデータから順にデータセグメントとして送信する。
【００５９】
図７は、本実施形態に係る第２帯域幅測定工程（Ｓ３１０）におけるサプリメントセグメントの選択方法の第２の例を示す。図７では、受信側通信機器１０４から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合（Ｓ３０４−２）であって、データ列格納部１１０が格納するデータ列のうちで受信側通信機器１０４への送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ以上でｍａｘｃｗｎｄ×２−ｃｗｎｄ／２−１以下の場合について説明する。
【００６０】
Ｎ個重複確認応答受信時、データセグメント送信部１１２がネットワーク１０６において損失したと判断されたデータセグメント（ｄｒｏｐ）を再送した後、データ選択部１２８は、送信が完了しているデータのうちでデータ列の先頭から連続するデータの最後のデータから所定のセグメント数だけ後方に位置するデータであって、送信が完了しているデータのうちでデータ列の先頭から連続するデータに連続しないデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。また、データ選択部１２８は、データ列において、データセグメントとして送信が完了しているデータから所定のセグメント数だけ後方に位置するデータが存在しない場合、データ列において、サプリメントセグメントとして送信されていないデータのうちの最も後方に位置するデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。
【００６１】
具体的には、データ選択部１２８は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄのデータから昇順にｃｕｒｓｅｑまでのデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。その後、データ選択部１２８は、シーケンス番号がｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ−１のデータから降順にｔ＿ｓｅｑｎｏ＋ｍａｘｃｗｎｄ×２ーｃｗｎｄ／２＋ｃｕｒｓｅｑ個のデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。そして、帯域幅測定部１２６は、サプリメントセグメントに対して受信側通信機器１０４から送信される確認応答に基づいて、利用可能なネットワーク１０６の帯域幅に対応する輻輳ウインドウｃｗｎｄを測定する。
【００６２】
データセグメント送信部１１２は、ネットワーク１０６に存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、データ列において、送信が完了しているデータのうちでデータ列の先頭から連続するデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータを、データセグメントとして送信する。具体的には、データセグメント送信部１１２は、シーケンス番号ｔ＿ｓｅｑｎｏのデータから順にデータセグメントとして送信する。
【００６３】
図８は、本実施形態に係る第２帯域幅測定工程（Ｓ３１０）におけるサプリメントセグメントの選択方法の第３の例を示す。図８では、受信側通信機器１０４から同一のデータセグメントの送信を要求する確認応答をＮ個重複して受信した場合（Ｓ３０４−２）であって、データ列格納部１１０が格納するデータ列のうちで受信側通信機器１０４への送信が完了していないデータのセグメント数が、ｍａｘｃｗｎｄ−１以下の場合について説明する。
【００６４】
Ｎ個重複確認応答受信時、データセグメント送信部１１２がネットワーク１０６において損失したと判断されたデータセグメント（ｄｒｏｐ）を再送した後、データ選択部１２８は、データ列において、サプリメントセグメントとして送信されていないデータのうちの最も後方に位置するデータを選択し、サプリメントセグメント送信部１３０は、データ選択部１２８によって選択されたデータをサプリメントセグメントとして送信する。
【００６５】
具体的には、データ選択部１２８は、シーケンス番号がｃｕｒｓｅｑのデータから降順にｍａｘｃｗｎｄ−ｃｗｎｄ／２個のデータを選択しながら、サプリメントセグメント送信部１３０は、選択されたデータをサプリメントセグメントとして送信する。そして、帯域幅測定部１２６は、サプリメントセグメントに対して受信側通信機器１０４から送信される確認応答に基づいて、利用可能なネットワーク１０６の帯域幅に対応する輻輳ウインドウｃｗｎｄを測定する。
【００６６】
データセグメント送信部１１２は、ネットワーク１０６に存在するデータセグメントの数を示すｐｉｐｅ値がｃｗｎｄ以下の場合に、データ列において、データセグメントとして送信が完了しているデータと、サプリメントセグメントとして送信されたデータとの間に位置するデータを、データセグメントとして送信する。具体的には、データセグメント送信部１１２は、シーケンス番号ｔ＿ｓｅｑｎｏのデータから順にデータセグメントとして送信する。
【００６７】
図９は、本実施形態に係る輻輳回避工程（Ｓ３０２）から他の工程への移行における他の例を示す。本実施形態に係るフロー制御方法において、データセグメントに対して通信における優先度が低いサプリメントセグメントを用いて、利用可能なネットワーク１０６の帯域幅を測定するため、測定される帯域幅は実際より小さい値となる。したがって、測定直後のデータセグメントの損失が、ネットワーク１０６の輻輳によるものであると考えることが合理的ではない。
【００６８】
そこで、図９に示すように、第２帯域幅測定工程（Ｓ３０８）においてサプリメントセグメントＡを送信することによりネットワーク１０６の帯域幅を測定している間、及び第２帯域幅測定工程（Ｓ３０８）においてサプリメントセグメントＡを送信することにより測定された帯域幅分のデータセグメントＢを送信している間は、輻輳回避工程（Ｓ３０２）においてネットワーク１０６でデータセグメントの損失を検出した場合（Ｓ３０４）であっても、輻輳ウインドウｃｗｎｄを縮小しない。即ち、この間は、第１損失セグメント再送工程（Ｓ３０６）又は第２損失セグメント再送工程（Ｓ３０８）を実行して損失したデータセグメントを再送するのみで、第１帯域幅測定工程（Ｓ３００）又は第２帯域幅測定工程（Ｓ３１０）を実行しない。これにより、利用可能なネットワーク１０６の帯域幅の測定直後のリンクエラーによるエラー回復機能の実行を回避し、輻輳ウインドウｃｗｎｄを適切な値に調整することができる。
【００６９】
本実施形態に係るフロー制御方法によれば、リンクエラーが高くまた伝搬遅延時間の大きい衛星ネットワークのようなネットワーク１０６の性能を改善することができる。また、送信側通信機器１０２のアプリケーションから受信側通信機器１０４のアプリケーションに受け渡すべきデータ列が有するデータをサプリメントセグメントのペイロードとし、サプリメントセグメントを用いてネットワーク１０６の帯域幅を測定することにより、受信側通信機器１０４の不正によりＴＣＰフロー間の不公平なスループットが実現されることを防ぐことができる。
【００７０】
以上、実施形態を用いて本発明を説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更又は改良を加えることができる。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００７１】
【図１】ＴＣＰ通信システム１００の一例を示す図である。
【図２】送信側通信機器１０２によるフロー制御方法の一例を示す図である。
【図３】サプリメントセグメントの選択方法の第１の例を示す図である。
【図４】サプリメントセグメントの選択方法の第２の例を示す図である。
【図５】サプリメントセグメントの選択方法の第３の例を示す図である。
【図６】サプリメントセグメントの選択方法の第１の例を示す図である。
【図７】サプリメントセグメントの選択方法の第２の例を示す図である。
【図８】サプリメントセグメントの選択方法の第３の例を示す図である。
【図９】輻輳回避工程から他の工程への移行における他の例を示す図である。
【符号の説明】
【００７２】
１００  ＴＣＰ通信システム
１０２  送信側通信機器
１０４  受信側通信機器
１０６  ネットワーク
１１０  データ列格納部
１１２  データセグメント送信部
１１４  タイマ部
１１６  ｐｉｐｅ値保持部
１１８  確認応答受信部
１２０  通信インタフェース
１２４  重複確認応答カウンタ部
１２６  帯域幅測定部
１２８  データ選択部
１３０  サプリメントセグメント送信部
１３２  受信部
１３４  バッファ
１３８  通信インタフェース
１４０  確認応答送信部
【図１】
2006074251.tif 000003
【図２】
2006074251.tif 000004
【図３】
2006074251.tif 000005
【図４】
2006074251.tif 000006
【図５】
2006074251.tif 000007
【図６】
2006074251.tif 000008
【図７】
2006074251.tif 000009
【図８】
2006074251.tif 000010
【図９】
2006074251.tif 000011