OpenFlow是一种交换技术,刚开始它是2008年斯坦福大学的一个研究项目,但现在它已经引起了网络设备供应商和大型交换网络管理员的广泛关注。使用OpenFlow协议建立软件定义网络,可以将网络作为一个整体而不是无数的独立设备进行管理。

传统交换机使用生成树协议或其他一些新标准(如多链路透明互连,TRILL)来确定数据包转发路径。而OpenFlow将转发决策从各个交换机转移到控制器上,这一般是服务器或工作站。

管理应用程序执行控制器,负责与所有网络交换机进行交互,配置数据转发路径,从而提高带宽利用率。这个应用程序与云管理软件进行交互,保证有足够的带宽支持负载的创建和变化。

OpenFlow协议操作

OpenFlow标准定义了控制器与交换机之间的交互协议,以及一组交换机操作。这个控制器—交换机协议运行在安全传输层协议(TLS)或无保护TCP连接之上。控制器向交换机发送指令,控制数据包的转发方式,以及配置参数,如VLAN优先级。交换机会在链路中断或出现未指定转发指令的数据包时,发送消息通知控制器。

转发指令基于流,这个流由所有数据包共享的通用特性组成。定义流需要指定许多参数,其中可能包括:数据包到达的交换机端口、来源以太网端口、来源IP端口、VLAN标签、目标以太网或IP端口及许多其他数据包特性。控制器会在交换机上设置一组参数,用于定义各个流,以及匹配流的数据包处理方式。

每一个交换机都维护着许多路由表,而每一个表又包含多个路由记录。每一条路由记录包含一个匹配域,它定义了流、计数器和指令集。匹配域中记录的项目可能包含一个与到达数据包相对应的比较参数值,或者一个表示流的参数集中不存在此记录的指示值。

路由表的编号从0开始,到达的数据包对表0的记录进行比较。如果匹配,路由计数会增加,然后执行指定的指令集。如果到达的数据包不匹配任何路由表记录,那么必须创建一个新流。有的交换机可能直接丢弃未定义的流,但是大多数情况下,数据包都会转发到控制器上。然后,控制器为该数据包定义一个新流,并且创建一个或多个路由表记录。然后,它会将记录发送到交换机上,并增加路由表。最后,数据包会被送回交换机,使用新创建的路由记录进行处理。

路由表指令会修改每一个数据包所设置的操作。一开始,数据包会使用空操作集进行处理。这些操作可能要求数据包通过指定的端口进行转发,或者需要修改数据包TTL、VLAN、MPLS标签或数据包QoS。

第一个路由表的指令可能会对数据包执行操作,或者增加一些将来执行的操作。这些指令会将数据包与其他路由表记录进行比较,控制数据包的后续处理。后续路由表的记录的指令可能会进一步增加操作,删除或修改之前添加的操作,或者执行其他一些操作。

在将数据包发送到下一路由表之前,指令也可能会给数据包增加一个元素数据值。这个值就成为额外参数,它会与下一个路由表的记录的元数据值进行匹配。数据包会逐个表地进行处理,直到所有指令都处理完,并且数据包成功转发。

指令可能会指定一个组标识符。组是一种为数据包指定在多个流中执行相同操作集的高效方法。组操作定义在交换机的组表记录。每一个记录都包括标识符值、组类型、计数器和操作集。组类型规定是否所有操作集都会执行,这很适合用于实现广播或多播,或者规定只执行某些特定的操作集。

OpenFlow协议消息传送

协议由三种消息组成:控制器-交换机消息、异步消息和对称消息。

控制器-交换机消息由控制器发送,可以:

指定、修改或删除流定义

请求交换机功能信息

查询交换机信息,如计数器

在新流创建之后,将数据包发送回交换机

异步消息由交换机发送,可以:

向控制器发送与现有流不匹配的数据包

在流的存活参数时间已到或静止计时器过期时,通知控制器流已经删除

通知控制器端口状态变化或交换机出现错误

对称消息可以由交换机或控制器双方发出,可用于:

在控制器和交换机之间启动时发送握手消息

发送回波消息,测试控制器与交换机之间的连接延迟,确定控制器与交换机的连接是否仍然有效

发送试验消息,作为将来OpenFlow技术的扩展方法

OpenFlow协议发展:前景看好

2011年,开放网络基金会成立,旨在推广OpenFlow和实现标准化。其成员包括思科、Facebook、谷歌、惠普、IBM和Juniper。当前版本的OpenFlow标准(1.1.0)包含了许多可选特性,可以支持进一步的试验,并且1.2版标准也正在制定中。

