本节书摘来自异步社区《思科数据中心I/O整合》一书中的第2章,第2.13节,作者【美】Silvano Gai , Claudio DeSanti,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.13 VEB:虚拟以太网桥接
思科数据中心I/O整合
很久以前,服务器还只有单一的CPU、一块以太网网卡(带有一个MAC地址),并且运行在一个操作系统上。而现在,服务器变得越来越复杂,它们可以拥有多个CPU芯片(例如,多个插槽),每一个CPU芯片都包含多个CPU(例如,多个CPU内核),而且每一个CPU都能够并发执行一个或多个线程。这些服务器具有很高的I/O要求,并且使用多个以太网NIC连接网络,用以保证性能和高可用性。这些NIC会进一步得到发展,以便支持SR-IOV和服务器虚拟化。
服务器虚拟化
服务器虚拟化是唯一一种不需要修改/重写应用程序就能够使用全部内核的技术。VMware ESX、Linux XEN和Microsoft Hyper-V都是非常出名的虚拟化解决方案,支持在一台服务器上通过虚拟机管理程序(Hypervisor)运行多个虚拟机(VM)。
虚拟机是一个逻辑服务器实例,它的行为与独立服务器完全相同,但是它与其他虚拟机共享硬件资源,特别是在这里讨论的网络资源。
除了其他的功能外,虚拟机管理程序还使用“软件交换机”模块实现虚拟机之间的通信,实现了与独立服务器不同的模型。
独立服务器会通过专用交换机端口连接一台或多台以太网交换机(参见图2-32)。应用到以太网交换机端口(如图2-32中虚线所示)的网络策略也能够有效地应用到独立服务器上。
虚拟机上运行的逻辑服务器能够连接虚拟机管理程序的软件交换机模块,然后再连接一台或多台以太网交换机(参见图2-33)。应用到以太网交换端口(如图2-33中虚线所示)的网络策略并不一定有效,因为它们应用到了所有虚拟机上(例如,逻辑服务器),且无法专门应用到某个特定的逻辑服务器上。
根据源MAC地址来指定这些策略并非特别有效,因为虚拟机所使用的MAC地址由虚拟化软件所分配,可能会发生变化。而且,系统也可能会受到MAC地址欺骗攻击,例如,虚拟机可能会试图使用另一个虚拟机的MAC地址。
使用虚拟化软件,系统管理员还能够在不同物理服务器之间移动虚拟机,这样会增加网络策略的管理复杂性。虚拟机的数量会远远大于物理服务器数量,从而会引起可扩展性和可管理性问题。
SR-IOV
PCI-SIG有一个小组在专门制定支持I/O虚拟化(IOV)网卡的标准规范。其中关系最密切的是单根I/O虚拟化(Single Root IOV,SR-IOV),它能够处理串行总线(PCI Express)中单根拓扑的I/O虚拟化。这种设备允许多个虚拟机共享串行总线(PCI-Express)设备,从而能够工作在服务器虚拟化环境下,还可能绕过虚拟机管理程序(Hypervisor)。
IEEE标准化进程
从IEEE 802.1工作组建立以来,IEEE一直都在进行以太网交换方面的标准化工作,最近,IEEE决定扩展IEEE 802.1,使之覆盖虚拟化以太网网桥(VEB)。可以从以下两个方面进行突破:
将策略实施和管理移到以太网适配器内部;
由以太网交换机携带虚拟机的身份标识。
思科还开始开发一种名为VN-Link的新架构,其中包括一些兼容IEEE标准的产品。
适配器VEB
所谓“适配器VEB”,是指在网卡(NIC)上实现VEB(参见图2-34)。这就意味着,大型网卡(NIC)制造商将会开始在他们的网卡中集成以太网交换机,使之具有增加网络策略的能力。
乍一看,这种解决方案似乎很吸引人,因为它不会改变网卡与以太网交换机之间链路上的帧格式,然而,它也有一些严重的缺点:网卡必须实现完整的以太网交换机功能,包括所有安全组件,这样不仅会增加成本和复杂性,并且还会影响其他上层协议(ULP)特性的使用,如TCP卸载、RDMA、FC/SCSI、IPC队列对等。
随着处理器功能的增强和内存容量的增加,虚拟机数量也随之增加,从而也会出现与所支持虚拟机数量相关的潜在扩展性问题,因为每一个虚拟机都需要使用网卡的硬件资源。
适配器VEB在管理方面也存在问题。服务器通常由IT工程师管理,而网络一般由另一组网络工程师管理,而适配器中的VEB要求这两个小组进行协作,共同管理服务器,这样就会增加额外的运营开销。
为了克服这些局限性,标准组织开发了交换机架构VEB。
交换机VEB
“交换机VEB”解决方案将与性能密切相关的复杂数据寻址功能放到一台外部的以太网交换机上,如图2-35所示。以太网交换机负责保证所有虚拟机的特性统一,使之不受它们所在位置的影响(例如,与逻辑服务器所在的虚拟机管理程序或物理服务器无关)。
需要管理的交换机数量并不会增加,因为网卡内部并不存在交换机。网络管理员并不需要管理服务器组件。
通过改进数据移动和上层协议特性,如TCP卸载、RDMA和FC/SCSI,网卡设计人员可以使用现有的逻辑方法提高网卡到上层协议的性能。
这种方法需要在网卡和以太网交换机之间开发新的以太网标记模式,用来确定与帧相关的虚拟网卡(vNIC)。思科率先提出了虚拟网卡标签(VNTag)模式。这是一种接口虚拟化(IV)模式,它能够将虚拟机接口移到外部以太网交换机上,并将它们变成虚拟化接口。这种新型虚拟化接口即所谓的虚拟化以太网(Veth),以太网交换机可以将它们视为物理端口。以太网交换机可以在Veth上执行在物理端口上能够执行的任何操作。
这种新标签会将每一个虚拟网卡绑定到一个Veth上,反之亦然。策略先应用到Veth上,从而再应用到vNIC上。这些策略包括访问控制列表(ACL)、流量管理(例如,PFC和ETS参数)、身份验证和加密等。
这种新标签比MAC地址更难伪装,因为它由NIC或虚拟机管理程序插入到数据帧中,而不是由虚拟机插入。
当虚拟机从一台服务器迁移到另一台服务器时,它的vNIC、Veth和策略也会随之迁移。这样就能够保证特性与策略的一致性,而不受虚拟机位置的影响。
这种方法的实现要求在网卡和以太网交换机之间使用一种控制协议,来创建、分配、修改和终止vNIC与Veth之间的关系。例如,当虚拟机从主机A迁移到主机B时,这个控制协议会负责终止主机A所连接的以太网交换机的vNIC/Veth,然后在主机B所连接的以太网交换机上创建这些vNIC/Veth。此外,Veth的移动意味着相关策略也会随之发生移动。
在图2-35中,NIC包含一个接口虚拟器(例如,执行进出vNIC帧调度的实体)。接口虚拟器并不是交换机(例如,两个vNIC之间不允许直接通信)。接口虚拟器只允许一个vNIC与以太网交换机进行通信,然后这个以太网交换机再与一个或多个vNIC进行通信。
以太网交换机模型并没有发生变化:以太网交换机仅仅是增加了端口数量(Veth),每一个端口连接一个vNIC。虚拟端口的以太网交换机功能并没有发生变化。
VNTag
VNTag是一种以太网标签,在MAC-DA和MAC-SA之后被插入到以太网帧头中(参见图2-36),它的前面可能是IEEE MACsec(身份验证与加密)标签。
VNTag将扩大以太网交换机的转发能力,使之能够运行于虚拟化环境中。事实上,如果源及目标Mac地址来自于同一个端口,那么传统以太网交换机不会转发该数据帧,因此它也无法在连接到同一交换机端口的两台虚拟机之间转发数据帧。VNTag会为每一个虚拟机在交换机上创建虚拟以太网接口,从而能够解决这一问题。由于交换机能够在虚拟以太网接口之间进行流量转发,所以它能够在连接到同一个物理端口的虚拟机之间转发流量。
VNTag是一个6字节标签,其格式如图2-37所示。在交换机VEB和接口虚拟器之间会使用该标签。它的主要概念是“vif ”(即虚拟接口标识符),VNTag中的vif是src_
vif(源vif)和dst_vif(目标vif)。
VNTag开头是两个字节的Ethertype = VNTag,用于标识这种类型的标签。下面是接下来的4个字节。
v:version:表示帧头所带VNTag协议的版本,目前版本为0。
r:reserved:这是保留域。
d:direction:d = 0表示该帧从接口虚拟器发送到以太网交换机,d = 1表示该帧从以太网交换机发送到接口虚拟器(一个或多个vNIC)。
dst_vif & p:pointer:当从以太网交换机向接口虚拟器发送数据帧时,这些域用来选择接收数据帧的下行链路接口。显然,当d = 1时,它们才有效;当d = 0时,这些域也必须设置为0。
p = 0表示dst_vif选择一个vNIC,通常用于转发单播帧。
p = 1表示dst_vif是虚拟接口清单表的索引,这种情况用于组播帧的传输。
src_vif:表示发出该数据帧的源vNIC。从接口虚拟器转发到以太网交换机(d = 0)的所有帧都必须设置src_vif。此外,转发到接口虚拟器的帧可以设置src_vif以表示环路。
l:looped:表示以太网交换机将数据帧回送到发出该帧的接口虚拟器。在这种情况下,接口虚拟器必须保证设置src_vif的vNIC不接收这个帧,因为该数据帧是它自己发出的。
vif只是vNIC与指定链路Veth之间关联的标识符,用于表示一种本地链路归属关系(以太网交换机的物理端口),并且它在网络中并不是唯一的。如果虚拟化发生迁移,vNIC和Veth也会随之迁移,当前链路的vNIC和Veth之间的关联就会结束,然后新的链路会创建新的关联。新关联再由新链路的本地有效的vif进行标识,它可能与前一个vif截然不同。
VNTag的应用和删除可以通过支持VNTag的NIC硬件或虚拟机管理程序的软件来实现。
接口虚拟器一般位于服务器的NIC之中,但是它也可能位于独立的设备上,该设备可以作为连接以太网交换机的远程多路器。这种设备通常称为矩阵扩展器(Fabric Extender)。
矩阵扩展器(Fabric Extender)
矩阵扩展器是独立实现的接口虚拟器,它对上行以太网交换机使用VNTag标记。矩阵扩展器也可以看作是以太网交换机的远程线卡,或者看作是以太网多路复用器。它的主要目标是在不增加管理节点的前提下增加可用端口的数量,作为一个简单设备,它还能够减少解决方案的总成本。Nexus 2000系列交换机就是一种矩阵扩展器。思科统一计算系统(UCS)也使用了矩阵扩展器。
图2-38显示了3台结构扩展器与两台以太网交换机相连的网络结构,通过虚线的链路都使用VNTag封装。
例如,矩阵扩展器可能是1 RU(机架单元),带有48个连接服务器的1GE端口,以及4个连接以太网交换机的10GE上行链路。在这种情况下,矩阵扩展器使用48个vif,每一个1GE端口对应一个vif,但是1GE端口上不使用VNTag。
矩阵扩展器的上行链路可以通过以太网通道进行聚合。在图2-38中,最左边和最右边的矩阵扩展器分别将4个上行链路聚合成一组,再连接一个以太网交换机;中间的矩阵扩展器也将4个上行链路分聚合成为一个以太网通道,但是会连接到两台独立的以太网交换机;在后一种配置中,两台以太网交换机或者属于VSS的组成部分,或者运行vPC,或者是L2MP云的DBridge。
Nexus 5020,作为唯一管理节点,可以连接12台矩阵扩展器(每台矩阵扩展器支持以4个10GE端口连接到Nexus 5020上,在Nexus 5020上总共支持48个10GE端口),从而可以在12 RU中支持总共576个1GE端口。事实上,矩阵扩展器并不是独立被管理的设备,只有Nexus 5000才是。
另一个例子是在矩阵扩展器中使用32个10GE端口连接服务器,使用8个10GE端口连接以太网交换机。在这种情况下,矩阵扩展器使用256个vif,并且将它们动态分配到32个10GE端口上,同时对服务器使用VNTag,这样就阐明了对已经使用VNTag的链路进行聚合的可能性。
5台这样的矩阵扩展器以及一台Nexus 5020,利用统一网络(Unified Fabric)的支持,就可以在7 RU中提供160个10GE端口,并且它们只需要使用一个管理节点。
矩阵扩展器可以部署在靠近服务器的位置,而且服务器与矩阵扩展器之间可以采用廉价的铜线连接。以太网交换机可以部署在机柜末端(EOR),然后在矩阵扩展器和以太网交换机之间使用价格更高的光纤连接。最终的解决方案是超配的(Oversubscribe),但是却能够以较低的价格实现10GE连接,并减少了管理节点的数目。
VN-Link
虚拟网络链路(Virtual Network Link,VN-Link)由思科公司和VMware公司合作开发,目标是解决VEB等问题。VN-Link拉近了服务器与网络的距离,从而简化虚拟化环境的管理与监控。VN-Link能够通过统一的策略管理实现整个网络的虚拟机可见性和移动性。
作为VN-Link开发的组成部分,IEEE 802.1提交了一个规范,在硬件网络平台上通过交换机VEB支持网络接口虚拟化。
1.VN-Link与Nexus 1000V
Nexus 1000V是第一个实现VN-Link架构的产品,它是一个嵌入到VMware ESX虚拟机管理程序的思科软件交换机。它符合思科与VMware合作开发的VMware虚拟化网络分布式交换机(vNDS)的API接口标准。当VMotion或分布式资源调度器(DRS)移动虚拟机时,虚拟机策略也会随之应用和迁移,不仅策略会跟随虚拟机一起移动,统计计数器、Netflow状态和ERSPAN会话也会随之移动。
网络策略即是端口模板(Port Profile),由网络管理员在Nexus 1000V上使用CLI命令创建。端口模板会自动传输到VMware虚拟中心(Virtual Center)内部。在VMware虚拟基础架构的客户端内部端口模板作为端口组(Port Group),而服务器管理员可以将它们分配给vNIC,然后再分配给虚拟机。
端口模板构成了VN-Link,它能够在服务器管理员和网络管理员之间建立协同操作模型,而且不要求他们使用任何新管理工具。
Veth和端口模板都是实现自动化虚拟机连接和策略移动性的基础(例如,允许接口配置、接口状态和接口统计信息跟随虚拟机在服务器之间移动),这样也能够保证安全和连接策略的持续性。
Nexus 1000V是Nexus交换机产品线的一员,它运行NX-OS。图2-39显示了Nexus 1000V的基本构成,“Nexus 1000V VEM”(虚拟以太网模块)安装在VMware ESX中,可以通过Nexus 1000V虚拟化管理模块(Nexus 1000V Virtual Supervisor Module,VSM)进行远程配置和管理,VSM运行在NX-OS设备(物理的或者虚拟的)或Nexus交换机(如Nexus 5000或Nexus 7000)上。在图2-39中,虚线表示VEM和VSM之间的管理和配置关系,一个VSM可以管理多个VEM。此外,VSM可以为服务器管理员维护VMware虚拟中心的配置模型。
作为Nexus产品线的成员,Nexus 1000V在常规软件交换机之上还提供许多增值特性,如ACL、QoS标记和排队、Cisco TrustSec、CDP v2、Netflow V9、端口模板、Cisco CLI、XMP API、SNMP读/写、详细接口计算器与统计、端口安全性等。例如,它支持封装的远程SPAN(Encapsulated Remote SPAN,ERSPAN),同样是在虚拟机迁移过程中,它能够将虚拟机流量映射到位于数据中心中央的外部嗅探器上(Sniffer)。
2.VN-Link与Nexus 5000
Nexus 5000支持VN-Link架构。它可以作为交换机的VEB,在虚拟机管理程序的接口虚拟器与Nexus 5000之间使用VNTag。
接口虚拟器负责为离开虚拟机的帧添加标签,可以通过以下两种方式来实现。
第一种方法是在虚拟机管理程序的软件交换机(Nexus 1000V或VMware交换机)中应用VNTag,然后再将数据包转发到Nexus 5000。
第二种方法是使用支持在硬件中添加VNTag的NIC(例如,SR-IOV NIC)。在这种方法中,SR-IOV NIC还可以实现虚拟机管理程序旁路。
和在Nexus 1000V上使用VN-Link相比,Nexus 5000上使用VN-Link也具有相同的外部行为和优点,但是所有以太网特性(交换、ACL、ERSPAN、QoS等)都会线速的在Nexus 5000的硬件中执行。
和前一种情况一样,网络策略仍然按照端口模板进行定义,VMotion/DRS及其他VN-Link特性也一样被支持。