软件定义网络中的事件分发方法,控制设备和处理器与流程

文档序号:14602636发布日期:2018-06-05 19:03阅读:227来源:国知局
软件定义网络中的事件分发方法,控制设备和处理器与流程

本发明涉及信息技术领域,特别涉及一种软件定义网络SDN中的事件分发方法,控制设备和处理器。



背景技术:

SDN(Software Defined Network,软件定义网络)是一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

在SDN网络中,每台网络设备仅保留转发功能,控制功能全部集中到一个控制器中。SDN的网络中包括主机,转发设备和控制器。主机是网络端点,是通信的发起方或终结方;转发设备负责数据报文的发送,其没有独立的控制面,而是和其他设备共享一个集中的控制面(即SDN中的控制器);控制器是SDN中的控制中心,负责控制和管理转发设备。主机之间进行通信时,通信通道不是由转发设备协商得出,而是由控制器计算得出,并下发到各个转发设备。

SDN中的控制器是通过软件逻辑、北向接口、NOS(Network Operation System,网络操作系统)和南向接口等软件模块来实现控制和管理的。其中,控制逻辑是网络应用程序或服务,通过NBI(North Bound Interface,北向接口)与NOS交互,使得NOS通过SBI(South Bound Interface,南向接口)来控制转发设备,以实现控制逻辑要求实现的数据转发等功能。

转发设备产生的事件,需要发送给NOS上的应用程序进行处理。现有技术中,事件的分发是基于订阅/发布机制实现,应用程序如果要处理事件必须显式的注册到事件,当由于增加新设备产生新事件时,需要修改代码以适配新事件,导致事件的分发机制不够灵活。



技术实现要素:

本发明实施例提供了一种软件定义网络SDN中的事件分发方法,控制设备和处理器,以解决现有技术中事件分发机制不灵活的问题。

本发明实施例提供了一种软件定义网络SDN中的控制设备,所述控制设备包括业务处理模块,事件分发模块和设备对象产生模块;所述业务处理模块包括第一应用程序处理模块;

所述事件分发模块,用于接收所述设备对象产生模块产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块,所述第一工作流是根据所述第一应用程序处理模块的指示创建的;

第一应用程序处理模块,用于接收所述事件分发模块发送的所述事件,并按照预设规则对接收到的所述事件进行处理;

设备对象产生模块,用于接收网络设备发送的状态变化信息,根据所述变化信息生成所述事件,并将生成的所述事件发送给所述事件分发模块。

可选的,所述业务处理模块还包括第二应用程序处理模块;

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,并将所述处理后的事件发送给所述业务分发模块,所述业务分发模块通过所述第一工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块,使得所述第二应用程序处理模块对所述处理后的事件按照预设规则进行处理;其中,所述第二应用事件处理节点是所述业务分发模块根据所述第二应用程序处理模块的指示在所述第一工作流中创建的。

可选的,所述业务处理模块还包括第二应用程序处理模块;

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,并将所述处理后的事件发送给所述业务分发模块,所述业务分发模块通过第二工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块,使得所述第二应用程序处理模块对所述事件按照预设规则进行处理;其中,所述第二工作流是所述业务分发模块根据所述第二应用程序处理模块的指示创建的。

可选的,所述事件分发模块还包括工作流管理模块,所述工作流管理模块用于根据所述第一应用程序处理模块的指示创建所述第一工作流;或根据所述第二应用程序处理模块的指示创建所述第二工作流。

可选的,所述第一工作流中的事件处理节点包括根节点和应用节点;

所述根节点用于接收所述设备对象产生模块发送的所述事件,并将所述事件发送给所述工作流中的其它处理节点;

所述应用节点用于将经过所述工作流处理后的所述事件发送给所述第一应用程序处理模块。

可选的,所述第一工作流中的事件处理节点还包括过滤器节点;

所述过滤器节点用于设定事件的过滤规则,并根据所述过滤规则匹配经过所述过滤器节点的事件,如果所述事件满足所述过滤规则,则将所述事件发送给所述第一工作流中所述过滤器节点的子节点,如果所述事件不满足所述过滤规则,则终止所述事件的处理。

可选的,所述过滤规则包括:匹配域、值域和表达式,所述匹配域用于设定所述过滤规则的适用对象;所述值域用于设定所述匹配域对应的属性值的范围;所述表达式用于设定所述匹配域与所述值域的逻辑关系。

可选的,所述第一工作流中的事件处理节点还包括预处理器节点;所述预处理节点用于对事件进行预处理,通过解析事件中的信息,增加事件的属性。

可选的,所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形结构。

可选的,所述业务处理节点包括事件接收模块、处理逻辑模块和发送模块;

所述事件接收模块,用于从所述设备对象产生模块或其它业务处理节点接收事件;

所述处理逻辑模块,用于按照预设规则对所述事件接收模块接收的事件进行处理;

所述发送模块,用于将所述处理逻辑模块处理后的事件发送给其它节点。

可选的,所述事件包括事件头和事件体;所述事件头以键值对的形式存储事件的公共信息,所述公共信息是所有事件都包含的特定信息;所述事件体以键值对的形式存储事件的属性信息。

可选的,所述公共信息包括事件的源设备ID和/或事件的类型。

