前戏

Overlay 网络的出现主要应对数据中心中虚拟机的迁移,打破物理地址的限制,保证在虚拟机进行迁移之后不需要重新配置网络等。Overlay 指的是一种传统网络架构上叠加的虚拟化技术模式,在对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于 IP 的基础网络技术为主。

VLAN

VLAN (Virtual Local Area Network) 意为虚拟局域网,是在交换机实现过程中涉及到的概念,由 802.1Q 标准所定义。由于交换机是工作在链路层的网络设备,连接在同一台交换机的终端处于同一个三层网中,同时也处于同一个广播域。当交换机接入较多的终端时,任意一台终端发送广播报文时(例如:ARP 请求),报文都会传遍整个网络。对于规模较大的组网场景,广播报文的泛滥对于网络通信将会造成较大的影响。VLAN 技术为这一问题提供了解决方案,VLAN 将同一网络划分为多个逻辑上的虚拟子网,并规定当收到广播报文时,仅仅在其所在 VLAN 中进行广播从而防止广播报文泛滥。VLAN 技术在链路层的层次中实现了广播域的隔离。

Overlay 网络介绍_UDP

VID 字段字段唯一标识了一个 VLAN,12bit 长度的 VID 可以表示 4096 个不同的值,除去两个保留值,一个以太网最多可以划分为 4094 个 VLAN。

VXLAN

VXLAN 由 RFC7348 定义,这是 2014 年定稿的一个协议,VXLAN 协议将 Ethernet 帧封装在 UDP 内,再加上 8 个字节的 VXLAN header,用来标识不同的二层网络。VXLAN 在三层网络基础上构建大二层网络,其物理承载是传统三层网络以及专用的 VTEP设备。VTEP(VXLAN Tunnel EndPoint)负责 VXLAN 报文的封装和解封,对虚拟机隐藏了其链路层帧的转发细节。

Overlay 网络介绍_字段_02

  • 最内层的是 VXLAN 报文,由 VXLAN 报文头部和L2帧组成。其中头部包含最重要的字段是 VNID,类似于 VLAN 中的 VID,用于分隔虚拟网络的二层域空间;
  • VXLAN 报文被 VTEP 封装在 UDP 报文中,由 VTEP 负责封装和解封;
  • Mac 帧头部和 IP 头部也是由 VTEP 进行装载,传输的过程就是从本地虚拟机所属的 VTEP 到目的虚拟机所属的 VTEP,对虚拟机隐藏底层传输细节。

VXLAN 与 VLAN 的最大区别在于,VLAN 只是修改了原始的以太网帧头部,但是整个网络数据包还是原来那个数据包,而 VXLAN 是将原始的以太网帧隐藏在 UDP 数据里面。经过 VTEP 封装之后,在网络线路上看起来只有 VTEP 之间的 UDP 数据传递,传输细节对虚拟机透明,从而做到了在 L3 网络上构建虚拟 L2 网络。

VXLAN 网络中传输的建立依赖于 VTEP 的组播实现虚拟 L2 网络的 ARP 功能。假设虚拟机 A 与虚拟机 B 要进行通信,虚拟机 A 会将以太网帧发送给本地 VTEP A,VTEP A 将该数据帧封装后进行端到端传输,发送给虚拟机B的本地 VTEP B,接下来就是解封数据帧再广播给虚拟机 B 的过程了。

优势:

  • 相比 VLAN 所支持的二层网络数量多更多
  • 更为灵活的虚拟机部署——VXLAN 可以实现构建在三层网络上的大二层网络网络,通过 UDP 在 L3 网络上传输 L2 网络数据,便于虚拟机迁移等。

缺点:

  • VXLAN 是一种 overlay 网络,不能独立存在,必须依赖 underla 网络,而在构建 underlay 网络时,还是需要借助 VLAN。
  • VXLAN 的优势是在大规模环境下,如果数据中心的规模较小,那么 VXLAN 将会浪费很多网络性能。
  • 需要专属设备支持。
  • VXLAN 因为需要进行外层封装,每个以太网帧的传输都会浪费 50 字节,对于小报文的传输将会有极大的浪费。