Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
NETWORK CONTROLLER, SWITCH AND METHOD FOR INCREASING OPENFLOW NETWORK CAPABILITY
Document Type and Number:
WIPO Patent Application WO/2014/202030
Kind Code:
A1
Abstract:
Provided are a network controller and a switch used for configuring and resolving a network protocol, performing pre-resolution on a data packet received by the switch, extracting a key field in a network protocol, for matching with a flow table in a pipeline; processing the transmission of the data packet, completing the matching and processing of the data packet by the switch flow table; configuring queue parameters of the network switch in a software-defined manner, performing traffic shaping on data flow within the network; configuring and adapting different data link layer protocols used by an OpenFlow network.

Inventors:
WANG WENDONG (CN)
GONG XIANGYANG (CN)
QUE XIRONG (CN)
FENG LONG (CN)
LI HONGYUN (CN)
ZHOU TONG (CN)
Application Number:
PCT/CN2014/080476
Publication Date:
December 24, 2014
Filing Date:
June 23, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BEIJING UNIVERSITY OF POST AND TELECOMM (CN)
International Classes:
H04L29/06
Foreign References:
CN103347013A2013-10-09
CN103067534A2013-04-24
CN103067245A2013-04-24
CN103098427A2013-05-08
CN102546351A2012-07-04
US20130054761A12013-02-28
Attorney, Agent or Firm:
DEQI INTELLECTUAL PROPERTY LAW CORPORATION (CN)
北京德琦知识产权代理有限公司 (CN)
Download PDF:
Claims:
权利要求书

1、 一种网络控制器, 其特征在于其包括:

协议解析配置模块, 用于生成解析一数据包的网络协议所需的协议配置消 息, 并下发所述协议配置消息;

数据包处理编程模块, 用于生成操作配置消息, 以软件定义的方式指定对 所述数据包的操作, 并下发所述操作配置消息;

队列资源配置模块, 用于生成队列配置消息, 以软件定义的方式指定交换 机端口队列的队列参数, 并下发所述队列配置消息;

链路层协议配置模块, 用于生成链路层协议配置消息, 以软件定义的方式 指定解析所述数据包所需要的数据链路层协议和描述该数据链路层协议的帧结 构, 并下发所述链路层协议配置消息。

2、 根据权利要求 1所述的网络控制器, 其特征在于, 所述协议配置消息用 于配置协议解析表, 具有扩展的 OpenFlow协议消息结构, 包括以下三个字段: 消息头, 表示所述协议配置消息为配置协议解析表的消息;

指令, 用于设定所述协议配置消息能够进行的与协议解析表有关的操作; 协议内容描述, 描述网络协议中的信息和需要提取的网络协议字段。

3、 根据权利要求 1或 2所述的网络控制器, 其特征在于, 所述协议配置消 息能够进行的与协议解析表有关的操作包括下列至少一个: 创建新的协议解析 表、 修改已有的协议解析表和删除已有的协议解析表。

4、 根据权利要求 3所述的网络控制器, 其特征在于, 所述协议内容描述是 釆用包括基于可扩展标记语言 XML的 NetPDL语言描述的。

5、 根据权利要求 1所述的网络控制器, 其特征在于, 所述操作配置消息具 有扩展的 OpenFlow协议消息结构, 包括以下三个字段:

消息头, 表示所述操作配置消息为配置交换机处理数据的操作的消息; 指令, 用于设定所述操作配置消息执行的操作内容;

操作描述, 包括对所述数据包处理的代码, 用于指明对所述数据包的处理 过程和操作所需要接受的参数列表。

6、 根据权利要求 5所述的网络控制器, 其特征在于所述执行的操作内容包 括下列至少一个: 在所述交换机中创建一个新的操作、 修改所述交换机中的一 个操作和删除所述交换机中的一个操作。 7、 根据权利要求 1所述的网络控制器, 其特征在于, 所述队列配置消息具 有扩展的 OpenFlow协议消息结构, 包括以下两个字段:

消息头, 表示所述队列配置消息为配置所述交换机处理转发队列的消息; 队列参数, 用于存储所有配置队列的信息。

8、 根据权利要求 7所述的网络控制器, 其特征在于, 所述队列参数包括下 列至少一个: 队列标识、 父队列标识、 队列类型、 队列长度、 最大处理单元、 最小带宽、 最大带宽和优先级。

9、 根据权利要求 1所述的网络控制器, 其特征在于, 所述链路层协议配置 消息具有扩展的 OpenFlow协议消息结构, 包括以下三个字段:

消息头, 表示所述链路层协议配置消息为配置所述交换机的链路层协议的 消息;

指令, 用于设定对链路层协议的操作;

链路层适配代码, 描述如何从一个链路层帧中提取其载荷, 以及封装所述 载荷所釆用的协议, 描述如何将所述数据包封装到一个链路层协议的帧中。

10、 根据权利要求 9所述的网络控制器, 其特征在于, 所述对链路层协议 的操作包括下列至少一个: 支持一个新的链路层协议、 删除对现有的链路层协 议的支持和修改现有的链路层协议的解析过程。

11、 一种交换机, 其特征在于其包括:

