VxLAN基础
轉自:http://blog.csdn.net/freezgw1985/article/details/16354897
一 . 為什么需要Vxlan ? 1. vlan的數量限制 ? ?4096個vlan遠不能滿足大規模云計算數據中心的需求 ? 2. 物理網絡基礎設施的限制 ? ?基于IP子網的區域劃分限制了需要二層網絡連通性的應用負載的部署 ? 3. TOR交換機MAC表耗盡 ? ? 虛擬化以及東西向流量導致更多的MAC表項 ? 4. 多租戶場景 ? ? IP地址重疊? 二. 什么是Vxlan ? 1. Vxlan報文 ? ? vxlan(virtual Extensible LAN)虛擬可擴展局域網,是一種overlay的網絡技術,使用MAC in UDP的方法進 行封裝,共50字節的封裝報文頭。具體的報文格式如下: ? (1) vxlan header ? ? 共計8個字節,目前使用的是Flags中的一個8bit的標識位和24bit的VNI(Vxlan Network identifier), 其余部分沒有定義,但是在使用的時候必須設置為0x0000。 ? (2) 外層的UDP報頭 ? ? ?目的端口使用4798,但是可以根據需要進行修改。同事UDP的校驗和必須設置成全0。 ? (3) IP報文頭 ? ? ?目的IP地址可以是單播地址,也可以是多播地址。單播情況下,目的IP地址是Vxlan?Tunnel End Point (VTEP)的IP地址。在多播情況下引入VXLAN管理層,利用VNI和IP多播組的映射來確定VTEPs。???- protocol:設置值為0x11,顯示說明這是UDP數據包
- Source ip: 源vTEP_IP;
- Destination ip: 目的VTEP IP。
- Destination Address:目的VTEP的Mac 地址,即為本地下一跳的地址(通常是網關Mac 地址);
- VLAN: VLAN Type被設置為0x8100, 并可以設置Vlan Id tag(這就是vxlan的vlan 標簽)。
- Ethertype:設置值為0x8000,指明數據包為IPv4的。
??1) VM2準備ARP響應報文后向VM1發送響應報文
? ? ? ?2)VTEP2接收到VM2的響應報文后把它封裝在ip單播報文中(VXLAN標識依然為100),然 后向VM1發送單播
? ? ? ?3)VTEP1接收到單播報文后,學習內層MAC到外層ip地址的映射,解封裝并根據被封裝內容的目的MAC地址轉發給VM1
? ? ? ?4)VM1接收到ARP應答報文,ARP交互結束 ? 4 ?數據傳輸 ? ? (1) ?ARP請求應答之后,VM1知道了VM2的Mac地址,并且要向VM2通信(注意,VM1是以TCP的方法向VM2發送數據的)。 VTEP1 收到VM1發送數據包,用MAC地址從流表中檢查VM1與VM2是否屬于用一個VNI。兩個VM不但位于同一個VNI中 (不在同一個VNI中出網關),并且VTEP1已經知道了VM2的所有地址信息(MAC和VTEP2_IP)。VTEP1封裝新的數據包。然后 交給上聯交換機。 ? ?(2) 上聯交換機收到服務器發來的UDP包,對比目的IP地址和自己的路由表,然后將數據報轉發給相應的端口。 ? ?(3) 目的VTEP收到數據包后檢查器VNI,如果UDP報中VNI與VM2的VNI一致,則將數據包解封裝后交給VM2進一步處理。至此 一個數據包傳輸完成。整個Vxlan相關的行為(可能穿越多個網關)對虛擬機來說是透明的,虛擬機不會感受傳輸的過程。 ? ? ? 雖然VM1與VM2之間啟動了TCP來傳輸數據,但數據包一路上實際是以UDP的形式被轉發,兩端的VTEP并不會檢查數據是否 正確或者順序是否完整,所有的這些工作都是在VM1和VM2在接收到解封裝的TCP包后完成的。也就是說如果說如果被UDP封裝 的是TCP連接,那么UDP和TCP將做為兩個獨立的協議棧各自工作,相互之間沒有交互。 ? ?? 5?Vxlan網關 ?如果需要VXLAN網絡和非VXLAN網絡連接,必須使用VXLAN網關才能把VXLAN網絡和外部網絡進行橋接和 完成VXLAN ID和VLAN ID之間的映射和路由,和VLAN一樣,VXLAN網絡之間的通信也需要三層設備的支持, 即VXLAN路由的支持。同樣VXLAN網關可由硬件和軟件來實現。 ? ?從封裝的結構上來看,VXLAN提供了將二層網絡overlay在三層網絡上的能力,VXLAN Header中的VNI有 24個bit,數量遠遠大于4096,并且UDP的封裝可以穿越三層網絡,比VLAN有更好的擴展性。 ? 6.部署 (1) 純VXLAN部署場景 ? 對于連接到VXLAN內的虛擬機,由于虛擬機的VLAN信息不再作為轉發的依據,虛擬機的遷移也就 不再受三層網關的限制,可以實現跨越三層網關的遷移。 ? ? (2) VXLAN與VLAN混合部署 ? ? ?為了實現VLAN和VXLAN之間互通,VXLAN定義了VXLAN網關。VXLAN網關上同時存在兩種類型的端口:VXLAN端口 和普通端口。 ? ?當收到從VXLAN網絡到普通網絡的數據時,VXLAN網關去掉外層包頭,根據內層的原始幀頭轉發到普通端口上;當有數據 從普通網絡進入到VXLAN網絡時,VXLAN網關負責打上外層包頭,并根據原始VLAN ID對應到一個VNI,同時去掉內層包頭 的VLAN ID信息。相應的如果VXLAN網關發現一個VXLAN包的內層幀頭上還帶有原始的二層VLAN ID,會直接將這個包丟棄。 之所以這樣,是VLAN ID是一個本地信息,僅僅在一個地方的二層網絡上其作用,VXLAN是隧道機制,并不依賴VLAN ID進行 轉發,也無法檢查VLAN ID正確與否。因此,VXLAN網關連接傳統網絡的端口必須配置ACCESS口,不能啟用TRUNK口。轉載于:https://www.cnblogs.com/danbo/p/4989072.html
總結
- 上一篇: SQL SERVER的锁机制(四)——概
- 下一篇: 【编程思想】【设计模式】【行为模式Beh