OpenFlow简介

  通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议。OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTable进行转发,FlowTable本身的生成、维护、下发完全由外置的Controller来实现,注意这里的FlowTable并非是指IP五元组,事实上OpenFlow 1.0定义了包括端口号、VLAN、L2/L3/L4信息的10个关键字,但是每个字段都是可以通配的,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么流表中就可以只有目的IP字段是有效的,其它全为通配。
  如下图所示为支持OpenFlow协议设备的网络结构:

  图1 基于OpenFlow协议的网络结构

  
  这种控制和转发分离的架构对于L2交换设备而言,意味着MAC地址的学习由Controller来实现,V-LAN和基本的L3路由配置也由Controller下发给交换机。对于L3设备,各类IGP/EGP路由运行在Controller之上,Controller根据需要下发给相应的路由器。流表的下发可以是主动的,也可以是被动的,主动模式下,Controller将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;被动模式是指网络设备收到一个报文没有匹配的FlowTable记录时,将该报文转发给Controller,由后者进行决策该如何转发,并下发相应的流表。被动模式的好处是网络设备无需维护全部的流表,只有当实际的流量产生时才向Controller获取流表记录并存储,当老化定时器超时后可以删除相应的流表,故可以大大节省TCAM空间。当一个Controller同时控制多个交换机/路由器设备时,它们看起来就像一个大的逻辑交换机,各个交换机/路由器硬件就如同这个逻辑网络设备的远程线卡。
  

OpenFlow交换机组成

  OpenFlow交换机由流表、安全通道和OpenFlow协议三部分组成:

图2 OpenFlow交换机组成

OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。OpenFlow交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口。

  流表由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。流表项由头域、计数器和操作组成;其中头域是个十元组,是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的数据包应该执行的操作。
  安全通道是连接OpenFlow交换机到控制器的接口。控制器通过这个接口控制和管理交换机,同时控制器接收来自交换机的事件并向交换机发送数据包。交换机和控制器通过安全通道进行通信,而且所有的信息必须按照OpenFlow协议规定的格式来执行。
  OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。

  OpenFlow协议支持三种信息类型:Controller-to-Switch,Asynchronous和Symmetric,每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric信息可以在没有请求的情况下由控制器或交换机发起。

  

SDN概述

什么是SDN

  软件定义网络(Software Defined Network, SDN),是由美国斯坦福大学clean slate研究组提出的一种新型网络创新架构,SDN 技术就相当于把每人家里路由器的的管理设置系统和路由器剥离开。以前我们每台路由器都有自己的管理系统,而有了SDN之后,一个管理系统可用在所有品牌的路由器上。如果说现在的网络系统是功能机,系统和硬件出厂时就被捆绑在一起,那么SDN 就是Android系统,可以在很多智能手机上安装、升级、使用,同时还能安装更多更强大的手机 App(SDN 应用层部署)。

SDN原理

  SDN的设计理念是将网络的控制面与数据转发面进行分离,并实现可编程化控制。SDN的典型架构共分三层,最上层为应用层,包括各种不同的业务和应用;中间的控制层主要负责处理数据平面资源的编排,维护网络拓扑、状态信息等;最底层的基础设施层负责基于流表的数据处理、转发和状态收集。

图3 SDN网络结构

  
  从传统的网络设备(路由器,交换机)的设计上看,它由软件控制和硬件数据通道组成。软件控制包括管理(CLI,SNMP)以及路由协议(OSPF,ISIS,BGP)等。数据通道包括针对每个包的查询、交换和缓存。此时如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,可以抽象出一个网络操作系统(Network OS)的概念,这个网络操作系统一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。

SDN的好处

  SDN本质上具有“控制和转发分离”、“设备资源虚拟化”和“通用硬件及软件可编程”三大特性,这带来了一系列的好处。
  第一,设备硬件归一化,硬件只关注转发和存储能力,与业务特性解耦,可以采用相对廉价的商用的架构来实现。
  第二, 网络的智能性全部由软件实现,网络设备的种类及功能由软件配置而定,对网络的操作控制和运行由服务器作为网络操作系统(NOS)来完成。
  第三, 对业务响应相对更快,可以定制各种网络参数,如路由、安全、策略、QoS、流量工程等,并实时配置到网络中,开通具体业务的时间将缩短。

