(57)【特許請求の範囲】
【請求項１】
ネットワーク・デバイスによるＩＰネットワークのためのアドレス範囲の自動検出方法であって、前記方法は、
ネットワーク境界を横切って前記ネットワーク・デバイスにより中継されるフローの各々について、前記フローのソースＩＰアドレスと宛先ＩＰアドレス、並びに、前記ネットワーク境界を横切る前記フローの方向を示す方向データのうちの１つとを含むフロー・データを得ることと、
前記ツリーの分岐内の連続したノードがＩＰアドレスの連続した部分と関連付けられ、且つ、共通した開始部分を有するＩＰアドレスが、前記ツリーにおいて、共通した少なくとも１つのノードにより表されるように、前記フロー・データにおける前記ＩＰアドレスを表すツリー・データ構造体を生成することと、
前記フロー・データの少なくともサブセットにおける前記表されたＩＰアドレスの出現数に従って、前記ツリー内のノードに重みを割り当てることと、
前記割り当てられた重みに従って、前記ネットワーク内の全てのＩＰアドレスに共通する最後の開始アドレス部分と関連したノードを識別することによって、前記ネットワークのＩＰアドレス範囲を検出することと、
前記ＩＰアドレス範囲を有するようにデバイスを自動的に構成し、前記デバイスの動作中、前記ネットワークの内部のＩＰアドレスと外部のＩＰアドレスを区別するのを可能にすることと、
を含む方法。
【請求項２】
前記ネットワークの内部から前記ネットワーク・デバイスにより受信され、前記ネットワークに中継されるフローの各々についても、前記フロー・データを取得することを含む、請求項１に記載の方法。
【請求項３】
前記フロー・データは、前記フローの各々についての前記ソースＩＰアドレス及び宛先ＩＰアドレスを含み、
前記フロー・データにおける前記表されたＩＰアドレスの出現数に従って、前記重みが前記ツリー内のノードに割り当てられる、請求項１又は請求項２に記載の方法。
【請求項４】
各々のノードに、前記フロー・データにおける前記ＩＰアドレスの前記関連したアドレス部分の出現数に比例する重みが割り当てられ、
前記ネットワークの前記ＩＰアドレス範囲は、その重みが分岐内の前記ツリーの重みの半分を超えない第１のノードを識別し、前記ツリーの根ノードから最も重いノードを辿ることによって検出される、請求項３に記載の方法。
【請求項５】
前記フロー・データは、前記フローの各々についての前記ソースＩＰアドレスと、前記ネットワーク境界を横切って中継されるフローについての前記方向データとを含み、
前記ネットワークを出ていくフローに対応する前記フロー・データのサブセットにおける前記表されたＩＰアドレスの出現数に従って、重みが前記ツリー内のノードに割り当てられる、請求項１又は請求項２に記載の方法。
【請求項６】
前記フロー・データは、前記フローの各々についての前記宛先ＩＰアドレスと、前記ネットワーク境界を横切って中継されるフローについての前記方向データとを含み、
前記ネットワークに入るフローに対応する前記フロー・データのサブセットにおける前記表されたＩＰアドレスの出現数に従って、重みが前記ツリー内のノードに割り当てられる、請求項１又は請求項２に記載の方法。
【請求項７】
前記サブセットにおけるＩＰアドレスの部分と関連した各々のノードに、前記サブセットにおける前記関連したアドレス部分の出現数に比例する第１の極性の重みが割り当てられ、前記サブセット内にはないＩＰアドレスの部分と関連した各々のノードに、前記サブセットの外部の前記関連したアドレス部分の出現数に比例する反対の極性の重みが割り当てられる、請求項５又は請求項６に記載の方法。
【請求項８】
前記ネットワークの前記ＩＰアドレス範囲は、前記ツリーの前記根ノードから延びる分岐において、前記サブセットにおけるＩＰアドレス部分と関連付けられ、且つ、前記サブセットにおけるＩＰアドレス部分と関連した１つより多い子ノードを有する前記第１のノードを識別することによって検出される、請求項５から請求項７までのいずれか１項に記載の方法。
【請求項９】
前記フロー・データを得るために、前記ネットワーク内のトラフィック・フローを監視することを含む、請求項１から請求項８のいずれか１項に記載の方法。
【請求項１０】
前記ＩＰアドレス範囲に従ってトラフィック・フローを処理するために、前記ＩＰアドレス範囲を有するように前記ＩＰネットワークにおけるネットワーク・デバイスを自動的に構成することを含む、請求項１から請求項９のいずれか１項に記載の方法。
【請求項１１】
前記方法は前記ネットワーク境界を横切って中継する前記ネットワーク・デバイスにおいて実施され、前記方法は、
前記フロー・データを得るために、前記ネットワーク・デバイス内のトラフィック・フローを監視することと、
前記ＩＰアドレス範囲に従ってトラフィック・フローを処理するために、前記ＩＰアドレス範囲を有するように前記ネットワーク・デバイスを自動的に構成することと、
を含む、請求項１から請求項８のいずれか１項に記載の方法。
【請求項１２】
コンピュータにより実行されることで、前記コンピュータに請求項１から請求項１１のいずれか１項に記載の方法を実行させるコンピュータ・プログラム。
【請求項１３】
ＩＰネットワークのためのアドレス範囲の自動検出のための装置であって、前記装置は、
前記ネットワーク境界を横切ってネットワーク・デバイスにより中継されるフローの各々について、前記フローのソースＩＰアドレスと宛先ＩＰアドレス、並びに、前記ネットワーク境界を横切る前記フローの方向を示す方向データのうちの１つとを含むフロー・データを格納するためのメモリと、
前記ツリーの分岐内の連続したノードがＩＰアドレスの連続した部分と関連付けられ、且つ、共通した開始部分を有するＩＰアドレスが、前記ツリーにおいて、共通した少なくとも１つのノードにより表されるように、前記フロー・データにおける前記ＩＰアドレスを表すツリー・データ構造体を生成し、
前記フロー・データの少なくともサブセットにおける前記表されたＩＰアドレスの出現数に従って、前記ツリー内のノードに重みを割り当て、
前記割り当てられた重みに従って、前記ネットワーク内の全てのＩＰアドレスに共通する最後の開始アドレス部分と関連したノードを識別することによって、前記ネットワークの前記ＩＰアドレス範囲を検出し、
前記デバイスの動作中、前記ネットワークの内部のＩＰアドレスと外部のＩＰアドレスを区別するのを可能にするように、前記ＩＰアドレス範囲を有するように前記デバイスを構成する、
ように適合された制御論理と、
を含む装置。
【請求項１４】
ＩＰネットワークのための自己構成型ネットワーク・デバイスであって、前記デバイスは、前記ネットワークの境界におけるトラフィック・フローを処理するように動作可能であり、かつ、メモリと、
前記ネットワーク境界を横切って前記デバイスにより中継される少なくとも各々のフローについて、前記フローのソースＩＰアドレスと宛先ＩＰアドレス、並びに、前記ネットワーク境界を横切る前記フローの方向を示す方向データのうちの１つとを含むフロー・データを得るために、前記トラフィック・フローを監視し、
前記フロー・データを前記メモリ内に格納し、
前記ツリーの分岐内の連続したノードがＩＰアドレスの連続した部分と関連付けられ、共通した開始部分を有するＩＰアドレスが、前記ツリーにおいて、共通した少なくとも１つのノードにより表されるように、前記フロー・データにおける前記ＩＰアドレスを表すツリー・データ構造体を生成し、
前記フロー・データの少なくともサブセットにおける前記表されたＩＰアドレスの出現数に従って、前記ツリー内の前記ノードに重みを割り当て、
前記割り当てられた重みに従って、前記ネットワーク内の全てのＩＰアドレスに共通する最後の開始アドレス部分と関連したノードを識別することによって、前記ネットワークのＩＰアドレス範囲を検出し、
前記ＩＰアドレス範囲を有するように前記デバイスを構成し、前記ＩＰアドレス範囲に従って前記トラフィック・フローを処理する、
ように適合された制御論理と、
を含むデバイス。
【請求項１５】
フィルタリング及び前記トラフィック・フローの分類の一方のために適合された、請求項１４に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ＩＰ（インターネット・プロトコル）ネットワークのアドレス範囲の自動検出に関する。ネットワーク・トラフィック・フロー上のデータからＩＰアドレス範囲を検出し、デバイスの動作中にネットワークの内部のＩＰアドレスと外部のＩＰアドレスを区別するのを可能にするように、そのアドレス範囲を用いてデバイスを自動的に構成するための方法、装置、及びコンピュータ・プログラムが提供される。トラフィックを監視し、ネットワーク・アドレス範囲を検出し、次いでそれに応じてトラフィック・フローを処理する、自己構成型ネットワーク・デバイスもまた提供される。
【背景技術】
【０００２】
ＩＰネットワーキングにおいては、ＴＣＰ／ＩＰ（Transport ControlProtocol/Internet Protocol）ネットワーク・システムの各ネットワーク内のデバイスは、一意のＩＰアドレスによって識別される。パケットは、宛先デバイスのＩＰアドレスに基づいて、ネットワークにわたって経路指定される。ＩＰネットワークにおいて現在使用されているＴＣＰ／ＩＰバージョン４システムによると、ＩＰアドレスは、通常、ピリオドで区切られた４つの１０進数として書かれた３２ビットで表される。（今度のＩＰバージョン６は、ＩＰアドレスのために１２８ビットを提供するが、記載されるプロセスは、他の点では類似している。）各々の１０進数は、０から２５５までの値を有し、３２ビット・アドレスの４つの連続する８ビット・セグメントのうちの１つの１０進値である。ＩＰアドレスは、事実上、２つの部分から成り、一方はネットワークを識別し、他方はそのネットワーク内のデバイスを識別する。同じネットワーク内のデバイスのＩＰアドレスは、共通した開始部分を有する。この開始部分は、ネットワークを識別するものであり、実際上、そのネットワーク内の全てのデバイスのアドレス範囲を定める。つまり、デバイスが、適切なネットワーク・アドレス・プリフィックス（prefix）をもつ、可能なＩＰアドレス範囲にあるアドレスを有する場合、そのデバイスはネットワークに属している。ネットワークがサブネットワーク（サブネット）に分割される場合、ネットワーク・アドレス範囲をさらに区分化することができる。この場合、ＩＰアドレスの更に別の部分がサブネット・アドレスとして用いられる。次に、ネットワーク・アドレスとサブネット・アドレスを加えたものが、サブネット内のデバイスのアドレス範囲を定め、これらのデバイスの各々のＩＰアドレスは、ネットワーク・アドレスとサブネット・アドレスの両方を含んだ開始部分を有する。
【０００３】
デバイスは、様々な理由で、ネットワーク（ネットワーク全体であっても、又はサブネットワークであってもよい）の内部のＩＰアドレスと外部のＩＰアドレスを区別する必要がある場合がある。例えば、ネットワーク・デバイスが、全体のネットワーク内フローから、ネットワーク間トラフィック・フローをフィルタリングすること、又は様々な分類のためにそうしたフローを区別することが必要となる場合がある。こうしたフィルタリング又は分類プロセスは、例えば、ファイアウォール又は他のシステムにおけるセキュリティのために、一般に規則ベースのフロー制御のために、又はフロー・ベースのトラフィック監視のために用いることができる。例えば、フロー・ベースのトラフィック監視の場合、ネットワークＸから送られたトラフィックのような特定のトラフィックに焦点を合わせること、又はネットワーク内部のトラフィックからインターネット・トラフィックをフィルタリングにより除去し、特定のフローの詳細だけを記録することが必要になる場合がある。
【０００４】
現在のデバイスは、ネットワークの内部のＩＰアドレスと外部のＩＰアドレスを区別するように手作業で構成される。つまり、オペレータが、当該ネットワークのアドレス範囲を、ルータ、スイッチ、又は他のネットワーク・デバイスなどのいずれかのデバイスにプログラムし、これに応じて、それらのデバイスがトラフィック・フローを処理する。この操作は、例えば、ネットワークの開発に応じて又はネットワークの再構成のためにネットワーク・セグメントが追加又は削除されたときなど、ネットワーク・アドレスが変わる度に繰り返される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＩＰネットワークのアドレス範囲の自動検出のための方法及び装置を提供する。
【課題を解決するための手段】
【０００６】
本発明の１つの態様は、ＩＰネットワークのためのアドレス範囲の自動検出方法を提供する。本方法は、
ネットワーク境界を横切ってネットワーク・デバイスにより中継されるフローの各々について、フローのソースＩＰアドレス及び宛先ＩＰアドレスのうちの一方と、（ａ）ソースＩＰアドレス及び宛先ＩＰアドレスのうちの他方、並びに、（ｂ）ネットワーク境界を横切るフローの方向を示す方向データのうちの一方とを含むフロー・データを得ることと、
ツリーの分岐内の連続したノードがＩＰアドレスの連続した部分と関連付けられ、且つ、共通した開始部分を有するＩＰアドレスが、ツリーにおいて、共通した少なくとも１つのノードにより表されるように、フロー・データにおけるＩＰアドレスを表すツリー・データ構造体を生成することと、
フロー・データの少なくともサブセットにおける表されたＩＰアドレスの出現に従って、ツリー内のノードに重み（weight）を割り当てることと、
割り当てられた重みに従って、ネットワーク内の全てのＩＰアドレスに共通する最後の開始アドレス部分と関連したノードを識別することによって、ネットワークのＩＰアドレス範囲を検出することと、
ＩＰアドレス範囲を有するようにデバイスを自動的に構成し、デバイスの動作中、ネットワークの内部のＩＰアドレスと外部のＩＰアドレスを区別するのを可能にすることと、
を含む。
【０００７】
本発明を具体化する方法は、基本的なフロー・データからＩＰネットワークのアドレス範囲を自動的に検出することを可能にし、それによって、後の動作において内部のＩＰアドレスと外部のＩＰアドレスを区別するように、アドレス範囲を有するようにデバイスを自動的に構成し、後の動作において内部のＩＰアドレスと外部のＩＰアドレスを区別することができる。ネットワーク境界を横切るトラフィックを「見る」、スイッチ又はルータのようなネットワーク・デバイスにより処理されるフローに関する基本的なフロー・データだけが、操作のために必要になり得る。フロー・データは、少なくとも、デバイスがいずれの方向にも境界を横切って中継する各フロー、即ち、ネットワーク間（「インターネット」）フローについて取得される。好ましい実施形態はまた、ネットワークの内部から、ネットワーク・デバイスにより受信され、ネットワークに中継して戻されるフロー、即ち、イントラネット（内部）フローについてのフロー・データも取得する。いずれの場合も、各フローについて得られたフロー・データは、（１）フローのソースＩＰアドレス及び宛先ＩＰアドレス、又は（２）フローのソースＩＰアドレス及び宛先ＩＰアドレスのうちの一方、並びに、ネットワーク境界を横切るフローの方向を示す方向データ、のいずれかを含むことができる。後者の場合には、方向データは、ネットワークを出ていくフロー（出側フロー（egress flow））とネットワークに入るフロー（入側フロー（ingress flow））を区別する任意のデータとすることができる。どちらにしても、フロー・データにおけるＩＰアドレスを表すツリー・データ構造体が生成される。ツリーのいずれの分岐においても、連続したノードが、ＩＰアドレスの連続した部分と、従って、事実上、ＩＰアド連続的に狭くなるアドレス範囲と関連付けられる。共通した開始部分を有する、即ち共通のＩＰアドレス範囲にあるＩＰアドレスは、共通した少なくとも１つのノードを共有する。次いで、以下にさらに述べられるように、フロー・データの少なくともサブセットにおける表されたＩＰアドレスの出現に従って、重みがツリー・ノードに割り当てられる。これらの重みを用いて、ネットワーク内の全てのＩＰアドレスに共通する最後の開始アドレス部分と関連したノードを、ツリー構造体において識別することができる。これが、ネットワークのＩＰアドレス範囲を決める。これを用いて、検出されたアドレス範囲を有するようにデバイスを自動的に構成し、後の動作中に内部のＩＰアドレスと外部のＩＰアドレスを区別する。このように、本発明の実施形態は、アドレス範囲の自動構成のための実用的で効率的なシステムを提供する。このシステムは、ネットワークの内部のＩＰアドレスと外部のＩＰアドレスを区別することが必要である前述したもののような種々のシナリオにおいて、容易に適用することができ、手作業による構成に対する必要性を回避する。
【０００８】
用途に応じて、検出されたネットワーク・アドレスを有するように構成されるデバイスは、フロー・データを取得するフローを処理するネットワーク・デバイスであっても、又はそうでなくてもよい。しかしながら、特定の実施形態は、トラフィック・フローを監視し、ネットワーク・アドレス範囲を検出し、次に、そのように検出されたアドレス範囲に従ってトラフィック・フローを処理することによって、そうしたネットワーク・デバイスの自己構成をもたらす。そうしたデバイスは、例えば、内部フローを外部フローより優先するなど、何らかの規則ベースのフロー制御動作のためにトラフィック・フローを分類する、或いは、内部フロー又は外部フローのみを分析するフロー・ベースの監視動作のためにトラフィック・フローをフィルタリングする、フィルタリング又は分類機能を実施するスイッチ又はルータとすることができる。従って、幾つかの実施形態は、フロー・データを得るために、ネットワーク内のトラフィック・フローを監視することを含むことができる。他の実施形態においては、ネットワーク・デバイスにより処理されたフローから、フロー・データを得ることができ、別のデバイスが、検出されたアドレス範囲を有するように自動的に構成される。フロー・データは、例えば、ネットワーク・トラフィック記録から必要なデータを抽出することによって、ネットワークから直接的に又は間接的に得ることができる。実際に、幾つかの実施形態は、ネットワーク・トラフィック記録のオフライン分析において、特に、関心のあるフローに関するトラフィック記録データを事前フィルタリングするために用いることができる。これが、以下にさらに述べられる。
【０００９】
フロー・データにおけるＩＰアドレスを表すために生成されるツリー・データ構造体は、必要に応じて、例えばプリフィックス・ツリー、又は基数ツリー（radix tree）若しくはパトリシア・ツリー（Patricia tree）に基づくなど、種々の形態を取ることができる。以下にさらに述べられるように、こうしたツリー・データ構造体は、一般に、データ構造体における従属関係を表すための、ノード及びエッジを有する周知のエンティティである。本発明の実施形態においては、ノードに割り当てられる重みは、一般に、フロー・データの少なくとも一部分における表されたＩＰアドレスの出現によって決まる。例えば、フロー・データ全体におけるＩＰアドレスの出現の頻度に従って、或いは、例えば入側フロー又は出側フローのみに関連する、フロー・データの特定のサブセットにおいて、ＩＰアドレスが出現するかどうかに従って、重みを割り当てることができる。一般に、用いられる特定の重みの値、及びこれらをノードに割り当てる方法は、例えばフロー・データのコンテンツに従って変化することができ、これらの重みを用いてＩＰアドレス範囲を識別する正確な方法も、それに応じて変化することができる。関与する原理を例示するために、種々の例が以下に説明される。
【００１０】
本発明の第２の態様は、コンピュータに、本発明の第１の態様による方法を実施させるためのプログラム・コード手段を含むコンピュータ・プログラムを提供する。「コンピュータ」という用語は、最も一般的な意味で用いられ、コンピュータ・プログラムを実装するためのデータ処理能力を有するあらゆるデバイス、コンポーネント、又はシステムを含むことが理解されるであろう。さらに、本発明を具体化するコンピュータ・プログラムは、独立したプログラムを構成することができ、又はより大きいプログラムの一要素とすることができ、例えば、コンピュータ内にロードするために、ディスクなどのコンピュータ可読媒体内に、又は、電子伝送により具体化するなど、供給することができる。コンピュータ・プログラムのプログラム・コード手段は、コンピュータに、直接的に、或いは（ａ）別の言語、コード又は表記への変換及び（ｂ）異なる材料形態での再生の一方又は両方の後に、当該方法を実施させることが意図された１組の命令の、いずれかの言語、コード又は表記におけるあらゆる表現を含むことができる。
【００１１】
本発明の第３の態様は、ＩＰネットワークのためのアドレス範囲の自動検出のための装置を提供する。この装置は、ネットワーク境界を横切ってネットワーク・デバイスにより中継されるフローの各々について、フローのソースＩＰアドレス及び宛先ＩＰアドレスのうちの一方と、（ａ）ソースＩＰアドレス及び宛先ＩＰアドレスのうちの他方、並びに、（ｂ）ネットワーク境界を横切るフローの方向を示す方向データのうちの一方とを含むフロー・データを格納するためのメモリと、
ツリーの分岐内の連続したノードがＩＰアドレスの連続した部分と関連付けられ、且つ、共通した開始部分を有するＩＰアドレスが、ツリーにおいて、共通した少なくとも１つのノードにより表されるように、フロー・データにおけるＩＰアドレスを表すツリー・データ構造体を生成し、
フロー・データの少なくともサブセットにおける表されたＩＰアドレスの出現に従って、ツリー内のノードに重みを割り当て、
割り当てられた重みに従って、ネットワーク内の全てのＩＰアドレスに共通する最後の開始アドレス部分と関連したノードを識別することによって、ネットワークのＩＰアドレス範囲を検出し、
ＩＰアドレス範囲を有するようにデバイスを構成し、デバイスの動作中、ネットワークの内部のＩＰアドレスと外部のＩＰアドレスを区別することを可能にする、
ように適合された制御論理と、を含む。
【００１２】
本発明の第４の態様は、ＩＰネットワークのための自己構成型ネットワーク・デバイスを提供し、ここで、デバイスは、ネットワークの境界においてトラフィック・フローを処理するように動作可能である。このデバイスは、メモリと、
ネットワーク境界を横切ってデバイスにより中継される少なくとも各々のフローについて、フローのソースＩＰアドレス及び宛先ＩＰアドレスの一方と、（ａ）ソースＩＰアドレス及び宛先ＩＰアドレスの他方、及び、（ｂ）ネットワーク境界を横切るフローの方向を示す方向データのうちの１つとを含むフロー・データを得るために、トラフィック・フローを監視し、
フロー・データをメモリ内に格納し、
ツリーの分岐内の連続したノードがＩＰアドレスの連続した部分と関連付けられ、且つ、共通した開始部分を有するＩＰアドレスが、ツリーにおいて、共通した少なくとも１つのノードにより表されるように、フロー・データにおけるＩＰアドレスを表すツリー・データ構造体を生成し、
フロー・データの少なくともサブセットにおける表されたＩＰアドレスの出現に従って、ツリー内のノードに重みを割り当て、
割り当てられた重みに従って、ネットワーク内の全てのＩＰアドレスに共通する最後の開始アドレス部分と関連したノードを識別することによって、ネットワークのＩＰアドレス範囲を検出し、
ＩＰアドレス範囲を有するようにデバイスを構成し、ＩＰアドレス範囲に従ってトラフィック・フローを処理する、
ように適合された制御論理と、を含む。
【００１３】
一般に、本発明の一態様の実施形態を参照して特徴が本明細書において説明されている場合には、対応する特徴は、本発明の別の態様の実施形態において提供することもできる。
【００１４】
ここでは、例として、添付の図面を参照して本発明の好ましい実施形態を説明する。
【図面の簡単な説明】
【００１５】
【図１】本発明を具体化する自己構成型ネットワーク・デバイスの概略的なブロック図である。
【図２】図１のデバイスにおける自己構成プロセスの主要なステップを示す。
【図３】図２の自己構成プロセスで用いられる２つのアドレス範囲検出方法を説明する、例示的なネットワーク・システムを示す。
【図４】第１のアドレス範囲検出プロセスにおいて生成されるツリー・データ構造体を示す。
【図５】第２のアドレス範囲検出プロセスにおいて生成されるツリー・データ構造体を示す。
【発明を実施するための形態】
【００１６】
図１は、説明される動作に関与する主要なコンポーネントを示す、本発明を具体化するネットワーク・デバイスの簡略化された概略図である。この例では、ネットワーク・デバイスは、ローカル・ネットワーク２の境界にあるルータ１である。ルータ１は、ローカル・ネットワーク２内のデバイス間のトラフィック・フローを経路指定し、ネットワーク２と全体が４で示される１つ又は複数の外部ネットワークとの間のネットワーク境界を横切るフローを中継するための、全体が３で示される通常のネットワーク・インターフェース（ＩＦ）及びスイッチング回路を含む。ルータ１はまた、図ではコントローラ５で表される制御論理も含む。コントローラ５は、全体的にルータの動作を制御するための通常のルータ論理を含む。これと共に、コントローラ５は、付加的な機能を提供する、図ではフィルタ・モジュール６及びアドレス範囲検出器７で表される付加的な制御論理を含む。特に、ルータ１は、ローカル・ネットワーク２において動作可能なネットワーク監視システムの一部としてトラフィック・フローをフィルタリングするための、論理モジュール６及び７によって制御される自己構成型トラフィック・フィルタを具体化する。一般に、コントローラ５の制御論理は、ハードウェア、ソフトウェア、又はそれらの組み合わせの形で実装することができる。しかしながら、この例では、制御論理は、説明される機能を実施するように、ルータ１のプロセッサを構成するソフトウェアにより実装される。当業者には、本明細書での説明から、適切なソフトウェアが明らかであろう。以下でさらに説明されるように、ルータ１は、ルータの動作中に生成される種々のデータを格納するためのメモリ８をさらに含む。
【００１７】
ネットワーク・システムの動作において、ルータ１は、ＴＣＰ／ＩＰネットワーク・プロトコルに従った通常の方法で、ローカル・ネットワーク２又は外部ネットワーク４から受信したトラフィック・フローを経路指定する。さらに、フィルタ６は、トラフィック・フローをフィルタリングし、ネットワークの監視のために、ローカル・ネットワーク・トラフィックの詳細を記録するように適合される。より具体的には、フィルタ６は、ルータ１によって処理される全てのフローにアクセスすることができ、インターネット・フロー（即ち、ローカル・ネットワーク２の境界を横切ってルータ１により中継されるフロー）をフィルタリングにより除去し、残りのフローの詳細をトラフィック・データとしてメモリ８内に記録するように構成される。従って、フィルタ６は、ローカルのイントラネットのフロー、即ち、ローカル・ネットワーク２内のソース・デバイスからルータ１により受信され、ネットワーク２内の宛先デバイスに中継して戻されたフローだけの詳細を記録するように適合される。メモリ８内に記録されたトラフィック・データは、ネットワーク２内のネットワーク監視システム（図示せず）に定期的に伝送され、このネットワーク監視システムが、一般的に、ネットワーク２についてのトラフィック記録を照合し、保持する。フィルタ６は、Ｉｐｔａｂｌｅのような周知のフィルタリング・フレームワークに基づくことができ、ソースＩＰアドレス及び宛先ＩＰアドレス、ソース・ポート番号及び宛先ポート番号、伝送されるパケット数、接続時間等といった、いずれかの所望のトラフィック・データを記録するように適合させることができる。一般的に、ｔｃｐｄｕｍｐ、ＮｅｔＦｌｏｗネットワーク・プロトコル、又はＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）標準のＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｆｌｏｗ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｅｘｐｏｒｔ（ＩＰＦＩＸ）のような周知の技術に従って、トラフィック記録を収集し、ネットワーク監視システムに中継することができる。
【００１８】
フィルタ６の動作にとって重要なのは、ローカル・ネットワーク２内のＩＰアドレスと外部ネットワーク４内のＩＰアドレスを区別するための機能である。このため、ルータ１は、ネットワーク２のＩＰアドレス範囲を有するように構成される。アドレス範囲は、ここでは、ネットワーク２内の全てのデバイスに共通したネットワーク・アドレス・プリフィックスによって定められ、このネットワーク・アドレス・プリフィックは、ネットワーク・アドレス・プリフィックスとの一致がないかをＩＰアドレスにおいて調べられる特定のビットを示すサブネットのビット・マスクと共に、メモリ８内に格納される。このようにして、フィルタ６は、関連したアドレスのビットをメモリ８内に定められたアドレス・プリフィックスと比較することによって、内部のＩＰアドレスと外部のＩＰアドレスを区別する。
【００１９】
ネットワーク・システム内に最初に接続されるとき、ルータ１は、そのローカル・ネットワーク２についての適切なアドレス範囲を有するように構成しなければならず、これは、ネットワークの開発に従って又は定期的な再構成の後に、必要に応じて更新しなければならない。この実施形態において、ルータ１は、自己構成プロセスの一部としてそのローカル・ネットワークのアドレス範囲を検出する学習モードで動作可能である。学習モードは、システムにおけるルータ１の起動時に自動的に開始される。その後の自己構成プロセスの主要なステップが、図２のフローチャートに示される。
【００２０】
図２のステップ１０における学習モードの開始後、動作は、フィルタ論理６がルータ１により処理される全てのトラフィック・フローを監視するように動作する、ステップ１１に進む。これらは、ローカル・ネットワーク２の境界を横切って中継されるインターネット・フロー、及び、内部ネットワーク２から受信され、ネットワーク２に中継して戻される内部フローの両方を含む。各々のフローについて、フィルタ６は、所定のフロー・データを抽出し、フロー・データをメモリ８内に格納する。このフロー・データのコンテンツは、実行される特定のアドレス範囲検出方法によって決まるが、各々のフローについてのソースＩＰアドレス及び宛先ＩＰアドレスのうちの少なくとも一方を含む。フロー・データの具体例、及びこのデータを用いた異なるアドレス範囲検出方法は、以下で詳細に説明される。例えば所定の動作期間の後、十分なフロー・データが得られると、動作はステップ１２に進む。このステップにおいては、アドレス範囲検出器７が、フロー・データを分析して、フロー・データにおけるＩＰアドレスを表すツリー・データ構造体を生成する。この例においては、生成される構造体はプリフィックス・ツリーであり、こうしたツリーにおけるＩＰアドレスの表現が、次の例において説明される。次に、ステップ１３において、検出器７が、プリフィックス・ツリー内のノードに重みを割り当てる。以下でより詳細に説明されるように、重みは、フロー・データの全て又は所定のサブセットにおける表されたＩＰアドレスの出現に従って割り当てられる。次に、ステップ１４において、結果として得られるツリーが、検出器７により分析される。分析方法の例は、以下で説明されるが、いずれの場合にも、分析は、プリフィックス・ツリー内のノードに割り当てられた重みを用いて、ローカル・ネットワーク２における全てのＩＰアドレスに共通するアドレス・プリフィックスを識別する。これがネットワーク２のアドレス範囲を定め、ステップ１５において、結果として得られるプリフィックス及びサブネット・マスクが、メモリ８内に格納される。次いで、学習モードは終了し、フィルタリング動作のために、内部のＩＰアドレスと外部のＩＰアドレスを、従って、ローカル・フローとインターネット・フローを区別するためにメモリ８内に格納されたアドレス・プリフィックスを用いて、通常のフィルタリング動作が開始する。
【００２１】
図３は、図２の自己構成プロセスにおける２つのアドレス範囲検出方法の操作を説明する、簡単なネットワーク・システムを示す。示されるシステムは、サイトＡ及びサイトＢと表記された２つのサブネットを含む会社のネットワークＣを含む。サイトＡは、ルータ１のローカル・ネットワークである。図のインターネット（Ｉ）は、会社ネットワークＣの外部にある全てのネットワークを表す。説明のために、図２のステップ１１におけるフィルタ６の学習モード中、次の簡単なトラフィック・フローの組が、処理されると仮定する。
【表１】
0005613239.tif 000002
【００２２】
第１のアドレス範囲検出方法において、図２のステップ１１においてフィルタ６により格納されたフロー・データは、学習段階において監視された各フローについてのソースＩＰアドレス及び宛先ＩＰアドレスから成る。ステップ１２において、検出器７によりプリフィックス・ツリーが生成され、そこで、フロー・データにおけるＩＰアドレスの各々が、ノード及びエッジにより通常の方法で表される。図４は、上記に列挙されたＩＰアドレスについて生成されたプリフィックス・ツリーを示す。図では、各ノードは、該ノードが表すＩＰアドレスの開始部分、即ちアドレス・プリフィックスを示すように表記され、ゼロが、ＩＰアドレス・フォーマットの残り部分を埋める。アドレス・フォーマットの末尾にある「／」に続く数字は、各ノードについて定められたアドレス・プリフィックスのためのビット・マスクの長さを示す。従って、根ノード（root node）（一貫性を保つために０．０．０．０／０と表記される、事実上の概念ノード）から左側の分岐を辿ると、最初のノードは、９．０．０．０／８と表記され、１０進値９の最初の８ビット・バイトに対応するアドレス・プリフィックスを表す。次のノードは、親ノード（parent node）のプリフィックス及び１０進値４の第２のバイトと関連付けられ、９．４．の１６ビット・アドレス・プリフィックスを表す。また、最後のノードも同様に、その親のプリフィックス及び同じく１０進値１の第３のバイトと関連付けられ、９．４．１．の２４ビット・アドレス・プリフィックスを表す。従って、ツリーの分岐内の連続したノードは、ＩＰアドレスの連続した部分と関連付けられ、連続的により狭いＩＰアドレス範囲を表す。フロー・データにおける全てのＩＰアドレスが、ツリー内の分岐により表され、共通のプリフィックスを有するアドレスは、適切な開始ノードを共有する。フロー・データにおける一意のＩＰアドレスを識別するのに十分なノードを含むと、分岐は終了する。
【００２３】
この第１の方法においては、検出器７によるツリー・ノードの重み付け（図２のステップ１３）は、以下の通りである。学習段階において監視される各フローについて、ソースＩＰアドレス及び宛先ＩＰアドレスの各々に対応するツリーの葉（即ち、分岐の末端）におけるカウンタが、１だけインクリメントされる。従って、結果として得られるカウントは、監視されるフローについて得られたフロー・データにおける各々の分岐により表されるＩＰアドレスの出現数を表す。この例について得られたカウントは、図４の下部の数字の列で示される。次に、アドレス検出器７は、ツリーの葉から開始し、根ノードに向かって上に進み、葉のカウントを、分岐内の各ノードと関連した重み（ゼロに初期化される）に加える。代替的に、ストレージのオーバーヘッドがもう少し多い場合には、ノードの重みを、別個のステップとしてではなく、葉のカウンタと同時にインクリメントさせることができる。いずれの場合にも、各々の親ノードは、その子ノード（child node）の結合した重みと同等の重み、即ち、その親ノードからのサブツリーの重みを受け取る。ツリーの上部に到達すると、根ノードに割り当てられた重みは、ツリー全体の重みを表す。結果として生じる重みが、図内の各ノードの上に示される。これらのノードの重みを考慮すると、事実上、ＩＰアドレスの所与の部分と関連した各ノードに、フロー・データにおけるＩＰアドレス内の関連したアドレス部分の出現数に比例する重みが割り当てられることが示される。
【００２４】
重み付けされたツリーからローカル・ネットワークのアドレス範囲を識別するために検出器７により実施されるプロセス（図２のステップ１４）は、次のアルゴリズムにより表される。：すなわち、
【表２】
0005613239.tif 000003
このアルゴリズムを用いて、検出器７は、その重みが分岐内のツリー全体の重みの半分を超えない第１のノードを識別し、根ノードから最も重いノード（ｌ）を辿ることができる。次に、親ノード（Ｌ）は、ローカル・ネットワーク２を表すサブツリーの根となる。従って、事実上、アルゴリズムは、最も重い重みを有するサブツリーを常に選択しながらツリーを下降する。アルゴリズムが、その重みがツリー全体の重みの半分を超えないサブツリーに到達すると、そのサブツリーはローカル・ネットワーク２の内部にある。そのサブツリーの親ノードが、ローカル・ネットワークを表すサブツリーの根ノードＬである。このノードＬは、ローカル・ネットワーク２内の全てのＩＰアドレスに共通した最後の開始アドレス部分（ここでは８ビット・バイト）と関連したノードであり、従って、ローカル・ネットワークのアドレス・プリフィックスを表す。従って、ノードＬと関連したアドレス・プリフィックスが、ローカル・ネットワークのアドレス範囲を定める。この分析を図４のツリーに適用すると、重み１０のノードがノードＬとして識別され、ローカル・ネットワーク２は、図内の円で囲まれる。従って、ネットワーク２のアドレス範囲は、９．４．の１６ビット・アドレス・プリフィックスにより定められる。
【００２５】
上記の方法の論理的根拠は、次の通りである。インターネット・フローの場合、ソースＩＰアドレス及び宛先ＩＰアドレスの一方はローカル・ネットワーク２の内部にあり、他方は外部にある。ローカル・フローの場合、両方のアドレスがネットワーク２内にある。この場合のように、学習段階においてローカル・フローとインターネット・フローの両方が監視されると仮定すると、フロー・データにおけるローカル・ネットワーク２内のＩＰアドレスの出現数が、ネットワーク２の外部のＩＰアドレスの出現数を上回らなければならない。つまり、ローカル・ネットワーク２内のＩＰアドレスは、フロー・データにおけるＩＰアドレスの出現の半分以上を表す。学習段階においてローカル・フローが監視されない場合、即ちインターネット・フローのみが監視される場合、内部のＩＰアドレスと外部のＩＰアドレスの出現が等しくなることに留意されたい。言い換えれば、ローカル・ネットワーク２内のＩＰアドレスは、フロー・データにおけるＩＰアドレスの出現のちょうど半分を表す。しかしながら、プリフィックス・ツリーが、正確に、同じ（最大の）重みを有する２つの隣接するサブツリーから成るのではなければ、上記の方法は、依然として正確にローカル・ネットワークを識別する。この単純な方法は、多くのシナリオに適しており、特に内部フローとインターネット・フローの両方が監視される場合に適しているが、次の第２のアドレス範囲検出方法は、今述べた潜在的な「均衡型ツリー（balanced-tree）」問題を克服する。
【００２６】
第２の方法においては、図２のステップ１１においてフィルタ６により格納されるフロー・データが、学習段階において監視された各フローについてのソースＩＰアドレスのみを含む。フロー・データはまた、各フローについての方向データを含む。各々のインターネット・フローにおいて、この方向データは、ローカル・ネットワーク２の境界を横切るフローの方向、即ちフローが（ネットワーク２に入る）入側フローであるか、又は（ネットワーク２を出ていく）出側フローであるかを示す。このデータは、データ・パケットがルータ１に出入りする特定のインターフェースを監視することによって得ることができ、例えばＮｅｔＦｌｏｗ方向フィールドによって提供される。この例では、方向データは、内部フローを入側及び出側の両方として分類する。ステップ１２において、プリフィックス・ツリーが検出器７により生成され、フロー・データにおけるＩＰアドレスを、ここでは既に列挙した監視されたフローについてのソースＩＰアドレスを表す。このツリーは、第１の方法について上述されたように生成され、図５に示される。
【００２７】
第２の方法における検出器７によるツリー・ノードの重み付け（図２のステップ１３）は、次の通りである。学習段階において監視される各フローについて、フローのソースＩＰアドレスに対応するツリーの葉におけるカウンタは、そのフローが出側フローである場合には＋１だけ、そのフローが入側フローである場合には−１だけインクリメントされる。この例では内部フローが入側及び出側の両方として分類されるので、この場合のカウンタは、＋１及び−１だけインクリメントされ、正味インクリメントはゼロとなる。ここで監視されるフローと関連したカウント値は、次の通りである。
【表３】
0005613239.tif 000004
この例において得られたカウント値が、図５の下部の数字の列で示される。ここでの正のカウント値は、出側フローに対応するフロー・データのサブセット内の分岐によって表されるソースＩＰアドレスの出現数を表す。ここでの負のカウント値は、入側フローに対応するフロー・データのサブセット内の分岐によって表されるソースＩＰアドレスの出現数を表す。既述のように、次に、アドレス検出器７は、ツリーの葉から開始し、根ノードに向けて上に進み、葉のカウントに、分岐内の各ノードと関連した重み（ゼロに初期化された）を加える。（ここでも、好ましい場合には、葉のカウンタと同時にノードの重みをインクリメントすることができる。）従って、各々の親ノードは、その子ノードの結合した重みと同等の重み、即ち、その親ノードからのサブツリーの重みを受け取り、根ノードに割り当てられた重みは、ツリー全体の重みを表す。結果として生じるノードの重みを考慮すると、事実上、出側フローのサブセット内のＩＰアドレスの所与の部分と関連した各ノードに、そのサブセットにおける関連したＩＰアドレス部分の出現数に比例する正の極性の重みが割り当てられていること、及び、入側フローのサブセット内の（即ち、出側フローのサブセット内にはない）ＩＰアドレスの部分と関連した各ノードに、出側フローのサブセットの外部にある関連したＩＰアドレス部分の出現数に比例する反対の極性の重みが割り当てられることが示される。
【００２８】
重み付けされたツリーからローカル・ネットワークのアドレス範囲を識別するために（図２のステップ１４）、検出器７は、次のアルゴリズムを実装する。
１−根ノードから開始する
２−正の重みを有する子ノードを選択する（他の全ては、定義により、負である）
３−正の重みを有する１つより多いサブツリーが見つかるまで、２を繰り返す
その結果、現在のノード（Ｌ）は、ローカル・ネットワーク２を表すサブツリーの根となる。この場合も、このノードＬは、ローカル・ネットワーク２内の全てのＩＰアドレスに共通する最後の開始アドレス部分（ここでは８ビット・バイト）と関連したノードであり、従って、ローカル・ネットワークのアドレス・プリフィックスを表す。従って、事実上、ネットワークのＩＰアドレス範囲は、ツリーの根ノードから延びる分岐において、出側フローのサブセット内のＩＰアドレス部分と関連付けられ、且つ、そのサブセット内のＩＰアドレス部分と関連した１つより多い子ノードを有する第１のノードを識別することによって検出されることが分かる。この分析を図５のツリーに適用すると、重み＋３のノードがノードＬとして識別され、ローカル・ネットワーク２は、図の円で囲まれている。従って、前述のように、ネットワーク２のアドレス範囲は、１６ビットのアドレス・プリフィックス９．４．により識別される。
【００２９】
第２の方法の論理的根拠は、次の通りである。根からツリーを通って移動すると、正の重みを有するサブツリー（即ち、ソースＩＰアドレスが出側フローのためのものである）内にある限り、ローカル・ネットワークに向かって進んでいく。この基準によりこれ以上サブツリーを識別できなくなると、ローカル・ネットワークの根ノードに収斂する。
【００３０】
上述した方法の両方とも、フローのサンプリングがうまく働くように示されている。しかしながら、いずれの場合にも、ローカル・ネットワークの根ノードの識別を可能にする基となる原理に従うならば、異なる形で重み付けを実行することができることに留意されたい。例えば、上記の第２の方法において、重みは主として、入側フローと出側フローを区別する役目を果たす。従って、内部フローを考慮する必要はなく、必要に応じて監視する必要さえ全くない。さらに、入側フロー及び出側フローについてのＩＰアドレスを区別する、いずれの重み付けシステムを用いることもできる。例えば、重み（単純なビット・フラグとすることもできる）を、出側フローについてのソース・アドレスのみに割り当て、入側フローについてのアドレスは重み付けされない（フラグが立てられない）ままにしてもよい。次に、上記のアルゴリズムのステップ２は、単に重み付けされた（フラグが立てられた）子ノードに従うだけである。一般に、ソースＩＰアドレスがツリーの形で表される場合、出側フローに対応するフロー・データのサブセットにおける表されたＩＰアドレスの出現に従って、重みをノードに割り当てることができる。監視されるフローについての宛先アドレスを用いて、同じ原理を適用することもできる。つまり、前述のように、フロー・データは、方向データと共に、監視されるフローの各々についての宛先ＩＰアドレスを含むことができる。次に、入側フローに対応するフロー・データのサブセットにおける表されたＩＰアドレスの出現に従って、重みをツリー内のノードに割り当てることができる。
【００３１】
上述した実施形態は、後のフィルタリング操作で用いるために、ルータ１において、ローカル・ネットワークのアドレス範囲の自動的な自己構成を可能にすることが分かるであろう。学習モードは、ルータを最初にインストールするときに、又は、予めインストールされたルータ１にフィルタリング機能をインストールするときに開始することができ、手作業による構成に対する必要性を回避する。自己構成プロセスは、例えば、ローカル・アドレス範囲に影響を与える可能性があるネットワーク構造の毎回の変更後に、必要なときにいつでも繰り返すことができる。代替的に、定常学習モードにおいて、コントローラ５を動作可能にし、事実上、バックグラウンドで一定の学習を実行し、必要に応じてプリフィックス・ツリーを継続的に更新し、あらゆる変更の後にアドレス範囲をチェックすることができる。従って、アドレス範囲の手作業による再構成を必要とせずに、ネットワーク・セグメントを付加又は除去することができる。
【００３２】
上述した特定の実施形態に対して、種々の代替案及び修正を考えることができる。例えば、上記の単純なシナリオにおいて、図４及び図５に示されるサブネット・マスクは、８ビット・バイトの倍数の長さのものである。従って、サブネット・マスクは、ＩＰアドレス・フォーマットのバイトと整合される。上記で用いられたプリフィックス・ツリーは、このような場合には最も都合良く用いられる。しかしながら、本発明の実施形態は、非バイト整合のサブネット・マスクを有するシステムに容易に適用することができる。そのような場合には、ツリー・データ構造体のために、基数ツリー又はパトリシア・ツリーを好都合に用いることができる。こうしたツリー構造体は周知であり、ここでは詳細に論じる必要はない。しかしながら、簡単に説明すると、こうしたツリーをビット毎に構成し、いずれかの単一の子の親ノードをその子と併合することができ、その結果、異なるノードで表されるアドレス部分は、様々な長さのものにすることができ、従って、異なるプリフィックス長により定められる異なるビット・マスク及びネットワーク・アドレス範囲に適合する。ここでこれらのツリーを生成するための詳細なプロセスは、当業者には容易に明らかであろう。ノードに重み付けし、アドレス範囲を識別するための上述した同じ基本的な原理は、こうした実施形態に等しく適用される。
【００３３】
本発明を具体化するアドレス範囲の自動検出方法は、何らかの理由でローカル・トラフィックとインターネット・トラフィックを区別することを必要とする、スイッチ、ルータ、又は他のエクスチェンジ・ポイント・デバイスのような、いずれかのネットワーク・デバイスにおいて用いることができる。トラフィックをフィルタリングする代わりに、こうしたデバイスは、例えばフロー制御又は監視の目的で、トラフィックを分類する必要があることがある。こうしたフィルタ又は分類器は、例えば、ネットワーク・ファイアウォールにおいて用いることができる。言うまでもなく、フィルタリング又は分類規則は、フローが内部フローであるか又は外部フローであるかに加えて、フローについての更なる情報に基づくことができる。ここでの一例は、例えばファイアウォール・システムにおいて、アプリケーションによりトラフィックをフィルタリング又は分類するのに用いることができるソース・ポート番号及び宛先ポート番号である。こうしたポート番号情報をフロー・データとして記録し、後の処理で用いるために、必要に応じてツリー構造体に付加することができる。
【００３４】
上記ではルータ１においてトラフィックを直接監視することによってフロー・データを得るが、他の実施形態においては、別のネットワーク・デバイスから、又はネットワーク・トラフィック記録から必要とされるデータを抽出することによって、フロー・データを得ることができる。実際に、幾つかの実施形態は、ネットワーク・トラフィック記録のオフライン分析において、特に、当該フローについてのトラフィック記録データを事前フィルタリングするために用いることができる。典型的なトラフィック記録は、膨大な量のデータを含むことができるが、例えば、特定のネットワークからのトラフィック、又は特定のネットワーク内部のトラフィックなど、一部だけが分析の対象となることが多い。従って、本発明を具体化する方法は、トラフィック記録から得られたフロー・データを処理して関心あるネットワーク・アドレス範囲を識別するデバイスにおいて用いることができ、次に、このアドレス範囲は、トラフィック記録内の関連したフローを識別するための後の分析で用いるために記録される。従って、こうしたデバイスは、事実上、ネットワーク・トラフィック・データのための自己構成型前置フィルタとして動作することができる。しかしながら、明らかに、必要に応じて基となる機能をトラフィック記録分析システムの１つより多くのデバイスにわたって分散させることができる。いずれにしても、こうした事前フィルタリング・システムは、より一般的なトラフィック記録から必要とされるデータを効率的に抽出することができ、要件に応じてトラフィックを能動的にフィルタリングするための、ネットワーク・セグメントの手作業による構成に対する必要性を回避することができる。
【００３５】
本発明の範囲から逸脱することなく、説明された例示的な実施形態に対して、他の多数の変更及び修正を行い得ることが認識されるであろう。
【符号の説明】
【００３６】
１：ルータ
２：ローカル・ネットワーク
３：ネットワーク・インターフェース及びスイッチ回路
４：外部ネットワーク
５：コントローラ
６：フィルタ・モジュール
７：アドレス範囲検出器
８：メモリ
【図１】
0005613239.tif 000005
【図２】
0005613239.tif 000006
【図３】
0005613239.tif 000007
【図４】
0005613239.tif 000008
【図５】
0005613239.tif 000009