可选的,所述事件还包括元数据;

所述元数据包含至少一条记录,所述记录用于存储所述第一应用程序处理模块对所述事件处理的日志,或所述第一应用程序处理模块对所述交换设备状态的更新数据。

本发明实施例还提供了一种软件定义网络SDN中的控制方法,所述方法应用于包含第一应用程序处理模块,事件分发模块和设备对象产生模块的控制设备,包括:

所述设备对象产生模块接收网络设备发送的状态变化信息,根据所述变化信息生成所述事件,并将生成的所述事件发送给所述事件分发模块;

所述事件分发模块通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给第一应用程序处理模块,所述第一工作流是根据所述第一应用程序处理模块的指示创建的;

所述第一应用程序处理模块接收所述事件分发模块发送的所述事件,并按照预设规则对接收到的所述事件进行处理。

可选的,所述控制设备中还包括第二应用程序处理模块;

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,将所述处理后的事件发送给所述业务分发模块;

所述业务分发模块通过所述第一工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块;

所述第二应用程序处理模块对所述处理后的事件按照预设规则进行处理;其中,所述第二应用事件处理节点是所述业务分发模块根据所述第二应用程序处理模块的指示在所述第一工作流中创建的。

可选的,所述业务处理模块还包括第二应用程序处理模块;

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,将所述处理后的事件发送给所述业务分发模块;

所述业务分发模块通过第二工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块;

所述第二应用程序处理模块对所述事件按照预设规则进行处理;其中,所述第二工作流是所述业务分发模块根据所述第二应用程序处理模块的指示创建的。

可选的,所述第一工作流中的事件处理节点包括根节点和应用节点;

所述根节点用于接收所述设备对象产生模块发送的所述事件,并将所述事件发送给所述工作流中的其它处理节点;

所述应用节点用于将经过所述工作流处理后的所述事件发送给所述第一应用程序处理模块。

可选的,所述第一工作流中的事件处理节点还包括过滤器节点;

所述过滤器节点用于设定事件的过滤规则,并根据所述过滤规则匹配经过所述过滤器节点的事件,如果所述事件满足所述过滤规则,则将所述事件发送给所述第一工作流中所述过滤器节点的子节点,如果所述事件不满足所述过滤规则,则终止所述事件的处理。

可选的,所述过滤规则包括:匹配域、值域和表达式,所述匹配域用于设定所述过滤规则的适用对象;所述值域用于设定所述匹配域对应的属性值的范围;所述表达式用于设定所述匹配域与所述值域的逻辑关系。

可选的,所述第一工作流中的事件处理节点还包括预处理器节点;所述预处理节点用于对事件进行预处理,通过解析事件中的信息,增加事件的属性。

可选的,所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形结构。

可选的,所述业务处理节点包括事件接收模块、处理逻辑模块和发送模块;

所述事件接收模块,用于从所述设备对象产生模块或其它业务处理节点接收事件;

所述处理逻辑模块,用于按照预设规则对所述事件接收模块接收的事件进行处理;

所述发送模块,用于将所述处理逻辑模块处理后的事件发送给其它节点。

可选的,所述事件包括事件头和事件体;所述事件头以键值对的形式存储事件的公共信息,所述公共信息是所有事件都包含的特定信息;所述事件体以键值对的形式存储事件的属性信息。

可选的,所述公共信息包括事件的源设备ID和/或事件的类型。

可选的,所述事件还包括元数据;

所述元数据包含至少一条记录,所述记录用于存储所述第一应用程序处理模块对所述事件处理的日志,或所述第一应用程序处理模块对所述交换设备状态的更新数据。

本发明实施例还提供了一种软件定义网络SDN中的处理器,所述处理器位于所述SDN中的控制设备中,所述处理器业务处理模块,事件分发模块和设备对象产生模块;所述业务处理模块包括第一应用程序处理模块;

所述事件分发模块,用于接收所述设备对象产生模块产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块,所述第一工作流是根据所述第一应用程序处理模块的指示创建的;

第一应用程序处理模块,用于接收所述事件分发模块发送的所述事件,并按照预设规则对接收到的所述事件进行处理;

设备对象产生模块,用于接收网络设备发送的状态变化信息,根据所述变化信息生成所述事件,并将生成的所述事件发送给所述事件分发模块。

可选的,所述业务处理模块还包括第二应用程序处理模块;

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,并将所述处理后的事件发送给所述业务分发模块,所述业务分发模块通过所述第一工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块,使得所述第二应用程序处理模块对所述处理后的事件按照预设规则进行处理;其中,所述第二应用事件处理节点是所述业务分发模块根据所述第二应用程序处理模块的指示在所述第一工作流中创建的。

可选的,所述业务处理模块还包括第二应用程序处理模块;

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,并将所述处理后的事件发送给所述业务分发模块,所述业务分发模块通过第二工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块,使得所述第二应用程序处理模块对所述事件按照预设规则进行处理;其中,所述第二工作流是所述业务分发模块根据所述第二应用程序处理模块的指示创建的。

可选的,所述事件分发模块还包括工作流管理模块,所述工作流管理模块用于根据所述第一应用程序处理模块的指示创建所述第一工作流;或根据所述第二应用程序处理模块的指示创建所述第二工作流。

