(57)【特許請求の範囲】
【請求項１】
送信機と受信機とが複数の網で接続された通信システムであって、
前記受信機は、ＡＣＫの送信契機となったパケットを受信した網に、折り返しＡＣＫを送信するＡＣＫ送信部を備え、
前記送信機は、
ＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算する、網ごとに設置された複数のＲＴＴ計算部と、
それぞれのＲＴＴ計算部でＲＴＴと最小ＲＴＴとが計算される毎に、該計算されたＲＴＴと最小ＲＴＴとの差を用いて、当該計算を行ったＲＴＴ計算部に対応する網の混雑を反映した送信レートを決定するレート計算部と、
前記受信機へ送信するパケットを格納し、該格納したパケットを前記レート計算部で決定された送信レートに従って出力する送信バッファと、
該送信バッファから出力されたパケットを各網ごとの網インタフェースへ配分する送信振分部と
を備える通信システム。
【請求項２】
前記ＡＣＫ送信部は、各網ごとに、ＡＣＫを前回送信してから予め定められたＮ個のパケットを受信したとき、及びＡＣＫを前回送信してから１つ以上のパケットを受信し且つ予め定められた時間が経過したときに、１つのＡＣＫを送信することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記受信機は、ＡＣＫ送信対象パケット数をカウントする、網ごとに設置されたカウンタと、ＡＣＫ送信間隔を監視してＡＣＫ送信を指示する、網ごとに設置されたタイマと、タイマ満了時にＡＣＫに記載するデータを保存する、網ごとに設置されたＤＢとを備えることを特徴とする請求項２に記載の通信システム。
【請求項４】
前記送信機は、前記受信機へ送信するパケットにシーケンスナンバーを設定するＳＥＱ付与部を備え、
前記受信機は、受信したパケットを格納する、各網ごとの順序バッファと、各網ごとの順序バッファからシーケンスナンバーの順にパケットを取り出して出力バッファに格納する取出制御部と、前記出力バッファに格納されたパケットに設定されたシーケンスナンバーを削除してデータ受信部へ出力するＳＥＱ削除部とを備えることを特徴とする請求項１に記載の通信システム。
【請求項５】
送信機と受信機とが複数の網で接続された通信システムにおける通信方法であって、
前記受信機が、ＡＣＫの送信契機となったパケットを受信した網に、折り返しＡＣＫを送信し、
前記送信機が、網ごとに、ＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算し、
前記送信機が、網ごとに、各網ごとの最新測定ＲＴＴと、各網ごとの最小ＲＴＴとの差を用いて、網の混雑を反映した送信レートを決定し、
前記送信機が、前記受信機へ送信するパケットを格納する送信バッファから、前記決定された送信レートに従ってパケットを出力し、
前記送信機が、前記送信バッファから出力されたパケットを各網ごとの網インタフェースへ配分する通信方法。
【請求項６】
前記受信機は、各網ごとに、ＡＣＫを前回送信してから予め定められたＮ個のパケットを受信したとき、及びＡＣＫを前回送信してから１つ以上のパケットを受信し且つ予め定められた時間が経過したときに、１つのＡＣＫを送信することを特徴とする請求項５に記載の通信方法。
【請求項７】
ＡＣＫの送信契機となったパケットを受信した網に折り返しＡＣＫを送信する受信機と複数の網で接続された送信機であって、
受信したＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算する、網ごとに設置された複数のＲＴＴ計算部と、
それぞれのＲＴＴ計算部でＲＴＴと最小ＲＴＴとが計算される毎に、該計算されたＲＴＴと最小ＲＴＴとの差を用いて、当該計算を行ったＲＴＴ計算部に対応する網の混雑を反映した送信レートを決定するレート計算部と、
前記受信機へ送信するパケットを格納し、該格納したパケットを前記レート計算部で決定された送信レートに従って出力する送信バッファと、
該送信バッファから出力されたパケットを各網ごとの網インタフェースへ配分する送信振分部と
を備える送信機。
【請求項８】
ＡＣＫの送信契機となったパケットを受信した網に折り返しＡＣＫを送信する受信機と複数の網で接続された送信機を構成するコンピュータを、
受信したＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算する、網ごとに設置された複数のＲＴＴ計算部と、
それぞれのＲＴＴ計算部でＲＴＴと最小ＲＴＴとが計算される毎に、該計算されたＲＴＴと最小ＲＴＴとの差を用いて、当該計算を行ったＲＴＴ計算部に対応する網の混雑を反映した送信レートを決定するレート計算部と、
前記受信機へ送信するパケットを格納し、該格納したパケットを前記レート計算部で決定された送信レートに従って出力する送信バッファと、
該送信バッファから出力されたパケットを各網ごとの網インタフェースへ配分する送信振分部と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数経路にデータを分散させて帯域拡大を図る通信技術に関し、特に送信機と受信機が複数の網によって接続されているマルチパス環境において、１段のみのレート管理で、遅延ベースのレート制御を行うための通信システム、通信方法、送信機、受信機、レート計算方法およびプログラムに関する。
【背景技術】
【０００２】
従来、キューイング遅延を小さくし、転送レイテンシを小さくする輻輳制御方法として、遅延ベースのレート制御がある（たとえば、特許文献１）。この方法では、ある網における直近に測定した往復遅延時間（ＲＴＴ）と、これまでに測定した最小往復遅延時間（ＲＴＴｍｉｎ）との差分により、キューイング遅延時間を算出し、このキューイング遅延時間が最小となるように、送信レートの増加及び減少を制御する。
【０００３】
また従来、送信端末と受信端末の間の通信で用いられる１つの通信フローのデータを複数のフローに分岐させ、元のフローを復元する通信方法がある。このような通信方法として、例えば送信端末が属する第１のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と受信端末が属する第２のＬＡＮに、それぞれゲートウェイを設置し、送信端末から送出されたＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）コネクションのデータを、第１のＬＡＮのゲートウェイにおいてパケット単位でそれぞれの通信経路に振り分け、第２のＬＡＮのゲートウェイでは複数の通信経路から受信したパケットの順序逆転をＴＣＰのシーケンス番号に従って補正してデータを復元する方法が提案されている（たとえば、特許文献２参照）。
【０００４】
また従来、複数の通信回線を効率的に利用し、回線利用率を向上させる方法として、端末のＴＣＰに機能を追加して、従来１本のＴＣＰコネクションを用いていた通信を複数のＴＣＰコネクションを利用するように変更する方法がある（例えば、特許文献３参照）。この方法では、送信端末と受信端末間の通信で１つの通信フローで行われていた通信を、複数の通信フローに分割して並列的に送る。送信端末から受信端末へとデータを送信する場合、送信端末の通信プロトコルは、１つの通信フローのデータを分割して複数の通信フローに振り分け、分割した複数の通信フローを元の１つの通信フローに復元するための復元情報として新たなヘッダをＴＣＰ／ＩＰパケットに付加して（つまり２系統のシーケンス番号を用いて）、複数の通信フローでデータを送信する。受信端末の通信プロトコルは、複数の通信フローから受信したデータの復元情報を参照し、１つの通信フローを復元する。
【０００５】
【特許文献１】特開２００６−０１４３２９号公報
【特許文献２】特開２０００−２６１４７８号公報
【特許文献３】特開２００３−１１０６０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
第１の課題として、帯域を有効利用できないという問題があった。
【０００７】
従来技術１のレート制御方法は、ある一定の最小往復遅延時間（ＲＴＴｍｉｎ）を有する１つの通信経路において使用されることを前提として、直近に測定したＲＴＴと過去に測定したＲＴＴｍｉｎとの差分によりレート計算を行うように設計されている。これと従来技術２のようなゲートウェイを組み合わせて、複数の通信経路を用いた通信を行うと、通信経路ごとの最小往復遅延時間に差がある場合に、キューイング遅延を大きく見積もってしまい、送信レート（帯域）を大幅に制限してしまう。つまり、常に混雑が発生していると誤認識し、送信速度を大幅に低下させるため、帯域を有効利用できない。
【０００８】
たとえば図６に示すように、網３１〜３４の最小往復遅延時間（ＲＴＴｍｉｎ）が、それぞれ１５０ｍｓ、２００ｍｓ、１００ｍｓ、１８０ｍｓと異なる値である場合、従来技術１と従来技術２を単純に組み合わせて利用すると、従来技術１のレート制御機構は、網毎にＲＴＴｍｉｎを保持することができないため、ＲＴＴｍｉｎは１００ｍｓであると認識する。この結果、網３１における最新の測定ＲＴＴが１５０ｍｓであった場合、つまり、網３１に全く混雑が発生していない場合でも、５０ｍｓのキューイング遅延すなわち混雑が発生しているとみなし、キューイング遅延が０になるまで送信レートを低下させる。図６の例では、網３２および網３４においても同様に、混雑が発生していないにもかかわらず、混雑が発生していると誤認識し、大幅にレートを低下させる。
【０００９】
第２の課題として、網毎（複数系統）のレート管理を行うと、大きなバッファを必要するにも関わらず、性能を得られないという問題があった。
【００１０】
従来技術１と従来技術３を組合せて、網毎に細かくレート計算を行うことで、第１の課題を回避することもできる。しかしながら、従来技術１と従来技術３を組合せた場合、レート計算処理、転送処理ならびに管理機構などが複雑化し、コスト増を招くという問題があった。
【００１１】
さらに、従来技術１と従来技術３を組合せて、網毎に細かくレート計算を行った場合において、端末に対する順序保証を行う場合は、受信側において、高速な網を経由して先に到着したパケットが、最も低速な網を経由してあとから到着するパケットを待つ必要がある（ヘッドオブラインブロッキング＝ＨＯＬ問題）。したがって、高速なリンクに大量のパケットを送っても、低速なリンクの速度に影響されてしまい、速度が出ないばかりでなく、受信側で高速リンクを経由したパケットを保存しておくために、大量のバッファが必要となる。
【００１２】
本発明の目的は、送信機と受信機が複数の網によって接続されているマルチパス環境において、１系統のみのレート管理で、受信側のバッファを極力小さく抑えながら、遅延ベースのレート制御を行うための通信システム、通信方法、送信機、受信機、レート計算方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の通信システムは、送信機と受信機とが複数の網で接続された通信システムであって、前記受信機は、ＡＣＫの送信契機となったパケットを受信した網に、折り返しＡＣＫを送信するＡＣＫ送信部を備え、前記送信機は、ＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算する、網ごとに設置された複数のＲＴＴ計算部と、各網ごとの最新測定ＲＴＴと、各網ごとの最小ＲＴＴとの差により網の混雑を推定し、レート制御を行うレート計算部とを備える。
【００１４】
本発明の第１の通信方法は、送信機と受信機とが複数の網で接続された通信システムにおける通信方法であって、前記受信機が、ＡＣＫの送信契機となったパケットを受信した網に、折り返しＡＣＫを送信し、前記送信機が、ＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算し、前記送信機が、各網ごとの最新測定ＲＴＴと、各網ごとの最小ＲＴＴとの差により網の混雑を推定し、レート制御を行う。
【００１５】
本発明の第１の送信機は、ＡＣＫの送信契機となったパケットを受信した網に折り返しＡＣＫを送信する受信機と複数の網で接続された送信機であって、受信したＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算する、網ごとに設置された複数のＲＴＴ計算部と、各網ごとの最新測定ＲＴＴと、各網ごとの最小ＲＴＴとの差により網の混雑を推定し、レート制御を行うレート計算部とを備える。
【００１６】
本発明の第１の受信機は、送信機と複数の網で接続された受信機であって、ＡＣＫの送信契機となったパケットを受信した網に、折り返しＡＣＫを送信するＡＣＫ送信部を備える。
【００１７】
本発明の第１のレート計算方法は、送信機と受信機とが複数の網で接続された通信システムにおけるレート計算方法であって、前記受信機が、ＡＣＫの送信契機となったパケットを受信した網に、折り返しでＡＣＫを送信し、前記送信機が、各網ごとにＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算し、前記送信機が、各網ごとの最新測定ＲＴＴと、各網ごとの最小ＲＴＴとの差により網の混雑を推定し、レート制御を行う。
【００１８】
本発明の第１のプログラムは、ＡＣＫの送信契機となったパケットを受信した網に折り返しＡＣＫを送信する受信機と複数の網で接続された送信機を構成するコンピュータを、受信したＡＣＫをもとにＲＴＴ、最小ＲＴＴを計算する、網ごとに設置された複数のＲＴＴ計算部と、各網ごとの最新測定ＲＴＴと、各網ごとの最小ＲＴＴとの差により網の混雑を推定し、レート制御を行うレート計算部として機能させる。
【００１９】
本発明の第２のプログラムは、送信機と複数の網で接続された受信機を構成するコンピュータを、ＡＣＫの送信契機となったパケットを受信した網に、折り返しＡＣＫを送信するＡＣＫ送信部として機能させる。
【発明の効果】
【００２０】
本発明によれば、送信機と受信機が複数の網によって接続されているマルチパス環境において、１段のみのレート管理で、受信側のバッファを極力小さく抑えながら、遅延ベースのレート制御を行うことができる。
【００２１】
これは、受信機が、パケットが到着したＰＨＹ（網）に対して、対応するＡＣＫパケットを送出し、送信機内に、ＲＴＴ、最小ＲＴＴを計算するＲＴＴ計算部を、網毎に設け、レート計算部が、各網ごとの最新ＲＴＴと過去の最小ＲＴＴとの差により網の混雑を推定し、レート制御を行うからである。
【発明を実施するための最良の形態】
【００２２】
以下の説明においては、１対の送信機と受信機との間の通信を、１フローと定義する。また、あるフローが流れる経路をパスと定義する。例えば、１フローを４つの網（ネットワーク）に分散させて通信する場合は、４パスを用いて通信すると言い、２つのフローを４つの網（ネットワーク）に分散させて通信する場合は、８つのパスを用いて通信するという。ただし以下の説明では、１つのフローに着目して説明を行うため、結果的に網とパスが同義になっている。
【００２３】
（第１の実施の形態）
（構成の説明）
図１を参照して、本実施の形態における構成について説明する。
【００２４】
送信機１は、データ送信部１１、送信バッファ１２、送信振分部１３、ＰＨＹ１４１〜１４４、ＲＴＴ計算部１５１〜１５４、レート計算部１６、内蔵時計１９から構成される。
【００２５】
データ送信部１１は、受信機２に対して送信するデータを生成し、前記データを網３１〜網３４で転送可能な大きさに分割し、分割した個々のデータ（以下パケットと呼ぶ）に対して転送に必要なヘッダを設定し、送信バッファ１２に渡す。一般的にはサーバアプリケーションなどが、データ送信部１１にあたる。
【００２６】
送信バッファ１２は、ＦＩＦＯバッファであり、以下の動作をおこなう。
（１）データ送信部１１からパケットを受け取り格納する。
（２）レート計算部１６が決定した速度にしたがい、前記パケットを送信振分部１３に送る。
【００２７】
送信振分部１３は、送信バッファ１２から到着したパケットを、ラウンドロビン等によりＰＨＹ１４１〜１４４に順次振り分けて転送する。この際、内蔵時計１９より時刻情報を取得し、パケットのヘッダに送信時刻を埋め込む。ＰＨＹの指定は、パケットのヘッダ内に送出希望先ＰＨＹのＰＨＹ番号を記載することで行っても良い。
【００２８】
ＰＨＹ１４１は送信振分部１３からパケットを受信し、網３１で伝送可能な形式（電気信号、光信号）に変換して、前記パケットを網３１に送出する。また逆に、網３１からパケット（ＡＣＫ）を受信し、ＲＴＴ計算部１５１に転送する。ＰＨＹ１４１は、網との間のインタフェースであり、一般的には、フィジカルレイヤコントローラ（ｐｈｙｓｉｃａｌ  ｌａｙｅｒ  ｃｏｎｔｒｏｌｌｅｒ）がＰＨＹ１４１にあたる。
【００２９】
ＰＨＹ１４２〜１４４は、網３２〜３４について、ＰＨＹ１４１と同様の動作を行う。
【００３０】
ＲＴＴ計算部１５１は、ＰＨＹ１４１からパケット（ＡＣＫ）を受信し、ＡＣＫパケットのヘッダに埋め込まれている送信時刻と、内蔵時計１９から取得した受信時刻とから、網３１の往復遅延時間（ＲＴＴ）を計算し、レート計算部１６に通知する。この際、網３１のＲＴＴの最小値（最小ＲＴＴ）も保持する。
【００３１】
ＲＴＴ計算部１５２〜１５４は、網３２〜３４に関して、ＲＴＴ計算部１５１と同様の動作を行う。
【００３２】
レート計算部１６は、ＲＴＴ計算部１５１〜１５４よりＲＴＴの通知を受け、今回通知を受けたＲＴＴと、今回通知を受けた網の最小ＲＴＴとの差より、網３１〜３４のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１２からのパケット送信レート（帯域）を決定し、送信バッファ１２に通知する。
【００３３】
レート計算部１６における新規レートＲ’は、Ｒを現在のレート、αを増加定数、βを減少定数、ＲＴＴをＲＴＴ計算部１５１〜１５４より通知を受けたＲＴＴ、ＲＴＴｍｉｎをＲＴＴ計算部１５１〜１５４より通知を受けた最小ＲＴＴ、Ｔｃをレート計算間隔とすると、以下の式で表せる。
Ｒ’＝Ｒ＋（α／ＲＴＴ−β×（ＲＴＴ−ＲＴＴｍｉｎ）×Ｒ／ＲＴＴ）×Ｔｃ
…式１
【００３４】
式１では、現在のレートＲに、どのくらいのレートを増加させるか、減少させるかを考慮して、新規レートＲ’を計算している。具体的には、増加分をα／ＲＴＴ（αは増加定数）により求め、減少分はβ×（ＲＴＴ−ＲＴＴｍｉｎ）×Ｒ／ＲＴＴ（βは減少定数）により求めている。減少分の計算式のうち、（ＲＴＴ−ＲＴＴｍｉｎ）はキューイング遅延、すなわち混雑を表し、これにＲを掛け合わせて（ＲＴＴ−ＲＴＴｍｉｎ）×Ｒとすることで、キューイングされているパケットの量が表せる。さらにこれをＲＴＴで割ることで、１秒間にキューイングされるパケットの量を表せる。これに減少定数を乗じたものを、減少分とすることより、混雑をレートに反映することができる。また、減少分と増加分の双方にＴｃを乗じる理由は、レート計算間隔が短い場合は、減少分・増加分をレートに小さく反映させ、レート計算間隔が長い場合は、減少分・増加分をレートに大きく反映させる為である。
【００３５】
内蔵時計１９は、現在時刻を送信振分部１３およびＲＴＴ計算部１５１〜１５４に通知する。
【００３６】
受信機２は、ＰＨＹ２１１〜２１４、受信受付部２２、データ受信部２３、ＡＣＫ送信部２４から構成される。
【００３７】
ＰＨＹ２１１はＡＣＫ送信部２４からパケットを受信し、網３１で伝送可能な形式（電気信号、光信号）に変換して、前記パケットを網３１に送出する。また逆に、網３１からパケットを受信し、自身のＩＤ（ＰＨＹ番号）と共に、受信受付部２２に転送する。
【００３８】
ＰＨＹ２１２〜２１４は、網３２〜３４について、ＰＨＹ２１１と同様の動作を行う。
【００３９】
受信受付部２２は、ＰＨＹ２１１〜２１４よりパケットとＰＨＹ番号を受信し、パケットをデータ受信部２３に転送する。このとき、ＡＣＫ送信部２４にＰＨＹ番号とパケットのヘッダ内に記された送信時刻情報を通知する。ＰＨＹ番号は、パケットのヘッダ内に記載された送出希望先ＰＨＹ番号を参照して得ても良い。
【００４０】
データ受信部２３は、受信受付部２２よりパケットを受信する。一般的にはクライアントアプリケーションなどがデータ受信部２３にあたる。
【００４１】
ＡＣＫ送信部２４は、受信受付部２２からデータ受信部２３に転送したパケットの送信時刻およびＰＨＹ番号の通知を受け、前記送信時刻を含む送達確認パケット（以下ＡＣＫと示す）を生成し、前記ＰＨＹ番号のＰＨＹに送信する。ＰＨＹの指定は、パケットのヘッダ内に送出希望先ＰＨＹのＰＨＹ番号を記載することで行っても良い。
【００４２】
網３１は、送信機１と受信機２の間を結ぶイーサネット（登録商標）などのネットワークである。図１において網３１は１本の線で表現されているが、実際にはリンクの他にスイッチ等が存在しても良い。また、網３１、３２、３３、３４はそれぞれ物理的、もしくはＶＬＡＮ等で論理的に遮断されており、互いに交わることがない。
【００４３】
網３２〜網３４は、網３１と同様のネットワークである。
【００４４】
（動作概要）
以下、図１を参照して、本実施の形態における送信機１および送信機２の動作概要を説明する。
【００４５】
送信機１において、データ送信部１１が、データ受信部２３に対するパケットを生成し、送信バッファ１２に送付する。
【００４６】
送信バッファ１２は、データ送信部１１よりパケットを受け取り一旦格納する。そしてレート計算部１６より指定された送信レートに従って、格納したパケットを送信振分部１３に送出する。
【００４７】
送信振分部１３は、送信バッファ１２から受け取ったパケットを、ラウンドロビン等によりＰＨＹ１４１〜１４４の各網に分散させて送出する。例えばあるパケットは網３１、次のパケットは網３２、その次のパケットは網３３、その次のパケットは網３４、その次のパケットは再び網３１というように、一連のフローのパケットを、網３１〜３４に振り分ける。
【００４８】
ＰＨＹ１４１〜１４４は、送信振分部１３からパケットを受信すると、網３１〜３４で利用可能な信号（電気信号、光信号など）に変換して送出する。
【００４９】
網３１〜３４は送信機１から送出されたパケットを、受信機２に送る。
【００５０】
ＰＨＹ２１１〜２１４は、網３１〜３４よりパケットを受信し、ＰＨＹ番号と共に受信受付部２２に送る。
【００５１】
受信受付部２２は、ＰＨＹ２１１〜２１４よりパケットを受信すると、前記パケットのヘッダに格納されている送信時刻情報と、前記パケットが到着したＰＨＹのＰＨＹ番号を、ＡＣＫ送信部２４に通知する。そして、前記パケットをデータ受信部２３に転送する。
【００５２】
データ受信部２３は、受信受付部２２からのパケットを受け取り、各種処理を行う。
【００５３】
ＡＣＫ送信部２４は、受信受付部２２から送信時刻およびＰＨＹ番号の通知を受け、通知を受けた送信時刻と受信処理時間（ここでは０）を含むＡＣＫパケットを生成し、通知を受けたＰＨＹ番号のＰＨＹに送信する。なお、ＡＣＫパケット中の受信処理時間は、パケット受信からＡＣＫ送信までに要した時間であり、本実施の形態では常に０になるので、本実施の形態ではＡＣＫパケット中の受信処理時間を省略しても良い。
【００５４】
ＰＨＹ２１１〜２１４は、ＡＣＫ送信部２４からＡＣＫパケットを受信すると、網３１〜３４で利用可能な信号（電気信号、光信号など）に変換して送出する。
【００５５】
網３１〜３４は受信機２から送出されたＡＣＫパケットを、送信機１に送る。
【００５６】
ＰＨＹ１４１〜１４４は、網３１〜３４よりＡＣＫパケットを受信し、ＲＴＴ計算部１５１〜１５４に送る。
【００５７】
ＲＴＴ計算部１５１〜１５４は、ＡＣＫパケットに含まれる送信時刻情報および受信処理時間と、内蔵時計１９から取得した受信時刻より、網３１〜３４のＲＴＴを計算する。具体的には、ＲＴＴ＝受信時刻−送信時刻−受信処理時間を計算する。このとき、最小ＲＴＴも計算して保持する。ＲＴＴ、最小ＲＴＴの計算が完了すると、レート計算部１６に対して、ＲＴＴ、最小ＲＴＴを通知する。
【００５８】
レート計算部１６は、ＲＴＴ計算部１５１〜１５４よりＲＴＴの通知を受け、今回通知を受けたＲＴＴと、今回通知を受けた網の最小ＲＴＴとの差より、網３１〜３４のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１２からのパケット送信レート（帯域）を決定し、送信バッファ１２に通知する。
【００５９】
（動作例）
たとえば図３に示すように、網３１〜３４の最小往復遅延時間（ＲＴＴｍｉｎ）が、それぞれ１５０ｍｓ、２００ｍｓ、１００ｍｓ、１８０ｍｓと異なる値である場合、本実施の形態のＲＴＴ計算部１５１〜１５４は、網３１〜３４の網毎のＲＴＴｍｉｎを、それぞれ１５０ｍｓ、２００ｍｓ、１００ｍｓ、１８０ｍｓであると認識する。この結果、網３１における最新の測定ＲＴＴが１５０ｍｓであった場合、つまり、網３１に全く混雑が発生していない場合は、０ｍｓのキューイング遅延（混雑の発生なし）とみなし、送信レートを上げる。このように、網３１〜３４のＲＴＴｍｉｎがそれそれ異なる場合でも、各網の帯域を充分に利用して、高効率の転送を行うことができる。
【００６０】
（第１の実施の形態の効果）
次に、本実施の形態の効果について説明する。
【００６１】
本実施の形態によれば、送信機１と受信機２が複数の網３１〜３４によって接続されているマルチパス環境において、１段のみのレート管理で、遅延ベースのレート制御を行うことができる。
【００６２】
これは、受信機２が、データパケットが到着したＰＨＹ（網）に対して、対応するＡＣＫパケットを送出し、送信機１内に、ＲＴＴ、最小ＲＴＴを計算するＲＴＴ計算部１５１〜１５４を網毎に設け、レート計算部１６が、各網ごとの最新ＲＴＴと過去の最小ＲＴＴとの差により網の混雑を推定し、レート制御を行うからである。
【００６３】
（第２の実施の形態）
本発明の第２の実施の形態は、カウンタ２５、ＤＢ２６、タイマ２７を設け、Ｎ（Ｎは１以上）個のパケット到着報告を１つのＡＣＫでまとめて行うＮ＿ＡＣＫ方式により、ＡＣＫの数を削減する場合の形態である。
【００６４】
（構成の説明）
図２を参照して、本実施の形態における構成について説明する。
【００６５】
送信機１は、第１の実施の形態と同様の構成を有し、同様の動作を行う。
【００６６】
受信機２は、第１の実施の形態に対して、ＡＣＫ送信部２４がＡＣＫ送信部２４Ａに代わり、カウンタ２５、ＤＢ２６、タイマ２７、内蔵時計２９が追加されている点において異なる。
【００６７】
ＡＣＫ送信部２４Ａは、以下の（１）〜（４）の動作を行う。
【００６８】
（１）受信受付部２２からデータ受信部２３に転送したパケットの送信時刻およびＰＨＹ番号の通知を受けると、ＰＨＹ番号ごとに設置されたＤＢ２６（ＤＢ２６１〜２６４）のうちの通知されたＰＨＹ番号に対応する１つのＤＢに、送信時刻および内蔵時計２９から取得した現在時刻（受信時刻として利用する）を保存し、さらにＰＨＹ番号ごとに設置されたカウンタ（カウンタ２５１〜２５４）のうちの対応する１つのカウンタをインクリメントする。たとえばＰＨＹ２１１からパケットを受信した場合はカウンタ２５１をインクリメントし、ＰＨＹ２１３からパケットを受信した場合はカウンタ２５３をインクリメントする。
【００６９】
（２）（１）におけるカウンタインクリメントの結果、カウンタの値が一定値になった場合は、（１）において受信受付部２２から通知を受けた前記送信時刻と受信処理時間（ここでは０）を含む送達確認パケット（以下ＡＣＫと示す）を生成し、（１）において受信受付部２２から通知を受けたＰＨＹ番号のＰＨＹに送信する。ＰＨＹの指定は、パケットのヘッダ内に送出希望先ＰＨＹのＰＨＹ番号を記載することで行っても良い。またこのとき、ＰＨＹ番号ごとに設置されたタイマ２７（タイマ２７１〜２７４）のうちの通知されたＰＨＹ番号に対応するタイマを一定時間後に満了するよう設定する。さらに、対応するカウンタ値を０にリセットする。
【００７０】
（３）タイマ２７（タイマ２７１〜２７４）が満了した場合は、各タイマに対応するカウンタ２５（カウンタ２５１〜２５４）を参照し、カウンタ値が０でない場合は、各タイマに対応するＤＢ２６（ＤＢ２６１〜ＤＢ２６４）から送信時刻と受信時刻を取得する。次に、内蔵時計２９から時刻を取得し、受信時刻との差分（パケット受信からＡＣＫ送信までの受信処理時間）を計算する。そして、前記送信時刻と前記受信処理時間を含む送達確認パケット（以下ＡＣＫと示す）を生成し、タイマに対応するＰＨＹ番号のＰＨＹに送信する。このとき、ＰＨＹ番号ごとに設置されたタイマ２７（タイマ２７１〜２７４）を一定時間後に満了するよう設定し、さらにカウンタ値を０にリセットする。例えば、タイマ２７１が満了した場合は、ＤＢ２６１から送信時刻と受信時刻を取得し、ＰＨＹ２１１にＡＣＫを送信し、カウンタ２５１を０にリセットする。
【００７１】
（４）タイマ２７に関しては、必ずしも網別に設置する必要はなく、１つのタイマのみ設置し、この１つのタイマが満了した場合に、各網（網３１〜３４）のそれぞれに１つづつＡＣＫを送信することもできる。例えば、タイマ２７１が満了した場合には、以下（ａ）〜（ｄ）の動作を行う。
（ａ）カウンタ２５１を参照し、カウンタ値が０でない場合は、対応するＤＢ２６１から送信時刻と受信時刻を取得し、ＡＣＫを生成しＰＨＹ２１１に送信し、カウンタ２５１を０にリセットする。
（ｂ）カウンタ２５２を参照し、カウンタ値が０でない場合は、対応するＤＢ２６２から送信時刻と受信時刻を取得し、ＡＣＫを生成しＰＨＹ２１２に送信し、カウンタ２５２を０にリセットする。
（ｃ）カウンタ２５３を参照し、カウンタ値が０でない場合は、対応するＤＢ２６３から送信時刻と受信時刻を取得し、ＡＣＫを生成しＰＨＹ２１３に送信し、カウンタ２５３を０にリセットする。
（ｄ）カウンタ２５４を参照し、カウンタ値が０でない場合は、対応するＤＢ２６４から送信時刻と受信時刻を取得し、ＡＣＫを生成しＰＨＹ２１４に送信し、カウンタ２５４を０にリセットする。
【００７２】
カウンタ２５は、内部に網別のカウンタ２５１〜２５４を持ち、ＡＣＫ送信部２４Ａからの要求により、以下のいずれかの動作を行う。
（１）現在のカウンタ値をＡＣＫ送信部２４Ａに通知
（２）カウンタのインクリメント
（３）カウンタを０にリセット
【００７３】
カウンタ２５１は、ＰＨＹ２１１（網３１）に対応するカウンタである。カウンタ２５２は、ＰＨＹ２１２（網３２）に対応するカウンタである。カウンタ２５３は、ＰＨＹ２１３（網３３）に対応するカウンタである。カウンタ２５４は、ＰＨＹ２１４（網３４）に対応するカウンタである。
【００７４】
ＤＢ２６は、内部に網別のデータベースＤＢ２６１〜２６４を持ち、ＡＣＫ送信部２４Ａからの要求により、以下のいずれかの動作を行う。
（１）ＡＣＫ送信部２４Ａから通知された送信時刻、受信時刻などを記録保持
（２）記録されている送信時刻、受信時刻などを回答
【００７５】
ＤＢ２６１は、ＰＨＹ２１１（網３１）に対応するＤＢである。ＤＢ２６２は、ＰＨＹ２１２（網３２）に対応するＤＢである。ＤＢ２６３は、ＰＨＹ２１３（網３３）に対応するＤＢである。ＤＢ２６４は、ＰＨＹ２１４（網３４）に対応するＤＢである。
【００７６】
タイマ２７は、内部に網別のタイマ２７１〜２７４を持ち、ＡＣＫ送信部２４Ａからの要求により、以下のいずれかの動作を行う。
（１）ＡＣＫ送信部２４Ａが指定した一定時間後にタイマが満了するようにセット
（２）セットから一定時間後に、タイマ満了をＡＣＫ送信部２４Ａに通知
（３）過去に設定したタイマを解除
【００７７】
タイマ２７１は、ＰＨＹ２１１（網３１）に対応するタイマである。タイマ２７２は、ＰＨＹ２１２（網３２）に対応するタイマである。タイマ２７３は、ＰＨＹ２１３（網３３）に対応するタイマである。タイマ２７４は、ＰＨＹ２１４（網３４）に対応するタイマである。
【００７８】
（動作例）
（動作概要）
以下、図２を参照して、送信振分部１３がＰＨＹ１４３にパケットを送信した場合を例に、本実施の形態における送信機１および送信機２の動作概要を説明する。
【００７９】
送信機１において、データ送信部１１が、データ受信部２３に対するパケットを生成し、送信バッファ１２に送付する。
【００８０】
送信バッファ１２は、データ送信部１１よりパケットを受け取り一旦格納する。そしてレート計算部１６より指定された送信レートに従って、格納したパケットを送信振分部１３に送出する。
【００８１】
送信振分部１３は、送信バッファ１２から受け取ったパケットを、ラウンドロビン等によりＰＨＹ１４１〜１４４に振り分けて送出する。以降はＰＨＹ１４３に振り分けられた場合を例に説明する。
【００８２】
ＰＨＹ１４３は、送信振分部１３からパケットを受信すると、網３３で利用可能な信号（電気信号、光信号など）に変換して送出する。
【００８３】
網３３は送信機１から送出されたパケットを、受信機２に送る。
【００８４】
ＰＨＹ２１３は、網３３よりパケットを受信し、ＰＨＹ番号と共に受信受付部２２に送る。
【００８５】
受信受付部２２は、ＰＨＹ２１３よりパケットを受信すると、前記パケットのヘッダに格納されている送信時刻情報と、前記パケットが到着したＰＨＹのＰＨＹ番号を、ＡＣＫ送信部２４Ａに通知する。そして、前記パケットをデータ受信部２３に転送する。
【００８６】
データ受信部２３は、受信受付部２２からのパケットを受け取り、各種処理を行う。
【００８７】
ＡＣＫ送信部２４Ａは、受信受付部２２から送信時刻およびＰＨＹ番号の通知を受け、ＤＢ２６３に前記送信時刻および内蔵時計２９から取得した現在時刻（受信時刻として利用する）を保存し、カウンタ２５３をインクリメントする。この結果、カウンタ値があらかじめ設定された閾値に達しない場合は、ここで動作を終了する。
【００８８】
（カウンタが閾値に達した場合）
以下は、ＡＣＫ送信部２４Ａが、受信受付部２２から送信時刻およびＰＨＹ番号（ＰＨＹ２１３）の通知を受け、ＤＢ２６３に前記送信時刻および内蔵時計２９から取得した現在時刻（受信時刻として利用する）を保存し、カウンタ２５３をインクリメントした結果、カウンタ２５３の値があらかじめ設定された閾値に達した場合を例に説明する。
【００８９】
ＡＣＫ送信部２４Ａは、受信受付部２２から送信時刻およびＰＨＹ番号の通知を受け、カウンタ２５３をインクリメントする。この結果、カウンタ値があらかじめ設定された閾値に達した場合は、通知を受けた送信時刻を含むＡＣＫパケットを生成し、通知を受けたＰＨＹ２１３に送信する。また、カウンタ２５３の値を０にリセットする。さらに、タイマ２７３を一定時間後に満了するよう設定する。
【００９０】
ＰＨＹ２１３は、ＡＣＫ送信部２４ＡからＡＣＫパケットを受信すると、網３３で利用可能な信号（電気信号、光信号など）に変換して送出する。
【００９１】
網３３は受信機２から送出されたＡＣＫパケットを、送信機１に送る。
【００９２】
ＰＨＹ１４３は、網３３よりＡＣＫパケットを受信し、ＲＴＴ計算部１５３に送る。
【００９３】
ＲＴＴ計算部１５３は、ＡＣＫパケットに含まれる送信時刻情報と、内蔵時計１９から取得した受信時刻より、網３３のＲＴＴを計算する。このとき、最小ＲＴＴも計算して保持する。ＲＴＴ、最小ＲＴＴの計算が完了すると、レート計算部１６に対して、ＲＴＴ、最小ＲＴＴを通知する。
【００９４】
レート計算部１６は、ＲＴＴ計算部１５３よりＲＴＴの通知を受け、今回通知を受けた網３３のＲＴＴと、網３３の最低ＲＴＴとの差より、網３３のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１２からのパケット送信レート（帯域）を決定し、送信バッファ１２に通知する。
【００９５】
（タイマ２７３が満了した場合）
以下、タイマ２７３が満了した場合の動作について説明する。
【００９６】
タイマ２７３は、定められた時刻になると、ＡＣＫ送信部２４Ａに対してタイマ満了を通知する。
【００９７】
ＡＣＫ送信部２４Ａは、タイマ２７３からの満了通知を受け、カウンタ２５３を参照し、カウンタ値が０でない場合は、ＤＢ２６３から送信時刻と受信時刻を取得する。つぎに、内蔵時計２９から時刻を取得し、受信時刻との差分（パケット受信からＡＣＫ送信までの受信処理時間）を計算する。そして、前記送信時刻と前記受信処理時間を含む送達確認パケット（以下ＡＣＫと示す）を生成し、ＰＨＹ２１３に送信する。このとき、タイマ２７３を一定時間後に満了するよう設定し、さらにカウンタ値を０にリセットする。
【００９８】
ＰＨＹ２１３は、ＡＣＫ送信部２４ＡからＡＣＫパケットを受信すると、網３３で利用可能な信号（電気信号、光信号など）に変換して送出する。
【００９９】
網３３は受信機２から送出されたＡＣＫパケットを、送信機１に送る。
【０１００】
ＰＨＹ１４３は、網３３よりＡＣＫパケットを受信し、ＲＴＴ計算部１５３に送る。
【０１０１】
ＲＴＴ計算部１５３は、ＡＣＫパケットに含まれる送信時刻情報と、内蔵時計１９から取得した受信時刻より、網３３のＲＴＴを計算する。このとき、最小ＲＴＴも計算して保持する。ＲＴＴ、最小ＲＴＴの計算が完了すると、レート計算部１６に対して、ＲＴＴ、最小ＲＴＴを通知する。
【０１０２】
レート計算部１６は、ＲＴＴ計算部１５３よりＲＴＴの通知を受け、今回通知を受けた網３３のＲＴＴと、網３３の最低ＲＴＴとの差より、網３３のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１２からのパケット送信レート（帯域）を決定し、送信バッファ１２に通知する。
【０１０３】
（第２の実施の形態の効果）
次に、本実施の形態の効果について説明する。
【０１０４】
本実施の形態によれば、送信機１と受信機２が複数の網３１〜３４によって接続されているマルチパス環境において、１段のみのレート管理で、遅延ベースのレート制御を行うことができる。
【０１０５】
これは、受信機２が、データパケットが到着したＰＨＹ（網）に対して、対応するＡＣＫパケットを送出し、送信機１内に、ＲＴＴ、最小ＲＴＴを計算するＲＴＴ計算部１５１〜１５４を、網毎に設け、レート計算部１６が、各網ごとの最新ＲＴＴと過去の最小ＲＴＴとの差により網の混雑を推定し、レート制御を行うからである。
【０１０６】
また本実施の形態によれば、カウンタ２５、ＤＢ２６、タイマ２７を設け、Ｎ（Ｎは１以上）個のパケット到着報告を１つのＡＣＫでまとめて行うＮ＿ＡＣＫ方式を用いるために、ＡＣＫによる網帯域の消費を削減でき、さらに、ＲＴＴ計算やレート計算の計算処理負荷を低減できる。なお、ＲＴＴ計算やレート計算の精度が低下する恐れはあるが、実用上、ほとんど問題は生じない。
【０１０７】
（第３の実施の形態）
本発明の第３の実施の形態は、ＳＥＱ付与部１７、ＳＥＱ削除部２８Ｂ、出力バッファ２８Ａ、順序バッファ２１１Ａ〜２１４Ａ、取出制御部２２Ａを設け、さらに送信バッファ１２、ＲＴＴ計算部１５１〜１５４、ＡＣＫ送信部２４の動作を変更することで、到着順序保証を行う場合の形態である。
【０１０８】
（構成の説明）
図４を参照して、本実施の形態における構成について説明する。
【０１０９】
送信機１は、図１に示した第１の実施の形態における送信機１に対して、ＳＥＱ付与部１７が追加され、送信バッファ１２が送信バッファ１２Ａに、ＲＴＴ計算部１５１〜１５４が、ＲＴＴ計算部１５１Ａ〜１５４Ａに、それぞれ変更されている点において異なる。
【０１１０】
ＳＥＱ付与部１７は、データ送信部１１から受信機２に対して送信するパケットを受け取り、整序番号（シーケンスナンバーともいう、以下ＳＥＱと表記する）を設定し、送信バッファ１２Ａに渡す。
【０１１１】
送信バッファ１２Ａは、再送タイマを内蔵したＦＩＦＯバッファであり、以下の動作をおこなう。
（１）ＳＥＱ付与部１７からＳＥＱつきのパケットを受け取り格納する。
（２）レート計算部１６より設定された送信レートにしたがい、前記パケットの複製を送信振分部１３に送る。このとき、内蔵する再送タイマをセットする。
（３）ＲＴＴ計算部１５１Ａ〜１５４Ａより送達確認（ＡＣＫ）を受け取り、ＡＣＫに記載された受信済シーケンスナンバー以下の値の格納パケットを消去する。このとき、再送タイマを再セットする。
（４）（３）において、もしＡＣＫに記載されたシーケンスナンバーが、前回受信したＡＣＫに記載されたシーケンスナンバーと同一である場合は、再送要求（重複ＡＣＫ）であるとみなし、ＡＣＫに記載されたシーケンスナンバー以降のパケットを、（２）と同様にレート計算部１６より設定された送信レートにしたがい、前記パケットの複製を送信振分部１３に再送信する。
（５）内蔵する再送タイマの満了時に、前回受信したＡＣＫに記載されたシーケンスナンバー以降のパケットを、（２）と同様にレート計算部１６より設定された送信レートにしたがい、前記パケットの複製を送信振分部１３に再送信する。
【０１１２】
ＲＴＴ計算部１５１Ａは、ＰＨＹ１４１からパケット（ＡＣＫ）を受信し、ＡＣＫパケットのヘッダに埋め込まれている送信時刻と、内蔵時計１９から取得した受信時刻から、網３１の往復遅延時間（ＲＴＴ）を計算し、レート計算部１６に通知する。この際、網３１のＲＴＴの最小値（最小ＲＴＴ）も保持する。さらに、ＰＨＹ１４１より受信したＡＣＫパケットを送信バッファ１２Ａに転送する。
【０１１３】
ＲＴＴ計算部１５２Ａ〜１５４Ａは、網３２〜３４に関して、ＲＴＴ計算部１５１Ａと同様の動作を行う。
【０１１４】
受信機２は、図１に示した第１の実施の形態における受信機２に対して、ＳＥＱ削除部２８Ｂ、順序バッファ２１１Ａ〜２１４Ａ、出力バッファ２８Ａ、さらに取出制御部２２Ａが追加され、さらにＡＣＫ送信部２４がＡＣＫ送信部２４Ａに変更されている点において異なる。
【０１１５】
順序バッファ２１１Ａは、ＦＩＦＯバッファであり、以下の動作を行う。
（１）網３１からパケットを受信して一旦格納し、取出制御部２２Ａに格納完了通知を行う。このとき、内蔵時計２９から現在時刻を取得し、受信時刻も共に格納しておく。さらに、網３１より到着したパケットのシーケンスナンバーと、前回に網３１より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのＳＥＱが、前回到着したパケットのＳＥＱより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄する。
（２）もし（１）においてパケットを格納しようとした際、バッファあふれにより前記パケットを直ちに格納できない場合は、格納済パケットをすべて廃棄した上で、前記パケットを格納する。このとき、ＡＣＫ送信部２４Ａに重複ＡＣＫの送信を要求する。
（３）取出制御部２２Ａからの指示に従い、出力バッファ２８Ａに格納したパケットを転送する。
【０１１６】
順序バッファ２１２Ａは、網３２に関して、順序バッファ２１１Ａと同様の動作を行う。順序バッファ２１３Ａは、網３３に関して、順序バッファ２１１Ａと同様の動作を行う。順序バッファ２１４Ａは、網３４に関して、順序バッファ２１１Ａと同様の動作を行う。
【０１１７】
取出制御部２２Ａは、順序バッファ２１１Ａ〜２１４Ａからの格納完了通知を受け、順序確認動作２２１を行い、ＳＥＱの順番に従い、出力バッファ２８Ａへパケットを転送する。このとき、ＡＣＫ送信部２４Ａに対して、出力バッファ２８Ａに転送したパケットのＳＥＱと、ＰＨＹ番号と、パケットのヘッダ内に記された送信時刻情報、および受信時刻を通知する。ここでＰＨＹ番号は、パケットのヘッダ内に記載された送出希望先ＰＨＹ番号を参照して得ても良い。
【０１１８】
ＡＣＫ送信部２４Ａは、以下の動作を行う。なお本実施の形態では出力バッファ２８Ａへ１パケット転送が完了する毎に１パケットのＡＣＫを送信する１ＡＣＫ方式で説明を行うが、第２の実施の形態に示したようなＮ（Ｎは１以上）個のパケット到着報告を１つのＡＣＫでまとめて行うＮ＿ＡＣＫ方式を用いても良い。
【０１１９】
（１）取出制御部２２Ａから出力バッファ２８Ａに転送したパケットのＳＥＱ、送信時刻、ＰＨＹ番号、および受信時刻の通知を受け、内蔵時計２９から時刻を取得し、受信時刻との差分（パケット受信からＡＣＫ送信までの受信処理時間）を計算する。そして、前記送信時刻、前記受信処理時間、前記ＳＥＱを含む送達確認パケット（以下ＡＣＫと示す）を生成し、前記ＰＨＹ番号のＰＨＹに送信する。また、通知を受けたＳＥＱ、送信時刻および受信時刻を、ＰＨＹごとに（本実施例の場合はＰＨＹが４つあるので４つ）記憶しておく。ＰＨＹの指定は、パケットのヘッダ内に送出希望先ＰＨＹのＰＨＹ番号を記載することで行っても良い。
（２）順序バッファ２１１Ａ〜２１４Ａのうち、いずれか１つより重複ＡＣＫの送信要求を受けた場合、内蔵時計２９から時刻を取得し、各ＰＨＹごとに（１）により最後に記憶した受信時刻との差分（パケット受信からＡＣＫ送信までの受信処理時間）を計算する。そして、（１）により最後に記憶した送信時刻、（１）により最後に記憶したＳＥＱ、そして前記受信処理時間を含む送達確認パケット（以下ＡＣＫと示す）をＰＨＹごとに生成し、対応するＰＨＹに送信する。つまり、順序バッファ２１１Ａ〜２１４Ａのいずれか１つから重複ＡＣＫの送信要求を受けた場合、ＰＨＹ２１１〜ＰＨＹ２１４のすべてに重複ＡＣＫを送信する。
【０１２０】
出力バッファ２８Ａは、ＦＩＦＯバッファであり、順序バッファ２１１Ａ〜２１４Ａよりパケットを受け取り格納する。そしてＳＥＱ削除部２８Ｂから要求があった際に、格納された順にＳＥＱ削除部２８Ｂに出力する。
【０１２１】
ＳＥＱ削除部２８Ｂは、出力バッファ２８Ａよりパケットを受け取り、ＳＥＱを削除して、ＳＥＱ削除後のパケットをデータ受信部２３に転送する。
【０１２２】
内蔵時計２９は、現在時刻を順序バッファ２１１Ａ〜２１４Ａ、およびＡＣＫ送信部２４Ａに通知する。
【０１２３】
（動作の説明）
図５の流れ図を参照して、取出制御部２２Ａにおける順序確認動作２２１を説明する。
【０１２４】
順序バッファ２１１Ａ〜２１４Ａの何れかに１つのパケットが格納されると、取出制御部２２Ａに格納完了通知が行われ、順序確認動作２２１が起動する（ステップ２２１０１）。
【０１２５】
順序バッファ２１１Ａの先頭（出力バッファ２４側）に格納されているパケットのＳＥＱを確認する（ステップ２２１０２）。
【０１２６】
ステップ２２１０２において確認した順序バッファ２１１Ａの先頭パケットのＳＥＱ（先頭ＳＥＱ）と、取出制御部２２Ａが次に出力バッファ２８Ａに送信しようとしているＳＥＱ（受信期待ＳＥＱ、以下期待ＳＥＱと記す）を比較する（ステップ２２１０３）。
【０１２７】
ステップ２２１０３において先頭ＳＥＱと期待ＳＥＱが一致した場合には、順序バッファ２１１Ａより前記パケットを取り出して、出力バッファ２８Ａに送付する（ステップ２２１０４）。
【０１２８】
ＡＣＫ送信部２４Ａに対して、送達確認パケット（ＡＣＫ）の送信を要求する。このＡＣＫには期待ＳＥＱのＳＥＱが格納され、期待ＳＥＱまでの受信と整序が完了したことを送信機１に通知する（ステップ２２１０５）。
【０１２９】
期待ＳＥＱをインクリメントする。つまり、期待ＳＥＱ＝期待ＳＥＱ＋１とする（ステップ２２１０６）。
【０１３０】
ステップ２２１０７〜２２１１１は、順序バッファ２１２Ａに関して、ステップ２２１０２〜２２１０６と同様の動作を行う。
【０１３１】
ステップ２２１１２〜２２１１６は、順序バッファ２１３Ａに関して、ステップ２２１０２〜２２１０６と同様の動作を行う。
【０１３２】
ステップ２２１１７〜２２１２１は、順序バッファ２１４Ａに関して、ステップ２２１０２〜２２１０６と同様の動作を行う。
【０１３３】
ステップ２２１０２〜ステップ２２１２１の実行中に、順序バッファから取り出して出力バッファへ送付したパケットの数をカウントし、もし１以上である場合には、再度ステップ２２１０２以降を実行する（ステップ２２１２２）。もし順序バッファから取り出して出力バッファへ送付したパケットの数が０である場合、つまり出力バッファ２８Ａに転送可能な（つまり整序可能な）パケットが、順序バッファ２１１Ａ〜２１４Ａのいずれにも存在しない場合、順序確認動作２２１を終了する。
【０１３４】
（動作例）
以下、図４を参照して、本実施の形態における送信機１および送信機２の動作概要を説明する。
【０１３５】
送信機１において、データ送信部１１が、データ受信部２３に対するデータを生成し、網３１〜３４で転送可能な大きさに分割してヘッダを取り付けてパケットを生成し、ＳＥＱ付与部１７に送付する。
【０１３６】
ＳＥＱ付与部１７は、データ送信部１１からのパケットに対して、受信機２がデータを復元できるよう、整序のためにシーケンスナンバー（ＳＥＱ）を割り振り、送信バッファ１２Ａに転送する。
【０１３７】
送信バッファ１２Ａは、ＳＥＱ付与部１７よりパケットを受け取り一旦格納する。そしてレート計算部１６より設定された送信レートに従って、格納したパケットの複製を送信振分部１３に送出する。
【０１３８】
送信振分部１３は、送信バッファ１２Ａから受け取ったパケットを、ラウンドロビン等により網３１〜３４の各網にＰＨＹ１４１〜１４４を通じて分散させて送出する。例えばＳＥＱ１５のパケットは網３１、ＳＥＱ１６のパケットは網３２、ＳＥＱ１７のパケットは網３３、ＳＥＱ１８のパケットは網３４、ＳＥＱ１９のパケットは再び網３１というように、一連のＳＥＱが付加されたパケットを、網３１〜３４に振り分ける。
【０１３９】
網３１〜３４は送信機１から送出されたパケットを、受信機２に送る。
【０１４０】
順序バッファ２１１Ａは、ＰＨＹ２１１を通じて網３１から到着したパケットを格納し、取出制御部２２Ａに格納完了を通知する。取出制御部２２Ａは、順序バッファ２１１Ａからの格納完了通知を受け、順序確認動作２２１を起動する。
【０１４１】
順序バッファ２１２Ａ〜２１４Ａも同様に、網３２〜３４より到着したパケットを格納し、取出制御部２２Ａに格納完了を通知する。そして取出制御部２２Ａは、順序バッファ２１２Ａ〜２１４Ａからの格納完了通知を受け、順序確認動作２２１を起動する。
【０１４２】
順序確認動作２２１は、順序バッファ２１１Ａ〜２１４Ａの先頭に格納されているパケットのＳＥＱを調べ、次に出力バッファ２８Ａに送るべきＳＥＱと一致した場合は、このパケットを取り出して出力バッファ２８Ａに送り、ＡＣＫ送信部２４Ａに対してＡＣＫの送信を要求する。例えば以前にＳＥＱ＝５まで出力バッファ２８Ａに転送完了していた場合、順序バッファ２１１Ａ〜２１４Ａの何れかの先頭に、ＳＥＱ＝６のパケットが格納されていた場合は、これを取り出して出力バッファ２８Ａに転送し、ＳＥＱ＝６のＡＣＫ送信を要求する。
【０１４３】
順序確認動作２２１は、もし出力バッファに転送すべきパケットを順序バッファ２１１Ａ〜２１４Ａのいずれにおいても発見出来なかった場合は、いったん終了する。
【０１４４】
出力バッファ２８Ａは、順序バッファ２１１Ａ〜２１４Ａよりパケットを受信し、ＳＥＱ削除部２８Ｂからの要求により、ＦＩＦＯ方式でパケットを取り出して転送する。
【０１４５】
ＳＥＱ削除部２８Ｂは、出力バッファ２８Ａからパケットを取り出し、ＳＥＱを削除して、パケットをデータ受信部２３に転送する。
【０１４６】
データ受信部２３は、ＳＥＱ削除部２８Ｂからのパケットを受け取り、各種処理を行う。
【０１４７】
他方、送信機１において、ＲＴＴ計算部１５１Ａ〜１５４Ａは、ＡＣＫ送信部２４ＡからＡＣＫを受信すると、ＡＣＫパケットに含まれる送信時刻情報と、内蔵時計１９から取得した受信時刻より、網３１〜３４のＲＴＴを計算する。このとき、最小ＲＴＴも計算して保持する。ＲＴＴ、最小ＲＴＴの計算が完了すると、レート計算部１６に対して、ＲＴＴ、最小ＲＴＴを通知する。また同時に、ＡＣＫを送信バッファ１２Ａに転送する。
【０１４８】
レート計算部１６は、ＲＴＴ計算部１５１Ａ〜１５４ＡよりＲＴＴの通知を受け、今回通知を受けたＲＴＴと、今回通知を受けた網の最小ＲＴＴとの差より、網３１〜３４のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１２Ａからのパケット送信レート（帯域）を決定し、送信バッファ１２Ａに通知する。
【０１４９】
送信バッファ１２Ａは、ＲＴＴ計算部１５１Ａ〜１５４Ａのいずれかを経由して、ＡＣＫ送信部２４ＡよりＡＣＫを受信した場合、ＡＣＫに含まれるＳＥＱを確認する。そして、もし前回受信したＡＣＫのＳＥＱよりも大きなＳＥＱが含まれる場合は、当該ＳＥＱまでのパケットを送信バッファ１２Ａから消去する。
【０１５０】
（順序バッファあふれ時の動作）
順序バッファ２１１Ａは、ＰＨＹ２１１を通じて網３１から到着したパケットを格納しようとするが、格納すると順序バッファ２１１Ａがあふれる場合、順序バッファ２１１Ａ内のパケットを全て廃棄したのち、前記パケットを格納する。そして、ＡＣＫ送信部２４Ａに重複ＡＣＫの送信を指示する。
【０１５１】
ＡＣＫ送信部２４Ａは、順序バッファ２１１Ａからの重複ＡＣＫ送信の指示を受け、各ＰＨＹごとに記憶している、各ＰＨＹに最後に送信したＡＣＫに関する、パケット送信時刻、パケット受信時刻、ＳＥＱと、内蔵時計２９から取得した現在時刻をもとに、ＰＨＹ２１１〜２１４のそれぞれに、送信時刻、受信処理時間、ＳＥＱを含むＡＣＫ（重複ＡＣＫ）を送信する。
【０１５２】
ＲＴＴ計算部１５１Ａ〜１５４Ａは、ＡＣＫ送信部２４ＡからＡＣＫを受信すると、ＡＣＫパケットに含まれる送信時刻情報と、内蔵時計１９から取得した受信時刻より、網３１〜３４のＲＴＴを計算する。このとき、最小ＲＴＴも計算して保持する。ＲＴＴ、最小ＲＴＴの計算が完了すると、レート計算部１６に対して、ＲＴＴ、最小ＲＴＴを通知する。また同時に、ＡＣＫを送信バッファ１２Ａに転送する。
【０１５３】
レート計算部１６は、ＲＴＴ計算部１５１Ａ〜１５４ＡよりＲＴＴの通知を受け、今回通知を受けたＲＴＴと、今回通知を受けた網の最低ＲＴＴとの差より、網３１〜３４のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１２Ａからのパケット送信レート（帯域）を決定し、送信バッファ１２Ａに通知する。
【０１５４】
送信バッファ１２Ａは、ＲＴＴ計算部１５１Ａ〜１５４Ａのいずれかを経由して、ＡＣＫ送信部２４ＡよりＡＣＫを受信した場合、ＡＣＫに含まれるＳＥＱを確認する。そして、前回受信したＡＣＫのＳＥＱと同じＳＥＱが含まれていることから、重複ＡＣＫ（再送要求）であるとみなし、ただちに再送バッファに格納されているパケットを、ＳＥＱの若いものから順に再送信する。もしここで、前回受信したＡＣＫのＳＥＱより小さいＳＥＱを受信した場合は、これを無視して動作を終了する。
【０１５５】
（第３の実施の形態の効果）
次に、本実施の形態の効果について説明する。
【０１５６】
本実施の形態によれば、送信機１と受信機２が複数の網３１〜３４によって接続されているマルチパス環境において、１段のみのレート管理で、受信側のバッファを極力小さく抑えながら、遅延ベースのレート制御を行うことができる。
【０１５７】
これは、受信機２が、データパケットが到着したＰＨＹ（網）に対して、対応するＡＣＫパケットを送出し、送信機１内に、ＲＴＴ、最小ＲＴＴを計算するＲＴＴ計算部１５１Ａ〜１５４Ａを、網毎に設け、レート計算部１６が、各網ごとの最新ＲＴＴと過去の最小ＲＴＴとの差により網の混雑を推定し、フロー毎にレート制御を行うため、パス間のレートに差が生じず、順序バッファを小さく保つことができるからである。
【０１５８】
以上の実施の形態及び実施例では、パケットという用語を用いて説明を行ったが、フレーム（イーサネットフレーム等）でも同様に実施できる。
【０１５９】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。当然ながら、以上に述べた実施の形態及び実施例を、相互に組み合わせて実施することもできる。
【産業上の利用可能性】
【０１６０】
本発明によれば、複数の網を利用して大容量のデータを高速転送するイーサネットスイッチやルータ等に適用できる。また、サーバ間を高速に結ぶネットワークインターフェースカード（ＮＩＣ）等にも適用できる。
【図面の簡単な説明】
【０１６１】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第２の実施の形態の構成を示すブロック図である。
【図３】提案方式によるキューイング遅延の計算例を示す表である。
【図４】本発明の第３の実施の形態の構成を示すブロック図である。
【図５】順序確認動作２２１の詳細を示す流れ図である。
【図６】従来方式によるキューイング遅延の計算例を示す表である。
【符号の説明】
【０１６２】
１…送信機
２…受信機
１１…データ送信部
１２…送信バッファ
１２Ａ…送信バッファ
１３…送信振分部
１６…レート計算部
１７…ＳＥＱ付与部
１９…内蔵時計
２２…受信受付部
２２Ａ…取出制御部
２３…データ受信部
２４…ＡＣＫ送信部
２４Ａ…ＡＣＫ送信部
２５…カウンタ
２６…ＤＢ
２７…タイマ
２８Ａ…出力バッファ
２８Ｂ…ＳＥＱ削除部
２９…内蔵時計
３１〜３４…網
１４１…ＰＨＹ
１４２…ＰＨＹ
１４３…ＰＨＹ
１４４…ＰＨＹ
１５１…ＲＴＴ計算部
１５２…ＲＴＴ計算部
１５３…ＲＴＴ計算部
１５４…ＲＴＴ計算部
１５１Ａ…ＲＴＴ計算部
１５２Ａ…ＲＴＴ計算部
１５３Ａ…ＲＴＴ計算部
１５４Ａ…ＲＴＴ計算部
２１１…ＰＨＹ
２１２…ＰＨＹ
２１３…ＰＨＹ
２１４…ＰＨＹ
２１１Ａ…順序バッファ
２１２Ａ…順序バッファ
２１３Ａ…順序バッファ
２１４Ａ…順序バッファ
２２１…順序確認動作
２５１…カウンタ
２５２…カウンタ
２５３…カウンタ
２５４…カウンタ
２６１…ＤＢ
２６２…ＤＢ
２６３…ＤＢ
２６４…ＤＢ
２７１…タイマ
２７２…タイマ
２７３…タイマ
２７４…タイマ
【図１】
0004930275.tif 000002
【図２】
0004930275.tif 000003
【図３】
0004930275.tif 000004
【図４】
0004930275.tif 000005
【図５】
0004930275.tif 000006
【図６】
0004930275.tif 000007