VXLAN是一種將二層報(bào)文用三層協(xié)議進(jìn)行封裝的技術(shù)尖奔,可以對(duì)二層網(wǎng)絡(luò)在三層范圍進(jìn)行擴(kuò)展。每個(gè)覆蓋域被稱為VXLAN segment,它的ID是由位于VXLAN數(shù)據(jù)包頭中的VNI標(biāo)識(shí)來(lái)區(qū)分的。VNI字段包含24bits匿又,故segments最大數(shù)量為2的24次方,并且只有在相同的VXLAN segments才能通信建蹄。
它是一種在UDP中封裝MAC的簡(jiǎn)單機(jī)制碌更,可以創(chuàng)建跨多個(gè)物理IP子網(wǎng)的虛擬2層子網(wǎng)(也就是在三層子網(wǎng)中跑2層)
其實(shí)EtherIP和GRE也可以實(shí)現(xiàn)在IP中封裝MAC,但是它們都無(wú)法做到VLAN邏輯標(biāo)記
根據(jù)VXLAN的封包模式洞慎,也可以將它看作一種隧道模式的網(wǎng)絡(luò)覆蓋技術(shù)痛单,這種隧道是無(wú)狀態(tài)的。隧道端點(diǎn)VTEP一般位于擁有虛機(jī)的hypervisor宿主機(jī)中劲腿,因此VNI和VXLAN隧道只有VTEP可見(jiàn)旭绒,對(duì)于虛機(jī)來(lái)說(shuō)是透明的。那么不同的VXLAN segments就可以有相同的MAC地址的虛機(jī)焦人。并且VTEP也可以位于物理交換機(jī)或物理主機(jī)中快压,甚至可以用軟件來(lái)定義
VTEP之間完全是通過(guò)L3協(xié)議交互的,也就意味著VTEP之間可以由Router相連垃瞧,而非類似于GRE封裝模式的固定端到端隧道連接。
實(shí)例:
VM1要向VM2發(fā)送數(shù)據(jù)前坪郭,必須要知道VM2的MAC地址个从,其獲取過(guò)程如下:
1、VM1發(fā)送ARP請(qǐng)求包歪沃,請(qǐng)求192.168.0.101[VM2_IP]的MAC地址嗦锐;
2、ARP請(qǐng)求包被VTEP1封裝成多播包沪曙,發(fā)給VNI=864的多播組奕污;
3、所有的VTEP接收此多播包液走,并添加(VNI–VTEP1–VM1_MAC?Address)映射關(guān)系到自己的VXLAN表中碳默;
4贾陷、目的主機(jī)上的VTEP2接收到多播包后將其解開(kāi),并向本主機(jī)上VNI=864的所有虛擬機(jī)發(fā)送廣播包嘱根;
5髓废、VM2看到了ARP包后,回應(yīng)了自己的MAC地址该抒;
6慌洪、VTEP2再次封裝回應(yīng)的單播包,通過(guò)路由發(fā)給VTEP1凑保;
7冈爹、VTEP1解包,并將包傳給VM1欧引,則最終獲取了VM2的MAC地址频伤;
8、VTEP1將(VNI–VTEP2–VM2_MAC?Address)映射關(guān)系添加到自己的VXLAN表中维咸;
VM1獲知VM2的MAC地址后剂买,發(fā)送數(shù)據(jù)包,過(guò)程如下:
1癌蓖、??VM1發(fā)送IP數(shù)據(jù)包到VM2瞬哼,即192.168.0.100?到?192.168.0.101;
2租副、??VTEP1查找自己的VXLAN表知道要發(fā)給VTEP2坐慰,然后依次封裝以下數(shù)據(jù)包頭;
????????????a)VXLAN包頭用僧,VNI=864结胀;
????????????b)標(biāo)準(zhǔn)UDP包頭,校驗(yàn)和checksum為0x0000责循,目標(biāo)端口號(hào)4789糟港;
????????????c)標(biāo)準(zhǔn)IP包頭,目標(biāo)地址為VTEP2的IP地址院仿,協(xié)議號(hào)設(shè)為0x11表面為UDP包秸抚。
????????????d)標(biāo)準(zhǔn)MAC數(shù)據(jù)包,目標(biāo)地址為下一跳設(shè)備的MAC地址00:10:11:FE:D8:D2歹垫,可路由到目標(biāo)隧道端VTEP2剥汤。
3、??VTEP2接收數(shù)據(jù)包排惨,根據(jù)UDP的destination端口找到VXLAN數(shù)據(jù)包吭敢。接著查找所有所在VXLAN的VNI為864的端口組,找到VM2的
4暮芭、??VM2接收并處理數(shù)據(jù)包鹿驼,拿到Payload數(shù)據(jù)欲低。