従来の通信制御方法では、フローの制御を行う方式をいくつか実現しているものの、ネットワーク上に存在する複数のフローを、制御対象となる悪性フロー、または、利用を継続させる良性フロー、に分類する手法は、提案されていなかった。そのため、ネットワーク管理者の経験と勘で、試行錯誤的にフローの分類が行われていた。
そのため、ネットワーク管理者が推定した悪性フローと、実際の悪性フローとが乖離してしまうことがある。例えば、良性フローを悪性フローと推定し、過剰に良性フローを抑制することで、ユーザの利便性を著しく低下させたり、悪性フローを良性フローと推定し、本来取り締まるべき悪性フローを放置することで、輻輳を増長させることがあった。以下、従来の輻輳制御方法の問題点を具体的に説明する。
まず、シェーピング法(特許文献1)の手法では、所定期間の帯域利用量が大きいフローを制御する。しかし、この方法では、輻輳の有無に関係なく所定期間の帯域利用量だけで判断しているため、帯域を公平に利用しているユーザの良性フローまで、過剰に規制してしまう。よって、ユーザが使用可能な帯域に余剰があるにも関わらず必要以上に帯域を制御してしまい、ネットワークの利用効率が低下してしまう。図15は、所定量のシェーピング処理における問題点を示す説明図である。
次に、特許文献2は、制御するアプリケーションと、アプリケーションが使用するポート番号とを対応付け、そのポート番号を使用するフローを抑制する。しかし、アプリケーションはポート番号を都合のいいように変更するため、アプリケーションとポート番号が1対1で対応しておらず、幾つかのアプリケーションが同じポート番号を使用することもある。また、使用するポート番号を動的に変更し続けるアプリケーションもあるため、悪性フローを推定するためにポート番号とアプリケーションとを静的に対応付けても、有効でないこととなる。図16は、ポート番号を指定した帯域制御処理における問題点を示す説明図である。
さらに、特定のアプリケーションが悪性フローも良性フローも両方発生させることもある。悪性フローの通信を解析すると、DDoS(Distributed Denial of Service)などの明らかに不正なセキュリティ攻撃だけでなく、P2P(Peer to Peer)などのユーザが日常使用するアプリケーションとなっていることもある。そして、現在主流のP2Pを始め幾つかのアプリケーションでは、ユーザの意思とは無関係に帯域が空いているとその分だけ帯域を利用して通信を行うため、アプリケーションを起動するユーザに悪意が無くても、悪性フローを発生させてしまう。
そこで、本発明は、前記した問題を解決し、ユーザの通信を過剰に規制することなく、輻輳を制御することを主な目的とする。
前記課題を解決するために、本発明は、フローを中継する通信装置を有する制御対象ネットワークにおいて、発生した輻輳の要因となる悪性フローを制御する輻輳制御方法であって、コンピュータが、輻輳検知部と、通過装置特定部と、悪性フロー特定部と、通信制御部とを有し、前記輻輳検知部が、前記制御対象ネットワーク内で輻輳の発生した前記通信装置である輻輳装置を検知する輻輳検知手順と、前記通過装置特定部が、前記輻輳検知手順が検知した前記輻輳装置から、前記制御対象ネットワーク上のフローを中継する経路を示す経路表を参照してユーザ端末と前記輻輳装置を結ぶ経路上にある悪性フローの通過装置を特定する通過装置特定手順と、前記悪性フロー特定部が、前記通過装置特定手順が特定した前記通過装置に関するフロー計測結果をもとに、悪性フローを特定する悪性フロー特定手順と、前記通信制御部が、前記悪性フロー特定手順により特定された悪性フローの通信制御を前記通信装置に対して実行する通信制御手順と、を実行することを特徴とする。
これにより、公平に帯域を利用しているユーザまで規制してしまうことなく、悪性フローの特徴的なフロー情報から帯域制御対象を特定し、必要以上に帯域を制御してユーザのスループットを低下させずに最適な制御度合いで帯域制御を行うことができる。
本発明は、前記悪性フロー特定手順が複数の悪性フローを特定した場合、前記通信制御手順が制御する悪性フローの順序を特定する制御順序特定手順を、コンピュータがさらに実行することを特徴とする。
これにより、輻輳に影響を与えている度合いの高い悪性フローを優先的に制御することで、輻輳を回復するまでの時間が短縮化する。
本発明は、前記輻輳検知手順、前記通過装置特定手順、前記悪性フロー特定手順、および、前記通信制御手順のうち、いずれか1つの手順を実行するコンピュータが、他の手順を実行するコンピュータとは異なるコンピュータであることを特徴とする。
これにより、輻輳発生を判断するためのフロー情報が一箇所にまとまるため、広範囲の網の状況が一度に分かり、ネットワークの管理者にとって管理がしやすいという利点がある。
本発明は、前記輻輳検知手順、前記通過装置特定手順、前記悪性フロー特定手順、および、前記通信制御手順のうち、少なくとも1つの手順を実行するコンピュータが、前記通信装置であることを特徴とする。
これにより、輻輳発生を判断するためのフロー情報が分散されるため、部分的な障害に強いという利点がある。
本発明は、前記通過装置特定手順が、前記通信装置により装置IDがタグ付けされたパケットを参照し、パケット数の多いタグに対応する前記通信装置を前記通過装置と特定することを特徴とする。
これにより、大量にあるIPアドレスを検索するよりも簡単に発生源を特定することができる。また、輻輳発生網と発生源網のアドレス体系が異なる場合には、両網で共通の情報として使用できる。
本発明は、前記通過装置特定手順が、前記通信装置により装置アドレスがカプセリングされたパケットを参照し、パケット数の多い装置アドレスに対応する前記通信装置を前記通過装置と特定することを特徴とする。
これにより、通過装置特定部は、データベースなしで、直接通過装置を特定することができる。
本発明は、前記通過装置特定手順が、パケットの前記ユーザ端末IPアドレスを参照し、パケット数の多い前記ユーザ端末の経路上に位置する前記通信装置を前記通過装置と特定することを特徴とする。
これにより、輻輳装置に到着するまでの途中の通信装置で通過するパケットに処理をせずに通過装置を特定することができる。
本発明は、前記通過装置特定手順が、破棄されたパケットを溜めるオーバーフローキュー内のパケットをもとに前記通過装置を特定することを特徴とする。
これにより、通信装置は、通過装置を特定するためのカウントを行う場合に一部のパケットだけをカウントすればよいので、通信装置の処理量を減らすことができる。
本発明は、前記通過装置特定手順が、到着したパケットを溜めるコピーキュー内のパケットをもとに前記通過装置を特定することを特徴とする。
これにより、通信装置は、通過装置を特定するためのカウントを行う場合に一部のパケットだけをカウントすればよいので、通信装置の処理量を減らすことができる。
本発明は、前記通過装置特定手順が、到着したパケットのうち閾値超えのパケットを溜める閾値超えキュー内のパケットをもとに前記通過装置を特定することを特徴とする。
これにより、通信装置は、通過装置を特定するためのカウントを行う場合に一部のパケットだけをカウントすればよいので、通信装置の処理量を減らすことができる。
本発明は、前記通過装置特定手順が、LSP(Label Switched Path)両端の前記通信装置のフロー通信総量差分が所定値より大きいLSPの始点となる前記通信装置を前記通過装置と特定することを特徴とする。
これにより、多くの情報を収集統計することなく、少ない情報から簡単に輻輳、および、悪性フローの通過装置を特定することができる。
本発明は、前記通過装置特定手順が、(LSP内フロー通信総量/LSP内フロー数)の商が所定値より大きいLSPの始点となる前記通信装置を前記通過装置と特定することを特徴とする。
これにより、悪性フローを含むLSPを特定することができるため、より簡易な方法で悪性フローの通過箇所を正確に特定することができる。
本発明は、前記悪性フロー特定手順が、パラメータが閾値以上のフローを悪性フローと特定することを特徴とする。
これにより、悪性フロー特定部は、フローを計測した通信装置とのやり取りだけで悪性フローを特定できるため、悪性フローを短時間で特定することができる。
本発明は、前記悪性フロー特定手順が、パラメータが閾値かつ前記輻輳装置を通過するフローを悪性フローと特定することを特徴とする。
これにより、悪性フローの候補が輻輳の発生した通信装置を通過しているか否かを確認するため、明確に悪性フローを特定することができる。
本発明は、前記悪性フロー特定手順が、パラメータが閾値かつ前記輻輳装置のパケットと前記通過装置のパケットとを照合してアドレスが一致するフローを悪性フローと特定することを特徴とする。
これにより、悪性フローの候補が輻輳の発生した通信装置を通過しているか否かを確認するため、明確に悪性フローを特定することができる。
本発明は、前記コンピュータが、前記通信制御手順を実行するときに、前記制御順序特定手順が決定した順序に従って、輻輳が緩和されるまで、順番に悪性フローを通信制御することを特徴とする。
これにより、フローを順番に通信制御する過程で輻輳の発生した通信装置の輻輳状態を確認することで、輻輳原因のフローを特定できると同時に、無関係なフローの通信制御を避けることができる。
本発明は、前記輻輳緩和検出手順を実行する前に、前記悪性フロー特定手順が特定した複数の悪性フローを一括して通信制御することを特徴とする。
これにより、N個のフロー全てを所定量分絞ることで、素早く輻輳を緩和することができる。
本発明は、前記通信制御が、輻輳および悪性フローの情報をもとに算出したフローレートで通信制御を行うことを特徴とする。
これにより、輻輳状態を確認しながらフローレート決めることが可能なため、必要以上に通信制御することを防ぎ、ユーザのスループットを最大限高く保持しておくことができる。
本発明は、前記輻輳および悪性フローの情報が、前記通過装置から送信するモニタリングパケットをもとに収集することを特徴とする。
これにより、輻輳を緩和するのに適したフローレートX[bps]が分かり、その結果、輻輳緩和に必要な最低限の通信制御だけを行い悪性フローの帯域を絞りすぎてしまうのを避け、ユーザのスループットを最大限高く保持しておくことができる。
本発明は、前記輻輳および悪性フローの情報が、前記輻輳装置のパケット損失率とすることを特徴とする。
これにより、輻輳を緩和するのに適したフローレートが分かり、その結果、輻輳緩和に必要な最低限の通信制御だけを行い悪性フローの帯域を絞りすぎてしまうのを避け、ユーザのスループットを最大限高く保持しておくことができる。
本発明は、前記輻輳制御方法をコンピュータに実行させるための輻輳制御プログラムである。
これにより、公平に帯域を利用しているユーザまで規制してしまうことなく、悪性フローの特徴的なフロー情報から帯域制御対象を特定し、必要以上に帯域を制御してユーザのスループットを低下させずに最適な制御度合いで帯域制御を行うことができる。
本発明は、フローを中継する通信装置を有する制御対象ネットワークにおいて、発生した輻輳の要因となる悪性フローを制御する輻輳制御装置であって、前記制御対象ネットワーク内で輻輳の発生した前記通信装置である輻輳装置を検知する輻輳検知部と、前記輻輳検知部が検知した前記輻輳装置から、前記制御対象ネットワーク上のフローを中継する経路を示す経路表を参照してユーザ端末と前記輻輳装置を結ぶ経路上にある悪性フローの通過装置を特定する通過装置特定部と、前記通過装置特定部が特定した前記通過装置に関するフロー計測結果をもとに、悪性フローを特定する悪性フロー特定部と、前記悪性フロー特定部により特定された悪性フローの通信制御を前記通信装置に対して実行する通信制御部と、を有することを特徴とする。
これにより、公平に帯域を利用しているユーザまで規制してしまうことなく、悪性フローの特徴的なフロー情報から帯域制御対象を特定し、必要以上に帯域を制御してユーザのスループットを低下させずに最適な制御度合いで帯域制御を行うことができる。
本発明は、前記悪性フロー特定部が複数の悪性フローを特定した場合、前記通信制御部が制御する悪性フローの順序を特定する制御順序特定部を、さらに有することを特徴とする。
これにより、輻輳に影響を与えている度合いの高い悪性フローを優先的に制御することで、輻輳を回復するまでの時間が短縮化する。
本発明では、輻輳の検知結果を悪性フローの特定処理にフィードバックする。つまり、輻輳が起きてから、悪性フロー特定機能が、悪性フローの候補が通過すると推定される通信装置が収集したフローレートや持続時間、バーストサイズなどの悪性フローに共通する特徴的なフロー情報から帯域制御対象を特定する。
これにより、制御すべき対象に的を絞ることができ、公平に帯域を利用しているユーザまで通信を制限せずに済む。換言すると、ポート番号から制御すべきフローを特定したり、最適な制御度合いが分からず必要以上に帯域を制御してユーザのスループットが低下することを抑制できる。
以下に、本発明が適用される輻輳制御システムの一実施形態について、図面を参照して詳細に説明する。まず、本実施形態の輻輳制御システムの構成について、図1から図5を参照して説明する。
図1は、制御対象ネットワーク10を示す構成図である。制御対象ネットワーク10は、輻輳を制御する通信網であり、コアルータ14およびエッジルータ16を接続する。そして、ユーザ端末18は、通信装置12を介して通信を行う端末であり、悪性フローか良性フローを発生させる。
コアルータ14は、制御対象ネットワーク内の通信装置12であり、制御対象ネットワーク10の外部とは接続しない。輻輳の発生したコアルータ14を輻輳装置とする。そして、コアルータ14は、輻輳が発生したら、パケットに付されたエッジルータ16を識別するタグをカウントすることで、LSP(Label‐Switched Path)または回線単位のフロー計測を行う。
エッジルータ16は、制御対象ネットワーク内の通信装置12であり、制御対象ネットワーク10の外部との接続回線を有する。悪性フローが通過するエッジルータ16を通過装置とし、通過装置は悪性フローを発生させるユーザ端末18と輻輳装置とを結ぶ経路上に位置する。エッジルータ16は、自装置を識別するタグを通過するフローに付ける。
図2は、制御対象ネットワーク10で発生する輻輳を制御する輻輳制御装置1を示す構成図である。
輻輳制御装置1は、演算処理を行う際に用いられる記憶手段としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備えるコンピュータとして構成される。なお、メモリは、RAM(Random Access Memory)などにより構成される。演算処理は、CPU(Central Processing Unit)によって構成される演算処理装置が、メモリ上のプログラムを実行することで、実現される。
輻輳制御装置1は、輻輳検知部20と、通過装置特定部30と、悪性フロー特定部40と、通信制御部70とを有する。さらに、輻輳制御装置1は、制御順序特定部60を有していてもよい。まず、輻輳検知部20は、制御対象ネットワーク10からデータ収集して輻輳を検知する。次に、通過装置特定部30は、輻輳検知部20が推定した輻輳から、輻輳に関する悪性フローの通過装置を特定する。そして、悪性フロー特定部40は、通過装置特定部30が特定した通過装置から悪性フローを特定する。さらに、制御順序特定部60は、悪性フロー特定部40によって特定された悪性フローに対して通信制御の順序を決定する。そして、通信制御部70は、通信制御の指示に従い、悪性フローの通信制御を行う。以下、輻輳制御装置1の各構成要素を、具体的に説明する。
通過装置特定部30は、タグと網内通信装置12との対応データベースを持つ。データベースを参照して悪性フローを制御するための指示を出すべき悪性フロー特定部40に通知する。悪性フローの通過装置の候補を推定し、輻輳発生を関係のある悪性フロー特定部40に情報通知・指示を行う。
図3は、輻輳検知部20を示す構成図である。輻輳検出情報管理部22は、輻輳検出に必要なフロー情報を制御対象ネットワーク10のコアルータ14から定期的に収集して保持する。フロー情報は、例えば、コアルータ14から定期的に収集した入力パケット情報、および、破棄パケット情報である。通過装置分析部24は、輻輳検出情報管理部22の情報を基にして通過装置を特定するアルゴリズムを備え、収集した情報を基に悪性フローの通過装置の候補を特定する。
図3の通信装置管理部26は、通信装置12の装置ID(IDentifier)と悪性フロー特定部40との対応データベースを持ち、通過装置分析部24が分析した、悪性フローの通過装置の候補から、輻輳発生を通知すべき悪性フロー特定部40を決定する。輻輳発生通知部28は、通信装置管理部26が決定した悪性フロー特定部40に輻輳発生を通知する。制御インターフェース29は、外部と情報を送受信するための制御インターフェースである。
なお、輻輳発生通知部28は、悪性フロー特定部40の他に、経路計算手段にも、輻輳発生を通知してもよい。経路計算手段は、ルーティングプロトコルなどを動作させて、通信装置12がフローを中継する経路を示す経路表(ルーティングテーブル)を作成する。経路計算手段は、輻輳発生の通知を受けることにより、輻輳装置や輻輳が発生したネットワークを通過しないように、経路を計算する。経路計算手段は、輻輳が発生した網内にあってもよいし、別の事業者網にあってもよい。
図4は、悪性フロー特定部40を示す構成図である。トリガ制御部42は、悪性フローの通過装置の候補に関する情報の通知を通過装置特定部30から受け、フロー計測開始トリガをエッジルータヘ通知する。フロー情報管理部44は、エッジルータ16から収集したフロー毎のパケットカウント情報を保持する。悪性フロー分析部46は、フロー毎のパケットカウント情報を基にして悪性フローを特定するアルゴリズムを備え、収集したフロー情報から悪性フローを特定する。
図4の分析アルゴリズム管理部48は、悪性フロー分析部46が悪性フローを特定する場合に使用するアルゴリズムを保持する。悪性フロー通知部50は、特定した悪性フローを制御順序特定部60、または、通信制御部70に通知する。制御指示部52は、悪性フロー制御を通信制御部70に指示する。なお、悪性フローが複数検出されたときには、その悪性フローの制御順序は、制御順序分析部64が決定した順序に従ってもよい。制御インターフェース54は、外部と情報を送受信するための制御インターフェースである。
図5は、制御順序特定部60を示す構成図である。悪性フロー情報管理部62は、悪性フロー特定部40から収集した悪性フロー情報を保持する。制御順序分析部64は、悪性フロー情報管理部62の悪性フロー情報を基にして、悪性フローを制御する順番と制御度合いを決定するアルゴリズムを備える。制御インターフェース68は、外部と情報を送受信するための制御インターフェースである。
図5の輻輳状態確認部66は、輻輳検知部20から輻輳状態の情報を収集する。輻輳状態の情報は、悪性フローの通信制御を行うか否か、行う場合には制御度合いなどを決定するために参照される。輻輳状況を確認して引き続き通信制御が必要だと判断した場合には、悪性フロー特定部40が次の悪性フローを通信制御するよう指示する。これにより、最適な制御度合いが分からず必要以上に帯域を制御してユーザのスループットが低下することを抑制する。
以上説明した輻輳制御装置1により行われる輻輳制御処理を、図6のフローチャートに示す。
まず、ユーザ端末18と制御対象ネットワーク10との間にあるエッジルータ16は、通過するフローに自装置を識別するタグを書き込む(S11)。タグの実現例としては、IP(Internet Protocol)ヘッダのToS(Type of Service)フィールドでもいいし、IPv6ヘッダのフローラベル、またはMPLS(Multi-Protocol Label Switching)ラベルなどがある。
次に、輻輳検知部20は、制御対象ネットワーク10内のコアルータ14からフロー情報を収集して、輻輳が発生しているか否かを定期的にチェックする(S12)。輻輳発生をチェックする方法としては、通信装置12が持つフロー情報を収集してパケット損失率などを計算して輻輳か否かを判断するパッシブ方式、pingなどの試験パケットを網内に流し、戻ってきた時の遅延や損失から輻輳か否かを判断するアクティブ方式、などがある。そして、輻輳検知部20は、制御対象ネットワーク10内で輻輳発生(S13)を検出すると(S14)、検出情報を通過装置特定部30に通知する(S15)。
そして、通過装置特定部30は、通知を受け、悪性フローの通過装置を特定するために、通過装置の特定情報を取得する(S16)。通過装置の特定情報は、例えば、輻輳装置が保持するパケットの装置IDタグカウント情報である。
さらに、通過装置特定部30は、取得した通過装置の特定情報をもとに、通信装置管理部26を参照して、悪性フローの通過装置の候補を特定する(S17)。なお、通信装置12の数が多いようなネットワーク構成では、悪性フロー特定部40を複数設置し、各悪性フロー特定部40に担当する通信装置12を割り当てるような分散処理の構成をとることとしてもよい。そのときには、輻輳制御装置1は通信装置12の装置IDと、担当する悪性フロー特定部40との対応をデータベースに格納する。そして、通過装置特定部30は、S17で特定した通過装置に対応する悪性フロー特定部40を、データベースから取得する。データベースからの取得は、悪性フロー特定部40と通信装置12の数が多い場合などは、最終的に悪性フローを特定するためのフロー計測を行う通過装置までさかのぼるために、数回にわたって絞り込みを行ってもよい。
そして、通過装置特定部30は、S17で特定した悪性フロー特定部40に、輻輳発生と、該当通信装置12の情報を通知する(S18)。そして、悪性フロー特定部40は、通知を受け、悪性フローの通過装置であるエッジルータ16に、悪性フローを特定するためのフロー計測を開始させるトリガを出す(S19)。さらに、エッジルータ16は、トリガを受けてフロー計測を開始し、所定時間のフロー計測結果を悪性フロー特定部40に渡す(S20)。そして、悪性フロー特定部40は、フロー計測結果を受け取り、受け取った情報から悪性フローを特定する(S21)。
さらに、悪性フロー特定部40は、悪性フローを特定したら、そのフローの特徴的な情報(悪性フローのレートや持続時間、アドレスなど)を制御順序特定部60に通知して(S22)、制御する順番の決定を依頼する。そして、制御順序特定部60は、通知された悪性フローについて、制御する順番を決める(S23)。悪性フローを制御する順番は、例えば、悪性フロー特定部40から受け取ったフロー情報でサイズが大きいフロー順、辞書列順(アドレスの番号の若い順、情報が到着した時間順など)、ラウンドロビンのアルゴリズムによって算出された順、制御順序特定部60が収集した網情報から決める順、が挙げられる。図7は、輻輳に対して順番に行う通信制御処理を示す説明図である。
そして、悪性フロー特定部40は、制御順序特定部60が決めた順番に従って、通信制御部70に特定した悪性フローを通信制御するように指示する(S24)。そして、通信制御部70は、悪性フローの通信(帯域など)を制御する(S25)。
以下、悪性フローの通過装置の特定処理(S16、S17)の方式を具体的に説明する。輻輳制御装置1は、以下の方式のいずれかの方式により、通過装置を特定する。
方式1−Aは、タグ付けされたパケットから通過装置を特定する手法である。つまり、輻輳装置であるコアルータ14は、輻輳発生後からX時間の間に到着したパケット全てのタグを参照してタグ数をカウントする。通過装置特定部30は、輻輳装置がカウントしたタグ数の情報を受け取り、数が多いタグに対応する通信装置12を通過装置と特定し、保持しているタグ値と通信装置12のアドレスとのデータベースを参照することで、通過装置を特定する(図8参照)。
通信装置12がタグを付与する場合、タグは全パケットに書き込んでもいいし、サイズの大きいフローのパケットにだけ書き込んでもよい。タグには通信装置12に付属する通信制御部70が識別できる情報を書き込んでもよい。本方式を段階的に行うことで最終的に通過装置を特定してもよい。タグの例としては、MPLS網でのラベル、IPv4ヘッダのToSフィールド、IPv6ヘッダのフローラベルなどがある。
方式1−Bは、カプセリングされたパケットから通過装置を特定する手法である。つまり、通信装置12を通過するフローにその通信装置12のアドレスをユーザ端末IPアドレスの上にカプセリングし、輻輳装置において、輻輳発生後からX時間の間に到着したパケット全てのカプセリングしたアドレスを参照してアドレス毎にカウントし、通過装置特定部30は、輻輳装置がカウントしたアドレス数の情報を受け取り、数が多いアドレスに対応する通信装置12を通過装置と特定する。
通信装置12がカプセリングを行う場合、カプセリングは全パケットに行ってもいいし、サイズの大きいフローのパケットにだけ行ってもよい。カプセリングするアドレスは通信装置12に付属する通信制御部70のアドレスでもよい。カプセリングの例としては、MPLS網でのラベル、IPoverIP等がある。
方式1−Cは、パケットのユーザ端末IPアドレスから通過装置を特定する手法である。つまり、輻輳装置において、輻輳発生後からX時間の間に到着したパケット全てのユーザ端末IPアドレスを参照してIPアドレス毎にカウントし、通過装置特定部30は、輻輳装置がカウントしたIPアドレス数の情報を受け取り、経路計算手段が保持するルーティングデータベースを参照することで、数が多いIPアドレスから輻輳装置までの経路を確認し、予め保持している、通信制御部70を有する通信装置12のデータベースと比較することで、その経路上にある通過装置を特定する。
方式1−Dは、オーバーフローキュー内のパケットから通過装置を特定する手法である。つまり、輻輳装置において輻輳発生後X時間の間に到着したパケットを全て参照する代わりに、破棄されたパケットをオーバーフローキューに溜める手段を通信装置12に持たせ、輻輳が起きた通信装置12が、そのオーバーフローキューに格納されたパケットを対象として、方式1−A〜方式1−Cのいずれかの方法によって通過装置を特定する(図9参照)。
方式1−Eは、コピーキュー内のパケットから通過装置を特定する手法である。つまり、輻輳装置において輻輳発生後X時間の間に到着したパケットを全て参照する代わりに、キューに格納されている直近X時間内のパケットをコピーキューにコピーする手段を通信装置12に持たせ、輻輳が起きた通信装置12が、そのコピーキューに格納されたパケットを対象として、方式1−A〜方式1−Cのいずれかの方法によって通過装置を特定する(図9参照)。
方式1−Fは、閾値超えキュー内のパケットから通過装置を特定する手法である。つまり、輻輳装置において輻輳発生後X時間の間に到着したパケットを全て参照する代わりに、通信装置12のキューに閾値を設けて、閾値を超えるパケットがキューに溜まった後にキューに到着したパケットを閾値超えキューにコピーする手段を通信装置12に持たせ、輻輳が起きた通信装置12が、その閾値超えキューに格納されたパケットのアドレスを対象として、方式1−A〜方式1−Cのいずれかの方法によって通過装置を特定する(図9参照)。
なお、方式1−A〜方式1−Fでは、参照した全アドレスに対応する通信装置12を通過装置の対象としてもよいし、上位X個を通過装置の対象としてもよい。
ここで、フローがLSP内を通過するようなコネクション型のネットワークにおいて、通過するフローが悪性フローであるか否かを判定するための特徴について説明する。なお、コネクション型のネットワークには、ATM(Asynchronous Transfer Mode)網や、MPLS網などが挙げられる。LSPを流れる悪性フローの特徴として、全体のフロー数における悪性フロー数は少ないが、悪性フローの帯域占有率は大きいことが挙げられる。
キューを通過したパケットは、そのアドレス毎にあて先に向かうLSPに振り分けられる。ある所定時間のLSPを見ると、サイズが大きく悪性フローになりやすいフローを多く収容するLSP(図10(a)参照)、少数のサイズが大きいフローと数多くの通常フローとを収容するLSP(図10(b)参照)、通常サイズのフローを収容するLSP(図10(c)参照)など、様々なパターンのLSPが存在する。
方式1−Gでは、以下の特徴を活用する。パケットがキューに入りきらないなどして輻輳が起きると、パケットの優先度が全て等しい場合にはランダムにパケットが破棄される為、フローサイズが大きい程破棄されるパケット数が増える。そこで、破棄されたパケットの統計を取ればサイズが大きいフローを特定することができる。
そこで、方式1−Gは、LSP両端の通信装置12のフローの通信総量の差分が所定値より大きいLSPから通過装置を特定する手法である。つまり、制御対象ネットワーク10がコネクション型網の場合、通過装置特定部30が、予め保持している網のLSPとその始終点通信装置データベースとを参考にして、該当網のLSP両端の始終点通信装置12が持つLSP流入フローの通信総量とLSP流出フローの通信総量を収集してその差分を計算することで網内で損失したフローの通信総量を求め、値が閾値以上の場合にそのLSPが経由する通信装置12で輻輳が起きたと判断し、そのLSPの始点通信装置12を通過装置と特定する(図11参照)。
方式1−Hでは、以下の特徴を活用する。ある所定時間でノードから出力されるパケット数には限りがある為、輻輳原因となるフローを収容したLSPは、平均フローサイズが大きい。なお、平均フローサイズは、(フローの通信総量/フロー数)の商である。
そこで、方式1−Hは、平均フローサイズが所定値より大きいLSPから通過装置を特定する手法である。つまり、制御対象ネットワーク10がコネクション型網の場合、通過装置特定部30が、予め保持している網のLSPとその経路情報のデータベースを参考にして、輻輳が起きた通信装置12を通過するLSPを通るフローの通信総量とフロー数の情報とを、輻輳が起きた通信装置12またはLSP端の通信装置12から収集し、平均フローサイズが大きいLSPの始点通信装置12を通過装置と特定する(図12参照)。
なお、方式1−G、方式1−Hにおいて、上位X本の始点を通過装置としてもよいし、閾値以上のLSP全ての始点を通過装置としてもよい。さらに、方式1−Gまたは方式1−Hと、方式1−A〜方式1−Aのいずれかの方式とを併用して、最終的に通過装置を特定してもよい。
以下、悪性フローの特定処理(S21)の方式を具体的に説明する。輻輳制御装置1は、以下の方式のいずれかの方式により、悪性フローを特定する。
方式2−Aは、パラメータが閾値以上のフローを悪性フローと特定する手法である。つまり、悪性フロー特定部40は、悪性フローの通過装置の候補において測定されたフロー情報の中から、予め決めたパラメータが閾値以上のフロー全て、または閾値以上のフローの上位X個を、悪性フローと特定する。
方式2−Bは、パラメータが閾値かつ輻輳装置を通過するフローを悪性フローと特定する手法である。つまり、悪性フロー特定部40は、悪性フローの通過装置の候補において測定したフロー情報の中から、予め決めたパラメータが閾値以上のフロー全て、または閾値以上のフローの上位X個を選択し、該当フローの経路情報を、ルーティングデータベースを持つ経路計算部が持つ経路情報を参照して、該当フローが輻輳装置を通過しているかを確認して、その結果から、予め決めたパラメータが閾値以上でかつ輻輳装置を通過しているフローを、悪性フローと特定する。
方式2−Bでは、例えば、悪性フローの通過装置の候補において測定したフロー情報を悪性フロー特定部40が収集し、その情報の中から、予め決めたパラメータが閾値データベースに保持している閾値よりも大きいフロー全て、または上位X個を選択し、ルーティングデータベースを持つ経路計算部が持つ経路情報を参照して、該当フローが輻輳装置を通過しているかを確認して、その結果から、予め決めたパラメータが閾値以上でかつ輻輳装置を通過しているフローを、悪性フローと特定する。
方式2−Cは、パラメータが閾値かつパケットのアドレスが一致するフローを悪性フローと特定する手法である。つまり、悪性フロー特定部40は、輻輳発生の前後に輻輳装置のキューに溜まっていたパケットの情報を保持する手段からそのパケット情報を受け取り、その情報と、悪性フローの通過装置の候補から収集したフロー情報の中で予め決めたパラメータが閾値データベースに保持している閾値よりも大きいフロー全て、または上位X個のフローの情報とを照合する。
そして、方式2−Cでは、輻輳装置のパケット情報に含まれるパケットのアドレスと、通過装置の候補が計測したフロー情報に含まれるパケットのアドレスが一致した場合、悪性フローの候補が輻輳装置を通過していると判断し、予め決めたパラメータが閾値データベースに保持している閾値よりも大きく、かつ輻輳装置を通過しているフローを、悪性フローと特定する。
なお、方式2−A〜方式2−Cにおいて、パラメータの例としては、あるX分間の間に到着するパケット数をサンプリング率fでカウントした値がある。ある所定時間の間にエッジルータ16に到着するパケット数が多いフローは、帯域占有率が大きいと確率論的に推定して、パケットカウント値が閾値以上のフローを悪性フローと特定する。パラメータの他の例としては、バーストサイズや持続時間などがある。
以下、悪性フローの制御処理(S25)の方式を具体的に説明する。輻輳制御装置1は、以下の方式のいずれかの方式により、悪性フローを制御する。
方式3−Aは、通信制御部70がN個の悪性フローを順番に制御する手法である。つまり、特定したN個の悪性フローを通信制御する場合に、制御順序特定部60が、N個の悪性フローの情報を悪性フロー特定部40から受け取り、通信制御する順番を決めて、その順番に従って悪性フロー特定部40に指示を出し、悪性フロー特定部40が対象の通信制御部70に指示を出し、通信制御部70が通信制御を行う。制御順序特定部60はその間に輻輳検知部20から輻輳状況に関する情報を受け取り、輻輳が緩和されるまで順番に通信制御を指示する。輻輳が緩和されなければ次の順番の通信制御部70に対応する悪性フロー特定部40に指示を出す。
方式3−Bは、通信制御部70がN個の悪性フローを一括して制御した後、順番に制御する手法である。つまり、特定したN個の悪性フローを通信制御する場合に、制御順序特定部60が、N個の悪性フローを通信制御する順番を決めて、始めにN個のフロー全てを所定量通信制御して、その後に方式3−Aによって悪性フロー特定部40に指示を出す。
方式3−Cは、通信制御部70が輻輳緩和されるまで、フローレートの算出とそのフローレートでの制御を繰り返す手法である。つまり、特定したN個の悪性フローを通信制御する場合に、制御順序特定部60は、輻輳検知部20が確認する輻輳状態の情報を制御順序特定部60が参照して、その情報と、悪性フロー特定部40から受け取る悪性フロー情報とをパラメータとして、フローレート計算アルゴリズムを用いて各悪性フローの制御後のフローレートを決定し、そのフローレートで通信制御するように悪性フロー特定部40に指示を出し、そこからさらに悪性フロー特定部40は通信制御部70に指示を出す。
具体的には、通信制御部70が通信制御を行う間に、輻輳状態確認部66が輻輳装置から取得した最新の輻輳状態を確認しながら、輻輳状態が解消するまで、順番に通信制御の指示を通信制御部70に出す。なお、フローレート計算アルゴリズムは、例えば、以下の数式1である。数式1の変数について、Rがフローレート[bps]、Dが受信したデータ量[bit]、Tがカウント時間[秒]である。
R=D/T…(数式1)
方式3−Dは、通信制御部70がモニタリングパケットで輻輳状態を監視し、輻輳状態に適したフローレートで制御する手法である。つまり、特定したN個の悪性フローを通信制御する場合に、悪性フローの通過装置からpingなどのモニタリングパケットを飛ばして、悪性フロー特定部40が網の輻輳状態を監視しながら輻輳緩和に適したフローレートを前記フローレート計算アルゴリズムを用いて計算して、悪性フローを通信制御する。
方式3−Eは、通信制御部70がパケット損失率から算出したフローレートで制御する手法である。つまり、特定したN個の悪性フローを通信制御する場合に、輻輳検知部20が定期的に測定する輻輳装置のパケット損失率の情報を制御順序特定部60が参照し、そこから前記フローレート計算アルゴリズムを用いて制御すべきフローレートX[bps]を算出することで、適切なフローレートで悪性フローを通信制御する。
なお、方式3−A〜方式3−Eにおいて、複数の通信制御が並列に行われてもよいし、制御順序特定部60が決めた順番に従って行われてもよい。
以上説明した本発明は、以下のようにその趣旨を逸脱しない範囲で広く変形実施することができる。
例えば、フロー計測(S20)は、トリガの発行(S19)を契機に行うこととしたが、トリガの有無に関わらず、バックグラウンド処理として、事前にフロー計測を行っていてもよい。これにより、フロー計測(S20)に関するレスポンスが早くなり、輻輳制御によるネットワークの復旧にかかる時間を短縮できる。
また、悪性フローを制御するための順序決定処理(S22、S23)は、省略してもよい。省略することが必要な一例として、悪性フローが1つしか見つからない場合、悪性フローを1つずつ順に制御するだけの復旧時間もとれないほどの緊急の普及を要する場合が挙げられる。そして、順序決定を省略したときには、複数の悪性フローに対して一斉に通信制御する(S24)。これにより、輻輳制御によるネットワークの復旧にかかる時間を短縮できる。
さらに、図2の輻輳制御装置1は、各構成要素を1台の筐体に収容することとしたが、この構成はあくまで一例にすぎず、輻輳制御装置1を構成する筐体の台数を複数として構成し、各構成要素を分散して配置してもよい。そして、輻輳制御装置1の各構成要素は、同じネットワーク内にあっても、異なるネットワークにあってもいい。ネットワークが異なる場合、それらのネットワークは同一の事業者でも異なる事業者でもいい。異なる事業者のネットワークに各機能がある場合、その間にアドレス変換機能を持つエージェントがある。これにより、複数の輻輳制御装置1のCPUがそれぞれ演算を行うので、負荷分散を実現することができる。
また、輻輳制御装置1の各構成要素と、別の機能を有する装置とを同じ筐体に収容してもよい。例えば、通信制御部70を通信装置12に内蔵し(図17参照)、通信制御処理(S24)のメッセージパッシングを、筐体外のネットワーク回線ではなく筐体内の内部バス上で実現したり、通信制御部70に加えて制御順序特定部60も、通信装置12に内蔵するようにしてもよい(図18参照)。同様に、悪性フロー特定部40をエッジルータ16に内蔵し、フロー計測(S19、S20)のメッセージパッシングを、筐体外のネットワーク回線ではなく筐体内の内部バス上で実現する。これにより、内部バスの高速通信およびネットワーク回線の負荷回避を実現できる。
なお、本明細書では、輻輳制御装置1が、コアルータで14もなくエッジルータ16でもない、第三の装置として、ネットワーク上に存在する図1のような構成を集中型とし、輻輳制御装置の少なくとも1つの構成要素が、通信装置(コアルータ14またはエッジルータ16)に内蔵されている図17または図18のような構成を分散型とする。
さらに、輻輳制御装置1の各構成要素は、CPUが各構成要素の専用装置に記憶されたプログラムを実行することで実現されるようになっていてもよいし、通信装置12の機能ブロックに記憶されたプログラムを実行することで実現されるようになっていてもよい。
また、輻輳制御装置1の各構成要素は、プロセスを複数起動するなどして、複数存在することとしてもよい。複数の構成要素それぞれに、担当する通信装置12を割り当てる。これにより、通信装置12が多いときでも、複数の構成要素間でのデータ並列処理が実現でき、輻輳を抑制するのに要する時間を短縮化できるとともに、処理相手として通信を行う通信装置数が減るため、装置数に対するスケーラビリティが上がり、管理がしやすい、という利点がある。
ここで、輻輳制御装置1の各構成要素と、担当する通信装置12との対応情報は、動的に作成してもよいし、静的に作成することとしてもよい。動的に作成する一例としては、同一機能を有する複数の構成要素のうち、他の構成要素よりも現在の計算負荷が小さい構成要素に、優先的に通信装置12を割り当てる方式が挙げられる。一方、静的に作成する一例としては、管理者があらかじめ作成しておいた構成要素と通信装置12との対応情報を格納するデータベースを参照する方式が挙げられる。
さらに、制御対象ネットワーク10の形式(回線種別や通信プロトコルなど)は、特定のものに限定されることはない。例えば、制御対象ネットワーク10は、TDM(Time Division Multiplexing)やWDM(Wavelength Division Multiplexing)などの回線交換ネットワーク、またはIP(Internet Protocol)やイーサネット(登録商標)、IPのパケットにラベルをつけて転送するMPLSのネットワークとしてもよい。各通信装置同士はそのノードが存在するネットワークレイヤよりも相対的に下位に位置する下位レイヤのパスを設定することで提供される論理パスで接続される。この通信装置12は、例えば、MPLS網のMPLSルータでも、パケット網のルータでもよい。