作為網(wǎng)絡(luò)虛擬化的重要技術(shù),,VXLAN備受關(guān)注,,該協(xié)議是如何運作的?如何通過數(shù)據(jù)與控制層面的分離實現(xiàn)SDN網(wǎng)絡(luò)?如何部署?本博文將為您詳細介紹...
一 . 為什么需要Vxlan 1. vlan的數(shù)量限制 4096個vlan遠不能滿足大規(guī)模云計算數(shù)據(jù)中心的需求 2. 物理網(wǎng)絡(luò)基礎(chǔ)設(shè)施的限制 基于IP子網(wǎng)的區(qū)域劃分限制了需要二層網(wǎng)絡(luò)連通性的應(yīng)用負載的部署 3. TOR交換機MAC表耗盡 虛擬化以及東西向流量導(dǎo)致更多的MAC表項 4. 多租戶場景 IP地址重疊? 二. 什么是Vxlan 1. Vxlan報文 vxlan(virtual Extensible LAN)虛擬可擴展局域網(wǎng),是一種overlay的網(wǎng)絡(luò)技術(shù),,使用MAC in UDP的方法進行封裝,,共50字節(jié)的封裝報文頭。具體的報文格式如下: (1) vxlan header 共計8個字節(jié),,目前使用的是Flags中的一個8bit的標識位和24bit的VNI(Vxlan Network identifier),,其余部分沒有定義,但是在使用的時候必須設(shè)置為0x0000,。 (2) 外層的UDP報頭 目的端口使用4798,,但是可以根據(jù)需要進行修改,。同事UDP的校驗和必須設(shè)置成全0。 (3) IP報文頭 目的IP地址可以是單播地址,,也可以是多播地址,。單播情況下,目的IP地址是Vxlan Tunnel End Point(VTEP)的IP地址,。在多播情況下引入VXLAN管理層,,利用VNI和IP多播組的映射來確定VTEPs。 protocol:設(shè)置值為0x11,,顯示說明這是UDP數(shù)據(jù)包 Source ip: 源vTEP_IP; Destination ip: 目的VTEP IP,。 (4) Ethernet Header Destination Address:目的VTEP的Mac 地址,即為本地下一跳的地址(通常是網(wǎng)關(guān)Mac 地址); VLAN: VLAN Type被設(shè)置為0x8100,, 并可以設(shè)置Vlan Id tag(這就是vxlan的vlan 標簽),。 Ethertype:設(shè)置值為0x8000,指明數(shù)據(jù)包為IPv4的,。 補充:VTEP的作用? 用于對VXLAN報文進行封裝/解封裝,,包括ARP請求報文和正常的VXLAN數(shù)據(jù)報文,在一段封裝報文后通過隧道向另一端VTEP發(fā)送封裝報文,,另一端VTEP接收到封裝的報文解封裝后根據(jù)封裝的MAC地址進行裝法,。VTEP可由支持VXLAN的硬件設(shè)備或軟件來實現(xiàn)。 從封裝的結(jié)構(gòu)上來看,,VXLAN提供了將二層網(wǎng)絡(luò)overlay在三層網(wǎng)絡(luò)上的能力,,VXLAN Header中的VNI有24個bit,數(shù)量遠遠大于4096,,并且UDP的封裝可以穿越三層網(wǎng)絡(luò),,比VLAN有更好的擴展性。 2. Vxlan的數(shù)據(jù)和控制平面 (1) 數(shù)據(jù)平面---隧道機制 已經(jīng)知道,,VTEP為虛擬機的數(shù)據(jù)包加上了層包頭,,這些新的報頭之有在數(shù)據(jù)到達目的VTEP后才會被去掉。中間路徑的網(wǎng)絡(luò)設(shè)備只會根據(jù)外層包頭內(nèi)的目的地址進行數(shù)據(jù)轉(zhuǎn)發(fā),,對于轉(zhuǎn)發(fā)路徑上的網(wǎng)絡(luò)來說,,一個Vxlan數(shù)據(jù)包跟一個普通IP包相比,出了個頭大一點外沒有區(qū)別,。 由于VXLAN的數(shù)據(jù)包在整個轉(zhuǎn)發(fā)過程中保持了內(nèi)部數(shù)據(jù)的完整,,因此VXLAN的數(shù)據(jù)平面是一個基于隧道的數(shù)據(jù)平面。 (2) 控制平面----改進的二層協(xié)議 VXLAN不會在虛擬機之間維持一個長連接,,所以VXLAN需要一個控制平面來記錄對端地址可達情況,。控制平面的表為(VNI,,內(nèi)層MAC,,外層vtep_ip),。Vxlan學(xué)習(xí)地址的時候仍然保存著二層協(xié)議的特征,節(jié)點之間不會周期性的交換各自的路由表,,對于不認識的MAC地址,,VXLAN依靠組播來獲取路徑信息(如果有SDN Controller,可以向SDN單播獲取),。 另一方面,,VXLAN還有自學(xué)習(xí)的功能,當VTEP收到一個UDP數(shù)據(jù)報后,,會檢查自己是否收到過這個虛擬機的數(shù)據(jù),,如果沒有,VTEP就會記錄源vni/源外層ip/源內(nèi)層mac對應(yīng)關(guān)系,,避免組播學(xué)習(xí),。 三. VxlanARP請求 (1) vxlan初始化 VM1和VM2連接到VXLAN網(wǎng)絡(luò)(VNI)100,兩個VXLAN主機加入IP多播組239.119.1.1 (2) ARP請求 1) VM1以廣播的形式發(fā)送ARP請求; 2) VTEP1封裝報文,。打上VXLAN標識為100,,外層IP頭DA為IP多播組(239.119.1.1),,SA為IP_VTEP1. 3) VTEP1在多播組內(nèi)進行多播; 4) VTEP2解析接收到多播報文,。填寫流表(VNI, 內(nèi)層mac地址,外層Ip地址),,并在本地VXLAN標識為100的范圍內(nèi) 廣播(是VXLAN的用武之地),。 5) VM2對接收到的ARP請求進行響應(yīng); (3) ARP應(yīng)答 1) VM2準備ARP響應(yīng)報文后向VM1發(fā)送響應(yīng)報文 2)VTEP2接收到VM2的響應(yīng)報文后把它封裝在ip單播報文中(VXLAN標識依然為100),然 后向VM1發(fā)送單播 3)VTEP1接收到單播報文后,,學(xué)習(xí)內(nèi)層MAC到外層ip地址的映射,,解封裝并根據(jù)被封裝內(nèi)容的目的MAC地址轉(zhuǎn)發(fā)給VM1 4)VM1接收到ARP應(yīng)答報文,ARP交互結(jié)束 四:數(shù)據(jù)傳輸 (1) ARP請求應(yīng)答之后,,VM1知道了VM2的Mac地址,,并且要向VM2通信(注意,VM1是以TCP的方法向VM2發(fā)送數(shù)據(jù)的),。 VTEP1 收到VM1發(fā)送數(shù)據(jù)包,,用MAC地址從流表中檢查VM1與VM2是否屬于用一個VNI。兩個VM不但位于同一個VNI中(不在同一個VNI中出網(wǎng)關(guān)),,并且VTEP1已經(jīng)知道了VM2的所有地址信息(MAC和VTEP2_IP),。VTEP1封裝新的數(shù)據(jù)包。然后交給上聯(lián)交換機,。 (2) 上聯(lián)交換機收到服務(wù)器發(fā)來的UDP包,,對比目的IP地址和自己的路由表,然后將數(shù)據(jù)報轉(zhuǎn)發(fā)給相應(yīng)的端口,。 (3) 目的VTEP收到數(shù)據(jù)包后檢查器VNI,,如果UDP報中VNI與VM2的VNI一致,,則將數(shù)據(jù)包解封裝后交給VM2進一步處理。至此一個數(shù)據(jù)包傳輸完成,。整個Vxlan相關(guān)的行為(可能穿越多個網(wǎng)關(guān))對虛擬機來說是透明的,,虛擬機不會感受傳輸?shù)倪^程。雖然VM1與VM2之間啟動了TCP來傳輸數(shù)據(jù),,但數(shù)據(jù)包一路上實際是以UDP的形式被轉(zhuǎn)發(fā),,兩端的VTEP并不會檢查數(shù)據(jù)是否正確或者順序是否完整,所有的這些工作都是在VM1和VM2在接收到解封裝的TCP包后完成的,。也就是說如果說如果被UDP封裝的是TCP連接,,那么UDP和TCP將做為兩個獨立的協(xié)議棧各自工作,相互之間沒有交互,。 五:Vxlan網(wǎng)關(guān) 如果需要VXLAN網(wǎng)絡(luò)和非VXLAN網(wǎng)絡(luò)連接,,必須使用VXLAN網(wǎng)關(guān)才能把VXLAN網(wǎng)絡(luò)和外部網(wǎng)絡(luò)進行橋接和完成VXLAN ID和VLAN ID之間的映射和路由,和VLAN一樣,,VXLAN網(wǎng)絡(luò)之間的通信也需要三層設(shè)備的支持,,即VXLAN路由的支持。同樣VXLAN網(wǎng)關(guān)可由硬件和軟件來實現(xiàn),。從封裝的結(jié)構(gòu)上來看,,VXLAN提供了將二層網(wǎng)絡(luò)overlay在三層網(wǎng)絡(luò)上的能力,VXLAN Header中的VNI有24個bit,,數(shù)量遠遠大于4096,,并且UDP的封裝可以穿越三層網(wǎng)絡(luò),比VLAN有更好的擴展性,。 六.部署 (1) 純VXLAN部署場景 對于連接到VXLAN內(nèi)的虛擬機,,由于虛擬機的VLAN信息不再作為轉(zhuǎn)發(fā)的依據(jù),虛擬機的遷移也就不再受三層網(wǎng)關(guān)的限制,,可以實現(xiàn)跨越三層網(wǎng)關(guān)的遷移,。 (2) VXLAN與VLAN混合部署 為了實現(xiàn)VLAN和VXLAN之間互通,VXLAN定義了VXLAN網(wǎng)關(guān),。VXLAN網(wǎng)關(guān)上同時存在兩種類型的端口:VXLAN端口和普通端口,。 當收到從VXLAN網(wǎng)絡(luò)到普通網(wǎng)絡(luò)的數(shù)據(jù)時,VXLAN網(wǎng)關(guān)去掉外層包頭,,根據(jù)內(nèi)層的原始幀頭轉(zhuǎn)發(fā)到普通端口上;當有數(shù)據(jù)從普通網(wǎng)絡(luò)進入到VXLAN網(wǎng)絡(luò)時,,VXLAN網(wǎng)關(guān)負責打上外層包頭,并根據(jù)原始VLAN ID對應(yīng)到一個VNI,,同時去掉內(nèi)層包頭的VLAN ID信息,。相應(yīng)的如果VXLAN網(wǎng)關(guān)發(fā)現(xiàn)一個VXLAN包的內(nèi)層幀頭上還帶有原始的二層VLAN ID,會直接將這個包丟棄,。 之所以這樣,,是VLAN ID是一個本地信息,,僅僅在一個地方的二層網(wǎng)絡(luò)上其作用,VXLAN是隧道機制,,并不依賴VLAN ID進行轉(zhuǎn)發(fā),,也無法檢查VLAN ID正確與否。因此,,VXLAN網(wǎng)關(guān)連接傳統(tǒng)網(wǎng)絡(luò)的端口必須配置ACCESS口,,不能啟用TRUNK口。
原文鏈接:http://blog.csdn.net/freezgw1985/article/details/16354897
|
|
來自: 昵稱32165413 > 《文件夾1》