链路层协议适配模块, 用于接收链路层协议配置消息, 根据链路层协议配 置消息解析接收到的数据包的数据链路层协议, 并将其送入协议解析模块; 协议解析模块, 用于根据所收到的协议配置消息中对协议解析表的配置, 对经过数据链路层解析的所述数据包进行网络协议解析、 提取关键字段, 生成 结构化的数据包;

数据包处理流水线模块, 用于将交换机中存储的至少一个流表划分为至少 一个流水线, 按照所述至少一个流表的流表项匹配所述结构化的数据包, 并对 所述结构化的数据包执行所匹配的流表项中的设定操作, 按照收到的操作配置 消息对所述结构化的数据包执行相应的操作;

输出队列模块, 用于接收队列配置消息, 根据所述队列配置消息设置相应 的队列参数, 使所述数据包处理流水线模块根据流表指令, 将所述所述数据包 转发到相应的输出队列。 12、 根据权利要求 11所述的交换机, 其特征在于, 所述协议配置消息用于 配置协议解析表, 具有扩展的 OpenFlow协议消息结构, 包括以下三个字段: 消息头, 表示所述协议配置消息为配置协议解析表的消息;

指令, 用于设定所述协议配置消息能够进行的与协议解析表有关的操作; 协议内容描述, 描述网络协议中的信息和需要提取的网络协议字段。

13、 根据权利要求 11或 12所述的交换机, 其特征在于, 所述协议配置消 息能够进行的与协议解析表有关的操作包括下列至少一个: 创建新的协议解析 表、 修改已有的协议解析表和删除已有的协议解析表。

14、 根据权利要求 13所述的交换机, 其特征在于, 所述协议内容描述是釆 用包括基于可扩展标记语言 XML的 NetPDL语言描述的。

15、 根据权利要求 11所述的交换机, 其特征在于, 所述操作配置消息具有 扩展的 OpenFlow协议消息结构, 包括以下三个字段:

消息头, 表示所述操作配置消息为配置交换机处理数据的操作的消息; 指令, 用于设定所述操作配置消息执行的操作内容;

操作描述, 包括对所述数据包处理的代码, 用于指明对所述数据包的处理 过程和操作所需要接受的参数列表。

16、 根据权利要求 15所述的交换机, 其特征在于所述执行的操作内容包括 下列至少一个: 在所述交换机中创建一个新的操作、 修改所述交换机中的一个 操作和删除所述交换机中的一个操作。

17、 根据权利要求 11所述的交换机, 其特征在于, 所述队列配置消息具有 扩展的 OpenFlow协议消息结构, 包括以下两个字段:

消息头, 表示所述队列配置消息为配置所述交换机处理转发队列的消息; 队列参数, 用于存储所有配置队列的信息。

18、 根据权利要求 17所述的交换机, 其特征在于, 所述队列参数包括下列 至少一个: 队列标识、 父队列标识、 队列类型、 队列长度、 最大处理单元、 最 小带宽、 最大带宽和优先级。

19、 根据权利要求 11所述的交换机, 其特征在于, 所述链路层协议配置消 息具有扩展的 OpenFlow协议消息结构, 包括以下三个字段:

消息头, 表示所述链路层协议配置消息为配置交换机的链路层协议的消息; 指令, 用于设定对链路层协议的操作; 链路层适配代码, 描述如何从一个链路层帧中提取其载荷, 以及封装所述 载荷所釆用的协议, 描述如何将所述数据包封装到一个链路层协议的帧中。

20、 根据权利要求 19所述的交换机, 其特征在于, 所述对链路层协议的操 作包括下列至少一个: 支持一个新的链路层协议、 删除对现有的链路层协议的 支持和修改现有的链路层协议的解析过程。

21、 一种增强 OpenFlow网络能力的方法, 其特征在于: 所述方法包括下列 步骤:

( 1 )交换机接收到一个网络数据包, 判断是否能够解析所述数据包的数据 链路层协议; 若能够, 则执行步骤(3 ); 若不能够, 则产生第一控制消息, 并 将所述数据包上报网络控制器;

( 2 )所述网络控制器接收到所述控制消息后, 判断是否要为交换机配置数 据链路层协议, 若不需要, 则丟弃该数据包; 若需要, 则对所述第一控制消息 做出响应: 解析所述数据包所需要的数据链路层协议和描述该数据链路层协议 的帧结构, 再通过扩展的 OpenFlow消息将所述数据包下发给所述交换机;

( 3 )所述交换机解析所述数据包的链路层协议, 并判断是否能够对所述进 行了链路层协议解析后的数据包进行网络协议解析, 若能够, 则执行步骤(5 ); 若不能够, 则产生第二控制消息, 并将该不能进行网络协议解析的数据包上报 给所述网络控制器;

( 4 )所述网络控制器响应所述第二控制消息, 判断是否需要配置所述交换 机解析的新网络协议, 若不需要, 则丟弃所述数据包; 若需要, 将解析所述数 据包所需要的协议解析表利用扩展的 OpenFlow消息下发给所述交换机;

( 5 )所述交换机根据所述协议解析表解析所述数据包的网络协议并提取匹 酉己项;

( 6 )所述交换机根据从所述数据包中提取的所述匹配项查找所述交换机的 一个流表, 判断所述数据包是否与所述交换机的所述流表项相匹配; 若是, 则 执行步骤(8 ); 若否, 则生成第三控制消息, 将不能匹配的所述数据包上报网 络控制器;

