(57)【要約】  ＷＡＮのようなＲＴＴが大きく、ホップ数が大きく廃棄発生箇所が多い環境において、大きなスループットを得られる独自ＴＣＰによる通信が、通常のＴＣＰによる通信と競合しても、回線帯域を占有することを防ぐ。ＴＣＰ通信の送信帯域を制御する通信装置が、前記ＴＣＰ通信において輻輳が検出されず、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、前記ＴＣＰ通信の送信帯域を線形的に増加させる手段と、前記の一定の期間が過ぎた後、送信帯域を非線形的に増加させる手段と、前記ＴＣＰ通信において、廃棄率や再送率の変化率を用いて輻輳を検出する手段と、送信帯域と再送帯域の過去の履歴を用いて再送率とその変化率を推定する手段と、送信帯域とＡＣＫ受信数の過去の履歴を用いて廃棄率とその変化率を推定する手段を備える。
2013125096.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される第一の通信装置であって、
前記第一の通信装置から前記ネットワークを介して第二の通信装置に送信されるパケットに関する帯域をインターバル毎に管理し、
前記管理される現在のインターバルの帯域及び過去のインターバルにおける帯域に基づいて、前記現在のインターバルよりも後のインターバルにおけるパケットを送出するための制御帯域を増加させる場合、
所定の期間は、第一の増加率で制御帯域を増加させ、前記所定の期間経過後は、第一の増加率よりも高い、第二の増加率で前記制御帯域を増加させる送信帯域制御部と、
前記制御帯域に従って、パケットを前記ネットワークに送出する送信部と、を有する、ことを特徴とする第一の通信装置。
【請求項２】
請求項１記載の通信装置であって
前記送信されるパケットの廃棄状況が所定の条件に満たない場合、
前記送信帯域制御部は、前記制御帯域を前記所定の期間経過するまでは、線形的に増加させ、前記所定の期間経過後は、非線形的に増加させる、ことを特徴とする、通信装置。
【請求項３】
請求項２記載の通信装置であって、
前記所定の条件は、廃棄率が所定の閾値に達する場合であり、
前記所定の条件を満たさない場合は輻輳未検出と判定し、前記輻輳未検出の場合、前記送信帯域制御部は、前記送信されるパケットのうち未受信の箇所を示す情報と、前記送信されるパケットの受領確認応答とを含む通知の受領に応じて、制御帯域を増加させる、ことを特徴とする、通信装置。
【請求項４】
請求項１ないし４記載の通信装置であって、
各インターバル間の送信帯域及び再送帯域それぞれの比較結果に基づいて輻輳か否かを検出する、ことを特徴とする通信装置。
【請求項５】
請求項１ないし４に記載の通信装置であって、
前記送信帯域制御部は、送信帯域と再送帯域と前記受領確認応答の受信数の過去の履歴を用いて廃棄率または再送率とそれらの変化率を推定して、
輻輳を検出したときに、送信帯域と再送帯域と前記受信数の過去の履歴を用いて、送信帯域を減少させる、ことを特徴とする通信装置。
【請求項６】
請求項１ないし５記載の通信装置であって、
前記通信装置は、ＴＣＰ通信により前記パケットを送信し、
前記所定の期間が、前記ＴＣＰ通信におけるＲＴＴと送信帯域の過去の履歴によって定まることを特徴とする通信装置。
【請求項７】
請求項１ないし６記載の通信装置であって、
前記送信帯域制御部は、現時点よりも過去のインターバルにおいて、輻輳未検出で送信帯域の最大値を超えたか否かで、増加速度を決定することを特徴とする通信装置。
【請求項８】
請求項１ないし７記載の通信装置であって、
前記送信帯域制御部は、前記所定の期間経過後は、指数的に増加させることを特徴とする通信装置。
【請求項９】
請求項１ないし８記載の通信装置であって、
前記通信装置は、前記計算機間のＴＣＰ通信により前記パケットを送信し、
前記ＴＣＰ通信における平均ＲＴＴと初期ＲＴＴの比率に基づいて、増加速度を決定することを特徴とする通信装置。
【請求項１０】
請求項１ないし９記載の通信装置であって、
ＴＣＰ通信に基づく計算機間のデータ転送を中継し、前記データ転送を行うＴＣＰ通信のうち、所定のＴＣＰ通信に対して前記送信帯域制御部による送信帯域制御を適用し、他のＴＣＰ通信については、送信帯域制御を適用しない、ことを特徴とする通信装置。
【請求項１１】
請求項１０記載の通信装置であって、通信装置が中継するＵＤＰパケット及びＡＲＰパケットは、前記送信帯域制御部での送信帯域制御を適用しない、ことを特徴とする通信装置。
【請求項１２】
請求項１記載の通信装置であって、
前記送信部は、前記パケットを送信するための通信を確立する確立要求パケットを送信し、
確立要求パケットに対する受信される応答パケットに基づいて、前記パケットに対して、
前記送信帯域制御部による帯域制御を適用するか、否かを決定する、ことを特徴とする、
通信装置。
【請求項１３】
請求項１２に記載の通信装置であって、
前記確立要求パケットは、前記ＴＣＰ通信の開始時に送信され、
銭応答パケットに対向装置から特定の値を持つオプション情報が含まれない場合、前記送信帯域制御部による帯域制御を適用することを特徴とする通信装置。
【請求項１４】
請求項１３に記載の通信装置であって、
前記ＴＣＰ通信の開始時に対向装置から特定の値を持つオプション情報が送付されないときに限り、送信帯域とＡＣＫ受信数の履歴を用いて廃棄率を推定することを特徴とする通信装置。
【請求項１５】
複数の計算機に接続される第一のネットワークと広域網である第２のネットワークとに接続される複数のＴＣＰ通信を中継する通信装置が、
各ＴＣＰ通信の送信帯域を制御する帯域制御部と、
各ＴＣＰ通信の受信確認済みのデータ箇所の履歴を記録する状態テーブルと、
各ＴＣＰ通信における送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴を記録する帯域テーブルと、
を有し、
前記帯域制御部が、状態テーブルに記載の送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴と、状態テーブルに記載の受信確認済みのデータ箇所の履歴と基づいて、ＴＣＰ通信の輻輳の有無と、受信確認済みのデータ箇所が更新中か否かを判定し、輻輳が検出されず、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、ＴＣＰ通信の送信帯域を線形的に増加させ、前記の一定の期間が過ぎた後、ＴＣＰ通信の送信帯域を非線形的に増加させる、ことを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、帯域制御方法、及び通信システムに係り、特に、計算機間の通信帯域を制御する通信装置に関する。
【背景技術】
【０００２】
クラウド等に用いられる拠点間の通信網として、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−  Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）技術等を用いたＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を用いることが、一般的になっている。【０００３】
或る拠点に存在する端末などの計算機が、別の拠点に存在する端末と通信する場合は、自拠点ＬＡＮとＷＡＮを接続する回線と、ＷＡＮと別拠点ＬＡＮを接続する回線とを経由して通信が行われる。これらの回線は、契約帯域によって、使用可能な帯域幅が制限されている。【０００４】
端末間の通信では、ＴＣＰを用いるのが一般的である。ＴＣＰ通信では、送信端末が送信したデータに対して、受信端末が受信済みデータの位置を送信端末にフィードバック通知する。送信端末は、フィードバック通知される受信済みデータの位置が増加しなくなると、廃棄検出と判定する。【０００５】
さらに、送信端末は、輻輳ウィンドウサイズ（受信したことを受信端末から通知されなくても送信可能なデータサイズ）と呼ばれるパラメータを管理しており、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）や廃棄検出の有無に応じて、輻輳ウィンドウサイズを変化させる。【０００６】
廃棄検出時やＲＴＴ増加時にネットワークが混雑していると判定して、ウィンドウサイズを減少させることで、送信帯域を間接的に減少させて、ネットワークの混雑を回避する。また、廃棄が無い時やＲＴＴ減少時にネットワークが空いていると判定して、ウィンドウサイズを増加させることで、送信帯域を間接的に増加させて、ネットワークの回線帯域を有効利用する。【０００７】
ＲＴＴが大きいほど、廃棄率が大きいほど、ウィンドウサイズが増加しにくくなり、帯域が小さくなる。【０００８】
以上のように、ＷＡＮにおけるＴＣＰを用いた通信では、送信帯域がＲＴＴと廃棄率に大きく左右される。【０００９】
ウィンドウサイズを増加させる方法として、最初は非線形に増加させていき、ある閾値を上回った後は、線形に増加させていく技術もある（特許文献１）。【００１０】
一方、特許文献２は、ＷＡＮにおけるＴＣＰを用いた通信システムにおいて、受信側端末に接続した装置が、送信側端末に接続した装置に対して廃棄箇所を全てフィードバック通知する手段と、送信側端末に接続した装置がフィードバック通知された廃棄箇所を再送する手段と、送信側端末に接続した装置が再送帯域・廃棄帯域に基づいて送信帯域を制御する手段を備える。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】ＷＯ２００７／０９２９０１号
【特許文献２】ＷＯ２０１１／０３３８９４号
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ＴＣＰを用いた通信では、送信帯域がＲＴＴと廃棄率に大きく左右されるため、ＷＡＮのようなＲＴＴが大きく、ホップ数が大きく廃棄発生箇所が多い環境で、契約帯域を大幅に下回る通信帯域しか得られない場合がある。【００１３】
また、特許文献２では、ＲＴＴや廃棄率が大きいＷＡＮのような回線でも、大きな通信帯域を確保することができる。【００１４】
ところが、通常のＴＣＰを用いた通信と、特許文献２のような帯域制御を行う通信が、同一の通信回線を共有する場合、特許文献２による通信のように、回線帯域を占有してしまい、通常のＴＣＰを用いた通信が通信帯域を確保できないケースがあった。【００１５】
本発明は、以上の点に鑑み、通常のＴＣＰを用いた他の通信が、通信帯域を確保できるようにしつつ、送信帯域を制御する通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記課題を少なくとも一を解決するために、本願発明の一態様では、ネットワークに接続される第一の通信装置であって、第一の通信装置から第二の通信装置に送信されるパケットに関する帯域をインターバル毎に管理し、管理される現在のインターバルの帯域及び過去のインターバルにおける帯域に基づいて、現在のインターバルよりも後のインターバルにおけるパケットを送出するための制御帯域を増加させる場合、所定の期間は、第一の増加率で制御帯域を増加させ、所定の期間経過後は、第一の増加率よりも高い、第二の増加率で前記制御帯域を増加させ、その制御帯域に従って、パケットをネットワークに送出する送信部と、を有する。
【発明の効果】
【００１７】
本発明によると、同一の通信回線を複数の通信で共有する場合でも、一の通信における帯域制御による回線での回線帯域を占有することを防ぎ、複数の通信が通信帯域を確保することができ、公平な帯域の利用となる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態における通信装置を含むネットワークシステムの構成図。
【図２】本実施の形態における通信装置２００のブロック図。
【図３】バッファのポインタの説明図。
【図４】パケットのフォーマット図。
【図５】状態テーブル２１２のフォーマット図。
【図６】プロキシ部２０６のブロック図。
【図７Ａ】ＴＣＰ部２０９のブロック図。
【図７Ｂ】ＴＣＰ部２０３のブロック図。
【図８】帯域テーブル２１３のフォーマット図。
【図９】通常ＴＣＰと独自ＴＣＰを比較する説明図。
【図１０】廃棄率の変化率を用いた輻輳制御の説明図。
【図１１】シェーパ毎の帯域テーブル２１３が保持する値の意味を説明する概念図。
【図１２Ａ】再送率の変化率と、コネクション数とアクセス帯域を用いて制御帯域を更新するフローチャート図Ａ。
【図１２Ｂ】再送率の変化率と、コネクション数とアクセス帯域を用いて制御帯域を更新するフローチャート図Ｂ。
【図１３】制御帯域を更新する上位のフローチャート図。
【図１４】ＲＴＴ毎に制御帯域を定期更新する部分のフローチャート図。
【図１５】制御帯域を不定期更新する部分のフローチャート図。
【図１６Ａ】制御帯域を増加させる部分のフローチャート図Ａ。
【図１６Ｂ】制御帯域を増加させる部分のフローチャート図Ｂ。
【図１６Ｃ】制御帯域を増加させる部分のフローチャート図Ｃ。
【図１７】制御帯域の変化の４種類のフェーズを説明する概念図。
【図１８】対向装置の独自ＴＣＰへの対応の有無に応じてモードを切り替える概念図。
【図１９】対向装置の独自ＴＣＰへの対応の有無に応じてモードを切り替えるフローチャート図。
【図２０】対向装置の独自ＴＣＰへの対応の有無に応じてモードを切り替えるフローチャート図。
【図２１】対向装置の有無に応じて廃棄率／再送率と再送帯域の計算方法を変更するフローチャート図。
【図２２】独自ＴＣＰと通常ＴＣＰの再送方法の差異
【図２３】モード／最低帯域指定テーブルのフォーマット図。
【発明を実施するための形態】
【００１９】
本発明を実施するための代表的な形態は、下記の通りである。実施例１には基本的な一形態を、記載する。
【実施例１】
【００２０】
まず、図１を用いて、本発明が解決しようとする課題について説明する。【００２１】
図１は、通信装置を含むネットワークシステムの構成図を示す。
通信装置（中継装置ともいう。以下、単に装置と記す）１０１、１０２及びルータ１８６は、複数の拠点内のＬＡＮ１１０、１２０、１３０とＷＡＮ１４０を接続する通信回線上に設置される。また、複数の計算機１１１、１１２、１１３、は、ＬＡＮ１１０を介して通信装置１０１に接続される。複数の計算機１２１、１２２、１２３は、ＬＡＮ１２０を介して、通信装置１０２に接続される。【００２２】
また、通信装置１０１、１０２とＷＡＮ１４０は、アクセス回線１９１、１９２で接続されている。【００２３】
通信装置１０１は、例えば、特許文献２で開示されるような独自ＴＣＰによる送信帯域制御を実行するモードを選択し、選択されたモードに従って帯域制御を行う送信帯域制御部１５０を有する。通信装置１０２は、通信装置１０１とのＷＡＮ１４０を介して通信を高速化するために必要なＡＣＫ送信部１５５を備える。図１に示す通信装置１０１、及び通信装置１０２では、計算機間でのデータ通信を行うための２種類のコネクションを確立される例を示す。第一のコネクションは、送信帯域制御部１５０による帯域制御を行う、計算機１１１及び１２１間のコネクション１６０（独自ＴＣＰ）である。第２のコネクションは、送信帯域制御部を介さない、計算機１１３及び１２３間の通常ＴＣＰのコネクション１６３である。なお、送信帯域制御部１５０及びＡＣＫ送信部１５５双方が通信装置１０１や１０２に備えられていてもよい。【００２４】
ルータ１８５は、ＬＡＮ（図示せず）を介して計算機１３４に接続される。ルータ１８５は、ＷＡＮ１４０を介してルータ１８６や、通信装置１０２に接続される。ルータ１８６は、ＬＡＮ１３０を介して複数の計算機１３１、１３２、１３３と接続される。図１に示す計算機１３１からのコネクション１６５は、通常ＴＣＰのコネクションで、ＷＡＮを介してルータ１８５は、計算機１３４と計算機１３１とのＴＣＰプロトコルに従ったデータ通信を行う。【００２５】
図１のように独自ＴＣＰによるコネクション１６０、通常ＴＣＰによるコネクション１６３及び１６５の通信では、回線１９２を共有する場合が生じる。独自ＴＣＰによるコネクションで、通信装置１０１が、送信帯域を急激に増加させる制御をすると、回線帯域を占有してしまい、通常のＴＣＰコネクションを用いた通信が十分な通信帯域を確保できないケースがある。また、通信装置１０１においても、独自ＴＣＰのコネクション１６０と通常ＴＣＰのコネクション１６３は、回線１９２だけではなく、回線１９１も共有する。コネクション１６０と１６３間でも同様に、通常のＴＣＰであるコネクション１６３を用いた通信が十分な通信帯域を確保できない。そのため、以下、通信装置１０１や１０２で、他のコネクションの帯域が確保できるよう、独自ＴＣＰによるコネクションにおける送信帯域の制御に関する例を詳細に説明する。【００２６】
なお、計算機、通信装置及びネットワークの数は図示以外にも適宜の数を備えても良い。計算機は、サーバーや情報処理装置、端末、携帯型情報処理端末、スマートフォン等を含む。計算機間の通信は、クライアントサーバ間のデータ転送や、情報処理装置間のファイル転送等を含む。また、計算機間の通信は、Transmission Control Protocol（トランスミッション コントロール プロトコル、TCP）は、OSI参照モデルのトランスポート層にあたる伝送制御プロトコルに基づく通信を例として以下説明する。また、ＷＡＮ１４０は、ＬＡＮに比べると長い拠点間を結ぶネットワークや、拠点間での通信の遅延が大きいネットワークを含む。【００２７】
図２には、本実施の形態の通信装置２００のブロック図を示す。図１の通信装置１０１、１０２に相当する。【００２８】
通信装置２００は、例えば、外部のＷＡＮ／ＬＡＮネットワークとのパケットの送受信を行うＷＡＮ側及びＬＡＮ側のネットワークインターフェース（２０１／２１１）と、高速化非対象のＴＣＰパケットやＴＣＰ以外のＵＤＰパケットやＡＲＰパケット等を素通しさせるためのフィルタ（２０２／２１０）と、ＴＣＰ通信のための制御を行うＷＡＮ側及びＬＡＮ側のＴＣＰ処理部２０３／２０９と、ＷＡＮ側のＴＣＰ２０９の管理するＮ個の送信バッファ２０７およびＮ個の受信バッファ２０８と、ＬＡＮ側のＴＣＰ２０３の管理するＮ個の送信バッファ２０５およびＮ個の受信バッファ２０４と、送受信バッファ間でデータの乗せ換えを行うプロキシ２０６と、を備える。通信装置２００は、メモリ（図示せず）を備え、メモリには、Ｎ個のエントリを備えた状態テーブル（状態記憶領域）２１２と、Ｎ個のエントリを備えた帯域テーブル２１３と、各ＴＣＰ通信の通信モードや最低帯域を指定するモード／最低帯域指定テーブル７４０とを保持する。なお、上述のＮ個は、それぞれ異なる数でもよい。【００２９】
フィルタ２０２／２１０は、外部から入力されるパケットが、独自ＴＣＰ対象パケット化否かを、判別し、高速化非対象のＴＣＰパケットやＴＣＰ以外のＵＤＰパケット（ＩＰプロトコル番号）やＡＲＰパケット等を素通しさせる。ＴＣＰパケットの場合、ＴＣＰパケットが、ＩＰアドレスとポート番号の組み合わせあるいはいずれか一方を用いて非対象パケットかどうかが判別される。図１のコネクション１６３でのパケットがその例である。一方、入力パケットが、ＴＣＰ以外のＵＤＰパケットに該当するかは、ＩＰプロトコル番号で判別される。入力パケットが、ＡＲＰパケットであるかは、イーサータイプがＩＰｖ４，ｖ６いずれにも該当せず、イーサタイプがＡＲＰであるかどうかで判別される。フィルタで該当したパケットは、独自ＴＣＰの処理はされず、ＬＡＮ側からの入力パケットは、ＷＡＮに転送され、ＷＡＮ側からの入力パケットは、ＬＡＮに転送される。【００３０】
ＴＣＰ処理部２０３、２０９、プロキシ２０６については、後に詳述しここでは概略を述べる。【００３１】
ＬＡＮ側のＴＣＰ処理部２０３は、送信履歴更新部７２５と、パケット再送部７２４と、受信履歴更新部７２６と、振分部７２８と、集約部７３２とを備える。受信履歴更新部７２６は、受信したパケットデータを、ＬＡＮ側受信バッファ２０４に蓄積する。更に、受信履歴更新部７２６は、蓄積したデータに応じて、状態テーブル２１２のバッファ管理ポインタ（５０８〜５１０、５１５〜５１７、５２１〜５２７）の情報を更新する。更に、受信履歴更新部７２６は、受信したデータの位置を記載したＡＣＫパケットを集約部７３２経由で返信する。送信履歴更新部７２５は、ＬＡＮ側送信バッファ２０５から読み出した送信データをパケットにして送信すると共に、読み出したデータに応じて、状態テーブル２１２のバッファ管理ポインタ（５０８〜５１０、５１５〜５１７、５２１〜５２７）の情報を更新する。詳細は、図７Ｂにて説明する。【００３２】
ＷＡＮ側のＴＣＰ処理部２０９は、送信帯域制御部７１５と、送信履歴更新部７０５と、パケット再送部７０４と、受信履歴更新部７０６と、振分部７０８と、集約部７１２とを備える。受信履歴更新部７０６は、受信したパケットデータを、ＷＡＮ側受信バッファ２０８に蓄積する。更に、受信履歴更新部７０６は、蓄積したデータに応じて、状態テーブル２１２のバッファ管理ポインタ（５０８〜５１０、５１５〜５１７、５２１〜５２７）の情報を更新する。更に、受信履歴更新部７０６は、受信したデータの位置を記載したＡＣＫパケットを集約部７１２経由で、ＷＡＮ１４０を介して、他の通信装置２００に送信する。詳細は、図７Ａにて説明する。【００３３】
送信帯域制御部７１５は、送信帯域と再送帯域とＡＣＫ受信数（ＷＡＮ１４０を介して受信されるＡＣＫの数）の情報を帯域テーブル２１３に蓄積する。送信履歴更新部７０５は、ＷＡＮ側送信バッファ２０７から読み出した送信データをパケットにして送信すると共に、読み出した送信データサイズに応じて、状態テーブル２１２のバッファ管理ポインタ（５０８〜５１０、５１５〜５１７、５２１〜５２７）の情報を更新する。【００３４】
プロキシ２０６は、データ読出し部（６０１、６０６）と、データ加工部（６０２、６０５）と、データ書込部（６０３、６０４）を備える。データ読出部（６０１、６０６）は、受信バッファ（２０４、２０８）から読み出したデータサイズに応じて、状態テーブル２１２のバッファ管理ポインタ（５０８〜５１０、５１５〜５１７、５２１〜５２７）の情報を更新する。データ書込部（６０３、６０４）は、送信バッファ（２０７、２０５）に書き込んだデータサイズに応じて、状態テーブル２１２のバッファ管理ポインタ（５０８〜５１０、５１５〜５１７、５２１〜５２７）の情報を更新する。詳細は図６にて説明する。【００３５】
図３には、送受信バッファ管理用のポインタの説明図を表す。本図では、データを左から右に書き込んでいき、左から右に読み出していくものとする。【００３６】
受信バッファは、受信したデータの末尾を示すポインタｒｉｇｈｔ＿ｒｅｃｖ３０３と、整列済みデータと未整列データの境界を示すポインタｌｅｆｔ＿ｒｅｃｖ３０２と、プロキシ２０６がすでに読出し済のデータとまだ読出していないデータの境界を示すｌｅｆｔ＿ｒｂｕｆ３０１と、を管理する。【００３７】
受信したデータの末尾を示すポインタｒｉｇｈｔ＿ｒｅｃｖ３０３は、ロスの発生が無く、前から順番にデータを受信すると、受信したデータサイズ分増えて、右へ移動する。受信できずに歯抜けになっているデータ箇所（ロスセグメント）が存在する状態で、再送パケットを受信して、ロスセグメントが消滅すると、整列済みデータと未整列データの境界を示すポインタｌｅｆｔ＿ｒｅｃｖ３０２は、最も小さなロスセグメントの左端まで移動する。プロキシ２０６は、読出済データと未読出データの境界を示すｌｅｆｔ＿ｒｂｕｆ３０１から右へ向かって順番にデータを読み出し、読み出したデータサイズ分、ｌｅｆｔ＿ｒｂｕｆ３０１を右へ移動させる。読み出せるデータサイズの最大値は、ｌｅｆｔ＿ｒｅｃｖ３０２とｌｅｆｔ＿ｒｂｕｆ３０１の差である。【００３８】
送信バッファは、プロキシ２０６が書込済みで送信可能な状態となっているデータの末尾を表すポインタｒｉｇｈｔ＿ｓｂｕｆ３０６と、すでに送信済みのデータの末尾を示すポインタｒｉｇｈｔ＿ｓｅｎｄ３０５と、受信側から確認応答を受信済みのデータの末尾を示すポインタｌｅｆｔ＿ｓｅｎｄ３０４と、を管理する。【００３９】
プロキシ２０６が書込済みで送信可能な状態となっているデータの末尾を表すポインタｒｉｇｈｔ＿ｓｂｕｆ３０６は、プロキシ２０６がデータを書き込む毎に、書き込んだデータサイズ分増加し、右へ移動する。送信済みデータの末尾を示すポインタｒｉｇｈｔ＿ｓｅｎｄ３０５を始点として右に向かって新たなデータが送信され、ｒｉｇｈｔ＿ｓｅｎｄ３０５は、送信されたデータサイズ分増加し、右へ移動する。受信側から、ｌｅｆｔ＿ｓｅｎｄ３０４よりも大きな受信シーケンス番号を持つ確認応答パケットを受信すると、ｌｅｆｔ＿ｓｅｎｄ３０４は、確認応答（ＡＣＫ）パケットに記載された受信シーケンス番号へと増加し、右へ移動する。【００４０】
図４には、通信装置が送受信するパケットのフォーマット図を表す。パケットは、ＭＡＣヘッダ４００、ＩＰヘッダ４１０、ＴＣＰヘッダ４２０、ＴＣＰオプションヘッダ４３０、ペイロード４５０を含む。ＭＡＣヘッダ４００は、宛先ＭＡＣアドレスを表すＤＭＡＣ４０１と、送信元ＭＡＣアドレスを表すＳＭＡＣ４０２と、ＭＡＣフレームタイプを表すＴｙｐｅ４０３を含む。ＩＰヘッダ４１０は、ＭＡＣヘッダを除くパケット長を表すＩＰ  ｌｅｎｇｔｈ４１１と、プロトコル番号を表すｐｒｏｔｏｃｏｌ４１２と、送信元ＩＰアドレスを表すＳＩＰ４１３と、宛先ＩＰアドレスを現すＤＩＰ４１４とを含む。ＴＣＰヘッダ４２０は、送信元ポート番号を表すｓｒｃ．ｐｏｒｔ４２１と、宛先ポート番号を表すｄｓｔ．ｐｏｒｔ４２２と、送信シーケンス番号を表すＳＥＱ４２３と、受信シーケンス番号を表すＡＣＫ４２４と、ＴＣＰフラグ番号を表すｆｌａｇ４２５と、ＴＣＰのヘッダ長を表すｔｃｐ  ｈｌｅｎ４２６とを含む。ＴＣＰオプションヘッダ４３０は、オプション種別を表すｏｐｔｉｏｎ  ｋｉｎｄ４３１と、オプション長を表すｏｐｔｉｏｎ  ｌｅｎｇｔｈ４３２と、どこからどこまで部分的に受信できたかデータ箇所の位置を送信計算機に通知するために用いられるｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３７、４３９）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）を含む。ｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３７、４３９）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）は、部分的に受信できなかったデータ箇所の位置を通知するために用いられるケースもある。更に、ＴＣＰオプションヘッダ４３０は、ＴＣＰ通信を開始するときに、装置間の情報交換などに使用するケースもある。【００４１】
例えば、ＭＳＳオプションは、ＴＣＰ通信を開始するときに、自装置の受信可能なＭＳＳのサイズを対向装置に通知するために用いられる。ＳＡＣＫオプションは、図１の通信装置１０１及び１０２の間で、ＴＣＰ通信を開始するときに、自装置がＳＡＣＫオプションに対応可能であることを対向装置に通知するために用いられるだけでなく、通信中に廃棄が検出されたときに部分的に受信出来た箇所を対向装置に通知するためにも用いられる。タイムスタンプオプションは、通信中の自装置の受信時刻を対向装置に通知するために用いられる。このように、ＴＣＰオプションは、通信開始時および通信中に、自装置の対応可能な機能や情報を対向装置に伝えるために用いられる。【００４２】
図５には、状態テーブル２１２のフォーマット図を示す。【００４３】
通信装置２００の状態テーブル２１２は、例えばＴＣＰコネクション毎の状態を記録するためのｎ個のエントリ５２０を有する。【００４４】
各エントリ５２０は、例えば、エントリが使用中であるか否かを記載するＶＬＤ５０１と、ＬＡＮまたはＷＡＮ側のコネクションが確立中であるか否かを記載するｃｏｎｎｅｃｔ＿ｓｔａｔｅ５０２と、ＬＡＮ側の計算機のＩＰアドレスを表すＬＩＰ５０３と、ＷＡＮ側の計算機のＩＰアドレスを表すＷＩＰ５０４と、ＬＡＮ側の計算機のＴＣＰポート番号を表すＬｐｏｒｔ５０５と、ＷＡＮ側の計算機のＴＣＰポート番号を表すＷｐｏｒｔ５０６と、ＬＡＮ側のＴＣＰ通信の状態を表すｌａｎ＿ｓｔａｔｅ５０７と、ＬＡＮ側の受信バッファ管理用のポインタを表すｌａｎ＿ｌｅｆｔ＿ｒｂｕｆ５０８、ｌａｎ＿ｌｅｆｔ＿ｒｅｃｖ５０９、ｌａｎ＿ｒｉｇｈｔ＿ｒｅｃｖ５１０と、ＬＡＮ側のウィンドウスケールオプションの値を表すｌａｎ＿ｗｓ５１１と、ＬＡＮ側の平均ＲＴＴを表すｌａｎ＿ｒｔｔ５１２と、ＬＡＮ側の輻輳ウィンドウサイズを表すｃｗｎｄ５１３と、ＬＡＮ側の受信バッファから読み出され加工中のデータサイズを表すｌａｎ＿ｗａｎ５２９と、ＬＡＮ側の送信バッファ管理用のポインタを表すｌａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２１、ｌａｎ＿ｒｉｇｈｔ＿ｓｅｎｄ５２２、ｌａｎ＿ｒｉｇｈｔ＿ｓｂｕｆ５２３と、ＷＡＮ側のＴＣＰ通信の状態を表すｗａｎ＿ｓｔａｔｅ５１４と、ＷＡＮ側の受信バッファ管理用のポインタを表すｗａｎ＿ｌｅｆｔ＿ｒｂｕｆ５１５、ｗａｎ＿ｌｅｆｔ＿ｒｅｃｖ５１６、ｗａｎ＿ｒｉｇｈｔ＿ｒｅｃｖ５１７と、ＷＡＮ側のウィンドウスケールオプションの値を表すｗａｎ＿ｗｓ５１８と、ＷＡＮ側の平均／初期ＲＴＴを表すｗａｎ＿ｒｔｔ５１９と、ＷＡＮ側の最大セグメントサイズＭＳＳを表すｗａｎ＿ｍｓｓ５３６と、ＷＡＮ側の受信バッファから読み出され加工中のデータサイズを表すｗａｎ＿ｌａｎ５３０と、ＷＡＮ側の送信バッファ管理用のポインタを表すｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２４、ｗａｎ＿ｒｉｇｈｔ＿ｓｅｎｄ５２５、ｗａｎ＿ｒｉｇｈｔ＿ｓｂｕｆ５２６と、ＲＴＴ前のＡＣＫ受信済み箇所を表すｏｌｄ＿ｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２７と、通常のＴＣＰに対してフレンドリなモードで通信するか否かを決定するためのｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２と、対向装置が独自ＴＣＰによる通信に対応していないときに独自ＴＣＰによる通信を行うか否かを決定するためのｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３と、最小帯域を表すｍｉｎ＿ｔｏｋｅｎ５３４と、輻輳が検出されない状態になった直近の制御帯域を表すｔ＿ｔｏｋｅｎ５３５と、直近の定期更新時の制御帯域を表すｃ＿ｔｏｋｅｎ５３７と、帯域が増加し始めた時刻を表すｉｎｃ＿ｔｉｍｅ５３８とを有する。【００４５】
図６には、プロキシ２０６のブロック図を示す。【００４６】
プロキシ２０６は、ＬＡＮ側の受信バッファｒｂｕｆ２０４からデータを読出すデータ読出し部６０１と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部６０２と、加工済みデータをＷＡＮ側の送信バッファｓｂｕｆ２０７へ書き込むデータ書き込み部６０３と、ＷＡＮ側の受信バッファｒｂｕｆ２０８からデータを読み出すデータ読出し部６０６と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部６０５と、加工済みデータをＬＡＮ側の送信バッファｓｂｕｆ２０５へ書き込むデータ書き込み部６０４とを有する。データ加工部６０２とデータ加工部６０５との間で、データのやり取りをしてもよい。データの加工は上述の例以外でもよい。【００４７】
データ読出し部６０１は、ｌａｎ＿ｌｅｆｔ＿ｒｂｕｆ５０８からｌａｎ＿ｌｅｆｔ＿ｒｅｃｖ５０９までの間に蓄積されている整列済みデータから読み出した先頭データから、読み出すべきデータサイズと、データ加工後のデータサイズを推定する。先頭データとしては、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）／ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）ヘッダ、ＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ）ヘッダ、等などを使用してもよい。ＴＬＳ／ＳＳＬヘッダに記載された値からは、復号後のチェックサムやヘッダを除いた平文データサイズを推定することができる。ＳＭＢヘッダからは、プリフェッチ等を行った後のコマンドデータサイズを推定することができる。推定した加工後のデータサイズが、ｗａｎ＿ｒｉｇｈｔ＿ｓｂｕｆ５２６とｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２４の差、すなわち未送信データとＡＣＫ確認待ちデータの合計値が、ＷＡＮ側の送信バッファサイズｗａｎ＿ｓｂｕｆ＿ｓｉｚｅを超えない場合は、データを読み出して、データ加工部６０２へ転送する。更に、推定した読み出すべきデータサイズと、データ加工後のデータサイズのうち、大きい方を状態テーブル２１２のｌａｎ＿ｗａｎ５２８へ記載する。【００４８】
データ読出し部６０６は、ｗａｎ＿ｌｅｆｔ＿ｒｂｕｆ５１５からｗａｎ＿ｌｅｆｔ＿ｒｅｃｖ５１６までの間に蓄積されている整列済みデータから読み出した先頭データから、読み出すべきデータサイズと、データ加工後のデータサイズを推定する。先頭データとしては、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）／ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）ヘッダ、ＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ）ヘッダ、等などを使用してもよい。推定した加工後のデータサイズが、ｌａｎ＿ｒｉｇｈｔ＿ｓｂｕｆ５２３とｌａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２１の差、すなわち未送信データとＡＣＫ確認待ちデータの合計値が、ＬＡＮ側の送信バッファサイズｌａｎ＿ｓｂｕｆ＿ｓｉｚｅを超えない場合は、データを読み出して、データ加工部６０５へ転送する。更に、推定した読み出すべきデータサイズと、データ加工後のデータサイズのうち、大きい方を状態テーブル２１２のｗａｎ＿ｌａｎ５２９へ記載する。【００４９】
図７Ａには、図２の通信装置２００のＷＡＮ側のＴＣＰ処理部２０９のブロック図を示す。【００５０】
ＴＣＰ通信を実現するＴＣＰ処理部２０９は、受信処理を行うＲＸ部（受信部）７０２と、送信処理を行うＴＸ部（送信部）７０１を有する。【００５１】
ＲＸ部７０２は、受信パケットを、ＳＹＮ，ＦＩＮなどのフラグが付いたＴＣＰ制御パケットとデータ付パケットとＡＣＫパケットに分離するパケット振分部７０８と、ＴＣＰ制御パケットに記載されているフラグ番号に基づいて状態テーブル２１２内のＴＣＰ状態（ｌａｎ＿ｓｔａｔｅ５０７、ｗａｎ＿ｓｔａｔｅ５１４）を変更すると共に、ＴＣＰ制御パケットに記載されているオプション番号の有無や、モード／最低帯域指定テーブル７４０の指定するモードと最低帯域に基づいて、状態テーブル２１２内の通信モード（ｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２、ｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３）や最低帯域ｍｉｎ＿ｔｏｋｅｎ５３４を変更するＴＣＰ制御部７０７と、受信したデータパケットの送信シーケンス番号ＳＥＱ４２３と受信シーケンス番号ＡＣＫ４２４とに基づいて、状態テーブル２１２内のバッファ管理ポインタを変更してＡＣＫパケットを返信する受信履歴更新部７０６を有する。【００５２】
ＴＣＰ制御部７０７が、ＴＣＰ制御パケットに記載されているオプション番号の有無に基づいて、通信開始時に、通信モード（ｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２、ｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３）を変更する方法は、図１８を用いて後述する。【００５３】
ＴＣＰ制御部７０７が、モード／最低帯域指定テーブル７４０の指定するモードと最低帯域に基づいて、通信開始時に、通信モード（ｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２）や最低帯域ｍｉｎ＿ｔｏｋｅｎ５３４を変更する方法は、図２０を用いて後述する。【００５４】
ＴＸ部７０１は、状態テーブル２１２内のＴＣＰ状態ｌａｎ＿ｓｔａｔｅ５０７、ｗａｎ＿ｓｔａｔｅ５１４を用いてＴＣＰ制御パケットを送信するＴＣＰ制御部７０３と、受信したＡＣＫパケットに基づいて状態テーブル２１２内のバッファ管理ポインタを変更し、受信したＡＣＫパケット記載の部分的確認応答ｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３６、４３９）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）を用いて送信バッファｓｂｕｆ２０７からデータを読み出してパケットを再送すると共に、再送ビット長とＡＣＫ受信数を送信帯域制御部７１５に通知するパケット再送部７０４と、送信バッファｓｂｕｆ２０７から読み出したデータを載せたパケットを送信して、状態テーブル２１２内のバッファ管理ポインタを変更すると共に、送信ビット長を送信帯域制御部７１５に通知する送信履歴更新部７０５と、再送パケットとデータパケットを受け取り、バッファ１〜ｎ（７０９−１〜ｎ）に振り分ける振分部７０８と、現在時刻を生成して送信帯域制御部７１５に通知するタイマ７１３と、インターバル時間（予め定めた固定値、または計測した平均ＲＴＴなど）を保存して送信帯域制御部７１５に通知するインターバル格納部７１４と、帯域テーブル２１３を制御して、各ＴＣＰコネクションのトークンサイズをトークン更新部７１７に通知する送信帯域制御部７１５と、ＴＣＰコネクション毎にトークンバケツを管理して、送信可能なコネクションをマルチプレクサ７１２に通知するトークン更新部７１７と、ＡＣＫパケット、ＴＣＰ制御パケット、再送パケット、データパケットをＦＩＦＯで集約して、出力するマルチプレクサ７１２およびバッファ７０９〜７１１とを有する。モード／最低帯域指定テーブル７４０の記載内容は、外部のユーザ端末７４１から変更可能である。【００５５】
本実施例において、ＴＸ部７０１の各ブロックのうち、各ＴＣＰ通信の制御帯域（最大送信帯域）に従いデータを送信するブロック（例えば、トークン更新部７１７、マルチプレクサ７１２、バッファ７０９等）をまとめて送信制御部と称することもある。【００５６】
図７Ｂには、図２におけるＬＡＮ側のＴＣＰ処理部２０３のブロック図を示す。【００５７】
ＴＣＰ通信を実現するＴＣＰ処理部２０３は、受信処理を行うＲＸ部（受信部）７２２と、送信処理を行うＴＸ部（送信部）７２１を有する。【００５８】
ＲＸ部７２２は、受信パケットをＴＣＰ制御パケットとデータ付パケットとＡＣＫパケットに分離するパケット振分部７２８と、受信したＴＣＰ制御パケットに基づいて状態テーブル２１２内のＴＣＰ状態ｌａｎ＿ｓｔａｔｅ５０７、ｗａｎ＿ｓｔａｔｅ５１４を変更するＴＣＰ制御部７２７と、受信したデータパケットの送信シーケンス番号ＳＥＱ４２３と受信シーケンス番号ＡＣＫ４２４とに基づいて、状態テーブル２１２内のバッファ管理ポインタを変更してＡＣＫパケットを返信する受信履歴更新部７２６とを有する。【００５９】
ＴＸ部７２１は、状態テーブル２１２内のＴＣＰ状態ｌａｎ＿ｓｔａｔｅ５０７、ｗａｎ＿ｓｔａｔｅ５１４を用いてＴＣＰ制御パケットを送信するＴＣＰ制御部７２３と、受信したＡＣＫパケットに基づいて状態テーブル２１２内のバッファ管理ポインタを変更し、受信したＡＣＫパケット記載の部分的確認応答ｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３６、４３９）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）を用いて送信バッファｓｂｕｆ２０５からデータを読み出してパケットを再送するパケット再送部７２４と、送信バッファｓｂｕｆ２０５から読み出したデータを載せたパケットを送信して、状態テーブル２１２内のバッファ管理ポインタを変更する送信履歴更新部７２５と、ＡＣＫパケット、ＴＣＰ制御パケット、再送パケット、データパケットをＦＩＦＯで集約して、出力するマルチプレクサ７３２およびバッファ７２９〜７３１とを有する。【００６０】
ＷＡＮ側ＴＣＰ処理部２０９の送信帯域制御部７１５、帯域テーブル２１３内に基準時刻という内部変数を管理している。基準時刻と、タイマ７１３の現在時刻との差が、インターバル格納部７１４のインターバル時間よりも大きくなると、基準時刻にインターバル時間を加算して新たな基準時刻とする。加算前の基準時刻は、旧基準時刻となる。すなわち、現在使用している基準時刻の一つ前に使用していた基準時刻は旧基準時刻となる。インターバル時間には、計測した平均ＲＴＴや初期ＲＴＴ（ｗａｎ＿ｒｔｔ５１９）を用いることもあれば、固定値を用いることもある。【００６１】
図２を用いて、ＬＡＮ側からデータ付きパケットを受信した際の、通信装置２００におけるパケットの流れを説明する。【００６２】
ＬＡＮ側から到着したデータ付きパケットは、ＬＡＮ側ＴＣＰ処理部２０３に入り、受信履歴更新部７２６に到着する。受信履歴更新部７２６は、データ付きパケットに対するＡＣＫパケットを集約部７３２経由でＬＡＮ側に返信し、パケットに記載されたデータをＬＡＮ側受信バッファｒｂｕｆ２０４へと蓄積する。更に、受信履歴更新部７２６は、蓄積データサイズに基づいて状態テーブル２１２のポインタを更新する。データ読出し部６０１は、ＬＡＮ側受信バッファｒｂｕｆ２０４に蓄積された整列済みデータを読出し、データ加工部６０２へ転送する。更に、読み出したデータサイズに基づいて状態テーブル２１２のポインタを更新する。【００６３】
データ加工部６０２は、データを加工して、データ書き込み部６０３へ転送する。更に、加工中のデータサイズに基づいて状態テーブル２１２の加工中データサイズを更新する。データ書き込み部６０３は、加工済みデータをＷＡＮ側送信バッファｓｂｕｆ２０７へと書き込む。更に、書き込んだデータサイズに基づいて状態テーブル２１２のポインタを更新する。ＷＡＮ側送信バッファｓｂｕｆ２０７に書き込まれたデータは、送信履歴更新部７０５から読み出される。送信帯域制御部７１５は、読み出されたデータを、ＷＡＮ側へデータ付きパケットとして送信する制御を行う。【００６４】
受信履歴更新部７２６についてさらに説明すると、ＬＡＮ側の受信バッファの最大値から、ｌａｎ＿ｒｉｇｈｔ＿ｒｅｃｖ５１０とｌａｎ＿ｌｅｆｔ＿ｒｂｕｆ５０８との差分を、引くことで、受信バッファの残存量を計算する。ペイロード４５０のサイズが、受信バッファの残存量以下のときは、ペイロード４５０に記載されたデータ全てを受信バッファに格納する。ペイロード４５０のサイズが、受信バッファの残存量よりも大きい場合は、ペイロード４５０の先頭から受信バッファの残存量に相当するサイズのデータだけを受信バッファに格納する。格納データサイズが０よりも大きいときは、データ付きパケットのＴＣＰヘッダ４２０に記載されたＳＥＱ４２３の値と、格納データサイズに基づいて、受信バッファ管理用ポインタの更新を行う。例えば、パケットヘッダ記載のＳＥＱ４２３に格納データサイズを加算した値が、ｌａｎ＿ｒｉｇｈｔ＿ｒｅｃｖ５１０よりも大きい場合は、ｌａｎ＿ｒｉｇｈｔ＿ｒｅｃｖ５１０を、ＳＥＱ４２３に格納データサイズを加算した値に変更する。更に、受信データの最後尾がｌａｎ＿ｒｉｇｈｔ＿ｒｅｃｖ５１０となるように、受信データをＬＡＮ側の受信バッファに記載する。その後、受信バッファ管理ポインタの１つｌａｎ＿ｌｅｆｔ＿ｒｅｃｖ５０９をＴＣＰヘッダ４２０のＡＣＫ４２４に記載したＡＣＫパケットを、ＬＡＮ側へ返信する。【００６５】
また、送信履歴更新部７０５についてさらに説明すると、ｗａｎ＿ｒｉｇｈｔ＿ｓｅｎｄ５２５から右方向に、最大ｗａｎ＿ｒｉｇｈｔ＿ｓｂｕｆ５２６までのデータを、ＷＡＮ側送信バッファｓｂｕｆ２０７から読み出す。ｗａｎ＿ｒｉｇｈｔ＿ｓｅｎｄ５２５は、読み出したデータサイズ分、増加して、右に移動する。更に、読み出したデータをペイロード４５０に記載し、ｗａｎ＿ｒｉｇｈｔ＿ｓｅｎｄ５２５をＳＥＱ４２３に記載したＴＣＰヘッダ４２０を追加したデータ付きパケットを、ＷＡＮ側へ送信する。
（ＷＡＮ側に出て行くデータの送信帯域の制御に使用する変数）
送信帯域制御部７１５は、帯域テーブル２１３が管理する変数を用いて、各ＴＣＰ通信のＷＡＮ側に出て行くデータの送信帯域を制御する。【００６６】
図８には、送信帯域制御部７１５が管理する帯域テーブル２１３のフォーマットを表す。【００６７】
帯域テーブル２１３は、コネクション毎に、基準時刻と、基準時刻後の送信ビット積算値・再送ビット積算値・ＡＣＫ受信数・制御帯域と、基準時刻前の送信帯域・再送帯域・受信帯域・制御帯域と、旧基準時刻前の送信帯域・制御帯域と、を記録する。【００６８】
基準時刻後の制御帯域は、現在時刻における制御帯域を表す（本実施例では、ｔｏｋｅｎまたはトークンと表す）。基準時刻後の送信帯域は、現在時刻における送信帯域を表し（本実施例では、ｓｎｄと表す）、基準時刻後の送信ビット積算値を、現在時刻と基準時刻の差分で除算することで求められる。基準時刻後の再送帯域は、現在時刻における再送帯域を表し（本実施例では、ｒｔｓと表す）、基準時刻後の再送ビット積算値を、現在時刻と基準時刻の差分で除算することで求められる。基準時刻後の受信帯域は、現在時刻における受信帯域を表し（本実施例では、ｒｃｖと表す）、基準時刻後のＡＣＫ受信数にＷＡＮ側のＭＳＳと８を積算した値を、現在時刻と基準時刻の差分で除算することで求められる。基準時刻前の制御帯域・送信帯域・受信帯域・再送帯域は、旧基準時刻から基準時刻までの制御帯域・送信帯域・受信帯域・再送帯域の平均値を表す（本実施例では、ｏｌｄ＿ｔｏｋｅｎ、ｏｌｄ＿ｓｎｄ、ｏｌｄ＿ｒｃｖ、ｏｌｄ＿ｒｔｓと表す）。旧基準時刻前の制御帯域・送信帯域は、旧基準時刻の直前までの制御帯域・送信帯域を表す（本実施例では、ｏｌｄ＿ｏｌｄ＿ｔｏｋｅｎ、ｏｌｄ＿ｏｌｄ＿ｓｎｄ、と表す）。基準時刻前の再送率／廃棄率ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏは、ｏｌｄ＿ｒｔｓ／ｏｌｄ＿ｏｌｄ＿ｓｎｄ、または、１−ｏｌｄ＿ｒｃｖ／ｏｌｄ＿ｏｌｄ＿ｓｎｄで求められる。また、基準時刻後の現在の再送率／廃棄率ｒｔｓ＿ｒａｔｉｏは、ｒｔｓ／ｏｌｄ＿ｓｎｄ、または、１−ｒｃｖ／ｏｌｄ＿ｓｎｄで求められる。インターバル時間として、固定値を用いることもあれば、状態テーブル２１２記載のｗａｎ＿ｒｔｔ５１９を用いる場合もある。【００６９】
図１１には、旧基準時刻・基準時刻・現在時刻と、その前後の制御帯域・送信帯域・受信帯域・再送帯域・再送率／廃棄率の関係を表す。【００７０】
基準時刻と旧基準時刻との差は、インターバル時間である。旧基準時刻前におけるインターバル時間の制御帯域・送信帯域の平均値は、ｏｌｄ＿ｏｌｄ＿ｔｏｋｅｎ、ｏｌｄ＿ｏｌｄ＿ｓｎｄと表す（１１０３）。旧基準時刻から基準時刻までの間の制御帯域・送信帯域・受信帯域・再送帯域・再送率／廃棄率の平均値は、ｏｌｄ＿ｔｏｋｅｎ、ｏｌｄ＿ｓｎｄ、ｏｌｄ＿ｒｃｖ、ｏｌｄ＿ｒｔｓ、ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏと表す（１１０２）。基準時刻から現在時刻までの制御帯域・送信帯域・受信帯域・再送帯域・再送率／廃棄率の平均値は、ｔｏｋｅｎ、ｓｎｄ、ｒｃｖ、ｒｔｓ、ｒｔｓ＿ｒａｔｉｏと表す（１１０１）。【００７１】
送信帯域制御部７１５は、帯域テーブル２１３に記載された上述の値を用いて、廃棄率／再送率（ｒｔｓ＿ｒａｔｉｏ５３０とｏｌｄ＿ｒｔｓ＿ｒａｔｉｏ５３１）を計算する。現在時刻の廃棄率／再送率ｒｔｓ＿ｒａｔｉｏ５３０は、ｒｔｓ／ｏｌｄ＿ｔｏｋｅｎまたはｒｔｓ／ｏｌｄ＿ｓｎｄまたは１−ｒｃｖ／ｏｌｄ＿ｔｏｋｅｎまたは１−ｒｃｖ／ｏｌｄ＿ｓｎｄで計算される。過去の廃棄率／再送率ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏ５３１は、ｏｌｄ＿ｒｔｓ／ｏｌｄ＿ｏｌｄ＿ｔｏｋｅｎまたはｏｌｄ＿ｒｔｓ／ｏｌｄ＿ｏｌｄ＿ｓｎｄまたはまたは１−ｏｌｄ＿ｒｃｖ／ｏｌｄ＿ｏｌｄ＿ｔｏｋｅｎまたは１−ｏｌｄ＿ｒｃｖ／ｏｌｄ＿ｏｌｄ＿ｓｎｄで計算される。更に、廃棄率／再送率の変化（ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏ５３１とｒｔｓ＿ｒａｔｉｏ５３０の比率）に基づいて、制御帯域（ｔｏｋｅｎまたはトークン）を決定し、トークン更新部７１７へ伝える。更に、状態テーブル２１２を更新する。制御帯域（ｔｏｋｅｎまたはトークン）の更新方法の詳細は、図１２〜図１６に後述する。【００７２】
トークン更新部７１７は、送信帯域制御部７１５から伝えられた制御帯域（ｔｏｋｅｎまたはトークン）の値に基づいて、ＴＣＰコネクション毎にトークンバケツを管理して、送信可能なコネクションをマルチプレクサ７１２に通知する。
（制御帯域ｔｏｋｅｎの更新処理）
図９と図１０と図１７の説明図と、図１２〜図１６のフローチャートを用いて、送信帯域制御部７１５が制御帯域（ｔｏｋｅｎまたはトークン）を更新する方法の詳細を説明する。【００７３】
図９には、通常のＴＣＰ通信と独自ＴＣＰによる通信との差異、および、独自ＴＣＰの送信帯域の制御方法の説明図を示す。【００７４】
通常のＴＣＰ通信では、廃棄が１回でも生じると、輻輳を検出したと判定して、送信帯域を一定の割合で減少させる（９０６）。ネットワークでは、ボトルネックの帯域が１００％使われていなくても、待ち行列理論に基づく確率的な廃棄が一定の割合で発生する。そのため、送信帯域がボトルネック帯域に到達してトップスピードになる前に減少してしまい、ボトルネックの帯域を１００％使い切ることができなかった。【００７５】
独自ＴＣＰでは、直近の再送帯域をＲＴＴ前の送信帯域で除算することで廃棄率を求め、廃棄率の変化率が予め定めた閾値ｋを超過したときに、輻輳が発生したと判断して、ＲＴＴ前の送信帯域と直近の再送帯域に基づいて、送信帯域を減少させる（９０２）。送信帯域がボトルネック帯域へ到達したことを、廃棄率の変化率の増加により判断する。これにより、確率的な廃棄の影響を受けずに、送信帯域がボトルネック帯域に到達してトップスピードになるまで、送信帯域を増加させ続けることが可能となる。【００７６】
独自ＴＣＰでは、送信帯域を減少させた後（９０２）、ＡＣＫ受信済み箇所の位置が変わるまで、ＡＣＫ受信数に応じて送信帯域を一定にする（９０３）。ＡＣＫ受信済み箇所の位置が更新され始めると、一定時間Ｔの間は緩やかに、例えば線形的に、送信帯域を増加させる（９０４）。緩やかに、例えば線形的に、送信帯域を増加させ続けて一定時間Ｔが経過すると、急激な増加方法（例えば、指数的などの非線形的な増加方法）に変更する（９０５）。期間Ｔは、ＲＴＴとトークン（ｔｏｋｅｎ：制御帯域）によって定めても良いし、これらの積に比例させてもよい。これにより、送信帯域を線形的に増加させる期間が、ＲＴＴと送信帯域の過去の履歴によって決定する通信装置が実現される。つまり、送信帯域制御部７１５は、第一の制御モードと第二の制御モードを備え、第一の制御モードで帯域制御が所定の期間経過後、第２の制御モードでの帯域制御に切り替える制御を行う。第２の制御モードでの送信帯域の増加率は、第一の制御モードでの増加率よりも高くてもよい。なお、一定の期間Ｔは、通信装置２００に接続される管理端末等により変更可能な所定の期間である。【００７７】
上述の送信帯域の制御方法により、ネットワークの輻輳が検出されず、尚且つ、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、前記ＴＣＰ通信の送信帯域を線形的に増加させ、その後、送信帯域を非線形的に増加させる通信装置が実現される。更に、廃棄率や再送率の変化率を用いて、ネットワークの輻輳を検出する通信装置と、送信帯域と再送帯域とＡＣＫ受信数の過去の履歴を用いて、廃棄率または再送率とそれらの変化率を推定する通信装置と、輻輳を検出したときに、送信帯域と再送帯域とＡＣＫ受信数の過去の履歴を用いて、送信帯域を減少させる通信装置が実現される。【００７８】
ネットワークの輻輳が検出されず、尚且つ、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、送信帯域を通常のＴＣＰ通信よりも緩やかに（例えば線形的に）増加させることで、通常のＴＣＰ通信と競合したときでも、通常のＴＣＰ通信の帯域を圧迫することを防ぎ、通常のＴＣＰ通信が帯域を確保しやすくなる。また、一定時間が経過した後に、急激に（例えば指数的に）送信帯域を増加させることで、通常のＴＣＰ通信との競合が無い時に、送信帯域がボトルネック帯域へ到達してトップスピードになる時間を短くすることが出来る。更に、廃棄率や再送率の変化率を用いて、ネットワークの輻輳を検出することで、確率論的な廃棄に影響されずに、送信帯域がボトルネック帯域に到達してトップスピードになるまで、送信帯域を増加させ続けることが可能となる。【００７９】
図１０には、独自ＴＣＰによる通信を行っている装置の送信側の送信帯域１００１、廃棄率１００２、廃棄率の変化率１００３の時間遷移を示したグラフを示す。【００８０】
独自ＴＣＰによる通信の送信帯域の増減には、大きく４つのフェーズが存在する。フェーズ１は送信帯域を増加させるステップ、フェーズ２は送信帯域を減少させるステップ、フェーズ３は送信帯域を過去の送信帯域へ戻すステップ、フェーズ４は送信帯域を一定にするステップ、となる。【００８１】
まず、フェーズ１で送信帯域が増加していき（１００４）、ある時にボトルネック帯域を超過する（１０１３）。送信帯域がボトルネック帯域を超過すると、パケット廃棄が発生するが、廃棄箇所が受信側から送信側に通知されるまでにＲＴＴ以上かかる。そのため、送信帯域がボトルネック帯域を超過したことが、廃棄率の増加となって現れるのは、ＲＴＴ以上後となる（１０１４）。廃棄率は、直近の再送帯域をＲＴＴ前の送信帯域で除算することで求められる。送信帯域がボトルネック帯域よりも小さい間は、確率的な廃棄しかおきないため、廃棄率は一定となる（１０１０）。送信帯域がボトルネック帯域を超過してからＲＴＴ以上経過すると、確率的な廃棄に加えて、使い過ぎによる廃棄（１０１１）が加わるようになるため、廃棄率が増加しはじめる（１０１２）。廃棄率が増加しはじめると、廃棄率の変化率は１から急激に増加し、閾値ｋを超過する（１００９）。【００８２】
独自ＴＣＰによる通信では、上記のように、廃棄率の変化率が急激に増加し、閾値ｋを超過したときに、ネットワークに輻輳が発生したと判断する。【００８３】
ネットワークに輻輳が発生したと判断すると、ＲＴＴ前の送信帯域から、現在の再送帯域を引いた値を、新たな送信帯域とする（１０１８）。ＲＴＴ前の送信帯域を用いて新たな送信帯域を計算する理由は、送信帯域がボトルネック帯域を超過した時間がＲＴＴ以上前だからである。廃棄率の増加はしばらく継続するため（１０１２）、その間は送信帯域が減少し続ける。この送信帯域を減少させるステップがフェーズ２となる（１００５）。【００８４】
送信帯域が減少していきボトルネック帯域よりも小さくなると、廃棄率が減少しはじめる（１０１９）。廃棄率の変化率が１よりも小さくなり、閾値ｋを下回ると（１０２０）、ネットワークに輻輳が発生しなくなったと判断される。【００８５】
ネットワークに輻輳が発生しなくなったと判断された後も、廃棄パケットの再送処理は継続している。受信確認済みのデータ箇所がＲＴＴ前と比較して増加していない場合は、廃棄パケットの再送処理は継続していると判断して、ＡＣＫ受信数に応じて、送信帯域を一定とする。この送信帯域を一定とするステップがフェーズ４となる（１００６）。【００８６】
受信確認済みのデータ箇所がＲＴＴ前と比較して増加している場合は、廃棄パケットの再送処理が一通り完了したと判断して、再び送信帯域を増加させる（フェーズ１）。【００８７】
最初は、送信帯域制御部７１５は、送信帯域をゆっくりと、例えば、第一の制御モードで、線形的に増加させていく（１００７）。一定の期間Ｔ、輻輳が検出されないと、その後、送信帯域制御部７１５は、第二の制御モードで送信帯域を急激に（例えば、非線形的に）増加させていく（１００８）。非線形的に増加させるときは、ＲＴＴ毎にαＥ倍するなど、指数的に増加させてもよい（１０１６）。最初の送信帯域をゆっくりと（例えば、線形的に）増加させていく期間Ｔは、ＲＴＴとトークン（ｔｏｋｅｎ：制御帯域）によって定めても良いし、これらの積に比例させてもよい（１０２１）。また、最初の送信帯域をゆっくりと（例えば、線形的に）増加させていく間は、送信帯域をＲＴＴ毎にＭＳＳ／ＲＴＴに比例する速度で線形的に増加させてもよいし、送信帯域をＲＴＴ毎にＭＳＳ／ＲＴＴに比例する速度で線形的に増加させる場合の比例係数αＬを１よりも小さい値にしてもよい（１０１７）。これにより、送信帯域を線形的に増加させる期間が、ＲＴＴと送信帯域の過去の履歴によって定まる通信装置が実現される。【００８８】
上述の送信帯域の制御方法により、ネットワークの輻輳が検出されず、尚且つ、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、前記ＴＣＰ通信の送信帯域を線形的に増加させ、その後、送信帯域を非線形的に増加させる通信装置が実現される。更に、廃棄率や再送率の変化率を用いて、ネットワークの輻輳を検出する通信装置と、送信帯域と再送帯域とＡＣＫ受信数の過去の履歴を用いて、廃棄率または再送率とそれらの変化率を推定する通信装置と、輻輳を検出したときに、送信帯域と再送帯域とＡＣＫ受信数の過去の履歴を用いて、送信帯域を減少させる通信装置が実現される。【００８９】
ネットワークの輻輳が検出されず、尚且つ、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、送信帯域を通常のＴＣＰ通信よりも緩やかに（例えば線形的に）増加させることで、通常のＴＣＰ通信と競合したときでも、通常のＴＣＰ通信の帯域を圧迫することを防ぎ、通常のＴＣＰ通信が帯域を確保しやすくなる。また、一定時間が経過した後に、急激に（例えば指数的に）送信帯域を増加させることで、通常のＴＣＰ通信との競合が無い時に、送信帯域がボトルネック帯域へ到達してトップスピードになる時間を短くすることが出来る。更に、廃棄率や再送率の変化率を用いて、ネットワークの輻輳を検出することで、確率的な廃棄に影響されずに、送信帯域がボトルネック帯域に到達してトップスピードになるまで、送信帯域を増加させ続けることが可能となり、回線帯域を使い切ることが出来るようになる。【００９０】
図１２〜図１６には、送信帯域制御部７１５が制御帯域（ｔｏｋｅｎまたはトークン）を更新する方法の詳細を説明するためのフローチャートを示す。【００９１】
図１２〜図１５には、独自ＴＣＰにおける帯域制御の詳細を、図１６には、独自ＴＣＰによる通信が回線帯域を占有せずに、通常のＴＣＰによる通信を保護するための帯域増加方法の詳細を示す。【００９２】
図１２Ａには、送信帯域制御部７１５が制御帯域（ｔｏｋｅｎまたはトークン）を更新する際の概念的なフローチャートを表す。独自ＴＣＰでは、送信帯域制御部７１５が、本フローチャートに従い処理を実行することで、再送率に基づく帯域制御を実現し、ＲＴＴと廃棄率に依存せず、回線帯域を使い切ることができる。図１２Ａの各ステップは、送信帯域制御部７１５により実行される。【００９３】
送信帯域制御部７１５において、制御帯域の更新処理がスタートすると（ステップ１２０１）、送信帯域制御部７１５は、パケット再送率（＝ｒｔｓ／ｏｌｄ＿ｔｏｋｅｎまたはｒｔｓ／ｏｌｄ＿ｓｎｄまたは１−ｒｃｖ／ｏｌｄ＿ｔｏｋｅｎまたは１−ｒｃｖ／ｏｌｄ＿ｓｎｄで計算される値）の増加率が、予め定められた閾値を超過したか否かを判定する（ステップ１２０２）。パケット再送率の増加率が、予め定められた閾値を超過した場合は、現在の再送帯域（ｒｔｓ）と、過去の（基準時刻より前の）制御帯域（ｏｌｄ＿ｔｏｋｅｎ）または過去の（基準時刻より前の）送信帯域（ｏｌｄ＿ｓｎｄ）を用いて、制御帯域（ｔｏｋｅｎ）を更新する（ステップ１２０３）。例えば、過去の（基準時刻より前の）制御帯域を、現在の再送帯域に応じた量減らし、現時刻の制御帯域とする。一方、ステップ１２０２において、パケット再送率の増加率が、予め定められた閾値を超過しなかった場合は、送信帯域制御部７１５は、制御帯域を増加させる（ステップ１２０４）。ステップ１２０３やステップ１２０４のあとに、送信帯域制御部７１５は、各コネクションの最小帯域（ｍｉｎ＿ｔｏｋｅｎ５３４）に基づき、制御帯域（ｔｏｋｅｎ）を更新する（ステップ１２０６）。制御帯域（ｔｏｋｅｎ）を変更することで、トークンバケツに蓄積されるトークンの量が変わり、それによりパケットの送信レートを変更することが可能となる。【００９４】
図１２Ｂには、送信帯域制御部７１５が帯域テーブル２１３記載の値を用いて、制御帯域（ｔｏｋｅｎ）を変更するフローチャート図を表す。図１２Ａをより詳細にした例を示す。図１２Ｂの各ステップは、送信帯域制御部７１５により実行される。独自ＴＣＰでは、送信帯域制御部７１５が、本フローチャートに従い処理を実行することで、再送率に基づく帯域制御を実現し、ＲＴＴと廃棄率に依存せず、回線帯域を使い切ることができる。【００９５】
制御帯域（ｔｏｋｅｎ）の更新処理がスタートすると（ステップ１２０７）、送信帯域制御部７１５が、タイマ７１３の出力する現在時刻と、帯域テーブル２１３記載の基準時刻との差が、インターバル格納部７１４の出力するインターバル時間以上であるか否かを判定する（ステップ１２０８）。インターバル時間として、計測したＲＴＴの平均値や初期値等を記録した状態テーブル２１２のｗａｎ＿ｒｔｔ５１９等を使用してもよい。ステップ１２０８において真と判断された場合は、基準時刻後の現在の制御帯域ｔｏｋｅｎの値をｔｍｐに退避させておく（ステップ１２０９）。更に、例えば、帯域テーブル２１３に記憶された再送ビット積算値（基準時刻後）／（現在時刻−基準時刻）／送信帯域（基準時刻前）で求められる再送率（基準時刻後）ｒｔｓ＿ｒａｔｉｏが、再送帯域（基準時刻前）／送信帯域（旧基準時刻前）で求められる旧再送率（基準時刻前）ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏのＫ倍（Ｋ：予め定められた１以上の係数）よりも大きいか否かを判定する（ステップ１２１０）。ステップ１２１０は、上述のステップ１２０２に相当する。Ｋの値は、固定としてもよいし、ｔｏｋｅｎの値に応じて変化してもよい。ステップ１２１０において、大きいと判定した場合は、ネットワークに輻輳が発生していると判断して、制御帯域（基準時刻後）ｔｏｋｅｎの値を、制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎの値よりも小さくなるように、例えば、再送帯域ｒｔｓを用いて減少させる。例えば、制御帯域（基準時刻後）ｔｏｋｅｎ＝制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ−再送帯域（基準時刻後）ｒｔｓなどとする（ステップ１２１２）。ステップ１２１２は、上述のステップ１２０３に相当する。ステップ１２１０で偽と判定された場合は、制御帯域（基準時刻後）ｔｏｋｅｎを増加させる（ステップ１２１１）。制御帯域（基準時刻後）ｔｏｋｅｎの増加方法は、線形に増加させてもよいし、指数的に増加させてもよいし、線形増加と指数増加を組み合わせても良いし、最初線形増加させてその後で指数増加してもよいし、増加率を制御帯域（基準時刻後）ｔｏｋｅｎに応じて変化させてもよい。ステップ１２１１は、上述の１２０４に相当する。【００９６】
ステップ１２１２またはステップ１２１１が完了すると、例えば送信帯域（旧基準時刻前）ｏｌｄ＿ｏｌｄ＿ｓｎｄ＝送信帯域（基準時刻前）ｏｌｄ＿ｓｎｄ、送信帯域（基準時刻前）ｏｌｄ＿ｓｎｄ＝送信帯域（基準時刻後）ｓｎｄ、再送帯域（基準時刻前）ｏｌｄ＿ｒｔｓ＝再送帯域（基準時刻後）ｒｔｓ、基準時刻＝基準時刻＋インターバル、送信ビット積算値（基準時刻後）＝０、再送ビット積算値（基準時刻後）＝０、制御帯域（旧基準時刻前）ｏｌｄ＿ｏｌｄ＿ｔｏｋｅｎ＝制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ、制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ＝ｔｍｐ、定期更新時の制御帯域ｃ＿ｔｏｋｅｎ＝新たな制御帯域ｔｏｋｅｎ、などと更新し、各値を帯域テーブル２１３や状態テーブル２１２に記録する（ステップ１２１３）。その後ステップ１２１７に移る。【００９７】
一方、ステップ１２０８で、偽と判定された場合は、ステップ１２１０と同様に、再送ビット積算値（基準時刻後）／（現在時刻−基準時刻）／送信帯域（基準時刻前）で求められる再送率（基準時刻後）ｒｔｓ＿ｒａｔｉｏが、再送帯域（基準時刻前）／送信帯域（旧基準時刻前）で求められる旧再送率（基準時刻前）ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏのＫ倍（Ｋ：予め定められた１以上の係数）よりも大きいか否かを判定する（ステップ１２１４）。Ｋの値は、固定としてもよいし、ｔｏｋｅｎの値に応じて変化してもよい。ステップ１２１４は、上述のステップ１２０２に相当する。ステップ１２１４において大きいと判定した場合は、ネットワークに輻輳が発生していると判断して、ステップ１２１２と同様に、制御帯域（基準時刻後）ｔｏｋｅｎの値を、制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎの値よりも小さくなるように、例えば再送帯域ｒｔｓを用いて減少させる。例えば、制御帯域（基準時刻後）ｔｏｋｅｎ＝制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ−再送帯域（基準時刻後）ｒｔｓなどとする（ステップ１２１５）。ステップ１２１４において小さいあるいは同等と判定した場合は、何もしない。これらのステップにより、インターバル時間が経過しなくても、再送率の増加からネットワークの輻輳を即座に検出し、制御帯域を更新できる。これらのステップの後、ステップ１２１７に移る。【００９８】
ステップ１２１７では、制御帯域（基準時刻後）ｔｏｋｅｎが、各ＴＣＰ通信の最小帯域ｍｉｎ＿ｔｏｋｅｎよりも小さい場合は、制御帯域（基準時刻後）ｔｏｋｅｎを各ＴＣＰ通信の最小帯域ｍｉｎ＿ｔｏｋｅｎ５３４に変更する（ステップ１２１７）。すなわち図１２Ｂのステップ１２１７で示す２つの式で定まるｔｏｋｅｎのうちいずれか小さいほうをとる。なお、ステップ１２１７におけるｔｏｋｅｎやｍｉｎ＿ｔｏｋｅｎ５３４などのデータは、状態テーブル２１２や帯域テーブル２１３を参照して読み出すことができる。制御帯域（ｔｏｋｅｎ）を変更することで、トークンバケツに蓄積されるトークンの量が変わり、それによりパケットの送信レートを変更することが可能となる。【００９９】
上述のように、独自ＴＣＰでは、図１２を用いて説明したフローチャートのように、廃棄率または再送率に基づく帯域制御を行うことで、確率論的な廃棄の影響を受けずに、送信帯域がボトルネック帯域に到達してトップスピードになるまで、送信帯域を増加させることが出来るようになる。これにより、独自ＴＣＰは、ＲＴＴと廃棄率に依存せずに、回線帯域を使い切ることが出来る。【０１００】
図１３、図１４、図１５には、送信帯域制御部７１５が帯域テーブル２１３記載の値を用いて、制御帯域（ｔｏｋｅｎ）を変更するフローチャート図を表す。図１２Ｂの一部をより詳細にした例を示す。図１３がメインのフローチャート、図１４と図１５は、図１３の処理の一部を詳細化したフローチャートである。図１３、図１４、図１５の各ステップは、送信帯域制御部７１５により実行される。独自ＴＣＰでは、送信帯域制御部７１５が、本フローチャートに従い処理を実行することで、再送率に基づく帯域制御を実現し、ＲＴＴと廃棄率に依存せず、回線帯域を使い切ることができる。【０１０１】
図１３には、送信帯域制御部７１５が帯域テーブル２１３記載の値を用いて、制御帯域（ｔｏｋｅｎ）を変更するメインのフローチャート図を表す。【０１０２】
送信帯域制御部７１５は、初めに廃棄率の計算を行う（１３０１）。廃棄率は、前述の図１１を用いた説明のように、ｒｔｓ／ｏｌｄ＿ｔｏｋｅｎまたはｒｔｓ／ｏｌｄ＿ｓｎｄまたは１−ｒｃｖ／ｏｌｄ＿ｔｏｋｅｎまたは１−ｒｃｖ／ｏｌｄ＿ｓｎｄで計算される。廃棄率として、再送率を用いることもある。次に、ｔｏｋｅｎの値に応じて、閾値ｋの調整を行う（１３０２）。ｔｏｋｅｎの値が大きいときは、閾値ｋを小さくすることで、廃棄率が少し増加しただけでも、廃棄率の変化率が閾値ｋを超えやすくなり、ネットワークの輻輳を検出しやすくする。次に、前回の定期更新からＲＴＴが経過したか否かを判定する（ステップ１３０３）。これは、現在時刻と基準時刻との差がインターバル以上であるか否かを判定するステップ１２０８に相当する処理である。ＲＴＴ経過した場合は、ＲＴＴ毎に行う定期更新処理を行う（１３０４）。ＲＴＴ経過してない場合は、不定期の更新処理を行う（１３０５）。定期更新１３０４と不定期更新１３０５の詳細は、それぞれ図１４と図１５を用いて後述する。定期更新１３０４と不定期更新１３０５の後、アクティブコネクション数とアクセス帯域に基づいて、制御帯域（ｔｏｋｅｎ）を更新する処理を行う（１３０６）。この処理により、コネクション間の公平性が確保される。更に、各ＴＣＰコネクション通信の最小帯域ｍｉｎ＿ｔｏｋｅｎ５３４に基づいて、制御帯域（ｔｏｋｅｎ）を更新する（ステップ１３０７）。【０１０３】
図１４には、送信帯域制御部７１５が行う、制御帯域（ｔｏｋｅｎ）の定期更新処理１３０４の詳細なフローチャート図を示す。【０１０４】
送信帯域制御部７１５が行う定期更新処理１３０４では、初めに廃棄率（ｒｔｓ＿ｒａｔｉｏ）の増加率が閾値ｋを超過したか否かを判定する（ステップ１４０１）。廃棄率（ｒｔｓ＿ｒａｔｉｏ）の増加率が閾値ｋを超過している場合は、送信帯域制御部７１５は、０〜ＲＴＴ前の再送帯域ｒｔｓと、ＲＴＴ〜２ＲＴＴ前の送信帯域ｏｌｄ＿ｓｎｄまたは制御帯域ｏｌｄ＿ｔｏｋｅｎに基づき新たな制御帯域を決定する（ステップ１４０２）。例えば、新たな制御帯域ｔｏｋｅｎ＝制御帯域（基準時刻前：ＲＴＴ〜２ＲＴＴ前）ｏｌｄ＿ｔｏｋｅｎ−再送帯域（基準時刻後：０〜ＲＴＴ前）ｒｔｓなどとする（ステップ１４０２）。本願では、ステップ１４０２のことをフェーズ２と呼ぶ。次に、現在のＡＣＫ受信済み箇所ｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２４と、ＲＴＴ前のＡＣＫ受信済み箇所を表すｏｌｄ＿ｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２７の値を比較し（ステップ１４０３）、変化していればＲＴＴ毎の定期更新１３０４を終了する。変化していない場合は、ステップ１４０５に進む。【０１０５】
ステップ１４０１において、廃棄率（ｒｔｓ＿ｒａｔｉｏ）の増加率が閾値ｋを超過していない場合は、送信帯域制御部７１５は、現在のＡＣＫ受信済み箇所ｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２４と、ＲＴＴ前のＡＣＫ受信済み箇所を表すｏｌｄ＿ｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２７の値を比較する（ステップ１４０４）。変化していない場合は、ステップ１４０５に進む。ステップ１４０５では、送信帯域制御部７１５は、ＷＡＮ側の送信バッファ２０７を参照し、、未送信データがあるか否かを判断する（ステップ１４０５）。未送信データが送信バッファ２０７にある場合は、送信帯域制御部７１５は、０〜ＲＴＴ前のＡＣＫ受信数に基づいて、制御帯域を調整する（ステップ１４０６）。例えば、新たな制御帯域＝受信帯域（基準時刻後：０〜ＲＴＴ前）ｒｃｖなどとする（ステップ１４０６）。ステップ１４０６が終わると、送信帯域制御部７１５は、ＲＴＴ毎の定期更新１３０４を終了する。また、ステップ１４０４において、現在のＡＣＫ受信済み箇所ｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２４が、ＲＴＴ前のＡＣＫ受信済み箇所を表すｏｌｄ＿ｗａｎ＿ｌｅｆｔ＿ｓｅｎｄ５２７の値よりも大きくなっている場合は、制御帯域（ｔｏｋｅｎ）を増加させる（ステップ１４０７）。本願では、ステップ１４０７の処理のことをフェーズ１と呼ぶ。ステップ１４０７が終わると、ＲＴＴ毎の定期更新１３０４を終了する。なお、制御帯域（ｔｏｋｅｎ）を増加させるステップ１４０７の詳細は、図１６を用いて後述する。【０１０６】
図１５には、送信帯域制御部７１５が行う、制御帯域（ｔｏｋｅｎ）の不定期更新処理１３０５の詳細なフローチャート図を示す。【０１０７】
図１３のステップ１３０３で、現在時刻が、前回のステップ１３０４のＲＴＴ毎の制御帯域更新処理からＲＴＴ経過していない場合、送信帯域制御部７１５が行う不定期更新処理１３０５では、初めに廃棄率（ｒｔｓ＿ｒａｔｉｏ）の増加率が閾値ｋを超過したか否かを判定する（ステップ１５０１）。廃棄率（ｒｔｓ＿ｒａｔｉｏ）の増加率が閾値ｋを超過している場合は、０〜ＲＴＴ前の再送帯域ｒｔｓと、ＲＴＴ〜２ＲＴＴ前の送信帯域ｏｌｄ＿ｓｎｄまたは制御帯域ｏｌｄ＿ｔｏｋｅｎに基づき新たな制御帯域を決定する（ステップ１５０２）。例えば、新たな制御帯域ｔｏｋｅｎ＝制御帯域（基準時刻前：ＲＴＴ〜２ＲＴＴ前）ｏｌｄ＿ｔｏｋｅｎ−再送帯域（基準時刻後：０〜ＲＴＴ前）ｒｔｓなどとする（ステップ１５０２）。本願では、ステップ１５０２のことを、ステップ１４０２と同様に、フェーズ２と呼ぶ。ステップ１５０２が終わると、不定期更新処理１３０５を終了する。一方、ステップ１５０１において、廃棄率（ｒｔｓ＿ｒａｔｉｏ）の増加率が閾値ｋを超過していない場合は、直近の定期更新時の制御帯域（ｃ＿ｔｏｋｅｎ）を使用して、制御帯域（ｔｏｋｅｎ）を更新する（ステップ１５０３）。例えば、ｔｏｋｅｎ＝ｃ＿ｔｏｋｅｎなどとする。（ステップ１５０３）。本願では、ステップ１５０３のことを、フェーズ３と呼ぶ。【０１０８】
図１３〜図１５を用いて上述したように、送信帯域制御部７１５が行う制御帯域（ｔｏｋｅｎ）の更新処理は、大きく分けて、帯域を増加させるフェーズ１（ステップ１４０７）と、帯域を減少させるフェーズ２（ステップ１４０２、ステップ１５０２）と、帯域を元の値に戻すフェーズ３（ステップ１５０３）と、帯域をＡＣＫ受信数に応じて一定にするフェーズ４（ステップ１４０６）の４種類の処理から構成される。【０１０９】
図１７には、送信帯域制御部７１５が行う制御帯域（ｔｏｋｅｎ）の更新処理により、制御帯域（ｔｏｋｅｎ）が時系列順にどのように変化していくかをグラフにより示す。【０１１０】
まず初めに、帯域増加のフェーズ１（ステップ１４０７）があり、次に、帯域を減少させるフェーズ２（ステップ１４０２、ステップ１５０２）があり、最後に、帯域をＡＣＫ受信数に応じて一定にするフェーズ４（ステップ１４０６）がある。帯域を元の値に戻すフェーズ３（ステップ１５０３）は、ＲＴＴ毎の定期更新までの間にある、制御帯域（ｔｏｋｅｎ）が一定になっているときのフェーズである。【０１１１】
送信帯域制御部７１５は、フェーズ２とフェーズ４の時、状態テーブル２１２の帯域増加開始時刻ｉｎｃ＿ｔｉｍｅ５３８を現在時刻で更新する。更に、フェーズ４の時、状態テーブル２１２のｔ＿ｔｏｋｅｎ５３５を現在の制御帯域（ｔｏｋｅｎ）で更新する。ｔ＿ｔｏｋｅｎ５３５は、独自ＴＣＰが検出したボトルネック帯域に相当する。【０１１２】
図１６Ａには、ステップ１４０７における帯域増加処理のフローチャート図を示す。【０１１３】
送信帯域制御部７１５が行う帯域増加処理１４０７では、初めに、状態テーブル２１２に記載されているｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２の値をチェックして、通常のＴＣＰに対してフレンドリなモード、つまり第一の制御モードでの通信が有効か否かを判断する。加えて、現在時刻と、帯域増加開始時刻ｉｎｃ＿ｔｉｍｅ５３８との差が、時間Ｔを超過したか否かを判断する（ステップ１６０１）。フレンドリモードｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２が有効で、尚且つ、現在時刻と帯域増加開始時刻ｉｎｃ＿ｔｉｍｅ５３８との差が、時間Ｔを超過していない場合は、送信帯域制御部７１５は、第一の制御モードでゆっくりと帯域を増加させる（ステップ１６０３）。例えば、新たな制御帯域（ｔｏｋｅｎ）＝元の制御帯域（ｔｏｋｅｎ）＋係数αＬ×最大セグメントサイズＭＳＳ×８／ＲＴＴなどとする（ステップ１６０３）。係数αＬは、例えば１未満にする。フレンドリモードｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２が無効、または、現在時刻と帯域増加開始時刻ｉｎｃ＿ｔｉｍｅ５３８との差が、時間Ｔを超過した場合は、送信帯域制御部７１５は、第一の制御モードよりも送信帯域の増加率が高い第２の制御モードで、帯域を急激に増加させる（ステップ１６０２）。例えば、新たな制御帯域（ｔｏｋｅｎ）＝係数αＥ×元の制御帯域（ｔｏｋｅｎ）などとする（ステップ１６０２）。【０１１４】
上述したように、廃棄率の増加率が閾値kを超過しなくなるなど、ネットワークの輻輳が検出されなくなり（ステップ１４０１）、尚且つ、受信確認済みのデータ箇所が更新中（ステップ１４０４）の状態が継続するようになってから、一定の期間Ｔは、送信帯域をゆっくりと、例えば線形的に増加させ（ステップ１６０３）、その後、送信帯域を急激に、例えば非線形的に増加させる（ステップ１６０２）ことで、独自ＴＣＰを用いた通信が回線帯域を占有することを防ぎ、通常のＴＣＰを用いた通信が通信帯域を確保できるようになる。【０１１５】
図１６Ｂには、ステップ１４０７における帯域増加処理の別のフローチャート図を示す。図１６Ａに分岐処理を一つ加えた例を示す。【０１１６】
図１６Ａを用いて説明したステップ１６０１とステップ１６０２の間に、新たに分岐処理（ステップ１６０４）が加わり、ステップ１６０２とは別の処理（ステップ１６０５）を実施するフローが加わる。それ以外は、図１６Ａと同様である。【０１１７】
ステップ１６０１において、フレンドリモードｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２が有効で、尚且つ、現在時刻と帯域増加開始時刻ｉｎｃ＿ｔｉｍｅ５３８との差が、時間Ｔを超過していない場合、次に、計測ＲＴＴが、初期ＲＴＴの一定倍（例えば２倍）を超過しているか否かを判定する（ステップ１６０４）。初期ＲＴＴの一定倍を超過していない場合は、ステップ１６０２の処理を実施する。初期ＲＴＴの一定倍を超過している場合は、送信帯域制御部７１５は、第３の制御モードである通常ＴＣＰと同等のスピードで帯域を増加させる（ステップ１６０５）。例えば、新たな制御帯域（ｔｏｋｅｎ）＝元の制御帯域（ｔｏｋｅｎ）＋最大セグメントサイズＭＳＳ×８／ＲＴＴなどとする（ステップ１６０５）。これにより、平均ＲＴＴと初期ＲＴＴの比率に基づいて、増加速度を決定し、決定された増加速度を第一の制御モードと、第２の制御モードとの中間の第３の制御モードとして送信帯域制御を行う通信装置が実現される。【０１１８】
上述したように、計測ＲＴＴが、初期ＲＴＴの一定倍（例えば２倍）を超過しているときに、帯域増加速度を通常ＴＣＰと同等にする処理を加える。ネットワークの輻輳が検出できていなくても、ＲＴＴが増加し始めた早い段階から、帯域増加速度を低下させることで、回線帯域の使いすぎを防止でき、帯域の公平利用が図ることができる。【０１１９】
図１６Ｃには、ステップ１４０７における帯域増加処理の別のフローチャート図を示す。図１６Ｂに分岐処理を一つ加えた例を示す。【０１２０】
図１６Ｂを用いて説明したステップ１６０４とステップ１６０２の間に、新たに分岐処理（ステップ１６１５）が加わり、ステップ１６０２とは別の処理（ステップ１６１６）を実施するフローが加わる。それ以外は、図１６Ｂと同様である。【０１２１】
ステップ１６０４において、計測ＲＴＴが、初期ＲＴＴの一定倍（例えば２倍）を超過していない場合、次に、現在の制御帯域（ｔｏｋｅｎ）が、輻輳が検出されない状態になった直近の制御帯域ｔ＿ｔｏｋｅｎ５３５を超過しているか否かを判定する（ステップ１６１５）。超過していない場合は、ステップ１６０２（第２の制御モード）の処理を実施する。超過している場合は、ステップ１６０２（第２の制御モード）よりは緩やか制御モードだが第３の制御モードより急である第４の制御モードにより、帯域を急に増加させる（ステップ１６１６）。例えば、新たな制御帯域（ｔｏｋｅｎ）＝係数βＥ×元の制御帯域（ｔｏｋｅｎ）などとする（ステップ１６１６）。これにより、輻輳が検出されない状態になった直近の送信帯域に基づいて、増加速度を決定する通信装置が実現される。【０１２２】
上述したように、現在の制御帯域（ｔｏｋｅｎ）が、輻輳が検出されない状態になった直近の制御帯域ｔ＿ｔｏｋｅｎ５３５を超過したときに、帯域の増加速度を緩やかにする処理を加える。ネットワークの輻輳が検出できていなくても、ネットワークの輻輳が発生する可能性が高い段階から、帯域増加速度を低下させることで、回線帯域の使いすぎを防止できる。  なお、通信装置１０１の送信帯域制御部１５０や、図１の通信装置１０１に対応する通信装置２００の送信帯域制御部７１５では、第一ないし第４の制御モードを搭載し、図１６Ａ−Ｃの処理のいずれか一を実行してもよい。また、第一ないし第４の制御モードのうち少なくとも２種類の制御モードが、搭載、あるいは実行可能な状態で設定された通信装置であってもよい。ただし、第一の制御モードを実行可能な状態に設定されていない場合、増加率の小さい制御モードを実行する期間が所定の期間経過した後（例えば、現在時刻と帯域増加開始時刻との差＞Ｔ）、送信帯域制御部７１５（図１の１５０）は、他の制御モードに図１６の条件で変更してもよい。また、各制御モードは、通信装置２００の不揮発性記憶媒体にプログラムとしてそれぞれ格納されていてもよい。図１６Ａ−Ｃで説明した４種類の制御モードのうち、２以上の制御モードの設定を、管理端末等から通信装置が実行可能な状態に設定されてもよい。２以上の制御モードを用いて、所定の条件に応じて増加率を増減する送信帯域制御を行い、他の通信との帯域の公平利用がはかれる。また、図１６Ａ−Ｃの１６０１の、「フレンドリモード有効」かどうかの判断は省略してもよい。
以上送信帯域制御部７１５が行う送信帯域の増加するための制御モードについて説明した。
【実施例２】
【０１２３】
（通信モードを変更する処理）
以下、独自ＴＣＰ対応の通信装置が、データ通信を開始する場合、対向装置が独自ＴＣＰ対応か否かで、通信モードを変更する例を説明するが、特に断りのない限り、図１の通信装置１００や図２の通信装置のほか上述の実施例の構成と同様である。【０１２４】
図１８のシーケンス図と、図１９〜図２０のフローチャート図と、図２３のテーブルフォーマット図を用いて、ＴＣＰ制御部７０７／７０３が状態テーブル２１２に記載する通信モード（フレンドリモードｆｒｉｅｎｄｌｙ＿ｍｏｄｅ５３２またはワンウェイモードｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３）を決定する方法の詳細を説明する。【０１２５】
初めに、図２３を用いて、モード／最低帯域指定テーブル７４０のフォーマットについて説明する。【０１２６】
モード／最低帯域指定テーブル７４０は、送信ＩＰ／サブネットと宛先ＩＰ／サブネットと送信ポートと宛先ポートの組合せ毎に、フレンドリモードの有効または無効と、最小帯域を指定したエントリを複数個備える。【０１２７】
図７Ａに示すユーザ端末７４１は、送信ＩＰ／サブネットと宛先ＩＰ／サブネットと送信ポートと宛先ポートの組合せ毎に、フレンドリモードの有効または無効と、最小帯域を指定する。送信ＩＰ／サブネットと宛先ＩＰ／サブネットと送信ポートと宛先ポートのうち、任意の値をとる項目については、Ａｎｙなどと指定する。任意の組合せに対するデフォルト動作を指定したい場合は、送信ＩＰ／サブネットと宛先ＩＰ／サブネットと送信ポートと宛先ポートの全てをＡｎｙなどと指定した上で、フレンドリモードの有効または無効と、最小帯域を指定すればよい。特定のネットワーク宛の通信について、フレンドリモードの有効または無効と、最小帯域を指定したい場合は、他の送信ＩＰ／サブネットと送信ポートと宛先ポートはＡｎｙなどとしたうえで、宛先ＩＰ／サブネットと、フレンドリモードの有効または無効と、最小帯域を指定する。特定のネットワーク元の特定の送信ポート番号の通信について、フレンドリモードの有効または無効と、最小帯域を指定したい場合は、宛先ＩＰ／サブネットと宛先ポートをＡｎｙなどとした上で、送信ＩＰ／サブネットと送信ポートと、フレンドリモードの有効または無効と、最小帯域を指定する。【０１２８】
ＴＣＰ制御部７０７／７０３は、ＳＹＮパケットまたはＳＹＮＡＣＫパケットを受信してコネクションを確立する時に、モード／最低帯域指定テーブル７４０から一致するエントリを上から検索して、一致するエントリが有る場合に、エントリ指定の最小帯域を、状態テーブル２１２のｍｉｎ＿ｔｏｋｅｎ５３５に記載する。更に、送信帯域制御部７１５が、状態テーブル２１２のｍｉｎ＿ｔｏｋｅｎ５３５に基づいて、ｍｉｎ＿ｔｏｋｅｎ５３５を下回らないように制御帯域（ｔｏｋｅｎ）を制御する。これにより、各ＴＣＰ通信の最低帯域を、外部から予め定めることが出来るようになる。【０１２９】
図１８Ａには、通信を自発的に開始する通信装置（独自ＴＣＰ対応）が、対向装置が独自ＴＣＰ対応の時に、通信モードを決定するシーケンス図を示す。【０１３０】
通信装置１８０１（独自ＴＣＰ対応）は、対向の通信装置（独自ＴＣＰ対応）１８０２に対して、独自のオプション番号を持つＳＹＮパケット１８０３を送信する。対向の通信装置（独自ＴＣＰ対応）１８０２は、独自のオプション番号を持つＳＹＮパケット１８０３を受け取ると、独自のオプション番号を持つＳＹＮＡＣＫパケット１８０４を返信する。通信装置１８０１（独自ＴＣＰ対応）は、対向の通信装置（独自ＴＣＰ対応）１８０２から、独自のオプション番号を持つＳＹＮＡＣＫパケット１８０４を受け取ると、ＳＹＮＡＣＫパケット１８０４のＩＰヘッダ４１０とＴＣＰヘッダ４２０に記載の送信ＩＰアドレス４１３と宛先ＩＰアドレス４１４と送信ポート番号４２１と受信ポート番号４２２を用いて、モード／最低帯域指定テーブル７４０から一致するエントリを上から検索する。一致するフレンドリモード有効のエントリがある場合は、状態テーブル２１２のフレンドリモード５３２を有効にする（１８０５）。【０１３１】
図１８Ｂには、通信を自発的に開始する通信装置（独自ＴＣＰ対応）が、対向装置が独自ＴＣＰ非対応の時に、通信モードを決定するシーケンス図を示す。【０１３２】
通信装置１８０１（独自ＴＣＰ対応）は、対向の装置（独自ＴＣＰ非対応）１８０６に対して、独自のオプション番号を持つＳＹＮパケット１８０３を送信する。対向の装置（独自ＴＣＰ非対応）１８０６は、独自のオプション番号を持つＳＹＮパケット１８０３を受け取ると、独自のオプション番号を持たないＳＹＮＡＣＫパケット１８０７を返信する。通信装置１８０１（独自ＴＣＰ対応）は、対向の装置（独自ＴＣＰ非対応）１８０６から、独自のオプション番号を持たないＳＹＮＡＣＫパケット１８０７を受け取ると、状態テーブル２１２のｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３とフレンドリモード５３２を有効にする（１８０８）。【０１３３】
図１８Ｃには、通信を受動的に開始する通信装置（独自ＴＣＰ対応）が、対向装置が独自ＴＣＰ対応の時に、通信モードを決定するシーケンス図を示す。【０１３４】
通信装置１８０１（独自ＴＣＰ対応）は、対向の通信装置（独自ＴＣＰ対応）１８０２から、独自のオプション番号を持つＳＹＮパケット１８０９を受信すると、独自のオプション番号を持つＳＹＮＡＣＫパケット１８１０を返信する。更に、ＳＹＮパケット１８０９のＩＰヘッダ４１０とＴＣＰヘッダ４２０に記載の送信ＩＰアドレス４１３と宛先ＩＰアドレス４１４と送信ポート番号４２１と受信ポート番号４２２を用いて、モード／最低帯域指定テーブル７４０から一致するエントリを上から検索する。一致するフレンドリモード有効のエントリがある場合は、状態テーブル２１２のフレンドリモード５３２を有効にする（１８１１）。【０１３５】
図１８Ｄには、通信を受動的に開始する通信装置（独自ＴＣＰ対応）が、対向装置が独自ＴＣＰ非対応の時に、通信モードを決定するシーケンス図を示す。【０１３６】
通信装置１８０１（独自ＴＣＰ対応）は、対向の装置（独自ＴＣＰ非対応）１８０６から、独自のオプション番号を持たないＳＹＮパケット１８１２を受信すると、独自のオプション番号を持たないＳＹＮＡＣＫパケット１８１３を返信する。更に、状態テーブル２１２のｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３とフレンドリモード５３２を有効にする（１８１４）。【０１３７】
以上が、対向装置が、独自ＴＣＰ対応か非対応かで、通信モードを決定するためのシーケンス図を説明した。なお、独自ＴＣＰ非対応である対向装置は、例えば、図１のルータ１８６等の通信装置、計算機１３１や１２３である。【０１３８】
図１９には、図１８Ａ−Ｄに対応する、通信を自発的に開始する通信装置が、通信モードを決定するフローチャート図を示す。【０１３９】
通信装置１８０１（独自ＴＣＰ対応）が、自発的に通信を開始すると（ステップ１９０１）、ＴＣＰ制御部７０３は、初めに特定のオプション番号を持つＳＹＮパケットを送信する（ステップ１９０２）。対向装置からＳＹＮＡＣＫパケットを受信すると（ステップ１９０３）、次に、ＴＣＰ制御部７０３／７０７は、ＳＹＮＡＣＫパケットが特定のオプション番号を持つか否かを判定する（ステップ１９０４）。特定のオプション番号が有る場合は、ＳＹＮＡＣＫパケットのＩＰヘッダ４１０とＴＣＰヘッダ４２０に記載の送信ＩＰアドレス４１３と宛先ＩＰアドレス４１４と送信ポート番号４２１と受信ポート番号４２２を用いて、モード／最低帯域指定テーブル７４０から一致するエントリを上から検索して、一致するフレンドリモード有効のエントリがあるか否かを判定する（ステップ１９０６）。一致するフレンドリモード有効のエントリが無い場合は、ＴＣＰ制御部７０３／７０７は、そのまま通信を確立する（ステップ１９０８）。一致するフレンドリモード有効のエントリが有る場合は、状態テーブル２１２のフレンドリモード５３２を有効にする（ステップ１９０７）。また、ステップ１９０４において、特定のオプション番号が無い場合は、状態テーブル２１２のｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３を有効にする（ステップ１９０５）。その後、強制的にフレンドリモードを有効にしてもよいし（ステップ１９０７）、ステップ１９０６を実施して、モード／最低帯域指定テーブル７４０の検索結果に基づいて、状態テーブル２１２のフレンドリモード５３２の有効／無効を決めても良い。なお、状態テーブル２１２のフレンドリモード５３２やｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３は、デフォルトでは無効である。これにより、送信帯域の増加方法を適用するＴＣＰ通信を、外部から予め定める通信装置が実現される。【０１４０】
図２０には、通信を受動的に開始する装置が、通信モードを決定するフローチャート図を示す。【０１４１】
通信装置１８０１（独自ＴＣＰ対応）が、受動的に通信を開始すると（ステップ２００１）、初めにＳＹＮパケットを受信して（ステップ２００２）、通信を開始する（ステップ２００３）。次に、ＳＹＮパケットが特定のオプション番号を持つか否かを判定する（ステップ２００４）。特定のオプション番号が有る場合は、ＳＹＮパケットのＩＰヘッダ４１０とＴＣＰヘッダ４２０に記載の送信ＩＰアドレス４１３と宛先ＩＰアドレス４１４と送信ポート番号４２１と受信ポート番号４２２を用いて、モード／最低帯域指定テーブル７４０から一致するエントリを上から検索して、一致するフレンドリモード有効のエントリがあるか否かを判定する（ステップ２００６）。一致するフレンドリモード有効のエントリが有る場合は、状態テーブル２１２のフレンドリモード５３２を有効にする（ステップ２００７）。また、ステップ２００４において、特定のオプション番号が無い場合は、状態テーブル２１２のｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３を有効にする（ステップ２００５）。その後、強制的にフレンドリモードを有効にしてもよいし（ステップ２００７）、ステップ２００６を実施して、モード／最低帯域指定テーブル７４０の検索結果に基づいて、状態テーブル２１２のフレンドリモード５３２の有効／無効を決めても良い。なお、状態テーブル２１２のフレンドリモード５３２やｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３は、デフォルトでは無効である。通信モードが定まると、次に、ｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３が有効か否かを判定する（ステップ２００８）。ｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３が有効な場合は、特定のオプション番号を持つＳＹＮＡＣＫパケットを対向装置へ送信する（ステップ２００９）。ｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３が無効な場合は、特定のオプション番号を持たないＳＹＮＡＣＫパケットを対向装置へ送信する（ステップ２０１０）。ＳＹＮＡＣＫパケットを送信すると、通信確立する（ステップ２０１１）。これにより、送信帯域の増加方法を適用するＴＣＰ通信を、外部から予め定める通信装置が実現される。【０１４２】
上述の図２３のテーブルフォーマットと、図１８に示すシーケンスと、図１９〜図２０に示すフローチャートを用いて、通信モードを決定することで、フレンドリモードにする通信を、外部から予めコネクション毎にユーザが指定することができる。更に、ＴＣＰ通信の開始時に対向装置から特定の値を持つオプション情報が送付されないときに、フレンドリモードを強制的に適用することが可能となる。
（通信モードに応じて廃棄率の計算の仕方を変える）
以下、実施例２において、図２１のフローチャート図と、図２２のシーケンス図を用いて、送信帯域制御部７１５が、通信モードに応じて廃棄率の計算処理の詳細を説明する。【０１４３】
図２２には、独自ＴＣＰと通常ＴＣＰのパケット廃棄が起きたときの再送方法の差異を説明するためのシーケンス図を示す。左側に通常ＴＣＰの再送制御方式を、右側に独自ＴＣＰの再送制御方式を示す。【０１４４】
通常ＴＣＰでは、ＡＣＫパケットのＴＣＰオプションヘッダ４３０内のｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３７、４３９）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）には、どこからどこまで部分的に受信済であるかを最大４箇所記載して、部分的確認応答（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ（ＳＡＣＫ））用に用いる。一方、独自ＴＣＰでは、ＴＣＰオプションヘッダ４３０内のｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３７、４３９）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）には、どこからどこまで部分的に再送してほしいかを最大４箇所記載して、部分的未確認応答（Ｎｅｇａｔｉｖｅ  ＡＣＫ（ＮＡＣＫ））用に用いる。【０１４５】
通常ＴＣＰでは、送信計算機２２０１から受信計算機２２０２へ送った１２個のデータパケットＡ〜Ｌ（２２０５）のうち、Ｂ、Ｄ、Ｆ、Ｈ、Ｊが途中で廃棄されたとすると、ＴＣＰオプションヘッダ４３０に書き込める受信済み箇所が最大４箇所までである制約から、Ｉ以降に送ったパケットに対する確認応答をこの時点では送信計算機２２０１に送ることができない（２２０９）。送信計算機は、Ａ〜Ｉまでの部分的確認応答を記載した確認応答パケット（２２０９）を用いて、パケットＡ〜Ｉのうち廃棄されたパケットＢ、Ｄ、Ｆ、Ｈを再送する（２２０６）。受信計算機２２０２は、再送パケット（２２０６）を受信してから、パケットＩ以降の部分的確認応答を記載した確認応答を返信する（２２１２）。送信計算機２２０１は、パケットＩ以降の部分的確認応答を記載した確認応答（２２１２）を受信してから、パケットＩ以降に廃棄されたパケットＪを再送することができる（２２０７）。一方、独自ＴＣＰでは、送信計算機２２０３から受信計算機２２０４へ送った１２個のデータパケットＡ〜Ｌ（２２０８）のうち、Ｂ、Ｄ、Ｆ、Ｈ、Ｊが途中で廃棄されたとしても、Ａ〜Ｊまでの再送してほしい箇所をＴＣＰオプションヘッダ４３０内のｌｅｆｔ＿ｅｄｇｅ＿１（４３３）とｒｉｇｈｔ＿ｅｄｇｅ＿１（４３４）へ逐一書き込んでから、部分的未確認応答用（ＮＡＣＫ）のＡＣＫパケットを返信する（２２１１）。各再送要求箇所は、１つのＮＡＣＫパケットにだけ書き込まれる。送信計算機２２０３は、部分的未確認応答用（ＮＡＣＫ）のＡＣＫパケット（２２１１）を受信すると、ＴＣＰオプションヘッダ４３０に記載された再送要求箇所Ｂ、Ｄ、Ｆ、Ｈ、Ｊを再送する（２２１０）。ロスが大量に発生したときでも、一度で再送が完了するため、通信時間が短縮し、帯域が向上する。つまり、送信計算機と受信計算機の間に２台の通信中継装置（プロキシ装置）を設置し、受信計算機側のプロキシ装置が送信計算機側のプロキシ装置に対して廃棄箇所を全て逐一フィードバック通知する。例えば、送信計算機側のプロキシ装置は、受信計算機側のプロキシ装置からフィードバック通知された廃棄箇所を再送すると共に、基準時刻以降の再送帯域や廃棄帯域と、基準時刻以前の送信帯域とに基づいて、特定の宛先に対するデータ送信帯域とデータ再送帯域の総和を増減させる。それにより、廃棄率に依存しない通信を実現することができる。【０１４６】
上述のように、通常ＴＣＰでは、ＳＡＣＫを用いるため、対向装置が通常ＴＣＰである場合は、ＳＡＣＫを用いる必要がある。更に、廃棄箇所が最大４個までしか通知されないため、再送帯域を用いて廃棄率を計算してしまうと、廃棄箇所が多いときに、誤差が大きくなってしまう。そのため、対向装置が通常ＴＣＰである場合は、廃棄率の計算方法を変え、送信帯域を制御する必要がある。【０１４７】
図２１には、通信モードに応じて廃棄率の計算方法を変えるフローチャート図を示す。【０１４８】
まず、状態テーブル２１２のｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３が有効か否かを判定する（ステップ２１０１）。ｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３が無効な場合は、対向装置が独自ＴＣＰに対応しているということなので、直近の再送数とＲＴＴ前の送信数、または、直近の再送帯域ｒｔｓとＲＴＴ前の制御帯域ｏｌｄ＿ｔｏｋｅｎを用いて、再送率を計算し、廃棄率として利用する（ステップ２１０５）。一方、ｏｎｅ−ｗａｙ＿ｍｏｄｅ５３３が有効な場合は、重複ＡＣＫを受信中か否かを判定する（ステップ２１０２）。重複ＡＣＫを受信していない場合は、廃棄率０とする（ステップ２１０３）。重複ＡＣＫを受信している場合は、直近のＡＣＫ受信数とＲＴＴ前の送信数、または、直近の受信帯域ｒｃｖとＲＴＴ前の制御帯域ｏｌｄ＿ｔｏｋｅｎを用いて、廃棄率を計算する（ステップ２１０４）。これにより、対向装置から特定の値を持つオプション情報が送付されないときに限り、送信帯域とＡＣＫ受信数の履歴を用いて廃棄率を推定し、推定結果に基づいて帯域制御を行う送信帯域制御部を備える通信装置２００が実現される。【０１４９】
上述のように、本実施例での通信装置は、ＴＣＰ通信の開始時に対向装置から特定の値を持つオプション情報が送付されないときに、即ち、対向装置が独自ＴＣＰに対応していないときに、送信帯域とＡＣＫ受信数の履歴を用いて廃棄率を推定することで、ＮＡＣＫを用いなくても廃棄率を推定する。これにより、独自ＴＣＰが帯域制御に用いる廃棄率の誤差を少なくすることができ、上述のボトルネック帯域の推定が容易となる。【０１５０】
なお、実施例２の独自ＴＣＰ対応の通信装置は、実施例１の構成を前提とした通信装置であってもよい。また、図１６の第一ないし第４の制御モードのうち、少なくとも一が搭載されてある、通信装置であってもよい。
上述の実施例のように、本願明細書で開示される他の態様は、下記のとおりである。
ＴＣＰ通信の送信帯域を制御する通信装置が、前記ＴＣＰ通信において輻輳が検出されず、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、前記ＴＣＰ通信の送信帯域を線形的に増加させる手段と、前記の一定の期間が過ぎた後、送信帯域を非線形的に増加させる手段と、前記ＴＣＰ通信において、廃棄率や再送率の変化率を用いて輻輳を検出する手段と、送信帯域と再送帯域の過去の履歴を用いて再送率とその変化率を推定する手段と、送信帯域とＡＣＫ受信数の過去の履歴を用いて廃棄率とその変化率を推定する手段と、輻輳を検出したときに、送信帯域と再送帯域とＡＣＫ受信数の過去の履歴を用いて、送信帯域を減少させる手段と、を備える。【０１５１】
上述の態様により、通常のＴＣＰを用いた通信と、独自ＴＣＰを用いた通信が、同一の通信回線を共有する場合でも、独自ＴＣＰを用いた通信が、回線帯域を占有することを防ぎ、通常のＴＣＰを用いた通信が通信帯域を確保することが可能となる。【０１５２】
また、本発明の別の態様によると、
ＬＡＮ側とＷＡＮ側の複数のＴＣＰ通信を中継する通信装置が、各ＴＣＰ通信の送信帯域を制御する帯域制御部と、各ＴＣＰ通信の受信確認済みのデータ箇所の履歴を記録する状態テーブルと、各ＴＣＰ通信における送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴を記録する帯域テーブルと、を有し、前記帯域制御部が、状態テーブルに記載の送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴と、状態テーブルに記載の受信確認済みのデータ箇所の履歴と基づいて、ＴＣＰ通信の輻輳の有無と、受信確認済みのデータ箇所が更新中か否かを判定し、輻輳が検出されず、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、ＴＣＰ通信の送信帯域を線形的に増加させ、前記の一定の期間が過ぎた後、ＴＣＰ通信の送信帯域を非線形的に増加させる通信装置が提供される。
【符号の説明】
【０１５３】
１０１、１０２  通信装置
１１０、１２０、１３０  ネットワーク
１１１、１２１、１３１  計算機
１９０、１９１、１９２  回線
２００  通信装置
７１５  送信帯域制御部
【図１】
2013125096.tif 000003
【図２】
2013125096.tif 000004
【図３】
2013125096.tif 000005
【図４】
2013125096.tif 000006
【図５】
2013125096.tif 000007
【図６】
2013125096.tif 000008
【図７Ａ】
2013125096.tif 000009
【図７Ｂ】
2013125096.tif 000010
【図８】
2013125096.tif 000011
【図９】
2013125096.tif 000012
【図１０】
2013125096.tif 000013
【図１１】
2013125096.tif 000014
【図１２Ａ】
2013125096.tif 000015
【図１２Ｂ】
2013125096.tif 000016
【図１３】
2013125096.tif 000017
【図１４】
2013125096.tif 000018
【図１５】
2013125096.tif 000019
【図１６Ａ】
2013125096.tif 000020
【図１６Ｂ】
2013125096.tif 000021
【図１６Ｃ】
2013125096.tif 000022
【図１７】
2013125096.tif 000023
【図１８】
2013125096.tif 000024
【図１９】
2013125096.tif 000025
【図２０】
2013125096.tif 000026
【図２１】
2013125096.tif 000027
【図２２】
2013125096.tif 000028
【図２３】
2013125096.tif 000029
【手続補正書】
【提出日】平成26年2月25日(2014.2.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークに接続される第一の通信装置であって、
前記第一の通信装置から前記ネットワークを介して第二の通信装置に送信されるパケットに関する帯域をインターバル毎に管理し、
管理される現在のインターバルの帯域及び過去のインターバルにおける帯域に基づいて、前記現在のインターバルよりも後のインターバルにおけるパケットを送出するための制御帯域を増加させる場合、
所定の期間は、第一の増加率で制御帯域を増加させ、前記所定の期間経過後は、第一の増加率よりも高い、第二の増加率で前記制御帯域を増加させる送信帯域制御部と、
前記制御帯域に従って、パケットを前記ネットワークに送出する送信部と、を有する、ことを特徴とする第一の通信装置。
【請求項２】
請求項１記載の通信装置であって
前記送信されるパケットの廃棄状況が所定の条件に満たない場合、
前記送信帯域制御部は、前記制御帯域を前記所定の期間経過するまでは、線形的に増加させ、前記所定の期間経過後は、非線形的に増加させる、ことを特徴とする、通信装置。
【請求項３】
請求項２記載の通信装置であって、
前記所定の条件は、廃棄率が所定の閾値に達する場合であり、
前記所定の条件を満たさない場合は輻輳未検出と判定し、前記輻輳未検出の場合、前記送信帯域制御部は、前記送信されるパケットのうち未受信の箇所を示す情報と、前記送信されるパケットの受領確認応答とを含む通知の受領に応じて、制御帯域を増加させる、ことを特徴とする、通信装置。
【請求項４】
請求項１ないし４記載の通信装置であって、
各インターバル間の送信帯域及び再送帯域それぞれの比較結果に基づいて輻輳か否かを検出する、ことを特徴とする通信装置。
【請求項５】
請求項１ないし４に記載の通信装置であって、
前記送信帯域制御部は、送信帯域と再送帯域と前記受領確認応答の受信数の過去の履歴を用いて廃棄率または再送率とそれらの変化率を推定して、
輻輳を検出したときに、送信帯域と再送帯域と前記受信数の過去の履歴を用いて、送信帯域を減少させる、ことを特徴とする通信装置。
【請求項６】
請求項１ないし５記載の通信装置であって、
前記通信装置は、ＴＣＰ通信により前記パケットを送信し、
前記所定の期間が、前記ＴＣＰ通信におけるＲＴＴと送信帯域の過去の履歴によって定まることを特徴とする通信装置。
【請求項７】
請求項１ないし６記載の通信装置であって、
前記送信帯域制御部は、現時点よりも過去のインターバルにおいて、輻輳未検出で送信帯域の最大値を超えたか否かで、増加速度を決定することを特徴とする通信装置。
【請求項８】
請求項１ないし７記載の通信装置であって、
前記送信帯域制御部は、前記所定の期間経過後は、前記制御帯域を指数的に増加させることを特徴とする通信装置。
【請求項９】
請求項１ないし８記載の通信装置であって、
前記通信装置は、計算機間のＴＣＰ通信により前記パケットを送信し、
前記ＴＣＰ通信における平均ＲＴＴと初期ＲＴＴの比率に基づいて、増加速度を決定することを特徴とする通信装置。
【請求項１０】
請求項１ないし９記載の通信装置であって、
ＴＣＰ通信に基づく計算機間のデータ転送を中継し、前記データ転送を行うＴＣＰ通信のうち、所定のＴＣＰ通信に対して前記送信帯域制御部による送信帯域制御を適用し、他のＴＣＰ通信については、送信帯域制御を適用しない、ことを特徴とする通信装置。
【請求項１１】
請求項１０記載の通信装置であって、
通信装置が中継するＵＤＰパケット及びＡＲＰパケットは、前記送信帯域制御部での送信帯域制御を適用しない、ことを特徴とする通信装置。
【請求項１２】
請求項１記載の通信装置であって、
前記送信部は、前記パケットを送信するための通信を確立する確立要求パケットを送信し、
確立要求パケットに対する受信される応答パケットに基づいて、前記パケットに対して、
前記送信帯域制御部による帯域制御を適用するか、否かを決定する、ことを特徴とする通信装置。
【請求項１３】
請求項１２に記載の通信装置であって、
前記確立要求パケットは、前記ＴＣＰ通信の開始時に送信され、
前記応答パケットに対向装置から特定の値を持つオプション情報が含まれない場合、前記送信帯域制御部による帯域制御を適用することを特徴とする通信装置。
【請求項１４】
請求項１３に記載の通信装置であって、
前記ＴＣＰ通信の開始時に対向装置から特定の値を持つオプション情報が送付されないときに限り、送信帯域とＡＣＫ受信数の履歴を用いて廃棄率を推定することを特徴とする通信装置。
【請求項１５】
複数の計算機に接続される第一のネットワークと広域網である第２のネットワークとに接続される複数のＴＣＰ通信を中継する通信装置が、
各ＴＣＰ通信の送信帯域を制御する帯域制御部と、
各ＴＣＰ通信の受信確認済みのデータ箇所の履歴を記録する状態テーブルと、
各ＴＣＰ通信における送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴を記録す
る帯域テーブルと、
を有し、
前記帯域制御部が、帯域テーブルに記載の送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴と、状態テーブルに記載の受信確認済みのデータ箇所の履歴と基づいて、ＴＣＰ通信の輻輳の有無と、受信確認済みのデータ箇所が更新中か否かを判定し、輻輳が検出されず、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、ＴＣＰ通信の送信帯域を線形的に増加させ、前記の一定の期間が過ぎた後、ＴＣＰ通信の送信帯域を非線形的に増加させる、ことを特徴とする通信装置
【手続補正書】
【提出日】平成26年9月29日(2014.9.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークに接続される第一の通信装置であって、
前記第一の通信装置から前記ネットワークを介して第二の通信装置に送信されるパケットに関する帯域をインターバル毎に管理し、
管理される現在のインターバルの帯域及び過去のインターバルにおける帯域に基づいて、前記現在のインターバルよりも後のインターバルにおけるパケットを送出するための制御帯域を増加させる場合、
所定の期間は、第一の増加率で制御帯域を増加させ、前記所定の期間経過後は、第一の増加率よりも高い、第二の増加率で前記制御帯域を増加させる送信帯域制御部と、
前記制御帯域に従って、パケットを前記ネットワークに送出する送信部と、を有する、ことを特徴とする第一の通信装置。
【請求項２】
請求項１記載の通信装置であって
前記送信されるパケットの廃棄状況が所定の条件に満たない場合、
前記送信帯域制御部は、前記制御帯域を前記所定の期間経過するまでは、線形的に増加させ、前記所定の期間経過後は、非線形的に増加させる、ことを特徴とする、通信装置。
【請求項３】
請求項２記載の通信装置であって、
前記所定の条件は、廃棄率が所定の閾値に達する場合であり、
前記所定の条件を満たさない場合は輻輳未検出と判定し、前記輻輳未検出の場合、前記送信帯域制御部は、前記送信されるパケットのうち未受信の箇所を示す情報と、前記送信されるパケットの受領確認応答とを含む通知の受領に応じて、制御帯域を増加させる、ことを特徴とする、通信装置。
【請求項４】
請求項１ないし３記載の通信装置であって、
各インターバル間の送信帯域及び再送帯域それぞれの比較結果に基づいて輻輳か否かを検出する、ことを特徴とする通信装置。
【請求項５】
請求項１ないし４に記載の通信装置であって、
前記送信帯域制御部は、送信帯域と再送帯域と受領確認応答の受信数の過去の履歴を用いて廃棄率または再送率とそれらの変化率を推定して、
輻輳を検出したときに、送信帯域と再送帯域と前記受信数の過去の履歴を用いて、送信帯域を減少させる、ことを特徴とする通信装置。
【請求項６】
請求項１ないし５記載の通信装置であって、
前記通信装置は、ＴＣＰ通信により前記パケットを送信し、
前記所定の期間が、前記ＴＣＰ通信におけるＲＴＴと送信帯域の過去の履歴によって定まることを特徴とする通信装置。
【請求項７】
請求項１ないし６記載の通信装置であって、
前記送信帯域制御部は、現時点よりも過去のインターバルにおいて、輻輳未検出で送信帯域の最大値を超えたか否かで、増加速度を決定することを特徴とする通信装置。
【請求項８】
請求項１ないし７記載の通信装置であって、
前記送信帯域制御部は、前記所定の期間経過後は、前記制御帯域を指数的に増加させることを特徴とする通信装置。
【請求項９】
請求項１ないし８記載の通信装置であって、
前記通信装置は、計算機間のＴＣＰ通信により前記パケットを送信し、
前記ＴＣＰ通信における平均ＲＴＴと初期ＲＴＴの比率に基づいて、増加速度を決定することを特徴とする通信装置。
【請求項１０】
請求項１ないし９記載の通信装置であって、
ＴＣＰ通信に基づく計算機間のデータ転送を中継し、前記データ転送を行うＴＣＰ通信のうち、所定のＴＣＰ通信に対して前記送信帯域制御部による送信帯域制御を適用し、他のＴＣＰ通信については、送信帯域制御を適用しない、ことを特徴とする通信装置。
【請求項１１】
請求項１０記載の通信装置であって、
通信装置が中継するＵＤＰパケット及びＡＲＰパケットは、前記送信帯域制御部での送信帯域制御を適用しない、ことを特徴とする通信装置。
【請求項１２】
請求項１記載の通信装置であって、
前記送信部は、前記パケットを送信するための通信を確立する確立要求パケットを送信し、
確立要求パケットに対する受信される応答パケットに基づいて、前記パケットに対して、
前記送信帯域制御部による帯域制御を適用するか、否かを決定する、ことを特徴とする通信装置。
【請求項１３】
請求項１２に記載の通信装置であって、
前記確立要求パケットは、ＴＣＰ通信の開始時に送信され、
前記応答パケットに対向装置から特定の値を持つオプション情報が含まれない場合、前記送信帯域制御部による帯域制御を適用することを特徴とする通信装置。
【請求項１４】
請求項１３に記載の通信装置であって、
前記ＴＣＰ通信の開始時に対向装置から特定の値を持つオプション情報が送付されないときに限り、送信帯域とＡＣＫ受信数の履歴を用いて廃棄率を推定することを特徴とする通信装置。
【請求項１５】
複数の計算機に接続される第一のネットワークと広域網である第２のネットワークとに接続される複数のＴＣＰ通信を中継する通信装置が、
各ＴＣＰ通信の送信帯域を制御する帯域制御部と、
各ＴＣＰ通信の受信確認済みのデータ箇所の履歴を記録する状態テーブルと、
各ＴＣＰ通信における送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴を記録する帯域テーブルと、
を有し、
前記帯域制御部が、帯域テーブルに記載の送信帯域と制御帯域と受信帯域と再送帯域の過去の履歴と、状態テーブルに記載の受信確認済みのデータ箇所の履歴と基づいて、ＴＣＰ通信の輻輳の有無と、受信確認済みのデータ箇所が更新中か否かを判定し、輻輳が検出されず、受信確認済みのデータ箇所が更新中の状態になってから一定の期間は、ＴＣＰ通信の送信帯域を線形的に増加させ、前記の一定の期間が過ぎた後、ＴＣＰ通信の送信帯域を非線形的に増加させる、ことを特徴とする通信装置。
【国際調査報告】
2013125096.tif 000030
2013125096.tif 000031
2013125096.tif 000032
2013125096.tif 000033