VXLAN理解
本文章是基于H3C VXLAN配置手册的一些理解和心得体会。
本人计算机专业出身,从事软件开发,目前转入云网络相关工作,所以重新开始学习网络知识。
VXLAN是第一个要学习的任务,顾作为总结性的输出,目的是帮助个人理解和帮助后来人理解,如果有不对的地方也希望大神指点。
VXLAN概念
VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)是基于 IP 网络、采用“MAC in UDP”封装形式的二层 VPN 技术
PS:理解VXLAN网络之前首先要理解二三层转发的基本原理。(MAC地址学习,路由选择等)
- 因为通过定义可以看出,VXLAN技术是VPN技术的一种。所以了解VXLAN首先应该理解什么是VPN技术,VPN技术又包括L2VPN和L3VPN。
- VPN定义虚拟专用网络。
- VXLAN目的就是要在三层网络上构建一个虚拟的二层网络。
VXLAN的优点
云计算出现后对网络要求得不到满足有如下三方面:
- 虚拟机规模受网络设备表项规格的限制
- 网络隔离能力有限
- 虚拟机迁移范围受限
VXLAN出现解决上述三点不足:
- VXLAN将管理员规划的同一区域内的VM发出的原始报文封装成新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数。
- VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,有效得解决了云计算中海量租户隔离的问题。
- VXLAN将VM发出的原始报文进行封装后通过VXLAN隧道进行传输,隧道两端的VM不需感知传输网络的物理架构。(可以理解为在同一个二层网路下,对于MAC地址变更等不会有影响)
VXLAN模型
充分理解模式是理解VXLAN技术的核心
VXLAN 技术将已有的三层物理网络作为 Underlay 网络,在其上构建出虚拟的二层网络,即 Overlay 网络。
- Overlay和Underlay可以理解为是一组概念,简单理解就是Underlay是实际的物理网络,而Overlay是逻辑网络。
- 对于用户来说不感知物理网络的组网形式,只知道Overlay的逻辑网络环境。
- Overlay网络是有逻辑节点与逻辑链路组成。
根据图中的内容理解图中组成VXLAN网络的基本元素。
- VM(Virtual Machine,虚拟机):在一台服务器上可以创建多台虚拟机,不同的虚拟机可以属于不同的 VXLAN。
-
VTEP(VXLAN Tunnel End Point,VXLAN 隧道端点):VXLAN 的边缘设备。
- 边缘设备是与核心设备相对的概念,指数据中心网络中与服务器直接相连的交换机设备。
- VTEP具体的设备形态暂时不需要考虑,我们只需要关系它具有哪些功能即可。
-
VXLAN 隧道:两个 VTEP 之间的点到点逻辑隧道。
- 隧道概念:隧道技术是一种封装技术,即一种网络协议将其他网络协议的数据报文封装在自己的报文中,然后在网络中传输。封装后的数据报文在网络中传输的路径,成为隧道。虚拟点对点连接。
-
核心设备:IP核心网络中的设备。
- 核心设备不参与VXLAN处理,仅需 要根据封装后报文的目的IP地址对报文进行三层转发
- 通过图中可以看出核心设备并不做VXLAN的封装与解封装,所以核心设备只做了路由转发功能。
-
VSI(Virtual Switch Instance,虚拟交换实例):VTEP 上为一个 VXLAN 提供二层交换服务的 虚拟交换实例。
- VSI在VXLAN网络中很重要的概念。VTEP的配置源头就来自VSI
- VXLAN ID 和VSI 是一对一的关系,所以每增加一个VXLAN ID的二层网络都要有唯一的VSI实例与之对应。
- 虚拟交换机:VSI可以看成是能够实现交换机功能的软件程序,MAC地址学习、MAC地址老化、泛洪等。
- 从图中可以看出每个VSI实例分别配置在了多个需要交互的VTEP上。
-
AC(Attachment Circuit,接入电路)
-
VTEP 连接本地站点的物理电路或虚拟电路。在 VTEP 上,与 VSI 关联的三层接口称为 AC
- 三层接口能够配置IP地址,二层接口不能配置IP地址。
- 接入电路可以理解为与VM与VTEP间连接的接口。
-
通过模型理解VXLAN网络
- 根据模型不难看出,物理网络虽然是跨了三层网络,但是VTEP之下的VM之间互相认为彼此是二层可达的,也就是说他们之间是通过二层MAC地址相互通信的。
- 每个VXLAN ID构成了一个隔离的二层网络。因此可以认为图中VXLAN ID 10和VXLAN ID 20是相互隔离的。
- 如果他们是二层MAC地址相互通信,那么必然涉及到MAC地址的学习功能,所以VSI需要实现MAC地址学习功能。
- 相同的VXLAN ID 的VM之间都会维护一张MAC-IP的ARP信息表。这也是MAC地址学习的结果。
- 思考问题:如果同一个VXLANID网络下的VM都要走VTEP之间的网络进行MAC地址学习,必然会带来网络流量带宽的占用,由于VTEP之间是三层网络。而且MAC学习是一个需要经常执行的操作。如何解决呢?ARP抑制机制(后边介绍到)
VXLAN报文格式
- 标记位:“I”位为 1 时,表示 VXLAN 头中的 VXLAN ID 有效;为 0,表示 VXLAN ID 无效。
其他位保留未用,设置为 0。
- VXLAN ID:用来标识一个 VXLAN 网络,长度为 24 比特。
VXLAN运行机制
-
识别接收到的报文所属的 VXLAN,以便将报文的源 MAC 地址学习到 VXLAN 对应的 VSI,并在该 VSI 内转发该报文。
- 对于从 VXLAN 隧道上接收到的 VXLAN 报文, VTEP 根据报文中携带的 VXLAN ID 判断该报文所属的 VXLAN。(找到对应的VSI)
- 学习虚拟机的 MAC 地址。
- 根据学习到的 MAC 地址表项转发报文
VXLAN运行机制理解
-
个人理解MAC地址学习包括两部分
- VSI需要记录AC接口与MAC地址的绑定关系(本地MAC地址学习)
- VSI需要记录tunnel与MAC地址的绑定关系(远端MAC地址学习)
- 想像一下VSI是一个交换机,交换机有两个Interface接口一个连接本地站点的网络(Interface1),一个连接远端站点网络(Interface2)。其中本地站点即一个VM(MAC地址)与Interface1接口有个对应关系,记录MAC地址与Interface1的绑定,通过学习得来。(谁发送到这个接口数据,VSI将数据解出来查看MAC地址,那源MAC就对应这个接口啦)
-
同样对于远端MAC地址:
- 静态配置。
- 动态学习:三层数据包进来的Interface有VXLAN ID,对应一个VSI,拆掉UDP信息,找到二层网络帧中的源MAC地址,此时MAC与入口的Interface2就建立了绑定关系。
- Interface2叫做隧道接口,因为是从VXLAN隧道对接的。
- VM 也需要通过ARP广播报文知道自己需要的IP地址所对应的MAC地址,否者不知道向哪里发送。
ARP泛洪抑制
- ARP抑制简单立即就是为了方式VM发送的ARP广播报文在网络中频繁的发送,而采取的一种机制
- 原理:就是在VM发送ARP广播之后,VSI先判断是否记录了这个MAC地址与IP地址的关系,如果记录了这个关系表,VSI会做ARP代答。即不会再网络中发送ARP报文,让对端VM回答ARP响应。只有在VSI中没有记录MAC地址与IP地址的关系时,才会发送ARP报文,然后双方的VSI再次进行MAC学习记录记录IP与MAC的关系。
- 泛洪抑制的原理就是将泛洪后的MAC地址表项记录下来。因为Overlay上都是可以看做是一个二层网络,A、B网络会通过ARP进行MAC地址与IP地址的关系记录,此时,如果VTEP上记录了其他虚拟机的MAC的话,(记录其他虚拟机MAC地址信息的表叫做ARP泛洪抑制表项),就不会广播到整个三层网络减少核心网流量,代理应答这个MAC地址请求。
- 图中7,8操作就是泛洪抑制后的结果,而之前的就是泛洪的过程。
转发泛洪流量
1.上文中提到的VSI将ARP报文在网络中转发的机制叫做转发泛洪流量。
2.VTEP节点只会接受泛洪流量包,并且转发给本地站点,而不会转发给其他VTEP,目的为了防止网络报文的回环。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。