新⼀代数据中⼼的典型特点是从 “物理服务器互联” 转变为 “虚拟机” 互联。虚拟化技术为数据中⼼带来了服务器整合、业务连续性和弹资源性等优势,也给数据中⼼带来了新的挑战,即:如何实现针对虚拟机的服务器⽹络接⼊技术。
VEB(Virtual Ethernet Bridge,虚拟以太⽹交换机)是虚拟机与服务器⽹络接⼊层之间的⼀个新的⽹络层。解决的是同⼀服务器中不同虚拟机如何通过同⼀张物理⽹卡与外部⽹络进⾏通信,以及这些虚拟机之间如何互相通信的问题。最初为通过纯软件⽅式实现的 vSwitch,后续为了解决性能问题也出现了基于 SR-IOV ⽹卡的 Hardware-based VEB 实现。

以软件实现的 vSwitch:实现⽅式简单,技术兼容性好,典型软件有:Open vSwitch、VMware ESXi。


vSwitch ⽅案具有以下优点:
与外部⽹络的兼容性好,不需要对外部⽹络进⾏改造。缺点:
-
占⽤服务器的 CPU 资源。
-
只能实现简单的 L2 转发。
-
缺乏⽹络流量的可视性,例如:端⼝报⽂统计、端⼝流镜像、Net Stream 等,导致虚拟机之间的流量⽆法被⽹管系统所监管,另⼀⽅⾯也使得⽹络发⽣故障时,难于定位问题原因。
-
缺乏⽹络控制策略的实施能⼒,例如:端⼝安全,QoS、ACL 等,导致限制了数据中⼼的端到端⽹络控制策略的部署能⼒。
-
缺乏管理可扩展性,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. 资源分配、中断处理等)⽽不再参与虚拟机与外部⽹络,以及虚拟机之间的报⽂转发流程。
-
对于虚拟机发往外部⽹络的报⽂,由虚拟机操作系统的驱动程序直接操作⽹卡寄存器进⾏发送;
-
对于外部⽹络发往虚拟机的报⽂,⽹卡设备根据 dstMAC,将报⽂放⼊虚拟机对应的接收队列,虚拟机操作系统的驱动程序再通过 DMA 或中断⽅式进⾏接收处理;
-
对于同⼀物理服务器中的虚拟机之间的报⽂转发,⽹卡通过查讯内部 MAC table(静态配置,通常不⽀持 MAC 学习)进⾏转发处理。

基于 SR-IOV 技术的 HW VEB ⽅案的优点:
但是,HW VEB 依然存在不能有效解决虚拟机流量可视化、⽹络策略实施及管理可扩展性等问题,甚⾄会由于硬件设计、成本等原因还恶化了这些问题。
为了解决 VEB 技术存在的问题:缺乏⽹络流量的可视性、缺乏⽹络控制策略的实施能⼒、 缺乏管理可扩展性,需要反思两点原因:
1. 虚拟机之间的本地流量不出卡。
2. 虚拟机在外部⽹络的流量没有标识信息。
所以,解决问题的办法⾃然是:
1. 把虚拟机的⽹络流量纳⼊传统⽹络交换设备的管理之中
2. 同时还需要对虚拟机的流量做标识。
这就是所谓的虚拟机流量感知技术。对此,思科和惠普两⼤联盟分别提出了⾃⼰的解决⽅案:
-
思科和 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 技术的硬件两种实现⽅式:
Intel x710 VEPA:

在数通⽹络⾥,想要标识流量,肯定是要使⽤特定的字段来做。HP 使⽤的是 QinQ(802.1ad),在标准 VEPA 的基础上使⽤ QinQ 的 S-TAG 来标识虚拟机流量,形成了增强型 VEPA,即:802.1Qbg MultiChannel(多通道技术)。
多通道技术是⼀种通过给虚拟机报⽂增加 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 的⽹卡。反之亦然。

如上图,多通道技术可组合出多种⽅案:
1. 管理员通过多通道技术解决 VEB 与 VEPA 共享⼀个外部⽹络(⽹卡)的需求,多个 VEB 或 VEPA共享同⼀个物理⽹卡。管理员可以为特定的虚拟机使⽤ VEB,以获得较好的交换性能;也可以为其他虚拟机使⽤ VEPA,以获得更好的⽹络控制策略可实施性和流量可视性。
2. 直接将⼀个虚拟机映射到物理⽹卡上(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-Link 由⽀持 VN-TAG 的⽹卡实现,如 Cisco UCS ⼑⽚服务器中集成的 Palo,该⽹卡只负责 VNTAG 的封装/解封装,不做任何策略相关的⼯作。
-
FEX 技术由 Cisco 的 N2K/N5K 组合实现,⽀持以级联⽅式组⽹,其中 N5K 负责寻址转发和策略的制定,N2K 则作为 N5K 的远端板卡部署在 TOR 实现分布式接⼊,N5K 通过 VIC 协议分发给N2K,实现分布式转发。
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 技术有⼀些缺点:
最初 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
九州云成立于2012年,是中国早期从事开放基础架构服务的专业公司。公司成立八年,秉承“开源 · 赋能变革”的理念,不断夯实自身实力,先后为政府、金融、运营商、能源、制造业、商业、交通、物流、教育、医疗等各大行业的企业级客户提供高质量的开放基础架构服务。目前拥有国家电网、南方电网广东公司、中国人民银行、中国银联、中国移动、中国电信、中国联通、中国资源卫星、eBay、国际陆港集团、中国人寿、万达信息、东风汽车、诺基亚等众多重量级客户,被用户认可为最值得信赖的合作伙伴。