WSD デバッグ クライアントを使用したマルチキャスト トラフィックの検証
汎用ホストとクライアントがネットワーク上で互いを見ることができるが、実際のホストとクライアントが見えない場合は、ネットワーク経由でエンドポイント間で送信されるメッセージに問題がある可能性があります。 汎用ホストとクライアントの詳細については、「UDP WS-Discovery での汎用ホストとクライアントの使用」を参照してください。 完全なネットワーク トレースは、収集、フィルター処理、読み取りが困難な場合があるため、WS-Discovery メッセージのマルチキャスト側を出力するために、WSD デバッグ クライアント ツールを使用することができます。
マルチキャスト モードの WSD デバッグ クライアントは、ユニキャスト メッセージを出力できないため、検査できるのはメッセージの半分のみとなります。 ユニキャスト トラフィックに関心がある場合は、「UDP WS-Discovery のネットワーク トレースの検査」にスキップしてください。
この手順では、ネットワーク上のすべてのマルチキャスト トラフィックを表示する方法を示しています。 デバイスとの間のマルチキャスト トラフィックのみを表示するには、後述の「WSD デバッグ クライアント結果のフィルター処理」セクションを参照してください。
WSD デバッグ クライアントを使用してマルチキャスト トラフィックを検証する方法
- ネットワーク全体で実行されるようにホストとクライアントを構成します (つまり、ホストとクライアントが異なるマシンで確実に動作するようにします)。
- コマンド プロンプトを開き、次のコマンドを実行します。 WSDDebug_client.exe /mode multicast
- ホストとクライアントを起動するか、ネットワーク エクスプローラーで F5 キーを押して、エラーを再現します。
- メッセージがマルチキャストされていることを確認します。
必要なメッセージが WSD デバッグ クライアント出力に表示される場合、アプリケーションの障害は、マルチキャスト メッセージの内容、または対応するユニキャスト応答メッセージの存在または内容にある可能性があります。 「UDP WS-Discovery のネットワーク トレースの検査」にある手順に従って、トラブルシューティングを続行します。
WSD デバッグ クライアント出力に必要なメッセージが表示される場合は、アプリケーションの問題の原因が特定されている可能性があります。 マルチキャスト トラフィックがネットワーク上で送信されていない可能性があります。 このエラーは、アプリケーションがマルチキャスト アダプターを正しく列挙しない場合に発生することがあります。 アプリケーションは、すべてのネットワーク インターフェイス経由でマルチキャスト トラフィックを明示的に送信する必要があります。これを行わないと、ループバック インターフェイスまたは他のインターフェイスに対してパケットが生成されない可能性があります。 パケットがネットワーク上に表示されていないことを確認するには、「UDP WS-Discovery のネットワーク トレースの検査」にある手順に従い、マルチキャスト メッセージが見つからない証拠を探します。
メッセージがマルチキャストされていることを確認する
Probe メッセージがマルチキャストされていることを常に確認してください。 必要に応じて、Hello および Resolve メッセージがマルチキャストされていることを確認します。 すべてのアプリケーションで Resolve メッセージが使用されるわけではないことに注意してください。 クライアントとホストで使用されるメッセージ パターンの詳細については、「検出とメタデータの Exchange メッセージ パターン」および「WSDAPI のトラブルシューティングを開始する」を参照してください。
上記のステップ 3 で説明したように送信するには、メッセージをトリガーする必要があります。 WSD デバッグ クライアントは、生の SOAP メッセージを出力として表示します。 WSD デバッグ クライアントによってマルチキャスト モードで出力されるすべてのメッセージは、マルチキャスト ソケット経由で受信されるため、メッセージ宛先アドレスは表示されません。
次の WSD デバッグ クライアントの出力例は、Probe メッセージを示しています。 <wsa:Action> 要素は、メッセージを Probe メッセージとして識別します。 <wsa:Action> フィールドを調べて、受信したメッセージが Probe メッセージであることを確認します。
UDP message at 05/08/07 10:06:55 from soap.udp://[127.0.0.1:49334]
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="h
ttp://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsd="https://schemas.xmlso
ap.org/ws/2005/04/discovery" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/d
evprof"><soap:Header><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:T
o><wsa:Action>https://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action>
<wsa:MessageID>urn:uuid:256ad815-1576-4e59-8efc-4c1e0f15fdd2</wsa:MessageID></so
ap:Header><soap:Body><wsd:Probe><wsd:Types>wsdp:Device</wsd:Types></wsd:Probe></
soap:Body></soap:Envelope>
次の WSD デバッグ クライアントの出力例は、Hello メッセージを示しています。 <wsa:Action> 要素は、メッセージを Hello メッセージとして識別します。
UDP message at 05/08/07 10:10:49 from soap.udp://[[::1]:49343]
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="h
ttp://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsd="https://schemas.xmlso
ap.org/ws/2005/04/discovery" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/d
evprof"><soap:Header><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:T
o><wsa:Action>https://schemas.xmlsoap.org/ws/2005/04/discovery/Hello</wsa:Action>
<wsa:MessageID>urn:uuid:8999e29a-b056-4345-9e13-f42dbedab28a</wsa:MessageID><wsd
:AppSequence InstanceId="1" SequenceId="urn:uuid:abb0a2a1-6efc-4242-b8e7-c02484a
6eea2" MessageNumber="1"></wsd:AppSequence></soap:Header><soap:Body><wsd:Hello><
wsa:EndpointReference><wsa:Address>urn:uuid:02a76d74-82d0-43e6-ab09-16f54ab81ac6
</wsa:Address></wsa:EndpointReference><wsd:Types>wsdp:Device</wsd:Types><wsd:Met
adataVersion>1</wsd:MetadataVersion></wsd:Hello></soap:Body></soap:Envelope>
WSD デバッグ クライアントの結果のフィルター処理
WSD デバッグ クライアントの結果をフィルター処理すると、デバイスに関連するインシデント トラフィックを特定するのに役立ちます。 フィルター処理は、ノイズの多いネットワークでのみ行う必要があります。
結果をフィルタリングするには、2 つの方法があります。 フィルター処理する IP アドレスは、WSD デバッグ クライアントの起動時に明示的に識別できます。 または、クライアントの起動後に IP アドレスを指定することもできます。 このセクションでは、両方の方法について説明します。
WSD デバッグ クライアントの起動時にフィルター処理する IP アドレスを指定する方法
- ネットワーク全体で実行されるようにホストとクライアントを構成します (つまり、ホストとクライアントが異なるマシンで確実に動作するようにします)。
- デバイスの IP アドレスを収集します。 デバイスに複数のアドレスがある場合 (たとえば、IPv4 アドレスと IPv6 アドレスの両方がある場合)、すべてのアドレスを収集する必要があります。
- コマンド プロンプトを開き、次のコマンドを実行します。 WSDDebug_client.exe /mode multicast /ip add <device IP>
<device IP> は IP アドレスです。 次の一覧は、この IP アドレスのサンプル形式を示しています。
- 192.168.0.1
- ::1
- mydevice.contoso.com
WSD デバッグ クライアントは、コマンド プロンプトで指定されたホスト名を自動的に解決します。
WSD デバッグ クライアントの起動後に結果をフィルター処理する方法
- ネットワーク全体で実行されるようにホストとクライアントを構成します (つまり、ホストとクライアントが異なるマシンで確実に動作するようにします)。
- デバイスの IP アドレスを収集します。 デバイスに複数のアドレスがある場合 (たとえば、IPv4 アドレスと IPv6 アドレスの両方がある場合)、すべてのアドレスを収集する必要があります。
- コマンド プロンプトを開き、次のコマンドを実行します。 WSDDebug_client.exe /mode multicast
- WSD デバッグ クライアントのコマンド プロンプトで、次のコマンドを実行します。 ip add <device IP>
- すべてのデバイス IP アドレスが追加されるまで、手順 4 を繰り返します。
次の手順では、WSD デバッグ クライアントが開始され、IP アドレスによるフィルター処理が行われていることを前提としています。
正しい IP アドレスがフィルター処理されていることを確認する方法
WSD デバッグ クライアントのコマンド プロンプトで、次のコマンドを実行します。 ip print
フィルター処理されている IP アドレスの一覧が表示されます。
次の手順では、WSD デバッグ クライアントが開始され、IP アドレスによるフィルター処理が行われていることを前提としています。
Iフィルタリングを無効にする方法
WSD デバッグ クライアントのコマンド プロンプトで、次のコマンドを実行します。 ip clear
これで、すべてのマルチキャスト トラフィックがデバッグ出力に表示されます。
関連トピック