(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-26
(54)【発明の名称】機器監視システム
(51)【国際特許分類】
H04L 43/02 20220101AFI20230719BHJP
【FI】
H04L43/02
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022579130
(86)(22)【出願日】2021-06-30
(85)【翻訳文提出日】2022-12-21
(86)【国際出願番号】 US2021039948
(87)【国際公開番号】W WO2022006307
(87)【国際公開日】2022-01-06
(32)【優先日】2020-07-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】399117121
【氏名又は名称】アジレント・テクノロジーズ・インク
【氏名又は名称原語表記】AGILENT TECHNOLOGIES, INC.
(74)【代理人】
【識別番号】100099623
【氏名又は名称】奥山 尚一
(74)【代理人】
【識別番号】100125380
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【氏名又は名称】田中 祐
(74)【代理人】
【識別番号】100218604
【氏名又は名称】池本 理絵
(72)【発明者】
【氏名】ファサーニ,リック
(57)【要約】
機器と制御装置との間のデータストリームを捕捉し、解釈するシステムおよび方法が開示される。プロセッサは、機器によって制御装置に送信されたデータストリームを受信し、ストリーム内のデータフレームを特定するように構成される。プロセッサは、ストリーム内のビットパターンを検索し、ビットパターンに対して相対的な位置に基づいて、第1の推定されたデータフレームのメッセージ長に対応するビットを特定し、第1の推定されたデータフレームのメッセージ長に基づいて、データストリーム内の第2の推定されたデータフレームを特定するように構成される。プロセッサは、さらに、ビットパターンの第2のインスタンスを特定し、カウント値を増加させ、スキャンを継続し、特定されたデータフレームから機器測定データまたは動作メタデータを抽出および保持し、視覚的な情報を生成し、または、警告を発生させるために、捕捉されたデータおよびメタデータを分析または解釈する。
【選択図】
図1A
【特許請求の範囲】
【請求項1】
捕捉されたデータストリームを解釈するネットワーク装置であって、
機器と当該機器の制御装置との間で送信される、捕捉されたデータストリームを受信するように構成されたネットワークインタフェースと、
前記ネットワークインタフェースに接続されたメモリであって、前記捕捉されたデータストリームを保持するように構成されているメモリと、
プロセッサと
を含み、前記プロセッサは、
前記機器から前記制御装置に送信されたデータストリームを受信し、
第1の処理スレッドを使用して前記データストリーム内のデータフレームを特定するように構成されており、
前記データフレームの特定は、
前記データストリーム内のあるビットパターンの第1のインスタンスを検索し、
前記ビットパターンの前記第1のインスタンスに対して相対的なある位置に基づいて、第1の推定されたデータフレームのメッセージ長に対応するビットを特定し、
前記第1の推定されたデータフレームのメッセージ長に基づいて、前記データストリーム内の第2の推定されたデータフレームを特定し、
前記ビットパターンの第2のインスタンスが、前記第2の推定されたデータフレーム内の予測された位置に存在するかどうかを判定し、
前記予測された位置で前記ビットパターンの前記第2のインスタンスを特定することに応答して、前記ビットパターンのカウント値を増加させ、前記カウント値が閾値に達するまで、前記推定されたデータフレーム内の予測された位置で前記ビットパターンのスキャンを継続し、
前記カウント値の前記閾値に達したことに応答して、前記第1の推定されたデータフレームおよび前記第2の推定されたデータフレームを実際のデータフレームとして特定することによる、
前記ネットワーク装置。
【請求項2】
前記データストリーム内のデータフレームの特定は、さらに、
前記予測された位置とは異なる位置で前記ビットパターンの第2のインスタンスを特定することに応答して、前記データストリーム内のデータフレームをフレーム化するための代替基準として前記異なる位置の前記第2のインスタンスを使用する第2の処理スレッドを開始することを含む、請求項1に記載のネットワーク装置。
【請求項3】
前記ビットパターンは、0x00000065である、請求項1または2に記載のネットワーク装置。
【請求項4】
前記ビットパターンは、前記第1の推定されたデータフレームのメッセージタイプを特定する、請求項1~3のいずれかに記載のネットワーク装置。
【請求項5】
前記第1の推定されたデータフレームのメッセージ長に対応する前記ビットは、前記第1の推定されたデータフレームの前記メッセージタイプに対応するビットに先行する、請求項4に記載のネットワーク装置。
【請求項6】
前記データストリームに関連するビットレートは、さらに、前記プロセッサによって、前記機器の実行時間または使用率の尺度または指標として判定される、請求項1~5のいずれかに記載のネットワーク装置。
【請求項7】
前記特定されたデータフレームは、前記機器の実行状態情報を含む、請求項1~6のいずれかに記載のネットワーク装置。
【請求項8】
前記実行状態情報は、前記機器の実行時間または使用率を判定するために使用される、請求項7に記載のネットワーク装置。
【請求項9】
前記特定されたデータフレームは、前記プロセッサが機器の動作を判定するために使用するデータまたはメタデータを含む、請求項1~8のいずれかに記載のネットワーク装置。
【請求項10】
前記メタデータは、機器の設定値および動作値を含む、請求項9に記載のネットワーク装置。
【請求項11】
設定値と動作値との比較を使用して警告を発生させ、または、視覚的な情報を生成する、請求項10に記載のネットワーク装置。
【請求項12】
前記データおよびメタデータは、複数回の機器の実行を通じて収集および保持される、請求項9~11のいずれかに記載のネットワーク装置。
【請求項13】
複数回の機器の実行を通じて収集された前記データとメタデータとの比較を使用して、傾向の特定、イベントの予測、警告の発生、または視覚的な情報の生成を行う、請求項12に記載のネットワーク装置。
【請求項14】
複数回の機器の実行を通じて収集された前記データとメタデータとの比較を使用してローカルまたはリモートで機器のトラブルシューティングを行う、請求項12または13に記載のネットワーク装置。
【請求項15】
当該ネットワーク装置は、前記機器と前記制御装置との間のミラーリングスイッチと通信する、請求項1~14のいずれかに記載のネットワーク装置。
【請求項16】
前記受信したデータストリームは、前記機器および前記制御装置の少なくとも一方から前記ミラーリングスイッチによって受信された元のデータストリームからミラーリングされる、請求項15に記載のネットワーク装置。
【請求項17】
当該ネットワーク装置は、前記機器と前記制御装置との間に位置する、請求項1~14のいずれかに記載のネットワーク装置。
【請求項18】
当該ネットワーク装置は、前記機器と前記制御装置との間の通信を容易にするためのプロキシサーバを含む、請求項17に記載のネットワーク装置。
【請求項19】
前記プロセッサは、さらに、前記機器によって使用される既知のプロトコルに基づいて検索されるビットパターンを選択するように構成される、請求項1~17のいずれかに記載のネットワーク装置。
【請求項20】
機器によって制御装置に送信されたデータストリームを受信するステップと、
第1の処理スレッドを使用して前記データストリーム内のデータフレームを特定するステップと
を含み、前記特定するステップは、
前記データストリーム内のビットパターンの第1のインスタンスを検索するステップと、
前記ビットパターンの前記第1のインスタンスに対して相対的なある位置に基づいて、第1の推定されたデータフレームのメッセージ長に対応するビットを特定するステップと、
前記第1の推定されたデータフレームの前記メッセージ長に基づいて、前記データストリーム内の第2の推定されたデータフレームを特定するステップと、
前記ビットパターンの第2のインスタンスが、前記第2の推定されたデータフレーム内の予測された位置に存在するかどうかを判定するステップと、
前記予測された位置でビットパターンの前記第2のインスタンスを特定することに応答して、前記ビットパターンのカウント値を増加させ、前記カウント値の閾値に達するまで、前記推定されたデータフレーム内の予測された位置で前記ビットパターンのスキャンを継続するステップと、
前記カウント値の閾値に達したことに応答して、前記第1の推定されたデータフレームおよび前記第2の推定されたデータフレームを実際のデータフレームとして特定するステップと
を含む、データストリームを解釈する方法。
【請求項21】
前記データストリーム内のデータフレームを特定するステップは、
前記予測された位置とは異なる位置で前記ビットパターンの前記第2のインスタンスを特定することに応答して、前記データストリーム内のデータフレームをフレーム化するための代替基準として前記異なる位置の前記第2のインスタンスを使用する第2の処理スレッドを開始するステップをさらに含む、請求項20に記載の方法。
【請求項22】
前記データストリーム内のデータフレームを特定するステップは、
前記第3のインスタンスの予測された位置とは異なる第2の位置で前記ビットパターンの前記第3のインスタンスを特定することに応答して、前記データストリーム内のデータフレームをフレーム化するための第2の代替基準として、第2の位置の第3のインスタンスを使用する第3の処理スレッドを開始するステップをさらに含む、請求項21に記載の方法。
【請求項23】
前記処理スレッドのうちの1つによって、前記カウント値の閾値に達したことに応答して、前記他の処理スレッドを終了し、前記閾値に達した前記処理スレッドに対応する前記データストリームのフレーム化仮説を選択するステップをさらに含む、請求項22に記載の方法。
【請求項24】
前記ビットパターンが、0x00000065である、請求項20~23のいずれかに記載の方法。
【請求項25】
前記ビットパターンは、前記第1の推定されたデータフレームのメッセージタイプを特定する、請求項20~24のいずれかに記載の方法。
【請求項26】
前記第1の推定されたデータフレームの前記メッセージ長に対応する前記ビットは、前記第1の推定されたデータフレームの前記メッセージタイプに対応するビットに先行する、請求項20~25のいずれかに記載の方法。
【請求項27】
当該方法が前記機器と前記制御装置との間に位置するネットワーク装置によって実行される、請求項20~26のいずれかに記載の方法。
【請求項28】
前記機器によって送信された前記データストリームを受信するステップは、プロキシサーバを用いて前記機器と前記制御装置との間の通信を代理するステップを含む、請求項20~26のいずれかに記載の方法。
【請求項29】
前記特定されたデータフレームから収集された実行状態情報から、機器使用率を判定するステップをさらに含む、請求項20~28のいずれかに記載の方法。
【請求項30】
前記データストリームのビットレートに基づいて機器使用率を判定するステップをさらに含む、請求項20~29のいずれかに記載の方法。
【請求項31】
前記特定されたデータフレームから設定値と実際の動作値とを比較するステップをさらに含む、請求項20~30のいずれかに記載の方法。
【請求項32】
多数回の機器の実行を通じて前記特定されたデータフレームから収集されたデータまたはメタデータを保持および比較するステップをさらに含む、請求項20~31のいずれかに記載の方法。
【請求項33】
前記特定されたデータフレームから収集されたデータまたはメタデータに基づいて、傾向の特定、イベントの予測、または、1つ以上の警告の発生のうちの少なくとも1つを行うステップをさらに含む、請求項20~32のいずれかに記載の方法。
【請求項34】
前記特定されたデータフレームから収集されたデータまたはメタデータに基づいて視覚的な情報を生成するステップをさらに含む、請求項20~33のいずれかに記載の方法。
【請求項35】
グラフィカルユーザインタフェースを使用して前記特定されたデータフレームから収集されたデータまたはメタデータをインタラクティブに探索するステップをさらに含む、請求項20~34のいずれかに記載の方法。
【請求項36】
前記特定されたデータフレームから収集されたデータまたはメタデータに基づいて機器のトラブルシューティングをローカルで、またはリモートで行うステップをさらに含む、請求項20~35のいずれかに記載の方法。
【請求項37】
ソフトウェア命令を保持する非一時的なコンピュータ読み取り可能な媒体であって、前記ソフトウェア命令がプロセッサによって実行されたときに、前記プロセッサにデータストリーム解釈させることを、
ある機器によって制御装置に送信されたデータストリームを受信するステップと、
第1の処理スレッドを使用して前記データストリーム内のデータフレームを特定するステップと
を実行することによって行い、
前記特定するステップは、
前記データストリーム内のビットパターンの第1のインスタンスを検索するステップと、
前記ビットパターンの前記第1のインスタンスに対して相対的なある位置に基づいて、第1の推定されたデータフレームのメッセージ長に対応するビットを特定するステップと、
前記第1の推定されたデータフレームのメッセージ長に基づいて、前記データストリーム内の第2の推定されたデータフレームを特定するステップと、
前記ビットパターンの第2のインスタンスが、前記第2の推定されたデータフレーム内の予測された位置に存在するかどうかを判定するステップと、
前記予測された位置で前記ビットパターンの前記第2のインスタンスを特定することに応答して、前記ビットパターンのカウント値を増加させ、前記カウント値の閾値に達するまで、前記推定されたデータフレーム内の予測された位置で前記ビットパターンのスキャンを継続するステップと、
前記カウント値の前記閾値に達したことに応答して、前記第1の推定されたデータフレームおよび前記第2の推定されたデータフレームを実際のデータフレームとして特定するステップと
によって行う、非一時的なコンピュータ読み取り可能な前記媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示内容は、監視システムに関する。特に、本開示内容は、研究施設で使用されるような機器監視システムに関する。本出願は、2020年7月1日に出願された「機器監視システム(Instrument Monitoring System)」と題された米国仮特許出願第63/046,964号の優先権を主張するものであり、その出願の開示内容全体を引用することにより本明細書の一部をなすものとする。
【背景技術】
【0002】
機器(instrucmnet)とソフトウェアのソリューションにより、研究施設において物質や製品の物理的および生物的特性の定量化と分析、並びに分子および細胞レベルでのサンプルの解析を行えるようになっている。このような機器としては、液体クロマトグラフ、ガスクロマトグラフ、液体クロマトグラフ質量分析計、ガスクロマトグラフ質量分析計、誘導結合プラズマ質量分析計、原子吸光分析計、マイクロ波プラズマ原子発光分光分析装置、誘導結合プラズマ発光分光分析装置、ラマン分光計、細胞分析プレート式測定システム、フローサイトメーター(flow cytometer)、リアルタイム細胞分析装置などを挙げることができる。これらの機器は、製薬、バイオテクノロジー、学術、政府機関、化学、環境、法医学、食品製造施設など、様々な場面で使用することができる。実験的な測定データに加えて、これらの機器からの動作データ(メタデータと呼ばれることもある)を分析のために収集できる。
【発明の概要】
【0003】
1つまたは複数の演算装置のシステムは、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせがシステムに組み込まれることによって、特定の動作または処理(action)を実行するように構成することができる。この構成により、システムは、その動作中に処理を実行する。1つまたは複数のコンピュータプログラムを構成して、命令によって特定の動作または処理を実行することができる。命令がデータ処理装置によって実行されると、装置は処理を実行する。
【0004】
1つの一般的な態様は、捕捉されたデータストリームを解釈するネットワーク装置を含む。このネットワーク装置は、捕捉されたデータストリームを受信するように構成されたネットワークインタフェースを含む。データストリームは、機器と当該機器の制御装置との間で送信される。さらに、ネットワーク装置は、ネットワークインタフェースに接続されたメモリを含む。メモリは、捕捉されたデータストリームを保持するように構成されている。さらに、ネットワーク装置は、プロセッサを含み、プロセッサは、機器から制御装置に送信されたデータストリームを受信し、第1の処理スレッドを使用してデータストリーム内のデータフレームを特定または識別するように構成されている。データフレームの特定または識別は、データストリーム内のビットパターンの第1のインスタンスを検索し、ビットパターンの第1のインスタンスに対して相対的な位置に基づいて、第1の推定されたデータフレームのメッセージ長に対応するビットを特定し、第1の推定されたデータフレームのメッセージ長に基づいて、データストリーム内の第2の推定されたデータフレームを特定し、ビットパターンの第2のインスタンスが、第2の推定されたデータフレーム内の予測された位置に存在するかどうかを判定し、予測された位置でビットパターンの第2のインスタンスを特定することに応答して、ビットパターンのカウント値を増加させ、カウント値の閾値に達するまで、推定されたデータフレーム内の予測された位置でビットパターンのスキャンを継続し、カウント値の閾値に達したことに応答して、第1の推定されたデータフレームおよび第2の推定されたデータフレームを実際のデータフレームとして特定するを含むことができる。この態様の他の実施形態は、各々が方法の処理を実行するように構成された、対応するコンピュータシステム、装置、および1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含む。
【0005】
一実施形態においては、データストリーム内のデータフレームの特定は、さらに、予測された位置とは異なる位置でビットパターンの第2のインスタンスを特定することに応答して、データストリーム内のデータフレームをフレーム化するための代替基準として異なる位置の第2のインスタンスを使用する第2の処理スレッドを開始することを含む。
【0006】
一実施形態においては、ビットパターンは、0x00000065である。
【0007】
一実施形態においては、ビットパターンは、第1の推定されたデータフレームのメッセージタイプを特定する。任意選択的に、第1の推定されたデータフレームのメッセージ長に対応するビットは、第1の推定されたデータフレームのメッセージタイプに対応するビットに先行する。
【0008】
一実施形態においては、データストリームに関連するビットレートは、さらに、プロセッサによって、機器の実行時間または使用率の尺度(measure)または指標(indicia)として判定される。
【0009】
一実施においては、特定されたデータフレームは、機器の実行状態情報を含む。最適には、実行状態情報は、機器の実行時間または使用率を判定するために使用される。
【0010】
一実施形態においては、特定されたデータフレームは、プロセッサが機器の動作を判定するために使用するデータまたはメタデータを含む。任意選択的に、メタデータは、機器の設定値および動作値を含む。任意選択的に、設定値と動作値との比較を使用して警告を発生させ、または、視覚的な情報を生成する。
【0011】
一実施形態においては、データおよびメタデータは、複数回の機器の実行にわたって収集および保持される。最適には、複数回の機器の実行にわたって収集されたデータとメタデータとの比較を使用して、傾向の特定、イベントの予測、警告の発生(trigger:トリガ)および/または視覚的な情報の生成(つまり、傾向の特定、イベントの予測、警告の発生、または視覚的な情報の生成、あるいはそれらの全て)を行う。
【0012】
一実施形態においては、複数回の機器の実行にわたって収集されたデータとメタデータとの比較を使用してローカルまたはリモートで機器のトラブルシューティングを行う。
【0013】
一実施形態においては、ネットワーク装置は、機器と制御装置との間のミラーリングスイッチと通信する。任意選択的に、受信したデータストリームは、機器および制御装置の少なくとも一方からミラーリングスイッチによって受信された元のデータストリームからミラーリングされる。
【0014】
一実施形態においては、ネットワーク装置は、機器と制御装置との間に位置する。任意選択的に、ネットワーク装置は、機器と制御装置との間の通信を容易にするためのプロキシサーバを備える。
【0015】
一実施形態においては、プロセッサは、さらに、機器によって使用される既知のプロトコルに基づいて検索されるビットパターンを選択するように構成される。
【0016】
1つの一般的な態様は、データストリームを解釈する方法を含む。この方法は、機器によって制御装置に送信されたデータストリームを受信するステップを含むことができる。この方法は、さらに、第1の処理スレッドを使用してデータストリーム内のデータフレームを特定するステップを含むことができる。特定するステップは、データストリーム内のビットパターンの第1のインスタンスを検索し、ビットパターンの第1のインスタンスに対して相対的な位置に基づいて、第1の推定されたデータフレームのメッセージ長に対応するビットを特定し、第1の推定されたデータフレームのメッセージ長に基づいて、データストリーム内の第2の推定されたデータフレームを特定し、ビットパターンの第2のインスタンスが、第2の推定されたデータフレーム内の予測された位置に存在するかどうかを判定し、予測された位置でビットパターンの第2のインスタンスを特定することに応答して、ビットパターンのカウント値を増加させ、カウント値の閾値に達するまで、推定されたデータフレーム内の予測された位置でビットパターンのスキャンを継続し、カウント値が閾値に達したことに応答して、第1の推定されたデータフレームおよび第2の推定されたデータフレームを実際のデータフレームとして特定する。本態様の他の実施形態は、各々が方法の処理を実行するように構成された、対応するコンピュータシステム、装置、および1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含む。
【0017】
一実施形態においては、データストリーム内のデータフレームを特定するステップは、予測された位置とは異なる位置でビットパターンの第2のインスタンスを特定することに応答して、データストリーム内のデータフレームをフレーム化するための代替基準として異なる位置の第2のインスタンスを使用する第2の処理スレッドを開始することを含むことができる。
【0018】
一実施形態においては、データストリーム内のデータフレームを特定するステップは、第3のインスタンスの予測された位置とは異なる第2の位置でビットパターンの第3のインスタンスを特定することに応答して、データストリーム内のデータフレームをフレーム化するための第2の代替基準として、第2の位置で第3のインスタンスを使用する第3の処理スレッドを開始するステップを含むことができる。
【0019】
一実施形態においては、上記方法は、処理スレッドのうちの1つによって、カウント値が閾値に達したことに応答して、他の処理スレッドを終了し、閾値に達した処理スレッドに対応するデータストリームのフレーム化仮説を選択するステップを含む。
【0020】
一実施形態においては、ビットパターンに、0x00000065を含めることができる。
【0021】
一実施形態においては、ビットパターンは、第1の推定されたデータフレームのメッセージタイプを特定する。
【0022】
一実施形態においては、第1の推定されたデータフレームのメッセージ長に対応するビットは、第1の推定されたデータフレームのメッセージタイプに対応するビットに先行する。
【0023】
一実施形態においては、方法が機器と制御装置との間に位置するネットワーク装置によって実行される。
【0024】
一実施形態においては、機器によって送信されたデータストリームを受信するステップは、プロキシサーバを用いて機器と制御装置との間の通信を代理するステップを含むことができる。
【0025】
一実施形態においては、上記方法は、特定されたデータフレームから収集された実行状態情報から、機器使用率を判定するステップを含むことができる。
【0026】
一実施形態においては、上記方法は、データストリームのビットレートに基づいて機器使用率を判定するステップを含むことができる。
【0027】
一実施形態においては、上記方法は、設定値と特定されたデータフレームからの実際の動作値とを比較するステップを含むことができる。
【0028】
一実施形態においては、上記方法は、多数回の機器の実行を通じて特定されたデータフレームから収集されたデータまたはメタデータを保持および比較するステップを含むことができる。
【0029】
一実施形態においては、上記方法は、特定されたデータフレームから収集されたデータまたはメタデータに基づいて、傾向の特定、イベントの予測、および/または、1つ以上の警告の発生(つまり、傾向の特定、イベントの予測、または1つ以上の警告の発生、あるいはそれらの全て)のうちの少なくとも1つを行うステップを含むことができる。
【0030】
一実施形態においては、上記方法は、特定されたデータフレームから収集されたデータまたはメタデータに基づいて視覚的な情報を生成するステップを含むことができる。
【0031】
一実施形態においては、上記方法は、グラフィカルユーザインタフェースを使用して特定されたデータフレームから収集されたデータまたはメタデータをインタラクティブに探索するステップを含むことができる。
【0032】
一実施形態においては、上記方法は、特定されたデータフレームから収集されたデータまたはメタデータに基づいて機器のトラブルシューティングをローカルで、またはリモートで行うステップをさらに含むことができる。
【0033】
一般的な態様の1つは、ソフトウェア命令がプロセッサによって実行されたときに、プロセッサにデータストリームを解釈させるソフトウェア命令を保持する非一時的なコンピュータ読み取り可能な媒体を含む、。ソフトウェア命令は、機器によって制御装置に送信されたデータストリームを受信するステップを含むことができる。ソフトウェア命令は、第1の処理スレッドを使用してデータストリーム内のデータフレームを特定するステップを含むことができ、特定するステップは、データストリーム内のビットパターンの第1のインスタンスを検索するステップと、ビットパターンの第1のインスタンスに対して相対的な位置に基づいて、第1の推定されたデータフレームのメッセージ長に対応するビットを特定するステップと、第1の推定されたデータフレームのメッセージ長に基づいて、データストリーム内の第2の推定されたデータフレームを特定するステップと、ビットパターンの第2のインスタンスが、第2の推定されたデータフレーム内の予測された位置に存在するかどうかを判定するステップと、予測された位置でビットパターンの第2のインスタンスを特定することに応答して、ビットパターンのカウント値を増加させ、カウント値の閾値に達するまで、推定されたデータフレーム内の予測された位置でビットパターンのスキャンを継続するステップと、カウント値が閾値に達したことに応答して、第1の推定されたデータフレームおよび第2の推定されたデータフレームを実際のデータフレームとして特定するステップとを含む。この態様の他の実施形態は、それぞれが命令を実行するように構成された、対応するコンピュータシステム、装置、および1つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含む。
【0034】
本発明の実施形態の別々の側面の文脈で説明される特徴事項は、一緒に使用されてもよく、および/または相互に置き換え可能であってもよい(つまり、一緒に使用されてもよく、または相互に置き換え可能であってもよく、あるいはそれらの両方であってもよい)。同様に、単一の実施形態の文脈で説明される特徴事項もまた、別個に提供されてもよく、または適切に任意に部分的に組み合わせて提供されてもよい。
【図面の簡単な説明】
【0035】
【
図1A】
図1Aは、1つ以上の実施形態に係る、機器監視システムを示す図である。
【
図1B】
図1Bは、1つ以上の実施形態に係る、プロキシサーバを利用した機器監視システムの実施形態を示す図である。
【
図2A】
図2Aは、1つ以上の実施形態に係る、フレーム化処理されるデータストリームのサンプル検索を示す図である。
【
図2B】
図2Bは、1つ以上の実施形態に係る、フレーム化処理されるデータストリームのサンプル検索を示す図である。
【
図2C】
図2Cは、1つ以上の実施形態に係る、フレーム化処理されるデータストリームのサンプル検索を示す図である。
【
図2D】
図2Dは、1つ以上の実施形態に係る、フレーム化処理されるデータストリームのサンプル検索を示す図である。
【
図2E】
図2Eは、1つ以上の実施形態に係る、フレーム化処理されるデータストリームのサンプル検索を示す図である。
【
図2F】
図2Fは、1つ以上の実施形態に係る、フレーム化処理されるデータストリームのサンプル検索を示す図である。
【
図3A】
図3Aは、1つ以上の実施形態に係る、データストリーム内の予測された位置で特徴的なビットパターンを見つけることに失敗したサンプル検索を示す図である。
【
図3B】
図3Bは、1つ以上の実施形態に係る、データストリーム内の予測された位置で特徴的なビットパターンを見つけることに失敗したサンプル検索を示す図である。
【
図4A】
図4Aは、1つ以上の実施形態に係る、第2のスレッドによる代替的なフレーム化仮説を使用したサンプル検索を示す図である。
【
図4B】
図4Bは、1つ以上の実施形態に係る、第2のスレッドによる代替的なフレーム化仮説を使用したサンプル検索を示す図である。
【
図5A】
図5Aは、1つ以上の実施形態に係る、データストリームをフレーム化するための例示的な処理を示す流れ図である。
【
図5B】
図5Bは、1つ以上の実施形態に係る、開始ビットパターンからフレーム化処理を継続するための例示的な処理を示す流れ図である。
【
図6】
図6は、1つ以上の実施形態に係る、フレーム化仮説を並行してテストするための例示的な処理を示す流れ図である。
【
図7】
図7は、1つ以上の実施形態に係る、演算装置を示す図である。
【発明を実施するための形態】
【0036】
添付の図面には、説明のために様々な実施形態が描かれているが、決して本願の開示内容の範囲を限定するように解釈されるべきではない。さらに、開示されている実施形態の様々な異なる特徴事項を組み合わせて、別の実施形態を構成することができるが、そのような別の実施形態も、本願の開示内容に含まれる。
【0037】
本願明細書で使用される見出しは、便宜上のものであり、必ずしも開示内容の範囲または意味に影響を与えるものではない。特定の好ましい実施形態および例を以下に開示するが、その主題の範囲は、具体的に開示された実施形態に限定されることなく、他の代替的な実施形態および/または使用例(つまり、他の代替的な実施形態または使用例、あるいはそれらの両方)、ならびにそれらの変形例および均等物を含む。したがって、開示された主題から派生する請求の範囲は、以下に説明する特定の実施形態のいずれにも限定されるものではない。例えば、本願明細書に開示される任意の方法または処理において、その方法または処理の行為または動作は、任意の適切な順序で実行されてよく、必ずしも特定の開示された順序に限定されるものではない。特定の実施形態の理解に役立つように、様々な動作を複数の個別の動作として順番に説明することがあるが、説明の順序は、これらの動作の順序が決まっていることを意味するように解釈されるべきではない。さらに、本願明細書に記載された構造、システム、および/または装置(つまり、構造、システム、または装置、あるいはそれらの全て)は、統合されたコンポーネントとして実施されてもよいし、別個のコンポーネントとして実施されてもよい。様々な実施形態を比較する目的で、これらの実施形態の特定の態様および利点を説明する。必ずしも、このような態様または利点の全てが、任意の特定の実施形態によって実現されるとは限らない。したがって、例えば、様々な実施形態は、本願明細書で教示される1つまたは複数の利点を達成または最適化する方法で実施することができ、本願明細書で教示または示唆されることがある他の態様または利点を必ずしも実現するものではない。
【0038】
[概要]
研究施設には、通常、サンプルを定量化して分析するための複数の機器が存在する。これらの機器は、自己の動作の様々な部分を測定し、そのデータを伝送し、そしてときには保存する。例えば、質量分析計は、その実行状態(準備完了、待機、実行中など)の情報を保持し、この情報を制御しているコンピュータに送信することができる。しかしながら、研究施設にある機器のメーカーが異なることもあれば、少なくとも製造時期が異なることがある。そのため、2つの機器が異なるプロトコルで通信していることがよくある。同じメーカーの2つの機器であっても、異なるプロトコルを採用していることがある。実際、同じメーカーの同じタイプの機器であっても、機器の世代が異なれば、異なるプロトコルを使用することがある。機器の寿命は長く(20年以上のものもある)、一般的な研究施設では、異なる通信プロトコルを採用した様々な年代の機器が数多く存在することがある。さらに、機器によって異なる制限があり同時に接続できる機器の数またはデータストリームの数を制限したり、新しい接続を禁止したり、および/または、新しい接続を通じて送信できるデータの量やタイプを制限したりする(つまり、同時に接続できる機器の数またはデータストリームの数を制限したり、新しい接続を禁止したり、または新しい接続を通じて送信できるデータの量やタイプを制限したり、あるいはそれらの全てをする)機器もある。
【0039】
そのため、異なるプロトコルの機器を使用してもデータを収集でき、既存の接続を使用した監視をサポートできる監視システムが求められている。本願明細書に記載された監視システムの特定の実施形態は、機器と制御を行っているコンピュータとの間の通信回線を聴受することによって、機器の動作を監視する機能を提供する。監視システムは、機器と制御を行っているコンピュータの間で伝送されるデータストリームを捕捉することができる。このデータストリームには、トータルイオンクロマトグラム(TIC:total ion chromatogram)などの送信された実験測定値またはデータ、さらにポンプ圧、ポンプ駆動状態、粗真空圧、抽出器電圧、乾燥ガス流量、ガス温度、実行状態、機器設定値、および/または機器の他の動作値/パラメータ(つまり、ポンプ圧、ポンプ駆動状態、粗真空圧、抽出器電圧、乾燥ガス流量、ガス温度、実行状態、機器設定値、または機器の他の動作値/パラメータ、あるいはそれらの全て)などのメタデータが含まれる。データストリームから取り込まれたデータおよびメタデータを収集および分析することによって、監視システムは、機器からの動作情報を確認することができる。例示的な実施形態は、制御ソフトウェアによって設定された設定値、すなわち目標値と、機器によって測定された時間的ポイント値である実際の値の両方を捕捉できる監視装置を提供する。さらに、関連する視覚的な情報を、例えば、リアルタイムで更新されるダッシュボードに表示し、オペレータが監視して、設定値からの温度偏差などの異常状態を検出することもできる。別の実施形態においては、本教示内容に従って構成されたシステムは、両方の信号を自律的に監視し、異常な状態があればオペレータに対して警告を発することができる。
【0040】
様々な測定値および/またはパラメータ(つまり、様々な測定値またはパラメータあるいはそれらの両方)などの監視されたデータまたはメタデータを、経時的に、および/または、複数回の機器の実行を通じて(つまり、経時的に、または、複数回の機器の実行を通じて、あるいはそれらの両方により)捕捉、抽出、保存および分析してもよい。例えば、液体クロマトグラフィー(LC:liquid chromatography)カラムに関連するポンプ圧の値を捕捉、抽出、保存し、複数回の機器の実行にわたって比較することができる。この比較を用いて、例えば、ある実行の動作状態が以前の実行状態から大幅に逸脱している場合に警告を発することができる。さらに、同様の分析により、傾向を把握したり、および/または、将来の事象を予測したりする(つまり、傾向を把握したり、または将来の事象を予測したりする、あるいはそれらの両方をする)ことができる。より正確には、様々な統計的手法(そのうちの幾つかは機械学習と呼ばれることがある)は、システムの過去の挙動および/または類似するシステムの過去の挙動に基づく(つまり、システムの過去の挙動、または類似するシステムの過去の挙動、あるいはそれらの両方に基づく)モデルを通じて、システムの将来の挙動を外挿して推定することができる。例えば、カラム圧の傾向から、カラムの経年劣化やカラム交換の必要性を判断することができる。さらに、監視装置によって捕捉され、経時的に保存される測定値またはパラメータを、例えば、受動的なビデオダッシュボードに表示してもよく、グラフィカルユーザインタフェースを介してインタラクティブに探索してもよい。このようなインタラクティブな探索により、例えば、ローカルの機器またはリモートの機器のトラブルシューティングを容易に行うことができる。例えば、過去1週間以内に機器が正常に動作しなくなったという顧客からの報告があった場合、サポート担当者は、保存されている機器の様々な測定値および/またはパラメータ(つまり、様々な測定値または様々なパラメータあるいはそれらの両方)の履歴を目視でチェックし、内部電源電圧の著しい低下など予期せぬ逸脱がないかを確認し、不具合が発生した時点を特定することができる。さらに、不具合が発生した前後の各種測定値および/またはパラメータ(つまり、各種測定値または各種パラメータあるいはそれらの両方)の履歴を目視で確認することで、不具合の原因や交換すべき関連部品などを経験豊富なサポート担当者が特定することができる。
【0041】
監視されたデータから重要な情報を複数の方法で推測または導出することができる。例えば、機器の使用率、またはアクティブな測定を行うのに費やされた相対的な時間の量は、少なくとも2つの方法で推定することができ、それぞれの方法は、監視装置によって捕捉された複数の異なるデータに基づいている。また、例えば、監視システムは、機器が実行中または動作状態にある時間量を評価するによって、この評価を機器の使用率または機器の処理能力がどのくらい使用されているかを示す尺度とすることができる。さらに、収集したデータに対して警告を発したり、視覚的な情報を生成したりするようにシステムを構成することもできる。例えば、設定値と動作値との比較を使用して警告を発したり、比較した値の視覚的な情報を生成したりすることができる。
【0042】
様々な実施形態においては、データストリームが認識できない形式であっても、または暗号化された形式で送信されても、捕捉されたデータを依然として利用することができる。例えば、機器の使用率を捕捉したデータのビットレートから推測したり、捕捉したデータのビットレートに関連付けたりすることができる。さらに、本願明細書に記載されたアルゴリズムと組み合わせて、繰り返し発生するフィンガープリントの検索を構成することで、本来は認識されないか暗号化されたデータストリームにおけるメッセージ境界、メッセージタイプ、および/またはパラメータ値(つまり、メッセージ境界、メッセージタイプ、またはパラメータ値、あるいはそれらの全て)を特定することができる。
【0043】
[機器監視システム]
図1Aは、1つ以上の実施形態に係る、機器監視システム100を示す図である。図示するように、機器105と制御装置110は、ネットワーク115を介して接続されている。ネットワーク115は、機器105と制御装置110とを接続するミラーリング装置120を含む。ミラーリング装置120は、機器105と制御装置110とを通信可能に接続することができる。実施形態によっては、ミラーリング装置120は、このミラーリング装置120によって受信されたデータストリーム(プロトコル130を用いた、機器および制御装置からのデータストリーム/機器および制御装置へのデータストリーム)をコピーし、コピーされたデータを解釈装置(interpreting device)135に送信するストリームコピア(stream copier)125を含む。解釈装置135およびストリームパーサ(stream parser)140は、次に、コピーされたデータストリームを解析してデータフレームにして、1つまたは複数の加入者装置145A~145C(145と総称する)に送信することができる。実施形態によっては、データフレームは、機器に関するデータまたはメタデータを含む。
【0044】
機器監視システム100は、上述したコンポーネントのうちの1つ以上を含むことができる。例えば、一実施形態では、ミラーリング装置120と解釈装置135しか含まないこともあるが、他の実施形態では、追加のコンポーネントを含むことができる。さらに、複数のコンポーネントのうちの幾つかを単一の装置内に組み込んでもよい。例えば、ミラーリング装置120と解釈装置135がストリームコピア125とストリームパーサ140を含む単一の装置であってもよい。
【0045】
このような機器105としては、液体クロマトグラフ、ガスクロマトグラフ、液体クロマトグラフ質量分析計、ガスクロマトグラフ質量分析計、誘導結合プラズマ質量分析計、原子吸光分析計、マイクロ波プラズマ原子発光分光分析装置、誘導結合プラズマ発光分光分析装置、ラマン分光計、細胞分析プレート式測定システム、フローサイトメーター、リアルタイム細胞分析装置などを挙げることができる。制御装置110としては、パーソナルコンピュータ、タブレット、スマートフォン、サーバ、ラップトップ、モバイル機器、他のタイプの演算装置などを挙げることができる。通常の場合は、機器監視システム100は、研究施設の一部である。
【0046】
ネットワーク115としては、アドホックネットワーク、ピアツーピア通信リンク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、公衆ネットワーク(例えばインターネット)、プライベートネットワーク(例えばローカルエリアネットワーク(LAN))、またはインターネットなどの広域ネットワーク(WAN)、有線ネットワーク(例えばイーサネットネットワーク)、無線ネットワーク(例えば、802.11ネットワーク、Wi-Fiネットワーク、無線LAN(WLAN)、無線WAN(WAN)など)、携帯電話ネットワーク(例えば、Long Term Evolution(LTE)ネットワーク)、大都市圏ネットワーク(MAN)、インターネットの一部、公衆交換電話網(PSTN:Public Switched Telephone Network)の一部、ルータ、ハブ、スイッチ、サーバコンピュータ、他のタイプのコンピュータネットワーク、のうちの1つ、および/または、これらを組み合わせたもの(つまり、アドホックネットワーク、ピアツーピア通信リンク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、公衆ネットワーク(例えばインターネット)、プライベートネットワーク(例えばローカルエリアネットワーク(LAN))、インターネットなどの広域ネットワーク(WAN)、有線ネットワーク(例えばイーサネットネットワーク)、無線ネットワーク(例えば、802.11ネットワーク、Wi-Fiネットワーク、無線LAN(WLAN)、無線WAN(WAN)など)、携帯電話ネットワーク(例えば、Long Term Evolution(LTE)ネットワーク)、大都市圏ネットワーク(MAN)、インターネットの一部、公衆交換電話網(PSTN:Public Switched Telephone Network)の一部、ルータ、ハブ、スイッチ、サーバコンピュータ、他のタイプのコンピュータネットワーク、のうちの1つ、または、これらを組み合わせたもの、あるいはそれらの全てのもの)を挙げることができる。一実施形態においては、機器105および制御装置110はローカルエリアネットワーク(LAN)内に配置され、解釈装置135および/または加入者装置145A~145C(つまり、解釈装置135、または加入者装置145A~145C、あるいはそれらの全て)は、LAN内にあるか、または、広域ネットワーク(WAN)を介してLANに接続されている。
【0047】
ミラーリング装置120は、機器105を制御装置110と通信可能に接続するためのスイッチ、パーソナルコンピュータ、ゲートウェイ、ルータ、または他のネットワーク装置とすることができる。一実施形態においては、機器と制御装置との間の接続は、イーサネットケーブル、光ケーブルなどの物理的な回線を介して行われる。例えば、ミラーリング装置120は、機器および制御装置からのネットワークケーブルを受け入れるための物理ポートを有するネットワークスイッチとすることができる。一実施形態においては、接続は、Wi-Fi、Bluetooth(登録商標)、Z-wave、Zigbee(登録商標)などを通じた無線である。実施形態によっては、ストリームコピア125は、パケットをミラーリングするためのミラーリング装置120の回路および/またはソフトウェア(つまり、回路またはソフトウェアあるいはそれらの両方)で構成される。データパケット(例えば、IPデータグラム)からなるデータストリーム127を受信した後、ストリームコピア125は、データストリームをコピーまたはミラーリングし、データストリームのコピー132を解釈装置135に送信することができる。一方、元のデータストリームは元の宛先に送信される。このミラーリング機能は、機器や制御装置に対してトランスペアレントにすることが可能である。つまり、パケットのミラーリングは、機器と制御装置の間の通信に影響を与えず、これらの装置はミラーリングが行われていることを把握できないままでいることがある。
【0048】
解釈装置135は、デスクトップ、サーバなどの演算装置であってもよく、研究施設内または別の場所に配置されてもよい。解釈装置135は、データストリームのコピー132を構文解析して複数の個々のフレームにするためのストリームパーサ140を含む。一般的には、インターネットプロトコル(IP:internet protocol)は、プロトコル130などの多くのアプリケーションレベルのプロトコルのビルディングブロックとして使用される。カプセル化を使用して、プロトコル130のデータは、適切なヘッダを追加することで、IPなどの下位プロトコルに変換される。IPパケットは、ヘッダ部とデータ部とを含む。簡略化のために、IPパケットのデータ部がプロトコル130のデータを伝送するものとして説明する。しかしながら、実際には、1つ以上の介在するプロトコル(例えば、伝送制御プロトコル(TCP:transmission control protocol))が、プロトコル130のデータをさらにカプセル化する場合がある。
【0049】
データストリームのコピー132は、解釈装置135によって受信されたとき、必ずしも理解可能な状態であるとは限らない。IPパケットは、例えば、パケットが失われたり、損傷したりした結果、繰り返されたり、順序が狂ったりすることがある。したがって、解釈装置が受信したデータストリームのコピーには、順番がずれているセグメント、欠落しているセグメント、損傷しているセグメント、および/または繰り返されているセグメント(つまり、順番がずれているセグメント、欠落しているセグメント、損傷しているセグメント、または繰り返されているセグメント、あるいはそれらの全て)が存在する可能性がある。そのため、IPパケットを用いて伝送されるプロトコル130のデータを特定することが困難な場合があり、単にデータストリームからデータIPパケットを順番に読み取るだけでは、メッセージの文字化けの原因となる。さらに、データストリームのコピーを確認しても、プロトコルデータをどのようにフレーム化すべきかは、簡単には分からない。
【0050】
ストリームパーサ140は、確立された方法を使用して、コピーされたデータストリームのIPパケットを順序付けられたストリームに再構成することができる。しかしながら、それでもストリームが依然として不完全なことがあり、すなわち、ストリーム内の個々のデータフレームを特定するために必要な最初の部分が欠けている可能性がある。ストリームパーサ140は、
図2~
図5に記載されたアルゴリズムの実施形態を使用して、コピーされた不完全なデータストリーム内のプロトコル130の個々のデータフレームを特定することができる。データストリーム内の特徴的なビットパターンを検索することで、ストリームパーサは、プロトコル130のデータフレームの境界となりそうなところを特定することができる。その後、ストリームパーサ140は、特徴的なビットパターンの追加のインスタンスが予測された位置で見つかるかどうかを判定することによって、推定された境界が正しいことを検証することができる。追加のインスタンスが見つかると、ストリームパーサ140は、推定された境界が正しいと仮定し、それに応じてコピーされたデータストリームを構文解析してプロトコル130の複数の個々のデータフレームにすることができる。
【0051】
上述したように、解釈装置135は、データフレームを加入者装置に送信することができる。次に、加入者装置145は、フレームパーサ150A~150C(150と総称する)を利用してデータフレームからセマンティックな意味、すなわち関心のある特定の値を抽出してもよい。フレームパーサ150は、機器によって使用される特定のプロトコルに基づき、データがデータフレーム内でどのように構成されるかを記述するロジックを含むことができる。例えば、フレームパーサ150は、データフレーム内のどのビットが機器のどの動作データを含むかを特定することができる。実施形態によっては、フレームパーサ150は、幾つかのプロトコルに対するロジックを含むことができ、フレームパーサ150が様々な研究施設の機器から使用可能なデータを得られるようにする。
【0052】
加入者装置145A~145Cは、機器105から情報を収集するクライアント装置を含むことができる。このような装置は、モバイル機器、デスクトップ、サーバなどであり、研究施設内に設置されていてもよく、別の場所に設置されていてもよい。加入者装置は、様々な理由でデータを利用することがある。例えば、加入者装置は、データフレームを分析して、使用率や稼働時間の尺度や指標など、機器105の動作データを特定することができる。そして、これらの動作データは、リソース配分アプリケーションによって、機器の使用計画やスケジュールを設定するために使用される。別の例では、加入者装置は、装置の電力消費および関連する環境電力使用(例えば、冷却、照明、換気システムなど)を節約するために、動作データを使用して使用パターンを識別し、機器の低電力時間(例えば、機器の電源オフにするか、機器をスリープモードにするか)のスケジュールを設定することができる。
【0053】
場合によっては、実行状態(例えば、準備完了、待機、実行中など)情報を、機器監視システム100によって収集することができる。そして、使用率またはそれぞれの実行状態での時間の割合を判定することができる。機器によって測定された各イオンのスペクトルを合計したトータルイオンクロマトグラム(TIC:Total Ion Chromatogram)やチャンバー電流(Chamber Current)(多くの機器パラメータの1つであり、この機器パラメータは、設定され、設定値からのずれを特定するために監視される)など、他のデータを収集または判定することもできる。
【0054】
図1Bは、プロキシサーバ152を利用する機器監視システム100の実施形態を示す図である。
図1Bは
図1Aと同様であるが、解釈装置135が機器105から制御装置110への通信路に直接入っている点で大きく異なる。したがって、解釈装置135は、プロキシサーバ152を利用して、機器と制御装置との間でやりとりされるパケットを直接受信できるため、ミラーリング装置は不要である。
【0055】
図示するように、機器105と制御装置110はネットワーク115を介して接続されている。ネットワーク115は、機器105と制御装置110とを接続する解釈装置135を含む。例えば、解釈装置135には、機器および制御装置に接続するためのイーサネットポートなどの他の通信ポートを組み込んでもよい。解釈装置135は、機器105と制御装置110とを通信可能に接続することができる。実施形態によっては、解釈装置135は、機器からパケットを受信して制御装置に送信し、または制御装置からパケットを受信して機器に送信するプロキシサーバ152を含む。
【0056】
実施の形態によっては、プロキシサーバ152は、サーバアプリケーション、回路または装置であり、サーバなどの演算装置(例えば、制御装置110)からのリソースまたは命令を要求するクライアントからのリクエストに対する中継器として機能し、サーバなどの演算装置は、このようなリソースまたは命令を提供する。プロキシサーバは、サービスを要求する際にクライアントの代わりに動作することができる。クライアントは、ファイルやウェブページなどの要求されたリソースを処理できるサーバに直接接続する代わりに、プロキシサーバにリクエストを渡し、プロキシサーバはリクエストを評価し、必要なネットワーク処理を実行する。プロキシサーバを使用することで、リクエストの演算を簡素化したり、制御したり、負荷分散、プライバシー、セキュリティなどの付加的な利点を提供することができる。
【0057】
プロキシサーバ152は、機器105と制御装置110とのとの間の接続を媒介するので、最初の部分を含むデータストリーム全体が確実にコピーされ、
図2~
図5により説明したアルゴリズムが必要ではなくなる。しかしながら、データストリーム127のスループットを優先する選択がなされた場合、高負荷の期間中、プロキシサーバはデータストリームのコピー132の一部を廃棄することを選択できる。そのような場合、ストリームパーサ140は、
図2~
図5によって説明されたアルゴリズムを使用して、プロトコル130のデータフレームを特定することができる。解釈装置135は、データストリームを構文解析して複数の個々のフレームにするためのストリームパーサ140を含むことができる。ストリームパーサ140は、
図1Aで説明したものと同様に機能することができる。ストリームパーサ140は、
図2~
図5に記載されたアルゴリズムの実施形態を使用して、コピーされたデータストリーム内のプロトコル130の個々のデータフレームを特定することができる。データストリームの特徴的なビットパターンを検索することで、ストリームパーサは、プロトコル130のデータフレームの境界となりそうな部分を特定することができる。次に、ストリームパーサ140は、特徴的なビットパターンの追加のインスタンスが予想された位置に見つかるかどうかを判定することによって、推定された境界が正しいことを検証することができる。追加のインスタンスが見つかると、ストリームパーサ140は、推定された境界が正しいと仮定し、それに応じてコピーされたデータストリームを構文解析してプロトコル130の複数の個々のデータフレームにすることができる。ストリームパーサ140は、データフレームを加入者装置145A~145Bに送信することができる。
【0058】
加入者装置145A~145Cは、機器105から情報を収集するクライアント装置を含むことができる。このような装置は、モバイル機器、デスクトップ、サーバなどであり、研究施設内に設置されていてもよく、別の場所に設置されていてもよい。加入者装置は、様々な理由でデータを利用することができる。例えば、加入者装置は、データフレームを解析して、使用率や実行時間など、機器105のデータまたはメタデータ(例えば、動作データ)を特定してもよい。そして、これらの動作データは、リソース配分アプリケーションによって、機器の使用計画やスケジュールを設定するために使用される。別の例では、加入者装置は、装置の電力消費および関連する環境電力使用(例えば、冷却、照明、換気システムなど)を節約するために、動作データを使用して使用パターンを識別し、装置の低電力時間(例えば、装置の電源をオフにするか装置をスリープモードにするか)のスケジュールを設定することができる。
【0059】
[他の実施形態]
上記では、機器監視システム100が特定のコンポーネントを有するものとして説明したが、これらのコンポーネントは、様々な実施形態において組み合わせたり、別個に設けたりすることができる。例えば、フレームパーサ150を解釈装置135に組み込んで、特定されたフレーム内のデータが解釈装置によって復号または分析されるようにしてもよい。そして、解釈装置135は、データからレポートを生成し、そのレポートを加入者装置に送信してもよい。別の例では、ストリームパーサ140の機能をプロキシサーバ152と組み合わせてもよいし、ミラーリング装置120を解釈装置135と組み合わせてもよい。
【0060】
他の実施形態においては、コンポーネントは、複数の物理的な装置に分離することができる。例えば、プロキシサーバ152は、解釈装置135とは別個の装置であってもよい。別の例では、フレームパーサ150も加入者装置145とは別個の装置であってもよい。機器監視システム100の複数のコンポーネントをどのように物理的に別個の電子機器、または物理的に結合された電子機器に実装するかについては、様々な変形が可能である。
【0061】
[フレーム化処理]
図2A~
図2Fは、特定の実施形態に係る、フレーム化処理されるデータストリーム205のサンプル検索を示す図である。説明の目的で、例示的なアプリケーション層プロトコルに対応する例示的なフレームフォーマットを図示する。このフレームフォーマットは、特定の組の、特定のシーケンスのフィールドを有する。また、フレーム化処理は、他のフレーム形式を使用するプロトコルとも互換性を有していてもよい。例えば、他のプロトコルでは、追加のフィールドおよび/または複数の異なるシーケンスのフィールド(つまり、追加のフィールドまたは複数の異なるシーケンスのフィールドあるいはそれらの両方)を有することがある。さらに、データストリーム205は、1つまたは複数の追加のカプセル化プロトコルを介して送信されてもよい。例えば、TCP/IPプロトコルを用いて伝送されるアプリケーションレベルのプロトコルに対して、フレーム化処理を実行することができる。フレーム化処理は、
図1A~1Bに示すような機器監視システムの実施形態によって実行することができる。
【0062】
以下の例では、フレームを「バイト」で説明することがあるが、任意のビット数を使用することができ、必ずしも8ビットのバイトに限定されるものではない。例えば、特徴的なビットパターンは、8ビット未満、または8で割り切れない数(例えば、4,5,6、7、12、15、23ビットなど)にすることができる。さらに、データストリーム205が連続したストリームとして示されているが、インターネット/トランスポートレベル(例えば、TCP/IP)では、追加のヘッダまたはカプセル化が使用されている場合がある。例えば、データストリーム205は、複数のIPフレームのデータ部を介して伝送されてもよい。しかしながら、
図2A~
図2Fでは、簡略化のため、ネットワークスタックの下位層(例えば、リンク層、インターネット層、トランスポート層など)に用いられるカプセル化は省略している。
【0063】
図2Aから開始すると、特定のフレームを特定することができる特徴的なビットパターンを求めて機器監視システム100によってデータストリーム205が検索されている。例えば、特徴的なビットパターンは、フレームのヘッダ部で定義される特定のメッセージタイプを示すビットパターンに対応することがある。場合によっては、特徴的なビットパターンは、ヘッダ内の別のフィールドに対応するか、またはフレームのデータ部分に存在することさえもある。実施形態によっては、特徴的なビットパターンは、2~4バイトのサイズである。より大きいビットパターンまたはより小さいビットパターンを使用することも可能である。
図2Bでは、特徴的なビットパターンに一致するビットパターン210が見つけられる。
【0064】
図2Cにおいて、メッセージ長215フィールドに対応するビットの位置は、ビットパターン210に対応するその位置に基づいて判定される。また、推定されたヘッダ216は、ビットパターン210に基づいて特定することができる。この例の場合では、メッセージ長215はビットパターン210の直前に示されており、ヘッダはメッセージ長215フィールドとビットパターン210フィールドを含む。しかしながら、ヘッダには、プロトコルに応じて、他の情報を含む追加のフィールドが含まれることがある。また、メッセージ長215の位置は、使用される特定のプロトコルに基づいて、ヘッダに対して相対的な位置が異なる場合がある。例えば、メッセージ長215は、ビットパターン210に後続し、および/または、ビットパターン210に直接隣接していない(つまり、ビットパターン210に後続し、またはビットパターン210に直接隣接していない、あるいはそれらの両方の)場合がある。プロトコルが分かっている限り、ビットパターン210に対するメッセージ長215の位置を判定することができる。
【0065】
メッセージ長215のフィールドのビットを読み取ることで、機器監視システム100は、推定されたフレームの推定メッセージ長を判定することができる。その後、フレームのデータ部分の終端を判定することができる。例えば、推定ヘッダ216の終端にメッセージ長215を加えることで、データ部分217の終端を指し示すことができる。一般的には、ほとんどのプロトコルでは、メッセージ長215の終端は、フレームの終端に相当する。しかしながら、プロトコルが分かっていれば、データ部分に対する相対的な位置関係から、フレームの終端を見つけることができる。例えば、特定のプロトコルのフレームのデータ部分の後にXバイトが見つかった場合には、データ部分217の最後にXバイトを追加することで、フレームの終端を見つけることができる。
【0066】
図2Dにおいて、メッセージ長215は、フレームのデータ部分が終了する場所を判定するために使用される。この例の場合には、データ部分はビットパターン210の後に始まり、ビットパターン210の終端にメッセージ長を追加することによって、データ部分の終端を見つけることができる。例えば、メッセージ長が10バイトで、ビットパターン210がバイト番号30で終了すると仮定すると、メッセージ220の終端は、バイト番号40(30+10)である。しかしながら、他の場合では、データ部分は、使用される特定のプロトコルに基づき、ビットパターン210の後の幾つかのオフセットしたバイト数であってもよい。プロトコルが既知である限り、ビットパターン210に対するデータ部分の既知の開始位置に基づいて、データ部分の終端を判定することができる。
【0067】
第1のフレームのヘッダ部分とデータ部分が特定されれば、推定された第1のフレーム225の境界が判明することになる。第1のフレームの位置に基づいて予想された位置にあるフレームを追加で見つけて追加的な検証が行われるまでは、推定されたフレームとする。検索されるビットパターンは特徴的であるが、フレームヘッダの特定の位置で必ずしも一意的に見つかるとは限らない。例えば、ビットパターンは、より大きなメッセージの一部として、フレームのデータ部分に存在することもある。
【0068】
図2Eにおいて、ビットパターン230の次のインスタンスがデータストリームに現れると予想された位置に基づいて、オフセットが計算される。例えば、プロトコルがフレームの先頭にビットパターンを有する場合、推定された先頭の直後にビットパターン230が現れるはずなので、オフセットは0となるべきである。ビットパターン230を含むフィールド(例えば、メッセージタイプのフィールド)の前に追加のフィールドがプロトコルヘッダに含まれている場合、オフセットはビットパターン230を含むフィールドの前のバイト数に等しい正の数となる。推定された第1のフレームの終端にオフセットを加えることで、次の推定されたビットパターン227の位置に到達するはずである。そして、機器監視システム100は、ビットパターン230が実際に推定された位置に存在するかどうかを確認することができる。
【0069】
図2Fでは、ビットパターン230が特徴的なビットパターンと一致し、機器監視システム100が第2のフレーム245の境界を仮定するようになる。例えば、推定された第2のヘッダ237の境界として、上述したように、ビットパターン230に対するその相対的な位置を計算することができる。また、第2のフレームのメッセージ長235のフィールドは、ビットパターン230に対して相対的な位置に基づいて特定することもできる。そして、メッセージ240の境界は、上述したように、メッセージ長235とビットパターン230に対する相対的な位置に基づいて判定することができる。その後、上述したような処理を繰り返して、オフセットを計算し、次のビットパターン250の予想された位置247を調べることによって、次のビットパターン250を見つけることができる。
【0070】
上述した場合は、仮想的なプロトコルで使用される特定のレイアウトを想定したものである。上記の処理を様々なプロトコルで動作するように変更できることが明らかである。大抵のプロトコルは、固定部分(例えば、ヘッダー)と可変部分(例えば、メッセージ)を有する。ヘッダは固定されているので、ヘッダの既知のフィールドが見つかれば、その既知のフィールドに対する相対的な位置に基づいてヘッダの境界を計算することができる。また、ヘッダには可変部分の長さを含めるとよい。可変部分の開始位置(通常、ヘッダの後に存在する)に可変長を加えることで、フレーム全体の境界を判定することができる。したがって、プロトコルが既知であり、既知のフィールドが見つかりさえすれば、フレームの境界を特定することができる。
【0071】
図3A~3Bは、特定の実施形態に係る、データストリーム305内の予想された位置で特徴的なビットパターンを見つけることに失敗したサンプル検索を示す。
図3Aは、
図2Eと同様の場合を示し、推定された第Nのフレーム325を特定済であり、機器監視システム100は、ビットパターン330の次のインスタンスが予想された位置327にあるかどうかをチェックしている。
図3Bは、ビットパターン330が予想された位置327で見つからなかったことを示している。これは、将来のデータフレームが識別可能なビットパターンを含むかもしれないが、全てのデータフレームが識別可能なビットパターンを含むとは限らないので、予想されることかもしれない。このため、スレッドは通常の処理を続け、N+1番目のデータフレームをフレーム化し、N+2番目の位置で予測されるビットパターンを検索する。
【0072】
一実施形態においては、マスタースレッドは、所定の位置でビットパターン310を見つける。その後、機器監視システム100は、
図2A~3Bに記載されたアルゴリズムに従ったフレーム化スレッドを作成することができるが、フレーム化スレッドの他の実施形態では、アルゴリズムの一部のみを実行することができる。フレーム化スレッドは、ビットパターン310の位置に基づいて第1のフレーム化仮説を用いてデータストリーム305の検索を続け、第1のフレーム化仮説によって予測された次の予想位置で特徴的なビットパターンを見つけることができるかどうかをチェックする。マスタースレッドは、第1のフレーム化仮説に基づいてビットパターンを求めてデータストリームを検索し続ける。マスタースレッドが、第1のスレッドの予想された位置327とは異なる所与の位置で第2のビットパターン332を見つけた場合に、マスタースレッドは、
図4A~4Bに示すように、第1のフレーム化スレッドに対する代替的なフレーム化の位置決定、即ち、代替的なフレーム化仮説を使用してデータストリーム305を探索し始める第2のフレーム化スレッドを開始する。
【0073】
代替的なフレーム化仮説を用いてデータストリーム305を検索することによって、第2のフレーム化スレッドは、データストリームのフレーム化が行われる別の可能な方法をテストする。その後、第1のフレーム化スレッドと第2のフレーム化スレッドは、これらのスレッドのうちの1つが特定の閾値を超える数の特徴的なビットパターンを予想された位置で見つけるまで検索を続けることができる。フレーム化スレッドが閾値に達していれば、データストリーム305内のフレームの境界を正しく見つけたと推定できる。
【0074】
図4A~
図4Bは、特定の実施形態に係る、第2のフレーム化スレッドによる代替的なフレーム化を使用したサンプル検索を示している。
図4Aは、ビットパターン332の位置を使用して、他のビットパターンの予想された位置を判定するために、データストリーム305の第2のフレーム化仮説をテストする第2のスレッドを示している。上述したように、プロトコルが既知であれば、機器監視システム100は、ビットパターン332に対して相対的な位置に基づいて、フレームのヘッダ部分とメッセージ部分とを特定することができる。
【0075】
図4Bは、ビットパターン332に対して相対的な位置に基づいてメッセージ長335フィールドを特定する第2のスレッドを示している。そして、メッセージ長335は、フレームのメッセージ340の部分を特定するために使用することができる。フレームのヘッダ部分とメッセージ部分が判明したことで、推定された第1のフレーム345の境界が判明する。データストリーム305がどのようにフレーム化されるかに関するこのフレーム化仮説は、次に、特徴的なビットパターンを裏づけるインスタンスを検索することでテストされる。第1のスレッドと第2のスレッドで異なるフレーム化仮説をテストすることにより、機器監視システム100は、正しいフレーム化境界を見つけることができる確率を高める。追加のスレッドを生成して、見つかったあらゆる予想しなかったビットパターンに対する追加のフレーム化仮説をテストすることができる。
【0076】
その後、第2のフレーム化スレッドは、推定された第1のフレーム345の境界に基づいて、代替的なフレーム化境界を使用してデータストリーム305の検索を続けることができる。例えば、
図2E~2Fで説明したものと同様の処理において、第2のスレッドは、第1のフレーム345の終端となる境界からのオフセットに基づいて、予想された位置で後続するビットパターンを検索することができる。実施形態によっては、第2のスレッドは、ビットパターンのインスタンスを求めて、データストリーム305を前方だけでなく後方にも検索する。
【0077】
図5Aは、特定の実施形態に係る、データストリームをフレーム化するための例示的な処理500を示す流れ図である。この処理は、機器監視システム100またはそのコンポーネントの1つ、例えばミラーリング装置120または解釈装置135によって実行することができる。機器監視システム100は、ハードウェア(例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(例えば、ハードウェアのシミュレーションを行うためにプロセッサ上で実行される命令)、ファームウェア、またはこれらの組み合わせを含む処理ロジックを含むことができる。一実施形態においては、処理500は、1つまたは複数のフレーム化スレッドを作成するマスタースレッドによって実行される。しかしながら、他の実施形態においては、単一のスレッドを利用してもよく、または指定されたマスタースレッドを有することなく複数のスレッドを使用してもよい。
【0078】
ブロック505において、機器監視システム100は、機器と制御装置との間で送信されるデータストリームのコピーを受信する。機器および制御装置は、製品および/または物質(つまり、製品または物質あるいはそれらの両方)をテストするための研究施設などの施設に存在することがある。データストリームは、ミラーリング装置によって傍受されてもよいし、機器監視システムのプロキシサーバ152によって受信されてもよい。
【0079】
ブロック510において、機器監視システム100は、
図2Aで説明したような特徴的なビットパターンのインスタンスを検索し、特定する。データストリームの中で、特徴的なビットパターンは予想された位置では頻繁に現れるが、他の位置で現れることは比較的少ないため、優先的に、特徴的なビットパターンが検索対象として選択される。例えば、特徴的なビットパターンは、メッセージヘッダに現れる特定のメッセージタイプ番号で、機器から通常送信されるが、メッセージの本体に現れる可能性は比較的低い。このようにすることで、データストリーム内で見つけることができる十分な数のサンプルがあるため、大量の誤開始が発生することなしに、フレーム化仮説を比較的早く検証することができる。
【0080】
実施形態によっては、機器監視システム100は、プロトコルおよび対応する特徴的なビットパターンのテーブルなどのデータ構造を含む。データストリーム内で見つけられるプロトコルに応じて、テーブルから適切な特徴的なビットパターンが選択される。実施形態によっては、特徴的なビットパターンの特定は、様々なプロトコルの捕捉物を分析し、フレーム内の設定された位置で、適切な周波数で現れるビットパターンを特定することによって行われてもよい。
【0081】
ブロック515において、機器監視システム100は、1つまたは複数のビットパターンが予想しなかった位置で見つかったかどうかを判定する。もし、「はい」であれば、処理500はブロック520を続いて行う。もし、「いいえ」であれば、処理500はブロック525を続いて行う。予想しない位置でビットパターンが見つからない場合には、マスタースレッドは追加のスレッドを作成せず、代わりにデータストリームのフレーム化スレッドとして動作することができる。例えば、マスタースレッドは、
図5Bで説明したフレーム化スレッド処理550の1つ以上のステップを実行してもよい。
【0082】
ブロック520において、ビットパターンが予想しなかった位置で見つかった場合には、機器監視システム100は、任意選択的に、代替的なフレーム化仮説を用いた新しいスレッドを作成する。例えば、マスタースレッドは、1つ以上のフレーム化の仮説をテストするために、1つ以上のフレーム化スレッドを作成することができる。
図3A~3Bおよび
図4A~4Cは、新しいスレッドを作成する場合の一例を示している。新しいスレッドを作成することで、複数の異なるフレーム化の仮説を並行してテストすることができ、フレーム化仮説をテストする処理500を高速化することができる。状況によっては、複数のビットパターンが予想しなかった位置で見つかることがあり、予想しなかった位置で見つかったビットパターンのインスタンスごとに新しいスレッドが作成される。しかしながら、新しいスレッドの作成は必須ではない。例えば、1本のスレッドで複数の異なるフレーム仮説を連続的にテストすることができる。
【0083】
ブロック525において、機器監視システム100は、残りのデータストリームのフレーム化を進める。一実施形態においては、フレーム化は、
図2A~2Fで説明したような手順で行われ、ビットパターンの第1のインスタンスは、第1のフレームおよび次の後続するフレームの境界を見つけるために使用される。
【0084】
ブロック530において、機器監視システム100は、ビットパターンの追加のインスタンスを検索するためにブロック520に戻って処理を行うことができる。そうでない場合、データストリーム全体が処理された場合には、処理500を終了させることができる。
【0085】
図5Bは、開始ビットパターンからフレーム化処理を継続するための処理550の例を示す流れ図である。実施形態によっては、特にブロック520において、
図5Aで説明したマスタースレッドによって作成された(機器監視システム100上で動作する)1つ以上のフレーム化スレッドによって処理550を実行して様々なフレーム化仮説をテストする。この処理は、機器監視システム100またはそのコンポーネントの1つ、例えばミラーリング装置120または解釈装置135によって実行することができる。機器監視システム100は、ハードウェア(例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(例えば、ハードウェアのシミュレーションを行うためにプロセッサ上で実行される命令)、ファームウェア、またはそれらの組み合わせを含む処理ロジックを含むことができる。説明を容易にするために、以下では、処理550がフレーム化スレッドによって実行されているものとする。フレーム化スレッドは、機器監視システム100またはそのコンポーネント上で実行することができる。しかしながら、処理550は、フレーム化スレッドのみによって実行されることに限定されない。例えば、マスタースレッドは、各ステップのうちの一部または全部を実行することができる。
【0086】
ブロック555において、フレーム化スレッドは、データストリームのコピーを受信する。一実施形態においては、データストリームは、
図5Aのブロック520で説明したように、予想しなかった位置で見つかったビットパターンのインスタンスから始まる部分的なコピーである。コピーの受信は、データストリームの完全なコピーを受信すること、または、別個のコピーではなく、マスタースレッドが処理中のデータストリームと同じコピーを参照するポインタを受信することを含む場合がある。
【0087】
ブロック560において、フレーム化スレッドは、ビットパターンのインスタンスまたは最後に特定されたフレームの境界に対して相対的な位置に基づいて、メッセージ長フィールドに対応するビットを特定する。
図2Bは、1つの例示的な場合を説明する。特徴的なビットパターンは、メッセージ内のデータのタイプを示すフィールドを含んでいてもよい。例えば、ビットパターンを0x00000065とすることができ、これは1つのプロトコルにおいて、データフレームが機器によって測定されたスペクトルをカプセル化することを示す。場合によっては、特徴的なビットパターンが偶然に現れるインスタンスが存在し、このような特徴的なビットパターンは、例えば、ヘッダの部分ではなくメッセージに含まれていることがある。しかしながら、機器監視システム100は、正しいフレーム化仮説が見つかるまで、複数のフレーム化仮説を試すことができる。後続する特徴的なビットパターンが予想された位置で最も頻繁に現れることによって、フレーム化仮説が正しいことが示される。そして、誤ったフレーム化仮説を排除し、正しいフレーム化仮説を採用することができる。
【0088】
ブロック565において、フレーム化スレッドは、メッセージ長に基づいて、推定されたデータフレームの終端を特定する。
図2Dは、1つの例示的な場合を示す。
【0089】
ブロック570において、フレーム化スレッドは、データストリームの終端に達したかどうかをチェックする。もし、「はい」であれば、処理550は終了する。もし、「いいえ」であれば、処理550はブロック575を続いて行う。
【0090】
ブロック575において、フレーム化スレッドは、ビットパターンの次のインスタンスの位置を予測する。
図2Eは、1つの例示的な場合を示す。
図2Eで説明したように、オフセットを計算し、このオフセットを推定されたデータフレームの以前に特定された終端に追加することによって、ビットパターンの予想された位置を判定することができる。
【0091】
ブロック580において、フレーム化スレッドは、ビットパターンが予想された位置で見つかったかどうかをチェックする。ビットパターンが予想された位置で見つからない場合、処理550はブロック560に戻る。ビットパターンが予想された位置で見つかった場合、処理550はブロック585を続いて行う。
【0092】
場合によっては、ビットパターンを含まない追加的なフレームが、ビットパターンを有する最後のフレームとビットパターンを有する次のフレームとの間に存在することがある。例えば、特徴的なビットパターンがメッセージタイプであると仮定すると、インスタンス間で見つかったフレームは、特徴的なビットパターンに一致するメッセージタイプを持たない異なるメッセージタイプである可能性がある。これらのフレームの境界は、最後の推定されたフレームの終端に対して相対的なメッセージ長フィールドを見つけることによって特定することができる。プロトコルが既知の場合、ヘッダのレイアウトも既知であり、メッセージ長フィールドをヘッダの中で見つけることができる。そして、この処理は、メッセージ長を使用してフレームのデータ部分を特定することにより、現在のフレーム境界を特定することができる。そして、次のフレームで特徴的なビットパターンを確認することができる。機器監視システム100は、特徴的なビットパターンのインスタンスが見つかるまで、現在のフレーム化仮説に従ってデータストリームのフレーム化を継続することができる。
【0093】
ブロック585において、フレーム化スレッドは、見つかった予測されたビットパターンのカウント値を増加させる。予想された位置にビットパターンがあることは、テスト対象のフレーム仮説が正しい可能性が高いことを意味する。予想された位置にあるビットパターンの数が多ければ多いほど、正しい確率が高くなる。
【0094】
ブロック590で、フレーム化スレッドは、カウント閾値に達しているかどうかをチェックする。カウント値の閾値は、見つけるべき所望の数のビットパターンに相当する。カウント閾値に達している場合、処理550は続いてブロック595を行う。閾値に達していない場合、処理はブロック560に戻る。実施態様によっては、カウント値が閾値以上か、閾値より大きい場合にのみ、カウント閾値に達しているものとする。他の実施態様では、閾値のカウンタは、見つけるべき所望の数のビットパターンに対応する設定数から始まり、目標数(例えば、ゼロ)に達するまで減らされるようにしてもよい。
【0095】
実施形態によっては、カウント閾値は、4~8の数である。しかしながら、カウント閾値は、様々な要因によって、その数値以上でもよいし、その数値以下でもよい。例えば、特徴的なビットパターンが比較的稀である場合、見つかったビットパターンが少なくてもフレーム化仮説が正しいことを示すのに十分である。ある場合では、データストリームは、数百フレームを含み、特徴的なビットパターンは、フレームの1~5%に出現する。他の実施形態では、より一般的に出現するような特徴的なビットパターンを使用することもでき、またはより一般的に出現しないような特徴的なビットパターンを使用できることも明らかであろう。比較的稀なビットパターンを選ぶことで、予想されたヘッダーフィールド以外でビットパターンが出現する可能性が低くなるため、誤検出の数を減らすことができる。しかしながら、非常に稀なビットパターンを選ぶと、フレーム化の分析が結論づけられる前に捕捉する必要があるデータストリームのフレーム数が増える可能性がある。
【0096】
ブロック595において、カウント閾値に達し、フレーム化スレッドは、1つまたは複数の推定されたデータフレームを1つまたは複数の実際のデータフレームとして特定する。カウント閾値に達することは、フレーム化の仮説が正しい可能性が高いことを示す。そして、データストリームで特定されたフレームが加入者機器やプログラムに提供される。その後、正しい可能性の高いフレーム化仮説を特定した後にフレーム化処理550を終了することができる。そして、機器監視システム100は、特定されたフレーム化仮説を用いて残りのデータストリームのフレーム化に進むことができる。
【0097】
ブロック560に戻ると、カウント閾値に達しないか、またはビットパターンが予期しなかった位置で見つかった場合、フレーム化スレッドは、現在のフレーム化仮説に従って、ビットパターンの次のインスタンスの位置を予測する。例えば、フレーム化スレッドは、最後に特定されたフレームの境界を使用して、次のフレームのメッセージ長フィールドを特定することができる。その後、処理550は、ブロック565に進み、上述した手順を繰り返す。
【0098】
図6は、特定の実施形態に係る、複数のフレーム化仮説を並行してテストするための例示的な処理600を示す流れ図である。この処理は、機器監視システム100またはそのコンポーネントの1つ、例えばミラーリング装置120または解釈装置135によって実行することができる。機器監視システム100は、ハードウェア(例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(例えば、ハードウェアシミュレーションを行うためにプロセッサ上で実行される命令)、ファームウェア、またはそれらの組み合わせを含む処理ロジックを含むことができる。以下の例示的な場合では、処理600は、複数のスレッドを並行して利用し、複数のフレーム化仮説をチェックする。スレッドは、複数の別個のCPUコアに割り当てられた物理スレッドであってもよいし、複数の仮想スレッドであってもよい。例えば、1つの物理スレッドが複数の仮想スレッドを実行し、複数の異なる仮想スレッドのデータ(例えば、閾値のカウント値)とマッピングを保持することができる。
【0099】
ブロック605において、機器監視システム100は、
図4で説明したように、フレーム化スレッドの開始に使用する初期ビットパターンを見つけるためのマスタースレッドを開始して、データストリームの複数の異なるフレーム化仮説をテストする。
【0100】
ブロック610において、マスタースレッドは、特徴的なビットパターンの第1のインスタンスが見つかったかどうかを判定する。第1のビットパターンが見つかった場合には、処理600は続いてブロック615を行い、第1のビットパターンの位置は、第1のフレーム化スレッドによって第1のフレームの境界を見つけるために使用される。一方、マスタースレッドはブロック630に進み、その後、第1のフレームの境界に基づいて追加のフレームを見つけ、処理する。データストリームを処理する際、第一のフレーム化仮説が正しいかどうかを確認するために、マスタースレッドは特徴的なビットパターンの追加のインスタンスを検索する。
【0101】
ブロック630において、マスタースレッドは、ビットパターンの予測されていないインスタンス、すなわち、第1のフレーム化スレッドによって予測されていない位置におけるビットパターンのインスタンスを見つける。ビットパターンの追加のインスタンスが予測されていない位置で見つかった場合、ブロック635および655に示すように、マスタースレッドは、追加のスレッドを開始して、ビットパターンのインスタンスの位置によって表される代替的なフレーム化仮説をテストする。例えば、第Nのビットパターンが予測されていない位置で見つかったと仮定すると、ブロック655においてマスタースレッドは、第Nの代替的なフレーム化仮説を用いて第Nのスレッドを開始する。
【0102】
しかしながら、予測されていない位置でビットパターンのインスタンスが見つからず、ストリームの終端に達した場合には、マスタースレッドは終了する。
【0103】
上述したように、マスタースレッドは、第1のフレーム化仮説をテストするための別のスレッドを作成する。その後、マスタースレッドは、作成された1つ以上のフレーム化スレッドから結果を収集し、最適なフレーム化仮説を特定する。しかしながら、他の実施形態では、マスタースレッドが第1のフレーム化仮説自体をテストし、追加のスレッドを作成して代替的なフレーム化仮説をテストするだけでよい。例えば、予測されていなかった位置でビットパターンが見つからない状況では、単一のマスタースレッドによって処理600が完了されてもよい。
【0104】
ブロック615に戻ると、機器監視システム100は、最初に見つかったビットパターン(「BP#1」)の位置に基づく第1のフレーム化仮説を用いて、第1のフレーム化スレッドを開始する。BP#1の位置を用いて、機器監視システム100は、推定されたフレームのヘッダ位置とデータ部分を特定する。その後、第1のフレーム化スレッドは、推定されたフレームに基づいてデータストリーム内の他のフレームを見つけ続ける。機器監視システム100は、第1のフレーム化仮説に基づいて、予想された位置にあるビットパターンの追加のインスタンスを検索する。
【0105】
ブロック620において、第1のフレーム化スレッドは、予想された位置で見つかったビットパターンの数に基づいて、カウント閾値に達しているかどうかを判定する。カウント閾値に達している場合、処理600は続いてブロック625を行い、機器監視システム100は、第1のフレーム化スレッドからの1つまたは複数の推定されたデータフレームを1つまたは複数の実際のデータフレームとして特定する。第1の仮説が、第1のフレーム化仮説を裏付けるのに十分なビットパターンのインスタンスを見つけたので、処理600は、続いてブロック670を行うことができる。そうでない場合には、ブロック620でカウント閾値に達せず、データストリームの終端に達した場合、スレッドは終了する。
【0106】
ブロック670において、機器監視システム100は、他のスレッドが開始されていれば、そのようなスレッドも終了させることができる。これらのスレッドは必要なカウント閾値に達しなかったため、これらのスレッドでテストされた代替的なフレーム仮説が正しくなかった可能性が高い。しかしながら、実施形態によっては、他のスレッドを継続し、スレッドの結果を比較して、最も正しい可能性の高いフレーム化仮説を特定する。例えば、予想された位置で見つかった特徴的なビットパターンのカウント値が最も多いスレッドを、正しいフレーム化仮説として選択することができる。
【0107】
ブロック630に戻ると、機器監視システム100のマスタースレッドが、予測されなかった位置で特徴的なビットパターンの第2のインスタンスを見つけた場合には、ブロック635に進み、第2のフレーム化スレッドを開始する。予測されなかった位置でビットパターンが見つからなかった場合には、マスタースレッドはデータストリームの処理を続行する。
【0108】
ブロック635において、機器監視システム100は、予測されていなかった位置で見つかったビットパターン(「BP#2」)の位置に基づいて、第2のフレーム化仮説を用いて第2のフレーム化スレッドを開始する。BP#2の位置を使用して、第2のフレーム化スレッドは、推定されたフレームのヘッダ位置およびデータ部分を特定する。その後、第2のフレーム化スレッドは、推定されたフレームに基づいて、データストリーム内の他のフレームを見つけ続ける。機器監視システム100は、第2のフレーム化仮説に基づいて、予想された位置のビットパターンの追加のインスタンスを検索する。
【0109】
ブロック640において、第2のフレーム化スレッドは、予想された位置で見つかったビットパターンの数に基づいて、カウント閾値に達しているかどうかを判定する。カウント閾値に達している場合、処理600は続いてブロック645を行い、機器監視システム100は、第2のフレーム化スレッドからの1つまたは複数の推定されたデータフレームを実際の1つまたは複数のデータフレームとして特定する。第2のフレーム化スレッドが、第2のフレーム化仮説を裏付けるのに十分なビットパターンのインスタンスを見つけたので、処理600は、ブロック670に進むことができる。そうでない場合、ブロック640でカウント閾値に達しておらず、データストリームの終端に達している場合には、第2のフレーム化スレッドが終了する。
【0110】
ブロック650に戻り、機器監視システム100のマスタースレッドが特徴的なビットパターンの第Nのインスタンスを見つけた場合には、ブロック655に進み、第Nのフレーム化スレッドを開始する。予想しなかった位置でビットパターンが見つからなかった場合には、マスタースレッドはデータストリームの終端に達するまで処理を続け、データストリームの終端に達した時点でマスタースレッドは終了する。
【0111】
ブロック655において、機器監視システム100は、予測されなかった位置で見つかったビットパターン(「BP#N」)の位置に基づいて、第Nの代替的なフレーム化仮説(第Nのフレーム化仮説)を用いて第Nのフレーム化スレッドを開始する。BP#Nの位置を用いて、第Nのフレームスレッドは、推定されたフレームのヘッダ位置とデータ部分を特定する。そして、第Nのフレーム化スレッドは、推定されたフレームに基づいて、データストリーム内の他のフレームを見つけようとし続ける。機器監視システム100は、第Nのフレーム化仮説に基づいて、予想された位置にあるビットパターンの追加のインスタンスを検索する。
【0112】
ブロック660において、第Nのフレーム化スレッドは、予想された位置で見つかったビットパターンの数に基づいて、カウント閾値に達しているかどうかを判定する。カウント閾値に達している場合、処理600はブロック655に進み、機器監視システム100は、第Nのフレーム化スレッドからの1つまたは複数の推定されたデータフレームを1つまたは実際のデータフレームとして特定する。第Nのフレーム化スレッドが、第Nのフレーム化仮説を裏付けるのに十分なビットパターンのインスタンスを見つけたので、処理600は、ブロック670に進むことができる。そうでない場合、ブロック620においてカウント閾値に達しておらず、データストリームの終端に達している場合には、第Nのフレーム化スレッドが終了する。
【0113】
以上、マスタースレッド、第1のフレーム化スレッド、第2のフレーム化スレッド、第Nのフレーム化スレッドを用いた処理について説明した。便宜上、上述した説明では、可変の正の数のスレッドを「N」で表している。特徴的なビットパターンのインスタンス数とその位置に基づいて、処理600において任意の数のスレッドを生成することができる。例えば、ビットパターンの予測していなかったインスタンスが見つからなかった場合、マスタースレッドのみが生成される。2つまたは3つのビットパターンのインスタンス予測されなかった位置に見つかった場合、2つまたは3つのフレーム化スレッドが生成される。ビットパターンのインスタンスが予測されなかった位置で見つかれば見つかるほど、追加のフレーム化仮説を検証するために、より多くのスレッドが生成される。
【0114】
[演算装置の実施形態]
図7は、1つまたは複数の実施形態に係る演算装置700の図である。機器監視システム100は、1つ以上の演算装置700によって構成することができる。例えば、機器105、制御装置110、ミラーリング装置120、解釈装置135および/または加入者装置145a~145c(つまり、器105、制御装置110、ミラーリング装置120、解釈装置135、または加入者装置145a~145c、あるいはそれらの全て)は、演算装置700とすることができる。演算装置700は、命令を実行することで、演算装置700は、本願明細書で説明される手法(例えば、操作、方法、機能など)のいずれか1つ以上を実行する。
【0115】
演算装置700は、研究所機器、携帯電話、スマートフォン、ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、ネットワーク接続記憶(NAS:network attached storage)装置、ネットワークスイッチ、マシンなどであってよく、演算装置700内でマシンに本願明細書で説明した手法のうちの1つまたは複数を行わせるための一組の命令を実行させることができる。また、マシンは、このマシン/装置が実行すべき動作を指定する一組の命令(連続的な命令であってもよく、そうでなくてもよい)を実行することができる任意のマシン/装置であってもよい。代替的な実施形態においては、マシンは、LAN、イントラネット、エクストラネット、またはインターネット内の他のマシンに接続(例えば、ネットワーク化)されてもよい。本マシンは、クライアント/サーバーネットワーク環境におけるサーバマシンの機能の中で動作することができる。さらに、単一のマシンのみが図示されているが、用語「マシン」は、本願明細書で説明される機能、動作、方法、アルゴリズムなどのいずれか1つ以上を実行する一組の命令(または複数の組の命令)を個別にまたは協働して実行するマシンを任意に集めたものも含むと見なされる。例えば、機器監視システム100は、集合的に動作して、上述したフレーム化機能を実行する複数のマシンを含むことができる。
【0116】
例示的な演算装置700は、処理装置(例えば、プロセッサ、コントローラ、中央処理装置(CPU)など)702、主メモリ704(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、同期(synchronous)DRAM(SDRAM)などの動的ランダムアクセスメモリ(DRAM))、ネットワークアクセスインタフェース706、ダイレクトアクセスインタフェース709、出力装置710、入力装置712、およびデータ記憶装置716を含み、これらはバス730を介して互いに通信する。演算装置700は、物質および製品の物理的な特性および生物学的特性を定量化および分析し、分子および細胞レベルでサンプルを解析するための専用のハードウェア(図示せず)を含むこともできる。
【0117】
処理装置702は、マイクロプロセッサ、中央処理装置(CPU)などの1つ以上の汎用処理装置を表す。より詳細には、処理装置702は、複雑命令セットコンピューティング(CISC:complex instruction set computing)マイクロプロセッサ、縮小命令セットコンピューティング(RISC:reduced instruction set computing)マイクロプロセッサ、超長命令語(VLIW:very long instruction word)マイクロプロセッサ、または他の命令の組もしくは命令の組を組み合わせたものを実行するプロセッサであってもよい。処理装置702はまた、特定用途向け集積回路(ASIC:application specific circuit)、フィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)、ディジタル信号プロセッサ(DSP:digital signal processor)、ネットワークプロセッサなどの1つ以上の特殊用途向け処理装置であってもよい。処理装置702は、本願明細書で説明する動作およびステップを実行するためのストレージモジュール/アプリケーション命令735(例えば、
図1に例示するストレージモジュール126、ストレージモジュール136および/またはストレージアプリケーション111用の(つまり、ストレージモジュール126用、ストレージモジュール136用、またはストレージアプリケーション111用、あるいはそれらの全て用の)命令)を実行するように構成される。
【0118】
演算装置700は、ネットワーク(例えば、
図1に例示されるネットワーク170)と通信可能なネットワークアクセスインタフェース706(例えば、ネットワークインタフェースカード、Wi-Fiインタフェースなど)を含んでもよい。また、演算装置は、ダイレクトアクセスインタフェース709(例えば、ユニバーサルシリアルバス(USB)インタフェース、外部SATA(eSATA)インタフェース、Thunderboltインタフェースなど)を含んでもよい。また、演算装置700は、出力装置710(例えば、液晶ディスプレイ(LCD)または陰極線管(CRT))、および入力装置712(例えば、マウス、キーボードなど)を含んでもよい。一実施形態においては、出力装置710および入力装置712は、単一のコンポーネントまたは装置(例えば、LCDタッチスクリーン)に組み込んだものでもよい。
【0119】
データ記憶装置716は、本願明細書に記載される手法または機能のいずれか1つ以上を実施する1つ以上の組の命令(例えば、ストレージモジュール/アプリケーション命令735)が格納されているコンピュータ読み取り可能な記憶媒体726を含んでもよい。また、ストレージモジュール/アプリケーション命令735は、演算装置700によるその実行中に、完全にまたは少なくとも部分的に、主メモリ704内および/または処理装置702内に(つまり、主メモリ704内または処理装置702内あるいはそれらの両方内に)存在することができる。また、主メモリ704および処理装置702は、コンピュータ読み取り可能な媒体を構成してもよい。命令はさらに、ネットワークアクセスインタフェース706および/またはダイレクトアクセスインタフェース709(つまり、ネットワークアクセスインタフェース706またはダイレクトアクセスインタフェース709あるいはそれらの両方)を介して送信または受信されてもよい。
【0120】
コンピュータ読み取り可能な記憶媒体726は、例示的な実施形態では単一の媒体であるように示されているが、用語「コンピュータ読み取り可能な記憶媒体」は、1組の命令または複数組の命令を格納する単一の媒体または複数の媒体(例えば、集中データベースまたは分散データベースおよび/または関連するキャッシュとサーバ(つまり、集中データベースまたは分散データベース、または関連するキャッシュとサーバ、あるいはそれらの全て))を含むものと理解されるべきである。さらに、「コンピュータ読み取り可能な記憶媒体」という用語は、マシンによって実行される1組の命令を記憶、符号化、または保持することができ、マシンに本開示内容の手法のいずれか1つまたは複数を行わせる任意の媒体を含むものと解釈すべきである。したがって、「コンピュータ読み取り可能な記憶媒体」という用語は、固体メモリ、光学媒体、磁気媒体を含むが、これらに限定されるものではない。
【0121】
[一般的なコメント]
当業者であれば、幾つかの実施形態において、本開示内容の範囲を逸脱することなく、他のタイプの監視システムを実施可能であることを理解するであろう。さらに、本願明細書で説明される処理で実行される実際のステップは、図中で説明し、示したものと異なる場合がある。実施形態によっては、上述したステップのうちの特定のステップが削除されたり、他のステップが追加されたりすることがある。
【0122】
特定の実施形態について説明したが、これらの実施形態は例示のみを目的として提示されたものであり、本願の保護の範囲を限定するように意図したものではない。実際、本願明細書に記載された新規な方法及びシステムを他の様々な形態で実施することができる。さらに、本願明細書に記載された方法およびシステムの形態には、様々な省略、置換および変更が可能である。添付の特許請求の範囲およびその均等物は、このような形態または変更が本願の保護の範囲に含まれることを意図している。例えば、図示した様々なコンポーネントは、プロセッサ上のソフトウェアおよび/またはファームウェア(つまり、ソフトウェアまたはファームウェアあるいはそれらの両方)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、および/または専用ハードウェア(つまり、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または専用ハードウェア、あるいはそれらの全て)として実装することができる。また、上述したように開示された特定の実施形態の特徴および属性は、異なる方法で組み合わせて別の実施形態を構成することができ、このような別の実施形態は、全て本開示内容の範囲に包含される。本開示内容は、特定の好ましい実施形態及び適用例を提供するが、本願明細書に記載された特徴事項及び利点の全てを提供するものではない実施形態を含み、当業者にとって明らかな他の実施形態も、本開示内容の範囲に包含される。したがって、本開示内容の範囲は、添付の特許請求の範囲を参照することによってのみ規定されるように意図される。
【0123】
本願明細書において、「例」または「例示的」という表現は、例、インスタンス、または図示したものを意味するために用いられる。本願明細書に「例」または「例示」として記載されたいかなる態様または設計も、他の態様または設計よりも必ずしも好ましい、または、利点があると解釈されるものではない。むしろ、「例」や「例示」という表現は、概念を具体的に示すことを意図している。本願明細書で使用する用語「または」は、排他的な「または」ではなく、包含的な「または」を意味するように意図している。つまり、特に指定がない限り、あるいは文脈から明らかな場合を除き、「XはAまたはB(AやB)を含む」は、任意の自然な包含的な順列を意味するように意図している。すなわち、XがAを含む場合、XがBを含む場合、またはXがAおよびBの両方を含む場合、これらのいずれの場合にも「XがAまたはBを含む」を満たすことになる。また、本願明細書及び添付の特許請求の範囲で使用される「1つ(もしくは個数を明示しない表現)」は、他に指定がない限り、または文脈から単数形を示すことが明らかでない限り、一般的に「1つ以上」を意味すると解釈されるべきである。さらに、本願明細書全体を通じて「実施形態」または「一実施形態」、もしくは、「実施態様」または「一実施態様」という用語の使用は、特段の定めがない限り、同一の実施形態または同一の実施態様を意味することを意図していない。さらに、本願明細書で使用される「第1」、「第2」、「第3」、「第4」などの用語は、複数の異なる要素を区別するためのラベル付けとして意図されており、必ずしもその数値による指定に従って序列的な意味を有するとは限らない。
【0124】
上述した全ての処理は、1つ以上の汎用または特殊目的のコンピュータまたはプロセッサによって実行されるソフトウェアコードモジュールの形態で実施され、ソフトウェアコードモジュールを介して完全に自動化されてもよい。コードモジュールは、任意のタイプのコンピュータ読み取り可能な媒体(例えば、非一時的なコンピュータ読み取り可能な媒体)または他のコンピュータ記憶装置または記憶装置を複数集めたものに格納されてもよい。代替的には、本方法の一部または全部は、専用のコンピュータハードウェアの形態で実施されてもよい。
【国際調査報告】