数据中心网络技术新贵:VXLAN 与园区网络虚拟化
摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN 技术应运而生。
1 概述
传统数据中心网络面临的问题
虚拟机规模受设备表项规格限制

在传统二层网络中,交换机通过查询 MAC 地址表来转发数据帧,虚拟机的数量受限于 MAC 地址表的容量。
服务器虚拟化后,VM 的数量比原有的物理机发生了数量级的增长,而接入侧二层设备的 MAC 地址表规格较小,无法满足快速增长的 VM 数量。
网络隔离能力限制

VLAN Tag 只有 12bit。对于大型虚拟化云计算服务的场景而言,VLAN 的隔离能力无法满足。
传统二层网络中的 VLAN 无法满足网络动态调整的需求。
虚拟机迁移范围受限

虚拟机迁移必须发生在一个二层网络中。
传统的二层网络将虚拟机迁移限制在了一个较小的局部范围内。
VXLAN 简介

VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)在本质上属于一种 VPN 技术,能够在任意路由可达的网络上叠加二层虚拟网络,通过 VXLAN 网关实现 VXLAN 网络内部的互通,同时,也可以实现与传统的非 VXLAN 网络的互通。
VXLAN 通过采用 MAC in UDP 封装来延伸二层网络,将以太报文封装在 IP 报文之上,通过路由在网络中传输,中间的传输网络无需关注虚拟机的 MAC 地址,且路由网络无网络结构限制,具备大规模扩展能力。通过路由网络,虚拟机迁移不受网络架构限制。
VXLAN 在数据中心的应用

服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为了实现业务的灵活变更,虚拟机 VM(Virtual Machine)需要能够在网络中不受限迁移,这给传统的“二层+三层”数据中心网络带来了新的挑战。为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN 技术应运而生,其能够很好地解决如下问题:
针对虚拟机规模受设备表项规格限制
o 服务器虚拟化后,VM 的数量比原有的物理机发生了数量级的增长,而接入侧二层设备的 MAC 地址表规格较小,无法满足快速增长的 VM 数量。
o VXLAN 将管理员规划的同一区域内的 VM 发出的原始报文封装成新的 UDP 报文,并使用物理网络的 IP 和 MAC 地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数。因此,极大降低了大二层网络对 MAC 地址规格的需求。
针对网络隔离能力限制
o VLAN 作为当前主流的网络隔离技术,在标准定义中只有 12bit,因此可用的 VLAN 数量仅 4096 个。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN 的隔离能力无法满足。
o VXLAN 引入了类似 VLAN ID 的用户标识,称为 VXLAN 网络标识 VNI(VXLAN Network Identifier),由 24 比特组成,支持多达 16M 的 VXLAN 段,有效地解决了云计算中海量租户隔离的问题。
虚拟机迁移范围受限
o 虚拟机迁移是指将虚拟机从一个物理机迁移到另一个物理机。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的 IP 地址保持不变,这就要求虚拟机迁移必须发生在一个二层网络中。而传统的二层网络,将虚拟机迁移限制在了一个较小的局部范围内。
o VXLAN 将 VM 发出的原始报文进行封装后通过 VXLAN 隧道进行传输,隧道两端的 VM 不需感知传输网络的物理架构。这样,对于具有同一网段 IP 地址的 VM 而言,即使其物理位置不在同一个二层网络中,但从逻辑上看,相当于处于同一个二层域。即 VXLAN 技术在三层网络之上,构建出了一个虚拟的大二层网络,只要虚拟机路由可达,就可以将其规划到同一个大二层网络中。这就解决了虚拟机迁移范围受限问题。
在园区网络中使用 VXLAN 实现“一网多用”
通过引入虚拟化技术,在园区网络中基于一张物理网络创建多张虚拟网络(VN,Virtual Network)。不同的虚拟网络应用于不同的业务,例如办公、研发或物联网等。
通过 iMaster NCE(华为园区网络 SDN 控制器)实现全网设备集中管理,管理员通过图形化界面实现网络配置。
iMaster NCE 将管理员的网络业务配置意图“翻译”成设备命令,通过 NETCONF 协议将配置下发到各台设备,实现网络的自动驾驶。
2 VXLAN 的基本概念
VXLAN 的报文格式

NVE(Network Virtualization Edge,网络虚拟边缘)

NVE 是实现网络虚拟化功能的网络实体,可以是硬件交换机也可以是软件交换机。NVE 在三层网络上构建二层虚拟网络,是运行 VXLAN 的设备。图中 SW1 和 SW2 都是 NVE。
VTEP(VXLAN Tunnel Endpoints, VXLAN 隧道端点)

