一种基于Openflow的事件并行控制器及其事件并行处理方法

文档序号:6522277阅读:239来源:国知局
一种基于Openflow的事件并行控制器及其事件并行处理方法
【专利摘要】本发明公开了一种基于Openflow的事件并行控制器及其事件并行处理方法,该方法将Openflow消息的收发与Openflow事件的处理相分离,利用额外的计算线程对Openflow事件处理进行加速。应用开启后的控制器将建立与交换机的链接,并将链接平均地分给多个I/O线程,每个链接上消息的收发由唯一的I/O线程处理。应用在接收Openflow消息后,触发对应的Openflow事件,并根据事件的类型产生对流对象和状态对象的处理任务,交由不同的线程进行处理。在流事件处理过程中,能够动态产生子任务,并由多个线程并行执行。对共享状态,使用唯一的状态线程进行处理。本发明方法相对于现有的Openflow事件的并行处理方法具有更好的性能可扩展性、以及更简单的数据访问方式。
【专利说明】—种基于Openflow的事件并行控制器及其事件并行处理方法
【技术领域】
[0001]本发明涉及一种Openflow控制器,是指一种用软件定义网络领域Openflow控制器、以及对Openflow控制器内部事件的并行处理方法,特别涉及Openf low流事件处理过程内部的并行处理方法。
【背景技术】
[0002]2008年,OpenFlow技术首次被提出。其思想是将传统网络设备中的数据转发和路由控制两个功能模块相分离,利用集中式的控制器通过标准化的接口对各种网络设备进行管理和配置。OpenFlow技术引起了业界的广泛关注,成为近年来十分热门的技术。由于Openflow技术为网络带来灵活的可编程性,因此该技术已被广泛的应用于校园网、广域网、移动网络以及数据中心网络等多种网络之中。
[0003]在2OO9 年 I2 月 3I 日公开的《OpenFlow Switch Specification)), OpenNetworking Foundation组织,在此文献的第4.1节介绍了 OpenFlow消息的类型。Openflow消息包括有controller-to-switch (译:控制器向交换机传输的消息)、Asynchronous (译:异步消息)和Symmetric (译:对称消息)。其中异步消息中包括有Packet-1n (译:流到达消息)、Flow-Removed (译:流移除消息)、Port-status (译:端口状态消息)和Error (译:错误消息)。
[0004]在2013年3月29日的软件学报中公开了《基于OpenFlow的SDN技术》,左青云等人发表。文中公开了 OpenFlow网络主要由OpenFlow交换机、控制器两部分组成。OpenFlow交换机根据流表来转发数据包,代表着数据转发平面;控制器通过全网络视图来实现管控功能,其控制逻辑表示控制平面。每个OpenFlow交换机的处理单元由流表构成,每个流表由许多流表项组成,流表项则代表转发规则。进入交换机的数据包通过查询流表来取得对应的操作。控制器通过维护网络视图(network view)来维护整个网络的基本信息,如拓扑、网络单元和提供的服务等。运行在控制器之上的应用程序通过调用网络视图中的全局数据,进而操作OpenFlow交换机来对整个网络进行管理和控制。
[0005]Openflow技术的特点使得Openflow控制器端的处理效率成为网络能否正常运行的关键。原始单线程控制器的处理效率远远不能满足大规模Openflow网络的处理需求。因此,现有技术利用多线程,在控制器内部并行地处理Openflow事件,提高控制器的处理效率。
[0006]但现有的Openflow事件并行处理方法,在利用众核环境对规模较大,行为复杂的Openflow网络进行控制时,存在处理性能的可扩展性问题:(I)流事件处理过程不支持并行操作,无法满足时间复杂度高的计算过程;(2)增加线程难以有效提高流事件的处理效率;(3) Openflow事件处理过程中,对共享数据的访问存在耦合,影响性能可扩展性。
[0007]本发明针对上述问题,在Openflow控制器内部,针对Openflow事件,尤其是Openflow流事件,提出了一种新的事件并行控制器及其事件并行处理方法。
【发明内容】

