基于SDWAN场景实现网络业务离线编排处理的系统及方法与流程

文档序号:17984931发布日期:2019-06-22 00:20阅读:586来源:国知局
基于SDWAN场景实现网络业务离线编排处理的系统及方法与流程

本发明涉及广域网领域,尤其涉及sdn控制器离线编排领域,具体是指一种基于sdwan场景实现网络业务离线编排处理的系统及方法。



背景技术:

sdn标准的全称为“softwaredefinednetworking”,即软件定义网络,具有三大特征:网络可编程、转发与控制分离以及集中式控制。在其架构中,网络被分为应用、控制和转发三层,转发设备为控制器提供编程接口(sbapi),控制器为应用提供编程接口(nbapi),通过编写网络应用就可以灵活地定义转发设备的行为。

sdwan是将sdn技术应用到广域网场景中所形成的一种服务,这种服务用于连接广阔地理范围的企业网络,包括企业的分支机构以及数据中心,目前的应用场景可归纳为三类:企业互联,数据中心互联及云网互联。sdwan场景下,cpe设备与控制器通常分布于不同的广域网之中,由于网络连接的不稳定性,会导致cpe设备与控制器无法建立长时间的稳定连接,这导致应用无法对cpe进行长时间可靠的编排,离线编排的需求变得迫切且必要。



技术实现要素:

本发明的目的是克服了上述现有技术的缺点,提供了一种满足高可靠性、编排稳定、操作简便的基于sdwan场景实现网络业务离线编排处理的系统及方法。

为了实现上述目的,本发明的基于sdwan场景实现网络业务离线编排处理的系统及方法如下:

该基于sdwan场景实现网络业务离线编排处理的系统,其主要特点是,所述的系统包括:

离线编排层,分别与北向应用层和md-sal层相连接;

所述的离线编排层包括:

离线编排框架,与所述的cpe设备相连接,用于调度在线的cpe设备,并对其进行配置下发、配置同步、异常处理以及异常信息上报的处理;

数据库框架,与所述的离线编排框架和cpe设备相连接,用于存放所有cpe设备的配置信息、运行时信息、状态信息和其他的临时数据。

较佳地,所述的离线编排框架及数据库框架与sdn控制器的其他核心bundle一起启动。

较佳地,所述的数据库框架包括候选数据库和运行数据库,所述的候选数据库用于存放最新的转换后的网络应用请求数据,所述的运行数据库用于存放当前cpe设备的运行数据;每个cpe设备对应唯一的候选数据库和唯一的运行数据库;所述的候选数据库和运行数据库分别对应多个业务集合;所述的业务集合对应多个业务表项。

较佳地,所述的业务集合包括tenant、vpn、bgp和qos。

该基于上述系统实现基于sdwan场景的网络业务离线编排处理的方法,其主要特点是,所述的方法包括网络应用对sdn控制器进行离线编排,所述的方法包括以下步骤:

(1)网络应用发送cpe设备的配置请求;

(2)控制器将所述配置请求信息进行相应格式转换并交至数据库框架处理,返回对该请求的响应;

(3)离线编排框架收到cpe设备上线事件通知,保存设备上线状态并分配一个工作者线程对其进行编排管理;

(4)所述的工作者线程收到提示错误的rpc-reply响应,并对之前的所有未提交的配置进行回滚。

较佳地,所述的步骤(4)具体包括以下步骤:

(4.1)判断所述的工作者线程是否收到提示错误的rpc-reply响应,如果是,则继续步骤(4.2);否则,继续步骤(4.3);

(4.2)对之前的所有未提交的配置进行回滚,同时上报特定格式的信息至网络应用;

(4.3)以预设次数重试步骤(2),直至cpe设备正确响应。

较佳地,所述的步骤(4)还包括工作者线程终止执行的步骤,所述的步骤(4)具体包括以下步骤:

(a4.1)判断是否收到cpe设备的下限请求,如果是,则所述的工作者线程终止执行;否则,继续步骤(a4.2);

(a4.2)判断所述的工作者线程是否收到提示错误的rpc-reply响应,如果是,则继续步骤(a4.3);否则,继续步骤(a4.4);

(a4.3)判断所述的工作者线程收到的rpc-reply响应是否提示配置错误,如果是,则所述的工作者线程终止执行;否则,对之前的所有未提交的配置进行回滚,同时上报特定格式的信息至网络应用;

(a4.4)重试步骤(2),判断超时重试的次数是否已达到最大值,如果是,则所述的工作者线程终止执行;否则,继续重试步骤(2),直至cpe设备正确响应。