VTEP 是 VXLAN 隧道端点,位于 NVE 中,用于 VXLAN 报文的封装和解封装。
VXLAN 报文(的外层 IP 头部)中源 IP 地址为源端 VTEP 的 IP 地址,目的 IP 地址为目的端 VTEP 的 IP 地址。
一对 VTEP 地址就对应着一条 VXLAN 隧道。
在源端封装报文后通过隧道向目的端 VTEP 发送封装报文,目的端 VTEP 对接收到的封装报文进行解封装。
通常情况下使用设备的 Loopback 接口地址作为 VTEP 地址。
VNI(VXLAN Network Identifier,VXLAN 网络标识)

类似 VLAN ID,用于区分 VXLAN 段。不同 VXLAN 段的虚拟机不能直接二层相互通信。
一个租户可以有一个或多个 VNI,VNI 长度为 24bit。
BD(Bridge Domain)
类似传统网络中采用 VLAN 划分广播域,在 VXLAN 网络中一个 BD 就标识一个大二层广播域。
VNI 以 1:1 方式映射到广播域 BD,同一个 BD 内的终端可以进行二层互通。
VAP(Virtual Access Point,虚拟接入点)

实现 VXLAN 的业务接入。VAP 有两种配置方式,二层子接口方式或者 VLAN 绑定方式:
二层子接口方式接入,例如本例在 SW1 创建二层子接口关联 BD 10,表示仅这个接口下的特定流量注入到 BD 10。
VLAN 绑定方式接入,例如本例在 SW2 配置 VLAN 10 与广播域 BD 10 关联,表示所有 VLAN10 的流量注入到 BD 10。
3 VXLAN 二层网关、三层网关
二层(L2)网关:实现流量进入 VXLAN 虚拟网络,也可用于同一 VXLAN 虚拟网络的同子网通信。例如下图中的 Edge1 和 Edge2。

三层(L3)网关:用于 VXLAN 虚拟网络的跨子网通信以及外部网络(非 VXLAN 网络)的访问。例如下图中的 Border。

4 VBDIF

类似于传统网络中采用 VLANIF 解决不同广播域互通的方法,在 VXLAN 中引入了 VBDIF 的概念。
VBDIF 接口在 VXLAN 三层网关上配置,是基于 BD 创建的三层逻辑接口。
通过 VBDIF 接口配置 IP 地址可实现不同网段的 VXLAN 间,及 VXLAN 和非 VXLAN 的通信,也可实现二层网络接入三层网络。
5 分布式与集中式网关
集中式网关
L3 网关部署在一台设备上。所有跨子网的流量都通过网关转发,实现流量的集中管理。
优点:跨子网流量集中管理,简化网关部署和管理。
缺点:转发路径并非最优。

分布式网关
L3 网关部署在多台设备上,VTEP 节点既是 L2 网关,又是 L3 网关。
优点:跨子网流量转发路径更优。
缺点:网关部署、故障定位及网络运维相对集中式网关复杂。VTEP 节点之间需交互及维护主机路由。

6 VXLAN 隧道的建立方式
VXLAN 隧道由一对 VTEP IP 地址确定,报文在 VTEP 设备进行封装之后在 VXLAN 隧道中依靠路由进行传输。在进行 VXLAN 隧道的配置之后,只要 VXLAN 隧道的两端 VTEP IP 是三层路由可达的,VXLAN 隧道就可以建立成功。

静态 VXLAN:隧道建立

VXLAN 隧道由一对 VTEP IP 地址确定;静态 VXLAN 隧道的创建通过手工配置本端和远端的 VNI、VTEP IP 地址来完成,只要 VXLAN 隧道的两端 VTEP IP 是三层路由可达的,VXLAN 隧道就可以建立成功。
使用 BGP EVPN 作为控制面协议
最初的 VXLAN 方案(RFC 7348)中没有定义控制平面,即用户需手工配置 VXLAN 隧道,然后通过流量泛洪的方式学习主机地址,这种方式会导致网络中存在很多泛洪流量,并且网络扩展起来困难。
为了解决上述问题,VXLAN 引入了 EVPN(Ethernet Virtual Private Network,以太网虚拟专用网)作为 VXLAN 的控制平面。EVPN 可视为 BGP 协议的一种扩展,定义了几种新的路由类型来实现 VTEP 的自动发现、主机地址学习等。

