VXLAN原理以及基础应用介绍
VXLAN介绍:
我听说VXLAN的时候是IDC大举建设的时候,主要是用于处理云平台VLAN资源耗尽的问题。
等真正接触到这个技术是在城域网,用来做跨越三层设备的OverLay,其实本质上没什么区别。
为什么要在IDC上使用VXLAN呢?有三点原因:
- 原先二层技术资源不够,加上STP技术的老旧,跟不上现在的需求。现在都是虚拟机组网,要求的是迁移机器IP、MAC不变,传统很难实现。
- 小网络、私有网络的驱使。现在虚拟化厂商IRF/VPC等等的,各搞各的也不兼容,关键是对于网络架构还自己有要求。所以,打消了不同技术共同组网的念头。
- 其他的新技术不是太贵,就是太复杂。要用,好,先买线卡,之后升级软件。这是用户和运维人员最头疼的,也是最根本的原因。VXLAN好就好在对设备兼容性高,升级软件即可支持,代价小。
VXLAN是怎么实现他的价值的?
- 添加了8字节的vxlan header,其中24bit的VNI,扩展了'VLAN'的数量
- 使用了UDP作为穿越三层的头部,打通三层组建泛二层不是梦
- 作为一个三层隧道技术,它肯定要知道对应三层的IP,将打包好的数据发送给对端解析
//其他也没什么了,看起来挺简洁一技术
VXLAN数据包格式:
数据包格式就截图了:
这些图都不是很明晰,看起来不方便,我就从原来是什么包,到怎么加工的后来的包,做个简单阐述:
原先的包——
[目的MAC]|[源MAC]|[VLAN tag]|[目的IP]|[源IP]|[数据]
接入设备拿到这个包的处理过程:
- PE根据MAC流表查找此设备属于哪个VNI
- 确定需要送达的VTEP IP地址和MAC地址
- 根据获得的信息分别压入: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技术是怎么进行对话和沟通的呢?
- 组播学习对端的VTEP IP/VNI/MAC
- 如果收到了Vxlan的包,解包的时候自动学习
- 通过其他路由协议扩展协议来学习,其他协议当做马车,拉过来信息
- ISIS扩展,需要配置ENDS/ENDC,私有,复杂
- BGP扩展,需要配置RR/client,私有,简单,成熟
- SDN controller,标准协议,调用Netconf/Openflow,第一个包上送中间人controller,对控制器吞吐量要求略高
//可以看到,Vxlan在没有三层协议帮助的时候,和vlan学习极为相似。
文字很难理解,来看看图示(图C过来的)
(1).数据发起
- 一个用户一个VNI,客户配置了VNI(100),想去VM2
- VTEP1查找到本VNI(100),使用的组播是239.119.1.1
//注意:此时,VM1是不知道VM2的MAC的;VTEP1也是不知道哪个VTEP有VM2。
(2).寻找VM2
- VTEP1将VM1的ARP包封装为组播包,目的地址就是239.119.1.1
- 因为VTEP2页有VNI100,理所当然收到了这个组播包
- VTEP拆包,发现这个客户就在自己名下,立即将VM1(MAC)和VTEP1(IP)记录在案
- 拆包转发,VM2收到这个ARP包
(3).VM2反馈自己信息
- VM2 收到了ARP包,和正常包一样,返回ARP回应
- VTEP2收到了去往VM1的数据包
- 因为VM1和VTEP1已经在流表里,发送单播给VTEP1
- VTEP1收到了回复,也知道了VTEP2是VM2的PE
- VTEP1将VTEP2(IP)和VM2(MAC)记录在流表
- 拆包,将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对通信的需求为:
- 相同VNI内,VM到VM
- 不同VNI内,VM到VM
- VM到外网服务器
相同VNI内VM通信,可以通过组播直接联系;不同VNI之间的沟通,需要借助Vxlan网关;VM和外网互通,需要用到三层路由。
Vxlan网关是什么?
- 很多人都听说过多段PW(mspw),这Vxlan的网关就类似于多段PW的中间节点
- 它的功能是和不同VNI建立Vxlan隧道,解决跨VNI的沟通
- 它还同时兼任Border,当有需要访问外网的时候,它提供三层路由。
Vxlan网关的知识还涉及到网络的组网,毕竟所有的都要网关来处理它也处理不过来。
而且从安全的角度来看,也需要对网关进行备份和冗余。
这部分知识不少,下一章介绍。
2018/4/30
By Lukas