较佳地,,所述的方法还包括离线编排框架通过master-worker线程模型对在线cpe设备进行编排管理的步骤,具体包括以下步骤:

(1-1)启动master线程,筛选有配置信息的候选数据库,并确定上线的其对应的cpe设备;

(1-2)分配工作者线程对所述的cpe设备进行编排管理。

较佳地,所述的方法步骤(1-1)包括以下步骤:

(1-1.1)建立预先建立的数据库内存镜像,建立工作者线程池,并进行线程资源的初始化设置;

(1-1.2)轮询数据库镜像;

(1-1.3)判断候选数据库是否有配置信息,如果是,则继续步骤(1-1.4);否则,继续步骤(1-1.2);

(1-1.4)判断其对应的cpe设备是否在线,如果是,则分配工作者线程对其进行编排管理;否则,继续步骤(1-1.2)。

较佳地,所述的步骤(1-2)包括以下步骤:

(1-2.1)获取并锁住cpe设备的会话;

(1-2.2)根据业务顺序依次调用对应的业务代码通过完全同步的方式进行下发操作,判断rpc-reply响应是否正确,如果是,则进行下一个rpc请求;否则,进入异常处理流程;

(1-2.3)将业务表项从候选数据库转移至运行数据库,释放cpe设备的会话锁,结束工作者线程。

采用了本发明的基于sdwan场景实现网络业务离线编排处理的系统及方法,离线编排实现的功能不仅是在cpe设备下线时能够对其进行稳定编排,而且需要实现对cpe设备配置的预先下发,在线编排的功能,同时附加实现对cpe设备配置的无缝替换。屏蔽网络应用对cpe设备在线状态的依赖,使得在cpe设备离线时做到对配置的预下发,等待设备上线后同步下发所有的配置。通过采用离线编排系统,可以达到下列技术效果:稳定编排:屏蔽网络应用对cpe设备在线状态的依赖,做到预先配置,在线编排的功能;配置重新下发:通过数据库操作,实现cpe设备的无缝替换,配置重新下发的功能;平滑拓展:采用模块化开发的方式,增加业务只需要添加响应的业务代码,改变业务依赖关系,弹性增加业务,平滑升级业务;高可靠性:离线编排框架和数据库框架分开设计,业务之间的强依赖关系,增加了系统的可靠性。

附图说明

图1为本发明的基于sdwan场景实现网络业务离线编排处理的系统的sdn控制器的结构示意图。

图2为本发明的基于sdwan场景实现网络业务离线编排处理的系统的数据库框架的结构示意图。

图3为本发明的实现基于sdwan场景的网络业务离线编排处理的方法的对控制器进行离线编排的流程示意图。

图4为本发明的实现基于sdwan场景的网络业务离线编排处理的方法的离线编排框架的流程示意图。

具体实施方式

为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。

本发明的该基于sdwan场景实现网络业务离线编排处理的系统,其中包括:

离线编排层,分别与北向应用层和md-sal层相连接;

所述的离线编排层包括:

离线编排框架,与所述的cpe设备相连接,用于调度在线的cpe设备,并对其进行配置下发、配置同步、异常处理以及异常信息上报的处理;

数据库框架,与所述的离线编排框架和cpe设备相连接,用于存放所有cpe设备的配置信息、运行时信息、状态信息和其他的临时数据。

作为本发明的优选实施方式,所述的离线编排框架及数据库框架与sdn控制器的其他核心bundle一起启动。

作为本发明的优选实施方式,所述的数据库框架包括候选数据库和运行数据库,所述的候选数据库用于存放最新的转换后的网络应用请求数据,所述的运行数据库用于存放当前cpe设备的运行数据;每个cpe设备对应唯一的候选数据库和唯一的运行数据库;所述的候选数据库和运行数据库分别对应多个业务集合;所述的业务集合对应多个业务表项。

作为本发明的优选实施方式,所述的业务集合包括tenant、vpn、bgp和qos。

该基于上述系统实现基于sdwan场景的网络业务离线编排处理的方法,其主要特点是,所述的方法包括网络应用对sdn控制器进行离线编排,所述的方法包括以下步骤:

(1)网络应用发送cpe设备的配置请求;

(2)控制器将所述配置请求信息进行相应格式转换并交至数据库框架处理,返回对该请求的响应;

(3)离线编排框架收到cpe设备上线事件通知,保存设备上线状态并分配一个工作者线程对其进行编排管理;

