VXLAN(Virtual eXtensible Local Area Network)技術(shù)是由VMware、思科、Arista、Broadcom、Citrix和紅帽共同提出的IETF草案,用以解決數(shù)據(jù)中心多租戶間通信和隔離時解決vlan不夠的問題;Vxlan草案里給出的封裝格式是MAC-IN-UDP,即將原始報文封裝在UDP報文里,其本意是在用于不同數(shù)據(jù)中心之間的VM(Virtual Machine)之間進行通信時數(shù)據(jù)報文封裝格式。但是這種技術(shù)到底是否是一種完美的解決方案哪?
先對VXLAN的技術(shù)的提出其標準里主要想解決以下幾個問題進行說明:
1)STP協(xié)議缺陷和VLAN ID數(shù)目少帶來的限制
對于國內(nèi)互聯(lián)網(wǎng)的公司如BAT的數(shù)據(jù)中心,STP協(xié)議多數(shù)是不開啟的,明顯的缺陷是vxlan標準中所提及的,會導致鏈路帶寬的大量浪費,并且一旦拓撲變化到二三百臺網(wǎng)絡(luò)設(shè)備的時候,收斂性能會明顯變慢;所以大型數(shù)據(jù)中心會通過對網(wǎng)絡(luò)的合理規(guī)劃,來避免環(huán)路。
2)云計算[注]中多租戶環(huán)境下的通信和隔離
對于為了提高CPU的使用率以及服務(wù)器維護/遷移等操作便捷的云計算來說,不同租戶的云主機需要進行私網(wǎng)隔離,對于同一個租戶的多個云主機私網(wǎng)內(nèi)需要二層數(shù)據(jù)隔離而可以通過三層轉(zhuǎn)發(fā)進行通信,并且當云主機在多個數(shù)據(jù)中心之間的進行熱遷移時為了保持其提供服務(wù)的不間斷需要保證遷移前后在一個vlan內(nèi),即多個數(shù)據(jù)中心組成的二層某個VLAN網(wǎng)路有多大,那么著里面的VM就能遷移有多遠,也就是所謂的大二層技術(shù)。然而一個數(shù)據(jù)中心的物理服務(wù)器規(guī)模十萬級在國內(nèi)已經(jīng)出現(xiàn),國外Google等已有百萬級規(guī)模的數(shù)據(jù)中心,此類環(huán)境下僅有12bit的VLAN數(shù)目對于云計算的租戶數(shù)目來講是遠遠不夠的;其實vlan數(shù)目不夠很早就被意識到,并提出了 Q-IN-Q之類的技術(shù)(還有靈活Q-IN-Q等),為什么這些技術(shù)不直接被拿來在云計算虛擬網(wǎng)絡(luò)環(huán)境里使用哪?因為雖然我們可以在數(shù)據(jù)中心內(nèi)部控制報文的TAG情況,但是一旦報文到了公網(wǎng),其路徑經(jīng)過的網(wǎng)絡(luò)設(shè)備是路由器還是交換機無法得知,根本無法保證讓帶各種不同TAG的報文安然通過公網(wǎng)達到對端數(shù)據(jù)中心;然后就看有了vxlan的技術(shù)被提出和應(yīng)用。
3)TOR交換機的MAC地址表不充足
再討論一下云計算環(huán)境下TOR交換機MAC地址表不足的問題,在以前TOR因為走三層轉(zhuǎn)發(fā),只會學習到與其之戀直連設(shè)備及二層相連設(shè)備的MAC;而隨著大二層的出現(xiàn),不僅要學習本數(shù)據(jù)中心二層的設(shè)備MAC地址,還有更多其他數(shù)據(jù)中心二層范圍內(nèi)的地址,包括海量的虛擬機的MAC地址都有可能要被TOR學習到,這無疑大大增加了TOR的MAC表項容量的要求。我們知道對于傳統(tǒng)的商業(yè)交換芯片如Broadcom的ESW系列芯片,基本都有128K的MAC表項大小,這個容量相對于現(xiàn)代一個數(shù)據(jù)中心十萬級甚至百萬級設(shè)備的數(shù)據(jù)量真不算太大。
4)針對VXLAN技術(shù)的內(nèi)容有以下幾點討論:
a)沒有說明同一個租戶下不同VNID之間如何通信;以前對于同一個vlan或不同的vlan來說兩個主機通過交換機進行通信,需要添加或刪除報文的vlan TAG;但是對于同一個同一個VNID或不同的VNID的主機進行通信,封裝VXLAN報文還需要額外提供一個從L2以太網(wǎng)到L4 UDP的頭部,始終讓人感覺非常的怪異;
b)VLXAN技術(shù)將隔離區(qū)域數(shù)目從原來的12bit的VLAN ID擴展到現(xiàn)在24bit的VNI,可能猶如原先VLAN提出時看待其12bit的大小覺得已經(jīng)很多了,但是現(xiàn)在網(wǎng)絡(luò)規(guī)模越來越大,隨著業(yè)務(wù)的需求擴展比如多個行星之間的星際通信發(fā)展后,可能很快又無法滿足需求;這種擴展的方式始終是有缺陷的;
c)對原有VLAN技術(shù)的兼容
Vxlan技術(shù)如其他革命性的網(wǎng)絡(luò)技術(shù)的出現(xiàn)(OSPF代替RIP或IPV6代替IPV4),應(yīng)該取代vlan,并且兼容vlan,這點VXLAN技術(shù)標準文檔里也有提及,即如何讓VXLAN里的設(shè)備與VLAN里的設(shè)備進行通信,也可以考慮將vlan作為VXLAN一個子域的PVLAN技術(shù);但是兼容性其他方面依然是個值得考慮的問題,比如三層交換機現(xiàn)有的IP轉(zhuǎn)發(fā)時基于vlan創(chuàng)建三層接口的,可以簡單理解為DIP VLAN進行查找表項,然后更改報文的VLAN ID號轉(zhuǎn)發(fā)到另一個VLAN里轉(zhuǎn)出;當VXLAN代替VLAN后,如何芯片基于VXLAN的VNID進行三層轉(zhuǎn)發(fā)時VXLAN標準里沒有提及的內(nèi)容(+微信關(guān)注網(wǎng)絡(luò)世界),還有如QOS中vlan shapping的映射等技術(shù)也存在這個問題;而且封裝后還會有報文轉(zhuǎn)發(fā)效率、對轉(zhuǎn)發(fā)負載均衡性能等方面的影響;
d)對于vxlan技術(shù)的出現(xiàn),現(xiàn)有網(wǎng)絡(luò)設(shè)備支持度也不夠;僅有盛科、BCM的T2等芯片,值得一提的是Openvswitch是支持的;VXLAN技術(shù)應(yīng)該常規(guī)的傳統(tǒng)L3芯片類似,應(yīng)提供同一個VNI范圍內(nèi)的主機二層互通,不同VNI范圍內(nèi)的主機通過IP地址三層轉(zhuǎn)發(fā)互通(一個租戶有兩個VNID),跨數(shù)據(jù)中心的主機流量進行二層或三層通信時需要添加含有公網(wǎng)IP地址的outer ip header來走外網(wǎng)進行通信,當然有需求可以提出在VXLAN下trunk、hybrid、access的端口屬性,但是這些都沒有做出規(guī)定;這個功能安裝基于vlan的三層轉(zhuǎn)發(fā)來講不是什么高級的特性; 但是這個技術(shù)都必須在新的交換芯片上來做,而新出的芯片都是比較高級的,比如broadcom的trident系列和Marvell的lion系列,如果在上面加這些功能,暫時沒有出現(xiàn)Vxlan與某些技術(shù)比如MPLS、TRILL等技術(shù)兼容的方案,即如果用了vxlan,這些技術(shù)雖然被芯片支持,但很大可能是芯片的表項及其支持的功能就被浪費了;硬件支持工作還有相當大的。
為了解決vlan不夠的問題,類似VXLAN的技術(shù)還有微軟的NVGER和STT等,個人意見是這種技術(shù)解決問題方式是非常不徹底的,是革命性替代技術(shù),但是兼容性不足且治標不治本。最當初利用vlan技術(shù)對網(wǎng)絡(luò)進行隔離的選擇可能是網(wǎng)絡(luò)技術(shù)發(fā)展史上最大的一個錯誤,現(xiàn)在因為在其基礎(chǔ)上建立的三層轉(zhuǎn)發(fā)和受其限制而引發(fā)的一系列挽救技術(shù)都顯得蹩腳,尤其在現(xiàn)在得云計算趨勢下;我們是不是應(yīng)該考慮從根上解決該問題而不是每次都做補丁,因為這樣導致了技術(shù)的復雜性越來越大,報文的這種天價頭部的多次封裝又導致了傳輸效率的降低,慢慢的又會引入新的限制從而影響新技術(shù)被應(yīng)用到各種領(lǐng)域,比如逐漸成熟的移動互聯(lián)網(wǎng)。所以讓我們回到二層,回到vlan沒有出現(xiàn)的時候所遇到的網(wǎng)絡(luò)廣播風暴和安全隔離的問題上,可能會提出更好的解決辦法,衍生更多的好技術(shù),以避免今天網(wǎng)絡(luò)的痛苦和無奈。
作者:微博@北京-小武
來源:SDN聯(lián)合播報