可选的,所述第一工作流中的事件处理节点包括根节点和应用节点;

所述根节点用于接收所述设备对象产生模块发送的所述事件,并将所述事件发送给所述工作流中的其它处理节点;

所述应用节点用于将经过所述工作流处理后的所述事件发送给所述第一应用程序处理模块。

可选的,所述第一工作流中的事件处理节点还包括过滤器节点;

所述过滤器节点用于设定事件的过滤规则,并根据所述过滤规则匹配经过所述过滤器节点的事件,如果所述事件满足所述过滤规则,则将所述事件发送给所述第一工作流中所述过滤器节点的子节点,如果所述事件不满足所述过滤规则,则终止所述事件的处理。

可选的,所述过滤规则包括:匹配域、值域和表达式,所述匹配域用于设定所述过滤规则的适用对象;所述值域用于设定所述匹配域对应的属性值的范围;所述表达式用于设定所述匹配域与所述值域的逻辑关系。

可选的,所述第一工作流中的事件处理节点还包括预处理器节点;所述预处理节点用于对事件进行预处理,通过解析事件中的信息,增加事件的属性。

可选的,所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形结构。

可选的,所述业务处理节点包括事件接收模块、处理逻辑模块和发送模块;

所述事件接收模块,用于从所述设备对象产生模块或其它业务处理节点接收事件;

所述处理逻辑模块,用于按照预设规则对所述事件接收模块接收的事件进行处理;

所述发送模块,用于将所述处理逻辑模块处理后的事件发送给其它节点。

可选的,所述事件包括事件头和事件体;所述事件头以键值对的形式存储事件的公共信息,所述公共信息是所有事件都包含的特定信息;所述事件体以键值对的形式存储事件的属性信息。

可选的,所述公共信息包括事件的源设备ID和/或事件的类型。

可选的,所述事件还包括元数据;

所述元数据包含至少一条记录,所述记录用于存储所述第一应用程序处理模块对所述事件处理的日志,或所述第一应用程序处理模块对所述交换设备状态的更新数据。

本发明实施例提供了一种软件定义网络SDN中的事件分发方法,控制设备和处理器,通过事件分发模块将设备对象产生模块产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块,由于所述第一工作流是根据所述第一应用程序处理模块的指示创建的,使得发往第一应用程序处理模块的事件,能够按照第一应用程序处理模块的指示进行处理,使得发送给应用程序处理模块的事件不需要满足预定的格式或要求,在新增设备产生新的事件时,通过所述第一工作流的事件,第一应用程序处理模块都能够处理,从而不需要修改代码以适配新增的事件,提高了事件分发的灵活性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一种软件定义网络SDN中的控制设备101的结构示意图;

图2为本发明实施例一种软件定义网络SDN中的控制设备101的另一种实现方式结构示意图;

图3为本发明实施例业务处理节点结构示意图;

图4为本发明实施例一种SDN中的控制设备101一种具体实现方式的结构示意图;

图5为本发明实施例中事件501的具体实现结构示意图;

图6为本发明实施例中事件分发模块301的具体实现结构示意图;

图7为本发明实施例中E节点的一种具体实现方式的具体结构示意图;

图8为本发明实施例中F节点一种具体实现方式的具体结构示意图;

图9为为本发明实施例中P节点的一种具体实现方式的结构示意图;

图10为本发明实施例中A节点的一种具体实现方式的结构示意图;

图11为本发明实施例中控制设备101事件分发实施方式的具体实现结构示意图;

图12为本发明实施例一种软件定义网络SDN中的控制方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

图1为本发明实施例一种软件定义网络SDN中的控制设备101的一种实现方式结构示意图。

如图1所示,所述SDN中的控制设备101,所述控制设备101包括业务处理模块201,事件分发模块301和设备对象产生模块401;所述业务处理模块201包括第一应用程序处理模块2011;

所述事件分发模块301,用于接收所述设备对象产生模块401产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块2011,所述第一工作流是根据所述第一应用程序处理模块2011的指示创建的;

所述第一应用程序处理模块2011,用于接收所述事件分发模块301发送的所述事件,并按照预设规则对接收到的所述事件进行处理;

设备对象产生模块401,用于接收网络设备发送的状态变化信息,根据所述变化信息生成所述事件,并将生成的所述事件发送给所述事件分发模块301。

通过上述事件分发模块301将设备对象产生模块401产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块2011,由于所述第一工作流是根据所述第一应用程序处理模块2011的指示创建的,使得发往第一应用程序处理模块2011的事件,能够按照第一应用程序处理模块2011的指示进行处理,使得发送给应用程序处理模块2011的事件不需要满足预定的格式或要求,在新增设备产生新的事件时,通过所述第一工作流的事件,第一应用程序处理模块2011都能够处理,从而不需要修改代码以适配新增的事件,提高了事件分发的灵活性。

图2为本发明实施例一种软件定义网络SDN中的控制设备101的另一种实现方式结构示意图。

参考图2,作为一种可选的实现方式,所述业务处理模块201还包括第二应用程序处理模块2012;