(4)所述的工作者线程收到提示错误的rpc-reply响应,并对之前的所有未提交的配置进行回滚;

(4.1)判断所述的工作者线程是否收到提示错误的rpc-reply响应,如果是,则继续步骤(4.2);否则,继续步骤(4.3);

(4.2)对之前的所有未提交的配置进行回滚,同时上报特定格式的信息至网络应用;

(4.3)以预设次数重试步骤(2),直至cpe设备正确响应;

(a4.1)判断是否收到cpe设备的下限请求,如果是,则所述的工作者线程终止执行;否则,继续步骤(a4.2);

(a4.2)判断所述的工作者线程是否收到提示错误的rpc-reply响应,如果是,则继续步骤(a4.3);否则,继续步骤(a4.4);

(a4.3)判断所述的工作者线程收到的rpc-reply响应是否提示配置错误,如果是,则所述的工作者线程终止执行;否则,对之前的所有未提交的配置进行回滚,同时上报特定格式的信息至网络应用;

(a4.4)重试步骤(2),判断超时重试的次数是否已达到最大值,如果是,则所述的工作者线程终止执行;否则,继续重试步骤(2),直至cpe设备正确响应。

较佳地,所述的方法还包括离线编排框架通过master-worker线程模型对在线cpe设备进行编排管理的步骤,具体包括以下步骤:

(1-1)启动master线程,筛选有配置信息的候选数据库,并确定上线的其对应的cpe设备;

(1-1.1)建立预先建立的数据库内存镜像,建立工作者线程池,并进行线程资源的初始化设置;

(1-1.2)轮询数据库镜像;

(1-1.3)判断候选数据库是否有配置信息,如果是,则继续步骤(1-1.4);否则,继续步骤(1-1.2);

(1-1.4)判断其对应的cpe设备是否在线,如果是,则分配工作者线程对其进行编排管理;否则,继续步骤(1-1.2);

(1-2)分配工作者线程对所述的cpe设备进行编排管理;

(1-2.1)获取并锁住cpe设备的会话;

(1-2.2)根据业务顺序依次调用对应的业务代码通过完全同步的方式进行下发操作,判断rpc-reply响应是否正确,如果是,则进行下一个rpc请求;否则,进入异常处理流程;

(1-2.3)将业务表项从候选数据库转移至运行数据库,释放cpe设备的会话锁,结束工作者线程。

本发明的具体实施方式中,本发明充分利用sdn控制器的体系结构,在北向应用层和md-sal层之间加入离线编排层,如图1所示。sdn控制器利用osgi框架协议来管理模块的生命周期,osgi是一个基于插件式的软件架构,包含osgi框架和插件。这种插件被称之为bundle,bundle可以被动态地加载和卸载、动态升级,通过使用osgi,java应用就可以实现良好的模块化。osgi框架协议提供了一个通用的安全的java框架,bundle服务应用的部署、扩展全都依赖于该框架。图1中的ofarrangeframework为离线编排层,nb(consumer)api为北向应用层,md-sal为md-sal层。

本发明的权利要求书及说明书中,cpe设备为客户网关设备;candidate数据库为候选数据库;running数据库为运行时数据库;sdwan场景是指sdn技术应用于广域网的一种场景;md-sal层是基于模型驱动的服务抽象层,是控制器的一个层次结构;rpc-reply响应指的是远过程调用的响应;worker线程指的是工作者线程;master-worker线程模型是一种线程模型,master线程代表监听者线程,worker线程代表工作者线程,一个master线程可以同时启用多个worker线程来完成具体的业务编排工作;cpe设备的session代表会话,代表控制器与cpe设备之间的一个连接。

本发明的说明书及说明书附图中,apps指网络应用;nb(consumer)api指北向接口,通常采用httprestful风格;ofarrangeframework指离线编排框架;dbframework指数据库框架;md-sal指基于模型驱动的服务抽象层;distributedcore指分布式核心;sb(providers&protocols)api指南向接口,可采用的南向协议包括snmp、netconf、bgp-ls等;netelement(cpe)指网元,客户网关设备。cpe-db1指特定cpe设备对应的数据库,包括candidate和running数据库;db1-coll1指特定数据库对应的业务表项;collection-doc1指特定业务表项对应的具体业务数据,业务数据以文档的形式存在。app指网络应用;controller指控制器;request为北向请求,通常采用httprestful接口;response为北向请求的响应;online指设备上线;rpc为远过程调用;rpc-reply为远过程调用的响应。

