(57)【特許請求の範囲】
【請求項１】
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するための負荷分散装置であって、
前記標的サーバに対するDDoS攻撃の発生を検知する攻撃検知機能部と、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードのパケット転送機能部に通知する経路設定機能部と、
リンクの輻輳を検知するネットワーク輻輳検知機能部と、
前記ネットワーク輻輳検知機能部で輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するトポロジ管理機能部と、
を有し、
前記経路設定機能部は、前記トポロジ管理機能部において算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードのパケット転送機能部に通知し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含む負荷分散装置。
【請求項２】
前記経路設定機能部は、前記標的サーバ宛のパケットを新しい経路に振り分ける場合には、当該新しい経路で経由するノードの識別子を付与して新しい経路に転送するためのフローエントリを生成する、請求項１に記載の負荷分散装置。
【請求項３】
前記経路設定機能部は、前記標的サーバ宛のパケットに付与された識別子に基づいて、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成する、請求項２に記載の負荷分散装置。
【請求項４】
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するための負荷分散装置と、パケットに付与された識別子に基づいてパケットを転送するノードとを有する負荷分散システムであって、
前記負荷分散装置は、
前記標的サーバに対するDDoS攻撃の発生を検知する攻撃検知機能部と、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードに通知する経路設定機能部と、
リンクの輻輳を検知するネットワーク輻輳検知機能部と、
前記ネットワーク輻輳検知機能部で輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するトポロジ管理機能部と、
を有し、
前記経路設定機能部は、前記トポロジ管理機能部において算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードに通知し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含み、
前記ノードは、
前記負荷分散装置から通知されたフローエントリに基づいて、パケットを転送するパケット転送機能部を有する負荷分散システム。
【請求項５】
前記パケット転送機能部は、パケットがフローエントリの条件にマッチし、当該条件に対する処理が複数存在する場合、フローエントリに記載された分散の割合に従い、フローエントリを選択してパケットを転送する、請求項４に記載の負荷分散システム。
【請求項６】
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するための負荷分散装置における負荷分散方法であって、
前記標的サーバに対するDDoS攻撃の発生を検知するステップと、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードのパケット転送機能部に通知するステップと、
リンクの輻輳を検知するステップと、
前記輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するステップと、
前記算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードのパケット転送機能部に通知するステップと
を有し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含む負荷分散方法。
【請求項７】
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するために、コンピュータを、
前記標的サーバに対するDDoS攻撃の発生を検知する攻撃検知機能手段、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードのパケット転送機能部に通知する経路設定機能手段、
リンクの輻輳を検知するネットワーク輻輳検知機能手段、及び
前記ネットワーク輻輳検知機能手段で輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するトポロジ管理機能手段、
として機能させ、
前記経路設定機能手段は、前記トポロジ管理機能手段において算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードのパケット転送機能部に通知し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散装置、負荷分散方法、負荷分散システム及びプログラムに関し、特に、DDoS（Distributed Denial of Service attack）攻撃対策の際の経路の輻輳を回避するための負荷分散装置、負荷分散方法、負荷分散システム及びプログラムに関する。
【背景技術】
【０００２】
ISP（Internet Service Provider）等が接続される広域ネットワークでは、DDoS攻撃対策装置が、ネットワーク内のルータ、スイッチ、サーバ等の通信機器から定期的に収集したトラヒック情報やフロー情報を解析することで、サーバを標的とするDDoS攻撃を検知し、標的となっているサーバ（以後、標的サーバと表記）のトラヒックをDDoS攻撃対策装置に迂回させて検査し、標的サーバからDDoS攻撃のトラヒックを遮断することでDDoS攻撃に対処している（非特許文献１参照）。
【０００３】
一方で、近年、数100Gクラスの大規模なDDoS攻撃が発生しており、DDoS攻撃対策装置へ標的サーバ宛のトラヒックを転送する際の通信の経路が偏る場合、経路が輻輳して、他の通信サービスにも影響を及ぼす恐れがある。
【０００４】
輻輳を回避するためには、高速な利用経路と各経路へ収容するトラヒック量の算出に加えて、ルータ等のパケット転送を行うノードにおいて、算出された結果に基づき、パケットを適切な経路で転送するためのネットワーク経路制御技術が必要となる。
【０００５】
輻輳の検知等を契機に、特定のトラヒックの転送路を任意の経路に切り替える技術としては、OpenFlowやSegment Routing等の技術が存在する。Segment Routingでは、ノードへの最短経路を表すNode Segment IDと隣接ノードとのワンホップの経路を表すAdjacency Segment IDの2種類のSegment IDが規定されており、各ノードが自分のSegment IDをIGP（Interior Gateway Protocol）により、ネットワーク全体に広報することで、Segment IDを用いた経路制御を実現する（非特許文献２参照）。また、SDN（software-defined networking）コントローラ等と連携して、明示的に経路を指定することも可能である。なお、Segment Routingのデータプレーンには、MPLS（Multi-Protocol Label Switching）またはIPv6（Internet Protocol Version 6）の利用が想定されており（非特許文献３、非特許文献４参照）、MPLSを利用する場合は、Segment IDはMPLSのラベルで表現し、IPv6を利用する場合は、Segment IDをRouting Extensionヘッダで表現する。以降は、Segment Routingのデータプレーンに、MPLSを利用した場合（Segment ID = ラベルの場合）で説明する。
【０００６】
DDoS攻撃のトラヒックを検査して遮断する用途では、標的サーバ宛のトラヒックを全てDDoS攻撃対策装置に引き込むことを想定している。この場合、フロー単位で制御を行うOpenFlowよりも、各ノードに割り当てられたSegment IDをパケットに付与することで、Segment ID単位でパケットを一括制御でき、中継ノードに逐一経路変更等の設定を行う必要のないSegment Routingの方が、ノード等におけるパケット転送性能への影響の観点からより適していると考えられる。
【０００７】
しかし、Segment Routingでは、1つのパケットに対して、輻輳回避処理が重複して実施される場合には意図した動作を実現できず、そのままでは適用できない。例えば、あるノード0において、ノード0→ノード1→ノード2→ノード3とノード0→ノード3の2経路を用いた輻輳回避処理が行われている場合、ノード0では、前者でパケットを転送するために、パケットのヘッダにノード2とノード3のラベル（Segment ID）をスタックして、ノード1に送出するという経路制御が行われ、中継ノードであるノード1、ノード2では、パケットのヘッダに付与された先頭のラベルを見て、次に転送するノードを決定する。このため、経路の途中のノード1において、ノード1→ノード2、ノード1→ノード4のような2経路を用いた輻輳回避処理が行われている場合でも、ノード0から来たラベルが付与されたパケットは全てノード2に転送されてしまい、意図した動作を行えないという課題がある。また、輻輳回避処理を行うノード（ノード0やノード1）において、新しい経路でパケットを転送するために、ラベルを追加で付与するという通常の動作だけでは、ラベルが重複してスタックされたり、経路の不整合が生じたりすることで、正常にパケットを転送できない可能性がある。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】水口孝則他，"トラフィック解析システムSAMURAIとサービス展開，" NTT技術ジャーナル，2008.7
【非特許文献２】IETF, "Segment Routing Architecture, " https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing/ , 2015.5
【非特許文献３】IETF, "Segment Routing with MPLS data plane, " https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing-mpls/ , 2015.5
【非特許文献４】IETF, "IPv6 Segment Routing Header (SRH), " https://datatracker.ietf.org/doc/draft-previdi-6man-segment-routing-header/ , 2015.5
【発明の概要】
【発明が解決しようとする課題】
【０００９】
大規模なDDoS攻撃に対して、DDoS攻撃対策装置へ標的サーバ宛のトラヒックを転送して対処する従来技術を適用する場合において、転送に用いる経路が偏ることでの輻輳を回避するためには、複数の経路を用いて適切にトラヒックを分散させながら、標的サーバ宛のトラヒックをDDoS攻撃対策装置まで転送できる必要がある。
【００１０】
利用経路と各経路へ収容するトラヒック量を線形計画法によって解を求める方式では、ネットワークの規模（ノード数、リンク数）が大きい場合や、DDoS攻撃での多地点からネットワークにトラヒックが流入する場合には、計算量が増加し、迅速な求解ができない。そのために、転送経路上でリンクの輻輳を検知した場合、そのリンクにDDoS攻撃対策装置宛のトラヒックを流出させているノード（始点ノード）から、そのリンクで接続された対面のノードまでの別の経路を算出して、元の経路との間でトラヒックを分散させることで、局所的に輻輳回避を行う必要がある。
【００１１】
更に、任意のサーバを標的とした大規模なDDoS攻撃のトラヒックをDDoS攻撃対策装置へ転送して処理する際に、転送経路上で発生した輻輳を局所的に回避する技術の実現に必要なネットワーク経路制御には、転送装置や転送装置を制御するコントローラの負荷が小さいことが想定されるSegment Routingの技術を利用することが有力であると考えられるが、1つのパケットに対して、輻輳回避処理が重複して実施される場合には意図した動作を実現できず、そのままでは適用できない。
【００１２】
本発明は、標的サーバに対するDDoS攻撃が発生した場合、標的サーバ宛のトラヒックをDDoS攻撃対策装置へ転送する際に発生する輻輳を迅速に回避することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一形態に係る負荷分散装置は、
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するための負荷分散装置であって、
前記標的サーバに対するDDoS攻撃の発生を検知する攻撃検知機能部と、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードのパケット転送機能部に通知する経路設定機能部と、
リンクの輻輳を検知するネットワーク輻輳検知機能部と、
前記ネットワーク輻輳検知機能部で輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するトポロジ管理機能部と、
を有し、
前記経路設定機能部は、前記トポロジ管理機能部において算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードのパケット転送機能部に通知し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含むことを特徴とする。
【００１４】
本発明の一形態に係る負荷分散システムは、
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するための負荷分散装置と、パケットに付与された識別子に基づいてパケットを転送するノードとを有する負荷分散システムであって、
前記負荷分散装置は、
前記標的サーバに対するDDoS攻撃の発生を検知する攻撃検知機能部と、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードに通知する経路設定機能部と、
リンクの輻輳を検知するネットワーク輻輳検知機能部と、
前記ネットワーク輻輳検知機能部で輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するトポロジ管理機能部と、
を有し、
前記経路設定機能部は、前記トポロジ管理機能部において算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードに通知し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含み、
前記ノードは、
前記負荷分散装置から通知されたフローエントリに基づいて、パケットを転送するパケット転送機能部を有することを特徴とする。
【００１５】
本発明の一形態に係る負荷分散方法は、
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するための負荷分散装置における負荷分散方法であって、
前記標的サーバに対するDDoS攻撃の発生を検知するステップと、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードのパケット転送機能部に通知するステップと、
リンクの輻輳を検知するステップと、
前記輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するステップと、
前記算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードのパケット転送機能部に通知するステップと
を有し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含むことを特徴とする。
【００１６】
本発明の一形態に係るプログラムは、
DDoS（Distributed Denial of Service）攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するために、コンピュータを、
前記標的サーバに対するDDoS攻撃の発生を検知する攻撃検知機能手段、
前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子を、当該パケットに付与するためのフローエントリを生成し、前記標的サーバ宛のパケットの流入元ノードのパケット転送機能部に通知する経路設定機能手段、
リンクの輻輳を検知するネットワーク輻輳検知機能手段、及び
前記ネットワーク輻輳検知機能手段で輻輳と検知されたリンクと直接つながる両端のノードを抽出し、当該両端のノード間において輻輳回避のための新しい経路を生成し、元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量を算出するトポロジ管理機能手段、
として機能させ、
前記経路設定機能手段は、前記トポロジ管理機能手段において算出された元の経路及び新しい経路への前記標的サーバ宛のパケットの振り分け量に基づいて、前記DDoS攻撃対策装置に転送される前記標的サーバ宛のパケットを振り分けるための、まだ輻輳回避が実施されていないパケットに対するフローエントリと、既に輻輳回避が実施されているパケットに対するフローエントリとを生成し、輻輳回避を実施するノードのパケット転送機能部に通知し、
既に輻輳回避が実施されているパケットに対するフローエントリは、前記標的サーバ宛のパケットを前記DDoS攻撃対策装置に転送するための識別子以外の識別子を除去するという処理を含むことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、標的サーバに対するDDoS攻撃が発生した場合、標的サーバ宛のトラヒックをDDoS攻撃対策装置へ転送する際に発生する輻輳を迅速に回避することが可能になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態における負荷分散装置を含む全体構成図
【図２】ネットワーク情報収集・攻撃/輻輳検知装置の構成の一例
【図３】ネットワーク負荷分散装置の構成の一例
【図４】パケット転送装置の構成の一例
【図５】トポロジ情報テーブルの一例
【図６】リンク情報テーブルの一例
【図７】各ノードのトラヒック情報テーブルの一例（ノードDの場合）
【図８】各ノードにおける標的サーバ宛通信用の経路情報テーブルの一例（ノードDの場合）
【図９】各ノードにおける初期のフローエントリの一例
【図１０】標的サーバ宛のパケットをDDoS攻撃対策装置に転送するためのフローエントリの一例
【図１１】輻輳回避を実施するノードにおけるフローエントリの一例
【図１２】本発明の一実施形態における負荷分散システムの動作手順例を示すシーケンス図
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態について説明する。
【００２０】
本発明の実施形態では、DDoS攻撃の標的となっている標的サーバ宛のパケットを、DDoS攻撃対策装置へ転送する経路の輻輳を回避するための負荷分散装置について説明する。
【００２１】
輻輳回避のために、特定のトラヒックの転送路を任意の経路に切り替える技術としてSegment Routingを利用し、Segment Routingのデータプレーンに、MPLSを利用することを前提とする。MPLSでは、パケットを転送するための識別子としてラベルが用いられる。
【００２２】
ラベルは、標的サーバ宛のトラヒックをDDoS攻撃対策装置に引き込む目的と転送経路上で発生する輻輳を回避する目的でしか利用されないことを前提とし、DDoS攻撃対策装置を表すラベルの付与により、DDoS攻撃対策装置まで標的サーバ宛のトラヒックを引き込み、ラベルが付与されたパケットのみを対象に、経由ノードを表すラベルをパケットに付与することで、複数経路を用いた局所的な輻輳回避処理を実施する。このため、パケットにラベルが付与されている場合、最後のラベルは、必ず、DDoS攻撃対策装置を表すラベル（標的サーバ宛のトラヒックをDDoS攻撃対策装置に引き込むための経路制御に用いるラベル）になる。
【００２３】
本発明の実施形態では、輻輳回避を実施するノードのパケット転送機能部において、到達したパケットが既に輻輳回避処理を実施中かを判定し、実施中の場合は、その処理に利用しているラベルを全て除去した後に、そのノードにおける輻輳回避処理を実行する。
【００２４】
MPLSの場合、パケットの先頭ラベルのS（Bottom of Stack）フィールドが1である場合、最後のラベルであると判定でき、Sフィールドが1ではない場合、最後のラベルではないと判定できる。従って、パケットの先頭ラベルのSフィールドを確認し、値が1でない場合は、既に輻輳回避処理を実施中のパケットと判定し、パケットに付与されたラベルのSフィールドの値が1のラベルに到達するまで、ラベルを取り外す。その後、自身の輻輳回避処理に利用している経路でパケットを転送するために必要なラベルを付与して、任意の経路での転送を実現する。
【００２５】
以上の仕組みによって、1つのパケットに対して、輻輳回避処理が重複して実施される場合にも、Segment Routingを用いて適切な経路制御が実現可能になる。
【００２６】
＜本発明の一実施形態における負荷分散装置の構成＞
図１に、本発明の一実施形態におけるネットワーク構成図を示す。
【００２７】
ここでは、一例として、ネットワーク（ISP網等）内にある第2のデータセンタ内のサーバがDDoS攻撃の標的（標的サーバ）となった場合に、エッジルータ等から、第1のデータセンタに存在するDDoS攻撃対策装置に、標的サーバ宛のトラヒックを転送して対処することを想定している。また、ルータ、スイッチ、サーバ等の通信機器をノード（パケット転送装置）、機器間をつなぐケーブルをリンクとし、ネットワークをノードとリンクの集合で構成されるグラフで表現する。
【００２８】
図１では、一例として、後述のネットワーク情報収集機能部１１１、攻撃検知機能部１１３、ネットワーク輻輳検知機能部１１５を1つのネットワーク情報収集・攻撃/輻輳検知装置１００として表現し、経路設定機能部２１１、トポロジ管理機能部２１３を1つのネットワーク負荷分散装置２００として表現し、さらに、ネットワーク情報収集・攻撃/輻輳検知装置１００及びネットワーク負荷分散装置２００を１つの負荷分散装置１０として表現しているが、それぞれの機能の組み合わせおよび実装方法は任意である。
【００２９】
負荷分散装置１０は、標的サーバ宛のトラヒックをDDoS攻撃対策装置へ転送する経路の輻輳を回避するための装置である。負荷分散装置１０は、プロセッサ等のＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等のメモリ装置、ハードディスク等の記憶装置等から構成されたコンピュータでもよい。例えば、負荷分散装置１０の機能及び処理は、記憶装置又はメモリ装置に格納されているデータやプログラムをＣＰＵが実行することによって実現される。
【００３０】
図２に、ネットワーク情報収集・攻撃/輻輳検知装置１００の構成の一例を示す。ネットワーク情報収集・攻撃/輻輳検知装置１００は、処理部１１０としてのネットワーク情報収集機能部１１１と、攻撃検知機能部１１３と、ネットワーク輻輳検知機能部１１５とを含む。また、ネットワーク情報収集・攻撃/輻輳検知装置１００は、記憶部１２０に格納されるテーブルとしてのリンク情報テーブル１２３と、各ノードのトラヒック情報テーブル１２５とを含む。更に、ネットワーク情報収集・攻撃/輻輳検知装置１００は、ネットワーク負荷分散装置２００、ノード（パケット転送装置）等と通信するための通信機能部１３０を含む。
【００３１】
ネットワーク情報収集機能部１１１は、ネットワーク内に存在するノード（パケット転送装置）および攻撃検知機能部１１３、ネットワーク輻輳検知機能部１１５、トポロジ管理機能部２１３との通信機能を有する。
【００３２】
また、ネットワーク情報収集機能部１１１は、ネットワーク内の各リンクの利用可能帯域情報を任意のタイミングで収集し、リンク情報テーブル１２３に格納するとともに、リンク情報テーブル１２３の情報をネットワーク輻輳検知機能部１１５、トポロジ管理機能部２１３に通知する機能を有する。また、各ノードにおける、任意のIPアドレス宛のトラヒックの各ポートからの流入量・流出量を任意のタイミングで収集し、各ノードのトラヒック情報テーブル１２５に格納するとともに、トラヒック情報テーブル１２５の情報を経路設定機能部２１１、トポロジ管理機能部２１３に通知する機能を有する。
【００３３】
さらに、ネットワーク情報収集機能部１１１は、フロー情報（IPアドレス・ポート番号・プロトコル番号・TCPフラグ情報とフロー毎の通信量等）等を定期的に収集し、攻撃検知機能部１１３に通知する機能を有する。ここで、情報収集とデータの格納は、管理者等が手動で操作を実行したときや事前設定された時間間隔毎・攻撃検知時等に自動収集等、任意のタイミングで実施可能である。また、情報の収集自体は、ポートミラーリング等のパケットレベルの収集技術やNetFlow、OpenFlow等のフローレベル等での収集技術等を用いて実現することも可能である。
【００３４】
攻撃検知機能部１１３は、ネットワーク情報収集機能部１１１と経路設定機能部２１１とトポロジ管理機能部２１３との通信機能を有する。また、ネットワーク情報収集機能部１１１から通知されたフロー情報を解析することで、任意のサーバに対するDDoS攻撃の発生を検知する機能を有する。
【００３５】
さらに、攻撃検知機能部１１３は、経路設定機能部２１１とトポロジ管理機能部２１３に対して、標的サーバの情報（IPアドレス等）を通知する機能を有する。なお、フロー情報に基づくDDoS攻撃の検知は、SAMURAI（非特許文献１参照）等の技術を用いて実現することも可能である。
【００３６】
ネットワーク輻輳検知機能部１１５は、トポロジ管理機能部２１３との通信機能を有する。また、ネットワーク輻輳検知機能部１１５は、ネットワーク情報収集機能部１１１から通知されたリンク情報テーブル１２３に格納された情報（リンクの最大容量、リンクの利用可能帯域、リンクの輻輳検知のための閾値）に基づき、リンクの輻輳を検知する機能を有する。
【００３７】
さらに、ネットワーク輻輳検知機能部１１５は、トポロジ管理機能部２１３に、輻輳と検知されたリンクのリンク識別子を通知する機能を有する。
【００３８】
図３に、ネットワーク負荷分散装置２００の構成の一例を示す。ネットワーク負荷分散装置２００は、処理部２１０としての経路設定機能部２１１と、トポロジ管理機能部２１３とを含む。また、ネットワーク負荷分散装置２００は、記憶部２２０に格納されるテーブルとしてのトポロジ情報テーブル２２１と、リンク情報テーブル２２３と、各ノードのトラヒック情報テーブル２２５と、各ノードにおける標的サーバ宛通信用の経路情報テーブル２２７とを含む。更に、ネットワーク負荷分散装置２００は、ネットワーク情報収集・攻撃/輻輳検知装置１００、ノード（パケット転送装置）等と通信するための通信機能部２３０を含む。
【００３９】
経路設定機能部２１１は、ネットワーク内に存在するノード（パケット転送装置）および攻撃検知機能部１１３、トポロジ管理機能部２１３との通信機能を有する。また、攻撃検知機能部１１３から通知された標的サーバの情報（IPアドレス等）とネットワーク情報収集機能部１１１から通知された各ノードのトラヒック情報テーブル２２５に基づき、標的サーバ宛のトラヒックの流入元のノード（例えば、エッジルータ）を抽出する機能を有する。また、標的サーバ宛パケットをDDoS攻撃対策装置に転送するためのラベル（= DDoS攻撃対策装置を表すSegment ID）を、標的サーバ宛のパケットに付与するフローエントリ（図１０）を生成し、抽出したノードのパケット転送機能部に生成したフローエントリを通知する機能を有する。
【００４０】
さらに、経路設定機能部２１１は、トポロジ管理機能部２１３から通知された各ノードにおける標的サーバ宛通信用の経路情報テーブル（図８）の情報（標的サーバ宛のトラヒックを転送するために用いる経路と各経路への振り分け量）に基づき、ラベルの付与されたパケットを各経路に所望の割合で振り分けて転送するためのフローエントリ（図１１）を生成する。
【００４１】
このとき、1つのパケットに対して輻輳回避処理が重複して実施される場合にも正常に転送できるように、パケットが輻輳回避処理を未実施の場合と実施中の場合のそれぞれの処理内容を記載したフローエントリを生成する。具体的には、パケットが既に輻輳回避処理を実施中の場合（すなわち、ラベルが付与されており、Sフィールドが1でない場合）は、パケットに付与されたラベルのSフィールドの値が1のラベルに到達するまで、先頭から順にラベルを取り外し、その後、トポロジ管理機能部２１３から通知された経路情報テーブル（図８）に記された経路で転送するためのラベルをパケットに付与して、ネクストホップのノードにパケットを転送するという処理を記載したフローエントリを生成する。図１１では、一例として、ノードDにおいて、ノードD→ノードF→ノードGの経路で転送を行う場合を想定し、Sフィールド=1のラベルに到達するまで、先頭から順にラベルを外した後に、ノードGを表すラベルをパケットに付与し、ネクストホップであるノードFにパケットを転送するという処理を記載したフローエントリを示している。また、パケットが輻輳回避処理を実施していない場合（ラベルが付与されており、Sフィールドが1の場合）は、ラベルを取り外す処理は実施せずに、経路情報テーブル（図８）に記された経路で転送するためのラベルをパケットに付与して、ネクストホップのノードにパケットを転送するという処理を記載したフローエントリを生成する。
【００４２】
経路設定機能部２１１は、また、輻輳回避を実施するノードのパケット転送機能部に、生成したフローエントリを通知する機能を有する。なお、輻輳回避を実施するノードは、経路情報テーブル（図８）に格納されたノード識別子から判断する。
【００４３】
トポロジ管理機能部２１３は、ネットワーク輻輳検知機能部１１５、攻撃検知機能部１１３、経路設定機能部２１１、ネットワーク情報収集機能部１１１との通信機能を有する。また、ネットワーク輻輳検知機能部１１５から通知された輻輳と検知されたリンクのリンク識別子と自身の保有するトポロジ情報テーブル２２１に格納された情報に基づき、輻輳と検知されたリンクと直接つながる両端のノード間において、輻輳と検知されたリンクを経由しない新しい経路を探索する機能を有する。具体的な探索方法としては、輻輳と検知されたリンクのリンク識別子と直接繋がる両端のノードを抽出し、抽出された両端のノード間において、既にDDoS攻撃のトラヒックをDDoS攻撃対策装置へ転送する経路として利用されているリンクを除く。例えば、当該両端のノードのそれぞれについて、輻輳と検知されたリンクと、自身で保有する各ノードにおける標的サーバ宛通信用の経路情報テーブル２２７に格納された情報から、既に標的サーバ宛通信用の経路として登録されているリンクを除く。リンクを除いた後に、当該両端のノードに接続されたノードを列挙し、両端のノードのそれぞれからホップ数の少ない順にノードを探索し、両ノード間で共通するノードが見つかった場合は探索を終了する。具体的には、両ノード間の1ホップ目のノードで共通するノードがない場合は、2ホップ目のノード、3ホップ目のノード、・・・と列挙していき、共通するノードを発見した時点で探索を終了する。共通するノードを発見した場合に、各ノードから共通するノードまでの経路を組み合わせることで、両ノード間の輻輳回避のための新しい経路を生成する。
【００４４】
トポロジ管理機能部２１３は、あるノードの任意のリンクが、既に標的サーバ宛通信用の経路として登録されているかを判断する機能を有する。具体的には、攻撃検知機能部１１３から通知された標的サーバの情報（IPアドレス等）および自身の保有するトポロジ情報テーブル２２１と、自身の保有する各ノードにおける標的サーバ宛通信用の経路情報テーブル２２７に格納された情報に基づき、標的サーバのIPアドレスの利用経路にそのリンクが含まれているかの判定を行うことで判断する。
【００４５】
また、トポロジ管理機能部２１３は、輻輳と検知されたリンクと直接繋がる両端のノードのどちらが始点ノードで、どちらが終点ノードかを判断する機能を有する。例えば、自身の保有するトポロジ情報テーブル２２１に含まれるノードの地理的情報に基づき、DDoS攻撃対策装置の設置されたデータセンタの入り口ノードに近い方を終点ノード、データセンタの入り口ノードに遠い方を始点ノードと判断することや輻輳と検知されたリンクと直接つながる両端のノードのポートにおける標的サーバ宛通信の向きをネットワーク情報収集機能部１１１から通知された各ノードのトラヒック情報テーブル２２５から抽出することで、輻輳と検知されたリンクに標的サーバ宛のトラヒックを流出させているノードを始点ノード、輻輳と検知されたリンクから標的サーバ宛のトラヒックが流入しているノードを終点ノードと判断することが考えられる。
【００４６】
また、トポロジ管理機能部２１３は、ネットワーク情報収集機能部１１１から通知されたリンク情報テーブル２２３から、新しく生成された経路に含まれるリンクの帯域情報と元の経路に含まれるリンクの利用可能帯域を抽出する機能と、攻撃検知機能部１１３から通知された標的サーバの情報（IPアドレス等）とネットワーク情報収集機能部１１１から通知された各ノードのトラヒック情報テーブル２２５から、始点ノードへの標的サーバ宛のトラヒックの流入量を抽出する機能とを有する。
【００４７】
さらに、トポロジ管理機能部２１３は、抽出した情報と始点ノードから終点ノードまでの経路情報（元の経路と新しく生成した経路）を用いて、各経路への標的サーバ宛のパケットの振り分け量を算出する機能を有する。また、決定した経路と振り分け量を各ノードにおける標的サーバ宛通信用の経路情報テーブル２２７に格納するとともに、この情報を経路設定機能部２１１に対して通知する機能を有する。
【００４８】
具体的な標的サーバ宛のパケットの振り分け量の算出方法としては、元の経路に含まれるリンクの利用可能帯域及び新しい経路に含まれるリンクの利用可能帯域に基づいて算出することが考えられる。例えば、それぞれの経路に含まれるリンクのうち、最も利用可能帯域の小さいリンクを抽出し、各リンクの利用可能帯域をそれぞれの経路の利用可能帯域最小リンクの利用可能帯域の総和で割った割合ずつで標的サーバ宛のパケットを分散させることが考えられる。具体的には、利用可能な経路がaとbの2種類で、各経路において最も利用可能帯域の小さいリンクを1、2と仮定すると、経路aは(1の利用可能帯域)÷(1の利用可能帯域＋2の利用可能帯域)、経路bは(2の利用可能帯域)÷(1の利用可能帯域＋2の利用可能帯域)の割合で標的サーバ宛のパケットを分散させる。その他の決定方法としては、抽出した情報と始点ノードから終点ノードまでの経路情報（元の経路と新しく生成した経路）およびトポロジ情報を入力として与えて、ネットワークフローの割り当て問題としてモデル化した線形計画問題を解くことで各経路への振り分け量を決定することが考えられる。この時の制約条件としては、需要収容制約、フロー保存制約、リンク容量使用率制約等が利用可能である。また、線形計画問題の目的関数は任意であり、例えば、帯域利用効率を重視して、始点ノードに対する標的サーバ宛のトラヒック需要を利用可能な経路に収容した際に、全てのリンクの利用率が最小になるようにトラヒックを分散すること等が考えられる。
【００４９】
なお、輻輳を回避するための経路と標的サーバ宛のパケットの振り分け量の決定方法としては、前述したもの以外にも、輻輳と検知されたリンクと接続される両端のノードと新しく算出した経路に含まれるノードおよびこれらのノードで囲まれる領域の内側に存在するノード（自身の保有するトポロジ情報テーブル２２１に基づき判断）で局所的なトポロジを構築し（以降、この局所的なトポロジに含まれるノードの集合をノード群と呼ぶ）、各ノードにおいて、ノード群のどのノードとも接続されていないリンクから流入する標的サーバ宛のトラヒック量と自身から流入する標的サーバ宛のトラヒック量、および各リンクの最大容量・現在の利用可能帯域、トラヒックの転送に利用可能な経路情報等を入力として与え、局所的なトポロジを対象とした多品種フロー問題を線形計画法の任意のアルゴリズムによって解くことで、輻輳回避のために利用する新しい経路を決定し直し、各経路またはリンクへのパケットの振り分け量を決定するという方法も利用可能であり、任意の方法を選択できる。この時の制約条件としては、需要収容制約、フロー保存制約、リンク容量使用率制約等が利用可能である。また、多品種フロー問題の目的関数は、任意であり、例えば、帯域利用効率を重視して、局所的なトポロジを構成する各ノードに対する標的サーバ宛のトラヒック需要を利用可能な経路に収容した際に、全てのリンクの利用率が最小になるようにパケットを分散することや、計算速度を重視して、局所的なトポロジの各ノードに対する標的サーバ宛のトラヒック需要を利用可能な経路に収容した際に、全てのリンクの利用率が閾値以下になるようにする等が考えられる。なお、輻輳と検知されたリンクと接続される両端のノードと新しく算出した経路に含まれるノードで囲まれる領域の内側に存在するノードを局所的なトポロジに含めるかは任意に決定して良い。
【００５０】
なお、図２及び図３に示す構成例では、ネットワーク情報収集・攻撃/輻輳検知装置１００の記憶部１２０に、リンク情報テーブル１２３と各ノードのトラヒック情報テーブル１２５が存在し、ネットワーク負荷分散装置２００の記憶部２２０にトポロジ情報テーブル２２１、リンク情報テーブル２２３、各ノードのトラヒック情報テーブル２２５及び各ノードにおける標的サーバ通信用の経路情報テーブル２２７が存在するが、これらのテーブルの実装方法は任意であり、例えば、負荷分散装置１０内の記憶部、負荷分散装置１０に接続した記憶装置等に設けられてもよい。
【００５１】
図４に、パケット転送装置３００の構成の一例を示す。パケット転送装置３００は、パケットに付与されたラベルに基づいてパケットを転送するノードである。パケット転送装置３００は、処理部３１０としてのパケット転送機能部３１１を含む。また、パケット転送装置３００は、記憶部３２０に格納されるテーブルとしてのフローテーブル３２１を含む。フローテーブル３２１は、以下に図９〜図１１を参照して説明するように、パケットを転送するための任意のフローエントリを含む任意数のフローエントリで構成される。更に、パケット転送装置３００は、ネットワーク情報収集・攻撃/輻輳検知装置１００、ネットワーク負荷分散装置２００、他のノード（パケット転送装置）等と通信するための通信機能部３３０を含む。
【００５２】
パケット転送機能部３１１は、ネットワーク情報収集機能部１１１、経路設定機能部２１１、他のパケット転送装置との通信機能を有する。また、経路設定機能部２１１から通知されたフローエントリ（図９〜図１１）を自身の保有するフローテーブル３２１に格納するとともに、フローエントリに従い、他のパケット転送装置に対して、パケットを転送する機能を有する。
【００５３】
また、パケット転送機能部３１１は、Segment Routingの転送制御に利用されるラベル（MPLSラベル等）がパケットに付与されているか、付与されたラベルが最後のラベルかを判定する機能を有する。例えば、付与されたラベルが最後のラベルかは、Segment RoutingのデータプレーンにMPLSを利用する場合は、ラベルのSフィールドの値を見て、1なら最後のラベルと判定できる。さらに、Segment Routingの転送制御に利用されるラベルをパケットに付与、または、取り外す機能を有する。
【００５４】
また、パケット転送機能部３１１は、ある条件について、フローエントリが複数存在する場合は、フローエントリに記載された分散の割合に従い、その条件にマッチするパケットの転送に利用するフローエントリを選択する機能（パケットを任意の経路に指定された分散の割合に従って振り分けて転送する機能）を有する。なお、パケットを各経路に振り分ける際には、例えば、暗号学等で用いられるハッシュ関数をフロー情報（送受信IPアドレス、送受信ポート番号、プロトコル等）に適用して得られたハッシュ値に応じて、パケットの利用する経路を選択するハッシュ法等が利用可能であり、ハッシュ関数の特性上、同一のフロー情報を持つパケットからは、必ず同一のハッシュ値が得られるため、必ず同じ経路が選択され、同一フローに属するパケットの到着順序逆転を防ぐことができる。なお、図９〜図１１では、割合に従い、各経路にパケットを振り分ける場合を例示しているが、1つ目の経路に10Gbpsまでトラヒックを転送する等の転送量を与えて振り分けることも想定される。
【００５５】
次に、図５〜図１１を参照して、各種情報を格納するためのテーブルについて説明する。
【００５６】
図５は、ネットワーク全体のトポロジ情報を管理するためのトポロジ情報テーブル２２１の一例である。本テーブルは、ノードを一意に識別可能なノード識別子、各ノードの全ポートに関する接続先のリンク・接続先のノード、ノードの存在する地理情報等で構成される。なお、これらの情報の取得方法は任意であるが、例えば、ネットワークの管理者が各ノードの情報を事前に登録する等が考えられる。
【００５７】
図６は、ネットワーク内の全てのリンクの情報を管理するためのリンク情報テーブル１２３及び２２３の一例である。本テーブルは、リンクを一意に識別可能なリンク識別子、リンクの最大容量、リンクの観測時点の利用可能帯域、リンクの輻輳検知のための閾値等で構成される。リンクの利用可能帯域は、定期的または管理者等の操作に従い、ネットワーク情報収集機能部１１１により収集されて随時更新される。また、リンクの輻輳検知のための閾値は、図６のように、値ベースで設定することや利用可能帯域が、最大容量の80%を超えた場合等の割合ベース等、任意の形式で設定することができる。閾値の値は、管理者が個々のリンクに値を設定するほか、リンクの最大容量の80％等の割合等で全てのリンクに自動設定することもできる。
【００５８】
図７は、ネットワークに存在する各ノードで任意の宛先IPアドレスのトラヒックがどのポートから流入・流出しているかを管理するための各ノードのトラヒック情報テーブル１２５及び２２５の一例である。図７にはノードDの例が示されている。本テーブルは、ノードを一意に識別可能なノード識別子、パケットの宛先IPアドレス、それらのトラヒックがノードのどのポート番号から流入・流出しているかとその通信量等の情報で構成される。これらの情報は、定期的または管理者等の操作に従い、ネットワーク情報収集機能部１１１により収集されて随時更新される。
【００５９】
図８は、ネットワーク内に存在するノード毎に標的サーバ宛のトラヒックの転送経路を管理するための各ノードにおける標的サーバ宛通信用の経路情報テーブル２２７の一例である。図８には、ノードDの例が示されている。本テーブルは、ノードを一意に識別可能なノード識別子、標的サーバのIPアドレス、転送に利用する経路、その経路へのトラヒックの分散の割合等で構成されている。なお、各経路へのトラヒックの分散は、図８に示すような割合ベースの他に、10Gbps等の値を登録して、その値を上限として分散する等の設定も可能である。また、利用経路と分散の割合は、トポロジ管理機能部２１３によって算出されるほか、管理者が事前に手動設定する等も可能である。
【００６０】
図９は、各ノード（パケット転送装置）における初期のフローエントリの一例である。図９〜図１１のフローエントリは、条件、処理内容、分散の割合等で構成され、パケット転送装置３００に到達したパケットのヘッダ情報等を確認し、条件にマッチするパケットの場合は、記載された処理内容を適用する。また、分散の割合は、パケットの転送に利用可能な複数の経路が存在するときに、各経路にパケットを分散させるために利用される。また、図９のフローエントリは、ネットワーク内の全てのパケット転送装置３００に予め設定されていることを前提としている。
【００６１】
図１０は、標的サーバ宛のパケットをDDoS攻撃対策装置に転送するための、エッジノード等におけるフローエントリの一例である。
【００６２】
攻撃検知機能部１１３で特定のサーバに対するDDoS攻撃を検知した場合、経路設定機能部２１１によって、本フローエントリが生成される。また、外部のネットワーク等から本ネットワークに対して、当該サーバ宛のトラヒックが流入している最初のノード（エッジルータ）等のパケット転送機能部３１１に対して、経路設定機能部２１１から本フローエントリが通知され、パケット転送機能部３１１によって、パケットの転送のためのルールとして設定される。なお、図１０のフローエントリは、図９のフローエントリよりも優先度の高いフローエントリとして設定され、図１０の処理後に、図９のフローエントリが参照される。
【００６３】
図１１は、輻輳回避を実施するノードのフローエントリの一例である。図１１は、図８に示すノードDにおいて、ノードD→ノードG、ノードD→ノードF→ノードGの2経路を利用した輻輳回避を行う場合を示している。ネットワーク輻輳検知機能部１１５で、特定リンクの輻輳を検知した場合、トポロジ管理機能部２１３で算出した輻輳回避のために利用する経路と各経路に収容する通信量に基づき、経路設定機能部２１１によって、本フローエントリが生成される。また、輻輳回避を実施するノードのパケット転送機能部３１１に対して、経路設定機能部２１１から本フローエントリが通知され、パケット転送機能部３１１によって、パケットの転送のためのルールとして設定される。なお、輻輳回避を実施するノードでは、図９のフローエントリは、図１１のフローエントリに置き換えられる。
【００６４】
＜本発明の一実施形態における負荷分散装置における動作手順例＞
次に、図１２を参照して、本発明の一実施形態における動作手順例を説明する。
【００６５】
ネットワーク情報収集機能部１１１は、ネットワーク内の各リンクの利用可能帯域情報を定期的に収集し、リンク情報テーブル１２３に格納するとともに、リンク情報テーブル１２３の情報をネットワーク輻輳検知機能部１１５、トポロジ管理機能部２１３に通知する。また、各ノードにおける、任意のIPアドレス宛のトラヒックの各ポートからの流入量・流出量を任意のタイミングで収集し、各ノードのトラヒック情報テーブル１２５に格納するとともに、トラヒック情報テーブル１２５の情報を経路設定機能部２１１、トポロジ管理機能部２１３に通知する。さらに、フロー情報（IPアドレス・ポート番号・プロトコル番号・TCPフラグ情報とフロー毎の通信量等）等を定期的に収集し、攻撃検知機能部１１３に通知する。
【００６６】
また、Segment Routingによるパケットの転送制御に用いる各ノードの識別子（Segment ID）は、標的サーバ宛のトラヒックをDDoS攻撃対策装置に引き込む目的と転送経路上で発生する輻輳を回避する目的でしか利用されないことを前提とする。また、Segment Routingのデータプレーンには、MPLSを利用し、各ノードの識別子は、MPLSのラベルで表現する。さらに、各ノードからDDoS攻撃対策装置までの経路（Node Segment相当）と各ノードと隣接ノードまでの経路（Adjacency Segment相当）は事前にネットワーク全体で広報・設定済みであり、任意のノードを表すラベルをパケットに付与することで、各ノードは、事前設定された経路を用いて任意のノードまで当該パケットを転送可能とする。また、各ノードには、図９のフローエントリが設定済みとする。
【００６７】
以降、ネットワーク情報収集機能部１１１の情報に基づき、攻撃検知機能部１１３が攻撃を検知するところからの動作手順を説明する。
【００６８】
ステップＳ１０１において、攻撃検知機能部１１３は、ネットワーク情報収集機能部１１１から通知されたフロー情報を解析することで、サーバに対するDDoS攻撃の発生を検知し、経路設定機能部２１１とトポロジ管理機能部２１３に対して、標的サーバの情報（IPアドレス等）を通知する。
【００６９】
ステップＳ１０３において、経路設定機能部２１１は、通知された標的サーバの情報（IPアドレス等）に基づき、標的サーバ宛のパケットをDDoS攻撃対策装置に転送するためのラベルを、標的サーバ宛のパケットに付与するためのフローエントリ（図１０）を生成する。
【００７０】
図１０に示すフローエントリは、一例として、標的サーバのIPアドレスを1.1.1.1とし、パケットの宛先が1.1.1.1にマッチする場合は、DDoS攻撃対策装置を表すラベルを付与して他のフローエントリ（ここでは、図９）に従い転送するという処理を記載している。
【００７１】
ステップＳ１０５において、経路設定機能部２１１は、攻撃検知機能部１１３から通知された標的サーバの情報（IPアドレス等）とネットワーク情報収集機能部１１１から通知された各ノードのトラヒック情報テーブル２２５に基づき、標的サーバ宛トラヒックの流入元のノード（エッジルータ等）を抽出する。
【００７２】
ステップＳ１０７において、経路設定機能部２１１は、ステップＳ１０３で生成したフローエントリを、ステップＳ１０５で抽出したノードのパケット転送機能部３１１に通知する。
【００７３】
ステップＳ１０９において、標的サーバ宛トラヒックの流入元ノードのパケット転送機能部３１１は、通知されたフローエントリをフローテーブル３２１に格納し、以降、標的サーバ宛パケットが到達した場合は、フローエントリ（図９、図１０）に従い、DDoS攻撃対策装置のラベルを付与して転送する。
【００７４】
ステップＳ１１１において、ネットワーク輻輳検知機能部１１５は、ネットワーク情報収集機能部１１１から通知されたリンク情報テーブル１２３に格納された情報（リンクの最大容量、リンクの利用可能帯域、リンクの輻輳検知のための閾値）に基づき、リンクの輻輳を検知し、トポロジ管理機能部２１３に、輻輳と検知されたリンクのリンク識別子を通知する。
【００７５】
ここでは、リンク7が輻輳と検知されたと仮定する。
【００７６】
ステップＳ１１３において、トポロジ管理機能部２１３は、ネットワーク輻輳検知機能部１１５から通知された輻輳と検知されたリンクのリンク識別子と自身の保有するトポロジ情報テーブル２２１に格納された情報に基づき、輻輳と検知されたリンクと直接繋がる両端のノード（ノードD、ノードG）を抽出し、輻輳と検知されたリンクを回避するための両ノード間の新しい経路を生成する。例えば、トポロジ管理機能部２１３は、両端のノード（ノードD、ノードG）のそれぞれについて、輻輳と検知されたリンクと既に標的サーバ宛通信用の転送経路として登録されているリンク以外で直接接続されたノードを列挙する。両ノード間で、共通するノードが存在する場合は探索を終了し、両ノード間の1ホップ目のノードで共通するノードがない場合は、2ホップ目のノード、3ホップ目のノード、・・・と列挙していき、共通するノードを発見した時点で探索を終了する。各ノードから共通するノードまでの経路を組み合わせることで、両ノード間の新しい経路を生成する。例えば、図１のトポロジにおいて、リンク7が輻輳したと仮定すると、リンク7の両端のノードリンクDとGのそれぞれから輻輳リンクを除いたリンクでつながる1ホップ目のノードを列挙する。ノードDの1ホップ目のノードは、BとFであり、リンクGの1ホップ目のノードは、EとFであり、1ホップ目の探索において、共通するノードFが得られたため、ここで探索を終了し、ノードD→ノードF、ノードG→ノードFという経路を組み合わせることで、ノードD→ノードF→ノードGという新しい経路を生成する。
【００７７】
あるノードの任意のリンクが、既に標的サーバ宛通信用の転送経路として登録されているかは、攻撃検知機能部１１３から通知された標的サーバの情報（IPアドレス等）および自身の保有するトポロジ情報テーブル２２１と各ノードにおける標的サーバ宛通信用の経路情報テーブル２２７に格納された情報に基づき、標的サーバのIPアドレスの利用経路にそのリンクが含まれている場合は、既に登録されていると判断する。
【００７８】
ステップＳ１１５において、トポロジ管理機能部２１３は、ネットワーク情報収集機能部１１１から通知されたリンク情報テーブル２２３から、新しく生成された経路に含まれるリンクの帯域情報と元の経路に含まれるリンクの利用可能帯域を抽出する。また、攻撃検知機能部１１３から通知された標的サーバの情報（IPアドレス等）とネットワーク情報収集機能部１１１から通知された各ノードのトラヒック情報テーブル２２５から、始点ノードへの標的サーバ宛のトラヒックの流入量を抽出する。これらの情報と始点ノードから終点ノードまでの経路情報（元の経路と新しく生成した経路）を用いることで、各経路への標的サーバ宛のトラヒックの振り分け量を算出する。
【００７９】
ここでは、元の経路D→Gに30%、生成した経路D→F→Gに70%の割合で、標的サーバ宛のトラヒックを振り分けると仮定する。
【００８０】
ステップＳ１１７において、トポロジ管理機能部２１３は、決定した経路と振り分け量を各ノードにおける標的サーバ宛通信用の経路情報テーブル２２７に格納するとともに、経路設定機能部２１１に対して通知する。
【００８１】
ステップＳ１１９において、経路設定機能部２１１は、トポロジ管理機能部２１３から通知された情報に基づき、ラベルが付与されたパケット（すなわち、DDoS攻撃対策装置に転送中の標的サーバ宛のパケット）を各経路に所望の割合で振り分けて転送するためのフローエントリ（図１１）を生成する。
【００８２】
図１１に示すように、パケットが輻輳回避を実施中の場合と未実施の場合のそれぞれの処理を記載したフローエントリを生成することで、輻輳回避を実施中のパケットに重複して輻輳回避処理を適用する場合にも正常に転送できるようにする。
【００８３】
パケットにラベルが付与されており、先頭のラベルが最後のラベルではない場合、既に輻輳回避が実施されているパケットであることが分かる。輻輳回避を実施中のパケットに対しては、Sフィールドが1のラベルに到達するまで、先頭から順にラベルを取り外してから、自身で行っている輻輳回避処理に必要なラベルを付与して転送する。すなわち、標的サーバ宛のパケットをDDoS攻撃対策装置に転送するためのラベル以外のラベルを除去してから、自身で行っている輻輳回避処理に必要なラベルを付与して転送する。
【００８４】
一方、パケットにラベルが付与されており、先頭のラベルが最後のラベルである場合、まだ輻輳回避が実施されていないパケットであることが分かる。輻輳回避を未実施のパケットに対しては、自身で行っている輻輳回避処理に必要なラベルを付与して転送する。
【００８５】
ノードDにおいて、ノードD→ノードG、ノードD→ノードF→ノードGの2経路に、30%、70%の割合でトラヒックを分散させる場合は、例えば、図１１のようなフローエントリを生成する。ノードD→ノードF→ノードGの経路にパケットを振り分ける場合には、新しい経路で経由するノードF及びノードGのラベルを付与してノードFに転送するというフローエントリが生成される。なお、ノードGのラベルを付与したパケットをノードFに転送するというフローエントリが存在する場合には、ノードFのラベルは省略可能であり、図１１のように、ノードGのラベルを付与してノードFに転送するというフローエントリが生成されてもよい。
【００８６】
ステップＳ１２１において、経路設定機能部２１１は、輻輳回避を実施するノードのパケット転送機能部３１１に、生成したフローエントリを通知する。例えば、リンク7が輻輳と検知された場合、輻輳と検知されたリンクの始点ノードであるノードDのパケット転送機能部３１１に、生成したフローエントリ（図１１）を通知する。
【００８７】
ステップＳ１２３において、輻輳回避を実施するノードのパケット転送機能部３１１は、通知されたフローエントリをフローテーブル３２１に格納し、以降、DDoS攻撃対策装置のラベルが付与されたパケットが到達した場合は、フローエントリ（図１１）に従い転送する。
【００８８】
パケット転送機能部３１１では、到達したパケットに対して、ラベルの有無やラベルのSフィールドに基づき、付与されたラベルが最後のラベルかを検査する。パケットがフローエントリの条件にマッチし、その条件に対する処理が複数存在する場合は、分散の割合に従い、フローエントリを選択してパケットを処理する。このとき、パケットがループするのを防ぐために、パケットの送信元ノードを宛先とするフローエントリは選択しないといった制御を行うことも想定される。割合に基づく分散の実現手段としては、ロードバランサ等で利用されている重み付けラウンドロビンやフロー情報を元にハッシュを計算して振り分けるハッシュ法等が想定される。
【００８９】
＜本発明の実施形態の効果＞
以上のように、本発明の実施形態によれば、標的サーバに対するDDoS攻撃が発生した場合、標的サーバ宛のトラヒックをDDoS攻撃対策装置へ転送する際に発生する輻輳を迅速に回避することが可能になる。
【００９０】
具体的には、任意のサーバを標的とした大規模なDDoS攻撃のトラヒックを対策装置へ転送して処理する際に転送経路上で発生した輻輳を局所的に回避する場合において、輻輳回避を実施するノードで、転送するパケットが既に輻輳回避処理を実施中かを判定し、実施中の場合は、その処理のためのラベルを全て除去するという処理を追加することで、パケットに対して、輻輳回避処理が重複して実施されるときにも、Segment Routingを用いて適切な経路制御が実現可能になる。
【００９１】
また、OpenFlowを用いて輻輳回避の制御を行う場合に比べて、コントローラから制御が必要なノード数やノードのフローエントリ数を削減できる。
【００９２】
更に、任意のサーバを標的とした大規模なDDoS攻撃発生時に、トラヒックを対策装置へ転送して処理する際の経路の輻輳を回避するために必要なNW経路制御を迅速に実現できるようになることで、経路が輻輳して他の通信サービスに影響を与える可能性を低減できる。
【００９３】
説明の便宜上、本発明の実施形態に係る負荷分散装置は機能的なブロック図を用いて説明しているが、本発明の実施形態に係る負荷分散装置は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。例えば、本発明の実施形態は、コンピュータに対して本発明の実施形態に係る負荷分散装置の各機能を実現させるプログラム、コンピュータに対して本発明の実施形態に係る方法の各手順を実行させるプログラム等により、実現されてもよい。また、各機能部が必要に応じて組み合わせて使用されてもよい。また、本発明の実施形態に係る方法は、実施形態に示す順序と異なる順序で実施されてもよい。
【００９４】
以上、標的サーバに対するDDoS攻撃が発生した場合、標的サーバ宛のトラヒックをDDoS攻撃対策装置へ転送する際に発生する輻輳を迅速に回避するための手法について説明したが、本発明は、上記の実施形態に限定されることなく、特許請求の範囲内において、種々の変更・応用が可能である。
【符号の説明】
【００９５】
１０    負荷分散装置
１００  ネットワーク情報収集・攻撃/輻輳検知装置
１１０  処理部
１１１  ネットワーク情報収集機能部
１１３  攻撃検知機能部
１１５  ネットワーク輻輳検知機能部
１２０  記憶部
１２３  リンク情報テーブル
１２５  各ノードのトラヒック情報テーブル
１３０  通信機能部
２００  ネットワーク負荷分散装置
２１０  処理部
２１１  経路設定機能部
２１３  トポロジ管理機能部
２２０  記憶部
２２１  トポロジ情報テーブル
２２３  リンク情報テーブル
２２５  各ノードのトラヒック情報テーブル
２２７  各ノードにおける標的サーバ宛通信用の経路情報テーブル
２３０  通信機能部
３００  パケット転送装置
３１０  処理部
３１１  パケット転送機能部
３２０  記憶部
３２１  フローテーブル
３３０  通信機能部
【図１】
0006421088.tif 000002
【図２】
0006421088.tif 000003
【図３】
0006421088.tif 000004
【図４】
0006421088.tif 000005
【図５】
0006421088.tif 000006
【図６】
0006421088.tif 000007
【図７】
0006421088.tif 000008
【図８】
0006421088.tif 000009
【図９】
0006421088.tif 000010
【図１０】
0006421088.tif 000011
【図１１】
0006421088.tif 000012
【図１２】
0006421088.tif 000013