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.