1 OpenFlow背景
转发和控制分离是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
2 OpenFlow基本概念
OpenFlow 是SDN 架构中控制平面和转发平面的标准通信接口。OpenFlow 允许网络设备与物理和虚拟的转发平面的直接访问和操作。基于OpenFlow 的SDN架构使IT能够应对今天的高带宽的、动态的应用。适应网络不断变化的业务需求,并显著降低运营和管理的复杂度。
2.1 OpenFlow组件
OpenFlow网络由OpenFlow网络设备(OpenFlow 交换机)、控制器(OpenFlow控制器)、用于连接设备和控制器的安全通道(Secure Channel)以及OpenFlow表项组成。其中,OpenFlow 交换机设备和OpenFlow控制器是组成OpenFlow网络的实体,要求能够支持安全信道和OpenFlow表项。
OpenFlow组件图
2.1.1 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整体架构图
2.1.2 OpenFlow交换机
OpenFlow交换机由硬件平面上的OpenFlow表项和软件平面上的安全通道构成,OpenFlow表项为OpenFlow的关键组成部分,由Controller下发来实现控制平面对转发平面的控制。
OpenFlow 交换机主要有下面两种:
• OpenFlow-Only Switch:仅支持OpenFlow转发。
• OpenFlow-Hybrid Switch:既支持OpenFlow转发,也支持普通二三层转发。
一个OpenFlow交换机可以有若干个OpenFlow实例,每个OpenFlow实例可以单独连接控制器,相当于一台独立的交换机,根据控制器下发的流表项指导流量转发。OpenFlow实例使得一个OpenFlow交换机同时被多组控制器控制成为可能。
OpenFlow交换机与控制器
OpenFlow交换机实际在转发过程中,依赖于OpenFlow表项,转发动作则是由交换机的OpenFlow接口完成。OpenFlow接口有下面三类:
- 物理接口:比如交换机的以太网口等。可以作为匹配的入接口和出接口。
- 逻辑接口:比如聚合接口、Tunnel接口等。可以作为匹配的入接口和出接口。
- 保留接口:由转发动作定义的接口,实现OpenFlow转发功能。
参考链接
OVS那些事儿之基础功能篇_Kenelite的博客-CSDN博客_ovs和dvs
(三)OpenFlow协议_竹杖芒鞋轻胜马,一蓑烟雨任平生的博客-CSDN博客_openflow协议是基于什么协议
Openflow协议详解-新华三集团-H3C
OpenFlow协议初探——OpenFLow中的流和流表 - 知乎
《重识云原生系列》专题索引:
- 第一章——不谋全局不足以谋一域
- 第二章计算第1节——计算虚拟化技术总述
- 第三章云存储第1节——分布式云存储总述
- 第四章云网络第一节——云网络技术发展简述
- 第四章云网络4.2节——相关基础知识准备
- 第四章云网络4.3节——重要网络协议
- 第四章云网络4.3.1节——路由技术简述
- 第四章云网络4.3.2节——VLAN技术
- 第四章云网络4.3.3节——RIP协议
- 第四章云网络4.3.4节——OSPF协议
- 第四章云网络4.3.5节——EIGRP协议
- 第四章云网络4.3.6节——IS-IS协议
- 第四章云网络4.3.7节——BGP协议
- 第四章云网络4.3.7.2节——BGP协议概述
- 第四章云网络4.3.7.3节——BGP协议实现原理
- 第四章云网络4.3.7.4节——高级特性
- 第四章云网络4.3.7.5节——实操
- 第四章云网络4.3.7.6节——MP-BGP协议
- 第四章云网络4.3.8节——策略路由
- 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
- 第四章云网络4.3.10节——VXLAN技术
- 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
- 第四章云网络4.3.10.3节——VXLAN隧道机制
- 第四章云网络4.3.10.4节——VXLAN报文转发过程
- 第四章云网络4.3.10.5节——VXlan组网架构
- 第四章云网络4.3.10.6节——VXLAN应用部署方案
- 第四章云网络4.4节——Spine-Leaf网络架构
- 第四章云网络4.5节——大二层网络
- 第四章云网络4.6节——Underlay 和 Overlay概念
- 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
- 第四章云网络4.7.2节——virtio网络半虚拟化简介
- 第四章云网络4.7.3节——Vhost-net方案
- 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
- 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
- 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
- 第四章云网络4.7.8节——SR-IOV方案
- 第四章云网络4.7.9节——NFV
- 第四章云网络4.8.1节——SDN总述
- 第四章云网络4.8.2.1节——OpenFlow概述
- 第四章云网络4.8.2.2节——OpenFlow协议详解
- 第四章云网络4.8.2.3节——OpenFlow运行机制
- 第四章云网络4.8.3.1节——Open vSwitch简介
- 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
- 第四章云网络4.8.4节——OpenStack与SDN的集成
- 第四章云网络4.8.5节——OpenDayLight
- 第四章云网络4.8.6节——Dragonflow