JP2014096674A - ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム - Google Patents

ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム Download PDF

Info

Publication number
JP2014096674A
JP2014096674A JP2012246572A JP2012246572A JP2014096674A JP 2014096674 A JP2014096674 A JP 2014096674A JP 2012246572 A JP2012246572 A JP 2012246572A JP 2012246572 A JP2012246572 A JP 2012246572A JP 2014096674 A JP2014096674 A JP 2014096674A
Authority
JP
Japan
Prior art keywords
connection
network
connections
host
network device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP2012246572A
Other languages
English (en)
Inventor
Daisuke Ito
大輔 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi High Tech Corp
Original Assignee
Hitachi High Technologies Corp
Hitachi High Tech Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi High Technologies Corp, Hitachi High Tech Corp filed Critical Hitachi High Technologies Corp
Priority to JP2012246572A priority Critical patent/JP2014096674A/ja
Priority to US14/075,158 priority patent/US9143458B2/en
Publication of JP2014096674A publication Critical patent/JP2014096674A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/40Flow control; Congestion control using split connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】TCPの通信を十分に高速化可能な装置を提供する。
【解決手段】ネットワーク装置22111は、ホスト間のTCP通信を中継する。ネットワーク装置は、要求レートと、第2網へデータを転送した実効帯域を示す第1出力レートを保持する。また、ホスト間のTCPコネクションに対して、第1網からのデータを、第2網の対向するネットワーク装置との間の複数のコネクションに分割して転送する。分割されたコネクション毎の第2出力レートを保持する。要求レートが第1出力レートより閾値以上大きく、かつ、第2網の複数のコネクションのうち第2出力レートが所定速度以上相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち該相対的に低速なコネクション以外のコネクションを用いて、又は、該相対的に低速なコネクションの使用比率を下げて通信する。
【選択図】図22

Description