( 7 )所述网络控制器判断是否需要处理所述第三控制消息, 若不要处理, 则丟弃所述数据包; 若要处理, 则所述网络控制器根据其业务逻辑, 为所述交 换机下发相应的流表, 配置相应的队列资源, 下发相应的处理所述数据包的操 作内容;

(8)所述网络控制器根据从所述数据包提取的关键字段匹配流表, 并执行 匹配到流表项中的指令, 对所述数据包进行软件定义的配置处理, 再将处理后 的所述数据包分发至相应的端口输出队列;

(9)所述交换机根据链路层信息描述, 给所述数据包封装相应的数据链路 层协议后, 将其从不同的网络接口中转发出去。

Description:
增强 OpenFlow网络能力的网络控制器、 交换机和方法 本申请要求于 2013年 6月 21日提交中国专利局、申请号为 201310248700.8、 发明名称为 "一种增强可编程能力的 OpenFlow网络系统和方法"的中国专利申 请的优先权, 其全部内容通过引用结合在本申请中。 技术领域

本发明涉及网络通信技术领域,特别是涉及一 种增强 OpenFlow网络能力的 网络控制器、 交换机和方法。 背景技术

SDN ( Software Defined Network )为软件定义网络, 包括两部分架构: 由网 络控制器组成的控制网络和由底层的交换机组 成的数据网络。 它将传统网络中 的智能集中在由网络控制器组成的控制网络中 , 底层的交换机不具有任何网络 智能, 仅仅按照网络控制器的指令转发数据。

基于 OpenFlow协议的 OpenFlow网络是 SDN的一种实现方式。

参见图 1, 介绍现有的 OpenFlow网络的结构组成。 现有的 OpenFlow网络 包括网络控制器 10和底层的交换机 20。 其中, 由网络控制器 10组成的控制网 络可视为是网络操作系统, 网络用户可使用网络控制器 10向上层业务提供的标 准 SDN API进行编程, 也就是使用软件定义的方式开发网络应用 30。 而底层的 交换机 20不具备任何网络智能, 它只能按照 OpenFlow网络控制器下发的流表 对数据包进行解析、 匹配和转发。

现有的 OpenFlow 网络中的网络控制器对交换机数据网络的软件 定义能力 存在诸多局限和不足:

1、 OpenFlow网络支持的网络体系结构有限, 现有的 OpenFlow网络仅仅支 持传统的传输控制协议 TCP/互联网协议 IP ( Transmission Control Protocol /Internet Protocol ) 的网络体系结构, 不支持非 IP的网络体系结构。 网络用户不 能根据自己需求在网络中以软件定义的方式部 署不同体系架构的异构网络。

2、 OpenFlow协议不能通过软件定义的方式规定交换 对数据包的处理方 式, 仅仅能够使用 OpenFlow协议规范的几种 Action对数据包进行简单的处理。 3、 OpenFlow协议不能通过软件定义的方式管理交换 上的各种网络资源 (如交换机端口上的队列 ), 不能保障网络中的数据流的 QoS参数。

4、 OpenFlow 网络协议只能基于以太网的二层协议, 不能基于其他的链路 层协议(例如, 光网络二层协议和 3GPP中的 L2协议), 开发者不能通过软件 定义的方式对 OpenFlow网络依赖的链路层协议进行编程。

下面通过具体的场景,说明现有的 OpenFlow网络缺乏足够的可软件定义功 能, 难以适应软件定义网络的需求。

场景 1 (参见图 2 ): 现有的 OpenFlow网络中要部署一种异构体系网络时, 该异构网络使用一种新的使用 IPv4头封装的网络协议 Proto-A进行端到端的数 据传输。 但是, 使用现有的 OpenFlow协议, 网络控制器无法釆用软件定义方式 配置交换机解析和转发网络协议 Proto-A的数据包。 这就要为 OpenFlow网络提 供一种新的使网络控制器能配置交换机解析和 转发多种网络协议的处理机制。

场景 2 (参见图 3 ): 在现有的 OpenFlow网络中使用隧道技术时, 要在隧道 入口处为 IPv6数据包封装一个 IPv4头, 并在隧道出口处去掉该封装的 IPv4头 而恢复原来的 IPv6数据包。 使用现有的 OpenFlow协议不能用软件定义的方式 扩展交换机对数据包的处理的 Action, 完成隧道的封装和解封装。 也就是, 现 有 OpenFlow网络不能通过软件定义的方式配置这种 道场景。

场景 3: OpenFlow网络中部署一个话音业务时, 现有的 OpenFlow网络使 用的 OpenFlow协议不能配置物理链路的带宽和队列的 包率,无法保障话路的 可靠带宽。 也就是, 这种场景下的现有 OpenFlow网络不能通过软件定义的方式 配置一条数据流使用的网络资源, 以保障数据流的 QoS参数。

场景 4: 现有的 OpenFlow网络中数据包网络协议格式只能依赖于 太网的 链路层协议, 不支持其他的数据链路层协议。 用户应该能够使用软件定义的方 式配置交换机, 使得交换机能够理解多种链路层协议, 从而使交换机能够转发 来自多种网络接口的数据包。 发明内容

