开始新对话

未解决

此帖子已超过 5 年

2744

2014年6月26日 07:00

网络虚拟化(四):VXLAN虚拟可扩展局域网(下)

​ ​
​ ​

​网络虚拟化(四):​​VXLAN​​虚拟可扩展局域网(下)​

​ ​
​ ​

​ ​

​转载请在文首保留原文出处:​​EMC​​中文支持论坛​​https://community.emc.com/go/chinese​​ ​weibo.png

​ ​
​ ​

​介绍​

​ ​
​ ​

​ ​

​上篇文章《​​VXLAN​​虚拟可扩展局域网(上)》中介绍了​​VXLAN​​的优势、​​VMware​​环境中​​VXLAN​​的组件和应用案例,本文将分析​​VXLAN​​传输数据包、工作原理和案例解析。​

​ ​

​ ​

​• ​​网络虚拟化(一):简介​

​ ​

​• ​​网络虚拟化(二):虚拟交换机​

​ ​

​•​​ ​​网络虚拟化(三):​​VXLAN​​虚拟可扩展局域网(上)​

​ ​

​•​​ ​​网络虚拟化(四):​​VXLAN​​虚拟可扩展局域网(下)​

​ ​

​• ​​网络虚拟化(五):通过划Zone来提高虚拟网络的安全性​

​ ​

​ ​

​ ​
​ ​

​更多信息​

​ ​
​ ​

​ ​

​ ​

​VXLAN​​传输数据包​

​ ​

​ ​

​VXLAN​​虚拟可扩展局域网是一种​​overlay​​的网络技术,使用​​MAC in UDP​​的方法进行封装,在封装包中间添加了一层共​​50​​字节的​​VXLAN Header​​,然后以​​IP​​数据包的形式通过​​3​​层网络进行传输。位于​​VXLAN​​安全加密链路任何一端的虚拟机不知道这个封装包。同时,物理网络中的设备也不知道虚拟机的源或目的​​MAC​​或​​IP​​地址。​​VXLAN​​的封装结构如下图所示:​

​ ​

​ ​

untitled.png

​ ​

​ ​


​ ​

​1. VXLAN Header​​:​

​ ​

​共计​​8​​个字节,目前被使用的是​​Flags​​中的一个标识位和​​24bit​​的​​VXLAN Network Identifier​​,其余的部分没有定义,但是在使用的时候必须设置为​​0×0000​​。​

​ ​

​ ​

​2. ​​外层的​​UDP​​报头:​

​ ​

​目的端口使用​​4789​​,但是可以根据需要进行修改。同时​​UDP​​的校验和必须设置成全​​0​​。​

​ ​

​ ​

​3. IP​​报文头:​

​ ​

​目的​​IP​​地址可以是单播地址,也可以是多播地址。​

​ ​

​单播情况下,目的​​IP​​地址是​​VXLAN Tunnel End Point(VTEP)​​的​​IP​​地址。​

​ ​

​在多播情况下引入​​VXLAN​​管理层,利用​​VNI​​和​​IP​​多播组的映射来确定​​VTEPs​​。​

​ ​

​ ​

​从封装的结构上来看,​​VXLAN​​提供了将二层网络​​overlay​​在三层网络上的能力,​​VXLAN Header​​中的​​VNI​​有​​24​​个​​bit​​,数量远远大于​​4096​​,并且​​UDP​​的封装可以穿越三层网络,因此比的​​VLAN​​更好的可扩展性。​

​ ​

​ ​

​ ​

​ ​

​VXLAN​​协议网络工作原理​

​ ​

​ ​

​(​​1​​)、网络初始化​

​ ​

​ ​

​在​​VXLAN​​协议工作前需要进行网络初始化配置。网络初始化就是让虚拟网络中的主机加入到该​​VXLAN​​网络所关联的多播组。例如:​​VM1​​和​​VM2​​连接到​​VXLAN​​网络,那么二台​​VXLAN​​主机(​​ESXi1​​和​​ESXi2​​)就需要先加入​​IP​​多播组​​239.119.1.1​​。​​VXLAN​​的网络标识符(​​VNI​​)就是网络​​ID​​。​

​ ​

​ ​

Untitled_2.png

​ ​

​ ​

​ ​

​(​​2​​)、​​ARP​​查询​

​ ​

​ ​

​下图描述了​​VXLAN​​协议中二个连接到逻辑​​2​​层网络的虚拟机(​​VM1​​和​​VM2​​)​​ARP​​查询流程。​

​ ​

​ ​

​1.​​ ​​VM1​​以广播形式发送​​ARP​​请求;​

​ ​

​2.​​ ​​VTEP1​​封装报文。本例中,​​VXLAN 100​​关联在​​IP​​多播组​​239.119.1.1​​中,​​VNI​​为​​100​​;​

