topological closeness....

Even if there were workable global routing metrics, this problem _cannot_
be solved inside the confines of DNS, which specifies that there is no
meaning to the order of RR's in a response. So even if a server could put
them in the right order for a given client, that "client" might actually be
a recursive server whose connectivity was different from the end-TCP
client's. The recursive ("caching") server(s) can reorder the RR's and
frequently do (either LIFO or random). The client can reorder the RR's.
It is impermissable to send back a single RR when multiple RRs exist in
the RRset. Setting TTL to 0 to prevent caching is not good enough.

Doing this inside DNS is an idea utterly without merit. To find the "right"
way, start with Keith Moore's SONAR and then make it better in minor ways
and then implement it inside all exit gateways from this day forward.

Picking the closest server is an end-host issue.