有鉴于此, 本发明的目的是提供一种增强 OpenFlow 网络能力的网络控制 器、 交换机和方法, 使得本发明的 OpenFlow网络能够对网络体系架构进行软件 定义, 从而在 OpenFlow网络中可以部署不同体系结构的异构网 , 而且每个异 构网络都具有独立的寻址、 路由与执行相关网络协议的功能, 这样, 就在现有

SDN 网络基础上, 对网络的软件定义的能力和软件定义的范畴进 行大幅度的提 升与扩展, 从而使得整个 SDN网络的可编程性能得到进一步提高。

本发明提供了一种网络控制器, 该网络控制器包括:

协议解析配置模块, 用于生成解析一数据包的网络协议所需的网络 协议配 置消息, 并下发该网络协议配置消息;

数据包处理编程模块, 用于生成操作配置消息, 以软件定义的方式指定对 所述数据包的操作, 并下发该操作配置消息;

队列资源配置模块, 用于生成队列配置消息, 以软件定义的方式指定交换 机端口队列的队列参数, 并下发该队列配置消息;

链路层协议配置模块, 用于生成链路层协议配置消息, 以软件定义的方式 指定解析所述数据包所需要的数据链路层协议 和描述该数据链路层协议的帧结 构, 并下发该链路层协议配置消息。

本发明还提供了一种交换机, 该交换机包括:

链路层协议适配模块, 用于接收链路层协议配置消息, 根据链路层协议配 置消息解析接收到的数据包的数据链路层协议 , 并将其送入协议解析模块; 协议解析模块, 用于根据所收到的协议配置消息中对协议解析 表的配置, 对经过数据链路层解析的所述数据包进行网络 协议解析、 提取关键字段, 生成 结构化的数据包;

数据包处理流水线模块, 用于将交换机中存储的至少一个流表划分为至 少 一个流水线, 按照所述至少一个流表的流表项匹配所述结构 化的数据包, 并对 所述数据包执行所匹配的流表项中的设定操作 , 按照收到的操作配置消息对所 述数据包执行相应的操作;

输出队列模块, 用于接收队列配置消息, 根据所述队列配置消息设置相应 的队列参数, 使所述数据包处理流水线模块根据流表指令, 将所述数据包转发 到相应的输出队列。。

本发明还提供了一种增强 OpenFlow网络能力的方法, 包括下列步骤: ( 1 )交换机接收到一个网络数据包, 判断是否能够解析所述数据包的数据 链路层协议; 若能够, 则执行步骤(3 ); 若不能够, 则产生第一控制消息, 并 将所述数据包上报网络控制器; ( 2 )所述网络控制器接收到所述控制消息后, 判断是否要为交换机配置数 据链路层协议, 若不需要, 则丟弃该数据包; 若需要, 则对所述第一控制消息 做出响应: 解析所述数据包所需要的数据链路层协议和描 述该数据链路层协议 的帧结构, 再通过扩展的 OpenFlow消息将所述数据包下发给所述交换机;

( 3 )所述交换机解析所述数据包的链路层协议, 并判断是否能够对所述进 行了链路层协议解析后的数据包进行网络协议 解析, 若能够, 则执行步骤(5 ); 若不能够, 则产生第二控制消息, 并将该不能进行网络协议解析的数据包上报 给所述网络控制器;

( 4 )所述网络控制器响应所述第二控制消息, 判断是否需要配置所述交换 机解析的新网络协议, 若不需要, 则丟弃所述数据包; 若需要, 将解析所述数 据包所需要的协议解析表利用扩展的 OpenFlow消息下发给所述交换机;

( 5 )所述交换机根据所述协议解析表解析所述数 包的网络协议并提取匹 酉己项;

( 6 )所述交换机根据从所述数据包中提取的所述 配项查找所述交换机的 一个流表, 判断所述数据包是否与所述交换机的所述流表 项相匹配; 若是, 则 执行步骤(8 ); 若否, 则生成第三控制消息, 将不能匹配的所述数据包上报网 络控制器;

( 7 )所述网络控制器判断是否需要处理所述第三 制消息, 若不要处理, 则丟弃所述数据包; 若要处理, 则网络控制器根据其业务逻辑, 为所述交换机 下发相应的流表, 配置相应的队列资源, 下发相应的处理所述数据包的操作内 容;

( 8 )所述网络控制器根据从所述数据包提取的关 字段匹配流表, 并执行 匹配到流表项中的指令, 对所述数据包进行软件定义的配置处理, 再将处理后 的所述数据包分发至相应的端口输出队列;

( 9 )所述交换机根据链路层信息描述, 给所述数据包封装相应的数据链路 层协议后, 将其从不同的网络接口中转发出去。

本发明的有益效果:本发明增强可编程能力的 OpenFlow网络系统对现有的 OpenFlow网络体系架构作了改进, 扩展了 OpenFlow网络中可软件定义的模块 与功能,从而可以使用软件定义的方式在 OpenFlow网络中部署多个不同类型业 务的异构网络, 并扩展了 SDN网络可软件定义的范畴, 增强了 OpenFlow网络 的可编程能力,使得多种不同的网络业务能够 更加灵活、方便地部署到 OpenFlow 网络中。 因此, 本发明具有艮好的推广应用前景。 附图简要说明

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

图 1是现有的 OpenFlow网络架构组成示意图。