所述第一应用程序处理模块2011按照预设规则对接收到的所述事件进行处理后,将所述处理后的事件发送给所述业务分发模块301,所述业务分发模块301通过所述第一工作流中的第二应用事件处理节点(如图2中与第二应用程序处理模块2012连接的A节点)将所述处理后的事件发送给所述第二应用程序处理模块2012,使得所述第二应用程序处理模块2012对所述处理后的事件按照预设规则进行处理;其中,所述第二应用事件处理节点是所述业务分发模块根据所述第二应用程序处理模块2012的指示在所述第一工作流中创建的。即,第二应用程序处理模块2012在所述第一工作流中创建第二应用事件处理节点,第一应用程序处理模块2011处理后的事件返回给业务分发模块301后,第一工作流中的第一应用事件处理节点接收第一应用程序处理模块2011返回的事件并发送给第二应用事件处理节点,所述第二应用事件处理节点将所述事件发送给第二应用程序处理模块2012继续处理,实现了在多个应用程序处理模块协同处理的场景下事件的分发,进一步提升了业务分发的灵活性。

或者,所述第一应用程序处理模块2011按照预设规则对接收到的所述事件进行处理后,并将所述处理后的事件发送给所述业务分发模块301,所述业务分发模块301通过第二工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块2012,使得所述第二应用程序处理模块2012对所述事件按照预设规则进行处理;其中,所述第二工作流是所述业务分发模块301根据所述第二应用程序处理模块2012的指示创建的。即,第二应用程序处理模块2012在业务分发模块中创建第二工作流,第一应用程序处理模块2011处理后的事件返回给业务分发模块301后,第一工作流中的第一应用事件处理节点接收第一应用程序处理模块2011返回的事件并发送给第二工作流中的第二应用事件处理节点,通过第二工作流中的第二应用事件处理节点,将第一应用程序处理模块2011处理后的事件发送给第二应用程序处理模块2012继续处理,实现了在多个应用程序处理模块协同处理的场景下事件的分发,进一步提升了业务分发的灵活性。

作为一种可选的实现方式,所述第一工作流中的事件处理节点包括根节点和应用节点;所述根节点可以是图2中的E节点,所述应用节点可以是所述图2中的A节点;

所述根节点用于接收所述设备对象产生模块401发送的所述事件,并将所述事件发送给所述工作流中的其它处理节点;

所述应用节点用于将经过所述工作流处理后的所述事件发送给所述第一应用程序处理模块2011。

可选的,所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形结构;所述根节点在所述树形结构的根部,所述应用节点位于所述根节点下的一个节点。

可选的,所述第一工作流中的事件处理节点还可以包括过滤器节点,例如图2中的F节点,所述过滤器节点用于设定事件的过滤规则,并根据所述过滤规则匹配经过所述过滤器节点的事件,如果所述事件满足所述过滤规则,则将所述事件发送给所述第一工作流中所述过滤器节点的子节点,例如图2中的P节点;如果所述事件不满足所述过滤规则,则终止所述事件的处理。

其中,所述过滤规则可以包括:匹配域、值域和表达式,所述匹配域用于设定所述过滤规则的适用对象;所述值域用于设定所述匹配域对应的属性值的范围;所述表达式用于设定所述匹配域与所述值域的逻辑关系。

可选的,所述第一工作流中的事件处理节点还可以包括预处理器节点,例如图2中的P节点;所述预处理节点用于对事件进行预处理,例如通过解析事件中的信息,增加事件的属性等。所述预处理节点可以在所述树形结构的根节点与应用节点之间,也可以在根节点与过滤器节点之间,还可以在过滤器节点与应用节点之间,实现对事件的预处理。

上述第一工作流中的事件处理节点(根节点、过滤器节点、预处理节点和应用节点),通过其各自的功能和在树形结构中的位置,实现对事件的处理。第一工作流中的事件处理节点以及各事件处理节点在树形结构中的位置,是事件分发模块301中的工作流管理模块3012根据事件分发模块的指示建立的,使得第一工作流处理的事件满足第一应用程序处理模块2011的需求,克服了现有技术中事件分发机制不灵活,在新增事件注册、新增设备产生新事件时需要修改代码的弊端。

可选的,如图3所示,图3为本发明实施例业务处理节点结构示意图,所述业务处理节点3012可以包括事件接收模块30121、处理逻辑模块30122和发送模块30123;

所述事件接收模块30121,用于从所述设备对象产生模块401或其它业务处理节点接收事件;

所述处理逻辑模块30122,用于按照预设规则对所述事件接收模块30121接收的事件进行处理;

所述发送模块30123,用于将所述处理逻辑模块30122处理后的事件发送给其它节点。

可选的,所述业务处理节点还可以包含事件队列,所述事件队列用于存储所述事件接收模块接收到的事件。

上述实施例中的事件,可以由事件头和事件体组成。所述事件头以键值对的形式存储事件的公共信息,所述公共信息可以是所有事件都包含的特定信息,包括但不限于事件的源设备ID和/或事件的类型;所述事件体以键值对的形式存储事件的属性信息。事件的属性信息记录事件的内容,例如设备掉电事件,其属性信息即代表掉电的信息。

