ピア名の公開と解決

ピア名の公開

新しい PNRP ID を発行するために、ピアは次の処理を実行します。

  • PNRP 発行メッセージをその近くのキャッシュ (キャッシュの最下位レベル内に PNRP ID が登録されているピア) に送信してキャッシュをシードします。

  • クラウド内で近くのノード以外の任意のノードを選択し、その P2P ID の PNRP 名前解決要求をそれらのノードに送信します。 その結果、エンドポイント調査プロセスによって、発行側ピアの PNRP ID が格納されている、クラウド内の任意のノードのキャッシュがシードされます。

PNRP バージョン 2 ノードは、他の P2P ID だけを解決している場合、PNRP ID を発行しません。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PeerNet\PNRP\IPV6-Global\SearchOnly のレジストリ値を 1 (REG_DWORD 型) に指定すると、ピアは名前解決にだけ PNRP を使用し、名前発行には使用しません。 このレジストリ値は、グループ ポリシーを使用して構成することもできます。

ピア名の解決

PNRP ネットワークまたはクラウドで他のピアを検索するプロセスは、2 つのフェーズで構成されます。

  1. エンドポイント調査

  2. PNRP ID 解決

エンドポイント調査フェーズでは、別のコンピューター上のサービスの PNRP ID を解決しようとするピアは、そのリモート ピアの IPv6 アドレスを確認します。 リモート ピアは、コンピューターやサービスの PNRP ID を公開したピア、またはその ID に関連付けられているピアです。

リモート エンドポイントが PNRP クラウドに登録されていることを確認した後、PNRP ID 解決フェーズの要求側ピアは、そのピア エンドポイントに要求を送信して、目的のサービスの PNRP ID を調べます。 エンドポイントは、サービスの PNRP ID を確認する応答、コメント、および要求側ピアがその後の通信に使用できる最大 4 KB の追加情報を送信します。 たとえば、目的のエンドポイントがゲーム サーバーの場合、追加のピア名レコード データには、ゲーム、プレー レベル、現在のプレーヤー人数などの情報を含めることができます。

エンドポイントを決定するフェーズでは、PNRP は反復プロセスを使用して、PNRP ID を発行したノードを探索します。その場合、解決を実行するノードが、ターゲット PNRP ID に近い方のノードに接続します。

PNRP で名前解決を実行するために、ピアは、キャッシュ内のエントリを調べてターゲット PNRP ID と一致するエントリを探します。 見つかった場合、ピアは PNRP 要求メッセージを要求側ピアに送信して応答を待ちます。 PNRP ID のエントリが見つからない場合、ピアは、PNRP 要求メッセージを、ターゲット PNRP ID と最も近い PNRP ID を持つエントリに対応するピアに送信します。 PNRP 要求メッセージを受信したノードは、キャッシュを調べて以下の処理を実行します。

  • PNRP ID が見つかると、要求されたエンドポイントは要求側ピアに直接応答します。

  • PNRP ID が見つからず、ターゲット PNRP ID に近い PNRP ID がキャッシュ内にあった場合、要求された側のピアは、ターゲット PNRP ID により近い PNRP ID を持つエントリを表すピアの IPv6 アドレスを示した応答を要求側ピアに送信します。 要求側ノードは、応答に示された IP アドレスを使用して、応答するかキャッシュを調べるために別の PNRP 要求メッセージを IPv6 アドレスに送信します。

  • PNRP ID が見つからず、ターゲット PNRP ID に近い PNRP ID がキャッシュにもなかった場合、要求された側のピアは、この状態を示す応答を要求側ピアに送信します。 その後、要求側ピアは 2 番目に近い PNRP ID を選択します。

要求側ピアは連続反復手法でこのプロセスを続行し、最終的に、PNRP ID が登録されているノードを割り出します。

System.Net.PeerToPeer 名前空間内では、PeerName レコード (エンドポイントと、エンドポイントが通信する RNRP クラウドまたはメッシュ) の間に多対多の関係が存在します。 重複しているか古くなったエントリ、または同じピア名を持つ複数のノードがある場合、PNRP ノードは PeerNameResolver クラスを使用して最新の情報を取得できます。 PeerNameResolver のメソッドは、1 つのピア名を使用して、1 つのピア対多数のピア名レコードおよび同じ 1 つのピア対多数のクラウドにパースペクティブを簡素化します。 これは、リレーショナル テーブル結合を使用して実行されるクエリに似ています。 正常に完了した場合、リゾルバー オブジェクトは指定されたピア名の PeerNameRecordCollection を返します。 たとえば、クラウドによって順序付けられたとおりに、コレクション内のすべてのピア名レコードのピア名が表示されます。 これらは、サポートしているデータが PNRP ベースのアプリケーションによって要求されるピア名のインスタンスです。

関連項目