图 2是现有的 OpenFlow网络中的网络控制器在其能够配置、解 与转发控 制的交换机执行的原有协议基础上增添一种新 型网络协议的过程示意图。

图 3 ( A )、( B )分别是未封装 IPv4头的 IPv6数据包结构组成和用于隧道场 景的使用 IPv4头封装的 IPv6数据包结构组成两个示意图。

图 4是本发明增强可编程能力的 OpenFlow网络系统架构组成示意图。

图 5是本发明网络系统中的协议解析单元组成结 示意图。

图 6是本发明网络系统中的配置协议解析表的消 结构组成示意图。

图 7是本发明网络系统中经过协议解析后的结构 数据包组成示意图。 图 8是本发明网络系统中的数据处理单元结构组 示意图。

图 9是本发明网络系统中配置 Action的消息结构组成示意图。

图 10是本发明网络系统中 Pipeline多级流水线设计步骤示意图。

图 11是本发明网络系统中的消息配置转发队列消 结构组成示意图。

图 12是本发明网络系统中的链路层协议配置单元 构组成示意图。

图 13是本发明网络系统中的配置链路层协议的消 结构组成示意图。

图 14是本发明网络系统工作方法操作步骤流程图

图 15是本发明网络系统添加新的协议解析表示意 。 具体实施方式

为使本发明的目的、 技术方案和优点更加清楚, 下面结合附图和实施例对 本发明作进一步的详细描述。

图 4示出了本发明增强可编程能力的 OpenFlow 网络系统的架构组成示意 图。 其中对现有 OpenFlow网络的网络控制器和交换机分别进行了 展。

如图 4所示, 在网络控制器 30增设: 协议解析配置模块 31、 数据包处理编 程模块 32、 队列资源配置模块 33和链路层协议配置模块 34。在 SDN交换机 40 增设与网络控制器 30中所述四个模块分别相对应的四个模块:协 解析模块 41、 数据包处理流水线模块 42、 输出队列模块 43和链路层协议适配模块 44。 藉由 该四组八个对应模块的协作配合,使得该 OpenFlow网络中能够部署多个异构网 络, 实现协议无关的数据转发, 同时增加了网络的可编程性。

接下来参考图 4介绍本发明网络系统所增设的四组 8个功能模块。

( A )协议解析配置模块 31和协议解析模块 41,用于配置和解析网络协议, 并对交换机接收的数据包进行预解析, 提取网络协议中的关键字段, 以与流水 线中的流表相匹配。 这两个模块的结构组成参见图 5所示。

如图 5所示, 协议解析配置模块 31负责下发扩展的 OpenFlow消息给交换 机 40, 配置并解析交换机 40使用的多种网络协议, 通过扩展的 OpenFlow消息 对交换机 40使用的协议解析表进行添加、 删除和修改等操作, 并釆用软件定义 的方式配置交换机 40的协议解析功能。

参见图 6,介绍该协议解析配置模块 31向交换机 40下发的用于配置协议解 析表的扩展 OpenFlow消息的结构。该扩展 OpenFlow消息也称为协议配置消息, 包括下述三个字段: 消息头、 指令和协议内容描述。

消息头( Header ):该字段有两种类型, 1 )釆用 OpenFlow协议的标准 Header, 重新定义一种 type类型 xxx,用于表示扩展 OpenFlow消息为协议解析表的配置 消息, 如图 6中类型 1所示; 2 )釆用扩展 OpenFlow协议的 Experimenter消息, 用于表示扩展 OpenFlow消息为协议解析表的配置消息, 如图 6中类型 2所示。

指令( Command )·· 用于设定根据所述扩展 OpenFlow消息能够执行的操作 Action, 包括: 创建协议解析表中的新表(Create ), 修改已有表( Modify )和删 除表 ( Delete ), 等等。

协议内容描述: 例如釆用包括基于可扩展标记语言 XML ( extensible markup language ) 的 NetPDL语言描述网络协议中的信息和需要提取的 协议字段。

协议解析模块 41有两部分功能: 1 ) 负责处理网络控制器 30发送的协议配 置消息; 2 )根据该协议配置消息对进入交换机 40的数据包进行协议解析。 为 此, 该模块负责维护多个协议解析表, 协议解析表是由网络控制器 30通过协议 配置消息来配置。 每个协议解析表可用于解析一种特定的网络协 议, 并提取该 协议相关关键字段的值。 例如, 利用 IPv4的协议解析表能够提取数据包中的源 IP地址、 目的 IP地址等关键字段的值。 故该协议解析模块 41的输入是原始的 网络数据包, 其输出是提取了网络协议关键字段的结构化的 网络数据包。

参见图 7,示出了本发明网络系统中经过协议解析后 结构化的网络数据包 的结构组成示意图。 结构化数据包是提取了网络协议的关键字段的 数据包, 其 中, 在 MatchFields子结构中, 保存有协议解析表提取出的匹配项。

( B )数据包处理编程模块 32和数据包处理流水线模块 42, 用于处理网络 中数据包的传输, 共同完成交换机流表对数据包的匹配和处理。 该两个模块的 结构图如图 8所示。

