I've been thinking about why the DNS tests have uneven failures and came up with a conjecture. Since DNS queries and replies use UDP, delivery is inherently unreliable. What if when many queries are sent out at once there is a chance of too many responses appearing at once and some get lost? Perhaps my satellite connection makes it worse because the high latency and burstiness causes packets to queue up and then try to arrive all at once.
If this is the case, maybe we could configure a maximum number of packets to send in the background (bgsend) and put the rest of the query packets in a pending send queue. When a reply packet is received and removed from the pending reply queue, we could take another packet off of the pending send queue and bgsend it. That way we keep things going in the background to the maximum extent that still allows it all to work. What do you think of this? -- sidney