​ ​

​3.​​ ​​VTEP1​​通过多播组将数据包发送给​​VTEP2​​;​

​ ​

​4.​​ ​​VTEP2​​接收到多播包。​​VTEP2​​将验证​​VXLAN​​网段​​ID​​,拆封数据包,然后将通过​​2​​层广播包的形式其转发到虚拟机​​VM2​​;​

​ ​

​5.​​ ​​VM2​​收到广播包后发送​​ARP​​响应。​

​ ​

​ ​

Untitled_3.png​ ​

​ ​


​ ​

​ ​

​注意:​​VTEP1​​只会在​​VTEP​​转发表中没有虚拟机​​MAC​​与该​​MAC​​地址的​​VTEP IP​​之间的映射时,才会生成多播包。在广播数据包时,如果​​MAC​​转发表中没有与帧目的​​MAC​​地址相匹配的条目,​​2​​层交换机会执行​​ARP​​查询操作。在发现虚拟机​​MAC​​地址与​​VTEP IP​​地址的映射条目并将其更新到转发表中后,任何与该特定虚拟机通信的请求都将通过点到点安全加密链路传输。​

​ ​

​ ​

​ ​

​(​​3​​)、​​ARP​​应答​

​ ​

​ ​

​ARP​​应答处理流程类似于​​ARP​​请求,不同之处在于​​VM2​​将通过单播包进行​​ARP​​响应。因为​​VTEP2​​已经获得了​​VM1​​的​​MAC​​地址、​​IP​​地址以及​​VTEP1​​的信息。​​VTEP2​​将建立一个转发条目,以后交换数据包操作会使用该转发条目。​

​ ​

​ ​

Untitled_4.png

​ ​


​ ​

​ ​

​(​​4​​)、​​VXLAN​​网关​

​ ​

​如果需要​​VXLAN​​网络和非​​VXLAN​​网络连接,必须使用​​VXLAN​​网关才能把​​VXLAN​​网络和外部网络进行连接。下图描述了​​VXLAN​​网关的工作原理:​

​ ​

​ ​

​1.​​ ​​VM2​​通过网关​​MAC​​地址向网关发送数据包;​

​ ​

​2.​​ ​​VTEP2​​封装数据包,通过多播(第一次)发送给​​VTEP1;​

​ ​

​3.​​ ​​VTEP1​​拆封数据包,并发送到网关;​

​ ​

​4.​​ ​​网关将​​IP​​数据包路由到​​Internet​​。​

​ ​

​ ​

Untitled_5.png​ ​

​ ​


​ ​

​ ​

​ ​

​案例(一)​

​ ​

​ ​

​当二台虚拟机在同一逻辑​​2​​层网络中时,如果二个虚拟机都在同一台​​vSphere​​主机上,那么数据包无需封装。如果二个虚拟机在不同​​vSphere​​主机上,一台​​vSphere​​主机上的源​​VTEP​​将虚拟机数据包封装到一个新​​UDP​​标头中,并通过外部​​IP​​网络将其发送到另一台​​vSphere​​主机上的目标​​VTEP​​。​

​ ​

​ ​

Untitled_6.png​ ​

​ ​


​ ​

​ ​

​案例(二)​

​ ​

​ ​

​图中显示了二个虚拟网络​​VXLAN-A​​和​​VXLAN-B​​。二个网络分别属于​​192.168.1.0/24​网段和​​192.168.2.0/24​网段,二个网络通过​​VXLAN​​网关进行连接。以下是可能情况:​

​ ​

​ ​

​(​​1​​)、当所有虚拟机和​​VXLAN​​网关位于同一​​vSphere​​主机上时。虚拟机将流量导向各自逻辑网络子网的网关​​IP​​地址,​​VXLAN​​会根据防火墙规则在二个不同接口之间进行路由。​

​ ​

​(​​2​​)、当所有虚拟机不在同一台​​vSphere​​主机上,而​​VXLAN​​网关部署在其中一台​​vSphere​​主机时。虚拟机的流量将被封装到数据包,然后进过物理网络传送到​​VXLAN​​网关,之后将由网关将数据包路由到正确的目标。​

​ ​

​(​​3​​)、当所有虚拟机和​​VXLAN​​网关不在同一台​​vSphere​​时。数据包传输将类似于情况​​2​​。​

​ ​


​ ​

Untitled_7.png

​ ​


​ ​


​ ​

​ ​

​ ​

​ ​
​ ​

​应用于​

​ ​
​ ​

​ ​

​了解​​VXLAN​​(​​virtual Extensible LAN​​虚拟可扩展局域网)技术​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​
没有回复!
找不到事件!

Top