参见图 8, 数据包处理编程模块 32, 负责以软件定义的方式来指定交换机 对数据包的操作 ( Action )方式。 通过扩展的 OpenFlow协议将数据包处理操作 Action指令下发到指定的交换机 40, 由软件定义交换机 40对数据包处理操作。 例如, 在 OpenFlow网络中, 为了使交换机能够对数据包进行复杂的隧道封 装和 解封装操作, 用户可以将隧道封装和解封装操作使用的代码 通过扩展的 OpenFlow协议下发给交换机 40, 交换机 40将这段代码作为对数据包进行隧道 封装和解封装的扩展 Action存储在交换机 40中。隧道入口和出口交换机的中数 据包匹配到特定的流表项后, 执行隧道的封装和解封装的 Action, 就完成了隧 道入口和出口对数据包的处理。

图 9是本发明网络系统中配置 Action的消息结构组成示意图。如图 9所示, 数据包处理编程模块 32配置交换机 40可支持 Action的扩展 OpenFlow消息结 构组成, 包括下述三个字段: 消息头、 指令和操作描述。

消息头( Header ):该字段有两种类型, 1 )釆用 OpenFlow协议的标准 Header, 并扩展其 type类型: 表示扩展 OpenFlow消息为交换机处理数据的 Action配置 消息,如图 9中类型 1所示; 2 ):釆用扩展 OpenFlow协议的 Experimenter消息: 表示为这种配置消息, 如图 9中类型 2所示;

指令(Command ): 用于设定扩展 OpenFlow消息执行的操作内容, 包括: 为交换机添加一个新的 Action ( Create )、修改交换机中的一个 Action ( Modify ) 和删除交换机中的一个 Action ( Delete )。

操作( Action )描述: 为对数据包的处理代码, 用于指明对数据包的处理过 程和 Action需要接受的参数列表。

数据包处理流水线模块 42, 用于提供一种处理策略。 它将交换机 40中多个 流表划分成多个不同流水线, 以隔离分属于不同虚拟网之间的数据流和隔离 网 络资源, 并按照流表项匹配结构化数据包, 再对匹配的数据包执行流表项中的 设定操作, 对数据包执行软件定义的操作。 数据包处理流水线模块 42的输入是 协议解析模块 41输出的结构化数据包, 其输出是网络中传输的数据包。

现有 OpenFlow网络中的交换机流水线支持多级流表, 有的数据包必须先 匹配逻辑上的 0级流表, 0级流表由若干个物理流表组成, 其功能是将数据包分 发到不同的流水线中进行匹配, 如果命中 0级流表, 数据包跳转到其他流表继 续进行匹配。

图 10是本发明网络系统中 Pipeline多级流水线设计示意图。在图 10中,数 据包处理流水线模块 42将交换机 40中多级流表划分为若干条流水线, 经过不 同流水线的匹配和处理后, 数据包被分发到不同的输出队列, 对分别属于不同 的流水线的数据流进行隔离。 这种处理流程可用于网络虚拟化中虚拟网流表 资 源和网络带宽的隔离, 每个虚拟网都可以有自己独立的流水线。

0级流表先匹配数据包并提取的相应字段,再 该数据包分发到合适的流水 线中, 在每条流水线内, 根据虚拟网中部署的网络协议, 数据包可能进行不同 字段的匹配。 例如, 在 ICN虚拟网中, 数据包匹配提取的 URL字段, 将数据包 输出到相应的端口队列。 在标签交换虚拟网中, 数据包匹配提取的交换标签, 输出到相应的端口队列中。

因此, 数据包处理流水线模块 42的输入是协议解析模块 41输出的结构化 数据包。 数据包处理流水线模块 42的输出是网络中传输的数据包。

( C ) 队列资源配置模块 33和输出队列模块 43, 用于为网络中数据流提供 QoS保障、 并以软件定义的方式来配置 OpenFlow网络交换机中的队列参数, 以 及对网络中的数据流进行流量整形。

其中, 队列资源配置模块 33, 用于用软件定义的方式来配置交换机端口队 列的队列参数, 并将该配置信息通过扩展的 OpenFlow协议消息下发给交换机 40; 该模块配置的交换机端口上队列参数包括: 队列标识 queue_id、 父队列标识 parent_id、 队列类型、 队列长度、 最大处理单元、 最小带宽、 最大带宽和优先级 等等, 以供网络控制器釆用该软件定义的方式对网络 进行拥塞控制与流量控制。 图 11示出了本发明网络系统中的消息配置转发队 消息结构组成示意图。 如图 11所示, 队列资源配置模块 33配置转发队列的扩展 OpenFlow消息结构组 成中的下述两个字段: 消息头和队列参数。

消息头( Header ):该字段有两种类型, 1 )釆用 OpenFlow协议的标准 Header, 并扩展其 type类型: 表示扩展 OpenFlow消息为交换机处理转发队列的配置消 息, 如图 11中类型 1所示; 2 ): 扩展 OpenFlow的 Experimenter消息, 表示为 这种配置消息, 如图 11中类型 2所示。

队列参数(queue_configure ), 用于存储所有配置队列的各种信息, 包含队 列类型, 以及交换机支持的多种队列参数(包括队列标 识 queue_id、 父队列标识 parent_id、 队列类型、 队列长度、 最大处理单元、 最小带宽、 最大带宽和优先级 等)。

