软件定义网络编程当前尚处在“汇编语言阶段”,开发者需要关注南向接口、硬件设备等底层细节。近年来相关领域研究人员已开始着手研究“能否让软件定义网络开发者像程序员使用高级语言那样进行软件定义网络编程?”这一富有挑战性的课题。
近几年来国内外较有影响力的软件定义网络编程工作。其中,矩形框内给出了这些工作的名称和论文发表时间,实线箭头表示这些工作之间的继承关系。以Nettle和Maple为代表的编程方法由美国耶鲁大学杨阳(Y. Richard Yang)的研究组提出,主要关注编程语言抽象能力、模块化设计、流表规则优化等问题;以Frenetic和Pyretic为代表的编程方法由普林斯顿大学珍妮弗· 雷克斯福德(Jennifer Rexford)的研究组提出,主要关注编程语言的正确性、应用程序并存性等问题;开源项目OpenDaylight和ONOS中的编程方法由工业界主导,主要是以事实标准的思想推动编程方法的研究工作。 这些工作的技术贡献,主要集中在以下几个方面 :
1. 屏蔽南向接口协议实现细节:例如,FML基于非递归的Datalog语言提供了一种高层次的声明式编程方法;Frenetic设计了一种语法与SQL类似的软件定义网络编程方法;Pyretic后续设计了一个可使用Python语言编程的软件定义网络编程方法。这些工作使得开发者可以使用说明性语言来指明希望控制器做什么,而不需要手动指定控制器如何正确生成设备流表规则。Maple提出了一种基于算法原语的软件定义网络编程方法,允许开发者使用Java、C++、Haskell等通用语言来编写上层应用。 这些工作都较好地屏蔽了南向接口协议实现细节。
2. 针对设备硬件流表进行优化,提升网络设备性能:针对近年来兴起的流表可完全配置网络设备,P4编程方法允许开发者手动指定这类设备的流表大小和匹配项,并可组织多张流表的流水线结构,从而显著提升设备的数据包处理能力。麦克欧文(McKeown)等人的研究工作中给出了将逻辑流表流水线映射到这类设备的具体算法,然而该类设备芯片设计成本高、难度大,很难快速做到大规模的普及。与流表可完全配置网络设备尚处在实验阶段不同,流表可有限配置网络设备已开始部署使用。这类网络设备中流表流水线基本是固定的,编程者仅能修改其中的某些部分。流表可有限配置网络设备可通过改造传统网络设备得到,能够基本满足软件定义网络需求,具有研发风险小、设备成本低等特点,是现今软件定义网络设备的主流。然而值得注意的是,其异构的硬件特性也极大地增加了开发者充分使用这些设备的难度。
3. 增强网络应用的可移植性:软件定义网络技术标准化组织ONF北向接口工作组NBI-WG曾致力于提出一套被各软件定义网络控制器广泛认可的接口和编程方法,但这一工作进展缓慢。目前NBI-WG鼓励各软件定义网络控制器继续朝着此目标努力,例如:通过在Aspen项目中具体实施基于软件定义网络的实时多媒体应用来深刻了解该类应用对编程方法的需求。Frenetic、Maple等工作在很大程度上解决了网络应用程序可移植性差的问题。
4. 网络配置变化及异常事件的处理:ONOS及OpenDaylight中提出了“data store(数据存储)”的概念,通过指定“data store”中的特定数据并提供监控方法,开发者可以在相应数据发生改变时调整已下发的规则。然而,“data store”的方法依然需要开发者手工编写处理异常的方法。此外,还有些工作主要研究了针对一个计划中的网络状态变化事件(例如交换机固件升级),通过有计划地更改网络配置来保证网络变化中数据传输的稳定性和正确性, 对开发者屏蔽了网络配置变化处理的细节。
网络应用的并存性Frenetic、Pyretic、Maple等编程方法都通过引入一个运行时系统,融合并分析了多个网络应用所产生的规则并解决了可能存在的冲突,较好地解决了网络应用的并存性问题。
领取专属 10元无门槛券
私享最新 技术干货