10.9 优先选择特定网络上的名称服务器
BIND 8的拓扑(topology)功能与sortlist有些相似,不过它仅用于选择名称服务器。(BIND 9直到版仍不支持拓扑功能。)本章前面曾介绍过,BIND会从同一区域的各权威名称服务器中,选择出往返时间(round-trip time,简称RTT)最短的名称服务器。事实上并非如此。BIND 8在比较RTT时,实际上会把远程名称服务器分配到以64毫秒为单位划分的多个时段中。第一时段其实只有32毫秒宽,从0到32毫秒。下一时段从33到96毫秒,依次类推。设计这些时段的目的在于,让位于不同位置的名称服务器总是属于不同的时段。
选择的方法是这样的:优先选择位于较低时段的名称服务器,而位于相同时段的服务器则具有同等优先权。如果一个名称服务器比较两个远程服务器的RTT值,并且其中一个位于较低时段,则该名称服务器会选择向较低时段中的名称服务器发送查询。不过如果两个远程服务器在相同的时段中,则该名称服务器还会检查哪一个远程服务器在拓扑上更近。
所以拓扑给名称服务器的选择过程增加了新的元素。它允许优先选择特定网络上的名称服务器。topology以地址匹配列表作为参数,其中的条目是网络号,并按照本地名称服务器使用的优先级顺序(从高到低)列出。因此:
上面的配置会告诉本地名称服务器优先查询位于15/8的名称服务器,接下来才是位于172.88/16的名称服务器。因此如果本地名称服务器要从位于15/8、172.88/16以及192.168.1/24的名称服务器中选出一个,假定这3个名称服务器的RTT值在同一时段中,那么它会根据topology的配置,选择查询位于15/8的名称服务器。
还可以通过否定topology地址匹配列表中的条目,来避免选择特定网络上的名称服务器。地址匹配列表中的否定条目越早被匹配,则越会避免选择。例如,可以用这个功能避免名称服务器查询网络中特别不可靠的远程名称服务器。