关于DNS转发时地址选择算法的问题

本文探讨了BIND DNS在不同版本中的转发地址选择算法,早期版本采用轮流或超时重试策略,后来演进为基于最短响应时间(SRTT)的选择算法。然而,当遇到服务器超时情况时,长时间的重试间隔导致了DNS服务频繁的可用性和不可用性波动。客户案例显示,超时服务器可能需要上百次重试才能重新进入转发队列,严重影响了整体性能。作者指出这个问题,并期待未来的解决方案。
摘要由CSDN通过智能技术生成

    以下是我之前的调查,因为有一段时间了,只有一部分记忆。

    这里说的DNS是伯克利大学的BIND DNS。

    在bind9.3.几之前(忘了哪个版本了,请原谅我没有耐心再去查阅)。对于给定的转发地址列表,DNS的选择是这样的:

        (不好意思,具体的算法我忘了,等我查明白了再修正,但好像是下面这两个中的一个来着。

       假设有两个地址A和B,那么其首先选择对A进行转发,直到A超时或者失败时,转为往B转发,然后B连接失败后,又转发给A,以此类推。

        假设有两个地址A和B,那么其首先选择对A进行转发,下次再往B转发,再下次又转发给A,以此类推。

        )

    这个算法的缺点是很明显的,它不能很好地解决负载平衡的问题,于是,此版本之后,又改为如下的算法:

        每一个转发地址都有一个时间属性srtt, DNS服务器在初期启动时,为每一个转发地址随机生成一个srtt的值,之后的地址选择则是从所有地址中选择srtt值最小的那个进行转发。得到结果后更新该地址的srtt值。而如果超时时,则将srtt的值设定为20000左右的一个值。每一次对当前地址的转发之后,除了计算出当前查询的响应时间付给当前地址之外,对于其他地址持有的srtt,也将会按某一个比例进行缩小(好像是乘以0.98)。

     上面的算法看上去很完美,它不会让查询一直发往一个地址,因为别的地址的srtt会逐渐减小到最小,从而被转发;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值