文/章思宇 封寒松 黃保青
大型互聯(lián)網(wǎng)網(wǎng)站和服務(wù)采用CDN使用戶就近訪問(wèn)資源以提高訪問(wèn)速度。CDN在各地區(qū)、各運(yùn)營(yíng)商部署的節(jié)點(diǎn),大多通過(guò)DNS進(jìn)行流量調(diào)度。權(quán)威DNS服務(wù)器的分離解析(Split DNS)技術(shù)根據(jù)不同來(lái)源IP地址對(duì)同一域名返回不同的解析結(jié)果,實(shí)現(xiàn)了差異化的流量調(diào)度。當(dāng)用戶使用運(yùn)營(yíng)商提供的本地遞歸DNS服務(wù)器時(shí),該方法能較好地將用戶引導(dǎo)到最優(yōu)的CDN節(jié)點(diǎn),因?yàn)闄?quán)威DNS服務(wù)器看到的查詢?cè)碔P即遞歸服務(wù)器IP與用戶處于同一地區(qū)和運(yùn)營(yíng)商。
然而,隨著公共DNS服務(wù)的流行(如OpenDNS、Google Public DNS、114DNS等),遞歸服務(wù)器的IP地址已無(wú)法代表用戶所在的地區(qū)和運(yùn)營(yíng)商。即使公共DNS服務(wù)采用了Anycast部署,其節(jié)點(diǎn)分布仍存在很大局限性,尤其是國(guó)外的OpenDNS和Google公共DNS目前在中國(guó)大陸尚無(wú)節(jié)點(diǎn)。
為了給使用公共DNS服務(wù)的用戶提供更準(zhǔn)確的CDN域名引導(dǎo),EDNS Client Subnet(ECS)擴(kuò)展允許遞歸DNS服務(wù)器將用戶IP子網(wǎng)信息包含在DNS查詢請(qǐng)求中,以幫助權(quán)威服務(wù)器識(shí)別用戶位置和運(yùn)營(yíng)商,返回最優(yōu)的解析結(jié)果。ECS的工作機(jī)制在RFC 7871中定義,目前被Google、OpenDNS和騰訊DNSPod等公共DNS服務(wù)所支持。
ISC BIND作為最流行的開源DNS服務(wù)器軟件,從2016年的9.11版本開始試驗(yàn)性地支持權(quán)威服務(wù)器的ECS功能;但由于GeoIP支持的局限性使其實(shí)現(xiàn)難以符合RFC規(guī)范,且配置效率低下,該功能在2018年9.13.1版本中被移除。目前支持ECS的權(quán)威DNS服務(wù)器軟件有g(shù)dnsd和PowerDNS。
上海交通大學(xué)的郵件系統(tǒng)、入校VPN和開源軟件FTP 鏡像等訪問(wèn)量較大的服務(wù)配置有多個(gè)運(yùn)營(yíng)商的服務(wù)地址。服務(wù)地址的選擇過(guò)去采用ISC BIND的視圖(View)功能實(shí)現(xiàn)DNS分離解析,始終存在對(duì)公共DNS用戶的錯(cuò)誤引導(dǎo)問(wèn)題,尤其是將眾多使用Google等國(guó)外公共DNS的國(guó)內(nèi)用戶,引導(dǎo)到郵件系統(tǒng)的海外鏡像節(jié)點(diǎn),造成訪問(wèn)速度顯著下降。為了解決該問(wèn)題,學(xué)校權(quán)威域名服務(wù)引入支持ECS的方案來(lái)替代ISC BIND的視圖功能。
新方案采用gdnsd軟件,建立支持ECS的CNAME跳轉(zhuǎn)專用子域ecslb.sjtu.edu.cn,對(duì)需要分離解析的如vpn.sjtu.edu.cn域名,首先CNAME指向由gdnsd提供服務(wù)vpn.ecslb.sjtu.edu.cn,再依據(jù)ECS或遞歸IP提供不同的解析結(jié)果,如圖1所示。sjtu.edu.cn域仍由原先的ISC BIND服務(wù)器解析,且不再需要視圖配置。
圖1 權(quán)威解析ECS配置示意
gdnsd的GeoIP插件用于支持GSLB(全局負(fù)載均衡),但利用默認(rèn)的MaxMind GeoIP數(shù)據(jù)庫(kù)不能實(shí)現(xiàn)國(guó)內(nèi)幾大運(yùn)營(yíng)商的區(qū)分(gdnsd尚不支持GeoIP ASN數(shù)據(jù)庫(kù)),因此我們使用Clang.CN提供的國(guó)內(nèi)運(yùn)營(yíng)商IPv4和IPv6地址段在gdnsd配置文件中定義“nets”實(shí)現(xiàn)自定義的IP段到“數(shù)據(jù)中心”的映射。
為了驗(yàn)證ECS權(quán)威解析的效果,從202.120.2.x的教育網(wǎng)地址發(fā)起對(duì)vpn.sjtu.edu.cn的DNS請(qǐng)求,同時(shí)利用gdnsd的Reflect插件配置whoami子域名返回遞歸服務(wù)器地址和ECS地址。對(duì)于不支持ECS的百度公共DNS(180.76.76.76),其遞歸地址111.1.52.5(圖2-a)屬于浙江省移動(dòng),因此解析的“cm.vpn”移動(dòng)地址(圖2-b),對(duì)教育網(wǎng)用戶不是最優(yōu)。支持ECS的騰訊DNSPod(119.29.29.29),盡管其遞歸來(lái)源183.57.53.63(圖2-c)屬于廣東省電信,但根據(jù)其提供的ECS地址202.120.2.1仍可將用戶引導(dǎo)到最優(yōu)的教育網(wǎng)入口(圖2-d)。
圖2 vpn.sjtu.edu.cn解析結(jié)果對(duì)比
Jia ZHANG等人2017年對(duì)Alexa排名前1萬(wàn)的網(wǎng)站域名進(jìn)行了探測(cè),結(jié)果顯示在過(guò)去5年間CDN的使用率沒(méi)有明顯增長(zhǎng),但權(quán)威服務(wù)器支持ECS的比例有了顯著提升,排名前100的網(wǎng)站有超過(guò)50%支持ECS。過(guò)去的研究更多地關(guān)注CDN或網(wǎng)站側(cè)支持ECS的情況,而學(xué)校權(quán)威域名服務(wù)啟用ECS的效益取決于使用公共DNS服務(wù)的用戶規(guī)模和公共DNS對(duì)ECS的支持情況。
通過(guò)對(duì)校園網(wǎng)DNS服務(wù)器和校園網(wǎng)出口DNS流量持續(xù)一個(gè)月的分析,9.38萬(wàn)個(gè)校園網(wǎng)用戶中有1.87萬(wàn)使用校外公共DNS服務(wù)(按獨(dú)立IP統(tǒng)計(jì)),占比達(dá)20%。各公共DNS的用戶數(shù)統(tǒng)計(jì)見表1,Google和騰訊DNSPod默認(rèn)支持ECS,OpenDNS申請(qǐng)后也對(duì)我校域名啟用ECS,三者合并用戶數(shù)8922個(gè),由此計(jì)算學(xué)校權(quán)威域名服務(wù)支持ECS后可使9.5%的校園網(wǎng)內(nèi)用戶受益。
圖3顯示了兩臺(tái)gdnsd權(quán)威服務(wù)器一個(gè)月內(nèi)每小時(shí)的請(qǐng)求數(shù),兩臺(tái)合計(jì)處理平均每秒204.5個(gè)請(qǐng)求,其中支持ECS的請(qǐng)求占25.1%。
圖3 gdnsd服務(wù)器請(qǐng)求量
表1 校園網(wǎng)用戶DNS服務(wù)選擇
表2 ECS請(qǐng)求源地址分布統(tǒng)計(jì)
全月處理的1.24億個(gè)ECS查詢請(qǐng)求,來(lái)自總共2038個(gè)IP地址,分屬51個(gè)不同的自治系統(tǒng),統(tǒng)計(jì)如表2。其中來(lái)自Google和OpenDNS的請(qǐng)求最多,分別占總ECS請(qǐng)求數(shù)的73.50%和20.19%。支持ECS的請(qǐng)求中,來(lái)自中國(guó)大陸地區(qū)的僅占5.31%。ECS查詢攜帶的用戶地址信息,99.41%為IPv4地址,IPv6僅占0.59%。
使用支持ECS的權(quán)威服務(wù)器(如gdnsd等)替代傳統(tǒng)的ISC BIND視圖配置,可有效解決校園網(wǎng)用戶及國(guó)內(nèi)用戶使用Google、OpenDNS等公共DNS服務(wù)時(shí)的分區(qū)域、分運(yùn)營(yíng)商解析問(wèn)題。流量分析結(jié)果顯示,上海交通大學(xué)校園網(wǎng)內(nèi)有9.5%的用戶使用支持ECS的公共DNS服務(wù),該改進(jìn)可使8922位校園網(wǎng)用戶受益。與此同時(shí),gdnsd權(quán)威服務(wù)器上線后,處理的校外遞歸DNS服務(wù)器請(qǐng)求中,有25.1%的查詢請(qǐng)求支持ECS,因此該方案的部署具有顯著的意義。