WSD デバッグ クライアントを使用したマルチキャスト トラフィックの検証

汎用ホストとクライアントがネットワーク上で相互に表示できるが、実際のホストとクライアントが見ることができない場合は、ネットワーク経由でエンドポイント間で送信されるメッセージに問題がある可能性があります。 汎用ホストとクライアントの詳細については、「 汎用ホストとクライアントを使用した UDP WS-Discovery」を参照してください。 完全なネットワーク トレースは収集、フィルター処理、読み取りが困難な場合があるため、WSD デバッグ クライアント ツールを使用して、WS-Discovery メッセージのマルチキャスト側を印刷できます。

マルチキャスト モードの WSD デバッグ クライアントは、ユニキャスト メッセージを出力できないため、メッセージの半分しか検査できません。 ユニキャスト トラフィックが関心がある場合は、 UDP WS-Discovery のネットワーク トレースの検査に直接スキップします。

この手順では、ネットワーク上のすべてのマルチキャスト トラフィックを表示する方法を示します。 デバイスとの間のマルチキャスト トラフィックのみを表示するには、後述の 「WSD デバッグ クライアント結果のフィルター処理 」セクションを参照してください。

WSD デバッグ クライアントを使用してマルチキャスト トラフィックを確認するには

  1. ネットワーク経由で実行するようにホストとクライアントを構成します (つまり、ホストとクライアントが異なるマシンで動作することを確認します)。
  2. コマンド プロンプトを開き、次のコマンドを実行します: /mode マルチキャストWSDDebug_client.exe
  3. ホストとクライアントを起動するか、ネットワーク エクスプローラーで F5 キーを押して、エラーを再現します。
  4. メッセージがマルチキャストされていることを確認します。

WSD デバッグ クライアント出力に必要なメッセージが表示される場合、アプリケーションエラーはマルチキャスト メッセージの内容、または対応するユニキャスト応答メッセージの存在またはコンテンツにある可能性があります。 UDP WS-Discovery のネットワーク トレースの検査に関するページの手順に従って、トラブルシューティングを続行します。

WSD Debug Client 出力に必要なメッセージが表示される場合は、アプリケーションの問題の原因が特定されている可能性があります。 マルチキャスト トラフィックがネットワーク上で送信されていない可能性があります。 このエラーは、アプリケーションがマルチキャスト アダプターを正しく列挙しない場合に発生する可能性があります。 アプリケーションは、すべてのネットワーク インターフェイス経由でマルチキャスト トラフィックを明示的に送信する必要があります。それ以外の場合は、ループバック インターフェイスまたは他のインターフェイスに対してパケットを生成できません。 パケットがネットワーク上に表示されていないことを確認するには、「 UDP WS-Discovery のネットワーク トレースの検査」 の手順に従って、マルチキャスト メッセージが見つからない証拠を探します。

メッセージがマルチキャストされていることを確認する

プローブ メッセージがマルチキャストされていることを常に確認してください。 必要に応じて、 Hello メッセージと Resolve メッセージがマルチキャストされていることを確認します。 すべてのアプリケーションで Resolve メッセージが使用されるわけではないことに注意してください。 クライアントとホストで使用されるメッセージ パターンの詳細については、「探索とメタデータの Exchange メッセージ パターンWSDAPI トラブルシューティングを使用したはじめに」を参照してください。

上記の手順 3 で説明したように、メッセージを送信するには、メッセージをトリガーする必要があります。 WSD デバッグ クライアントは、生の SOAP メッセージを出力として表示します。 WSD Debug Client によってマルチキャスト モードで出力されるすべてのメッセージはマルチキャスト ソケット経由で受信されるため、メッセージの宛先アドレスは表示されません。

次のサンプル WSD デバッグ クライアントの出力は、プローブ メッセージを示しています。 wsa:Action> 要素は<、メッセージをプローブ メッセージとして識別します。 <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 アドレスを指定するには

  1. ネットワーク経由で実行するようにホストとクライアントを構成します (つまり、ホストとクライアントが異なるマシンで動作することを確認します)。
  2. デバイスの IP アドレスを収集します。 デバイスに複数のアドレスがある場合 (たとえば、IPv4 アドレスと IPv6 アドレスの両方がある場合)、すべてのアドレスを収集する必要があります。
  3. コマンド プロンプトを開き、次のコマンドを実行します: WSDDebug_client.exe /mode multicast /ip<add device IP>

<デバイス IP> は IP アドレスです。 次の一覧は、この IP アドレスのサンプル形式を示しています。

  • 192.168.0.1
  • ::1
  • mydevice.contoso.com

WSD デバッグ クライアントは、コマンド プロンプトで指定されたホスト名を自動的に解決します。

WSD デバッグ クライアントの起動後に結果をフィルター処理するには

  1. ネットワーク経由で実行するようにホストとクライアントを構成します (つまり、ホストとクライアントが異なるマシンで動作することを確認します)。
  2. デバイスの IP アドレスを収集します。 デバイスに複数のアドレスがある場合 (たとえば、IPv4 アドレスと IPv6 アドレスの両方がある場合)、すべてのアドレスを収集する必要があります。
  3. コマンド プロンプトを開き、次のコマンドを実行します: /mode マルチキャストWSDDebug_client.exe
  4. WSD Debug Client コマンド プロンプトで、次のコマンドを実行します。 ip add<device IP>
  5. すべてのデバイス IP アドレスが追加されるまで、手順 4 を繰り返します。

次の手順では、WSD デバッグ クライアントが開始され、IP アドレスによるフィルター処理が行われていることを前提としています。

正しい IP アドレスがフィルター処理されていることを確認するには

  • WSD Debug Client コマンド プロンプトで、次のコマンドを実行します: ip print

    フィルター処理されている IP アドレスの一覧が表示されます。

次の手順では、WSD デバッグ クライアントが開始され、IP アドレスによるフィルター処理が行われていることを前提としています。

フィルター処理を無効にするには

  • WSD Debug Client コマンド プロンプトで、次のコマンドを実行します: ip clear

    これで、すべてのマルチキャスト トラフィックがデバッグ出力に表示されるようになります。

WSDAPI 診断手順

WSDAPI のトラブルシューティングを使用したはじめに