PNRP name resolution protocol uses this two steps:
- Endpoint determination – In this step the peer is determining the IPv6 address of the computer network card on which the PNRP ID service is published.
- PNRP ID resolution – After locating and testing the reachability of the peer with the PNRP ID with desired PNRP service, the requesting computer sends a PNRP Request message to that peer for the PNRP ID of the desired service. Other side is sending a reply in which it confirms the PNRP ID of the requested service. It also sends a comment, and up to 4 kilobytes of additional information in that reply. Using the comment and additional 4 kilobytes there can be some custom information sent back to the requestor about the status of server or computer services.
In the process of discovering needed neighbor, PNRP is making an iterative process in which it locates all nodes that have published their PNRP ID. The node performing the resolution is in charge of communicating with the nodes that are closer to the target PNRP ID.
Peer is firstly examining all entries in its own cache. If an entry that matches the target PNRP ID is found, it sends a PNRP Request message to the peer and waits for a response. In this way it can be sure that the node is available and not cached but unavailable. On other side, if an entry for the PNRP ID is not found, the peer sends a PNRP Request message to the peer with a PNRP ID that most closely matches the PNRP ID of the target node.
The node that receives the PNRP Request looks at its own cache and then:
- If the PNRP ID is found, it sends positive reply with the answer.
- If the PNRP ID is not found and there is no PNRP ID in its cache that is closer to the target PNRP ID, the requested peer sends back a response that he is not a peer that can help him. The requesting peer then chooses the next-closest PNRP ID.
- If the PNRP ID is not found and a PNRP ID in the cache is closer to the target PNRP ID, the peer sends an answer with the IPv6 address of the peer that corresponds to PNRP ID that most closely matches the target PNRP ID. Using IPv6 address received in first step the requestor will now ask this next peer with that IP address if he knows where the node with specified PNRP ID is.
Peer who is requesting name resolution in this iterative process eventually locates the node that has the searched PNRP ID registered.
There is an example of simple PNRP ID searching process. For example, PC1 has entries for PNRP ID (200) and the PNRP ID with 450 and 500. In the picture below every blue arrow from one PC to other PC symbolizes that the PC from which the arrow starts has an entry in its cache for the node to which the arrow is going.
When PC1 wants to fide a PC on which the process PNRP ID is 800, this is taking place:
- Because 500 is closer to 800 than other values here, PC1 sends PNRP Request message to PC3
- PC3 does not have an entry for the PNRP ID value of 800 and does not even have entries close to 800. PC3 sends back to PC1 a negative response. I can help you, more or less.
- 450 is the next close PNRP ID value to 800, PC1 continues with sending request to PC2.
- PC2 knows about PNRP ID of 800 in its cache. He can respond to PC2 with IPv6 address of PC5.
- PC1 then sends a PNRP Request to PC5.
- PC5 responds with an positive response, and sends name resolution response to PC1.