(57)【要約】【課題】攻撃帯域の大きさに対するセキュリティ装置の必要容量を低減する。【解決手段】通信ネットワーク内の転送装置１０および振分装置２０を制御するコントローラ３０は、攻撃が検知された場合、セキュリティ装置５２へ攻撃対象宛のトラヒックを転送する振分装置２０に対し、攻撃対象宛のトラヒックを所定帯域ごとのフローに分割し、分割したフローを所定時間ごとにセキュリティ装置５２に転送するよう指示する。そして、コントローラ３０は、セキュリティ装置５２において廃棄した攻撃パケットのフローの情報を取得し、各転送装置１０に攻撃パケットの廃棄を指示する。【選択図】図１
2019134234.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上でトラヒックの転送を行う転送装置と、転送されたトラヒックの攻撃パケットを廃棄するセキュリティ装置とを備える通信システムにおいて、前記ネットワーク内の装置の制御を行うコントローラであって、
攻撃が検知された場合、前記セキュリティ装置へ攻撃対象宛のトラヒックを転送する振分装置に対し、前記攻撃対象宛のトラヒックを所定帯域ごとのフローに分割し、前記分割したフローを所定時間ごとに前記セキュリティ装置に転送するよう指示する振分制御部と、
前記セキュリティ装置において廃棄した攻撃パケットのフローの情報を取得し、各転送装置に前記攻撃パケットの廃棄を指示する廃棄制御部と、
を備えることを特徴とするコントローラ。
【請求項２】
前記振分制御部は、さらに、
前記セキュリティ装置において前記振分装置から転送された各フローの処理を完了するまで時間を推定し、前記推定した時間が所定の閾値を超えると判定した場合、前記セキュリティ装置の増設を指示する、
ことを特徴とする請求項１に記載のコントローラ。
【請求項３】
前記振分制御部は、さらに、
前記振分装置に、同じ攻撃対象宛のトラヒックに含まれるフローのうち、通信量の大きいフローほど優先的に、前記セキュリティ装置へ振り分けるよう指示する、
ことを特徴とする請求項１に記載のコントローラ。
【請求項４】
ネットワーク上でトラヒックの転送を行う転送装置と、転送されたトラヒックの攻撃パケットを廃棄するセキュリティ装置とを備える通信システムであって、
前記ネットワーク内の装置の制御を行うコントローラは、
攻撃が検知された場合、前記セキュリティ装置へ攻撃対象宛のトラヒックを転送する振分装置に、前記攻撃対象宛のトラヒックを所定帯域ごとのフローに分割し、前記分割したフローを所定時間ごとに前記セキュリティ装置に転送するよう指示する振分制御部と、
前記セキュリティ装置において廃棄した攻撃パケットのフローの情報を取得し、各転送装置に前記攻撃パケットの廃棄を指示する廃棄制御部とを備え、
前記振分装置は、
前記コントローラの指示に従い、前記攻撃対象宛のトラヒックを所定帯域ごとのフローに分割し、前記分割したフローを所定時間ごとに前記セキュリティ装置に転送するトラヒック振分部を備え、
前記転送装置は、
前記コントローラの指示に従い、前記攻撃パケットの廃棄を行うパケット廃棄部を備えることを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラおよび通信システムに関する。
【背景技術】
【０００２】
従来、DDoS攻撃（Distributed  Denial  of  Service  attack）対策として、DDoS攻撃の攻撃対象宛の全トラヒックをDDoS緩和装置（セキュリティ装置）へ引き込み、セキュリティ装置において攻撃パケットを廃棄し、非攻撃パケットを通過させる技術がある（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Arbor  Networks、“Arbor  Networks  TMS”、［平成30年1月15日検索］、インターネット＜URL：http://jp.arbornetworks.com/wp-content/uploads/2016/06/ds_tms_jp2016-030516AP-number-updated.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の従来技術では、攻撃対象宛の全トラヒックをセキュリティ装置に引き込むため、帯域の大きい攻撃に対応するためには大容量のセキュリティ装置が必要になる。そこで、本発明は、前記した問題を解決し、攻撃帯域の大きさに対するセキュリティ装置の必要容量を低減することを課題とする。
【課題を解決するための手段】
【０００５】
前記した課題を解決するため、本発明は、ネットワーク上でトラヒックの転送を行う転送装置と、転送されたトラヒックの攻撃パケットを廃棄するセキュリティ装置を備える通信システムにおいて、前記ネットワーク内の装置の制御を行うコントローラであって、攻撃が検知された場合、前記セキュリティ装置へ攻撃対象宛のトラヒックを転送する振分装置に対し、前記攻撃対象宛のトラヒックを所定帯域ごとのフローに分割し、前記分割したフローを所定時間ごとに前記セキュリティ装置に転送するよう指示する振分制御部と、前記セキュリティ装置において廃棄した攻撃パケットのフローの情報を取得し、各転送装置に前記攻撃パケットの廃棄を指示する廃棄制御部と、を備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、攻撃帯域の大きさに対するセキュリティ装置の必要容量を低減することができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、通信システムの構成例および動作例を説明するための図である。
【図２】図２は、通信システムの構成例を示す図である。
【図３】図３は、通信システムの処理手順の例の概要を示すフローチャートである。
【図４】図４は、通信システムの処理手順の例の詳細を示すシーケンス図である。
【図５】図５は、図２の振分制御部における振分制御の処理手順の例を示すフローチャートである。
【図６】図６は、図２の振分制御部による各フローの振分の例を説明するための図である。
【図７】図７は、図２の振分制御部による各フローの優先順位の設定の処理手順の例を示すフローチャートである。
【図８】図８は、図２の振分制御部による各フローの振分の処理手順の例を示すフローチャートである。
【図９】図９は、図２の振分制御部によるセキュリティ装置のスケールアウトの処理手順の例を示すフローチャートである。
【図１０】図１０は、制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態について説明する。本発明は、以下に説明する実施形態に限定されない。
【０００９】
［構成例と動作例］
まず、図１を用いて、本実施形態の通信システムの構成例および動作例を説明する。例えば、通信システムは、転送装置１０と、振分装置２０と、コントローラ３０と、トラヒック監視装置４０と、セキュリティ装置（DDoS緩和装置）５２とを備える。
【００１０】
転送装置１０は、トラヒックの転送制御を行う。振分装置２０は、引き込まれた攻撃トラヒック（攻撃対象宛のトラヒック）をフロー単位で分割し、セキュリティ装置５２に転送する。なお、転送装置１０および振分装置２０は、例えば、ルータにより実現される。また、以下の説明において、フローとは、5-tuple情報が同じである一連のパケット群であるものとする。
【００１１】
コントローラ３０は、転送装置１０および振分装置２０の制御を行う。例えば、コントローラ３０は、各転送装置１０に対し経路広告を行い、振分装置２０へ攻撃トラヒックを引き込むようにする。また、コントローラ３０は、振分装置２０に対し攻撃トラヒックを所定帯域ずつのフロー群に分割し、所定時間ごとにセキュリティ装置５２へ転送するよう指示する（振分指示を行う）。また、コントローラ３０は、各転送装置１０に対し、攻撃トラヒックを廃棄するよう指示する。
【００１２】
トラヒック監視装置４０は、通信システムを流れるトラヒックを監視し、攻撃トラヒックを検知すると、攻撃トラヒックのトラヒック情報（例えば、5-tuple情報）をコントローラ３０に通知する。
【００１３】
セキュリティ装置５２は、振分装置２０から転送されたフローの攻撃パケットを廃棄し、攻撃パケット以外のパケットを通過させる。このセキュリティ装置５２は、例えば、仮想化基盤サーバ５０（図２参照）により構築される仮想化セキュリティ装置である。
【００１４】
上記の通信システムにおいて、トラヒック監視装置４０が、攻撃トラヒックを検知すると、攻撃トラヒックのトラヒック情報をコントローラ３０に通知する。その後、コントローラ３０は各転送装置１０への経路広告により、攻撃トラヒックを振分装置２０に引き込むようにする。そして、振分装置２０は、コントローラ３０からの指示に基づき、攻撃トラヒックの振分を実行する。
【００１５】
つまり、振分装置２０は、コントローラ３０からの指示に基づき、攻撃対象宛のトラヒック（攻撃トラヒック）を所定帯域ずつのフロー群に分割し、所定時間ごとにセキュリティ装置５２へ転送する（図１の（１））。その後、セキュリティ装置５２は、転送された各フローの攻撃パケットについては廃棄し、攻撃パケット以外については通過させる。
【００１６】
ここで、コントローラ３０は、セキュリティ装置５２における全フローの処理完了見込み時間を計算する。そして、コントローラ３０は、セキュリティ装置５２における全フローの処理完了見込み時間が所定の閾値を超えた場合、セキュリティ装置５２をスケールアウト（増設）するよう指示する（（２））。
【００１７】
例えば、初期の状態で、通信システムは、セキュリティ装置５２を１台用意しておき、コントローラ３０は、当該セキュリティ装置５２における全フローの処理完了見込み時間が所定の閾値を超えると判断した場合、セキュリティ装置５２のスケールアウト（増設）を指示する。つまり、通信システムは、攻撃トラヒックの帯域が大きかった場合、これに応じてセキュリティ装置５２をスケールアウトする。
【００１８】
次に、セキュリティ装置５２において廃棄されたトラヒックのトラヒック情報（例えば、5-tuple情報）をコントローラ３０が取得すると（（３））、コントローラ３０は、通信システム内の各転送装置１０に対し、当該トラヒック情報に示されるトラヒック（攻撃トラヒック）を廃棄するよう指示する。そして、コントローラ３０からの指示を受けた転送装置１０は、フィルタにより攻撃トラヒックを廃棄する（（４））。
【００１９】
このようにすることで、通信システムは、セキュリティ装置５２に転送される攻撃トラヒックのトラヒック量を低減することができる。つまり、通信システムは、攻撃トラヒックの帯域の大きかった場合であっても、セキュリティ装置５２のスケールアウトや、転送装置１０側での攻撃トラヒックの廃棄を行うので、大容量のセキュリティ装置５２を用意する必要がなくなる。よって、通信システムにおけるセキュリティ装置５２の必要容量を低減することができる。
【００２０】
［構成］
次に、図２を用いて、通信システムの構成を詳細に説明する。なお、図１に示したセキュリティ装置５２は、仮想化基盤サーバ５０内に構築された仮想化セキュリティ装置である場合を例に説明する。
【００２１】
［転送装置］
転送装置１０は、パケット転送／廃棄部１１を備える。パケット転送／廃棄部１１は、受信したパケットの転送制御および受信したパケットの廃棄を行う。例えば、パケット転送／廃棄部１１は、コントローラ３０から所定のトラヒックのパケットの廃棄の指示を受信した場合、指示されたトラヒック（例えば、攻撃トラヒック）のパケットを廃棄し、それ以外のパケットについては所定の宛先へ転送する。また、パケット転送／廃棄部１１は、広告された経路情報に基づき、パケットの経路制御を行う。
【００２２】
振分装置２０は、トラヒック振分部２１を備える。トラヒック振分部２１は、トラヒックの振分を行う。例えば、トラヒック振分部２１は、コントローラ３０からトラヒックの振分の指示を受信した場合、所定のトラヒック（例えば、経路広告により振分装置２０に引き込まれた攻撃トラヒック）を所定帯域ずつのフロー群に分割し、分割したフローを所定時間ごとにセキュリティ装置５２へ転送する。
【００２３】
［コントローラ］
コントローラ３０は、振分制御部３１と、トラヒック転送制御部３２と、トラヒック廃棄制御部３３とを備える。
【００２４】
振分制御部３１は、トラヒック監視装置４０等により攻撃が検知された場合、振分装置２０に対し、攻撃トラヒックの振分を指示する。例えば、振分制御部３１は、トラヒック監視装置４０から攻撃トラヒックのトラヒック情報が通知されると、攻撃トラヒックを所定帯域ごとのフロー群に分割し、分割したフローを、所定時間ごとにセキュリティ装置５２に転送するよう指示する。そして、振分制御部３１は、トラヒック監視装置４０から攻撃トラヒックのトラヒック情報（例えば、5-tuple情報）を受信すると、振分装置２０に対し、トラヒック情報に示されるトラヒック（攻撃トラヒック）の振分を指示する。
【００２５】
なお、以下の説明において、コントローラ３０の振分制御部３１が振分装置２０に対し、フローの振分指示を行うことを、適宜「フローの振分を行う」あるいは「フローを振り分ける」と記述する。
【００２６】
また、振分制御部３１は、セキュリティ装置５２において、振分装置２０から転送された各フローの処理を完了するまで時間を計算（推定）する。そして、振分制御部３１は、計算した時間が所定の閾値を超えると判定した場合、セキュリティ装置５２のスケールアウトを指示する。例えば、振分制御部３１は、計算した時間が所定の閾値を超えると判定した場合、仮想化基盤サーバ５０に対し、セキュリティ装置５２のスケールアウトを指示する。
【００２７】
トラヒック転送制御部３２は、各転送装置１０におけるトラヒックの転送制御を行う。例えば、トラヒック転送制御部３２は、各転送装置１０に経路情報の広告（経路広告）を行い、攻撃トラヒックを振分装置２０に引き込むようにする。
【００２８】
トラヒック廃棄制御部３３は、各転送装置１０におけるトラヒックの廃棄制御を行う。例えば、トラヒック廃棄制御部３３は、セキュリティ装置５２から当該セキュリティ装置５２で廃棄されたトラヒックの情報（廃棄トラヒック情報）を受信すると、この廃棄トラヒック情報に示されるトラヒックの廃棄を各転送装置１０に指示する。
【００２９】
［トラヒック監視装置］
トラヒック監視装置４０は、攻撃被疑通信検知部４１を備える。攻撃被疑通信検知部４１は、通信システムを流れるトラヒックを監視する。攻撃被疑通信検知部４１は、例えば、当該監視により、DDoS攻撃等と疑われる通信（攻撃トラヒック）を検知すると、検知した攻撃トラヒックのトラヒック情報をコントローラ３０に通知する。
【００３０】
［仮想化基盤サーバ］
仮想化基盤サーバ５０は、スケールアウト制御部５１と、１以上のセキュリティ装置５２とを備える。
【００３１】
スケールアウト制御部５１は、コントローラ３０からの指示に基づき、セキュリティ装置５２のスケールアウトおよびスケールインを行う。
【００３２】
セキュリティ装置５２は、攻撃トラヒック廃棄部５２１を備える。攻撃トラヒック廃棄部５２１は、振分装置２０から転送された各フローにおける、攻撃パケットを廃棄し、攻撃パケット以外については通過させる。また、攻撃トラヒック廃棄部５２１は、廃棄した攻撃パケットのトラヒック情報（廃棄トラヒック情報）をコントローラ３０に通知する。
【００３３】
［処理手順］
次に、図３および図４を用いて通信システムの処理手順の例を説明する。まず、図３を用いて、通信システムの処理手順の概要を説明する。
【００３４】
通信システムは、トラヒック監視装置４０によりDDoS攻撃等の攻撃を検知すると（Ｓ１：攻撃検知）、この攻撃に対する対処の準備を行う（Ｓ２：対処準備）。ここでの対処の準備とは、例えば、振分装置２０への攻撃トラヒックの引き込み、セキュリティ装置５２への攻撃トラヒックの振分の指示、必要に応じたセキュリティ装置５２のスケールアウトの指示等である。
【００３５】
Ｓ２の後、通信システムは攻撃トラヒックに対する対処を実施する（Ｓ３：対処実施）。ここでの対処の実施とは、例えば、セキュリティ装置５２や転送装置１０での攻撃トラヒックの廃棄等である。その後、通信システムは、対処を終了する（Ｓ４：対処終了）。例えば、通信システムは、振分装置２０への攻撃トラヒックの引き込みの終了指示、スケールアウトしたセキュリティ装置５２のスケールインの指示等を行う。
【００３６】
次に、図４を用いて、通信システムの処理手順の例を詳細に説明する。
【００３７】
［攻撃検知（Ｓ１）］
コントローラ３０の振分制御部３１は、トラヒック監視装置４０から攻撃トラヒックの攻撃トラヒック情報を受信する（Ｓ１１）。
【００３８】
［対処準備（Ｓ２）］
Ｓ１１の後、コントローラ３０の振分制御部３１は、仮想化基盤サーバ５０に対し、必要に応じてセキュリティ装置５２のスケールアウトを指示する（Ｓ２１）。例えば、振分制御部３１は、セキュリティ装置５２において、転送装置１０から転送された各フローの処理を完了するまで時間を計算する。そして、振分制御部３１は、計算した時間が所定の閾値を超えると判定した場合、仮想化基盤サーバ５０に対し、セキュリティ装置５２のスケールアウトを指示する。その後、仮想化基盤サーバ５０のスケールアウト制御部５１は、当該指示に基づき、セキュリティ装置５２のスケールアウトを行う。
【００３９】
Ｓ２１の後、振分制御部３１は、振分装置２０に対し、攻撃トラヒックを所定帯域ごとのフロー群に分割し、分割したフローを、所定時間ごとにセキュリティ装置５２に転送するよう指示する。例えば、振分制御部３１は、まず、分割したフローのうち、最初のフローの振分指示を振分装置２０に対し行う（Ｓ２２）。
【００４０】
Ｓ２２の後、トラヒック転送制御部３２は、各転送装置１０に対し、Ｓ１１で検知された攻撃トラヒックの引込指示を行う（Ｓ２３）。具体的には、トラヒック転送制御部３２は、Ｓ１１で検知された攻撃トラヒックを、振分装置２０に引き込むよう各転送装置１０に対し経路広告を行う。これにより、攻撃トラヒックは振分装置２０に引き込まれる。そして、振分装置２０は、引き込まれた攻撃トラヒックを所定帯域ごとのフローに分割し、最初のフローをセキュリティ装置５２に転送する。
【００４１】
［対処実施（Ｓ３）］
Ｓ２３の後、セキュリティ装置５２の攻撃トラヒック廃棄部５２１に最初のフローが転送されると、当該フローにおける攻撃パケットが廃棄される。そして、攻撃トラヒック廃棄部５２１は、コントローラ３０へ廃棄トラヒック情報を通知する（Ｓ３１）。そして、コントローラ３０のトラヒック廃棄制御部３３は、各転送装置１０に対し、Ｓ３１で通知された廃棄トラヒック情報に示される攻撃トラヒックの廃棄指示を行う（Ｓ３２）。
【００４２】
Ｓ３２の後、振分制御部３１は、振分装置２０に対し、次のフローの振分に切り替えるよう指示する（Ｓ３３：振分切替指示）。これにより、振分装置２０は、次のフローの振分を開始する。上記のＳ３１〜Ｓ３３の処理のループ（loop）は全フローの対処終了まで実行される。
【００４３】
［対処終了（Ｓ４）］
Ｓ３３の後、コントローラ３０が全フローの対処を終了したと判断すると、トラヒック転送制御部３２は、各転送装置１０に対し、攻撃トラヒックの引き込みの終了指示を行う（Ｓ４１）。そして、スケールアウトされたセキュリティ装置５２があれば、振分制御部３１は、仮想化基盤サーバ５０に対し、当該セキュリティ装置５２のスケールインの指示を行う（Ｓ４２）。そして、当該指示を受けた仮想化基盤サーバ５０のスケールアウト制御部５１は、セキュリティ装置５２のスケールインを行う。
【００４４】
通信システムが上記の処理を行うことで、攻撃トラヒックの帯域の大きかった場合であっても、大容量のセキュリティ装置５２を用意する必要がなくなる。その結果、通信システムにおけるセキュリティ装置５２の必要容量を低減することができる。
【００４５】
［振分制御の詳細］
ここで、コントローラ３０の振分制御部３１を詳細に説明する。振分制御部３１は、例えば、攻撃トラヒックを所定帯域ごとのフロー群に分割した後、各フローの優先順位を決定し、決定した優先順位に従い、フローの振分を行う。
【００４６】
ここでの各フローの優先順位の決定は、例えば、フローの宛先間の公平性、フローの帯域の大きさ、フローの宛先に対応するサービス契約のランクの高さ、フローの攻撃被疑度の高さ、フローの通信内容の重要度のいずれか、またはこれらの組み合わせを考慮して決定される。
【００４７】
ここで、振分制御部３１は、各フローの優先度の決定に、上記のフローの宛先間の公平性、および、フローの帯域の大きさを考慮する場合、攻撃発生時に、特定の宛先（攻撃先）のトラヒックのみならず、各宛先のトラヒックについて順次対処し、かつ、大きな帯域の攻撃トラヒックについてなるべく早く対処する必要がある。
【００４８】
このため、振分制御部３１は、攻撃トラヒックを所定帯域ごとのフロー群に分割した後、例えば、図５に示す処理を実行する。すなわち、振分制御部３１は、図５に示すように、攻撃トラヒックのフローを宛先ごとに、通信量（帯域）の大きい順にソートし（Ｓ５１）、各宛先にて通信量の最も大きいフローから優先順位を設定する（Ｓ５２）。そして、振分制御部３１は、Ｓ５２で決定した優先順位に従って、セキュリティ装置５２に各フローを振り分ける（Ｓ５３）。その後、未処理のフローがあれば（Ｓ５４でＮｏ）、振分制御部３１は、未処理のフローについて、Ｓ５３の処理を実行し、全フローの処理を完了していれば（Ｓ５４でＹｅｓ）、処理を終了する。
【００４９】
なお、図５のＳ５２における各フローの優先順位の決定の一例を図６の右側に示す。つまり、振分制御部３１は、振分対象のフローを宛先（Ｘ，Ｙ，Ｚ）ごとに分けると、宛先ごとに通信量（帯域）が大きい順にソートする。そして、振分制御部３１は、各宛先にて通信量（帯域）の最も大きいフローから優先順位を決定する。この優先順位の決定処理の詳細については、フローチャートを用いて後記する。
【００５０】
また、図５のＳ５３において、振分制御部３１が各フローの振分を行う際、振分先のセキュリティ装置５２に割り当てられた帯域が埋まる直前まで逐次フローを振り分けていくものとする。ここで、セキュリティ装置５２に割り当てられた帯域を超えるフローについては、次のターンで対処する。ただし、最初のフローが、セキュリティ装置５２に割り当てられた帯域を超える場合は、例えば、policing等により対処する。
【００５１】
ここで、図６に戻って、振分制御部３１による各フローの振分の例を説明する。ここでは、セキュリティ装置５２に割り当てられた帯域は１Gbpsである場合を例に説明する。振分制御部３１は、例えば、以下のターン１〜５を順次実行する。
【００５２】
・ターン１
振分制御部３１は、優先順位1（1,500（Mbps)）のフローを1Gにpolicingして振分する。
【００５３】
・ターン２
振分制御部３１は、優先順位2,5,6,8,9（500＋200+100+100+50（Mbps)）のフローを振分する。なお、優先順位3,4,7のフローは帯域超過のため、次ターン以降で対処する。
【００５４】
・ターン３
振分制御部３１は、優先順位3（900（Mbps)）のフローを振分する。
【００５５】
・ターン４
振分制御部３１は、優先順位4（800（Mbps)）のフローを振分する。
【００５６】
・ターン５
振分制御部３１は、優先順位7,10（500+300（Mbps)）のフローを振分する。
【００５７】
振分制御部３１が上記のような振分を行うことで、セキュリティ装置５２および各転送装置１０において、特定の宛先（攻撃先）のトラヒックのみならず、各宛先のトラヒックについて順次対処し、かつ、大きな帯域の攻撃トラヒックについてなるべく早く対処することができる。
【００５８】
この振分処理の詳細については、フローチャートを用いて後記する。
【００５９】
［優先順位の設定の詳細］
次に、図７を用いて、各フローの優先順位の設定処理の例を詳細に説明する。
【００６０】
まず、コントローラ３０の振分制御部３１は、トラヒック監視装置４０等から攻撃トラヒック情報を受信し、攻撃トラヒック情報により、フロー配列の取得と、フローの宛先配列の取得とを行う（Ｓ６１）。なお、フローの要素数はFであり、宛先の要素数はDであるものとする。
【００６１】
Ｓ６１の後、振分制御部３１は、優先順位（p）の初期化を行い（Ｓ６２：p=0;）、宛先indexの初期化を行う（Ｓ６３：d=0;）。その後、振分制御部３１は、宛先が宛先[d]かつ優先順位付けが未完了のフローが存在すれば（Ｓ６４でＹｅｓ）、宛先が宛先[d]かつ優先順位付けが未完了のフローのうち、帯域が最も大きいフローの優先度をpに設定する（Ｓ６５）。そして、振分制御部３１は、pの値をインクリメントし（Ｓ６６：p++;）、また、dの値もインクリメントし（Ｓ６７：d++;）、dの値がD未満であれば（Ｓ６８でＹｅｓ）、Ｓ６４に戻る。一方、振分制御部３１は、宛先が宛先[d]のフローすべてについて優先順位付けが完了していれば（Ｓ６４でＮｏ）、Ｓ６５およびＳ６６をスキップして、Ｓ６７へ進む。
【００６２】
Ｓ６８において、振分制御部３１は、dの値がDに達していると判定したが（Ｓ６８でＮｏ）、pの値がF未満であれば（Ｓ６９でＹｅｓ）、Ｓ６３に戻る。一方、振分制御部３１は、pの値がFに達していれば（Ｓ６９でＮｏ）、すべてのフローについて優先順位が決定したと判定し、フロー配列を優先順位pの昇順にソートする（Ｓ７０）。そして、処理を終了する。
【００６３】
つまり、振分制御部３１は、Ｓ６３〜Ｓ６８までの処理をフローの各宛先ごとに、帯域が最も大きいフローに優先順位を設定し、Ｓ６２〜Ｓ６９の処理を全フローに優先順位が設定されるまで繰り返す。
【００６４】
このようにすることで、振分制御部３１は、各フローの各宛先にて通信量の最も大きいフローから優先順位を設定することができる。
【００６５】
［振分処理の詳細］
次に、図８を用いて、各フローの振分処理を詳細に説明する。ここでは、既に各フローの優先順位は決定（設定）済みであるものとする。
【００６６】
まず、振分制御部３１は、優先順位昇順にソートされたフロー配列（要素数F）を取得し（Ｓ７１）、セキュリティ装置５２の帯域（S）を取得する（Ｓ７２）。そして、振分制御部３１は、振分済みフロー数の初期化（Ｓ７３：done=0;）、フローindexの初期化（Ｓ７４：f=0;）、および、振分フローの総帯域の初期化を行う（Ｓ７５：c=0;）。その後、振分制御部３１が、フロー[f]が未振分であり（Ｓ７６でＹｅｓ）、フロー[f]の帯域がS-c以内であれば（Ｓ７７でＮｏ）、フロー[f]の振分を開始する（Ｓ８２）。Ｓ８２の後、振分制御部３１は、doneの値をインクリメントし（Ｓ８３：done++;）、cにフロー[f]の帯域を加算する（Ｓ８４：c+=フロー[f]の帯域;）。なお、Ｓ７６において、振分制御部３１が、フロー[f]を振分済みであれば（Ｓ７６でＮｏ）、Ｓ８５へ進む。
【００６７】
Ｓ８４の後、振分制御部３１は、fの値をインクリメントし（Ｓ８５：f++）、fの値がF未満であれば（Ｓ８６でＹｅｓ）、Ｓ７６へ戻る。一方、fの値がFに達していれば（Ｓ８６でＮｏ）、振分制御部３１は、所定時間待機する（Ｓ８７）。その後、振分制御部３１は、振分を終了すると（Ｓ８８）、doneの値がF未満か否かを判定する（Ｓ８９）。ここで、doneの値がF未満であれば（Ｓ８９でＹｅｓ）、Ｓ７４へ戻り、doneの値がFに達してれば（Ｓ８９でＮｏ）、振分処理を終了する。
【００６８】
一方、Ｓ７７において、フロー[f]の帯域がS-cを超えており（Ｓ７７でＹｅｓ）、かつ、振分フローの総帯域（c）が「０」であれば（Ｓ７８でＹｅｓ）、フロー[f]をSでpolicingして振分を開始する（Ｓ７９）。つまり、振分制御部３１は、最初のフローの帯域が、セキュリティ装置５２の帯域（S）を超えている場合、当該フローの帯域のpolicingをして、セキュリティ装置５２への振分を行う。Ｓ７９の後、振分制御部３１は、doneの値をインクリメントし（Ｓ８０：done++;）、cに、セキュリティ装置５２の帯域（S）を加算する（Ｓ８１：c+=S;）。その後、Ｓ８５へ進む。一方、Ｓ７８で振分フローの総帯域（c）が「０」でなければ（Ｓ７８でＮｏ）、Ｓ７８〜Ｓ８１の処理を行わず、Ｓ８５へ進む。
【００６９】
つまり、振分制御部３１は、Ｓ７３〜Ｓ８９までの処理を全フローの振分が完了するまで繰り返し、Ｓ７４〜Ｓ８６の処理により、セキュリティ装置５２の帯域（S）が埋まるまで優先順位に従ってフローを振分ける。
【００７０】
上記のような振分制御部３１によれば、セキュリティ装置５２に割り当てられた帯域内で、攻撃トラヒックの各フローの振分を行うことができる。
【００７１】
［セキュリティ装置のスケールアウト］
また、振分制御部３１は、例えば、図９に示す手順により、セキュリティ装置５２のスケールアウトを指示する。
【００７２】
まず、振分制御部３１は、攻撃トラヒックの各フローの振分を実施し、全フローの処理完了時間（処理完了見込み時間）を計算する（Ｓ９１）。例えば、振分制御部３１は、振分実施の際に全フローの対処に必要な振分回数が分かるので、この全フローの対処に必要な振分回数に、フローの振分に用いる時間間隔（所定時間）を掛けることで、全フローの処理完了時間（処理完了見込み時間）を計算することができる。
【００７３】
Ｓ９１の後、計算した全フローの処理完了時間が閾値を超えている場合（Ｓ９２でＹｅｓ）、振分制御部３１は、セキュリティ装置５２のスケールアウトを実施する（Ｓ９３）。Ｓ９３の後、再度、各フローの振分を実施し、全フローの処理完了時間（処理完了見込み時間）を計算し（Ｓ９４）、Ｓ９２へ戻る。つまり、振分制御部３１は、セキュリティ装置５２のスケールアウトにより、全フローの処理完了時間が閾値以下となるか否かを判定する。振分制御部３１は、上記の処理を、全フローの処理完了時間が閾値以下となるまで繰り返す。
【００７４】
Ｓ９２において、計算した全フローの処理完了時間が閾値以下の場合（Ｓ９２でＮｏ）、振分制御部３１は、セキュリティ装置５２のスケールアウトを指示せず、振分装置２０およびセキュリティ装置５２に、各フローの対処を開始させる（Ｓ９５）。つまり、振分制御部３１は、振分装置２０に、分割したフロー群を所定時間ごとにセキュリティ装置５２に転送させる。そして、セキュリティ装置５２は、振分装置２０から転送された各フローの攻撃パケットの廃棄を行う。なお、Ｓ９５の後、振分装置２０およびセキュリティ装置５２が転送された全フローの対処を終了すると（Ｓ９６）、振分制御部３１は、セキュリティ装置５２のスケールインを指示する（Ｓ９７）。
【００７５】
このようにすることで、通信システムは、攻撃トラヒックの帯域の大きさに応じたセキュリティ装置５２のスケールアウトを行うことができる。また、通信システムは、攻撃トラヒックに対する対処を終了すると、セキュリティ装置５２のスケールインを行うことができる。
【００７６】
［プログラム］
また、上記の実施形態で述べたコントローラ３０の機能を実現するプログラムを所望の情報処理装置（コンピュータ）にインストールすることによって実装できる。例えば、パッケージソフトウェアやオンラインソフトウェアとして提供される上記のプログラムを情報処理装置に実行させることにより、情報処理装置をコントローラ３０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等がその範疇に含まれる。また、コントローラ３０の機能を、クラウドサーバに実装してもよい。
【００７７】
図１０を用いて、上記のプログラム（制御プログラム）を実行するコンピュータの一例を説明する。図１０に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００７８】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００７９】
ここで、図１０に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記の実施形態で説明した各種データや情報は、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００８０】
そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００８１】
なお、上記の制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ（Central  Processing  Unit）１０２０によって読み出されてもよい。あるいは、上記のプログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００８２】
１０  転送装置
２０  振分装置
３０  コントローラ
４０  トラヒック監視装置
５０  仮想化基盤サーバ
５２  セキュリティ装置
３１  振分制御部
３２  トラヒック転送制御部
３３  トラヒック廃棄制御部
【図１】
2019134234.tif 000003
【図２】
2019134234.tif 000004
【図３】
2019134234.tif 000005
【図４】
2019134234.tif 000006
【図５】
2019134234.tif 000007
【図６】
2019134234.tif 000008
【図７】
2019134234.tif 000009
【図８】
2019134234.tif 000010
【図９】
2019134234.tif 000011
【図１０】
2019134234.tif 000012