Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SOFTWARE-DEFINED NETWORKING EVENT DISTRIBUTION METHOD, CONTROL DEVICE, AND PROCESSOR
Document Type and Number:
WIPO Patent Application WO/2015/100542
Kind Code:
A1
Abstract:
The embodiments of the present invention provide a software-defined networking (SDN) event distribution method, control device, and processor; by means of an event distribution module, processing via a first workflow containing at least two event processing nodes and according to a preset order an event generated by a device object generation module, and sending the processed event to said first application event processing module by means of a first application event processing node; since said first workflow is created according to the instruction of said first application processing module, an event sent to the first application processing module can be processed according to an instruction of the first application processing module, and the event sent to the application processing module does not need to satisfy predetermined requirements; when a new device generates a new event, the first application processing module can process same by means of the event of said first workflow, thereby eliminating the need to modify the code to fit the new event, and improving flexibility in event distribution.

Inventors:
LI YI (CN)
Application Number:
PCT/CN2013/090907
Publication Date:
July 09, 2015
Filing Date:
December 30, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
H04L12/70
Foreign References:
CN103095565A2013-05-08
CN103428771A2013-12-04
US20130250770A12013-09-26
US20130266007A12013-10-10
Other References:
See also references of EP 2913964A4
Download PDF:
Claims:
权利要求

1 , 一种软件定义网络 SDN中的控制设备, 其特征在于, 所述控制设备 包括业务处理模块, 事件分发模块和设备对象产生模块; 所述业务处理模 块包括第一应用程序处理模块;

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

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

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

2 , 根据权利要求 1所述的 SDN中的控制设备, 其特征在于, 所述业务处 理模块还包括第二应用程序处理模块;

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

3 , 根据权利要求 1所述的 SDN中的控制设备, 其特征在于, 所述业务处 理模块还包括第二应用程序处理模块;

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

4 , 根据权利要求 1-3所述的任一 SDN中的控制设备, 其特征在于, 所述 事件分发模块还包括工作流管理模块, 所述工作流管理模块用于根据所述 第一应用程序处理模块的指示创建所述第一工作流; 或根据所述第二应用 程序处理模块的指示创建所述第二工作流。

5 , 根据权利要求 1-4所述的任一 SDN中的控制设备, 其特征在于, 所述 第一工作流中的事件处理节点包括根节点和应用节点;

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

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

6 , 根据权利要求 4所述的 SDN中的控制设备, 其特征在于, 所述第一工 作流中的事件处理节点还包括过滤器节点;

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

8 , 根据权利要求 5-7所述的任一 SDN中的控制设备, 其特征在于, 所述 第一工作流中的事件处理节点还包括预处理器节点; 所述预处理节点用于 对事件进行预处理, 通过解析事件中的信息, 增加事件的属性。

9 , 根据权利要求 5-8所述的任一 SDN中的控制设备, 其特征在于, 所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形 结构。

1 0 , 根据权利要求 1-9所述的任一 SDN中的控制设备, 其特征在于, 所述业务处理节点包括事件接收模块、 处理逻辑模块和发送模块; 所述事件接收模块, 用于从所述设备对象产生模块或其它业务处理节 点接收事件;

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

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

1 1 , 根据权利要求 1-1 0所述的任一 SDN中的控制设备, 其特征在于, 所 述事件包括事件头和事件体; 所述事件头以键值对的形式存储事件的公共 信息, 所述公共信息是所有事件都包含的特定信息; 所述事件体以键值对 的形式存储事件的属性信息。

12 , 根据权利要求 11所述的 SDN中的控制设备, 其特征在于, 所述公共 信息包括事件的源设备 I D和 /或事件的类型。

1 3 , 根据权利要求 11-12所述的任一 SDN中的控制设备, 其特征在于, 所述事件还包括元数据;

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

14 , 一种软件定义网络 SDN中的控制方法, 所述方法应用于包含第一应 用程序处理模块, 事件分发模块和设备对象产生模块的控制设备, 其特征 在于:

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

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