本発明は、ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムに係り、特に、プロクシ装置上でTCPを多重化して通信を高速化するネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムに関する。
複数の情報通信機器の間で相互に通信を行う場合、一般にRFC 793(非特許文献1)で定義されたTCP(Transmission Control Protocol)を用いる。TCPはインターネット上の実質的標準プロトコルであり、多くの情報通信機器に実装されている。TCPを用いることで、情報通信機器の種類を問わず、相互に通信を行うことが可能になる。
[WAN高速化装置]
しかし、広域網(Wide Area Network、WAN)を介してデータセンタと拠点の間で通信を行う場合、TCPのフロー制御の制約から実効帯域がWANの遅延に律束され、WANの契約帯域を太くしても効果が得られない場合がある。そこで、ネットワークプロクシ装置(通信を代行する装置)においてTCPのフロー制御を改善するなどのTCP高速化手法が提案されている。また、このような高速化をもたらす装置をWAN高速化装置と呼ぶ。
例えば、TCPのフロー制御改善に関する特開2003−69615号公報では「送信元ホスト50と送信先ホスト60との間に、1つまたはそれ以上のルータ70a、70bが配置される。ルータ70aは、送信元ホスト50から送られてくるパケットに対して、確認応答パケットを生成して送信し、送信元ホスト50と送信先ホスト60との間のコネクションを終端、分割する。確認応答パケットの始点アドレスには、送信先ホストのアドレスが用いられる。また、送信先ホスト60には、始点アドレスが送信元ホストのアドレスであるパケットが届けられる。これにより、両ホストに対して仮想的な1つのコネクションを認識させる。」と記載されている(「解決手段」参照)。
[TCPを束ねて送る装置]
また、広域網を介してデータセンタと拠点の間で通信を行う場合にTCPのフロー制御の制約から実効帯域が得られない課題の別の解決方法として、送信側通信端末の通信制御方式を変更し、TCPを多重化する方法が提案されている。
例えば、特開2004−260668号公報では「実時間再生を要求される動画像データをTCP/IPにより送信する送信装置と、送信装置から送信されるデータを受信する受信装置を含む動画像伝送システムである。送信装置は、動画像データを画像データ1フレーム分または複数フレーム分を単位として、個々の単位画像データをさらに分割した分割画像データを、複数のTCPコネクションにより送信し、受信装置は、複数のTCPコネクションにより受信した分割画像データから元の単位画像データに戻す処理と、動画像データ複数フレーム分の蓄積を行うバッファ部を有し、単位画像データの分割数およびTCPコネクションの数を、1TCPコネクションあたりのスループットおよび動画像データの平均ビットレートに基づいて決定する。」と記載されている(「解決手段」参照)。
さらに、TCP多重化をプロクシに応用する方法も提案されている。例えば、US2005/025150号公報では「The Proxy application runnning on network accelerator 14−1 then assigns one or more of the persistent connections it has with the network accelerator 14−2 to handle the connection requested by Machine A.」と記載されている(「Detailed Description of the Invention [0031]」参照)。
特開2003−69615号公報「通信制御装置および通信制御方法」 特開2004−260668号公報「動画像伝送システム、動画像送信装置、動画像中継装置、動画像受信装置、プログラム、および記録媒体」 US2005/025150「Accelerationg Network Performance by Striping and Parallelization of TCP Connections」
RFC 793、"TRANSMISSION CONTROL PROTOCOL、 DARPA INTERNET PROGRAM、 PROTOCOL SPECIFICATION"、 http://datatracker.ietf.org/doc/rfc793/
従来のWAN高速化装置では、到達確認応答を代理応答するために、プロクシ装置にクライアントよりも大きなフロー制御用ウインドウを持たせ、多少遅延が長くともウインドウを使い切らないようにする事で実現される。しかし、この方式では、想定以上に遅延が大きい環境ではウインドウを使い切ってしまうため、依然としてTCPのフロー制御の制約から十分な帯域が得られないという第一の問題があった。
従って本発明が解決しようとする第一の課題は、TCPの通信を十分に高速化可能なWAN高速化装置を提供する事である。
また、従来の送信側通信端末の通信制御方式を変更するものでは、サーバクライアント方式で構成された既設の環境にある全てのサーバ端末およびクライアント端末の通信制御方式を変更する必要があり、既設の環境への導入が困難という第二の問題があった。
従って本発明が解決しようとする第二の課題は、既設の環境への導入が容易なプロクシ装置においてTCPを多重化可能なWAN高速化装置を提供する事である。
また、従来のTCP多重化方法をプロクシ装置に応用した例では、クライアントからのコネクション確立要求を受けた時に、適当な分割数に分割し、TCP多重化したコネクションを確立する。しかしコネクション確立要求時の状況に応じて多重化数が静的に決まるため、ネットワークの状況に応じて常に適切な制御を行う事は困難と言う第三の問題があった。
従って本発明が解決しようとする第三の課題は、ネットワークの状況に応じてTCPの多重化数を動的に制御できるTCPを多重化可能なWAN高速化装置を提供する事である。
また、従来のTCP多重化方法をプロクシ装置に応用した例では、WAN帯域を使いきっていない場合であっても、プロクシ装置間の通信を多重化してもサーバクライアント間の通信が高速化されない場合があるという第四の問題があった。
例えば、多重化した複数のTCPコネクションのうちの少なくともひとつが他のコネクションに比べて低速である場合、その低速なコネクションの速度に律速され、サーバクライアント間の通信の高速化が困難な場合があることを本発明者らは見出した。
図20は上記第四の問題が生じた状態の、TCP多重化方法を応用したプロクシ装置の例である。TCP分割機能を持ったプロクシ装置20001は例えば1つのTCPコネクション20011を5つのTCPコネクション20012〜20016に分割しており、図20はその受信側のある時点での状態を表している。本明細書では説明の便宜上、分割前(又は合成後)のTCPコネクション20011を親コネクションと呼び、また、分割後(又は合成前)のTCPコネクション20012〜20016を子コネクションと呼ぶ。子コネクション20012〜20016にはそれぞれ受信バッファ20022〜20026があり、さらに子コネクションの受信バッファ20022〜20026をまとめた親コネクションの受信バッファ20021がある。ここで、分割された子コネクション20012〜20016から親コネクション20011を復元する際には、子コネクションに分割されたデータを何らかの手段でマージしソートする必要がある。しかし、図20に示すようにある1つもしくは複数の子コネクション(ここでは20016)がネットワーク上で異なる経路を通るなどし、他の子コネクションと比べて相対的に低速な場合には、該低速な子コネクション20016の受信バッファ20026へのデータ到達が遅れ、マージおよびソート処理がストールする。その結果、例えば、親コネクションから子コネクションへラウンドロビンにデータ片を割り当てるような場合には、親コネクションの速度上昇が妨げられる。また、親コネクションから子コネクションへのデータ片割当がラウンドロビンではない場合でも、受信バッファ20026にデータが到着するのを待つ間にも、相対的に高速な子コネクションのバッファ20022〜20025にはデータが到着するため、相対的に高速な子コネクションのバッファ20022〜20025のサイズを大きくとる必要がある。しかしバッファ用メモリ資源は有限であるため、やみくもにバッファ20022〜20025を大きくとる事はできない。その結果、例えばバッファに入りきらないパケットが遅延し、親コネクションの速度上昇が妨げられる。このようにWAN帯域を使いきっていない場合であっても、プロクシ装置間の通信を多重化してもサーバクライアント間の通信が高速化されない場合があるという第四の問題が生じる事が、発明者らによって見出された。
従って本発明が解決しようとする第四の課題は、WAN帯域を使いきっていない場合にクライアントーサーバ間の通信を高速化可能なWAN高速化装置を提供することである。
上述のように、本発明は、TCPの通信を高速化可能なネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムを提供する事を目的とする。
本願は上記課題を解決する手段を複数含んでいるが、その一例をあげるならばTCPコネクションごとの要求レートと、ネットワークに転送できた出力レートの各移動平均を保持する記憶領域Aとホストが要求したコネクションごとのコネクション分割数および分割した各コネクションの識別情報とネットワークに転送できた出力レートの各移動平均を保持する記憶領域Bを持ち記憶領域Aの要求レートと出力レートをユーザ定義もしくはシステム定義のルールに従い比較し必要に応じてコネクション分割数を増加または削減し、コネクション分割数を増加させるときには新たなTCPコネクションCを開始し記憶領域Bのコネクション分割数およびコネクションCの識別情報を更新しコネクション分割数を削減させるときには記憶領域Bから任意のTCPコネクションDを取得しTCPコネクションDを終了し記憶領域Bのコネクション分割数およびコネクションCの識別情報を更新し、ホストが要求したコネクションごとの分割した各コネクションの出力レートの標準偏差をユーザ定義もしくはシステム定義のルールに従い比較し相対的に低速なコネクションを検出し、必要に応じて相対的に低速なコネクションの利用を停止し、その際には記憶領域Bから任意のTCPコネクションDを取得しTCPコネクションDを終了し記憶領域Bのコネクション分割数およびコネクションCの識別情報を更新し制御する事を特徴とする。
このような構成により、本WAN高速化装置では、クライアントよりも大きなフロー制御用ウインドウを用いていないため第一の課題を解決している。また、プロクシ装置であるため既設の環境にあるサーバ端末およびクライアント端末の通信制御方式を変更する事なくシステムに適用可能であり第二の課題を解決している。また、プロクシ装置間のTCP通信を多重化する際に出力レートに応じて分割数を変更でき第三の課題を解決している。また、WAN帯域を使いきっていない場合にはクライアント−サーバ間のTCPの通信を十分に高速化でき第四の課題を解決している。
本発明の第1の解決手段によると、
ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置であって、
第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す第1出力レートを保持する第1記憶領域と、
ホスト間のTCPコネクションに対して、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送するコネクション分割結合部と、
分割されたコネクション毎の第2出力レートを保持する第2記憶領域と、
を備え、
前記コネクション分割結合部は
前記要求レートが前記第1出力レートより予め定められた閾値以上大きく、かつ、第2網の複数のコネクションのうち前記第2出力レートが所定速度以上相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち該相対的に低速なコネクション以外のコネクションを用いて、又は、該相対的に低速なコネクションの使用比率を下げて通信するネットワーク装置が提供される。
本発明の第2の解決手段によると、
ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置の制御方法であって、
第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す第1出力レートを第1記憶領域に記憶し、
ホスト間のTCPコネクションに対して、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送し、
分割されたコネクション毎の第2出力レートを第2記憶領域に記憶し、
前記要求レートが前記第1出力レートより予め定められた閾値以上大きく、かつ、第2網の複数のコネクションのうち前記第2出力レートが所定速度以上相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち該相対的に低速なコネクション以外のコネクションを用いて、又は、該相対的に低速なコネクションの使用比率を下げて通信する前記ネットワーク装置の制御方法が提供される。
本発明の第3の解決手段によると、
広域ネットワークを介して第1ホストと第2ホストが通信を行うネットワークシステムであって、
請求項1に記載のネットワーク装置であって、前記第1ホスト側に配置される第1のネットワーク装置と、
請求項1に記載のネットワーク装置であって、前記第2ホスト側に配置される第2のネットワーク装置と
を備え、
前記第1のネットワーク装置と前記第2のネットワーク装置は、広域ネットワークを介して配置され、
前記第1ホストと前記第2ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステムが提供される。
本発明によると、TCPの通信を高速化可能なネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムを提供する事ができる。
実施例1の全体構成図である。 実施例1の帯域DBのスキーマとレコード例である。 実施例1のコネクション分割数DBのスキーマとレコード例である。 コネクション開始から終了までのフローチャート。 実施例1の帯域監視部のフローチャートである。 実施例1の帯域監視部の分割転送処理のフローチャートである。 実施例1のコネクション分割結合部のフローチャートである。 実施例1のコネクション分割結合部の分割転送処理のフローチャートである。 実施例1のコネクション分割結合部の分割受信処理のフローチャートである。 実施例1の帯域監視部の帯域調整処理のフローチャートである。 実施例1のコネクション分割結合部の帯域調整処理Aのフローチャートである。 実施例1のコネクション分割結合部の帯域調整処理Bのフローチャートである。 実施例1のコネクション開始シーケンスである。 実施例1の定常状態の通信シーケンスである。 実施例1のコネクション終了シーケンスである。 実施例1の分割コネクション数の見直し処理シーケンスである。 実施例2の帯域DBのスキーマとレコード例である。 実施例3の全体構成図である。 実施例4の全体構成図である。 第四の問題が生じた状態の、TCP多重化方法を応用したプロクシ装置の例である。 子コネクション間に速度差が生じる場合の2つの例である。 実施例3のコネクション分割数DBを用いた分割要否判断の説明図(1)である。 実施例3のコネクション分割数DBを用いた分割要否判断の説明図(2)である。 実施例3における帯域調整処理Aのフローチャートである。 実施例3における帯域調整処理Bのフローチャートである。 分割要否の一次判断のフローチャートである。 分割要否の二次判断のフローチャートである。
以下、実施例を図面を用いて説明する。
本実施例では、例えば全ての端末からの通信を平等に高速化するWAN高速化装置1011および1031の例を説明する。
図1は、本実施例のWAN高速化装置を用いた通信システムの構成図の例である。図1ではホスト1(1001)およびホスト2(1002)の2台のホスト(通信装置、端末)がLAN(第1網)及びWAN(第2網)(1003)を介して通信する。その経路上で、WAN高速化装置(ネットワーク装置)1011および1031はプロクシ装置として動作する。例えばホスト1(1001)とWAN高速化装置1011、およびホスト2(1002)とWAN高速化装置1031はそれぞれ物理的な近傍に置き、ネットワーク遅延を小さくする。
WAN高速化装置1011(および1031)は外部入出力としてLANインターフェース1012(および1032)およびWANインターフェース1013(および1033)を有する。またプログラムを動作させるために、CPU1018(および1038)、主記憶(メインメモリ、主記憶部)1020(および1040)、および、二次記憶(セカンダリメモリ、二次記憶部)1019(および1039)を有する。LANインターフェース1012(および1032)およびWANインターフェース1013(および1033)は数KBから数MB程度のFIFO(First In First Out、先に入ったデータが先に出ていく)方式のバッファを有する。そのため、LANインターフェース1012(および1032)およびWANインターフェース1013(および1033)から主記憶1020(および1040)へ、最大でバッファサイズ分のデータを読み込むことができる。
二次記憶1019(1039)にはプログラムとデータベース(DB)が保存され、WAN高速化装置1011(および1031)の起動後にプログラムおよびDBが主記憶1020(および1040)に読み込まれ、CPU1018(および1038)によって動かされる。
実施例1ではプログラムとして帯域監視プログラム1014(および1034)およびコネクション分割結合プログラム1016(および1036)を含む。以下、CPU1018が帯域監視プログラムを実行して実現するブロックを帯域監視部1014(および1034)、CPU1018がコネクション分割結合プログラムを実行して実現するブロックをコネクション分割結合部1016(および1036)として説明する。二つのコネクション分割結合部1016および1036の間には予め制御用のTCPコネクションを張っておく。これは例えば特別なポート番号を使ったり、特別なIPアドレスを使ったりといった方法で、他の接続と区別することができる。
主記憶1020は帯域DB(第1記憶領域)1015(および1035)とコネクション分割数DB(第2記憶領域)1017(および1037)を有する。帯域DB1015(および1035)はTCPコネクションごとの要求レートと、ネットワークに転送できた出力レートの各移動平均を保持する。
図2において、帯域DB1015(および1035)のスキーマとレコード例を表14001に示す。表14001のスキーマはLANホストIP列、LANホストポート列、WANホストIP列、WANホストポート列の4列を組み合わせることでTCPコネクションを区別できる。すなわち特定のTCPコネクションに対応する行(エントリ)を検索できる。また、例えば要求レートおよび出力レートの直近5秒の移動平均を取るために、要求レートと出力レートの直近5つの値を保持する配列構造を持ち、さらに最終監視時刻を保持する。なお、本実施例では移動平均の取得期間は5秒とするが、システム定義もしくはユーザ定義の値として5秒以外の取得期間を用いてもよい。また、求められる移動平均をさらに記憶してもよい。
要求レートは、例えば、単位時間内に入力されたデータ量又はこれに基づく値である。また、出力レートは、例えば単位時間内にデータを転送した実効帯域を示す。
帯域DB1015(および1035)の要求レート配列および出力レート配列の更新方法を、図2を用いて説明する。ここでは行14002に保持したコネクションの要求レートと出力レートを更新する場合の例を用いる。行14002は最終監視時刻が2011年3月19日8時45分36秒であり、要求レート配列は、4秒前すなわち2011年3月19日8時45分32秒からの1秒間(単位時間)の要求レートが29、3秒前すなわち2011年3月19日8時45分33秒からの1秒間の要求レートが20、同様に2秒前の1秒間の要求レートが13、1秒前の1秒間の要求レートが0、現在すなわち2011年3月19日8時45分36秒からの1秒間の出力レートが0である事を表している。また、同様に出力レート配列は、4秒前の1秒間の出力レートが12、3秒前の1秒間の出力レートが12、2秒前の1秒間の出力レートが12、1秒前の1秒間の出力レートが0、現在の1秒間の出力レートが0であることを表している。ここでレートの単位としてはいくつか考えられる。本実施例ではKB/秒を用いるがパケット数/秒など、他の単位でも構わない。なお、要求レートおよび出力レート両配列の最後の1列、すなわちここでは2011年3月19日8時45分36秒からの1秒間の出力レートは厳密には1秒経っていないため1秒間のレートを表していないが、ここでは便宜的に1秒間のレートと呼ぶ。
この状態から2011年3月19日8時45分36秒10の時に処理の要求が4KB、出力が3KBであった場合(14003)には、表14001は表14004のように変化する。ここでは行14002に対応する行14005の通り、要求レート配列の最後の一列が0+4すなわち4(KB)、出力レート配列の最後の一列が0+3すなわち3(KB)、最終監視時刻は現在時すなわち2011年3月19日8時45分36秒10に更新される。このように要求レートおよび出力レート両配列の最後の1列を適宜インクリメントし、1秒間のレートをカウントする。
続いて2011年3月19日8時45分37秒05の時に処理の要求が1KB、出力が2KBであった場合(14006)には、表14004は表14006のように変化する。ここでは時刻の秒の単位が36秒から37秒に変化したため、要求レートおよび出力レートの両配列をシフトされる。具体的には、行14005に対応する行14008の通り、全ての値を左に一つシフトさせ、最後の1列すなわち現在の1秒を表す列に今回の要求である1(KB)および出力である2(KB)が入る。帯域DB1015(および1035)の要求レート配列および出力レート配列は、例えば帯域監視部1014(1034)が以上のように更新し管理する。
コネクション分割数DB1017(および1037)はホストが要求したコネクションごとのコネクション分割数および分割した各コネクションの識別情報を保持する。
図3において、コネクション分割数DB1017(および1037)のスキーマとレコード例を表15001に示す。表15001のスキーマはLANホストIP列、LANホストポート列、WANホストIP列、WANホストポート列の4列を組み合わせることでTCPコネクションを区別できる。また、WAN高速化装置1011および1031の間のコネクション分割数をコネクション分割数列に、分割した各コネクションの両端ポート番号を自ポートと他ポート配列に保持する。本実施例ではWAN高速化装置1011および1031の間のコネクションを分割するときに、常に片方のWAN高速化装置で使うポートを1つにするように制御する。このレコードでは他ポート側のポートを1つにしている。例えば、コネクション分割結合部1016(および1036)がコネクション分割数DB1017(および1037)を更新し、管理する。
図4に、図1に示した通信システムにおいて、ホスト1(1001)とホスト2(1002)の間のコネクション開始から終了までの流れを示す。
ホスト1(1001)もしくはホスト2(1002)が通信を開始(17001)する際、まずコネクション開始処理(17002)を行い、WAN高速化装置1011および1031を介してホスト1(1001)とホスト2(1002)の間でコネクションを確立する。本処理の詳細は図13等で説明する。続いてホスト1(1001)とホスト2(1002)の間で定常状態通信処理(17003)を行い、データのやり取りを行う。本処理は双方向に通信可能である。すなわち手順17002においてどちらのホストがコネクションを開始したかに因らず、ホスト1(1001)からホスト2(1001)への通信も、ホスト2(1002)からホスト1(1001)への通信も行える。本処理の詳細は図14等で説明する。その後、ホスト1(1001)もしくはホスト2(1002)において通信を継続するか判断(17004)する。継続する場合は定常状態通信(17003)に戻り、切断する場合はコネクション切断処理(17005)し、コネクションを終了(17006)する。この判断(17004)およびコネクション切断処理(17005)は、手順17002においてどちらのホストがコネクションを開始したかに因らず、ホスト1(1001)およびホスト2(1002)のどちらが判断(17004)し切断処理(17005)して良い。なお、コネクション切断処理の詳細(17005)は図15等に示す。
また、WAN高速化装置1011および1012においてコネクション分割数の変更要否判断及び変更(17009)を定期的に行う。図ではコネクション開始から終了までの流れの中に記載しているが、これらの処理とは非同期でもよい。本判断は、例えばコネクションを開始したホストに接続されたWAN高速化装置が行う。すなわちホスト1(1001)がコネクションを開始した時にはWAN高速化装置1011が行い、ホスト2(1002)がコネクションを開始した時にはWAN高速化装置1012が判断を行う。判断の結果、変更要であればコネクション分割数変更処理を行う。本処理によって、定常状態通信(17003)におけるコネクション分割数が変更される。
(動作フローチャート)
続いて、帯域監視部及びコネクション分割結合部の実装を、図5から図12のフローチャートを用いて説明する。なお、以下、フローチャートの説明は、主にWAN高速化装置1011の帯域監視部1014とコネクション分割結合部1016等の各ブロックについて説明するが、WAN高速化装置1011の帯域監視部1034とコネクション分割結合部1036等についても同様である。
図5は帯域監視部のフローチャートである。帯域監視部1014は処理開始6001後、現在時刻を変数old_timeに保存6010し、その後はLANインターフェースからデータを取得6002してそれに応じた処理(6003〜6039)を行い、続いてコネクション分割結合部1016からデータを取得6005してそれに応じた処理(6006〜6069)を行い、時刻を取得6008して帯域調整処理(6009、6091)を行うというループを繰り返す。以下、各処理の詳細を記す。各処理は、帯域監視部1014が実行する。
LANインターフェースからのデータ取得6002後、まずデータが取得できたかどうか判断6003する。例えば、LANインターフェースのバッファにデータが溜まっていない場合には、データが取得できず、先に進むと判断される。データがあった場合には、データがsynか6031、finか6034、ackか6037、それ以外かという判断に基づき処理を進める。synである場合(6031、6032、6033)の処理は、後述するメッセージ受信2001および2011に対応する処理であり、受け取ったメッセージをコネクション分割結合部1016へ転送後、コネクション分割結合部1016からの応答を待てるよう、フラグ(Synフラグ)を立てる。finである場合(6034、6035、6036)の処理は、後述するメッセージ受信4001に対応する処理であり、受け取ったメッセージをコネクション分割結合部1016へ転送後、コネクション分割結合部1016からの応答を待てるよう、フラグ(finフラグ)を立てる。ackである場合(6037、6038)の処理は、後述するメッセージ受信2021、3024、4011、4031に対応する処理であり、受け取ったメッセージを転送する。そのいずれでもない場合は後述するメッセージ受信3001に対応し、この場合は図6の分割転送6039を行う。
続いてメッセージ分割結合部1016からのデータ取得6005後、まずデータが取得できたかどうか判断6006する。データがあった場合には、synフラグが立っておりかつackを受信したか6061、finフラグが立っておりかつackを受信したか6065、それ以外かという判断に基づき処理を進める。synフラグが立っておりかつackを受信した場合(6061、6062、6063、6064)は、後述するメッセージ受信2015および2025に対応し、帯域監視DB1015に新たなレコードを登録し、データをLANインターフェース1012へ転送6063し、Synフラグを下げる。finフラグが立っておりかつackを受信した場合(6065、6066、6067、6068)は後述するメッセージ受信4015および4035に対応し、帯域監視DB1015から該当するコネクションのレコードを削除し、データをLANインターフェース1012へ転送6067し、finフラグを下げる。そのいずれでもない場合は、後述するメッセージ受信2005、3011、3022、4004、4024に対応し、データをLANインターフェース1012へ転送6069する。
続いて現在時刻を取得6008し、先のループ中に変数old_timeに保存した時刻と比較して例えば1秒以上経過しているか判断6009する。1秒以上経過していた場合は、図10の帯域調整処理6091を行う。その後、手順6008で取得した時刻を変数old_timeに保存し、手順6002に戻る。帯域調整処理を行う周期は1秒以外にも適宜の周期でもよいし、不定期でもよい。
図6は、帯域監視部の分割転送処理6039のフローチャートである。各処理は、帯域監視部1014が実行する。
帯域監視部1(1014)は、分割転送処理では処理開始7001後、帯域DB1015を検索し、データを受信したコネクションに関するレコードを探索7002する。例えば、帯域監視部1(1014)は、LANホストIP列、LANホストポート列、WANホストIP列、WANホストポート列の4列を組み合わせて、データを受信したコネクションの各対応するデータに基づき、帯域DB1015を検索し、該コネクションに関するレコードを探索3002する。
続いて帯域監視部1(1014)は該コネクションに関するレコードの要求レート配列と最終監視時刻を更新7003する。例えば、最終監視時刻を現在時刻にし、要求レート配列は例えば直近1秒間の受信データに基づき定められる。
続いて帯域監視部1(1014)は受信したパケット列をコネクション分割結合部1016に転送7004する。この転送操作はWANインターフェース1013および1033やWAN1003の影響をうけ、所要時間が変わる。続いて帯域監視部1(1014)は上記の所要時間を観測し、所要時間と送信データ量に基づき該コネクションに関するレコードの出力レート配列を更新7005し、処理を終える7006。この操作の結果、該コネクションの出力レートが、例えば、実際の送信データ量(実効帯域)に基づき更新される。
図7はコネクション分割結合部のフローチャートである。コネクション分割結合部1016は処理開始8001後、帯域監視部1014からデータを取得8002してそれに応じた処理(8003〜8042)を行い、続いてWANインターフェースからデータを取得8005してそれに応じた処理(8006〜8076)を行うというループを繰り返す。以下、各処理の詳細を記す。各処理は、コネクション分割結合部1016が実行する。
帯域監視部1014からのデータ取得8002後、まずデータが取得できたかどうか判断8003する。データがあった場合には、データが制御メッセージか8031、syn+ackか8043、synか8033、finか8037、ackか8040、それ以外かという判断に基づき処理を進める。制御メッセージである場合(8031、8032)は後述するメッセージ受信5005に対応し、図11の帯域調整処理A8032を行う。syn+ackである場合(8043、8044、8045)は後述するメッセージ受信2012に対応する処理であり、WANインターフェース1013にメッセージ転送後、対向のコネクション分割結合部1036からの応答を待てるよう、フラグ(Synフラグ)を立てる。synである場合(8033、8034、8035、8036)は後述するメッセージ受信2002に対応する処理であり、コネクションを開始した後にメッセージをWANインターフェース1013に転送し、対向のコネクション分割結合部1036からの応答を待てるよう、フラグ(Synフラグ)を立てる。finである場合(8037、8038、8039)は後述するメッセージ受信4003、4023に対応する処理であり、WANインターフェース1013にメッセージ転送後、対向のコネクション分割結合部1036からの応答を待てるよう、フラグ(finフラグ)を立てる。ackである場合は後述するメッセージ受信2022、4012、4032に対応する処理であり、WANインターフェース1013にメッセージを転送する。そのいずれでもない場合は後述するメッセージ受信3004に対応し、図8の分割転送処理8042を行う。
続いてWANインターフェースからのデータ取得8005後、まずデータが取得できたかどうか判断8006する。データがあった場合には、それが自分宛(自装置宛)のfin8061か、制御メッセージ8063か、synフラグが立っておりかつack8065か、finフラグが立っておりかつack8069か、synもしくはfinもしくはack8074か、それ以外かという判断に基づき処理を進める。自分宛(自装置宛)のfinである場合(8061、8062)は後述するメッセージ受信4016、4036に対応し、ackを返す。制御メッセージである場合(8063、8064)は後述するメッセージ受信5008に対応し、図12の帯域調整処理B8064を行う。synフラグが立っておりかつackである場合(8065、8066、8067、8068)は後述するメッセージ受信2013、2023に対応し、コネクション分割数DB1017に新たなレコードを登録し、帯域監視部1014に転送後Synフラグを下げる。finフラグが立っておりかつackである場合(8069、8070、8071、8072、8073)は後述するメッセージ受信4013、4033に対応し、コネクション分割数DB1017から該当レコードを削除し、帯域監視部1014に転送し、finフラグを下げた後に、対向のコネクション分割結合部1036にfinを返す。synもしくはfinもしくはackである場合(8074、8075)は後述する処理2004、4003、4023に対応し、メッセージを帯域監視部1014に転送する。そのいずれでもない場合はメッセージ受信3008に対応し、図9の分割受信処理8076を行う。
図8はコネクション分割結合部の分割転送処理8042のフローチャートである。各処理は、コネクション分割結合部1016が実行する。
手順9002でコネクション分割数DB1017を探索してレコード取得する。例えばコネクション分割結合部1(1016)はコネクション分割数DB1017をLANホストIP列、LANホストポート列、WANホストIP列、WANホストポート列の4列を組み合わせて検索し、該当コネクション(データを入力したコネクション)に関するレコードを探索する。
次に、一つもしくは複数の関連するTCPコネクションを特定・取得9003する。例えば、対向するWAN高速化装置1031との間で確立された分割コネクションを、探索されたレコードに従い特定する。それらに対してラウンドロビンにデータを分割し転送9004する。例えば、コネクション分割結合部1(1016)は該コネクションに関するレコードのコネクション分割数列に従い、受信したパケット列を分割する。分割方式はラウンドロビンやハッシュといったものを用いることができる。本実施例ではラウンドロビンを採用して説明する。ラウンドロビンでは分割したコネクションに対して順番にパケットを流していく。分割したコネクションの順序は、例えば、コネクション分割数DB1017の自ポート配列および他ポート配列の組み合わせを、数字の小さい順にソートして決める。例えば表15001のレコード15002の場合は、1番目のコネクションはポートの組み合わせが[8013−4759]であり、2番目のコネクションはポートの組み合わせが[10129−4759]である。
その後、コネクション分割結合部1(1016)はackを受信するまで待つ9005。コネクション分割結合部1(1016)は受信したackをTCPのシーケンス番号順にソート9006し、帯域監視部1(1014)へ転送9007し、処理を終える。ここでackはTCPの輻輳制御などの影響から到着順は多少前後するものの、概ねパケットを転送したときの順に返ってくる。そのため、分割した各コネクションからラウンドロビンにデータを取得し、その都度マージソートを行えばソート可能である。
図9はコネクション分割結合部の分割受信処理のフローチャートである。
分割結合部1(1016)は、手順10002でコネクション分割数DB1017を探索してレコード取得後、一つもしくは複数の関連するTCPコネクションを特定・取得10003し、それらからラウンドロビンにデータを受信10004しackを返す10005。その後受信したデータをTCPのシーケンス番号順にソート10006し、帯域監視部1(1014)へ転送10007し、処理を終える。なお、ソート10006も上述のソートと同様の手法でマージソートできる。
図10は帯域監視部の帯域調整処理6091のフローチャートである。
帯域調整処理6091では処理開始11001後、帯域監視部1014は帯域DB1015からあるレコード(任意のレコード)を検索11002する。
次に帯域監視部1014は、現在の時刻を用いてレコード内の要求レート配列と出力レート配列と最終監視時刻を更新し、要求レートの平均を更新11003し、出力レートの平均も更新11004する。例えば、要求レート配列は受信データ量に基づき更新し、出力レート配列は送信データ量に基づき更新する。
続いて帯域監視部1014は、分割数変更の要否を判断11005する。表14001の例では要求レートの移動平均は12.4パケット/秒であり、出力レートの移動平均も7.2パケット/秒である。続いて分割数変更の要否を判断5004する。一例として要求レートが出力レートよりも20%(第1閾値)以上大きい場合は分割数を1増やす必要があり、要求レートが0パケット/秒(第2閾値)である場合は分割数を1減らす必要があり、いずれでもない場合は不要と判断する。なお、本実施例では閾値を20%、0パケット/秒とするが、システム定義もしくはユーザ定義の値としてこれら以外の閾値を用いてもよい。表14001の例では要求レートが出力レートよりも20%以上大きいため、分割数を1増やす必要があると判断する。判断の結果が変更要であれば、コネクション分割結合部1016に分割数のインクリメント指示(分割数を減らす場合はデクリメント指示)を送信11006する。その後、処理を終える11007。
図11はコネクション分割結合部の帯域調整処理A(8032)のフローチャートである。例えば、帯域監視部からインクリメント指示もしくはデクリメント指示を受信した場合のフローチャートである。
コネクション分割結合部1(1016)は、コネクション分割数DB1017を参照し、データを入力したコネクションに関するレコードを上述と同様にして探索12002する。手順12003は他ポート配列の長さが2以上であるか否かの判断である。コネクション分割結合部1(1016)は、他ポート配列の長さが2以上でなければ12003、レコードを更新12004する。例えば、制御データは、帯域監視部1(1014)からインクリメント指示であり、コネクション分割結合部1(1016)はコネクション分割数DB1017のレコードについてコネクション分割数列の値をインクリメントし、他ポート配列の長さが例えば1であるため、空きポート番号を自ポート配列に追加する。
次にコネクション分割結合部1(1016)は、レコード更新12004で更新したレコードの内容を引数に、インクリメント指示をWANインターフェース1013を介してコネクション分割結合部2(1036)に送信する。ここでの通信は制御用コネクションを用いる。コネクション分割結合部1(1016)は、WANインターフェース1013を介したコネクション分割結合部2(1036)からのackを待つ12006。その後、コネクション分割結合部1(1016)は、帯域監視部から受信したメッセージ種別に応じてコネクション分割結合部2(1036)との間で新たなTCPコネクションを確立もしくは既存TCPコネクションを切断12007する。なお、ここで確立もしくは切断するTCPコネクションの両端のポート番号は、例えば手順12004で更新したレコードの通りとする。
また手順12009は他ポート配列の長さが2以上であった場合12003の処理であり、コネクション分割結合部1(1016)は、無引数のインクリメント(もしくはデクリメント)指示をWANインターフェース1013を介してコネクション分割結合部2(1036)へ転送する。
図12はコネクション分割結合部の帯域調整処理Bのフローチャートである。例えば、対向するコネクション分割結合部からからインクリメント指示を受信した場合のフローチャートである。
手順13002は受信データ(例えばインクリメント指示)に引数があるか否かの判断であり、引数がなかった場合は13006から13010の手順に従う。この手順は、上述の手順12002、12004〜12007と同様の手順である。すなわちインクリメント(もしくはデクリメント)処理が逆向きに行われる事になる。
一方、引数があった場合13002は、13003から13005の手順に従う。手順13003では、分割結合部1(1016)は該コネクションに関連するレコードを検索し、インクリメント指示に従いレコードを更新13004する。例えば、コネクション分割数列の値をインクリメントする。また、分割結合部1(1016)はコネクション分割結合部1にackを返す13005。
(動作シーケンス)
以下、図4に示した各処理の詳細を図13から図16のシーケンス図を用いて説明する。なお、二つの帯域監視部を区別するために、帯域監視部1014を帯域監視部1と記し、帯域監視部1034を帯域監視部2と記す。また、同じく二つのコネクション分割結合部を区別するために、コネクション分割結合部1016をコネクション分割結合部1と記し、コネクション分割結合部1036をコネクション分割結合部2と記す。さらに、図面ではコネクション分割結合部を分割結合部と省略している。さらに、ホスト1およびホスト2のTCPコネクション管理方法は既存のものを使うため詳細には触れず、ホスト1およびホスト2の間に入るWAN高速化装置1011および1031およびそれらの内部の動作モジュールの動作に限定して説明を記す。
図13はホスト1(1001)およびホスト2(1002)の間で新たなTCP接続を開始する際の処理シーケンス例である。この例ではホスト1(1001)が接続処理を開始する。TCPの接続開始にはホスト1からホスト2にsynパケットを送信し、それに対してホスト2がホスト1にsyn+ackパケットを返し、さらにホスト1がホスト2にackパケットを返す3ウェイハンドシェイクという手法が用いられる。
まずホスト1(1001)はsynパケットを、LANインターフェース1012を介して帯域監視部1(1014)に送信2001する。なお、ここでLANインターフェース1012を介す事は自明であるため、図13および本実施例の処理の説明ではLANインターフェース1012(および1032)を省略する。また同様の理由でWANインターフェース1013(および1033)も省略する。帯域監視部1(1014)は受け取ったsynパケットをコネクション分割結合部1(1016)に転送2002し、コネクション分割結合部1(1016)からの応答を待つ。
続いてコネクション分割結合部1(1016)はコネクション分割結合部2(1036)との間に代理通信用のTCPコネクションを接続2003する。ここでもウェイハンドシェイクの処理が行われる。その後、コネクション分割結合部1(1016)は受け取ったsynパケットをコネクション分割結合部2(1036)に手順2003で接続したコネクションを用いて転送2004し、コネクション分割結合部2(1036)からの応答を待つ。
続いてコネクション分割結合部2(1036)は受け取ったsynパケットを帯域監視部2(1034)に転送2005する。続いて帯域監視部2(1034)は受け取ったsynパケットをホスト2(1002)に転送2006する。
次にホスト2(1002)はsyn+ackパケットを帯域監視部2(1034)に送信2011する。帯域監視部2(1034)は受け取ったsyn+ackパケットをコネクション分割結合部2(1036)に転送2012し、コネクション分割結合部2(1036)からの応答を待つ。続いてコネクション分割結合部2(1036)は受け取ったsyn+ackパケットを、応答を待っているコネクション分割結合部1(1016)に手順2003で接続したコネクションを用いて転送2013し、コネクション分割結合部1(1016)からの応答を待つ。続いてコネクション分割結合部1(1016)はコネクション分割数DB1017に該コネクションに関するレコードを登録2014し、受け取ったsyn+ackパケットを、応答を待っている帯域監視部1(1014)に転送(2015)し、応答待ち状態を解く。続いて帯域監視部1(1014)は帯域DB1015に該コネクションに関するレコードを登録2016し、受け取ったsyn+ackパケットをホスト1(1001)に転送2017し、応答待ち状態を解く。
最後にホスト1(1001)はackパケットを帯域監視部1(1014)に送信2021する。続いて帯域監視部1(1014)は受け取ったackパケットをコネクション分割結合部1(1016)に転送2022する。続いてコネクション分割結合部1(1016)は受け取ったackパケットを、応答を待っているコネクション分割結合部2(1036)に手順2003で接続したコネクションを用いて転送2023する。続いてコネクション分割結合部2(1036)はコネクション分割数DB1037に該コネクションに関するレコードを登録2024し、受け取ったackパケットを、応答を待っている帯域監視部2(1034)に転送2025し、応答待ち状態を解く。続いて帯域監視部2(1034)では帯域DB1035に該コネクションに関するレコードを登録2026し、受け取ったackパケットを、ホスト2に転送2027し、応答待ち状態を解く。
ここまでの処理フローで、ホスト1(1001)とホスト2(1002)の間に入るWAN高速化装置1011および1031は、3ウェイハンドシェイクの通信処理を代行しつつ、該コネクションの代行用コネクションを開始し、かつ該コネクションに関する管理情報をDBに登録できる。
図14は、ホスト1(1001)およびホスト2(1002)の間で、図13で開始したTCP接続を用いてデータ通信する際の処理シーケンス例である。この例ではホスト1(1001)がホスト2(1002)にデータを送信する。逆の方向も同様である。なお、図13の時点ではコネクション分割結合部1(1016)および2(1036)の間のTCPコネクションは1回線しかないが、ここではTCPコネクションがすでに2回線あるとする。コネクション分割結合部1(1016)および2(1036)の間のTCPコネクションの増加減少に関する手順は上述の通りである。
まずホスト1(1001)はパケット列を帯域監視部1(1014)に送信3001する。帯域監視部1(1014)は最長でバッファサイズ分のパケット列を受信する。帯域監視部1(1014)は、図5、図6に示す処理に従い、受信したパケット列をコネクション分割結合部1(1016)に転送3004する。
コネクション分割結合部1(1016)は、図7、図8に示す処理に従い、受信したパケット列を分割し、分割したパケット列を適切なコネクションを用いて転送3008し、ackを受信3009するまで待つ。続いてコネクション分割結合部1(1016)は受信したackをTCPのシーケンス番号順にソートし、帯域監視部1(1014)に転送3011する。その後、帯域監視部1(1014)はホスト1(1001)に転送3012する。
一方、複数コネクションを用いてパケット列を転送3008された分割結合部2(1036)はackを返信3009した後に、図7、図9に示す処理に従い、受信したパケット列をTCPのシーケンス番号順にソートし、帯域監視部2(1034)に転送3022する。
続いて帯域監視部2(1034)は、図5に示す処理に従い、受信したパケット列をホスト2(1002)に転送する3023。ホスト2(1002)はTCPの制御に従い帯域監視部2(1034)にackを返し(3024)、そのackは分割結合部2(1036)に伝わり処理を終える。
ここまでの処理フローで、ホスト1(1001)とホスト2(1002)の間に入るWAN高速化装置1011および1031は、ホスト1(1001)とホスト2(1002)のデータ通信を、複数のTCPコネクションを用いることで高速化できる。
図15は、ホスト1(1001)およびホスト2(1002)の間でTCPコネクションを終了する際の処理シーケンス例である。ここではホスト1(1001)が接続終了処理を開始する。TCPの接続終了処理はホスト1からホスト2にfinパケットを送信し、それに対してホスト2がackパケットを返し、さらにホスト2からホスト1に送るデータがなくなった後にホスト2からホスト1にfinパケットを送信し、それに対してホスト1がackパケットを返すという手順で行われる。
まずホスト1(1001)はfinパケットを帯域監視部1(1014)に転送4001する。各モジュールはfinパケットを伝搬(4002、4003、4004、4005)しホスト2(1002)に到達する。なお、この伝搬の過程で、帯域監視部1(1014)と分割結合部1(1016)は、それぞれ分割結合部1(1016)と分割結合部2(1036)からの応答を待つ。
続いてホスト2(1002)はackパケットを帯域監視部2(1034)に転送4011する。ackパケットは先と同じくコネクション分割結合部1(1016)まで伝搬(4012、4013)される。コネクション分割結合部1(1016)はコネクション分割数DB1017から該当するコネクションに関するレコードを削除4014し、帯域監視部1(1014)に転送4015し、コネクション分割結合部2(1036)との間の分割したコネクションそれぞれについてfin−ackのやり取りをして4016、コネクション切断準備をし、応答待ち状態を解く。帯域監視部1(1014)も同じく帯域DB1015から該コネクションに関するレコードを削除4017し、ホスト1(1001)に転送4018し、応答待ち状態を解く。
その後、ホスト2を起点として、同様にfinパケットとackパケットのやり取りを行う(4021〜4038)。
ここまでの処理フローで、ホスト1(1001)とホスト2(1002)の間に入るWAN高速化装置1011および1031は、fin−ackのやり取りを代行しつつ、コネクション分割結合部1(1016)と2(1036)の間の分割コネクションも4016および4036のfin−ackのやり取りで終了させる事ができる。
図16は、コネクション分割結合部1(1016)および2(1036)の間の分割コネクション数の見直し処理シーケンスの例である。この処理はWAN高速化装置1(1001)および2(1002)が代行する全てのコネクションについて行う処理であり、例えば帯域監視DB1015への登録の古い順に全てのコネクションに対して処理を行う。図16はそのうち、ある1つのコネクションに関する個所である。
まず帯域監視部1(1014)は、コネクション分割結合部1(1016)に分割数のインクリメント指示5005を送信する。
コネクション分割結合部1(1016)は、図11に示す処理に従い、更新したレコードの内容を引数にインクリメント指示を送信する5008。ここでの通信は制御用コネクションを用いる。続いて分割結合部2は、図11に示す処理に従い、コネクション分割結合部(1016)1にackを返す5011。その後、コネクション分割結合部1(1016)と2(1036)の間で3ウェイハンドシェイクを行い新たなTCPコネクションを確立5012する。
なお、レコード更新5007の際に他ポート配列の長さが2以上であれば、レコードの更新5007を行わず、インクリメント指示5008のみをコネクション分割結合部2(1036)に送る。その後、コネクション分割結合部2(1036)が自らの空きポートを探索し、自ポート配列に追加してレコード更新処理を行う。その後、インクリメント指示をコネクション分割結合部1(1016)に返す。すなわちインクリメント処理は図16とは逆向きに行われる。
ここまでの処理フローで、コネクション分割結合部1(1016)および2(1036)の間の分割コネクション数を見直し、分割コネクションをインクリメントすることができる。また、最後のコネクション開始処理5012をコネクション終了処理に変えることで、デクリメントすることもできる。
以上の処理手順を実装したWAN高速化装置を用いて図1の構成を取ることで、ホスト1(1001)とホスト2(1002)の間の通信を高速化可能である。
本実施例では、分割数変更の要否判断を改良し、WAN高速化装置1011と1031の間のコネクション数の不要な増加を避ける機構を有するWAN高速化装置の例を説明する。
図17は実施例2におけるWAN高速化装置1011(および1031)の帯域DB1015(および1035)のスキーマおよびレコードの例である。帯域DBのスキーマ16001は、実施例1の帯域DBのスキーマに「コネクションあたり出力レート配列」列16002を追加したものである。列16002の配列のn番目の値は、コネクションをn分割した場合における、コネクション1本あたりの出力レートの最大値であるとし、現在の分割数を配列長とする。図示の例では、1番左の配列が分割数1の場合に対応し、順に分割数2・・・nの場合に対応する。例えば、分割数がさらに増えた場合は配列数を増やし、分割数を減らす場合は配列数も減らす。このようにすると、図中の1番右の配列が現在の分割数における値になる。図1のWAN高速化装置1011(および1031)のうち、既に説明した図1に示された同一の符号を付された構成と、同一の機能を有する部分については、説明を省略する。
以下に列16002の更新方法を記す。手順5003(および11004)において出力レートを更新する際に、現在の出力レートを配列長(すなわち現在の分割数)で割った値と列16002の最後尾(即ち現在の分割数における最大値)を比較し、現在の出力レートを配列長で割った値の方が大きい場合は列16002の最後尾を現在の出力レートを配列長で割った値で更新する。すなわち、コネクションあたりの出力レートの最大値が記憶される。また、手順5005(および11006)においてインクリメント指示を出す場合は列16002の配列長を1増やし、デクリメント指示を出す場合は列16002の配列長を1減らす。
また、以下に列16002を用いた分割数変更の要否判断方法を記す。手順5004(および11005)において判断する際に列16002を参照し、配列の最後尾(すなわち現在のコネクションあたり出力レート最大値)の値と最後尾の一つ前(すなわち一つ少ない分割数の時のコネクションあたり出力レート最大値)の値を比較し、配列の最後尾の値が、最後尾の一つ前の値よりも例えば20%以上小さい場合(又はそれらの比が閾値より小さい場合)は分割不要(分割を許容しない)と判断する。例えば、このような場合は、分割数を増やしても実効帯域が大きく改善しないものと想定される。なお、20%以外にも、予め定められた適宜の閾値(第3閾値)を用いても良い。
以上の処理手順を実装したWAN高速化装置を用いて図1の構成を取ることで、WAN高速化装置1011と1031の間のコネクション数の不要な増加を避けつつ、ホスト1(1001)とホスト2(1002)の間の通信を高速化可能である。
本実施例では、実施例2(又は実施例1)の分割数要否判断をさらに改良し、帯域が不足していても上記第四の問題が発生している場合には、WAN高速化装置1011と1031の間のコネクション数の不要な増加を避け、かつ親コネクションの速度を改善する機構を有するWAN高速化装置の例を説明する。
図21は子コネクション間に速度差が生じる場合の2つの例である。例1(21041)はPC21001とサーバ21002の間の親コネクションを、TCP分割機能を有するプロクシ装置21011および21012によって5本の子コネクションに分割し高速化を図っている。しかし、子コネクションのうち4本21031は同じ経路を通っているが1本21032だけ異なる経路を通っている。ここで例えば子コネクション21032の通る経路がネットワーク上の距離が長く通信遅延が大きい場合に、他の子コネクション21031に対して子コネクション21032は相対的に低速になる。
一方、例2(21042)では、PC21101とサーバ21102の間のコネクションを、TCP分割機能を有するプロクシ装置21111および21112によって5本の子コネクションに分割し、さらにTCP高速化装置21121および21122を用いて高速化を図っている。しかしTCP高速化装置21121および21122のハードウエアリソースには限界があるため、高速化可能なコネクション数には一般に上限があり、上限コネクション数を超えてコネクションを張る場合は高速化されずパススルーされる。例2(21042)の場合には5本の子コネクションのうち4本21131は高速化されたが1本21132は高速化されなかった例である。この場合にも、4本の子コネクション21131に対して子コネクション21132は相対的に低速になる。なお、本発明はこれらの例に限定されるものではない。
ネットワークシステムの構成及びWAN高速化装置1011、1031の構成は、概略上述の実施例1、2の構成(図1等)と同様である。以下、主に上述の実施例と異なる点を説明する。
本実施例ではコネクション分割結合部1016および1036は、子コネクションごとの送受信帯域を測定および記録する機能をさらに有する。具体的には、子コネクションごとに返ってきた(受信した)ACKメッセージを集計して送信帯域を測定する。より具体的には、ある単位時間内において、最後に返ってきたACKのシーケンス番号から最初に返ってきたACKのシーケンス番号を引いたものを、単位時間の長さで割ると、送信帯域を求める事ができる。また、子コネクションごとに返信したACKメッセージを集計して受信帯域を測定する。より具体的には、ある単位時間内において、最後に返信したACKのシーケンス番号から最初に返信したACKのシーケンス番号を引いたものを、単位時間の長さで割ると、受信帯域を求める事ができる。ここで求めた子コネクション毎の送受信帯域はコネクション分割数DBに保存する。
図22の表22001に、本実施例で使用するコネクション分割数DBのスキーマとレコード例を示す。本実施例で使用するコネクション分割数DBには実施例1および2で使用したコネクション分割数DB1017(1037)についての表15001と比較すると、コネクション毎出力レート配列の列22011、コネクション毎入力レート配列の列22012および最終監視時刻列22013を追加している。
図22および図23を用いて本実施例のコネクション分割数DBを用いた分割要否判断を説明する。例えば、図4の分割数参照・変更の処理17003に相当する。なお、以下、一例として値を明示して説明するが、これ以外の値を用いてもよい。
本実施例では、分割要否判断を帯域監視部1014(および1034)とコネクション分割結合部1016(および1036)を用いて行う。
まず、本実施例のコネクション分割数DBについて説明する。表22001は動作例の全体図22141中のWAN高速化装置22111が有するコネクション分割数DBであるとする。表22001中の行22014は動作例の全体図22141の親コネクション22151を表す。ここではPC(ホスト1に相当)22101はIPアドレスが2.3.4.5であり、またサーバ(ホスト2に相当)22102はIPアドレスが1.2.3.4である。またWAN高速化装置22111および22112間には子コネクションが複数(例えば2本)あり、子コネクション22131はWAN高速化装置22111のポート8013からWAN高速化装置22112のポート4759の間に張られており、また子コネクション22132はWAN高速化装置22111のポート20129からWAN高速化装置22112のポート4759の間に張られている。ここでコネクション毎出力レート配列の列22011とコネクション毎入力レート配列の列22012は繰り返し列の繰り返し列になっている。
コネクション毎出力レート配列の列22011には、コネクション毎に、所定時間毎の出力レートを記憶する。コネクション毎入力レート配列の列22012は、コネクション毎に、所定時間毎の入力レートを記憶する。ここでは例えば、子コネクション22131(すなわち自ポート番号が8013の子コネクション)のコネクション毎出力レート配列は[10、0、0、0、2]であり、子コネクション22132(すなわち自ポート番号が10129の子コネクション)のコネクション毎出力レート配列は[2、2、3、2、2]である。同様に、子コネクション22131(すなわち自ポート番号が8013の子コネクション)のコネクション毎入力レート配列は[1、1、1、1、0]であり、子コネクション22132(すなわち自ポート番号が10129の子コネクション)のコネクション毎出力レート配列は[1、2、1、1、0]である。また、最終監視時刻列22013はコネクション毎出力レート配列22011とコネクション毎入力レート配列22012の最終監視時刻を保持する。本実施例では移動平均の取得期間は5秒とするが、システム定義もしくはユーザ定義の値として5秒以外の取得期間を用いてもよい。また、コネクション分割数DBに、求められる移動平均をさらに記憶してもよい。なお、表22001のコネクション毎出力レート配列とコネクション毎入力レート配列と最終監視時刻の更新方法は実施例1の図2を用いて説明した帯域DBの要求レート配列もしくは出力レート配列と最終監視時刻の更新方法と同様である。
続いて、本実施例の帯域DBについて説明する。図22に示す表22201は本実施例の帯域DBである。ここで表22201の行22202は親コネクション22151を表す行である。帯域DBの構成は、上述の実施例と同様である。
続いて図23を用いて分割要否判断の流れを説明する。図23は本実施例の分割要否判断の概要を表すフローチャートである。
本実施例では分割要否判断開始23001後、帯域監視部は、まず帯域DB22201を用いて分割要否の一次判断23002を行う26001。図26に一次判断の具体例を示す。まず、帯域監視部は、帯域DB22201のうち注目するコネクションに該当する行22202から要求レート配列と出力レート配列を取得26002し、要求レートの平均と出力レートの平均を演算する26003。ここでは要求レートの移動平均は12.4パケット/秒であるのに対して出力レートの移動平均は4.4パケット/秒である事がわかる。なお、該当する行は注目するコネクションについての「LANホストIP列、LANホストポート列、WANホストIP列、WANホストポート列」の4つ組を用いて一意に識別できる。続いて帯域監視部は、要求レートの平均が出力レートよりも所定の閾値以上大きいか否か判断26004し、大きい場合は分割数を増やす必要があるため、「分割要」と出力(判断)26005する。一方、帯域監視部は、判断26004において小さい場合は、続いて出力レートの平均が第2閾値よりも大きいか否か判断26006し、大きい場合は分割数を減らす必要があるため、「分割要」と出力(判断)26005する。一方、帯域監視部は、判断26006において小さい場合は、不要と出力26007する。閾値の一例として要求レートが出力レートよりも20%(第1閾値)以上大きい場合は分割数を増やす必要があり、出力レートが0パケット/秒(第2閾値)である場合は分割数を減らす必要があり、いずれでもない場合は「分割不要」と判断する。なお、本実施例では閾値を20%、0パケット/秒とするが、システム定義もしくはユーザ定義の値としてこれら以外の閾値を用いてもよい。本実施例では1次判断の結果分割数を増やす必要があると判断する。なお、ここで分割不要と判断した場合は分割要否判断を終了23006する。
続いてコネクション分割数DB22001を用いて分割要否の二次判断23003を行う27001。図27に二次判断の具体例を示す。二次判断では、各子コネクションに速度差があるか判断する。本実施例ではコネクション毎出力レート配列もしくはコネクション毎入力レート配列の平均と、標準偏差などのばらつきを表す指標とに基づく二次判断を行う。コネクション分割結合部は、コネクション分割数DB22001のうち注目するコネクションに該当する行22014からコネクション毎出力レート配列を取得する。なお、コネクション毎出力レート配列は繰り返し列(図22では横方向)の配列(縦方向)である。行22014の場合は、配列[10、0、0、0、2]と配列[2、2、2、3、2]が繰り返されている。続いてコネクション分割結合部は、コネクション毎出力レート配列の各要素の標準偏差を子コネクション毎に演算27003する。ここでは子コネクション22131(すなわち自ポート番号が8013の子コネクション)のコネクション毎出力レート配列の標準偏差は[10、0、0、0、2]の標準偏差、すなわち3.88である。一方、子コネクション22132(すなわち自ポート番号が10129の子コネクション)のコネクション毎出力レート配列の標準偏差は[2、2、2、3、2]の標準偏差、すなわち0.40であることがわかる。続いてコネクション分割結合部は、各コネクションについて、標準偏差の最大値と標準偏差の最小値の比が予め定められた閾値に収まるか否か判断27004する。コネクション分割結合部は、判断の結果、閾値に収まらない場合は速度差ありと出力(判断)27005し、収まる場合は速度差なしと出力(判断)27006する。なお、標準偏差の最大値と標準偏差の最小値の比以外にも適宜の2つの標準偏差の比を用いて閾値と比較してもよい。
ここで子コネクション22131の標準偏差は子コネクション22132の標準偏差の9.7倍であり、子コネクション22132は安定したレートで送信を行えていない事が判る。これは本実施例では子コネクション22131と子コネクション22132にデータをラウンドロビンに割り当てて転送しているためである。具体的には、あるタイミングで一定量のデータを両コネクションに等量ずつ割り当てると、相対的に低速な子コネクション22132(他のコネクションと速度差が所定速度以上ある低速なコネクション)は少しずつしか転送できないため、相対的に高速な子コネクション22131(他のコネクションと速度差が所定速度以上ある高速なコネクション)よりも転送に時間がかかる。このとき、本実施例ではデータ配分をラウンドロビンで行っているため、相対的に低速な子コネクション22132の転送が終わるまで相対的に高速な子コネクション22131にもデータを割り当てる事ができない。そのため、相対的に高速な子コネクション22131はバースト的にデータを転送する事になり、標準偏差が大きくなる。本実施例では、一例として二次判断23003において標準偏差が5倍以上異なる場合に、子コネクション間に速度差ありと判断し、相対的に標準偏差が小さいコネクションを使用停止23004するという判断を下し処理を終える23006。一方、標準偏差が5倍以上異ならない場合には、子コネクション間に速度差なしと判断し実施例と同様に分割数を増やしたり減らしたり23005し、処理を終える23006。なお、本実施例では上述のように標準偏差の閾値を5とするが、システム定義もしくはユーザ定義の値としてこれら以外の閾値を用いてもよい。また、本実施例では標準偏差を用いて評価したが、分散を用いたり、他のばらつきを表す指標を用いてもよい。標準偏差と平均を組み合わせ平均に応じて閾値(本実施例では5)を上下させたりといったバリエーションも考えられる。
なお、手順23004で相対的に低速な子コネクションを使用停止するという判断を下した場合には、該低速な子コネクションを切断すれば、WAN高速化装置22111および22112の使用リソースを削減できる。そのため、本実施例では該低速な子コネクションを切断する。しかし上記の通り切断は必須ではなく、コネクションが残っていても使用を停止すればよく、同様に高速化の効果が得られる。また、ここで使用を停止する子コネクションは1本である必要はなく、同時に複数の子コネクションを使用停止にする事も可能である。すなわち、手順23004の判断は、言い換えると親セッションの通信速度が目標速度に未達の場合に、相対的に高速な子コネクションのみを用いて通信するという判断である。これにより、通信に用いるコネクション数は減るが、相対的に低速なコネクションを用いていた場合に比べて高速化できる。
また、手順23004では相対的に低速な子コネクションを使用停止するという判断を下したが、完全に使用を停止するのではなく、使用頻度を下げる、すなわち他の子コネクションと比べ相対的に少ないデータを流すというバリエーションも考えられる。この場合は、例えば、低速な子コネクションのコネクション毎出力レート配列のある時点の平均を、低速な子コネクションの移動平均の近似値とし、コネクション分割結合プログラム1014および1034における該低速な子コネクションへのデータ割当て量とする。他の子コネクション(すなわち相対的に高速な子コネクション)には従来通りラウンドロビンに割り当てる。なお、使用頻度を下げる手法として、他の割り当て手法を用いてもよい。
本実施例では、以上の分割要否判断を帯域監視部1014(および1034)とコネクション分割結合部1016(および1036)を用いて行う。このうち、一次判断23002は帯域監視部1014(および1034)が実施例1と同じく図10に示す帯域調整処理にて処理する。帯域調整処理内の判断11005が一次判断に相当する。一方の二次判断23003はコネクション分割部1016(および1036)が図24の改良された帯域調整処理Aおよび図25の改良された帯域調整処理Bを用いて行う。
図24に示す改良された帯域調整処理Aは、実施例1の帯域調整処理Aの処理12003に続いて二次判断23003を行う24011。二次判断24011を行った結果、子コネクション間に速度差ありと判断されたら、上述の判断23003の説明の通り相対的に低速な子セッションを手順12002で見つけたレコードから削除しレコードを更新24012する。その後、レコード更新24012で更新したレコードの内容を引数に、デクリメント指示をWANインターフェース1013を介して対向するWAN高速化装置のコネクション分割結合部2(1036)に送信24013する。ここでの通信は制御用コネクションを用いる。コネクション分割結合部1(1016)は、WANインターフェース1013を介したコネクション分割結合部2(1036)からのackを待つ24014。その後、コネクション分割結合部1(1016)は、コネクション分割結合部2(1036)との間で相対的に低速なTCPコネクションの使用を停止24015する。この際、上述の通りWAN高速化装置22111および22112の使用リソース削減のため、該低速な子コネクションを切断することができるが、切断は必須ではなくコネクションが残っていても使用を停止すれば同様の効果が得られる。図24の他の処理は、図11に示す処理と同様である、同様の処理については同じ符号を付し、説明を省略する。
続いて図25に示す改良された帯域調整処理Bは、実施例1の帯域調整処理Bの処理13006に続いて二次判断23003を行う25011。二次判断25011を行った結果、子コネクション間に速度差ありと判断されたら、判断23003の説明の通り相対的に低速な子セッションを手順12002で見つけたレコードから削除しレコードを更新25012する。その後、レコード更新25012で更新したレコードの内容を引数に、デクリメント指示をWANインターフェース1013を介してコネクション分割結合部1(1016)に送信25013する。ここでの通信は制御用コネクションを用いる。コネクション分割結合部2(1036)は、WANインターフェース1013を介したコネクション分割結合部1(1016)からのackを待つ25014。その後、コネクション分割結合部2(1036)は、コネクション分割結合部1(1016)との間で相対的に低速なTCPコネクションの使用を停止25015する。この際、上述の通りWAN高速化装置22111および22112の使用リソース削減のため、該低速な子コネクションを切断することができるが、切断は必須ではなくコネクションが残っていても使用を停止すれば同様の効果が得られる。
以上の改良された処理手順を用いる事で、帯域が不足していても上記第四の問題の事象が発生している場合には、WAN高速化装置1011と1031の間のコネクション数の不要な増加を避け、かつ親コネクションの速度を改善する機構を有するWAN高速化装置を実装可能になる。
例えば、要求レートの平均が出力レートの平均より所定の値以上大きく一次判断で分割増と判断された場合であっても、子コネクション間の速度差がない(又は小さい)場合はコネクション分割数を増やして高速化を図り、子コネクション間の速度差がある(又は大きい)場合は、逆に相対的に低速なコネクションを使わずにコネクション分割数を減らして高速化を図る。なお、低速なコネクションの代わりに別のコネクションを用いてもよく、必ずしもコネクション分割数が減らなくもてよい。
本実施例では、実施例1または実施例2または実施例3のWAN高速化装置1011および1031の動作に必要な帯域監視プログラム1014および1034と、帯域DB1015および1035と、コネクション分割結合プログラム1016および1036と、コネクション分割数DB1017および1037を、システム設置時や起動時などシステム運用前に二次記憶1019および1039に読込ませる事で、汎用サーバ装置を用いた運用を可能にした例である。
図18は実施例4の汎用サーバ装置を用いた通信システムの構成図の例である。実施例4では汎用サーバ装置18011(および18031)の設置後に、CD−ROMのような外部記憶媒体18051(および18061)を用いて、汎用サーバ装置18011(および18031)の二次記憶1019(および1039)に帯域監視プログラム1014(および1034)と、帯域DB1015(および1035)と、コネクション分割結合プログラム1016(および1036)と、コネクション分割数DB1017(および1037)の読込み処理を行う手順を取る。なお、実施例4では各プログラムおよびDBを汎用サーバ装置18011(および18031)に読み込ませるために外部記憶媒体を用いたが、他にもネットワーク1033上の他のサーバ装置やファイルサーバなどからダウンロードしても同様の効果が得られる。
以上の処理手順を実行し汎用サーバを用いて図18の構成を取ることで、ホスト1(1001)とホスト2(1002)の間の通信を高速化可能である。
本実施例では、実施例1または実施例2または実施例3または実施例4のWAN高速化装置1011の機能とホスト1(1001)の機能、および、もしくはWAN高速化装置1031の機能とホスト2(1002)の機能が同一の汎用サーバ装置内で動作する場合の例である。
図19は実施例5のWAN高速化の機能とホストの機能が同一の装置内で動作する汎用サーバ装置を用いた通信システムの構成図の例である。実施例5では汎用サーバ装置19011(および19031)にて、実施例1のホスト1(1001)(およびホスト2(1002))の動作に必要なホストプログラム19012(および19032)と、WAN高速化装置の動作に必要な帯域監視プログラム1014(および1034)とコネクション分割結合プログラム1016(および1036)が動作する、また、主記憶1020(および1040)は帯域監視プログラム1014(および1034)とコネクション分割結合プログラム1016(および1036)の動作に必要な帯域DB1015(および1035)とコネクション分割数DB1017(および1037)も有する。また、実施例4では実施例1のLAN IF1012(および1032)の代わりに、多くの汎用サーバ装置で利用可能なループバックデバイスを用いて、ホストプログラム19012(および19032)と帯域監視プログラム1014(および1034)が通信する。なお、実施例5では各プログラムおよびDBは二次記憶1019(および1039)に保存され、汎用サーバ装置19011(および19031)の起動後に主記憶1020(および1040)に読み込まれるが、実施例4と同じく外部記憶媒体からの読込みや、ネットワーク上の他のサーバ装置やファイルサーバなどからダウンロードしても同様の効果が得られる。
以上の処理手順を実行しWAN高速化装置とホストが同一の装置内で動作する汎用サーバ装置を用いて図19の構成を取る事で、ホストプログラム19012とホストプログラム19032の間の通信を高速化可能である。
(構成例)
(構成例A−1)
構成例A−1は、子セッションの速度を比較し、比較結果及び親セッションの速度目標に基づき選択される子セッションで通信を行う。
例えば、ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置であって、
ホスト間のTCPコネクション毎に、第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す出力レートを保持する第1記憶領域と、
ホスト間のTCPコネクション毎に、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送するコネクション分割結合部と、
コネクション分割数を保持する第2記憶領域と、
上記要求レートと上記出力レートに基づき、コネクション分割数増加又は削減の要否の一次判断を行う帯域監視部と
を備え、
上記コネクション分割結合部は
帯域監視部の一次判断の結果分割数増加が必要であり、かつ第2網の複数のコネクションのうち相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち相対的に高速なコネクションのみを用いて通信する。
(構成例A−2)
構成例A−2は、上述の構成例A−1において、
上記コネクション分割結合部は、第2網の複数のコネクションのうち相対的に低速なコネクションを切断する。
(構成例A−3)
構成例A−3は、ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置の制御方法であって、
ホスト間のTCPコネクション毎に、第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す出力レートを第1記憶領域に記憶し、
ホスト間のTCPコネクション毎に、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送し、
上記要求レートと上記出力レートに基づき、コネクション分割数を増加又は削減の要否を一次判断し
一次判断の結果分割数増加が必要であり、かつ第2網の複数のコネクションのうち相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち相対的に高速なコネクションのみを用いて通信する。
(構成例A−4)
構成例A−4は、広域ネットワークを介して第1ホストと第2ホストが通信を行うネットワークシステムであって、
上記構成例A−1に記載のネットワーク装置であって、上記第1ホスト側に配置される第1のネットワーク装置と、
上記構成例A−1に記載のネットワーク装置であって、上記第2ホスト側に配置される第2のネットワーク装置と
を備え、
上記第1のネットワーク装置と上記第2のネットワーク装置は、広域ネットワークを介して配置され、
上記第1ホストと上記第2ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信する。
(構成例B−1)
ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置であって、
ホスト間のTCPコネクション毎に、第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す出力レートを保持する第1記憶領域と、
ホスト間のTCPコネクション毎に、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送するコネクション分割結合部と、
コネクション分割数を保持する第2記憶領域と、
上記要求レートと上記出力レートに基づき、コネクション分割数を増加又は削減する帯域監視部と
を備えたネットワーク装置。
(構成例B−2)
上記帯域制御部は、
要求レートと出力レートを比較し、要求レートが出力レートよりも予め定められた第1閾値以上大きい場合はコネクション分割数を増やす構成例B−1に記載のネットワーク装置。
(構成例B−3)
上記帯域制御部は、
要求レートが予め定められた第2閾値よりも小さい場合はコネクション分割数を減らす構成例B−1に記載のネットワーク装置。
(構成例B−4)
コネクション分割数を増加させるときには、
第2網を介した上記対向するネットワーク装置との間で新たなコネクションを確立し、
上記第2記憶領域のコネクション分割数を更新し、及び、確立されたコネクションの識別情報を記憶する構成例B−1に記載のネットワーク装置。
(構成例B−5)
コネクション分割数を削減させるときには、
上記第2記憶領域から該当するTCPコネクションに対応するコネクションのうちのひとつを選択し、
第2網を介した対向するネットワーク装置との間で、選択されたコネクションを終了する処理を行い、
上記第2記憶領域のコネクション分割数を更新し、及び、選択されたコネクションの識別情報を削除する構成例B−1に記載のネットワーク装置。
(構成例B−6)
上記帯域監視部は、
単位時間内に入力されたデータ量に基づく単位時間あたりの要求レートと、単位時間内に転送したデータ量に基づく単位時間あたりの出力レートとを監視し、それぞれについて複数の単位時間にわたる移動平均を求めて上記要求レート及び上記出力レートとする構成例B−1に記載のネットワーク装置。
(構成例B−7)
上記第1記憶領域は、コネクション分割数毎に、過去に該コネクション分割数にコネクションが分割された際に監視されたコネクションあたりの出力レートの最大値をさらに保持し、
分割数を増加するか否かを判断する際に、現在のコネクション分割数におけるコネクションあたり出力レートの最大値と、ひとつ少ないコネクション分割数におけるコネクションあたり出力レート最大値を比較し、その比が予め定められた第3閾値よりも小さい場合は分割不要と判断する構成例B−1に記載のネットワーク装置。
(構成例B−8)
ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置の制御方法であって、
ホスト間のTCPコネクション毎に、第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す出力レートを第1記憶領域に記憶し、
ホスト間のTCPコネクション毎に、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送し、
上記要求レートと上記出力レートに基づき、コネクション分割数を増加又は削減する
上記ネットワーク装置の制御方法。
(構成例B−9)
広域ネットワークを介して第1ホストと第2ホストが通信を行うネットワークシステムであって、
構成例B−1に記載のネットワーク装置であって、上記第1ホスト側に配置される第1のネットワーク装置と、
構成例B−1に記載のネットワーク装置であって、上記第2ホスト側に配置される第2のネットワーク装置と
を備え、
上記第1のネットワーク装置と上記第2のネットワーク装置は、広域ネットワークを介して配置され、
上記第1ホストと上記第2ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステム。
(構成例B−10)
広域ネットワークを介して第1ホストと第2ホストが通信を行うネットワークシステムであって、
上記第1ホスト側に配置される第1の汎用サーバ装置と
上記第2のスト側に配置される第2の汎用サーバ装置と
上記第1の汎用サーバ装置側に配置される構成例B−8に記載の方法を実行するプログラムおよび関連するデータを格納した第1の外部記憶媒体と
上記第2の汎用サーバ装置側に配置される構成例B−8に記載の方法を実行するプログラムおよび関連するデータを格納した第2の外部記憶媒体と
を備え、
上記第1の汎用サーバ装置と上記第2の汎用サーバ装置は、広域ネットワークを介して配置され、
上記第1の外部記憶媒体から上記第1の汎用サーバ装置にプログラムと関連するデータをコピーし、
上記第2の外部記憶媒体から上記第2の汎用サーバ装置にプログラムと関連するデータをコピーし、
上記第1ホストと上記第2ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステム。
(構成例B−11)
上記第1の汎用サーバ装置は上記第1ホストであり
上記第2の汎用サーバ装置は上記第2ホストである事を特徴とする構成例B−10に記載のネットワークシステム。
(付記)
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれている。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
本発明は、例えばTCP通信を用いるシステムに利用可能である。
1001、1002 ホスト
1011、1031 WAN高速化装置
1014、1034 帯域監視プログラム(帯域監視部)
1015、1035 帯域DB
1016、1036 コネクション分割プログラム(分割結合部)
1017 コネクション分割数DB

