4

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的优点

云计算出现后对网络要求得不到满足有如下三方面:
  1. 虚拟机规模受网络设备表项规格的限制
  2. 网络隔离能力有限
  3. 虚拟机迁移范围受限
VXLAN出现解决上述三点不足:
  1. VXLAN将管理员规划的同一区域内的VM发出的原始报文封装成新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数。
  2. VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,有效得解决了云计算中海量租户隔离的问题。
  3. 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运行机制理解
  1. 个人理解MAC地址学习包括两部分

    • VSI需要记录AC接口与MAC地址的绑定关系(本地MAC地址学习)
    • VSI需要记录tunnel与MAC地址的绑定关系(远端MAC地址学习)
  2. 想像一下VSI是一个交换机,交换机有两个Interface接口一个连接本地站点的网络(Interface1),一个连接远端站点网络(Interface2)。其中本地站点即一个VM(MAC地址)与Interface1接口有个对应关系,记录MAC地址与Interface1的绑定,通过学习得来。(谁发送到这个接口数据,VSI将数据解出来查看MAC地址,那源MAC就对应这个接口啦)
  3. 同样对于远端MAC地址:

    • 静态配置。
    • 动态学习:三层数据包进来的Interface有VXLAN ID,对应一个VSI,拆掉UDP信息,找到二层网络帧中的源MAC地址,此时MAC与入口的Interface2就建立了绑定关系。
  4. Interface2叫做隧道接口,因为是从VXLAN隧道对接的。
  5. VM 也需要通过ARP广播报文知道自己需要的IP地址所对应的MAC地址,否者不知道向哪里发送。

ARP泛洪抑制

  1. ARP抑制简单立即就是为了方式VM发送的ARP广播报文在网络中频繁的发送,而采取的一种机制
  2. 原理:就是在VM发送ARP广播之后,VSI先判断是否记录了这个MAC地址与IP地址的关系,如果记录了这个关系表,VSI会做ARP代答。即不会再网络中发送ARP报文,让对端VM回答ARP响应。只有在VSI中没有记录MAC地址与IP地址的关系时,才会发送ARP报文,然后双方的VSI再次进行MAC学习记录记录IP与MAC的关系。
  3. 泛洪抑制的原理就是将泛洪后的MAC地址表项记录下来。因为Overlay上都是可以看做是一个二层网络,A、B网络会通过ARP进行MAC地址与IP地址的关系记录,此时,如果VTEP上记录了其他虚拟机的MAC的话,(记录其他虚拟机MAC地址信息的表叫做ARP泛洪抑制表项),就不会广播到整个三层网络减少核心网流量,代理应答这个MAC地址请求。

图片描述

  1. 图中7,8操作就是泛洪抑制后的结果,而之前的就是泛洪的过程。

转发泛洪流量

1.上文中提到的VSI将ARP报文在网络中转发的机制叫做转发泛洪流量。
2.VTEP节点只会接受泛洪流量包,并且转发给本地站点,而不会转发给其他VTEP,目的为了防止网络报文的回环。


neilliu
59 声望9 粉丝

coder is coding code snippet,coder change the world!


引用和评论

0 条评论