董傳杰
摘 要:目前分布式DNS需借助BRAS專(zhuān)用硬件實(shí)現(xiàn),與通用DNS服務(wù)器硬件不兼容,且其軟件功能差異也較大,無(wú)法通用。針對(duì)上述問(wèn)題,文章提出了基于VNF forwarding graph實(shí)現(xiàn)DNS分布式解析的一種方法,通過(guò)將DNS Agent和DNS cache虛擬化,實(shí)現(xiàn)了DNS的分布式部署,讓DNS不再受限于硬件或軟件兼容性的限制,讓分布式DNS可以提供給各類(lèi)場(chǎng)景(寬帶、2G、3G)復(fù)用,即實(shí)現(xiàn)了DNS的分布式部署及統(tǒng)一復(fù)用。
關(guān)鍵詞:分布式DNS;VNF部署;通信
1 現(xiàn)有技術(shù)方案
現(xiàn)有域名系統(tǒng)(Domain Name System,DNS)解析技術(shù)實(shí)現(xiàn)方案:用戶(hù)向?qū)拵нh(yuǎn)程接入服務(wù)器(Broadband Remote Access Server,BRAS)撥號(hào),上線(xiàn)成功后,BRAS會(huì)給用戶(hù)分配地址并同時(shí)下發(fā)DNS服務(wù)器地址給用戶(hù)。當(dāng)用戶(hù)上網(wǎng)時(shí),如果域名對(duì)應(yīng)的IP地址在本地緩存中不存在,那么用戶(hù)就會(huì)發(fā)起相應(yīng)的DNS查詢(xún),BRAS收到用戶(hù)的DNS查詢(xún)不作任何處理,直接轉(zhuǎn)發(fā)給DNS服務(wù)器進(jìn)行解析。DNS服務(wù)器收到查詢(xún)請(qǐng)求后,查找本地記錄,查找成功后會(huì)將查詢(xún)結(jié)果返回給用戶(hù)。用戶(hù)收到DNS查詢(xún)結(jié)果后,就可以正常訪(fǎng)問(wèn)網(wǎng)絡(luò)資源。
在有的場(chǎng)景中,BRAS設(shè)備會(huì)啟用DNS server,來(lái)實(shí)現(xiàn)DNS分布式解析功能。在用戶(hù)上線(xiàn)時(shí),BRAS將自己的地址作為DNS server告訴用戶(hù)。當(dāng)用戶(hù)就會(huì)發(fā)起相應(yīng)的DNS查詢(xún)時(shí),BRAS收到用戶(hù)的DNS查詢(xún)后,先查找本地DNS緩存,如果匹配到就直接將結(jié)果返回給用戶(hù)。如果在本地DNS緩存中查不到,BRAS就會(huì)向DNS server發(fā)起查詢(xún),查詢(xún)的域名為用戶(hù)發(fā)起DNS請(qǐng)求中的域名。當(dāng)BRAS收到DNS服務(wù)器返回的查詢(xún)結(jié)果后,會(huì)將該結(jié)果返回給用戶(hù),并同時(shí)將該查詢(xún)結(jié)果寫(xiě)入DNS緩存中。DNS緩存中的DNS條目會(huì)進(jìn)行更新和老化處理,來(lái)保證BRAS和DNS server上的DNS條目一致性[1]?,F(xiàn)有DNS解析方案示意如圖1所示。
圖1 現(xiàn)有DNS解析方案示意
現(xiàn)有技術(shù)方案主要存在兩點(diǎn)缺陷:(1)硬件沒(méi)有網(wǎng)絡(luò)功能虛擬化(Network Function Virtualization,NFV)。BRAS和DNS服務(wù)器硬件不能通用。(2)軟件沒(méi)有NFV化。DNS server和DNS緩存管理等功能都是運(yùn)行在各個(gè)專(zhuān)有網(wǎng)元上,需要在各個(gè)網(wǎng)元上單獨(dú)實(shí)現(xiàn),不能復(fù)用。
2 DNS分布式查詢(xún)方案
為了改進(jìn)上述缺陷,本文提出了一種基于VNF forwarding graph實(shí)現(xiàn)DNS分布式查詢(xún)的方式。VNF forwarding graph如圖2所示,該方案的工作原理如下[2]。
(1)用戶(hù)向VBRAS(VNF1)撥號(hào),上線(xiàn)成功后,VBRAS會(huì)給用戶(hù)分配地址并同時(shí)下發(fā)DNS服務(wù)器地址給用戶(hù)。但是此時(shí)VBRAS給用戶(hù)下發(fā)的DNS地址并非DNS服務(wù)器的地址,而是DNS Agent地址。
(2)用戶(hù)上網(wǎng)時(shí),如果域名對(duì)應(yīng)的IP地址在本地緩存中不存在,那么用戶(hù)就會(huì)發(fā)起DNS查詢(xún),VBRAS收到用戶(hù)的DNS查詢(xún)不作任何處理,直接轉(zhuǎn)發(fā)給DNS Agent(VNF2)進(jìn)行解析。
(3)DNS Agent收到查詢(xún)請(qǐng)求后,向DNS cache(VNF3)發(fā)起查詢(xún),如果DNS cache中存在對(duì)應(yīng)的DNS條目,那么DNS cache就會(huì)將該條目返回給DNS Agent;如果不存在對(duì)應(yīng)的條目,則DNS cache返回一個(gè)空結(jié)果給DNS Agent,表示該條目在DNS cache中不存在。
(4)DNS Agent收到DNS cache返回的查詢(xún)結(jié)果,如果結(jié)果中有對(duì)應(yīng)的條目,那么DNS Agent會(huì)直接將該結(jié)果返回給用戶(hù);如果返回的查詢(xún)結(jié)果為空,那么DNS Agent會(huì)向DNS服務(wù)器發(fā)起一個(gè)DNS查詢(xún),查詢(xún)中的域名為用戶(hù)發(fā)起DNS請(qǐng)求中的域名。當(dāng)DNS Agent收到DNS服務(wù)器返回的查詢(xún)結(jié)果后,會(huì)將該結(jié)果返回給用戶(hù),并同時(shí)將該查詢(xún)結(jié)果寫(xiě)入DNS cache中。
(5)用戶(hù)收到DNS查詢(xún)結(jié)果后,此次DNS查詢(xún)結(jié)束。
(6)DNS cache管理和cache中DNS條目更新方式和傳統(tǒng)BRAS保存一致,不在本文論述范圍內(nèi)。
各個(gè)NF/VNF之間報(bào)文交互接口:
(1)用戶(hù)和VBRAS之間采用PPPOE,或者native IP。
圖2 DNS分布式查詢(xún)的VNF forwarding graph示意
(2)用戶(hù)和DNS Agent之間采用DNS標(biāo)準(zhǔn)。
(3)VBRAS和DNS Agent之間采用native IP。
DNS Agent和DNS server之間采用DNS標(biāo)準(zhǔn)。
(4)DNS Agent和DNS cache之間:查詢(xún)接口采用DNS標(biāo)準(zhǔn);DNS條目寫(xiě)入接口采用DNS UPDATE消息,或者采用其他接口。
各個(gè)NF/VNF之間報(bào)文交互確認(rèn)機(jī)制:
(1)DNS Agent和DNS cache的查詢(xún)確認(rèn)機(jī)制。DNS Agent在等待DNS cache應(yīng)答時(shí),需要有超時(shí)保護(hù)機(jī)制,如果超時(shí),DNS Agent需要重傳;在重傳一定次數(shù)后,如果仍然失敗,則認(rèn)為DNS cache不可用,DNS Agent需要向DNS server發(fā)起DNS查詢(xún)。
(2)DNS Agent和DNS cache的條目寫(xiě)入確認(rèn)機(jī)制。DNS Agent在等待DNS cache寫(xiě)入應(yīng)答時(shí),需要有超時(shí)保護(hù)機(jī)制,如果超時(shí),DNS Agent需要重傳;在重傳一定次數(shù)后,如果仍然失敗,則認(rèn)為DNS cache不可用,本次記錄寫(xiě)入失敗,并產(chǎn)生相應(yīng)的告警或者事件。
(3)DNS Agent和DNS server的確認(rèn)機(jī)制。DNS Agent在等待DNS server應(yīng)答時(shí),需要有超時(shí)機(jī)制,如果超時(shí),DNS Agent需要重傳;在重傳一定次數(shù)后,如果仍然失敗,則認(rèn)為DNS server不可用。如果在有備用DNS server的情況下,DNS Agent需要向備用DNS server發(fā)起DNS查詢(xún)。如果所有DNS server都不可用,則本次查詢(xún)失敗,并產(chǎn)生相應(yīng)的告警或者事件。
VNF forwarding graph中各個(gè)VNF的部署關(guān)系:
(1)VBRAS和DNS Agent部署關(guān)系。一個(gè)VBRAS可以對(duì)應(yīng)多個(gè)DNS Agent,一個(gè)DNS Agent也可以服務(wù)多個(gè)VBRAS,主要取決于VBRAS下面管理的用戶(hù)數(shù)量和DNS Agent的查詢(xún)處理能力,以及冗余部署的要求。通常部署時(shí),一個(gè)DNS Agent對(duì)應(yīng)多個(gè)VBRAS比較常見(jiàn)。用戶(hù)上線(xiàn)時(shí),可由Radius下發(fā)對(duì)應(yīng)的DNS Agent地址給用戶(hù)。
(2)DNS Agent和DNS cache部署關(guān)系。為了簡(jiǎn)化方案的復(fù)雜度,一個(gè)DNS Agent對(duì)應(yīng)一個(gè)DNS cache;一個(gè)DNS cache對(duì)應(yīng)一個(gè)或者多個(gè)DNS Agent,取決于DNS cache的大小。
(3)DNS Agent和DNS server部署關(guān)系。一個(gè)DNS Agent可對(duì)應(yīng)多個(gè)DNS server,但同一時(shí)間只有一個(gè)DNS server是主用的,其余DNS server是備用;一個(gè)DNS server對(duì)應(yīng)多個(gè)DNS Agent,這樣才能實(shí)現(xiàn)分布式查詢(xún)的好處。
3 結(jié)語(yǔ)
使用VNF forwarding graph實(shí)現(xiàn)DSN的分布式解析,可提高硬件通用性,本方案中所有的VNF都部署在VM上,底層基于通用硬件服務(wù)器。同時(shí)使用VNF forwarding graph進(jìn)行實(shí)現(xiàn),可提高網(wǎng)絡(luò)功能的復(fù)用度,將DNS Agent和DNS cache抽象成VNF,可以用在任何需要DNS查詢(xún)/解析的場(chǎng)景。譬如:不管是寬帶用戶(hù)接入場(chǎng)景還是無(wú)線(xiàn)用戶(hù)(2G/3G/4G)接入場(chǎng)景,都可以復(fù)用。在傳統(tǒng)網(wǎng)絡(luò)中,需要在BRAS和XGW分別實(shí)現(xiàn)該功能,提高了改方案的可移植性及冗余性。