Claims (10)

  1. ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置であって、
    第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す第1出力レートを保持する第1記憶領域と、
    ホスト間のTCPコネクションに対して、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送するコネクション分割結合部と、
    分割されたコネクション毎の第2出力レートを保持する第2記憶領域と、
    を備え、
    前記コネクション分割結合部は
    前記要求レートが前記第1出力レートより予め定められた閾値以上大きく、かつ、第2網の複数のコネクションのうち前記第2出力レートが所定速度以上相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち該相対的に低速なコネクション以外のコネクションを用いて、又は、該相対的に低速なコネクションの使用比率を下げて通信するネットワーク装置。
  2. 前記第2記憶領域は、分割されたコネクション毎に、所定時間毎の第2出力レートを保持し、
    前記コネクション分割結合部は、
    分割した各コネクションについて、所定時間毎の該出力レートのばらつきを表す指標を分割したコネクション毎に求め、
    該ばらつきを表す指標に基づき、相対的に低速なコネクションの有無を判断する請求項1に記載のネットワーク装置。
  3. 前記ばらつきを表す指標は、標準偏差又は分散である請求項2に記載のネットワーク装置。
  4. 所定の2つのコネクションの標準偏差又は分散の比が、予め定められた閾値以上ある場合に、該2つの標準偏差又は分散のうち小さい方のコネクションを相対的に低速なコネクションとして検出する請求項3に記載のネットワーク装置。
  5. 前記要求レートと前記出力レートに基づき、コネクション分割数増加又は削減の要否の一次判断を行う帯域監視部
    をさらに備え、
    前記コネクション分割結合部は
    前記帯域監視部の一次判断の結果、前記要求レートが前記出力レートより予め定められた閾値以上大きいことにより分割数増加が必要であり、かつ、第2網の複数のコネクションのうち相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち該相対的に低速なコネクション以外のコネクションを用いて、又は、該相対的に低速なコネクションの使用比率を下げて通信する請求項1に記載のネットワーク装置。
  6. 前記コネクション分割結合部は、
    第2網の複数のコネクションのうち相対的に低速なコネクションを切断する請求項1に記載のネットワーク装置。
  7. 前記コネクション分割結合部は、
    第2網の複数のコネクションのうち相対的に低速なコネクションの使用を停止する請求項1に記載のネットワーク装置。
  8. 前記コネクション分割結合部は、
    第2網の複数のコネクションのうち相対的に低速なコネクションの使用比率を下げる請求項1に記載のネットワーク装置。
  9. ホスト間の第1網と第2網を介したTCP通信を中継するネットワーク装置の制御方法であって、
    第1網から入力されたデータ量に基づく要求レートと、第2網へデータを転送した実効帯域を示す第1出力レートを第1記憶領域に記憶し、
    ホスト間のTCPコネクションに対して、第1網からのデータを、第2網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第2網からの複数のコネクションを介したデータを結合して第1網に転送し、
    分割されたコネクション毎の第2出力レートを第2記憶領域に記憶し、
    前記要求レートが前記第1出力レートより予め定められた閾値以上大きく、かつ、第2網の複数のコネクションのうち前記第2出力レートが所定速度以上相対的に低速なコネクションを検出した場合に、第2網の複数のコネクションのうち該相対的に低速なコネクション以外のコネクションを用いて、又は、該相対的に低速なコネクションの使用比率を下げて通信する前記ネットワーク装置の制御方法。
  10. 広域ネットワークを介して第1ホストと第2ホストが通信を行うネットワークシステムであって、
    請求項1に記載のネットワーク装置であって、前記第1ホスト側に配置される第1のネットワーク装置と、
    請求項1に記載のネットワーク装置であって、前記第2ホスト側に配置される第2のネットワーク装置と
    を備え、
    前記第1のネットワーク装置と前記第2のネットワーク装置は、広域ネットワークを介して配置され、
    前記第1ホストと前記第2ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステム。
