[发明专利]一种基于Openflow的事件并行控制器及其事件并行处理方法有效
申请号: | 201310647876.0 | 申请日: | 2013-12-04 |
公开(公告)号: | CN103677760A | 公开(公告)日: | 2014-03-26 |
发明(设计)人: | 刘轶;宋平;刘驰 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/44 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 李有浩 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于Openflow的事件并行控制器及其事件并行处理方法,该方法将Openflow消息的收发与Openflow事件的处理相分离,利用额外的计算线程对Openflow事件处理进行加速。应用开启后的控制器将建立与交换机的链接,并将链接平均地分给多个I/O线程,每个链接上消息的收发由唯一的I/O线程处理。应用在接收Openflow消息后,触发对应的Openflow事件,并根据事件的类型产生对流对象和状态对象的处理任务,交由不同的线程进行处理。在流事件处理过程中,能够动态产生子任务,并由多个线程并行执行。对共享状态,使用唯一的状态线程进行处理。本发明方法相对于现有的Openflow事件的并行处理方法具有更好的性能可扩展性、以及更简单的数据访问方式。 | ||
搜索关键词: | 一种 基于 openflow 事件 并行 控制器 及其 处理 方法 | ||
【主权项】:
1.一种基于Openflow的事件并行控制器,其特征在于:该控制器包括有流处理模块(1)、状态处理模块(2)和Openflow消息分配控制模块(3);Openflow消息分配控制模块(3)第一方面采用异步非阻塞IO模型从链接的接收缓冲区中接收Openflow交换机(4)发送的Openflow消息;所述Openflow消息中包括有Packet-in消息、Flow-Removed消息、Port-status消息和Error消息。Openflow消息分配控制模块(3)第二方面将流处理任务TASK 3 - 1 = { FA Packet - in FLOW Base _ flow , FA Flow - Removed FLOW Base _ flow } ]]>发送到流处理模块(1)的主线程本地任务队列Qz中;所述流处理任务TASK 3 - 1 = { FA Packet - in FLOW Base _ flow , FA Flow - Removed FLOW Base _ flow } ]]>的获取是:(A)首先依据Packet-in消息触发Packet-in事件;然后根据Packet-in事件生成Base_flow结构的流对象FLOWBase_flow={F1,F2,…,Ff};最后根据Base_flow结构中start方法生成所述Packet-in事件对应的流处理任务
(B)首先依据Flow-Removed消息触发Flow-Removed事件;然后根据Flow-Removed事件生成如表1中Base_flow结构的流对象FLOWBase_flow={F1,F2,…,Ff};最后根据Base_flow结构中start方法生成所述Flow-Removed事件对应的流处理任务FA Flow - Removed FLOW Base _ flow . ]]>Openflow消息分配控制模块(3)第三方面将状态处理任务TASK 3 - 2 = { SA Port - status STATE Base _ state , SA Error STATE Base _ state } ]]>发送到状态处理模块(2)的访问任务队列P state STAT E Base _ state = { P 1 , P 2 , . . . , P s } ]]>中;所述状态处理任务TASK 3 - 2 = { SA Port - status STATE Base _ state , SA Error STATE Base _ state } ]]>的获取是:(A)首先依据Port-status消息触发Port-status事件;然后根据Port-status事件生成Base_state结构的状态对象STATEBase_state={S1,S2,…,Ss}的处理任务,即Port-status状态处理任务记为
(B)首先依据Error消息触发Error事件;然后根据Error事件生成针对如表2中Base_state结构的状态对象STATEBase_state={S1,S2,…,Ss}的处理任务,即Error状态处理任务记为SA Error STAT E Base _ state . ]]>Openflow消息分配控制模块(3)第四方面接收流处理模块(1)输出的controller-to-switch消息;Openflow消息分配控制模块(3)第五方面采用异步非阻塞IO模型从消息-线程TH3={C1,C2,…,Cc}中所属的链接
的发送缓冲区中向Openflow交换机(4)输出controller-to-switch消息。流处理模块(1)第一方面用于接收Openflow消息分配控制模块(3)输出的流处理任务TASK 3 - 1 = { FA Packet - in FLOW Base _ flow , FA Flow - Removed FLOW Base _ flow } ; ]]>流处理模块(1)第二方面将TASK 3 - 1 = { FA Packet - in FLOW Base _ flow , FA Flow - Removed FLOW Base _ flow } ]]>保存到主线程本地任务队列Qz中;流处理模块(1)第三方面将TASK 3 - 1 = { FA Packet - in FLOW Base _ flow , FA Flow - Removed FLOW Base _ flow } ]]>通过轮询的方式发送到计算线程本地任务队列
中;流处理模块(1)第四方面执行TASK 3 - 1 = { FA Packet - in FLOW Base _ flow , FA Flow - Removed FLOW Base _ flow } ]]>中的具体任务;并动态生成对流对象FLOWBase_flow={F1,F2,…,Ff}的处理任务,记为流对象子任务
将所述
添加到Q T H 1 = { Q 1 , Q 2 , . . . , Q a } ]]>中;流处理模块(1)第五方面执行TASK 3 - 1 = { FA Packet - in FLOW Base _ flow , FA Flow - Removed FLOW Base _ flow } ]]>中的具体任务;并动态生成对状态对象STATEBase_state={S1,S2,…,Ss}的处理任务,记为状态对象子任务
根据所述的
的global属性的值,进行判断;如果global为true,则表示该状态为全局共享状态,则将所述的
给予状态处理模块(2),并等待状态处理模块(2)的任务完成消息STA2-1;反之,如果global不为true,则表示该状态为局部共享状态,则流处理模块(1)中的产生所述
的线程直接执行;流处理模块(1)第六方面通过任务窃取的方式进行计算线程的任务负载均衡。流处理模块(1)第七方面输出controller-to-switch消息给Openflow消息分配模块(3)。计算线程将需要输出的controller-to-switch消息同步地写入到消息-线程TH3={C1,C2,…,Cc}中所属的链接
的发送缓冲区中。状态处理模块(2)第一方面接收Openflow消息模块(3)发出的状态处理任务TASK 3 - 2 = { SA Port - status STATE Base _ state , SA Error STATE Base _ state } , ]]>并将TASK 3 - 2 = { SA Port - status STATE Base _ state , SA Error STATE Base _ state } ]]>保存到状态对象STATEBase_state={S1,S2,…,Ss}的访问任务队列
中;状态处理模块(2)第二方面接收流处理模块(1)发出的状态处理任务
并将
保存到状态对象STATEBase_state={S1,S2,…,Ss}的访问任务队列
中;状态处理模块(2)第三方面状态-线程TH2={B1,B2,…,Bb}中的B1从
中提取出属于B1的访问任务队列P state B 1 = { P 1 , P 2 , . . . , P s } ; ]]>然后B1通过轮询的方式执行P state B 1 = { P 1 , P 2 , . . . , P s } ]]>中的任务;当执行完成
后,向流处理模块1发送的任务完成消息
状态-线程TH2={B1,B2,…,Bb}中的B2从
中提取出属于B2的访问任务队列
然后B2通过轮询的方式执行
中的任务;当执行完成
后,向流处理模块(1)发送的任务完成消息
状态-线程TH2={B1,B2,…,Bb}中的Bb从
中提取出属于Bb的访问任务队列
然后Bb通过轮询的方式执行
中的任务;当执行完成
后,向流处理模块1发送的任务完成消息
对于状态处理模块(2)第四方面向流处理模块(1)发送的任务完成消息集合记为STA 2 - 1 = { STA 2 - 1 B 1 , STA 2 - 1 B 2 , . . . , STA 2 - 1 B b } . ]]>
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310647876.0/,转载请声明来源钻瓜专利网。