针对如何优化数据中心以太网,支持其提供服务器虚拟化,已经出现了很多新的和推荐的协议。其中有些协议的目的是希望通过创建多个可共享同一物理基础设施的虚拟以太网来实现网络虚拟化,其共享方式有些类似于多个虚拟机共享同一台物理服务器。
 

适用于网络虚拟化的大部分协议基本上都是利用封装和隧道技术来创建虚拟网络覆盖的。其中业界讨论最多的协议包括VXLAN、NVGRE、STT和SPB MAC-in-MAC。SPB已是IEEE标准,而在有可能成为IETF标准的各种协议中,最有可能成为标准的是VXLAN。
 

传统意义的网络虚拟化
 

网络实体的一对多虚拟化并不是什么新概念。最常见的例子就是VLAN和VRF(虚拟路由与转发)。
 

VLAN可将网络划分为最多4094个广播域,在以太网报头中为每个广播域指定一个12位的VLAN ID。VLAN是在共享同一个包交换LAN基础设施中隔离不同类型流量的一种很方便的方法。

 

数据中心在大量使用着服务器虚拟化,而VLAN数量上的限制可能产生问题,尤其当大量的租户需要获得支持,每个租户都需要多个VLAN的时候。借助802.1Q的trunk链路可在数据中心内部扩展VLAN以便支持VM(虚拟机)的移动性,但这样会增加运营成本和复杂程度。即便在基于2层的服务器-服务器连接的数据中心里,大量的VM每个都有自己的MAC地址,也会给2层交换机的转发表功能带来负担。
 

VRF是3层网络虚拟化的一种,其中的物理路由器支持多个虚拟路由器实例,每个实例都运行自己的路由协议实例,维护自己的转发表。
 

和VLAN不同,VRF不会在报头中使用标签为每个分组指定具体的VRF。在每一跳都会根据输入接口和帧的信息获得适当的VRF。另外一个要求是,在数据包经过的端到端路径中的每一个中转路由器都需要配置一个VRF实例,以便能够转发该数据包。
 

利用覆盖的网络虚拟化
 

由于传统VLAN或VRF模式存在缺陷,于是开始涌现出众多创建虚拟网络的新技术。其中大多数都是采用封装和隧道技术,在同一个物理网络上通过覆盖来构建多个虚拟网络拓扑。
 

一个虚拟网络可以是2层的或3层的网络,而物理网络可以是2层的、3层的,或者两者结合的网络,这要取决于采用了何种覆盖技术。利用覆盖技术,外层(封装)报头包含一个24位长的域,携带一个虚拟网络实例ID(VNID),给要转发的数据包专门指定一个虚拟网络。


虚拟网络的覆盖可提供众多的好处,包括:

● 可支持基本上没有数量限制的虚拟网络;例如24位报头可创建高达1600万个虚拟网络。

● 可解耦虚拟网络拓扑、服务类别(L2或L3)和物理网络寻址。这种解耦可避免出现诸如物理交换机上MAC表过大的问题。

● 支持虚拟机的迁移与物理网络的无关性。如果一个VM要改变位置,甚至迁移到新的子网,在覆盖边缘的交换机只须更新其映射表便可反映出这个VM的新位置。新的VM的网络完全可在网络边缘进行预配置。

● 管理多个租户间相互覆盖IP地址的能力。

● 在虚拟网络中支持多路径转发。

各种覆盖协议之间的主要差异在于其封装格式和控制平面的功能性,即允许入口(封装)设备将一个帧映射到适当的出口(拆装)设备。
 

VXLAN
 

虚拟可扩展LAN(VXLAN)是在一个3层网络上借助MAC-in-UDP封装,叠加一个2层网络来实现网络虚拟的。VXLAN网段是一个3层构建,可替代VLAN为数据中心的VM生成LAN网段。
 

因此,一个VM只能在一个VXLAN段内通信或迁移。该VXLAN段有一个24位的VXLAN网络标识符。VXLAN对VM来说是透明的,仍可使用MAC地址来通信。VXLAN封装借助所谓VXLAN隧道端点(VTEP)来完成,该端点一般是通过一台hypervisor交换机或物理接入交换机来提供的。
 

VXLAN封装允许2层与任何端点进行通信,只要该端点在同一个VXLAN网段内即可,即便这些端点是在不同的IP子网内也没有关系。这可以让VM的实时迁移越出3层边界。因为MAC帧是在IP包内封装的,因此对个别的2层交换机来说是无需知道MAC地址的。
 

这样做可以减轻交换机出现MAC地址表的硬件容量问题。覆盖的IP和MAC地址可由VXLAN ID来处理,这个VXLAN ID就像是特定VXLAN网段的限定符/标识符,在这一网段内,IP和MAC地址都是有效的。这种VXLAN控制解决方案是使用基于任意源组播(ASM)的泛红来传播端系统位置信息的。

 

如上所述,VXLAN采用的是MAC-in-UDP封装。这么做的理由之一是现代的3层设备可解析5元组(包括4层的源和目的端口)。VXLAN虽然采用了清晰明确的目的UDP端口,但源UDP端口却可以是任何值。因此一个VTEP便可从跨很多UDP源端口的单一VM上传播所有的流。这样便允许中转的3层交换机在仅有的两个VM之间充分利用多路径,甚至是多流的优势。

在一个VXLAN覆盖网络上,如果VXLAN节点需要和网络的传统网段(例如VLAN)中的节点通信,可以用一个VXLAN网关来执行要求的隧道终端功能,包括封装/拆装。该网关的功能可利用硬件或软件来实现。


VXLAN是IETF标准草案的一个子集,支持厂商有VMware、思科、Arista网络、博科、红帽和Citrix。IBM也支持VXLAN。在hypervisor vSwitch和物理交换机上实现这个预标准的现象已开始出现。