离线编排层主要由离线编排框架和数据库框架两部分组成,他们作为sdn控制器的bundle存在,随控制器的其他核心bundle一起启动。离线编排框架利用master-worker线程模型调度每一个在线的cpe设备,对其进行配置下发、配置同步、异常处理以及异常信息上报等;数据库框架负责存放所有cpe设备的配置信息,运行时信息,状态信息和其他的临时数据。

数据库框架有以下三个层次组成,如图2所示

每个cpe设备都唯一对应一个candidate和running数据库,比如cpe设备的类型是vcpe,sn(序列号)为certusnet2gw0001,那么其唯一对应的数据库名称为:candidate-vcpe-certusnet2gw0001和running-vcpe-certusnet2gw0001;

每个数据库(例如candidate-vcpe-certusnet2gw0001)中对应多个业务集合,sdwan场景下,至少存在tenant、vpn、bgp以及qos等业务集合。

每个业务集合对应多个业务表项,以tenant业务为例,同一个cpe设备上可能会存在多个vrf,每个vrf都表现为tenant业务集合下的一个业务表项。

网络应用请求的数据,转换后会被存入candidate数据库中,需要说明的一点是,相同业务的重复提交会覆盖之前的数据,使得candidate数据库中存放的永远是最新的配置信息。

cpe设备上线后,离线编排框架会根据特定的业务顺序依次下发配置,每项业务下发成功后,都会将该业务的业务数据从candidate数据库转移到running数据库中。running数据库存放的是当前cpe设备的运行数据。必要时,需要在设备上线后,主动同步设备运行时数据到running数据库中,这个工作由离线编排框架完成。

从candidate到running,实现了对cpe设备配置的预先下发,在线编排。

如果有一台cpe设备不幸发生了硬件故障无法恢复,或者在多台cpe设备之间共享配置,离线编排系统的解决方案是将running数据库转移到candidate数据库,之后由离线编排框架重新下发配置。值得注意的是,在数据转移期间,cpe设备必须始终处于下线状态以保证数据一致性。

从running到candidate,实现了对cpe设备配置的无缝替换和配置共享。

sdn控制器启动时,加载离线编排框架bundle和数据库框架bundle,此时,网络应用可以对控制器进行离线编排,具体流程如图3所示:

1、网络应用通过nbapi接口发送cpe设备的配置请求,例如下发一条vxlan隧道;

2、控制器收到请求后,将其请求信息进行相应格式转换后交给数据库框架处理后,立即返回对该请求的响应;

3、cpe设备上线后,离线编排框架收到上线事件通知,保存设备上线状态并分配一个worker线程对其进行编排管理。编排的过程采用完全同步的方式,即worker线程通过sbapi发送一个rpc请求给cpe设备,待cpe设备响应后,再发送下一个rpc请求;

4、如果worker线程收到一个提示错误的rpc-reply响应,会对之前的所有未提交配置进行回滚,同时上报一个特定格式的信息给网络应用;

5、如果worker线程在超时时间内仍未收到rpc-reply响应,将对该请求进行特定次数的重试,直到cpe设备正确响应;

6、在以下情况下,worker线程将终止执行:

a、超时重试的次数已达到最大值;

b、收到设备下线事件;

c、响应的rpc-reply提示配置错误。

离线编排框架的核心是采用了master-worker线程模型来实现对每一个在线cpe设备的编排管理,其实现原理图4所示。

离线编排框架随sdn控制器启动时,会首先启动master线程,其工作流程如下:

1、建立数据库的一份内存镜像,并在适当的时机刷新这份镜像。建立内存镜像的目的是避免过多地数据库读操作,减少不必要的通信时延,提高master线程的工作效率;

2、建立worker线程池,并进行线程资源的初始化设置;

3、轮询数据库镜像,筛选出有配置信息的所有candidate数据库;

4、对于每一个有配置信息的candidate数据库,判断其对应的cpe设备是否在线。如果在线,则分配一个worker线程对其进行编排管理;

5、不断地进行3-4的操作,直到控制器停止master线程。

worker线程在其完整的生命周期中,只负责处理对应cpe设备的编排管理,其它cpe设备由其它相应的worker线程管理。其工作流程如下:

1、获取cpe设备的session,并将其session锁住。锁住的目的是不允许其它编排器对其下发配置,保证cpe设备和离线编排系统之间的数据一致性;

2、根据业务顺序依次调用对应的业务代码进行下发操作。操作类型有insert,delete和update,下发过程采用完全同步的方式,即一个rpc请求对应一个rpc-reply响应,确认rpc-reply响应正确后,才进行下一个rpc请求。若rpc-reply返回错误,则进入异常处理流程;