15 , 根据权利要求 14所述的 SDN中的控制方法, 其特征在于, 所述控制 设备中还包括第二应用程序处理模块;

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

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

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

16 , 根据权利要求 14所述的 SDN中的控制方法, 其特征在于, 所述业务 处理模块还包括第二应用程序处理模块;

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

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

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

17 , 根据权利要求 14-16所述的任一 SDN中的控制方法, 其特征在于, 所述第一工作流中的事件处理节点包括根节点和应用节点;

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

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

18 , 根据权利要求 17所述的 SDN中的控制方法, 其特征在于, 所述第一 工作流中的事件处理节点还包括过滤器节点; 所述过滤器节点用于设定事件的过滤规则, 并根据所述过滤规则匹配 经过所述过滤器节点的事件, 如果所述事件满足所述过滤规则, 则将所述 事件发送给所述第一工作流中所述过滤器节点的子节点, 如果所述事件不 满足所述过滤规则, 则终止所述事件的处理。

19 , 根据权利要求 18所述的 SDN中的控制方法, 其特征在于, 所述过滤 规则包括: 匹配域、 值域和表达式, 所述匹配域用于设定所述过滤规则的 适用对象; 所述值域用于设定所述匹配域对应的属性值的范围; 所述表达 式用于设定所述匹配域与所述值域的逻辑关系。

20 , 根据权利要求 17-19所述的任一 SDN中的控制方法, 其特征在于, 所述第一工作流中的事件处理节点还包括预处理器节点; 所述预处理节点 用于对事件进行预处理, 通过解析事件中的信息, 增加事件的属性。

21 , 根据权利要求 17-20所述的任一 SDN中的控制方法, 其特征在于, 所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形 结构。

22 , 根据权利要求 14-21所述的任一 SDN中的控制方法, 其特征在于, 所述业务处理节点包括事件接收模块、 处理逻辑模块和发送模块; 所述事件接收模块, 用于从所述设备对象产生模块或其它业务处理节 点接收事件;

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

所述发送模块, 用于将所述处理逻辑模块处理后的事件发送给其它节 点。 23 , 根据权利要求 14-22所述的任一 SDN中的控制方法, 其特征在于, 所述事件包括事件头和事件体; 所述事件头以键值对的形式存储事件的公 共信息, 所述公共信息是所有事件都包含的特定信息; 所述事件体以键值 对的形式存储事件的属性信息。

24 , 根据权利要求 23所述的 SDN中的控制方法, 其特征在于, 所述公共 信息包括事件的源设备 ID和 /或事件的类型。

25 , 根据权利要求 23-24所述的任一 SDN中的控制方法, 其特征在于, 所述事件还包括元数据;

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

26, 一种软件定义网络 SDN中的处理器, 所述处理器位于所述 SDN中的 控制设备中, 其特征在于, 所述处理器业务处理模块, 事件分发模块和设 备对象产生模块; 所述业务处理模块包括第一应用程序处理模块;

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

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

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

27 , 根据权利要求 26所述的 SDN中的处理器, 其特征在于, 所述业务处 理模块还包括第二应用程序处理模块;

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

28 , 根据权利要求 26所述的 SDN中的处理器, 其特征在于, 所述业务处 理模块还包括第二应用程序处理模块;

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

29 , 根据权利要求 26-28所述的任一 SDN中的处理器, 其特征在于, 所 述事件分发模块还包括工作流管理模块, 所述工作流管理模块用于根据所 述第一应用程序处理模块的指示创建所述第一工作流; 或根据所述第二应 用程序处理模块的指示创建所述第二工作流。 30 , 根据权利要求 26-29所述的任一 SDN中的处理器, 其特征在于, 所 述第一工作流中的事件处理节点包括根节点和应用节点;

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

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

31 , 根据权利要求 30所述的 SDN中的处理器, 其特征在于, 所述第一工 作流中的事件处理节点还包括过滤器节点;

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

32 , 根据权利要求 31所述的 SDN中的处理器, 其特征在于, 所述过滤规 则包括: 匹配域、 值域和表达式, 所述匹配域用于设定所述过滤规则的适 用对象; 所述值域用于设定所述匹配域对应的属性值的范围; 所述表达式 用于设定所述匹配域与所述值域的逻辑关系。