JP2012246572A 2012-11-08 2012-11-08 ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム Ceased JP2014096674A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012246572A JP2014096674A (ja) 2012-11-08 2012-11-08 ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム
US14/075,158 US9143458B2 (en) 2012-11-08 2013-11-08 Network device, method for controlling the network device, and network system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012246572A JP2014096674A (ja) 2012-11-08 2012-11-08 ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム

Publications (1)

Publication Number Publication Date
JP2014096674A true JP2014096674A (ja) 2014-05-22

Family

ID=50622269

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012246572A Ceased JP2014096674A (ja) 2012-11-08 2012-11-08 ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム

Country Status (2)

Country Link
US (1) US9143458B2 (ja)
JP (1) JP2014096674A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105491083A (zh) * 2014-09-16 2016-04-13 上海艾泰科技有限公司 多wan口的网关、实现http下载的方法及***

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11481679B2 (en) * 2020-03-02 2022-10-25 Kyndryl, Inc. Adaptive data ingestion rates

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11242640A (ja) * 1998-02-25 1999-09-07 Kdd Corp ファイル転送方法
JP2004260668A (ja) * 2003-02-27 2004-09-16 Nippon Telegr & Teleph Corp <Ntt> 動画像伝送システム、動画像送信装置、動画像中継装置、動画像受信装置、プログラム、および記録媒体
JP2005217815A (ja) * 2004-01-30 2005-08-11 Hitachi Ltd パス制御方法
JP2006060674A (ja) * 2004-08-23 2006-03-02 Nec Corp 通信装置、データ通信方法およびプログラム
JP2009055114A (ja) * 2007-08-23 2009-03-12 Nec Corp 通信装置、通信システム、転送効率向上方法及び転送効率向上プログラム
JP2013066059A (ja) * 2011-09-16 2013-04-11 Canon Inc 情報処理装置、情報処理方法及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020010765A1 (en) * 2000-07-21 2002-01-24 John Border Method and system for prioritizing traffic in a network
EP1267529B1 (en) 2001-06-14 2007-11-14 Hitachi Ltd. Data packets acknowledgment system
JP2003069615A (ja) 2001-06-14 2003-03-07 Hitachi Ltd 通信制御装置および通信制御方法
US7389533B2 (en) * 2002-01-28 2008-06-17 Hughes Network Systems, Llc Method and system for adaptively applying performance enhancing functions
US7286476B2 (en) 2003-08-01 2007-10-23 F5 Networks, Inc. Accelerating network performance by striping and parallelization of TCP connections

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11242640A (ja) * 1998-02-25 1999-09-07 Kdd Corp ファイル転送方法
JP2004260668A (ja) * 2003-02-27 2004-09-16 Nippon Telegr & Teleph Corp <Ntt> 動画像伝送システム、動画像送信装置、動画像中継装置、動画像受信装置、プログラム、および記録媒体
JP2005217815A (ja) * 2004-01-30 2005-08-11 Hitachi Ltd パス制御方法
JP2006060674A (ja) * 2004-08-23 2006-03-02 Nec Corp 通信装置、データ通信方法およびプログラム
JP2009055114A (ja) * 2007-08-23 2009-03-12 Nec Corp 通信装置、通信システム、転送効率向上方法及び転送効率向上プログラム
JP2013066059A (ja) * 2011-09-16 2013-04-11 Canon Inc 情報処理装置、情報処理方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105491083A (zh) * 2014-09-16 2016-04-13 上海艾泰科技有限公司 多wan口的网关、实现http下载的方法及***
CN105491083B (zh) * 2014-09-16 2018-07-27 上海艾泰科技有限公司 多wan口的网关、实现http下载的方法及***