通过上述事件以键值对的形式的事件,能够将事件的类型归一化,使得应用程序处理模块能够识别所有的事件,并能够快速读取事件的信息,既简化了事件的生成和处理机制,也提高了应用程序处理模块读取事件、处理事件的效率。

作为一种可选的实现方式,所述事件还可以包括元数据;所述元数据包含至少一条记录,所述记录用于存储所述第一应用程序处理模块对所述事件处理的日志,或所述第一应用程序处理模块对所述交换设备状态的更新数据。这样,在第一应用程序处理模块2011对事件处理后,会记录处理的日志,第二应用程序处理模块2012继续处理该事件时,能够根据记录的日志进一步处理,使得在多个应用程序处理模块更有效地协同处理事件,提升了协同处理事件的效率。

下面以具体的实例详细说明本发明实施例一种SDN中的控制设备101的实现方式。

参考图4,图4为本发明实施例一种SDN中的控制设备101一种具体实现方式的结构示意图,本实施例以控制设备与两个交换设备(设备601和设备602)相连为例进行说明。其中,所述控制设备101包括运行于所述控制设备的操作系统,所述业务处理模块201,事件分发模块301和设备对象模块401可以在所述操作系统中实现。

所述设备对象模块401,包含一个或多个设备对象。所述设备对象4011,通过通信协议和设备601进行通信。当设备601的状态发生变化时,会发送一个通知给设备对象4011,设备对象4011会封装一个事件501,发送给所述事件分发模块301。

本发明实施例中,设备对象是所述网络设备所注册的控制设备对所述网络设备进行控制的代理,例如设备对象4011是控制设备101对设备601进行控制的代理,设备对象4012是控制设备101对设备602进行控制的代理。

同样的,所述设备对象4012,通过通信协议和设备602进行通信。当设备602的状态发生变化时,会发送一个通知给设备对象4012,设备对象4012会封装一个事件502,发送给所述事件分发模块301。

所述事件分发模块301,包含一个或多个事件处理工作流3011,该工作流可通过工作流管理模块3012进行管理,包括工作流的创建,删除,或工作流中节点的增删改查等。业务处理模块201中的应用程序处理模块,可以通过工作流管理模块3012加入事件处理工作流3011,从而接收并处理事件。

所述业务处理模块201,包含一个或多个应用程序处理模块(应用程序处理模块会包含特定的业务处理逻辑,包括但不限于二层交换,三层路由等)。应用程序处理模块2011可通过工作流管理模块3012,在处理事件的第一工作流3011中创建节点(例如A节点),当事件到达A节点时即会被发送到应用程序处理模块2011。应用程序处理模块2011包含控制逻辑,可以按照设定的规则对事件进行处理。

参考图5,图5为本发明实施例中事件501的具体实现结构示意图。

作为一种可选的实现方式,事件501中可包括结构事件头5011。事件头5011以键值对的形式存储了事件的公共信息,所谓公共信息,是指所有事件都会包含的特定信息,包括但不限于事件的源设备ID,事件的类型等等。设备对象601在产生事件501时,会根据实际的信息填充事件头5011(即把实际的值填充到对应的键上)。

事件501中还包括事件体5012。事件体5012以键值对的形式存储了事件的属性信息,设备对象601在产生事件501时,会根据实际的信息填充事件体5012。事件体具体可以是MAP或字典型数据结构,在这种数据结构中,可以存在多条数据记录,每一条数据记录会包含一个不重复的键和一个对应的值。

在本发明实施例中,事件体5012是可以被扩展的,包括修改属性,增加新的属性或删除属性等。

作为一种可选的实现方式,事件501中可包括元数据5013。元数据5013中可以包含至少一条记录,该记录可用来存储应用程序处理模块对事件处理的日志(例如修改了某条记录)或应用程序处理模块对设备状态的更新数据(例如流表),这些信息在事件被传递到下一个应用程序处理模块时可以被读取和使用,从而实现了一种不同应用程序处理模块间共享信息的载体。在设备对象产生事件时,该元数据被初始化,记录为空。

参考图6,图6为本发明实施例中事件分发模块301的具体实现结构示意图。在图6中,节点3012,节点3013和节点3014都是业务处理节点的实例,它们可以为为E节点、F节点、P节点和A节点当中的一种,节点之间可以连接到一起,除了E节点作为入口节点之外,没有严格的前后顺序。

事件分发模块301可以包含1个或多个事件处理工作流,图6中以事件处理工作流3011为例进行说明,该事件处理工作流3011可以为上述实施例中的第一工作流或第二工作流。

作为一种可选的实现方式,可以通过工作流管理模块302管理事件处理工作流3011。工作流管理模块302管理事件处理工作流3011的方式包括但不限于:节点的增加、删除、修改和查询。

事件处理工作流3011中可以包含1个或多个节点,例如节点3012,节点3013和节点3014。

作为一种可选的实现方式,节点3012可以包含事件接收模块30121,该事件接收模块30121可以从设备对象产生模块接收事件;其它节点,例如节点3013或节点3014可以从其他节点接收事件。

节点3012还可以包含一个处理逻辑模块30122,该处理逻辑模块30122可以从事件接收模块30121获取事件,并按照预先设定的规则对事件进行处理,或丢弃事件或直接转发事件。

