來源:https://blog.apnic.net/2019/09/27/how-to-choose-dns-ttl-values/
對于如何選擇域名的DNS存活時間(TTL)值沒有一致的意見。然而,ttl非常重要,因為它間接控制解析器緩存記錄的時間,直接影響用戶體驗。
我們在SIDN實驗室和USC/ISI進行了一項測量研究,以了解不同的TTL值選擇如何影響操作網(wǎng)絡(luò),目的是幫助運營商為他們的場景做出明智的TTL值選擇。
我們通知了8家TTL值較短的ccTLD運營商,導(dǎo)致烏拉圭的.uy增加了其NS記錄的TTL,從而顯著改善了用戶的延遲。
以下是我們的研究論文的總結(jié)和建議,我們將在即將在阿姆斯特丹舉行的ACM IMC 2019年會議上提交。
一、重點:
DNS TTLs間接控制緩存,從而影響用戶體驗。
8個cctld被告知其NS記錄的TTL值被認(rèn)為太低;三個人增加了。
烏拉圭的.uy通過將其NS TTL從5分鐘更改為1天,將中位延遲從28ms減少到8ms,將第75百分位延遲從183ms減少到21ms,實現(xiàn)了顯著的性能提升。真正使用.uy的用戶可以獲得類似的性能收益,其他兩個cctl也是如此。
在權(quán)威服務(wù)器端使用帶有短TTL的anycast不能獲得與長TTL相同的收益。
二、新域名,什么TTL?
假設(shè)你要為自己或雇主注冊一個新域名。必須為其關(guān)聯(lián)的記錄選擇生存時間(time-to-live, TTL)值。例如,下面的圖1顯示了我們用來管理域cachetest.net記錄的實際注冊商的儀表板。觀察設(shè)置為1小時(荷蘭語為1 Uur)和1天(荷蘭語為1 Dag)的TTL值。
DNS TTL的值可能從0秒到248555天不等(2^31 -1秒)。給定如此大范圍的可能值,很難知道應(yīng)該選擇什么值。由于跨分布式DNS服務(wù)的交互,準(zhǔn)確理解TTL值選擇如何影響操作網(wǎng)絡(luò)是一項挑戰(zhàn)。
三、DNS TTLs實際用于什么?
TTLs間接控制解析器緩存。緩存反過來是DNS性能的基石:一個15ms的答案是快的,但是一個1ms的緩存答案要快得多。
要解析域名,用戶通常連接到DNS解析器(如下面的圖2所示)。然后,解析器將用戶的查詢轉(zhuǎn)發(fā)到DNS權(quán)威服務(wù)器,然后,DNS權(quán)威服務(wù)器將相應(yīng)的TTL值(圖中為1h)發(fā)送回查詢響應(yīng)。這意味著解析器可以緩存檢索到的答案長達1小時。
然后,當(dāng)其他用戶在一個小時的窗口內(nèi)詢問相同的查詢時(如藍色和綠色箭頭所示),而不必再次查詢權(quán)威服務(wù)器,查詢可以通過直接引用DNS解析器的緩存來回答,這通常要快得多。
在這個意義上,緩存可以被看作是解析器端臨時復(fù)制的一種形式(我們在以前的研究中已經(jīng)展示了,當(dāng)權(quán)威服務(wù)器受到DDoS攻擊時,緩存如何保護用戶)。
如果沒有共識,在野外使用什么價值觀?
即使對于什么是最好的TTL值沒有共識,人們在配置他們的域名時也必須設(shè)置它們。
為了了解在野外通常使用什么值,我們抓取了5個數(shù)據(jù)源:
(1)一個國家代碼頂級域名(荷蘭nl),擁有580萬個域名
(2)前三名(Alexa、Majestic和Umbrella)
(3)根DNS區(qū)域
對于每個域,我們要求從子權(quán)威服務(wù)器獲取NS、A、AAAA、MX、DNSKEY記錄。
圖3顯示了有關(guān)域的NS和A記錄的結(jié)果(其他記錄可以在我們的研究論文中找到)。我們可以看到:
TTLs顯示了所有列表和記錄類型的值的巨大變化,從1分鐘到48小時不等。
根區(qū)域中的頂級域(圖1中的根)比頂級列表(Alexa、Majestic、Umbrella)保守得多:對于NS和A的大多數(shù)ttl至少24小時(請記住,這些是子委托ttl)。
對于所有列表,NS記錄的ttl往往比A記錄的ttl長,但是,對于多長還是短,仍然沒有一致的意見。
Umbrella包含許多完全合格的域名,比如CDNs使用的域名,包括wp-0f21050000000000.id.cdn.upcbroadband.com。這是我們在Umbrella上看到的記錄TTL低于其他列表的原因之一,其他列表包含二級域(如examplenl和examplecouk): CDNs以使用短TTL值而聞名,這在一定程度上是為了負(fù)載平衡。
三、烏拉圭的.uy延時因TTL變長而增加
在對根區(qū)域(頂級域)進行爬行時,我們發(fā)現(xiàn)34個頂級域(頂級域)的NS記錄TTL值小于30分鐘—這與其他頂級域相比非常短。我們聯(lián)系了34個國家代碼中的8個,并將我們的觀察結(jié)果通知了他們。我們收到了5個人的回復(fù);在我們第一次接觸后,3個增加了他們NS記錄的TTLs。這些包括:
烏拉圭的.uy NS記錄由300s NS TTL更改為86400(1天)
非洲ccTLD和中東ccTLD的NS TTLs也從480和30秒增加到86400秒。
在TTL改變之前,我們偶然在.uy ccTLD上進行了DNS測量:使用10,000個成熟的Atlas探針請求NS和A記錄。我們在更改之后重復(fù)測量,以查看這如何影響用戶的體驗(圖4顯示了結(jié)果)。
圖4顯示,中位延遲從28ms減少到8ms,第75百分位延遲從183ms減少到21ms——只需要改變一個參數(shù)。換句話說,.uy的中值用戶注意到響應(yīng)時間的變化是20ms,這僅僅是TTL變化的結(jié)果。而第75百分位的用戶將體驗到超過160ms的改進。
我們的結(jié)果還顯示了根據(jù)地理區(qū)域在Atlas探測有利位置所經(jīng)歷的延遲增益:所有區(qū)域都經(jīng)歷了性能增益。需要注意的是,這些顯著的性能改進只需要更改一個參數(shù),而根本不需要更改.uy基礎(chǔ)結(jié)構(gòu)。
這可不是件小事:DNS運營商一直在努力改善延遲。為了提高性能,還經(jīng)常使用IP anycast將更權(quán)威的服務(wù)器放置在解析器附近。但是,正如我們在論文(第6.2節(jié))中所展示的,使用更長的TTLs進行緩存甚至比使用更短的TTLs進行任何類型的轉(zhuǎn)換都要快。
四、選擇長或短ttl的理由
網(wǎng)絡(luò)運營商選擇長TTLs或短TTLs的原因有很多:
更長的緩存會導(dǎo)致更快的響應(yīng):更長的TTL支持更長時間的緩存,并且緩存命中要比從權(quán)威服務(wù)器檢索答案快得多,正如.uy的經(jīng)驗所示。我們設(shè)計了幾個實驗來研究這一點,在我們的論文中有描述。結(jié)果表明,較長的緩存比大型的anycast網(wǎng)絡(luò)更能提高結(jié)果。
較長的緩存會降低DNS流量:權(quán)威操作人員可能對設(shè)置較高的TTLs感興趣,因為緩存減少了他們接收的查詢數(shù)量。如果要測量DNS服務(wù),這一點尤其重要。
更長的緩存對權(quán)威DNS服務(wù)器上的DDoS攻擊更健壯:對DNS服務(wù)提供商的DDoS攻擊已經(jīng)損害了幾個著名的網(wǎng)站。最近的研究表明,如果緩存的時間比攻擊的時間長,那么DNS緩存可以極大地減少DDoS對DNS的影響。
較短的緩存有助于操作更改:從舊服務(wù)器轉(zhuǎn)換到新服務(wù)器的簡單方法是更改DNS記錄。由于沒有刪除緩存的DNS記錄的方法,TTL持續(xù)時間表示完全遷移到新服務(wù)器所需的轉(zhuǎn)換延遲。因此,低TTLs允許更快速的轉(zhuǎn)變。但是,如果部署計劃比TTL的長度更早,TTL可以在重大操作更改之前降低,而在更改生效后再次升高。
更短的緩存有助于對DDoS攻擊作出基于dna的響應(yīng):一些DDoS清除服務(wù)在攻擊期間使用DNS重定向流量。由于DDoS攻擊的到來是不事先通知的,基于DDoS的流量重定向要求TTL一直保持在較低的水平,以準(zhǔn)備應(yīng)對潛在的攻擊。
更短的緩存有助于基于DNS的負(fù)載平衡:許多大型服務(wù)使用基于DNS的負(fù)載平衡。每個傳入的DNS請求都提供了一個調(diào)整負(fù)載的機會,因此短的TTLs可能適合于對流量動態(tài)的快速響應(yīng)(盡管許多遞歸解析器具有幾十秒的最低緩存時間,這限制了靈活性)。
五、建議
雖然我們的分析并沒有提出一個理想的TTL值,但它確實闡明了權(quán)衡,使我們能夠針對不同的情況提出以下建議:
TTL持續(xù)時間:TTL值的選擇部分取決于外部因素,因此沒有一種推薦適合所有網(wǎng)絡(luò)或網(wǎng)絡(luò)類型。
對于一般的區(qū)域所有者:我們建議較長的ttl,至少1小時,最好是4、8或24小時。假設(shè)計劃維護可以提前安排,長ttl的成本很小。
對于TLD和其他注冊操作符:允許域的公共注冊的DNS操作符(如大多數(shù)ccTLDs、.com、.net、.org和許多slds)允許客戶端在其區(qū)域文件中為客戶端NS記錄復(fù)制ttl(如果在bailiwick中,則是glue)。在我們論文的3.3節(jié)中,我們展示了大多數(shù)解析器使用來自子委托的TTL值,一些使用父委托的TTL值。因此,我們建議對父級和子級NS記錄使用更長的TTLs(至少一小時,最好更長)。
基于DNS 的負(fù)載平衡或ddos預(yù)防的用戶可能需要較短的TTLs: TTLs可能短至5分鐘,盡管15分鐘可能為許多操作人員提供足夠的靈活性。較短的ttl有助于敏捷性;他們是一個例外,我們的第一個建議更長的TTLs。