递归时怎么选择最优的 NS? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mrzhiin
V2EX    DNS

递归时怎么选择最优的 NS?

  •  1
     
  •   mrzhiin 2016-09-05 23:55:26 +08:00 5425 次点击
    这是一个创建于 3405 天前的主题,其中的信息可能已经有所发展或是发生改变。
    递归时如果得到了多个 NS ,会选择哪一个查询?是随机还是会自动挑选延迟最低的?
    如果每个 NS 绑定了多个 IP ,恰恰选择的 NS 的 ip 挂了,接下来是向这个 NS 的其他 IP 查询,还是向其它 NS ?
    12 条回复    2016-11-07 22:41:29 +08:00
    anjunecha
        1
    anjunecha  
       2016-09-06 00:42:32 +08:00 via iPhone   1
    will randomly select one or multiple NS
    mytsing520
        2
    mytsing520  
    PRO
       2016-09-06 02:07:59 +08:00
    随机
    HIT100
        3
    HIT100  
       2016-09-06 08:20:14 +08:00
    随机,不一定分配延时小的解析节点。
    xcodeghost
        4
    xcodeghost  
       2016-09-06 08:20:41 +08:00
    在进行递归查询时, Local DNS 是如何选择权威 NS 服务器的呢?

    BIND :请求 RTT 时间(从发起查询请求到接收到回应的时间)越小,该权威 NS 被选择的几率越大

    和 RTT 值有关。
    HIT100
        5
    HIT100  
       2016-09-06 08:34:56 +08:00
    lv3ns1.ffdns.net
    lv3ns2.ffdns.net
    lv3ns3.ffdns.net
    lv3ns4.ffdns.net

    就比如 cloudxns 的 4 组 NS 服务器,虽然有海外解析节点,但不一定海外用户解析请求就能分配海外解析节点的。随机的,况且又不是 Anycast
    qcloud
        6
    qcloud  
       2016-09-06 09:14:21 +08:00
    @HIT100 那么问题来了, Anycast 哪家强?
    johnjiang85
        7
    johnjiang85  
       2016-09-06 10:09:08 +08:00   2
    相关协议中有 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 的问题。
    txydhr
        8
    txydhr  
       2016-09-09 20:33:55 +08:00
    我觉得不必太纠结这个,因为 dns 查询稍微超时就立刻换下一个 ip
    loggerhead
        9
    loggerhead  
       2016-11-05 11:36:54 +08:00
    @johnjiang85 正好最近两天在考虑改进 shadowsocks 的客户端,通过一种机制去选择最优的服务器(低延时、低丢包),想到了你说的「根据 RTT 延时机制去较大概率选择质量好的 IP ,较小概率选择质量差的 IP 」。但是你又提到「 BIND 和 UNBOUND 中的 RTT 延时算法是按照 RFC 实现的,但是在实际的使用中, DNS 选优效果并不好。 」。

    有点不明白效果不好的原因是什么?如果我按上面说的方法去改进 shadowsocks 会有用吗?
    johnjiang85
        10
    johnjiang85  
       2016-11-07 20:03:50 +08:00   1
    @loggerhead RFC2988/6298 有相关内容, bind 部分版本是极大概率选择 rtt 最短的 IP , unbound 一搬是在最短 RTT 相差 400ms 以内的都认为是质量较好的 IP ,从而平均选择。这里有篇论文可以参考下,有分析。
    loggerhead
        12
    loggerhead  
       2016-11-07 22:41:29 +08:00
    @johnjiang85 谢谢!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     964 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 18:14 PVG 02:14 LAX 10:14 JFK 13:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86