节点3012还包含一个发送模块30123,该事件发送模块30123用于将处理逻辑30122处理完成后的、需要其它节点继续处理的事件,发送给其它节点。例如发送给节点3013。

可选的,节点3012还包含一个事件队列30124,节点3012接收到的事件将存入该事件队列30124中。

作为一种可选的实现方式,节点3012还可以包含一个子节点列表30125。子节点列表30125存储了附属于本节点的其他节点,例如节点3013或节点3014。事件在节点3012处理完成后,如果需要其他节点继续处理,则由发送模块30123读取子节点列表30125中的事件,并发送给列表中的所有节点。

上述事件队列30124和子节点列表30125在节点3012中不是可选的,节点3012通过实践接收模块30121、处理逻辑模块30122和发送模块30123也可以独立完成节点3012的功能。

图6中节点3013和节点3014的结构与节点3012的结构类似,不再赘述。

图4中的E节点,是事件处理工作流的根节点,事件都从E节点进入事件处理工作流进行分发。参考图7,图7为本发明实施例中E节点的一种具体实现方式(E节点3015)的具体结构示意图。

如图7所示,E节点3015中的事件处理逻辑模块30152只负责把接收到的事件发送给其它所有的子节点。

E节点3015总是作为事件处理工作流的根节点,事件都是从E节点进入事件处理工作流进行分发;因此可以在E节点的业务处理逻辑中包含一部分对事件的通用处理,该通用处理可以是用户自定义的处理,例如可以是给所有事件都增加一个头部信息等。

图4中的F节点,是过滤器节点,F节点可根据事件属性对事件进行筛选。

参考图8,图8为本发明实施例中F节点一种具体实现方式的具体结构示意图。

F节点3016的事件处理逻辑模块30163用于设定事件过滤规则。

作为一种可选的实现方式,每一条规则可以包含4个部分,匹配域:用来指定规则应用的对象,即事件的属性名;值域:用来指定匹配域对应的属性值的范围;表达式,用来指定匹配域和值域的逻辑关系,即匹配域和值域两个区间的重合范围,例如判断是大于小于等于还是不等于等等。

当事件经过处理F节点时,如果所有规则的内容全部满足,则事件被分发到下一级节点;如果规则不满足,则中止事件处理流程。

图4中的P节点,是预处理器节点,用于对事件进行预处理,可以通过解析事件中的信息,增加事件的属性来扩展事件等。

参考图9,图9为为本发明实施例中P节点的一种具体实现方式P节点3017的具体结构示意图。

P节点3017的事件处理逻辑模块30172可以包含对事件的扩展处理。

作为一种可选的实现方式,事件接收模块30171可以读取事件属性,对属性的值进行进一步解析,解析的结果以键值对的形式附加到现有事件的事件体后,从而扩展了事件的属性信息。例如,如果事件的属性中包含IP报文,则可以读取报文,解析报文的IP地址和端口号,并填充到事件中。

图4中的A节点是应用节点,是处理事件的应用程序。

参考图10,图10为本发明实施例中A节点的一种具体实现方式A节点3018的具体结构示意图。

A节点的事件处理逻辑30182包含一个到应用程序处理模块2011的通道,事件会经过此通道发送给应用程序处理模块2011。

作为一种可选的实现方式,通道可以以回调函数的形式实现。

参考图11,图11为本发明实施例中控制设备101事件分发实施方式的具体实现结构示意图。

在本实施例中,设备601为OpenFlow交换机,应用程序处理模块2011为三层路由服务,应用程序处理模块2012为二层应用程序处理模块。设备601上连接的某台计算机发起通信请求,该请求需要按顺序经过应用程序处理模块2011,判断是否是三层通信需求并判断是否允许通信,然后经过应用程序处理模块2012进行处理。

应用程序处理模块通过工作流管理模块302根据第一应用程序处理模块2011的指示建立E节点3021,作为新的事件处理工作流,并在E节点3021之后建立F节点3022,用以过滤事件类型为PACKET_IN的事件,因为应用程序处理模块需要处理PACKET_IN事件,以获取通信双方的地址信息;在F节点3022之后建立A节点3023,用以把事件分发到应用程序处理模块2011。所述工作流管理模块302还根据第二应用程序处理模块2011的指示在A节点3023之后建立A节点3024,用以把事件分发到应用程序处理模块2012。

设备601上某计算机发起通信请求,设备601收到请求后,通知设备对象4011;设备对象4011产生新事件501,事件类型为PACKET_IN,设备ID为设备601的ID;事件501被发送到E节点3021;E节点3021把事件501发送给F节点3022;F节点3022匹配规则,事件类型和期望一致,规则匹配成功,事件501被发送到A节点3023;

A节点3023把事件发送到应用程序处理模块2011,应用程序处理模块2011判断是跨子网通信,在事件501的元数据中新增一条流表记录,并把事件返回给A节点3023;

A节点3023把事件发送到A节点3024;A节点3024把事件发送到应用程序处理模块2012,应用程序处理模块2012读取事件501的元数据中的流表记录,并读取事件501的其他属性,生成一条新的流表,两条流表合并下发到设备对象4011;

设备对象4011通过和设备601的通信通道,下发流表;设备601连接的计算机通信请求被处理。

