DNS領(lǐng)域的多點(diǎn)部署大多采用IP Anycast+BGP方式,采用這種方式不需要額外采購(gòu)設(shè)備,部署靈活多樣。但像其他所有技術(shù)一樣,IP Anycast+BGP技術(shù)只有在適當(dāng)?shù)念I(lǐng)域和范圍內(nèi)才能發(fā)揮它的最大優(yōu)勢(shì)。 Internet不斷發(fā)展,上網(wǎng)人群數(shù)量增加,多數(shù)網(wǎng)站或DNS等服務(wù)在使用單節(jié)點(diǎn)提供服務(wù)的情況下,無(wú)論服務(wù)器性能還是接入帶寬都不足以承載大量的用戶服務(wù)請(qǐng)求; 而在國(guó)內(nèi)運(yùn)營(yíng)商網(wǎng)絡(luò)之間訪問(wèn)緩慢的問(wèn)題一直存在; 此外,服務(wù)的高可用性也逐漸被重視。考慮到這些因素,企業(yè)在部署服務(wù)的時(shí)候首先會(huì)想到在多個(gè)物理位置、多個(gè)運(yùn)營(yíng)商網(wǎng)絡(luò)中部署相同的服務(wù),以解決上述問(wèn)題。用戶在下載的時(shí)候,大都看到過(guò)下載項(xiàng)中有“電信下載”、“網(wǎng)通下載”等多個(gè)下載鏈接,就是這種多點(diǎn)部署的一種應(yīng)用??刹豢梢圆挥糜脩暨x擇,而自動(dòng)將請(qǐng)求連接到最快的服務(wù)呢?答案是某些應(yīng)用服務(wù)可以實(shí)現(xiàn)。 某些設(shè)備廠商針對(duì)這一需求生產(chǎn)了一些硬件產(chǎn)品,如F5公司的GTM。而在DNS領(lǐng)域,多點(diǎn)部署更多的是使用了IP Anycast+BGP方式。IP Anycast+BGP是一種網(wǎng)絡(luò)技術(shù),采用這種方式不需要額外采購(gòu)設(shè)備,且部署靈活多樣。但在考慮部署IP Anycast+BGP的時(shí)候,要認(rèn)真考慮IP Anycast+BGP的特性,像其他所有技術(shù)一樣,IP Anycast+BGP技術(shù)只有在適當(dāng)?shù)念I(lǐng)域和范圍內(nèi)才能發(fā)揮它的最大優(yōu)勢(shì)。 Anycast技術(shù)優(yōu)勢(shì)Anycasting最初是在RFC1546中提出并定義的,根據(jù)RFC1546的說(shuō)明,IPv4的任播地址不同于IPv4的單播地址,它建議從IPv4的地址空間分配出一塊獨(dú)立的地址空間作為任播地址空間。RFC1546定義的這種任播沒(méi)有在IPv4網(wǎng)絡(luò)中得到廣泛使用,但是它的最初語(yǔ)義在IPv4得到廣泛使用: 在IP網(wǎng)絡(luò)上,通過(guò)一個(gè)Anycast地址標(biāo)識(shí)一組提供特定服務(wù)的主機(jī),同時(shí)服務(wù)訪問(wèn)方并不關(guān)心提供服務(wù)的具體是哪一臺(tái)主機(jī)(比如DNS或者鏡像服務(wù)),訪問(wèn)該地址的報(bào)文可以被IP網(wǎng)絡(luò)路由到這一組目標(biāo)中的任何一臺(tái)主機(jī)上,它提供的是一種無(wú)狀態(tài)的、盡力而為的服務(wù)。 在實(shí)際應(yīng)用中,Anycast采用將一個(gè)單播地址分配到處于Internet中多個(gè)不同物理位置的主機(jī)上,發(fā)送到這個(gè)主機(jī)的報(bào)文被網(wǎng)絡(luò)路由到路由協(xié)議度量的“最近”的目標(biāo)主機(jī)上。 Anycast技術(shù)具有以下優(yōu)勢(shì): 一、不同客戶端將訪問(wèn)不同目的主機(jī),此過(guò)程對(duì)客戶端透明,從而實(shí)現(xiàn)了目的主機(jī)的負(fù)載均衡; 二、當(dāng)任意目的主機(jī)接入的網(wǎng)絡(luò)出現(xiàn)故障,導(dǎo)致該目的主機(jī)不可達(dá)時(shí),客戶端請(qǐng)求可以在無(wú)人為干預(yù)的情況下自動(dòng)被路由到目前可達(dá)的最近目的主機(jī),在一定程度上為目標(biāo)主機(jī)提供了冗余性; 三、當(dāng)目的主機(jī)受到DoS攻擊而無(wú)法到達(dá)時(shí),由于網(wǎng)絡(luò)不可到達(dá),客戶端請(qǐng)求也將路由到其他目的主機(jī)上,而在DDoS攻擊時(shí),由于Anycast的負(fù)載均衡效應(yīng),避免了單臺(tái)目的主機(jī)承受所有攻擊流量,因此在一定程度上為目的主機(jī)提高了安全性; 四、因?yàn)锳nycast利用路由度量到“最近”的目的主機(jī),提高了客戶端響應(yīng)速度。 但是,Anycast技術(shù)也存在一定的局限性: 使用Anycast中的共享單播地址不能作為客戶端發(fā)起請(qǐng)求,因?yàn)檎?qǐng)求的響應(yīng)不一定能返回到發(fā)起的Anycast單播地址。因此,目前Anycast僅適合一些特定的上層協(xié)議,從目前的實(shí)際應(yīng)用來(lái)看, Anycast最廣泛的應(yīng)用是DNS的部署。 Anycast應(yīng)用方式Anycast實(shí)質(zhì)上是一種網(wǎng)絡(luò)技術(shù),它借助于網(wǎng)絡(luò)中動(dòng)態(tài)路由協(xié)議實(shí)現(xiàn)服務(wù)的負(fù)載均衡和冗余,從實(shí)現(xiàn)類型上分,可以分為subnet Anycast和Global Anycas: Subnet Anycast是指所有目的主機(jī)都位于同一網(wǎng)段,此方式僅提供負(fù)載均衡和冗余,對(duì)安全度提升沒(méi)有實(shí)質(zhì)效果; Global Anycast是指目的主機(jī)處于不同網(wǎng)段,可能處于不同城市,甚至分布在全球各地,在實(shí)際應(yīng)用中Global Anycast中目標(biāo)主機(jī)的部署除地理位置的考慮外,多接入不同自治域的網(wǎng)絡(luò)中。 當(dāng)使用Anycast的目標(biāo)主機(jī)接入到不同自治域時(shí),因?yàn)殡y以使用某一自治域的IP地址,所以通常使用Anycast的共享單播地址擁有獨(dú)立的自治域號(hào),并通過(guò)BGP協(xié)議與不同自治域網(wǎng)絡(luò)交換路由,即IP Anycast+BGP。 IP Anycast+BGP部署IP Anycast+BGP的部署必須使用能夠運(yùn)行BGP的設(shè)備與其他自治域進(jìn)行路由交換,通常使用的設(shè)備是路由器或三層交換機(jī)。然后將目標(biāo)主機(jī)直接接入路由器或通過(guò)負(fù)載均衡設(shè)備將多臺(tái)主機(jī)接入路由器,當(dāng)然此時(shí)也可以采用subnet Anycast接入目標(biāo)主機(jī)。而路由器向上聯(lián)自治域廣播目標(biāo)主機(jī)共享的單播地址; 路由器可以從上聯(lián)自治域接收全路由表,也可以將默認(rèn)路由的下一跳指向上聯(lián)自治域的路由器接口。 這種路由器加目標(biāo)主機(jī)的組合形成了單一節(jié)點(diǎn),將單一節(jié)點(diǎn)進(jìn)行復(fù)制,分別上聯(lián)到不同地理位置的不同自治域中,且路由器廣播地址相同,就形成了Anycast。當(dāng)然,每個(gè)單一節(jié)點(diǎn)內(nèi)部結(jié)構(gòu)可以不同,只要BGP廣播地址相同,目標(biāo)主機(jī)提供相同服務(wù)即可。各單一節(jié)點(diǎn)可以使用相同的自治域號(hào),也可以使用不同自治域號(hào)。 IP Anycast+BGP的部署可以解決分布服務(wù)的負(fù)載均衡、冗余度問(wèn)題,也在一定程度上提高了分布服務(wù)的安全性,但是也存在一些問(wèn)題: 首先,目標(biāo)主機(jī)接入路由時(shí),如目標(biāo)主機(jī)down機(jī),或網(wǎng)卡故障等原因?qū)е侣酚善髟贗GP中無(wú)法查找到目標(biāo)主機(jī)路由,BGP將自動(dòng)停止對(duì)上聯(lián)自治域的地址廣播,客戶端請(qǐng)求將被重新路由到其他目標(biāo)主機(jī)。但是如果目標(biāo)主機(jī)網(wǎng)絡(luò)可達(dá)而服務(wù)不可用,BGP無(wú)法探測(cè),并將持續(xù)向上聯(lián)自治域廣播共享單播地址。被路由到該目標(biāo)主機(jī)的客戶端請(qǐng)求無(wú)法獲得服務(wù),且不能被自動(dòng)路由到其他目標(biāo)主機(jī),鑒于上述原因,網(wǎng)絡(luò)管理員必須時(shí)時(shí)監(jiān)控各目標(biāo)主機(jī)的服務(wù),一旦出現(xiàn)異常,可以手工停止路由器的BGP廣播,使客戶端請(qǐng)求被路由到其他目標(biāo)主機(jī)。 其次,因?yàn)橛糜贏nycast的單播地址不能作為客戶端發(fā)起請(qǐng)求,所以網(wǎng)絡(luò)管理員所使用的監(jiān)控網(wǎng)絡(luò)不能使用Anycast的共享單播地址,此外Anycast要求各節(jié)點(diǎn)提供的服務(wù)保持一致,對(duì)客戶端透明,因此,服務(wù)同步的源IP也與監(jiān)控網(wǎng)絡(luò)一樣,不能使用Anycast的共享單播地址。由于二者性質(zhì)相似,以下統(tǒng)稱為監(jiān)控網(wǎng)絡(luò)。 第三,網(wǎng)絡(luò)管理員對(duì)Anycast中各節(jié)點(diǎn)進(jìn)行監(jiān)控時(shí),無(wú)法確認(rèn)監(jiān)控的是哪一個(gè)節(jié)點(diǎn),也無(wú)法控制監(jiān)控所到達(dá)的節(jié)點(diǎn)。為了實(shí)現(xiàn)網(wǎng)絡(luò)管理員對(duì)網(wǎng)絡(luò)及服務(wù)的實(shí)時(shí)監(jiān)控,各Anycast節(jié)點(diǎn)除了使用共享單播地址外,必須配置非共享單播地址用于網(wǎng)絡(luò)管理及監(jiān)控。非單播地址的獲得主要有兩種方式: 第一種方式是上聯(lián)自治域分配,上聯(lián)自治域?qū)⑦@段地址通過(guò)靜態(tài)路由指向Anycast節(jié)點(diǎn)的路由器; 第二種方式是作為獨(dú)立網(wǎng)段在各個(gè)Anycast節(jié)點(diǎn)路由器上進(jìn)行廣播,因?yàn)橥ǔW灾斡蛑唤邮昭诖a長(zhǎng)度小于24的網(wǎng)段廣播,如果采用第二種方式將造成IP地址的極大浪費(fèi),所以,在條件允許的情況下,盡可能采用第一種方式獲得節(jié)點(diǎn)非共享單播地址。非共享單播地址同時(shí)也用于目標(biāo)主機(jī)的服務(wù)同步。地址的分配必須在節(jié)點(diǎn)建設(shè)的規(guī)劃期慎重考慮。 第四,在采用第二種方式獲取非共享單播地址用于管理時(shí),如果網(wǎng)絡(luò)管理員監(jiān)控主機(jī)和Anycast節(jié)點(diǎn)使用相同自治域號(hào),監(jiān)控主機(jī)將無(wú)法管理監(jiān)控該Anycast節(jié)點(diǎn),因?yàn)锽GP協(xié)議中為避免路由循環(huán),不接收來(lái)自相同自治域號(hào)的路由廣播。因此,在條件允許的情況下,監(jiān)控網(wǎng)段和Anycast節(jié)點(diǎn)盡可能使用不同的自治域號(hào),或者使用第二種方式獲得非共享單播地址的Anycast節(jié)點(diǎn)應(yīng)與其他節(jié)點(diǎn)和監(jiān)控網(wǎng)段使用不同的自治域號(hào)。但是,也應(yīng)該避免監(jiān)控網(wǎng)段和每個(gè)Anycast節(jié)點(diǎn)都使用獨(dú)立自治域號(hào),一是避免自治域號(hào)的浪費(fèi),二是APNIC等自治域號(hào)分配機(jī)構(gòu)要求擁有獨(dú)立自治域號(hào)的自治系統(tǒng)需要與兩個(gè)以上其他自治系統(tǒng)聯(lián)接,而通常一個(gè)Anycast節(jié)點(diǎn)只會(huì)聯(lián)接一個(gè)自治系統(tǒng)。 如果無(wú)法申請(qǐng)到一個(gè)以上的自治域號(hào),則會(huì)造成監(jiān)控網(wǎng)絡(luò)和采用第二種方式獲得非共享單播地址的節(jié)點(diǎn)使用相同的自治域號(hào),但也有變通方式: 在監(jiān)控網(wǎng)絡(luò)邊界路由器上,將該節(jié)點(diǎn)非共享單播地址的路由通過(guò)靜態(tài)路由指向上聯(lián)自治域的邊界路由器接口,同時(shí)該節(jié)點(diǎn)路由器也需要將監(jiān)控網(wǎng)絡(luò)地址的路由通過(guò)靜態(tài)路由指向上聯(lián)自治域的邊界路由器接口。 第五,Anycast節(jié)點(diǎn)上聯(lián)其他自治系統(tǒng)時(shí),除聯(lián)接單一自治系統(tǒng),也可能接入到一些互聯(lián)網(wǎng)交換中心。通?;ヂ?lián)網(wǎng)交換中心使用路由服務(wù)器進(jìn)行路由交換,但路由服務(wù)器不承擔(dān)數(shù)據(jù)包轉(zhuǎn)發(fā)工作,因此,路由服務(wù)器不提供默認(rèn)路由,而Anycast節(jié)點(diǎn)也不能將默認(rèn)路由指向哪個(gè)具體地址,就需要Anycast節(jié)點(diǎn)路由器接收全路由表。如果是這種情況,還要考慮節(jié)點(diǎn)路由器的選型,保證能夠接收所需路由條目,這可能導(dǎo)致節(jié)點(diǎn)投資增加。在Anycast單一節(jié)點(diǎn)上聯(lián)時(shí),類似問(wèn)題不勝枚舉,此類問(wèn)題多屬于接入問(wèn)題,與非Anycast接入相同。在單一節(jié)點(diǎn)建設(shè)時(shí)對(duì)此應(yīng)認(rèn)真對(duì)待,實(shí)施前詳細(xì)了解情況,做好充足準(zhǔn)備。 小貼士IP Anycast+BGP在DNS系統(tǒng)部署中得到了廣泛應(yīng)用,但由于Anycast節(jié)點(diǎn)上聯(lián)自治系統(tǒng)不同,接入方式多種多樣,很難形成統(tǒng)一、規(guī)范的節(jié)點(diǎn)部署方案。因此,在IP Anycast+BGP整體部署之前應(yīng)多方面考慮各種因素,著重考慮自治域號(hào)申請(qǐng)、IP地址規(guī)劃等問(wèn)題。在某一節(jié)點(diǎn)實(shí)施時(shí),需要引起足夠重視,應(yīng)主要針對(duì)網(wǎng)絡(luò)接入詳細(xì)了解情況,做好充足準(zhǔn)備,切忌認(rèn)為已形成統(tǒng)一模式而輕視單一節(jié)點(diǎn)建設(shè)。
|