@nichoth yes I am aware of A but the difference between Dijkstra's algorithm and A is that A* needs a heuristic. That makes sense if you are using it to find a shortest path on a ~2D space, because you can use as-the-crow-flys distance as the heuristic. (if I recall, the heuristic may underestimate, but must not over-estimate)... The peers arn't mapped to any kind of flatish space... so I'm not sure what a suitable heuristic for this would be.