NVGRE

采用通用路由封装的网络虚拟化(NVGRE)用的是RFC 2784和RFC 2890所定义的GRE隧道协议。NVGRE在很多方面和VXLAN相似,只有两处例外。虽然GRE封装不是什么新概念,但大多数网络设备却不会去解析硬件的GRE报头,因为这样做可能影响性能,在多路径数据中心LAN中解析流量分发的5元组哈希表也可能产生问题。

另一个例外是现有的IETF NVGRE标准草案并没有为前面在讲述一般的网络覆盖时所提到的控制平面功能指定一种解决方案,这可能得留待未来的草案去解决,或者留待SDN控制器去解决。

支持NVGRE的一些厂商(例如微软和Emulex)认为,某些性能问题可通过智能网卡来解决,即用智能网卡卸载hypervisor vSwitch上的NVGRE端点处理。智能网卡还拥有与覆盖控制器和hypervisor管理系统集成的API。Emulex还演示过可卸载VMware分布式交换机的VXLAN处理的智能网卡。

STT

无状态传输协议(SST)是在数据中心的2层/3层物理网络上创建2层虚拟网络的第三种覆盖技术。从理论上看,VXLAN和STT之间有很多相似之处。如隧道端点都是由hypervisor vSwitch提供的,VNID的长度都是24位,可通过控制传输源报头发挥多路径优势等。

STT封装在两个方面与NVGRE和VXLAN有所不同。第一,在IP报头内使用了无状态TCP类报头,允许端系统的隧道端点利用驻留在服务器网卡上的TCP卸载引擎(TOE)的TCP分片卸载功能(TSO)。

利用主机的好处包括较低的CPU使用率和较高的万兆以太网接入链路使用率。STT还可为每个数据包的元数据分配更多的头空间,而元数据则可为虚拟网络的控制平面提供额外的灵活性。有了这些功能,STT便可针对hypervisor vSwitch作为封装/拆装隧道端点进行优化。

STT IETF草案的支持厂商是Nicira,但是也没有具体的控制平面解决方案。不过Nicira自己的虚拟化解决方案包括类似OpenFlow的hypervisor vSwitch和基于中央网络虚拟化控制器的控制平面,可简化虚拟网络的管理。

最短路径桥接MAC-in-MAC(SPBM)

IEEE 802.1aq SPBM采用IEEE 802.1ah MAC-in-MAC封装和IS-IS路由协议,通过VLAN扩展来提供2层网络虚拟化,此外还有通常与SPB相关的无环路等价成本多路径2层转发功能。


VLAN扩展可借助24位虚拟服务网络(VSN)实例服务ID(I-SID)来实现,后者是外层MAC封装的一部分。和其他网络虚拟化解决方案不同的是,在hypervisor vSwitch或网卡,以及现有的支持IEEE 802.1ah MAC-in-MAC封装的交换机硬件上也无须做什么改变。对SPBM而言,控制平面是IS-IS路由协议提供的。

正如IP/SPB IETF草案所描述的,利用外层SPBM MAC的IP封装,还可对SPBM扩展以支持3层转发和3层虚拟化。这一稿草案规定了SPBM节点如何执行Inter-ISID或Inter-VLAN路由。此外,IP/SPB还可通过在网络边缘扩展虚拟路由和虚拟转发(VRF)实例提供跨SPBM网络的3层VSN,而无须也支持VRF实例的核心交换机。

VLAN扩展的VSN和VRF扩展的VSN可在同一个SPB网络上同时运行,为多租户环境提供隔离的2层和3层流量。有了SPBM,所有在接入或汇聚交换机上开始定义SPBM边界的核心交换机都必须是SPBM使能的。目前可用的SPBM硬件交换机有Avaya和阿尔卡特-朗讯的。

其他可替代方案

有关网络虚拟化的探讨,如果没有考虑到思科两种协议中的至少一种,那将是不完全的,这两种协议是:覆盖传输虚拟化(OTV)和位置/ID分离协议(LISP)。

OTV是为数据中心内的VLAN在WAN或互联网上的扩展做了优化的,采用的是MAC-in-IP封装。它使用IS-IS路由协议扩展,通过将MAC地址的可到达性广而告之,防止WAN上目的端点未知的泛洪流量。

LISP是一种IP-in-IP封装技术,即便在端系统迁移到不同子网时也允许其保留IP地址(ID)。利用LISP的VM迁移性,IP各端点,如VM,便可迁移至任何地方,而不必管它们的IP地址是什么,同时又能维持客户端流量的直接路径路由。利用映射VRF给LISP实例ID来创建3层虚拟网络的方法,LISP还可支持多租户环境。此外,OpenFlow的未来版本毫无疑问还将支持某些标准的覆盖功能。而在此之前,OpenFlow有可能提供另一种类型的网络虚拟化,即通过基于分片流来隔离网络流量来实现网络虚拟化。实现这一点的一个非常简单的方法就是通过给OpenFlow控制器增加一个过滤层来隔离MAC地址集,而不必依赖VLAN。Big Switch的v0.85 Floodlight控制器已经可提供此类功能。在多租户环境中,OpenFlow控制器也有可能支持每个租户一个分离控制器。

总结

网络领域正处在一个剧烈变化的时代。这种巨变的主要技术推手之一就是从服务器虚拟化开始的虚拟化技术的持续发展,这一发展如今已开始影响到了网络。这既包括了思科的两个协议:覆盖传输虚拟化和位置/ID分立协议,也包括了众多基于封装和隧道技术的新技术,如VXLAN等。此外,IT部门对SDN的关注程度也开始加速。网络虚拟化就是和SDN有关的主要用例之一。