SDN的三大要素

  1. 转发与控制分离,这使得网络交换机的数据转发变得更加简单、快速;同时,控制变成了网络操作系统中一个相对集中的逻辑功能。 
  2. OpenFlow协议,它向交换机传送转发表,交换机依此转发报文。这种做法与传统网络完全不同。在传统网络架构中,交换机和路由器需要自己决定报文的转发路径,这可能会给网络运营商带来一些不可预知的负面影响,包括成本增加、性能降低、上市时间延缓 等。有了SDN,控制软件决定报文的转发路径,使得运营商可以“随心所欲”地控制网络。
  3. 具有一致性的、全系统范围的网络操作系统可编程接口,它能让网络实现真正意义上的可编程或者软件定义。如果不能实现转发与控制分离,那么几乎所有SDN所能带来的好处都无法体现;如果能实现转发和控制分离,但没有OpenFlow协议,那么就需要通过其它途径,将所需要的流量表信息传递给交换机。OpenFlow就是实现这一功能的行业标准。

原文:https://www.cnblogs.com/bigdata1024/p/8387487.html

OpenFlow概述相关推荐

  1. 1.1 OpenFlow 概述

    为什么要学习 OpenFlow? 事件 SDN 的首选 主流南向接口协议 P4 和 PISA 的前身 OpenFlow 起源 Ethane 项目是 OpenFlow 的前身 2008 年的 OpenF ...

  2. [学习笔记]OpenFlow概述(1)

    个人学习笔记,出问题请指出下.摘取<图解OpenFLow> Openflow协议是由斯坦福大学提出,最初的出发点是为了更加轻松地构建用于研究的网络. Openflow的初期设计思想:无需设 ...

  3. 【重识云原生】第六章容器6.3.5节——Controller Manager概述

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  4. OpenFlow学习笔记(一)——OpenFlow概要和OpenFlow1.0

    0x01 OpenFlow概述 1.1 设计思想: 以网络设备中内置了TCAM存储器为前提设计的,无需设计新硬件,更新其软件即可. 1.2 具体: 控制面和数据面的分离 1.2.1 控制面的构建方法 ...

  5. 【重识云原生】第六章容器基础6.4.5.1节——Deployment概述

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  6. openflow 和 sdn (软件定义网络) 原理和教程

    OpenFlow概述 OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议.OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTa ...

  7. 【重识云原生】第六章容器6.1.7.2节——cgroups原理剖析

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  8. 【重识云原生】第一章——不谋全局不足以谋一域

    云原生体系知识地图大纲: ​ 锲子 云原生概念这几年非常火爆,本人因有幸参与公司云原生转型项目调研,开始接触这一庞大技术体系,再通过与同业.各大头部云厂商超过150场的密集研讨交流,方得初窥全貌.同时 ...

  9. 【重识云原生】第六章容器基础6.4.9.2节——使用 Service 连接到应用

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

最新文章

  1. sklearn的train_test_split()各函数参数含义解释(非常全)
  2. MySQL5.6 新特性(全局事务标示符(GTID))
  3. 01_[pathlib]内置pathlib库的常用属性和方法
  4. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS
  5. 长春理工计算机学院保研外校,长春理工大学计算机科学技术学院(专业学位)软件工程保研...
  6. C# 微支付退款申请接口 V3.3.6
  7. 牛客题霸 [扑克牌顺子] C++题解/答案
  8. boost python导出c++ map_使用Boost生成的Python模块:与C++签名不匹配
  9. 独立版TP空间内核|知识付费小程序源码
  10. copy 和mutaleCopy
  11. 7. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
  12. npm发布vue组件库
  13. 新乡医学院三全学院计算机课程,十二月份通识课程选课
  14. 拼多多,是漏洞的损失?还是营销的手段?
  15. 一个 pcie 插槽损坏的 h77n-wifi(BIOS添加nvme模块实现pcie启动操作系统)
  16. 毛笔行书书法-黄鹤楼
  17. springboot供应商管理系统毕业设计源码121518
  18. DoEvents的用法
  19. 《打造Facebook》书摘(1):CEO小扎
  20. 怎样在苹果电脑上用移动硬盘(使用NTFS格式硬盘)?

热门文章

  1. 20130620-异常详细信息: System.Data.SqlClient.SqlException: 用户 'PC-LIXIANG\ASPNET' 登录失败。
  2. Mac怎么查看本地图片路径
  3. 数据库---通俗理解乐观锁和悲观锁
  4. PO,BO,VO,DTO和POJO的概念区分
  5. 商业变现永不眠(四)- 关于收入的几个关键指标以及如何提升
  6. @zabbix监控mysql数据库<Percona工具>
  7. 项目管理中冲突的六种解决方法
  8. 如何将Docker升级到最新版本
  9. 慕课python廖雪峰_我的笔记4.8:慕课网python入门-廖雪峰
  10. 非计算机专业学习python一年的想法整理与展望