作者:童燁彬,單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心
隨著云計(jì)算和虛擬化技術(shù)的快速發(fā)展,傳統(tǒng)的局域網(wǎng)已經(jīng)無(wú)法滿足數(shù)據(jù)中心日漸膨脹的網(wǎng)絡(luò)需求。VXLAN隧道作為建立在IP網(wǎng)絡(luò)上的二層隧道技術(shù),不僅實(shí)現(xiàn)了不同地市數(shù)據(jù)中心間的大二層互通,還解決了傳統(tǒng)VLAN網(wǎng)絡(luò)租戶數(shù)量不夠的痛點(diǎn),可容納用戶數(shù)量實(shí)現(xiàn)了指數(shù)級(jí)的增長(zhǎng)。VXLAN隧道也被應(yīng)用在了中國(guó)移動(dòng)自研的“云網(wǎng)關(guān)”架構(gòu)中。
Part 01●?簡(jiǎn)介?●
作為目前傳統(tǒng)數(shù)據(jù)中心網(wǎng)絡(luò)的面臨著如下幾個(gè)痛點(diǎn):
? 交換機(jī)MAC表限制
虛擬化技術(shù)的應(yīng)用,使目前數(shù)據(jù)中心的服務(wù)器上都運(yùn)行著大量的虛擬機(jī),每個(gè)虛擬機(jī)都包含至少一個(gè)MAC地址,我們知道二層轉(zhuǎn)發(fā)需要交換機(jī)學(xué)習(xí)MAC地址,這會(huì)導(dǎo)致ToR交換機(jī)需要學(xué)習(xí)的MAC表數(shù)量指數(shù)級(jí)增長(zhǎng),一旦MAC表溢出,就會(huì)造成交換機(jī)泛洪,影響轉(zhuǎn)發(fā)效率[1];
? 租戶數(shù)量的限制
傳統(tǒng)的數(shù)據(jù)中心內(nèi)是通過(guò)VLAN進(jìn)行租戶隔離,不同的租戶會(huì)被劃分到不同的VLAN中,而VLAN報(bào)文中用來(lái)表示用戶標(biāo)識(shí)的VID的長(zhǎng)度為12位,也就說(shuō)最多可以容納212-2=4094個(gè)租戶(通常0和4095作為保留值),而對(duì)于大型的數(shù)據(jù)中心來(lái)說(shuō),這個(gè)數(shù)量的租戶遠(yuǎn)遠(yuǎn)不夠用,會(huì)讓網(wǎng)絡(luò)擴(kuò)展受到限制;
? 虛擬機(jī)遷移的限制
數(shù)據(jù)中心會(huì)出現(xiàn)服務(wù)器的硬件擴(kuò)容或者機(jī)房遷移的情況,此時(shí)虛擬機(jī)需要被遷移到其他的服務(wù)器上來(lái)避免對(duì)業(yè)務(wù)的影響,虛擬機(jī)的MAC和IP地址需要保持不變,因此遷移只能發(fā)生在二層網(wǎng)絡(luò)內(nèi),對(duì)業(yè)務(wù)的靈活性產(chǎn)生了極大的限制【2】;
為了解決以上數(shù)據(jù)中心的問(wèn)題,RFC 7348提出了虛擬可擴(kuò)展局域網(wǎng)的概念,即VXLAN(Virtual eXtensible Local Area Network),將原始的二層報(bào)文通過(guò)VXLAN隧道頭封裝在IP報(bào)文中,使原始報(bào)文可以跨二層網(wǎng)絡(luò)進(jìn)行傳輸。
圖1 VXLAN報(bào)文結(jié)構(gòu)
上圖為一個(gè)標(biāo)準(zhǔn)的VXLAN格式報(bào)文,其可以分為三個(gè)部分:
1、最外層為VXLAN隧道的底層網(wǎng)絡(luò)封裝,用來(lái)在VTEP之間傳輸;
2、中間為VXLAN隧道頭部,基于UDP協(xié)議承載;
3、最內(nèi)層為想要傳輸?shù)脑紙?bào)文內(nèi)容,包括以太頭、IP頭以及報(bào)文數(shù)據(jù),即虛擬機(jī)網(wǎng)卡發(fā)送出來(lái)的報(bào)文;
其中VXLAN頭部長(zhǎng)8個(gè)字節(jié),包括以下內(nèi)容:
VXLAN Flag(8位):固定取值為00001000;
VNI(24位):網(wǎng)絡(luò)標(biāo)識(shí)符,用來(lái)定義不同的租戶;
保留字段:有兩處,分別為24位和8位;
圖2 VXLAN抓包
上圖為VXLAN的抓包,其VNI值為100,基于UDP協(xié)議傳輸,源端口隨機(jī)生成,目的端口為4789。
從以上的VXLAN報(bào)文格式中可以看出VXLAN隧道是如何解決數(shù)據(jù)中心面臨的3個(gè)主要問(wèn)題的:
1、VXLAN使用UDP進(jìn)行封裝,UDP外層的MAC為VTEP物理出口的MAC地址,通常一個(gè)物理機(jī)會(huì)對(duì)應(yīng)一個(gè)VTEP被該臺(tái)機(jī)器上所有的虛擬機(jī)使用, 這樣對(duì)于ToR交換機(jī)來(lái)說(shuō),一臺(tái)服務(wù)器只需要記錄一條MAC表即可,避免了MAC表暴漲的問(wèn)題[1];
2、VNI24位的長(zhǎng)度可支持超過(guò)1600萬(wàn)數(shù)量的租戶,網(wǎng)絡(luò)中租戶隔離的數(shù)量不會(huì)再受到限制,后續(xù)網(wǎng)絡(luò)的拓展也變得極其靈活;
3、VXLAN采用MAC in UDP的方式來(lái)進(jìn)行封裝傳輸,對(duì)二層網(wǎng)絡(luò)進(jìn)行了延伸,不同地域間的數(shù)據(jù)中心也可通過(guò)UNDERLAY三層網(wǎng)絡(luò)實(shí)現(xiàn)大二層的連接,實(shí)現(xiàn)了物理網(wǎng)絡(luò)和虛擬網(wǎng)絡(luò)的解耦。網(wǎng)絡(luò)規(guī)劃不再受物理網(wǎng)絡(luò)的限制,可實(shí)現(xiàn)虛擬機(jī)無(wú)損遷移,即IP和MAC地址保持不變[2]。
Part 02●??VXLAN隧道在云網(wǎng)關(guān)中的應(yīng)用?●
圖3 云網(wǎng)關(guān)方案架構(gòu)圖
目前中國(guó)移動(dòng)正在大力推進(jìn)云網(wǎng)關(guān)的研發(fā)和落地,其中一種方案為將云網(wǎng)關(guān)作為BRAS后一個(gè)網(wǎng)元部署在省側(cè)或者地市機(jī)房。如圖三所示,該網(wǎng)絡(luò)架構(gòu)使用VXLAN隧道對(duì)用戶報(bào)文進(jìn)行接入和終結(jié),即每個(gè)白盒網(wǎng)關(guān)(ONU)會(huì)和云網(wǎng)關(guān)之間創(chuàng)建一條VXLAN隧道,分配到唯一的VNI標(biāo)識(shí),終端的報(bào)文在ONU被封裝上VXLAN隧道并轉(zhuǎn)發(fā)到云網(wǎng)關(guān),云網(wǎng)關(guān)對(duì)報(bào)文解封裝獲取到內(nèi)層原始報(bào)文,根據(jù)報(bào)文的類型進(jìn)行不同的處理,該云網(wǎng)關(guān)架構(gòu)把傳統(tǒng)家庭網(wǎng)關(guān)大部分控制面的功能以及增值業(yè)務(wù)都上移到了BRAS之后的云網(wǎng)關(guān)系統(tǒng)進(jìn)行統(tǒng)一處理。
簡(jiǎn)單來(lái)說(shuō),在云網(wǎng)關(guān)場(chǎng)景下用戶上網(wǎng)過(guò)程為:1、白盒網(wǎng)關(guān)發(fā)起PPPOE撥號(hào),從BRAS獲取到可上網(wǎng)的IP;
2、以PPPOE撥號(hào)獲取的IP作為local IP,以及預(yù)先分配好的VNI值,和云網(wǎng)關(guān)之間創(chuàng)建VXLAN隧道;
3、用戶終端(如手機(jī)、PC等)發(fā)起DHCP請(qǐng)求,在白盒網(wǎng)關(guān)封裝上VXLAN隧道轉(zhuǎn)發(fā)到云網(wǎng)關(guān),VXLAN報(bào)文在云網(wǎng)關(guān)被解封裝并將原始報(bào)文透?jìng)鞯皆凭W(wǎng)關(guān)控制面,DHCP服務(wù)器分配一個(gè)內(nèi)網(wǎng)地址給終端,同時(shí)將網(wǎng)關(guān)、DNS信息等一并發(fā)送回終端;
4、用戶發(fā)起對(duì)網(wǎng)關(guān)的ARP請(qǐng)求,報(bào)文同步驟三一樣被透?jìng)鞯娇刂泼妫W(wǎng)關(guān)回應(yīng)ARP REPLY;
5、終端用戶正常上網(wǎng)(包括DNS),報(bào)文到達(dá)云網(wǎng)關(guān),通過(guò)策略判斷是否訂購(gòu)了增值業(yè)務(wù):
(5.1)非增值業(yè)務(wù)用戶,使用公網(wǎng)IP做NAT,進(jìn)行公網(wǎng)卸載轉(zhuǎn)發(fā);
(5.2)增值業(yè)務(wù)用戶,發(fā)送到業(yè)務(wù)服務(wù)器,根據(jù)具體訂購(gòu)的業(yè)務(wù)進(jìn)行后續(xù)處理,對(duì)報(bào)文進(jìn)行丟棄、加速或者回注等操作;
該方案使用VXLAN隧道進(jìn)行用戶接入,白盒網(wǎng)關(guān)作為VTEP,對(duì)上行的原始報(bào)文進(jìn)行VXLAN隧道的封裝,使其可以順利穿越三層網(wǎng)絡(luò)到達(dá)云網(wǎng)關(guān)并解掉封裝進(jìn)行后續(xù)處理。有如下優(yōu)點(diǎn):
1、VXLAN隧道天然支持租戶隔離,不同寬帶用戶可以使用VNI進(jìn)行區(qū)分,而且24位的VNI足夠使用;
2、VXLAN作為二層隧道,相比于如GRE、IPIP等三層隧道,可以將原始的用戶信息完整地上送到云網(wǎng)關(guān),設(shè)備的源MAC信息可以用來(lái)做增值業(yè)務(wù),如對(duì)具體的設(shè)備做管控、限速等操作。
Part 03●??VXLAN隧道穿越NAT?●
VXLAN隧道不是傳統(tǒng)C/S模型,VTEP兩端都是監(jiān)聽(tīng)UDP4789目的端口,而源端口為隨機(jī)生成。圖四簡(jiǎn)單說(shuō)明了從用戶白盒網(wǎng)關(guān)發(fā)出的VXLAN報(bào)文經(jīng)過(guò)BRAS設(shè)備的NAT處理后的五元組變化情況,如圖所示,假設(shè)家庭網(wǎng)關(guān)上行報(bào)文封裝的VXLAN源端口為隨機(jī)的1234,經(jīng)過(guò)BRAS做SNAT之后變成5678,因?yàn)槟康亩丝谌匀粸?789,云網(wǎng)關(guān)可以正常收到并處理;當(dāng)報(bào)文下行時(shí)會(huì)被封裝上目的4789端口,相應(yīng)地BRAS需要對(duì)其做DNAT,但是BRAS上只存在1234->5678的NAT會(huì)話映射,而此時(shí)報(bào)文的目的端口為4789無(wú)法找到正確的NAT會(huì)話,因此報(bào)文會(huì)在BRAS被丟棄,無(wú)法支持穿越NAT。
圖4 VXLAN報(bào)文經(jīng)過(guò)NAT設(shè)備流程
云網(wǎng)關(guān)系統(tǒng)的VXLAN隧道進(jìn)行了如下改造:
1)白盒網(wǎng)關(guān)封裝VXLAN報(bào)文時(shí)源端口和目的端口均固定為4789;
2)云網(wǎng)關(guān)記錄上行報(bào)文的VNI和源端口的映射關(guān)系,在下行報(bào)文封裝VXLAN時(shí)將記錄的源端口作為目的端口進(jìn)行封裝。
經(jīng)過(guò)上述改造后,家庭網(wǎng)關(guān)封裝VXLAN時(shí)將外層UDP的源和目的端口都填充為4789,上行經(jīng)過(guò)BRAS時(shí)源端口被SNAT成Y,目的端口保持4789,報(bào)文被云網(wǎng)關(guān)正常接收和解封裝,此時(shí)記錄VNI和源端口信息;報(bào)文下行時(shí)根據(jù)VNI查詢到源端口信息Y,將其封裝到VXLAN隧道的外層UDP目的端口,經(jīng)過(guò)BRAS時(shí)可以找到對(duì)應(yīng)的4789->Y的NAT會(huì)話,目的端口被還原成4789,家庭網(wǎng)關(guān)可以順利收到并解封裝VXLAN報(bào)文。
Part 04●?總結(jié)?●
VXLAN隧道作為一個(gè)廣泛使用的大二層隧道技術(shù),將物理網(wǎng)絡(luò)和虛擬網(wǎng)絡(luò)解耦,具有傳統(tǒng)局域網(wǎng)絡(luò)不可比的擴(kuò)展性和靈活性,24位長(zhǎng)度的VNI也能完全滿足大量租戶隔離的需求。目前,中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心已經(jīng)完成基于VXLAN隧道架構(gòu)的云網(wǎng)關(guān)自研,并在多省完成試點(diǎn)部署,形成了完整的端到端解決方案。
參考文獻(xiàn)
[1] 什么是 VxLAN,知乎,2023年3月23日,https://zhuanlan.zhihu.com/p/616501757?utm_id=0.
[2]?VXLAN:云計(jì)算時(shí)代的隧道技術(shù)(一),銳捷官網(wǎng),2022年4月27日,https://www.ruijie.com.cn/jszl/88850/.