出向鏈路負(fù)載也需要智能DNS解析
隨著計(jì)算機(jī)和互聯(lián)網(wǎng)設(shè)備硬件性能的不斷攀升,互聯(lián)網(wǎng)應(yīng)用的爆發(fā)式增長(zhǎng),對(duì)互聯(lián)網(wǎng)帶寬也提出更高的要求。即使是只為內(nèi)網(wǎng)用戶提供互聯(lián)網(wǎng)接入服務(wù)的網(wǎng)絡(luò),只要具備一定的規(guī)模,一般也會(huì)選擇多運(yùn)營(yíng)商鏈路實(shí)現(xiàn)互聯(lián)網(wǎng)接入。
選擇多鏈路出口是為了提高網(wǎng)絡(luò)的整體帶寬和網(wǎng)絡(luò)的可靠性;選擇多運(yùn)營(yíng)商則是為了解決國(guó)內(nèi)跨運(yùn)營(yíng)商訪問(wèn)速度不佳的問(wèn)題。
在這樣的網(wǎng)絡(luò)環(huán)境,要求出口網(wǎng)關(guān)設(shè)備,無(wú)論是路由器、防火墻,還是專業(yè)的鏈路負(fù)載設(shè)備都要具備以下功能:
●1、準(zhǔn)確的鏈路健康監(jiān)控,及時(shí)地發(fā)現(xiàn)故障鏈路并停止該鏈路的數(shù)據(jù)轉(zhuǎn)發(fā),提高網(wǎng)絡(luò)的可靠性。
●2、鏈路流量的負(fù)載均衡,只有各鏈路流量均衡分擔(dān),才能充分利用出口鏈路帶寬,避免因流量分配不均衡造成個(gè)別鏈路擁塞。
●3、良好的用戶上網(wǎng)感受,讓用戶選擇最快速的網(wǎng)絡(luò)鏈路完成互聯(lián)網(wǎng)訪問(wèn),提高網(wǎng)絡(luò)的訪問(wèn)速度。
但在實(shí)際的網(wǎng)絡(luò)環(huán)境中,作為出向流量(Outbound)的鏈路負(fù)載均衡設(shè)備,滿足上述第1項(xiàng),各類產(chǎn)品基本都沒(méi)有問(wèn)題,但第2項(xiàng)與第3項(xiàng)也同時(shí)滿足卻十分困難。我們先看看當(dāng)前常見(jiàn)的鏈路負(fù)載方法。
A、源路由和策略路由,作為路由器和防火墻類設(shè)備最常見(jiàn)的實(shí)現(xiàn)鏈路負(fù)載的方法,配置簡(jiǎn)單,在穩(wěn)定的網(wǎng)絡(luò)環(huán)境中,能夠輕松的實(shí)現(xiàn)各鏈路流量的負(fù)載均衡,但卻無(wú)法提高用戶上網(wǎng)感受,用戶固定的綁定到特定的出口鏈路,依然存在跨運(yùn)營(yíng)商訪問(wèn)慢的問(wèn)題。
B、輪詢和加權(quán)輪詢,效果與A相似,且用戶從不同的鏈路去訪問(wèn)互聯(lián)網(wǎng),如果出口設(shè)備不具備會(huì)話保持功能,或會(huì)話保持配置不當(dāng),會(huì)出現(xiàn)網(wǎng)銀、網(wǎng)游等應(yīng)用訪問(wèn)異常的問(wèn)題。
C、ISP地址精確匹配,用戶訪問(wèn)的目的地址與ISP地址池匹配,做到訪問(wèn)電信地址的流量走電信鏈路,訪問(wèn)聯(lián)通地址的流量走聯(lián)通鏈路??梢蕴岣吡擞脩舻脑L問(wèn)速度,但常常出現(xiàn)鏈路流量分配不均衡,在高峰期有的鏈路帶寬被占滿,有的鏈路則十分空閑,高峰期用戶的上網(wǎng)感受也會(huì)由于鏈路被占滿而變差。
D、鏈路反應(yīng)速度探測(cè),針對(duì)用戶訪問(wèn)的目的地址,檢測(cè)各鏈路的反應(yīng)速度,選擇反應(yīng)最快的鏈路轉(zhuǎn)發(fā)流量。效果與C相似,高峰期用戶的上網(wǎng)感受及鏈路負(fù)載情況都會(huì)更好一些。
但在特定的環(huán)境下效果欠佳,比如高校網(wǎng)絡(luò)中,學(xué)生某一時(shí)間段集中觀看體育賽事直播時(shí),可能出現(xiàn)某條鏈路帶寬快速被占滿,使鏈路變得擁塞,而出現(xiàn)直播視頻傳輸不暢。這是因?yàn)殒溌匪俣忍綔y(cè)不是針對(duì)每一次訪問(wèn)進(jìn)行的,如果針對(duì)每次訪問(wèn)都進(jìn)行探測(cè),探測(cè)本身的時(shí)間消耗一定大于網(wǎng)絡(luò)自身延遲;
而周期性探測(cè)往往會(huì)導(dǎo)致周期時(shí)間內(nèi),網(wǎng)絡(luò)環(huán)境變化與最初探測(cè)結(jié)果不同,周期內(nèi)如果觀看賽事直播的應(yīng)用集中出現(xiàn),某條鏈路流量會(huì)快速增加,導(dǎo)致流量分配不均衡,甚至應(yīng)用本身的訪問(wèn)速度也受到影響。
為突破上述解決方案的局限性,A10提供一個(gè)新的出向流量(Outbound)鏈路負(fù)載解決方案,方案通過(guò)ISP地址精確匹配與DNS服務(wù)器負(fù)載相結(jié)合實(shí)現(xiàn)出向流量鏈路負(fù)載均衡。我們知道ISP地址精確匹配是提高用戶感受的最直接方式,它的問(wèn)題是鏈路流量負(fù)載不均衡,而造成流量分配不均衡的原因則是由于DNS解析造成的。
原因之一是國(guó)內(nèi)的大型數(shù)據(jù)中心和大型站點(diǎn),采用多運(yùn)營(yíng)商鏈路方式接入互聯(lián)網(wǎng),或在不同運(yùn)營(yíng)商建立獨(dú)立的數(shù)據(jù)中心。因此相同的域名,用戶使用不同運(yùn)營(yíng)商的DNS服務(wù)器,解析出的IP地址可能完全不同。
而對(duì)鏈路流量分配不均影響更大的是P2P軟件,下面提供一組分析數(shù)據(jù)充分說(shuō)明運(yùn)營(yíng)商DNS對(duì)于P2P流量選路的影響。下表是通過(guò)對(duì)迅雷軟件在不同運(yùn)營(yíng)商網(wǎng)絡(luò)中下載同一資源獲得的抓包信息提取的分析數(shù)據(jù)。

