新一代数据中心的典型特点是从 “物理服务器互联” 转变为 “虚拟机” 互联。虚拟化技术为数据中心带来了服务器整合、业务连续性和弹资源性等优势,也给数据中心带来了新的挑战,即:如何实现针对虚拟机的服务器网络接入技术。
VEB(Virtual Ethernet Bridge,虚拟以太网交换机)是虚拟机与服务器网络接入层之间的一个新的网络层。解决的是同一服务器中不同虚拟机如何通过同一张物理网卡与外部网络进行通信,以及这些虚拟机之间如何互相通信的问题。最初为通过纯软件方式实现的 vSwitch,后续为了解决性能问题也出现了基于 SR-IOV 网卡的 Hardware-based VEB 实现。
以软件实现的 vSwitch:实现方式简单,技术兼容性好,典型软件有:Open vSwitch、VMware ESXi。
vSwitch 方案具有以下优点:
缺点:
VEB 的以上这些缺陷,最终导致了计算资源和网络资源的管理界面模糊,继而解决了服务器团队和网络团队的管理定界问题。
以硬件实现的 SR-IOV 网卡设备:借助支持 SR-IOV 特性的网卡可以实现基于 HW VEB。HW VEB 的设计思想是:将 vSwitch 的交换功能 offload 到硬件设备,通过网卡硬件改善 vSwitch 占用 CPU 资源而影响虚拟机性能的问题。HW VEB 方案必须采用支持 SR-IOV(Single-Root I/O Virtualization)特性的 PCIe 网卡,否则一张物理网卡无法映射到多个虚拟机上。
在 HW VEB 方案中的 VMM(e.g. ESXi、KVM)只需要实现 SR-IOV 网卡设备的驱动程序(e.g. 资源分配、中断处理等)而不再参与虚拟机与外部网络,以及虚拟机之间的报文转发流程。
基于 SR-IOV 技术的 HW VEB 方案的优点:
但是,HW VEB 依然存在不能有效解决虚拟机流量可视化、网络策略实施及管理可扩展性等问题,甚至会由于硬件设计、成本等原因还恶化了这些问题。
为了解决 VEB 技术存在的问题:缺乏网络流量的可视性、缺乏网络控制策略的实施能力、 缺乏管理可扩展性,需要反思两点原因:
所以,解决问题的办法自然是:
这就是所谓的虚拟机流量感知技术。对此,思科和惠普两大联盟分别提出了自己的解决方案:
思科和 VMware 主推的是 VN-Tag 技术,标准为 802.1Qbh BPE(Bridge Port Extension,端口扩展设备):尝试从接入层到汇聚层提供一个完整的虚拟化网络解决方案,尽可能达到软件定义一个可控网络的目的。它扩展了传统的网络协议,因此需要新的网络设备支持,成本较高。
惠普、Juniper、IBM、Qlogic、Brocade 主推的是 VEPA(Virtual Ethernet Port Aggregator,虚拟以太端口汇聚器),标准为 802.1Qbg EVB(Edge Virtual Bridging,边缘虚拟交换机):尝试以较低成本利用现有设备改进软件模拟的网络。
EVB 将 VEPA 作为基本实现方案,将多通道技术(Multi-Channel Technology)作为扩展方案。由于 EVB 要求将所有的虚拟机流量都引向外部的物理交换机,因此与虚拟机相关的流量监管、控制策略和管理可扩展性问题得以解决。但同时也带来了更多网络带宽开销和转发时延的问题。需要注意的是,EVB 的出现并不是完全替换 VEB 方案,但是 EVB 对于需要对虚拟机流量进行感知的场景而言,是一种优选的方案。
上图显示了 VEPA 的基本概念:在服务器中,物理网卡将虚拟端口根据一定的规则进行分组,完成端口分组(Port Group)功能。同时这个网卡设备能够对外抽象出被分为一组的端口,将属于同一组端口的数据一起投递出去,完成端口汇聚功能(Port Aggregation)。
VEPA 的核心思想是:将虚拟机产生的网络流量(包括本地流量和外部流量)全部强制地交由与服务器相连的物理交换机进行处理,然后物理交换机再将数据返回进来,而不再通过本地虚拟交换机来处理。我们知道,传统物理交换机的数据帧是不能从进口出去的,所以需要对物理交换机硬件作修改,允许其绕回。如下图,由 VM1 发往 VM2 或 VM3 的报文,首先被发往外部交换机,查表后,报文沿原路返回服务器,这种工作模式称之为发卡弯(hairpin turn)转发。
NOTE 1:以太网交换机在处理报文转发时,对于从一个端口上收到的报文,不会再将该报文从该端口发回。因此,当使能 VEPA 特性的服务器接入到一个外网交换机上时,该交换机相应端口必须支持上述 “发卡弯” 转发方式。可幸的是,当前大多数交换机的硬件芯片都能支持这种 “发卡弯” 转发特性,只要修改驱动程序即可实现,不必为支持 “发卡弯” 方式而增加新的硬件芯片。
NOTE 2:另一个由 VEPA 技术引起的变化是服务器对从外部网络接收到组播或广播报文的处理方式。由于 VEPA 从物理网卡上收到的报文可能是来自外部交换机的 “发卡弯” 报文,也就是说 srcMAC 可能是服务器上的虚拟机的 MAC 地址,这种报文必须进行过滤处理,以避免发送该报文的虚拟机再次从网络上收到自己发出的组播或广播报文。因此,当前的操作系统或网卡驱动都需要做相应的修改。
相对于 VN-Tag,VEPA 的优点在于:完全基于 IEEE 标准,不需要专用的报文格式,而且容易实现。通常只需要对网卡驱动、VMM 的 Bridge 模块和外部交换机的软件做很小的改动,从而实现低成本方案目标。
与 VEB 类似,VEPA 也同样具有纯软件和基于 SR-IOV 技术的硬件两种实现方式:
在数通网络里,想要标识流量,肯定是要使用特定的字段来做。HP 使用的是 QinQ(802.1ad),在标准 VEPA 的基础上使用 QinQ 的 S-TAG 来标识虚拟机流量,形成了增强型 VEPA,即:802.1Qbg Multi-Channel(多通道技术)。
多通道技术是一种通过给虚拟机报文增加 IEEE 标准报文标签,以增强 VEPA 功能的方案。通过标签机制,可以实现 VEB、Director IO 和 VEPA 的混合部署方案,借助多通道技术,管理员可以根据网络安全、性能以及可管理等方面的需求,灵活的选择虚拟机与外部网络的接入方案(VEB、Director IO 或 VEPA)。多通道技术由 HP 公司提出,最终被 IEEE 802.1 工作组接纳为 EVB 标准的一种可选方案。
多通道技术方案将交换机端口或网卡划分为多个逻辑通道,并且各通道间逻辑隔离。每个逻辑通道可根据用户需要定义成 VEB、VEPA 或 Director IO 的任何一种。每个逻辑通道作为一个独立的到外部网络的通道进行处理。多通道技术借用了 802.1ad S-TAG(QinQ)标准,通过一个附加的 S-TAG 和 VLAN-ID 来区分网卡或交换机端口上划分的不同逻辑通道。
多通道技术使外部物理交换机通过报文的 S-TAG 识别网络流量来自哪个 VEAP/VEB,或来自哪个 Director IO 的网卡。反之亦然。
如上图,多通道技术可组合出多种方案:
管理员通过多通道技术解决 VEB 与 VEPA 共享一个外部网络(网卡)的需求,多个 VEB 或 VEPA 共享同一个物理网卡。管理员可以为特定的虚拟机使用 VEB,以获得较好的交换性能;也可以为其他虚拟机使用 VEPA,以获得更好的网络控制策略可实施性和流量可视性。
直接将一个虚拟机映射到物理网卡上(SR-IOV VF Director IO),而其它的虚拟机仍然通过 VEB 或 VEPA 共享物理网卡。
BPE(Bridge Port Extension,端口扩展设备)是一种功能有限的物理交换机,通常作为一个上行物理交换机的线卡使用。端口扩展技术需要在标准的以太网数据帧中增加一段 TAG,端口扩展设备借助 TAG 中的信息,将端口扩展设备上的物理端口映射成上行物理交换机上的一个虚拟端口,并且使用 TAG 中的信息来实现报文转发和策略控制。当前市场上的端口扩展设备主要由思科的 Nexus 2K 和 Nexus 5K。
BPE 有 VN-Link 和 FEX 两大部分组成。VN-Link 部署在服务器的交换组件上,负责虚拟机的接入,而 FEX 部署在接入层的物理交换机上,负责虚拟机间的互通。两者配合在一起实现了虚拟机的实时感知和分布式接入,接入配置和策略的集中式分发保证了虚拟机的无缝迁移。
图中,Port Extender 向下为 VN-Link 技术,向上为 FEX 技术:
VN-TAG 体系将数据中心的接入网络虚拟成了一个大的接入交换机,由 VN-Link 充当网线,由 N2K 充当分布式线卡,N5K 充当主控板,处于任何物理位置的虚拟机都好像连接在这个大的接入交换机上。高带宽、无阻塞和低时延的优良特性使得 N2K/N5K 间网络连接能够与单机内总线相当,保证了分布式接入的性能。在 N5K 上可以基于虚拟机对应的 SVI_ID/DVI_ID 制定 ACL,QoS 和流控等高级接入策略,支持网络策略随虚拟机任意的漂移。
为了实现端口扩展(Port Extension),思科和 VMware 共同推出了 VN-TAG 标准。其核心思想是:在标准以太网数据帧中增加一段专用的标记 VN-Tag,用以区分不同的 vNIC(虚拟机的虚拟接口),从而识别特定的虚拟机的流量,并且标明了报文的广播域。可见 VN-Tag 技术是思科的一套闭源的全栈方案,VN-Tag 报文格式并不建立在 IEEE 已定义的各种标准之上的。
VN-TAG 将 6 个字节的新字段插入到 VLAN 的前面,这些字节只在 VN-TAG 设备中出现,现有的协议(包括 VLAN 的使用)不会受到任何的影响。其中,DVIF_ID/SVIF_ID 是目的/源虚拟机被分配的唯一标识,各有 12 位,通过 Port Profile 的配置与虚拟机接入端口进行一对一的通道绑定,VN-TAG 物理交换机将根据这个标识来识别虚拟机,实现网络接口虚拟化。其他的标志位用于 FEX 系统中,D 位标识报文的走向,P 位标识报文是否需要复制,L 位标识源主机和目的主机是否连接在同一台物理交换机上,R 位作为保留。
通信流程:服务器中的交换组件不进行 MAC 寻址,它接受源虚拟机的流量,封装好 VN-TAG(标记 SVI_ID),然后直接交给上游的物理交换机,上游的交换机完成 SVI_ID 对源 MAC 地址、VLAN 和入端口的学习,根据目的 MAC 地址标记 DVI_ID,然后转发给目标服务器,目标服务器根据 DVI_ID 进行通道转发,剥掉 VN-TAG 后转发给目标虚拟机。
思科针对 VN-Tag 又推出了名为 Palo 的虚拟服务器网卡,Palo 卡为不同的虚拟机分配并打上 VN-Tag 标签。如下图,上联交换机与服务器之间通过 VN-Tag,使上联交换机能区分不同虚拟机产生的流量,并在物理交换机上生成对应的虚拟接口 vIF(Virtual InterFace),和虚拟机的 vNIC 一一对应起来,这就好像把虚拟机和物理交换机直接对接起来,全部交换工作都在上联交换机上进行,即使是同一个物理服务器内部的不同虚拟机之间的流量交换,也通过上联交换机转发。
相对于 VEPA,VN-TAG 技术有一些缺点:
VN-TAG 是一种新提出的标签格式,没有沿用现有的标准(如 IEEE 802.1Q、 IEEE 802.1ad、IEEE 802.1X tags)。
必须要改变交换机和网卡的硬件,而不能只是简单的对现有的网络设备软件进行升级。也就是说,VN-TAG 的使用需要部署支持 VN-TAG 的新网络产品(网卡、交换机、软件)。
最初 IEEE 802.1 工作组曾考虑将 “端口扩展” 作为 EVB 标准的一部分,但是最终决定将端口扩展发展成一个独立的标准,即 802.1 Bridge Port Extension。Cisco 曾向 IEEE 802.1Q 工作组建议,将其私有的 VN-TAG 技术作为实现 EVB 的一种可选方案,但工作组最终没有接纳这个提案。Cisco 后来修改了 VN-TAG 技术草案,修改后的草案称为 M-TAG,该方案的主要目标仍是为了实现端口扩展设备与上行交换机之间的通信标准化。
https://wenku.baidu.com/view/fc085465312b3169a551a41d.html
https://www.internet2.edu/presentations/jt2009jul/20090719-congdon.pdf