[0008]本发明的目的之一是提供一种基于Openflow的事件并行控制器,该控制器是利用众核环境,在大规模Openflow网络场景下,利用I/O线程并行地对Openflow消息进行收发,利用计算线程对Openflow事件的处理进行加速,增加流事件处理过程内部的并行支持,增强Openflow控制器的计算能力,提高性能可扩展性。
[0009]本发明的目的之二是提出一种基于Openflow的事件并行处理方法,该方法使用多个线程并行地对Openflow消息进行收发;当收到Openflow消息后,触发对应的Openflow事件;针对流事件及其对应的处理方法,生成对该流事件的处理任务,由流一线程并行执行;针对其他类型事件及其对应的处理方法,生成针对共享状态的处理任务,由状态一线程并行执行;流事件的处理过程内部,可以动态的产生子任务,通过任务窃取的形式,多个线程可以并行地对同一个流事件进行处理。
[0010]本发明是一种基于Openflow的事件并行控制器,该控制器包括有流处理模块
(I)、状态处理模块(2)和Openflow消息分配控制模块(3);
[0011]Openflow消息分配控制模块(3)第一方面采用异步非阻塞IO模型从链接的接收缓冲区中接收Openflow交换机(4)发送的Openflow消息;所述Openflow消息中包括有Packet-1n 消息、Flow-Removed 消息、Port-status 消息和 Error 消息。
[0012]Openflow消息分配控制模块(3)第二方面将流处理任务
TASK,...,—==发送到流处理模块⑴的主线程本地任务队列
Qz中;
[0013]所述流处理任务TASKv'令A=:='以=匕的获取是:(A)首先`依据Packet-1n消息触发Packet-1n事件;然后根据Packet-1n事件生成Base_flow结构的流对象FL0WBase—flOT = (F1, F2,..., Ff};最后根据Base_f low结构中start方法生成
所述Packet-1n事件对应的流处理任务/7; (B)首先依据Flow-Removed消息
触发Flow-Removed事件;然后根据Flow-Removed事件生成如表1中Base_flow结构的流对象FL0WBase—flOT = (F1, F2,..., Ff};最后根据Base_flow结构中start方法生成所述
Flow-Removed事件对应的流处理任务?
[0014]Openflow消息分配控制模块(3)第三方面将状态处理任务TASK^2 =1发送到状态处理模块(2)的访问任务队列
r*?r.λ rPJ--\
Ρ^1Α?^Base_ j O 0." O I |=h
Λ smtes,
[0015]所述状态处理任务的获取是:(A)首
先依据Port-status消息触发Port-status事件;然后根据Port-status事件生成Base_state结构的状态对象STATEBase—state = (S1, S2,…,Sj的处理任务,即Port-status状态处理任务记为
【权利要求】
1.一种基于Openflow的事件并行控制器,其特征在于:该控制器包括有流处理模块(I)、状态处理模块(2)和Openflow消息分配控制模块(3); Openflow消息分配控制模块(3)第一方面采用异步非阻塞IO模型从链接的接收缓冲区中接收Openflow交换机(4)发送的Openflow消息;所述Openflow消息中包括有Packet-1n 消息、Flow-Removed 消息、Port-status 消息和 Error 消息。 Openflow消息分配控制模块(3)第二方面将流处理任务
2.根据权利要求1所述的基于Openflow的事件并行控制器,其特征在于:该控制器与现有Openflow控制器配合`使用,且内嵌在Openflow网络体系结构中。
3.根据权利要求1所述的基于Openflow的事件并行控制器,其特征在于:所述Base_flow结构如下表:
4.根据权利要求1所述的基于Openflow的事件并行控制器,其特征在于:所述的Base_state结构如下表:
5.依据权利要求1所述的基于Openflow的事件并行控制器进行的事件并行处理方法,其特征在于有下列步骤: 步骤一 =Openflow消息的并行收发,触发对应Openflow事件 基于Openflow的事件并行控制器内每个交换机存在唯一的链接。 进行链接建立过程中,消息一线程TH3= IC1, C2,…,C。}中的第一个线程C1负责对Openflow交换机SW = (D1, D2,…,Dd}的链接请求进行监听。当收到链接请求后,建立链接
6.依据权利要求1所述的基于Openflow的事件并行控制器进行的事件并行处理方法,其特征在于:随着线程个数的增多具有更高的加速比。
【文档编号】G06F9/38GK103677760SQ201310647876
【公开日】2014年3月26日 申请日期:2013年12月4日 优先权日:2013年12月4日
【发明者】刘轶, 宋平, 刘驰 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1