PC機(jī)運(yùn)行迅雷軟件,迅雷發(fā)起包括plugin.x17.xunlei.com會(huì)員登陸域名在內(nèi)的與迅雷相關(guān)的域名解析請(qǐng)求超過(guò)30個(gè),而返回的域名解析IP地址則與用戶所配置DNS的運(yùn)營(yíng)商保持一致。
當(dāng)開(kāi)啟下載任務(wù)時(shí),表現(xiàn)更為明顯,在提供P2P下載數(shù)據(jù)量最多的20個(gè)IP地址中,幾乎看不到其他運(yùn)營(yíng)商的IP地址。這就導(dǎo)致了在多運(yùn)營(yíng)商鏈路的環(huán)境中,P2P流量幾乎完全從用戶使用的DNS運(yùn)營(yíng)商鏈路轉(zhuǎn)發(fā),造成鏈路流量分配不均,可見(jiàn)用戶選擇的DNS服務(wù)器對(duì)于出向鏈路的流量負(fù)載影響極大。
既然DNS解析能夠影響鏈路流量的分配,我們也可以利用這點(diǎn)來(lái)實(shí)現(xiàn)鏈路流量的均衡分配。在 ISP地址精確匹配基礎(chǔ)之上,我們通過(guò)A10的負(fù)載均衡設(shè)備針對(duì)用戶的DNS服務(wù)配置服務(wù)器負(fù)載均衡,將用戶的DNS請(qǐng)求以加權(quán)輪詢的方式分配到各鏈路對(duì)應(yīng)的DNS服務(wù)器,通過(guò)權(quán)值比例來(lái)控制各鏈路的流量分配。這樣可以通過(guò)ISP地址精確匹配來(lái)提高用戶的上網(wǎng)感受,也避免了鏈路探測(cè)所面臨時(shí)間周期內(nèi)流量分配不均衡的問(wèn)題。
這樣的解決方案對(duì)于用戶來(lái)說(shuō)也是十分方便,用戶可以繼續(xù)使用原有的DNS配置,不需要做任何配置更改;如果在DHCP環(huán)境下,甚至可以為用戶分配一個(gè)像100.100.100.100這樣的虛擬DNS服務(wù)器地址。
下面為大家提供一個(gè)測(cè)試實(shí)例,介紹一下方案中AX系列設(shè)備DNS解析加權(quán)輪詢的配置,以及在實(shí)際環(huán)境中所達(dá)到的效果。先介紹一下測(cè)試環(huán)境:測(cè)試網(wǎng)絡(luò)有100M聯(lián)通鏈路和200M電信鏈路兩條出口,高峰期在線用戶1500人左右。
用戶采用ISP地址精確匹配,由于電信鏈路帶寬大一些,用戶最早將電信DNS通過(guò)DHCP分配給網(wǎng)內(nèi)用戶,發(fā)現(xiàn)流量分配不均衡后將電信DNS替換成聯(lián)通的DNS,問(wèn)題依然存在。
下圖是AX設(shè)備上線后用戶配置聯(lián)通DNS,AX沒(méi)做DNS請(qǐng)求輪詢分配時(shí)的抓圖。

