(57)【特許請求の範囲】
【請求項１】
第一のＴＣＰ通信と第二のＴＣＰ通信の２つのＴＣＰ通信を中継する通信装置において、
第二のＴＣＰ通信の規定に基づいて、第二のＴＣＰ通信におけるセッション毎の通信帯域を判定する送信帯域制御部と、
第一のＴＣＰ通信により入力されたパケットを蓄積するセッション毎のバッファと、
トークンバケツアルゴリズムを用いて、前記セッション毎の通信帯域に基づくパケットの送信可否を判定する第１判定と所定の第二のＴＣＰ通信の最大帯域に基づくパケットの送信可否を判定する第２判定とを行い、前記第１の判定及び前記第２の判定が送信可のときに前記バッファに対してパケットの送信を指示し、前記バッファに蓄積されるパケットを送信する送信制御部と、
を有することを特徴とする通信装置。
【請求項２】
請求項１記載の通信装置であって、
前記送信帯域制御部がパケットの再送率の変化に基づき、前記通信帯域を判定する、
ことを特徴とする通信装置。
【請求項３】
請求項２記載の通信装置であって、
外部からの入力により所定の第二のＴＣＰ通信の最大帯域の情報を保持する最大送信帯域設定部と、前記送信帯域制御部は、前記最大送信帯域設定部に保持される最大帯域の情報を参照する、
ことを特徴とする通信装置。
【請求項４】
請求項１乃至３のいずれか一項記載の通信装置であって、
前記送信帯域制御部は、前記第２のＴＣＰ通信により受信するパケットに基づいて前記通信帯域を判定する、
ことを特徴とする通信装置。
【請求項５】
通信システムであって、計算機間の複数のＴＣＰ通信それぞれを３つのＴＣＰ通信に分割して、中継する第一の通信装置と第二の通信装置とを備え、
前記第一の通信装置がデータ送信計算機との第一のＴＣＰ通信を実施し、前記第二の通信装置がデータ受信計算機との第二のＴＣＰ通信を実施し、前記第一の通信装置と前記第二の通信装置の間で第三のＴＣＰ通信を実施し、
前記第一の通信装置が、トークンバケツアルゴリズムを用いて、前記第三のＴＣＰ通信の規定によるセッション毎の通信帯域に基づくパケットの送信可否を判定する第１判定と、通信開始前に予め設定された第三のＴＣＰ通信の最大帯域に基づくパケットの送信可否を判定する第２判定とを行い、前記第１の判定及び前記第２の判定が送信可のときにパケットを送信することを特徴とする通信システム。
【請求項６】
請求項５記載の通信システムであって、
前記第三のＴＣＰ通信の規定による通信帯域は、前記第３のＴＣＰ通信により前記第一の通信装置が受信するＡＣＫパケットに基づいて判定される通信帯域であり、
前記第一の通信装置は、計算間の前記ＴＣＰ通信毎に、通信開始前に予め設定された第三のＴＣＰ通信の最大帯域とを遵守する、
ことを特徴とする通信システム。
【請求項７】
計算機間の複数のＴＣＰ通信それぞれを３つのＴＣＰ通信に分割して、データ転送を中継する通信方法であって、
第一の通信装置がデータ送信する計算機との第一のＴＣＰ通信を実施し、第二の通信装置がデータ受信する計算機との第二のＴＣＰ通信を実施し、前記第一の通信装置と前記第二の通信装置の間で第三のＴＣＰ通信を実施し、
前記第一の通信装置が、トークンバケツアルゴリズムを用いて、前記第三のＴＣＰ通信の規定によるセッション毎の通信帯域に基づくパケットの送信可否を判定する第１判定と、通信開始前に予め設定された第三のＴＣＰ通信の最大帯域に基づくパケットの送信可否を判定する第２判定とを行い、前記第１の判定及び前記第２の判定が送信可のときにパケットを送信することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置および通信システムに係り、特に、計算機間の通信を中継する通信装置及び通信システムに関する。
【背景技術】
【０００２】
グローバル拠点間の通信網として、ＩＰ―ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）技術等を用いたＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を用いることが、一般的になっている。
【０００３】
拠点に存在する端末が、別の海外の拠点に存在する端末と通信する場合は、自拠点ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と国内ＷＡＮを接続する回線と、国内ＷＡＮと海外ＷＡＮを接続する回線と、海外ＷＡＮと別拠点ＬＡＮを接続する回線と、を経由して通信が行われる。これらの回線は、契約帯域によって使用可能な帯域幅が制限されている。
【０００４】
端末間の通信では、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いるのが一般的である。ＴＣＰ通信では、送信端末が送信したデータ（パケットと呼ぶ）に対して、受信端末が受信済みパケット量を送信端末にフィードバック通知する。送信端末は、フィードバック通知される受信済みパケット量が増加しなくなると、廃棄検出と判定する。
【０００５】
さらに、送信端末は、ウィンドウサイズ（受信したことを受信端末から通知されなくても送信可能なデータサイズ）と呼ばれるパラメータを管理しており、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）や廃棄検出の有無に応じて、ウィンドウサイズを変化させる。
【０００６】
送信端末は、ＲＴＴ増加時や廃棄検出時にネットワークが混雑していると判定して、ウィンドウサイズを減少させることで、送信帯域を減少させて、ネットワークの混雑を回避する。また、ＲＴＴ減少時や廃棄が無い時にネットワークが空いていると判定して、ウィンドウサイズを増加させることで、送信帯域を増加させて、ネットワークの回線帯域を有効利用する。以上のように、ＴＣＰを用いた通信では、送信帯域がＲＴＴと廃棄率に大きく左右されるため、前述のＷＡＮのようなＲＴＴが大きく、契約帯域が制限されておりパケット廃棄が発生する環境において、契約帯域を大幅に下回る送信帯域しか得られない場合がある。
【０００７】
これらの問題を解決する技術が特許文献１に記載されている。本文献では、受信側端末に接続した装置が送信側端末に接続した装置に対して廃棄箇所を全てフィードバック通知する手段と、送信側端末に接続した装置がフィードバック通知された廃棄箇所を再送する手段と、送信側端末に接続した装置が再送帯域・廃棄帯域に基づいて送信帯域を制御する手段を備えることにより、送信帯域が改善される、と記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】ＷＯ２０１１０３３８９４Ａ
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＩＰ―ＶＰＮによるＷＡＮの契約帯域は回線帯域より小さい場合があり、特許文献１記載の送信側端末が契約帯域を超過して送信したパケットについては、ＷＡＮにて廃棄されてしまう場合がある。また、ＴＣＰ以外の通信、例えば、他のプロトコルであるＵＤＰ通信などが存在するが、特許文献１記載の送信側端末が契約帯域をすべて消費してしまうと、ＵＤＰ通信などの通信遅延時間やパケットの廃棄率といった通信品質が劣化するといった課題がある。
【００１０】
そこで、本願の目的の一つは、他のプロトコル等の通信の劣化を防ぎ、ＴＣＰ通信に対する送信帯域制御をすることにある。
【課題を解決するための手段】
【００１１】
前述した課題を解決するために、本発明の一態様は、第一のＴＣＰ通信と第二のＴＣＰ通信の２つのＴＣＰ通信を中継する通信装置であって、第二のＴＣＰ通信の規定に基づいて判定した通信帯域と、第二のＴＣＰ通信の最大帯域とを遵守し、パケット送信する第二のＴＣＰ通信の上限帯域を制御する態様である。
【００１２】
また、別の態様として、第一のＴＣＰ通信と第二のＴＣＰ通信の２つのＴＣＰ通信を中継する中継装置であって、第二のＴＣＰ通信の規定に基づいて、第二のＴＣＰ通信における通信帯域を判定する送信帯域制御部と、第二のＴＣＰ通信の最大帯域を設定する最大送信帯域設定部と、第一のＴＣＰ通信により通信されたパケットを蓄積するバッファを備え、前記判定した通信帯域および前記最大帯域に基づき、前記バッファに対してパケットの送信を指示し、パケットを送信することを特徴とする。
上記以外の本願が解決しようとする課題、その解決手段は、本願の「発明を実施するための形態」の欄および図面で明らかにされる。
【発明の効果】
【００１３】
本発明の一態様によると、回線を共有する他のプロトコル通信の劣化を防ぎ、第二のＴＣＰ通信として通信帯域を向上させる新規ＴＣＰによる通信帯域をＴＣＰ通信に対して向上することができる。
【図面の簡単な説明】
【００１４】
【図１】通信装置＃１／＃２ ９１０／９２０をＷＡＮとＬＡＮの境界に設置したシステム図。
【図２】パケットのフォーマットの一例を示す図。
【図３】通信装置１０００のブロックの一例を示す図。
【図４】通信装置１０００内部の標準ＴＣＰ部（ＮＩＦ０ ＴＣＰ）１００７の一例を示すブロック図。
【図５】通信装置１０００内部の従来ＴＣＰ部（ＮＩＦ１ ＴＣＰ）９１４/９２３の一例を示すブロック図。
【図６】通信装置９１０／９２０をＷＡＮとＬＡＮの境界に設置して、通信装置間で独自ＴＣＰを用いて通信するシステム図。
【図７】帯域制御方式の説明図。
【図８】再送制御方式の説明図。
【図９】通信装置＃１、＃２ １００、１０１が１パケット分ずらしてＡＣＫ返信するシーケンス図。
【図１０】パケット送信制御部３２０７の動作を示すフローチャート。
【図１１】輻輳制御方式の説明図。
【図１２】通信装置１０００内部の独自ＴＣＰ部（ＮＩＦ１ 独自ＴＣＰ）２５０１/２５０２の一例を示すブロック図。
【図１３】パケット送信制御部３２０７の構成の一例を示す図。
【図１４】セッション・シェーパテーブルの一例を示す図。
【図１５】送信帯域制御部３２０６が制御帯域を更新する際のフローチャート。
【図１６】シェーパ毎の送信・再送帯域テーブル３２０５の一例を示す図。
【図１７】シェーパ毎の送信・再送帯域テーブル３２０５が保持する値の説明図。
【図１８】制御帯域の更新のフローチャート。
【発明を実施するための形態】
【００１５】
以下、本願発明を、実施例を用いて説明する。
【００１６】
図１には、通信装置＃１（９１０）と通信装置＃２（９２０）がネットワーク＃０（９００）とネットワーク＃１、２（９０１、９０２）の境界に設置されて、ネットワーク＃１（９０１）に接続している端末（９０３、９０４）と、ネットワーク２（９０２）に接続している端末（９０５、９０６）の間で、３つのＴＣＰ通信を経由して通信が行われる様子を示す。通信装置＃１（９１０）は、ネットワークインターフェースＮＩＦ０／１（９１５／９１６）と、演算部９１１を備える。演算部９１１は、ＴＣＰ通信を行うＴＣＰモジュール９１３／９１４と、ＴＣＰの変換（例えば、ＴＣＰ１からＴＣＰ２の変換）を行うＰｒｏｘｙモジュール９１２を備える。
【００１７】
図２には、本実施例でやりとりされるパケットのフォーマットを表す。パケットは、ＭＡＣヘッダ２９００、ＩＰヘッダ２９０４、ＴＣＰヘッダ２９０９、ＴＣＰオプションヘッダ２９１６、ペイロード２９２７を含む。ＭＡＣヘッダ２９００は、宛先ＭＡＣアドレスを表すＤＭＡＣ２９０１と、送信元ＭＡＣアドレスを表すＳＭＡＣ２９０２と、ＭＡＣフレームタイプを表すＴｙｐｅ２９０３を含む。ＩＰヘッダ２９０４は、ＭＡＣヘッダを除くパケット長を表すＩＰ ｌｅｎｇｔｈ２９０５と、プロトコル番号を表すｐｒｏｔｏｃｏｌ ２９０６と、送信元ＩＰアドレスを表すＳＩＰ２９０７と、宛先ＩＰアドレスを表すＤＩＰ２９０８とを含む。ＴＣＰヘッダ２９０９は、送信元ポート番号を表すｓｒｃ．ｐｏｒｔ２９１０と、宛先ポート番号を表すｄｓｔ．ｐｏｒｔ２９１１と、送信シーケンス番号を表すＳＥＱ２９１２と、受信シーケンス番号を表すＡＣＫ２９１３と、ＴＣＰフラグ番号を表すｆｌａｇ２９１４と、ＴＣＰのヘッダ長を表すｔｃｐ  ｈｌｅｎ２９１５とを含む。ｆｌａｇ２９１４は、ＵＲＧ２９１４‐１、ＡＣＫ２９１４‐２、ＰＳＨ２９１４‐３、ＲＳＴ２９１４‐４、ＳＹＮ２９１４‐５、ＦＩＮ２９１４‐６の各ビットから構成される。ＴＣＰオプションヘッダ２９１６は、オプション種別を表すｏｐｔｉｏｎ  ｋｉｎｄ２９１７と、オプション長を表すｏｐｔｉｏｎ  ｌｅｎｇｔｈ２９１８と、どこからどこまで部分的に受信できたかを記載するｌｅｆｔ＿ｅｄｇｅ＿１〜４（２９１９、２９２１、２９２３、２９２５）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（２９２０、２９２２、２９２４、２９２６）を含む。なお、端末間の通信を例に説明するが、ＴＣＰ通信可能な計算機間の通信、クライアント計算機とサーバ計算機間の通信、分散ファイルサーバー間の通信にも本実施例の通信装置９１０、９２０等を適用してもよい。
【００１８】
通信装置＃１，２の概要動作を、図１、５を用いて説明する。
端末９０３、９０４と通信装置＃１ ９１０間では、ＴＣＰ１により、通信装置＃１と＃２間では、ＴＣＰ２により、通信装置＃２と端末９０５、９０６間ではＴＣＰ３により通信が行われ、端末９０３、９０４が送信したパケットが端末９０５、９０６まで通信されている。通信装置＃１は、ＴＣＰ１からＴＣＰ２への変換を、通信装置＃２は、ＴＣＰ２からＴＣＰ３へのプロトコル変換を実施している。
【００１９】
図５は通信装置＃１のＮＩＦ１ ＴＣＰ９１４を示している。送信帯域制御部３２０８はネットワーク＃０に送信するパケットの通信帯域をＴＣＰ２の規定に基づきセッション毎に判定している。ここでセッションとはｓｒｃ．ｐｏｒｔ２９１０と、宛先ポート番号を表すｄｓｔ．ｐｏｒｔ２９１１と、ＳＩＰ２９０７と、ＤＩＰ２９０８より決まるパケットの一連の流れのことを言う。この判定は、ＴＣＰ２の通信装置＃２から送信され、パケット解析部３１０８により抽出された情報、例えば、通信装置＃１が送信したパケットに対するＡＣＫパケットに基づき判定する。ＡＣＫパケットとは、通信装置＃１が送信したパケットを通信装置＃２が受信したことを示すパケットであり、図２のＡＣＫが１となっているパケットである。つまり、送信帯域制御部３２０８は、ネットワーク＃０に送信するパケットの通信帯域を、ネットワーク＃０からのＡＣＫパケットに基づき判定する。あるいは、送信帯域制御部３２０８は、ネットワーク＃０における通信状況に基づき、送信するパケットの通信帯域を算出する。
【００２０】
また、ＮＩＦ１ ＴＣＰ９１４は、最大送信帯域設定部３２１１を備え、外部端末よりプロセッサ２００経由で全セッションの帯域の総和が設定されている。さらに、ＮＩＦ１ ＴＣＰ９１４はセッション毎のバッファ３１１１を備え、ネットワーク＃１から入力したパケットをセッション毎に格納する。パケット送信制御部３２０７は、送信帯域制御部３２０８が判定したセッション毎の通信帯域と、最大送信帯域設定部３２１１に設定される全セッションの帯域の総和より、セッション毎のバッファ３１１１からパケットを送信するタイミングを判定する。
【００２１】
パケットがネットワーク＃１より入力するとＮＩＦ０ ＴＣＰ９１３がＴＣＰ１のパケットを受信し、Ｐｒｏｘｙ９１２が、必要に応じてパケットの情報の書き換え、ＮＩＦ１ ＴＣＰ９１４に送信する、ＮＩＦ１ ＴＣＰ９１４は該パケットをセッション毎のバッファ３１１に格納する。前述の通り、送信帯域制御部３２０８は、ネットワーク＃０からのパケットに基づき、バッファからの送信帯域をセッション毎に判定し、その結果をセッション毎通信帯域情報としてパケット送信制御部３２０７に通知する。パケット送信制御部３２０７は最大送信帯域設定部３２１１に設定された最大帯域に基づき、バッファ３１１よりパケットを送信した際に全てのセッションの送信帯域の総和を遵守できるか否かを判定する。さらに、セッション毎通信帯域情報に基づき、各バッファ３１１からのパケットの送信可否を判定する。送信帯域の総和を遵守「可」であり、かつセッション（バッファ）の送信可否が「可」のセッション（バッファ）のパケットを「送信」と判定し、バッファ３１１にセッション毎送信要求信号を送信する。バッファ３１１は、該情報に対応するセッション毎のバッファより、パケットを読み出してＮＩＦ１ ９１６経由でパケットをネットワーク＃０に向けて送信する。なお、最大送信帯域設定部３２１１には、外部端末より管理ネットワークを介して全セッションの帯域の総和が設定されてもよい。
【００２２】
以上に記載した実施例によれば、送信帯域制御部３２０８が、ＴＣＰ２のプロトコルの規定により決まるセッション毎のパケットの通信帯域を判定し、パケット送信制御部３２０７がＴＣＰ２のセッション全体の総和の帯域と送信帯域制御部３２０８が判定した通信帯域に基づき、パケットの送信の可否を判定し、パケットをバッファ３１１より送信することにより、ＴＣＰ２のプロトコルの規定を遵守しつつ、ＴＣＰ２の上限帯域を制御可能となる。
【００２３】
次に変形例を説明する。
セッション数が１であり、図１のＴＣＰ２が従来ＴＣＰである場合の通信装置＃１、２の詳細動作について説明する。図３には、ハードウェアで実装した、本実施例の通信装置＃１（１０００）（図１の通信装置９１０、９２０に相当）のブロック図を表す。通信装置＃１（１０００）は、外部ネットワークとのパケットの送受信を行うネットワークインターフェースＮＩＦ０／１（１０１１／１０１２）と、ＴＣＰ以外のＵＤＰパケット等を１００７、１００８、１０１３〜１０１６、１０００を迂回させるためのフィルタ（１００９／１０１０）と、ＴＣＰ通信のための制御を行うＮＩＦ０／１向けＴＣＰモジュール１００７／１００８と、ＮＩＦ０向けＴＣＰモジュール１００７が管理する送信バッファ１０１３および受信バッファ１０１５と、ＮＩＦ１向けＴＣＰモジュール１００８が管理する送信バッファ１０１６および受信バッファ１０１４と、送受信バッファ間でデータの乗せ換えを行うプロキシ１０００と、セッション毎にエントリを備えた状態テーブル１００１を有する（本実施例ではエントリ数は１）。ソフトウェアで実装する際は、状態テーブル１００１と送受信バッファ（１０１３〜１０１６）を記憶部に持ち、フィルタ（１００９／１０１０）とＴＣＰモジュール１００７／１００８とプロキシ１０００の部分をモジュールとして演算部（図１の演算部９１２に対応）に持たせる。
【００２４】
図４には、ＮＩＦ０用のＴＣＰモジュール１００７のブロック図を表す。ＮＩＦ１用のＴＣＰモジュール１００８のブロック図、動作は１００７と同様である。本モジュールの動作を図１の端末９０３、９０４から端末９０５、９０６にパケットを送信する際の動作にて説明する。
【００２５】
図４の標準ＴＣＰを実現するＴＣＰブロック１００７は、受信処理を行うＲＸ部（受信処理部）３１０２と、送信処理を行うＴＸ部（送信処理部）３１０１を有する。ＲＸ部３１０２は、受信パケットをＴＣＰ制御パケットとデータパケットとＡＣＫ／部分的確認応答用ＳＡＣＫパケットに分離するパケット解析部３１０８と、受信したＴＣＰ制御パケットに基づいて状態テーブル１００１内のＴＣＰ状態を変更するＴＣＰ制御部３１０７と、ｓｒｃ．ｐｏｒｔ２９１０と、宛先ポート番号を表すｄｓｔ．ｐｏｒｔ２９１１と、ＳＩＰ２９０７と、ＤＩＰ２９０８より決まるパケットの属するセッション毎にエントリを備えた状態テーブル１００１（本実施例ではエントリ数は１）と、ＴＣＰ制御パケットに基づき、セッション毎のＴＣＰの状態を管理するＴＣＰ制御部３１０７と、受信履歴更新部３１０６とを有する。
【００２６】
まず、通信の開始に先立ち、端末９０３、９０４よりＳＹＮ２９１４−５が１であるＳＹＮパケットを受信すると、パケット解析部３１０８は該パケットをＴＣＰ制御部３１０７に送信する。ＴＣＰ制御部３１０７は、状態テーブル１００１の空きのエントリがあるとＳＹＮパケットを受信したＴＣＰ状態であることを状態テーブル１００１に書き込む。さらにＴＣＰ制御部３１０３は、このＴＣＰ状態を参照し、ＡＣＫ２９１４−２およびＳＹＮ２９１４−５が１であるＳＹＮ−ＡＣＫパケットをバッファ３１１１に格納する。集約部３１０９が該パケットをＮＩＦ０ １０１１より端末９０３、９０４に送信する。
【００２７】
次に、端末９０３、９０４はＡＣＫ２９１４−２のみを１としたＡＣＫパケットを通信装置＃１に送信し、パケット解析部３１０８は該パケットを受信するとＴＣＰ制御部３１０７に送信する。ＴＣＰ制御部３１０７がこのパケットを受信すると、セッションが確立されたことを表すＴＣＰ状態を、状態テーブルに書き込む。
【００２８】
次にＴＣＰ制御部はこのセッションの確立をＮＩＦ１用のＴＣＰモジュール１００８に通知すると、ＴＣＰモジュール１００８のＴＣＰ制御部３１０３は前述の端末９０３、９０４と同様のＳＹＮパケットをバッファ３１１１に格納し、集約部３１０９が該パケットをＮＩＦ１ １０１２より通信装置＃２に送信する。ＴＣＰ制御部３１０３は状態テーブル１００１にＳＹＮパケットを送信したＴＣＰ状態であることを書き込む。なお、集約部３０９が該パケットを送信するタイミングは後述する。通信装置＃２は、通信装置＃１にてＳＹＮパケットを受信した際と同様の処理を実施し、通信装置＃１にＳＹＮ−ＡＣＫパケットを送信する。通信装置＃１がＳＹＮ−ＡＣＫパケットを受信すると、パケット解析部３１０８は該パケットをＴＣＰ制御部３１０７に送信し、ＴＣＰ制御部３１０７は状態テーブル１００１にセッションが確立したことを表すＴＣＰ状態を書き込む。ＴＣＰ制御部３１０３は状態テーブル１００１のＴＣＰ状態を参照し、前述の端末９０３、９０４と同様のＡＣＫパケットをバッファ３１１１に格納し、集約部３１０９が該パケットを通信装置＃２に送信することで通信装置＃１、２間のセッションが確立される。通信装置＃２と端末９０５、９０６間のセッション確立についても同様である。
【００２９】
セッションが確立されると端末９０３、９０４はパケットの送信を開始する。通信装置＃１のパケット解析部３１０８は、該パケットを受信すると、受信履歴更新部３１０６に送信する。受信履歴更新部３１０６は受信バッファ１０１３にパケットを書き込み、送信シーケンス番号ＳＥＱ２９１２に対応した値を受信シーケンス番号ＡＣＫ２９１３に記載したＡＣＫパケットをバッファ３１１０に書き込む。該ＡＣＫパケットは集約部３１０９によりバッファ３１１０より読み出され、端末９０３、９０４に送信される。
【００３０】
受信バッファ１０１３にパケットが蓄積されると、Ｐｒｏｘｙ１０００はパケットを読み出し、送信バッファ１０１６に転送し、送信バッファ１０１６は該パケットを蓄積する。パケットが蓄積されると、ＮＩＦ１ ＴＣＰ１００６の送信履歴更新部３１０５はパケットをバッファ３１１３に書き込み、集約部３１０９は該パケットを通信装置＃２に送信する。集約部３１０９が該パケットを送信するタイミングについては後述する。また、送信履歴更新部３１０５は送信したパケットの履歴を状態テーブル１００１に書き込む。
【００３１】
該パケットを受信した通信装置＃２の通信装置＃１へのＡＣＫパケットの送信動作およびパケットの端末９０５、９０６への送信動作は通信装置＃１と同一である。通信装置＃１が送信したパケットに対応するＡＣＫパケットを通信装置＃１が受信すると、該パケットの送信履歴を状態テーブル１００１より削除する。一方、対応するＡＣＫパケットを受信できない場合、ＴＸパケット再送部３１０４が該パケットと同一のパケットをバッファ３１１２に再度書き込み、集約部３１０９経由で該パケットを通信装置＃２に送信する。
【００３２】
通信装置＃１の送信帯域制御部３２１４は、ＡＣＫパケットの受信状況から送信したパケットの到着状況および廃棄状況を監視し、図７の左図および図１１の左図に記載されるように、通信装置＃１から通信装置＃２に送信すべき通信帯域を判定し、パケット送信制御部３２１５に通知する。また、最大送信帯域設定部３２１１には外部端末よりプロセッサ３２１６経由で、通信装置＃１から通信装置＃２に送信する最大帯域が設定されており、パケット送信制御部３２１５にこの最大帯域が通知されている。図７の左図および図１１の左図の詳細については後述する。
パケット送信制御部３２１５は、送信帯域制御部３２１４が通知した通信帯域およびこの最大帯域の両方を遵守するタイミングで、集約部３１０９に送信要求信号を送信する。集約部３１０９はこの送信要求信号を受信するとバッファ３１１３あるいは３１１１よりパケットを読み出し送信する。
【００３３】
図９は、本実施例におけるプロキシ（１００、１０１）のＡＣＫ返信方法を記載したシーケンス図を表す。  通信装置＃１（１００）・通信装置＃２（１０１）（図１の通信装置９１０、９２０に相当）は、先頭パケット（１１０、１１１）を受け取ってもＡＣＫを返信しない。通信装置＃１（１００）・通信装置＃２（１０１）は、２つ目のパケット（１１３、１１４）を受け取ってから、１つ目のパケットに対するＡＣＫパケット（１２１、１２０）を返信する。更に、３つ目のパケット（１１６、１１７）を受け取ると、２つ目のパケットに対するＡＣＫパケット（１２２、１２４）を返信する。送信端末１０３は、３つ目のパケット（１１６）を送信しても、２つ目のパケットに対するＡＣＫパケット（１２２）しか受信しないので、送信が完了していないと判断したままである（１２８）。通信装置＃２（１０１）から３つ目のパケット（１１８）が受信端末１０４に到達して初めて、３つ目のパケットに対する末尾のＡＣＫパケット（１２５）が受信端末１０４から返信され、受信端末１３０は受信が完了したと判断する（１３０）。通信装置＃２（１０１）・通信装置＃１（１００）は、末尾のＡＣＫパケット（１２５、１２６）を受け取ると、３つ目のパケットに対する末尾のＡＣＫパケット（１２６、１２７）を送信側へ送信する。送信端末１０３は、末尾のＡＣＫパケット１２７を受け取り、送信が完了したと判断する（１２９）。受信端末１３０で受信が完了したと判断されない限り（１３０）、末尾のＡＣＫパケット（１２５、１２６、１２７）が送信端末１０３に返信されず、送信端末１２９が送信完了と判断しないため、受信端末１０４が編集データを受け取れないまま、送信端末のアプリケーションが終了してしまい、編集データが消滅してしまう、といった事態を防ぐことができる。なお、上述のように、ひとつ前に受信したデータパケットに対するＡＣＫを送信する以外にも、２つ前、３つ前など少なくともひとつ前のデータパケットに対するＡＣＫを送信してもよい。また、先頭パケット１１０に対しては、ＡＣＫを送信しない以外にも、先頭パケットの最後尾データに対応する受信シーケンス番号を含まないような（例えば、０〜１４５９）ＡＣＫを返送し、先頭パケットの最後尾データに対応する受信シーケンス番号を含むＡＣＫは返送しないようにしてもよい。
【００３４】
次に別の変形例を説明する。
【００３５】
セッション数が複数であり、図６のＷＡＮの通信が独自ＴＣＰである場合の通信装置＃１、２の詳細動作について説明する。図６は、図１をベースにＮＩＦ１側のＴＣＰモジュールを上記の独自ＴＣＰの処理を行うモジュール２５０１／２５０２に変更したシステム図である。本システムでは、ＷＡＮ９０７内で独自ＴＣＰを用いて通信が行われる。
【００３６】
通信装置＃１、２ ９１０／９２０は、図３に示したブロック図と同様なブロック図で実装することができ、ＮＩＦ ＴＣＰ１００８が図１２に示す独自ＴＣＰモジュール２５０１／２５０２に変わる。
【００３７】
受信端末側の通信装置＃２は、送信端末側の通信装置＃１に対して廃棄箇所を全て逐一フィードバック通知すると共に、送信端末側の通信装置は、受信端末側の通信装置からフィードバック通知された廃棄箇所を再送し、尚且つ、基準時刻以降の再送帯域又は廃棄帯域（再送／廃棄帯域と記すこともある）と、基準時刻以前の送信帯域とに基づいて、特定の宛先に対する送信帯域と再送帯域の総和を制御することで、ＲＴＴや廃棄率に依存しない通信帯域を確保する。
【００３８】
図７、８、１１には、独自ＴＣＰの３つの特徴を表した説明図を示す。図７には、左側に、標準的なＴＣＰの例として従来型ＴＣＰの帯域制御方式を、右側に独自ＴＣＰの帯域制御方式を示す。従来型ＴＣＰは、送信端末２６０１において、ＲＴＴ毎の送信量を定めたウィンドウサイズ２６０５を制御することで（２６０７）、送信帯域を制御する。送信帯域は、ウィンドウサイズ／ＲＴＴで表される。この方式による帯域制御は、ＲＴＴが増加すると回線が空いていても送信不可能な時間２６１０が増加して、回線帯域の利用率が減少する、という課題があった。一方、独自ＴＣＰでは、一定時間毎の送信量を定めたトークンサイズ２６０６を制御することで（２６０８）、送信帯域を制御する。送信帯域は、トークンサイズ／インターバル時間で表される。本方式を用いることで、回線が空いていても送信不能な時間を無くすことが出来るため、回線帯域の利用率が増加する（２６０９）。ＲＴＴに依存しない帯域制御を実現することができる。
【００３９】
図８には、左側に従来型ＴＣＰの再送制御方式を、右側に独自ＴＣＰの再送制御方式を示す。従来型ＴＣＰでは、ＡＣＫパケットのＴＣＰオプションヘッダ２９１６内のｌｅｆｔ＿ｅｄｇｅ＿１〜４（２９１９、２９２１、２９２３、２９２５）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（２９２０、２９２２、２９２４、２９２６）には、どこからどこまで部分的に受信済であるかを最大４箇所記載して、部分的確認応答（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ（ＳＡＣＫ））用に用いる。一方、独自ＴＣＰでは、ＴＣＰオプションヘッダ２９１６内のｌｅｆｔ＿ｅｄｇｅ＿１〜４（２９１９、２９２１、２９２３、２９２５）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（２９２０、２９２２、２９２４、２９２６）には、どこからどこまで部分的に再送してほしいかを最大４箇所記載して、部分的未確認応答（Ｎｅｇａｔｉｖｅ  ＡＣＫ（ＮＡＣＫ））用に用いる。
【００４０】
従来型ＴＣＰでは、送信端末２７０１から受信端末２７０２へ送った１２個のデータパケットＡ〜Ｌ（２７０５）のうち、Ｂ、Ｄ、Ｆ、Ｈ、Ｊが途中で廃棄されたとすると、ＴＣＰオプションヘッダ２９１６に書き込める受信済み箇所が最大４箇所までである制約から、Ｉ以降に送ったパケットに対する確認応答をこの時点では送信端末２７０１に送ることができない（２７０９）。送信端末は、Ａ〜Ｉまでの部分的確認応答を記載した確認応答パケット（２７０９）を用いて、パケットＡ〜Ｉのうち廃棄されたパケットＢ、Ｄ、Ｆ、Ｈを再送する（２７０６）。受信端末２７０２は、再送パケット（２７０６）を受信してから、パケットＩ以降の部分的確認応答を記載した確認応答を返信する（２７１２）。送信端末２７０１は、パケットＩ以降の部分的確認応答を記載した確認応答（２７１２）を受信してから、パケットＩ以降に廃棄されたパケットＪを再送することができる（２７０７）。一方、独自ＴＣＰでは、送信端末２７０３から受信端末２７０４へ送った１２個のデータパケットＡ〜Ｌ（２７０８）のうち、Ｂ、Ｄ、Ｆ、Ｈ、Ｊが途中で廃棄されたとしても、Ａ〜Ｊまでの再送してほしい箇所をＴＣＰオプションヘッダ２９１６内のｌｅｆｔ＿ｅｄｇｅ＿１（２９１９とｒｉｇｈｔ＿ｅｄｇｅ＿１（２９２０）へ逐一書き込んでから、部分的未確認応答用（ＮＡＣＫ）のＡＣＫパケットを返信する（２７１１）。各再送要求箇所は、１つのＮＡＣＫパケットにだけ書き込まれる。送信端末２７０３は、部分的未確認応答用（ＮＡＣＫ）のＡＣＫパケット（２７１１）を受信すると、ＴＣＰオプションヘッダ２９１６に記載された再送要求箇所Ｂ、Ｄ、Ｆ、Ｈ、Ｊを再送する（２７１０）。パケット廃棄が大量に発生した時でも、一度で再送が完了するため、通信時間が短縮し（２７１２）、帯域が向上する。つまり、送信端末と受信端末の間に２台の通信装置を設置し、受信端末側の通信装置が送信端末側の通信装置に対して廃棄箇所を全て逐一フィードバック通知する。
【００４１】
図１１には、左側に従来型ＴＣＰの輻輳制御方式を、右側に独自ＴＣＰの輻輳制御方式を示す。従来型ＴＣＰは、パケット廃棄が１回起きただけでも、制御帯域を大幅に減少させる（２８０１）。通信回線では、回線利用率が１００％に到達していなくても、バッファ等において待ち行列理論から導かれる一定の確率で廃棄が生じる（２８０６）。このため、従来型ＴＣＰは、回線利用率が１００％に到達する前に、帯域が減少してしまい（２８０４）、回線帯域を１００％使い切ることが出来ない場合があった。一方、独自ＴＣＰは、廃棄／再送率が一定に推移していれば、待ち行列理論から導かれる一定の確率で廃棄が生じているに過ぎないと判断して帯域を増加させていく。廃棄／再送率が増加し始めたら、例えば回線帯域の使いすぎが発生したと判断して、直近の廃棄／再送帯域と、それよりも１ＲＴＴ前の制御帯域とに基づいて、１ＲＴＴ前の制御帯域よりも小さくなるように制御帯域を減少させる。制御帯域が回線帯域付近で上下するように制御するため、回線帯域を１００％近く使い切ることができる。
【００４２】
なお、ここで、送信帯域とは、シェーパ３２０９へパケットを振り分ける振分部３２０８において、シェーパ毎に観測している入力帯域を指す。また、制御帯域とは、独自のＴＣＰの規定に基づき判定したシェーパ３２０９から送信すべきパケットの帯域を指す。
【００４３】
図１２に、ＮＩＦ１側のＴＣＰモジュール２５０１／２５０２ブロックに実装する独自ＴＣＰを実現するためのブロック図を示す。ＮＩＦ０側のＴＣＰモジュール１００７ブロックに実装する標準ＴＣＰを実現するためのブロック図は、図４と同様のものを用いることができる。
【００４４】
独自ＴＣＰを実現するＴＣＰブロック２５０１／２５０２は、標準ＴＣＰを実現する図４のＴＣＰブロック１００７をベースに、図１２に示すように、ＲＸ部３１０２内の一部のブロックからの出力を変更し、ＴＸ部３１０１内に幾つかのブロックを追加することで実現される。まず、パケット解析部３１０８は、ＡＣＫ／部分的確認応答用ＳＡＣＫパケットを、ＡＣＫ・部分的未確認応答用（ＮＡＣＫ）のＡＣＫパケット３２１０に変更し、ＴＸパケット再送部３１０４に出力する。同様に、受信履歴更新部３１０６のＡＣＫ／部分的確認応答用ＳＡＣＫパケットを、ＡＣＫ・部分的未確認応答用（ＮＡＣＫ）のＡＣＫパケット３２１０に変更し、バッファ３１１０に出力する。ＡＣＫ／ＳＡＣＫパケットをＡＣＫ／ＮＡＣＫパケットに変更し、変更されたパケットを送ることで、ＴＸ部３１０１では、廃棄箇所の通知を行うことができる。
【００４５】
ＴＸ部３１０１は、図４と異なり、複数セッションの通信をサポートするため、送信パケットと再送パケットのヘッダ情報を用いてセッション毎にどのシェーパに割り振るかを判定するシェーパ判定部３２０１と、セッション情報毎に宛先シェーパを定めたセッション・シェーパテーブル３２０２と、シェーパ判定部３２０１の判定結果に基づいてパケットを割り振る振り分け部３２０８と、シェーパＡ〜Ｃ（３２０９）とを有する。
【００４６】
さらに、ＴＸ部３１０１は、現在時刻を出力するタイマ３２０３と、インターバル時間を定めたインターバル格納部３２０４と、図８と図１１の右図に示した独自ＴＣＰの送信帯域を実現するための送信帯域制御部３２０６と、シェーパ毎に送信帯域や再送帯域の統計情報を記録するシェーパ毎の送信・再送帯域テーブル３２０５と、独自ＴＣＰによる送信帯域の最大値を設定する最大送信帯域設定部３２１１と、送信帯域制御部３２０６より決まる独自ＴＣＰによるセッション毎の通信帯域（以下、制御帯域と呼ぶ）と最大送信帯域設定部３２１１に設定される最大帯域を遵守する様に、パケットの送信タイミングを制御するパケット送信制御部３２０７と、から構成される。
【００４７】
図１４には、ＴＣＰセッション毎に使用するシェーパを定めるためのセッション・シェーパテーブル３２０２のフォーマットを表す。セッション・シェーパテーブル３２０２には、送信元ＩＰ／サブネット、宛先ＩＰ／サブネット、送信元ポート番号、および、宛先ポート番号を含むセッション情報毎に、対応するシェーパの識別情報を記載する。シェーパ判定部３２０１は受け取ったパケットのＩＰヘッダ記載のＩＰアドレス２９０７／２９０８、ＴＣＰヘッダ記載のポート番号２９１０／２９１１と一致するセッション情報を持つセッション・シェーパテーブル３２０２のエントリを探し、そのエントリに記載されたシェーパにパケットが出力されるように振り分け部３２０８へ指示する。
【００４８】
図１５は、送信帯域制御部３２０６が制御帯域を更新する際のフローチャートを表す。処理がスタートすると（ステップ４２０１）、送信帯域制御部３２０６が、パケット再送率（＝再送帯域／制御帯域）の増加率が一定値を超過したか否かを判定する（ステップ４２０２）。超過した場合は、現在の再送帯域と、過去の制御帯域を用いて、制御帯域を更新する（ステップ４２０３）。超過しなかった場合は、制御帯域を増加させる（ステップ４２０４）。  
図１６は、シェーパ毎の送信・再送帯域テーブル３２０５のフォーマットを示す。シェーパ毎の送信・再送帯域テーブル３２０５は、シェーパ毎に、旧基準時刻前の送信帯域・制御帯域と、基準時刻前の送信帯域・再送帯域・制御帯域、基準時刻と、基準時刻後の送信ビット積算値・再送ビット積算値・制御帯域とを記録する。送信ビット積算値・再送ビット積算値は、例えば、シェーパにパケットを振り分ける振分部３２０８が送信ビット数、再送ビット数を送信帯域制御部３２０６に通知し、送信帯域制御部３２０６がシェーパ毎の送信・再送帯域テーブル３２０５に書き込むことができる。
【００４９】
図１７は、シェーパ毎の送信・再送帯域テーブル３２０５が保持する値の意味を説明する図である。上から下に向かって時間の経過を表す。図１７の４３０１に示すように、基準時刻後の制御帯域は、現在時刻における制御帯域を表す（本実施例では、ｔｏｋｅｎと表す）。基準時刻後の送信帯域は、現在時刻における送信帯域を表し（本実施例では、ｓｎｄと表す）、基準時刻後の送信ビット積算値をインターバルで除算することで求められる。基準時刻後の再送帯域は、現在時刻における再送帯域を表し（本実施例では、ｒｔｓと表す）、基準時刻後の再送ビット積算値をインターバルで除算することで求められる。また、図１７の４３０２に示すように、基準時刻前の制御帯域・送信帯域・再送帯域は、基準時刻の直前まで（現在の基準時刻からインターバル時間前まで）の制御帯域・送信帯域・再送帯域を表す（本実施例では、ｏｌｄ＿ｔｏｋｅｎ、ｏｌｄ＿ｓｎｄ、ｏｌｄ＿ｒｔｓと表す）。また、図１７の４３０３に示すように、現在使用している基準時刻の一つ前に使用していた基準時刻を旧基準時刻と呼び、旧基準時刻前の制御帯域・送信帯域・再送帯域は、旧基準時刻の直前まで（旧基準時刻からさらにインターバル時間前まで。現在の基準時刻からすると２インターバル時間前）の制御帯域・送信帯域・再送帯域を表す（本実施例では、ｏｌｄ＿ｏｌｄ＿ｔｏｋｅｎ、ｏｌｄ＿ｏｌｄ＿ｓｎｄ、ｏｌｄ＿ｏｌｄ＿ｒｔｓと表す）。図１７の４３０２に示すように、基準時刻前の再送率ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏは、ｏｌｄ＿ｒｔｓ／ｏｌｄ＿ｏｌｄ＿ｓｎｄで求められる。また、図１７の４３０１に示すように、基準時刻後の現在の再送率ｒｔｓ＿ｒａｔｉｏは、現在の再送帯域ｒｔｓと、基準時刻前の送信帯域とに基づき、ｒｔｓ／ｏｌｄ＿ｓｎｄで求められる。
【００５０】
図１８は、送信帯域制御部３２０６がシェーパ毎の送信・再送帯域テーブル３２０５記載の値を用いて、制御帯域を変更するフローチャート図を表す。処理がスタートすると（ステップ３５０１）、送信帯域制御部３２０６が、初めにタイマ３２０３の出力する現在時刻と、送信・再送帯域テーブル３２０５記載の基準時刻との差が、インターバル３２０４以上であるか否かを判定する（ステップ３５０２）。インターバルとして、計測したＲＴＴ等を使用してもよい。ステップ３５０２において真と判断された場合、制御帯域（基準時刻後）ｔｏｋｅｎの値をｔｍｐに退避させておく（ステップ３５０３）。更に、再送ビット積算値（基準時刻後）／インターバル／送信帯域（基準時刻前）で求められる再送率（基準時刻後）ｒｔｓ＿ｒａｔｉｏが、再送帯域（基準時刻前）／送信帯域（旧基準時刻前）で求められる旧再送率（基準時刻前）ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏのＫ倍（Ｋ：予め定められた１以上の定数）よりも大きいか否かを判定する（ステップ３５０４）。大きい場合は、再送率が増加していると判断して、制御帯域（基準時刻後）ｔｏｋｅｎの値を、制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎの値よりも小さくなるように、再送帯域ｒｔｓを用いて減少させる。例えば、制御帯域（基準時刻後）ｔｏｋｅｎ＝制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ−再送帯域（基準時刻後）ｒｔｓとする（ステップ３５０５）。ステップ３５０４で偽と判定された場合は、制御帯域（基準時刻後）ｔｏｋｅｎを増加させる（ステップ３５０６）。ステップ３５０５、３５０６が終了すると、送信帯域（基準時刻前）ｏｌｄ＿ｓｎｄ＝送信帯域（基準時刻後）ｓｎｄ、再送帯域（基準時刻前）ｏｌｄ＿ｒｔｓ＝再送帯域（基準時刻後）ｒｔｓ、基準時刻＝基準時刻＋インターバル、送信ビット積算値（基準時刻後）＝０、再送ビット積算値（基準時刻後）＝０、制御帯域（旧基準時刻前）ｏｌｄ＿ｏｌｄ＿ｔｏｋｅｎ＝制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ、送信帯域（旧基準時刻前）ｏｌｄ＿ｏｌｄ＿ｓｎｄ＝送信帯域（基準時刻前）ｏｌｄ＿ｓｎｄ、制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ＝ｔｍｐ、とし、各値を送信・再送帯域テーブル３２０５に記憶する（ステップ３５０７）。
【００５１】
ステップ３５０２で、偽と判定された場合は、ステップ３５０４と同様に、再送ビット積算値（基準時刻後）／インターバル／送信帯域（基準時刻前）で求められる再送率（基準時刻後）ｒｔｓ＿ｒａｔｉｏが、再送帯域（基準時刻前）／送信帯域（旧基準時刻前）で求められる旧再送率（基準時刻前）ｏｌｄ＿ｒｔｓ＿ｒａｔｉｏのＫ倍（Ｋ：予め定められた１以上の定数）よりも大きいか否かを判定する（ステップ３５０８）。大きい場合は、例えば再送率が増加していると判断して、ステップ３５０５と同様に、制御帯域（基準時刻後）ｔｏｋｅｎの値を、制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎの値よりも小さくなるように、再送帯域ｒｔｓを用いて減少させる。例えば、制御帯域（基準時刻後）ｔｏｋｅｎ＝制御帯域（基準時刻前）ｏｌｄ＿ｔｏｋｅｎ−再送帯域（基準時刻後）ｒｔｓとする（ステップ３５０９）。
【００５２】
以上の送信帯域制御部３２０６の制御帯域を更新する方法により、図１１に示す直近の廃棄／再送帯域と、それよりも１ＲＴＴ前の制御帯域とに基づいて、１ＲＴＴ前の制御帯域よりも小さくなるように制御帯域を減少させることが可能となる。制御帯域が回線帯域付近で上下するように更新されるため、回線帯域を１００％近く使い切ることができる。
【００５３】
送信帯域制御部３２０６は、前述の通り、独自ＴＣＰの送信帯域を実現するため、シェーパ毎の送信・再送帯域テーブル３２０５記載の制御帯域が変更されると、新たな変更済み制御帯域をパケット送信制御部３２０７へ通知する。パケット送信制御部３２０７は、通知されたシェーパ毎の制御帯域と最大送信帯域設定部３２１１に設定される最大送信帯域を同時に遵守する様に、トークンバケツアルゴリズムを用いて、各シェーパ３２０９からパケットが送信可能か否かを判定し、シェーパ３２０９からパケットを送信するように集約部３１０９へ指示する。
トークンバケツアルゴリズムでは、蓄積されるトークンの最大値が規定されたトークンバケツに、時間に比例したトークンが蓄積されていき、送信するパケット長に到達するとパケットの送信が許可される。更に、パケット送信と同時に、送信パケット長に対応するトークンが、トークンバケツから減らされる。パケット送信制御部３２０７は、送信帯域制御部３２０６から通知された制御帯域と最大送信帯域設定部３２０７の設定値に基づいて、トークンバケツに加算するトークンの値を決定する。
【００５４】
パケット送信制御部３２０７の詳細を図１３に示す。本制御部３２０７は、各シェーパＸ３２０９Ｘ（Ｘ＝Ａ、Ｂ、Ｃ）の送信帯域を制御するトークンバケツ更新部Ｘ １１０１Ｘ（Ｘ＝Ａ、Ｂ、Ｃ）と、シェーパＸの送信帯域の総和を制御する最大帯域制御部１１０２と、トークンバケツ更新部Ｘ １１０１Ｘと最大帯域制御部１１０２から送信される送信可否情報を受信し、何れも「送信可」である際に、集約部３１０９に各シェーパＸよりパケット送信を指示する送信要求信号Ｘを送信する送信判定部１１０３より構成される。
【００５５】
トークンバケツ更新部Ｘ １１０１Ｘは、各シェーパＸ３２０９Ｘより、それぞれのシェーパＸ ３２０９から最初に送信すべき、即ち、シェーパＸが蓄積しているパケットであって最も過去に受信したパケットのパケット長が通知されている。この値をそれぞれＩＰ＿ＬＥＮＸ（Ｘ＝Ａ、Ｂ、Ｃ）と記載する。このパケット長としては例えば、図２のＩＰ ｌｅｎｇｔｈ２９０５や、ＩＰ ｌｅｎｇｔｈ２９０５にＴＣＰのヘッダ長などを加算した情報を使用する。
【００５６】
パケット送信制御部３２０７の動作を図１０のフローチャートを用いて説明する。シェーパＡからのパケットの送信を判定するケースについて記載されているが、シェーパＢ、シェーパＣについても同様な動作を行っている。なお、通信装置＃１、通信装置＃２の装置起動時に、シェーパＡ、Ｂ、Ｃ全ての出力帯域の総和に対応するＰＴｏｋｅｎとシェーパＡの出力帯域に対応するＰＴｏｋｅｎＡの値が、ＰＴｏｋｅｎおよびＰＴｏｋｅｎＡの最大値であるＰＴｏｋｅｎ＿ＭＡＸ、ＰＴｏｋｅｎＡ＿ＭＡＸにそれぞれ初期化され。また、シェーパＡから前パケットを送信した時刻であるＴＡおよびシェーパＡ、Ｂ、Ｃの何れから前パケットを送信した時刻であるＴが、現在時刻に初期化される。
【００５７】
シェーパＡ ３２０９Ａにパケットが存在してＩＰ＿ＬＥＮＡが通知され、かつ、シェーパＢ、Ｃのステップが１００２ではある場合にステップ１００３に進む。次に、シェーパＡからの前パケットの送信時刻ＴＡからの経過時間にＴｏｋｅｎＡを乗算した値にＰＴｏｋｅｎＡを加算した値と、ＰＴｏｋｅｎＡ_ＭＡＸを比較し、小さな値を新たなＰＴｏｋｅｎＡとする。同様に、前パケットの送信時刻Ｔからの経過時間にＴｏｋｅｎを乗算した値にＰＴｏｋｅｎを加算した値と、ＰＴｏｋｅｎ_ＭＡＸを比較し、小さな値を新たなＰＴｏｋｅｎとする（ステップ１００３）。なお、ここでＴｏｋｅｎは、最大送信帯域設定部３２１１に設定された値に対応する値である。次に、ＰＴｏｋｅｎＡとＩＰ＿ＬＥＮＡを比較し、ＰＴｏｋｅｎＡ≧ＩＰ＿ＬＥＮＡであって十分トークンが存在する場合にトークンバケツ更新部Ａ １１０１ＡはシェーパＡの送信可能信号を送信判定部１１０３に送信する。さらに、最大帯域制御部１１０２が、ＰＴｏｋｅｎとＩＰ＿ＬＥＮＡを比較し、ＰＴｏｋｅｎ≧ＩＰ＿ＬＥＮＡであってシェーパＡ、Ｂ、Ｃの共通のトークンが存在するか否かを判定する。ＰＴｏｋｅｎ≧ＩＰ＿ＬＥＮＡである際には、送信可能信号を送信判定部１１０３に送信する。次に送信判定部１１０３は、トークンバケツ更新部Ａおよび最大帯域制御部１１０２が送信した送信可能信号が何れも「送信可」か否かを判定する（ステップ１１０４）。何れも「送信可」の場合、ステップ１１０５に進み、それ以外の場合にはステップ１１０２に戻る。ステップ１１０５では、送信判定部１１０３は集約部３１０９にシェーパＡのセッション毎送信要求信号を送付するとともに、トークンバケツ更新部Ａおよび最大帯域制御部１１０２に対し、送信要求信号を送付したことを通知する。本信号を受信した集約部３１０９はシェーパＡよりパケットを読み出し、パケットを送信する（ステップ１００６）。最終的にこのパケットは、フィルタ１０１０、ＮＩＦ１ １０１２経由でネットワークに送信される。さらに、トークンバケツ更新部Ａおよび最大帯域制御部１１０２は、ＰＴｏｋｅｎＡとＰＴｏｋｅｎより送信したパケット長であるＩＰ＿ＬＥＮＡを減算し、新たなＰＴｏｋｅｎＡとＰＴｏｋｅｎとする（ステップ１００７）。
【００５８】
以上に説明した様に、パケット送信制御部３２０７が、各シェーパＸのパケットの送信可否を判定するトークンバケツ更新部Ｘおよび最大送信帯域設定部３２１１に設定されたシェーパＸの送信帯域の総和の上限値に基づいて、シェーパＸからパケットの送信可否を判定する最大帯域制御部１１０２を備え、送信判定部１１０３が、トークンバケツ更新部Ｘと最大帯域制御部１１０２の何れも送信可と判断した際に送信要求信号Ｘを集約部３１０９に送信することで、シェーパＸの送信帯域の総和を遵守しつつ、セッション・シェーパテーブルにて指定した各セッションについて独自ＴＣＰの帯域制御を行い、パケットを送信できる。
【産業上の利用可能性】
【００５９】
本発明は、例えば、端末間の通信を中継する通信装置および通信システムに利用可能である。
【符号の説明】
【００６０】
１０３、１０４、９０３、９０４、９０５、９０６  端末
１００、１０１、９１０、９２０、１０００  通信装置
９００、９０１、９０２、９０７  ネットワーク
【図１】
0005832335.tif 000002
【図２】
0005832335.tif 000003
【図３】
0005832335.tif 000004
【図４】
0005832335.tif 000005
【図５】
0005832335.tif 000006
【図６】
0005832335.tif 000007
【図７】
0005832335.tif 000008
【図８】
0005832335.tif 000009
【図９】
0005832335.tif 000010
【図１０】
0005832335.tif 000011
【図１１】
0005832335.tif 000012
【図１２】
0005832335.tif 000013
【図１３】
0005832335.tif 000014
【図１４】
0005832335.tif 000015
【図１５】
0005832335.tif 000016
【図１６】
0005832335.tif 000017
【図１７】
0005832335.tif 000018
【図１８】
0005832335.tif 000019