输出队列模块 43, 负责接受队列资源配置模块 33的配置,设置相应的队列 参数, 使得数据包处理流水线模块根据流表指令, 将数据包转发到相应的输出 队列; 并用该方法使得网络控制器能够将数据流分发 到不同的输出队列, 为不 同数据流提供不同的 QoS保障。

( D )链路层协议配置模块 34 和链路层协议适配块 44, 用于配置和解析 OpenFlow网络使用的不同数据链路层协议,隐藏 络中数据链路层协议的差异。

图 12示出了本发明网络系统中的链路层协议配置 块 34和链路层协议适 配模块 44的组成示意图。 如图 12所示, 链路层协议配置模块 34, 负责以软件 定义的方式来指定 OpenFlow网络使用的数据链路层协议,将数据链 层协议配 置信息通过扩展的 OpenFlow消息下发给交换机, 以使 OpenFlow网络能够使用 包括用户自定义的任意的数据链路层协议。 该链路层协议适配模块 44处理交换 机接收到的数据帧时, 其输入为交换机不同网络接口接收到的数据帧 , 输出是 经过数据链路层协议解析的网络数据包。 该模块处理交换机转发的数据包时, 其输入为交换机输出队列中的数据包, 输出是封装了不同数据链路层协议的数 据帧。

图 13是本发明网络系统中的配置链路层协议的消 结构组成示意图。 参见 图 13, 链路层协议配置模块 34配置链路层协议的扩展 OpenFlow消息组成结构 中的下述三个字段: 消息头、 指令和链路层适配代码。

消息头( Header ):该字段有两种类型, 1 )使用 OpenFlow协议的标准 Header, 并扩展其 type类型:表示扩展 Openflow消息是用于交换机的链路层协议适配模 块的配置消息, 如图 13 中类型 1 所示; 2 ) 釆用扩展 OpenFlow 协议的 Experimenter消息: 表示上述配置消息, 如图 13中类型 2所示。

指令(Command ): 例如用于设定对链路层协议的操作, 包括: 支持一个新 的链路层协议、 删除对现有的链路层协议支持和修改现有的链 路层协议解析过 程。

链路层适配代码: 为用户软件定义的链路层协议适配代码, 该代码包括: a ) 描述如何从一个新的链路层帧中提取其载荷, 以及该载荷釆用何种协议封装的; b )描述如何将交换机中数据包封装到一个链路 协议的帧中。

链路层协议适配模块 44, 用于解析网络控制器 30发送的配置信息, 将网络 控制器 30下发的链路层协议描述写入到网络接口中可 程模块。 该模块还对交 换机各个网络接口接收到的链路层数据进行适 配操作, 解析不同网络接口数据 帧的数据链路层协议, 并隐藏不同链路层协议的差异: 即对来自不同网络接口 的数据帧进行解析后, 将其放入输入队列。 该模块对输出队列是将从不同网络 接口转发来的数据包封装不同的数据链路层协 议后, 再由网络接口转发出去。

参见图 14, 介绍本发明增强可编程能力的 OpenFlow 网络系统的工作方法 的下述具体操作步骤:

( 1 ) 当交换机不同的网络接口接收到使用不同数据 链路层协议封装的网络 数据帧后, 链路层协议适配模块 44判断网络接口中的可编程模块是否能够解析 该数据帧的数据链路层协议; 若能够, 则跳转执行步骤(3 ); 若不能够, 则链 路层协议适配模块 44产生包括 packet-in的控制消息,并将该不能处理的数据帧 上报网络控制器 30的链路层协议配置模块 34;

( 2 )链路层协议配置模块 34接收到链路层协议适配模块 44上报的控制消 息后, 判断是否要为交换机配置数据链路层协议, 若不需要, 则丟弃该数据包; 若需要, 则链路层协议配置模块 34对该控制消息做出响应: 解析该数据包所需 要的数据链路层协议和描述该数据链路层协议 的帧结构, 再通过扩展的 OpenFlow消息将该数据包下发给交换机的链路层 议适配模块 44;

( 3 )链路层协议适配模块 44解析该数据帧的链路层协议, 将该数据帧中 的二层协议解析后的数据包送入协议解析模块 41 ;协议解析模块 41判断其是否 能够解析该数据包, 若能够, 则执行步骤(5 ); 若不能够, 则产生包括 packet-in 的控制消息,并将该不能解析的数据包上报网 络控制器的协议解析配置模块 31 ;

( 4 )协议解析配置模块 31 响应该控制消息, 并判断是否需要配置交换机 解析的新网络协议, 若不需要, 则丟弃该数据包; 若需要, 将解析该数据包所 需要的协议解析表利用扩展的 OpenFlow消息下发给交换机的协议解析模块 41 ;

( 5 )协议解析模块 41 根据协议解析表解析该数据包网络协议和提取 匹配 项;

( 6 )数据包处理流水线模块 42根据从该数据包提取的匹配项查找交换机 流表, 判断该数据包是否与交换机流表项相匹配; 若是, 则执行步骤(8 ); 若 否, 则生成 Packet-in控制消息, 将不能匹配的该数据包上报网络控制器;

( 7 )网络控制器判断是否需要处理该 packet-in控制消息, 若不要处理, 则 丟弃该数据包; 若要处理, 则网络控制器根据其业务逻辑, 为交换机下发相应 的流表, 队列资源配置模块 33 配置相应的队列资源, 数据包处理编程模块 32 下发相应处理该数据包的操作内容;

