(57)【特許請求の範囲】
【請求項１】
受信機と複数の網で接続されている通信装置において、
受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴを計算する、ＲＴＴ計算手段と、
前記ＲＴＴ計算手段の計算結果から各網のＲＴＴの偏差を求め、ＲＴＴが他の網と比較して大きな網又はＲＴＴが他の網と比較して小さな網を障害リンクと判定するばらつき検出手段と、
前記ばらつき検出手段において障害リンクと判定された網以外の網へラウンドロビンにより送信データを振り分ける送信振分手段と、
を備えることを特徴とする通信装置。
【請求項２】
請求項１に記載の通信装置において、
前記ＲＴＴ計算手段は、受信機から送信されてきたＡＣＫに基づいて網ごとの最低ＲＴＴを更に算出し、
前記ＲＴＴ計算手段から通知される各網の最新計測ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定するレート計算手段を更に備えることを特徴とする通信装置。
【請求項３】
受信機と複数の網で接続されている通信装置において、
受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴ、最小ＲＴＴを計算する、ＲＴＴ計算手段と、
前記ＲＴＴ計算手段から通知される各網の最新測定ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定する、網毎に複数設置されたレート計算手段と、
各網の送信レートの偏差を求め、送信レートが他の網と比較して大きな網又は送信レートが他の網と比較して小さな網を障害リンクと判定するばらつき検出手段と、
を備え、
前記ばらつき検出手段は、前記障害リンクと判定された網の送信レートを零とすることを特徴とする通信装置。
【請求項４】
請求項２又は３に記載の通信装置において、
前記レート計算手段は以下の数式に基づいて新たな送信レートであるＲ’を決定し、該数式とは、
Ｒ’＝Ｒ＋（α／ＲＴＴ−β×（ＲＴＴ−ＲＴＴｍｉｎ）×Ｒ／ＲＴＴ）×Ｔｃ
但し、
Ｒを現在の送信レート、αを増加定数、βを減少定数、ＲＴＴを前記各網の最新計測ＲＴＴ、ＲＴＴｍｉｎを前記最小ＲＴＴ、Ｔｃをレート計算間隔とする、
であることを特徴とする通信装置。
【請求項５】
送信機と受信機が、複数の網で接続されている通信システムにおいて、
前記送信機が請求項１乃至４の何れか１項に記載の通信装置であり、
前記受信機が、
前記送信機から送信データを受け取る手段と、
ＡＣＫの送信契機となった前記送信データを受信した網を用いて、前記送信機に折り返しＡＣＫを送信するＡＣＫ送信手段と、
を備えることを特徴とする通信システム。
【請求項６】
受信機と複数の網で接続されている通信装置における転送効率向上方法であって、
受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴを計算する、ＲＴＴ計算ステップと、
前記ＲＴＴ計算ステップの計算結果から各網のＲＴＴの偏差を求め、ＲＴＴが他の網と比較して大きな網又はＲＴＴが他の網と比較して小さな網を障害リンクと判定するばらつき検出ステップと、
前記ばらつき検出ステップにおいて障害リンクと判定された網以外の網へラウンドロビンにより送信データを振り分ける送信振分ステップと、
を備えることを特徴とする転送効率向上方法。
【請求項７】
請求項６に記載の転送効率向上方法において、
前記ＲＴＴ計算ステップでは、受信機から送信されてきたＡＣＫに基づいて網ごとの最低ＲＴＴを更に算出し、
前記ＲＴＴ計算ステップの算出した各網の最新計測ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定するレート計算ステップを更に備えることを特徴とする転送効率向上方法。
【請求項８】
受信機と複数の網で接続されている通信装置における転送効率向上方法であって、
受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴ、最小ＲＴＴを計算する、ＲＴＴ計算ステップと、
前記ＲＴＴ計算ステップの算出した各網の最新測定ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定する、という動作を網毎に行うレート計算ステップと、
各網の送信レートの偏差を求め、送信レートが他の網と比較して大きな網又は送信レートが他の網と比較して小さな網を障害リンクと判定するばらつき検出ステップと、
を備え、
前記ばらつき検出手段は、前記障害リンクと判定された網の送信レートを零とすることを特徴とする転送効率向上方法。
【請求項９】
請求項７又は８に記載の転送効率向上方法において、
前記レート計算ステップでは以下の数式に基づいて新たな送信レートであるＲ’を決定し、該数式とは、
Ｒ’＝Ｒ＋（α／ＲＴＴ−β×（ＲＴＴ−ＲＴＴｍｉｎ）×Ｒ／ＲＴＴ）×Ｔｃ
但し、
Ｒを現在の送信レート、αを増加定数、βを減少定数、ＲＴＴを前記各網の最新計測ＲＴＴ、ＲＴＴｍｉｎを前記最小ＲＴＴ、Ｔｃをレート計算間隔とする、
であることを特徴とする転送効率向上方法。
【請求項１０】
送信機と受信機が、複数の網で接続されている通信システムにおける転送効率向上方法であって、
前記送信機が請求項６乃至９の何れか１項に記載の転送効率向上方法を行い、
前記受信機が、前記送信機から送信データを受け取るステップと、
前記受信機が、ＡＣＫの送信契機となった前記送信データを受信した網を用いて、前記送信機に折り返しＡＣＫを送信するＡＣＫ送信ステップと、
を備えることを特徴とする転送効率向上方法。
【請求項１１】
受信機と複数の網で接続されている通信装置における転送効率向上プログラムであって、
受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴを計算する、ＲＴＴ計算機能と、
前記ＲＴＴ計算機能の計算結果から各網のＲＴＴの偏差を求め、ＲＴＴが他の網と比較して大きな網又はＲＴＴが他の網と比較して小さな網を障害リンクと判定するばらつき検出機能と、
前記ばらつき検出機能において障害リンクと判定された網以外の網へラウンドロビンにより送信データを振り分ける送信振分機能と、
をコンピュータに実現させることを特徴とする転送効率向上プログラム。
【請求項１２】
請求項１１に記載の転送効率向上プログラムであって、
前記ＲＴＴ計算機能は、受信機から送信されてきたＡＣＫに基づいて網ごとの最低ＲＴＴを更に算出し、
前記コンピュータに、前記ＲＴＴ計算機能から通知される各網の最新測定ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定するレート計算機能を更に実現させることを特徴とする転送効率向上プログラム。
【請求項１３】
受信機と複数の網で接続されている通信装置における転送効率向上プログラムであって、
受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴ、最小ＲＴＴを計算する、ＲＴＴ計算機能と、
前記ＲＴＴ計算機能から通知される各網の最新測定ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定する、網毎に複数設置されたレート計算機能と、
各網の送信レートの偏差を求め、送信レートが他の網と比較して大きな網又は送信レートが他の網と比較して小さな網を障害リンクと判定するばらつき検出機能と、
をコンピュータに実現させ、
前記ばらつき検出機能は、前記障害リンクと判定された網の送信レートを零とすることを特徴とする転送効率向上プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数経路にデータを分散させて帯域拡大を図る通信技術であって、送信機と受信機が複数の網によって接続されているマルチパス環境において、到着順序保証を行う通信装置、通信システム、転送効率向上方法及び転送効率向上プログラムに関する。
【背景技術】
【０００２】
従来、送信端末と受信端末の間の通信で用いられる１つの通信フローのデータを複数のフローに分岐させ、その後、元のフローを復元するという通信方法がある。このような通信方法としては、例えば送信端末が属する第１のＬＡＮ（Local Area Network）と受信端末が属する第２のＬＡＮに、それぞれゲートウェイを設置する方法がある。具体的には、送信端末から送出されたＴＣＰ（Transmission Control Protocol）コネクションのデータを、第１のＬＡＮのゲートウェイにおいてパケット単位でそれぞれの通信経路に振り分ける。そして、第２のＬＡＮのゲートウェイでは複数の通信経路から受信したパケットの順序逆転をＴＣＰのシーケンス番号に従って補正してデータを復元するという方法が提案されている（例えば、特許文献１参照）。
【０００３】
また従来、複数の通信回線を効率的に利用し、回線利用率を向上させる方法として、端末のＴＣＰに機能を追加することにより、従来１本のＴＣＰコネクションを用いていた通信を複数のＴＣＰコネクションを利用するように変更する方法がある（例えば、特許文献２参照）。この方法では、送信端末と受信端末間の通信で１つの通信フローで行われていた通信を、複数の通信フローに分割して並列的に送る。送信端末から受信端末へとデータを送信する場合、送信端末の通信プロトコルは、１つの通信フローのデータを分割して複数の通信フローに振り分ける。その際、分割した複数の通信フローを元の１つの通信フローに復元するための復元情報として新たなヘッダをＴＣＰ／ＩＰパケットに付加して（つまり２系統のシーケンス番号を用いて）、複数の通信フローでデータを送信する。受信端末の通信プロトコルは、複数の通信フローから受信したデータの復元情報を参照し、１つの通信フローを復元する。
【特許文献１】特開２０００−２６１４７８号公報
【特許文献２】特開２００３−１１０６０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した特許文献１に記載の技術及び特許文献２に記載の技術は、ともに遅いパスを経由するパケットが到着するまで、早いパスを経由して到着したパケットが、受信機側の順序保証バッファで待たされてしまうという、ヘッドオブラインブロッキング問題が発生する。上記のヘッドオブラインブロッキング問題が発生すると、転送効率が大幅に低下し、順序保証バッファも大量に必要になる。
【０００５】
更に、特許文献１に記載の技術及び特許文献２に記載の技術は、ともに転送に用いる経路（パス）の中に、他のパスと速度が異なるパスが存在する場合、受信側機器に「速度差×遅延時間差」分の順序保証バッファが必要になる。この「速度差×遅延時間差分の順序保証バッファ」を、パス毎に設置することは、メモリ容量が膨大になるため現実的ではない。このため、バッファあふれによるパケットロスが頻発し、転送効率（性能）が大幅に低下する。
【０００６】
そこで、本発明は、送信機と受信機が複数の網によって接続されているマルチパス環境において、到着順序保証を行う場合に、少ない順序保証バッファで、転送効率を向上させるための通信装置、通信システム、転送効率向上方法及び転送効率向上プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明によれば、第１の装置として、受信機と複数の網で接続されている通信装置において、受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴを計算する、ＲＴＴ計算手段と、前記ＲＴＴ計算手段の計算結果から各網のＲＴＴの偏差を求め、ＲＴＴが他の網と比較して大きな網又はＲＴＴが他の網と比較して小さな網を障害リンクと判定するばらつき検出手段と、前記ばらつき検出手段において障害リンクと判定された網以外の網へラウンドロビンにより送信データを振り分ける送信振分手段と、を備えることを特徴とする通信装置が提供される。
また、第２の装置として、受信機と複数の網で接続されている通信装置において、受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴ、最小ＲＴＴを計算する、ＲＴＴ計算手段と、前記ＲＴＴ計算手段から通知される各網の最新測定ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定する、網毎に複数設置されたレート計算手段と、各網の送信レートの偏差を求め、送信レートが他の網と比較して大きな網又は送信レートが他の網と比較して小さな網を障害リンクと判定するばらつき検出手段と、を備え、前記ばらつき検出手段は、前記障害リンクと判定された網の送信レートを零とすることを特徴とする通信装置が提供される。
また、第１の方法として、受信機と複数の網で接続されている通信装置における転送効率向上方法であって、受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴを計算する、ＲＴＴ計算ステップと、前記ＲＴＴ計算ステップの計算結果から各網のＲＴＴの偏差を求め、ＲＴＴが他の網と比較して大きな網又はＲＴＴが他の網と比較して小さな網を障害リンクと判定するばらつき検出ステップと、前記ばらつき検出ステップにおいて障害リンクと判定された網以外の網へラウンドロビンにより送信データを振り分ける送信振分ステップと、を備えることを特徴とする転送効率向上方法が提供される。
また、第２の方法として、受信機と複数の網で接続されている通信装置における転送効率向上方法であって、受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴ、最小ＲＴＴを計算する、ＲＴＴ計算ステップと、前記ＲＴＴ計算ステップの算出した各網の最新測定ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定する、という動作を網毎に行うレート計算ステップと、各網の送信レートの偏差を求め、送信レートが他の網と比較して大きな網又は送信レートが他の網と比較して小さな網を障害リンクと判定するばらつき検出ステップと、を備え、前記ばらつき検出手段は、前記障害リンクと判定された網の送信レートを零とすることを特徴とする転送効率向上方法が提供される。
また、第１のプログラムとして、受信機と複数の網で接続されている通信装置における転送効率向上プログラムであって、受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴを計算する、ＲＴＴ計算機能と、前記ＲＴＴ計算機能の計算結果から各網のＲＴＴの偏差を求め、ＲＴＴが他の網と比較して大きな網又はＲＴＴが他の網と比較して小さな網を障害リンクと判定するばらつき検出機能と、前記ばらつき検出機能において障害リンクと判定された網以外の網へラウンドロビンにより送信データを振り分ける送信振分機能と、をコンピュータに実現させることを特徴とする転送効率向上プログラムが提供される。
また、第２のプログラムとして、受信機と複数の網で接続されている通信装置における転送効率向上プログラムであって、受信機から送信されてきたＡＣＫに基づいて網ごとのＲＴＴ、最小ＲＴＴを計算する、ＲＴＴ計算機能と、前記ＲＴＴ計算機能から通知される各網の最新測定ＲＴＴ及び前記網毎の最小ＲＴＴの差分に基づいて、前記網毎のキューイング遅延を算出し、該キューイング遅延に基づいて前記各網それぞれの送信レートを決定する、網毎に複数設置されたレート計算機能と、各網の送信レートの偏差を求め、送信レートが他の網と比較して大きな網又は送信レートが他の網と比較して小さな網を障害リンクと判定するばらつき検出機能と、をコンピュータに実現させ、前記ばらつき検出機能は、前記障害リンクと判定された網の送信レートを零とすることを特徴とする転送効率向上プログラムが提供される。
【発明の効果】
【００１８】
本発明によれば、送信機と受信機が複数の網によって接続されているマルチパス環境において、ＡＣＫが１度も到着しないリンクを障害リンクと判定し、送信時の振り分け先から除外することから、到着順序保証を行う場合に少ない順序保証バッファで、転送効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００１９】
次に、本発明の実施形態について図面を用いて説明する。
【００２０】
なお、以下の説明においては、１対の送信機と受信機との間の通信を、１フローと定義する。また、あるフローが流れる経路をパスと定義する。例えば、１フローを４つの網（ネットワーク）に分散させて通信する場合は、４パスを用いて通信すると言い、２つのフローを４つの網（ネットワーク）に分散させて通信する場合は、８つのパスを用いて通信するという。ただし以下の説明では、１つのフローに着目して説明を行うため、結果的に網とパスが同義になっている。
【００２１】
（第１の実施の形態）
（構成の説明）
図１を参照して、本実施の形態における構成について説明する。第１の実施形態では、送信機１及び受信機２を備える。
【００２２】
送信機１は、データ送信部１１、ＳＥＱ付与部１２、送信バッファ１３、送信振分部１４、ＰＨＹ１５１〜１５４、未着カウンタ１６１〜１６４、再送タイマ１９を備える。
【００２３】
データ送信部１１は、受信機２に対して送信するデータを生成し、ＳＥＱ付与部１２に渡す。なお、一般的にデータ送信部にあたる部分としては、サーバアプリケーションなどが例示できる。
【００２４】
ＳＥＱ付与部１２は、データ送信部１１から受信機２に対して送信するデータを受け取り、前記データを網３１〜網３４で転送可能な大きさに分割する。そして、分割した個々のデータ（以下パケットと呼ぶ）に対して転送に必要なヘッダや整序番号（シーケンスナンバーともいう、以下ＳＥＱと表記する。）を設定し、送信バッファ１３に渡す。
【００２５】
送信バッファ１３は、ＦＩＦＯ（First-In First-Out）バッファであり、以下の動作をおこなう。
（１）ＳＥＱ付与部１２からＳＥＱつきのパケットを受け取り格納する。
（２）あらかじめ決められた速度や個数にしたがい、前記パケットの複製を送信振分部１４に送る。このとき、再送タイマ１９をセットする。
（３）未着カウンタ１６１〜１６４より送達確認（ＡＣＫ）を受け取り、ＡＣＫに記載された受信済シーケンスナンバー以下の値の格納パケットを消去する。このとき、再送タイマ１９を再セットする。
（４）（３）において、もしＡＣＫに記載されたシーケンスナンバーが、前回受信したＡＣＫに記載されたシーケンスナンバーと同一である場合は、再送要求（重複ＡＣＫ）であるとみなし、ＡＣＫに記載されたシーケンスナンバー以降のパケットを、（２）と同様あらかじめ決められた速度や個数にしたがい、前記パケットの複製を送信振分部１４に再送信する。また、未着カウンタ１６１〜１６４に、再送実施を通知する。
（５）再送タイマ１９の満了時に、前回受信したＡＣＫに記載されたシーケンスナンバー以降のパケットを、（２）と同様あらかじめ決められた速度や個数にしたがい、前記パケットの複製を送信振分部１４に再送信する。また、未着カウンタ１６１〜１６４に、再送実施を通知する。
【００２６】
送信振分部１４は、送信バッファ１３から到着したパケットを、ラウンドロビンによりＰＨＹ１５１〜ＰＨＹ１５４を通じて網３１〜３４に順次振り分ける。
【００２７】
ＰＨＹ１５１は送信振分部１４からパケットを受信し、網３１で伝送可能な形式（電気信号、光信号）に変換して、前記パケットを網３１に送出する。また逆に、網３１からパケットを受信し、未着カウンタ１６１に転送する。
【００２８】
ＰＨＹ１５２〜１５４は、網３２〜３４について、ＰＨＹ１５１と同様の動作を行う。
【００２９】
未着カウンタ１６１は、以下に示す動作を行う。
（１）送信バッファ１３から再送実施の通知を受信するごとに、カウンタをインクリメントする。そして、カウンタが一定閾値（例えば３）を超えた場合に、送信振分部１４に、網３１（ＰＨＹ１５１）宛の振り分けを停止するよう指示する。
（２）ＰＨＹ１５１からＡＣＫパケットを受信した場合は、カウンタを０にリセットし、前記ＡＣＫを送信バッファ１３に転送する。このとき、もし送信振分部１４に、網３１（ＰＨＹ１５１）宛の振り分けを停止するよう指示していた場合は、この指示を解除する。
【００３０】
未着カウンタ１６２〜１６４は、網３２〜３４について、未着カウンタ１６１と同様の動作を行う。
【００３１】
再送タイマ１９は、再送バッファ１３からセット要求を受信すると、あらかじめ設定された時間が経過した際に、再送バッファ１３に対してタイマ満了通知を行う。
【００３２】
受信機２は、ＰＨＹ２１１〜２１４、取出制御部２２、順序バッファ２３１〜２３４、ＡＣＫ送信部２４、出力バッファ２５、ＳＥＱ削除部２６、データ受信部２７を備える。
【００３３】
ＰＨＹ２１１はＡＣＫ送信部２４からパケットを受信し、網３１で伝送可能な形式（電気信号、光信号）に変換して、前記パケットを網３１に送出する。また逆に、網３１からパケットを受信し、順序バッファ２３１に転送する。
【００３４】
ＰＨＹ２１２〜２１４は、網３２〜３４について、ＰＨＹ２１１と同様の動作を行う。
【００３５】
取出制御部２２は、順序バッファ２３１〜２３４からの格納完了通知を受け、順序確認手段２２１を実行する。なお、順序確認手段２２１の詳細な内容については、後述する。次に、取出制御部２２は、ＳＥＱの順番に従い、出力バッファ２５へのパケット出力を行うように順序バッファ２３１〜２３４に指示する。このとき、ＡＣＫ送信部２４に対して、出力バッファ２５に転送したパケットのＳＥＱ、順序バッファの番号を通知する。更に、もしも前記パケットのヘッダに前記パケットの送信時刻が含まれているのであれば、前記パケットの送信時刻も通知する。
【００３６】
順序バッファ２３１は、ＦＩＦＯバッファであり、網３１からパケットを受信して一旦格納し、取出制御部２２に格納完了通知を行う。また取出制御部２２からの指示に従い、出力バッファ２５に格納したパケットを転送する。
【００３７】
順序バッファ２３１は、網３１より到着したパケットのシーケンスナンバーと、前回に網３１より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのシーケンスナンバーが、前回到着したパケットのシーケンスナンバーより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄する。
【００３８】
また、順序バッファ２３２〜２３４は、網３２〜３４に関して、順序バッファ２３１と同様の動作を行う。
【００３９】
ＡＣＫ送信部２４は、以下の動作を行う。なお本願では出力バッファ２５へ１パケット転送が完了する毎に１パケットのＡＣＫを送信する１ＡＣＫ方式を採用する場合についての説明を行うが、Ｎ（Ｎは１以上）個のパケット到着報告を１つのＡＣＫでまとめて行うＮ＿ＡＣＫ方式を用いても良い。
【００４０】
取り出し制御部２２から出力バッファ２５に転送したパケットのＳＥＱと、パケットが保管されていた順序バッファ番号（つまり網識別子）、さらにパケット送信時刻（もし情報があれば）の通知を受け、前記ＳＥＱおよびパケット送信時刻（もし通知があれば）を含む送達確認パケット（以下ＡＣＫと示す）を生成する。そして、通知を受けた網識別子に対応する網（網３１〜３４のいずれか１つ）を用いて、未着カウンタ１６１〜１６４のいずれかに通知する。つまり、順序バッファ２３２から出力バッファ２５にパケットを転送した場合は、網３２を通じて未着カウンタ１６２に、ＡＣＫを通知する。
【００４１】
出力バッファ２５は、ＦＩＦＯバッファであり、順序バッファ２３１〜２３４よりパケットを受け取り格納する。そしてＳＥＱ削除部２６から要求があった際に、格納された順にＳＥＱ削除部２６に出力する。
【００４２】
ＳＥＱ削除部２６は、出力バッファ２５よりパケットを受け取り、ＳＥＱやヘッダを削除して、ＳＥＱ削除後のデータをデータ受信部２７に転送する。
【００４３】
データ受信部２７は、ＳＥＱ削除部２６よりデータを受信する。なお、データ受信部２７は、一般的にはクライアントアプリケーションとも呼ばれる。
【００４４】
網３１は、送信機１と受信機２の間を結ぶイーサネット（登録商標）などのネットワークである。なお、図１において網３１は１本の線で表現されているが、実際にはリンクの他にスイッチ等が存在しても良い。また、網３１、３２、３３、３４はそれぞれ物理的に、もしくはＶＬＡＮ等で論理的に遮断されており、互いに交わることがない。
【００４５】
網３２〜網３４は、網３１と同様のネットワークである。
【００４６】
（順序確認手段２２１の動作の説明）
図２の流れ図を参照して、取出制御部２２における順序確認手段２２１について説明する。
【００４７】
順序バッファ２３１〜２３４の何れかに１つのパケットが格納されると、取出制御部２２に格納完了通知が行われ、順序確認手段２２１が起動する。（ステップ２２１０１）
順序バッファ２３１の先頭（出力バッファ２５側）に格納されているパケットのＳＥＱを確認する。（ステップ２２１０２）
ステップ２２１０２において確認した順序バッファ２３１の先頭パケットのＳＥＱ（先頭ＳＥＱ）と、取出制御部２２が次に出力バッファ２５に送信しようとしているＳＥＱ（受信期待ＳＥＱ、以下期待ＳＥＱと記す）を比較する。（ステップ２２１０３）
ステップ２２１０３において先頭ＳＥＱと期待ＳＥＱが一致した場合には、順序バッファ２３１より前記パケットを取り出して、出力バッファ２５に送付する。（ステップ２２１０４）
次に、ＡＣＫ送信部２４に対して、送達確認パケット（ＡＣＫ）の送信を要求する。このＡＣＫには期待ＳＥＱのＳＥＱが格納され、期待ＳＥＱまでの受信と整序が完了したことを送信機１に通知する。（ステップ２２１０５）
期待ＳＥＱをインクリメントする。つまり、期待ＳＥＱ＝期待ＳＥＱ＋１とする。（ステップ２２１０６）
ステップ２２１０７〜２２１１１は、順序バッファ２３２に関して、ステップ２２１０２〜２２１０６と同様の動作を行う。
【００４８】
ステップ２２１１２〜２２１１６は、順序バッファ２３３に関して、ステップ２２１０２〜２２１０６と同様の動作を行う。
【００４９】
ステップ２２１１７〜２２１２１は、順序バッファ２３４に関して、ステップ２２１０２〜２２１０６と同様の動作を行う。
【００５０】
ステップ２２１０２〜ステップ２２１２１の実行中に、順序バッファから取り出して出力バッファへ送付したパケットの数をカウントし、もし１以上である場合には、再度ステップ２２１０２以降を実行する。もし順序バッファから取り出して出力バッファへ送付したパケットの数が０である場合、つまり出力バッファ２３に転送可能な（つまり整序可能な）パケットが、順序バッファ２３１〜２３４のいずれにも存在しない場合、動作を終了する。（ステップ２２１２２）
（動作例）
（動作概要）
以下、図１を参照して、本実施の形態における送信機１および受信機２の動作概要を説明する。
【００５１】
送信機１において、データ送信部１１が、データ受信部２７に対して送信するデータを生成し、ＳＥＱ付与部１２に送付する。
【００５２】
ＳＥＱ付与部１２は、データ送信部１１からのデータを、網３１〜３４で転送可能な大きさに分割してヘッダを取り付けてパケットを生成する。さらに受信機２がデータを復元できるよう、パケットに対して整序のためにシーケンスナンバー（ＳＥＱ）を割り振り、送信バッファ１３に転送する。
【００５３】
送信バッファ１３は、ＳＥＱ付与部１２よりパケットを受け取り一旦格納する。そしてあらかじめ設定された送信レートやウインドウサイズ等に従って、格納したパケットの複製を送信振分部１４に送出する。
【００５４】
送信振分部１４は、送信バッファ１３から受け取ったパケットを、ラウンドロビン等により、ＰＨＹ１５１〜１５４を通じて網３１〜３４の各網に分散させて送出する。例えばＳＥＱ１５のパケットは網３１、ＳＥＱ１６のパケットは網３２、ＳＥＱ１７のパケットは網３３、ＳＥＱ１８のパケットは網３４というように、一連のＳＥＱが付加されたパケットを、網３１〜３４に振り分ける。以降は、ＳＥＱ１７のパケットが網３３に振り分けられた場合を例に説明する。
【００５５】
網３３は送信機１から送出されたパケットを、受信機２に送る。
【００５６】
順序バッファ２３３は、網３３から到着したパケットを格納し、取出制御部２２に格納完了を通知する。取出制御部２２は、順序バッファ２３３からの格納完了通知を受け、順序確認手段２２１を起動する。
【００５７】
順序確認手段２２１は、順序バッファ２３１〜２３４の先頭に格納されているパケットのＳＥＱを調べ、次に出力バッファ２５に送るべきＳＥＱと一致した場合は、このパケットを取り出して出力バッファ２５に送り、ＡＣＫ送信部に対してＡＣＫの送信を要求する。
【００５８】
ここでは以前にＳＥＱ＝１６まで出力バッファ２５に転送完了していたとすると、順序バッファ２３３の何れかの先頭に、ＳＥＱ＝１７のパケットが格納されていた場合は、これを取り出して出力バッファ２５に転送し、ＳＥＱ＝１７のＡＣＫ送信を要求する。このとき、ＳＥＱ＝１７のパケットは、網３３（ＰＨＹ２１３，順序バッファ２３３）を通じて転送されたことも通知する。
【００５９】
ＡＣＫ送信部２４は、取出制御部２２から、網３３に対してＳＥＱ＝１７のＡＣＫを送信するよう要求を受け、ＡＣＫパケットを生成して、ＰＨＹ２１３に送信する。
【００６０】
未着カウンタ１６３は、ＰＨＹ１５３からＡＣＫパケットを受信し、未着カウンタを０にリセットする。さらに、受信したＡＣＫパケットを、送信バッファ１３に転送する。
【００６１】
送信バッファ１３は、未着カウンタ１６３より、ＳＥＱ＝１７のＡＣＫパケットを受信する。このＡＣＫのＳＥＱは前回受信したＡＣＫのＳＥＱよりも大きいとすると、当該ＳＥＱ（ＳＥＱ＝１７）までのパケットを送信バッファ１３から消去する。
【００６２】
（未着カウンタの動作）
動作概要に示したように、受信機２内のＡＣＫ送信部２４は、ＡＣＫ送信の対象となるパケットを受信した網にのみ、ＡＣＫパケットを送信する。つまり、何らかの異常が発生しており、データの流れてこない網に対しては、ＡＣＫパケットを送信しない。
【００６３】
ここで、送信機１内の未着カウンタ１６１〜１６４は、送信バッファ１３から再送発生の通知を受けるごとにカウンタをインクリメントし、ＡＣＫを受信するとカウンタを０にリセットする。このため、再送が一定回数（たとえば３回）発生する間に、１度もＡＣＫを受信していない場合に、未着カウンタは、当該リンクをパケット送信時の振分け対象から外すよう、送信振分部１４に通知する。
【００６４】
上記の動作により、障害発生リンク、つまりＡＣＫの到着しないリンクを切り離すことで、Ｈｅａｄ  Ｏｆ  Ｌｉｎｅ  Ｂｌｏｃｋｉｎｇ問題の発生を回避し、転送効率を向上できる。
【００６５】
（本実施形態の効果）
次に、本実施の形態の効果について説明する。
【００６６】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、到着順序保証を行う場合に、少ない順序保証バッファで、転送効率を向上させることができる。
【００６７】
これは、前記受信機が、データパケットが到着したＰＨＹ（網）に対して、対応するＡＣＫパケットを送出し、前記送信機内に、再送発生ごとにカウンタをインクリメントし、ＡＣＫ到着でカウンタをリセットする未着カウンタを網毎に複数設け、一定回数の再送が発生する間に、ＡＣＫが１度も到着しないリンクを障害リンクと判定し、送信時の振り分け先から除外するからである。
【００６８】
（第２の実施の形態）
本発明の第２の実施の形態の概要は、網毎にラウンドトリップタイム（ＲＴＴ）を測定し、各網のＲＴＴの標準偏差を大きく外れる網を、送信時の振分先から除外することで、Ｈｅａｄ  Ｏｆ  Ｌｉｎｅ  Ｂｌｏｃｋｉｎｇ問題を回避し、少ない順序保証バッファ容量で高い転送効率を実現するというものである。
【００６９】
（構成の説明）
次に、図３を参照して、本実施の形態における構成について説明する。
【００７０】
第２の実施の形態における送信機１は、第１の実施の形態における送信機１と比較して、未着カウンタ１６１〜１６４がＲＴＴ計算部１６１Ａ〜１６４Ａに変わっている点、さらにレート計算部１７およびばらつき検出器１８を備える点において異なる。
【００７１】
一方、受信機２は、第１の実施の形態における受信機２と同様である。
【００７２】
ＲＴＴ計算部１６１Ａは、ＰＨＹ１５１からＡＣＫパケットを受信し、ＡＣＫパケットに含まれる送信時刻と、内蔵時計１９Ａから得られる現在時刻との差分から、網３１の往復遅延時間（ＲＴＴ）を計算し、レート計算部１７およびばらつき検出器１８に通知する。この際、網３１のＲＴＴの最大値（最大ＲＴＴ）および最小値（最小ＲＴＴ）も保持する。
【００７３】
ＲＴＴ計算部１６２Ａ〜１６４Ａは、網３２〜３４に関して、ＲＴＴ計算部１６１Ａと同様の動作を行う。
【００７４】
レート計算部１７は、ＲＴＴ計算部１６１Ａ〜１６４ＡよりＲＴＴの通知を受け、今回通知を受けたＲＴＴと、今回通知を受けた網の最低ＲＴＴとの差より、網３１〜３４のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１３からのパケット送信レート（帯域）を決定し、送信バッファ１３に通知する。
【００７５】
レート計算部１７における新規レートＲ’は、Ｒを現在のレート、αを増加定数、βを減少定数、ＲＴＴをＲＴＴ計算部より通知を受けたＲＴＴ、ＲＴＴｍｉｎをＲＴＴ計算部より通知を受けた最小ＲＴＴ、Ｔｃをレート計算間隔とすると、以下の式で表せる。
【００７６】
Ｒ’＝Ｒ＋（α／ＲＴＴ−β×（ＲＴＴ−ＲＴＴｍｉｎ）×Ｒ／ＲＴＴ）×Ｔｃ
ばらつき検出器１８は、ＲＴＴ計算部１６１Ａ〜１６４Ａより、網３１〜３４のＲＴＴの通知を受け、ばらつき（偏差）が一定値以上の網があるばあい、この網を切り離すよう、送信振分部１４に指示する。
【００７７】
たとえば網３１のＲＴＴが３００ｍｓ、網３２のＲＴＴが３１０ｍｓ、網３３のＲＴＴが５６０ｍｓ、網３４のＲＴＴが３０５ｍｓであった場合、ＲＴＴが他の網と比較して大きい網である網３３にパケットを振り分けないよう、送信振分部１４に指示する。
【００７８】
たとえば逆に、網３１のＲＴＴが３００ｍｓ、網３２のＲＴＴが３１０ｍｓ、網３３のＲＴＴが１００ｍｓ、網３４のＲＴＴが３０５ｍｓであった場合に、ＲＴＴが他の網と比較して小さい網である網３３にパケットを振り分けないよう、送信振分部１４に指示する。
【００７９】
内蔵時計１９Ａは、現在時刻を送信振分部１４およびＲＴＴ計算部１６１Ａ〜１６４Ａに通知する。
【００８０】
（発明の効果）
次に、本実施の形態の効果について説明する。
【００８１】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、到着順序保証を行う場合に、少ない順序保証バッファで、転送効率を向上させることができる。
【００８２】
これは、前記受信機が、データパケットが到着したＰＨＹ（網）に対して、対応するＡＣＫパケットを送出し、前記送信機内に、ＲＴＴ、最小ＲＴＴ，最大ＲＴＴを計算するＲＴＴ計算部を、網毎に複数設け、ばらつき検出器が、ＲＴＴの偏差が大きなリンクを、送信振り分け部における送信時の振り分け先から除外するからである。
【００８３】
（第３の実施の形態）
本発明の第３の実施の形態の概要は、網毎のラウンドトリップタイム（ＲＴＴ）をもとに、網毎に送信レートを算出し、各網の送信レートの偏差を大きく外れる網のレートを強制的に０にすることで、送信時の振分先から除外し、Ｈｅａｄ  Ｏｆ  Ｌｉｎｅ  Ｂｌｏｃｋｉｎｇ問題を回避し、少ない順序保証バッファ容量で高い転送効率を実現するというものである。
【００８４】
（構成の説明）
図４を参照して、本実施の形態における構成について説明する。
【００８５】
第３の実施の形態における送信機１は、第２の実施の形態における送信機１と比較して、レート計算部１７をフロー毎に用意し、レート計算部１７１〜１７４として備えている点において異なる。また、送信振分部１４を送信振分部１４Ａに、送信バッファ１３を送信バッファ１３Ａに変更し、送信振分部１４Ａは、送信バッファ１３Ａから指定された網にパケットを転送する点において異なる。
【００８６】
レート計算部１７１は、ＲＴＴ計算部１６１ＡよりＲＴＴの通知を受け、今回通知を受けたＲＴＴと、今回通知を受けた網の最低ＲＴＴとの差より、網３１のキューイング遅延（すなわち混雑）を計算し、これをもとに送信バッファ１３からの網３１に対するパケット送信レート（帯域）を決定し、送信バッファ１３Ａおよびばらつき検出器１８に通知する。
【００８７】
レート計算部１７１における新規レートＲ’は、Ｒを現在のレート、αを増加定数、βを減少定数、ＲＴＴをＲＴＴ計算部より通知を受けたＲＴＴ、ＲＴＴｍｉｎをＲＴＴ計算部より通知を受けた最小ＲＴＴ、Ｔｃをレート計算間隔とすると、以下の式で表せる。
【００８８】
Ｒ’＝Ｒ＋（α／ＲＴＴ−β×（ＲＴＴ−ＲＴＴｍｉｎ）×Ｒ／ＲＴＴ）×Ｔｃ
レート計算部１７１は、ばらつき検出器１８より、転送除外指示を受けると、上記の式によらずレートを強制的に０にし、送信バッファ１３Ａに通知する。
【００８９】
レート計算部１７２〜１７４は、網３２〜３４に関して、レート計算部１７１と同様の動作を行う。
【００９０】
送信バッファ１３Ａは、第２の実施の形態における送信バッファ１３と比較して、レート計算部１７１〜１７４より通知を受けた網毎の送信レートによりパケットを送出する点において異なる。この際、パケットを転送すべき網も決定し、送信振分部１４Ａに通知する。
【００９１】
送信振分部１４Ａは、送信バッファ１３Ａより通知を受けた網に、受信したパケットを転送する。
【００９２】
ばらつき検出器１８Ａは、レート計算部１７１〜１７４より、網３１〜３４への送信レートの通知を受け、送信レートのばらつき（偏差）が一定値以上の網がある場合、この網への送信レートを０にするよう、レート計算部１７１〜１７４に指示する。
【００９３】
たとえば網３１の送信レートが３００ｋｂｉｔ／ｓｅｃ、網３２の送信レートが３１０ｋｂｉｔ／ｓｅｃ、網３３の送信レートが５６０ｋｂｉｔ／ｓｅｃ、網３４の送信レートが３０５ｋｂｉｔ／ｓｅｃであった場合、送信レートが高い網である網３３の送信レートを０にするよう、レート計算部１７３に指示する。
【００９４】
たとえば逆に、網３１の送信レートが３００ｋｂｉｔ／ｓｅｃ、網３２の送信レートが３１０ｋｂｉｔ／ｓｅｃ、網３３の送信レートが１００ｋｂｉｔ／ｓｅｃ、網３４の送信レートが３０５ｋｂｉｔ／ｓｅｃであった場合に、送信レートが低い網である網３３の送信レートを０にするよう、レート計算部１７３に指示する。
【００９５】
（発明の効果）
次に、本実施の形態の効果について説明する。
【００９６】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、到着順序保証を行う場合に、少ない順序保証バッファで、転送効率を向上させることができる。
【００９７】
これは、前記受信機が、データパケットが到着したＰＨＹ（網）に対して、対応するＡＣＫパケットを送出し、前記送信機内に、ＲＴＴ、最小ＲＴＴ，最大ＲＴＴを計算するＲＴＴ計算部と、各網毎の送信レートを決定するレート計算部を、網毎に複数設け、ばらつき検出器が、送信レートの偏差が大きなリンクについて、送信レートを０にすることで、送信レートのばらつきが大きな網を切り離すからである。
【００９８】
以上の実施の形態及び実施例では、パケットという用語を用いて説明を行ったが、フレーム（イーサネットフレーム等）でも同様に実施できる。また、パケットという用語を用いて説明を行った、分割されたデータは、本発明における「送信データ」に相当するものである。
【００９９】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。また、当然ながら、以上に述べた実施の形態及び実施例を、相互に組み合わせて実施することもできる。なお、本発明の実施形態における通信システムは、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。
【産業上の利用可能性】
【０１００】
本発明は、複数の網を利用して大容量のデータを高速転送するイーサネットスイッチやルータ等といった用途に適用できる。また、サーバ間を高速に結ぶネットワークインターフェースカード（ＮＩＣ）等といった用途にも適用できる。
【図面の簡単な説明】
【０１０１】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】順序確認手段２２１の詳細を示す流れ図である。
【図３】本発明の第２の実施の形態の構成を示すブロック図である。
【図４】本発明の第３の実施の形態の構成を示すブロック図である。
【符号の説明】
【０１０２】
１  送信機
２  受信機
１１  データ送信部
１２  ＳＥＱ付与部
１３  送信バッファ
１３Ａ  送信バッファ
１４  送信振分部
１４Ａ  送信振分部
１７  レート計算部
１８  ばらつき検出器
１８Ａ  ばらつき検出器
１９  再送タイマ
１９Ａ  内蔵時計
２２  取出制御部
２４  ＡＣＫ送信部
２５  出力バッファ
２６  ＳＥＱ削除部
２７  データ受信部
１５１  ＰＨＹ
１５２  ＰＨＹ
１５３  ＰＨＹ
１５４  ＰＨＹ
１６１  未着カウンタ
１６２  未着カウンタ
１６３  未着カウンタ
１６４  未着カウンタ
１６１Ａ  ＲＴＴ計算部
１６２Ａ  ＲＴＴ計算部
１６３Ａ  ＲＴＴ計算部
１６４Ａ  ＲＴＴ計算部
１７１  レート計算部
１７２  レート計算部
１７３  レート計算部
１７４  レート計算部
２１１  ＰＨＹ
２１２  ＰＨＹ
２１３  ＰＨＹ
２１４  ＰＨＹ
２２１  順序確認動作
２３１  順序バッファ
２３２  順序バッファ
２３３  順序バッファ
２３４  順序バッファ
【図１】
0004924285.tif 000002
【図２】
0004924285.tif 000003
【図３】
0004924285.tif 000004
【図４】
0004924285.tif 000005