叠加(Overlay)
在SDN讨论中经常会出现的另一个术语就是叠加网络。简而言之,叠加是用来创建虚拟的网络容器,这些容器之间在逻辑上彼此隔离,但可共享相同的底层物理网络。
网络工程师一般都很熟悉的通用路由封装(GRE),比较容易理解叠加的概念。一个数据包(或帧)封装在另一个数据包内;被封装的包转发到隧道端点后再被拆装。原来的包就发送到了目的地。叠加网络就是使用这种所谓“包内之包”的技术安全地将一个网络隐藏在另一个网络中,然后将网络区段进行迁移。2层扩展和多租户就是比较流行的叠加网络实例。
在过去几年间,个标准化组织已发布了不少的叠加协议,这是因为虚拟化数据中心需要在任意时间、任意地点移动主机的需求所致。有些SDN控制器使用叠加作为其传输选项,在散布于数据中心内的各个主机之间架起了一座桥。而软交换机通常被用作隧道的另一端。虚拟可扩展局域网(VXLAN)是目前获得业界最广泛支持的协议,思科、博科和VMware都支持叠加网络。在硬件方面支持VXLAN隧道端点的是Arista和博科的交换机。VXLAN的硬件端点正给业界带来一场剧变,因为叠加通常都是由软件交换机作为端点的。
VXLAN在3层UDP包内封装2层帧。这样做可以让一个VXLAN段内的主机彼此通信,只要它们处在同一个2层网络上,即便这些主机可能被一个或多个3层网络所隔离。
此外,由于VXLAN保留了全部的2层帧、还有VLAN标识,所以在一个VXLAN段内可允许多个3层网络存在。在该VXLAN段内的客户(也可叫做租户)会觉得这个网络很像他们以前所用过的VLAN,但底层网络只能用一个段ID来区分VXLAN的包。
每个VXLAN网络是用VXLAN包头内的段ID来区分的。这个ID有24位,也就是说可允许1600万个租户共享同一个网络基础架构,同时又可以彼此间相互隔离。
和VXLAN相似,利用GRE实现网络虚拟化(NVGRE)使用一个24位的标识符来定义租户的网络。NVGRE主要是微软开发的技术,也是其Hyper-V所使用的叠加方法。
尽管VMware坚定地支持VXLAN,但是它的叠加网络仍被称为无状态传输隧道(STT)。属于VMware旗下的Nicira。STT是Nicira网络虚拟化平台的一个组成部分,尤其需要指出的是,STT的封装格式充分利用了先进网卡的硬件能力,可以将较大的数据块分解成较小的数据块。
这被称为TCP分段卸载(TSO),一块有TSO功能的网卡可以承担分段卸载的任务,从而释放出服务器的CPU给其他任务。STT的未来尚无法确定,但VXLAN已经有了VMware的支持以及来自行业的普遍支持。
除了VXLAN、NVGRE和STT,另一个值得关注的叠加网络技术是网络虚拟化叠加(NVO3)。NVO3是由IETF的一个工作组开发的。关于NVO3的问题说明与上面已经讨论过的其他叠加技术很相像,也就是说,流量孤立、租户可自由使用所选择的寻址方案,可将虚拟机在网络内自由移动,不必考虑底层核心中3层网络的分隔等等。NVO3未来会怎么演进,如何封装尚有待观察,但NVO3工作组成员所提交的用例线路已经基本成形。
结论
对上述三大术语的讨论可归结为一点:一个无所不知的中央控制器能够发现网络交换机组成的网络拓扑结构,而无论这些交换机是在hypervisor上的软件交换机,还是在数据中心机柜里的硬件交换机。
这个中央控制器就像是在北向的应用和南向的交换机之间的一个中间件。北向应用主要向控制器阐明业务策略、网络配置和诸如此类的信息;而控制器则将这些策略和配置翻译成南向的编程指令给网络交换机。
南向协议最常用的就是OpenFlow,但要把OpenFlow加装到已有的网络硬件上是颇具挑战性的,所以厂商们都在借助API推动网络的可编程。
在这个网络可编程以及物理设备被抽象的平台上,还要再加上叠加。叠加允许希望支持多租户的云提供商和企业安全地隔离每个租户的流量,而且与此同时还允许租户的主机驻留在数据中心内的任何地方。