参考图12,图12为本发明实施例一种软件定义网络SDN中的控制方法的流程示意图,所述方法应用于包含第一应用程序处理模块,事件分发模块和设备对象产生模块的控制设备,如图12所示,所述方法包括:

步骤1200:所述设备对象产生模块接收网络设备发送的状态变化信息,根据所述变化信息生成所述事件,并将生成的所述事件发送给所述事件分发模块;

步骤1202:所述事件分发模块通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给第一应用程序处理模块,所述第一工作流是根据所述第一应用程序处理模块的指示创建的;

步骤1204:所述第一应用程序处理模块接收所述事件分发模块发送的所述事件,并按照预设规则对接收到的所述事件进行处理。

通过上述事件分发模块将设备对象产生模块产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块,由于所述第一工作流是根据所述第一应用程序处理模块的指示创建的,使得发往第一应用程序处理模块的事件,能够按照第一应用程序处理模块的指示进行处理,使得发送给应用程序处理模块的事件不需要满足预定的格式或要求,在新增设备产生新的事件时,通过所述第一工作流的事件,第一应用程序处理模块都能够处理,从而不需要修改代码以适配新增的事件,提高了事件分发的灵活性。

作为一种可选的实现方式,所述控制设备中还包括第二应用程序处理模块;所述方法还包括:

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,将所述处理后的事件发送给所述业务分发模块;

所述业务分发模块通过所述第一工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块;

所述第二应用程序处理模块对所述处理后的事件按照预设规则进行处理;其中,所述第二应用事件处理节点是所述业务分发模块根据所述第二应用程序处理模块的指示在所述第一工作流中创建的。

可选的,所述业务分发模块还可以通过第二工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块;

所述第二应用程序处理模块对所述事件按照预设规则进行处理;其中,所述第二工作流是所述业务分发模块根据所述第二应用程序处理模块的指示创建的。

通过上述第二应用事件处理节点将所述事件发送给第二应用程序处理模块继续处理,实现了在多个应用程序处理模块协同处理的场景下事件的分发,进一步提升了业务分发的灵活性。

在本发明实施例的SDN中的控制方法,所述第一工作流中的事件处理节点包括根节点和应用节点;

所述根节点用于接收所述设备对象产生模块发送的所述事件,并将所述事件发送给所述工作流中的其它处理节点;

所述应用节点用于将经过所述工作流处理后的所述事件发送给所述第一应用程序处理模块。

所述第一工作流中的事件处理节点还可以包括过滤器节点;

所述过滤器节点用于设定事件的过滤规则,并根据所述过滤规则匹配经过所述过滤器节点的事件,如果所述事件满足所述过滤规则,则将所述事件发送给所述第一工作流中所述过滤器节点的子节点,如果所述事件不满足所述过滤规则,则终止所述事件的处理。

所述过滤规则包括:匹配域、值域和表达式,所述匹配域用于设定所述过滤规则的适用对象;所述值域用于设定所述匹配域对应的属性值的范围;所述表达式用于设定所述匹配域与所述值域的逻辑关系。

所述第一工作流中的事件处理节点还可以包括预处理器节点;所述预处理节点用于对事件进行预处理,通过解析事件中的信息,增加事件的属性。其中,所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形结构。

上述第一工作流中的事件处理节点(根节点、过滤器节点、预处理节点和应用节点),通过其各自的功能和在树形结构中的位置,实现对事件的处理。第一工作流中的事件处理节点以及各事件处理节点在树形结构中的位置,是事件分发模块根据事件分发模块的指示建立的,使得第一工作流处理的事件满足第一应用程序处理模块的需求,克服了现有技术中事件分发机制不灵活,在新增事件注册、新增设备产生新事件时需要修改代码的弊端。

作为一种可选的实现方式,所述业务处理节点包括事件接收模块、处理逻辑模块和发送模块;

所述事件接收模块,用于从所述设备对象产生模块或其它业务处理节点接收事件;

所述处理逻辑模块,用于按照预设规则对所述事件接收模块接收的事件进行处理;

所述发送模块,用于将所述处理逻辑模块处理后的事件发送给其它节点。

在本发明实施例的SDN中的控制方法中,所述事件可以包括事件头和事件体;所述事件头以键值对的形式存储事件的公共信息,所述公共信息是所有事件都包含的特定信息;所述事件体以键值对的形式存储事件的属性信息。所述公共信息包括事件的源设备ID和/或事件的类型。

作为一种可选的实现方式,所述事件还可以包括元数据;所述元数据包含至少一条记录,所述记录用于存储所述第一应用程序处理模块对所述事件处理的日志,或所述第一应用程序处理模块对所述交换设备状态的更新数据。

通过上述事件以键值对的形式的事件,能够将事件的类型归一化,使得应用程序处理模块能够识别所有的事件,并能够快速读取事件的信息,既简化了事件的生成和处理机制,也提高了应用程序处理模块读取事件、处理事件的效率。

上述处理器的具体实现方式,还可以参考图4至图10所述的实施例中控制设备的实现方式,以及图11中的具体实现方式来实现,在此不再赘述。

