Check out the new USENIX Web site. next up previous
Next: Proximity, Locality and Availability Up: Implementation Previous: Implementation

Remote Query Initiation & Retries


The initial delay before sending the first remote query is dynamically adjusted based on the recent performance of local nameservers and peer responses. In general, when the local nameserver performs well, we increase the delay so that fewer remote queries are sent. When most remote answers beat the local ones, we reduce the delay preferring the remote source. Specifically, if the past 32 name lookups are all resolved locally without using any remote queries, then the initial delay is set to 200ms by default. We choose 200ms because the median response time on a well-functioning node is less than 100ms [9], so 200ms delay should respond fast during instability, while wasting minimal amount of extra remote queries.

However, to respond quickly to local nameserver failure, if the remote query wins more than 50% of the last 16 requests, then the delay is set to 0 ms. That is, the remote query is sent immediately as the request arrives. Our test results show it is rare not to have failure when more than 8 out of 16 requests take more than 300ms to resolve, so we think it is reasonable to believe the local nameserver is having a problem in that case. Once the immediate query is sent, the delay is set to the average response time of remote query responses plus one standard deviation, to avoid swamping fast remote servers.



next up previous
Next: Proximity, Locality and Availability Up: Implementation Previous: Implementation
KyoungSoo Park 2004-10-02