转发和控制分离是SDN网络的本质特点之一 。在SDN网络架构中,控制平面与转发平面分离,网络的管理和状态在逻辑上集中到一起,底层的网络基础从应用中独立出来,由此,网络获得前所未有的可编程、可控制和自动化能力。这使用户可以很容易根据业务需求,建立高度可扩展的弹性网络。要实现SDN网络的转控分离架构,就需要在SDN控制器与数据转发层之间建立一个通信接口标准。
SDN核心处理逻辑
2008年,斯坦福大学成立了一个名为Clean Slate的特别工作小组,这个小组在2009年开发出了一个可以满足SDN网络转控分离架构的标准,即OpenFlow 1.0。同时该小组还开发出了OpenFlow的参考交换机和NOX控制器。OpenFlow标准协议允许控制器直接访问和操作网络设备的转发平面,这些设备可以是物理设备,也可以是虚拟的路由器或者交换机。转发平面则采用基于流的方式进行转发。
OpenFlow 1.0问世后不久就引起了业界关注。2011年3月21日,德国电信、脸书、谷歌、微软、雅虎等公司共同成立的了ONF(Open Networking Foundation)组织,旨在推广SDN,并加大OpenFlow的标准化力度。芯片商Broadcom、设备商Cisco、Juniper、HP等,各数据中心解决方案提供者以及众多运营商纷纷参与。该组织陆续制定了OpenFlow 1.1、1.2、1.3、1.4等标准,目前仍在继续完善中。随着越来越多的公司加入ONF,OpenFlow及SDN技术的影响力也越来越大。
下图给出了OpenFlow协议各个版本的演进过程和主要变化,目前使用和支持最多的是OpenFlow1.3版本。
OpenFlow版本更新历程
OpenFlow 规范官方地址:https://www.opennetworking.org/sdn-resources/technical-library
OpenFlow 是SDN 架构中控制平面和转发平面的标准通信接口。OpenFlow 允许网络设备与物理和虚拟的转发平面的直接访问和操作。基于OpenFlow 的SDN架构使IT能够应对今天的高带宽的、动态的应用。适应网络不断变化的业务需求,并显著降低运营和管理的复杂度。
OpenFlow网络由OpenFlow网络设备(OpenFlow 交换机)、控制器(OpenFlow控制器)、用于连接设备和控制器的安全通道(Secure Channel)以及OpenFlow表项组成。其中,OpenFlow 交换机设备和OpenFlow控制器是组成OpenFlow网络的实体,要求能够支持安全信道和OpenFlow表项。
OpenFlow组件图
OpenFlow控制器位于SDN架构中的控制层,通过OpenFlow协议南向指导设备的转发。目前主流的OpenFlow控制器分为两大类:开源控制器和厂商开发的商用控制器。这里简要介绍几款较为知名的开源控制器。
1、NOX/POX
NOX是第一款真正的SDN OpenFlow控制器,由Nicira公司在08年开发,并且捐赠给了开源组织。NOX支持OpenFlow V1.0,并提供相关C++的API,采用异步的、基于时间的编程模型。而POX可以视作是更新的、基于Python的NOX版本,支持Windows,Mac OS和Linux系统上的Python开发,主要用于研究和教育领域。
2、ONOS
ONOS(Open Network Operating System)控制器是由The Open Networking Lab使用Java及Apache实现发布的首款开源SDN网络操作系统,主要面向服务提供商和企业骨干网。ONOS的设计宗旨是实现可靠性强、性能好、灵活度高的SDN控制器。
3、OpenDaylight
OpenDaylight是一个Linux 基金合作项目,该项目以开源社区为主导,使用Java语言实现开源框架,旨在推动创新实施以及软件定义网络(简称SDN)透明化。面对SDN型网络,OpenDaylight作为项目核心,拥有一套模块化、可插拔且极为灵活的控制器,使其能够被部署在任何支持Java的平台之上,还包含一套模块合集,能够执行需要快速完成的网络任务。
OpenDaylight控制器的命名以化学元素为名,最初的产品是Hydrogen(氢),当前已经发布了第八个版本Oxygen(氧),并且实现了OpenDaylight与NFV开放平台OPNFV(Open Platform for NFV)、开源云平台OpenStack和开放网络自动化平台ONAP(Open Network Automation Platform)同步。
大多数开源的SDN控制器是完全基于OpenFlow协议开发的,这是因为其设计多数源自于Onix(一种分布式控制器框架)。相比之下,大部分商用控制器会将OpenFlow和其他协议进行联合使用,以完成更复杂的功能。在当下SDN网络大行其道的时代,大多数主流网络厂商例如VMware、Cisco、H3C等都推出了自己的商用控制器。例如,H3C的VCFC(Virtual Converged Framework Controller,虚拟应用融合架构控制器)南向通过OpenFlow、OVSDB、NETCONF协议对SDN网络设备(主要是OpenFlow交换机)进行管控和指导转发,北向提供开放的Rest API以及JAVA编程接口。整体架构如下所示:
VCFC整体架构图
OpenFlow交换机由硬件平面上的OpenFlow表项和软件平面上的安全通道构成,OpenFlow表项为OpenFlow的关键组成部分,由Controller下发来实现控制平面对转发平面的控制。
OpenFlow 交换机主要有下面两种:
• OpenFlow-Only Switch:仅支持OpenFlow转发。
• OpenFlow-Hybrid Switch:既支持OpenFlow转发,也支持普通二三层转发。
一个OpenFlow交换机可以有若干个OpenFlow实例,每个OpenFlow实例可以单独连接控制器,相当于一台独立的交换机,根据控制器下发的流表项指导流量转发。OpenFlow实例使得一个OpenFlow交换机同时被多组控制器控制成为可能。
OpenFlow交换机与控制器
OpenFlow交换机实际在转发过程中,依赖于OpenFlow表项,转发动作则是由交换机的OpenFlow接口完成。OpenFlow接口有下面三类:
OVS那些事儿之基础功能篇_Kenelite的博客-CSDN博客_ovs和dvs
(三)OpenFlow协议_竹杖芒鞋轻胜马,一蓑烟雨任平生的博客-CSDN博客_openflow协议是基于什么协议
Openflow协议详解-新华三集团-H3C
OpenFlow协议初探——OpenFLow中的流和流表 - 知乎
《重识云原生系列》专题索引: