首页 > 新闻 > 专家观点 >

数据中心2014:软件定义的网络

2014-12-16 13:35:26   作者:   来源:ZDnet   评论:0  点击:


  软件定义网络(SDN,一般认为是Software Defined Networking)在数年前兴起,并迅速引起了软件定义的风潮,将软件定义的理念应用到各个领域,如:软件定义计算(SDC,Software Defined Compute)、软件定义存储(SDS,Software Defined Storage),还有软件定义数据中心(SDDC,Software Defined Datacenter)、软件定义环境(SDE,Software Defined Environment)等等等等。

  为什么软件定义的概念首先在网络领域得到应用呢?网络和计算、存储不同——实际上,计算和存储非常相像,稍微大型的存储设备都需要一定的运算能力来实现相当部分(如果不是所有部分的话)的存储功能,因此它们的架构实际上有很多相似的部分,这也是融合系统乃至超融合系统得以很快实现的原因:本质上我们的(计算)服务器和存储服务器没有区别。

  实质上说,所有的网络设备都是在硬件上运行网络操作系统,然而在过去数十年来,不管是硬件上,还是在软件上,网络设备的互操作性都很低,不同公司的产品具有不同的设置界面/命令行,而即使是同一公司的产品,不同的产品线可能也会具有不同的操作系统乃至操作界面。曾几何时,配置网络设备本身就形成了一个职业:网络管理员。有些糟糕的是,过去了这么多年,即使是最新的设备,也仍然需要使用效率低下的配置方法,至多是提供了载入配置文件的手段。-

  随着数据中心规模的变大,网络规模也在变大,而网络设备的难以应用和管理显然是一个限制。而SDN——软件定义网络——最早就是为了解决这个配置的问题:通过一个集中的控制器,管理着多个特殊的交换机,从而实现网络控制、管理的功能。SDN架构最早的设想是用于网络安全领域,后来扩展到通用网络设备领域,并发展为OpenFlow规范。不管是原始的OpenFlow,还是后来兴起的OpenDaylight、NFV或者ONSOS,这些典型的软件定义网络都具有相似的架构,它们都将网络划分为三个名字可能有所不同但功用相似的平面:Data Plane(数据平面)、Control Plane(控制平面)和Application Plane(应用平面),并在控制平面实现集中式的控制器,从而提供给用户一个快速的、统一的、方便的配置管理界面,更进一步地,通过控制平面提供的API,用户可以在应用平面进行开发,从而实现全自动化的网络架构控制。

  显而易见,全自动化的网络配置和管理相对以往的命令行或者寻常的GUI配置方式是一个巨大的进步。在出现之后,只经过了数年,SDN就迅速成为了一股浪潮。到2014年为止,大部分传统的厂商也已经开始生产SDN相关的设备,并且很多软件厂商也开始进入这个市场——主要是Hypervisor厂商,因为Hypervisor可以和虚拟交换机vSwitch结合,从而掌握了网络与计算之间的边界,可以很容易通过SDN实现复杂灵活的网络功能。

  软件定义网络将更强大的计算属性引入了网络领域。在之前,网络和计算设备(服务器)、存储设备(存储控制器/服务器)不一样,从外观上看,网络设备有较大的硬件成分属于网络接口,并且,网络设备最基本的功能就是进行网络传输。因此,对IO的性能、延迟要求比较高,因此网络产品倾向于使用硬件来实现各种各样的功能。通常,在不考虑SDN的情况下网络设备的芯片内部都会划分Data Plane(数据平面)和Control Plane(控制平面),如加密等功能通过各种额外的数据平面硬件模块来实现,对应的控制平面则采用较弱的RISC架构CPU,如网络芯片中曾占据统治地位的MIPS架构,以及现在家用芯片上盛行的ARM架构,和偶尔可以看到的PowerPC架构,还有一些厂商专有的架构。一般来说网络分层中越处于高层协议的设备,其CPU就会越强,因为需要的控制逻辑会越多,简单的L2交换机对CPU的需求很低,而处于L1的中继器干脆就是个纯硬件设备。

  总体来说传统网络设备是偏向数据包收发功能的硬件设施,到了软件定义时代,网络设备需要更多的计算能力来实现软件部分的功能,也就是更偏向控制逻辑部分,例如要实现SDN架构的南向API,在ONF中就是OpenFlow,在OpenDaylight中则更复杂,有OpenFlow,也有NETCONF/YANG等等,还要实现通过南向API接受SDN控制器发来的指令,总之,SDN中,即使是处于Data Plane的交换机等设备相比以往也需要更强大的计算能力,而处于Control Plane中的SDN控制器干脆就是一个(或者一组)运行在服务器上的虚拟机。

  软件定义网络提供了一个使用通用服务器代替旧有的专用硬件的机会。软件定义网络并未要求数据平面的网络设备一定要运行在通用服务器上,不过使用通用服务器的好处就在于,它和计算服务器、存储服务器可以是没有什么区别的,或者甚至就是一样的,因此它的成本可以相当低,不管是CAPEX还是OPEX。通用服务器可以提供所需要的强大计算能力,来充分满足Control Plane层的需要。在现下一些完全虚拟化的环境当中,SDN的Data Plane通过虚拟交换机来实现,实质上运行于Hypervisor当中,Control Plane就是一台虚拟机,VMware vSphere/NSX、Hyper-V/Hyper-V vSwitch和KVM/Open vSwitch的方案都是一样,大部分的较为复杂网络功能都由通用的服务器担当了,需要的仅仅是一些二层的接入交换机。

  采用通用服务器的另一个好处是开发很简单,这牵涉到了生态系统的问题,生态系统越大,那么开发成本(包括人员费用)、维护成本以及管理都比专有系统要低。

  通过在《数据中心2013:硬件重构与软件定义》对软件定义网络的介绍,SDN可以让网络更加灵活、易于管理已经没有疑问了,使用通用服务器做Control Plane也已经成为了广泛的现实,但最关键的问题还有一个:数量庞大的Data Plane设备。Data Plane需要性能,专有系统是为了专门的目的设计和优化的,通用的系统则要面对着更广泛的应用,实际上是一个对“通用”这个目标做的专门设计。例如,在四五年前,X86被认为不适用于网络架构当中的Data Plane部分,因为其IO能力很受限制。这有指令集的缘故,也有内存接口、IO接口以及内部处理逻辑的缘故。

  但是情况很快有了变化,从Nehalem-EP(至强5500)开始,英特尔的服务器处理器开始集成内存控制器,从而提升了对IO的处理——因为IO的处理牵涉到很多DMA(直接内存存取),一个网络包的处理可能需要经过多次存取内存,因此这个改动提升了性能。到了Sandy Bridge-EP(至强E5),处理器开始对PCI Express总线进行了集成,并将PCI Express总线升级到速率达8GT/s的3.0规范,这个特性被称为Integrated I/O,这大幅度提升了IO性能,到了此时,使用x86平台搭建的网络设备已经开始变得多了起来。

  但更重要的还是在于一套开发软件:英特尔数据平面开发套件(Intel Data Plane Development Kit,即Intel DPDK),里面提出了很多改进x86平台在Data Plane数据平面的性能的做法,例如Polling模式,Cache管理等等,人们忽然发现,x86的Data Plane性能其实也很可观,现在已经有如6WIND等的公司在DPDK平台上进行网络功能的开发。

  软件定义网络并未要求使用通用服务器,但是使用通过用服务器是降低成本、更快速地建立软件定义网络生态环境的方法,在性能方面,DPDK这样的思路已经解决了很多问题,但还有更多的问题等待着去解决,本年度的数据中心技术研究报告中,将会对这些问题进行进一步的探讨。

相关阅读:

分享到: 收藏

专题