新聞中心

當前位置: 首頁 > 新聞中心 > 新聞中心
敬畏技術、擁抱變化,泰策淺析基于IPv6的DNS技術
發表時間:2018-09-29     瀏覽次數:1200     來源:

        IPv4是第一個被廣泛使用,構成現今互聯網技術的基礎的協議,自1981年被定義以來,作為IP的代名詞,已在IP領域稱霸30多年。但隨著Internet的呈指數級的飛速發展,導致IPv4地址空間面臨枯竭的?;?、路由表膨脹、服務質量難以保證等一系列自身無法解決的問題,IPv6在1998年應運而生。IPv6能夠提供充足的網絡地址和廣闊的創新空間,是全球公認的下一代互聯網商業應用解決方案,IPv6取代IPv4成為下一代互聯網的核心是互聯網演進升級的必然趨勢。
 
        我國是世界上較早開展IPv6實驗和應用的國家,在技術研發、網絡建設、應用創新等方面都取得了重要階段性成果,已具備大規模部署的基礎和條件。但由于基于IPv4的互聯網生態已經發展成熟,想要完成改造,涉及環節眾多,大規模IPv6部署并非易事,需要耗費大量人力物力以及全產業參與者的支持和配合。
 
        2018年11月兩辦印發的《推進互聯網協議第六版(IPv6)規模部署行動計劃》使得IPv6真正開始落地執行,計劃要用5到10年時間,形成下一代互聯網自主技術體系和產業生態,建成全球最大規模的IPv6商業應用網絡,實現下一代互聯網在經濟社會各領域深度融合應用,成為全球下一代互聯網發展的重要主導力量。
 
        《推進互聯網協議第六版(IPv6)規模部署行動計劃》也明確指出對域名系統的而升級改造。加快互聯網域名系統(DNS)的全面改造,構建域名注冊、解析、管理全鏈條IPv6支持能力,開展面向IPv6的新型根域名服務體系的創新與實驗。
 
        域名系統(Domain Name System,簡稱:DNS)DNS作為IP地址和域名的轉換系統,在互聯網中有著舉足輕重的地位,可以說是互聯網的基石。幾乎所有的互聯網應用都需要DNS, DNS的重要性是不言而喻的。IPv6網絡中的DNS作為Internet基石的地位更加鞏固,128位的IPv6地址根本不適應人們的使用,人們將更加依附DNS。
 
        IPv6網絡中的DNS與IPv4的DNS在體系結構上是一致的,都是采用樹型結構的域名空間。雖然IPv4協議與IPv6協議是存在相當大區別的兩套協議,但這并不意味著需要單獨兩套DNS體系,相反在DNS的體系和域名空間上兩者必須是一致的,IPv4和IPv6共同擁有統一的域名空間。在IPv4到IPv6的過渡階段,域名可以同時對應于多個IPv4和IPv6的地址。DNS主要通過UDP來承載,DNS的原始規范在UDP數據包大小方面采取了非常保守的立場。只使用UDP傳遞了小響應,如果響應大于512字節,將被截斷并分片傳輸,此時DNS協議中的flags字段Truncated位被置位顯示響應已被截斷,即當DNS響應數據大于512字節的時候,數據只返回512字節,剩余的數據將被丟棄。此時,DNS客戶端通?;崾褂肨CP重新發起原來的查詢請求,允許返回響應超過512個字節。由于IPv6和DNSSEC的引入,DNS數據包大于512字節的可能性大大增加,采用TCP會增大DNS服務器的負荷,這是因為需要進行TCP連接的確立和切斷等處理。假如位于域名上游的所有路由服務器均由于高負荷的TCP處理而導致性能下降,那么整個DNS就會停止工作。這一點是采用TCP無論如何也無法避免的。
 
        為解決此問題,域名服務協議進行了協議擴展,利用旨在通過UDP幫助DNS交換超過512字節的數據的EDNS0。使用EDNS0,在向DNS發出請求時,客戶端可以通過指定UDP緩沖區大小來表示其愿意通過UDP接收更大的數據包。使用這一功能,就可以通過一個UDP數據包來交換超過512字節的數據而無需借助TCP進行傳輸,當然在超時機制和重復查詢等機制開啟的情況下,仍收到截斷響應,則應該切換到嘗試TCP。
 
        當然截斷搜索響應也需要大量時間并且可能包含大量數據包,如果大型響應數據包在DNS中不常見或者碎片丟包非常罕見,這種開銷也是可以接受的。但事實并非如此。由于IPv6和DNSSEC的引入,DNS大型響應并不少見,且碎片丟包率也很高。
 
        由于IPv6的數據只能在源端分片,目的端重組,不允許在中間路由器上進行分片和重組。將這個比較耗時的分片與重組操作從中間路由器轉到端系統,大大加快了網絡中的IP轉發速率。那么如果路由器收到IPv6數據包太大,超過它的MTU而不能轉發出去怎么辦?通常情況下,IPv6包發向一個目的地址的第一個包,如果在路由過程中被某個中間路由器卡住,該路由器會丟棄該數據包并向源主機返回一個“分組太大”的ICMPv6差錯報文,同時會附上它自己的MTU,源主機再調整包的大小,會使用較小長度的IP數據包重新發送數據,然后后面的數據包就都不會超過這個大小,即第一個包可能會重發。再如果過了這個中間路由器,報文繼續往下走,又遇到一個路由器,MTU更小,同樣該路由器也會向源主機發個ICMPv6的報文,告訴源主機,包大了,源主機要再調整包大小重發,就這樣直到數據包達到目的地址。所以IPv6碎片丟包率遠遠高于IPv4數據。2017年9月的早期工作顯示,當嘗試通過DNS遞歸解析器傳遞碎片化的IPv6 UDP數據包時,失敗率為38%。
 
        從理論上講,TCP應該能通過保守選擇會話的最大報文長度(MSS)來避免數據包太大而被丟棄的問題,但是UDP怎么樣?那么UDP的主要客戶端應用程序DNS呢?我們可以將DNS從UDP移開并使用TCP代替,這樣肯定會使許多功能變得更加容易,但是缺點是TCP在服務器上施加了更大的負載開銷。所以我們還需要改進UDP中大響應的處理方式,那么我們試試使用UDP和TCP的混合方法:在可能的情況下使用UDP,而在必要時使用TCP。
 
        解決這一挑戰的方法是”附加截斷響應”(Additional Truncated Response,簡稱ATR,記錄為互聯網草案:2017年9月的draft-song-atr-large-resp-00,  下一代互聯網國家工程中心的宋林建)提案。本草案中描述的方法很簡單:如果DNS服務器提供需要發送分段的UDP數據包的響應,則服務器應等待10ms的時間并將原始查詢作為截斷響應返回。如果客戶端接收并重新組合分段的UDP響應,則客戶端的DNS解析器將忽略隨后的截斷響應,因為其未完成的查詢已被回答。如果網絡丟棄了分段的UDP響應,則將接收截斷的響應,并且將觸發客戶端立即切換到使用TCP重新查詢。
 
        經有關部門對每個IP解析器行為的測試,使用UDP時,高達40%的IPv4解析器未能收到大的分片UDP響應,50%的IPv6解析器未能收到分片的UDP響應,這個分片UDP響應包的丟失比率是很驚人的。如果強制使用TCP協議,大約21%的IPv4解析器無法完成解析任務,45%的IPv6解析器無法完成解析任務。而使用ATR,在IPv4中的ATR丟失率為29%,即有超過10%的無法接收分片UDP響應的解析器能夠切換TCP并完成任務;IPV6中ATR的丟失率為45%。
 
        在DNS中,超過90%的用戶使用IP地址最常用的10000個解析器,所以在查看DNS時,不應使用計算解析器行為來推斷對用戶的影響。我們需要從用戶角度來衡量ATR的影響。測試數據表明在IPv4情況下,大約9%的服務器使用ATR將通過向客戶端發信號通知立即切換到TCP以執行重新查詢來提高分段UDP響應的解析速度。在IPv6中,大約15%的服務器使用ATR通知客戶端切換為TCP重新查詢。
 
        ATR可以實現在傳遞大型DNS響應時提高DNS的解析速度和成功率,ATR方法消除客戶端執行大量超時和重新查詢周期,消除大量查詢數據包并縮短解決時間。但是ATR將另一個UDP數據包添加到大型分段DNS響應中,這有助于攻擊者使用DNS DDoS攻擊,因為當ATR數據包添加到大型DNS響應時,相同的初始查詢流將生成更多數據包和更大的字節數。

        DNS是互聯網中極為重要的組成部分,ATR并沒有完全解決響應問題,如果解析器無法接收碎片UDP響應并且無法使用TCP執行DNS查詢,則ATR無法提供幫助。但是,在IP片段過濾存在問題的情況下,ATR可以使查詢不可避免地轉移到TCP,速度比現在快很多,但它是以額外的數據包和額外的DNS功能為代價的?;贗Pv6的DNS應用還面臨很多挑戰需要我們逐一解決。
 
        為實現下一代互聯網在經濟社會各領域深度融合,IPv6規模建設既是國家戰略,也是高速發展的移動通信網絡的需求。作為國內首家DNS商用解決方案提供商,泰策一直在跟蹤最新的IPv6技術要求,并憑借十多年的DNS相關技術經驗,獲得了IPv6 READY認證logo,積極配合各地的電信運營商進行DNS系統的IPv6改造,保證各地運營商的設備和系統具備IPv4/IPv6雙棧功能,為解決網絡地址資源數量問題提供了有力保障,助力提升我國互聯網的承載能力和服務水平。