一 . 为什么需要Vxlan
1.vlan的数量限制
2.物理网络基础设施的限制
3.TOR交换机MAC表耗尽
4.多租户场景
二. 什么是Vxlan
1.Vxlan报文
行封装,共50字节的封装报文头。具体的报文格式如下:
(1) vxlanheader
其余部分没有定义,但是在使用的时候必须设置为0x0000。
(2)外层的UDP报头
(3)IP报文头
(VTEP)的IP地址。在多播情况下引入VXLAN管理层,
利用VNI和IP多播组的映射来确定VTEPs。???
- protocol:设置值为0x11,显示说明这是UDP数据包
- Source ip: 源vTEP_IP;
- Destination ip: 目的VTEP IP。
(4) EthernetHeader
- Destination Address:目的VTEP的Mac 地址,即为本地下一跳的地址(通常是网关Mac 地址);
- VLAN: VLAN Type被设置为0x8100, 并可以设置Vlan Id tag(这就是vxlan的vlan标签)。
- Ethertype:设置值为0x8000,指明数据包为IPv4的。
补充:VTEP的作用?
后通过隧道向另一端VTEP发送封装报文,另一端VTEP接收到封装的报文解封装后根据封装的MAC地址
进行装法。VTEP可由支持VXLAN的硬件设备或软件来实现。
24个bit,数量远远大于4096,并且UDP的封装可以穿越三层网络,比VLAN有更好的扩展性。
2.Vxlan的数据和控制平面
中间路径的网络设备只会根据外层包头内的目的地址进行数据转发,对于转发路径上的网络来说,一个Vxlan
数据包跟一个普通IP包相比,出了个头大一点外没有区别。
的数据平面。
(2)控制平面----改进的二层协议
平面的表为(VNI,内层MAC,外层vtep_ip)。Vxlan学习地址的时候仍然保存着二层协议的特征,节点之间不会
周期性的交换各自的路由表,对于不认识的MAC地址,VXLAN依靠
组播来获取路径信息(如果有SDN Controller,
可以向SDN单播获取)。
数据,如果没有,VTEP就会记录源vni/源外层ip/源内层mac对应关系,避免组播学习。
3.VxlanARP请求
(1)vxlan初始化
(2)ARP请求
(3)ARP应答
4 数据传输
VTEP1收到VM1发送数据包,用MAC地址从流表中检查VM1与VM2是否属于用一个VNI。两个VM不但位于同一个VNI中
(不在同一个VNI中出网关),并且VTEP1已经知道了VM2的所有地址信息(MAC和VTEP2_IP)。VTEP1封装新的数据包。然后
交给上联交换机。
一个数据包传输完成。整个Vxlan相关的行为(可能穿越多个网关)对虚拟机来说是透明的,虚拟机不会感受传输的过程。
正确或者顺序是否完整,所有的这些工作都是在VM1和VM2在接收到解封装的TCP包后完成的。也就是说如果说如果被UDP封装
的是TCP连接,那么UDP和TCP将做为两个独立的协议栈各自工作,相互之间没有交互。
5 Vxlan网关
完成VXLANID和VLAN ID之间的映射和路由,和VLAN一样,VXLAN网络之间的通信也需要三层设备的支持,
即VXLAN路由的支持。同样VXLAN网关可由硬件和软件来实现。
24个bit,数量远远大于4096,并且UDP的封装可以穿越三层网络,比VLAN有更好的扩展性。
6.部署
(1)纯VXLAN部署场景
不再受三层网关的限制,可以实现跨越三层网关的迁移。
(2)VXLAN与VLAN混合部署
和普通端口。
从普通网络进入到VXLAN网络时,VXLAN网关负责打上外层包头,并根据原始VLANID对应到一个VNI,同时去掉内层包头
的VLANID信息。相应的如果VXLAN网关发现一个VXLAN包的内层帧头上还带有原始的二层VLAN ID,会直接将这个包丢弃。
之所以这样,是VLANID是一个本地信息,仅仅在一个地方的二层网络上其作用,VXLAN是隧道机制,并不依赖VLAN ID进行
转发,也无法检查VLANID正确与否。因此,VXLAN网关连接传统网络的端口必须配置ACCESS口,不能启用TRUNK口。
转载自:http://blog.csdn.net/freezgw1985/article/details/16354897