(57)【特許請求の範囲】
【請求項１】
複数のトランスポート層コネクションをそれぞれトランスポート層で終端し、前記各トランスポート層コネクション上のデータフローをそれぞれ別のトランスポート層コネクションへ中継するトランスポート層中継方法であって、
中継に使用中の中継コネクションの総送信レートを決定し、前記総送信レートを分割して、中継に使用中の中継コネクションの送信レートとして割り当てるトランスポート層中継方法。
【請求項２】
請求項１記載のトランスポート層中継方法であって、
前記総送信レートを、中継しているトランスポート層コネクションの数、および、中継コネクションが経由するネットワークの輻輳状況に応じて決定するトランスポート層中継方法。
【請求項３】
請求項１記載のトランスポート層中継方法であって、
中継に使用中の中継コネクションの全体の実効レートが所望のレートになるように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、中継コネクションが経由するネットワークの輻輳状況に応じて決定するトランスポート層中継方法。
【請求項４】
請求項１記載のトランスポート層中継方法において、
中継に使用中の中継コネクションの全体の実効レートが、中継コネクションとボトルネックを共有する中継コネクション以外のトラヒックに対して優先度付け出来るように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、中継コネクションが経由するネットワークの輻輳状況に応じて決定するトランスポート層中継方法。
【請求項５】
請求項１記載のトランスポート層中継方法において、
前記総送信レートを、前記各中継コネクション上の前記データフロー内のアプリケーション情報に依存して、前記各中継コネクションの送信レートに分割して割り当てるトランスポート層中継方法。
【請求項６】
請求項１記載のトランスポート層中継方法において、
中継コネクションが経由するネットワークの輻輳状況を計測パケットによって推定した結果も利用して、前記総送信レートを決定するトランスポート層中継方法。
【請求項７】
請求項１記載のトランスポート層中継方法において、
中継コネクションが経由するネットワークの輻輳状況を、中継するパケットによって推定した結果も利用して、前記総送信レートを決定するトランスポート層中継方法。
【請求項８】
複数の端末とのトランスポート層コネクションを、それぞれトランスポート層で終端する複数の端末側コネクション終端部と、トランスポート層中継装置間の複数のトランスポート層コネクションをそれぞれ終端する複数の装置間コネクション終端部を持ち、前記各端末側コネクション終端部と前記各装置間コネクション終端部の間でトランスポート層データを中継する、トランスポート層中継装置において、
前記装置間コネクション終端部は、送信レート制御部から通知される送信レートに従って送信を行い、
送信レート制御部は、中継に使用中の装置間コネクション終端部全体の総送信レートを決定し、前記総送信レート分割し、分割して割り当てたそれぞれのレートを前記中継に使用中の各装置間コネクション終端部に通知するランスポート層中継装置。
【請求項９】
請求項８記載のトランスポート層中継装置において、
前記送信レート制御部が、前記総送信レートを、中継しているトランスポート層コネクションの数、および、各装置間コネクション終端部から通知されるコネクション毎の輻輳情報に応じて決定するトランスポート層中継装置。
【請求項１０】
請求項８記載のトランスポート層中継装置において、
前記送信レート制御部が、中継に使用中の中継コネクションの全体の実効レートが所望のレートになるように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、各装置間コネクション終端部から通知されるコネクション毎の輻輳情報に応じて決定するトランスポート層中継装置。
【請求項１１】
請求項８記載のトランスポート層中継装置において、
前記送信レート制御部が、中継に使用中の中継コネクションの全体の実効レートが、中継コネクションとボトルネックを共有する中継コネクション以外のトラヒックに対して優先度付け出来るように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、各装置間コネクション終端部から通知されるコネクション毎の輻輳情報に応じて決定するトランスポート層中継装置。
【請求項１２】
請求項８記載のトランスポート層中継装置において、
前記各端末側コネクション終端部と前記各装置間コネクション終端部の間でトランスポート層データを中継する時に、前記トランスポート層データ内のアプリケーション情報を解析するアプリケーション情報解析部を持ち、且つ、
前記レート制御部が、前記総送信レートを、前記アプリケーション情報解析部からのアプリケーション情報に基づいて、前記各中継コネクションの送信レートに分割して割り当てるトランスポート層中継装置。
【請求項１３】
請求項８記載のトランスポート層中継装置において、
中継コネクションが経由するネットワークの輻輳状況を、計測パケットによって推定するネットワーク状況推定部を持ち、且つ、
前記送信レート制御部が、前記ネットワーク状況推定部が推定した結果も利用して、前記総送信レートを決定するトランスポート層中継装置。
【請求項１４】
請求項８記載のトランスポート層中継装置において、
中継コネクションが経由するネットワークの輻輳状況を、中継するパケットによって推定するインライン計測部を持ち、且つ、
前記送信レート制御部が、前記インライン計測部が推定した結果も利用して、前記総送信レートを決定するトランスポート層中継装置。
【請求項１５】
複数のトランスポート層コネクションをそれぞれトランスポート層で終端し、前記各トランスポート層コネクション上のデータフローを１つのトランスポート層コネクションへ集約して中継するトランスポート層中継方法において、
中継コネクションの総送信レートを決定し、前記総送信レートを分割したレートに従って、前記の各トランスポート層コネクションからのデータフローを中継コネクションへ集約するトランスポート層中継方法。
【請求項１６】
請求項１５記載のトランスポート層中継方法において、
前記総送信レートを、中継しているトランスポート層コネクションの数、および、中継コネクションが経由するネットワークの輻輳状況に応じて決定するトランスポート層中継方法。
【請求項１７】
請求項１５記載のトランスポート層中継方法において、
中継に使用中の中継コネクションの全体の実効レートが所望のレートになるように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、中継コネクションが経由するネットワークの輻輳状況に応じて決定するトランスポート層中継方法。
【請求項１８】
請求項１５記載のトランスポート層中継方法において、
中継に使用中の中継コネクションの全体の実効レートが、中継コネクションとボトルネックを共有する中継コネクション以外のトラヒックに対して優先度付け出来るように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、中継コネクションが経由するネットワークの輻輳状況に応じて決定するトランスポート層中継方法。
【請求項１９】
請求項１５記載のトランスポート層中継方法において、
前記総送信レートを、前記データフロー内のアプリケーション情報に依存して分割したレートに従って、前記各トランスポート層コネクションからのデータフローを中継コネクションへ集約するトランスポート層中継方法。
【請求項２０】
請求項１５記載のトランスポート層中継方法において、
中継コネクションが経由するネットワークの輻輳状況を計測パケットによって推定した結果も利用して、前記総送信レートを決定するトランスポート層中継方法。
【請求項２１】
請求項１５記載のトランスポート層中継方法において、
中継コネクションが経由するネットワークの輻輳状況を中継するパケットによって推定した結果も利用して、前記総送信レートを決定するトランスポート層中継方法。
【請求項２２】
端末とのトランスポート層コネクションをトランスポート層で終端する複数の端末側コネクション終端部と、トランスポート層中継装置間のトランスポート層コネクションを終端する１つの装置間コネクション終端部を持ち、前記各端末側コネクション終端部からのトランスポート層データを１つに集約して前記装置間コネクション終端部へ受け渡すＭＵＸ−ＤＥＭＵＸ部を持つトランスポート層中継装置において、
前記装置間コネクション終端部は、送信レート制御部から通知される総送信レートに従って送信を行い、
前記ＭＵＸ−ＤＥＭＵＸ部は、送信レート制御部から通知されるレートの分配に従って端末側コネクション終端部からのデータを集約し、
送信レート制御部は、前記装置間コネクション終端部の総送信レートを決定して通知すると共に、前記総送信レートを分割したレートの分配を前記ＭＵＸ−ＤＥＭＵＸ部へ通知するトランスポート層中継装置。
【請求項２３】
請求項２２記載のトランスポート層中継装置において、
前記送信レート制御部が、前記総送信レートを、中継しているトランスポート層コネクションの数、および、装置間コネクション終端部から通知されるコネクションの輻輳情報に応じて決定するトランスポート層中継装置。
【請求項２４】
請求項２２記載のトランスポート層中継装置において、
前記送信レート制御部が、中継コネクションの実効レートが所望のレートになるように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、装置間コネクション終端部から通知されるコネクションの輻輳情報に応じて決定するトランスポート層中継装置。
【請求項２５】
請求項２２記載のトランスポート層中継装置において、
前記送信レート制御部が、中継コネクションの実効レートが中継コネクションとボトルネックを共有する中継コネクション以外のトラヒックに対して優先度付け出来るように、前記総送信レートを、中継しているトランスポート層コネクションの数、および、各装置間コネクション終端部から通知されるコネクションの輻輳情報に応じて決定するトランスポート層中継装置。
【請求項２６】
請求項２２記載のトランスポート層中継装置において、
前記各端末側コネクション終端部と前記ＭＵＸ−ＤＥＭＵＸ部の間でトランスポート層データを受け渡す時にトランスポート層データ内のアプリケーション情報を解析するアプリケーション情報解析部を持ち、
前記レート制御部が前記アプリケーション情報解析部からのアプリケーション情報に基づいて、前記総送信レートを分割し、前記ＭＵＸ−ＤＥＭＵＸ部へ伝えるレートの分配を決定するトランスポート層中継装置。
【請求項２７】
請求項２２記載のトランスポート層中継装置において、
中継コネクションが経由するネットワークの輻輳状況を、計測パケットによって推定するネットワーク状況推定部を持ち、且つ、
前記送信レート制御部が、前記ネットワーク状況推定部が推定した結果も利用して、前記総送信レートを決定するトランスポート層中継装置
【請求項２８】
請求項２２記載のトランスポート層中継装置において、
中継コネクションが経由するネットワークの輻輳状況を、中継するパケットによって推定するインライン計測部を備え、且つ、
前記送信レート制御部が、前記インライン計測部が推定した結果も利用して前記総送信レートを決定するトランスポート層中継装置。
【請求項２９】
請求項１記載のトランスポート層中継方法において、
新たなトランスポート層コネクション開設時に、前記総送信レートを決定し、前記総送信レートを分割して各中継コネクションの送信レートとして割り当て、前記新たなトランスポート層プロトコルの開設相手に、割り当てたレートを通知するトランスポート層中継方法。
【請求項３０】
請求項８記載のトランスポート層中継装置において、
端末とのトランスポート層コネクション開設時に、前記送信レート制御部から通知される、初期送信レート情報を、端末へ通知するトランスポート層中継装置。
【請求項３１】
請求項１５記載のトランスポート層中継方法において、
新たなトランスポート層コネクション開設時に、前記総送信レートを決定し、前記総送信レートを分割したレートを、前記の新たなトランスポート層プロトコルの開設相手通知するトランスポート層中継方法。
【請求項３２】
請求項２２記載のトランスポート層中継装置において、
端末とのトランスポート層コネクション開設時に、前記送信レート制御部から通知される、初期送信レート情報を、端末へ通知するトランスポート層中継装置。
【請求項３３】
コンピュータを、
複数の端末とのトランスポート層コネクションを、それぞれトランスポート層で終端する複数の端末側コネクション終端部、
前記各端末側コネクション終端部との間でトランスポート層データを中継すると共に、トランスポート層中継装置間の複数のトランスポート層コネクションをそれぞれ終端し、送信時には送信レート制御部から通知される送信レートに従って送信を行う複数の装置間コネクション終端部、
中継に使用中の装置間コネクション終端部全体の総送信レートを決定し、前記総送信レート分割し、分割して割り当てたそれぞれのレートを前記中継に使用中の各装置間コネクション終端部に通知する送信レート制御部として機能させるためのプログラム。
【請求項３４】
コンピュータを、
端末とのトランスポート層コネクションをトランスポート層で終端する複数の端末側コネクション終端部、
トランスポート層中継装置間のトランスポート層コネクションを終端し、送信時には送信レート制御部から通知される送信レートに従って送信を行う１つの装置間コネクション終端部、
前記各端末側コネクション終端部からのトランスポート層データを、送信レート制御部から通知されるレートの分配に従って１つに集約して前記装置間コネクション終端部へ受け渡すＭＵＸ−ＤＥＭＵＸ部、
前記装置間コネクション終端部の総送信レートを決定して通知すると共に、前記総送信レートを分割したレートの分配をＭＵＸ−ＤＥＭＵＸ部へ通知する送信レート制御部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、パケット交換による通信システムに関し、特に、輻輳制御機能を有するプロトコル層のコネクションを中継する技術に関する。
【背景技術】
【０００２】  ＯＳＩ参照モデルのネットワークプロトコルでは、データ通信ネットワークの機能を７つの階層に大別しており、下位の階層から順に物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層がある。パケット網において、端末上のアプリケーションが、複数のパケットにまたがるデータを通信する場合、アプリケーション間で仮想的なコネクションが張られ、そのコネクション上にアプリケーションデータが送られる。このコネクションは、一般に、トランスポートより上位層のプロトコルを用いて張られる。また、このコネクションを張る層のプロトコルの中には、受信側の受信処理能力を超えないように送信側のレートを制御するフロー制御、および、途中のネットワークの輻輳を起こさないように、送信側のレートを制御する輻輳制御の両方の機能（両方を合わせてレート制御と呼ぶ）を持つものが存在する。また、レート制御は、受信側から送信側へフィードバック情報（正しく受信したデータのシーケンス番号の情報や、受信側の受信バッファの残り量など）を送り返して、送信側の送信レートを制御するフィードバック制御を行うものが多い。一般に、この輻輳制御機能はトランスポート層で実現される事が多いため、以下では、上記の輻輳制御に関わるプロトコルが送受信アプリケーションの間で張るコネクションを、トランスポート層コネクションと呼ぶことにする。現在インターネットで広く用いられているＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ、Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌとも呼ばれる）も、トランスポート層プロトコルであり、輻輳制御機能を持っている。【０００３】  トランスポート層プロトコルの輻輳制御機能は、それぞれのコネクションが次のように互いに独立にレート制御を行う。即ち、複数のトランスポート層コネクションが、あるリンク上に同時に存在し、リンクの帯域を競合して取り合う場合、それらのコネクションの送信側の輻輳制御を含めたトランスポート層プロトコルの処理を行う部分（トランスポート層コネクション終端部と呼ぶ）が、各コネクション毎に独立にレート制御を行うのである。ＴＣＰでは、受信端末からのＡＣＫパケットを元に、パケットロスや、遅延の増加を検知して、リンクの帯域を全コネクションで使い切って、かつ、コネクション間で取り合う帯域がほぼ同じになるような制御が行われる。このため、特定のコネクションに高い帯域を割り当てたり、コネクション間で帯域を融通しあって、効率よい通信を行う事が出来なかった。また、トランスポート層の輻輳制御機能は、コネクション開設後に、ネットワークの輻輳状況を学習する事によって適切なレートでの送信を行っている。このため、コネクション開設直後は通信効率がよくなかった。【０００４】  これらの問題に対処するため以下のような従来技術が存在する。【０００５】  第１の従来技術は、ルータのパケットスケジューリングによる方法で、特定のコネクションに属するパケットを識別し、特定のフローに高い帯域を割り当てたり、コネクション間で優先度をつけたりする方式である。【０００６】  第２の従来技術は、Ｃｏｎｇｅｓｔｉｏｎ  Ｍａｎａｇｅｒと呼ばれる方式で、ある端末の組（例えば端末Ａと端末Ｂ）の間に張られた複数のトランスポート層コネクションについて、それぞれのコネクションの送信レートについて独立に輻輳制御するのではなく、全体の送信レートを１本のＴＣＰと同じ輻輳制御で得られるレートにし、それぞれのコネクションにその１本の送信帯域を割り当てる方式である。【０００７】  第３の従来技術は、複数の端末のＴＣＰを一旦終端し、１つのＴＣＰに多重して送り、受信端末の近くで再びもとのＴＣＰへと分離して中継する方式である（例えば、特開２００２−１８５４８８号公報参照）。【０００８】  従来方式の第１の問題点は、第１の従来技術では、送受信端末の通信パス上の全てのルータにおいて、パケットスケジューラでの優先度制御、固定帯域割り当て等の制御を行わなければならず、多数のルータを置き換える必要が生じ、多数の装置コスト、および、装置の入れ替えにかかるコストが発生することにある。【０００９】  従来方式の第２の問題点は、第２の従来技術、および、第３の従来技術では、着目しているコネクション全体のスループットの制御を、既存の１本のＴＣＰの輻輳制御を用いて行っているため、着目しているトラヒック全体の実効レート（実際に受信側に届いたデータのスループット）をある所望の値にする事、および、着目しているトラヒック以外のトラヒックとの間の優先付けが出来ない事にある。【００１０】  従来方式の第３の問題点は、第２の従来技術では、同一の端末の組の間に張られた複数のトランスポート層コネクションについて輻輳制御の協調は出来るが、異なる端末の組の間に張られたトランスポート層コネクションについての輻輳制御の協調は出来ない事にある。【００１１】  従来方式の第４の問題点は、第３の従来技術では、端末の初期の送信レートがＴＣＰのスロースタートとなり、レートが適切な値となるのに時間がかかるという事にある。
【発明の開示】
【００１２】  本発明の第１の目的は、複数の端末間のあるトランスポート層コネクション集合に対して、所望する実効レートを確保し、そのコネクション集合の中で、その帯域を再分配することを、低コストで実現する事にある。
【００１３】  本発明の第２の目的は、複数の端末間のあるトランスポート層コネクション集合に対して、他のトランスポート層コネクションに対して優先度付けした実効レートを確保し、そのコネクション集合の中で、その帯域を再分配することを、低コストで実現する事にある。
【００１４】  本発明の第３の目的は、複数の端末間のあるトランスポート層コネクション集合に対し、ある実効レートを、そのコネクション集合の中で、コネクションを流れるアプリケーションの情報に依存して再配分する事にある。
【００１５】  本発明の第４の目的は、複数の端末間のあるトランスポート層コネクション集合に対して、所望する実効レートの確保を、低コストかつ高精度で実現する事にある。
【００１６】  本発明の第５の目的は、複数の端末間のあるトランスポート層コネクション集合に対して、他のトランスポート層コネクションに対して優先度付けした実効レートの確保を、高精度で実現する事にある。
【００１７】  本発明の第６の目的は、端末へ初期送信レートを伝えることで、端末の輻輳制御の効率を向上させる事にある。
【００１８】  上記の第１、２、３の目的を達成するために、本発明の第１のトランスポート層中継装置は、端末からのトランスポート層コネクションを終端する複数の端末側コネクション終端部を持ち、それを対向するトランスポート層中継装置へ中継するためのトランスポート層コネクションを（中継コネクション）終端する複数の装置間コネクション終端部を持ち、各端末側コネクション終端部と、各装置間コネクション終端部の間で、アプリケーション情報を読みとりながら、データを中継する、アプリケーション情報解析部を持つ。さらに、装置間コネクション終端部の総送信レートと、各装置間コネクション終端部の送信レートを決定する、送信レート制御部と、複数の端末側コネクション終端部、装置間コネクション終端部、アプリケーション情報解析部のどれが使われているかを管理する中継制御部を持つ。
【００１９】  上記の第４、５の目的を達成するために、本発明の第２のトランスポート層中継装置は、第１のトランスポート層中継装置が持つ構成に加え、対向する装置間のネットワーク状況を推定し、送信レート制御部へ通知するネットワーク状況推定部を持つ。
【００２０】  上記の第１、２、３、の目的を達成するために、本発明の第３のトランスポート層中継装置は、端末からのトランスポート層コネクションを終端する複数の端末側コネクション終端部を持ち、それを対向するトランスポート層中継装置へ中継するトランスポート層コネクション（中継コネクション）を終端する１つの装置間コネクション終端部を持つ。また、各端末側コネクション終端部からのデータを集約して１つの装置間トランスポート層終端部へ受け渡すＭＵＸ−ＤＥＭＵＸ部を持つ。また、各端末側コネクション終端部と、ＭＵＸ−ＤＥＭＵＸ部の間で、アプリケーション情報を読みとりながら、データを中継する、アプリケーション情報解析部を持つ。また、装置間コネクション終端部の総送信レートと、ＭＵＸ−ＤＥＭＵＸ部がどのようなレートの割合で各端末側コネクション終端部からのデータを集約するかを指示する、送信レート制御部と、複数の端末側コネクション終端部、アプリケーション情報解析部のどれが使われているかを管理する中継制御部を持つ。
【００２１】  上記の第４、５の目的を達成するために、本発明の第４のトランスポート層中継装置は、第３のトランスポート層中継装置が持つ構成に加え、対向する装置間のネットワーク状況を推定し、送信レート部へ通知するネットワーク状況推定部を持つ。
【００２２】  上記の第６の目的を達成するために、本発明の第５のトランスポート層中継装置は、本発明の第１のトランスポート層中継装置のの中で、端末からのコネクション開設要求時に、端末に通知すべき最適な初期送信レートを送信レート制御部に問い合わせる機能が加わった中継制御部と、その要求に応じて最適な初期送信レートを決定する機能が加わった送信レート制御部手段と、端末に初期送信レートを通知する機能が加わった端末側コネクション終端部を持つ。
【００２３】  上記の第６の目的を達成するために、本発明の第６のトランスポート層中継装置は、本発明の第２のトランスポート層中継装置の構成の中で、端末からのコネクション開設要求時に、端末に通知すべき最適な初期送信レートを送信レート制御部に問い合わせる機能が加わった中継制御部と、その要求に応じて最適な初期送信レートを決定する機能が加わった送信レート制御部と、端末に初期送信レートを通知する機能が加わった端末側コネクション終端部を持つ。
【００２４】  上記の第６の目的を達成するために、本発明の第７のトランスポート層中継装置は、本発明の第３のトランスポート層中継装置の構成の中で、端末からのコネクション開設要求時に、端末に通知すべき最適な初期送信レートを送信レート制御部に問い合わせる機能が加わった中継制御部と、その要求に応じて最適な初期送信レートを決定する機能が加わった送信レート制御部と、端末に初期送信レートを通知する機能が加わった端末側コネクション終端部を持つ。
【００２５】  上記の第６の目的を達成するために、本発明の第８のトランスポート層中継装置は、本発明の第４のトランスポート層中継装置の構成の中で、端末からのコネクション開設要求時に、端末に通知すべき最適な初期送信レートを送信レート制御部に問い合わせる機能が加わった中継制御部と、その要求に応じて最適な初期送信レートを決定する機能が加わった送信レート制御部と、端末に初期送信レートを通知する機能が加わった端末側コネクション終端部を持つ。
【００２６】  本発明には以下の効果がある。
【００２７】  本発明の第１の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、所望する実効レートを確保し、そのコネクション集合の中で、その帯域を再分配することを、低コストで実現できる事にある。
【００２８】  本発明の第２の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、他のトランスポート層コネクションに対して優先度付けした実効レートを確保し、そのコネクション集合の中で、その帯域を再分配することを、低コストで実現できる事にある。
【００２９】  本発明の第３の効果は、複数の端末間のあるトランスポート層コネクション集合に対し、ある実効レートを、そのコネクション集合の中で、コネクションを流れるアプリケーションの情報に依存して再配分できる事にある。
【００３０】  本発明の第４の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、所望する実効レートの確保を、低コストかつ高精度で実現できる事にある。
【００３１】  本発明の第５の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、他のトランスポート層コネクションに対して優先度付けした実効レートの確保を、高精度で実現できる事にある。
【００３２】  本発明の第６の効果は、端末へ初期送信レートを伝えることで、端末の輻輳制御の効率を向上できる事にある。
【図面の簡単な説明】
【００３３】
【図１】図１は、本発明の第１の実施の形態のトランスポート層中継装置の構成図である。
【図２】図２は、本発明の第１の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図３】図３は、本発明の第１の実施の形態のトランスポート層中継装置の中継動作タイムチャートである。
【図４】図４は、本発明の第１の実施の形態のレート制御部の動作フローチャートである。
【図５】図５は、本発明の第２の実施の形態のトランスポート層中継装置の構成図である。
【図６】図６は、本発明の第２の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図７】図７は、本発明の第２の実施の形態のレート制御部の動作フローチャートである。
【図８】図８は、本発明の第３の実施の形態のトランスポート層中継装置の構成図である。
【図９】図９は、本発明の第３の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図１０】図１０は、本発明の第３の実施の形態のトランスポート層中継装置の中継動作タイムチャートである。
【図１１】図１１は、本発明の第３の実施の形態のレート制御部の動作フローチャートである。
【図１２】図１２は、本発明の第４の実施の形態のトランスポート層中継装置の構成図である。
【図１３】図１３は、本発明の第４の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図１４】図１４は、本発明の第４の実施の形態のレート制御部の動作フローチャートである。
【図１５】図１５は、本発明の第５の実施の形態のトランスポート層中継装置の構成図である。
【図１６】図１６は、本発明の第５の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図１７】図１７は、本発明の第５の実施の形態のトランスポート層中継装置の中継動作タイムチャートである。
【図１８】図１８は、本発明の第５の実施の形態のレート制御部の動作フローチャートである。
【図１９】図１９は、本発明の第６の実施の形態のトランスポート層中継装置の構成図である。
【図２０】図２０は、本発明の第６の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図２１】図２１は、本発明の第６の実施の形態のレート制御部の動作フローチャートである。
【図２２】図２２は、本発明の第７の実施の形態のトランスポート層中継装置の構成図である。
【図２３】図２３は、本発明の第７の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図２４】図２４は、本発明の第７の実施の形態のトランスポート層中継装置の中継動作タイムチャートである。
【図２５】図２５は、本発明の第７の実施の形態のレート制御部の動作フローチャートである。
【図２６】図２６は、本発明の第８の実施の形態のトランスポート層中継装置の構成図である。
【図２７】図２７は、本発明の第８の実施の形態のトランスポート層中継装置を使ったネットワーク構成図である。
【図２８】図２８は、本発明の第８の実施の形態のレート制御部の動作フローチャートである。
【図２９】図２９は、本発明の第９の実施の形態のトランスポート層中継装置の構成図である。
【図３０】図３０は、本発明の第１０の実施の形態のトランスポート層中継装置の構成図である。
【発明を実施するための最良の形態】
【００３４】  次に本発明の実施の形態について図面を参照して詳細に説明する。【００３５】  〔本発明の第１の実施の形態〕
〔本発明の第１の実施の形態の構成の説明〕
次に本発明の第１の実施の形態の構成について図面を参照して詳細に説明する。【００３６】  図１は、本発明の第１の実施の形態の、トランスポート層中継装置Ｅ００１の内部ブロック図である。トランスポート層中継装置Ｅ００１は、内部に、中継制御部１００１と、中継部１００２−１〜１００２−ｎと、送信レート制御部１００３とを含む。トランスポート層中継装置Ｅ００１は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部１００１、中継部１００２−１〜１００２−ｎ、送信レート制御部１００３を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部１００１、中継部１００２−１〜１００２−ｎ、送信レート制御部１００３を実現する。以下、それぞれの構成要素について説明する。【００３７】  ・中継制御部１００１：
中継制御部１００１は、端末のトランスポート層のコネクション終端部からのコネクション開設要求、あるいは、他のトランスポート層中継装置の装置間コネクション終端部からの中継要求を受け取り、中継部１００２−１〜１００２−ｎの中で、現在使われていない、中継部を割り当てて、トランスポート層コネクションの中継処理を行わせる。端末からのコネクション開設要求は、コネクション開設の要求元端末のＩＰアドレスとポート番号、コネクション開設要求先端末のＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子、の５つの情報の組（これをコネクション識別子と呼ぶ）を含む。また、中継要求には、コネクション識別子と共に、トランスポート層中継装置の装置間のコネクション（これを中継コネクションと呼ぶ）を開設するのに必要な情報を含む。【００３８】  中継制御部１００１は、中継部１００２−１〜１００２−ｎのそれぞれが現在使用中かどうかを示す表（空管理表）を持っており、コネクション開設要求、あるいは、中継要求を受けて、中継部を割り当てた時に空管理表の該当中継部を″使用中″とし、中継部から中継終了通知を受け取ると、″非使用中″と識別する情報を書くことによって、どの中継部が現在使用中であるかを管理しているものとする。また、送信レート制御部１００３へ、中継部に割り当てているコネクションのコネクション識別子、および、中継部の識別番号（１〜ｎ）を登録・削除する。【００３９】  更に、中継制御部１００１は、開設要求先端末のＩＰアドレスと、中継要求の送信先にするトランスポート層中継装置との対応関係を示す表（対応表）を有しており、端末からコネクション開設要求を受け取ったとき、対応表から上記コネクション開設要求に含まれている開設要求先端末のＩＰアドレスに対応するトランスポート層中継装置を示す情報を取得し、取得した情報を装置間コネクション終端部に渡す。【００４０】  ・中継部１００２−１〜１００２−ｎ：
内部に端末側コネクション終端部、アプリケーション情報解析部、装置間コネクション終端部を含む。中継制御部１００１から、（１）端末のトランスポート層のコネクション終端部からのコネクション開設要求、あるいは、（２）別のトランスポート層中継装置の装置間コネクション終端部からの中継要求を受け、中継のためのトランスポート層コネクションを、端末、および、他のトランスポート層中継装置との間にそれぞれ開設する。以下、（１）、（２）を受け取った場合、それぞれについて動作を説明する。【００４１】  中継制御部１００１から、（１）端末のトランスポート層のコネクション終端部からのコネクション開設要求を受け取った場合、端末側コネクション終端部に、その端末とのトランスポート層コネクションを開設させる。このとき、端末側コネクション終端部は、コネクション開設要求の開設要求先端末の情報（ＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子）を用い、端末には、コネクション開設要求先の端末と直接接続しているのと同じように見せる。また、装置間コネクション終端部に対して、中継制御部１００１から渡されている情報によって示されるトランスポート層中継装置（装置Ｂとする）の装置間コネクション終端部へ中継要求を送信することを指示し、装置Ｂの装置間コネクション終端部との間にトランスポート層コネクションを開設させる。【００４２】  中継制御部１００１から、（２）他のトランスポート層中継装置（装置Ｂとする）の装置間コネクション終端部からの中継要求を受けた場合、装置間コネクション終端部に、装置Ｂの装置間コネクション終端部との間でトランスポート層コネクションを開設させる。また、中継要求に含まれる、コネクション識別子の情報を使い、端末側コネクション終端部と、開設要求先端末との間にトランスポート層コネクションを開設する。このとき、端末側コネクション終端部は、コネクション開設要求の開設要求元端末の情報（ＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子）を用い、端末には、コネクション開設要求元の端末と直接接続しているのと同じように見せる。【００４３】  端末側コネクション終端部からコネクション切断通知を受け取ると、装置間コネクション終端部に、中継コネクションを切断させ、中継制御部１００１へ中継終了通知を送る。装置間コネクション終端部からコネクション切断通知を受け取った場合も同様に、端末側コネクション終端部に、接続先の端末とのコネクションを切断させ、中継制御部１００１へ中継終了通知を送る。【００４４】  ・端末側コネクション終端部：
トランスポート層コネクションを張った端末との通信に用いる送受信バッファを持ち、トランスポート層コネクションの終端処理を行う。このトランスポート層コネクションの終端処理は、使われるトランスポート層プロトコルに従うものとするが、少なくとも、トランスポート層コネクションの開設、維持、終了の機能、および、フロー制御、輻輳制御機能を持っているものとする。中継部の指示に従い、端末とのコネクション開設・切断を行う。また、端末からコネクション切断要求があれば、コネクション切断後、中継部へコネクション切断通知を送る。【００４５】  端末とコネクションが開設されている間は、端末に対して送信バッファ中のデータを、トランスポート層プロトコルの規約に従って送ると共に、端末からのデータをトランスポート層プロトコルの規約に従って受け取り、受信バッファへと書き込む。また、接続しているアプリケーション情報解析部からデータを受け取り、送信バッファへと書き込む。受信バッファからデータを読み出し、接続しているアプリケーション情報解析部へ受け渡す。【００４６】  ・アプリケーション情報解析部：
端末側コネクション終端部と、装置間コネクション終端部との間で、トランスポート層のデータの転送を行う。すなわち、端末側コネクション終端部の受信バッファからトランスポート層データを読み出し、装置間コネクション終端部の送信バッファへと書き込む。【００４７】  また、装置間コネクション終端部の受信バッファからトランスポート層データを読み出し、端末側コネクション終端部の送信バッファへと書き込む。これらの、トランスポート層データ転送時に、アプリケーション情報を取得し、送信レート制御部１００３へと通知する。【００４８】  アプリケーション情報とは、たとえば、トランスポート層プロトコル上にＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を使ったデータ送受信が行われている場合、ＨＴＴＰヘッダ中で、どのようなデータ種別が送られているかを示すＣｏｎｔｅｘｔ−ｔｙｐｅタグの中身や、送られるデータサイズを示すＣｏｎｔｅｘｔ−ｌｅｎｇｔｈタグの値である。別の例としては、ＲＴＳＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ）のコネクションで指定されるストリーミングのレートや、ストリーミングのコネクション識別子などである。また別な例としては、ＦＴＰの制御コネクション中で指定される、ＦＴＰのデータコネクションのコネクション識別子である。【００４９】  ・装置間コネクション終端部：
端末側コネクション終端部と同様に、トランスポート層コネクションを張った相手との通信に用いる送受信バッファを持ち、トランスポート層コネクションの終端処理を行う。【００５０】  また、中継部の指示に従い、他のトランスポート層中継装置とのコネクション開設・切断を行う。また、他のトランスポート層中継装置からコネクション切断要求があれば、コネクション切断後、中継部へコネクション切断通知を送る。【００５１】  端末側コネクション終端部と異なるのは、トランスポート層コネクションの終端処理に関して、トランスポート層コネクションの開設、維持、終了の機能を持つが、フロー制御、および、輻輳制御のための送信レートの計算は、送信レート制御部が行い、送信レート制御部の指示に従ったレートで送信する点が異なる。また、通信相手からのフィードバック情報を利用して求めた、現在の通信相手との間のコネクション毎輻輳情報（後述）を送信レート制御部１００３に通知する点が異なる。【００５２】  また、このトランスポート層コネクションには信頼性あるトランスポート層プロトコルが使われるものとし、再送制御のために、受信側から受信出来たデータのシーケンス番号（ＡＣＫ番号）を含む、ＡＣＫパケットを受け取るものとする。ＡＣＫ番号は、これまでにロスなく連続して受け取っている最後のシーケンス番号＋１の値（ＲＲ：Ｒｅｃｅｉｖｅ  Ｒｅａｄｙ）だけでも良いし、ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ）のように、ＲＲとそれ以降で受け取れているシーケンス番号のブロックを列挙したものであってもよい。さらに、ＡＣＫパケットには、受信側の受信バッファの残量などの、フロー制御に必要な情報もふくまれているとする。【００５３】  上記のような、装置間コネクション終端部は、たとえば、ＴＣＰ  Ｒｅｎｏ、ＴＣＰ  Ｎｅｗ  Ｒｅｎｏ、あるいは、ＴＣＰ  ＳＡＣＫなどのスライディングウィンドウ型の輻輳制御・フロー制御を行うトランスポート層プロトコルのコネクション終端部を一部変更することで実現出来る。具体的には、これらのトランスポートプロトコルでは、送信相手の受信バッファの残量と、輻輳ウィンドウの値の小さい方を、最終的な送信ウィンドウの値として求めているが、この輻輳ウィンドウ（ｃｗｎｄと呼ぶ）を変更している部分を次のように変更する。まず、目標輻輳ウィンドウ値（ＴＷと呼ぶ）を決め（決め方は後述）、（ａ）コネクション開始時、コネクションアイドル時（パケットを１ＲＴＴ以上の時間送っていない時）、あるいはＴＣＰのタイムアウト発生時：ｃｗｎｄ＝１とする（ｂ）ＡＣＫ受信時には、ｃｗｎｄがＴＷ／２以下ならｃｗｎｄ＝ｃｗｎｄ＋１としそうでなければｃｗｎｄ＝ｃｗｎｄ＋１．０／ｃｗｎｄとするというように変更する。【００５４】  また、目標ウィンドウ値が変化した場合、ｃｗｎｄをその目標ウィンドウ値で上書きしてもよい。目標ウィンドウ値の決め方としては、送信レート制御部が指示するレートを、現在のＲＴＴ（往復遅延）で割った値としてもよい。あるいは、装置間コネクション終端部が終端しているＴＣＰコネクションが経由するボトルネックリンクの物理帯域Ｂ（ｂｉｔ／秒）と、ＴＣＰが観測したＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の最大値ＲＴＴ＿���ａｘ（秒）を用いて、Ｗ＿ｍａｘ＝ＲＴＴ＿ｍａｘ・Ｂ／（８・ＭＳＳ）（ＭＳＳはＴＣＰの最大セグメントサイズ）とし、送信レート制御部が指示するレート（Ｒ（ｂｉｔ／秒）とする）から、Ｗ＿ｍａｘ・Ｒ／Ｂの値を求めてウィンドウの値に上書きしてもよい。あるいは、装置間コネクション終端部が終端しているＴＣＰコネクションが経由するボトルネックリンクを流れるクロストラヒックのＴＣＰフローの本数をＮとして、（４・Ｎ−１）・Ｗ＿ｍａｘ・Ｒ／（４・Ｎ・Ｂ−Ｒ）の値をウィンドウの値に上書きしてもよい。【００５５】  また、ＴＣＰの再送制御に関して通常のＴＣＰプロトコルでは、あるパケットを送ってからタイムアウト時間までＡＣＫがこないと再送するという動作に加え、高速再転送と呼ばれる、重複ＡＣＫがある閾値（一般的には３という値，高速再転送閾値と呼ぶ）発生するとそのＡＣＫ番号の次のシーケンス番号のパケットを１回再送するという制御を行っている。本実施の形態の装置間コネクション終端部では、この動作に加え、次のような「再々転送」を行っても良い。再々転送は、高速再転送のきっかけとなった重複ＡＣＫ番号について、高速再転送後にも引き続いて届く重複ＡＣＫの数を数え、これがある閾値（再々転送閾値と呼ぶ）を超えるとふたたび再送するという動作である。再々転送は繰り返し行っても良い。再々転送閾値は、高速再転送を行った時に、これまでに送ったシーケンス番号の最大値から、重複ＡＣＫ番号と高速再転送閾値の和を引いた値としてもよい。【００５６】  コネクションが開設されている間は、トランスポート層プロトコルの規約に従って、コネクションを開設した相手方の装置間コネクション終端部とのトランスポート層コネクションを維持し、送信バッファ中のデータを、（トランスポート層プロトコルの規約に従って）相手方の装置間コネクション終端部へ送ると共に、コネクションを開設した装置間コネクション終端部からのデータを（トランスポート層プロトコルの規約に従って）受け取り、受信バッファへと書き込む。また、接続しているアプリケーション情報解析部からデータを受け取り、送信バッファへと書き込む。受信バッファからデータを読み出し、接続しているアプリケーション情報解析部へ受け渡す。ただし、送信バッファ中のデータを装置間コネクション終端部へ送る際のレートは、送信レート制御部１００３から指示されたレートに従うものとする。また、相手方の装置間コネクション終端部からデータを受け取る際に得られるＡＣＫパケットから求まるコネクション毎輻輳情報を送信レート制御部１００３へ受け渡すものとする。【００５７】  コネクション毎輻輳情報について述べる。一般に、トランスポート層プロトコルでは、コネクションを張った通信相手からのフィードバック情報として、相手の現在の受信能力（受信バッファの空き量など）と受信したデータのシーケンス番号を含むＡＣＫパケットを受け取る。ＡＣＫパケットから、現在のパケットの往復遅延（ＲＴＴ：Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の計測、パケットロスと推測出来るイベントの検知が出来る。ＲＴＴは例えば次の様に計算出来る。【００５８】  パケット送信時に、そのパケットに含まれるデータのシーケンス番号と、送信時���を記憶しておき、そのシーケンス番号を受信した旨を知らせるＡＣＫパケット受信時に、受信時刻と記憶していた送信時刻との差を求めることで得る事が出来る。パケットロスについては、ＴＣＰのように、ＡＣＫのシーケンス番号が、これまでにロスなく連続して受信出来ている最後のデータのシーケンス番号を返すものであるならば、その重複ＡＣＫ受信時パケットロスの可能性がある事を検知出来る。また、ＴＣＰのＦａｓｔ  Ｒｅｔｒａｎｓｍｉｔのような、重複ＡＣＫ受信時に、Ｇｏ−ｂａｃｋ−Ｎではない、高速再送を行う再送アルゴリズムの場合、ｐａｒｔｉａｌ  ＡＣＫ受信時にも、パケットロスの可能性がある事を検知出来る。これらの、ＲＴＴやパケットロスの可能性のあるイベントを含む情報を、コネクション毎輻輳情報と呼ぶ。【００５９】  ・送信レート制御部１００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを分割して各中継コネクションに割り当てる。総送信レートＲ＿ｔｏｔａｌの決め方としては、現在中継中のコネクション数、各アプリケーション情報解析部からのアプリケーション情報、各装置間コネクション終端部からのコネクション毎輻輳情報に依存して決定しても良く、例えば次のような方法がある。【００６０】  （総送信レート決定方法Ａ１）
所望の実効レートＲ＿ｔａｒｇｅｔに対して、あらかじめ決められた倍率値α（α＞１）を用いて、設定値をＲ＿ｔｏｔａｌ＝α・Ｒ＿ｔａｒｇｅｔとする。ここで、α＞１としたのは、パケットロスがあっても所望の実行レートＲ＿ｔａｒｇｅｔでパケットを送信できるようにするためである。【００６１】  （総送信レート決定方法Ｂ１）
所望の実効レートＲ＿ｔａｒｇｅｔが現在中継中のコネクション数に見合ったものになるように、Ｒ＿ｔｏｔａｌを現在中継中のコネクション数に依存して決める。１コネクション当たりＲ＿ｏのレートを割り当てると決めておき、中継制御部１００１によって登録されている現在のコネクション数ｍを元に、Ｒ＿ｔｏｔａｌ＝α＊Ｒ＿ｏ＊ｍと決定する。αは、あらかじめ決められた倍率値α（α＞１）である。【００６２】  （総送信レート決定方法Ｃ１）
所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、各装置間コネクション終端部からのコネクション毎輻輳情報を利用してＲ＿ｔｏｔａｌを決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔに現在ｍ本のコネクションを中継しているとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌｉ（ｉ＝１，…，ｍ）回のパケットロスを検知し、各中継コネクションの平均パケットサイズがＤｉ（ｉ＝１，…，ｍ）であったとする。時刻ｔ−Ｔから時刻ｔの間に、【００６３】
【数１】
0004433202.tif 000002
のデータ量を送ろうとして、【００６４】
【数２】
0004433202.tif 000003
のデータが、パケットロスで送れなかったので、データのロス率は、【００６５】
【数３】
0004433202.tif 000004
である。同じ輻輳状況が続くと仮定し、目標レート（Ｒ＿ｔａｒｇｅｔ）にするために、
Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ）とする。ただし、極端な輻輳を避けるため、あるデータロス率の閾値Ｐ＿０に対して、Ｐ＞Ｐ＿０の場合には、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ＿０）とする。【００６６】  （総送信レート決定方法Ｄ１）
出来るだけ大きな実効レートが得られるように、Ｒ＿ｔｏｔａｌを各装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔに現在ｍ本のコネクションを中継しているとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌｉ（ｉ＝１，…，ｍ）回のパケットロスを検知し、各中継コネクションの平均パケットサイズがＤｉ（ｉ＝１，…，ｍ）であったとする。時刻ｔ−Ｔから時刻ｔの間に、【００６７】
【数４】
0004433202.tif 000005
のデータ量を送ろうとして、【００６８】
【数５】
0004433202.tif 000006
のデータが、パケットロスで送れなかったので、データのロス率は、【００６９】
【数６】
0004433202.tif 000007
である。過去の送信レートＲ＿ｔｏａｔｌとその時のデータロス率Ｐから、送信レートと実際に受信側に届いたレート（＝Ｒ＿ｔｏｔａｌ＊（１−Ｐ））の関係を求めた表を作る。この表を作るデータは、順次更新してゆくとする。実際に受信側に届いたレートが最大になる送信レートの値をＲ＿ｔｏｔａｌする。ただし、過去の送信レートＲ＿ｔｏｔａｌがまだ十分に蓄積されていなければ、あらかじめ設定されているＲ＿ｔｏｔａｌを使う。【００７０】  （総送信レート決定方法Ｅ１）
現在中継しているアプリケーションに見合った所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、Ｒ＿ｔｏｔａｌをアプリケーション情報解析部からの情報も利用して決める。例えば、ストリーミングコネクションのみを中継している時、アプリケーション情報解析部からストリーミングのレート情報を得て、それらの合計値をＲ＿ｔａｒｇｅｔとし、送信レート決定方法Ｃ１に従ってＲ＿ｔｏｔａｌを求める。【００７１】  （総送信レート決定方法Ｆ１）
ボトルネックを共有する他のトラヒックに対する優先度付けをした、実効レートが得られるように、Ｒ＿ｔｏｔａｌを、現在のコネクション数ｍ、および、装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、コネクション毎輻輳情報から得られる、中継コネクションが通るネットワークのパケットロス率ｐ、ＲＴＴを使ってＴＣＰの１本あたりの実効レートを推定し、そのα倍のレートをｍ倍してもよい。ＴＣＰの１本あたりの実効レートを推定方法としては、Ｍ．Ｈａｎｄｌｅｙ，Ｓ．Ｆｌｏｙｄ，Ｊ．Ｐａｄｈｙｅ，Ｊ．Ｗｉｄｍｅｒ，″ＴＣＰ  Ｆｒｉｅｎｄｌｙ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ（ＴＦＲＣ）：Ｐｒｏｔｏｃｏｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，″Ｉｎｔｅｒｎｅｔ  Ｓｏｃｉｅｔｙ，ＲＦＣ  ３４４８，Ｊａｎｕａｒｙ  ２００３．の３．１節の″ｔｈｒｏｕｇｈｐｕｔ  ｅｑｕａｔｉｏｎ″のＸで与えられているような計算式でもよい。即ち、中継コネクション終端部からのコネクション毎輻輳情報を利用し、パケットロス発生率ｐ（ｐの計算の際には、ＲＴＴ以内のパケットロスも１つのロスイベントと考えて計算する）、ＲＴＴの指数平均値Ｒ、ＴＣＰのタイムアウト時間の推定値ｔ＿ＲＴＯ（例えば、Ｒの２倍とする）、中継コネクションのあるネットワークのＴＣＰのパケットサイズの平均値をｓ（バイト）（ｓは経験的に知られている値でも良い）、ｂ＝２として、【００７２】
【数７】
0004433202.tif 000008
と求め、Ｒ＿ｔｏｔａｌ＝ｍ・α・Ｘ（ｂｉｔ／ｓｅｃ）と決定する。αを１より大きくすれば、１本あたりの送信レートを他のトラヒックに対して高くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に上げることが出来る。逆に、αを１未満にすれば、１本あたりの送信レートを他のトラヒックに対して低くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に下げることが出来る。【００７３】  このようにして決めたＲ＿ｔｏｔａｌを各中継コネクションへのレートへ割り当てる。割り当ては、現在のコネクション数や、アプリケーション情報解析部からの情報に依存して決めても良く、例えば、次のような方法が考えられる。【００７４】  （送信レート割り当て方法１）
全コネクションに公平にレートを割り当てる。即ち、コネクションがｍ本あれば、Ｒ＿ｔｏｔａｌ／ｍのレートを各コネクションに割り当てる。【００７５】  （送信レート割り当て方法２）
コネクション識別子のポート番号情報に依存して、決められたルールに従って割り当てる。たとえば、ポート番号毎に優先度を付け、それの優先度に応じてレートを割り当てる。【００７６】  （送信レート割り当て方法３）
アプリケーション情報解析部からの情報に依存して決定する。例えば、ＨＴＴＰコネクションでデータ転送を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られた、ＨＴＴＰのＣｏｎｔｅｎｔ−ｔｙｐｅフィールドの値に依存して優先度を付けた帯域割り当てを行う。別の例としては、ＨＴＴＰでファイル取得を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られたＨＴＴＰのＣｏｎｔｅｎｔ−ｌｅｎｇｔｈフィールドの情報に依存して、短いサイズのデータを転送しているコネクションにより高い帯域を割り当てる。また別の例として、Ｎｓ本のストリーミングタイプのアプリケーションのコネクションと、Ｎｆ体のＨＴＴＰを使ったファイル転送タイプのアプリケーションを中継している場合を考える。アプリケーション情報解析部から得られた、各ストリーミングのレートがＲＳｉ（ｉ＝１，…，Ｎｓ）とし、アプリケーション情報解析部から得られた、ファイル転送タイプのコネクションのファイルサイズをＦＬｉ（ｉ＝１，…，Ｎｆ）とする。ストリーミングタイプのコネクションについては、公平なレート（Ｒ＿ｔｏｔａｌを現在のコネクション数Ｎｓ＋Ｎｆで割ったもの）より低いレートのものには、そのストリーミングのレートＲＳｉ（ｉ＝１，…，Ｎｓ０）を割り当てる。残ったレート【００７７】
【数８】
0004433202.tif 000009
を、まだ割り当てをしていないストリーミングコネクションに優先的に割り当て、さらに残ったレートを、ファイル転送タイプのコネクションのうちファイルサイズが短いもの順に高いレートを割り当てる。【００７８】  〔動作の説明〕
次に本発明の第１の実施の形態の動作について図面を参照して詳細に説明する。【００７９】  図２は、本発明の第１の実施の形態の、トランスポート層中継装置Ｅ００１を用いた通信網の構成例である。ネットワークＮ１の中にはｓ台の端末Ｈ１−１〜Ｈ１−ｓがあり、ルータＲ１を介してネットワークＮ３と接続されている。ネットワークＮ２の中には、ｒ台の端末Ｈ２−１〜Ｈ２−ｒが存在し、ルータＲ２を介してネットワークＮ３と接続されている。Ｎ１内の端末Ｈ１−１〜Ｈ１−ｓとＮ２内の端末Ｈ２−１〜Ｈ２−ｒが通信するには、ネットワークＮ３を経由するものとする。また、本発明の第１の実施の形態の、トランスポート層中継装置Ｅ００１が、ネットワークＮ１、およびＮ２に配置されており、それぞれをＴＲ１、ＴＲ２と呼ぶ事にする。ルータＲ１は、端末Ｈ１−１〜Ｈ１−ｓ、あるいは、ネットワークＮ３からのパケットは全てトランスポート層中継装置ＴＲ１へ転送し、トランスポート層中継装置ＴＲ１からのパケットについては、通常のルータと同様に転送するものとする。同様に、ルータＲ２は、端末Ｈ２−１〜Ｈ２−ｓ、あるいは、ネットワークＮ２からのパケットは全てトランスポート層中継装置ＴＲ２へ転送し、トランスポート層中継装置ＴＲ２からのパケットについては、通常のルータと同様に転送するものとする。【００８０】  以上の構成の中で、トランスポート層中継装置ＴＲ１とルータＲ１、および、トランスポート層中継装置ＴＲ２とルータＲ２は同じ装置内にあって、上記と同様の転送を行うようになっていても良い。【００８１】  図３は、図２のネットワークＮ１内の端末Ｈ１−ｋが、ネットワークＮ２内の端末Ｈ２−ｊとの間で通信を行う場合の、ネットワークＮ１、および、ネットワークＮ２に配置された、第１の実施の形態のトランスポート層中継装置Ｅ００１（図２，図３の中のＴＲ１、ＴＲ２）の動作を示している。端末Ｈ１−ｋは、端末Ｈ２−ｊと通信を行おうとして、コネクション開設要求のパケットを端末Ｈ２−ｊへ向かって送信するが、ルータＲ１がそのパケットをトランスポート層中継装置ＴＲ１へと送り、これをトランスポート層中継装置ＴＲ１の中継制御部が受け取る（図３のＴ１００）。【００８２】  そして、トランスポート層中継装置ＴＲ１内では、中継制御部がそのコネクション開設要求を受け取り、現在使用されていない中継部を見つけて、その中継部の番号とコネクション識別子を送信レート制御部へ登録する（Ｔ１１０）。また、その中継部にコネクション開設要求を受け渡す（Ｔ１３０）。中継部は、内部の端末側コネクション終端部へ指示して（Ｔ１４０）、端末Ｈ１−ｋとの間にコネクションを開設させる（Ｔ１５０）。また、内部の装置間コネクション終端部へ指示して（Ｔ１６０）、トランスポート層中継装置ＴＲ２の中継制御部に中継要求を送らせ（Ｔ１７０）、装置間コネクション終端部との間に中継コネクションを開設させる（以下で説明するＴ１８０〜Ｔ２１０の手順に従う）。中継要求を受け取ったトランスポート層中継装置ＴＲ２の中継制御部は、現在使用中でない中継部を見つけて、その中継部の番号と中継要求に含まれるコネクション識別子を送信レート制御部へ登録する（Ｔ１８０）。また、その中継部���中継要求を受け渡す（Ｔ１９０）。中継要求を受け取った中継部は、内部の装置間コネクション終端部へ指示して（Ｔ２００）、中継要求を出したトランスポート層中継装置ＴＲ１の装置間コネクション終端部との間に中継コネクションを開設する（Ｔ２１０）。さらに、中継部は、内部の端末側コネクション終端部へ指示して（Ｔ２２０）、端末Ｈ２−ｊとの間にコネクションを開設させる（以下で説明するＴ２３０、Ｔ２４０の手順に従う）。即ち、端末側コネクション終端部が端末Ｈ２−ｊへコネクション開設要求を送り（Ｔ２３０）、コネクション開設を行う（Ｔ２４０）。【００８３】  端末Ｈ１−ｋは、ＨＴＴＰのＧＥＴメソッドを使って、Ｈ２−ｊからファイルを取得するとすれば、ＴＲ１とのコネクション開設（Ｔ１５０）の後、ＨＴＴＰのＧＥＴリクエストを送信する（Ｔ２５０）。このリクエストは、トランスポート層中継装置ＴＲ１の端末側コネクション終端部が受け取り、アプリケーション情報解析部を経由して装置間コネクション終端部へと受け渡され（Ｔ２６０、Ｔ２７０）、中継コネクションを使って、トランスポート層中継装置ＴＲ２の端末間コネクション終端部へと受け渡される（Ｔ２８０）。そして、再び、アプリケーション情報解析部を経由して、端末側コネクション終端部へと渡り（Ｔ２９０、Ｔ３００）、最終的に、端末Ｈ２−ｊへと届く（Ｔ３１０）。【００８４】  端末Ｈ２−ｊは、このリクエストに応答してデータを端末Ｈ１−ｋへ送り返す（Ｔ３２０）。この応答のデータは、再び、トランスポート層中継装置ＴＲ２、および、ＴＲ１によって中継されて、端末Ｈ１−ｋへと送り届けられる（Ｔ３３０〜Ｔ３８０）。この部分の動作については、詳細を後述する。【００８５】  通信が終わると、どちらかの端末、例えば、端末Ｈ２−ｊがコネクション切断要求を送り（Ｔ３９０）、これを、トランスポート層中継装置ＴＲ２の端末側コネクション終端部が受け取り、コネクションを切断する（Ｔ４００）。端末側コネクション終端部は、中継部に対して、コネクション切断通知を送る（Ｔ４１０）。これを受けた中継部は、装置間コネクション終端部へ、中継終了通知を送り（Ｔ４２０）、装置間コネクション終端部は、接続先との間の中継コネクションを切断する（Ｔ４３０）。また、中継部は、中継制御部へ、中継終了通知を送る（Ｔ４４０）。中継終了通知を受け取った中継制御部は、送信レート制御部へ通知して、コネクション識別子と中継部の番号の登録を削除する（Ｔ４５０）。中継コネクションを切断されたトランスポート層中継装置ＴＲ１の装置間コネクション終端部は、中継部へコネクション切断通知を送る（Ｔ４６０）。中継部は、端末側コネクション終端部へ通知して（Ｔ４７０）、接続中の端末（端末Ｈ１−ｋ）とのコネクションを切断させる（Ｔ４８０、Ｔ４９０）。その後、中継制御部へ中継終了通知を送り（Ｔ５００）、それを受けた中継制御部は、送信レート制御部へ通知して、コネクション識別子と中継部の番号の登録を削除する（Ｔ５１０）。【００８６】  以上のような動作により、ネットワークＮ１内の任意の端末と、ネットワークＮ２内の任意の端末の間の通信を、本発明の第１の実施例のトランスポート層中継装置ＴＲ１、ＴＲ��を使って、中継させる事が出来る。【００８７】  上記の動作の中で図３のＴ３２０〜Ｔ３８０に示したような、ネットワークＮ２内の端末からネットワークＮ１内の端末へ、データを転送している時の、トランスポート層中継装置の送信レート制御部の動作について詳しく述べる。図４に送信レート制御部の動作のフローチャートを示す。送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、もし、登録コネクション数が１であれば（Ｆ１３０）、時間Ｔ後に切れるタイマを設定する（Ｆ１４０）。イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがアプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、登録済みの中継部番号に対応する中継部の装置間コネクション終端部からコネクション毎輻輳情報を取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部１００３の説明の中で述べた、総送信レート決定方法Ａ１、Ｂ１、Ｃ１、Ｄ１、Ｅ１、Ｆ１などを採用することができる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。【００８８】  この決定の方法としては、送信レート制御部１００３の説明の中で述べた、送信レート割り当て方法１、２、３などを採用することができる。ここで決定した各コネクションの送信レートを、対応する、装置間コネクション終端部へ通知する（Ｆ２５０）。最後に、タイマをＴにセットする（Ｆ２６０）。【００８９】  〔発明の第１の実施の形態の効果〕
発明の第１の実施の形態で得られる、発明の第１の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、所望の実効レートを確保し、そのコネクション集合の中で、その実効レートを再分配することを、トランスポート層中継装置をネットワークＮ１およびネットワークＮ２に一つずつ配置すれば実現出来るため、第１の従来方法がネットワークＮ３内の多数のルータを、帯域制御可能なルータに置き換えるのと比べ、装置コスト、および、置き換える手間のコストを低くする事が出来ることである。これは、発明の手法が、中継コネクションのトラヒックと他のトラヒック（クロストラヒック）が同じボトルネックを共有している場合、クロストラヒックを運ぶトランスポート層プロトコル（たとえばＴＣＰ）が輻輳制御を行っていれば、中継コネクションの総送信レートに応じて、送信レートを調整する性質を利用し、総送信レートに応じたある実効レートを確保しているためである。また、総送信レートを、中継しているコネクションの中で分割して利用することで、中継しているあるコネクションの送信レートを下げても、そのレートをクロストラヒックに奪われる事なく、中継している別のコネクションの送信レートとして利用する事が可能となり、実効レートの再配分が可能となっている。【００９０】  発明の第１の実施の形態で得られる、発明の第２の効果は、送信レート制御部において、総送信レート決定方法Ａ１〜Ｅ１の方法を用いることにより、第２、第３の従来技術では不可能であった、トランスポート層コネクション集合に対して、所望の実効レートを確保する事を可能にする事にある。【００９１】  発明の第１の実施の形態で得られる、発明の第３の効果は、送信レート制御部において、総送信レート決定方法Ｆ１の方法を用いることにより、第２、第３の従来技術では不可能であった、端末間の複数のコネクションに対して、他のトラヒックに対して優先度をつけた実効レート得る事を可能にする事である。【００９２】  発明の第１の実施の形態で得られる、発明の第４の効果は、送信レート割り当て方法３よって、複数の端末間のあるトランスポート層コネクション集合に対し、ある実効レートを、そのコネクション集合の中で、コネクションを流れるアプリケーションの情報に依存して再配分する事が可能となる。【００９３】  〔本発明の第２の実施の形態〕
〔構成の説明〕
次に本発明の第２の実施の形態の構成について図面を参照して詳細に説明する。【００９４】  図５は、本発明の第２の実施の形態の、トランスポート層中継装置Ｅ００２の内部ブロック図である。本発明の第１の実施の形態のトランスポート層中継装置Ｅ００１と比べ、ネットワーク状況推定部２００４が加わり、送信レート制御部２００３と接続されている点のみが異なる。【００９５】  中継制御部１００１、中継部１００２−１〜１００２−ｎとその内部の端末側コネクション終端部、アプリケーション情報解析部、装置間コネクション終端部の動作は本発明の第１の実施の形態のトランスポート層中継装置Ｅ００１のものと同様であるので説明を省略する。以下では、ネットワーク状況推定部２００４、および、送信レート制御部２００３の説明を行う。なお、トランスポート層中継装置Ｅ００２は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部１００１、中継部１００２−１〜１００２−ｎ、送信レート制御部２００３、ネットワーク状況推定部２００４を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部１００１、中継部１００２−１〜１００２−ｎ、送信レート制御部２００３、ネットワーク状況推定部２００４を実現する。【００９６】  ・ネットワーク状況推定部２００４：
ネットワーク状況推定部２００４は、ネットワーク内に配置された、他の本発明の第２の実施の形態のトランスポート層中継装置Ｅ００２のネットワーク状況推定部２００４と接続し、計測トラヒックを流すことで、他の本発明の第２の実施の形態のトランスポート層中継装置Ｅ００２との間のネットワークの状況、たとえば、パケットロス率、片道・往復遅延、ボトルネックの物理帯域や、ボトルネックの空き帯域を推定する。パケットロス率の推定は、例えば、送信側がシーケンス番号を付けた計測パケットを送信し、受信側で到着したパケットのシーケンス番号の抜けを見て、計算結果を送信側へフィードバックするようにすればよい。片道遅延については、例えば、トランスポート層中継装置の間で時刻同期を取っておき、送信側から時刻を書き込んだ計測パケットを送り、受信側で到着時間を見て、その差の時間を送信側へフィードバックするようにすればよい。往復の遅延は、例えば、計測パケットに対して、受信側が応答パケットを返すようにしておき、計測パケットの送信から応答までの時間を計ることで計測出来る。ボトルネックの物理帯域については、例えば、ｐａｃｋｅｔ−ｐａｉｒと呼ばれる手法（Ｓ．Ｋｅｓｈａｖ，Ｂ．Ｌａｎｄｆｅｌｄｔ，Ａ．Ｓｅｎｅｖｉｒａｔｎｅ，Ｂ．Ｍｅｌａｎｄｅｒ，Ｐ．Ｇｕｎｎｉｎｇｂｅｒｇ，″Ｐａｃｋｅｔ−Ｐａｉｒ  Ｆｌｏｗ  Ｃｏｎｔｒｏｌ″，ＩＥＥＥ／ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｎｅｔｗｏｒｋｉｎｇ，Ｆｅｂ  １９９５）を使って求めることが出来る。これは、同じサイズＬの計測パケットを連続して（時間間隔を開けずに）送信し、受信側で観測される計測パケットの到着間隔Ｄ（あるいは受信側が計測パケットに対して短い長さの応答パケットを返すようにしておき、その応答の到着間隔を送信側で計測してもよい）を観測し、計測パケットの送信側から受信側へのネットワークのボトルネックの物理帯域をＬ／Ｄによって求める方法である。ボトルネックの空き帯域については、例えばＳＬｏＰＳと呼ばれる手法（Ｍ．Ｊａｉｎ，Ｃ．Ｄｏｖｒｏｌｉｓ，″Ｅｎｄ−ｔｏ−Ｅｎｄ  Ａｖａｉｌａｂｌｅ  ＢａｎｄＷｉｄｔｈ：Ｍｅａｓｕｒｅｍｅｎｔ  Ｍｅｔｈｏｄｏｌｏｇｙ，Ｄｙｎａｍｉｃｓ，ａｎｄ  Ｒｅｌａｔｉｏｎ  ｗｉｔｈ  ＴＣＰ  Ｔｈｒｏｕｇｈｐｕｔ，″Ｐｒｏｃ．ｏｆ  ＡＣＭ  ＳＩＧＣＯＭＭ，Ａｕｇ．２００２．）を用いて計測する事が出来る。この方法は、１００個程度の計測パケットを連続的にレートＲで送ってみてその片方向遅延を見る（これは、送受信者の間で時刻同期などを取れば可能である）手法である。連続したパケットの片方向遅延が段々のびる様で有れば、Ｒは空き帯域よりも大きいと言え、のびなければ、Ｒは空き帯域よりも小さいと言える。この判定方法を使い、あるＲから初めて、二分探査的に調べれば、空き帯域を知る事が出来る。【００９７】  ・装置間コネクション終端部：
本発明の第１の装置間コネクション終端部と同じであるが、目標ウィンドウ値を決定する際に、装置間コネクション終端部が終端しているＴＣＰコネクションが経由するボトルネックリンクの物理帯域Ｂの値としてを、ネットワーク状況推定部２００４が推定した値を用いてもよい。【００９８】  ・送信レート制御部２００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを分割して、各中継コネクションに割り当てる。総送信レートＲ＿ｔｏｔａｌの決め方としては、現在中継中のコネクション数、各装置間コネクション終端部からのコネクション毎輻輳情報、アプリケーション情報解析部からのアプリケーション情報、ネットワーク状況推定部２００４からの情報に依存して決定しても良く、例えば次のような方法がある。【００９９】  （総送信レート決定方法Ａ２）
ネットワーク状況推定部２００４から得た情報に基づいて決める。例えば、ネットワーク状況推定部２００４から得た、ボトルネック物理帯域がＲｂ、空き帯域がＲａであったとする。所望の実効レートＲ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０１００】  （総送信レート決定方法Ｂ２）
所望の実効レートＲ＿ｔａｒｇｅｔが現在中継中のコネクション数に見合ったものになるように、Ｒ＿ｔｏｔａｌを現在中継中のコネクション数に依存して決める。１コネクション当たりＲ＿ｏのレートが得られる事を望む場合、中継制御部によって登録されている現在のコネクション数ｍを元に、Ｒ＿ｔａｒｇｅｔ＝Ｒ＿ｏ＊ｍと決定する。所望の帯域Ｒ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０１０１】  （総送信レート決定方法Ｃ２）
各装置間コネクション終端部からのコネクション毎輻輳情報とネットワーク状況推定部２００４からの情報を利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔに現在ｍ本のコネクションを中継しているとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ＿ｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌ＿ｉ（ｉ＝１，…，ｍ）回のパケットロスを検知したとする。【０１０２】  Ｃ＿１＋Ｃ＿２＋…＋Ｃｍ＜Ｃ＿ｔｈｒｅｓｈｏｌｄならば、計測に使うパケット数が不十分で、パケットロス率の精度が悪いので、ネットワーク状況推定部２００４から得た、パケットロス率をＰとする。そうでなければ、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌｉ（ｉ＝１，…，ｍ）回のパケットロスを検知し、各中継コネクションの平均パケットサイズがＤｉ（ｉ＝１，…，ｍ）であったとする。時刻ｔ−Ｔから時刻ｔの間に、【０１０３】
【数９】
0004433202.tif 000010
のデータ量を送ろうとして、【０１０４】
【数１０】
0004433202.tif 000011
のデータが、パケットロスで送れなかったので、データのロス率は、【０１０５】
【数１１】
0004433202.tif 000012
である。同じ輻輳状況が続くと仮定し、実効レートＲ＿ｔａｒｇｅｔを確保するために、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ）とする。ただし、極端な輻輳を避けるため、あるパケットロス率の閾値Ｐ＿０に対して、Ｐ＞Ｐ＿０の場合には、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ＿０）とする。【０１０６】  （総送信レート決定方法Ｄ２）
出来るだけ大きな実効レートが得られるように、Ｒ＿ｔｏｔａｌを各装置間コネクション終端部からのコネクション毎輻輳情報と、ネットワーク状況推定部２００４からの情報とを利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔに現在ｍ本のコネクションを中継しているとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ＿ｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌ＿ｉ（ｉ＝１，…，ｍ）回のパケットロスを検知したとする。【０１０７】  Ｃ＿１＋Ｃ＿２＋…＋Ｃ＿ｍ＜Ｃ＿ｔｈｒｅｓｈｏｌｄならば、計測に使うパケット数が不十分で、パケットロス率の精度が悪いので、ネットワーク状況推定部２００４から得た、パケットロス率をＰとする。そうでなければ、時刻ｔ−Ｔから時刻ｔの間に、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌｉ（ｉ＝１，…，ｍ）回のパケットロスを検知し、各中継コネクションの平均パケットサイズがＤｉ（ｉ＝１，…，ｍ）であったとする。時刻ｔ−Ｔから時刻ｔの間に、【０１０８】
【数１２】
0004433202.tif 000013
のデータ量を送ろうとして、【０１０９】
【数１３】
0004433202.tif 000014
のデータが、パケットロスで送れなかったので、データのロス率は、【０１１０】
【数１４】
0004433202.tif 000015
である。過去の送信レートＲ＿ｔｏａｔｌとその時のデータロス率Ｐから、送信レートと実際に受信側に届いたレート（＝Ｒ＿ｔｏｔａｌ＊（１−Ｐ））の関係を求めた表を作る。この表を作るデータは、順次更新してゆくとする。実際に受信側に届いたレートが最大になる送信レートの値をＲ＿ｔｏｔａｌとする。ただし、過去の送信レートＲ＿ｔｏｔａｌがまだ十分に蓄積されていなければ、あらかじめ設定されているＲ＿ｔｏｔａｌを使う。【０１１１】  （総送信レート決定方法Ｅ２）
現在中継しているアプリケーションに見合った所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、Ｒ＿ｔｏｔａｌをアプリケーション情報解析部からの情報も利用して決める。例えば、ストリーミングコネクションのみを中継している時、アプリケーション情報解析部からストリーミングのレート情報を得て、それらの合計値をＲ＿ｔａｒｇｅｔとし、送信レート決定方法Ｃ２に従ってＲ＿ｔｏｔａｌを求める。
（総送信レート決定方法Ｆ２）
ボトルネックを共有する他のトラヒックに対する優先度付けをした、実効レートが得られるように、Ｒ＿ｔｏｔａｌを、現在のコネクション数ｍ、および、装置間コネクション終端部からのコネクション毎輻輳情報と、ネットワーク状況推定部２００４からの情報を利用して決める。例えば、コネクション毎輻輳情報、あるいは、ネットワーク状況推定部から得られる、中継コネクションが通るネットワークのパケットロス率ｐ、ＲＴＴを使ってＴＣＰの１本あたりの実効レートを推定し、そのα倍のレートをｍ倍する。ＴＣＰの１本あたりの実効レートの推定方法としては、Ｍ．Ｈａｎｄｌｅｙ，Ｓ．Ｆｌｏｙｄ，Ｊ．Ｐａｄｈｙｅ，Ｊ．Ｗｉｄｍｅｒ，″ＴＣＰ  Ｆｒｉｅｎｄｌｙ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ（ＴＦＲＣ）：Ｐｒｏｔｏｃｏｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，″Ｉｎｔｅｒｎｅｔ  Ｓｏｃｉｅｔｙ，ＲＦＣ  ３４４８，Ｊａｎｕａｒｙ  ２００３．の３．１節の″ｔｈｒｏｕｇｈｐｕｔ  ｅｑｕａｔｉｏｎ″のＸで与えられているような計算式でもよい。【０１１２】  即ち、中継コネクション終端部からのコネクション毎輻輳情報を利用し、パケットロス発生率ｐ、ＲＴＴの指数平均値Ｒ、ＴＣＰのタイムアウト時間の推定値ｔ＿ＲＴＯ（例えば、Ｒの２倍とする）、中継コネクションのあるネットワークのＴＣＰのパケットサイズの平均値をｓ（バイト）（ｓは経験的に知られている値でも良い）、ｂ＝２として、【０１１３】
【数１５】
0004433202.tif 000016
と求め、Ｒ＿ｔｏｔａｌ＝ｍ・α・Ｘ（ｂｉｔ／ｓｅｃ）と決定する。αを１より大きくすれば、１本あたりの送信レートを他のトラヒックに対して高くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に上げることが出来る。逆に、αを１未満にすれば、１本あたりの送信レートを他のトラヒックに対して低くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に下げることが出来る。【０１１４】  このようにして決めたＲ＿ｔｏｔａｌを各中継コネクションへ割り当てる。このレート割り当ては、現在のコネクション数や、アプリケーション情報解析部からの情報に依存して決めても良く、例えば、次のような方法が考えられる。【０１１５】  （送信レート割り当て方法１）
全コネクションに公平にレートを割り当てる。即ち、コネクションがｍ本あれば、Ｒ＿ｔｏｔａｌ／ｍのレートを各コネクションに割り当てる。【０１１６】  （送信レート割り当て方法２）
コネクション識別子のポート番号情報に依存して、決められたルールに従って割り当てる。たとえば、ポート番号毎に優先度を付け、それの優先度に応じてレートを割り当てる。【０１１７】  （送信レート割り当て方法３）
アプリケーション情報解析部からの情報に依存して決定する。例えば、ＨＴＴＰコネクションでデータ転送を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られた、ＨＴＴＰのＣｏｎｔｅｎｔ−ｔｙｐｅフィールドの値に依存して優先度を付けた帯域割り当てを行う。別の例としては、ＨＴＴＰでファイル取得を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られたＨＴＴＰのＣｏｎｔｅｎｔ−ｌｅｎｇｔｈフィールドの情報に依存して、短いサイズのデータを転送しているコネクションにより高い帯域を割り当てる。また別の例として、Ｎｓ本のストリーミングタイプのアプリケーションのコネクションと、Ｎｆ体のＨＴＴＰを使ったファイル転送タイプのアプリケーションを中継している場合を考える。アプリケーション情報解析部から得られた、各ストリーミングのレートがＲＳｉ（ｉ＝１，…，Ｎｓ）とし、アプリケーション情報解析部から得られた、ファイル転送タイプのコネクションのファイルサイズをＦＬｉ（ｉ＝１，…，Ｎｆ）とする。ストリーミングタイプのコネクションについては、公平なレート（Ｒ＿ｔｏｔａｌを現在のコネクション数Ｎｓ＋Ｎｆで割ったもの）より低いレートのものには、そのストリーミングのレートＲＳｉ（ｉ＝１，…，Ｎｓ０）を割り当てる。残ったレート【０１１８】
【数１６】
0004433202.tif 000017
を、まだ割り当てをしていないストリーミングコネクションに優先的に割り当て、さらに残ったレートを、ファイル転送タイプのコネクションのうちファイルサイズが短いもの順に高いレートを割り当てる。【０１１９】  〔動作の説明〕
次に、本発明の第２の実施の形態の動作について説明する。【０１２０】  図６は、本発明の第２の実施の形態の、トランスポート層中継装置Ｅ００２を用いたネットワーク構成の例である。本発明の第１の実施の形態の説明に用いたネットワーク構成の例の図２と比べて、トランスポート層中継装置Ｅ００１が、本発明の第２の実施の形態の、トランスポート層中継装置Ｅ００２に置き換わっている点以外は同じ構成である。【０１２１】  ネットワークＮ１内の任意の端末と、ネットワークＮ２内の任意の端末の間の通信を、トランスポート層中継装置ＴＲ１、ＴＲ２を使って、中継を開始、終了する動作は、図３を用いて行った、本発明の第１の実施の形態の動作の説明と同じであるため省略する。【０１２２】  ネットワークＮ２内の端末からネットワークＮ１内の端末へ、データを転送している時の、トランスポート層中継装置の送信レート制御部の動作について述べる。図７が送信レート制御部の動作のフローチャートである。送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。【０１２３】  イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、もし、登録コネクション数が１であれば（Ｆ１３０）、時間Ｔ後に切れるタイマを設定する（Ｆ１４０）。イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがアプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、登録済みの中継部番号に対応する中継部の装置間コネクション終端部からコネクション毎輻輳情報を取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、ネットワーク状況推定部から、ネットワーク状況を取得し（Ｆ２２５）、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部２００３の説明の中で述べた、総送信レート決定方法Ａ２、Ｂ２、Ｃ２、Ｄ２、Ｅ２、Ｆ２等を採用することができる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。この決定の方法としては、送信レート制御部２００３の説明の中で述べた、送信レート割り当て方法１、２、３等を採用することができる。ここで決定した各コネクションの送信レートを、対応する、装置間コネクション終端部へ通知する（Ｆ２５０）。最後に、タイマをＴにセットする（Ｆ２６０）。【０１２４】  〔発明の第２の実施の形態の効果〕
発明の第２の実施の形態で得られる、発明の第１の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、所望の実効レートを確保し、そのコネクション集合の中で、その帯域を再分配することを、トランスポート層中継装置をネットワークＮ１およびネットワークＮ２に一つずつ配置すれば実現出来るため、第１の従来方法がネットワークＮ３内の多数のルータを、帯域制御可能なルータに置き換えるのと比べ、装置コスト、および、置き換える手間のコストを低くする事が出来ることである。これは、発明の手法が、中継コネクションのトラヒックと他のトラヒック（クロストラヒック）が同じボトルネックを共有している場合、クロストラヒックを運ぶトランスポート層プロトコル（たとえばＴＣＰ）が輻輳制御を行っていれば、中継コネクションの総送信レートに応じて、送信レートを調整する性質を利用し、総送信レートに応じたある実効レートを確保しているためである。また、総送信レートを、中継しているコネクションの中で分割して利用することで、中継しているあるコネクションの送信レートを下げても、そのレートをクロストラヒックに奪われる事なく、中継している別のコネクションの送信レートとして利用する事が可能となり、実効レートの再配分が可能となっている。【０１２５】  発明の第２の実施の形態で得られる、発明の第２の効果は、送信レート制御部において、総送信レート決定方法Ａ２〜Ｅ２の方法を用いることにより、第２、第３の従来技術では不可能であった、トランスポート層コネクション集合に対して、所望の実効レートを確保する事を可能にし、かつ、この送信レート決定方法に関して、ネットワーク状況推定部の情報も併用するため、高い精度で所望の実効レートを確保する事が可能になることにある。【０１２６】  発明の第２の実施の形態で得られる、発明の第３の効果は、送信レート制御部において、総送信レート決定方法Ｆ２の方法を用いることにより、第２、第３の従来技術では不可能であった、端末間の複数のコネクションに対して、他のトラヒックに対して優先度をつけた帯域を割り当てることを可能にし、かつ、この送信レート決定方法に関して、ネットワーク状況推定部の情報も併用するため、高い精度で優先度をつけた実効レートを確保する事が可能になることにある。【０１２７】  発明の第２の実施の形態で得られる、発明の第４の効果は、送信レート割り当て方法３によって、複数の端末間のあるトランスポート層コネクション集合に対し、ある実効レートを、そのコネクション集合の中で、コネクションを流れるアプリケーションの情報に依存して再配分する事が可能となる。【０１２８】  〔本発明の第３の実施の形態〕
〔本発明の第３の実施の形態の構成の説明〕
次に本発明の第３の実施の形態の構成について図面を参照して詳細に説明する。【０１２９】  図８は、本発明の第３の実施の形態の、トランスポート層中継装置Ｅ００３の内部ブロック図である。トランスポート層中継装置Ｅ００３は、内部に、中継制御部３００１と、中継部３００２−１〜３００２−ｎと、送信レート制御部３００３と、装置間コネクション終端部３００４と、ＭＵＸ−ＤＥＭＵＸ部３００５とを含む。トランスポート層中継装置Ｅ００３は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部３００１、中継部３００２−１〜３００２−ｎ、送信レート制御部３００３、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部３００１、中継部３００２−１〜３００２−ｎ、送信レート制御部３００３、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現する。以下、それぞれの構成要素について説明する。【０１３０】  ・中継制御部３００１：
中継制御部３００１は、端末のトランスポート層のコネクション終端部からのコネクション開設要求、対向するトランスポート層中継装置Ｅ００３からの中継開始要求、中継部からのコネクション切断通知、対向するトランスポート層中継装置Ｅ００３からの中継終了要求を受け取る。それぞれを受け取った場合の動作を述べる。【０１３１】  （端末からのコネクション開設要求を受け取った場合）
端末からのコネクション開設要求は、コネクション開設の要求元端末のＩＰアドレスとポート番号、コネクション開設要求先端末のＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子、の５つの情報の組（これをコネクション識別子と呼ぶ）を含む。コネクション開設要求を受け取った中継制御部は、対向するトランスポート層中継装置Ｅ００３の中継制御部へ、コネクション開設要求の情報を含んだ中継開始要求を送る。この時、相手方の中継制御部と使われていない中継部（３００２−１〜３００２−ｎ）の番号（１〜ｎ）を伝え合い、両方で使われていない中継部番号を決定する。次に、中継制御部は、送信レート制御部に、決定した中継部の識別番号（１〜ｎ）、および、コネクションのコネクション識別子を登録する。そして、ＭＵＸ−ＤＥＭＵＸ部に、決定した中継部番号を登録する。【０１３２】  さらに、中継制御部は、決定した中継部番号の中継部（３００２−１〜３００２−ｎ）に対して、端末からのコネクション開設を行うように指示する。また装置間コネクション終端部に指示して、もしも、対向するトランスポート層中継装置との間に中継のためのトランスポート層コネクション（中継コネクション）が張られていなければ、コネクションを開設するように指示する。【０１３３】  （対向するトランスポート層中継装置Ｅ００３からの中継開始要求を受け取った場合）
対向するトランスポート層中継装置Ｅ００３からの中継開始要求を受け取ると、相手方の中継制御部と使われていない中継部（３００２−１〜３００２−ｎ）の番号（１〜ｎ）を伝え合い、両方で使われていない中継部番号を決定する。次に中継制御部は、送信レート制御部に、決定した中継部の識別番号（１〜ｎ）、および、コネクションのコネクション識別子を登録する。そして、ＭＵＸ−ＤＥＭＵＸ部に、決定した中継部番号を登録する。さらに、中継制御部は、決定した中継部番号の中継部（３００２−１〜３００２−ｎ）に対して、中継開始要求に含まれているコネクション開設要求の情報に基づいて、コネクション開設要求先端末とのコネクションの開設を行わせる。【０１３４】  （中継部からのコネクション切断通知を受け取った場合）
対向するトランスポート層中継装置Ｅ００３の中継制御部へ、コネクション切断通知を出した中継部の番号を含む、中継終了要求を出す。また、ＭＵＸ−ＤＥＭＵＸ部にコネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する。さらに、送信レート制御部に、該中継部の中継部番号を伝え、登録を削除する。【０１３５】  （対向するトランスポート層中継装置Ｅ００３からの中継終了要求を受け取った場合）
中継終了要求に含まれている中継部番号の中継部に対して、端末とのコネクション切断を指示する。また、ＭＵＸ−ＤＥＭＵＸ部にコネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する。また、送信レート制御部に、該中継部の中継部番号を伝え、登録を削除する。もし、この時使われている中継部がなくなれば、装置間コネクション終端部に指示して、コネクションを切断するように指示する。【０１３６】  中継制御部３００１は、中継部３００２−１〜３００２−ｎのそれぞれが現在使用中かどうかを示す空管理表を持っており、端末からのコネクション開設要求、あるいは、対向するトランスポート層中継装置Ｅ００３からの中継開始要求中継要求を受けて、中継部を割り当てた時に空管理表の該当中継部を″使用中″とし、中継部からのコネクション切断通知、対向するトランスポート層中継装置Ｅ００３からの中継終了要求を受け取った時に、″非使用中″と識別する情報を書くことによって、どの中継部が現在使用中であるかを管理しているものとする。【０１３７】  ・中継部３００２−１〜３００２−ｎ：
内部に端末側コネクション終端部、アプリケーション情報解析部を含む。中継制御部からの指示に従って、端末側コネクション終端部に対して、端末との間に、トランスポート層コネクションを開設、あるいは、コネクション切断を行わせる。
・端末側コネクション終端部：
トランスポート層コネクションを張った端末との通信に用いる送受信バッファを持ち、トランスポート層コネクションの終端処理を行う。このトランスポート層コネクションの終端処理は、使われるトランスポート層プロトコルに従うものとするが、少なくとも、トランスポート層コネクションの開設、維持、終了の機能、および、フロー制御、輻輳制御機能を持っているものとする。中継部の指示に従い、端末とのコネクション開設・切断を行う。また、端末からコネクション切断要求があれば、コネクション切断後、中継部へコネクション切断通知を送る。【０１３８】  端末とコネクションが開設されている間は、端末に対して送信バッファ中のデータを、トランスポート層プロトコルの規約に従って端末へ送ると共に、端末からのデータをトランスポート層プロトコルの規約に従って受け取り、受信バッファへと書き込む。また、接続しているアプリケーション情報解析部からデータを受け取り、送信バッファへと書き込む。受信バッファからデータを読み出し、接続しているアプリケーション情報解析部へ受け渡す。【０１３９】  ・アプリケーション情報解析部：
端末側コネクション終端部と、ＭＵＸ−ＤＥＭＵＸ部３００５との間で、トランスポート層のデータの転送を行う。すなわち、端末側コネクション終端部の受信バッファからトランスポート層データを読み出し、ＭＵＸ−ＤＥＭＵＸ部３００５へ受け渡す。また、ＭＵＸ−ＤＥＭＵＸ部３００５からデータを受け取り、端末側コネクション終端部の送信バッファへと書き込む。これらの、トランスポート層データ転送時に、アプリケーション情報を取得し、送信レート制御部３００３へと通知する。アプリケーション情報とは、たとえば、トランスポート層プロトコル上にＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を使ったデータ送受信が行われている場合、ＨＴＴＰヘッダ中で、どのようなデータ種別が送られているかを示すＣｏｎｔｅｘｔ−ｔｙｐｅタグの中身や、送られるデータサイズを示すＣｏｎｔｅｘｔ−ｌｅｎｇｔｈタグの値である。別の例としては、ＲＴＳＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ）のコネクションで指定されるストリーミングのレートや、ストリーミングのコネクション識別子などである。また別な例としては、ＦＴＰの制御コネクション中で指定される、ＦＴＰのデータコネクションのコネクション識別子である。【０１４０】  ・ＭＵＸ−ＤＥＭＵＸ部３００５：
中継制御部３００１から現在使われている中継部の番号の登録・削除の指示に従い、現在使われている中継部の番号を記憶している。現在使われている中継部について、アプケーション情報解析部からデータを受け取り、ある一定サイズの大きさの断片に分割して（サイズに満たない場合にはパディングして）、中継部番号のついたタグを付けて、装置間コネクション終端部３００４の送信バッファへと書き込む。この際、現在使われている中継部のどれから、どれくらいのレートでデータを読み出すかは、送信レート制御部の指示に従う。【０１４１】  また、装置間コネクション終端部３００４の受信バッファから一定サイズ毎にデータの断片を読み出し、その断片についているタグが示す中継部番号の中継部のアプケーション情報解析部へ、タグを外して断片を受け渡す。【０１４２】  ・装置間コネクション終端部３００４：
トランスポート層コネクションを張った相手との通信に用いる送受信バッファを持ち、トランスポート層コネクションの終端処理を行う。また、中継制御部の指示に従い、対向するトランスポート層中継装置Ｅ００３との間に中継のためのトランスポート層コネクションを張る。【０１４３】  端末側コネクション終端部と異なるのは、トランスポート層コネクションの終端処理に関して、トランスポート層コネクションの開設、維持、終了の機能を持つが、フロー制御、および、輻輳制御のための送信レートの計算は、送信レート制御部が行い、送信レート制御部の指示に従ったレートで送信する点が異なる。また、通信相手からのフィードバック情報を利用して求めた、現在の通信相手との間のコネクション毎輻輳情報（後述）を送信レート制御部に通知する点が異なる。【０１４４】  また、このトランスポート層コネクションには信頼性あるトランスポート層プロトコルが使われるものとし、再送制御のために、受信側から受信出来たデータのシーケンス番号（ＡＣＫ番号）を含む、ＡＣＫパケットを受け取るものとする。ＡＣＫ番号は、これまでにロスなく連続して受け取っている最後のシーケンス番号＋１の値（ＲＲ：Ｒｅｃｅｉｖｅ  Ｒｅａｄｙ）だけでも良いし、ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ）のように、ＲＲとそれ以降で受け取れているシーケンス番号のブロックを列挙したものであってもよい。さらに、ＡＣＫパケットには、受信側の受信バッファの残量などの、フロー制御に必要な情報もふくまれているとする。【０１４５】  上記のような、装置間コネクション終端部は、たとえば、ＴＣＰ  Ｒｅｎｏ、ＴＣＰ  ＮｅｗＲｅｎｏ、あるいは、ＴＣＰ  ＳＡＣＫなどのスライディングウィンドウ型の輻輳制御・フロー制御を行うトランスポート層プロトコルのコネクション終端部を一部変更することで実現出来る。具体的には、これらのトランスポートプロトコルでは、送信相手の受信バッファの残量と、輻輳ウィンドウの値の小さい方を、最終的な送信ウィンドウの値として求めているが、この輻輳ウィンドウ（ｃｗｎｄと呼ぶ）を変更している部分を次のように変更する。まず、目標輻輳ウィンドウ値（ＴＷと呼ぶ）を決め（決め方は後述）、（ａ）コネクション開始時、コネクションアイドル時（パケットを１ＲＴＴ以上の時間送っていない時）、あるいは、ＴＣＰのタイムアウト発生時：ｃｗｎｄ＝１とする（ｂ）ＡＣＫ受信時には、ｃｗｎｄがＴＷ／２以下ならｃｗｎｄ＝ｃｗｎｄ＋１とし、そうでなければ、ｃｗｎｄ＝ｃｗｎｄ＋１．０／ｃｗｎｄとするというように変更する。【０１４６】  また、目標ウィンドウ値が変化した場合、ｃｗｎｄをその目標ウィンドウ値で上書きしてもよい。目標ウィンドウ値の決め方としては、送信レート制御部が指示するレートを、現在のＲＴＴ（往復遅延）で割った値としてもよい。あるいは、装置間コネクション終端部が終端しているＴＣＰコネクションが経由するボトルネックリンクの物理帯域Ｂ（ｂｉｔ／秒）と、ＴＣＰが観測したＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の最大値ＲＴＴ＿ｍａｘ（秒）を用いて、Ｗ＿ｍａｘ＝ＲＴＴ＿ｍａｘ・Ｂ／（８・ＭＳＳ）（ＭＳＳはＴＣＰの最大セグメントサイズ）とし、送信レート制御部が指示��るレート（Ｒ（ｂｉｔ／秒）とする）から、Ｗ＿ｍａｘ・Ｒ／Ｂの値を求めてウィンドウの値に上書きしてもよい。あるいは装置間コネクション終端部が終端しているＴＣＰコネクションが経由するボトルネックリンクを流れるクロストラヒックのＴＣＰフローの本数をＮとして、（４・Ｎ−１）・Ｗ＿ｍａｘ・Ｒ／（４・Ｎ・Ｂ−Ｒ）の値をウィンドウの値に上書きしてもよい。【０１４７】  また、ＴＣＰの再送制御に関して、通常のＴＣＰプロトコルでは、あるパケットを送ってからタイムアウト時間までＡＣＫがこないと再送するという動作に加え、高速再転送と呼ばれる、重複ＡＣＫがある閾値（一般的には３という値，高速再転送閾値と呼ぶ）発生するとそのＡＣＫ番号の次のシーケンス番号のパケットを１回再送するという制御を行っている。本実施の形態の装置間コネクション終端部では、この動作に加え、次のような「再々転送」を行っても良い。再々転送は、高速再転送のきっかけとなった重複ＡＣＫ番号について、高速再転送後にも引き続いて届く重複ＡＣＫの数を数え、これがある閾値（再々転送閾値と呼ぶ）を超えるとふたたび再送するという動作である、再々転送は繰り返し行っても良い。再々転送閾値は、高速再転送を行った時に、これまでに送ったシーケンス番号の最大値から、重複ＡＣＫ番号と高速再転送閾値の和を引いた値としてもよい。【０１４８】  コネクションが開設されている間は、トランスポート層プロトコルの規約に従って、コネクションを開設した相手方の装置間コネクション終端部とのトランスポート層コネクションを維持し、送信バッファ中のデータを、（トランスポート層プロトコルの規約に従って）相手方の装置間コネクション終端部へ送ると共に、コネクションを開設した相手方の装置間コネクション終端部からのデータを（トランスポート層プロトコルの規約に従って）受け取り、受信バッファへと書き込む。また、接続しているアプリケーション情報解析部からデータを受け取り、送信バッファへと書き込む。受信バッファからデータを読み出し、接続しているアプリケーション情報解析部へ受け渡す。ただし、送信バッファ中のデータを相手方の装置間コネクション終端部へ送る際のレートは、送信レート制御部３００３から指示されたレートに従うものとする。また、相手方の装置間コネクション終端部からデータを受け取る際に得られるＡＣＫパケットから求まるコネクション毎輻輳情報を送信レート制御部３００３へ受け渡すものとする。【０１４９】  コネクション毎輻輳情報について述べる。一般に、トランスポート層プロトコルでは、コネクションを張った通信相手からのフィードバック情報として、相手の現在の受信能力（受信バッファの空き量など）と受信したデータのシーケンス番号を含むＡＣＫパケットを受け取る。ＡＣＫパケットから、現在のパケットの往復遅延（ＲＴＴ：Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）を計測したり、パケットロスと推測出来るイベントを検知することが出来る。ＲＴＴは例えば次の様に計算出来る。パケット送信時に、そのパケットに含まれるデータのシーケンス番号と、送信時刻を記憶しておき、そのシーケンス番号を受信した旨を知らせるＡＣＫパケット受信時に、受信時刻と記憶していた送信時刻との差を���めることで得る事が出来る。パケットロスについては、ＴＣＰのように、ＡＣＫのシーケンス番号が、これまでにロスなく連続して受信出来ている最後のデータのシーケンス番号を返すものであるならば、その重複ＡＣＫ受信時パケットロスの可能性がある事を検知出来る。また、ＴＣＰのＦａｓｔ  Ｒｅｔｒａｎｓｍｉｔのような、重複ＡＣＫ受信時に、Ｇｏ−ｂａｃｋ−Ｎではない、高速再送を行う再送アルゴリズムの場合、ｐａｒｔｉａｌ  ＡＣＫ受信時にも、パケットロスの可能性がある事を検知出来る。これらの、ＲＴＴやパケットロスの可能性のあるイベントを含む情報を、コネクション毎輻輳情報と呼ぶ。【０１５０】  ・送信レート制御部３００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを中継コネクションの送信レートとする。総送信レートＲ＿ｔｏｔａｌの決め方としては、現在中継中のコネクション数、装置間コネクション終端部からのコネクション毎輻輳情報に依存して決定しても良く、例えば次のような方法がある。【０１５１】  （総送信レート決定方法Ａ３）
所望の実効レートＲ＿ｔａｒｇｅｔに対して、あらかじめ決められた倍率値α（α＞１）を用いて、設定値をＲ＿ｔｏｔａｌ＝α・Ｒ＿ｔａｒｇｅｔとする。【０１５２】  （総送信レート決定方法Ｂ３）
所望の実効レートＲ＿ｔａｒｇｅｔが現在中継中のコネクション数に見合ったものになるように、Ｒ＿ｔｏｔａｌを現在中継中のコネクション数に依存して決める。１コネクション当たりＲ＿ｏのレートを割り当てると決めておき、中継制御部によって登録されている現在のコネクション数ｍを元に、Ｒ＿ｔｏｔａｌ＝α＊Ｒ＿ｏ＊ｍと決定する。αは、あらかじめ決められた倍率値α（α＞１）である。【０１５３】  （総送信レート決定方法Ｃ３）
所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、装置間コネクション終端部からのコネクション毎輻輳情報を利用してＲ＿ｔｏｔａｌを決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ個のパケットを送り、Ｌ回のパケットロスを検知したとすると、パケットロス率は、Ｐ＝Ｌ／Ｃである。同じ輻輳状況が続くと仮定し、目標レート（Ｒ＿ｔａｒｇｅｔ）にするために、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ）とする。ただし、極端な輻輳を避けるため、あるデータロス率の閾値Ｐ＿０に対して、Ｐ＞Ｐ＿０の場合には、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ＿０）とする。【０１５４】  （総送信レート決定方法Ｄ３）
出来るだけ大きな実効レートが得られるように、Ｒ＿ｔｏｔａｌを各装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ個のパケットを送り、Ｌ回のパケットロスを検知したとすると、パケットロス率は、Ｐ＝Ｌ／Ｃである。過去の送信レートＲ＿ｔｏａｔｌとその時のデータロス率Ｐから、送信レートと実際に受信側に届いたレート（＝Ｒ＿ｔｏｔａｌ＊（１−Ｐ））の関係を求めた表を作る。この表を作るデータは、順次更新してゆくとする。【０１５５】  実際に受信側に届いたレートが最大になる送信レートの値をＲ＿ｔｏｔａｌとする。ただし、過去の送信レートＲ＿ｔｏｔａｌがまだ十分に蓄積されていなければ、あらかじめ設定されているＲ＿ｔｏｔａｌを使う。【０１５６】  （総送信レート決定方法Ｅ３）
現在中継しているアプリケーションに見合った所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、Ｒ＿ｔｏｔａｌをアプリケーション情報解析部からの情報も利用して決める。例えば、ストリーミングコネクションのみを中継している時、アプリケーション情報解析部からストリーミングのレート情報を得て、それらの合計値をＲ＿ｔａｒｇｅｔとし、送信レート決定方法Ｃ３に従ってＲ＿ｔｏｔａｌを求める。【０１５７】  （総送信レート決定方法Ｆ３）
ボトルネックを共有する他のトラヒックに対する優先度付けをした、実効レートが得られるように、Ｒ＿ｔｏｔａｌを、現在のコネクション数ｍ、および、装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、コネクション毎輻輳情報から得られる、中継コネクションが通るネットワークのパケットロス率Ｐ、ＲＴＴを使ってＴＣＰの１本あたりの実効レートトを推定し、そのα倍のレートをｍ倍してもよい。ＴＣＰの１本あたりの実効レートの推定方法としては、Ｍ．Ｈａｎｄｌｅｙ，Ｓ．Ｆｌｏｙｄ，Ｊ．Ｐａｄｈｙｅ，Ｊ．Ｗｉｄｍｅｒ，″ＴＣＰ  Ｆｒｉｅｎｄｌｙ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ（ＴＦＲＣ）：Ｐｒｏｔｏｃｏｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，″Ｉｎｔｅｒｎｅｔ  Ｓｏｃｉｅｔｙ，ＲＦＣ  ３４４８，Ｊａｎｕａｒｙ  ２００３．の３．１節の″ｔｈｒｏｕｇｈｐｕｔ  ｅｑｕａｔｉｏｎ″のＸで与えられているような計算式でもよい。即ち、中継コネクション終端部からのコネクション毎輻輳情報を利用し、パケットロス発生率ｐ（ｐの計算の際には、ＲＴＴ以内のパケットロスも１つのロスイベントと考えて計算する）、ＲＴＴの指数平均値Ｒ、ＴＣＰのタイムアウト時間の推定値ｔ＿ＲＴＯ（例えば、Ｒの２倍とする）、中継コネクションのあるネットワークのＴＣＰのパケットサイズの平均値をｓ（バイト）（ｓは経験的に知られている値でも良い）、ｂ＝２として、【０１５８】
【数１７】
0004433202.tif 000018
と求め、Ｒ＿ｔｏｔａｌ＝ｍ・α・Ｘ（ｂｉｔ／ｓｅｃ）と決定する。αを１より大きくすれば、１本あたりの送信レートを他のトラヒックに対して高くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に上げることが出来る。逆に、αを１未満にすれば、１本あたりの送信レートを他のトラヒックに対して低くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に下げることが出来る。【０１５９】  このようにして決めたＲ＿ｔｏｔａｌを各中継コネクションへのレート割り当ては、現在のコネクション数や、アプリケーション情報解析部からの情報に依存して決めても良く、例えば、次のような方法が考えられる。【０１６０】  （送信レート割り当て方法１）
全コネクションに公平にレートを割り当てる。即ち、コネクションがｍ本あれば、Ｒ＿ｔｏｔａｌ／ｍのレートを各コネクションに割り当てる。【０１６１】  （送信レート割り当て方法２）
コネクション識別子のポート番号情報に依存して、決められたルールに従って割り当てる。たとえば、ポート番号毎に優先度を付け、それの優先度に応じてレートを割り当てる。【０１６２】  （送信レート割り当て方法３）
アプリケーション情報解析部からの情報に依存して決定する。例えば、ＨＴＴＰコネクションでデータ転送を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られた、ＨＴＴＰのＣｏｎｔｅｎｔ−ｔｙｐｅフィールドの値に依存して優先度を付けた帯域割り当てを行う。別の例としては、ＨＴＴＰでファイル取得を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られたＨＴＴＰのＣｏｎｔｅｎｔ−ｌｅｎｇｔｈフィールドの情報に依存して、短いサイズのデータを転送しているコネクションにより高い帯域を割り当てる。また別の例として、Ｎｓ本のストリーミングタイプのアプリケーションのコネクションと、Ｎｆ本のＨＴＴＰを使ったファイル転送タイプのアプリケーションを中継している場合を考える。アプリケーション情報解析部から得られた、各ストリーミングのレートがＲＳｉ（ｉ＝１，…，Ｎｓ）とし、アプリケーション情報解析部から得られた、ファイル転送タイプのコネクションのファイルサイズをＦＬｉ（ｉ＝１，…，Ｎｆ）とする。ストリーミングタイプのコネクションについては、公平なレート（Ｒ＿ｔｏｔａｌを現在のコネクション数Ｎｓ＋Ｎｆで割ったもの）より低いレートのものには、そのストリーミングのレートＲＳｉ（ｉ＝１，…，Ｎｓ０）を割り当てる。残ったレート【０１６３】
【数１８】
0004433202.tif 000019
を、まだ割り当てをしていないストリーミングコネクションに優先的に割り当て、さらに残ったレートを、ファイル転送タイプのコネクションのうちファイルサイズが短いもの順に高いレートを割り当てる。【０１６４】  〔動作の説明〕
次に本発明の第３の実施の形態の動作について図面を参照して詳細に説明する。【０１６５】  図９は、本発明の第３の実施の形態の、トランスポート層中継装置Ｅ００３を用いた通信網の構成例である。ネットワークＮ１の中にはｓ台の端末Ｈ１−１〜Ｈ１−ｓがあり、ルータＲ１を介してネットワークＮ３と接続されている。ネットワークＮ２の中には、ｒ台の端末Ｈ２−１〜Ｈ２−ｒが存在し、ルータＲ２を介してネットワークＮ３と接続されている。Ｎ１内の端末Ｈ１−１〜Ｈ１−ｓとＮ２内の端末Ｈ２−１〜Ｈ２−ｒが通信するには、ネットワークＮ３を経由するものとする。また、本発明の第３の実施の形態の、トランスポート層中継装置Ｅ００３が、ネットワークＮ１、およびＮ２に配置されており、それぞれをＴＲ１、ＴＲ２と呼ぶ事にする。ルータＲ１は、端末Ｈ１−１〜Ｈ１−ｓ、あるいは、ネットワークＮ３からのパケットは全てトランスポート層中継装置ＴＲ１へ転送し、トランスポート層中継装置ＴＲ１からのパケットについては、通常のルータと同様に転送するものとする。同様に、ルータＲ２は、端末Ｈ２−１〜Ｈ２−ｓ、あるいは、ネットワークＮ２からのパケットは全てトランスポート層中継装置ＴＲ２へ転送し、トランスポート層中継装置ＴＲ２からのパケットについては、通常のルータと同様に転送するものとする。【０１６６】  以上の構成の中で、トランスポート層中継装置ＴＲ１とルータＲ１、および、トランスポート層中継装置ＴＲ２とルータＲ２は同じ装置内にあって、上記と同様の転送を行うようになっていても良い。【０１６７】  図１０は、図９のネットワークＮ１内の端末Ｈ１−ｋが、ネットワークＮ２内の端末Ｈ２−ｊとの間で通信を行う場合の、ネットワークＮ１、および、ネットワークＮ２に配置された、第３の実施の形態のトランスポート層中継装置Ｅ００３（図９、図１０の中のＴＲ１、ＴＲ２）の動作を示している。端末Ｈ１−ｋは、端末Ｈ２−ｊと通信を行おうとして、コネクション開設要求のパケットを端末Ｈ２−ｊへ向かって送信するが、ルータＲ１がそのパケットをトランスポート層中継装置ＴＲ１へと送り、これをトランスポート層中継装置ＴＲ１の中継制御部が受け取る（図１０のＴ１０００）。コネクション開設要求を受け取った、コネクション開設要求を受け取った中継制御部は、対向するトランスポート層中継装置Ｒ２の中継制御部へ、コネクション開設要求の情報を含んだ中継開始要求を送る。この時、中継制御部で使われていない中継部（３００２−１〜３００２−ｎ）の番号（１〜ｎ）を伝え合い、両方で使われていない中継部番号を決定する（Ｔ１０１０）。【０１６８】  次に、送信レート制御部に、決定した中継部の識別番号（１〜ｎ）、および、コネクションのコネクション識別子を登録する（Ｔ１０２０）。そして、ＭＵＸ−ＤＥＭＵＸ部に、決定した中継部番号を登録する（Ｔ１０３０）。次に中継制御部は、決定した中継部番号の中継部（３００２−１〜３００２−ｎ）に対して、端末からのコネクション開設を行うように指示する（Ｔ１０４０）。また、Ｔ１０４０でコネクション開設を指示された中継部は、端末側コネクション終端部に端末とのコネクションを開設させる（Ｔ１０５０、Ｔ１０６０）。【０１６９���  また装置間コネクション終端部に指示して、もし、対向するトランスポート層中継装置との間に中継のためのトランスポート層コネクション（中継コネクション）が張られていなければ、コネクションを開設するように指示する（Ｔ１０７０、Ｔ１０８０）。【０１７０】  対向するトランスポート層中継装置Ｒ２では、Ｒ１からの中継開始要求を受け取ると、中継制御部で使われていない中継部（３００２−１〜３００２−ｎ）の番号（１〜ｎ）を伝え合い、両方で使われていない中継部番号を決定する（Ｔ１０１０）。次に、送信レート制御部に、決定した中継部の識別番号（１〜ｎ）、および、コネクションのコネクション識別子を登録する（Ｔ１０９０）。そして、ＭＵＸ−ＤＥＭＵＸ部に、決定した中継部番号を登録する（Ｔ１１００）。次に中継制御部は、決定した中継部番号の中継部（３００２−１〜３００２−ｎ）に対して、中継開始要求に含まれているコネクション開設要求の情報に基づいて、コネクション開設要求先端末とのコネクションの開設を行わせる（Ｔ１１１０、Ｔ１１２０、Ｔ１１３０）。【０１７１】  端末Ｈ１−ｋは、ＨＴＴＰのＧＥＴメソッドを使って、Ｈ２−ｊからファイルを取得するとすれば、ＴＲ１とのコネクション開設（Ｔ１０６０）の後、ＨＴＴＰのＧＥＴリクエストを送信する（Ｔ１１４０）。このリクエストは、トランスポート層中継装置ＴＲ１の端末側コネクション終端部が受け取り、アプリケーション情報解析部へ受け渡される（Ｔ１１５０）。ＭＵＸ−ＤＥＭＵＸ部は、レート制御部の指示に従ったレートで、アプリケーション情報解析部からデータを受け取り（Ｔ１１６０）、ある一定サイズの大きさの断片に分割して（サイズに満たない場合にはパディングして）、中継部番号のついたタグを付けて、装置間コネクション終端部３００４の送信バッファへと書き込む（Ｔ１１７０）。装置間コネクション終端部は、送信バッファ内のデータを、送信レート制御部が指示するレートで送信し、中継コネクションを使って、トランスポート層中継装置ＴＲ２の端末間コネクション終端部へと受け渡される（Ｔ１１８０）。トランスポート層中継装置ＴＲ２のＭＵＸ−ＤＥＭＵＸ部は、端末間コネクション終端部の受信バッファから一定サイズ毎にデータの断片を読み出し（Ｔ１１９０）、その断片についているタグが示す中継部番号の中継部のアプケーション情報解析部へ、タグを外して断片を受け渡す（Ｔ１２００）。このデータは、アプリケーション情報解析部でを経由して、端末側コネクション終端部へと渡り（Ｔ１２１０）、最終的に、端末Ｈ２−ｊへと届く（Ｔ１２３０）。端末Ｈ２−ｊは、このリクエストに応答してデータを端末Ｈ１−ｋへ送り返す（Ｔ１２４０）。この応答のデータは、再び、トランスポート層中継装置ＴＲ２、および、ＴＲ１によって中継されて、端末Ｈ１−ｋへと送り届けられる（Ｔ１２５０〜Ｔ１３２０）。この時、ＴＲ２のアプリケーション情報解析部は、この応答内のアプリケーション情報、例えば、ＨＴＴＰのＣｏｎｔｅｎｔ−ｌｅｎｇｔｈの情報を、送信レート制御部へ受け渡す。この部分の動作については、詳細を後述する。通信が終わると、どちらかの端末、例えば、端末Ｈ２−ｊがコネクション切断要求を送り（Ｔ���３４０）、これを、トランスポート層中継装置ＴＲ２の端末側コネクション終端部が受け取り、コネクションを切断する（Ｔ１３５０）。端末側コネクション終端部は、中継部に対して、コネクション切断通知を送る（Ｔ１３６０）。これを受けた中継部は、中継制御部へコネクション切断通知を送る（Ｔ１３６５）。これを受け取った中継制御部は、対向するトランスポート層中継装置ＴＲ１の中継制御部へ、コネクション切断通知を出した中継部の番号を含む、中継終了要求を出す（Ｔ１３７０）。また、ＭＵＸ−ＤＥＭＵＸ部に対してコネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する（Ｔ１３９０）。さらに、送信レート制御部に、該中継部の中継部番号を伝え、登録を削除する（Ｔ１４００）。中継終了要求を受け取ったトランスポート層中継装置ＴＲ１の中継制御部は、中継終了要求に含まれている中継部番号の中継部に対して、端末とのコネクション切断を指示する（Ｔ１４３０）。これを受けた、中継部は、端末側コネクション終端部へ指示して、現在接続中の端末とのコネクションを切断させる（Ｔ１４４０、１４５０）。また、中継制御部は、ＭＵＸ−ＤＥＭＵＸ部にコネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する（Ｔ１４６０）。さらに、中継制御部は送信レート制御部に、該中継部の中継部番号を伝え、登録を削除する（Ｔ１４７０）。【０１７２】  もし、この時使われている中継部がなくなれば、装置間コネクション終端部に指示して、コネクションを切断するように指示し、コネクションを切断させる（Ｔ１４８０、Ｔ１４９０）。【０１７３】  以上のような動作により、ネットワークＮ１内の任意の端末と、ネットワークＮ２内の任意の端末の間の通信を、本発明の第３の実施の形態のトランスポート層中継装置ＴＲ１、ＴＲ２を使って、中継させる事が出来る。【０１７４】  上記の動作の中で図１０のＴ１２４０〜Ｔ１３２０に示したような、ネットワークＮ２内の端末からネットワークＮ１内の端末へ、データを転送している時の、トランスポート層中継装置の送信レート制御部の動作について詳しく述べる。図１１に送信レート制御部の動作のフローチャートを示す。送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、もし、登録コネクション数が１であれば（Ｆ１３０）、時間Ｔ後に切れるタイマを設定する（Ｆ１４０）。イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、���置間コネクション終端部からコネクション毎輻輳情報を取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部３００３の説明の中で述べた、総送信レート決定方法Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、Ｆ３等を採用することができる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。この決定の方法としては、送信レート制御部３００３の説明の中で述べた、送信レート割り当て方法１、２、３等を採用することができる。次に、総送信レートＲ＿ｔｏｔａｌを装置間コネクション終端部へ通知する（Ｆ２５０）。さらに、Ｆ２４０で決定した各コネクションの送信レートを、ＭＵＸ−ＤＥＭＵＸ部へ通知する（Ｆ２５５）。最後に、タイマをＴにセットする（Ｆ２６０）。【０１７５】  なお、図８に示したトランスポート層中継装置Ｅ００３は、予め決められた１個の対向するトランスポート層中継装置との間にしか中継コネクションを開設できないが、複数の対向するトランスポート層中継装置との間に中継コネクションを開設できるようにするためには、次のようにすれば良い。【０１７６】  トランスポート層中継装置Ｅ００３内に、中継制御部３００１を設けると共に、対向する複数のトランスポート層中継装置それぞれに対して、中継部３００２−１〜３００２−ｎ、送信レート制御部３００３、装置間コネクション終端部３００４およびＭＵＸ−ＤＥＭＵＸ部３００５の組を設ける。【０１７７】  中継制御部３００１は、コネクション開設要求を受け取ると、それに含まれているコネクション開設要求先端末のＩＰアドレスと対応表の内容とに基づいて、中継コネクションを開設する相手方のトランスポート層中継装置を決定し、この決定した相手方のトランスポート層中継装置へ中継開始要求を送る。このとき、上記決定した相手方のトランスポート層中継装置に対応する組に含まれる、未使用の中継部の中継部番号を伝え合い、今回使用する中継部の中継部番号を決定する。次に、中継制御部３００１は、上記組に属する送信レート制御部３００３に、決定した中継部の識別番号および、コネクションのコネクション識別子を登録する。そして、上記組に属するＭＵＸ−ＤＥＭＵＸ部３００５に、決定した中継部番号を登録する。【０１７８】  さらに、中継制御部３００１は、決定した中継部番号の中継部に対して、端末からのコネクション開設を行うように指示する。また、上記組に属する装置間コネクション終端部に指示して、もし、対向するトランスポート層中継装置との間に中継のためのトランスポート層コネクション（中継コネクション）が張られていなければ、コネクションを開設するように指示する。【０１７９】  また、中継制御部３００１は、対向する複数のトランスポート層中継装置の内の或るトランスポート層中継装置から中継開始要求を受け取ると、上記対向するトランスポート層中継装置と対応する組に属する、未使用の中継部の中継部番号を伝え合い、今回使用する中継部番号を決定する。次に中継制御部３００１は、上記組の属する送信レート制御部３００３に、決定した中継部番号、および、コネクションのコネクション識別子を登録する。そして、上記組に属するＭＵＸ−ＤＥＭＵＸ部３００５に、決定した中継部番号を登録する。さらに、中継制御部３００１は、決定した中継部番号の中継部に対して、中継開始要求に含まれているコネクション開設要求の情報に基づいて、コネクション開設要求先端末とのコネクションの開設を行わせる。【０１８０】  また、中継制御部３００１は、ある組に属する中継部からコネクション切断通知を受け取った場合、その組に対応する、対向するトランスポート層中継装置の中継制御部へ、コネクション切断通知を出した中継部の番号を含む、中継終了要求を出す。また、上記組の属するＭＵＸ−ＤＥＭＵＸ部３００５に対して、コネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する。さらに、上記組に属する送信レート制御部３００３に、該中継部の中継部番号を伝え、登録を削除する。【０１８１】  また、中継制御部３００１は、対向する複数のトランスポート層中継装置の内の或るトランスポート層中継装置から中継終了要求を受け取った場合、上記或るトランスポート層中継装置に対応する組に属する、上記中継終了要求に含まれている中継部番号の中継部に対して、端末とのコネクション切断を指示する。また、上記組に属するＭＵＸ−ＤＥＭＵＸ部３００５に対して、コネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する。また、上記組の属する送信レート制御部３００３に、該中継部の中継部番号を伝え、登録を削除する。もし、この時使われている中継部がなくなれば、装置間コネクション終端部に指示して、コネクションを切断するように指示する。【０１８２】  〔発明の第３の実施の形態の効果〕
発明の第３の実施の形態で得られる、発明の第１の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、所望の実効レートを確保し、そのコネクション集合の中で、その実効レートを再分配することを、トランスポート層中継装置をネットワークＮ１およびネットワークＮ２に一つずつ配置すれば実現出来るため、第１の従来方法がネットワークＮ３内の多数のルータを、帯域制御可能なルータに置き換えるのと比べ、装置コスト、および、置き換える手間のコストを低くする事が出来ることである。これは、発明の手法が、中継コネクションのトラヒックと他のトラヒック（クロストラヒック）が同じボトルネックを共有している場合、クロストラヒックを運ぶトランスポート層プロトコル（たとえばＴＣＰ）が輻輳制御を行っていれば、中継コネクションの総送信レートに応じて、送信レートを調整する性質を利用し、総送信レートに応じたある実効レートを確保しているためである。また、総送信レートを、中継しているコネクションの中で分割して利用することで、中継しているあるコネクションの送信レートを下げても、そのレートをクロストラヒックに奪われる事なく、中継している別のコネクションの送信レートとして利用する事が可能となり、実効レートの再配分が可能となっている。【０１８３】  発明の第３の実施の形態で得られる、発明の第２の効果は、送信レート制御部において、総送信レート決定方法Ａ３〜Ｅ３の方法を用いることにより、第２、第３の従来技術では不可能であった、トランスポート層コネクション集合に対して、所望の実効レートを確保する事を可能にする事にある。【０１８４】  発明の第３の実施の形態で得られる、発明の第３の効果は、送信レート制御部において、総送信レート決定方法Ｆ３の方法を用いることにより、第２、第３の従来技術では不可能であった、端末間の複数のコネクションに対して、他のトラヒックに対して優先度をつけた実効レート得る事を可能にする事である。【０１８５】  発明の第３の実施の形態で得られる、発明の第４の効果は、送信レート割り当て方法３よって、複数の端末間のあるトランスポート層コネクション集合に対し、ある実効レートを、そのコネクション集合の中で、コネクションを流れるアプリケーションの情報に依存して再配分する事が可能となる。【０１８６】  〔本発明の第４の実施の形態〕
〔本発明の第４の実施の形態の構成の説明〕
次に本発明の第４の実施の形態の構成について図面を参照して詳細に説明する。【０１８７】  図１２は、本発明の第４の実施の形態の、トランスポート層中継装置Ｅ００４の内部ブロック図である。本発明の第３の実施の形態のトランスポート層中継装置Ｅ００３と比べ、ネットワーク状況推定部２００４が加わり、送信レート制御部４００３と接続されている点のみが異なる。中継制御部３００１、中継部３００２−１〜３００２−ｎとその内部の端末側コネクション終端部、アプリケーション情報解析部、ＭＵＸ−ＤＥＭＵＸ部３００５の動作は本発明の第３の実施の形態のトランスポート層中継装置Ｅ００３のものと同様であるので説明を省略する。また、ネットワーク状況推定部２００４の動作も、本発明の第２の実施の形態のトランスポート層中継装置Ｅ００２のネットワーク状況推定部２００４の動作と同じであるため説明を省略する。装置間コネクション終端部３００４の動作も、本発明の第３の実施の形態のトランスポート層中継装置Ｅ００３の装置間コネクション終端部３００４と同様であるが、目標ウィンドウ値を決定する際に、装置間コネクション終端部が終端しているＴＣＰコネクションが経由するボトルネックリンクの物理帯域Ｂの値としてを、ネットワーク状況推定部２００４が推定した値を用いてもよい。以下では、送信レート制御部４００３の説明のみを行う。なお、トランスポート層中継装置Ｅ００４は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部３００１、中継部３００２−１〜３００２−ｎ、送信レート制御部４００３、ネットワーク状況推定部２００４、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部３００１、中継部３００２−１〜３００２−ｎ、送信レート制御部４００３、ネットワーク状況推定部２００４、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現する。【０１８８】  ・送信レート制御部４００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを、各中継コネクションに割り当てる。総送信レートＲ＿ｔｏｔａｌの決め方としては、現在中継中のコネクション数、装置間コネクション終端部からのコネクション毎輻輳情報、アプリケーション情報解析部からの情報、ネットワーク状況推定部からの情報に依存して決定しても良く、例えば次のような方法がある。【０１８９】  （総送信レート決定方法Ａ４）
ネットワーク状況推定部２００４から得た情報に基づいて決める。例えば、ネットワーク状況推定部２００４から得た、ボトルネック物理帯域Ｒｂ、空き帯域がＲａであったとする。所望の帯域Ｒ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０１９０】  （総送信レート決定方法Ｂ４）
所望の帯域Ｒ＿ｔａｒｇｅｔが現在中継中のコネクション数に見合ったものになるように、Ｒ＿ｔｏｔａｌを現在中継中のコネクション数に依存して決める。１コネクション当たりＲ＿ｏのレートが得られる事を望む場合、中継制御部によって登録されている現在のコネクション数ｍを元に、Ｒ＿ｔａｒｇｅｔ＝Ｒ＿ｏ＊ｍと決定する。所望の帯域Ｒ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０１９１】  （総送信レート決定方法Ｃ４）
中継コネクション終端部からのコネクション毎輻輳情報とネットワーク状況推定部２００４からの情報を利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ個のパケットを送り、Ｌ回のパケットロスを検知したとする。
・Ｃ＜Ｃ＿ｔｈｒｅｓｈｏｌｄならば、計測に使うパケット数が不十分で、パケットロス率の精度が悪いので、ネットワーク状況推定部から得た、パケットロス率をＰとする。
・そうでなければ、Ｐ＝Ｌ／Ｃとする。【０１９２】  同じ輻輳状況が続くと仮定し、目標レート（Ｒ＿ｔａｒｇｅｔ）にするために、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ）とする。ただし、極端な輻輳を避けるため、あるパケットロス率の閾値Ｐ＿０に対して、Ｐ＞Ｐ＿０の場合には、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ＿０）とする。【０１９３】  （総送信レート決定方法Ｄ４）
出来るだけ大きな帯域が得られるように、Ｒ＿ｔｏｔａｌを各装置間コネクション終端部からのコネクション毎輻輳情報とネットワーク状況推定部２００４からの情報とを利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ個のパケットを送り、Ｌ回のパケットロスを検知したとする。
・Ｃ＜Ｃ＿ｔｈｒｅｓｈｏｌｄならば、計測に使うパケット数が不十分で、パケットロス率の精度が悪いので、ネットワーク状況推定部から得た、パケットロス率をＰとする。
・そうでなければ、Ｐ＝Ｌ／Ｃとする。【０１９４】  過去の送信レートＲ＿ｔｏａｔｌとその時のデータロス率Ｐから、送信レートと実際に受信側に届いたレート（＝Ｒ＿ｔｏｔａｌ＊（１−Ｐ））の関係を求めた表を作る。この表を作るデータは、順次更新してゆくとする。実際に受信側に届いたレートが最大になる送信レートの値をＲ＿ｔｏｔａｌとする。ただし、過去の送信レートＲ＿ｔｏｔａｌがまだ十分に蓄積されていなければ、あらかじめ設定されているＲ＿ｔｏｔａｌを使う。【０１９５】  （総送信レート決定方法Ｅ４）
現在中継しているアプリケーションに見合った所望の帯域Ｒ＿ｔａｒｇｅｔが得られるように、Ｒ＿ｔｏｔａｌをアプリケーション情報解析部からの情報も利用して決める。例えば、ストリーミングコネクションのみを中継している時、アプリケーション情報解析部からストリーミングのレート情報を得て、それらの合計値をＲ＿ｔａｒｇｅｔとし、送信レート決定方法Ｃ４に従ってＲ＿ｔｏｔａｌを求める。【０１９６】  （総送信レート決定方法Ｆ４）
現在のコネクション数ｍ、および、装置間コネクション終端部からのコネクション毎輻輳情報と、ネットワーク状況推定部２００４からの情報を利用して決める。例えば、コネクション毎輻輳情報、あるいは、ネットワーク状況推定部から得られる、中継コネクションが通るネットワークのパケットロス率ｐ、ＲＴＴを使ってＴＣＰの１本あたりの送信レートを推定し、そのα倍のレートをｍ倍する。ＴＣＰの１本あたりの送信レートを推定方法としては、Ｍ．Ｈａｎｄｌｅｙ，Ｓ．Ｆｌｏｙｄ，Ｊ．Ｐａｄｈｙｅ，Ｊ．Ｗｉｄｍｅｒ，″ＴＣＰ  Ｆｒｉｅｎｄｌｙ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ（ＴＦＲＣ）：Ｐｒｏｔｏｃｏｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，″Ｉｎｔｅｒｎｅｔ  Ｓｏｃｉｅｔｙ，ＲＦＣ  ３４４８，Ｊａｎｕａｒｙ  ２００３．の３．１節の″ｔｈｒｏｕｇｈｐｕｔ  ｅｑｕａｔｉｏｎ″のＸで与えられているような計算式でもよい。即ち、中継コネクション終端部からのコネクション毎輻輳情報を利用し、パケットロス発生率ｐ、ＲＴＴの指数平均値Ｒ、ＴＣＰのタイムアウト時間の推定値ｔ＿ＲＴＯ（例えば、Ｒの２倍とする）、中継コネクションのあるネットワークのＴＣＰのパケットサイズの平均値をｓ（バイト）（ｓは経験的に知られている値でも良い）、ｂ＝２として、【０１９７】
【数１９】
0004433202.tif 000020
と求め、Ｒ＿ｔｏｔａｌ＝ｍ・α・Ｘ（ｂｉｔ／ｓｅｃ）と決定する。αを１より大きくすれば、１本あたりの送信レートを他のトラヒックに対して高くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に上げることが出来る。逆に、αを１未満にすれば、１本あたりの送信レートを他のトラヒックに対して低くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に下げることが出来る。【０１９８】  このようにして決めたＲ＿ｔｏｔａｌを各中継コネクションへ割り当てる。このレート割り当ては、現在のコネクション数や、アプリケーション情報解析部からの情報に依存して決めても良く、例えば、次のような方法が考えられる。【０１９９】  （送信レート割り当て方法１）
全コネクションに公平にレートを割り当てる。即ち、コネクションがｍ本あれば、Ｒ＿ｔｏｔａｌ／ｍのレートを各コネクションに割り当てる。【０２００】  （送信レート割り当て方法２）
コネクション識別子のポート番号情報に依存して、決められたルールに従って割り当てる。たとえば、ポート番号毎に優先度を付け、それの優先度に応じてレートを割り当てる。【０２０１】  （送信レート割り当て方法３）
アプリケーション情報解析部からの情報に依存して決定する。例えば、ＨＴＴＰコネクションでデータ転送を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られた、ＨＴＴＰのＣｏｎｔｅｎｔ−ｔｙｐｅフィールドの値に依存して優先度を付けた帯域割り当てを行う。別の例としては、ＨＴＴＰでファイル取得を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られたＨＴＴＰのＣｏｎｔｅｎｔ−ｌｅｎｇｔｈフィールドの情報に依存して、短いサイズのデータを転送しているコネクションにより高い帯域を割り当てる。また別の例として、Ｎｓ本のストリーミングタイプのアプリケーションのコネクションと、Ｎｆ本のＨＴＴＰを使ったファイル転送タイプのアプリケーションを中継している場合を考える。アプリケーション情報解析部から得られた、各ストリーミングのレートがＲＳｉ（ｉ＝１，…，Ｎｓ）とし、アプリケーション情報解析部から得られた、ファイル転送タイプのコネクションのファイルサイズをＦＬｉ（ｉ＝１，…，Ｎｆ）とする。ストリーミングタイプのコネクションについては、公平なレート（Ｒ＿ｔｏｔａｌを現在のコネクション数Ｎｓ＋Ｎｆで割ったもの）より低いレートのものには、そのストリーミングのレートＲＳｉ（ｉ＝１，…，Ｎｓ０）を割り当てる。残ったレート【０２０２】
【数２０】
0004433202.tif 000021
を、まだ割り当てをしていないストリーミングコネクションに優先的に割り当て、さらに残ったレートを、ファイル転送タイプのコネクションのうちファイルサイズが短いもの順に高いレートを割り当てる。【０２０３】  〔動作の説明〕
次に、本発明の第４の実施の形態の動作について説明する。【０２０４】  図１３は、本発明の第４の実施の形態の、トランスポート層中継装置Ｅ００４を用いたネットワーク構成の例である。本発明の第３の実施の形態の説明に用いたネットワーク構成の例の図９と比べて、トランスポート層中継装置Ｅ００３が、本発明の第４の実施の形態の、トランスポート層中継装置Ｅ００４に置き換わっている点以外は同じ構成である。【０２０５】  ネットワークＮ１内の任意の端末と、ネットワークＮ２内の任意の端末の間の通信を、トランスポート層中継装置ＴＲ１、ＴＲ２を使って、中継を開始、終了する動作は、図１０を用いて行った、本発明の第３の実施の形態の動作の説明と同じであるため省略する。【０２０６】  ネットワークＮ２内の端末からネットワークＮ１内の端末へ、データを転送している時の、トランスポート層中継装置の送信レート制御部の動作について述べる。図１４が送信レート制御部の動作のフローチャートである。【０２０７】  送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、もしも、登録コネクション数が１であれば（Ｆ１３０）、時間Ｔ後に切れるタイマを設定する（Ｆ１４０）。イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがアプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、装置間コネクション終端部からコネクション毎輻輳情報を取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、ネットワーク状況推定部から、ネットワーク状況を取得し（Ｆ２２５）、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部４００３の説明の中で述べた、総送信レート決定方法Ａ４、Ｂ４、Ｃ４、Ｄ４、Ｅ４、Ｆ４等を採用することができる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。この決定の方法としては、送信レート制御部４００３の説明の中で述べた、送信レート割り当て方法１、２、３等を採用することができる。次に、総送信レートＲ＿ｔｏｔａｌを装置間コネクション終端部へ通知する（Ｆ２５０）。さらに、Ｆ２４０で決定した各コネクションの送信レートを、ＭＵＸ−ＤＥＭＵＸ部へ通知する（Ｆ２５５）。最後に、タイマをＴにセットする（Ｆ２６０）。【０２０８】  〔発明の第４の実施の形態の効果〕
発明の第４の実施の形態で得られる、発明の第１の効果は、複数の端末間のあるトランスポート層コネクション集合に対して、所望の実効レートを確保し、そのコネクション集合の中で、その帯域を再分配することを、トランスポート層中継装置をネットワークＮ１およびネットワークＮ２に一つずつ配置すれば実現出来るため、第１の従来方法がネットワークＮ３内の多数のルータを、帯域制御可能なルータに置き換えるのと比べ、装置コスト、および、置き換える手間のコストを低くする事が出来ることである。これは、発明の手法が、中継コネクションのトラヒックと他のトラヒック（クロストラヒック）が同じボトルネックを共有している場合、クロストラヒックを運ぶトランスポート層プロトコル（たとえばＴＣＰ）が輻輳制御を行っていれば、中継コネクションの総送信レートに応じて、送信レートを調整する性質を利用し、総送信レートに応じたある実効レートを確保しているためである。また、総送信レートを、中継しているコネクションの中で分割して利用することで、中継しているあるコネクションの送信レートを下げても、そのレートをクロストラヒックに奪われる事なく、中継している別のコネクションの送信レートとして利用する事が可能となり、実効レートの再配分が可能となっている。【０２０９】  発明の第４の実施の形態で得られる、発明の第２の効果は、送信レート制御部において、総送信レート決定方法Ａ４〜Ｅ４の方法を用いることにより、第２、第３の従来技術では不可能であった、トランスポート層コネクション集合に対して、所望の実効レートを確保する事を可能にし、かつ、この送信レート決定方法に関して、ネットワーク状況推定部の情報も併用するため、高い精度で所望の実効レートを確保する事が可能になることにある。【０２１０】  発明の第４の実施の形態で得られる、発明の第３の効果は、送信レート制御部において、総送信レート決定方法Ｆ４の方法を用いることにより、第２、第３の従来技術では不可能であった、端末間の複数のコネクションに対して、他のトラヒックに対して優先度をつけた帯域を割り当てることを可能にし、かつ、この送信レート決定方法に関して、ネットワーク状況推定部の情報も併用するため、高い精度で優先度をつけた実効レートを確保する事が可能になることにある。【０２１１】  発明の第４の実施の形態で得られる、発明の第５の効果は、送信レート割り当て方法３よって、複数の端末間のあるトランスポート層コネクション集合に対し、ある実効レートを、そのコネクション集合の中で、コネクションを流れるアプリケーションの情報に依存して再配分する事が可能となる。【０２１２】  〔本発明の第５の実施の形態〕
〔本発明の第５の実施の形態の構成の説明〕
次に本発明の第５の実施の形態の構成について図面を参照して詳細に説明する。【０２１３】  図１５は、本発明の第５の実施の形態の、トランスポート層中継装置Ｅ００５の内部ブロック図である。本発明の第１の実施の形態のトランスポート層中継装置Ｅ００１と比べ、送信レート制御部５００３、中継制御部５００１、中継部５００２−１〜５００２−ｎとその内部の端末側コネクション終端部の動作のみが、変更されている。また、端末のトランスポート層コネクション終端部は、コネクション開設の相手から、コネクション開設時に初期送信レートを与えられると、そのレートで送信を開始し、その後は、通常のレート制御（フロー制御、輻輳制御）に従ったレートで送信を行うものとする。変更部分のみを説明する。なお、トランスポート層中継装置Ｅ００５は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部５００１、中継部５００２−１〜５００２−ｎ、送信レート制御部５００３を実現するためのプログラムを記録しておく。【０２１４】  このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部５００１、中継部５００２−１〜５００２−ｎ、送信レート制御部５００３を実現する。【０２１５】  ・中継制御部５００１：
中継制御部５００１は、端末のトランスポート層のコネクション終端部からのコネクション開設要求、あるいは、他のトランスポート層中継装置の装置間コネクション終端部からの中継要求を受け取り、中継部５００２−１〜５００２−ｎの内の現在使われていない中継部の１つを割り当てる。その後、送信レート制御部５００３へ、中継部に割り当てているコネクションのコネクション識別子、および、中継部の識別番号（１〜ｎ）を登録する。この際、このコネクションに関して最適な初期送信レート値を送信レート制御部５００３から受け取る。この初期送信レート値を、今回割り当てを行った中継部に受け渡すと共に、トランスポート層コネクションの中継処理を行わせる。端末からのコネクション開設要求は、コネクション開設の要求元端末のＩＰアドレスとポート番号、コネクション開設要求先端末のＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子、の５つの情報の組（これをコネクション識別子と呼ぶ）を含む。また、中継要求には、コネクション識別子と共に、トランスポート層中継装置の装置間のコネクション（これを中継コネクションと呼ぶ）を開設するのに必要な情報を含む。【０２１６】  中継制御部５００１は、中継部５００２−１〜５００２−ｎのそれぞれが現在使用中かどうかを示す表（空管理表）を持っており、コネクション開設要求、あるいは、中継要求を受けて、中継部を割り当てた時に空管理表の該当中継部を″使用中″とし、中継部から中継終了通知を受け取ると、″非使用中″と識別する情報を書くことによって、どの中継部が現在使用中であるかを管理しているものとする。また、中継部から中継終了通知を受け取ると、送信レート制御部５００３へ指示し、中継部に割り当てているコネクションのコネクション識別子、および、中継部の識別番号（１〜ｎ）を削除する。【０２１７】  更に、中継制御部５００１は、開設要求先端末のＩＰアドレスと、中継要求の送信先にするトランスポート層中継装置との対応関係を示す表（対応表）を有しており、端末からコネクション開設要求を受け取ったとき、対応表から上記コネクション開設要求に含まれている開設要求先端末のＩＰアドレスに対応するトランスポート層中継装置を示す情報を取得し、取得した情報を装置間コネクション終端部に渡す。【０２１８】  ・中継部５００２−１〜５００２−ｎ：
内部に端末側コネクション終端部、アプリケーション情報解析部、装置間コネクション終端部を含む。中継制御部から、（１）端末のトランスポート層のコネクション終端部からのコネクション開設要求、あるいは、（２）別のトランスポート層中継装置の装置間コネクション終端部からの中継要求を受け、中継のためのトランスポート層コネクションを、端末、および、他のトランスポート層中継装置との間にそれぞれ開設する。以下、（１）、（２）を受け取った場合、それぞれについて動作を説明する。【０２１９】  中継制御部５００１から、（１）端末のトランスポート層のコネクション終端部からのコネクション開設要求を受け取った場合、端末側コネクション終端部に、その端末とのトランスポート層コネクションを開設させる。このとき、中継制御部５００１から受け渡された初期送信レート値を端末のトランスポート層のコネクション終端部に伝える。また、このとき、端末側コネクション終端部は、コネクション開設要求の開設要求先端末の情報（ＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子）を用い、端末には、コネクション開設要求先の端末と直接接続しているのと同じように見せる。また、装置間コネクション終端部に対して、中継制御部５００１からの情報によって示されるトランスポート層中継装置（例えば、トランスポート層中継装置Ｂ）の中継制御部へ中継要求を送信し、トランスポート層中継装置Ｂの装置間コネクション終端部との間にトランスポート層コネクションを開設することを指示する。【０２２０】  中継制御部から、（２）他のトランスポート層中継装置（装置Ｂとする）の装置間コネクション終端部からの中継要求を受けた場合、装置間コネクション終端部に、装置Ｂの装置間コネクション終端部との間でトランスポート層コネクションを開設させる。また、中継要求に含まれる、コネクション識別子の情報を使い、端末側コネクション終端部と、開設要求先端末との間にトランスポート層コネクションを開設する。このとき、中継制御部から受け渡された初期送信レート値を端末のトランスポート層のコネクション終端部に伝える。また、このとき、端末側コネクション終端部は、コネクション開設要求の開設要求元端末の情報（ＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子）を用い、端末には、コネクション開設要求元の端末と直接接続しているのと同じように見せる。【０２２１】  端末側コネクション終端部からコネクション切断通知を受け取ると、装置間コネクション終端部に、中継コネクションを切断させ、中継制御部へ中継終了通知を送る。装置間コネクション終端部からコネクション切断通知を受け取った場合も同様に、端末側コネクション終端部に、接続先の端末とのコネクションを切断させ、中継制御部へ中継終了通知を送る。【０２２２】  ・端末側コネクョン終端部：
トランスポート層コネクションを張った端末との通信に用いる送受信バッファを持ち、トランスポート層コネクションの終端処理を行う。このトランスポート層コネクションの終端処理は、使われるトランスポート層プロトコルに従うものとするが、少なくとも、トランスポート層コネクションの開設、維持、終了の機能、および、フロー制御、輻輳制御機能を持っているものとする。中継部の指示に従い、端末とのコネクション開設・切断を行う。また、端末からコネクション切断要求があれば、コネクション切断後、中継部へコネクション切断通知を送る。ただし、端末とのコネクション開設時には、中継部から受け渡された初期送信レート値を端末のトランスポート層のコネクション終端部に伝える。【０２２３】  端末とコネクションが開設されている間は、端末に対して送信バッファ中のデータを、トランスポート層プロトコルの規約に従って端末へ送ると共に、端末からのデータをトランスポート層プロトコルの規約に従って受け取り、受信バッファへと書き込む。また、接続しているアプリケーション情報解析部からデータを受け取り、送信バッファへと書き込む。受信バッファからデータを読み出し、接続しているアプリケーション情報解析部へ受け渡す。【０２２４】  ・送信レート制御部５００３：
本発明の実施の形態１の送信レート制御部１００３と同様に、現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを、分割して各中継コネクションに割り当てる。ただし、中継制御部からのコネクション登録の要求があった時にも、この割り当てを行い、そのコネクションに対する割り当てられた送信レートを、初期送信レートとして中継制御部へ伝える。この動作の詳細は以下で述べる。それ以外の点は、本発明の実施の形態１の送信レート制御部１００３と同じである。【０２２５】  〔動作の説明〕
次に本発明の第５の実施の形態の動作について図面を参照して説明する。【０２２６】  図１６は、本発明の第５の実施の形態の、トランスポート層中継装置Ｅ００５を用いた通信網の構成例である。図２の本発明の第１の実施の形態を用いたネットワーク構成図と比べ、トランスポート層中継装置Ｒ１、Ｒ２が、図２では、本発明の第１の実施の形態のトランスポート層中継装置Ｅ００１であったのが、本発明の第５の実施の形態の、トランスポート層中継装置Ｅ００５に置き換わっている点以外は、同じ構成である。【０２２７】  図１７にネットワークＮ１内の端末Ｈ１−ｋが、ネットワークＮ２内の端末Ｈ２−ｊとの間で通信を行う場合の、ネットワークＮ１、および、ネットワークＮ２に配置された、第５の実施の形態のトランスポート層中継装置Ｅ００５の動作を示す。図３を用いて説明した、本発明の第１の実施の形態の動作とほとんど同じなので違いだけを説明する。違いは（１）Ｔ１１０において、送信レート制御部へ登録を行った後、初期送信レートを受け取り（Ｔ１１５）、Ｔ１３０においてそれを中継部へ伝える事。また、（２）中継部がそれを、Ｔ１４０において、端末側コネクション終端部へ伝える事。さらに、（３）端末側コネクション終端部はその初期送信レートを、Ｔ１５０のコネクション開設時に端末Ｈ１−ｋへ伝える事。また、（４）Ｔ１８０において、送信レート制御部へ登録を行った後、初期送信レートを受け取り（Ｔ１８５）、Ｔ１９０においてそれを中継部へ伝える事。また、（５）中継部がそれを、Ｔ２２０において、端末側コネクション終端部へ伝える事。さらに、（６）端末側コネクション終端部はその初期送信レートを、Ｔ２４０のコネクション開設時に端末Ｈ１−ｋへ伝える事。以上の６点以外は全く同じである。この６点以外は、図３を用いて説明した、本発明の第１の実施の形態の動作と全く同じであるため説明を省略する。【０２２８】  トランスポート層中継装置Ｅ００５の送信レート制御部５００３の動作についても、変更点を述べる。図１８に送信レート制御部の動作のフローチャートを示す。送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、新登録フラグを１とし（Ｆ１２１）、Ｆ２２０へ進む。イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがアプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、登録済みの中継部番号に対応する中継部の装置間コネクション終端部からコネクション毎輻輳情報を取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部１００３の説明の中で述べた、総送信レート決定方法Ａ１、Ｂ１、Ｃ１、Ｄ１、Ｅ１、Ｆ１などを採用できる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。この決定の方法としては、送信レート制御部１００３の説明の中で述べた、送信レート割り当て方法１、２、３などを採用できる。ここで決定した各コネクションの送信レートを、対応する、装置間コネクション終端部へ通知する（Ｆ２５０）。新登録フラグが１であれば、新たに登録されたコネクションに関する送信レートＲ＿ｉを中継制御部へ通知し（Ｆ２５８）、新登録フラグを０とする（Ｆ２５９）。最後に、タイマをＴにセットする（Ｆ２６０）。【０２２９】  〔発明の第５の実施の形態の効果〕
発明の第５の実施の形態で得られる発明の効果は、発明の第１の実施の形態で得られる効果に加え、端末とのコネクション設定時に初期送信レートの情報を与えることで、端末がネットワークの状況を学習するまでの時間を短縮し、効率のよい輻輳制御を行わせることが可能になる事である。【０２３０】  〔本発明の第６の実施の形態〕
〔本発明の第６の実施の形態の構成の説明〕
次に本発明の第６の実施の形態の構成について図面を参照して詳細に説明する。【０２３１】  図１９は、本発明の第６の実施の形態の、トランスポート層中継装置Ｅ００６の内部ブロック図である。本発明の第２の実施の形態のトランスポート層中継装置Ｅ００２と比べ、送信レート制御部６００３、中継制御部５００１、中継部５００２−１〜５００２−ｎとその内部の端末側コネクション終端部が置き換えられている。また、端末のトランスポート層コネクション終端部は、コネクション開設の相手から、コネクション開設時に初期送信レートを与えられると、そのレートで送信を開始し、その後は、通常のレート制御（フロー制御、輻輳制御）に従ったレートで送信を行うものとする。中継制御部５００１、中継部５００２−１〜５００２−ｎの動作は、本発明の第５の実施の形態で説明しているので、送信レート制御部６００３の動作のみ説明する。【０２３２】  なお、トランスポート層中継装置Ｅ００６は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部５００１、中継部５００２−１〜５００２−ｎ、送信レート制御部６００３、ネットワーク状況推定部２００４を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部５００１、中継部５００２−１〜５００２−ｎ、送信レート制御部６００３、ネットワーク状況推定部２００４を実現する。【０２３３】  ・送信レート制御部６００３：
本発明の実施の形態２の送信レート制御部２００３と同様に、現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを、各中継コネクションに割り当てる。ただし、中継制御部からのコネクション登録の要求があった時にも、この割り当てを行い、そのコネクションに対する割り当てられた送信レートを、初期送信レートとして中継制御部へ伝える。この動作の詳細は以下で述べる。それ以外の点は、本発明の実施の形態２の送信レート制御部２００３と同じである。【０２３４】  〔動作の説明〕
次に本発明の第６の実施の形態の動作について図面を参照して説明する。【０２３５】  図２０は、本発明の第６の実施の形態の、トランスポート層中継装置Ｅ００６を用いた通信網の構成例である。図６の本発明の第２の実施の形態を用いたネットワーク構成図と比べ、トランスポート層中継装置Ｒ１、Ｒ２が、図２０では、本発明の第１の実施の形態のトランスポート層中継装置Ｅ００２であったのが、本発明の第６の実施の形態の、トランスポート層中継装置Ｅ００６に置き換わっている点以外は、同じ構成である。【０２３６】  ネットワークＮ１内の任意の端末と、ネットワークＮ２内の任意の端末の間の通信を、トランスポート層中継装置ＴＲ１、ＴＲ２を使って、中継を開始、終了する動作は、図１７を用いて行った、本発明の第５の実施の形態の動作の説明と同じであるため省略する。【０２３７】  トランスポート層中継装置Ｅ００６の送信レート制御部の６００３動作についても、変更点を述べる。図２１に送信レート制御部の動作のフローチャートを示す。送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、新登録フラグを１とし（Ｆ１２１）、Ｆ２２０へ進む。【０２３８】  イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがアプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、登録済みの中継部番号に対応する中継部の装置間コネクション終端部からコネクション毎輻輳情報を取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、ネットワーク状況推定部から、ネットワーク状況を取得し（Ｆ２２５）、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部２００３の説明の中で述べた、総送信レート決定方法Ａ２、Ｂ２、Ｃ２、Ｄ２、Ｅ２、Ｆ２などを採用することができる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。この決定の方法としては、送信レート制御部２００３の説明の中で述べた、送信レート割り当て方法１、２、３などを採用することができる。ここで決定した各コネクションの送信レートを、対応する、装置間コネクション終端部へ通知する（Ｆ２５０）。新登録フラグが１であれば、新たに登録されたコネクションに関する送信レートＲ＿ｉを中継制御部へ通知し（Ｆ２５８）、新登録フラグを０とする（Ｆ２５９）。最後に、タイマをＴにセットする（Ｆ２６０）。���０２３９】  〔発明の第６の実施の形態の効果〕
発明の第６の実施の形態で得られる発明の効果は、発明の第２の実施の形態で得られる効果に加え、端末とのコネクション設定時に初期送信レートの情報を与えることで、端末がネットワークの状況を学習するまでの時間を短縮し、効率のよい輻輳制御を行わせることが可能になる事である。【０２４０】  〔本発明の第７の実施の形態〕
〔本発明の第７の実施の形態の構成の説明〕
次に本発明の第７の実施の形態の構成について図面を参照して詳細に説明する。【０２４１】  図２２は、本発明の第７の実施の形態の、トランスポート層中継装置Ｅ００７の内部ブロック図である。本発明の第３の実施の形態のトランスポート層中継装置Ｅ００３と比べ、送信レート制御部７００３、中継制御部７００１、中継部７００２−１〜７００２−ｎとその内部の端末側コネクション終端部の動作のみが、変更されている。また、端末のトランスポート層コネクション終端部は、コネクション開設の相手から、コネクション開設時に初期送信レートを与えられると、そのレートで送信を開始し、その後は、通常のレート制御（フロー制御、輻輳制御）に従ったレートで送信を行うものとする。変更部分のみを説明する。なお、トランスポート層中継装置Ｅ００７は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部７００１、中継部７００２−１〜３００２−ｎ、送信レート制御部７００３、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部７００１、中継部７００２−１〜７００２−ｎ、送信レート制御部７００３、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現する。【０２４２】  ・中継制御部７００１：
中継制御部７００１は、端末のトランスポート層のコネクション終端部からのコネクション開設要求、対向するトランスポート層中継装置Ｅ００７からの中継開始要求、中継部からのコネクション切断通知、対向するトランスポート層中継装置Ｅ００７からの中継終了要求を受け取る。それぞれを受け取った場合の動作を述べる。【０２４３】  （端末からのコネクション開設要求を受け取った場合）
端末からのコネクション開設要求は、コネクション開設の要求元端末のＩＰアドレスとポート番号、コネクション開設要求先端末のＩＰアドレスとポート番号、および、コネクションに使うトランスポートプロトコルの識別子、の５つの情報の組（これをコネクション識別子と呼ぶ）を含む。コネクション開設要求を受け取った中継制御部７００１は、対向するトランスポート層中継装置Ｅ００７の中継制御部へ、コネクション開設要求の情報を含んだ中継開始要求を送る。この時、中継制御部で使われていない中継部（７００２−１〜７００２−ｎ）の番号（１〜ｎ）を伝え合い、両方で使われていない中継部番号を１つ決定する。次に、中継制御部は、送信レート制御部７００３に、決定した中継部の識別番号（１〜ｎ）、および、コネクションのコネクション識別子を登録する。この際、このコネクションに関して最適な初期送信レート値を送信レート制御部７００３から受け取る。そして、ＭＵＸ−ＤＥＭＵＸ部３００５に、決定した中継部番号を登録する。さらに、中継制御部７００１は、決定した中継部番号の中継部（７００２−１〜７００２−ｎ）に対して、初期送信レート値を受け渡すと共に、端末からのコネクション開設を行うように指示する。また装置間コネクション終端部３００４に指示して、もしも、対向するトランスポート層中継装置との間に中継のためのトランスポート層コネクション（中継コネクション）が張られていなければ、コネクションを開設するように指示する。【０２４４】  （対向するトランスポート層中継装置Ｅ００７からの中継開始要求を受け取った場合）
対向するトランスポート層中継装置Ｅ００７からの中継開始要求を受け取ると、中継制御部同士で使われていない中継部（７００２−１〜７００２−ｎ）の番号（１〜ｎ）を伝え合い、両方で使われていない中継部番号を１つ決定する。次に中継制御部７００１は、送信レート制御部７００３に、決定した中継部の識別番号（１〜ｎ）、および、コネクションのコネクション識別子を登録する。この際、このコネクションに関して最適な初期送信レート値を送信レート制御部７００３から受け取る。そして、ＭＵＸ−ＤＥＭＵＸ部３００５に、決定した中継部番号を登録する。さらに、中継制御部７００１は、決定した中継部番号の中継部（７００２−１〜７００２−ｎ）に対して、初期送信レート値を受け渡すと共に、中継開始要求に含まれているコネクション開設要求の情報に基づいて、コネクション開設要求先端末とのコネクションの開設を行わせる。【０２４５】  （中継部からのコネクション切断通知を受け取った場合）
対向するトランスポート層中継装置Ｅ００７の中継制御部へ、コネクション切断通知を出した中継部の番号を含む、中継終了要求を出す。また、ＭＵＸ−ＤＥＭＵＸ部３００５にコネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する。さらに、送信レート制御部７００３に、該中継部の中継部番号を伝え、登録を削除する。【０２４６】  （対向するトランスポート層中継装置Ｅ００７からの中継終了要求を受け取った場合）
中継終了要求に含まれている中継部番号の中継部に対して、端末とのコネクション切断を指示する。また、ＭＵＸ−ＤＥＭＵＸ部３００５にコネクション切断通知を出した中継部の中継部番号の登録を削除するよう指示する。また、送信レート制御部７００３に、該中継部の中継部番号を伝え、登録を削除する。もし、この時使われている中継部がなくなれば、装置間コネクション終端部に指示して、コネクションを切断するように指示する。【０２４７】  中継制御部７００１は、中継部７００２−１〜７００２−ｎのそれぞれが現在使用中かどうかを示す表（空管理表）を持っており、端末からのコネクション開設要求、あるいは、対向するトランスポート層中継装置Ｅ００７からの中継開始要求中継要求を受けて、中継部を割り当てた時に空管理表の該当中継部を″使用中″とし、中継部からのコネクション切断通知、対向するトランスポート層中継装置Ｅ００７からの中継終了要求を受け取った時に、″非使用中″と識別する情報を書くことによって、どの中継部が現在使用中であるかを管理しているものとする。【０２４８】  ・中継部７００２−１〜７００２−ｎ：
内部に端末側コネクション終端部、アプリケーション情報解析部を含む。中継制御部７００１からの指示に従って、端末側コネクション終端部に対して、端末との間に、トランスポート層コネクションを開設、あるいは、コネクション切断を行わせる。コネクションを開設の際には、中継制御部７００１から受け渡された初期送信レート値を端末のトランスポート層のコネクション終端部に伝える。【０２４９】  ・端末側コネクション終端部：
トランスポート層コネクションを張った端末との通信に用いる送受信バッファを持ち、トランスポート層コネクションの終端処理を行う。このトランスポート層コネクションの終端処理は、使われるトランスポート層プロトコルに従うものとするが、少なくとも、トランスポート層コネクションの開設、維持、終了の機能、および、フロー制御、輻輳制御機能を持っているものとする。中継部の指示に従い、端末とのコネクション開設・切断を行う。また、端末からコネクション切断求があれば、コネクション切断後、中継部へコネクション切断通知を送る。ただし、端末とのコネクション開設時には、中継部から受け渡された初期送信レート値を端末のトランスポート層のコネクション終端部に伝える。【０２５０】  端末とコネクションが開設されている間は、端末に対して送信バッファ中のデータを、トランスポート層プロトコルの規約に従って端末へ送ると共に、端末からのデータをトランスポート層プロトコルの規約に従って受け取り、受信バッファへと書き込む。また、接続しているアプリケーション情報解析部からデータを受け取り、送信バッファへと書き込む。受信バッファからデータを読み出し、接続しているアプリケーション情報解析部へ受け渡す。【０２５１】  ・送信レート制御部７００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを、中継コネクションの送信レートとする。ただし、中継制御部からのコネクション登録の要求があった時にも、この割り当てを行い、そのコネクションに対する割り当てられた送信レートを、初期送信レートとして中継制御部へ伝える。この動作の詳細は以下で述べる。それ以外の点は、本発明の実施の形態３の送信レート制御部３００３と同じである。【０２５２】  〔動作の説明〕
次に本発明の第７の実施の形態の動作について図面を参照して詳細に説明する。【０２５３】  図２３は、本発明の第７の実施の形態の、トランスポート層中継装置Ｅ００７を用いた通信網の構成例である。図９の本発明の第３の実施の形態を用いたネットワーク構成図と比べ、トランスポート層中継装置Ｒ１、Ｒ２が、図９では、本発明の第３の実施の形態のトランスポート層中継装置Ｅ００３であったのが、本発明の第７の実施の形態の、トランスポート層中継装置Ｅ００７に置き換わっている点以外は、同じ構成である。【０２５４】  図２４にネットワークＮ１内の端末Ｈ１−ｋが、ネットワークＮ２内の端末Ｈ２−ｊとの間で通信を行う場合の、ネットワークＮ１、および、ネットワークＮ２に配置された、第７の実施の形態のトランスポート層中継装置Ｅ００７の動作を示す。図１０を用いて説明した、本発明の第３の実施の形態の動作とほとんど同じなので違いだけを説明する。【０２５５】  違いは（１）Ｔ１０２０において、送信レート制御部へ登録を行った後、初期送信レートを受け取り（Ｔ１０２５）、Ｔ１０４０においてそれを中継部へ伝える事。また、（２）中継部がそれを、Ｔ１０５０において、端末側コネクション終端部へ伝える事。さらに、（３）端末側コネクション終端部はその初期送信レートを、Ｔ１０６０のコネクション開設時に端末Ｈ１−ｋへ伝える事。また、（４）Ｔ１０９０において、送信レート制御部へ登録を行った後、初期送信レートを受け取り（Ｔ１０９５）、Ｔ１１１０においてそれを中継部へ伝える事。また、（５）中継部がそれを、Ｔ１１２０において、端末側コネクション終端部へ伝える事。さらに、（６）端末側コネクション終端部はその初期送信レートを、Ｔ１１３０のコネクション開設時に端末Ｈ１−ｋへ伝える事。以上の６点以外は全く同じである。この６点以外は、図１０を用いて説明した、本発明の第３の実施の形態の動作と全く同じであるため説明を省略する。【０２５６】  トランスポート層中継装置の送信レート制御部７００３の動作についても、変更点を述べる。図２５に送信レート制御部７００３の動作のフローチャートを示す。送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、新登録フラグを１とし（Ｆ１２１）、Ｆ２２０へ進む。イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがアプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、装置間コネクション終端部からコネクション毎輻輳情報���取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部３００３の説明の中で述べた、総送信レート決定方法Ａ３、Ｂ３、Ｃ３、Ｄ３、Ｅ３、Ｆ３等を採用することができる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。この決定の方法としては、送信レート制御部３００３の説明の中で述べた、送信レート割り当て方法１、２、３等を採用することができる。次に、総送信レートＲ＿ｔｏｔａｌを装置間コネクション終端部へ通知する（Ｆ２５０）。さらに、Ｆ２４０で決定した各コネクションの送信レートを、ＭＵＸ−ＤＥＭＵＸ部へ通知する（Ｆ２５５）。新登録フラグが１であれば、新たに登録されたコネクションに関する送信レートＲ＿ｉを中継制御部へ通知し（Ｆ２５８）、新登録フラグを０とする（Ｆ２５９）。最後に、タイマをＴにセットする（Ｆ２６０）。【０２５７】  なお、図２２に示したトランスポート層中継装置Ｅ００７は、予め決められた１個の対向するトランスポート層中継装置との間にしか中継コネクションを開設できないが、複数の対向するトランスポート層中継装置との間に中継コネクションを開設できるようにするためには、第３の実施の形態で説明したように、トランスポート層中継装置Ｅ００７内に、対向する複数のトランスポート層中継装置それぞれに対して、中継部７００２−１〜７００２−ｎ、送信レート制御部７００３、装置間コネクション終端部３００４およびＭＵＸ−ＤＥＭＵＸ部３００５の組を設け、中継制御部７００１に中継制御部３００１と同様の動作を行わせれば良い。【０２５８】  〔発明の第７の実施の形態の効果〕
発明の第７の実施の形態で得られる発明の効果は、発明の第３の実施の形態で得られる効果に加え、端末とのコネクション設定時に初期送信レートの情報を与えることで、端末がネットワークの状況を学習するまでの時間を短縮し、効率のよい輻輳制御を行わせることが可能になる事である。【０２５９】  〔本発明の第８の実施の形態〕
〔本発明の第８の実施の形態の構成の説明〕
次に本発明の第８の実施の形態の構成について図面を参照して詳細に説明する。【０２６０】  図２６は、本発明の第８の実施の形態の、トランスポート層中継装置Ｅ００８の内部ブロック図である。本発明の第４の実施の形態のトランスポート層中継装置Ｅ００２と比べ、送信レート制御部８００３、中継制御部８００１、中継部８００２−１〜８００２−ｎとその内部の端末側コネクション終端部が置き換えられている。また、端末のトランスポート層コネクション終端部は、コネクション開設の相手から、コネクション開設時に初期送信レートを与えられると、そのレートで送信を開始し、その後は、通常のレート制御（フロー制御、輻輳制御）に従ったレートで送信を行うものとする。中継制御部８００１、中継部８００２−１〜８００２−ｎの動作は、本発明の第７の実施の形態で説明した中継制御部７００１、中継部７００２−１〜７００２−ｎと同様であるので、送信レート制御部８００３についてのみ説明する。なお、トランスポート層中継装置Ｅ００８は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部８００１、中継部８００２−１〜８００２−ｎ、送信レート制御部８００３、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５、ネットワーク状況推定部２００４を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部８００１、中継部８００２−１〜８００２−ｎ、送信レート制御部８００３、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現する。【０２６１】  ・送信レート制御部８００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを、中継コネクションの送信レートとする。ただし、中継制御部８００１からのコネクション登録の要求があった時にも、この割り当てを行い、そのコネクションに対する割り当てられた送信レートを、初期送信レートとして中継制御部８００１へ伝える。この動作の詳細は以下で述べる。それ以外の点は、本発明の実施の形態４の送信レート制御部４００３と同じである。【０２６２】  〔動作の説明〕
次に本発明の第８の実施の形態の動作について図面を参照して説明する。【０２６３】  図２７は、本発明の第８の実施の形態の、トランスポート層中継装置Ｅ００８を用いた通信網の構成例である。図１３の本発明の第４の実施の形態を用いたネットワーク構成図と比べ、トランスポート層中継装置Ｒ１、Ｒ２が、図２７では、本発明の第４の実施の形態のトランスポート層中継装置Ｅ００４であったのが、本発明の第８の実施の形態の、トランスポート層中継装置Ｅ００８に置き換わっている点以外は、同じ構成である。【０２６４】  ネットワークＮ１内の任意の端末と、ネットワークＮ２内の任意の端末の間の通信を、トランスポート層中継装置ＴＲ１、ＴＲ２を使って、中継を開始、終了する動作は、図２４を用いて行った、本発明の第７の実施の形態の動作の説明と同じであるため省略する。【０２６５】  トランスポート中継装置Ｅ００８の送信レート制御部８００３の動作についても、変更点を述べる。図２８に送信レート制御部８００３の動作のフローチャートを示す。【０２６６】  送信レート制御部は、タイマ切れ、あるいは、中継制御部からの中継部の登録あるいは削除、あるいは、アプリケーション情報解析部からのアプリケーション情報通知の、いずれかのイベントの発生によって起動される（Ｆ１００）。イベントが中継制御部からの登録であった場合（Ｆ１１０）、コネクション識別子と中継部番号を登録し（Ｆ１２０）、新登録フラグを１とし（Ｆ１２１）、Ｆ２２０へ進む。イベントが中継制御部からの削除であった場合（Ｆ１５０）、コネクション識別子、中継部番号、アプリケーション情報（もしあれば）を削除し（Ｆ１６０）、もし、登録コネクション数が０であれば（Ｆ１７０）、タイマを解除する（Ｆ１８０）。イベントがアプリケーション情報解析部からのアプリケーション情報通知であった場合（Ｆ１９０）、そのコネクション識別子に関するアプリケーション情報を登録情報に追加する（Ｆ２００）。イベントがタイマ切れであった場合（Ｆ２１０）、装置間コネクション終端部からコネクション毎輻輳情報を取得する（Ｆ２２０）。また、現在登録済みのコネクションのアプリケーション情報（Ｆ２００で追加されているもの）を参照する（Ｆ２２２）。そして、ネットワーク状況推定部から、ネットワーク状況を取得し（Ｆ２２５）、現在登録中のコネクション数も用いて、総送信レートＲ＿ｔｏｔａｌを決定する（Ｆ２３０）。この決定の方法としては、送信レート制御部４００３の説明の中で述べた、総送信レート決定方法Ａ４、Ｂ４、Ｃ４、Ｄ４、Ｆ４等を採用できる。次に、現在登録中の各コネクションの送信レートを決定する（Ｆ２４０）。この決定の方法としては、送信レート制御部４００３の説明の中で述べた、送信レート割り当て方法１、２、３等を採用できる。次に、総送信レートＲ＿ｔｏｔａｌを装置間コネクション終端部へ通知する（Ｆ２５０）。さらに、Ｆ２４０で決定した各コネクションの送信レートを、ＭＵＸ−ＤＥＭＵＸ部へ通知する（Ｆ２５５）。新登録フラグが１であれば、新たに登録されたコネクションに関する送信レートＲ＿ｉを中継制御部へ通知し（Ｆ２５８）、新登録フラグを０とする（Ｆ２５９）。最後に、タイマをＴにセッ���する（Ｆ２６０）。【０２６７】  なお、図２６に示したトランスポート層中継装置Ｅ００８は、予め決められた１個の対向するトランスポート層中継装置との間にしか中継コネクションを開設できないが、複数の対向するトランスポート層中継装置との間に中継コネクションを開設できるようにするためには、トランスポート層中継装置Ｅ００８内に、対向する複数のトランスポート層中継装置それぞれに対して、中継部８００２−１〜８００２−ｎ、送信レート制御部８００３、装置間コネクション終端部３００４、ＭＵＸ−ＤＥＭＵＸ部３００５及びネットワーク状況推定部２００４の組を設け、中継制御部８００１に中継制御部３００１と同様の動作を行わせれば良い。【０２６８】  〔発明の第８の実施の形態の効果〕
発明の第８の実施の形態で得られる発明の効果は、発明の第４の実施の形態で得られる効果に加え、端末とのコネクション設定時に初期送信レートの情報を与えることで、端末がネットワークの状況を学習するまでの時間を短縮し、効率のよい輻輳制御を行わせることが可能になる事である。【０２６９】  〔本発明の第９の実施の形態〕
〔構成の説明〕
次に本発明の第９の実施の形態の構成について図面を参照して詳細に説明する。【０２７０】  図２９は、本発明の第９の実施の形態の、トランスポート層中継装置Ｅ００９の内部ブロック図である。本発明の第１の実施の形態のトランスポート層中継装置Ｅ００１と比べ、装置間コネクション終端部へ、インライン計測部が加わっている点、及び送信レート制御部１００３の代わりに送信レート制御部９００３を備えている点が異なる。インライン計測部の追加によって、本発明の第１の実施の形態から変更が有る部分のみ説明する。なお、トランスポート層中継装置Ｅ００９は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部１００１、中継部１００２−１〜１００２−ｎ、送信レート制御部９００３を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部１００１、中継部１００２−１〜１００２−ｎ、送信レート制御部９００３を実現する。【０２７１】  ・インライン計測部：
装置間コネクション終端部に指示し、実際に中継する送信パケットを計測パケットとして利用し、ボトルネックの物理帯域、ボトルネックの空き帯域の情報を推定し、これを、装置間コネクション終端部から、送信レート制御部へのコネクション毎輻輳情報に付与するものである。送信パケットを計測パケットとして利用するボトルネックの物理帯域の推定方法は、例えば、送信パケットを複数個連続して送れる場合に、前述のｐａｃｋｅｔ−ｐａｉｒの手法を使う方法が考えられる。また、送信パケットを計測パケットとして利用したボトルネックの空き帯域の推定方法については、例えば、Ｃａｏ  Ｌｅ  Ｔｈａｎｈ  Ｍａｎ、長谷川剛、村田正幸、″アクティブＴＣＰコネクションを用いたインタインネットワーク計測、″電子情報通信学会ソサエティ大会、Ｍａｒｃｈ  ２００３、に掲載されている方式を用いればよい。【０２７２】  ・装置間コネクション終端部：
本発明の第１の実施の形態の装置間コネクション終端部と比べ、（１）インライン計測部からの指示に従ったパケット送信を行う点、インライン計測部へ通信相手からのＡＣＫパケットの到着とそのヘッダ情報を伝える点、（３）送信レート制御部にコネクション毎輻輳情報を通知する際に、インライン計測部が求めた、ボトルネックの物理帯域、ボトルネックの空き帯域の情報を同時に通知する点のみが異なる。【０２７３】  ・送信レート制御部９００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを、各中継コネクションに割り当てる。総送信レートＲ＿ｔｏｔａｌの決め方としては、現在中継中のコネクション数、各装置間コネクション終端部からのコネクション毎輻輳情報、アプリケーション情報解析部からの情報に依存して決定しても良く、例えば次のような方法がある。【０２７４】  （総送信レート決定方法Ａ９）
装置間コネクション終端部からのコネクション毎輻輳情報に依存して決定する。たとえば、各装置間コネクション終端部からのコネクション毎輻輳情報の、ボトルネック物理帯域の推定値、空き帯域の推定値について、各装置間コネクション終端部間での平均値をとって、ボトルネック物理帯域の推定値Ｒｂ、空き帯域の推定値Ｒａとする。所望の実効レートＲ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０２７５】  （総送信レート決定方法Ｂ９）
所望の実効レートＲ＿ｔａｒｇｅｔが現在中継中のコネクション数に見合ったものになるように、Ｒ＿ｔｏｔａｌを現在中継中のコネクション数に依存して決める。装置間コネクション終端部からのコネクション毎輻輳情報の、ボトルネック物理帯域の推定値、空き帯域の推定値について、各装置間コネクション終端部間で、尤も推定誤差の小さなものをボトルネック物理帯域の推定値Ｒｂ、空き帯域の推定値Ｒａとする（コネクション毎輻輳情報に、計測した回数など、推定誤差に関連する情報も付与させればよい）。１コネクション当たりＲ＿ｏのレートが得られる事を望む場合、中継制御部によって登録されている現在のコネクション数ｍを元に、Ｒ＿ｔａｒｇｅｔ＝Ｒ＿ｏ＊ｍと決定する。所望の帯域Ｒ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０２７６】  （総送信レート決定方法Ｃ９）
各中継コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔに現在ｍ本のコネクションを中継しているとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ＿ｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌ＿ｉ（ｉ＝１，…，ｍ）回のパケットロスを検知したとする。時刻ｔ−Ｔから時刻ｔの間に、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌｉ（ｉ＝１，…，ｍ）回のパケットロスを検知し、各中継コネクションの平均パケットサイズがＤｉ（ｉ＝１，…，ｍ）であったとする。時刻ｔ−Ｔから時刻ｔの間に、【０２７７】
【数２１】
0004433202.tif 000022
のデータ量を送ろうとして、【０２７８】
【数２２】
0004433202.tif 000023
のデータが、パケットロスで送れなかったので、データのロス率は、【０２７９】
【数２３】
0004433202.tif 000024
である。同じ輻輳状況が続くと仮定し、実効レートＲ＿ｔａｒｇｅｔを確保するために、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ）とする。ただし、極端な輻輳を避けるため、あるパケットロス率の閾値Ｐ＿０に対して、Ｐ＞Ｐ＿０の場合には、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ＿０）とする。【０２８０】  （総送信レート決定方法Ｄ９）
出来るだけ大きな実効レートが得られるように、Ｒ＿ｔｏｔａｌを各装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔに現在ｍ本のコネクションを中継しているとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ＿ｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌ＿ｉ（ｉ＝１，…，ｍ）回のパケットロスを検知したとする。時刻ｔ−Ｔから時刻ｔの間に、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣｉ（ｉ＝１，…，ｍ）個のパケットを送り、Ｌｉ（ｉ＝１，…，ｍ）回のパケットロスを検知し、各中継コネクションの平均パケットサイズがＤｉ（ｉ＝１，…，ｍ）であったとする。時刻ｔ−Ｔから時刻ｔの間に、【０２８１】
【数２４】
0004433202.tif 000025
のデータ量を送ろうとして、【０２８２】
【数２５】
0004433202.tif 000026
のデータが、パケットロスで送れなかったので、データのロス率は、【０２８３】
【数２６】
0004433202.tif 000027
である。過去の送信レートＲ＿ｔｏａｔｌとその時のデータロス率Ｐから、送信レートと実際に受信側に届いたレート（＝Ｒ＿ｔｏｔａｌ＊（１−Ｐ））の関係を求めた表を作る。この表を作るデータは、順次更新してゆくとする。実際に受信側に届いたレートが最大になる送信レートの値をＲ＿ｔｏｔａｌとする。ただし、過去の送信レートＲ＿ｔｏｔａｌがまだ十分に蓄積されていなければ、あらかじめ設定されているＲ＿ｔｏｔａｌを使う。【０２８４】  （総送信レート決定方法Ｅ９）
現在中継しているアプリケーションに見合った所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、Ｒ＿ｔｏｔａｌをアプリケーション情報解析部からの情報も利用して決める。例えば、ストリーミングコネクションのみを中継している時、アプリケーション情報解析部からストリーミングのレート情報を得て、それらの合計値をＲ＿ｔａｒｇｅｔとし、送信レート決定方法Ｃ２に従ってＲ＿ｔｏｔａｌを求める。【０２８５】  （総送信レート決定方法Ｆ９）
ボトルネックを共有する他のトラヒック（トランスポート層中継装置Ｅ００１によって中継されるパケットに影響を与える、トランスポート層中継装置Ｅ００１によって中継されないパケット）に対する優先度付けをした、実効レートが得られるように、Ｒ＿ｔｏｔａｌを、現在のコネクション数ｍ、および、装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、コネクション毎輻輳情報から得られる、中継コネクションが通るネットワークのパケットロス率ｐ、ＲＴＴを使ってＴＣＰの１本あたりの実効レートを推定し、そのα倍のレートをｍ倍する。ＴＣＰの１本あたりの実効レートの推定方法としては、Ｍ．Ｈａｎｄｌｅｙ，Ｓ．Ｆｌｏｙｄ，Ｊ．Ｐａｄｈｙｅ，Ｊ．Ｗｉｄｍｅｒ，″ＴＣＰ  Ｆｒｉｅｎｄｌｙ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ（ＴＦＲＣ）：Ｐｒｏｔｏｃｏｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，″Ｉｎｔｅｒｎｅｔ  Ｓｏｃｉｅｔｙ，ＲＦＣ  ３４４８，Ｊａｎｕａｒｙ  ２００３．の３．１節の″ｔｈｒｏｕｇｈｐｕｔ  ｅｑｕａｔｉｏｎ″のＸで与えられているような計算式でもよい。即ち、中継コネクション終端部からのコネクション毎輻輳情報を利用し、パケットロス発生率ｐ、ＲＴＴの指数平均値Ｒ、ＴＣＰのタイムアウト時間の推定値ｔ＿ＲＴＯ（例えば、Ｒの２倍とする）、中継コネクションのあるネットワークのＴＣＰのパケットサイズの平均値をｓ（バイト）（ｓは経験的に知られている値でも良い）、ｂ＝２として、【０２８６】
【数２７】
0004433202.tif 000028
と求め、Ｒ＿ｔｏｔａｌ＝ｍ・α・Ｘ（ｂｉｔ／ｓｅｃ）と決定する。αを１より大きくすれば、１本あたりの送信レートを他のトラヒックに対して高くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に上げることが出来る。逆に、αを１未満にすれば、１本あたりの送信レートを他のトラヒックに対して低くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に下げることが出来る。【０２８７】  このようにして決めたＲ＿ｔｏｔａｌを各中継コネクションへ割り当てる。このレート割り当ては、現在のコネクション数や、アプリケーション情報解析部からの情報に依存して決めても良く、例えば、次のような方法が考えられる。【０２８８】  （送信レート割り当て方法１）
全コネクションに公平にレートを割り当てる。即ち、コネクションがｍ本あれば、Ｒ＿ｔｏｔａｌ／ｍのレートを各コネクションに割り当てる。【０２８９】  （送信レート割り当て方法２）
コネクション識別子のポート番号情報に依存して、決められたルールに従って割り当てる。たとえば、ポート番号毎に優先度を付け、それの優先度に応じてレートを割り当てる。【０２９０】  （送信レート割り当て方法３）
アプリケーション情報解析部からの情報に依存して決定する。例えば、ＨＴＴＰコネクションでデータ転送を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られた、ＨＴＴＰのＣｏｎｔｅｎｔ−ｔｙｐｅフィールドの値に依存して優先度を付けた帯域割り当てを行う。別の例としては、ＨＴＴＰでファイル取得を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られたＨＴＴＰのＣｏｎｔｅｎｔ−ｌｅｎｇｔｈフィールドの情報に依存して、短いサイズのデータを転送しているコネクションにより高い帯域を割り当てる。また別の例として、Ｎｓ本のストリーミングタイプのアプリケーションのコネクションと、Ｎｆ本のＨＴＴＰを使ったファイル転送タイプのアプリケーションを中継している場合を考える。アプリケーション情報解析部から得られた、各ストリーミングのレートがＲＳｉ（ｉ＝１，…，Ｎｓ）とし、アプリケーション情報解析部から得られた、ファイル転送タイプのコネクションのファイルサイズをＦＬｉ（ｉ＝１，…，Ｎｆ）とする。ストリーミングタイプのコネクションについては、公平なレート（Ｒ＿ｔｏｔａｌを現在のコネクション数Ｎｓ＋Ｎｆで割ったもの）より低いレートのものには、そのストリーミングのレートＲＳｉ（ｉ＝１，…，Ｎｓ０）を割り当てる。残ったレート【０２９１】
【数２８】
0004433202.tif 000029
を、まだ割り当てをしていないストリーミングコネクションに優先的に割り当て、さらに残ったレートを、ファイル転送タイプのコネクションのうちファイルサイズが短いもの順に高いレートを割り当てる。【０２９２】  〔動作の説明〕
次に、本発明の第９の実施の形態の動作は、本発明の第１の実施の形態の動作と同様である。違いは、装置間コネクション終端部が、その内部のインライン計測部からの、ボトルネックの物理帯域、空き帯域の推定値の情報を付与して、送信レート制御部９００３へ、コネクション毎輻輳情報を通知する事と、送信レート制御部が、送信レート決定の際に、Ａ９、Ｂ９に示したような、インライン計測部からの、ボトルネックの物理帯域、空き帯域の推定値の情報も用いた送信レートの決定を行う点のみである。【０２９３】  〔発明の第９の実施の形態の効果〕
発明の第９の実施の形態では、本発明の第１の実施の形態の効果に加え、次のような効果が得られる。送信レート制御部において、総送信レート決定方法Ａ２、Ｂ２の方法を用いることにより、ボトルネックの物理帯域や空き帯域の推定値も考慮した、送信レート決定を行うことにより、高い精度での所望の実効レートの確保や、他のトラヒックに対して高い精度で優先度をつけた実効レートを確保する事が可能になることにある。【０２９４】  〔本発明の第１０の実施の形態〕
〔構成の説明〕
次に本発明の第１０の実施の形態の構成について図面を参照して詳細に説明する。【０２９５】  図３０は、本発明の第１０の実施の形態の、トランスポート層中継装置Ｅ０１０の内部ブロック図である。本発明の第３の実施の形態のトランスポート層中継装置Ｅ００３と比べ、装置間コネクション終端部へ、インライン計測部が加わっている点、送信レート制御部３００３の代わりに送信レート制御部１０００３を備えている点が異なる。インライン計測部の追加によって、本発明の第３の実施の形態から変更が有る部分のみ説明する。なお、トランスポート層中継装置Ｅ０１０は、コンピュータによって実現可能である。コンピュータによって実現する場合は、ディスク、半導体メモリ、その他の記録媒体に、中継制御部３００１、中継部３００２−１〜３００２−ｎ、送信レート制御部１０００３、インライン計測部を有する装置間コネクション終端部１０００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現するためのプログラムを記録しておく。このプログラムはコンピュータによって読み取られ、その動作を制御することで、コンピュータ上に中継制御部３００１、中継部３００２−１〜３００２−ｎ、送信レート制御部１０００３、インライン計測部を有する装置間コネクション終端部１０００４、ＭＵＸ−ＤＥＭＵＸ部３００５を実現する。【０２９６】  ・インライン計測部：
装置間コネクション終端部に指示し、送信パケットを計測パケットとして利用し、ボトルネックの物理帯域、ボトルネックの空き帯域の情報を推定し、これを、装置間コネクション終端部から、送信レート制御部へのコネクション毎輻輳情報に付与するものである。【０２９７】  送信パケットを計測パケットとして利用するボトルネックの物理帯域の推定方法は、例えば、送信パケットを複数個連続して送れる場合に、前述のｐａｃｋｅｔ−ｐａｉｒの手法を使う方法が考えられる。また、送信パケットを計測パケットとして利用したボトルネックの空き帯域の推定方法については、例えば、Ｃａｏ  Ｌｅ  Ｔｈａｎｈ  Ｍａｎ、長谷川剛、村田正幸、″アクティブＴＣＰコネクションを用いたインタインネットワーク計測、″電子情報通信学会ソサエティ大会、Ｍａｒｃｈ  ２００３、に掲載されている方式を用いればよい。【０２９８】  ・装置間コネクション終端部１０００４：
本発明の第３の実施の形態の装置間コネクション終端部と比べ、（１）インライン計測部からの指示に従ったパケット送信を行う点、インライン計測部へ通信相手からのＡＣＫパケットの到着とそのヘッダ情報を伝える点、（３）送信レート制御部にコネクション毎輻輳情報を通知する際に、インライン計測部が求めた、ボトルネックの物理帯域、ボトルネックの空き帯域の情報を同時に通知する点のみが異なる。【０２９９】  ・送信レート制御部１０００３：
現在中継中のコネクションの総送信レートをＲ＿ｔｏｔａｌとし、これを、各中継コネクションに割り当てる。総送信レートＲ＿ｔｏｔａｌの決め方としては、総送信レートＲ＿ｔｏｔａｌの決め方としては、現在中継中のコネクション数、各装置間コネクション終端部からのコネクション毎輻輳情報、アプリケーション情報解析部からの情報に依存して決定しても良く、例えば次のような方法がある。【０３００】  （総送信レート決定方法Ａ１０）
装置間コネクション終端部からのコネクション毎輻輳情報に依存して決定する。たとえば、各装置間コネクション終端部からのコネクション毎輻輳情報の、ボトルネック物理帯域の推定値をＲｂ、空き帯域の推定値をＲａとする。所望の実効レートＲ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０３０１】  （総送信レート決定方法Ｂ１０）
所望の実効レートＲ＿ｔａｒｇｅｔが現在中継中のコネクション数に見合ったものになるように、Ｒ＿ｔｏｔａｌを現在中継中のコネクション数に依存して決める。装置間コネクション終端部からのコネクション毎輻輳情報の、ボトルネック物理帯域の推定値をＲｂ、空き帯域の推定値をＲａとする。１コネクション当たりＲ＿ｏのレートが得られる事を望む場合、中継制御部によって登録されている現在のコネクション数ｍを元に、Ｒ＿ｔａｒｇｅｔ＝Ｒ＿ｏ＊ｍと決定する。【０３０２】  所望の帯域Ｒ＿ｔａｒｇｅｔが、ボトルネックの空き帯域Ｒａより小さければ、Ｒ＿ｔｏｔａｌ−Ｒ＿ｔａｒｇｅｔ・αとし、Ｒａ＜Ｒ＿ｔａｒｇｅｔ＜Ｒｂであれば、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ・βと決める。α、βは、あらかじめ決められた値であり、１＜α、１＜βである。【０３０３】  （総送信レート決定方法Ｃ１０）
所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、装置間コネクション終端部からのコネクション毎輻輳情報を利用してＲ＿ｔｏｔａｌを決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ個のパケットを送り、Ｌ回のパケットロスを検知したとすると、パケットロス率は、Ｐ＝Ｌ／Ｃである。同じ輻輳状況が続くと仮定し、目標レート（Ｒ＿ｔａｒｇｅｔ）にするために、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ）とする。ただし、極端な輻輳を避けるため、あるデータロス率の閾値Ｐ＿０に対して、Ｐ＞Ｐ＿０の場合には、Ｒ＿ｔｏｔａｌ＝Ｒ＿ｔａｒｇｅｔ／（１−Ｐ＿０）とする。【０３０４】  （総送信レート決定方法Ｄ１０）
出来るだけ大きな実効レートが得られるように、Ｒ＿ｔｏｔａｌを各装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、時間Ｔ毎に、総送信レートを更新するものとし、時刻ｔ−Ｔから時刻ｔの間に、各中継コネクションがＣ個のパケットを送り、Ｌ回のパケットロスを検知したとすると、パケットロス率は、Ｐ＝Ｌ／Ｃである。渦去の送信レートＲ＿ｔｏａｔｌその時のデータロス率Ｐから、送信レートと実際に受信側に届いたレート（＝Ｒ＿ｔｏｔａｌ＊（１−Ｐ））の関係を求めた表を作る。この表を作るデータは、順次更新してゆくとする。実際に受信側に届いたレートが最大になる送信レートの値をＲ＿ｔｏｔａｌとする。ただし、過去の送信レートＲ＿ｔｏｔａｌがまだ十分に蓄積されていなければ、あらかじめ設定されているＲ＿ｔｏｔａｌを使う。【０３０５】  （総送信レート決定方法Ｅ１０）
現在中継しているアプリケーションに見合った所望の実効レートＲ＿ｔａｒｇｅｔが得られるように、Ｒ＿ｔｏｔａｌをアプリケーション情報解析部からの情報も利用して決める。例えば、ストリーミングコネクションのみを中継している時、アプリケーション情報解析部からストリーミングのレート情報を得て、それらの合計値をＲ＿ｔａｒｇｅｔとし、送信レート決定方法Ｃ３に従ってＲ＿ｔｏｔａｌを求める。【０３０６】  （総送信レート決定方法Ｆ１０）
ボトルネックを共有する他のトラヒックに対する優先度付けをした、実効レートが得られるように、Ｒ＿ｔｏｔａｌを、現在のコネクション数ｍ、および、装置間コネクション終端部からのコネクション毎輻輳情報を利用して決める。例えば、コネクション毎輻輳情報から得られる、中継コネクションが通るネットワークのパケットロス率Ｐ、ＲＴＴを使ってＴＣＰの１本あたりの実効レートトを推定し、そのα倍のレートをｍ倍してもよい。ＴＣＰの１本あたりの実効レートの推定方法としては、Ｍ．Ｈａｎｄｌｅｙ，Ｓ．Ｆｌｏｙｄ，Ｊ．Ｐａｄｈｙｅ，Ｊ．Ｗｉｄｍｅｒ，″ＴＣＰ  Ｆｒｉｅｎｄｌｙ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ（ＴＦＲＣ）：Ｐｒｏｔｏｃｏｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，″Ｉｎｔｅｒｎｅｔ  Ｓｏｃｉｅｔｙ，ＲＦＣ  ３４４８，Ｊａｎｕａｒｙ  ２００３．の３．１節の″ｔｈｒｏｕｇｈｐｕｔ  ｅｑｕａｔｉｏｎ″のＸで与えられているような計算式でもよい。即ち、中継コネクション終端部からのコネクション毎輻輳情報を利用し、パケットロス発生率ｐ（ｐの計算の際には、ＲＴＴ以内のパケットロスも１つのロスイベントと考えて計算する）、ＲＴＴの指数平均値Ｒ、ＴＣＰのタイムアウト時間の推定値ｔ＿ＲＴＯ（例えば、Ｒの２倍とする）、中継コネクションのあるネットワークのＴＣＰのパケットサイズの平均値をｓ（バイト）（ｓは経験的に知られている値でも良い）、ｂ＝２として、【０３０７】
【数２９】
0004433202.tif 000030
と求め、Ｒ＿ｔｏｔａｌ＝ｍ・α・Ｘ（ｂｉｔ／ｓｅｃ）と決定する。αを１より大きくすれば、１本あたりの送信レートを他のトラヒックに対して高くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に上げることが出来る。逆に、αを１未満にすれば、１本あたりの送信レートを他のトラヒックに対して低くする事が出来、中継するトラヒックの他のトラヒックに対する優先度を相対的に下げることが出来る。【０３０８】  このようにして決めたＲ＿ｔｏｔａｌを各中継コネクションへ割り当てる。このレート割り当ては、現在のコネクション数や、アプリケーション情報解析部からの情報に依存して決めても良く、例えば、次のような方法が考えられる。【０３０９】  （送信レート割り当て方法１）
全コネクションに公平にレートを割り当てる。即ち、コネクションがｍ本あれば、Ｒ＿ｔｏｔａｌ／ｍのレートを各コネクションに割り当てる。【０３１０】  （送信レート割り当て方法２）
コネクション識別子のポート番号情報に依存して、決められたルールに従って割り当てる。たとえば、ポート番号毎に優先度を付け、それの優先度に応じてレートを割り当てる。【０３１１】  （送信レート割り当て方法３）
アプリケーション情報解析部からの情報に依存して決定する。例えば、ＨＴＴＰコネクションでデータ転送を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られた、ＨＴＴＰのＣｏｎｔｅｎｔ−ｔｙｐｅフィールドの値に依存して優先度を付けた帯域割り当てを行う。別の例としては、ＨＴＴＰでファイル取得を行うアプリケーションの複数のコネクションを中継している場合に、アプリケーション情報解析部から得られたＨＴＴＰのＣｏｎｔｅｎｔ−ｌｅｎｇｔｈフィールドの情報に依存して、短いサイズのデータを転送しているコネクションにより高い帯域を割り当てる。また別の例として、Ｎｓ本のストリーミングタイプのアプリケーションのコネクションと、Ｎｆ本のＨＴＴＰを使ったファイル転送タイプのアプリケーションを中継している場合を考える。アプリケーション情報解析部から得られた、各ストリーミングのレートがＲＳｉ（ｉ＝１，…，Ｎｓ）とし、アプリケーション情報解析部から得られた、ファイル転送タイプのコネクションのファイルサイズをＦＬｉ（ｉ＝１，…，Ｎｆ）とする。ストリーミングタイプのコネクションについては、公平なレート（Ｒ＿ｔｏｔａｌを現在のコネクション数Ｎｓ＋Ｎｆで割ったもの）より低いレートのものには、そのストリーミングのレートＲＳｉ（ｉ＝１，…，Ｎｓ０）を割り当てる。残ったレート【０３１２】
【数３０】
0004433202.tif 000031
を、まだ割り当てをしていないストリーミングコネクションに優先的に割り当て、さらに残ったレートを、ファイル転送タイプのコネクションのうちファイルサイズが短いもの順に高いレートを割り当てる。【０３１３】  〔動作の説明〕
次に、本発明の第１０の実施の形態の動作は、本発明の第３の実施の形態の動作と同様である。違いは、装置間コネクション終端部が、その内部のインライン計測部からの、ボトルネックの物理帯域、空き帯域の推定値の情報を付与して、送信レート制御部へ、コネクション毎輻輳情報を通知する事と、送信レート制御部が、送信レート決定の際に、Ａ１０、Ｂ１０に示したような、インライン計測部からの、ボトルネックの物理帯域、空き帯域の推定値の情報も用いた送信レートの決定を行う点のみである。【０３１４】  〔発明の第１０の実施の形態の効果〕
発明の第１０の実施の形態では、本発明の第３の実施の形態の効果に加え、次のような効果が得られる。送信レート制御部において、総送信レート決定方法Ａ１０、Ｂ１０の方法を用いることにより、ボトルネックの物理帯域や空き帯域の推定値も考慮した、送信レート決定を行うことにより、高い精度での所望の実効レートの確保や、他のトラヒックに対して高い精度で優先度をつけた実効レートを確保する事が可能になることにある。
【図１】
0004433202.tif 000032
【図２】
0004433202.tif 000033
【図３】
0004433202.tif 000034
【図４】
0004433202.tif 000035
【図５】
0004433202.tif 000036
【図６】
0004433202.tif 000037
【図７】
0004433202.tif 000038
【図８】
0004433202.tif 000039
【図９】
0004433202.tif 000040
【図１０】
0004433202.tif 000041
【図１１】
0004433202.tif 000042
【図１２】
0004433202.tif 000043
【図１３】
0004433202.tif 000044
【図１４】
0004433202.tif 000045
【図１５】
0004433202.tif 000046
【図１６】
0004433202.tif 000047
【図１７】
0004433202.tif 000048
【図１８】
0004433202.tif 000049
【図１９】
0004433202.tif 000050
【図２０】
0004433202.tif 000051
【図２１】
0004433202.tif 000052
【図２２】
0004433202.tif 000053
【図２３】
0004433202.tif 000054
【図２４】
0004433202.tif 000055
【図２５】
0004433202.tif 000056
【図２６】
0004433202.tif 000057
【図２７】
0004433202.tif 000058
【図２８】
0004433202.tif 000059
【図２９】
0004433202.tif 000060
【図３０】
0004433202.tif 000061