VXLAN原理以及基础应用介绍
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数据包格式:
数据包格式就截图了:
这些图都不是很明晰,看起来不方便,我就从原来是什么包,到怎么加工的后来的包,做个简单阐述:
原先的包--
[目的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. 通过其他路由协议扩展协议来学习,其他协议当做马车,拉过来信息
a) ISIS扩展,需要配置ENDS/ENDC,私有,复杂
b) BGP扩展,需要配置RR/client,私有,简单,成熟
c) SDN controller,标准协议,调用Netconf/Openflow,第一个包上送中间人controller,对控制器吞吐量要求略高
//可以看到,Vxlan在没有三层协议帮助的时候,和vlan学习极为相似。
文字很难理解,来看看图示(图C过来的)
(1).数据发起
a. 一个用户一个VNI,客户配置了VNI(100),想去VM2
b. VTEP1查找到本VNI(100),使用的组播是239.119.1.1
//注意:此时,VM1是不知道VM2的MAC的;VTEP1也是不知道哪个VTEP有VM2。
(2).寻找VM2
a. VTEP1将VM1的ARP包封装为组播包,目的地址就是239.119.1.1
b. 因为VTEP2页有VNI100,理所当然收到了这个组播包
c. VTEP拆包,发现这个客户就在自己名下,立即将VM1(MAC)和VTEP1(IP)记录在案
d. 拆包转发,VM2收到这个ARP包
(3).VM2反馈自己信息
a. VM2 收到了ARP包,和正常包一样,返回ARP回应
b. VTEP2收到了去往VM1的数据包
c. 因为VM1和VTEP1已经在流表里,发送单播给VTEP1
d. VTEP1收到了回复,也知道了VTEP2是VM2的PE
e. VTEP1将VTEP2(IP)和VM2(MAC)记录在流表
f. 拆包,将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