虽然思科仍未发布支持OpenFlow的交换机,但是其他交换机供应商已经在现有产品中实现了OpenFlow,如IBM与NEC的合作和惠普,他们将继续推进开发这些产品。随着供应商和网络运营商对这项技术进一步熟悉,OpenFlow必将会对网络的管理和运营产生重大影响。

初识OpenFlow协议相关推荐

  1. Openflow协议通信流程解读

    前言 接触了这么久的SDN,Openflow协议前前后后也读过好多遍,但是一直没有时间总结一下自己的一些见解.现在有时间了,就写一写自己对Openflow协议通信流程的一些理解. SDN中Switch ...

  2. 对扩展openflow协议的一点思考

         软件定义X变得越来越火,正所谓,Software is eating the world. 软件定义网络也是如此.不论是在工业界还是学术界都将是一次伟大的革命,都在紧随着这个行业的方向,找自 ...

  3. OpenFlow协议初探——OpenFLow中的流和流表

    OpenFlow协议初探--OpenFLow中的流和流表 OpenFlow交换机转发面由两部分组成:端口和流表.一个交换机可以有很多种端口,也可以有很多级流表.下图是思科提供的OpenFlow交换机总 ...

  4. 基于OpenFlow协议的SDN控制器拓扑发现

    基于OpenFlow协议的SDN控制器拓扑发现     OpenFlow协议的SDN控制器通过LLDP(Link Layer Discovery Protocol,链路发现协议)协议进行链路发现,并根 ...

  5. DLT645协议解析(一)---初识 DLT645协议

    (一)初识 DLT645协议              DLT645协议是一种国内电表远传协议,与Modbus协议类似,采用请求应答式交互模型,采集器和电表一问一答进行通信,电气层可以是经典的RS48 ...

  6. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

  7. OpenFlow协议Open Flow交换机跟流表(FlowTable)

    Open Flow协议.Open Flow交换机跟流表(FlowTable) 传统网络:传统网络的缺陷或者催生SDN的背景请参考链接https://www.cnblogs.com/031602523l ...

  8. OpenFlow交换机 之 OpenFlow协议

    转载地址:3. OpenFlow协议_SDN核心技术剖析和实战指南_红黑联盟读书频道http://book.2cto.com/201310/34138.html OpenFlow协议是用来描述控制器和 ...

  9. SDN软件定义网络之OpenFlow协议

    文章目录 P16 实验三 OpenFlow协议 拓扑图 要点 控制器设置 P16 实验三 OpenFlow协议 抓包软件分析实验内容 拓扑图 要点 控制器设置

最新文章

  1. psfaddtable - 添加一个Unicode字符表到控制台字体中
  2. Dynamics CRM中的操作(action)是否是一个事务(transaction)?
  3. java ssh过滤器_SSH中的过滤器,拦截器,监听器的一些基本认识
  4. 1.7-06编程基础之字符串 字符翻转
  5. TCP同步和异步连接_学习笔记
  6. repomd.xml错误14 not found
  7. django07: 模板语言(旧笔记)
  8. 老师“鬼话”全曝光!哈哈哈哈哈哈全国的老师都这样吗?
  9. app接口服务器请求为什么会报错307_Vue接口代理和数据Mock,你会了吗
  10. hive jdbc 访问 配置_Hive入门级教程(详细)
  11. oracle恢复init文件,详解NBU异机恢复ORACLE数据库
  12. 软件工程个人日报 2016/6/29
  13. 如何用PHP和JavaScript比较时期(包括时间)
  14. 视频教程-AJAX+JSON完成实时验证码检测+输入补齐-Java
  15. UE4是什么?虚幻4引擎是什么?
  16. 手把手教你用 Keras 实现 LSTM 预测英语单词发音
  17. Python三大神器之pip用法详解
  18. 肖飒:区块链应用创业的法律边界及案例分析 | 清华x-lab公开课
  19. sqlmap用法详解
  20. PHP消息队列的实现方式

热门文章

  1. Java 算法 面试
  2. oracle外关联更新操作,记要oracle 关联更新的例子
  3. 【ubuntu】给新装好的UBUNTU系统配置静态IP
  4. MATLAB学习(4)——min
  5. 函数名,函数体,返回值,参数
  6. C#WinForm 窗体单例模式 反射单例
  7. 浮点数规格化-不同基数的规格化
  8. Java拓展(数据类型及其大小)
  9. Open Live Writer - TargetInvocationException
  10. POJ3728 THE MERCHANT LCA RMQ DP