Note that the documentation is wrong in this case - or at least misleading. The discovery server does get the IP and port of the tunnel hub managing the tunnel to the client hub but that tunnel hub is there to take this traffic directed at the local IP and port and to put it on the tunnel and forward it on to the client hub. That is one of the core functions of the hub probe.
Where you will run into problems with this scenario is with how the network of hubs figures out how to get a message to an arbitrary hub.
You will notice that UIM has no real concept of static routing and DNS. It has some features that address small aspects of this, static name list or NAT, but nothing that addresses it network wide.
The current approach is that each hub, when it learns something new, sends it's current block of knowledge about the hub network to every system it knows about. And every hub is doing this all the time.
Couple that with the extremely unreliable traversal of multiple hubs and you create a possibility for inaccuracies.
Consider what happens if ProxyHub2 is down for a period of time. HubA continues to know about HubB, Proxy1 and Primary but sees HubC and HubD as down because they are not reachable. Proxy2 is also seen as down. Similarly HubC and HubD see everything as down except themselves.
When Proxy2 comes back on line, it immediately learns about HubC when it connects its tunnel and so it sends Proxy2 and HubC out as being up. Since Proxy2 only knows about HubC, that's where it sends it's info. HubC ignores that packet of data because it matches it's version of reality.
Now along with this Proxy2 is broadcasting this information via UDP and so Primary and Proxy1 might learn about Proxy2 being live before Proxy2 can send it's packet of information containing the correct status of HubC.
So, presume that Primary gets the message that Proxy2 is up before the tunnel from HubC starts. Primary now learns that Proxy2 is up and that's new information so Primary starts sending it's package of hub information that includes HubC being down. It sends to Proxy1 and to HubA and to HubB. In the meantime HubC gets it's tunnel going and Proxy2 sends it's packet of information out including HubC being up. Problem is that Primary could now, at this instant of time send to Proxy2 it's packet of information that includes information that HubC is down. Because this is new information, Proxy2 marks HubC as being down and it then sends out this information to every hub it knows about.
But, HUB C is up........
And there's an insidious defect here in the hub because if you time things just right, HubC will remove itself from the list of hubs that are up. Now, HubC can't resolve itself locally either.....