OpenFlow概述

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就是实现这一功能的行业标准。

openflow 和 sdn (软件定义网络) 原理和教程相关推荐

  1. 科普:SDN(软件定义网络)

    http://www.zdnet.com.cn/wiki-SDN SDN(软件定义网络) 软件定义网络(Software Defined Network, SDN ),是由美国斯坦福大学clean s ...

  2. SDN软件定义网络 学习笔记(4)--数据平面

    SDN软件定义网络 学习笔记(4)--数据平面 1. 简介 2. SDN数据平面架构 2.1 传统网络交换设备架构 2.2 SDN交换设备架构 2.3 数据平面架构图 3. SDN芯片与交换机 3.1 ...

  3. SDN软件定义网络 学习笔记(3)--北向接口、东西向接口

    1. 北向接口 北向接口提供了 SDN 中开发者与控制器间的交互功能.从更为宽泛的角度考虑,北向接口在 SDN 控制器中的作用类似于命令行在传统NOS 中的作用,都是实现了网络管理者对网络的设计与管理 ...

  4. SDN软件定义网络 学习笔记(1)--基本概念

    SDN软件定义网络 学习笔记(1)--基本概念 1. 定义 2. 提出背景 3. 体系结构 1. 定义 软件定义网络(Software Defined Network,SDN),顾名思义,SDN 与传 ...

  5. SDN软件定义网络之流表及其组成

    文章目录 SDN软件定义网络之流表 流表由三个组成部分组成--包头域.计数器.动作表 包头 计数器功能 动作表 交换机端口:物理.逻辑.保留 保留端口参数: 流表动作类型 数据包处理流程 版本更新流表 ...

  6. 关于SDN软件定义网络和NFV网络功能虚拟化

    1.SDN软件定义网络 在传统的网络中,各个转发节点(路由器.交换机)都是独立工作的,内部管理命令和接口也是厂商私有的,不对外开放.而SDN(Software Defined Networking)网 ...

  7. SDN软件定义网络之SDN交换机物理设备

    文章目录 SDN软件定义网络之SDN交换机 交换芯片 芯片详解 主流芯片 交换机产品 物理交换机 虚拟交换机 设备选型主要考虑的参数 背板带宽 端口密度 端口速率 支持模块类型 带宽类型 其他 时延 ...

  8. SDN软件定义网络概述,netperf,scapy网络命令简单使用。

    目录 SDN网络架构 SDN(面向网络架构) sdn控制器的三个主要角色: sdn关键特征: sdn网络架构的三层模型: sdn面临的挑战 可靠性问题: 解决方案: 开放能力: netperf命令 环 ...

  9. 《SDN软件定义网络从入门到精通》理论课

    前言 SDN(Software Defined Network)即软件定义网络,是一种网络设计理念,或者一种推倒重来的设计思想.只要网络硬件可以集中式软件管理,可编程化,控制转发层面分开,则可以认为这 ...

最新文章

  1. [Swift]LeetCode373. 查找和最小的K对数字 | Find K Pairs with Smallest Sums
  2. half extents
  3. 中望cad2018中文版
  4. 【TensorFlow】PyCharm中无法识别tensorflow、numpy等Python库问题的解决办法
  5. Ensemble Learning
  6. 如何在ps中调整文字的行距和间距_Wps如何调整文字字符的间距
  7. amazon linux ami root 密码,Ubuntu Server的Amazon AMI映像的默认用户名是什么?
  8. python爬虫网页中的图片_Python爬虫爬取一个网页上的图片地址实例代码
  9. Clojure 学习入门(14)- 循环控制
  10. c语言交通处罚管理系统刘,交通处罚单管理系统(C程序设计)修改版
  11. 微信公众号普通消息接收接口
  12. “PaaS+云管”双剑合璧,BoCloud博云的进阶之路
  13. 服务器 控制台 的作用是,电脑中的MMC控制台的作用和用法是什么?
  14. R语言如何绘制韦恩图(6)
  15. 加入新公司,快速熟悉业务和项目的六个要点!你了解了吗?
  16. SuperMap iMobile for Android培训资料
  17. 计算机专业学生u盘32g够用吗,很超值:为什么我的32G USB只有28.8g?
  18. 少壮不努力,老大写程序(kobewry) 经典话语啊
  19. 常用数据结构之二叉树及树的四种遍历方式
  20. anyview+4.0java版_anyview4.0手机阅读器

热门文章

  1. 跟小白一起学NLP(一)实战!Pytorch构建神经网络
  2. RV1126笔记三十:freetype显示矢量字体
  3. 洞察 | 软件定义汽车时代下,汽车制造产业的应对策略
  4. 使用多线程实现卖火车票
  5. 无法安装Hyper-V:虚拟机监控程序已在运行中
  6. React中设置样式
  7. 牛客小白月赛4 C 病菌感染 dfs
  8. 信用租赁系统搭建-“信用”+“租赁”模式,租赁方式更灵活
  9. 关于今天在写 flex 布局,遇到 for 循环后的失效问题
  10. DOS环境dir命令详解