( 8 )数据包处理编程模块 32根据从该数据包提取的关键字段匹配流表, 并执行匹配到流表项中的指令, 对该数据包进行软件定义的配置处理, 再将处 理后的该数据包分发至相应的端口输出队列;

( 9 ) 交换机的链路层协议适配模块 44根据其可编程模块的链路层信息描 述, 给数据包封装相应的数据链路层协议后, 将其从不同的网络接口中转发出 去。

上述总体工作流程图中, 纵向箭头表示系统数据平面的数据流, 横向箭头 表示控制平面的数据流。 本发明系统中, 有四对模块的功能关系密切, 下面分 别介绍该系统中各个模块之间的工作流程:

( A )协议解析配置模块 31和协议解析模块 41之间的工作流程:

a) 以添加协议解析表为例 (参见图 15 ), 说明控制平面的工作流程:

( 1 )网络控制器中的协议解析配置模块 31釆用软件定义新协议 Proto-A的 协议解析表(即用 TCP头封装协议 Proto-A )。该协议解析表用于描述协议 Proto-A 的数据包结构, 以及协议需要提取的匹配字段等信息。

( 2 ) 协议解析配置模块 31 将协议 Proto-A 的协议解析表通过扩展的 OpenFlow消息下发给交换机的协议解析模块 41。

( 3 )协议解析模块 41解析网络控制器的配置信息, 将协议 Proto-A的解析 表和其他已配置的协议解析表存储于交换机中 。

b)数据平面工作流程(以解析 Proto- A数据包为例):

( 1 ) 交换机的协议解析模块 41 从交换机输入队列中读取未解析的网络数 据包。

( 2 )从读取的网络数据包最外层协议开始, 进行协议字段的解析和提取关 键字段, 先后解析 Ethernet协议、 IPv4协议、 TCP协议和 Proto- A协议, 并依照 各个协议解析表提取协议中的关键字段, 经过协议解析表解析后的数据包就变 为结构化的数据包(参见图 8所示)。

( 3 ) 协议解析模块 41 将提取匹配项的结构化数据包送入数据包处理 Pipeline模块 42进行匹配处理。

( B )数据包处理编程模块 32和数据包处理流水线模块 42之间的工作流程: a)控制平面的工作流程 (以配置新的 Action为例 ):

( 1 )数据包处理编程模块 32釆用软件定义的方式指定交换机对于数据包 的操作, 并将软件定义的数据包操作封装成扩展的 OpenFlow消息, 再下发给交 换机的数据包处理 Pipeline模块 42。

( 2 )数据包处理 Pipeline模块 42解析网络控制器的配置信息, 将网络控制 器新配置的 Action添加到交换机中。

b)数据平面的工作流程:

( 1 )数据包处理 Pipeline模块 42从输入队列中取得提取关键字段结构化的 数据包, 先在 0号流表中进行匹配, 再根据 0号流表匹配到表项的指令, 将该 数据包送入不同的流水线, 继续匹配流表。

( 2 )进入不同流水线的该数据包完成流表匹配后 执行流表项中的 Action, 对数据包执行网络控制器软件定义的操作后, 转发到流表项指定的出口队列。

( C ) 队列资源配置模块 33和输出队列模块 43之间的工作流程:

a)控制平面的工作流程

( 1 ) 网络控制器中的队列资源配置模块 33 用软件定义交换机上的端口输 出队列的配置参数, 并通过扩展的 OpenFlow协议消息将其下发给交换机。

( 2 )交换机的输出队列接受网络控制器的配置, 置相应输出队列的参数, 配置队列的队列类型 p_fifo、队列长度 txlen、最大处理单元 MTU、保证带宽 rate、 最大带宽 ceil和优先级 prio等队列参数。 b)数据平面的工作流程:

( 1 )数据包处理 Pipeline模块 42将分属于不同流水线的数据包送入各个不 同的出口队列。

( 2 ) 出口队列根据网络控制器配置的参数, 对队列中的数据流进行流量整 形。

( D )链路层协议配置模块 34和链路层协议适配模块 44之间的工作流程: a)控制平面的工作流程:

( 1 )链路层协议配置模块 34用软件定义 OpenFlow网络支持的数据链路层 协议, 描述数据链路层协议的帧结构, 并通过扩展的 OpenFlow消息下发给交换 机。

( 2 )链路层协议适配模块 44解析网络控制器的配置消息, 将链路层协议 描述信息写入可编程模块。

b)数据平面的工作流程:

( 1 )交换机不同的网络接口接收到使用不同数据 路层协议封装的网络数 据帧, 链路层协议适配模块 44根据其可编程模块中的链路层协议描述信息 对 数据帧进行解析, 为交换机隐藏数据链路层协议的差异。

( 2 )交换机的输出队列将数据包从网络接口转发 前, 链路层协议适配模 块 44根据其可编程模块的链路层信息的描述, 给该数据包封装相应的数据链路 层协议。

本发明扩展的 OpenFlow网络中能够支持多个具有不同的寻址、 由机制和 不同的网络体系结构的异构网络, 同时还增强了现有 OpenFlow网络的可软件定 义的范畴和可编程性。

以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发 明的精神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本发 明保护的范围之内。