英語で読む

次の方法で共有


Windows 7 のネットワーク トレース: アーキテクチャ

次の図は、Windows 7 の基本的なネットワーク トレース アーキテクチャを示しています。

ネットワーク トレース アーキテクチャの図

ネットワーク トレースでは、Windows で使用できる Event Tracing for Windows (ETW) フレームワークが利用されます。 ネットワーク コンポーネント (Winsock、TCP/IP、NDIS、パケット キャプチャなど) は、ETW トレース プロバイダーとして登録され、ネットワーク アクティビティに関連するイベントを出力します。 有意性の記録可能なアクティビティは、ETW に記録されるイベントにすることができます。 これらのネットワーク コンポーネントとパケット キャプチャのトレースは、ETW コントローラーとして機能する netsh トレース コンテキストを使用して有効にすることができます。

生成されたトレースは、イベント トレース ログ (ETL) ファイルに収集されます。 これらの ETL ファイルは、ネットワーク モニター 3.2 以降、イベント ビューアー、netsh トレース変換 、Tracerpt.exeなど、さまざまなツールを使用して分析できます。

各 ETW イベントには共通のヘッダーがあり、ETW はイベント プロパティ、タイム スタンプ、アクティビティ ID などの情報を格納します。 (アクティビティ ID の詳細については、「エンドツーエンド シナリオでの関連イベントの書き込み」を参照してください)。 アクティビティ ID は、イベントを関連付けるために使用されます。 ユーザー モードでは、アクティビティ ID はスレッドに格納され、1 つのスレッドに記録されたすべてのイベントに同じアクティビティ ID が自動的にタグ付けされます。 カーネル モードでは、イベントのログ記録時にアクティビティ ID を明示的に渡す必要があります。 既定では、ETL ファイルは、特定のアクティビティ ID の下でイベントをグループ化するために関連付けられます。

Windows イベントと ETW の詳細については、「Windows イベント」を参照してください。

ネットワーク トレースの ETW コンポーネント

ネットワーク トレースでは、ETW をプライマリ トレース メカニズムとして使用して、ネットワーク サブシステムの動作に関する情報を提供します。 ETW には、イベント トレース セッション、イベント プロバイダー、イベント コントローラー、イベント コンシューマーの 4 つの主要なコンポーネントがあります。

バッファリングとログ記録は、プロバイダーからのイベントを受け入れ、トレース ファイルを作成 イベント トレース セッションで行われます。

イベント プロバイダー は、ETW セッションにイベントを書き込む論理エンティティです。 イベント プロバイダーには、ユーザー モード アプリケーション、マネージド アプリケーション、ドライバー、またはその他のソフトウェア エンティティを指定できます。 イベント プロバイダーは ETW に登録し、ETW ログ API を呼び出してコード内のさまざまなポイントからイベントを書き込みます。 多くのオペレーティング システム コンポーネントでイベント インストルメンテーションが増加しているため、Windows の単純なアプリケーションやシナリオでも、イベント プロバイダーである複数のコンポーネントが含まれます。

イベント コントローラー イベント トレース セッションを開始および停止し、プロバイダーを有効にします。 イベント プロバイダーがイベント コントローラー アプリケーションによって動的に有効になっている場合、プロバイダーはイベント コントローラーによって指定された特定のイベント トレース セッションにイベントを送信します。 イベント プロバイダーによってイベント トレース セッションに送信される各イベントは、固定ヘッダーで構成されます。これには、イベント メタデータと、プロバイダーによってログに記録された追加のカスタム データが含まれます。

イベント コンシューマー は、ログ ファイルを読み取るか、イベント トレース セッションをリッスンしてリアルタイム イベントを処理するアプリケーションです。 イベント コンシューマーの 1 つの例として、Microsoft Network Monitor 3.2 があります。これには、Windows 7 のネットワーク トレースによって生成されたログ ファイルを読み取って表示する機能が含まれています。

イベントは時系列でイベント コンシューマーに配信され、イベントを特定の形式で表示するさまざまなイベント コンシューマー アプリケーションがあります。 イベントがセッションに記録されると、ETW は、タイムスタンプ、プロセスとスレッド ID、プロセッサ番号、およびログ スレッドの CPU 使用率データなど、イベント ヘッダーに追加情報を追加します。 その後、このデータは、プロバイダーに含まれるカスタム データと共にイベント コンシューマーに渡されます。

新しい イベント ログ API を使用するプロバイダーは、イベント マニフェストと呼ばれる XML ファイルを提供することが期待されます。 このファイルは、プロバイダーによって書き込まれたイベントのすべてのカスタム データとレイアウト情報を定義するためのメタデータを提供します。 その後、汎用コンシューマー アプリケーションは、トレース データ ヘルパー (TDH) API を使用して、イベント メタデータの取得、イベントのデコード、および表示を行います。

Windows 7 のネットワーク トレースでは、イベント コントローラー/コンシューマー側に、全体的な Windows 診断およびサポート エクスペリエンスと統合されたエンドツーエンドのシナリオ ベースのトレース サポートが含まれています。 シナリオでは、シナリオに関係するイベント プロバイダーのコレクションを定義します。 イベント コントローラー/コンシューマー側では、ネットワーク コンポーネント全体の特定のシナリオに関連するプロバイダーを含め、トレースを使用できるシナリオ (コンテキスト) を定義します。 イベント プロバイダー側には、ネットワーク スタック内のさまざまなコンポーネントからの標準化されたネットワーク トレース イベントが含まれており、ETW アクティビティ ID を介して関連付けることができます。 プロバイダーは、キーワード、レベル、タスク、オペコードなどの ETW 概念の使用を標準化する一般的なネットワーク スキーマを使用します。 スキーマでは、エラー イベント、パケット ドロップ イベント、スキーマ イベント、状態遷移イベントなど、多くのネットワーク コンポーネントに共通するイベントも定義されています。