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