I have been receiving some questions around PNRP's bandwidth use recently so I thought I would post some info here.
The main question I have been getting is about the nature of the bandwidth use. PNRP is a distributed system, and as such, all nodes shoulder some of the burden for the entire system. When you first start the PNRP stack, it registers a name in the global PNRP cloud to bootstrap you in. From then on, you will have some bandwidth used to support the system.
The majority of PNRPbandwidth is for processing resolution requests. These requests function by an initiating node sending a resolution request to the neighbor it knows that is closest to the target of the resolution in our address space. That hop will pass it on to a closer node and the so on until it reaches the target. These intermediary nodes make up what we called the hop list. The number of hops needed to reach a target is log(n) where n is the number of names registered in the cloud. Given that log(n) nodes are involved in any given resolution, that makes the probability that any given name will be part of the hop chain log(n)/n. If R is the average number of resolves performed by each node and N is the average number of names / node, then the number of resolves that a name participates in should be log(n)*R/N. If you now want to calculate the amount of traffic per node (as opposed to name, which we just calculated), you need to multiple by the number of names published on that node. If you instead consider that number to be the ratio of the number of names you publish to the average (N in the equation above) and call this number Z, we get log(n)*R*Z. This is interesting as this shows that the traffic consumption of a given node is logarithmically related to overall cloud size, linearly proportional to average resolve rate and linearly proportional to the ratio of names you publish relative to the average. That basically means the bandwidth is a function of how much it is used and how much you use it. There are some other bits of traffic in PNRP as well, but they are smaller terms and a little less interesting.
The next question that will probably occurr to you is "Thats a very cute equation, Noah. Now give me a number in bps." Unfortunately, I can't really do that. As you can see from the equation, PNRP's traffic is dependant on a lot of things which are not all predictable. The particularly difficult one to calculate is the number of names registered on a machine. That is a function of how many LH features use PNRP (answer being several), how popular those features are, how many 3rd-party apps depend on PNRP, and how popular those are, and how heavily both those apps and features are used. My guess is that it will be roughly 500 million names in the cloud after a year and probably about 10 names per