1.2 SDN的实例——OpenFlow

提到SDN,必然要涉及控制平面与转发平面之间的接口定义,作为架构中控制平面与转发平面之间转发抽象定义的第一个实例,协议在提出的初期就受到业界的广泛关注,后经过GENI 项目的推进以及多家IT/互联网企业的参与,现已形成强大的产业联盟。因此,业界普遍选择OpenFlow 协议作为中控制平面与转发平面之间的通信接口,并围绕其建立一系列的网络操作系统、控制应用以及相关的组件等。

OpenFlow 的成功与其简单高效的特点密不可分。OpenFlow 架构十分简洁,如图2 所示,OpenFlow 交换机由内部转发流表以及用来与外部控制器进行通信的安全通道组成。为了使远端的控制应用能够对转发平面的网络设备进行编程,OpenFlow 协议指定了一系列基本操作。通过,SDN 控制应用可以直接访问并操控转发平面中的网络设备,交换机则使用流表流水线来进行数据包匹配与数据包转发。

如图3 所示,OpenFlow 交换机中的每个流表中含有多条流表项,每条流流表项由匹配域、优先级、统计域以及一系列的转发指令组成。控制器可以利用OpenFlow 协议对这些流表项进行添加、删除或者修改操作,当数据包匹配到某个流表项时,该表项对应的指令集合将被触发。OpenFlow 支持最基本的动作,包括转发、丢弃、群组操作、入队以及加/去标签等。OpenFlow 通过对网络中“ 流”的控制来达到对网络进行灵活控制的目的。

此外,OpenFlow 支持的多种控制方式也有利于其在多种网络环境中的部署。首先,基于OpenFlow 的完全不会受网络规模的影响,分布式控制器能够很好地提高网络的可扩展性。其次,OpenFlow 中对“流”的定义十分灵活,这也就使得能够对网络进行更灵活的控制。例如,在需要进行细粒度控制的网络场景中,可以逐流建立流表项并通过逐微流的精确匹配实现对网络的精确控制;在流量较大的网络环境中,可以使用通配流表来对汇聚流进行转发,降低流表项数目对转发节点内存空间的冲击。

最后,控制平面建立流表项的方式也十分灵活。控制平面既可以被动地建立流表项,由新流来触发流表项的建立,也可以主动地建立流表,提前对转发设备的转发行为进行配置,从而提高转发效率。OpenFlow 细粒度的、基于流的转发能力,使得网络控制变得十分灵活,使其能够实时地对网络应用、用户、会话的需求做出不同的响应。


相关内容