本发明实施例还提供了一种软件定义网络SDN中的处理器,所述处理器位于所述SDN中的控制设备中,所述处理器业务处理模块,事件分发模块和设备对象产生模块;所述业务处理模块包括第一应用程序处理模块;

所述事件分发模块,用于接收所述设备对象产生模块产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块,所述第一工作流是根据所述第一应用程序处理模块的指示创建的;

第一应用程序处理模块,用于接收所述事件分发模块发送的所述事件,并按照预设规则对接收到的所述事件进行处理;

设备对象产生模块,用于接收网络设备发送的状态变化信息,根据所述变化信息生成所述事件,并将生成的所述事件发送给所述事件分发模块。

通过上述事件分发模块将设备对象产生模块产生的事件,通过包含至少二个事件处理节点的第一工作流按照预设顺序对所述事件处理,并将处理后的事件通过第一应用事件处理节点发送给所述第一应用程序处理模块,由于所述第一工作流是根据所述第一应用程序处理模块的指示创建的,使得发往第一应用程序处理模块的事件,能够按照第一应用程序处理模块的指示进行处理,使得发送给应用程序处理模块的事件不需要满足预定的格式或要求,在新增设备产生新的事件时,通过所述第一工作流的事件,第一应用程序处理模块都能够处理,从而不需要修改代码以适配新增的事件,提高了事件分发的灵活性。

作为一种可选的实现方式,所述处理器中的业务处理模块还包括第二应用程序处理模块;

所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,并将所述处理后的事件发送给所述业务分发模块,所述业务分发模块通过所述第一工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块,使得所述第二应用程序处理模块对所述处理后的事件按照预设规则进行处理;其中,所述第二应用事件处理节点是所述业务分发模块根据所述第二应用程序处理模块的指示在所述第一工作流中创建的。

可选的,所述第一应用程序处理模块按照预设规则对接收到的所述事件进行处理后,将所述处理后的事件发送给所述业务分发模块,所述业务分发模块通过第二工作流中的第二应用事件处理节点将所述处理后的事件发送给所述第二应用程序处理模块,使得所述第二应用程序处理模块对所述事件按照预设规则进行处理;其中,所述第二工作流是所述业务分发模块根据所述第二应用程序处理模块的指示创建的。

通过上述方式,所述第二应用事件处理节点将所述事件发送给第二应用程序处理模块继续处理,实现了在多个应用程序处理模块协同处理的场景下事件的分发,进一步提升了业务分发的灵活性。

所述处理器中的事件分发模块还可以包括工作流管理模块,所述工作流管理模块用于根据所述第一应用程序处理模块的指示创建所述第一工作流;或根据所述第二应用程序处理模块的指示创建所述第二工作流。

在本发明实施例中,所述处理器中的所述第一工作流中的事件处理节点可以包括根节点和应用节点;

所述根节点用于接收所述设备对象产生模块发送的所述事件,并将所述事件发送给所述工作流中的其它处理节点;

所述应用节点用于将经过所述工作流处理后的所述事件发送给所述第一应用程序处理模块。

所述第一工作流中的事件处理节点还可以包括过滤器节点;

所述过滤器节点用于设定事件的过滤规则,并根据所述过滤规则匹配经过所述过滤器节点的事件,如果所述事件满足所述过滤规则,则将所述事件发送给所述第一工作流中所述过滤器节点的子节点,如果所述事件不满足所述过滤规则,则终止所述事件的处理。所述过滤规则包括:匹配域、值域和表达式,所述匹配域用于设定所述过滤规则的适用对象;所述值域用于设定所述匹配域对应的属性值的范围;所述表达式用于设定所述匹配域与所述值域的逻辑关系。

所述第一工作流中的事件处理节点还可以包括预处理器节点;所述预处理节点用于对事件进行预处理,通过解析事件中的信息,增加事件的属性。所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形结构。

可选的,所述处理器中的所述业务处理节点包括事件接收模块、处理逻辑模块和发送模块;

所述事件接收模块,用于从所述设备对象产生模块或其它业务处理节点接收事件;

所述处理逻辑模块,用于按照预设规则对所述事件接收模块接收的事件进行处理;

所述发送模块,用于将所述处理逻辑模块处理后的事件发送给其它节点。

本发明实施例的SDN中的处理器中,所述事件包括事件头和事件体;所述事件头以键值对的形式存储事件的公共信息,所述公共信息是所有事件都包含的特定信息;所述事件体以键值对的形式存储事件的属性信息。所述公共信息包括事件的源设备ID和/或事件的类型。

所述事件还可以包括元数据;所述元数据包含至少一条记录,所述记录用于存储所述第一应用程序处理模块对所述事件处理的日志,或所述第一应用程序处理模块对所述交换设备状态的更新数据。

上述处理器的具体实现方式,还可以参考图4至图10所述的实施例中控制设备的实现方式,以及图11中的具体实现方式来实现,在此不再赘述。

本发明实施例还提供了一种计算机程序产品,该计算机程序产品能够执行上述SDN中控制方法实施例中所列的步骤,实现上述控制方法所达到的技术效果。

本发明实施例还提供了一种计算机程序产品,该计算机程序产品能够执行上述SDN中控制方法实施例中所列的步骤,实现上述控制方法所达到的技术效果。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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