OpenFlow1.3协议概述及和1.0的区别


OpenFlow1.3协议概述及和1.0的区别 OpenFlow是一种新型的网络协议,它是控制器和交换机之间的标准协议。自2009年底发布1.0版本后,OpenFlow协议又经历了1.1、1.2、1.3及1.4版本的演进过程,目前使用和支持最多的是1.0和1.3版本。OpenFlow1.3在1.0版的基础上进一步优化及升级,其中添加了很多新的特性及消息,如支持多个流表(flow table)、组表(group table),支持多控制器等。

1 OpenFlow1.3概述

下面主要介绍OF1.3协议中的交换机组件的基本功能及OF1.3协议的多流表的流水线处理。

1.1 交换机

OpenFlow1.3协议中交换机包含的组件如下图一所示:

OpenFlow1.3协议中交换机包含的组件

图一:交换机

  • 一个或多个flow table

OF1.3协议中的交换机含有多个流表,每个流表中含有多个流表项,每个流表项包含多个匹配项及对应的指令。

  • Group table

Group table由多个goup entry组成,每个group entry的结构如下所示:

OpenFlow1.3协议中group entry的结构

Group identifier: 32位的整数,是group的唯一标识。
Group type:group的类型主要有inderect、all、select、fast failover等。
Counters:使用该group的次数。
Action buckets:包含多个action的列表。

  • OpenFlow channel

交换机通过该通道和外部的控制器进行连接,同时和外部的控制器间使用OF1.3协议进行交互(注:1.3协议中交换机和控制器之间支持一个或多个通道)。

1.2 流水线处理(pipeline processing)

交换机中有多个flow table,当交换机收到某个数据包过后,会交给flow tables进行处理,如下图二所示:

OpenFlow1.3协议中流表的流水线处理

图二:流表的流水线处理

说明:
(1)多个flow tables是依次排列的,序号从0开始,每个flow table中含有多个flow entry。
(2)当该数据包和某个flow table中的流表项的match匹配时,会执行该流表项中的指令。
(3)每个流表项中的指令(instruction)可能是:goto table(将该数据包交给指定的table id的flow table处理 )、apply actions(执行actions中的处理)、clear actions(清除action set中所有的action)、write actions(将某个action 放到action set 中去)、write meta_data/mask等。
(4)如果匹配上的flow entry中的指令不是goto table,则flow tables 的流水线处理就会在该flow table上停止,并执行该匹配项上的操作,然后将数据包转发。
(5)交换机的flow table中通常默认都会有table miss这个流表项,table miss流表项的优先级最低,为0且不匹配所有匹配项。table miss流表项的作用是:在某个流表中找不到和该数据包匹配的流表项时,该数据包由table miss来处理,通常是转发给控制器、drop、或转交给后面的flow table。

2 OpenFlow1.3和1.0的区别

OpenFlow1.3和1.0的主要区别如下:

(1)OF1.3支持多个flow table,而OF1.0只支持一个flow table。OF1.3中收到某个数据包后依次从table0开始进行匹配,处理流程见上述1.2 pipeline processing。

(2)动作集(Action set):每个数据包都会有个和其相关的action集合,flow table 中的每个flow entry 都可以修改action set的内容,并且最后数据包会被action set中的action 所处理。

(3)OF1.3协议可以支持多控制器:即一个交换机可以和多个控制器连接,多控制器的设计是为了防止与某个控制器连接中断及负载均衡。每个控制器会有角色的区别,主要有OFPCR_ROLE_EQUAL、OFPCR_ROLE_SLAVE、OFPCR_ROLE_MASTER。

  • OFPCR_ROLE_EQUAL:该控制器拥有所有的权限,并且该控制器的角色和其他控制器相同。
  • OFPCR_ROLE_SLAVE:该控制器仅有只读权限,除了port_status消息外控制器不接收交换机发来的消息,并且该控制器不允许发送以下消息:packet_out、flow_mod、group_mod、port_mod、table_mod request、table_features。交换机收到以上消息时,必须回复error消息。
  • OFPCR_ROLE_MASTER:该控制拥有所有的权限,和OFPCR_ROLE_EQUAL的类似,但只允许有一个控制器拥有master权限。

3 总结

通过本文的阐述,对OpenFlow1.3协议有简要的了解。由于刚开始看OpenFlow1.3,本文只是作者的浅显的理解,若有不正确的地方,望指正,谢谢。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/2533.html
分享到:
相关文章
条评论

登录后才可以评论

杨阳阳 发表于14-10-26
7