張少芳 劉延鋒
摘? ?要:在云計算的背景下,服務(wù)器的虛擬化對傳統(tǒng)網(wǎng)絡(luò)的數(shù)據(jù)遷移能力提出了非常高的要求。文章分析了當(dāng)前非常典型的一種網(wǎng)絡(luò)虛擬化技術(shù)—VXLAN技術(shù),通過在三層IP網(wǎng)絡(luò)之上建立基于數(shù)據(jù)鏈路層的邏輯隧道,使數(shù)據(jù)鏈路層數(shù)據(jù)能夠穿越網(wǎng)絡(luò)層的承載網(wǎng)絡(luò)進行傳遞,實現(xiàn)虛擬機跨三層網(wǎng)絡(luò)的動態(tài)遷移,有效地提高了數(shù)據(jù)的傳輸效率以及對硬件資源的利用率。
關(guān)鍵詞:云計算;虛擬機;SDN;VXLAN;報文
1? ? VXLAN技術(shù)的引入
作為云計算中非常重要的一種核心技術(shù),服務(wù)器虛擬化憑借其低成本、靈活的業(yè)務(wù)部署等優(yōu)勢已經(jīng)得到廣泛的認可和部署。通過使用服務(wù)器的虛擬化技術(shù),一臺物理上的服務(wù)器就能夠虛擬出多臺邏輯上的虛擬機,從而在邏輯上使主機的數(shù)量實現(xiàn)量級的增長[1]。但是服務(wù)器虛擬化在滿足云計算需求的同時,也給虛擬網(wǎng)絡(luò)帶來了諸多問題,主要有以下3個方面。
1.1? 虛擬機的遷移范圍受到網(wǎng)絡(luò)物理架構(gòu)的限制
虛擬機遷移在數(shù)據(jù)中心網(wǎng)絡(luò)中是一種必然的需求,目的在于虛擬機在跨物理服務(wù)器遷移時保障網(wǎng)絡(luò)業(yè)務(wù)不中斷,這就要求在遷移的整個過程中虛擬機的IP地址以及MAC地址都必須保持不變。因此,虛擬機的承載網(wǎng)絡(luò)必須是一個工作于數(shù)據(jù)鏈路層的二層網(wǎng)絡(luò),使得網(wǎng)絡(luò)規(guī)模被限制在一定的范圍內(nèi),無法實現(xiàn)網(wǎng)絡(luò)虛擬化的高度擴展性。
1.2? 虛擬機的規(guī)模受到網(wǎng)絡(luò)規(guī)格限制
在二層數(shù)據(jù)網(wǎng)絡(luò)中,數(shù)據(jù)流量的轉(zhuǎn)發(fā)路徑需要通過在交換設(shè)備上查詢MAC地址來確定。因此,交換設(shè)備上的“端口與MAC地址映射表”的大小就決定了云計算數(shù)據(jù)中心中虛擬機規(guī)模的上限。由于受到交換設(shè)備內(nèi)存大小的限制,MAC表項一般都比較小,限制了虛擬機的數(shù)量。
1.3? 租戶網(wǎng)絡(luò)的隔離能力受限
目前網(wǎng)絡(luò)中的鏈路隔離主要使用虛擬局域網(wǎng)(Virtual Local Area Network,VLAN)技術(shù)來實現(xiàn),該技術(shù)在大規(guī)模網(wǎng)絡(luò)部署中存在非常大的局限性。一方面,由于數(shù)據(jù)封裝中VLAN ID字段的長度只有12比特,可用VLAN的數(shù)量只有4 094個(VLAN0和VLAN4095不可用),這對于大型的云數(shù)據(jù)中心或云計算中心來說顯然是遠遠不能滿足需求的。另一方面,目前VLAN主要通過靜態(tài)配置的方式來實現(xiàn),出于易于配置的考慮,一般需要在中繼鏈路上將所有VLAN設(shè)置為允許通過,這就使廣播報文會被泛洪到整個網(wǎng)絡(luò),導(dǎo)致網(wǎng)絡(luò)帶寬被無限制地消耗,降低網(wǎng)絡(luò)交換的性能。
針對上述問題,本研究引入了虛擬擴展區(qū)域網(wǎng)(Virtual eXtensible Local Area Network,VXLAN)技術(shù),VXLAN技術(shù)是VLAN的一種擴展方案,使用了“MAC in UDP”的數(shù)據(jù)封裝方式,是一種基于三層IP網(wǎng)絡(luò)的虛擬化技術(shù)。它對于上述問題給出了很好的解決方法。
(1)針對虛擬機的遷移范圍受到網(wǎng)絡(luò)物理架構(gòu)限制的問題,通過VXLAN能夠構(gòu)建一個邏輯上的大二層網(wǎng)絡(luò),以保證在遷移時可以保持虛擬機的IP地址和MAC地址不發(fā)生變化。
(2)針對虛擬機規(guī)模受到網(wǎng)絡(luò)規(guī)格限制的問題,首先,VXLAN將虛擬機發(fā)出的數(shù)據(jù)包使用UDP協(xié)議進行封裝,然后再使用物理網(wǎng)絡(luò)的IP地址和MAC地址分別進行封裝,外部網(wǎng)絡(luò)只能看到封裝后的外層物理網(wǎng)絡(luò)的參數(shù)。因此,二層網(wǎng)絡(luò)對于MAC地址規(guī)格的要求得到了非常大的降低。
(3)針對網(wǎng)絡(luò)隔離能力受限的問題,VXLAN引入了一種類似于VLAN ID的用戶標(biāo)識,稱為VXLAN網(wǎng)絡(luò)標(biāo)識VNI(VXLAN Network ID),其長度由VLAN ID的12比特擴展到了24比特,可以支持的VXLAN段數(shù)量多達16 M,對租戶的標(biāo)識能力得到極大的擴展[2]。
2? ? ?VXLAN的基本原理
VXLAN通過“MAC in UDP”的封裝在邏輯上實現(xiàn)了對二層網(wǎng)絡(luò)的延伸,是一種典型的對大二層虛擬網(wǎng)絡(luò)進行擴展的隧道封裝技術(shù)。在大二層的網(wǎng)絡(luò)中,引入了軟件定義網(wǎng)(Software Defined Network,SDN)控制器來對虛擬網(wǎng)絡(luò)進行控制以及部署。SDN控制器通過使用OpenFlow協(xié)議將信息下發(fā)給SDN的轉(zhuǎn)發(fā)器,來實現(xiàn)對網(wǎng)絡(luò)的統(tǒng)一維護和管理[3],VXLAN結(jié)構(gòu)具體如圖1所示。
圖1中涉及的概念具體如下。
(1)控制器:位于SDN的控制面,負責(zé)對數(shù)據(jù)報文的轉(zhuǎn)發(fā)路徑進行計算和管理。
(2)轉(zhuǎn)發(fā)器:SDN的轉(zhuǎn)發(fā)面設(shè)備,接收來自控制器的指令并對數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)進行處理。
(3)OpenFlow協(xié)議:SDN框架中的具體實現(xiàn)協(xié)議,定義了SDN中控制器與轉(zhuǎn)發(fā)器之間的通信??刂破魍ㄟ^OpenFlow協(xié)議把控制指令發(fā)送給轉(zhuǎn)發(fā)器。
(4)OpenFlow流表:是轉(zhuǎn)發(fā)器對報文轉(zhuǎn)發(fā)的依據(jù)。轉(zhuǎn)發(fā)器具體根據(jù)流表中的記錄匹配并對數(shù)據(jù)報文執(zhí)行記錄給出的相應(yīng)動作。
(5)網(wǎng)絡(luò)虛擬邊緣節(jié)點(Network Virtualization Edge,NVE):具體用來實現(xiàn)網(wǎng)絡(luò)虛擬化功能的網(wǎng)絡(luò)實體。
(6)虛擬接入點(Virtual Access Point,VAP):用于數(shù)據(jù)報文的接入。為二層的邏輯子接口配置不同的流封裝,就可以實現(xiàn)不同的數(shù)據(jù)報文到不同二層子接口的接入。
(7)VXLAN隧道端點(VXLAN Tunnel Endpoints,VTEP):封裝在網(wǎng)絡(luò)虛擬邊緣節(jié)點里,用來對VXLAN的報文進行封裝以及解封裝。VTEP分配有相應(yīng)物理網(wǎng)絡(luò)的IP地址。在VXLAN的報文中,本節(jié)點的VTEP地址作為報文的源IP地址,對端節(jié)點的VTEP地址作為報文的目的IP地址,一對VTEP地址對應(yīng)一個VXLAN的Tunnel。
(8)VXLAN網(wǎng)絡(luò)標(biāo)識(VXLAN Network Identifier,VNI):作用與VLAN ID類似,用來對不同的VXLAN段進行區(qū)分,一個VNI表示一個租戶[4]。
3? ? VXLAN的數(shù)據(jù)轉(zhuǎn)發(fā)流程
VXLAN中數(shù)據(jù)報文的轉(zhuǎn)發(fā)流程如圖2所示。
(1)Switch_1接收來自終端A的數(shù)據(jù)報文,然后根據(jù)所接收報文的接入端口以及其所屬VLAN信息獲取相應(yīng)的二層廣播域信息。另外,還需要判斷報文的目的MAC地址是否是已知的單播MAC地址。如果是,再判斷是否為本機的MAC地址:是本機的MAC地址,上送主機進行處理;不是本機的MAC地址,則在對應(yīng)的二層廣播域內(nèi)對報文進行廣播,并進入第(2)步。
(2)Switch_1上的VTEP根據(jù)查找到的出接口和VXLAN封裝信息對報文進行VXLAN的封裝以及轉(zhuǎn)發(fā)。
(3)Switch_2上的VTEP收到來自于Switch_1的VXLAN報文后,根據(jù)報文中的UDP目的端口號、源IP地址、目的IP地址以及VNI的值來判斷VXLAN報文是否合法有效。然后依據(jù)VNI獲取對應(yīng)的二層廣播域,解封裝VXLAN報文,獲取內(nèi)層的二層數(shù)據(jù)報文,判斷報文的目的MAC地址是否是已知單播報文的MAC地址。如果是,在對應(yīng)的二層廣播域內(nèi)查找出接口以及VLAN封裝信息,并進入第(4)步。如果不是,則需要再判斷是否是本機的MAC地址:是本機的MAC地址,上送主機進行處理;不是本機的MAC地址,則進入廣播和未知—單播和多播(Broadcast&Unknown- unicast&Multicast,BUM)報文的轉(zhuǎn)發(fā)流程。
(4)Switch_2根據(jù)查找到的出接口和封裝信息,為報文添加相應(yīng)的VLAN標(biāo)識,并將報文轉(zhuǎn)發(fā)給最終的目的主機,即終端B[5]。
4? ? 結(jié)語
VXLAN技術(shù)通過在原始數(shù)據(jù)報文的外部增加VXLAN封裝的方式,在三層IP網(wǎng)絡(luò)中建立數(shù)據(jù)鏈路層的邏輯隧道,實現(xiàn)網(wǎng)絡(luò)邏輯上的扁平化,使數(shù)據(jù)鏈路層的數(shù)據(jù)報文可以穿越三層IP網(wǎng)絡(luò),實現(xiàn)虛擬機的動態(tài)遷移,有效提高云計算背景下數(shù)據(jù)中心硬件資源利用率以及網(wǎng)絡(luò)管理的效率。
[參考文獻]
[1]華為公司.HCNP-R&S-IENP教材[EB/OL].(2019-04-25)[2019-05-10].http://support.huawei.com/learning/Certificate!showCertificate?lang=zh&pbiPath=term1000025451&id=Node1000004373.
[2]劉廣紅,孟祥春.基于SDN和VXLAN的云網(wǎng)一體化專線方案探討[J].郵電設(shè)計技術(shù),2018(8):46-50.
[3]張屆新,吳志明.基于VXLAN組網(wǎng)的云數(shù)據(jù)中心互聯(lián)方案[J].電信科學(xué),2016(12):122-128.
[4]鐘耿輝,唐加山.基于VXLAN的EVPN技術(shù)研究與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2017(5):46-50.
[5]王永建,張健,張富根,等.基于VXLAN的云數(shù)據(jù)中心網(wǎng)絡(luò)研究[J].通信技術(shù),2017(1):78-83.
Abstract:In the background of cloud computing, server virtualization puts forward very high requirements for data migration ability of traditional networks. As a very typical network virtualization technology at present, VXLAN technology allows data link layer data to pass through the carrying network of the network layer by establishing a logical tunnel based on the data link layer on the three-layer IP network. Thus, the dynamic migration of virtual machine across the three-layer network is realized, which effectively improves the data transmission efficiency and the utilization of hardware resources.
Key words:cloud computing; virtual machine; SDN; VXLAN; message