截圖期間用戶網(wǎng)絡(luò)有近300人使用電信DNS,但電信鏈路在高峰期依然存在大量空閑,而聯(lián)通的鏈路在21點(diǎn)后完全被占滿。
我們?cè)贏X設(shè)備上配置DNS輪詢查詢:
配置電信與聯(lián)通的真實(shí)DNS服務(wù)器,使用默認(rèn)的udp端口健康監(jiān)測(cè)。
slb server ctc_dns 1.1.1.1
port 53 udp
slb server cuc_dns 2.2.2.2
port 53 udp
配置DNS服務(wù)器組,選擇加權(quán)輪詢方法。
slb service-group dns_group udp
method weighted-rr
member ctc_dns:53
member cuc_dns:53
配置到100.100.100.100的UDP 53端口請(qǐng)求分配給dns_group處理,并作源地址轉(zhuǎn)換,snat_group內(nèi)包括電信和聯(lián)通的nat地址池。
slb virtual-server to_dns 100.100.100.100
port 53 udp
source-nat pool snat_group
service-group dns_group
no-dest-nat
這里加兩條精確的靜態(tài)路由,目的地址為運(yùn)營(yíng)商dns服務(wù)器,下一跳為dns對(duì)應(yīng)鏈路的網(wǎng)關(guān),我們這樣配置的目的是讓dns請(qǐng)求本身能夠快速訪問(wèn)。
ip route 1.1.1.1/32 a1.b1.c1.d1
ip route 2.2.2.2/32 a2.b2.c2.d2
完成以上配置,我們將用戶網(wǎng)絡(luò)的dhcp服務(wù)器中dns地址改為100.100.100.100后,觀察用戶網(wǎng)絡(luò)流量分配,基本實(shí)現(xiàn)鏈路負(fù)載均衡,當(dāng)天截圖如下:

上圖可以看到在高峰期兩條鏈路基本都被占滿,聯(lián)通鏈路負(fù)載稍重的原因是由于配置當(dāng)天有少部分用戶dns沒(méi)有更新,且沒(méi)有做細(xì)致的權(quán)重比例調(diào)整。
通過(guò)將dns解析請(qǐng)求輪詢分配給不同運(yùn)營(yíng)商dns服務(wù)器來(lái)控制鏈路流量分配,雖然不是完美的解決方案,但卻可以稱得上是當(dāng)前最適合國(guó)內(nèi)的網(wǎng)絡(luò)環(huán)境的出向鏈路負(fù)載解決方案,具有原理簡(jiǎn)單、配置容易、設(shè)備本身資源消耗低的特點(diǎn),且能夠全面滿足開(kāi)篇提到的鏈路負(fù)載解決方案的3個(gè)要求。