(58)【調査した分野】(Int.Cl.,DB名)
前記分析モジュールは、前記第2のフットプリントが前記第1のフットプリントと一致すると判定したとき、前記第1のフットプリントおよび前記第2のフットプリントに基づいてルーティング経路を判定するように構成された、請求項1に記載のシステム。
複数のメモリスロットを有する循環バッファをさらに備え、前記分析モジュールは、前記複数のメモリスロットを有する循環バッファに前記第1のフットプリントおよび前記第2のフットプリントを記憶するように構成された、請求項1に記載のシステム。
前記ダイジェスト情報ジェネレータは、前記パケットのサイズが、最大伝送単位サイズを超えたと判定したとき、前記第1のフットプリントおよび前記第2のフットプリントのためのハッシュ値をさらに計算するように構成された、請求項1に記載のシステム。
前記第2のフットプリントが前記第1のフットプリントと一致するとき、前記第1のフットプリントおよび前記第2のフットプリントに基づいてルーティング経路を判定するステップ、をさらに有する請求項7に記載の方法。
通信ネットワークにおけるパケットのルーティング経路を推定するための方法を実行するために、コンピュータによって実行されるコンピュータプログラムを記憶する非一時的なコンピュータ読み取り可能な媒体であって、前記方法は、
データ収集モジュールにより、第1のセンサおよび第2のセンサによって受信されたパケットを取得するステップと、
ダイジェスト情報ジェネレータにより、前記第1のセンサから前記データ収集モジュールによって取得されたパケットのための第1のフットプリントと、前記第2のセンサから前記データ収集モジュールによって取得されたパケットのための第2のフットプリントとを生成するステップであって、前記第1のフットプリントと前記第2のフットプリントとはハッシュ値を有し、前記ハッシュ値の数は、伝送プロトコルによって指定された伝送単位サイズに基づいて決定される、ステップと、
分析モジュールにより、前記第2のフットプリントが前記第1のフットプリントと一致するか否かを判定するステップとを有する、非一時的なコンピュータ読み取り可能な媒体。
【発明を実施するための形態】
【0023】
本発明を説明する目的のために、いくつかの用語が、以下に定義される。明示的に定義されている場合を除いて、明細書および特許請求の範囲内の用語は、当業者に明らかである意味を有するように理解されるものとする。
【0024】
「通信ネットワーク」は、ケーブル媒体または無線媒体のような通信インフラストラクチャを介して接続されたネットワーク化されたコンピューティングデバイスの集合を指す。通信ネットワークの例は、限定されないが、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)を含む。
【0025】
「ルーティング」は、通信ネットワークにおけるネットワーク化されたコンピューティングデバイスの中で利用可能な複数の経路の中から経路を選択する処理を指す。
【0026】
「パケット交換ネットワーク」は、パケットと呼ばれる離散的な固定サイズのブロックの形態で、コンテンツタイプ、サイズ、または構造に関係なく、すべてのデジタル通信を伝送することが可能な通信ネットワークを指す。パケット交換ネットワークのいくつかの例は、限定されないが、インターネットおよびローカルエリアネットワーク(LAN)を含む。パケット交換ネットワークの一例は、インターネットプロトコル(IP)を基にしたネットワークであり、規格RFC 791に規定された仕様に従って、ネットワークデバイスによって、各パケットが生成され、送信される。IPパケットは、ヘッダセクションおよびペイロードセクションを含む。ヘッダは、情報、限定されないが、送信元IPアドレス、宛先IPアドレス、タイムスタンプ、および様々なパラメータを含む。ペイロードセクションは、パケットによって送信されるデータを含む。
【0027】
「産業制御ネットワーク」は、石油精製所における処理制御のように、産業環境における物理的な機器またはデバイスを監視および制御するために使用される相互接続された機器を備える通信ネットワークを指す。産業制御ネットワークは、高い信頼性、故障の過酷さ、パケットラウンドトリップタイム、およびデータパケットサイズに関連する特定の要件で、従来の通信ネットワークとは異なる。たとえば、産業制御ネットワークにおけるパケットラウンドトリップタイムは、250マイクロ秒から10ミリ秒の範囲に及ぶ。これは、従来のネットワークで使用される50ミリ秒のパケットラウンドトリップタイムよりも比較的短い。産業制御ネットワークにおけるデータパケットサイズは、従来のネットワークよりも小さい。単一の測定値を送信する例を考慮されたい。それは、通常、64バイトで始まるパケットサイズを有する従来のネットワークと比較して、オーバヘッド情報とあわせて数バイトのオーダである。
【0028】
「産業イーサネット(登録商標)」は、配線およびシグナリングのためにイーサネット(登録商標)規格を使用する通信ネットワークを指すが、より高い温度、振動、電気的なノイズ、および、処理プラントまたは製造施設のその他の動作状態に耐えることが可能な堅固なコネクタの使用を伴う。製造プラントまたは処理プラントのような産業に存在する動作状態は、摂氏数100度のオーダのより高い温度、湿度、ほこり、および振動の近くに配置される機器を含む。これは、摂氏18〜27度の空調されたエリアのようなクリーンで温度制御された環境で動作する従来のネットワークとは対照的である。
【0029】
「ハブ」すなわちネットワークハブは、物理レイヤまたはOSI(オープンシステムインタコネクション)モデルのレイヤ1における接続を可能にすることによって、ネットワークセグメントを形成するために、複数のイーサネット(登録商標)デバイスを一緒に接続することを可能にするネットワーキングデバイスを指す。
【0030】
「スイッチ」すなわちネットワークスイッチは、データリンクレイヤ、またはOSIモデルのレイヤ2における接続を可能にすることによってパケット交換の機能を実行するネットワーキングデバイスを指す。スイッチは、パケットを、意図されたネットワークデバイスへ送信することによって、パケットのフローを管理することが可能である。スイッチは、接続されたすべてのデバイスへパケットを送信するハブとは異なり、特定のデバイスへパケットを方向付ける能力のために、インテリジェントなハブと考えられる。したがって、スイッチは、結合されている特定のデバイスへのパケットのアドレシングによって、ハブよりも高いデータ送信レートを有する。
【0031】
「ルータ」は、通信ネットワーク間でパケットを転送する機能を実行する専用のネットワーキングハードウェアを指す。ルーティングテーブルは、後続するネットワークへパケットを方向付けるようにルータにおいて設定される。ルータは、レイヤ3、すなわち、OSIモデルのネットワークレイヤにおいて動作する。
【0032】
「データグラム」は、送信の基本単位、送信元および宛先コンピュータと伝送ネットワークとの間での以前の交換に依存することなく、送信元から宛先コンピュータへルーティングされるべき十分な情報を伝送するデータの自己完結した独立したエンティティを指す。
【0033】
「インターネットプロトコル」(IP)は、異なる通信ネットワークにわたるデータグラムを中継するインターネットプロトコルスイートのためのキー通信プロトコルを指す。このプロトコルは、インターネットプロトコルアドレスに基づくルーティング機能に重要であるので、インターネットアドレシングおよびネットワーキングの基礎をなす。
【0034】
「ファイアウォール」は、事前設定されたルールのセットに基づいて、到来および発信するパケットのトラフィックを制御するネットワークセキュリティデバイスを指す。それは、安全なネットワークと、外部のまたは安全でないと考えられる別のネットワーク、たとえばインターネットとの間で主に使用される。この文脈では、ファイアウォールはさらに、企業または産業プラントネットワークの異なる各部分を分離するために使用される。
【0035】
「サーバ」は、通信ネットワークを横断して要求に応答する任意のシステムを指す。処理制御におけるサーバの一例は、OPC(Object Linking and Embedding for Process Control, 処理制御のためのオブジェクトリンクおよび埋め込み)規格に準拠する産業制御ネットワークにおいてクライアントからの要求を受信するOPCである。サーバは、OPC規格のような規格に従って、適切な応答メッセージでクライアントに応答する。
【0036】
「ハッシュ関数」は、あらゆるデータまたはデータパケットを固定サイズのデータへマッピングすることが可能である関数を指す。何れかのデータまたはデータパケットをハッシュ関数へ渡した結果は、ハッシュ値または単にハッシュと呼ばれる。たとえば、セキュアハッシュアルゴリズム(SHA)およびメッセージダイジェストアルゴリズム(MD-5)はハッシュ関数である。パケットは、パケットに含まれる固定データのハッシュを計算するために、変数を削除するように修正され得る。
【0037】
「フットプリント」は、パケットから導出された情報を含み、パケットをユニークに識別するために使用されることが可能である任意のデータ構造を指す。フットプリントは典型的に、ハッシュ値、および、パケットヘッダ内に存在する選択されたフィールドを含む。
【0038】
「データバス」は、複数のコンピュータにデータを同時に配信することが可能である通信ネットワークの一部を指す。典型的には、データバスを通して送信されるデータは、新たなフォーマットのオリジナルのデータから導出されたフットプリントであり、このフットプリントは、オリジナルのデータまたはデータパケットのサブセットである情報を含むフィールドを含む。たとえば、クライアントコンピュータは、フットプリントの分析を実行するために、データバスに結合され得る。
【0039】
図1は、本発明のいくつかの実施形態が存在する環境100の一例の図である。
図1に示されるように、環境100は、限定されないが、3つのレベルのネットワークを含む。
【0040】
第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に接続される。
【0041】
図1では、産業イーサネット(登録商標)120の下に示されるネットワーク要素が、制御および自動化レベルを形成する。
図1に提示された制御要素のうちの何れか1つが、処理プラントの要件に依存して、ルータ126、またはハブ122、または無線アクセスポイント128へ接続されることが当業者によって理解されるであろう。さらに、ハブ122またはスイッチ124は、何れかが、産業イーサネット(登録商標)120を介して直接にルータ126へ接続されることが可能である。
図1は、例として、本発明の実施形態が存在する処理プラントにおける環境を示すことが意図され、本発明の範囲がここに提示された例に限定されると解釈されるべきではない。
【0042】
図1に示される本発明の例示の環境における第2のレベルは、処理制御レベルである。これは、ローカル制御ステーション112、サーバ114、および操作者制御ステーション116を含む。第2のレベルでは、用いられる通信ネットワークは、産業イーサネット(登録商標)120である。ローカル制御ステーション112および操作者制御ステーション116は、同じネットワーク内のサーバ114に接続される。操作者制御ステーション116はまた、ルータ118に接続される。ルータ118は、本発明のいくつかの実施形態による、複数の処理制御システムを有する同じプラントにおける別の処理制御システムに接続される。
【0043】
図1に示される環境における第3のレベルは、中央コンピュータ管理レベルである。前述したように、サーバ114は、ファイアウォール110に接続される。ファイアウォール110は、中央コンピュータ管理レベルが、第2のレベルおよび第1のレベルと通信することを可能にするように構成される。ファイアウォールはまた、中央コンピュータ管理レベルから第2のレベルおよび第1のレベルへ流れるあらゆる無許可のトラフィックを阻止する。中央コンピュータ管理レベルは、サーバ104、および産業イーサネット(登録商標)のような通信ネットワークを用いて通信する2つの端末102、106を含む。
【0044】
本発明のいくつかの実施形態では、ローカル制御ステーション112、操作者制御ステーション116、およびサーバ114が、ルータ108に接続される。ルータ108は、ファイアウォール110を通して処理制御レベルのサーバ114に接続される。
図1に示される3つのルータ108、118、および126は、分析のために通信ネットワークパケットを収集するために使用され、これによって、通信ネットワークを通して流れるパケットのルーティング経路を推定する。
【0045】
本発明の他の実施形態では、ルータ108、118、および126が、
図1の環境100に示されるように、通信ネットワークを通して流れるパケットのルーティング経路を推定するために用いられるシステム構成要素を含むコンピュータ140(図示せず)に接続される。
【0046】
図1の環境100の第2および第3のレベルに示される通信ネットワークは、限定されないが、産業イーサネット(登録商標)によって送信される、伝送制御プロトコル(TCP)、IP、X.25、およびフレームリレーを含むネットワークプロトコルを具現化するパケット交換ネットワークであることが理解されるであろう。
図1に示されるような環境では、第1のレベルで用いられる通信ネットワークは、産業制御ネットワークである。産業制御ネットワークの例は、プロトコル、限定されないが、Foundation Fieldbus、Modbus、およびProfibusを用いる。第2および第3のレベルで用いられる通信ネットワークは、産業イーサネット(登録商標)である。それは、伝送制御プロトコル(TCP)およびIPのようなOSIモデルに基づくプロトコルを用いる。
【0047】
図示されないコンバータは、本発明のいくつかの実施形態に従って、Foundation Fieldbus、Modbus、およびProfibusのようなプロトコルを用いる産業制御ネットワークからインターネットプロトコルへトラフィックを変換するために用いられる。
【0048】
図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をその順で通過したことを示す。
【0049】
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へ送信する。
【0050】
経路P1 220を通して移動するパケットA 202の例は、3つすべてのルータA 108、B 118、およびC 126において受信され、従って、パケットの同じコピーが、データ収集モジュール214において受信されることに留意すべきである。
【0051】
データ収集モジュール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は受信され、さらなる分析のためにキューに入れられる。
【0052】
分析モジュール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に記憶される。
【0053】
図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が生成される。
【0054】
ステップS404は、データ収集モジュール214内に存在するファーストインファーストアウト(FIFO)キュー240(図示せず)へパケットA 202、B 204、およびC 206を追加するタスクを実行する。FIFOキュー240は、各々が、予め定義された時間単位を表すメモリスペースを備えるメモリスペース412(図示せず)を有することに留意すべきである。小さな時間単位は、ルーティング経路を推定する精度を改善する。本発明のいくつかの実施形態よれば、用いられる予め定義された時間単位は、1秒未満である。別の好適な実施形態では、パケットのルーティング経路を推定するときにより高い精度のために、ミリ秒の時間分解能が要求される。
【0055】
このステップS404の間、キュー240は、パケットを有する、またはパケットを有さない何れかのメモリスペース412から構成される。本発明のいくつかの実施形態では、FIFOキュー240は、各メモリスペース412につき1つよりも多くのパケットを含む。
【0056】
ステップ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と関連して詳細に説明される。
【0057】
ステップS410では、フットプリントは、分析の後に、データバスへ送信される。パケットA 202、B 204、およびC 206は、ブロードキャストによって、データバスに結合された他のクライアントによって受信されることが可能である。データバスに結合された何れのクライアントも、ルーティング経路が推定された後、パケットA 202、B 204、およびC 206のさらなる分析のために使用される。したがって、分析の間にステップS406において生成されたフットプリントが記録され、ログ218に記憶される。
【0058】
図5は、本発明のいくつかの実施形態による、IPパケット500のデータ構造の図である。IPパケットは、ヘッダセクションとペイロードセクションとから構成される。IPのための規格は、RFC 791に定義されている。ヘッダセクションは、同伴するデータを、特定の宛先へ経路付けるために必要な情報を含む。ペイロードセクションは、IPパケットを用いて送信される実際のデータを含む。
【0059】
ヘッダは、以下の情報を含んでいる。バージョン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データグラムにおいて使用されるプロトコルを定義するために使用される。
【0060】
ヘッダチェックサム520は、誤りをチェックするために、IPパケット500において使用される。この値は、パケットヘッダのチェックサムを計算し、この値を、IPパケット500内に存在するヘッダチェックサムフィールドと比較するために、ルータによって使用される。ルータによって計算されたチェックサムの値が、IPパケット500内のヘッダチェックサム520と同一ではないのであれば、ルータは、IPパケット500を、誤りであるとして廃棄する。IPパケット500は、ルータへの送信または受信処理の間、損傷を受ける可能性が高い。送信元アドレス522は、パケット送信元のIPアドレスを記憶するフィールドである。宛先アドレス524は、IPパケット500の宛先を定義するために使用されるフィールドである。
【0061】
IPヘッダ内に存在する前述されたすべてのフィールドに加えて、オプション526フィールドが存在し、IPがどのようにしてデータグラムを取り扱うのかに対してさらなる柔軟性を追加するために使用される。データ528フィールドは、ペイロードセクションを表わし、ヘッダに付加される。
【0062】
図6は、本発明のいくつかの実施形態による、フットプリント構造の生成を示すフローチャートである。
【0063】
本発明のこの実施形態に従って、ステップS602において、ルータA 108、B 118、およびC 126を通過する例示的なパケットA 202が収集される。パケットは、その後、センサA 208、B 210、およびC 212へ送信される。後続するすべてのステップは、ダイジェスト情報ジェネレータ215において実行され、パケットA 202は、ダイジェスト情報ジェネレータ215の前に、データ収集モジュール214へ送信される。
【0064】
ステップS604では、パケットA 202における可変フィールドが、ゼロで置換される。たとえば、サービスのタイプ506のようなIPパケットフィールドでは、TTL 516、チェックサム520、フラグメントオフセット514、およびオプション526が、ゼロで置換される。この演算は、ハッシュの計算中に、パケットヘッダ内の可変フィールドを除去するために実行される。ハッシュは、結果としてハッシュ値となる、または、ハッシュと称されるためにハッシュ関数を通過した入力データを用いて生成されるユニークな識別子である。本発明のこの実施形態では、ハッシュ関数への入力データは、ゼロで置換された可変フィールドを持つIPパケットであり、ハッシュ関数を通過した後の結果は、同じIPパケットをユニークに識別することが可能であるハッシュ値である。ハッシュ関数のいくつかの例は、限定されないが、セキュアハッシュアルゴリズム(SHA)およびメッセージダイジェストアルゴリズム(MD-5)を含む。
【0065】
パケットA 202は、ルータ間に存在するネットワークを通過している間に、最大伝送単位(MTU)における制限により、フラグメント化される。MTUは、特定の通信レイヤのネットワークプロトコルに関して前方に通過することを許可された最大の伝送単位として定義される。IPv4では、最小のデータグラムサイズは、RFC 791において指定されているような576バイトであり、すべてのホストデバイスが、この最小データグラムサイズのデータグラムを受け取る準備ができていなくてはならない。同様に、IPv6では、最小データグラムサイズは1280バイトである。パケット送信のための実際のMTUサイズは、ネットワークトポロジのタイプおよび送信媒体のタイプに限定されない要因に依存し、それぞれのIPプロトコルについて指定された最小データグラムサイズより大きい。ネットワークにおいて許容されているMTUを超えるサイズを有する、ネットワークに到着したIPパケットは、ルータによってフラグメント化される。このIPパケットは、その経路にそってさらに異なるネットワークを通過したとき、再組み立てされ得る。
【0066】
好適な実施形態では、パケットは、さらなるパケットの分析およびハッシュの計算のために、全体のネットワーク経路において許容されている最小データグラムサイズ以上のフラグメントに分割される。さらなる分析およびハッシュの計算のためのこのフラグメント化は、ルータによって実行されず、分析モジュール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と関連して説明される。
【0067】
図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を表す。フットプリント内のフィールドの数は、パケット比較の精度を高めるために、パケットから導出されるより多くのフィールドを含めるように増加され、これによって、ルーティング経路推定の効率を高める。
【0068】
図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およびセンサ識別子の両方を記憶するように構成される。
【0069】
循環バッファ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は、本発明のいくつかの実施形態に従って、フットプリントを記憶する前に、最も古いメモリスロットを空にする。
【0070】
循環バッファ800の形態でメモリスロットを実現する利点は、より古いメモリスロットにおけるエントリが、自動的に上書きされることである。ルーティング経路分析を実行するときの循環バッファの使用は、
図9においてさらに説明される。限定されないが、キュー、スタック、バイナリツリー、またはヒープを含むその他のデータ構造が、分析モジュール216に存在するメモリスロットを実現するために用いられ得ることがこの技術分野の当業者によって理解され、従って、本発明の範囲は、循環バッファに限定されるとは解釈されないものである。
【0071】
図9は、本発明のいくつかの実施形態による、ルーティング経路推定のためのフローチャート900である。
【0072】
本発明の実施形態に従って、真または偽の何れかとして保持されるブール変数930(図示せず)が、データ収集モジュール214に保持される。一例において、パケットのルーティング経路を受信し分析するため、システムの開始動作または終了動作を変えるために、ブール変数FLAG 930が使用される。
【0073】
この実施形態では、ステップ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ミリ秒待つ。
【0074】
本発明のこの実施形態では、タイマスレッド220が、ステップS906において時間データを保持する。タイマスレッド220は、パケットのルーティング経路を判定するために必須である時間の単位を追跡し続ける。ステップS906では、データ収集モジュールに存在するタイマスレッド220が、ステップS907の間、予め定義された時間単位の数の間にデータを受信するために利用可能なメモリスペース412をFIFOキュー240(図示せず)に追加する。続いて、前に説明したように、チェックFLAG 930動作が実行される。この分岐点では、FIFOキュー240は、さらなる分析のために、時間データまたはパケットの何れかを含む。
【0075】
ステップS905は、パケットA 202、B 204、およびC 206を、データ収集モジュール214内に存在するFIFOキュー240へ追加するタスクを実行する。FIFOキュー240は、予め定義された時間単位を表すメモリスペース412を有することに留意すべきである。
【0076】
本発明の実施形態によれば、ステップ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動作を繰り返す。
【0077】
本発明の別の実施形態によれば、ステップS912は、キューから出す動作が結果として、パケットになるか、または、空のメモリスペースになるかをチェックするために、ダイジェスト情報ジェネレータ215によって実行される。キューから出す動作が結果としてパケットになる場合では、受信された例示的なパケットC 206のためにフットプリント618が生成される。キューから出す動作の結果としてパケットが受信されなければ、ステップS914において、FIFOキュー240情報が、分析モジュール216によってログファイルに記録される。一実施形態では、好適なデータ構造は、メモリスロット802、804、806、808、810、814、816、818を有する循環バッファ800である。
【0078】
本発明のいくつかの実施形態によれば、分析モジュール216は、ステップS914において、循環バッファ800が満杯であるとき、メモリスロット802、804、806、808、810、814、816、818におけるフットプリントのタイムスタンプに基づいて、最も古いメモリスロットを識別する。その後、分析モジュール216は、最も古いメモリスロットを空にする。分析モジュール216は、本発明のいくつかの実施形態に従って、最も古いメモリスロットに上書きする。ステップS914においてこのようにして除去された内容は、アーカイブ目的のために、ログファイルに移動される。
【0079】
ステップS918では、パケットC 206が受信されたとき、フットプリント618が、ダイジェスト情報ジェネレータ215によって生成される。この場合、フットプリント618は、ネットワークを通過するパケットC 206をユニークに識別するために使用される識別子である。たとえば、フットプリント618は、ルータにおいて受信されたIPパケットのために、ハッシュ関数を用いて生成されたハッシュである。フットプリント618は、同様にパケットから導出された他の情報を含み得る。IPパケットC 206を収集し、可変フィールドを置換した後のハッシュの生成は、
図6に対応する記載で説明される。ハッシュはこのように生成され、パケットC 206に関するフットプリントを形成するために、タイムスタンプ702、センサ識別子704、送信元IP 710、および宛先IP 712のような付加的なパケット情報と共に付加される。フットプリントの構造は、
図7に対応する記載で説明される。所与のパケットのフットプリントは、パケットから導出されるデータのサブセットを含み、したがって、オリジナルのパケットと比較して、サイズが小さい。これは、制限された時間フレームについて、パケットのリアルタイムの記憶および分析を可能にする。
【0080】
分析モジュール216は、循環バッファのメモリスロット内にフットプリントを生成した後、ステップS918において処理を実行する。ステップS920の間、最後に生成されたフットプリント618が、循環バッファ800のメモリスロット内に既に存在するフットプリントと比較される。循環バッファの構造および動作は、
図8に対応する記載において説明される。循環バッファは、制限されたメモリサイズを有するという理由、および、バッファが満杯であるときにメモリスロットを自動的に解放するという循環バッファの特性によって、分析モジュール216のために適切なデータ構造である。ステップS920における比較動作の間に一致が見出されたのであれば、ステップS924において、センサ識別子704が、フットプリント618を含むメモリスロットに追加される。この新たに記憶された情報は、ルーティング経路を計算するため、および、異なるルータにおけるパケットの予測のために使用されるであろう。したがって、循環バッファ800によって表される時間フレーム内では、異なるルータにおいて受信された同じパケットのフットプリントは、ルータにリンクされた異なるセンサ識別子704を有する同じフットプリント618を用いて識別されることが可能である。
【0081】
循環バッファ800へセンサ識別子704を記憶した後、循環バッファ800が満杯であれば、新たなメモリスロットを生成するためにメモリスロットから除去されたフットプリントおよびセンサ識別子が、ログに記憶され、データバスへ送信される。
【0082】
循環バッファ800の固定サイズにより、メモリスロット内に存在するフットプリントは、限定された期間のみ保持されることが可能であることに留意すべきである。循環バッファ内の制限されたメモリのため、フットプリントは、循環バッファが満杯であるときには、ステップS916においてログに記憶され、その後、ステップS928においてデータバスへ送信される。循環バッファ800はまた、メモリスロットを空にするために、タイマスレッドと同期される。ステップS922における比較の間に一致が見出されなかったのであれば、ステップS926において、すべての既存のメモリスロットが満杯であれば、フットプリント618は、循環バッファ800内の最も新しいメモリスロットに書き込まれる。循環バッファ800のメモリスロットが満杯でないならば、フットプリント618は、利用可能なメモリスロットに書き込まれる。その後、フットプリント618は、ステップS928においてデータバスへ送信される。
【0083】
図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は、その宛先へ送信される。
【0084】
データ収集モジュール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へ移動するために費やされた時間を示す。
【0085】
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で受信されたパケットのために生成される。
【0086】
分析モジュール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つのパケットおよび循環バッファに存在する情報の比較のために用いられる。しかしながら、比較の精度は、フットプリントに存在するすべての情報を比較することによって、高められ得る。
【0087】
本発明の別の実施形態では、パケットが、システムに接続されたルータであるルータB 118およびルータC 126を通過したか否かを判定するために、フットプリントを求めてログ218が探索される。
【0088】
図11は、システムのいくつかの実施形態が実現される例示的なシステム1100を示す。
【0089】
システム1102は、少なくとも1つのプロセッサ1104および少なくとも1つのメモリ1106を含む。プロセッサ1104は、プログラム命令を実行し、実際のプロセッサであり得る。プロセッサ1104はまた、仮想的なプロセッサであり得る。コンピュータシステム1102は、記載された実施形態の用途または機能の範囲に関して、何れの限定も示唆することは意図されない。たとえば、コンピュータシステム1102は、限定されないが、汎用コンピュータ、プログラムされたマイクロプロセッサ、マイクロコントローラ、集積回路、および、本発明の方法を構成するステップを実現することが可能な他のデバイスまたはデバイスの配列、のうちの1つまたは複数を含み得る。本発明の一実施形態では、メモリ1106は、本発明の様々な実施形態を実現するためのソフトウェアを記憶し得る。コンピュータシステム1102は、さらなる構成要素を有し得る。たとえば、コンピュータシステム1102は、1つまたは複数の通信チャネル1108、1つまたは複数の入力デバイス1110、1つまたは複数の出力デバイス1112、および記憶装置1114を含む。バス、コントローラ、またはネットワークのような相互接続メカニズム(図示せず)は、コンピュータシステム1102の構成要素を相互接続する。本発明の様々な実施形態では、オペレーティングシステムソフトウェア(図示せず)は、コンピュータシステム1102において実行する様々なソフトウェアのための動作環境を提供し、コンピュータシステム1102の構成要素の異なる機能を管理する。
【0090】
通信チャネル1108は、他の様々なコンピューティングエンティティへの通信媒体を介した通信を可能にする。通信媒体は、プログラム命令のような情報、または、情報媒体における他のデータを提供する。通信媒体は、限定されないが、電気、光、RF、赤外線、聴覚、マイクロ波、ブルートゥース(登録商標)または他の送信媒体を用いて実現される有線または無線の方法論を含む。
【0091】
入力デバイス1110は、限定されないが、タッチスクリーン、キーボード、マウス、ペン、ジョイスティック、トラックボール、音声デバイス、スキャニングデバイス、または、コンピュータシステム1102に入力を提供することが可能な他の任意のデバイスを含み得る。本発明の一実施形態では、入力デバイス1110は、サウンドカード、または、アナログ形式またはデジタル形式でオーディオ入力を受け取る類似のデバイスであり得る。出力デバイス1112は、限定されないが、CRTもしくはLCD上のユーザインターフェース、プリンタ、スピーカ、CD/DVDライタ、またはコンピュータシステム1102からの出力を提供する他の任意のデバイスを含み得る。
【0092】
記憶装置1114は、限定されないが、磁気ディスク、磁気テープ、CD-ROM、CD-RW、DVD、任意のタイプのコンピュータメモリ、磁気ストライプ、スマートカード、印刷されたバーコード、または、情報を記憶するために使用されることが可能であり、コンピュータシステム1102によってアクセスされることが可能である他の任意の一時的もしくは非一時的な媒体を含み得る。本発明の様々な実施形態では、記憶装置1114は、記載された実施形態を実現するためのプログラム命令を含む。
【0093】
本発明は、システム、方法、または、コンピュータ読み取り可能な記憶媒体もしくはプログラミング命令が遠隔場所から伝達されるコンピュータネットワークのようなコンピュータプログラム製品として含む様々な手法で実現され得る。
【0094】
本発明の開示は、コンピュータシステム1102と共に用いるためのコンピュータプログラム製品として適切に具体化され得る。ここに記載された方法は、典型的に、コンピュータシステム1102または他の任意の類似デバイスによって実行されるプログラム命令のセットを含むコンピュータプログラム製品として実現される。プログラム命令のセットは、コンピュータ読み取り可能な記憶媒体(記憶装置1104)、たとえば、ディスケット、CD-ROM、ROM、フラッシュデバイス、もしくはハードディスクのようなのような有形の媒体に記憶された一連のコンピュータ読み取り可能なコードであり得るか、または、限定されないが、光もしくはアナログの通信チャネル1108を含む有形の媒体を介して、モデムもしくは他のインターフェースデバイスを経由してコンピュータシステム1102へ送信可能であり得る。コンピュータプログラム製品としての本発明の実現は、限定されないが、マイクロ波、赤外線、ブルートゥース(登録商標)、または他の送信技術を含む無線技術を用いた無形の形態であり得る。これらの命令は、システムに事前にロードされるか、または、CD-ROMのような記憶装置に記録されるか、または、インターネットまたは携帯電話ネットワークのようなネットワークを介してダウンロードすることを可能とされ得る。一連のコンピュータ読み取り可能な命令は、ここに前述された機能のすべてまたは一部を具体化し得る。
【0095】
本発明の例示的な実施形態がここに記載および例示される一方、これらは単なる例示であることが認識されるであろう。形態および詳細における様々な修正が、ここでは、添付された特許請求の範囲によって定義されたような本発明の思想および範囲から逸脱することも、またそれに反することもなくなされ得ることが当業者によって理解されるであろう。