(57)【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサと、
第1のセンサおよび第2のセンサによって受信されたパケットを取得するように構成されたデータ収集モジュールと、
前記第1のセンサから前記データ収集モジュールによって取得されたパケットのための第1のフットプリントと、前記第2のセンサから前記データ収集モジュールによって取得されたパケットのための第2のフットプリントとを生成するように構成されたダイジェスト情報ジェネレータであって、前記第1のフットプリントと前記第2のフットプリントとはハッシュ値を有し、前記ハッシュ値の数は、伝送プロトコルによって指定された伝送単位サイズに基づいて決定される、ダイジェスト情報ジェネレータと、
前記第2のフットプリントが前記第1のフットプリントと一致するか否かを判定するように構成された分析モジュールとを備え、
前記データ収集モジュール、前記ダイジェスト情報ジェネレータ、および前記分析モジュールは、前記1つまたは複数のプロセッサによって実現される、パケット送信システム。
【請求項２】
前記分析モジュールは、前記第2のフットプリントが前記第1のフットプリントと一致すると判定したとき、前記第1のフットプリントおよび前記第2のフットプリントに基づいてルーティング経路を判定するように構成された、請求項1に記載のシステム。
【請求項３】
複数のメモリスロットを有する循環バッファをさらに備え、前記分析モジュールは、前記複数のメモリスロットを有する循環バッファに前記第1のフットプリントおよび前記第2のフットプリントを記憶するように構成された、請求項1に記載のシステム。
【請求項４】
前記ダイジェスト情報ジェネレータは、前記パケットのサイズが、最大伝送単位サイズを超えたと判定したとき、前記第1のフットプリントおよび前記第2のフットプリントのためのハッシュ値をさらに計算するように構成された、請求項1に記載のシステム。
【請求項５】
前記フットプリントは、前記パケットのタイムスタンプを含む、請求項1に記載のシステム。
【請求項６】
前記分析モジュールは、
前記第2のフットプリントが前記第1のフットプリントと一致しないと判定したとき、前記第2のフットプリントをデータバスへ送信し、
前記第2のフットプリントが前記第1のフットプリントと一致すると判定したとき、前記第2のフットプリントを少なくとも1つのメモリスロットへ送信するように構成された、請求項1に記載のシステム。
【請求項７】
通信ネットワークにおいてパケットのルーティング経路を推定するための方法であって、
データ収集モジュールにより、第1のセンサおよび第2のセンサによって受信されたパケットを取得するステップと、
ダイジェスト情報ジェネレータにより、前記第1のセンサから前記データ収集モジュールによって取得されたパケットのための第1のフットプリントと、前記第2のセンサから前記データ収集モジュールによって取得されたパケットのための第2のフットプリントとを生成するステップであって、前記第1のフットプリントと前記第2のフットプリントとはハッシュ値を有し、前記ハッシュ値の数は、伝送プロトコルによって指定された伝送単位サイズに基づいて決定される、ステップと、
分析モジュールにより、前記第2のフットプリントが前記第1のフットプリントと一致するか否かを判定するステップとを有し、
前記データ収集モジュール、前記ダイジェスト情報ジェネレータ、および前記分析モジュールは、1つまたは複数のプロセッサによって実現される、方法。
【請求項８】
前記第2のフットプリントが前記第1のフットプリントと一致するとき、前記第1のフットプリントおよび前記第2のフットプリントに基づいてルーティング経路を判定するステップ、をさらに有する請求項7に記載の方法。
【請求項９】
複数のメモリスロットを有する循環バッファに前記第1のフットプリントおよび前記第2のフットプリントを記憶するステップをさらに有する請求項7に記載の方法。
【請求項１０】
前記パケットのサイズが、最大伝送単位サイズを超えたとき、前記第1のフットプリントおよび前記第2のフットプリントのためのハッシュ値をさらに計算するステップ、をさらに有する請求項7に記載の方法。
【請求項１１】
前記フットプリントは、前記パケットのタイムスタンプを含む、請求項7に記載の方法。
【請求項１２】
前記第2のフットプリントが前記第1のフットプリントと一致しないとき、前記第2のフットプリントをデータバスへ送信するステップと、
前記第2のフットプリントが前記第1のフットプリントと一致するとき、前記第2のフットプリントを少なくとも1つのメモリスロットへ送信するステップと
をさらに有する請求項7に記載の方法。
【請求項１３】
通信ネットワークにおけるパケットのルーティング経路を推定するための方法を実行するために、コンピュータによって実行されるコンピュータプログラムを記憶する非一時的なコンピュータ読み取り可能な媒体であって、前記方法は、
データ収集モジュールにより、第1のセンサおよび第2のセンサによって受信されたパケットを取得するステップと、
ダイジェスト情報ジェネレータにより、前記第1のセンサから前記データ収集モジュールによって取得されたパケットのための第1のフットプリントと、前記第2のセンサから前記データ収集モジュールによって取得されたパケットのための第2のフットプリントとを生成するステップであって、前記第1のフットプリントと前記第2のフットプリントとはハッシュ値を有し、前記ハッシュ値の数は、伝送プロトコルによって指定された伝送単位サイズに基づいて決定される、ステップと、
分析モジュールにより、前記第2のフットプリントが前記第1のフットプリントと一致するか否かを判定するステップとを有する、非一時的なコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、通信ネットワークに向けられている。特に、本発明は、ルーティング情報を判定するための方法に向けられている。
【背景技術】
【０００２】
通信ネットワークは、石油およびガスの精製所において使用される現代の処理制御システムにおいて遍在する。通信ネットワークは、機器と分散制御システム(DCS)との間のデュプレックス通信を提供するように設計されることが可能である。分散制御システムは、精製所または製造プラントにおける機器および様々なサブシステムを制御するための中央指令センタの役割をする。DCSは、制御室の操作者が制御指令を送信および受信することによって処理制御システムの動作を開始および制御するためのヒューマンマシンインターフェース(HMI)を含む。制御指令は、イーサネット(登録商標)または無線ネットワークのような通信ネットワークによって接続されたコントローラへ送信される。同じように、コントローラは、制御される機器に関する情報で応答する。この情報は、処理制御システムによって制御される処理をモニタするために使用される。
【０００３】
通信ネットワークでは、ルーティングは、データ送信のために、通信ネットワークにおいて最短の、または、コストで効率的な経路を選択することを含む。ルーティングは、ルータ、スイッチ、ブリッジ、ファイアウォール、およびゲートウェイのような一般的なネットワークデバイスを使用することを含む。主に、ルータは、2つの異なる通信ネットワーク間でパケットを転送するために使用されるデバイスである。しかしながら、通信ネットワーク内では、スイッチ、ファイアウォール、ゲートウェイ、およびパーソナルコンピュータのようなデバイスは、パケットを送信し受信する。
【０００４】
パケット交換ネットワークでは、インターネットプロトコル(IP)のような確立されたネットワーキングプロトコルが使用される。これらのプロトコルは動的であり、いくつかのネットワークハードウェアにおける故障が、通信ネットワークにおいて生じるときでさえ、ネットワークが連続的に機能することを可能にするように設計されており、これによって、ネットワークを復元力のあるものにしている。言い換えれば、ネットワークにおいてパケットが移動する経路を調節するために、ネットワーク容量、利用度、コスト、および利用可能性のような変化に対してプロトコルが応答する。ルーティング経路は、送信元から宛先へ達するためにパケットが採った経路であり、通信パターンを分析するために使用される。ネットワークセキュリティアプリケーションは、パケット挙動におけるパターンを分析するために、パケットのルーティング経路を使用する。
【０００５】
処理プラントでは、そのネットワークの異なる部分が、ファイアウォールのようなネットワークセキュリティデバイスによって分離され、アクセス制御リストが、特定の人員またはベンダに利用可能な許可に基づいて、ネットワークの部分へのアクセスを許可または拒否する。ネットワークのすべての部分へのアクセス権がなければ、パケットの送信元は検証されることが可能でない。また、ネットワーク内のコンピュータが、ウィルスまたはマルウェアに感染したならば、パケットは、偽の送信元IPアドレスを含めるスプーフィングの結果であり得る。これらの場合には、ルーティング情報、主にパケットの送信元は、利用可能でない。利用可能な唯一の送信元IPアドレスは、パケット自体に存在する送信元IPアドレスである。さらに述べると、パケットが、ルータのような1つのネットワークデバイスから他のネットワークデバイスへホップするとき、送信元IPアドレスが置換されるので、パケットのルーティング経路は、現在の送信元IPアドレスからは明らかではない。したがって、ネットワークにおける機密漏洩を阻止または識別するためにパケットの送信元を追跡するために、全体のルーティング経路を識別することが必要になっている。
【０００６】
図3に示されるようなルーティング経路推定の既存の方法は、データバスへ接続されたコンピュータにおいてルーティング経路の推定を実行させる。しかしながら、そのような方法は、ルーティング経路を推定する分析の前に、パケットを処理しないので、効果的でないことがあり得る。
【０００７】
さらに、パケットは複数のルータを通過し、パケットがそれらを通過すると、同じパケットに関する複製情報が、複数のルータにおいて受信され得る。パケットの経路を識別するために、異なるルータにわたる同じパケットの複製を解決することは避けられない。
【発明の概要】
【課題を解決するための手段】
【０００８】
本発明の1つの態様では、パケット送信システムは、限定されないが、1つまたは複数のプロセッサ、データ収集モジュール、ダイジェスト情報ジェネレータ、および分析モジュールを含み得る。データ収集モジュールは、第1のセンサおよび第2のセンサによって受信されたパケットを取得するように構成され得る。ダイジェスト情報ジェネレータは、第1のセンサからデータ収集モジュールによって取得されたパケットのための第1のフットプリントと、第2のセンサからデータ収集モジュールによって取得されたパケットのための第2のフットプリントとを生成するように構成され得る。分析モジュールは、第2のフットプリントが第1のフットプリントと一致するか否かを判定するように構成され得る。データ収集モジュール、ダイジェスト情報ジェネレータ、および分析モジュールは、1つまたは複数のプロセッサによって実現される。
【０００９】
いくつかの実施形態では、ルーティング経路を推定するためのシステムは、限定されないが、通信ネットワークにおいてパケットが通過したルータのリストを含み得る。システムはまた、限定されないが、プロセッサ、データ収集モジュール、ダイジェスト情報ジェネレータ、および分析モジュールを含み得る。データ収集モジュールは、少なくとも2つのセンサの各々からパケットを取得するように構成され得る。ダイジェスト情報ジェネレータは、少なくとも2つのセンサの各々からデータ収集モジュールによって取得された各パケットのためのフットプリントを生成するように構成され得る。分析モジュールは、生成された少なくとも1つのフットプリントの各々が、最後に生成されたフットプリントと一致するか否かを比較するように構成され得る。ここで、データ収集モジュール、ダイジェスト情報ジェネレータ、および分析モジュールは、1つまたは複数のプロセッサによって実現される。
【００１０】
本発明の実施形態によれば、データ収集モジュールは、少なくとも2つのセンサからパケットを取得するように構成され得る。少なくとも2つのセンサは各々、1つの共通のルータに接続される。ルータは、通信ネットワークの一部である。本発明のいくつかの実施形態によれば、ルータは、2つの異なるネットワーク間の通信において重要な役割を果たす。各ネットワークは、異なるネットワークとの相互接続を含む。
【００１１】
実施形態では、ダイジェスト情報ジェネレータは、少なくとも1つのフットプリントを含めるようにフットプリントを生成するように構成され得る。フットプリントの生成は、少なくとも1つのハッシュ値の計算を含む。一方、ハッシュ値は、少なくとも1つのハッシュ関数を用いて生成される。
【００１２】
本発明の別の実施形態では、フットプリントは、限定されないが、パケットのタイムスタンプを含み得る。このタイムスタンプは、パケットが受信された時に、データ収集モジュールにおいて生成され得る。
【００１３】
本発明のいくつかの実施形態では、フットプリント内に存在するハッシュ値の数は、プロトコルによって指定されたパケットのサイズおよび最大伝送単位サイズを用いて決定され得る。
【００１４】
実施形態では、分析モジュールは、同じフットプリントが、最後に生成されたフットプリントに見出されないとき、データバスへフットプリントを送信する比較動作を実行し、同じフットプリントが、最後に生成されたフットプリントに見出されたとき、少なくとも1つのメモリスロットへフットプリントを送信するように構成され得る。
【００１５】
別の実施形態では、パケットのために生成されたフットプリントが、最後に生成されたフットプリントと一致することが見出されたとき、パケットのルーティング経路は、パケットのタイムスタンプの順序を用いて推定されることが可能である。
【００１６】
いくつかの実施形態によれば、通信ネットワークを通過するパケットのルーティング経路推定のための方法は、限定されないが、(i)データ収集モジュールにより、少なくとも2つのセンサの各々からパケットを受信すること、(ii)ダイジェスト情報ジェネレータにより、少なくとも2つのセンサの各々から受信された各パケットのためのフットプリントを生成すること、および(iii)分析モジュールにより、生成された少なくとも1つのフットプリントの各々が、最後に生成されたフットプリントと一致するか否かを比較すること、を含み得る。
【００１７】
本発明の実施形態では、少なくとも2つのセンサの各々が、少なくとも2つのルータの対応する1つに接続され得る。フットプリントはまた、ハッシュ関数を用いて生成されるハッシュ値を含む。フットプリントは、本発明のいくつかの実施形態において、パケットのタイムスタンプを含み得る。
【００１８】
本発明のいくつかの実施形態では、フットプリントに存在するハッシュ値の数は、プロトコルによって指定されたパケットのサイズおよび最大伝送単位サイズを用いて決定される。
【００１９】
本発明の別の実施形態では、この方法は、限定されないが、フットプリントは、最後に生成されたフットプリントにおいて同じフットプリントが見出されないときデータバスへ、または、最後に生成されたフットプリントにおいて同じフットプリントが見出されたとき少なくとも1つのメモリスロットへ送信される比較を実行することをさらに含み得る。
【００２０】
本発明のいくつかの実施形態では、この方法は、限定されないが、生成されたフットプリントが、最後に生成されたフットプリントと一致するとき、パケットのタイムスタンプの順序を用いて、パケットのためのルーティング経路を判定することをさらに含み得る。
【００２１】
本発明のいくつかの実施形態では、非一時的なコンピュータ読み取り可能な媒体は、通信ネットワークにおけるパケットのルーティング経路を推定するための方法を実行するために、コンピュータによって実行されるコンピュータプログラムを記憶する。この方法は、限定されないが、データ収集モジュールにより、第1のセンサおよび第2のセンサによって受信されたパケットを取得すること、ダイジェスト情報ジェネレータにより、第1のセンサからデータ収集モジュールによって取得されたパケットのための第1のフットプリントと、第2のセンサからデータ収集モジュールによって取得されたパケットのための第2のフットプリントとを生成すること、および、分析モジュールにより、第2のフットプリントが第1のフットプリントと一致するか否かを判定すること、を含み得る。
【図面の簡単な説明】
【００２２】
【図１】本発明のいくつかの実施形態が存在する環境の一例の図である。
【図２】本発明のいくつかの実施形態による、通信ネットワークの一部における例示的なパケットフローの図である。
【図３】関連技術におけるルーティング経路推定における処理のフローチャートである。
【図４】本発明の実施形態による、ルーティング経路を推定する方法の一例のフローチャートである。
【図５】本発明のいくつかの実施形態による、IPパケットのデータ構造の図である。
【図６】本発明のいくつかの実施形態による、フットプリント構造の生成を示すフローチャートである。
【図７】本発明のいくつかの実施形態による、フットプリントのデータ構造の図である。
【図８】本発明のいくつかの実施形態による、循環バッファのデータ構造の図である。
【図９】本発明のいくつかの実施形態による、ルーティング経路推定のためのフローチャートである。
【図１０】本発明のいくつかの実施形態による、ルーティング情報を判定するためのシステムのブロック図である。
【図１１】本発明のいくつかの実施形態による、システムの一例を示す図である。
【発明を実施するための形態】
【００２３】
本発明を説明する目的のために、いくつかの用語が、以下に定義される。明示的に定義されている場合を除いて、明細書および特許請求の範囲内の用語は、当業者に明らかである意味を有するように理解されるものとする。
【００２４】
「通信ネットワーク」は、ケーブル媒体または無線媒体のような通信インフラストラクチャを介して接続されたネットワーク化されたコンピューティングデバイスの集合を指す。通信ネットワークの例は、限定されないが、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)を含む。
【００２５】
「ルーティング」は、通信ネットワークにおけるネットワーク化されたコンピューティングデバイスの中で利用可能な複数の経路の中から経路を選択する処理を指す。
【００２６】
「パケット交換ネットワーク」は、パケットと呼ばれる離散的な固定サイズのブロックの形態で、コンテンツタイプ、サイズ、または構造に関係なく、すべてのデジタル通信を伝送することが可能な通信ネットワークを指す。パケット交換ネットワークのいくつかの例は、限定されないが、インターネットおよびローカルエリアネットワーク(LAN)を含む。パケット交換ネットワークの一例は、インターネットプロトコル(IP)を基にしたネットワークであり、規格RFC 791に規定された仕様に従って、ネットワークデバイスによって、各パケットが生成され、送信される。IPパケットは、ヘッダセクションおよびペイロードセクションを含む。ヘッダは、情報、限定されないが、送信元IPアドレス、宛先IPアドレス、タイムスタンプ、および様々なパラメータを含む。ペイロードセクションは、パケットによって送信されるデータを含む。
【００２７】
「産業制御ネットワーク」は、石油精製所における処理制御のように、産業環境における物理的な機器またはデバイスを監視および制御するために使用される相互接続された機器を備える通信ネットワークを指す。産業制御ネットワークは、高い信頼性、故障の過酷さ、パケットラウンドトリップタイム、およびデータパケットサイズに関連する特定の要件で、従来の通信ネットワークとは異なる。たとえば、産業制御ネットワークにおけるパケットラウンドトリップタイムは、250マイクロ秒から10ミリ秒の範囲に及ぶ。これは、従来のネットワークで使用される50ミリ秒のパケットラウンドトリップタイムよりも比較的短い。産業制御ネットワークにおけるデータパケットサイズは、従来のネットワークよりも小さい。単一の測定値を送信する例を考慮されたい。それは、通常、64バイトで始まるパケットサイズを有する従来のネットワークと比較して、オーバヘッド情報とあわせて数バイトのオーダである。
【００２８】
「産業イーサネット(登録商標)」は、配線およびシグナリングのためにイーサネット(登録商標)規格を使用する通信ネットワークを指すが、より高い温度、振動、電気的なノイズ、および、処理プラントまたは製造施設のその他の動作状態に耐えることが可能な堅固なコネクタの使用を伴う。製造プラントまたは処理プラントのような産業に存在する動作状態は、摂氏数100度のオーダのより高い温度、湿度、ほこり、および振動の近くに配置される機器を含む。これは、摂氏18〜27度の空調されたエリアのようなクリーンで温度制御された環境で動作する従来のネットワークとは対照的である。
【００２９】
「ハブ」すなわちネットワークハブは、物理レイヤまたはOSI(オープンシステムインタコネクション)モデルのレイヤ1における接続を可能にすることによって、ネットワークセグメントを形成するために、複数のイーサネット(登録商標)デバイスを一緒に接続することを可能にするネットワーキングデバイスを指す。
【００３０】
「スイッチ」すなわちネットワークスイッチは、データリンクレイヤ、またはOSIモデルのレイヤ2における接続を可能にすることによってパケット交換の機能を実行するネットワーキングデバイスを指す。スイッチは、パケットを、意図されたネットワークデバイスへ送信することによって、パケットのフローを管理することが可能である。スイッチは、接続されたすべてのデバイスへパケットを送信するハブとは異なり、特定のデバイスへパケットを方向付ける能力のために、インテリジェントなハブと考えられる。したがって、スイッチは、結合されている特定のデバイスへのパケットのアドレシングによって、ハブよりも高いデータ送信レートを有する。
【００３１】
「ルータ」は、通信ネットワーク間でパケットを転送する機能を実行する専用のネットワーキングハードウェアを指す。ルーティングテーブルは、後続するネットワークへパケットを方向付けるようにルータにおいて設定される。ルータは、レイヤ3、すなわち、OSIモデルのネットワークレイヤにおいて動作する。
【００３２】
「データグラム」は、送信の基本単位、送信元および宛先コンピュータと伝送ネットワークとの間での以前の交換に依存することなく、送信元から宛先コンピュータへルーティングされるべき十分な情報を伝送するデータの自己完結した独立したエンティティを指す。
【００３３】
「インターネットプロトコル」(IP)は、異なる通信ネットワークにわたるデータグラムを中継するインターネットプロトコルスイートのためのキー通信プロトコルを指す。このプロトコルは、インターネットプロトコルアドレスに基づくルーティング機能に重要であるので、インターネットアドレシングおよびネットワーキングの基礎をなす。
【００３４】
「ファイアウォール」は、事前設定されたルールのセットに基づいて、到来および発信するパケットのトラフィックを制御するネットワークセキュリティデバイスを指す。それは、安全なネットワークと、外部のまたは安全でないと考えられる別のネットワーク、たとえばインターネットとの間で主に使用される。この文脈では、ファイアウォールはさらに、企業または産業プラントネットワークの異なる各部分を分離するために使用される。
【００３５】
「サーバ」は、通信ネットワークを横断して要求に応答する任意のシステムを指す。処理制御におけるサーバの一例は、OPC(Object Linking and Embedding for Process Control, 処理制御のためのオブジェクトリンクおよび埋め込み)規格に準拠する産業制御ネットワークにおいてクライアントからの要求を受信するOPCである。サーバは、OPC規格のような規格に従って、適切な応答メッセージでクライアントに応答する。
【００３６】
「ハッシュ関数」は、あらゆるデータまたはデータパケットを固定サイズのデータへマッピングすることが可能である関数を指す。何れかのデータまたはデータパケットをハッシュ関数へ渡した結果は、ハッシュ値または単にハッシュと呼ばれる。たとえば、セキュアハッシュアルゴリズム(SHA)およびメッセージダイジェストアルゴリズム(MD-5)はハッシュ関数である。パケットは、パケットに含まれる固定データのハッシュを計算するために、変数を削除するように修正され得る。
【００３７】
「フットプリント」は、パケットから導出された情報を含み、パケットをユニークに識別するために使用されることが可能である任意のデータ構造を指す。フットプリントは典型的に、ハッシュ値、および、パケットヘッダ内に存在する選択されたフィールドを含む。
【００３８】
「データバス」は、複数のコンピュータにデータを同時に配信することが可能である通信ネットワークの一部を指す。典型的には、データバスを通して送信されるデータは、新たなフォーマットのオリジナルのデータから導出されたフットプリントであり、このフットプリントは、オリジナルのデータまたはデータパケットのサブセットである情報を含むフィールドを含む。たとえば、クライアントコンピュータは、フットプリントの分析を実行するために、データバスに結合され得る。
【００３９】
図1は、本発明のいくつかの実施形態が存在する環境100の一例の図である。図1に示されるように、環境100は、限定されないが、3つのレベルのネットワークを含む。
【００４０】
第1のレベルは、制御および自動化レベルである。第1のレベルは、アクチュエータ130、PIDコントローラ134、およびフィールドデバイス138を含む。アクチュエータ130は、産業制御ネットワークを経由してハブ122に接続される。産業制御ネットワークのいくつかの例は、プロトコル、限定されないが、Foundation Fieldbus、Modbus、およびProfibusを用いる。この例ではハブ122が用いられ、制御要素、アクチュエータ130は、同じネットワークセグメントの一部である。同様に、PIDコントローラ134は、産業制御ネットワークによってスイッチ124に接続される。PIDコントローラ134やフィールドデバイス138のような多くの測定および制御機器を一緒に接続するための一例では、スイッチ124が用いられる。スイッチ124は、接続されたすべてのデバイスへパケットをブロードキャストするのではなく、パケットを要求するデバイスにのみパケットを送信するので、ハブ122よりもより進化している。フィールドデバイス138は、無線ネットワークによって、無線アクセスポイント128に接続される。無線ネットワークの例は、限定されないが、2.4GHzまたは5GHzの周波数帯域においてIEEE 802.11a、802.11b、および802.11b仕様を実現する無線ローカルエリアネットワーク(WLAN)を含み得る。フィールドデバイス138は、無線アクセスポイント128に無線で接続され、これは、ケーブルを用いた物理的な接続の必要性をなくし、これによって、設置およびメンテナンスのコストを低減する。無線アクセスポイント128およびスイッチ124はルータ126に接続される。一方、ハブ122およびルータ126を含む産業制御自動化ネットワークは、産業イーサネット(登録商標)120に接続される。
【００４１】
図1では、産業イーサネット(登録商標)120の下に示されるネットワーク要素が、制御および自動化レベルを形成する。図1に提示された制御要素のうちの何れか1つが、処理プラントの要件に依存して、ルータ126、またはハブ122、または無線アクセスポイント128へ接続されることが当業者によって理解されるであろう。さらに、ハブ122またはスイッチ124は、何れかが、産業イーサネット(登録商標)120を介して直接にルータ126へ接続されることが可能である。図1は、例として、本発明の実施形態が存在する処理プラントにおける環境を示すことが意図され、本発明の範囲がここに提示された例に限定されると解釈されるべきではない。
【００４２】
図1に示される本発明の例示の環境における第2のレベルは、処理制御レベルである。これは、ローカル制御ステーション112、サーバ114、および操作者制御ステーション116を含む。第2のレベルでは、用いられる通信ネットワークは、産業イーサネット(登録商標)120である。ローカル制御ステーション112および操作者制御ステーション116は、同じネットワーク内のサーバ114に接続される。操作者制御ステーション116はまた、ルータ118に接続される。ルータ118は、本発明のいくつかの実施形態による、複数の処理制御システムを有する同じプラントにおける別の処理制御システムに接続される。
【００４３】
図1に示される環境における第3のレベルは、中央コンピュータ管理レベルである。前述したように、サーバ114は、ファイアウォール110に接続される。ファイアウォール110は、中央コンピュータ管理レベルが、第2のレベルおよび第1のレベルと通信することを可能にするように構成される。ファイアウォールはまた、中央コンピュータ管理レベルから第2のレベルおよび第1のレベルへ流れるあらゆる無許可のトラフィックを阻止する。中央コンピュータ管理レベルは、サーバ104、および産業イーサネット(登録商標)のような通信ネットワークを用いて通信する2つの端末102、106を含む。
【００４４】
本発明のいくつかの実施形態では、ローカル制御ステーション112、操作者制御ステーション116、およびサーバ114が、ルータ108に接続される。ルータ108は、ファイアウォール110を通して処理制御レベルのサーバ114に接続される。図1に示される3つのルータ108、118、および126は、分析のために通信ネットワークパケットを収集するために使用され、これによって、通信ネットワークを通して流れるパケットのルーティング経路を推定する。
【００４５】
本発明の他の実施形態では、ルータ108、118、および126が、図1の環境100に示されるように、通信ネットワークを通して流れるパケットのルーティング経路を推定するために用いられるシステム構成要素を含むコンピュータ140(図示せず)に接続される。
【００４６】
図1の環境100の第2および第3のレベルに示される通信ネットワークは、限定されないが、産業イーサネット(登録商標)によって送信される、伝送制御プロトコル(TCP)、IP、X.25、およびフレームリレーを含むネットワークプロトコルを具現化するパケット交換ネットワークであることが理解されるであろう。図1に示されるような環境では、第1のレベルで用いられる通信ネットワークは、産業制御ネットワークである。産業制御ネットワークの例は、プロトコル、限定されないが、Foundation Fieldbus、Modbus、およびProfibusを用いる。第2および第3のレベルで用いられる通信ネットワークは、産業イーサネット(登録商標)である。それは、伝送制御プロトコル(TCP)およびIPのようなOSIモデルに基づくプロトコルを用いる。
【００４７】
図示されないコンバータは、本発明のいくつかの実施形態に従って、Foundation Fieldbus、Modbus、およびProfibusのようなプロトコルを用いる産業制御ネットワークからインターネットプロトコルへトラフィックを変換するために用いられる。
【００４８】
図2は、本発明のいくつかの実施形態による、通信ネットワークの一部における例示的なパケットフローの図200である。ルータA 108、ルータB 118、およびルータC 126は、図1に示された3つのルータと同じである。センサA 208、センサB 210、およびセンサC 212は、3つのルータA 108、B 118、およびC 126にそれぞれ接続される。センサA 208、B 210、C 212は、通信ネットワークに接続されたルータA 108、B 118、C 126を通過するパケットA 202、パケットB 204、パケットC 206(図示せず)のコピーを受信する。点線P1 220、P2 222、およびP3 224は、3つのパケットA 202、B 204、C 206によって採られた3つの例示的な経路を表す。この例において、点線P1 220は、パケットA 202が、ルータC 126、B 118、およびA 108をその順で通過したことを示す。点線P2 222は、パケットB 204が、ルータA 108のみを通過したことを示す。点線P3 224は、パケットC 206が、ルータB 118、C 126をその順で通過したことを示す。
【００４９】
3つのセンサA 208、B 210、およびC 212は、ルータA 108、B 118、C 126から送信されたパケットA 202、B 204、C 206を受信し、その後、パケットA 202、B 204、C 206をデータ収集モジュール214へ送信することが可能であり、センサA 208、B 210、C 212からのパケットA 202、B 204、C 206が、中央で収集または取得される。データ収集モジュール214は、パケットA 202、B 204、C 206のためのタイムスタンプA 232、B 234、およびC 236(図示せず)をそれぞれ生成する。1つのルータにおいて、パケットA 202、B 204、およびC 206について生成されたタイムスタンプA 232、B 234、およびC 236は、同じパケットが異なるルータで受信されたときに変化するであろう。データ収集モジュール214はさらに、パケットA 202、B 204、C 206を分析のために分析モジュール216へ送信する。
【００５０】
経路P1 220を通して移動するパケットA 202の例は、3つすべてのルータA 108、B 118、およびC 126において受信され、従って、パケットの同じコピーが、データ収集モジュール214において受信されることに留意すべきである。
【００５１】
データ収集モジュール214は、受信されたパケットA 202、B 204、およびC 206を、それぞれのセンサA 208、B 210、およびC 212において受信されたパケットA 202、B 204、およびC 206のためのフットプリントを生成するダイジェスト情報ジェネレータ215へ送信する。センサA 208、B 210、およびC 212は、さらなる分析のために、ルータA 108、B 118、C 126から送信されたパケットA 202、B 204、C 206を受信する機能を実行する。センサA 208、B 210、およびC 212は、経路P1 220、P2 222、およびP3 224を通して移動するパケットA 202、B 204、C 206を、ルータA 108、B 118、C 126からデータ収集モジュール214へ送信し、ここで、パケットA 202、B 204、C 206は受信され、さらなる分析のためにキューに入れられる。
【００５２】
分析モジュール216は、パケットP1 220、P2 222、およびP3 224の経路を推定するために分析を実行する。フットプリントの生成が、図6と関連して説明される。フットプリントに基づいて、ルーティング経路を計算するために、分析モジュール216によって分析が実行される。フットプリントは、ルータA 108、B 118、およびC 126において受信されたパケットA 202、B 204、C 206をユニークに識別するために用いられる。経路P3 224を通して移動するパケットC 206の例を考慮すると、パケットC 206が先ず、ルータB 118で受信され、その後、パケットC 206は、センサB 210へ送信され、その後、データ収集モジュール214においてパケットC 206にタイムスタンプC 236(図示せず)が割り当てられた後、パケットC 206のためのフットプリント246(図示せず)が生成され、タイムスタンプC 236を伴うパケットC 206が、ダイジェスト情報ジェネレータ215へ送信される。その後、パケットC 206は、ルータC 126ヘと移動し、そこで受信され、センサC 212へ送信される。パケットC 206は、データ収集モジュールへ送られ、タイムスタンプC 237(図示せず)を割り当てられる。フットプリント247(図示せず)は、ルータC 126において受信された後にパケットのために再び生成される。分析モジュール216では、フットプリント246、247の比較は、ルータB 118およびルータC 126で受信されたパケットC 206が同じであることを明らかにするであろう。この経路は、2つのルータB 118およびC 126で受信されたパケットC 206のタイムスタンプC 236およびC 237を用いて推定される。パケットC 206のこの例では、タイムスタンプC 236は、タイムスタンプC 237よりも早い。これは、パケットC 206がルータB 118に最初に到着し、その後、ルータC 126に到着したことを示す。これは、パケットC 206がルータB 118からルータC 126に移動し、生成されたフットプリント246、247の比較によって、同じパケットC 206であると判定されたことを示す。その後、フットプリント247は、分析後、ログ218に記憶される。
【００５３】
図4は、ルーティング経路を推定するために、本発明の実施形態に従って実施される例示の方法のフローチャート400である。ステップS402では、センサA 208、B 210、およびC 212からのパケットA 202、B 204、C 206が、データ収集モジュール214に存在するデータ受信機スレッド222を用いて受信される。データ受信機スレッド222は、受信したパケットのタイムスタンプを生成する機能を実行し、センサから送信されたパケットを受信するために用いられる。たとえば、パケットA 202、B 204、およびC 206が、センサA 208、B 210、およびC 212から受信されたとき、さらなる分析を支援するために、パケットのためにタイムスタンプA 232、B 234、およびC 236が生成される。
【００５４】
ステップS404は、データ収集モジュール214内に存在するファーストインファーストアウト(FIFO)キュー240(図示せず)へパケットA 202、B 204、およびC 206を追加するタスクを実行する。FIFOキュー240は、各々が、予め定義された時間単位を表すメモリスペースを備えるメモリスペース412(図示せず)を有することに留意すべきである。小さな時間単位は、ルーティング経路を推定する精度を改善する。本発明のいくつかの実施形態よれば、用いられる予め定義された時間単位は、1秒未満である。別の好適な実施形態では、パケットのルーティング経路を推定するときにより高い精度のために、ミリ秒の時間分解能が要求される。
【００５５】
このステップS404の間、キュー240は、パケットを有する、またはパケットを有さない何れかのメモリスペース412から構成される。本発明のいくつかの実施形態では、FIFOキュー240は、各メモリスペース412につき1つよりも多くのパケットを含む。
【００５６】
ステップS406では、キュー240の内容は、キューから出され、分析モジュール216によってパケットA 202、B 204、およびC 206の分析を実行するために使用される。分析前に、キューから出す動作中に、FIFOキュー240から受信した各パケットのためのフットプリントを生成するために、パケットA 202、B 204、C 206が、ダイジェスト情報ジェネレータ215へ渡される。各パケットA 202、B 204、およびC 206のためのフットプリントは、その後、パケットをユニークなエンティティとして識別するために用いられる。ステップS408の間、分析は、結果として分析されたパケットのルーティング経路の推定となる。タイムスタンプA 232、B 234、およびC 236と、生成されたフットプリントとは、主に、ルーティング経路推定のために使用される。パケットA 202、B 204、およびC 206が、別のルータで受信されたとき、これらのタイムスタンプが変わることに留意すべきである。分析のステップは、図8と関連して詳細に説明される。
【００５７】
ステップS410では、フットプリントは、分析の後に、データバスへ送信される。パケットA 202、B 204、およびC 206は、ブロードキャストによって、データバスに結合された他のクライアントによって受信されることが可能である。データバスに結合された何れのクライアントも、ルーティング経路が推定された後、パケットA 202、B 204、およびC 206のさらなる分析のために使用される。したがって、分析の間にステップS406において生成されたフットプリントが記録され、ログ218に記憶される。
【００５８】
図5は、本発明のいくつかの実施形態による、IPパケット500のデータ構造の図である。IPパケットは、ヘッダセクションとペイロードセクションとから構成される。IPのための規格は、RFC 791に定義されている。ヘッダセクションは、同伴するデータを、特定の宛先へ経路付けるために必要な情報を含む。ペイロードセクションは、IPパケットを用いて送信される実際のデータを含む。
【００５９】
ヘッダは、以下の情報を含んでいる。バージョン502は、IPパケット500における第1のヘッダフィールドである。バージョン502は、4ビットのフィールドである。たとえば、インターネットプロトコルバージョン4(IPv4)は、値「4」を有する。インターネットヘッダの長さ(IHL)504は、ヘッダの長さを指定する4ビットのフィールドである。サービスのタイプ506は、優先度情報を伝送するために用いられるフィールドである。サービスのタイプのフィールドデータに基づいて、パケットがキューにおいて優先順位付けされ、したがって、レイテンシ、スループット、および信頼性の要件仕様のために使用されるべきである。合計の長さ508は、バイト数で、ヘッダおよびデータを含む全体のパケット(フラグメント)サイズの指定を可能にする16ビットフィールドである。識別情報510は、単一のIPパケットのフラグメントのグループを識別するために使用される。フラグ512は、フラグメントを識別または制御するために使用される3ビットフィールドである。フラグメントオフセット514は、13ビットの長さであり、フラグメント化されていないデータグラムの先頭を参照して現在のパケットを識別するために使用される。有効期間(TTL)516は、データグラムがネットワークを無制限に通過することから避け、これによって、これらデータグラムに、特定の宛先への送信のための特定の期間を与える。ルータにおける各ホップについて、TTLがデクリメントされる。TTLが0であれば、ルータは、パケットを廃棄するであろう。プロトコル518は、IPデータグラムにおいて使用されるプロトコルを定義するために使用される。
【００６０】
ヘッダチェックサム520は、誤りをチェックするために、IPパケット500において使用される。この値は、パケットヘッダのチェックサムを計算し、この値を、IPパケット500内に存在するヘッダチェックサムフィールドと比較するために、ルータによって使用される。ルータによって計算されたチェックサムの値が、IPパケット500内のヘッダチェックサム520と同一ではないのであれば、ルータは、IPパケット500を、誤りであるとして廃棄する。IPパケット500は、ルータへの送信または受信処理の間、損傷を受ける可能性が高い。送信元アドレス522は、パケット送信元のIPアドレスを記憶するフィールドである。宛先アドレス524は、IPパケット500の宛先を定義するために使用されるフィールドである。
【００６１】
IPヘッダ内に存在する前述されたすべてのフィールドに加えて、オプション526フィールドが存在し、IPがどのようにしてデータグラムを取り扱うのかに対してさらなる柔軟性を追加するために使用される。データ528フィールドは、ペイロードセクションを表わし、ヘッダに付加される。
【００６２】
図6は、本発明のいくつかの実施形態による、フットプリント構造の生成を示すフローチャートである。
【００６３】
本発明のこの実施形態に従って、ステップS602において、ルータA 108、B 118、およびC 126を通過する例示的なパケットA 202が収集される。パケットは、その後、センサA 208、B 210、およびC 212へ送信される。後続するすべてのステップは、ダイジェスト情報ジェネレータ215において実行され、パケットA 202は、ダイジェスト情報ジェネレータ215の前に、データ収集モジュール214へ送信される。
【００６４】
ステップS604では、パケットA 202における可変フィールドが、ゼロで置換される。たとえば、サービスのタイプ506のようなIPパケットフィールドでは、TTL 516、チェックサム520、フラグメントオフセット514、およびオプション526が、ゼロで置換される。この演算は、ハッシュの計算中に、パケットヘッダ内の可変フィールドを除去するために実行される。ハッシュは、結果としてハッシュ値となる、または、ハッシュと称されるためにハッシュ関数を通過した入力データを用いて生成されるユニークな識別子である。本発明のこの実施形態では、ハッシュ関数への入力データは、ゼロで置換された可変フィールドを持つIPパケットであり、ハッシュ関数を通過した後の結果は、同じIPパケットをユニークに識別することが可能であるハッシュ値である。ハッシュ関数のいくつかの例は、限定されないが、セキュアハッシュアルゴリズム(SHA)およびメッセージダイジェストアルゴリズム(MD-5)を含む。
【００６５】
パケットA 202は、ルータ間に存在するネットワークを通過している間に、最大伝送単位(MTU)における制限により、フラグメント化される。MTUは、特定の通信レイヤのネットワークプロトコルに関して前方に通過することを許可された最大の伝送単位として定義される。IPv4では、最小のデータグラムサイズは、RFC 791において指定されているような576バイトであり、すべてのホストデバイスが、この最小データグラムサイズのデータグラムを受け取る準備ができていなくてはならない。同様に、IPv6では、最小データグラムサイズは1280バイトである。パケット送信のための実際のMTUサイズは、ネットワークトポロジのタイプおよび送信媒体のタイプに限定されない要因に依存し、それぞれのIPプロトコルについて指定された最小データグラムサイズより大きい。ネットワークにおいて許容されているMTUを超えるサイズを有する、ネットワークに到着したIPパケットは、ルータによってフラグメント化される。このIPパケットは、その経路にそってさらに異なるネットワークを通過したとき、再組み立てされ得る。
【００６６】
好適な実施形態では、パケットは、さらなるパケットの分析およびハッシュの計算のために、全体のネットワーク経路において許容されている最小データグラムサイズ以上のフラグメントに分割される。さらなる分析およびハッシュの計算のためのこのフラグメント化は、ルータによって実行されず、分析モジュール216によって実行される。たとえば、IPv4ネットワークにおいて許容可能な最小データグラムサイズは576バイトである。したがって、576バイトより大きなサイズを有するパケットは、2つのフラグメントとして読み取られ、これによって、576バイトのサイズの第1のフラグメントと、パケットサイズと576との差分に等しいサイズを有する第2のフラグメントとを有する。最小データグラムサイズの使用は、本発明のこの実施形態に対して特に利点があり、なぜなら、このシステムは、同じパケットが異なるサイズで受信されたときでも、パケットによって採られた経路を計算することが可能であるからである。ヘッダとデータとの合計サイズが、ステップS606において、実行される最小データグラムサイズを超えているか否かを判定するために、ヘッダとデータとの合計サイズに関するチェックがなされる。ステップS606におけるチェックの結果に依存して、IPパケットの合計サイズが、ネットワークで許容されている最小データグラムサイズを超えたとき、パケットA 202は、分析のために、最小データグラムサイズのフラグメントへ分割される。続いて、ステップS611では、最小データグラムサイズを有する各フラグメントのためのハッシュが計算される。たとえば、IPv4の場合を考慮すると、ハッシュが、最初の576バイトについて計算され、次のハッシュが、パケットの後続するフラグメントについて計算される、等であり得る。本発明のいくつかの実施形態では、第1のフラグメントのみが、最小データグラムサイズであり、第2のフラグメントは、パケットのサイズから最小データグラムサイズを引いたものに等しいサイズである。たとえば、パケットA 202の2つのフラグメント716および718(図示せず)が存在するのであれば、2つのハッシュであるハッシュ-1 706およびハッシュ-2 708が計算される。最小データグラムサイズの使用は、本発明のこの実施形態に特に利点があり、なぜなら、このシステムは、パ
ケットがフラグメント化または再組み立てされても、パケットによって採られた経路を計算することが可能であるからである。この理由で、ハッシュ-1 706は、パケットの最初の576バイトに基づいて計算される。S606におけるチェックの結果が、パケットA 202が1つのフラグメントであるならば、ステップS608において、1つのハッシュ値が計算される。ステップS606におけるチェック結果が、パケットサイズが、最小データグラムよりも大きいことを示すのであれば、S608において、各フラグメントのためのハッシュが計算される。フラグメントの数は、ヘッダとデータとのサイズの合計を、伝送プロトコルで指定されている最小データグラムサイズで除することによって計算されることに留意すべきである。さらに、ステップS612において、フットプリント618(図示せず)が生成される。フットプリント618の構造が、図7と関連して説明される。
【００６７】
図7は、本発明のいくつかの実施形態による、フットプリント618のデータ構造700の図である。フットプリント618は、図6のフローチャートにおいて示されるステップS612の一部として生成される。一実施形態では、フットプリントは、分析を実行するコンピューティングデバイスのメモリ内にオブジェクトとして記憶される。フットプリントは、以下のフィールドを含む。パケットがセンサによって受信されたときのパケットのタイプスタンプを示す時間702、パケットが受信されたルータに接続されたセンサを示すセンサID(センサ識別子)704、ハッシュ-1 706は、たとえば、図6のフローチャートのステップS612において生成されたハッシュの値であり、ハッシュ-2 708は、MTUサイズに基づいて生成された1つよりも多くのフラグメントが存在するとき、たとえばステップS610においてフラグメントのハッシュが1を超えるときに生成され、送信元IP 710は、パケットの送信元のIPアドレスであり、たとえば、このフィールドは、図5に示された例示のIPパケットにおける送信元アドレス522と同じであり、宛先IP 712は、パケットの宛先のIPアドレスであり、たとえば、このフィールドは、図5に示された宛先アドレス524と同じであり、プロトコル714は、このネットワーク送信が従うプロトコル、たとえばIPまたはTCPを表す。フットプリント内のフィールドの数は、パケット比較の精度を高めるために、パケットから導出されるより多くのフィールドを含めるように増加され、これによって、ルーティング経路推定の効率を高める。
【００６８】
図8は、本発明のいくつかの実施形態による、データ構造としての循環バッファ800の図である。循環バッファ800は、固定サイズバッファのために使用されるデータ構造である。図8に示されるような循環バッファ800は、メモリスロット802、804、806、808、810、814、816、および818を示す。この発明の好適な実施形態では、循環バッファ800は、フットプリントのようなパケット情報を記憶するために使用される。循環バッファ800は、分析モジュール216内に存在するメモリスロットの特定の実現である。本発明の実施形態における例示の動作は、循環バッファ800内のすべてのメモリスロット802、804、806、808、810、814、816、818が満たされるまで、メモリスロット802内にフットプリント、メモリスロット804内に別のフットプリント、等を記憶することを含む。好適な実施形態では、メモリスロット802、804、806、808、810、814、816、818は、フットプリント618およびセンサ識別子の両方を記憶するように構成される。
【００６９】
循環バッファ800の結果として、分析モジュール216は、メモリスロット802、804、806、808、810、814、816、818内のフットプリントのタイムスタンプに基づいて、最も古いメモリスロットを識別する。その後、分析モジュール216は、すべてのメモリスロット802、804、806、808、810、814、816、818が満杯であるとき、既に満杯である循環バッファ800内のメモリスロット802、804、806、808、810、814、816、818への新たなフットプリントの追加のために、最も古いメモリスロットに上書きをし始める。分析モジュール216は、本発明のいくつかの実施形態に従って、フットプリントを記憶する前に、最も古いメモリスロットを空にする。
【００７０】
循環バッファ800の形態でメモリスロットを実現する利点は、より古いメモリスロットにおけるエントリが、自動的に上書きされることである。ルーティング経路分析を実行するときの循環バッファの使用は、図9においてさらに説明される。限定されないが、キュー、スタック、バイナリツリー、またはヒープを含むその他のデータ構造が、分析モジュール216に存在するメモリスロットを実現するために用いられ得ることがこの技術分野の当業者によって理解され、従って、本発明の範囲は、循環バッファに限定されるとは解釈されないものである。
【００７１】
図9は、本発明のいくつかの実施形態による、ルーティング経路推定のためのフローチャート900である。
【００７２】
本発明の実施形態に従って、真または偽の何れかとして保持されるブール変数930(図示せず)が、データ収集モジュール214に保持される。一例において、パケットのルーティング経路を受信し分析するため、システムの開始動作または終了動作を変えるために、ブール変数FLAG 930が使用される。
【００７３】
この実施形態では、ステップS901の間、FLAG 930のステータスがチェックされ、それが真に設定されているか、または偽に設定されているかが判定される。FLAG 930が真に設定されているのであれば、ステップS903において、データ収集モジュール214が、何れかのパケットが受信されているか否かをチェックする。ステップS903におけるチェックの結果が、パケットが受信されていることを示すのであれば、データ受信機スレッドは、ステップS904において、パケットA 202、B 204、C 206を受信する。データ受信機スレッドは、ステップS904で受信されたパケットA 202、B 204、C 206を、ステップS905においてFIFOキュー240(図示せず)へ追加する。データ収集モジュール214におけるデータ受信機スレッド222は、センサA 208、B 210、およびC 212で受信されたパケットを受信できる。受信されたパケットA 202、B 204、C 206は、センサA 208、B 210、およびC 212によって受信された時に、データ収集モジュール214によってタイムスタンプされる。従って、タイムスタンプA 232、B 234、およびC 236が生成される。タイムスタンプA 232、B 234、およびC 236は、パケットA 202、B 204、およびC 206が、後続するルータへ移動する毎に変わる。データ収集モジュール214は、ステップS901において再び、FLAG 930のためのステータスチェックを繰り返す。ステップS903におけるチェックの結果が、どのパケットも受信されていないことを示すのであれば、データ収集モジュール214は、ステップS901においてFLAG 930をチェックするために戻る前に、ステップS902の間、短い持続時間、たとえば250ミリ秒待つ。
【００７４】
本発明のこの実施形態では、タイマスレッド220が、ステップS906において時間データを保持する。タイマスレッド220は、パケットのルーティング経路を判定するために必須である時間の単位を追跡し続ける。ステップS906では、データ収集モジュールに存在するタイマスレッド220が、ステップS907の間、予め定義された時間単位の数の間にデータを受信するために利用可能なメモリスペース412をFIFOキュー240(図示せず)に追加する。続いて、前に説明したように、チェックFLAG 930動作が実行される。この分岐点では、FIFOキュー240は、さらなる分析のために、時間データまたはパケットの何れかを含む。
【００７５】
ステップS905は、パケットA 202、B 204、およびC 206を、データ収集モジュール214内に存在するFIFOキュー240へ追加するタスクを実行する。FIFOキュー240は、予め定義された時間単位を表すメモリスペース412を有することに留意すべきである。
【００７６】
本発明の実施形態によれば、ステップS908では、データ収集モジュール214は、キューから出す動作が成功したか否かをチェックする。FIFOキュー240内のパケットの存在は、キューから出す動作の結果が成功であることを可能にするであろう。S908におけるチェックの結果が成功であるならば、FIFOキュー240はその後、ステップS910においてキューから出され、この動作の結果、さらなる分析のために、空のメモリスペースが存在するか、または、パケットA 202、B 204、C 206のうちの少なくとも1つが、実際に受信された順に存在するかを、各時間単位について知ることになる。FIFOキュー240、タイマスレッド220、およびデータ受信機スレッド222は、データ収集モジュール214内に存在する。小さな時間単位は、ルーティング経路の推定の精度を高める。本発明のいくつかの実施形態によれば、予め定義された時間単位は、ミリ秒のように1秒よりも短い。ステップS908で実行されたチェックが不成功であれば、データ収集モジュールS918は、短い持続時間、たとえば250ミリ秒待ち、ステップS901におけるチェックFLAG動作を繰り返す。
【００７７】
本発明の別の実施形態によれば、ステップS912は、キューから出す動作が結果として、パケットになるか、または、空のメモリスペースになるかをチェックするために、ダイジェスト情報ジェネレータ215によって実行される。キューから出す動作が結果としてパケットになる場合では、受信された例示的なパケットC 206のためにフットプリント618が生成される。キューから出す動作の結果としてパケットが受信されなければ、ステップS914において、FIFOキュー240情報が、分析モジュール216によってログファイルに記録される。一実施形態では、好適なデータ構造は、メモリスロット802、804、806、808、810、814、816、818を有する循環バッファ800である。
【００７８】
本発明のいくつかの実施形態によれば、分析モジュール216は、ステップS914において、循環バッファ800が満杯であるとき、メモリスロット802、804、806、808、810、814、816、818におけるフットプリントのタイムスタンプに基づいて、最も古いメモリスロットを識別する。その後、分析モジュール216は、最も古いメモリスロットを空にする。分析モジュール216は、本発明のいくつかの実施形態に従って、最も古いメモリスロットに上書きする。ステップS914においてこのようにして除去された内容は、アーカイブ目的のために、ログファイルに移動される。
【００７９】
ステップS918では、パケットC 206が受信されたとき、フットプリント618が、ダイジェスト情報ジェネレータ215によって生成される。この場合、フットプリント618は、ネットワークを通過するパケットC 206をユニークに識別するために使用される識別子である。たとえば、フットプリント618は、ルータにおいて受信されたIPパケットのために、ハッシュ関数を用いて生成されたハッシュである。フットプリント618は、同様にパケットから導出された他の情報を含み得る。IPパケットC 206を収集し、可変フィールドを置換した後のハッシュの生成は、図6に対応する記載で説明される。ハッシュはこのように生成され、パケットC 206に関するフットプリントを形成するために、タイムスタンプ702、センサ識別子704、送信元IP 710、および宛先IP 712のような付加的なパケット情報と共に付加される。フットプリントの構造は、図7に対応する記載で説明される。所与のパケットのフットプリントは、パケットから導出されるデータのサブセットを含み、したがって、オリジナルのパケットと比較して、サイズが小さい。これは、制限された時間フレームについて、パケットのリアルタイムの記憶および分析を可能にする。
【００８０】
分析モジュール216は、循環バッファのメモリスロット内にフットプリントを生成した後、ステップS918において処理を実行する。ステップS920の間、最後に生成されたフットプリント618が、循環バッファ800のメモリスロット内に既に存在するフットプリントと比較される。循環バッファの構造および動作は、図8に対応する記載において説明される。循環バッファは、制限されたメモリサイズを有するという理由、および、バッファが満杯であるときにメモリスロットを自動的に解放するという循環バッファの特性によって、分析モジュール216のために適切なデータ構造である。ステップS920における比較動作の間に一致が見出されたのであれば、ステップS924において、センサ識別子704が、フットプリント618を含むメモリスロットに追加される。この新たに記憶された情報は、ルーティング経路を計算するため、および、異なるルータにおけるパケットの予測のために使用されるであろう。したがって、循環バッファ800によって表される時間フレーム内では、異なるルータにおいて受信された同じパケットのフットプリントは、ルータにリンクされた異なるセンサ識別子704を有する同じフットプリント618を用いて識別されることが可能である。
【００８１】
循環バッファ800へセンサ識別子704を記憶した後、循環バッファ800が満杯であれば、新たなメモリスロットを生成するためにメモリスロットから除去されたフットプリントおよびセンサ識別子が、ログに記憶され、データバスへ送信される。
【００８２】
循環バッファ800の固定サイズにより、メモリスロット内に存在するフットプリントは、限定された期間のみ保持されることが可能であることに留意すべきである。循環バッファ内の制限されたメモリのため、フットプリントは、循環バッファが満杯であるときには、ステップS916においてログに記憶され、その後、ステップS928においてデータバスへ送信される。循環バッファ800はまた、メモリスロットを空にするために、タイマスレッドと同期される。ステップS922における比較の間に一致が見出されなかったのであれば、ステップS926において、すべての既存のメモリスロットが満杯であれば、フットプリント618は、循環バッファ800内の最も新しいメモリスロットに書き込まれる。循環バッファ800のメモリスロットが満杯でないならば、フットプリント618は、利用可能なメモリスロットに書き込まれる。その後、フットプリント618は、ステップS928においてデータバスへ送信される。
【００８３】
図10は、本発明のいくつかの実施形態による、ルーティング情報を判定するためのシステム1000のブロック図である。このシステムは、ルータB 118およびルータC 126、センサB 210およびセンサC 212、データ収集モジュール214、ダイジェスト情報ジェネレータ215、分析モジュール216、データバス1006、およびログ218を含む。一方、データ収集モジュール214は、タイマスレッド220およびデータ受信機スレッド222を含む。たとえば、ルータBからルータCへ移動するIPパケットB 204を考慮されたい。IPパケットB 204は、図5に示されるようなデータ構造を有する。IPパケットB 204は、センサB 210へ送信される。パケットB 204は、データ収集モジュール214に送信される。続いて、後の時点において、IPパケットB 204が、ルータC 126へ移動し、センサC 212においてミラー化される。同じIPパケットは、ルータB 118およびルータC 126の両方で受信される。その後、IPパケットB 204は、その宛先へ送信される。
【００８４】
データ収集モジュール214では、FIFOキュー240がデータ収集モジュール214に存在する。データ収集モジュール214に存在するタイマスレッド220は、多くの時間単位についてデータを受信するために、利用可能なFIFOキュー240へ、利用可能なメモリスペースを分割する。好適な時間単位はミリ秒である。データ収集モジュール214におけるデータ受信機スレッド222は、センサB 210およびC 212において受信されたパケットを受信することができる。この例において、パケットB 204は、先ず、ルータB 118において受信され、次に、ルータC 126において受信される。したがって、データ収集モジュール214に存在するFIFOキュー240には、最初にパケットB 204が存在し、空のメモリスペース412が続き、ルータC 126において受信された同じパケットB 204の別のコピーが存在するであろう。パケットがセンサにおいて受信された時、受信されたパケットは両方とも、データ受信機スレッド222によってタイムスタンプされる。ここでFIFOキュー240の内容は、センサB 210において受信され、タイムスタンプのみを有する少数の空のスペースに、センサC 212において受信されたパケットが続く。空のメモリスペース412は、パケットB 204がルータB 118からルータC 126へ移動するために費やされた時間を示す。
【００８５】
FIFOキュー240の内容は、ダイジェスト情報ジェネレータ215によって読み取られる。パケットB 204は、可変であるかまたはパケットB 204が通過するルータによって変更されるフィールドを含むので、可変フィールドは、さらなる処理の前に、ゼロと置換される。ハッシュ計算は、パケットサイズが1つのMTUよりも大きい場合に、一度に、最小データグラムサイズに基づいて、1つのフラグメントのみのために実行され、パケットは、各々が最小データグラムサイズを有するフラグメントに分割され、その後、さらに用いられる。このように受信された各パケットのフットプリントは、ハッシュ値1008(図示せず)を計算するためにハッシュ関数を用いることを含む。ハッシュ関数を通過した後の結果は、何れのIPパケットもユニークに識別することが可能であるハッシュ値1008である。ハッシュ関数のいくつかの例は、限定されないが、セキュアハッシュアルゴリズム(SHA)およびメッセージダイジェストアルゴリズム(MD-5)を含む。この例において、IPパケットB 204のMD5ハッシュ値は、「464668D58274A78」のような文字列であり得る。このハッシュ値1008は、IPパケットB 204のフットプリントを形成するために、IPパケットヘッダから導出された他の特性と共に含まれる。したがって、フットプリントはフットプリントに埋め込まれている。フットプリントの構造は図7と関連して説明される。フットプリントは、ルータB 118およびルータC 126で受信されたパケットのために生成される。
【００８６】
分析モジュール216は、メモリスロット内でハッシュ関数を用いて生成されたフットプリントを含むフットプリントのうちの各々の1つを記憶する。この例において、メモリスロットの構造は、循環バッファの形態である。その後、ダイジェスト情報ジェネレータによって生成されたフットプリントは、図8に記載されたような循環バッファに記憶される。ルータB 118において受信されたパケットのためのフットプリントは、他のパケットヘッダ情報と共に「464668D58274A78」を含む。循環バッファでは、ルータC 126で受信されたパケットについての最後に受信されたフットプリントが、循環バッファの内容と比較される。同じパケットがルータB 118からルータC 126へ移動したので、生成されたフットプリントに存在するハッシュ値1008は、同じ、すなわち、「464668D58274A78」となるであろう。したがって、同じパケットB 204が、2つのルータであるルータB 118およびルータC 126を通過したことが判定され、この順序が、それぞれのタイムスタンプを用いて判定される。ハッシュ値1008について一致が見出されたので、フットプリントはその後、循環バッファに記憶される。ハッシュ値1008について循環バッファで一致が見出されない場合では、フットプリントがデータバスへと渡され、ログに記憶される。ハッシュ値1008は、2つのパケットおよび循環バッファに存在する情報の比較のために用いられる。しかしながら、比較の精度は、フットプリントに存在するすべての情報を比較することによって、高められ得る。
【００８７】
本発明の別の実施形態では、パケットが、システムに接続されたルータであるルータB 118およびルータC 126を通過したか否かを判定するために、フットプリントを求めてログ218が探索される。
【００８８】
図11は、システムのいくつかの実施形態が実現される例示的なシステム1100を示す。
【００８９】
システム1102は、少なくとも1つのプロセッサ1104および少なくとも1つのメモリ1106を含む。プロセッサ1104は、プログラム命令を実行し、実際のプロセッサであり得る。プロセッサ1104はまた、仮想的なプロセッサであり得る。コンピュータシステム1102は、記載された実施形態の用途または機能の範囲に関して、何れの限定も示唆することは意図されない。たとえば、コンピュータシステム1102は、限定されないが、汎用コンピュータ、プログラムされたマイクロプロセッサ、マイクロコントローラ、集積回路、および、本発明の方法を構成するステップを実現することが可能な他のデバイスまたはデバイスの配列、のうちの1つまたは複数を含み得る。本発明の一実施形態では、メモリ1106は、本発明の様々な実施形態を実現するためのソフトウェアを記憶し得る。コンピュータシステム1102は、さらなる構成要素を有し得る。たとえば、コンピュータシステム1102は、1つまたは複数の通信チャネル1108、1つまたは複数の入力デバイス1110、1つまたは複数の出力デバイス1112、および記憶装置1114を含む。バス、コントローラ、またはネットワークのような相互接続メカニズム(図示せず)は、コンピュータシステム1102の構成要素を相互接続する。本発明の様々な実施形態では、オペレーティングシステムソフトウェア(図示せず)は、コンピュータシステム1102において実行する様々なソフトウェアのための動作環境を提供し、コンピュータシステム1102の構成要素の異なる機能を管理する。
【００９０】
通信チャネル1108は、他の様々なコンピューティングエンティティへの通信媒体を介した通信を可能にする。通信媒体は、プログラム命令のような情報、または、情報媒体における他のデータを提供する。通信媒体は、限定されないが、電気、光、RF、赤外線、聴覚、マイクロ波、ブルートゥース(登録商標)または他の送信媒体を用いて実現される有線または無線の方法論を含む。
【００９１】
入力デバイス1110は、限定されないが、タッチスクリーン、キーボード、マウス、ペン、ジョイスティック、トラックボール、音声デバイス、スキャニングデバイス、または、コンピュータシステム1102に入力を提供することが可能な他の任意のデバイスを含み得る。本発明の一実施形態では、入力デバイス1110は、サウンドカード、または、アナログ形式またはデジタル形式でオーディオ入力を受け取る類似のデバイスであり得る。出力デバイス1112は、限定されないが、CRTもしくはLCD上のユーザインターフェース、プリンタ、スピーカ、CD/DVDライタ、またはコンピュータシステム1102からの出力を提供する他の任意のデバイスを含み得る。
【００９２】
記憶装置1114は、限定されないが、磁気ディスク、磁気テープ、CD-ROM、CD-RW、DVD、任意のタイプのコンピュータメモリ、磁気ストライプ、スマートカード、印刷されたバーコード、または、情報を記憶するために使用されることが可能であり、コンピュータシステム1102によってアクセスされることが可能である他の任意の一時的もしくは非一時的な媒体を含み得る。本発明の様々な実施形態では、記憶装置1114は、記載された実施形態を実現するためのプログラム命令を含む。
【００９３】
本発明は、システム、方法、または、コンピュータ読み取り可能な記憶媒体もしくはプログラミング命令が遠隔場所から伝達されるコンピュータネットワークのようなコンピュータプログラム製品として含む様々な手法で実現され得る。
【００９４】
本発明の開示は、コンピュータシステム1102と共に用いるためのコンピュータプログラム製品として適切に具体化され得る。ここに記載された方法は、典型的に、コンピュータシステム1102または他の任意の類似デバイスによって実行されるプログラム命令のセットを含むコンピュータプログラム製品として実現される。プログラム命令のセットは、コンピュータ読み取り可能な記憶媒体(記憶装置1104)、たとえば、ディスケット、CD-ROM、ROM、フラッシュデバイス、もしくはハードディスクのようなのような有形の媒体に記憶された一連のコンピュータ読み取り可能なコードであり得るか、または、限定されないが、光もしくはアナログの通信チャネル1108を含む有形の媒体を介して、モデムもしくは他のインターフェースデバイスを経由してコンピュータシステム1102へ送信可能であり得る。コンピュータプログラム製品としての本発明の実現は、限定されないが、マイクロ波、赤外線、ブルートゥース(登録商標)、または他の送信技術を含む無線技術を用いた無形の形態であり得る。これらの命令は、システムに事前にロードされるか、または、CD-ROMのような記憶装置に記録されるか、または、インターネットまたは携帯電話ネットワークのようなネットワークを介してダウンロードすることを可能とされ得る。一連のコンピュータ読み取り可能な命令は、ここに前述された機能のすべてまたは一部を具体化し得る。
【００９５】
本発明の例示的な実施形態がここに記載および例示される一方、これらは単なる例示であることが認識されるであろう。形態および詳細における様々な修正が、ここでは、添付された特許請求の範囲によって定義されたような本発明の思想および範囲から逸脱することも、またそれに反することもなくなされ得ることが当業者によって理解されるであろう。
【符号の説明】
【００９６】
100  環境
102  端末
104  サーバ
106  端末
108  ルータA
110  ファイアウォール
112  ローカル制御ステーション
114  サーバ
116  操作者制御ステーション
118  ルータB
120  産業イーサネット(登録商標)
122  ハブ
124  スイッチ
126  ルータC
128  無線アクセスポイント
130  アクチュエータ
134  PIDコントローラ
138  フィールドデバイス
208  センサA
210  センサB
212  センサC
214  データ収集モジュール
215  ダイジェスト情報ジェネレータ
216  分析モジュール
218  ログ
220  タイマスレッド
222  データ受信機スレッド
224  経路
500  IPパケット
502  バージョン
504  インターネットヘッダの長さ
506  サービスのタイプ
508  合計の長さ
510  識別情報
512  フラグ
514  フラグメントオフセット
516  有効期間
518  プロトコル
520  ヘッダチェックサム
522  送信元アドレス
524  宛先アドレス
526  オプション(+パディング)
528  データ
702  時間
704  センサID
706  ハッシュ-1
708  ハッシュ-2
710  送信元IP
712  宛先IP
714  プロトコル
800  循環バッファ
802  メモリスロット
804  メモリスロット
806  メモリスロット
808  メモリスロット
810  メモリスロット
814  メモリスロット
816  メモリスロット
818  メモリスロット
1000  システム
1006  データバス
1100  システム
1102  コンピュータシステム
1104  プロセッサ
1106  メモリ
1108  通信チャネル
1110  入力デバイス
1112  出力デバイス
1114  記憶装置
【図１】
0006631232.tif 000002
【図２】
0006631232.tif 000003
【図３】
0006631232.tif 000004
【図４】
0006631232.tif 000005
【図５】
0006631232.tif 000006
【図６】
0006631232.tif 000007
【図７】
0006631232.tif 000008
【図８】
0006631232.tif 000009
【図９】
0006631232.tif 000010
【図１０】
0006631232.tif 000011
【図１１】
0006631232.tif 000012