7 VXLAN 在 CloudCampus 解决方案中的典型应用
需求
Fabric 需求:
基于物理网络构建一个 Fabric。
采用分布式网关方案。
VN 需求:
创建 2 个 VN,分别为办公(OA)及研发(RD)。
缺省时,2 个 VN 完全隔离,VN 内可实现同子网、跨子网互访。
2 个 VN 均可访问 FW 所上联的外部网络。
2 个 VN 内的终端均可通过 DHCP Server 获取 IP 地址。

Fabric 管理
Fabric 创建及配置:
用户根据业务需求,将物理设备(核心交换机、汇聚交换机及接入交换机)添加到 Fabric 中。
用户指定交换机的角色:Border 节点及 Edge 节点。
iMaster NCE 自动将 Border 指定为 RR,优化网络逻辑架构、BGP 对等体关系模型。
用户预定义 2 个“外部网络”,用于供 2 个 VN 到达外部网络。
用户定义 1 个“网络服务资源”,用于后续终端通过该资源(中的 DHCP Server)获取 IP 地址。

Fabric 及 Underlay 网络自动化部署:
iMaster NCE 根据已发现的物理网络拓扑,结合用户所定义的 Fabric 网络,自动进行网络编排(用户可选择 OSPF 多区域或单区域,是否针对 OSPF 报文进行认证等)。
iMaster NCE 根据网络编排结果将 Underlay 网络配置自动下发到设备,使得设备之间 IP 可达。完成本步骤后,交换机便自动获得互联 IP 地址、VLAN 配置,以及 OSPF 配置,交换机之间实现了路由可达。
iMaster NCE 将 Fabric 配置自动下发到设备,设备之间建立 BGP EVPN 对等体关系,完成控制面的准备工作。

VN 管理
创建 VN:
用户分别创建 OA 及 RD 虚拟网络,指定虚拟网络的 IP 网段/VLAN、网关地址、所关联的外部网络及网络服务资源,以及终端接入点位。
iMaster NCE 将用户意图翻译成配置下发到网络设备上。

VXLAN 隧道自动建立
VXLAN 隧道自动建立
BGP EVPN 将用于建立 VXLAN 隧道的相关信息在对等体之间通告。
设备之间建立 VXLAN 隧道,为后续的数据转发做准备。

终端获取地址
销售员工 A 接入网络,首先完成用户认证,认证成功后,认证点 Edge1 获得该用户的授权结果,将用户划分到对应 VLAN。
A 发起 DHCP 请求,该请求到达网关设备 Edge1 后,后者将 DHCP 请求进行中继,中继报文通过 VXLAN 隧道转发给 Border。
Border 将 VXLAN 解封装,并将 DHCP 中继报文转发给 DHCP Server。
DHCP Server 为 A 分配 IP 地址。

相同 VN 内的同子网互访
销售员工 A 与 B 通过准入认证,接入园区网络。
以销售员工 B 为例,Edge2 将其 MAC 地址通过 BGP 更新报文通告给 Border,后者将其反射给 Edge1。
Edge1 学习到 MAC 地址 0000.0002。
当 A 发送数据给 B 时,流量到达 Edge1 后,Edge1 将其执行 VXLAN 封装,然后转发到 Edge2。后者 VXLAN 解封装后送达目的地。

相同 VN 内的跨子网互访
销售员工 C 通过准入认证,接入园区网络。
Edge2 将其主机路由通过 BGP 更新报文通告给 Border,后者将其反射给 Edge1。
Edge1 学习到 1.20.1/32 路由,路由下一跳为 2.2.2.2,出接口为 VXLAN 隧道接口。
当 A 发送数据给 C 时,流量到达 Edge1 后,Edge1 将其执行 VXLAN 封装,然后转发到 Edge2。后者 VXLAN 解封装后送达目的地。

访问外部网络
当用户将外部网络(目的网段为 2.3.0/24)关联到 OA 虚拟网络后,iMaster NCE 会将路由信息下发至 Border,并由 Border 将上述外部路由重分发到 BGP,通告给 Edge1 和 Edge2。
当 A 发送数据到 2.3.0/24 时,流量送达 Edge1 后,由其进行 VXLAN 封装,然后送至 Border,后者将 VXLAN 解封装,然后将 IP 报文转发给 FW。

本文分享自华为云社区《新 HCIE 知识点:VXLAN 与园区网络虚拟化》,原文作者:迷图小书童 。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce3e0accd98d549ccdc4d05cc】。文章转载请联系作者。
评论