当前,SDN(Software-Defined Networking,软件定义网络)正在成为整个ICT行业都在重点关注和津津乐道的话题,在本文中首先我想谈谈对SDN诞生的几点思考,以及经过5年研发后,我们现在对SDN的看法。
控制面抽象化
一直以来,“网络管理难”都是我们不得不解决的问题。比如,一台交换机所需的系统管理员支持工作量比一个计算节点高一个数量级。相比其它计算机科学技术,很难通过新增功能来实现网络技术的演进。要构建高效的系统,就需要抽象化地将“网络管理难”问题分模块处理。
数据面的运行速度达到纳秒级,而且完全是本地的。控制面负责决定如何配置转发状态(包括算法或手工方式)。这个过程的处理时间从几十毫秒到几天不等,并且依赖于外部的信息输入。因此,控制面从本质上来说是非本地的。
这种分层方式是互联网取得如此巨大成功的原因,并且让各层独立创新成为现实。比如,在网络中部署一项新的光学技术后,网络堆栈中其它功能都将保持不变,无须重写整个网络堆栈。这就是为什么互联网可以在架构几乎不变的情况下,在速度、规模和使用多样性方面提高了6~7个数量级。
作为SDN社区的成员,我们将数据面抽象化的做法是对的。另一方面,由于控制面只是基于各种协议,没有可重用的抽象,因此对SDN的需求与日俱增。
在我们的定义中,SDN采用两种控制面抽象化方式:(1)提供系统实施信息的网络全局视图;(2)采用OpenFlow等转发模型的网络操作系统(这些模型在网络控制层的服务器上运行)。这种定义带来了重大变化,原因在于控制机制现在只不过是使用网络操作系统API的图算法。
如今,网络管理和演进变得越来越简单。数据面完全在交换机中进行运作,而控制面在使用商用硬件和第三方软件的网络服务器上运作。此外,可以独立对控制面进行测试,无须依赖底层硬件。这让网络呈现IT化趋势。
虚拟化:SDN的杀手级应用
我们不断探索新的、更高级的模块化类型。我们曾认为,控制程序将计算出所有网络交换机的转发状态配置数据。此外,我们还曾认为数据面非常简单,而且交换机在角色和功能上变得趋同。
操作员通过控制程序下发网络需求和策略。然而,控制程序不应该负责实施这些需求。这是因为模块化的目标之一是使系统的可重用部分变得复杂化,并且让每个应用程序的待写内容变得简单。
我们正在推出一种新的、纯逻辑的虚拟拓扑抽象和新的SDN层。操作员可以通过配置逻辑交换机来下发流表项需求和策略。SDN Hypervisor层将这些需求进行转化后,发送给物理交换机(可当做虚拟拓扑的编译器)。
我们已经简化了控制程序的编写方式。同时,我们让本来就很难的编译器编写工作更加困难了。
新的SDN层就是指网络Hypervisor及其虚拟拓扑。首先,根据拓扑和待完成任务来编写控制程序。然后网络Hypervisor把虚拟拓扑的汇编信息融入物理网络全局视图。最后,网络操作系统把全局视图的配置信息下发给物理交换机。
实施网络Hypervisor后,虚拟化成为SDN的杀手级应用。多租户云中心(如Rackspace、亚马逊)的大量客户正在把网络迁移到云中。为确保数据中心能够提供满足策略和需求的虚拟拓扑,网络Hypervisor需汇编数千条底层配置信息,以满足各租户的需求。SDN出现以前,对数千个虚拟网络进行动态更改是不可能的。通过简化网络管理,虚拟化为我们带来了增值,让人们愿意投资SDN。
|