SDN全称是Software Defined Network,即软件定义网络。这是一种新的网络架构,网络的控制与转发分离,并且可直接对网络进行编程。熟悉网络的人都清楚,网络设备都是类似 DOS、Linux的命令行交互式的界面,要想管理网络设备必须要记住成百上千的晦涩难懂的命令,并且不同网络厂商的设备命令都是千差万别,网络维护人员很难掌握。随着数据中心规模不断扩大,网络维护工作难度进一步加大,这时SDN技术应运而生。
SDN虽然是近两年才被提出,但发展迅速。主流的网络厂商都纷纷加入到了研究SDN技术的阵营。互联网巨头谷歌支持采用SDN技术用于自身数据中心的互连,阿朗设立了SDN子公司Nuage,Juniper则耗资收购了一家SDN创业公司。思科已经发布了业界首款支持SDN的路由器设备。而国内的华为、中兴也均密切关注SDN的技术动向。尤其是华为,今年先后发布了面向运营商的Softcom和面向企业的SDN方案,是SDN最积极和领先的参与者之一。只有所有厂商都加入到支持SDN的队伍中来,SDN技术才能发挥更大的作用。
SDN主要包含连接上层应用的API接口、SDN控制软件、控制数据平台接口OpenFlow三个部分。
SDN通过API接口可以实现常用的网络服务。包括路由、组播、安全、访问控制、带宽管理、流量工程、QOS、处理器和存储的优化、电源管理以及其他所有形成的策略管理,通过这些API用户可以按照业务需求实现网络功能的裁剪定制。例如:在SDN架构的园区网中,可以很容易在有线和无线网络中定义和实施一致性的策略。同样,使用SDN可以通过智能业务流程和配置系统来管理整个网络。开放式网络基金会(open Networking Foundation, ONF)正在研究开放的API,以提高多厂商设备管理性,为按需资源分配自助式服务、网络虚拟化以及安全的云服务打开大门。
SDN控制软件根据应用层需要的网络服务通过OpenFlow在网络设备上完成功能配置。在这个过程中,SDN控制软件是一个承上启下的软件。用户只能看到应用层的这些网络服务,而控制层的SDN控制软件,网络设备对用户都不可见。这样用户可以通过编程的方式对抽象的网络进行配置,而不用通过手工方式处理那些成千上万设备上的成千上万行的配置。用户也不用去关心网络设备具体如何实现这些功能的,大大减少了数据中心维护的工作量。用户可以通过自己编写程序实现新的特性,而不必等待网络中那些私有和封闭的软件实现这些特性。
这里不得不说一下OpenFlow,OpenFlow是SDN架构中定义的***个控制器与转发层之间的通信接口标准。即OpenFlow是网络设备和SDN控制软件交互的语言。网络设备要识别OpenFlow,而SDN控制软件要知道如何使用OpenFlow才能让网络设备清楚是什么指令。可以将 OpenFlow比作CPU指令集。OpenFlow定义了一些基本原语,这些原语就像CPU指令集用于计算机系统编程一样,可用于外部软件实现对网络转发平面的编程。由此可见,OpenFlow非常重要,是SDN的独有“语言”。
OpenFlow是一个开源的技术,开放网络基金会(ONF)在积极力推OpenFlow,希望更多的网络厂商接受OpenFlow,这样SDN才能发挥更大的作用。但是作为网络领域的老大哥Cisco、虚拟化领域的老大Vmware显然不想这么做,它们不想失去技术领先的优势。所以两家厂商总是在 OpenFlow的具体实现上做出一些私有的东西,这样就缺乏通用性。举例想想在网络领域中早就有STP/MSTP这些标准,但思科依然在其设备上只支持私有的PVST/MST协议。原因就是全球的网络设备有一多半都是我的,我定的规矩就是标准,这显然会遭到其它网络厂商的讨伐。所以目前在SDN技术领域,仍存在着OpenFlow标准、思科和Vmware三种存在分歧的力量在博弈。
虽然三方力量在OpenFlow的具体功能实现上各有差异,但所有的厂商都是大力支持SDN技术推广的。从SDN技术的出身就可以看出,其的确会给数据中心带来技术上的变革,提升数据中心的使用效率。只不过三方力量仍在探讨OpenFlow具体的实现到底用哪家的,最差的情况下就会在这个网络市场上存在三种OpenFlow实现,这样就会由于实现不一致而无法做到全网网络设备统一管理,这是所有的数据中心用户所不愿看到的。
无论如何,SDN技术发展已经成为所有网络厂商的共识,这个标准的制定和实现过程会有些挫折,但依然不会阻止SDN技术的发展与完善。SDN已经逐渐成为数据中心建设时必须考虑的功能之一,它将为数据中心提供高效的网络管理,减低数据中心维护成本,提高数据中心运营的效率。