JP2013500542A - データのロギングと分析の方法およびシステム - Google Patents
データのロギングと分析の方法およびシステム Download PDFInfo
- Publication number
- JP2013500542A JP2013500542A JP2012522918A JP2012522918A JP2013500542A JP 2013500542 A JP2013500542 A JP 2013500542A JP 2012522918 A JP2012522918 A JP 2012522918A JP 2012522918 A JP2012522918 A JP 2012522918A JP 2013500542 A JP2013500542 A JP 2013500542A
- Authority
- JP
- Japan
- Prior art keywords
- field
- cache
- interest
- request
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2115—Third party
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
- Information Transfer Between Computers (AREA)
Abstract
インターネット要求のロギング方法には、関心のある複数のフィールドタイプを定義し、1つ以上のフィールドを含む要求をインターネットから受信することが含まれる。この方法には、1つ以上のフィールドの第1のフィールドの第1フィールドタイプが、関心のある複数のフィールドタイプの1つと一致するかどうかを判断し、第1のフィールドの少なくとも一部をキャッシュに格納することも含まれる。この方法には、1つ以上のフィールドの第2のフィールドの第2のフィールドタイプが、関心のある複数のフィールドタイプの1つに一致するかどうかを判断し、第2のフィールドの少なくとも一部をキャッシュに格納することも含まれる。さらに、この方法には、このキャッシュをサーバーに転送し、フィールド値の出現回数を判断し、このフィールド値の出現回数を含むレポートを提供することも含まれる。
Description
インターネットは、さまざまな形式とレベルの通信をサポートする国際的なコンピュータネットワークとしての機能がますます高まっている。たとえば、ワールドワイドウェブ(WWW)上において、Webサイトと呼ばれる世界中で使用可能なページ上で情報を提供することができる。また、インターネットは、電子メール、インスタントメッセージ、およびボイスオーバーインターネットプロトコル(VoIP)通信を介して、エンドユーザー間の1対1の通信をサポートする。
ますます、インターネットは広範囲に分散したネットワークサービス(検索エンジン、冗長Webサイト、VoIP接続ポイントなど)によって構成されるようになってきている。こうしたネットワークサービスは、多くの物理的な地理上のサイトに展開されているが、論理的にネットワークサービスを提供している。広範囲に展開されたネットワークサービスの課題は、すべての物理的サイトと、物理的サイトのグリッド全体にわたるトラフィックの使用パターンを理解することである。
一部のインターネット要求を処理するため、ドメインネームシステム(DNS)が利用される。DNSとは、クライアントサーバーモデルを基にした分散データベースシステムである。このデータベースのノードは、ネームサーバーと呼ばれる。各ドメインまたは各サブドメインは、そのドメインに関する情報と、そのドメインに従属するすべてのドメインのネームサーバーに関する情報を発行する1台以上の権限DNSサーバーを持つ。階層の最上位は、ルートネームサーバーと呼ばれるサーバーによって提供される。ルートネームサーバーとは、トップレベルドメイン(TLD)の名前を検索または解決する際に照会されるサーバーのことである。その他のインターネット要求には、IP要求、OCSP要求、およびWhois要求が含まれる。
ネットワークサービスのオペレータにとっては、要求のトラッキングが望ましい。しかし、現在のシステムは、システムオペレータが必要とする深さのレベルでトラッキングデータを提供する機能は備えていない。そのため、インターネット要求をログに記録し、こうしたインターネット要求に関連する情報をレポートするための改善された方法とシステムの技術が必要になる。
本発明は、主にデータネットワークに関するものである。さらに具体的には、本発明は、ネットワークサービスの最も頻繁に出現する特徴を計算するための方法とシステムに関するものである。単なる例であるが、本発明は、関心のあるフィールドタイプに関するデータをフロントエンドプロセッサが受信した際に、そのデータをキャッシュして要約サーバーに転送するシステムに適用されている。この要約サーバーは、関心のある各フィールドタイプに対して最も頻繁に出現する値についてソート処理とレポート処理を実行する。本方法および技術は、DNSトラフィック、OCSPトラフィック、Whoisトラフィックなどに適用することができる。
本発明の特定の実施形態に従い、要求のフィールドを分析し、関心のあるさまざまなフィールドタイプに対する特定の値の出現回数をカウントし、関心のある各フィールドタイプについて最も頻繁に出現する値を判断してレポートする。例として、処理エンジンが要求を受信すると、関心のあるフィールドタイプと一致するフィールドタイプを持つ要求内のフィールドがキャッシュされる。次に、このキャッシュがサーバーによって処理され、関心のあるフィールドタイプについて最も一般的に出現する値が判断される。一部の実施形態では、他のフィールドと結合されるフィールドに対して値が計算される。これは、構成を通じて設定することができる。次に、関心のある各フィールドタイプについて最も頻繁に出現する値(たとえば、関心のある特定のフィールドタイプの上位10個の値など)が、レポートシステムを使用して、通常はシステムオペレータにレポートされる。
本発明の実施形態に従い、インターネット要求のロギング方法が提供される。この方法には、関心のある複数のフィールドタイプを定義し、インターネットからの要求を受信することが含まれる。この要求には、1つ以上のフィールドが含まれる。この方法には、1つ以上のフィールドの第1のフィールドの第1のフィールドタイプが、関心のある複数のフィールドタイプの1つに一致しているかどうかを判断し、第1のフィールドの少なくとも一部をキャッシュに格納することも含まれる。この方法には、1つ以上のフィールドの第2のフィールドの第2のフィールドタイプが、関心のある複数のフィールドタイプの1つに一致しているかどうかを判断し、第2のフィールドの少なくとも一部をキャッシュに格納することも含まれる。さらに、この方法には、このキャッシュをサーバーに転送し、第1のフィールドタイプと第2のフィールドタイプの少なくとも1つのフィールド値の出現回数をサーバー側で判断し、このフィールド値の出現回数を含むレポートを提供することも含まれる。
本発明の別の実施形態に従い、インターネット要求に対するレポート処理の方法が提供される。この方法には、関心のある複数のフィールドタイプを定義し、第1の処理エンジンにおいて、インターネットからの第1の複数の要求を受信することが含まれる。この第1の複数の要求のそれぞれには、1つ以上の第1のフィールド群が含まれる。この方法には、1つ以上の第1のフィールド群の第1のフィールドを第1のキャッシュに格納し、1つ以上の第1のフィールド群の第2のフィールドを第1のキャッシュに格納することも含まれる。さらに、この方法には、第2の処理エンジンにおいて、インターネットからの第2の複数の要求を受信することも含まれる。この第2の複数の要求のそれぞれには、1つ以上の第2のフィールド群が含まれる。この方法には、1つ以上の第2のフィールド群の第3のフィールドを第2のキャッシュに格納し、1つ以上の第2のフィールド群の第4のフィールドを第2のキャッシュに格納することも含まれる。さらに、この方法には、第1のキャッシュをサーバーに転送し、第2のキャッシュをサーバーに転送し、他のフィールド値よりも高い出現回数によって特徴付けられる最上位フィールド値をサーバー側で判断し、最上位フィールドの値とその出現回数を含むレポートを提供することも含まれる。
本発明の特定の実施形態に従い、システムが提供される。このシステムには、インターネットに接続され、インターネットからの要求を受信できる複数の処理エンジンが含まれる。各要求には、1つ以上のフィールドが含まれる。このシステムには、複数の処理エンジンに接続されたサーバーと、このサーバーに接続されたレポートシステムが含まれる。これらの複数の処理エンジンのそれぞれには、第1のデータプロセッサを制御してキャッシュを作成するための第1の複数の指示を格納する第1のコンピュータ可読媒体が含まれる。この第1の複数の指示には、インターネット経由の複数の要求を第1のデータプロセッサで受信する指示と、インターネット経由で受信した複数の要求のサブセットについて、関心のあるフィールドタイプのフィールド値を第1のデータプロセッサによってキャッシュに格納する指示が含まれる。第1の複数の指示には、このサブセットの総数に関連するカウンタを第1のデータプロセッサによってインクリメントさせる指示、キャッシュを作成する期間を第1のデータプロセッサによって決定する指示、および、作成されたキャッシュを第1のデータプロセッサによってサーバーに転送する指示も含まれる。
サーバーには、第2のデータプロセッサを制御してレポートを作成するための第2の複数の指示を格納する第2のコンピュータ可読媒体が含まれる。この第2の複数の指示には、関心のある複数のフィールドタイプのフィールド値に関連するカウンタを第2のデータプロセッサによってインクリメントさせる指示、このカウンタに基づいて上記フィールド値を第2のデータプロセッサによってソートする指示、および、第2のデータプロセッサによってレポートをレポートシステムに転送する指示が含まれる。
本発明により、従来の技術ではなし得なかった多くの利点が実現される。たとえば、本発明の各実施形態は、上位N件の関心のあるフィールドタイプについてのロギングとレポート処理の方法とシステムをサービスプロバイダに提供する。本発明によって収集されたデータを必要とするユーザーとしては、サービスがどのように使用されているかを知る必要がある業務意思決定者、攻撃パターンについてシステムをモニターするシステムオペレータ、 サービスをモニターし、その使用パターンに基づいてサービスの改善を行うシステム実装者などが挙げられる。最も頻繁に出現するフィールド値のレポート処理は、ネットワークトラフィックを平均化するために、フロントエンドプロセッサ全体にわたってほぼリアルタイムに実行される。
本発明の各実施形態が提供する利点の1つは、本システムは汎用的な性質を持っているため、任意またはすべてのネットワークサービスで本システムを使用できるということである。暗号化されたデータを受信するネットワークサービスについても、本発明によってトラフィックパターンをモニターすることができる。このような場合、外部サービスによるモニター機能には、データを復号するための復号メカニズムが組み込まれていないという欠点がある。 本発明のこれらの実施形態および他の実施形態については、その多くの利点と機能とともに、これ以降の記述と添付の図面に基づいてさらに詳しく説明する。
フロントエンドプロセッサが受信したインターネット要求に関連する情報のトラッキングとレポートを行うために、トランザクションまたはクエリー(DNSクエリーなど)を、データベースまたはログファイル(ディスク上に格納されるテキストファイルなど)に記録することができる。次に、受信した要求に関するデータを収集するための他のプログラムやスクリプトを使用して、これらのログファイルの後処理を実行することができる。サービスプロバイダにとって関心のあるデータには、最も頻繁に照会されるIPアドレスや最も頻繁に実行されるクエリーなどが含まれる。
本発明者らは、上で述べた後処理システムは、システムのユーザーが必要とする処理速度も柔軟性も備えていないと判断した。ネットワークサービスを提供する典型的なシステムでは、数秒間に数十万件のクエリーを受信する可能性がある。従って、ディスク上のデータベースまたはログファイルに数十万件のクエリーを記録するには多くのリソース(特にディスクスペース)が必要になり、モニター中のシステムのパフォーマンス全体が直接的に影響を受ける。これは、データベースまたはディスクに対する履歴をコミットするのに必要な時間とリソースにより、次のトランザクションまたは要求を処理する前に、システムが一時的に停止することが多いためである。また、サービスプロバイダは、短い間隔で定期的に(たとえば、4秒間隔など)レポート処理を行うことを希望する。データベースまたはログファイルの後処理を行うプログラムまたはスクリプトは、トランザクションや要求の速度に追いつくことができず、必要とされる間隔でレポート処理を実行できない場合がある。トランザクションまたは要求の履歴をログファイルに記録するシステムについても、外部からの侵入者や不満を持つ従業員がアクセスできるディスク上のデータにこうした履歴を書き込む場合に、機密情報が漏洩するという可能性がある。本発明の各実施形態は、インターネット要求に関連する情報について、ほぼリアルタイムでのレポート処理を可能にすることにより、これらの問題と他の問題に対する解決策を提供する。これについては、本明細書を通して、さらに詳しく説明する。
図1は、インターネット経由で受信した要求の概略図である。図1に示す要求100には、1つ以上のフィールドが含まれる。例として、図1に示すように、この要求にはN個のフィールドが含まれる場合がある。メッセージ内のフィールドの具体的な数は、実際の要求によって異なる。これについては、これ以降でさらに詳しく説明する。一部の用途では、メッセージに含まれるフィールドは、IP,DNS,OCSP,Whoisという4つの代表的なカテゴリにグループ化することができる。これらのフィールドのそれぞれは、フィールドタイプ、フィールド長、およびフィールド値という3つの要素によって特徴付けされる。当業者にとっては明白であるため、一部の要求では、フィールド長はフィールド内には指定されない。用途に応じて、これら3つの要素は、特定用途に適するよう異なる。
本発明の各実施形態は、最も頻繁に出現するネットワークサービスの特徴を計算するためのシステムと技術を提供する。本発明の各実施形態に従い、各ネットワーク要求は「要求」と記述し、要求の各要素(ドメイン名やユーザーエージェントなど)は「フィールド」と記述する。これ以降で説明するように、要求は複数のフロントエンドプロセッサ(処理エンジンとも呼ばれる)に送信される。すべてのプロセッサが同じタイプの要求を処理するが、ユーザーが要求したサービスのタイプによっては、異なるフィールド値を持つ要求も存在する。処理エンジン(PE)は要求を順に処理し、「関心のあるフィールド」を選び出す。「関心のあるフィールド」とは、関心のあるフィールドタイプに一致するフィールドタイプを持つフィールドのことである。処理エンジン(PE)、プロトコルエンジン、フロントエンドプロセッサ、フロントサイドプロセッサおよびフロントフェイスプロセッサという各用語は、PEを表すための別の用語であるため、PEという用語と同じ意味で使用する必要がある。各PEは同じフィールドを選び出すが、要求内の各フィールドは異なるフィールド値を持つため、本明細書で説明する方法とシステムは、最も頻繁に出現するフィールド値を判断する。各処理エンジンは各要求を処理し、関心のあるフィールドタイプに関連するデータをキャッシュしてから、クエリーログデーモン(qlogd)、クエリーサマライザ、またはクエリーログサーバーと呼ばれる要約サーバーに短期キャッシュを送信する。PEは、実際には、各フィールド名(ocspシリアルなど)に対して数値表記(フィールド7など)を使用する。これに対して、クエリーログデーモンは、「フィールド7」が「ocspシリアル」を意味することを理解するように構成される。
クエリーログデーモンは、複数のPEから受信した各キャッシュ(要求セットとも呼ばれる)を処理し、フィールド値の出現回数を内部的にカウントする。次にクエリーログデーモンは、各PEから報告された上位の値を定期的にレポートする。この説明は要約的なものにすぎず、これらの各プロセスに関係する追加の説明は、これ以降に記述する。
以下の各表に、関心のあるフィールドタイプのリストを作成する際に使用できるフィールドの例を示す。表1から表3にリストされたフィールドタイプは、本発明を制限するものではなく、各種プロトコルにおけるさまざまなフィールドタイプの例として示しているにすぎない。他のフィールドタイプも、各種実装におけるフィールドタイプとして使用することができる。当業者は、多くのバリエーション、改修、代替手段を考え付くであろう。表1から表3に示すように、一部のフィールドタイプ(「ソースIPアドレス」など)が、いくつかのプロトコルまたはサービスで使用されている。ソースIPアドレスの例では、一部のプロトコルに対して、ヘッダー内でソース情報が提供される。これにより、正しいソースに応答を返すことができる。一部のサービスに共通するフィールドタイプの別の例としては、要求を処理するために必要な時間に関する情報を提供する時間フィールドタイプがある。他のフィールドタイプについては、特定のプロトコルに固有のものとなる。
表1から表3に示した各フィールドは、説明のために単純化したものであり、本発明の範囲を制限するものではないことを理解されたい。例として、「ocspシリアル」フィールドの実際の値は「www.example.com」ではなく、表に示した値に容易に変換可能な固有の識別子になる。また、上の各表に示したフィールドはこれですべてではなく、他の関心のあるフィールドも本発明の範囲内に含まれることを理解されたい。従って、追加のフィールドも、処理エンジンによって受信され、関心のあるフィールドタイプとして使用される要求の一部として受信することができる。これについては、本明細書においてさらに詳しく説明する。インターネット経由で受信した要求は、標準化団体が合意したプロトコルにおおむね準拠している。そのため、これらのプロトコルで定義されたフィールドに基づいてフィールドが抽出される。これらのフィールドは、そのフィールドタイプが関心のあるフィールドタイプに一致した場合にキャッシュされる。従って、キャッシュされたフィールドは、フィールドタイプ、フィールド長、およびフィールド値(タイプ、長さ、および値とも呼ばれる)を持つ。
図2は、本発明の特定の実施形態による、関心のあるフィールドタイプを示す表である。関心のあるフィールドタイプは、表1から表3に示すフィールドのリストから取得され、通常、システム実装者または他の適切な担当者によって定義される。図3に関してさらに詳しく説明するように、クエリーデータまたは応答データ(あるいはその両方)内の関心のあるフィールドタイプは、処理エンジン(PE)によって記録される。処理エンジンは、このキャッシュされたデータをクエリーサマライザに送信する。従って、クエリーサマライザに送信したいデータのタイプを定義することができる。図2に示す関心のあるフィールドタイプには、ソースIPアドレスが含まれる。このソースIPアドレスは、上で説明したように、一部のプロトコルについて共通のフィールドタイプとなる。図2に示す関心のあるフィールドタイプには、DNSクエリーに関連するフィールドも含まれる。さらに、図2に示す関心のあるフィールドタイプには、OCSPクエリーに関連するフィールドも含まれる。本発明は、これら特定のカテゴリの関心のあるフィールドタイプに制限されるものではなく、他のプロトコルにも適用することができる。当業者は、多くのバリエーション、改修、代替手段を考え付くであろう。
本発明の実装例として、各DNSクエリーには、ドメイン名とリソースレコード(RR)タイプ(つまり、有効なDNS RRタイプ)が含まれる。現在の有効なDNS RRタイプのリストは、http://www.iana.org/assignments/dns-parametersで参照することができる。各種タイプのうち、いくつかの例を表4に示す。
図8は、本発明の実施形態に従い、インターネットトラフィックを処理するネットワークサービスプロバイダを示している。図8に示すように、本発明の一部の実施形態では、インターネットからの複数サイト展開サービストラフィックを利用している。地理的に分散したネットワークサービスプロバイダは、サービス全体を構成する複数の接続ポイントを使用して、インターネットからのトラフィックを処理する。説明の目的で、ネットワークサービスプロバイダからのサービスを受けるいくつかの都市を示している。ネットワークサービスプロバイダは、サービストラフィックをインターネットから受信し、特定の用途に応じたサービスが提供される。以下で説明する図3は、ネットワーク要求を処理するこうしたサイトの1つを示している。
図3は、本発明の実施形態によるシステム構成の概略図である。図3に示すように、処理エンジンPE1(310a)、PE2(310b)...PEn(310n)によって要求が受信される。図3では3つの処理エンジンしか示していないが、典型的な実装においては、特定の用途に応じて1つ以上の処理エンジンが使用される。本発明の特定の実施形態では、各処理エンジンにより、インターネット経由でDNSサービスを提供するドメイン名解決システムの一部が構成される。通常、これらの処理エンジンは1つのサイト上で共存する。
処理エンジンが要求を受信すると、それぞれの処理エンジンが要求を処理し、データをキャッシュに書き込む(図では、キャッシュ1(320a)、キャッシュ2(320b)、およびキャッシュn(320n)で示している)。各キャッシュの内容は、これ以降でさらに詳しく説明する。事前に設定された時間が経過すると、あるいは、事前に設定されたキャッシュサイズに達すると、処理エンジン(PE)がキャッシュをクエリーサマライザ330に転送する。クエリーサマライザ330は、各PEから転送されたキャッシュを処理し、特定のフィールド値の出現回数によってランク付けされた上位n件の関心のあるフィールドタイプを判断する。事前に設定された間隔で、レポートがレポートシステム340(このシステムには、システムオペレータがアクセスできる)に提供される。これについては、これ以降でさらに詳しく説明する。
図8は、本発明の実施形態による、サービス用に地理的に分散した各サイトを示す概略図である。各サイトは、DNSクエリーやWhoisクエリーなどのネットワーク要求を処理する。ネットワーク要求を処理する各サイトは、ロサンゼルス、シカゴ、ロンドンなどのいくつかの都市で稼働しているものとして示している。図3において、処理エンジンPE1からPEnは、ネットワーク要求を処理するこれらのサイトの1つに配置することができる。そのため、図8では、図3に示す各サイトの概要を示している。
図4において、処理エンジンは、フィールド内の用途固有のデータを、フィールドタイプ、フィールド長、およびフィールド値という3つの要素(T/L/V)の形式でバッファまたはキャッシュに格納する。PEからの各メッセージは、これら3つの要素を含む複数のフィールドを持っている場合がある。PEは、キャッシュをクエリーサマライザに送信する前に、複数のメッセージからの情報をバッファまたはキャッシュに格納する。図4では、PE1から送信されたキャッシュを示している。第1の要求(要求1)は、処理エンジンが受信して処理する。一実施形態において、この要求には1つ以上のメッセージ(通常は1つ)が含まれ、これら1つ以上のメッセージのそれぞれには1つ以上のフィールドが含まれる。PE1は、これら1つ以上のメッセージを反復し、要求内の各フィールドタイプを、図2に例示するような関心のあるフィールドタイプと比較する。フィールドタイプが1つの関心のあるフィールドタイプに一致した場合、そのフィールドタイプの3つの要素(タイプ/長さ/値(つまり、T/L/V))がキャッシュ302aに格納される。図に示す例では、フィールド1とフィールド2のフィールドタイプが、関心のあるフィールドタイプの1つと一致し、フィールド1とフィールド2がキャッシュに格納される。要求1の他のフィールドも、省略記号によって示している。従って、フィールド1とフィールド2のフィールドタイプ、フィールド長、およびフィールド値がキャッシュ302aに格納される。フィールドタイプ/長さ/値に関する追加の説明は、本明細書において、さらに具体的にはこれ以降において記述する。
第2の要求(要求2)も、PE1が受信して処理する。第2の要求では、第1のフィールド(フィールド1)と第4のフィールド(フィールド4)のフィールドタイプが、関心のあるフィールドタイプの1つと一致してキャッシュに格納される。この例では、フィールド2とフィールド3のフィールドタイプは、関心のあるフィールドタイプではない。つまり、フィールド2とフィールド3の特定のフィールドタイプは、処理エンジンによって格納されたリスト内の関心のあるフィールドタイプのいずれとも一致しないということである。一部の実施形態では、標準に準拠する目的で、フィールド2はすべての要求について同じタイプを持つ。他の実施形態では、一部の要求がフィールド2を持たない場合があるため、フィールド2は存在しないことになり、キャッシュには格納されない。従って、要求2に含まれる1つ以上のメッセージ内のフィールドをPE1が反復する際に、フィールド2とフィールド3はスキップされ、キャッシュ302aには格納されない。PE1は、図4に示すように、要求Nに達するまで、引き続き追加の要求の受信と処理を行う。PEは、複数の要求にわたって同じフィールドタイプをキャッシュすることを理解する必要がある。従って、図4の実施例においては、フィールド1とフィールド2が要求1に対してキャッシュに格納され、フィールド1とフィールド4がフィールド2に対してキャッシュに格納され、フィールド1とフィールド2が要求Nに対してキャッシュに格納される。これは、これらのフィールドが、関心のあるフィールドタイプと一致するフィールドタイプを持っているためである。他の実施形態では、キャッシュに格納されるフィールドは、各フィールド内の特定のフィールドタイプによって異なる。
フィールドタイプ、フィールド長、およびフィールド値の例を示すため、PEは、4つの要求の受信後に、表5に示す情報を自分の要求キャッシュに格納することができる。上で説明したように、これらの要求に関連するデータは、フィールドタイプ:長さ:値という形式でキャッシュに格納される。この例では、4つの各要求の7つのフィールドが、関心のあるフィールドタイプに一致するフィールドタイプを持ち、キャッシュに格納される。表5に示す各要求は7つを超えるフィールドを持つことができるが、関心のあるフィールドタイプと一致するフィールドタイプを持つフィールドは7つだけであるため、これらの一致する7つのフィールドだけがキャッシュに格納される。
図6は、本発明の実施形態による、インターネット要求のロギング方法を示す概略的な流れ図である。610では、関心のある複数のフィールドタイプが、通常、システムオペレータによって定義される。612では、複数のフィールドを含む要求をインターネット経由で受信する。典型的な要求については、図1に示している。614では、要求内の第1のフィールドのフィールドタイプが、複数の関心のあるフィールドタイプの1つに一致するかどうかを判断する。616では、この一致の判断に対する応答として、第1のフィールドの少なくとも一部をキャッシュに格納する。例として、関心のあるフィールドタイプの1つがソースIPアドレスで、ソースIPアドレスのフィールドタイプがフィールド内に含まれている場合、通常はフィールドタイプ、長さ、値という形式で、このフィールドに関連するデータがキャッシュに格納される。一部の実施形態では、フィールド長のキャッシュはオプションである。
618では、要求内の第2のフィールドのフィールドタイプが、関心のある複数のフィールドタイプの1つに一致するかどうかを判断する。620では、この一致の判断に対する応答として、第2のフィールドの少なくとも一部をキャッシュに格納する。622では、キャッシュをサーバーに転送する。624では、サーバー側でキャッシュの処理とソートを行い、関心のある複数のフィールドタイプの値の出現回数を判断する。たとえば、上に示したソースIPアドレスの例の場合、最も頻繁に出現するソースIPアドレスの値を、ランク順にソートしてリストすることができる。626では、通常はシステムオペレータに対して、出現回数のレポートを提供する。
図6に示す具体的な手順は、本発明の実施形態により、インターネット要求に対するロギングとレポート処理の特定の方法を提供するものであることを理解されたい。代替の実施形態に従い、他の順序で手順を実行することもできる。たとえば、本発明の代替の実施形態では、上で説明した手順を異なる順序で実行することができる。また、図6に示す個々の手順には、これらの手順に応じたさまざまな順序で実行可能なサブ手順を含めることができる。さらに、特定の用途に応じて、手順を追加したり削除したりすることもできる。当業者は、多くのバリエーション、改修、代替手段を考え付くであろう。
図7は、本発明の実施形態による、インターネットクエリーのレポート方法を示す概略的な流れ図である。710では、関心のある複数のフィールドタイプが、通常はシステムオペレータによって定義される。712では、第1の処理エンジンが複数の要求を受信する。この処理エンジン(PE)は、要求の処理を行い、さらに、要求内のフィールドに含まれるフィールドタイプが、定義されている関心のあるフィールドタイプと一致するかどうかを判断する。714では、フィールドタイプと関心のあるフィールドタイプとの間の一致に基づき、第1のフィールドと第2のフィールドを第1のキャッシュに格納する。キャッシュの例は、図4に示している。716では、第2のPEも、複数の要求を受信する。第1のPEでの操作と同様に、これら複数の要求が処理され、関心のあるフィールドタイプと一致するフィールドタイプを持つフィールドがキャッシュに格納される。従って、718では、第3のフィールドと第4のフィールドが第2のキャッシュに格納される。
720では、通常、事前に設定されたキャッシュサイズに達した場合、または制限時間が経過した場合に、第1のキャッシュと第2のキャッシュがサーバーに転送される。722では、最も大きな出現回数を持つフィールド値をサーバーが判断する。通常、最も頻繁に出現するフィールド値を判断するプロセスは、それよりも大きなプロセスである、最も頻繁に出現するフィールド値の上位N件のリスト(上位10件のリストなど)を判断するプロセスの一部となる。724では、フィールド値と、そのフィールド値の出現回数を含むレポートを提供する。例として、DNSクエリー内のドメイン名が関心のあるフィールドタイプである場合、最も多く照会されたドメイン名のフィールド値(www.verisign.comなど)が、他のフィールド値とともに降順でレポート内にリストされる。
図7に示す具体的な手順は、本発明の実施形態に従い、インターネット要求について最も頻繁に出現するフィールド値をレポートする特定の方法を提供するものであることを理解されたい。代替の実施形態に従い、他の順序で手順を実行することもできる。たとえば、本発明の代替の実施形態では、上で説明した手順を異なる順序で実行することができる。また、図7に示す個々の手順には、これらの手順に応じたさまざまな順序で実行可能なサブ手順を含めることができる。さらに、特定の用途に応じて、手順を追加したり削除したりすることもできる。当業者は、多くのバリエーション、改修、代替手段を考え付くであろう。
一実施形態において、クライアントとサーバー間の通信プロトコルはステートレスで不安定である。この実施形態の場合、一部のクエリーログパケット(つまり、インターネット要求)が失われる可能性があることが考えられる。クエリーロギングは、単一スレッドモデルをサポートする。処理エンジンは、ルックアップエンジンからの応答を受信するたびに、クエリーロギングAPIを使用してクエリーデータと応答データを自分のバッファまたはキャッシュに格納し、事前に設定された時間が経過した場合(たとえば1秒ごと)、またはキャッシュ(キャッシュ302aなど)がいっぱいになった場合に、キャッシュされたデータをクエリーサマライザに送信する。通信に使用される特定のプロトコルは、本発明の実施形態を制限するものではなく、本発明の1つの実装を説明するために使用されているにすぎない。キャッシュまたはバッファに格納されたデータは、UDP経由でクエリーサマライザ330に送信される。
特定の実施形態において、QueryLogPacketは、サーバーに送信されるパケットの有線形式を定義するクラスである。このクラスは、複数のフィールドを持つメッセージをバッファに追加するためのインターフェースと、有線パケットからのメッセージを読み込むためのインターフェースも定義する。QueryLogPacketクラスは、メッセージとフィールドの概念を持つ。メッセージは、新しいメッセージ境界の開始を定義し、それに対してフィールドは、フィールドタイプ、フィールド長(フィールドサイズとも呼ばれる)、およびフィールド値という3つの要素の形式でメッセージの属性を定義する。メッセージは、これらのフィールドを1つ以上持つことができる。QueryLogPacketには、ヘッダーとペイロードが含まれる。
クエリーログパケットがUDPパケットである実装においては、パケットサイズは65、493バイト(UDPヘッダーサイズを含めた場合は65,535バイト)に制限される。クエリーログパケットのヘッダーは、事前に定義されたバイト数(10バイトなど)になる。典型的なヘッダーを表6に示す。
パケットがUDPパケットである場合、クエリーログパケットのペイロードが65、483バイトを超えることはない。一実施形態において、パケットに追加される各メッセージは、表7に示す形式を持つ。
「メッセージタイプ」および「フィールドカウント」は、新しいメッセージの開始と前のメッセージの終わりを示す。ペイロードは、メッセージがキャッシュに追加される前に、後続の各フィールドで始まる。上で説明したように、これらのフィールドは、フィールドタイプ、フィールド長、フィールドデータ(値)という3つの要素の形式で定義される。
一部の実装において、処理エンジンはソースを定義することができる。この場合、ソースフィールドをパケットに追加することができる。また、struct timeval型のパケットタイムスタンプを追加して、パケットが初期化されたときのタイムスタンプを提供することもできる。
すべてのメッセージ内のフィールドは「MSGTIMESTAMP」(フィールドタイプ6)で始まる。このフィールドの値には、パケットタイムスタンプとメッセージタイムスタンプとの差異が設定される。このフィールドは、以下で説明するQueryLogWriterクラスのnewMessage()メソッドの呼び出し時に設定される。
QueryLogWriterオブジェクトが初期化されると、複数のフィールドを持つメッセージがこのオブジェクトに取り込まれる。メッセージの各フィールドは、解析後の1つのクエリーまたは応答などのように単純なものにすることも、実際の着信メッセージまたは送信応答を含めることもできる。特定の実施形態では、フロントエンドの要求または応答全体をパッケージ化するのではなく、要求と応答の重要な部分(つまり、関心のあるフィールド)だけを選び出す。各メッセージには、用途に応じて定義されたタイプのタグも付けられる。このタグ付けは、クエリーサマライザにおいて複数のタイプのメッセージを許可するためのものである。これらのタイプの例としては、以下のものがある。
■ 着信クエリー
■ 送信応答(要求と応答を分離するのではなく、要求と応答を1つのメッセージに格納することもできる。)
■ ログ内の注記(例:チェックポイントメッセージ)
■ 切り捨てられたメッセージの注記
■ 着信クエリー
■ 送信応答(要求と応答を分離するのではなく、要求と応答を1つのメッセージに格納することもできる。)
■ ログ内の注記(例:チェックポイントメッセージ)
■ 切り捨てられたメッセージの注記
本発明者らは、一部のメッセージタイプは大きく異なる共通フィールドを持つ可能性があり、メッセージタイプを区別するための用途的な理由が潜在的に多数存在するものと判断した。一実施形態において、メッセージとメッセージ内のフィールドを追加するためのプログラミングインターフェースは以下のようになる。
class QueryLogWriter {
public:
//いずれかのメッセージがfalseを返した場合、現在のメッセージはバッファから
//消去される。
//その場合、newMessage()の呼び出しが成功するまで、addField()の呼び出しはすべて
//失敗する。
//新しいメッセージの準備。直前のメッセージはコミットされている。
//送信メッセージバッファがいっぱいで新しいメッセージを追加できない場合、
//falseを返す。
bool newMessage(uint8_t type);
//現在のメッセージに新しいフィールドを追加する。新しいメッセージはすでに
//開始されている。
//送信メッセージバッファがいっぱいで処理を続行できない場合、falseを返す。
bool addField(unsigned short type, unsigned short length, const void * value);
//現在のメッセージの終わりを通知する。
void commitMessage();
//通常、PEからこのメソッドを呼び出すことはない。
//PEが停止した場合、PEはこのメソッドを使用してバッファをフラッシュ
//することができる。
void send();
};
class QueryLogWriter {
public:
//いずれかのメッセージがfalseを返した場合、現在のメッセージはバッファから
//消去される。
//その場合、newMessage()の呼び出しが成功するまで、addField()の呼び出しはすべて
//失敗する。
//新しいメッセージの準備。直前のメッセージはコミットされている。
//送信メッセージバッファがいっぱいで新しいメッセージを追加できない場合、
//falseを返す。
bool newMessage(uint8_t type);
//現在のメッセージに新しいフィールドを追加する。新しいメッセージはすでに
//開始されている。
//送信メッセージバッファがいっぱいで処理を続行できない場合、falseを返す。
bool addField(unsigned short type, unsigned short length, const void * value);
//現在のメッセージの終わりを通知する。
void commitMessage();
//通常、PEからこのメソッドを呼び出すことはない。
//PEが停止した場合、PEはこのメソッドを使用してバッファをフラッシュ
//することができる。
void send();
};
newMessageメソッドとaddFieldメソッドは、キャッシュ(つまり、バッファ)フルイベントからユーザーを保護しようとする。キャッシュ(つまり、バッファ)がいっぱいになると、これらのメソッドはバッファをクエリーサマライザに送信し、直前のメッセージをバッファの最初に再度キューに格納する。この処理が正常に完了すると、これらのメソッドは、キューの内容をバッファに追加しようとする。newMessageメソッドは、バッファの送信タイミングの確認、バッファの送信、およびタイマーのリセットも行う。
このインターフェースは、各イベント(フロントエンド要求など)でのnewMessage()の呼び出しで使用され、メッセージとともに記録される重要な各側面でのさまざまなaddField()呼び出しで使用されることを目的としている。フィールドはメッセージ内で反復することができ、呼び出し側にとって都合のいい方法で書式設定することができる。ただし、書式設定はクエリーサマライザに保存される。これにより、ログパケットを読み込むための適切な変換が実行される。たとえば、4バイトの整数としてフィールドが追加された場合、書き込み(htonl()など)と再読み込み(ntohI()など)の実行中に、適切なプラットフォーム変換が実行される。
再度図3を参照すると、クエリーサマライザ330(qlogdとも呼ばれる)はネットワーク上で稼働するネットワーク要素であり、それぞれの解決サイトにおいてサーバー(つまりPE)をモニターする。このクエリーサマライザは、構成可能なインターフェースとポート上で稼働するデーモンプロセスであり、クエリーなどのログ可能なイベントを含むUDPパケットをPEからリッスンする。各UDPパケットは、1つ以上のログ可能イベントを含むことができる。上で説明したように、PEは受信した各要求を反復し、図4に示した情報の3つの要素(フィールドタイプ、フィールド長、およびフィールド値)をキャッシュする。クエリーサマライザは、これら3つの要素の出現回数をトラッキングし、関心のあるフィールドタイプの構成済みリストに対する上位n件リストを、構成可能な間隔でレポートする。トラッキング対象のフィールドタイプは構成経由のパラメータセットであるため、システムオペレータは、最も多く照会されたドメイン名など、上位のフィールドタイプのレポートを受信することができる。関心のあるフィールドタイプ(クエリー名)に対する上位の値(実際のドメイン名)の例として、最も多く照会された上位20件のドメイン名のリストを挙げることができる。
UDPソケットからパケットを読み込むと、クエリーサマライザはQueryLogReaderクラスを使用してこのパケットを解析し、人間が読むことができる形式にデータを変換する。QueryLogReaderクラスは、受信したパケットの反復と検証を行うためのAPIを提供する。メッセージが標準のクエリーログパケットの形式になっていない場合、読み込み機能によってパケット形式例外がスローされる。QueryLogReaderクラスは、このメッセージ内のそれぞれのメッセージとフィールドを読み込むためのAPIを提供する。
class QueryLogReader {
public:
QueryLogReader(const void* buffer);
//読み込むメッセージがパケット内にさらに存在する場合、この呼び出しはtrueを返す。
bool getNextMessage() const;
//現在のメッセージのメッセージタイプを取得する。
//この呼び出しを行う前に、’getNextMessage()’の呼び出しでtrueを返す必要がある。
unsigned short getMessageType() const;
//現在のメッセージ内のフィールド数を取得する。
//この呼び出しを行う前に、’getNextMessage()’の呼び出しでtrueを返す必要がある。
unsigned short getFieldCount() const;
//現在のメッセージのソースを取得する。この場合のソースとは、メッセージを
//クエリーロガーに送信した処理エンジンの名前を指す。
const string getPacketSource() const;
//パケットが初期化された時刻を取得する。
const struct timeval & getPacketTime() const;
//パケット内のメッセージカウントを取得する。
unsigned short getMessageCount() const;
//パケット内のシーケンスを取得する。
unsigned int getPacketSequence() const;
//読み込むフィールドが現在のメッセージ内にさらに存在する場合、
//このメソッドはtrueを返す。
//この呼び出しを行う前に、’getNextMessage()’の呼び出しでtrueを返す必要がある。
bool getNextField(int & type, void *& data, unsigned & length);
};
class QueryLogReader {
public:
QueryLogReader(const void* buffer);
//読み込むメッセージがパケット内にさらに存在する場合、この呼び出しはtrueを返す。
bool getNextMessage() const;
//現在のメッセージのメッセージタイプを取得する。
//この呼び出しを行う前に、’getNextMessage()’の呼び出しでtrueを返す必要がある。
unsigned short getMessageType() const;
//現在のメッセージ内のフィールド数を取得する。
//この呼び出しを行う前に、’getNextMessage()’の呼び出しでtrueを返す必要がある。
unsigned short getFieldCount() const;
//現在のメッセージのソースを取得する。この場合のソースとは、メッセージを
//クエリーロガーに送信した処理エンジンの名前を指す。
const string getPacketSource() const;
//パケットが初期化された時刻を取得する。
const struct timeval & getPacketTime() const;
//パケット内のメッセージカウントを取得する。
unsigned short getMessageCount() const;
//パケット内のシーケンスを取得する。
unsigned int getPacketSequence() const;
//読み込むフィールドが現在のメッセージ内にさらに存在する場合、
//このメソッドはtrueを返す。
//この呼び出しを行う前に、’getNextMessage()’の呼び出しでtrueを返す必要がある。
bool getNextField(int & type, void *& data, unsigned & length);
};
たとえば、DNS設定において、PEは、受信した各クエリー(名前およびタイプ)と、このクエリーの応答コードを含むメッセージをキャッシュすることができる。クエリーサマライザは、3つの項目(名前、タイプ、および応答コード)すべてをトラッキングし、最も多く照会された上位20の名前とタイプを10秒ごとにレポートする。qlogdは、起動時に自分自身の構成と初期化を実行する。サービスを提供する前に、qlogdは1つのスレッドを生成し、そのスレッドに2つの稼働スレッドを付与する。第1のスレッドはサービススレッドで、PEからパケットを読み込む。受信した各パケットについて、qlogdはパケット内のメッセージを反復し、次に各メッセージ内のすべてのフィールドを反復する。通常はカウンタを使用して、3つの要素(フィールドタイプ、長さ、値)からの値の出現回数について、現時点での合計数が判断される。設定された秒数が経過すると、または設定されたサイズをキャッシュサイズが超えると、サービススレッドは、現在のキャッシュを新しい空のキャッシュに対してスワップアウトし、古いキャッシュに基づいてレポートを作成するという指示を、アイドル状態のレポートスレッドである第2のスレッドに対して条件変数経由で通知する。このレポートスレッドは、キャッシュを反復して、すべてのフィールドに対するベクトルを作成する。次に、これらのベクトルがソートされ、上位n件の項目以外がすべて削除される(リスト内の項目が少ない場合は、リスト全体が削除される)。これらのリストからレポートメッセージが作成され、これにより、関心のある各フィールドタイプに対する上位n件の値がレポートされる。停止指示が発行されるまで、この処理が繰り返される。本発明の各実施形態では、2つのスレッドを使用する必要はなく、他の構成も本発明の範囲内に含まれる。
図9は、各キャッシュと、ログに記録されたインターネット要求を要約したレポートを示している。図9に示すように、3つの異なる処理エンジン(PE1、PE2、およびPEn)のキャッシュには、さまざまなフィールドが含まれる。関心のあるフィールドタイプには、ソースロケーション、株式ティッカーシンボル、およびドル建ての入札価格に対する3つのフィールドが含まれる。ロケーション172.28.111.42のソースから、PE1が要求を受信する。ソースロケーションは関心のあるフィールドタイプであるため、このソースロケーションがキャッシュに格納される。同様に、PE1は、要求内の株式ティッカーシンボルVRSNをキャッシュし、102.00という特定の入札価格を持つ要求内のこの値をキャッシュに格納する。他の要求も、関心のあるフィールドタイプに一致するフィールドを持っているため、タイプ、長さ、値という形式で、これらのフィールドがキャッシュされる。同様のキャッシュが、PE2とPEnによって作成される。
適切なレポート間隔で、キャッシュがクエリーサマライザに転送され、図に示すレポートがクエリーサマライザによって作成される。クエリーサマライザは、3つの関心のあるフィールドタイプ(タイプ1、タイプ2、タイプ2とタイプ3の組み合わせ)と一致するフィールドを持つフィールドについて、上位10件のフィールド値をトラッキングする。クエリーサマライザは、各PEからキャッシュを受信し、図に示すレポートを作成する。このレポートには、上位10件のソースロケーション、上位10件の株式ティッカーシンボル、および、上位10件の株式ティッカーシンボルと入札価格の組み合わせが記載される。図5に示すように、最上位のソースロケーションは172.28.111.42、最上位の株式ティッカーシンボルはVRSN、最上位の株式ティッカーシンボルと入札価格の組み合わせはVRSN 102.00である。
クエリーサマライザは、さまざまな統計値をレポートする機能を備える。一実施形態では、表8に示す以下の統計値がレポートされる。
QueryLogCacheクラスは、クエリーサマライザのコンポーネントである。このクラスは、PEから送信されたすべてのクエリー/イベントをトラッキングし、これらのクエリー/イベントがレポートされた頻度をトラッキングする。また、トラッキングしたそれぞれの関心のあるフィールドタイプに対する上位n件のヒット数を返すためのコードも提供する。QueryLogCacheの例を以下に示す。
class QueryLogCache {
public:
struct QueryCacheKey {
unsigned short field_
unsigned char *value_;
unsigned short size_;
};
struct TopNList {
TopNList () {}
-TopNList () {}
unsigned short field_;
vector<QueryCacheKey> matches
};
QueryLogCache ();
-QueryLogCache ();
void add (unsigned short field, const unsigned char *value, unsigned short size);
void getTopN (unsigned maxNumMatches, DeleterForArrayOf<TopNList>&lists);
void dump (ostream &out) const;
void dump (unsigned short field, ostream &out) const;
private:
typedef map <uQueryCacheKey, unsigned> QueryCache_;
DoubleBuffer<QueryCache> cache_;
};
class QueryLogCache {
public:
struct QueryCacheKey {
unsigned short field_
unsigned char *value_;
unsigned short size_;
};
struct TopNList {
TopNList () {}
-TopNList () {}
unsigned short field_;
vector<QueryCacheKey> matches
};
QueryLogCache ();
-QueryLogCache ();
void add (unsigned short field, const unsigned char *value, unsigned short size);
void getTopN (unsigned maxNumMatches, DeleterForArrayOf<TopNList>&lists);
void dump (ostream &out) const;
void dump (unsigned short field, ostream &out) const;
private:
typedef map <uQueryCacheKey, unsigned> QueryCache_;
DoubleBuffer<QueryCache> cache_;
};
QueryLogCache::add()メソッドは、クエリーサマライザ内のサービススレッドによって呼び出されるメソッドである。PEパケット内のメッセージから抽出されたフィールドタイプ、長さ、値はこのメソッドに渡され、クエリーキャッシュにコミットされる。このキャッシュの基本的な格納物はマップであり、フィールドタイプ(数字で表すことができる)、長さ、値を持つ構造体によってキーが解除される。この3つの要素によるキーがキャッシュマップ内で見つかると、このキーのカウントが更新される。見つからなかった場合は、新しいエントリーがキャッシュ内に追加される。レポートスレッドとサービススレッドがキャッシュ上で独立して稼働できるように、キャッシュ自体は二重バッファオブジェクト内に保存される。
QueryLogCache::dump()メソッドはデバッグ用としてのみ提供され、キャッシュ全体の内容または指定されたフィールドのキャッシュ内容のいずれかをダンプする。ダンプの結果は、用意されている出力ストリームに印刷される。
QueryLogCache::getTopN()メソッドは、システム管理者用のレポートを作成する時間になると、レポートスレッドによって呼び出される。呼び出し元は、Array<QueryLogCache::TopNList> オブジェクト内を通過する。このオブジェクトには、レポート対象の各フィールド用のQueryLogCache::TopNListオブジェクトが含まれている。呼び出し元は、トラッキング中のフィールドを使用して、各QueryLogCache::TopNListオブジェクトのfield_parameterを事前に設定する。PEからqlogdに渡されたすべてのフィールドについてqlogdではレポートできない場合があるため、この処理が実行される。たとえば、DNSの名前、タイプ、および応答コードがトラッキングされていて、DNS名のフィールド番号が1、タイプのフィールド番号が2、応答コードのフィールド番号が5である場合、呼び出し元は以下のメソッドを実行して、上位20件の名前とタイプを取得する。
QueryLogCache::getTopN() call
Array<QueryLogCache::TopNList> lists;
lists.adopt(new QueryLogCache: :TopNList[fields_.size()]);
for (unsigned i = 0; i < fields .size(); i++) {
QueryLogCache: :TopNList &list = lists[i];
list.field_ = fields_[i] .number_i
}
cache_.getTopN(20, lists) i
QueryLogCache::getTopN() call
Array<QueryLogCache::TopNList> lists;
lists.adopt(new QueryLogCache: :TopNList[fields_.size()]);
for (unsigned i = 0; i < fields .size(); i++) {
QueryLogCache: :TopNList &list = lists[i];
list.field_ = fields_[i] .number_i
}
cache_.getTopN(20, lists) i
当然ながら、リストの準備は初期化の際に行うことができる。このメソッドはキャッシュを反復し、キャッシュ内の各項目について、キャッシュのキーとカウントを追加する。ただし、イテレータの第2のメンバーと第1のメンバーについては、該当するフィールドのQueryLogCache::TopNListオブジェクト内での順序が逆になる。処理が終了すると、カウント値によってベクトルがソートされ、リスト内にn件を超える項目が存在する場合、最後のn件を除くすべての項目が削除される。その結果、実行されたArray<QueryLogCache::TopNList> オブジェクトには上位n件リストが作成され、システムオペレータへのメッセージ内に組み込まれる準備ができる。
疑似コードでのQueryLogCache::getTopNの実装例を以下に示す。
void QueryLogCache: :getTopN (unsigned maxNumMatches, Array<QueryLogCache: :TopNList>
topLists) {
PRECONDITION(maxNumMatches > 0);
PRECONDITION(topLists.size() > 0);
//現在のキャッシュを取得し、新しい空のキャッシュを発行する。
QueryCache *current = cache_.getCurrentPtr();
for (map<QueryCacheKey, unsigned>::const_iterator it = current
>begin;
it ! = current->end (); it++) {
const QueryCacheKey &entry = it->first;
unsigned count = it->second;
//このキャッシュエントリに対する正しいTopNListを検索し、
//カウントとキーのペアとして追加する。
for (unsigned i = 0; i < topLists.size(); i++) {
TopNList &topList = lists[i];
if (topList.field_ == entry.field_) {
topList.matches_.push_back(make-pair(count, entry));
break;
}
}
}
for (unsigned i = 0; i < topLists.size(); i++) {
//カウントとキーのペアのカウント部分(最初の部分)により、
//リストをソートする。
TopNList &list = topLists[i];
sort (list.matches_.begin() , list.matches_.end());
//maxNumMatchesを超える数の項目がリスト内にある場合、
//最後のmaxNumMatches件を除いてすべて削除する。
if (list.matches .size() > maxNumMatches) {
list.matches_.erase(list.matches_.begin(),
list.matches .end() - maxNumMatches);
}
}
}
void QueryLogCache: :getTopN (unsigned maxNumMatches, Array<QueryLogCache: :TopNList>
topLists) {
PRECONDITION(maxNumMatches > 0);
PRECONDITION(topLists.size() > 0);
//現在のキャッシュを取得し、新しい空のキャッシュを発行する。
QueryCache *current = cache_.getCurrentPtr();
for (map<QueryCacheKey, unsigned>::const_iterator it = current
>begin;
it ! = current->end (); it++) {
const QueryCacheKey &entry = it->first;
unsigned count = it->second;
//このキャッシュエントリに対する正しいTopNListを検索し、
//カウントとキーのペアとして追加する。
for (unsigned i = 0; i < topLists.size(); i++) {
TopNList &topList = lists[i];
if (topList.field_ == entry.field_) {
topList.matches_.push_back(make-pair(count, entry));
break;
}
}
}
for (unsigned i = 0; i < topLists.size(); i++) {
//カウントとキーのペアのカウント部分(最初の部分)により、
//リストをソートする。
TopNList &list = topLists[i];
sort (list.matches_.begin() , list.matches_.end());
//maxNumMatchesを超える数の項目がリスト内にある場合、
//最後のmaxNumMatches件を除いてすべて削除する。
if (list.matches .size() > maxNumMatches) {
list.matches_.erase(list.matches_.begin(),
list.matches .end() - maxNumMatches);
}
}
}
QueryLogServerクラスは、クエリーサマライザのもう1つのコンポーネントである。疑似コードでのQueryLogServerクラスの実装例を以下に示す。
class : public Server {
public:
QueryLogServer ();
-QueryLogServer ();
//レポータスレッド(上位n件リストを作成して管理コンソールに
//送信するスレッド)を実行する。
void report ();
private:
string transformValue (QueryLogCache: : QueryCacheKey &entry);
QueryLogCache cache_;
ConditionLock condition_;
};
class : public Server {
public:
QueryLogServer ();
-QueryLogServer ();
//レポータスレッド(上位n件リストを作成して管理コンソールに
//送信するスレッド)を実行する。
void report ();
private:
string transformValue (QueryLogCache: : QueryCacheKey &entry);
QueryLogCache cache_;
ConditionLock condition_;
};
クエリーサマライザのプライマリサービススレッドは、各PEから送信されたキャッシュを読み込む。疑似コードでのクエリーサマライザのプライマリサービススレッドの例を以下に示す。
start reporter thread
QueryLogCache newCache
while (!isShuttingDown()) {
read message from socket
for (each message in packet) {
if (time to report or cache size is too large) {
QueryLogCache *oldCache = 0;
cache_.writeUpdatePtr (newCache.orphan () &oldCache);
if (oldCache) {
delete oldCache;
}
newCache.adopt(new QueryLogCache);
ConditionLock clock (condition_);
clock.signal();
}
//各フィールドをキャッシュ内に追加する。
for (each field in message) {
newCache.add(field number, value, value length);
}
//動的フィールド(構成内に定義)を作成し、結果をキャッシュ内に追加する。
for (each constructed field)
string result;
for (each token in constructed field) {
result += token;
}
newCache.add(constructed field number, result.data(),
result.length()) i
}
}
}
shut down reporter thread
start reporter thread
QueryLogCache newCache
while (!isShuttingDown()) {
read message from socket
for (each message in packet) {
if (time to report or cache size is too large) {
QueryLogCache *oldCache = 0;
cache_.writeUpdatePtr (newCache.orphan () &oldCache);
if (oldCache) {
delete oldCache;
}
newCache.adopt(new QueryLogCache);
ConditionLock clock (condition_);
clock.signal();
}
//各フィールドをキャッシュ内に追加する。
for (each field in message) {
newCache.add(field number, value, value length);
}
//動的フィールド(構成内に定義)を作成し、結果をキャッシュ内に追加する。
for (each constructed field)
string result;
for (each token in constructed field) {
result += token;
}
newCache.add(constructed field number, result.data(),
result.length()) i
}
}
}
shut down reporter thread
クエリーサマライザの値変換メソッドは、一致するフィールド値をシステムオペレータ用のレポートに組み込むために、このフィールド値をストリング形式に変換する。この変換がどのように行われるかは、フィールドの構成(具体的には、field_#型の構成パラメータ)によって異なる。型が指定されていない場合はバイナリ形式が使用され、フィールド値の16進ダンプが実行される。表9に示す以下の変換がサポートされる。
クエリーサマライザのレポートメソッドは、すべての対象フィールドに対する上位n件リストを取得し、リスト内の行データを適切な形式に変換し、このデータをシステム管理者または適切なコンソール/プログラムに送信する。疑似コードを以下に示す。
QueryLogServer Reporter Thread
while (!isShuttingDown()) {
ConditionLock clock (condition_);
clock. wait ();
if (!isShutting Down) {
for (each field to report) {
QueryLogCache: :TopList &list topLists[il;
list.field = ith field;
}
//フィールドごとに上位n件のヒット数を取得する。これにより、
//新しいカウントの書き込みを開始するための新しい空のキャッシュが、
//プライマリサービススレッド用に発行される。
QueryLogCache *cache cache_.getCurrentPtr();
cache_.getTopN(numTopHits, topLists);
//レポートメッセージを作成する。
add preliminaries to report;
//実際の上位n件リストを追加する。
for (each field to report) {
for (each match in field's top-n list) {
string textualValue = transformValue(entry);
add to report;
}
}
send to Report messaging server;
}
}
QueryLogServer Reporter Thread
while (!isShuttingDown()) {
ConditionLock clock (condition_);
clock. wait ();
if (!isShutting Down) {
for (each field to report) {
QueryLogCache: :TopList &list topLists[il;
list.field = ith field;
}
//フィールドごとに上位n件のヒット数を取得する。これにより、
//新しいカウントの書き込みを開始するための新しい空のキャッシュが、
//プライマリサービススレッド用に発行される。
QueryLogCache *cache cache_.getCurrentPtr();
cache_.getTopN(numTopHits, topLists);
//レポートメッセージを作成する。
add preliminaries to report;
//実際の上位n件リストを追加する。
for (each field to report) {
for (each match in field's top-n list) {
string textualValue = transformValue(entry);
add to report;
}
}
send to Report messaging server;
}
}
クエリーサマライザは、トラッキング対象として構成されたすべてのフィールドに対する上位n件リストを管理コンソールにレポートする。レポートの送信間隔は、reporting_interval構成パラメータによって制御される。本発明の特定の実施形態に従い、各レポートが表10のように構成される。
任意の名前や値などを使用したレポートの例を以下に示す。この例は実際のデータとは一切関係なく、例示目的で示しているにすぎない。また、見やすくするため、DNSタイプと応答コードは読み取り可能なニーモニックに変換している。
BEGIN 550 87176982
TO=host.dns.topqueries
FROM=host
TYPE=DATA
SEQ=1234
host=host
domain=(none)
start seconds=1190217552
start useconds=2
now seconds=1190217542
now useconds=12345
field17_0=www.example1.com. 1000
field17_1=www.example2.com. 999
field17_2=www.example3.com. 997
field17_3=www.example4.com. 74
field17_4=www.example5.com. 2
field18_0=A 2274
field18_1=NS 307
field18_2=MX 20
field18_3=SOA 6
field18_4=TXT 4
field19_0=NOERROR 2764
field19_1=NXDOMAIN 276
field19_2=REFUSED 30
field19_3=FORMERR 1
field19_4=NOTIMP 1
BEGIN 550 87176982
TO=host.dns.topqueries
FROM=host
TYPE=DATA
SEQ=1234
host=host
domain=(none)
start seconds=1190217552
start useconds=2
now seconds=1190217542
now useconds=12345
field17_0=www.example1.com. 1000
field17_1=www.example2.com. 999
field17_2=www.example3.com. 997
field17_3=www.example4.com. 74
field17_4=www.example5.com. 2
field18_0=A 2274
field18_1=NS 307
field18_2=MX 20
field18_3=SOA 6
field18_4=TXT 4
field19_0=NOERROR 2764
field19_1=NXDOMAIN 276
field19_2=REFUSED 30
field19_3=FORMERR 1
field19_4=NOTIMP 1
PEとクエリーサマライザは、メモリーに接続されたプロセッサを含む。このメモリーには、本発明の実施形態に従い、本方法の少なくとも一部をプロセッサによって実行するための指示が格納される。このプロセッサは、指示とデータを実行するように構成された汎用マイクロプロセッサ(Intel Corporation of Santa Clara, Califが製造するPentium(登録商標)プロセッサなど)にすることができる。また、本発明による方法をソフトウェア、ファームウェア、及び/又はハードウェアで実行するための指示の少なくとも一部を実現する特定用途向け集積回路(ASIC)にすることもできる。例として、こうしたプロセッサには、専用の電気回路、ASIC、組み合わせロジック、他のプログラマブルプロセッサ、これらの組み合わせなどがある。メモリーは、デジタル情報を格納できる任意のデバイス(RAM、フラッシュメモリー、ハードディスク、CDなど)にすることができる。プロセッサは、関心のあるフィールドタイプ、キャッシュ、ソート済みフィールドのリスト、レポート、他の関連情報を格納できるデータベースに接続することができる。
本明細書で記述している例と実施形態は、単に説明目的として示しているに過ぎず、当業者にはさまざまな改修や変更が提示され、これらの改修や変更は本発明の精神と範囲内に含まれ、さらに添付の各請求項の範囲に含まれることが理解されよう。
Claims (21)
- 関心のある複数のフィールドタイプを定義することと、
1つ以上のフィールドを持つ要求をインターネットから受信することと、
前記1つ以上のフィールドの第1のフィールドの第1のフィールドタイプが、前記関心のある複数のフィールドタイプの1つと一致するかどうかを判断することと、
前記第1のフィールドの少なくとも一部をキャッシュに格納することと、
前記1つ以上のフィールドの第2のフィールドの第2のフィールドタイプが、前記関心のある複数のフィールドタイプの1つと一致するかどうかを判断することと、
前記第2のフィールドの少なくとも一部を前記キャッシュに格納することと、
前記キャッシュをサーバーに転送することと、
前記第1のフィールドタイプと前記第2のフィールドタイプの少なくとも1つのフィールド値の出現回数をサーバー側で判断することと、
前記フィールド値の出現回数を含むレポートを提供することと、
を備える、インターネット要求のロギングを行う方法。 - 前記第1のフィールドタイプが、前記関心のある複数のフィールドタイプの1つと一致するかどうかを判断することは、解決サイトにおいて行われる、請求項1に記載の方法。
- 前記1つ以上のフィールドの第3のフィールドの第3のフィールドタイプが、前記関心のある複数のフィールドタイプの1つと一致しない場合、前記1つ以上のフィールドの前記第3のフィールドをキャッシュに格納しないことをさらに備える、請求項1に記載の方法。
- 複数の処理エンジンのそれぞれから送信されたキャッシュをサーバーで受信することをさらに備える、請求項1に記載の方法。
- レポートをシステムオペレータに転送することをさらに備える、請求項1に記載の方法。
- 前記第1のフィールドの一部が、前記第1のフィールドのフィールドタイプ、フィールド長、およびフィールド値であり、前記第2のフィールドの一部が、前記第2のフィールドのフィールドタイプ、フィールド長、およびフィールド値である、請求項1に記載の方法。
- 前記1つ以上のフィールドのそれぞれが、少なくともフィールドタイプ、フィールド長、およびフィールド値によって特徴付けられる、請求項1に記載の方法。
- 前記関心のある複数のフィールドタイプを定義することが、インターネットからの要求の受信前に実行される、請求項1に記載の方法。
- 関心のある複数のフィールドタイプを定義することと、
それぞれが1つ以上の第1のフィールド群を持つ第1の複数の要求を、第1の処理エンジンがインターネットから受信することと、
前記1つ以上の第1のフィールド群の第1のフィールドを第1のキャッシュに格納することと、
前記1つ以上の第1のフィールド群の第2のフィールドを前記第1のキャッシュに格納することと、
それぞれが1つ以上の第2のフィールド群を持つ第2の複数の要求を、第2の処理エンジンがインターネットから受信することと、
前記1つ以上の第2のフィールド群の第3のフィールドを第2のキャッシュに格納することと、
前記1つ以上の第2のフィールド群の第4のフィールドを前記第2のキャッシュに格納することと、
前記第1のキャッシュをサーバーに転送することと、
前記第2のキャッシュをサーバーに転送することと、
他のフィールド値よりも高い出現回数によって特徴付けられる最上位フィールド値をサーバー側で判断することと、
前記最上位フィールド値とその出現回数を含むレポートを提供することと、
を備える、インターネット要求に対するレポート処理を行う方法。 - 前記レポートが、前記キャッシュに格納されたフィールド値の出現回数によってソートされたリストを備える、請求項9に記載の方法。
- 前記第1のフィールドをキャッシュに格納する前に、前記第1の処理エンジンにより、前記第1のフィールドのフィールドタイプが、関心のある複数のフィールドタイプの1つと一致するかどうかを判断することと、
前記第2のフィールドをキャッシュに格納する前に、前記第1の処理エンジンにより、前記第2のフィールドのフィールドタイプが、前記関心のある複数のフィールドタイプの1つと一致するかどうかを判断することと、
前記第3のフィールドをキャッシュに格納する前に、前記第2の処理エンジンにより、前記第3のフィールドのフィールドタイプが、前記関心のある複数のフィールドタイプの1つと一致するかどうかを判断することと、
前記第4のフィールドをキャッシュに格納する前に、前記第2の処理エンジンにより、前記第4のフィールドのフィールドタイプが、前記関心のある複数のフィールドタイプの1つと一致するかどうかを判断することと、
をさらに備える、請求項9に記載の方法。 - 前記第1の複数の要求および前記第2の複数の要求が、DNS要求、IP要求、OCSP要求、またはWhois要求の少なくとも1つによって構成される、請求項9に記載の方法。
- 前記第1の複数の要求および前記第2の複数の要求が、VoIP要求またはIM要求の少なくとも1つによって構成される、請求項9に記載の方法。
- インターネットに接続され、それぞれが1つ以上のフィールドを持つ要求をインターネットから受信することができる複数の処理エンジンと、
前記複数の処理エンジンに接続されたサーバーと、
前記複数の処理エンジンのそれぞれが、キャッシュを作成する第1のデータプロセッサを制御するための第1の複数の指示を格納する第1のコンピュータ可読媒体を含むところの、前記サーバーに接続されたレポートシステムと、
を備え、
前記第1の複数の指示が、
前記第1のデータプロセッサにより、複数の要求をインターネット経由で受信する指示と、
前記第1のデータプロセッサにより、インターネット経由で受信した前記複数の要求のサブセットに対する関心のあるフィールドタイプのフィールド値をキャッシュに格納する指示と、
前記第1のデータプロセッサにより、前記サブセットの合計数に関連するカウンタをインクリメントさせる指示と、
前記第1のデータプロセッサにより、キャッシュを作成するための期間を決定する指示と、
前記第1のデータプロセッサにより、レポートを作成する第2のデータプロセッサを制御するための第2の複数の指示を格納する第2のコンピュータ可読媒体を含む前記サーバーに、前記キャッシュを送信する指示と、
を備え、
前記第2の複数の指示が、
前記第2のデータプロセッサにより、前記関心のある複数のフィールドタイプのフィールド値に関連するカウンタをインクリメントさせる指示と、
前記第2のデータプロセッサにより、前記カウンタに基づいて前記フィールド値をソートする指示と、
前記第2のデータプロセッサにより、前記レポートを前記レポートシステムに送信する指示と、
を備える、システム。 - 前記要求が、DNS要求、IP要求、OCSP要求、またはWhios要求の少なくとも1つによって構成される、請求項14に記載のシステム。
- 前記複数の処理エンジンが解決サイトに配置される、請求項14に記載のシステム。
- 前記解決サイトがDNS解決システムのコンポーネントである、請求項16に記載のシステム。
- 前記第1のフィールドのキャッシュ格納処理が、フィールドタイプ、フィールド長、およびフィールド値の格納によって構成される、請求項14に記載のシステム。
- 時間間隔の経過に基づいて前記キャッシュが前記サーバーに転送される、請求項14に記載のシステム。
- キャッシュサイズが制限値に達したことに基づいて前記キャッシュが前記サーバーに転送される、請求項14に記載のシステム。
- 前記サーバーがサービススレッドおよびレポートスレッドを備える、請求項14に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/510,161 US8977705B2 (en) | 2009-07-27 | 2009-07-27 | Method and system for data logging and analysis |
US12/510,161 | 2009-07-27 | ||
PCT/US2010/043067 WO2011014429A1 (en) | 2009-07-27 | 2010-07-23 | Method and system for data logging and analysis |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013500542A true JP2013500542A (ja) | 2013-01-07 |
Family
ID=43498221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012522918A Pending JP2013500542A (ja) | 2009-07-27 | 2010-07-23 | データのロギングと分析の方法およびシステム |
Country Status (7)
Country | Link |
---|---|
US (1) | US8977705B2 (ja) |
EP (1) | EP2460066A4 (ja) |
JP (1) | JP2013500542A (ja) |
KR (1) | KR20120061777A (ja) |
CN (1) | CN102473085A (ja) |
CA (1) | CA2764908A1 (ja) |
WO (1) | WO2011014429A1 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4420325B2 (ja) | 2001-11-01 | 2010-02-24 | ベリサイン・インコーポレイテッド | トランザクションメモリ管理装置 |
US9292612B2 (en) | 2009-04-22 | 2016-03-22 | Verisign, Inc. | Internet profile service |
US8527945B2 (en) | 2009-05-07 | 2013-09-03 | Verisign, Inc. | Method and system for integrating multiple scripts |
US8510263B2 (en) | 2009-06-15 | 2013-08-13 | Verisign, Inc. | Method and system for auditing transaction data from database operations |
US8977705B2 (en) | 2009-07-27 | 2015-03-10 | Verisign, Inc. | Method and system for data logging and analysis |
US8856344B2 (en) | 2009-08-18 | 2014-10-07 | Verisign, Inc. | Method and system for intelligent many-to-many service routing over EPP |
US8327019B2 (en) | 2009-08-18 | 2012-12-04 | Verisign, Inc. | Method and system for intelligent routing of requests over EPP |
US8175098B2 (en) | 2009-08-27 | 2012-05-08 | Verisign, Inc. | Method for optimizing a route cache |
US9762405B2 (en) | 2009-10-30 | 2017-09-12 | Verisign, Inc. | Hierarchical publish/subscribe system |
US9569753B2 (en) | 2009-10-30 | 2017-02-14 | Verisign, Inc. | Hierarchical publish/subscribe system performed by multiple central relays |
US9047589B2 (en) | 2009-10-30 | 2015-06-02 | Verisign, Inc. | Hierarchical publish and subscribe system |
US9235829B2 (en) | 2009-10-30 | 2016-01-12 | Verisign, Inc. | Hierarchical publish/subscribe system |
US9269080B2 (en) | 2009-10-30 | 2016-02-23 | Verisign, Inc. | Hierarchical publish/subscribe system |
US8982882B2 (en) | 2009-11-09 | 2015-03-17 | Verisign, Inc. | Method and system for application level load balancing in a publish/subscribe message architecture |
TWI485560B (zh) * | 2012-08-31 | 2015-05-21 | Ibm | 資料分析系統、快取裝置、與資料處理方法 |
US9323748B2 (en) * | 2012-10-22 | 2016-04-26 | Ab Initio Technology Llc | Profiling data with location information |
US9428287B2 (en) | 2012-10-31 | 2016-08-30 | BIOMéRIEUX, INC. | Methods of fabricating test sample containers by applying barrier coatings after sealed container sterilization |
US9358738B2 (en) | 2012-10-31 | 2016-06-07 | Biomerieux, Inc. | Aseptic blow, fill and seal methods of fabricating test sample containers and associated systems and containers |
US9523110B2 (en) | 2013-02-15 | 2016-12-20 | Biomerieux, Inc. | Culture containers with internal top coating over gas barrier coating and associated methods |
US9197487B2 (en) * | 2013-03-15 | 2015-11-24 | Verisign, Inc. | High performance DNS traffic management |
US9563672B2 (en) | 2013-09-30 | 2017-02-07 | Verisign, Inc. | NXD query monitor |
US9984173B2 (en) * | 2014-02-24 | 2018-05-29 | International Business Machines Corporation | Automated value analysis in legacy data |
US11036530B2 (en) * | 2016-10-17 | 2021-06-15 | Vmware, Inc. | Application continuous high availability solution |
US20180132586A1 (en) * | 2016-11-14 | 2018-05-17 | Kyle Patrick Flaherty | Cooler and methods of storing a cooler in a bag |
CN108965207B (zh) * | 2017-05-19 | 2021-02-26 | 北京京东尚科信息技术有限公司 | 机器行为识别方法与装置 |
US11044588B2 (en) * | 2018-07-23 | 2021-06-22 | International Business Machines Corporation | System and method for collaborative caching |
CN113010852B (zh) * | 2021-03-29 | 2024-07-30 | 北京金山云网络技术有限公司 | 数据的计量统计方法、装置、电子设备及存储介质 |
CN116049131B (zh) * | 2022-06-10 | 2023-10-13 | 荣耀终端有限公司 | 文件管理方法、系统、电子设备及存储介质 |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7127741B2 (en) * | 1998-11-03 | 2006-10-24 | Tumbleweed Communications Corp. | Method and system for e-mail message transmission |
WO2000052594A2 (en) * | 1999-03-03 | 2000-09-08 | Ultradns, Inc. | Scalable and efficient domain name resolution |
US7356569B1 (en) * | 1999-04-26 | 2008-04-08 | Mainstream Scientific, Llc | Apparatus and method for tracing the distribution of diversely sourced internet content |
US7610289B2 (en) * | 2000-10-04 | 2009-10-27 | Google Inc. | System and method for monitoring and analyzing internet traffic |
KR100856149B1 (ko) * | 1999-11-26 | 2008-09-03 | 네테카 인코포레이티드 | 전자 메일 서버 및 전자 메일 통신을 용이하게 하기 위한 방법 |
US7930285B2 (en) * | 2000-03-22 | 2011-04-19 | Comscore, Inc. | Systems for and methods of user demographic reporting usable for identifying users and collecting usage data |
US6684250B2 (en) * | 2000-04-03 | 2004-01-27 | Quova, Inc. | Method and apparatus for estimating a geographic location of a networked entity |
US7734815B2 (en) * | 2006-09-18 | 2010-06-08 | Akamai Technologies, Inc. | Global load balancing across mirrored data centers |
US20020093527A1 (en) * | 2000-06-16 | 2002-07-18 | Sherlock Kieran G. | User interface for a security policy system and method |
US7725602B2 (en) * | 2000-07-19 | 2010-05-25 | Akamai Technologies, Inc. | Domain name resolution using a distributed DNS network |
CA2427266C (en) * | 2000-11-01 | 2005-03-29 | Snapnames.Com, Inc. | Registry-integrated internet domain name acquisition system |
US7392546B2 (en) * | 2001-06-11 | 2008-06-24 | Bea Systems, Inc. | System and method for server security and entitlement processing |
US7613815B1 (en) * | 2001-10-15 | 2009-11-03 | Netapp, Inc. | Method and apparatus for customized logging in a network cache |
JP4420325B2 (ja) * | 2001-11-01 | 2010-02-24 | ベリサイン・インコーポレイテッド | トランザクションメモリ管理装置 |
US7958199B2 (en) * | 2001-11-02 | 2011-06-07 | Oracle America, Inc. | Switching systems and methods for storage management in digital networks |
US7096498B2 (en) * | 2002-03-08 | 2006-08-22 | Cipher Trust, Inc. | Systems and methods for message threat management |
US6946715B2 (en) * | 2003-02-19 | 2005-09-20 | Micron Technology, Inc. | CMOS image sensor and method of fabrication |
US20050027882A1 (en) * | 2003-05-05 | 2005-02-03 | Sullivan Alan T. | Systems and methods for direction of communication traffic |
US20050105513A1 (en) * | 2002-10-27 | 2005-05-19 | Alan Sullivan | Systems and methods for direction of communication traffic |
US7310686B2 (en) * | 2002-10-27 | 2007-12-18 | Paxfire, Inc. | Apparatus and method for transparent selection of an Internet server based on geographic location of a user |
US20040122939A1 (en) * | 2002-12-19 | 2004-06-24 | Russell Perkins | Method of obtaining economic data based on web site visitor data |
US7478151B1 (en) * | 2003-01-23 | 2009-01-13 | Gomez, Inc. | System and method for monitoring global network performance |
US7657540B1 (en) * | 2003-02-04 | 2010-02-02 | Seisint, Inc. | Method and system for linking and delinking data records |
WO2004104739A2 (en) * | 2003-05-14 | 2004-12-02 | Rhysome, Inc. | Method and system for reducing information latency in a business enterprise |
US7769826B2 (en) * | 2003-06-26 | 2010-08-03 | Nominum, Inc. | Systems and methods of providing DNS services using separate answer and referral caches |
US7761570B1 (en) * | 2003-06-26 | 2010-07-20 | Nominum, Inc. | Extensible domain name service |
US7761678B1 (en) * | 2004-09-29 | 2010-07-20 | Verisign, Inc. | Method and apparatus for an improved file repository |
SG121921A1 (en) * | 2004-11-02 | 2006-05-26 | Soon Seah Toh | Network management appliance |
US7640296B2 (en) * | 2004-12-21 | 2009-12-29 | Sap Ag | Mapping of a content request for a cache server |
US7855974B2 (en) * | 2004-12-23 | 2010-12-21 | Solera Networks, Inc. | Method and apparatus for network packet capture distributed storage system |
US7685270B1 (en) * | 2005-03-31 | 2010-03-23 | Amazon Technologies, Inc. | Method and apparatus for measuring latency in web services |
JP4884463B2 (ja) * | 2005-05-24 | 2012-02-29 | パックスファイアー インコーポレイテッド | 通信トラフィック誘導のための強化特性 |
US7546368B2 (en) * | 2005-06-01 | 2009-06-09 | Neustar, Inc. | Systems and methods for isolating local performance variation in website monitoring |
US8209759B2 (en) * | 2005-07-18 | 2012-06-26 | Q1 Labs, Inc. | Security incident manager |
US7962616B2 (en) * | 2005-08-11 | 2011-06-14 | Micro Focus (Us), Inc. | Real-time activity monitoring and reporting |
US8463249B2 (en) * | 2005-09-14 | 2013-06-11 | Jumptap, Inc. | System for targeting advertising content to a plurality of mobile communication facilities |
US8302030B2 (en) * | 2005-09-14 | 2012-10-30 | Jumptap, Inc. | Management of multiple advertising inventories using a monetization platform |
US8364540B2 (en) * | 2005-09-14 | 2013-01-29 | Jumptap, Inc. | Contextual targeting of content using a monetization platform |
US7477575B2 (en) * | 2005-09-23 | 2009-01-13 | Verisign, Inc. | Redundant timer system and method |
AU2007207417A1 (en) * | 2006-01-20 | 2007-07-26 | Paxfire, Inc. | Systems and methods for discerning and controlling communication traffic |
US8606926B2 (en) * | 2006-06-14 | 2013-12-10 | Opendns, Inc. | Recursive DNS nameserver |
US8713188B2 (en) * | 2007-12-13 | 2014-04-29 | Opendns, Inc. | Per-request control of DNS behavior |
US20080034424A1 (en) * | 2006-07-20 | 2008-02-07 | Kevin Overcash | System and method of preventing web applications threats |
US20080133729A1 (en) * | 2006-08-17 | 2008-06-05 | Neustar, Inc. | System and method for managing domain policy for interconnected communication networks |
WO2008021512A2 (en) * | 2006-08-17 | 2008-02-21 | Neustar, Inc. | System and method for handling jargon in communication systems |
US8234379B2 (en) * | 2006-09-14 | 2012-07-31 | Afilias Limited | System and method for facilitating distribution of limited resources |
US7650317B2 (en) * | 2006-12-06 | 2010-01-19 | Microsoft Corporation | Active learning framework for automatic field extraction from network traffic |
US20100030897A1 (en) * | 2006-12-20 | 2010-02-04 | Rob Stradling | Method and System for Installing a Root Certificate on a Computer With a Root Update Mechanism |
US7694016B2 (en) * | 2007-02-07 | 2010-04-06 | Nominum, Inc. | Composite DNS zones |
US7809818B2 (en) * | 2007-03-12 | 2010-10-05 | Citrix Systems, Inc. | Systems and method of using HTTP head command for prefetching |
US8484656B2 (en) * | 2007-03-12 | 2013-07-09 | Citrix Systems, Inc. | Systems and methods for providing global server load balancing of heterogeneous devices |
US10845399B2 (en) * | 2007-04-03 | 2020-11-24 | Electro Industries/Gaugetech | System and method for performing data transfers in an intelligent electronic device |
JP2009043119A (ja) | 2007-08-10 | 2009-02-26 | Fujifilm Corp | ウェブ・サーバ・システム |
EP2201457A2 (en) * | 2007-10-18 | 2010-06-30 | Neustar, Inc. | System and method for sharing web performance monitoring data |
US7949724B1 (en) * | 2007-12-28 | 2011-05-24 | Yahoo! Inc. | Determining attention data using DNS information |
US20090235359A1 (en) * | 2008-03-12 | 2009-09-17 | Comodo Ca Limited | Method and system for performing security and vulnerability scans on devices behind a network security device |
US8504488B2 (en) * | 2008-04-30 | 2013-08-06 | Cisco Technology, Inc. | Network data mining to determine user interest |
US8661008B2 (en) * | 2008-05-15 | 2014-02-25 | Enpulz, L.L.C. | Network browser supporting historical content viewing |
US7925782B2 (en) * | 2008-06-30 | 2011-04-12 | Amazon Technologies, Inc. | Request routing using network computing components |
US20090282027A1 (en) * | 2008-09-23 | 2009-11-12 | Michael Subotin | Distributional Similarity Based Method and System for Determining Topical Relatedness of Domain Names |
US9172713B2 (en) * | 2008-09-24 | 2015-10-27 | Neustar, Inc. | Secure domain name system |
US7930393B1 (en) * | 2008-09-29 | 2011-04-19 | Amazon Technologies, Inc. | Monitoring domain allocation performance |
JP5735480B2 (ja) * | 2009-03-20 | 2015-06-17 | アド−バンテージ ネットワークス,インコーポレイテッド | コンテンツを検索、選択、及び表示する方法及びシステム |
US8527658B2 (en) * | 2009-04-07 | 2013-09-03 | Verisign, Inc | Domain traffic ranking |
US9292612B2 (en) * | 2009-04-22 | 2016-03-22 | Verisign, Inc. | Internet profile service |
US8676989B2 (en) * | 2009-04-23 | 2014-03-18 | Opendns, Inc. | Robust domain name resolution |
US8527945B2 (en) * | 2009-05-07 | 2013-09-03 | Verisign, Inc. | Method and system for integrating multiple scripts |
US8510263B2 (en) * | 2009-06-15 | 2013-08-13 | Verisign, Inc. | Method and system for auditing transaction data from database operations |
US8977705B2 (en) | 2009-07-27 | 2015-03-10 | Verisign, Inc. | Method and system for data logging and analysis |
US20110035497A1 (en) * | 2009-08-05 | 2011-02-10 | Dynamic Network Services, Inc. | System and method for providing global server load balancing |
US8380870B2 (en) * | 2009-08-05 | 2013-02-19 | Verisign, Inc. | Method and system for filtering of network traffic |
US8327019B2 (en) * | 2009-08-18 | 2012-12-04 | Verisign, Inc. | Method and system for intelligent routing of requests over EPP |
US8175098B2 (en) * | 2009-08-27 | 2012-05-08 | Verisign, Inc. | Method for optimizing a route cache |
US8982882B2 (en) * | 2009-11-09 | 2015-03-17 | Verisign, Inc. | Method and system for application level load balancing in a publish/subscribe message architecture |
US9047589B2 (en) * | 2009-10-30 | 2015-06-02 | Verisign, Inc. | Hierarchical publish and subscribe system |
US9286369B2 (en) * | 2009-12-30 | 2016-03-15 | Symantec Corporation | Data replication across enterprise boundaries |
-
2009
- 2009-07-27 US US12/510,161 patent/US8977705B2/en active Active
-
2010
- 2010-07-23 EP EP10804917.2A patent/EP2460066A4/en not_active Withdrawn
- 2010-07-23 WO PCT/US2010/043067 patent/WO2011014429A1/en active Application Filing
- 2010-07-23 KR KR1020117030582A patent/KR20120061777A/ko not_active Application Discontinuation
- 2010-07-23 CA CA2764908A patent/CA2764908A1/en not_active Abandoned
- 2010-07-23 CN CN2010800333404A patent/CN102473085A/zh active Pending
- 2010-07-23 JP JP2012522918A patent/JP2013500542A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CN102473085A (zh) | 2012-05-23 |
CA2764908A1 (en) | 2011-02-03 |
KR20120061777A (ko) | 2012-06-13 |
US20110022678A1 (en) | 2011-01-27 |
US8977705B2 (en) | 2015-03-10 |
EP2460066A1 (en) | 2012-06-06 |
WO2011014429A1 (en) | 2011-02-03 |
EP2460066A4 (en) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013500542A (ja) | データのロギングと分析の方法およびシステム | |
Meyer et al. | Decentralizing control and intelligence in network management | |
US7228565B2 (en) | Event reporting between a reporting computer and a receiving computer | |
ES2617199T3 (es) | Gestión de contenido | |
US7734792B2 (en) | Secure tunnel domain name management | |
US7461369B2 (en) | Java application response time analyzer | |
US9680842B2 (en) | Detecting co-occurrence patterns in DNS | |
Edmonds | ISC passive DNS architecture | |
US20030223367A1 (en) | Methods for identifying network traffic flows | |
MX2010006844A (es) | Metodo de resolución de direcciones de red a nombres de host en flujos de red para dispositivos de red. | |
CN112448969B (zh) | 链路追踪方法、装置、系统、设备及可读存储介质 | |
US20100146143A1 (en) | System and Method for Analyzing Data Traffic | |
US7647398B1 (en) | Event query in the context of delegated administration | |
CN110737639A (zh) | 审计日志方法、装置、计算机设备及存储介质 | |
US11283757B2 (en) | Mapping internet routing with anycast and utilizing such maps for deploying and operating anycast points of presence (PoPs) | |
Xia et al. | Challenges in decentralized name management: the case of ENS | |
US7653742B1 (en) | Defining and detecting network application business activities | |
Vincent et al. | A survey of IP traceback mechanisms to overcome denial-of-service attacks | |
Cranor et al. | Characterizing large DNS traces using graphs | |
Amann et al. | Count me in: Viable distributed summary statistics for securing high-speed networks | |
Krishnamurthy et al. | ATMEN: a triggered network measurement infrastructure | |
US20090300206A1 (en) | Methods and systems for protecting e-mail addresses in publicly available network content | |
US20020161613A1 (en) | Message-address management program, recording medium carrying message-address management program, message-address management method, and message-address management apparatus | |
Doyle | An IP Address Management Solution for a Server Solution Provider | |
Pouget et al. | Honeynets: Foundations for the development of early warning information systems |