johnjiang85
2016-09-06 10:09:08 +08:00
相关协议中有 RTT 延时选择机制及算法,开源的 BIND 和 UNBOUND 也曾经使用过,但是目前这两个开源的更多的是使用随机选择 IP 的方式,而不是根据 RTT 延时机制去较大概率选择质量好的 IP ,较小概率选择质量差的 IP 。质量差的 IP (即使是完全无应答的 IP )也会去选择是因为网络总是在变化的,有可能之前较差的慢慢变好,根据算法会调整每个 IP 的选择到的概率, BIND 和 UNBOUND 中的 RTT 延时算法是按照 RFC 实现的,但是在实际的使用中, DNS 选优效果并不好。 DNSPod 的 119.29.29.29 的后端递归也使用了 RTT 延时机制,基本思想参照 RFC 的思想,但是算法经过了优化,可以测试不同 IP 的质量,并线性调整各 IP 的权重。
第二个问题差不多,会随机去选择一个或多个 NS 的一个或多个 IP 去重试,根据递归的不同,选择也会有所不同,重试时同样会有第一个问题了选择哪个 IP 的问题。