Also Published As

Publication number Publication date
US9143458B2 (en) 2015-09-22
US20140126372A1 (en) 2014-05-08

Similar Documents

Publication Publication Date Title
JP6697556B2 (ja) マルチパス転送設計
US11405309B2 (en) Systems and methods for selecting communication paths for applications sensitive to bursty packet drops
CN103312807B (zh) 数据传输方法、装置及***
WO2017206763A1 (zh) 一种终端设备及数据处理方法、存储介质
CN107454017B (zh) 一种云数据中心网络中混合数据流协同调度方法
JP2016516333A (ja) ネットワーク内のスケーラブルなフロー及び輻輳制御
WO2018112877A1 (zh) 路径计算和访问请求分发方法、装置及***
WO2014141007A1 (en) Virtual machine migration in a network
US20140328341A1 (en) Communication path selection
JP4771988B2 (ja) 負荷分散装置及びネットワーク装置
WO2022121469A1 (zh) 一种流量控制方法、装置、设备及可读存储介质
US20160241482A1 (en) Packet communication apparatus and packet communication method
Zhang et al. Tuning the aggressive TCP behavior for highly concurrent HTTP connections in intra-datacenter
JP5951888B2 (ja) 通信装置、通信方法、及び通信プログラム
WO2019034099A1 (en) LOAD BALANCING BASED ON MICRO-FLOWS
CN113783787A (zh) 一种基于云边协同的非实时数据传输方法及装置
WO2013153694A1 (ja) クライアントとサーバ間の通信を中継する通信装置、システム、及び方法
US11223567B2 (en) Transmission control protocol session mobility
JP2009239444A (ja) パケット順序制御方法、受信装置、送信装置および通信システム
US10628201B2 (en) Analysis method and analysis apparatus
JP2014096674A (ja) ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム
CN109787861B (zh) 网络数据延迟控制方法
Kulkarni et al. A probabilistic approach to address TCP incast in data center networks
JP5588481B2 (ja) ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステム
Zheng et al. An effective approach to preventing TCP incast throughput collapse for data center networks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150715

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160527

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160621

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20161025