Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

Vinllen Chen


To be a better coder

vxlan科普

  vxlan的出现是为了解决vlan的几个局限性:二层网络边界的限制、vlan数量不足、在多租户场景下的不适应。
  vxlan定义了vtep(VXLAN Tunnel End Point--虚拟扩展本地网络隧道终结节点)的实体,vtep将虚机产生的数据封装到UDP包头内再发送出去,虚机本身的MAC地址和vlan信息在经过封装后已经不作为数据转发的依据。vtep可以是软件、硬件服务器或网络设备,其实现形式非常灵活,如果将vtep的功能直接集成到虚机Hypervisor内,则所有的虚机流量在进入交换机之前已经被打上新的vxlan标签和udp包头,相当于建立了任意两点之间的隧道。
  因为虚机本身的vlan信息对外不可见,因此vxlan添加了一个新的标签VNI (VXLAN Network Identifer--虚拟扩展本地网络标识符),VNI取代VLAN用来表示不同的vxlan网段 (VXLAN Segment),只有具有相同的VNI,处于同一vxlan网段内的虚机才能互相通信。VNI为24位,可以表示的范围远超vlan的4096。
  vtep在收到虚机发来的数据封包时会添加上4个部分以形成新的帧头,它们由内而外分别是:vxlan头部、udp头部、外部三层包头、外部二层帧头。

  1. vxlan头部。一共56位,在目前版本中,其唯一作用就是携带中间的24位VNI标识,这个VNI标识是由vtep分配。
  2. UDP头部。包含了源和目的端口,源端口是数据本身的二层帧头的哈希结果,这个哈希结果可以用来作为流量负载均衡的依据。目的端口现在没有固定的端口号。
  3. 外层三层包头。外层IP包头的IP地址不再是通信双方虚机的地址,而是隧道两端的vtep地址。若Hypervisor直接承担了vtep的工作,那么此处IP地址就是运行虚拟化软件的服务器网卡IP;若vtep是接入交换机,则IP是出端口上的IP地址或三层vlan端口/SVI上的IP地址。
  4. 外层二层帧头。二层转发的头部。目的MAC地址是目的vtep设备的硬件MAC地址或者三层网关的MAC。

  有了新的帧头,vtep便可以依照VNI来决定流量的走向,然后利用外层的二层和三层帧头在普通交换机上完成数据的转发。
  vxlan同OTV一样,同样需要一个控制平面来记录对端地址的可达情况。vxlan控制平面比较简单,主要记录虚机、VNI以及vtep的对应关系。
  vxlan在学习地址的时候仍然保存着二层协议的特征,节点之间不会周期性地交换各自掌握的路由表,对于不认识的MAC地址,vxlan仍然依靠类似广播的行为来获取路径信息。vxlan选择了使用IP组播来承载二层的广播流量。每一个vtep都会加入一个特定的IGMP组播组,这个组播组就好像以太网环境中的广播域。当一个虚机发出arp请求,这个请求通过vtep封装后被发送到这个组播组内,只有加入这个组播组的vtep才会收到这个arp请求。
  对于连接到vxlan内的虚机,由于虚机的mac地址和vlan信息不再作为转发的依据,虚机的迁移也就不再受到三层网关的限制,因此可以实现跨越三层网关的迁移。
  vtep也可以是接入层的网络交换机。与服务器直接作为vtep不同,接入交换机需要区分哪些是普通流量,哪些是由虚机产生的流量,需要建立VNI与mac地址的对应关系。一个好的解决方案是利用虚拟化标准自动实现虚机的识别。802.1Br和802.1qbg都能够标识出虚机的流量,只有带有VN-TAG标签的数据才是来自虚机的数据。如果采用VN-TAG识别流量,由于VN-TAG方便级联的特性,我们甚至可以将vtep功能在汇聚设备上启用,汇聚交换机自动将下联端口上带有VN-TAG标签的数据提取出来,送进vxlan隧道。
  微软的NVGRE非常类似于VXLAN。

参考

腾云

说明

转载请注明出处:http://vinllen.com/vxlanke-pu/


About the author

vinllen chen

Beijing, China

格物致知


Discussions

comments powered by Disqus