"TCPを管理できる複数の通信装置が階層的に接続されたネットワークにおいて、各TCPを管理できる該通信装置間において、TCPのフローを自立的に管理するための通信装置であって、自装置に接続されている上層側の通信装置からリクエストを受信し、該リクエストの特徴を学習アルゴリズムにより解析するリクエスト解析手段と、前記リクエスト解析手段で解析された解析結果に基づいて、前記リクエストを自装置に接続されている複数の下層側の通信装置のうちのいずれに転送するかを決定する転送先決定手段と、TCPフローを確立すると共に、該TCPフローにおける応答時間の情報を前記リクエストの送信元の上層側の通信装置に送信する応答時間通知手段と、を有することを特徴とする通信装置。前記TCPフローが確立した際に、自装置の下層の通信装置のフロー数を管理し、該フロー数が変化した際に、上層の通信装置に通知するフロー数変化通知手段と、自装置と直接接続されている下層の通信装置のフロー数を保持するフロー数保持手段と、前記リクエスト解析手段は、前記フロー数保持手段よりフロー数を取得して、TCPのスループットを学習する手段を含む請求項1記載の通信装置。TCPを管理できる複数の通信装置が階層的に接続されたネットワークにおいて、各TCPを管理できる該通信装置間において、TCPのフローを自立的に管理するためのネットワーク管理方法であって、ネットワーク内の各通信装置において、リクエスト解析手段が、自装置に接続されている上層側の通信装置からリクエストを受信し、該リクエストの特徴を学習アルゴリズムにより解析するリクエスト解析ステップと、転送先決定手段が、前記リクエスト解析ステップで解析された解析結果に基づいて、前記リクエストを自装置に接続されている複数の下層側の通信装置のうちのいずれに転送するかを決定する転送先決定ステップと、応答時間通知手段が、TCPフローを確立すると共に、該TCPフローにおける応答時間の情報を前記リクエストの送信元の上層側の通信装置に送信する応答時間通知ステップと、を行うことを特徴とするネットワーク管理方法。フロー数変化通知手段が、前記TCPフローが確立した際に、自装置の下層の通信装置のフロー数を管理し、該フロー数が変化した際に、上層の通信装置に通知するフロー数変化通知ステップと、フロー数保持手段が、自装置と直接接続されている下層の通信装置のフロー数が変化したことの通知を取得すると、該フロー数を記憶手段に格納するフロー数保持ステップと、を更に行い、前記リクエスト解析ステップにおいて、前記フロー数保持手段よりフロー数を取得して、TCPのスループットを学習する請求項3記載のネットワーク管理方法。コンピュータを、請求項1または2に記載の通信装置の各手段として機能させるためのネットワーク管理プログラム。TCPフローはデータセンタの帯域利用率とスループットを考慮して制御されるべきである。つまり、TCPフローを確立するために、各ネットワークコンポーネントの負荷を考慮して、リクエストの受信先を決定しなければならない。例えば、オンデマンドサービスで代表されるような、ネットワークゲームやビデオストリーミングなどのサービスでは、TCPの制御が、サービスのユーザビリティに大きく影響を与えてしまう。しかし、これらのサービスでは、ユーザの接続時間や接続タイミングなどに特性があり、これらの接続特性を見極めなければ、適切なTCPフロー制御を行うことが難しい。本発明は、上記の点に鑑みなされたもので、リクエスト数が増加した場合でも輻輳の発生を抑えることができ、ネットワーク全体の最適化が可能な通信装置及びネットワーク管理方法及びプログラム提供することを目的とする。上記の課題を解決するため、本発明請求項1は、TCPを管理できる複数の通信装置が階層的に接続されたネットワークにおいて、各TCPを管理できる該通信装置間において、TCPのフローを自立的に管理するための通信装置であって、自装置に接続されている上層側の通信装置からリクエストを受信し、該リクエストの特徴を学習アルゴリズムにより解析するリクエスト解析手段と、前記リクエスト解析手段で解析された解析結果に基づいて、前記リクエストを自装置に接続されている複数の下層側の通信装置のうちのいずれに転送するかを決定する転送先決定手段と、TCPフローを確立すると共に、該TCPフローにおける応答時間の情報を前記リクエストの送信元の上層側の通信装置に送信する応答時間通知手段と、を有する。また、本発明請求項2は、前記TCPフローが確立した際に、自装置の下層の通信装置のフロー数を管理し、該フロー数が変化した際に、上層の通信装置に通知するフロー数変化通知手段と、自装置と直接接続されている下層の通信装置のフロー数を保持するフロー数保持手段と、前記リクエスト解析手段は、前記フロー数保持手段よりフロー数を取得して、TCPのスループットを学習する手段を含む。本発明請求項3は、TCPを管理できる複数の通信装置が階層的に接続されたネットワークにおいて、各TCPを管理できる該通信装置間において、TCPのフローを自立的に管理するためのネットワーク管理方法であって、ネットワーク内の各通信装置において、リクエスト解析手段が、自装置に接続されている上層側の通信装置からリクエストを受信し、該リクエストの特徴を学習アルゴリズムにより解析するリクエスト解析ステップと、転送先決定手段が、前記リクエスト解析ステップで解析された解析結果に基づいて、前記リクエストを自装置に接続されている複数の下層側の通信装置のうちのいずれに転送するかを決定する転送先決定ステップと、応答時間通知手段が、TCPフローを確立すると共に、該TCPフローにおける応答時間の情報を前記リクエストの送信元の上層側の通信装置に送信する応答時間通知ステップと、を行う。また、本発明請求項4は、フロー数変化通知手段が、前記TCPフローが確立した際に、自装置の下層の通信装置のフロー数を管理し、該フロー数が変化した際に、上層の通信装置に通知するフロー数変化通知ステップと、フロー数保持手段が、自装置と直接接続されている下層の通信装置のフロー数が変化したことの通知を取得すると、該フロー数を記憶手段に格納するフロー数保持ステップと、を更に行い、前記リクエスト解析ステップにおいて、前記フロー数保持手段よりフロー数を取得して、TCPのスループットを学習する。本発明請求項5は、コンピュータを、請求項1または2に記載の通信装置の各手段として機能させるためのネットワーク管理プログラムである。本発明の、階層型協調フロー制御では、TCPフローが確立したときに、下層から上層に対して再帰的にスループットの情報を伝達することにより、上層のネットワークコンポーネントは下層のネットワークコンポーネントのスループットを考慮し、TCPフロー制御を行うことができる。さらに、各ネットワークコンポーネントはリクエストの接続特性とスループットを学習することにより、輻輳を回避しつつ、データセンタ全体の帯域利用率を向上させることができる。以下図面と共に、本発明の実施の形態を説明する。図2は、本発明の一実施の形態におけるネットワークコンポーネントの構成を示す。階層型協調フローを達成するために、本発明では、ネットワークコンポーネント通信装置の公知の基本的な機能を備えるNetworkComponentModule10に加え、新たに3つのモジュールとして、ResourceControlModule20、FeedbackModuleFM30、LearningModule40を有する。NCM10は、ネットワークコンポーネントの公知の基本的な機能を備えているモジュールである。LM40は、接続されているネットワークコンポーネントのスループットの予測情報や計測情報をメモリ等の記憶手段に保持している。RCM20は、LM40の情報を用いて、リクエストの転送先を決定する機能を持つ。FM30は、RCM20によってリクエストが転送された結果、転送先からのスループットのフィードバックを受ける機能をもつ。図3を用いて、これらの機能の動作例を説明する。ステップ1時間tにおいて、ネットワークコンポーネントAがユーザからのリクエストを受信する。このとき、ネットワークコンポーネントAは、RCM20を用いて直接接続されている下層のネットワークコンポーネントの中からリクエストの転送先をネットワークコンポーネントBに決定する。当該リクエストを受信したネットワークコンポーネントBは、リクエストを下層へと転送していき、TCPフローを確立したとする。ステップ2このとき、ネットワークコンポーネントBは、当該TCPフローを確立した際に変化したRTTの情報をリクエストの転送元のネットワークコンポーネントAに対して通知する。通知したRTTの情報は、ネットワークコンポーネントAのFM30を用いて、LM40内のメモリ等の記憶手段に格納され、学習が行われる図4参照。ステップ3次に、時間tと同一の状態遷移が時間taにて発生するとする。このとき、ネットワークコンポーネントAのRCM20は、LM30から時間tにおいてネットワークコンポーネントBにリクエストを転送し、フローを確立したときのRTTが急激に上昇し、輻輳が発生したことを知る。その結果、RCM20は、ネットワークコンポーネントBに転送するのではなく、ネットワークコンポーネントCに転送する。全てのネットワークコンポーネントは、TCPフロー制御を行った際に、自身のLM40のメモリ等の記憶手段にスループット情報を格納し、スループット情報を利用し、LM40に従って学習を行う。これらの学習を通して、全てのネットワークコンポーネントが協調して、輻輳の発生を防ぎ、帯域の利用率を向上させることができる。各機能を説明する前に、データセンタのモデルを示し、データセンタのモデルに従って各機能を説明することとする。<データセンタのモデル>全てのネットワークコンポーネントは、ユーザのリクエストによって確立されるTCPフローの制御を行う。本発明のデータセンタのモデルを以下に示す。図5は、本発明の一実施の形態におけるデータセンタのモデルの概要を示す。データセンタはネットワークコンポーネントの集合体である。ネットワークコンポーネント同士の接続関係は、階層構造になっており、階層はM階層となっている。下層からi階層1≦i≦Mにあるネットワークコンポーネントの数はNiで表す。i階層目にある、jの識別子を持つネットワークコンポーネントをNCijで現す。ネットワークコンポーネントNCijは下層ネットワークコンポーネントと接続されている。接続されている下層のネットワークコンポーネントの数をCijで表す。なお、は、ネットワークコンポーネントNCijの下層のネットワークコンポーネントを示す。iが大きければ大きいほど、上層を示す。時間tにおける、ネットワークコンポーネントNCijが保持しているTCPフローの数をFijで表す。さらに、時間tにおける、ネットワークコンポーネントNCijとネットワークコンポーネントの間のTCPフロー数をで表す。なお、セッション要求の到着過程到着率とサービス時間分布平均時間には特定の仮定をおかずに未知とする。<LearningModule40>LM40では、TCPフローのスループットの状態をメモリ等の記憶手段に記録し、RCM20に対して、直接接続されている下層のスループットの状態を提供する機能を持つ。LM40は強化学習の一種であるQlearningを用いて、TCPフローのスループットを学習する。Qlearningでは、学習エージェントが現在の状態を観測し、行動を通して得られる報酬が最大になるように、各状態における最適行動を学習する。今、時刻tでエージェントがいる状態をstとし、stでエージェントがとる行動をatとする。さらに、行動atにより得られる報酬をとする。状態stから状態st1に行動atを通して遷移したとき、stとatに対するQ値Qは以下のように更新される。α0<α≦1は学習率を示し、γ0<γ≦1は割引率を示している。αが大きい場合には最新の報酬を重視し、αが1の場合には、過去の報酬を全く考慮しない。γは遷移先の状態に対するQ値が現在のQ値に与える影響をし、γが0の時は遷移先の状態st1に対するQ値が現在の状態stのQ値に依存しない。QlearningをRCM20に適用するため、本発明では、状態st,行動at、そして報酬を定義する。上記のパラメータを階層構造に適したsij,aijに置き換える。sijは、時間tにおけるネットワークコンポーネントNCijのフロー数を表す。具体的にsijは以下のように定義する。式2の通り、LM40は、直接接続されている下層のネットワークコンポーネントとのTCPフロー数をメモリなどの記憶手段に格納する。このような管理構造にすることで、RCM20は、LM40から下層のネットワークコンポーネントの状態を把握し、TCPフローを確立することができる。<ResourceControlModule20>RCM20では、リクエストの転送先の決定、リクエストの転送及びTCPフローの確立を行う機能を有している。つまり、ネットワークコンポーネントNCijのRCM20が、リクエストの転送先のネットワークコンポーネントを決定する。なお、転送先の決定は、LM40から下層のスループットの予測情報を取得することによって行われる。転送先の決定は、転送先としてが選択される確率に従うものとする。はボルツマン分布を用いたソフトマックス法によって以下のように決定される文献KPawelzikJKohlmorgenandKRMullerAnnealedcompetitionofexpertsforasegmentationandclassificationofswitchingdynamicsNeuralComputationvol8pp2403561996参照。式3から、NCijのRCMは、行動の価値Qijの大きさに応じて、へ転送する確率を決定する。への転送が決定し、TCPフローが確立された際に、からスループットのフィードバックをもらい、に転送するという行動に対しての報酬値を計算する。報酬値は報酬関数によって、決定され、以下の式で表される。式4はTCPスループットの式を改変したものである文献MMathisJSemkeJMahdaviandTOttThemacroscopicbehavioroftheTCPcongestionavoidancealgorithmComputerCommunicationReviewvol27no3July1997参照。式4を用いることで、TCPフローの輻輳状態を推定することができる非特許文献2,3参照。式4におけるは、確立したに対するフローのRTTを示し、は、計測したの中で最も短いRTTを示す。つまり、を計測した際に、がを下回っていた場合、を、に置き換える。また、このとき、計測されたパケットロス率をLOSSとする。式4では、確立したフローのRTTが最も短いRTTに近く、パケットロス率LOSSが低い場合において、学習エージェントは高い報酬値を得ることができ、当該フローの受け入れ確率が向上する。もし、新たなフローを確立した際に輻輳が発生し、パケットロス率LOSSが高くなったり、RTTが急激に遅くなった場合、エージェントが獲得できる報酬値が小さくなり、新たなフローを受け入れる確率が減少する。最終的にエージェントは輻輳が発生しないように、リクエストの転送先を決定することができる。結果的に、3つのモジュールを持つネットワークコンポーネント同士は、輻輳が発生しないようにリクエストの転送先を決定し、フローを確立するため、データセンタ全体において帯域の利用率を考慮したTCPフローの制御が可能になる。<FeedbackModule>RCM20では、直接接続している下層のネットワークコンポーネントのフロー数を記録している。もし、フロー数が正確に観測できない場合、RCM20の学習の精度が低下し、正確な学習を行うことができない。FM20は、ネットワークコンポーネントNCijが、直接接続している下層のネットワークコンポーネントが保持しているフローの数を正確に判断するためのモジュールになっている。例えば、ネットワークコンポーネントはネットワークコンポーネントNln、1≦l≦Mと直接接続されている場合がある。このとき、ネットワークコンポーネントNCijは直接接続されているネットワークコンポーネントが保持しているフロー数を正確に判断できない。直接接続している下層のネットワークコンポーネントが保持しているフロー数を正確に判断するためには、以下の式を満たさなければならない。式5は、とのフロー数が一致していることを意味する。直接接続されている複数の上層のネットワークコンポーネントが存在しているときは、上層に対して、自身が保持しているフロー数を正確に伝えなければならない。FM30では、新たにフローが確立した際、自身と直接接続している上層のネットワークコンポーネントに対して、フロー数が変化したことを通知することで、上層のネットワークコンポーネントは、その下層のネットワークコンポーネントのフロー数を正確に把握できる。<シミュレーション>以下に、既存方法と本発明の効果の比較をシミュレーションによって評価する。想定環境として、単一のデータセンタに対するリクエスト数が膨大になり、確立されるフロー数が増加し、輻輳が多発する環境を考える。本シミュレーションでは、データセンタの階層数を3とし、各階層におけるネットワークコンポーネントの数を上層から、5,15,45と設定し、各階層の各ネットワークコンポーネントは、上層の3つのネットワークコンポーネントに対して接続されているとする。データセンタに到着するリクエストはポアソン過程に従うものとし、各リクエストによって確立されたフローの接続時間サービス時間は指数分布に従うものとする。各ネットワークコンポーネント間の最大同時接続フロー数は、上層から1000,100とし、最大同時接続数フロー数を上回るフローが確立されたおきは、輻輳が発生し、RTTとパケットロス率を指数的に増加させるものとする。なお、最大同時接続フロー数を下回るフロー数の場合は、フロー数の数に応じてRTTが線形増加するものとする。図6は、本発明と既存手法VLBとの比較を示す。同図において、最下層の各ネットワークコンポーネントにおける、リクエスト数に対して確立されたフローの平均を示す。図6から既存手法であるVLBを用いた場合は、最大同時接続フロー数をはるかに超えてしまうフローを確立し、輻輳が頻繁に発生していることが分かる。これに対し、本発明を用いた場合では、リクエスト数が増えれば増えるほど、リクエストの特徴量を自律的に学習することで、輻輳の発生を抑えていることがわかる。上記のように、本発明は、自律的にユーザの接続特性に応じて、TCPフローを制御する。本発明では、階層化構造になっている各ネットワークコンポーネントルータ、スイッチ、サーバに学習モジュールを組み込み、階層の上層に対して、TCPフローを確立した際に、当該TCPフローのスループットを伝達する。これにより、各ネットワークコンポーネントは、集約した下層のネットワークコンポーネントの情報を利用してフロー制御を行うことができるため、輻輳によるTCPの転送レートの低下を防ぎ、データセンタ全体の帯域利用率を考慮したフロー制御をデータセンタ全体で達成することができる。上記の実施の形態におけるネットワークコンポーネント通信装置の動作をプログラムとして構築し、通信装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。なお、本発明は上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更応用が可能である。"