SDN:软件定义网络(SoftwareDefinedNetwork,SDN),是Emulex网络一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制。
当前,SDN(Software-DefinedNetworking,软件定义网络)正在成为整个ICT行业都在重点关注和津津乐道的话题,在本文中首先我想谈谈对SDN诞生的几点思考,以及经过5年研发后,我们现在对SDN的看法。
控制面抽象化
一直以来,网络管理难都是我们不得不解决的问题。比如,一台交换机所需的系统管理员支持工作量比一个计算节点高一个数量级。相比其它计算机科学技术,很难通过新增功能来实现网络技术的演进。要构建高效的系统,就需要抽象化地将网络管理难问题分模块处理。
数据面的运行速度达到纳秒级,而且完全是本地的。控制面负责决定如何配置转发状态(包括算法或手工方式)。这个过程的处理时间从几十毫秒到几天不等,并且依赖于外部的信息输入。因此,控制面从本质上来说是非本地的。
这种分层方式是互联网取得如此巨大成功的原因,并且让各层独立创新成为现实。比如,在网络中部署一项新的光学技术后,网络堆栈中其它功能都将保持不变,无须重写整个网络堆栈。这就是为什么互联网可以在架构几乎不变的情况下,在速度、规模和使用多样性方面提高了6~7个数量级。
作为SDN社区的成员,我们将数据面抽象化的做法是对的。另一方面,由于控制面只是基于各种协议,没有可重用的抽象,因此对SDN的需求与日俱增。
在我们的定义中,SDN采用两种控制面抽象化方式:(1)提供系统实施信息的网络全局视图;(2)采用OpenFlow等转发模型的网络操作系统(这些模型在网络控制层的服务器上运行)。这种定义带来了重大变化,原因在于控制机制现在只不过是使用网络操作系统API的图算法。
如今,网络管理和演进变得越来越简单。数据面完全在交换机中进行运作,而控制面在使用商用硬件和第三方软件的网络服务器上运作。此外,可以独立对控制面进行测试,无须依赖底层硬件。这让网络呈现IT化趋势。
虚拟化:SDN的杀手级应用
我们不断探索新的、更高级的模块化类型。我们曾认为,控制程序将计算出所有网络交换机的转发状态配置数据。此外,我们还曾认为数据面非常简单,而且交换机在角色和功能上变得趋同。
操作员通过控制程序下发网络需求和策略。然而,控制程序不应该负责实施这些需求。这是因为模块化的目标之一是使系统的可重用部分变得复杂化,并且让每个应用程序的待写内容变得简单。
我们正在推出一种新的、纯逻辑的虚拟拓扑抽象和新的SDN层。操作员可以通过配置逻辑交换机来下发流表项需求和策略。SDNHypervisor层将这些需求进行转化后,发送给物理交换机(可当做虚拟拓扑的编译器)。
我们已经简化了控制程序的编写方式。同时,我们让本来就很难的编译器编写工作更加困难了。
新的SDN层就是指网络Hypervisor及其虚拟拓扑。首先,根据拓扑和待完成任务来编写控制程序。然后网络Hypervisor把虚拟拓扑的汇编信息融入物理网络全局视图。最后,网络操作系统把全局视图的配置信息下发给物理交换机。
实施网络Hypervisor后,虚拟化成为SDN的杀手级应用。多租户云中心(如Rackspace、亚马逊)的大量客户正在把网络迁移到云中。为确保数据中心能够提供满足策略和需求的虚拟拓扑,网络Hypervisor需汇编数千条底层配置信息,以满足各租户的需求。SDN出现以前,对数千个虚拟网络进行动态更改是不可能的。通过简化网络管理,虚拟化为我们带来了增值,让人们愿意**SDN。
一般而言,虚拟拓扑仅仅是实施转发的逻辑网络。融入高级功能(如鉴权)后,虚拟拓扑能传达应用层面的语义(比如,允许谁和谁通话),并且允许网络Hypervisor在网络层面实施这些策略。
如今,操作员可以通过抽象方式下发需求,网络Hypervisor可完全自行决定如何满足这些需求。这一点非常重要。
起初,我们曾认为交换机在角色和功能上是相似的。目前,网络使用报文头来让主机与网络通信,或者让报文与路由器或交换机通信。收到报文后,交换机首先会问:主机需要我把这条报文发到哪里?之后,各个交换机会说:根据上个问题的答案来查找转发站,决定下发路径。
SDN为操作员提供一个清晰的全可编程方式来控制网络。然而,SDN不会分离主机网络和报文路由器接口。报文头仍用于查找路由器或交换机。
将MPLS融入SDN
多协议标签交换(MPLS)在区分网络边界和核心方面起到重要作用。报文到达第一个上层路由器时,边界路由器会问:主机想干什么?,然后在报文中加入标签,这个标签只有在本地网络中有意义。网络核心无须了解报文头,只是说:从现在起,MPLS标签足以让我了解如何转发报文。
早在5年前,我们就应该把MPLS融入SDN,让边界路由器来读取整个报文头并将MPLS标签嵌入报文,让核心路由器来读取报文。我们目前正在努力将MPLS融入SDN。
融入MPLS后,整个网络被分解成模块。在模块化网络中,各项任务只执行一次:网络边界完全负责主机接口;网络核心通过标签管理报文路由器接口;SDN管理操作员接口。
我们提出分离网络边界和网络核心的理由之一,是让网络核心专注于报文发送,而访问控制和隔离功能则由网络边界来完成。显然,网络核心必须负责报文发送,包括组播和服务质量(QoS),而其它工作由网络边界来完成。
经过简化后,网络核心只用负责一项任务,即在网络边界之间发送报文。这样一来,网络核心的工作性能得到大幅提升。
试想一下,一旦分离了网络边界和网络核心,为什么不让主机靠近网络边界呢?要实现这点,就得在主机上安装可信的硬件和软件(如主机网络接口卡)以及大量分布式系统和安全措施。不过,我们可以想象把网络部署在只看得见由主机生成的标签的位置。
过去,网络完全由硬件交换机组成。如今,软件交换机成为了常见的网络组成部分。在部署包括边界和核心部分的网络时,所有边界交换机都应该是软件交换机。这是我们的第二个激进的观点。
数据中心已经在使用虚拟交换机和Hypervisor。Verizon、AT&T和德电等大型互联网服务提供商的所有带宽都经过网络边界。为了转发这些流量,他们要花多少钱才能买到足够的网络核心设备呢?答案是他们需要花15万美元,不及一台中型路由器的价格。纵观其他企业的网络,我认为在网络边界采用软件转发这种方式并非行不通。
当然硬件转发和软件转发在速度上存在两个数量级的差别,我认为可以用软件来满足边界转发需求,提高边界软件的灵活性让我们受益;无需在网络核心实施软件交换,因为核心只负责根据标签来进行流量转发,而硬件就能实现转发。
边界软件转发让网络架构演进和多样化成为可能。整个网络中,只有网络边界的软件需要了解本领域的协议,其它网络部分无须了解协议。只需更改SDN控制程序,就能实现网络架构更新(如IPv4到IPv6)。一切就这么简单。
可以在一个域中并行运行多个架构。在一个主机中并行支持多个架构这种想法看似很激进,但所需要的改变都非常简单,都在我们的技术能力范围内。关键在于要说服人们,让他们觉得落实这个想法是值得的。
边界软件的中间件功能
最后我还要提一点。一直以来我们都认为网络数据面是平的,很简单。但现在我们应该改变这种看法。
互联网数据面只是实现尽力而为的数据转发。而实际上,很多中间件或网络设备都能扩大数据面,让数据面实现各种功能,如防火墙、LAN优化、网关、VPN、负载均衡和入侵检测。数据面一点也不简单。大中小型和超大型网络中,中间件的数量比得上路由器和交换机的数量。
有4个重要的事实值得我们注意:
第一,大多数报文是由多个中间件处理的,这些中间件检查各个报文并作出决定,如这个报文的内容与我无关,要把它扔掉、需要检查报文,明确是否有人在攻击我,或者需要实施防火墙功能以控制链接;
第二,中间件通常部署在网络边界;
第三,中间件通常使用x86处理架构,但并非所有情况都如此;
第四,中间件的报文处理流程比单纯的报文转发流程要复杂得多。
接受这4个事实后,还需要面对一个绝对无法回避的结论:SDN应该加强边界软件的中间件功能。
边界软件代表了从硬件到软件的彻底转变。硬件网络退化成为哑管道——当初没有中间件的时候,网络就是哑管道。SDN控制下的边界软件带来了有趣的转变。
SDN的颠覆性本质就体现在这个转变中。
SDN对控制面实施精细的模块化,让交换机、网络操作系统和控制程序各司其职。虚拟化让控制程序和物理网络实现解耦。作为虚拟拓扑,SDN平台能完全控制实施需求的方式,如把功能放在网络边界,让网络核心进行流量转发。软件交换正在进行中。如果担心时延问题,你可以算算目前中间件导致的时延。
总之,要利用软件交换这一趋势来灵活定义功能——就像虚拟数据中心领域一样。这场转变正在改变网络行业的性质,促进创新,强化竞争并改善客户体验。谢谢阅读,希望能帮到大家,请继续关注,我们会努力分享更多优秀的文章。