VXLAN原理以及基础应用介绍

 

VXLAN介绍:

我听说VXLAN的时候是IDC大举建设的时候,主要是用于处理云平台VLAN资源耗尽的问题。

等真正接触到这个技术是在城域网,用来做跨越三层设备的OverLay,其实本质上没什么区别。

 

为什么要在IDC上使用VXLAN呢?有三点原因:

  1. 原先二层技术资源不够,加上STP技术的老旧,跟不上现在的需求。现在都是虚拟机组网,要求的是迁移机器IP、MAC不变,传统很难实现。
  2. 小网络、私有网络的驱使。现在虚拟化厂商IRF/VPC等等的,各搞各的也不兼容,关键是对于网络架构还自己有要求。所以,打消了不同技术共同组网的念头。
  3. 其他的新技术不是太贵,就是太复杂。要用,好,先买线卡,之后升级软件。这是用户和运维人员最头疼的,也是最根本的原因。VXLAN好就好在对设备兼容性高,升级软件即可支持,代价小。

 

VXLAN是怎么实现他的价值的?

 

  1. 添加了8字节的vxlan header,其中24bit的VNI,扩展了'VLAN'的数量
  2. 使用了UDP作为穿越三层的头部,打通三层组建泛二层不是梦
  3. 作为一个三层隧道技术,它肯定要知道对应三层的IP,将打包好的数据发送给对端解析

//其他也没什么了,看起来挺简洁一技术

 

VXLAN数据包格式:

 

数据包格式就截图了:

如何查看VXLAN对应mac vxlan vpc_外网


 

如何查看VXLAN对应mac vxlan vpc_IP_02


 

这些图都不是很明晰,看起来不方便,我就从原来是什么包,到怎么加工的后来的包,做个简单阐述:

原先的包——

[目的MAC]|[源MAC]|[VLAN tag]|[目的IP]|[源IP]|[数据]

 

接入设备拿到这个包的处理过程:

  1. PE根据MAC流表查找此设备属于哪个VNI
  2. 确定需要送达的VTEP IP地址和MAC地址
  3. 根据获得的信息分别压入:VXLAN头部、UDP头部、IP头部、Eth头部

[目的MAC-VTEP][源MAC-PE][VLAN-PE到Vtep] | [源IP-PE][目的IP-VTEP] | [UDP-4798] | [Vxlan flag-8bit][Vxlan VNI-24bit] | [原包变payload]

 

Vxlan隧道建立和维护:

 

Vxlan的功能类似于VPLS和GRE,都可归类为隧道技术。隧道嘛,必须是两端都有意而且能接头才能搭上话,那么Vxlan技术是怎么进行对话和沟通的呢?

 

  1. 组播学习对端的VTEP IP/VNI/MAC
  2. 如果收到了Vxlan的包,解包的时候自动学习
  3. 通过其他路由协议扩展协议来学习,其他协议当做马车,拉过来信息
  1. ISIS扩展,需要配置ENDS/ENDC,私有,复杂
  2. BGP扩展,需要配置RR/client,私有,简单,成熟
  3. SDN controller,标准协议,调用Netconf/Openflow,第一个包上送中间人controller,对控制器吞吐量要求略高

//可以看到,Vxlan在没有三层协议帮助的时候,和vlan学习极为相似。

 

文字很难理解,来看看图示(图C过来的)

 

(1).数据发起

 

如何查看VXLAN对应mac vxlan vpc_如何查看VXLAN对应mac_03


 

  1. 一个用户一个VNI,客户配置了VNI(100),想去VM2
  2. VTEP1查找到本VNI(100),使用的组播是239.119.1.1

//注意:此时,VM1是不知道VM2的MAC的;VTEP1也是不知道哪个VTEP有VM2。

 

(2).寻找VM2

 

如何查看VXLAN对应mac vxlan vpc_外网_04


 

  1. VTEP1将VM1的ARP包封装为组播包,目的地址就是239.119.1.1
  2. 因为VTEP2页有VNI100,理所当然收到了这个组播包
  3. VTEP拆包,发现这个客户就在自己名下,立即将VM1(MAC)和VTEP1(IP)记录在案
  4. 拆包转发,VM2收到这个ARP包

 

 

(3).VM2反馈自己信息

 

如何查看VXLAN对应mac vxlan vpc_如何查看VXLAN对应mac_05


 

  1. VM2 收到了ARP包,和正常包一样,返回ARP回应
  2. VTEP2收到了去往VM1的数据包
  3. 因为VM1和VTEP1已经在流表里,发送单播给VTEP1
  4. VTEP1收到了回复,也知道了VTEP2是VM2的PE
  5. VTEP1将VTEP2(IP)和VM2(MAC)记录在流表
  6. 拆包,将VM2的答复发送给VM1

 

//此时此后,VM1知晓了VM2的MAC,VTEP1和VTEP2也知道了彼此的对应关系

//所以,以后VM1和VM2之间的对话,全部由VTEP1和VTEP2单播转发

 

 

补充:各个厂商是如何实现Vxlan的建立的?

CISCO:定义了两种接口,Switch interface和IP interface,switch接口接客户,IP接口对外,寻找VTEP。添加了NVE接口(Network Virtualization Edge,网络虚拟边缘节点),类似于隧道(类似PW),关联IP、组播group地址、Vxlan

H3C:ENDP(Enhanced Neighbor Discovery Protocol,增强的邻居发现协议),发现VTEP后,用这个协议建立Vxlan隧道

 

 

Vxlan网关:

 

真实的IDC server对通信的需求为:

  1. 相同VNI内,VM到VM
  2. 不同VNI内,VM到VM
  3. VM到外网服务器

 

相同VNI内VM通信,可以通过组播直接联系;不同VNI之间的沟通,需要借助Vxlan网关;VM和外网互通,需要用到三层路由。

 

Vxlan网关是什么?

  1. 很多人都听说过多段PW(mspw),这Vxlan的网关就类似于多段PW的中间节点
  2. 它的功能是和不同VNI建立Vxlan隧道,解决跨VNI的沟通
  3. 它还同时兼任Border,当有需要访问外网的时候,它提供三层路由。

 

Vxlan网关的知识还涉及到网络的组网,毕竟所有的都要网关来处理它也处理不过来。

而且从安全的角度来看,也需要对网关进行备份和冗余。

这部分知识不少,下一章介绍。

 

 

 

2018/4/30

By Lukas