一直以来,网络中存在着一系列用于改善网络服务的性能和体验的应用,例如Web安全,访问控制、负载均衡、应用加速、WAN优化、入侵检测等。它们在网络的安全、管理等方面发挥了巨大的作用,是传统网络中保障应用交付质量的关键。随着SDN技术的提出与成熟,在新型网络架构下,这些应用势必也需要进行相应的改造与完善。
在传统网络中,类似防火墙、负载均衡、入侵检测等网络应用都是由专用的硬件设备实现的,在网络运行过程汇总,根据实际需要逐台进行配置以满足数据传输要求。而在SDN网络中,上述应用将以软件程序的方式存在,他们可以与控制器一起部署在通用服务器上,通过调用控制器的北向接口获得其提供的流量模式、应用数据等信息并对其进行辨识和判断,进而驱动控制器下发指令调整网络配置。例如,当基于SDN的入侵监测应用在控制器监测的数据流中识别到恶意流量时,它就可以自动驱动控制器设置相应的流表项将这些数据包导向网络中数的安全隔离设备,避免其对网络的破坏。
虽然这些SDN应用是利用软件实现的,但他们的角色与传统的硬件设备相同,相比而言,基于SDN传统网络应用进行改造的主要优势包括以下几点:
通过软件实现的防火墙、负载均衡,降低系统的CAPEX/OPEX
实现网络中各类网元的虚拟化和集中化控制
支持网络系统的快速部署,在故障出现时能够快速发现并解决问题
提供更高的智能,支持自动化运作,实现应用可感知的网络。
通过上述介绍和分析可知,基于具备集中化管控能力的SDN控制器提供的网络资源调配能力,SDN应用实际是将传统的基于设备的应用改造为一个真正面向全网范围的应用。
随着SDN的应用与推广,传统网络应用交付技术向SDN网络的迁移已经势在必行,很多传统领域的领导厂商已经开始考虑这些问题。总体而言,面向SDN的网络应用交付技术的改造需要从以下四个方面进行。
(1)改写传统的硬件应用为软件实现。和所有的网络设备一样,传统的网络应用考虑到数据处理性能的问题,普遍采用基于专用集成电路的硬件实现,而随着通用处理器性能的提升,采用软件实现相关应用的功能已经能够满足数据处理的需求,同时在应用的实现和部署时具有更好的灵活性和开放性。
(2)支持网络应用的虚拟化实现和部署。网络应用的虚拟化主要体现在支持多个租户共享同一网络应用设施,同时各租户间彼此隔离,具有相对独立的应用空间。虚拟化是实现资源池化的主要手段,只有实现了池化的网络应用,才能支持面向用户的按需调配。在网络应用虚拟化实现中,多线程等技术可被应用。
(3)基于控制器北向接口改造应用。为了将网络应用纳入SDN架构中,从控制器获得网络信息并驱动控制器调整网络配置,网络应用必须要将相关的功能接口与控制器的北向接口对接,这其中既可以利用REST API等类型的接口,使网络应用仍旧相对独立,也可以利用Java等类型的接口,将网络应用功能整合进控制器中。
(4)开放编程接口支持创新业务开发。在网络应用经过面向SDN网络的改造后,秉承SDN的开放性,网络应用还需要在扩展和封装控制器北向接口的基础上,提供功能完备、方便易用的编程接口对更上层的业务开放,推动网络业务的创新。
就当前的业界进展来看,传统网络应用的主流厂商的技术产品普遍做到了前两个方面,例如利用虚拟机部署负载均衡软件、在Hypervisor中继承安全防护功能等,而这也是前文提到的NFV(网络功能虚拟化)期望达到的目标。但是,受到当前SDN架构中缺少统一的北向接口定义的限制,网络应用厂商之能够根据某几款特定的控制器接口进行应用改造,从而增加了开发工作量,并导致了更高的风险。
将传统网络中四至七层的应用部署在SDN网络上能够获得很多优势,例如基于控制器对网络全局视图的把握,能够开展更合理的负载均衡,制定更全面的安全策略,从而提升网络应用的效能。但是,基于SDN实现传统网络应用也存在巨大的挑战,例如当前现有的网络应用过于丰富,有大量的厂商参与其中,其方案各有特色并且相对封闭,使得对网络应用的整合化与集中化存在非常大的困难。另外更关键的一点是,如果应用依赖于控制器对应用要处理的数据包进行采样和识别,就意味这控制器可能会不仅仅监控数据包的二、三层状态,还必须对其四至七层信息进行解析,这将会大大增加控制器的工作量,进而影响网络应用乃至SDN全网的性能。