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