33 , 根据权利要求 30-32所述的任一 SDN中的处理器, 其特征在于, 所 述第一工作流中的事件处理节点还包括预处理器节点; 所述预处理节点用 于对事件进行预处理, 通过解析事件中的信息, 增加事件的属性。

34 , 根据权利要求 30-33所述的任一 SDN中的处理器, 其特征在于, 所述第一工作流中的至少二个事件处理节点构成具有先后关系的树形 结构。 35 , 根据权利要求 26-34所述的任一 SDN中的处理器, 其特征在于, 所述业务处理节点包括事件接收模块、 处理逻辑模块和发送模块; 所述事件接收模块, 用于从所述设备对象产生模块或其它业务处理节 点接收事件;

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

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

36 , 根据权利要求 26-35所述的任一 SDN中的处理器, 其特征在于, 所 述事件包括事件头和事件体; 所述事件头以键值对的形式存储事件的公共 信息, 所述公共信息是所有事件都包含的特定信息; 所述事件体以键值对 的形式存储事件的属性信息。

37 , 根据权利要求 36所述的 SDN中的处理器, 其特征在于, 所述公共信 息包括事件的源设备 I D和 /或事件的类型。

38 , 根据权利要求 36-37所述的任一 SDN中的处理器, 其特征在于, 所 述事件还包括元数据;

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

Description:
软件定义网络中的事件分发方法, 控制设备和处理器 技术领域 本发明涉及信息技术领域, 特别涉及一种软件定义网络 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为本发明实施例一种软件定义网络 S D N中的控制方法的流程示意 图。 具体实施方式 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进 行清楚、 完整地描述, 显然, 所描述的实施例是本发明的一部分实施例, 而不是全部实施例。 基于本发明中的实施例, 本领域普通技术人员在没有 做出创造性劳动的前提下所获得的所有其他实 施例, 都应属于本发明保护 的范围。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

参考图 4 , 图 4为本发明实施例一种 SDN中的控制设备 101—种具体实现 方式的结构示意图, 本实施例以控制设备与两个交换设备(设备 601和设备 602 )相连为例进行说明。 其中, 所述控制设备 101包括运行于所述控制设 备的操作系统, 所述业务处理模块 201 , 事件分发模块 301和设备对象模块 401可以在所述操作系统中实现。 所述设备对象模块 401 ,包含一个或多个设备对象。所述设备对象 401 1 , 通过通信协议和设备 601进行通信。 当设备 601的状态发生变化时, 会发送 一个通知给设备对象 401 1 , 设备对象 401 1会封装一个事件 501 , 发送给所述 事件分发模块 301。 本发明实施例中, 设备对象是所述网络设备所注册的控制设备对 所述 网络设备进行控制的代理, 例如设备对象 4011是控制设备 101对设备 601进 行控制的代理, 设备对象 4012是控制设备 101对设备 602进行控制的代理。 同样的, 所述设备对象 4012 , 通过通信协议和设备 602进行通信。 当设 备 602的状态发生变化时, 会发送一个通知给设备对象 4012 , 设备对象 4012 会封装一个事件 502 , 发送给所述事件分发模块 301。 所述事件分发模块 301 , 包含一个或多个事件处理工作流 3011 , 该工作 流可通过工作流管理模块 3012进行管理, 包括工作流的创建, 删除, 或工 作流中节点的增删改查等。 业务处理模块 201中的应用程序处理模块, 可以 通过工作流管理模块 3012加入事件处理工作流 301 1 , 从而接收并处理事件。 所述业务处理模块 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所述的实施例中控 制设备的实现方式, 以及图 1 1中的具体实现方式来实现, 在此不再赘述。

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

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

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

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

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

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

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

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

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

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

在本发明实施例中, 所述处理器中的所述第一工作流中的事件处理 节 点可以包括才艮节点和应用节点; 所述根节点用于接收所述设备对象产生模块发 送的所述事件, 并将所 述事件发送给所述工作流中的其它处理节点;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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