3、业务下发完成后,将业务表项从candidate数据库转移至running数据库;

4、释放cpe设备的session锁,结束worker线程。

异常处理主要包括:cpe下线异常,超时异常,中断异常以及配置异常。处理流程如下:

a、cpe下线异常。立即进行线程资源回收,相关数据恢复,结束worker线程;

b、超时异常。超时异常通常是由网络通信的不稳定性造成的,发生超时异常时,需要对业务进行重下发,重试的次数默认为4,如果达到重试的最大次数仍然没有收到rpc-reply响应,则主动关闭session,回收资源,恢复数据,结束worker线程;

c、中断异常。当业务下发需要的数据当时还没有准备好,就会触发中断异常,处理流程则是立即结束worker线程,并通知master线程在一定的时间间隔内不用理会该cpe设备的编排需求;

d、配置异常。由cpe设备引发,错误信息在rpc-reply消息体中返回,错误类型如引用了错误的或不存在的资源。处理流程是立即封存当前的业务数据,向网络应用上报特定格式的告警,通知master线程屏蔽对该cpe设备的编排需求,关闭session,回收数据,结束worker线程。网络应用在收到告警后,需要进行下一步的处理,这已经超出了本发明的范围,不再赘述。

业务编排时,必然涉及业务之间的依赖,依赖关系的解析关系到业务能否正确下发。每项业务的业务代码在生成时,需要指定其直接依赖的业务有哪些,这些关系构成了一个完整的依赖链。worker线程在下发业务时,必须严格按照依赖链的顺序编排业务。

离线编排系统启动时,需要主动去读取每项业务代码中业务的依赖关系。业务之间的依赖关系有:self、import、export和unknown。self代表业务自身,import代表依赖,export代表被依赖(暂时不用该关系),unknown代表未知关系。

一个至简的依赖链矩阵实例如下所示:

该依赖链矩阵表示:b2依赖b1,b3依赖b2,b4依赖b3,b5依赖b4,b6依赖b5。最后生成的依赖链为:b1<-b2<-b3<-b4<-b5<-b6。worker线程在业务编排时,必须先编排b1业务,其次编排b2业务,b3业务,b4业务,b5业务,最后编排b6业务。

循环依赖造成的后果很严重,会导致worker线程无休止地编排循环依赖中的那些业务而无法退出。在编写业务代码时,常常由于业务量大,依赖关系复杂而导致循环依赖的出现。离线编排系统在生成依赖链的时候,必须有能力去检测循环依赖的出现。

一个至简的直接循环依赖链矩阵如下:

该依赖链矩阵表示:b2依赖b1和b3,b3依赖b2,b4依赖b3,b5依赖b4,b6依赖b5。

一个循环依赖出现了:b2<-b3<-b2。

另一个至简的间接循环依赖矩阵如下所示:

该依赖链矩阵表示:b1依赖b5,b2依赖b1,b3依赖b2,b4依赖b3,b5依赖b4,b6依赖b5。

另一个循环依赖出现了:b5<-b1<-b2<-b3<-b4<-b5。

检测的算法特别简单,在计算单个业务的依赖关系时,如果其依赖的业务链与被依赖的业务链中出现相同的业务,则判定出现循环依赖。

在直接循环依赖的示例中,计算b3的依赖关系,其依赖b2,同时被b2依赖;在间接循环依赖的示例中,计算b1的依赖关系,其依赖b5,同时间接被b5依赖。

采用了本发明的基于sdwan场景实现网络业务离线编排处理的系统及方法,离线编排实现的功能不仅是在cpe设备下线时能够对其进行稳定编排,而且需要实现对cpe设备配置的预先下发,在线编排的功能,同时附加实现对cpe设备配置的无缝替换。屏蔽网络应用对cpe设备在线状态的依赖,使得在cpe设备离线时做到对配置的预下发,等待设备上线后同步下发所有的配置。通过采用离线编排系统,可以达到下列技术效果:稳定编排:屏蔽网络应用对cpe设备在线状态的依赖,做到预先配置,在线编排的功能;配置重新下发:通过数据库操作,实现cpe设备的无缝替换,配置重新下发的功能;平滑拓展:采用模块化开发的方式,增加业务只需要添加响应的业务代码,改变业务依赖关系,弹性增加业务,平滑升级业务;高可靠性:离线编排框架和数据库框架分开设计,业务之间的强依赖关系,增加了系统的可靠性。

在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1