
第2章 SDN基本原理
2.1 SDN定义与架构
2.1.1 SDN定义
顾名思义,SDN与传统网络的最大区别就在于可以通过编写软件的方式来灵活定义网络设备的转发功能。在传统网络中,控制平面功能是分布式地运行在各个网络节点(集线器(Hub)、交换机(Switch)、路由器(Router))中的,因此新型网络功能的部署需要所有相应网络设备的升级,导致网络创新往往难以落地。而SDN将网络设备的控制平面与转发平面分离,并将控制平面集中实现,这样新型网络功能的部署只需要在控制节点进行集中的软件升级,从而实现快速灵活地定制网络功能。另外,SDN体系架构还具有很强的开放性,它通过对整个网络进行抽象,为用户提供完备的编程接口,使用户可以根据上层的业务与应用个性化地定制网络资源来满足其特有的需求。由于其开放可编程的特性, SDN有可能打破某些厂商对设备、协议以及软件等方面的垄断,从而使更多的人可以参与到网络技术的研发工作中来。
根据业界的通用性理解[1,2],可以将SDN定义为一种数据控制分离、软件可编程的新型网络体系架构,其基本架构如图2-1所示。SDN采用了集中式的控制平面和分布式的转发平面,两个平面相互分离,控制平面利用控制—转发通信接口对转发平面上的网络设备进行集中式控制,并向上提供灵活的可编程能力,具备以上特点的网络架构都可以被认为是广义的SDN技术。

图2-1 SDN的基本架构
在SDN架构中,控制平面(控制器)通过控制—转发通信接口对网络设备进行集中控制,这部分控制信令的流量发生在控制器与网络设备之间,独立于终端间通信产生的数据流量,网络设备通过接收控制信令生成转发表,并据此决定数据流量的处理,不再需要使用复杂的分布式网络协议来决策数据转发,如图2-2所示。

图2-2 SDN的数据控制分离
需要明确的是,SDN并不是某一种具体的网络协议,而是一种网络体系框架,这种框架中可以包含多种接口协议。如使用 OpenFlow 等南向接口协议实现控制器与交换机的交互,使用北向API(Application Programming Interface,应用程序接口)实现业务应用与控制器的交互。这样就使得基于SDN的网络架构更加系统化,具备更好的感知与管控能力,从而推动网络向新的方向发展。
上述定义是目前业界对SDN技术的基本共识,当然不同的标准化组织都有自己的参考架构,研究和关注的侧重点也各不相同。其中,最有影响力的ONF[3]组织在 SDN 的标准化进程中占有重要地位,它所理解的 SDN 主要是从网络用户角度出发进行定义的,尤其强调未来的网络系统应能够根据业务需求,可对底层网络资源进行灵活的定义与操作。ONF组织对SDN核心架构进行了明确的定义,同时还定义了完全开放的SDN南向接口协议——OpenFlow,并致力于推进其标准化。