[发明专利]一种基于Openflow的事件并行控制器及其事件并行处理方法有效

专利信息
申请号: 201310647876.0 申请日: 2013-12-04
公开(公告)号: CN103677760A 公开(公告)日: 2014-03-26
发明(设计)人: 刘轶;宋平;刘驰 申请(专利权)人: 北京航空航天大学
主分类号: G06F9/38 分类号: G06F9/38;G06F9/44
代理公司: 北京永创新实专利事务所 11121 代理人: 李有浩
地址: 100191*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 openflow 事件 并行 控制器 及其 处理 方法
【权利要求书】:

1.一种基于Openflow的事件并行控制器,其特征在于:该控制器包括有流处理模块(1)、状态处理模块(2)和Openflow消息分配控制模块(3);

Openflow消息分配控制模块(3)第一方面采用异步非阻塞IO模型从链接的接收缓冲区中接收Openflow交换机(4)发送的Openflow消息;所述Openflow消息中包括有Packet-in消息、Flow-Removed消息、Port-status消息和Error消息。

Openflow消息分配控制模块(3)第二方面将流处理任务TASK3-1={FAPacket-inFLOWBase_flow,FAFlow-RemovedFLOWBase_flow}]]>发送到流处理模块(1)的主线程本地任务队列Qz中;

所述流处理任务TASK3-1={FAPacket-inFLOWBase_flow,FAFlow-RemovedFLOWBase_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事件对应的流处理任务FAFlow-RemovedFLOWBase_flow.]]>

Openflow消息分配控制模块(3)第三方面将状态处理任务TASK3-2={SAPort-statusSTATEBase_state,SAErrorSTATEBase_state}]]>发送到状态处理模块(2)的访问任务队列PstateSTATEBase_state={P1,P2,...,Ps}]]>中;

所述状态处理任务TASK3-2={SAPort-statusSTATEBase_state,SAErrorSTATEBase_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状态处理任务记为SAErrorSTATEBase_state.]]>

Openflow消息分配控制模块(3)第四方面接收流处理模块(1)输出的controller-to-switch消息;

Openflow消息分配控制模块(3)第五方面采用异步非阻塞IO模型从消息-线程TH3={C1,C2,…,Cc}中所属的链接的发送缓冲区中向Openflow交换机(4)输出controller-to-switch消息。

流处理模块(1)第一方面用于接收Openflow消息分配控制模块(3)输出的流处理任务TASK3-1={FAPacket-inFLOWBase_flow,FAFlow-RemovedFLOWBase_flow};]]>

流处理模块(1)第二方面将TASK3-1={FAPacket-inFLOWBase_flow,FAFlow-RemovedFLOWBase_flow}]]>保存到主线程本地任务队列Qz中;

流处理模块(1)第三方面将TASK3-1={FAPacket-inFLOWBase_flow,FAFlow-RemovedFLOWBase_flow}]]>通过轮询的方式发送到计算线程本地任务队列中;

流处理模块(1)第四方面执行TASK3-1={FAPacket-inFLOWBase_flow,FAFlow-RemovedFLOWBase_flow}]]>中的具体任务;并动态生成对流对象FLOWBase_flow={F1,F2,…,Ff}的处理任务,记为流对象子任务将所述添加到QTH1={Q1,Q2,...,Qa}]]>中;

流处理模块(1)第五方面执行TASK3-1={FAPacket-inFLOWBase_flow,FAFlow-RemovedFLOWBase_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)发出的状态处理任务TASK3-2={SAPort-statusSTATEBase_state,SAErrorSTATEBase_state},]]>并将TASK3-2={SAPort-statusSTATEBase_state,SAErrorSTATEBase_state}]]>保存到状态对象STATEBase_state={S1,S2,…,Ss}的访问任务队列中;

状态处理模块(2)第二方面接收流处理模块(1)发出的状态处理任务并将保存到状态对象STATEBase_state={S1,S2,…,Ss}的访问任务队列中;

状态处理模块(2)第三方面状态-线程TH2={B1,B2,…,Bb}中的B1从中提取出属于B1的访问任务队列PstateB1={P1,P2,...,Ps};]]>然后B1通过轮询的方式执行PstateB1={P1,P2,...,Ps}]]>中的任务;当执行完成后,向流处理模块1发送的任务完成消息

状态-线程TH2={B1,B2,…,Bb}中的B2从中提取出属于B2的访问任务队列然后B2通过轮询的方式执行中的任务;当执行完成后,向流处理模块(1)发送的任务完成消息

状态-线程TH2={B1,B2,…,Bb}中的Bb从中提取出属于Bb的访问任务队列然后Bb通过轮询的方式执行中的任务;当执行完成后,向流处理模块1发送的任务完成消息

对于状态处理模块(2)第四方面向流处理模块(1)发送的任务完成消息集合记为STA2-1={STA2-1B1,STA2-1B2,...,STA2-1Bb}.]]>

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310647876.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top