(57)【特許請求の範囲】
【請求項１】
IP(Internet  Protocol)ネットワークなどのパケット交換方式に基づく計算機ネットワークの内部に配置され、OSI(Open Systems Interconnection)参照モデルにおけるネットワーク層のパケットの転送を司るルータあるいはデータリンク層のフレームの転送を司るスイッチを含むデータ転送装置であって、
内部に大容量のハードディスクドライブ(HDD)や大容量のソリッドステートディスク(SSD)のような大容量の記憶装置によって実現される蓄積手段と、
当該データ転送装置（以下、「第1のデータ転送装置」と記す）以外の第２のデータ転送装置を含む外部ネットワークの、該第１のデータ転送装置と該第２のデータ転送装置とを接続する各回線および該第２のデータ転送装置同士を接続する各回線の余剰帯域情報をルータ外部の余剰帯域測定装置から一定の時間間隔で受信し、受信した余剰帯域情報を出力する余剰帯域情報受信手段と、
前記第１のデータ転送装置から出力される複数のフローについて、前記余剰帯域情報受信手段から上記の一定時間間隔で通知されてくる外部ネットワークの各回線の余剰帯域情報、及び、各フローの伝送経路に基づいて、前記第１のデータ転送装置同士を接続するそれぞれのネットワークのボトルネック可用帯域以下となるように、各フローのデータの出力速度を上記の一定時間間隔で随時決定し、通知する機能を有する出力速度計算手段と、
各フローのデータを回線へ出力する際の速度を、前記出力速度計算手段から上記の一定時間間隔で通知される前記各フローのデータの出力速度に随時調整する出力速度制御手段と、
を有し、
入力側回線から入力された各フローのデータを一旦前記蓄積手段に蓄積しながら、前記速度制御手段で調整された前記出力速度で一定時間間隔毎に調整しながら出力側回線へ出力する機能を有する
ことを特徴とするデータ転送装置。
【請求項２】
IP(Internet  Protocol)ネットワークなどのパケット交換方式に基づく計算機ネットワークの内部に配置され、OSI(Open Systems Interconnection)参照モデルにおけるネットワーク層のパケットの転送を司るルータあるいはデータリンク層のフレームの転送を司るスイッチを含むデータ転送装置におけるデータ転送方法であって、
内部に大容量のハードディスクドライブ(HDD)や大容量のソリッドステートディスク(SSD)のような大容量の記憶装置によって実現される蓄積手段と、余剰帯域情報受信手段、出力速度計算手段、出力速度制御手段と、有する第1のデータ転送装置において、
前記余剰帯域情報受信手段が、前記第1のデータ転送装置以外の第２のデータ転送装置を含む外部ネットワークの該第1のデータ転送装置と該第２のデータ転送装置とを接続する各回線および該第２のデータ転送装置同士を接続する各回線の余剰帯域情報をルータ外部の余剰帯域測定装置から一定の時間間隔で受信し、受信した余剰帯域情報を前記出力速度計算手段に通知する余剰帯域情報受信ステップと、
前記出力速度計算手段が、前記第１のデータ転送装置から出力される複数のフローについて、前記余剰帯域情報受信手段から上記の一定時間間隔で通知されてくる外部ネットワークの各回線の余剰帯域情報、及び、各フローの伝送経路に基づいて、前記第１のデータ転送装置同士を接続するそれぞれのネットワークのボトルネック可用帯域以下となるように、各フローのデータの出力速度を上記の一定時間間隔で随時決定し、前記出力速度制御手段に通知する出力速度計算ステップと、
前記出力速度制御手段が、各フローのデータを回線へ出力する際の速度を、前記出力速度計算手段から上記の一定時間間隔で通知される前記各フローのデータの出力速度に随時調整する出力速度制御ステップと、
を行い、
入力側回線から入力された各フローのデータを一旦前記蓄積手段に蓄積しながら、前記出力速度制御ステップで調整された前記出力速度で一定時間間隔毎に調整しながら出力側回線へ出力する
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置及び方法に係り、特に、IP(Internet Protocol)ネットワークなどのパケット交換方式に基づく計算機ネットワークの内部に配置され、OSI参照モデルにおけるネットワーク層のパケットやデータリンク層のフレームの転送を司るルータやスイッチ等のデータ転送装置及びデータ転送方法に関する。
【背景技術】
【０００２】
従来のルータやスイッチの標準的な構成を図９に示す。ルータの場合は1つの回線から入力されたネットワーク層のパケット、スイッチの場合はデータリンク層のフレーム（以下、本発明の要旨に係らないことを鑑み、簡単のため前者に統一して記述する ）は、まず、回線モジュール１２０ａ上の小容量のメモリであるバッファ１２３ａに格納される。
【０００３】
当該パケットをバッファ１２３ａに格納する理由は、当該パケットの出力先となる回線モジュール１２０ｃ上のバッファ１２３ｃに空きが生じるまで転送を待つようにするため、及び、回線からのデータ受信速度と、スイッチ部１３０を経由したルータ内のデータ転送速度との一時的な差を吸収するためである。
【０００４】
当該パケットがバッファ１２３ａに格納されている間に、データ転送制御部１２２ａは、制御部１１０から得た転送先情報に基づいて当該パケットの送出先の回線モジュールを決定する。
【０００５】
出力先の回線モジュールが決定し、同回線モジュール１２０ｃ上のバッファ１２３ｃに当該パケットを格納できるだけの空きがあることが確認できると、回線モジュール１２０ａのバッファ１２３ａ内の当該パケットはスイッチ部１３０を介して出力先回線モジュール１２０ｃ上のバッファ１２３ｃへ転送される。そして、適宜必要な処理が施された後、出力側の回線へ送出される。
【０００６】
従来のルータは上記のような流れで、それぞれの回線から入力されたパケットを別の回線へ転送する処理を繰り返す。ルータ内部で特定の出力回線に対する激しい競合が生じない限り、トラヒックの各フローは入力時のデータ入力速度とほぼ同様の速度でそのまま出力される。
【０００７】
上記で述べた内部構造を持つ従来のルータを使用した計算機ネットワークにおいて発生する課題として、ルータ内のある回線を出力先とするトラヒックの総量がその回線の物理的な回線容量を上回った場合にパケットの損失が発生する可能性がある、という課題がある。
【０００８】
図１０は、ルータ内のある回線を出力先とするトラヒックの総量がその回線の物理的な回線容量を上回った場合にパケットの損失が発生する可能性があることを示している。図１０の例を用いて説明する。ルータ２０ｂにつながっている端末１０ｂからの1つのフローが回線３０ｂへ流れており、回線３０ｂの物理的な回線容量（帯域）の70%を使用しているものとする。なお、ここでは回線３０ａと回線３０ｂの物理的な回線容量は同じとする。
【０００９】
この状況で、ルータ２０ａにつながった端末１０ａが回線の帯域使用率50%のフローを送出し、それが回線３０ａとルータ２０ｂを経由して回線３０ｂへ流入したとする。この場合、回線３０ｂには端末1０ａからのフローを合わせて流すだけの余剰帯域がない。したがって、このような状況がある程度の時間継続すると、ルータ２０ｂの内部の小容量のバッファがあふれ、端末１０ａ、及び、端末１０ｂからのフローのパケットの損失が発生する可能性がある（どちらのフローのパケットが損失するかは、ルータ内部でのフローの処理方法や、それぞれのフローがOSI参照モデルのトランスポート層で使用しているプロトコル等に依存する）。
【００１０】
OSI(Open Systems Interconnection)参照モデルのトランスポート層のプロトコルにデータの再送機能などの信頼性保証機構のないUDP(User Datagram Protocol)を使用している場合、上記のパケット損失は直ちにエンド-エンドの端末間での通信データの欠損を引き起こす。
【００１１】
トランスポート層のプロトコルにパケット損失確率を低減するためのレート制御機能やデータの再送機能などの信頼性保証機構を有するTCP(Transmission control Protocol)を使用している場合、上記のパケット損失は以下に述べるような問題を引き起こす。
【００１２】
TCPでは、送信側端末は、受信側端末からの当該データの受信確認応答(Ack)を受信するまでに送信可能なデータ量(cwnd)を送信し、Ackを待ち、Ackを受け取ると再びcwndのデータ量を送信するという処理を繰り返す（例えば、非特許文献１参照）。（より厳密には、上記cwndの値と、受信側端末から通知される受信可能なデータ量rwndとの値を比較し、小さい方の値に相当するデータを送信する）。
【００１３】
TCPでは、セッション開始時にはcwndの値を比較的小さい値から始め、トラヒックを流しながら徐々にcwndの値を大きくしていく。すなわち、トラヒックの送出開始時に他のトラヒックへ与える影響を小さくし、徐々にスループットを上げていくという動作をする。
【００１４】
この動作の途中で通信の経路上のいずれかの箇所で上述のようなパケット損失が発生した場合、TCPでは、cwndの値を半減させて一旦スループットを落とすという動作をする。この結果パケット損失が無くなればcwndの値を少しずつ増やしながらスループットを回復させるフェーズに入るが、パケット損失が発生する度にcwndの値は半減される。
【００１５】
したがって、最終的に安定するスループットの値は、送受信端末間の経路上の全ての回線の中で可用帯域が最も狭い回線部分（以下、エンド-エンドでのボトルネック可用帯域、と呼ぶ）のそれとほぼ同じ値となる。例えば、図１１の例は、ルータ５０ａに接続された端末４０ａとルータ５０ｄに接続された端末４０ｂとの間で、回線６０ａ〜６０ｃとルータ５０ａ〜５０ｄを経由して確立されたTCPセッション上でデータ通信を行っているものであるが、この端末間の通信のスループットは回線６０ｂの余剰帯域とほぼ同じ値となる。回線６０ａでは回線６０ｂよりも多くの余剰帯域があるにもかかわらず、端末４０ａは回線６０ｂの可用帯域に相当する速度以上でデータを送信することはできない。
【００１６】
また、TCPでは上述のようにネットワークの輻輳によってパケットロスが生じる度にcwndの値を一旦半減させてから、再び増加させるという動作をするため、ネットワークの輻輳時の送信端末からのデータ送信速度が激しく変動し安定しない、さらに、元々のデータ送信速度が高速であった場合に、cwndの値を減少させてから送信速度を元通りに回復するまでに時間がかかってしまう、という問題もある。
【００１７】
この問題については、パケット損失が発生した際のcwndの値の減少率や回復時の増加率を元々の輻輳ウィンドウサイズ（cwnd）の値に応じて決定する技術が提案されている（例えば、非特許文献２参照）。これによれば、パケット損失時のcwndの減少量を小さくしたり回復を早めたりすることができるため、ネットワークの輻輳時におけるエンド-エンドのスループットの不安定化を防ぐことができ、高速通信時においてもスループットを素早く回復することができる。
【００１８】
また、受信側端末において、パケットデータの到着間隔をもとに、常時エンド-エンドのボトルネック可用帯域を推定しておき、パケット損失を検出した時に送信側に対してこの推定値を送信し、これを受けとった送信側端末がデータの送信速度を調整する技術が提案されている（例えば、非特許文献３参照）。本技術も、ネットワークの輻輳時におけるエンド-エンドのスループットを安定化する技術である。
【先行技術文献】
【非特許文献】
【００１９】
【非特許文献１】M. Allman, et al., "TCP Congestion Control," RFC2581, April 1999.
【非特許文献２】S.Floyd, "HighSpeed TCP for Large Congestion Windows,"RFC3649, Dec. 2003.
【非特許文献３】Nadeem Aboobaker, David Chanady, Mario Gerla, M. Y. Sanadidi, "Streaming Media Congestion Control using Bandwidth Estimation", Proceedings of the 5th IFIP/IEEE International Conference on Management of Multimedia Networks and Services: Management of Multimedia on the Internet 2002.
【発明の概要】
【発明が解決しようとする課題】
【００２０】
このように、ネットワークの輻輳時におけるエンド-エンドのスループットの不安定性やスループット回復の困難性を改善する技術としては非特許文献２，３のような例が存在する。しかし、これらを用いたとしても、送信側端末がデータを送信することができる速度は、実質的にはその時々におけるエンド-エンドのボトルネック可用帯域に近い値であり、したがって、エンド-エンドの実効スループットもその時々におけるエンド-エンドのボトルネック可用帯域にほぼ等しい値に抑えられてしまうという、上述の課題を解決することはできない。
【００２１】
従来のルータを使用した計算機ネットワークにおいて発生するもう1つの課題として、内部に小容量のバッファしかなく、回線から続いて入力されてくるトラヒックのデータを迅速に出力側の回線に出力しなければならない、換言すれば、ネットワーク上を流れる各フローのデータをルータへの入力時の速度を保ったまま出力側の回線へ出力することしかできないために、データ出力の速度や送出を開始するタイミングをネットワークのデータ転送ノード上で柔軟に制御することができず、ネットワークリソースの有効利用やエンド-エンドの端末間のデータ転送の柔軟なスケジューリングといった高度なサービスの実現ができない、という課題がある。
【００２２】
本発明は、上記の点に鑑みなされたもので、外部ネットワークの余剰の変動に応じてデータ出力の速度を柔軟に制御することができ、その結果、ネットワークリソースの有効利用やエンド−エンドの端末間のデータ転送の柔軟なスケジューリングを可能とするデータ転送装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記の課題を解決するために、本発明（請求項１）は、IPネットワークなどのパケット交換方式に基づく計算機ネットワークの内部に配置され、OSI参照モデルにおけるネットワーク層のパケットの転送を司るルータあるいはデータリンク層のフレームの転送を司るスイッチを含むデータ転送装置であって、
内部に大容量のハードディスクドライブ(HDD)や大容量のソリッドステートディスク(SSD)のような大容量の記憶装置によって実現される蓄積手段と、
当該データ転送装置（以下、「第1のデータ転送装置」と記す）以外の第２のデータ転送装置を含む外部ネットワークの、該第１のデータ転送装置と該第２のデータ転送装置とを接続する各回線および該第２のデータ転送装置同士を接続する各回線の余剰帯域情報をルータ外部の余剰帯域測定装置から一定の時間間隔で受信し、受信した余剰帯域情報を出力する余剰帯域情報受信手段と、
前記第１のデータ転送装置から出力される複数のフローについて、前記余剰帯域情報受信手段から上記の一定時間間隔で通知されてくる外部ネットワークの各回線の余剰帯域情報、及び、各フローの伝送経路に基づいて、前記第１のデータ転送装置同士を接続するそれぞれのネットワークのボトルネック可用帯域以下となるように、各フローのデータの出力速度を上記の一定時間間隔で随時決定し、通知する機能を有する出力速度計算手段と、
各フローのデータを回線へ出力する際の速度を、前記出力速度計算手段から上記の一定時間間隔で通知される前記各フローのデータの出力速度に随時調整する出力速度制御手段と、
を有し、
入力側回線から入力された各フローのデータを一旦前記蓄積手段に蓄積しながら、前記速度制御手段で調整された前記出力速度で一定時間間隔毎に調整しながら出力側回線へ出力する機能を有する。
【００２４】
また、本発明（請求項２）は、IPネットワークなどのパケット交換方式に基づく計算機ネットワークの内部に配置され、OSI参照モデルにおけるネットワーク層のパケットの転送を司るルータあるいはデータリンク層のフレームの転送を司るスイッチを含むデータ転送装置におけるデータ転送方法であって、
内部に大容量のハードディスクドライブ(HDD)や大容量のソリッドステートディスク(SSD)のような大容量の記憶装置によって実現される蓄積手段と、余剰帯域情報受信手段、出力速度計算手段、出力速度制御手段と、有する第１のデータ転送装置において、
前記余剰帯域情報受信手段が、前記第1のデータ転送装置以外の第２のデータ転送装置を含む外部ネットワークの該第1のデータ転送装置と該第２のデータ転送装置とを接続する各回線および該第２のデータ転送装置同士を接続する各回線の余剰帯域情報をルータ外部の余剰帯域測定装置から一定の時間間隔で受信し、受信した余剰帯域情報を前記出力速度計算手段に通知する余剰帯域情報受信ステップと、
前記出力速度計算手段が、前記第１のデータ転送装置から出力される複数のフローについて、前記余剰帯域情報受信手段から上記の一定時間間隔で通知されてくる外部ネットワークの各回線の余剰帯域情報、及び、各フローの伝送経路に基づいて、前記第１のデータ転送装置同士を接続するそれぞれのネットワークのボトルネック可用帯域以下となるように、各フローのデータの出力速度を上記の一定時間間隔で随時決定し、前記出力速度制御手段に通知する出力速度計算ステップと、
前記出力速度制御手段が、各フローのデータを回線へ出力する際の速度を、前記出力速度計算手段から上記の一定時間間隔で通知される前記各フローのデータの出力速度に随時調整する出力速度制御ステップと、
を行い、
入力側回線から入力された各フローのデータを一旦前記蓄積手段に蓄積しながら、前記出力速度制御ステップで調整された前記出力速度で一定時間間隔毎に調整しながら出力側回線へ出力する。
【発明の効果】
【００２５】
上記のように、本発明によれば、データ転送装置が装置内の大容量の蓄積手段に入力データを一旦蓄積し、余剰帯域に応じて送信レートを制御することで、外部ネットワークの余剰の変動に応じてデータ出力の速度を柔軟に制御することができ、その結果、ネットワークリソースの有効利用やエンド−エンドの端末間のデータ転送の柔軟なスケジューリングが可能となる。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施の形態におけるルータの構成図である。
【図２】余剰帯域情報と各フローの出力速度との関係を説明するための図である。
【図３】本発明の一実施の形態における蓄積部の機能を説明するための図である。
【図４】本発明の一実施の形態における余剰帯域情報受信部・出力速度計算部・出力速度制御部の機能を説明するための図である。
【図５】本発明の一実施の形態におけるネットワーク構成及び可用帯域推移の例である。
【図６】本発明の一実施例のルータの構成図である。
【図７】本発明の一実施例における回線からのトラヒックデータ入力時の動作を説明するための図である。
【図８】本発明の一実施例における回線へのトラヒックデータ出力時の動作を説明するための図である。
【図９】従来のルータやスイッチの標準的な構成図である。
【図１０】従来の課題を説明するための図（その１）である。
【図１１】従来の課題を説明するための図（その２）である。
【発明を実施するための形態】
【００２７】
以下図面と共に、本発明の実施の形態を説明する。
【００２８】
図１は、本発明の一実施の形態におけるルータの構成を示す。
【００２９】
同図に示すルータ２００は、制御部２１０、回線モジュール２２０、スイッチ部２３０、蓄積部２４０を有する。回線モジュール２２０は、回線インタフェース部２２１、データ転送制御部２２２、バッファ部２２３を有する。
【００３０】
上記の構成において、本発明では、蓄積部２４０を具備しているが、これは、前述の課題は、ルータの入力側回線に出力側回線の物理的な回線容量以上の帯域を要するトラヒックが流入した場合に、内部に小容量のバッファしか持たない既存のルータでは容易にパケット損失が発生してしまうことに起因しているため、この現象を回避するために用いる。
【００３１】
この蓄積部２４０は、従来のルータが持つバッファのような、高価で小容量のDRAMのようなメモリではなく、ハードディスクドライブ(HDD)やソリッドステートディスク(SSD)のような大容量の記憶装置である。並列処理による速度向上のために、本蓄積部２４０を複数個搭載してもよい。
【００３２】
さらに、本発明では、回線インタフェース部２２１に余剰帯域情報受信部２２１１、データ転送制御部２２２に出力速度制御部２２２１を備え、さらに、制御部２１０には出力速度計算部２１１を有する。
【００３３】
余剰帯域情報受信部２２１１は、外部ネットワークの各回線の余剰帯域情報を、図２に示すように、外部ネットワークの余剰帯域測定装置４００から一定の時間間隔で受信し、受信した値を後述の出力速度計算部２１１へ通知する機能を有する。
【００３４】
余剰帯域測定装置４００とは、本発明によるルータ以外の従来のルータで構成される外部ネットワークにおける回線の余剰帯域を測定する機能を有する装置である。内部に大容量の蓄積装置を持たない従来のルータと本発明によるルータとを組み合わせてネットワークを構築する場合、本発明によるルータの間を接続している従来のルータで構築されたネットワーク部分において、過剰なトラヒックの流入によるパケット損失を回避するため、あるいは、その部分のネットワークリソースの使用状況に応じてデータ転送速度や送出タイミングを柔軟に制御するような高度なサービスを実現するために、各回線の余剰帯域を測定し、その範囲内でデータ転送速度を調整する必要がある。余剰帯域測定装置４００はこの余剰帯域測定を行う装置である。なお、この余剰帯域測定装置４００については既存技術の流用でよく、本発明の要旨に係らないため詳細は省略する。また、余剰帯域情報受信部２２１１へ通知されてくる余剰帯域情報の形式についても特に規定しない。
【００３５】
制御部２１０の出力速度計算部２１１は、本発明のルータ２００から出力する各フローの伝送経路、及び、上記余剰帯域情報受信部２２１１から上記の一定時間間隔で通知されてくる外部ネットワークの各回線の余剰帯域情報に基づいて、各フローの回線への出力時のデータ出力速度を上記の一定時間間隔で随時計算し決定する機能を有する。
【００３６】
理解を容易にするため、図２を用いて余剰帯域情報を用いたフローのデータの出力速度調整の例を説明する。同図では、図１に示す構成を有する本発明のルータ２００ａ，２００ｂ，２００ｃ，２００ｄが、従来技術に基づくルータ１００ａ，１００ｂ，１００ｃ，１００ｄによって構成されるネットワークを介して接続されている。ここでは、従来技術に基づくルータ１００で構成された部分において、過剰なトラヒック量の流入によるパケット損失を防止するための制御例を示す。
【００３７】
ルータ２００ａから回線３００ａ、３００ｂ、３００ｃを経由してルータ２００ｃを宛先とするフローａのデータが流れている状態において、ルータ２００ｂが回線３００ｄ、３００ｅ、３００ｂ、３００ｃを経由してルータ２００ｃを宛先とするフローｂのデータを新たに流すものとする。この場合、ルータ２００ｂは、フローｂの伝送経路である回線３００ｄ、３００ｅ，３００ｂ，３００ｃの各余剰帯域測定装置４００ｂ，４００ｅ，４００ｃ，４００ｇから時々刻々と通知されてくる余剰帯域情報に基づき、上記伝送経路上の全ての回線において、常時余剰帯域を上回るトラヒック量が流れることのないように、フローｂのデータ出力速度を制御しながら出力する。
【００３８】
具体的には、フローｂのデータ出力速度を常時、ルータ２００ｂからルータ２００ｃへのエンド-エンドのボトルネック可用帯域以下の値となるように制御すれば、２つのフローａ，ｂが共通に使用している回線３００ｂ，３００ｃの各回線において、２つのフローが使用する帯域の和を常時それぞれの物理的な回線容量の範囲内に収めることができ、パケット損失を防ぐことができる。
【００３９】
なお、各フローの伝送経路の導出方法の詳細、及び、各フローのデータの出力速度の最終的な決定方法の詳細については本発明の要旨に係らないため詳細は省略する。
【００４０】
次に、データ転送制御部２２２の出力速度制御部２２２１は、出力側回線へ各フローのデータを送出する際の実際の送出速度を調整する機能を有する。各フローの出力側回線へのデータ送出速度が、上記の一定時間間隔で出力速度計算部２１１から通知されてくる値の通りになるように、データ転送制御部を上記の一定時間間隔で制御する。
【００４１】
上記の構成を有する本発明のルータ２００においては、入力側回線から入力されたデータを全て一旦上記蓄積部２４０へ書き込み、その後、出力側回線へ出力する。
【００４２】
データの出力側回線への出力時には、入力回線側のデータ入力速度に関係なく、各フローの出力速度を、上記の一定時間間隔毎に出力速度計算部２１１が決定した値となるように制御しながら、データを出力する。
【００４３】
本発明では、蓄積部２４０に入力トラヒックのデータを一旦蓄積する処理が入る。このため、図３に示すように、１本以上の入力回線を経由して入力されてくる、ある特定の回線を出力先とするフローのトラヒック量の総和がそれらの出力先回線から出力可能なデータ速度（当該出力回線の物理的な回線容量、あるいは、当該出力回線に接続された外部ネットワークの余剰帯域測定装置４００から通知されてくる余剰帯域の値によって決まる）より大きくなる状態が継続しても、両者の速度差に相当するデータを蓄積部２４０へ蓄積していくことができる。
【００４４】
また、図４示すように、余剰帯域情報受信部２２１１により出力側の外部ネットワークの余剰帯域が増加したことを検知した場合、蓄積部２４０に十分な量のデータが蓄積されていれば、出力速度計算部２１１が当該フローのデータの出力速度を増加させ、データ転送制御部２２２の出力速度制御部２２２１はそれを反映した速度で蓄積部２４０から回線への当該フローのデータ出力が行われるように制御することができる。
【００４５】
これらの機能により、データの送信速度が送受信端末間のエンド-エンドのボトルネック可用帯域に支配されるという、前述の発明が解決しようとする課題の項に述べた問題がなくなり、送受信間でデータをより早く送ることが可能となるという、１つ目の効果が得られる。
【００４６】
本効果の具体的な例を図５に基づいて説明する。同図の上段に、説明に用いるネットワークの構成を示す。データの送信端末と受信端末が、本発明によるルータＡ，Ｂ，Ｃ，Ｄを経由して接続されている。本発明によるルータ同士は、従来ルータからなるネットワークａ，ｂ，ｃを介して接続されている。
【００４７】
また、同図の下段には、上記ネットワークａ，ｂ，ｃのそれぞれのネットワークの両端に接続された本発明によるルータ間のエンド-エンドのボトルネック可用帯域の推移を表したグラフを示す。
【００４８】
同図のネットワークにおいては、内部に蓄積部を持たない従来のルータから成るそれぞれのネットワーク部分においてボトルネック可用帯域以上のデータを流さないように制御しさえすれば、パケットの損失は発生しない。送信端末から受信端末へ30Gbitsのデータを送信する場合を例に、この効果を説明する。
【００４９】
従来技術のように、送信端末からのデータ送信速度を常時、送信端末から受信端末までのデータ転送経路のエンド-エンドのボトルネック帯域にあわせて送信した場合、上記30Gbitsのデータの送信が完了するまでにかかる時間は、送信端末から受信端末までのエンド-エンドのボトルネック帯域が、
0分〜5分  ：  3Gbps
5分〜10分 ：  5Gbps
なので、最初の５分間は3Gbpsで送信可能であり、次の５分間で残りのデータ15Gbitsを送信可能であることから、データ転送の完了に要する時間は、
5 + (30 - 5 x 3) / 5 = 8 （分）
となる。
【００５０】
一方、本発明によるルータが有する図１に示す構成を用いて、従来のルータから成るそれぞれのネットワーク部分のローカルなボトルネック可用帯域を常時観測しながら、本発明によるルータにおいて、出力側のネットワークに対しては上記可用帯域以上の速度でデータを流さないようにデータ送信速度を調整し、入力側のネットワークからそれ以上の速度でデータが入力されてきたデータについては蓄積部２４０に蓄積していくようにして、ネットワークａ，ｂ，ｃに対してそれぞれのローカルなボトルネック可用帯域以上のデータを流さないという条件のみを満足するようにデータ送信速度の制御を行った場合、
・ルータＡからは5Gbpsの速度で6分間データが送信される：
・ルータＢは最初の5分間は3Gbpsでデータを送信し、次の1分間で最初の5分間    の間に自身の蓄積部２４０に蓄積された10Gbitsのデータを（10Gbpsの速度で）送信し、最後の0.5分間で残りの5Gbitsのデータを（10Gbpsの速度で）送信する：
このため、データ転送の完了に要する時間は、
5 + 1 + 0.5 = 6.5（分）
となり、前者の場合に比べてデータ転送の完了に要する時間を短くすることができる。
【００５１】
なお、簡単のため、両者の場合においてデータの伝送遅延は考慮していない。また、トランスポート層のプロトコルにTCPのようなウインドウ制御を持つプロトコルを使用した場合は、トランスポート層自身によるデータ送信速度の制御機能が働いてしまうため、本発明による効果を直接享受することはできないが、本発明の要旨ではないため、トランスポート層に用いるプロトコルについてはここでは既定しない。
【００５２】
さらに、本発明によれば、各ルータにおいて蓄積部２４０に蓄積したデータを送信するタイミングや速度を外部ネットワークの可用帯域情報を加味しながら自由に調整できる。このため、ゆるやかな配信時間制約のある大容量のデータを、ネットワークの使用状況をみて、ネットワークの使用率が低い時に高速に転送するなどの柔軟なサービスの実現が可能となるという、２つ目の効果もある。
【実施例】
【００５３】
以下、添付図面を参照しながら本発明の実施例を詳細に説明する。
【００５４】
図６は、本発明の一実施例のルータの構成を示す。
【００５５】
同図に示すルータ２００は、Ｎ個の回線モジュール２２０１〜２２０Ｎ、制御部２１０、Ｍ個の蓄積部２４０１〜２４０Ｍ、スイッチ部２３０からなる。
【００５６】
Ｎ個の回線モジュール２２０１〜２２０Ｎはそれぞれ、データ転送制御部２２２、回線インタフェース部２２１、バッファ部２２３を含んでいる。
【００５７】
回線インタフェース部２２１は、余剰帯域情報受信部２２１１とパケット処理部２２１２を有し、１本の回線を収容し、パケット処理部２２１２においてパケット単位で回線を介したデータ入出力を行う。
【００５８】
余剰帯域情報受信部２２１１は、外部の余剰帯域測定装置から、当該回線が接続された外部ネットワークの余剰帯域に関する情報を一定時間間隔で受信し、その値を受信するたびに後述の制御部２１０の出力速度計算部２１１へ通知する。
【００５９】
バッファ部２２３は、回線とのデータの送受信速度と蓄積部２４０とのデータ転送速度との差を吸収し、ルータ内部でのデータの欠落を防ぐためのものである。本バッファ部２２３はDRAM等で構成される高速小容量の記憶装置である。トラヒックのフロー毎に領域分割して使用され、各領域はFIFOとして用いられる。
【００６０】
データ転送制御部２２２は、回線インタフェース部２２１とバッファ部２２３との間、及び、バッファ部２２３と蓄積部２４０との間のデータ転送を制御する。
【００６１】
データ転送制御部２２２の中の出力速度制御部２２２１は、出力側回線へ各フローのデータを送出する際の実際の出力速度を制御する機能を有する。後述する制御部２１０の出力速度計算部２１１から一定時間間隔で各フローの出力速度の値が通知されてくる度に、各フローのデータをその速度でバッファ部から回線インタフェース部２２１へ転送する。
【００６２】
以上が各回線モジュール２２０に含まれる構成要素である。
【００６３】
制御部２１０は、汎用のマイクロプロセッサで構成され、他の構成要素との間の各種情報のやり取りやそれらの制御、及び、各種演算処理を行う。
【００６４】
制御部２１０の出力速度計算部２１１は、制御部２１０で実行される、演算処理を実現したソフトウェアである。本ルータから出力される複数のフローについて、上記の余剰帯域情報受信部２２１１から上記の一定時間間隔で通知されてくる外部ネットワークの各回線の余剰帯域情報、及び、各フローの伝送経路に基づき、各フローのデータの出力速度を上記の一定時間間隔で随時決定、上記の出力速度制御部へ通知する機能を有する
蓄積部２４０は、ハードディスクドライブ(HDD)やソリッドステートディスク(SSD)のような大容量の記憶装置である。回線から入力したトラヒックのデータを、出力側回線へ出力するまで一時的に蓄積する。
【００６５】
スイッチ部２３０は、各回線モジュールと各蓄積部との間のトラヒックデータの転送をスイッチングする。
【００６６】
これらの構成要素は制御信号線、及び、データ線によって同図に示すように相互に接続されている。データ線はトラヒックのデータが流れる経路、制御信号線は各構成要素間で制御信号や各種情報を送受する信号線である。
【００６７】
以上説明した構成要素のうち、図中に太線で示した余剰帯域情報受信部２２１１、出力速度制御部２２２１、出力速度計算部２１１、蓄積部２４０が、本発明独自の機能を実現する。
【００６８】
次に、本実施例のルータの動作を述べる。
【００６９】
図７は、本発明の一実施例における回線からのトラヒックデータ入力時の動作を説明するための図であり、図８は、本発明の一実施例における回線へのトラヒックデータ出力時の動作を説明するための図である。
【００７０】
以下、図７及び図８を用いて、回線Ａから入力されたフロー(ａ)のデータを回線モジュール２２０Ｂから出力するまでの処理を説明する。
【００７１】
まず、図７を用いて、回線からのトラヒックデータ入力時の動作を説明する。
【００７２】
回線Ａからパケットデータが入力された回線モジュール２２０Ａのパケット処理部２２１２Ａは、パケットの（送信元IPアドレス、送信先IPアドレス、送信元ポート番号、送信先ポート番号）の組からなるフローを識別し、新規のフローのパケットであった場合は、入力側の回線モジュール２２０Ａ、及び、出力側の回線モジュール２２０Ｂ上のデータ転送制御部２２２に対し、「新規フロー情報」として当該フロー(ａ)に関する情報を送信する（図中（１））。
【００７３】
回線モジュール２２０Ａのこの情報を受信したデータ転送制御部２２２Ａは、バッファ部２２３Ａの中に当該フロー（ａ)のデータを格納するための新規FIFOキューを生成（図中（２））すると共に、自身の中に有する、フローとバッファ中のFIFOキューとの対応表である「フロー/キューマップ」に対して、当該フロー(ａ)用の新規エントリを生成する（図中（３））。
【００７４】
ここまでの処理で、回線から次々に入力される当該フロー(ａ)のパケットデータをバッファ内の当該フロー(ａ)用のFIFOキューに格納する操作を開始することができる（図中（４））。なお、同回線Ａから入力されるフロー(ａ)以外のフロー（図中ではフロー(ｂ)と表記）のパケットデータは、図中に示すようにバッファ部２２３Ａ内の、フロー(ａ)用とは別のFIFOキュー内に格納される。
【００７５】
データ転送制御部２２２Ａは図中（４）の動作と並行して、制御部２１０に対し上記の新規フロー情報を送信する（図中（５））。
【００７６】
この情報を受信した制御部２１０は、本ルータ２００を通過するフローの一覧表に当該フロー(ａ)のエントリを新規に追加した（図中（６））後、蓄積部２４０に、当該フロー(ａ)のデータ格納用のファイルを生成する（図中（７））。本発明においては、フローとそのデータを格納する蓄積部２４０を対応付ける方法については、発明の要旨ではないため特に既定しない。但し、本実施例においては、バッファ部２２３Ａから蓄積部２４０へのデータ転送を高速化するために、蓄積部２４０１〜２４０Ｍへの全ての蓄積部に当該フロー(ａ)のデータ格納用ファイルを生成し、バッファ部２２３Ａから蓄積部２４０へのデータ転送時にはこれらの蓄積部へ当該フロー(ａ)のデータをストライピングして並列に書き込むものとする。なお、同回線から入力されるフロー(ａ)以外のフロー（図中のフロー(ｂ)）のデータは、図中に示すように、フロー(ａ)用とは別のファイル内に格納される。
【００７７】
上記ファイルの生成が完了すると、当該フロー(ａ)の入力側の回線モジュール２２０Ａ、及び、出力側の回線モジュール２２０Ｂ上のデータ転送制御部２２２に対し、生成したファイルのロケーション情報（蓄積部の番号、及び、その蓄積部内の当該ファイルの位置情報）を送信する（図中（８））。
【００７８】
この情報を受信した入力側の回線モジュール２２０Ａ上のデータ転送制御部２２２Ａは、バッファ部２２３Ａの当該フロー(ａ)用のFIFOキュー内に格納されている、当該フロー(a)のデータを蓄積部２４０内の上記ファイルへ書き込む操作を開始する（図中（９））。前述のように、蓄積部２４０１〜２４０Ｍの全ての蓄積部に生成した書き込み用ファイルに対してバッファ部２２３Ａのデータを並列に書き込むことにより、バッファ部２２３Ａから蓄積部２４０へのデータ転送を高速化する。
【００７９】
このファイルへの書き込み操作は、必ずしもパケット単位で行う必要はなく、書き込み効率の向上を図るためにより大きな単位で行えばよい。図７ではその単位をチャンクと記した。但し、本装置がパケットの転送を扱うルータであることから、当該フロー(ａ)のデータのパケット境界やパケットのヘッダ情報を、出力側回線へのデータ出力が完了するまで保持して扱えるようにする必要があり、バッファ部２２３ＡのFIFOキューへのデータ書き込み操作、及び、蓄積部２４０のファイルへのデータ書き込み操作はこれらの情報を保持できるデータ形式で行う必要がある。但し、この形式の詳細は本発明の要旨ではないため省略する。
【００８０】
以上が回線からのトラヒックデータ入力時の動作の説明である。次に、図８を用いて、回線へのトラヒックデータ出力時の動作を説明する。
【００８１】
入力側の回線モジュール２２０Ａ上のパケット処理部２２１２Ａから上述の新規フロー情報（図中（１））を受信した出力側の回線モジュール２２０Ｂ上のデータ転送制御部２２２２２２Ｂは、まず、入力側のそれと同様に、バッファ部２２３Ｂの中に当該フロー(ａ)のデータを格納するための新規FIFOキューを生成（図中（２））すると共に、自身の中に有する、フローとバッファ中のFIFOキューとの対応表である「フロー/キューマップ」に対して、当該フロー(ａ)用の新規エントリを生成する（図中（３））。その後、蓄積部２４０内に当該フロー(ａ)のデータ格納用ファイルとしてオープンされたファイルのロケーション情報が制御部２１０から通知されるまで待つ。
【００８２】
制御部２１０からこの情報が通知されると（図中（８））、蓄積部２４０の当該ファイルに書き込まれた当該フロー(ａ)のデータをバッファ部２２３Ｂ内の当該フロー(ａ)用のFIFOキュー内に格納する操作を開始することができる（図（９））。データの入力時に蓄積部２４０１〜２４０Ｍの全ての蓄積部にまたがって書き込まれた当該フロー(ａ)のデータを並列にバッファ部２２３Ｂへ転送することにより、この部分のデータ転送を高速化する。また、このバッファ部２２３Ｂと蓄積部２４０との間のデータ転送操作は、入力側と同様のデータ単位（チャンク）で行う。なお、図中のフロー(ｂ)のデータは、ここでも図中に示すようにバッファ部内の、フロー(ａ)用とは別のFIFOキュー内に格納される。
【００８３】
ここまでの処理を通してバッファ部２２３Ｂへ当該フロー(ａ)のデータが格納され始めると、当該フロー(ａ)のデータを出力回線Ｂへ出力する準備が整ったことになる。
【００８４】
次に、当該データの出力回線Ｂへの出力を開始するまでの処理を説明する。
【００８５】
本ルータ２００の外部に設置された余剰帯域測定装置から回線Ｂを経由して送信されてくる、回線Ｂに接続された外部ネットワークの各回線の余剰帯域情報を受信（図中（１０））した余剰帯域情報受信部２２１１Ｂは、この余剰帯域情報を制御部２１０へ送信する（図中（１１））。
【００８６】
上記余剰帯域情報を受信した制御部２１０は、出力速度計算部２１１の演算機能を用いて、本ルータ２００を通過するフローの一覧表を参照しながら（図中（１２））、外部ネットワークの各回線の余剰帯域情報、及び、フロー(ａ)の伝送経路に基づいて、当該フロー(ａ)の出力側回線への出力速度を決定する。この出力速度の具体的な決定方法については、本発明の要旨ではないため省略する。
【００８７】
制御部２１０の出力速度計算部２１１は、当該フロー(ａ)の出力速度が決まると、その情報を、回線モジュール２１０Ｂのデータ転送制御部２２２ｂの出力速度制御部２２２１Ｂへ送信する（図中（１４））。
【００８８】
これを受信した出力速度制御部２２２１Ｂは、出力速度計算部２１１から通知された速度で当該フロー(ａ)用のFIFOキューから当該フロー(ａ)のパケットデータを出力側回線インタフェース部２２１Ｂのパケット処理部２２１２Ｂへ転送する処理を開始する（図中（１５））。
【００８９】
パケット処理部２２１２Ｂは、バッファ部２２３Ｂから転送されてくるパケットデータのIPヘッダ処理を行って回線Ｂへ出力する。この処理をバッファ部２２３Ｂからデータが転送されてくる速度に等しい速度で追随して行うことにより、制御部２１０が当該フロー(ａ)に対して割り当てた出力帯域で当該フロー(ａ)のデータが回線Ｂへ出力されることになる。
【００９０】
これ以降は、余剰帯域情報受信部２２１１Ｂ、制御部２１０の出力速度計算部２１１、データ転送制御部２２２Ｂの出力速度制御部２２２１Ｂが一定時間間隔毎に図中（１０）から（１５）の処理を繰り返し行って、その都度、当該フロー(ａ)のデータのバッファ部２２３Ｂからパケット処理部２２１２Ｂへの転送速度を調整することにより、回線Ｂに接続された外部ネットワークの余剰帯域の変化に応じた出力速度制御を実現する。
【００９１】
なお、本発明は、上記の実施の形態及び実施例の記載に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【００９２】
１００  ルータ
１１０  制御部
１２０  回線モジュール
１２１  回線インタフェース
１２２  データ転送制御部
１２３  バッファ
１３０  スイッチ部
２００  ルータ
２１０  制御部
２１１  出力速度計算部
２２０  回線モジュール
２２１  回線インタフェース部
２２２  データ転送部
２２３  バッファ部
２３０  スイッチ部
２４０  蓄積部
３００  回線
４００  余剰帯域測定装置
２２１１  余剰帯域情報受信部
２２１２  パケット処理部
２２２１  出力速度制御部
【図１】
0005216830.tif 000002
【図２】
0005216830.tif 000003
【図３】
0005216830.tif 000004
【図４】
0005216830.tif 000005
【図５】
0005216830.tif 000006
【図６】
0005216830.tif 000007
【図７】
0005216830.tif 000008
【図８】
0005216830.tif 000009
【図９】
0005216830.tif 000010
【図１０】
0005216830.tif 000011
【図１１】
0005216830.tif 000012