Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
CONSTRUCTION METHOD, DEVICE AND SYSTEM FOR MULTI-PATH FORWARDING RULES
Document Type and Number:
WIPO Patent Application WO/2015/180153
Kind Code:
A1
Abstract:
Provided are a construction method, device and system for multi-path forwarding rules. A controller calls a multi-path algorithm to generate a plurality of paths of a data stream; the controller generates multi-port rules of each forwarding device according to the plurality of paths; the controller generates metadata according to the multi-port rules of each forwarding device, wherein the metadata contains information for indicating at least one forwarding port of the forwarding device; the controller generates an indication to establish a flow entry; the controller sends the indication to generate a flow entry to each forwarding device, so that each forwarding device selects at least one forwarding port of the forwarding device to forward the data stream according to the indication to generate a flow entry and according to the metadata. Since the forwarding device can implement multiplexing on a port combination according to metadata, after generating a flow entry, the controller need not query a group that has been used and directly sends the flow entry to each forwarding device, so as to accelerate the decision time of the controller.

Inventors:
ZENG YULONG (CN)
WEN BAILIN (CN)
LI JIANFEI (CN)
Application Number:
PCT/CN2014/078972
Publication Date:
December 03, 2015
Filing Date:
May 30, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
H04L45/24; H04L45/74
Domestic Patent References:
WO2011119792A22011-09-29
Foreign References:
CN103329488A2013-09-25
CN102957603A2013-03-06
CN103281246A2013-09-04
CN103428094A2013-12-04
Other References:
See also references of EP 3136662A4
Attorney, Agent or Firm:
LEADER PATENT & TRADEMARK FIRM (CN)
北京同立钧成知识产权代理有限公司 (CN)
Download PDF:
Claims:
权 利 要 求 书

1、 一种多路径转发规则构造方法, 其特征在于, 包括:

控制器调用多路径算法生成数据流的多条路径;

所述控制器根据所述多条路径生成每个转发设备的多端口规则, 每个 所述转发设备的多端口规则指示所述转发设备对应所述多条路径的至少 一个转发端口;

所述控制器根据每个所述转发设备的多端口规则生成元数据, 所述元 数据中包含指示所述转发设备的所述至少一个转发端口的信息;

所述控制器生成建立流表项的指示, 所述建立流表项的指示中包含写 元数据指示、 跳转到多路径表指示和所述写元数据指示对应的所述元数 据;

所述控制器将所述建立流表项的指示发送给每个所述转发设备, 以便 每个所述转发设备依据所述生成流表项的指示, 根据所述元数据选择所述 转发设备的所述至少一个转发端口转发所述数据流。

2、 根据权利要求 1所述的方法, 其特征在于, 所述元数据中包含端 口信息标识区, 所述端口信息标识区用于指示所述转发设备的所述至少一 个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示一个所 述转发端口。

3、 根据权利要求 1或 2所述的方法, 其特征在于, 所述控制器根据 每个所述转发设备的多端口规则生成元数据之前, 还包括:

所述控制器判断每个所述转发设备的多端口规则对应的分流比例是 否为等比, 若是等比, 则执行所述控制器根据每个所述转发设备的多端口 规则生成所述元数据的歩骤。

4、 一种多路径转发规则构造方法, 其特征在于, 包括:

转发设备接收控制器发送的建立流表项的指示, 所述建立流表项的指 示中包含写元数据指示、跳转到多路径表指示和所述写元数据指示对应的 所述元数据;

所述转发设备根据所述建立流表项的指示建立第一张表的流表项, 所 述第一张表的流表项中的动作域为写入所述写元数据指示对应的所述元 数据、 以及跳转到多路径表, 其中, 所述第一张流表指的是所述转发设备 中的入口流表;

所述转发设备根据所述写元数据指示建立所述多路径表的流表项, 所 述多路径表的流表项中, 匹配域为所述元数据, 动作域为从所述元数据对 应的至少一个转发端口发送数据流。

5、 根据权利要求 4所述的方法, 其特征在于, 所述元数据中包含端 口信息标识区, 所述端口信息标识区用于指示所述转发设备的所述至少一 个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示一个所 述转发端口;

所述动作域中为根据所述端口信息标识区中指示的所述转发设备的 所述至少一个转发端口的信息一一对应指示的所述转发端口作为多路径 转发的端口, 发送所述数据流。

6、 根据权利要求 5所述的方法, 其特征在于, 所述转发设备根据所 述写元数据指示建立所述多路径表的流表项, 包括;

所述转发设备査询所述多路径表中是否存在包含所述元数据的流表 项;

若不存在, 则所述转发设备根据所述写元数据指示, 提取所述元数据 中所述端口信息标识区指示的所述转发设备的所述至少一个转发端口的 信息, 对应生成所述多路径表的流表项中的所述动作域。

7、 一种控制器, 其特征在于, 包括:

处理模块, 用于调用多路径算法生成数据流的多条路径, 根据所述多 条路径生成每个转发设备的多端口规则, 每个所述转发设备的多端口规则 指示所述转发设备对应所述多条路径的至少一个转发端口, 根据每个所述 转发设备的多端口规则生成元数据, 所述元数据中包含指示所述转发设备 的所述至少一个转发端口的信息, 生成建立流表项的指示, 所述建立流表 项的指示中包含写元数据指示、跳转到多路径表指示和所述写元数据指示 对应的所述元数据;

发送模块, 用于将所述建立流表项的指示发送给每个所述转发设备, 以便每个所述转发设备依据所述建立流表项的指示, 根据所述元数据选择 所述转发设备的所述至少一个转发端口转发所述数据流。

8、 根据权利要求 7所述的控制器, 其特征在于, 所述元数据中包含 端口信息标识区, 所述端口信息标识区用于指示所述转发设备的所述至少 一个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示一个 所述转发端口。

9、 根据权利要求 7或 8所述的控制器, 其特征在于, 所述处理模块, 还用于在根据每个所述转发设备的多端口规则生成元数据之前, 判断每个 所述转发设备的多端口规则对应的分流比例是否为等比, 若是等比, 则根 据每个所述转发设备的多端口规则生成所述元数据。

10、 一种转发设备, 其特征在于, 包括:

接收模块, 用于接收控制器发送的建立流表项的指示, 所述建立流表 项的指示中包含写元数据指示、跳转到多路径表指示和所述写元数据指示 对应的所述元数据;

处理模块, 用于根据所述建立流表项的指示建立第一张表的流表项, 所述第一张表的流表项中的动作域为写入所述写元数据指示对应的所述 元数据、 以及跳转到多路径表; 还用于根据所述写元数据指示建立所述多 路径表的流表项, 所述多路径表的流表项中, 匹配域为所述元数据, 动作 域为从所述元数据对应的至少一个转发端口发送数据流, 所述第一张流表 指的是所述转发设备中的入口流表。

11、 根据权利要求 10所述的转发设备, 其特征在于, 所述元数据中 包含端口信息标识区, 所述端口信息标识区用于指示所述转发设备的所述 至少一个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示 一个所述转发端口;

所述动作域中发送所述数据流的所述至少一个转发端口所述端口信 息标识区中指示的所述转发设备的所述至少一个转发端口一一对应。

12、 根据权利要求 11所述的转发设备, 其特征在于, 所述处理模块, 用于根据所述写元数据信息指示建立所述多路径表的流表项, 具体为: 用于査询所述多路径表中是否存在包含所述元数据的流表项; 若不存在, 则用于根据所述写元数据指示, 提取所述元数据中所述端 口信息标识区指示的所述转发设备的所述至少一个转发端口的信息, 对应 生成所述多路径表的流表项中的所述动作域。

13、 一种控制器, 其特征在于, 包括: 处理器、 存储器、 总线和通信接口; 所述存储器用于存储计算机执行 指令,所述处理器与所述存储器通过所述总线连接,当所述控制器运行时, 所述处理器执行所述存储器存储的所述计算机执行指令, 以使所述控制器 执行如权利要求 1-3任意一项所述的方法。

14、 一种转发设备, 其特征在于, 包括:

处理器、 存储器、 总线和通信接口; 所述存储器用于存储计算机执行 指令, 所述处理器与所述存储器通过所述总线连接, 当所述转发设备运行 时, 所述处理器执行所述存储器存储的所述计算机执行指令, 以使所述转 发设备执行如权利要求 4-6任意一项所述的方法。

15、一种多路径转发规则构造系统, 其特征在于, 包括: 权利要求 7-9 任意一项所述的控制器和权利要求 10-12任意一项所述的转发设备;或者, 权利要求 13所述的控制器和权利要求 14所述的转发设备。

Description:
一种多路径转发规则的构造方法、 装置及系统 技术领域

本发明涉及网络通信技术领域, 尤其涉及多路径转发规则的构造方 法、 装置及系统。 背景技术

随着网络技术的发展, 软件定义网络(Software Defined Network, SDN ) 技术的提出是对网络架构的一次创新, 其主要技术特征包括: 转发控制分离、 网络集中管控、 支持开放编程以开放网络资源和能力。 SDN的目标在于通过 对网络架构的重构来简化网络的管控, 加快新业务的部署。 OpenFlow是一种 主流的实现 SDN的关键技术, 其定义了网络控制器和网络转发设备间通信的 接口和协议。 基于 OpenFlow的 SDN网络中, 引入组 (group)的概念使一组端口 集合作为一个单一实体用于包的转发, 并使用组表(group table)来存储组表 项, 组表项中使用一个标识符 ID唯一标识一个组表项, 组类型 (group type) 代表该组支持的业务类型, 计数器(Counters )用于针对组的流量统计, 动作 桶 (action buckets)用于指定该组表项关联的操作桶 (bucket) 。 不同的组类 型可以支持不同的业务。 一个操作桶项中包含桶的标识、 权重和操作 (如转 发到某个端口) , 其中权重用于确定数据在各条转发路径上转发 的比例。

在 SDN网络中,构造一条多路径转发规则的通常方 法是, 1 )定义一个组, 指定组类型为选择(Select) , 代表数据包转发将从多个操作桶中根据一定的 规则 /算法选择一个端口; 指定其操作桶, 例如指定多个转发端口号和权重。 2)构造流表项(flow entry),包含匹配域(Match Field)和操作域(Action), 其中操作域部分定义为指向组表中的某个表项 。

但是, 转发设备的存储资源是有限的, 组表支持的硬件流表条数也是有 限的, 因而组的复用对节省存储空间来说尤为重要。 现有技术中, 要实现组 的复用, 控制器需要査询已经使用过的组, 对比历史组的操作桶中的端口组 合是否和将建立的组一致, 在一致的情况下使用历史组的标识作为新建组 的 标识使用。 当使用多路径转发的组较多时, 端口组合的情况种类较多, 査询 历史组的标识将产生不小的开销, 影响到转发设备上流表建立的时间, 降低 了控制器与转发设备的工作效率。 发明内容

本发明提供一种多路径转发规则的构造方法、 装置及系统, 用于提高 多路径转发规则的构造效率。

本发明的第一个方面是提供一种多路径转发规 则构造方法, 包括: 控制器调用多路径算法生成数据流的多条路径 ;

所述控制器根据所述多条路径生成每个转发设 备的多端口规则, 每个 所述转发设备的多端口规则指示所述转发设备 对应所述多条路径的至少 一个转发端口;

所述控制器根据每个所述转发设备的多端口规 则生成元数据, 所述元 数据中包含指示所述转发设备的所述至少一个 转发端口的信息;

所述控制器生成建立流表项的指示, 所述建立流表项的指示中包含写 元数据指示、 跳转到多路径表指示和所述写元数据指示对应 的所述元数 据;

所述控制器将所述建立流表项的指示发送给每 个所述转发设备, 以便 每个所述转发设备依据所述生成流表项的指示 , 根据所述元数据选择所述 转发设备的所述至少一个转发端口转发所述数 据流。

结合第一个方面, 在第一种可能的实现方式中, 所述元数据中包含端 口信息标识区, 所述端口信息标识区用于指示所述转发设备的 所述至少一 个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示 一个所 述转发端口。

结合第一个方面或第一个方面的第一种可能的 实现方式, 在第二种可 能的实现方式中, 所述控制器根据每个所述转发设备的多端口规 则生成元 数据之前, 还包括:

所述控制器判断每个所述转发设备的多端口规 则对应的分流比例是 否为等比, 若是等比, 则执行所述控制器根据每个所述转发设备的多 端口 规则生成所述元数据的歩骤。

本发明的第二个方面是提供一种多路径转发规 则构造方法, 包括: 转发设备接收控制器发送的建立流表项的指示 , 所述建立流表项的指 示中包含写元数据指示、跳转到多路径表指示 和所述写元数据指示对应的 所述元数据;

所述转发设备根据所述建立流表项的指示建立 第一张表的流表项, 所 述第一张表的流表项中的动作域为写入所述写 元数据指示对应的所述元 数据、 以及跳转到多路径表, 其中, 所述第一张流表指的是所述转发设备 中的入口流表;

所述转发设备根据所述写元数据指示建立所述 多路径表的流表项, 所 述多路径表的流表项中, 匹配域为所述元数据, 动作域为从所述元数据对 应的至少一个转发端口发送数据流。

结合第二个方面, 在第一种可能的实现方式中, 所述元数据中包含端 口信息标识区, 所述端口信息标识区用于指示所述转发设备的 所述至少一 个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示 一个所 述转发端口;

所述动作域中为根据所述端口信息标识区中指 示的所述转发设备的 所述至少一个转发端口的信息一一对应指示的 所述转发端口作为多路径 转发的端口, 发送所述数据流。

结合第二个方面的第一种可能的实现方式, 在第二种可能的实现方式 中, 所述转发设备根据所述写元数据指示建立所述 多路径表的流表项, 包 括;

所述转发设备査询所述多路径表中是否存在包 含所述元数据的流表 项;

若不存在, 则所述转发设备根据所述写元数据指示, 提取所述元数据 中所述端口信息标识区指示的所述转发设备的 所述至少一个转发端口的 信息, 对应生成所述多路径表的流表项中的所述动作 域。

本发明的第三个方面是提供一种控制器, 包括:

处理模块, 用于调用多路径算法生成数据流的多条路径, 根据所述多 条路径生成每个转发设备的多端口规则, 每个所述转发设备的多端口规则 指示所述转发设备对应所述多条路径的至少一 个转发端口, 根据每个所述 转发设备的多端口规则生成元数据, 所述元数据中包含指示所述转发设备 的所述至少一个转发端口的信息, 生成建立流表项的指示, 所述建立流表 项的指示中包含写元数据指示、跳转到多路径 表指示和所述写元数据指示 对应的所述元数据;

发送模块, 用于将所述建立流表项的指示发送给每个所述 转发设备, 以便每个所述转发设备依据所述建立流表项的 指示, 根据所述元数据选择 所述转发设备的所述至少一个转发端口转发所 述数据流。

结合第三个方面, 在第一种可能的实现方式中, 所述元数据中包含端 口信息标识区, 所述端口信息标识区用于指示所述转发设备的 所述至少一 个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示 一个所 述转发端口。

结合第三个方面或第三个方面的第一种可能的 实现方式, 在第二种可 能的实现方式中, 所述处理模块, 还用于在根据每个所述转发设备的多端 口规则生成元数据之前, 判断每个所述转发设备的多端口规则对应的分 流 比例是否为等比, 若是等比, 则根据每个所述转发设备的多端口规则生成 所述元数据。

本发明的第四个方面是提供一种转发设备, 包括:

接收模块, 用于接收控制器发送的建立流表项的指示, 所述建立流表 项的指示中包含写元数据指示、跳转到多路径 表指示和所述写元数据指示 对应的所述元数据;

处理模块, 用于根据所述建立流表项的指示建立第一张表 的流表项, 所述第一张表的流表项中的动作域为写入所述 写元数据指示对应的所述 元数据、 以及跳转到多路径表; 还用于根据所述写元数据指示建立所述多 路径表的流表项, 所述多路径表的流表项中, 匹配域为所述元数据, 动作 域为从所述元数据对应的至少一个转发端口发 送数据流, 所述第一张流表 指的是所述转发设备中的入口流表。

结合第四个方面, 在第一种可能的实现方式中, 所述元数据中包含端 口信息标识区, 所述端口信息标识区用于指示所述转发设备的 所述至少一 个转发端口的信息, 所述端口信息标识区中的每个比特位对应指示 一个所 述转发端口;

所述动作域中发送所述数据流的所述至少一个 转发端口所述端口信 息标识区中指示的所述转发设备的所述至少一 个转发端口一一对应。 结合第四个方面的第一种可能的实现方式, 在第二种可能的实现方式 中, 所述处理模块, 用于根据所述写元数据信息指示建立所述多路 径表的 流表项, 具体为:

用于査询所述多路径表中是否存在包含所述元 数据的流表项; 若不存在, 则用于根据所述写元数据指示, 提取所述元数据中所述端 口信息标识区指示的所述转发设备的所述至少 一个转发端口的信息, 对应 生成所述多路径表的流表项中的所述动作域。

本发明的第五个方面是提供一种控制器, 包括:

处理器、 存储器、 总线和通信接口; 所述存储器用于存储计算机执行 指令,所述处理器与所述存储器通过所述总线 连接,当所述控制器运行时, 所述处理器执行所述存储器存储的所述计算机 执行指令, 以使所述控制器 执行如第一个方面或第一个方面任意一种可能 的实现方式所述的方法。

本发明的第六个方面是提供一种转发设备, 包括:

处理器、 存储器、 总线和通信接口; 所述存储器用于存储计算机执行 指令,所述处理器与所述存储器通过所述总线 连接,当所述控制器运行时, 所述处理器执行所述存储器存储的所述计算机 执行指令, 以使所述控制器 执行如第二个方面或第二个方面任意一种可能 的实现方式所述的方法。

本发明的第七个方面是提供一种多路径转发规 则构造系统,包括:第三 个方面或第三个方面任意一种可能的实现方式 所述的控制器和第四个方 面或第四个方面任意一种可能的实现方式所述 的转发设备; 或者, 第五个 方面所述的控制器和第六个方面所述的转发设 备。

本实施例提供的多路径转发规则的构造方法、 装置及系统, 通过控制 器调用多路径算法生成数据流的多条路径, 之后控制器根据多条路径生成 每个转发设备的多端口规则, 每个转发设备的多端口规则指示转发设备对 应多条路径的至少一个转发端口, 控制器根据每个转发设备的多端口规则 生成元数据, 控制器生成建立流表项的指示建立流表项的指 示中包含写元 数据指示、 跳转到多路径表指示和写元数据指示对应的元 数据, 控制器将 建立流表项的指示发送给每个转发设备, 以便每个转发设备依据生成流表 项的指示, 根据元数据选择转发设备的至少一个转发端口 转发所述数据 流。 由于转发设备根据元数据即可以对端口组合实 现复用, 因此, 控制器 在生成流表项后, 不需要査询已经使用过的组, 对比历史组的操作桶中的 端口组合是否和将建立的组一致, 直接将流表项发送给每个转发设备, 从 而加快了控制器的决策时间。 附图说明 为了更清楚地说明本发明实施例或现有技术中 的技术方案, 下面将对 实施例或现有技术描述中所需要使用的附图做 一简单地介绍, 显而易见 地, 下面描述中的附图是本发明的一些实施例, 对于本领域普通技术人员 来讲, 在不付出创造性劳动性的前提下, 还可以根据这些附图获得其他的 附图。

图 1为现有技术多路径转发数据处理流程示意图

图 2为本发明实施例提供的一种多路径转发规则 造方法的流程示意 图;

图 3为本发明实施例提供的端口信息标识区示意 ;

图 4为本发明实施例提供的一种多路径转发规则 造方法的流程示意 图;

图 5为本发明实施例提供的另一种多路径转发规 构造方法的流程示 意图;

图 6为本发明实施例提供的另一种多路径转发规 构造方法的流程示 意图;

图 7为本发明实施例提供的另一种多路径转发规 构造方法的流程示 意图;

图 8为本发明实施例多路径示意图;

图 9为本发明实施例提供的一种转发设备侧多流 示意图;

图 10为本发明实施实例提供的一种控制器的结构 意图;

图 11为本发明实施例提供的一种转发设备的结构 意图;

图 12为本发明实施实例提供的一种通用网络组件 结构示意图。 具体实施方式

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

本发明实施例应用场景为典型的 SDN网络场景, 包含网络控制器和网络 转发设备。 网络控制器和转发设备间建立数据通道 (例如 TCP连接) , 并使 用一定的通信标准 (如 OpenFlow等南北向协议) 通信。 网络控制器通过对转 发设备上的流表 (包括普通流表和组表) 的操作来实现对数据流转发行为的 控制。

现有技术中, 若转发设备采用单张流表来架构数据包处理的 管道, 对于 多个匹配项组合的单流表, 该单流表可能有 M*N条。 而如果采用多流表架构 数据包处理的管道, 则多流表的规模为 M+N。 转发设备会采用多 (张) 流表 的架构来形成数据包处理的管道, 可以达到缩小流表空间、 增强复杂业务处 理、 提升处理性能的目标, 图 1为现有技术多路径转发数据处理流程示意图 如图 1所示。 引入多流表后, 数据包在转发设备的处理有可能涉及多个流表 的 匹配。 多个流表的匹配逻辑可能包括: 1)在表 1 (Flow Table 1 ) 中匹配了数 据包头中八、 B域的值,在表 2 (Flow Table 2 )中匹配 C域的值; 2) 在表 1 (Flow Table 1 ) 中匹配了数据包头中的八、 B域, 流表项中增加一些新的特征信息存 储在元数据(Metadata) 中传递给表 2 (Flow Table 2) , 在表 2 (Flow Table 2) 中匹配元数据(metadata)的信息, 并根据匹配的结果执行后续的操作; 3) 在 表 n (Flow Table n) 中匹配完成后, 跳转到组表 (Group Table) 的某个表项, 进行组表的匹配和对应的操作。 需指出, 所述表 1,表 2, 表 n以及 A、 B、 C域 仅作为标识使用, 实际情况可能是不同的表的编号, 匹配域的名称和匹配域 的数量也可以是各种不同的组合情况。

控制器需要完成对转发设备的智能管控, 其硬件要求是有一定计算能力 和网络通信能力的结点, 可以部署在台式机、 服务器上, 亦可部署在虚拟化 环境中如虚拟机中。

转发设备要求一定的计算能力以处理协议逻辑 , 同时需要有数据包转发 的能力; 其处理芯片可能是 ASIC, NP或者基于 X86的智能网卡芯片。

本发明实施例在上述场景的基础上, 对多流表的组织形式和处理流程进 行了增强和优化, 以实现流表项的快速建立。 使用多流表中单独的一张表作 为多路径表, 实现类似组表的功能。 该多路径表的匹配域为元数据, 需要说 明的是, 元数据区别于扁平数据, 是指数据的若干比特位的组合有特定含义, 如每一位对应一个端口号, 而扁平的数据必须作为一个整体才有含义。 动作 域实现组表中的操作桶的功能。 元数据中包含转发端口 /转发端口组合的信 息, 元数据中的某一比特位为 1代表操作桶中包含该端口, 即可能作为多路径 转发的端口。 下面通过具体的实施例对本发明实施例提供的 多路径转发规则 构造方法和装置进行说明。

图 2为本发明实施例提供的一种多路径转发规则 造方法的流程示意 图, 本发明实施例的执行主体为控制器。 参照图 1, 该方法包括如下歩骤: 歩骤 100、 控制器调用多路径算法生成数据流的多条路径 。

其中, 本实施例对于采用多路径算法不做限定。

歩骤 101、 控制器根据多条路径生成每个转发设备的多端 口规则, 每 个转发设备的多端口规则指示转发设备对应多 条路径的至少一个转发端 口。

歩骤 102、 控制器根据每个转发设备的多端口规则生成元 数据。

具体的, 元数据中包含指示转发设备的至少一个转发端 口的信息。 歩骤 103、 控制器生成建立流表项的指示。

具体的, 建立流表项的指示中包含写元数据指示、 跳转到多路径表指 示和写元数据指示对应的元数据。

其中, 写元数据指示和跳转到多路径表指示跳转到多 路径表指示均为 操作, 写元数据指示用于指示转发设备将写元数据指 示对应的元数据写入 多路径表中, 跳转到多路径表指示用于指示数据包从转发设 备的第一张表 跳转到多路径表。

歩骤 104、 控制器将建立流表项的指示发送给每个转发设 备, 以便每 个转发设备依据生成流表项的指示, 根据元数据选择转发设备的至少一个 转发端口转发所述数据流。

本实施例提供的多路径转发规则构造方法, 通过控制器调用多路径算 法生成数据流的多条路径, 之后控制器根据多条路径生成每个转发设备的 多端口规则, 每个转发设备的多端口规则指示转发设备对应 多条路径的至 少一个转发端口, 控制器根据每个转发设备的多端口规则生成元 数据, 控 制器生成建立流表项的指示建立流表项的指示 中包含写元数据指示、跳转 到多路径表指示和写元数据指示对应的元数据 , 控制器将建立流表项的指 示发送给每个转发设备, 以便每个转发设备依据生成流表项的指示, 根据 元数据选择转发设备的至少一个转发端口转发 所述数据流。 由于转发设备 根据元数据既可以对端口组合实现复用, 因此, 控制器在生成流表项后, 不需要査询已经使用过的组, 对比历史组的操作桶中的端口组合是否和将 建立的组一致, 直接将流表项发送给每个转发设备, 从而加快了控制器的 决策时间。

优选的, 元数据中包含端口信息标识区, 端口信息标识区用于指示转 发设备的至少一个转发端口的信息, 端口信息标识区中的每个比特位对应 指示一个转发端口。

具体的, 端口信息标识区中的每个比特位对应指示一个 多路径转发的 端口。 图 3为本发明实施例提供的端口信息标识区示意 , 参照图 3, 将 元数据中的若干比特位如 48位作为端口信息标识区,当某一比特位置为 1 时, 代表该比特位对应的端口将作为多路径转发的 端口。 如图 3所示, 第 lbit和第 2bit位置为 1,代表该表项可以支持第 1和第二端口多路径转发。 当端口较多时, 可以利用元数据的部分比特位代表槽位号; 亦可以定制化 元数据的位数 (即扩大比特位数) 以适应特殊交换机的需求。

在图 2的基础上, 图 4为本发明实施例提供的一种多路径转发规则 造方法的流程示意图, 参照图 4, 在歩骤 102之前, 还包括:

歩骤 105、 控制器判断每个转发设备的多端口规则对应的 分流比例是 否为等比。

具体的, 若是等比, 则执行图 2歩骤 102。 若每个转发设备的多端口 规则对应的分流比例不是等比, 则控制器使用元数据作为索引, 根据元数 据定位具有相同分流比例的组表。

需要说明的是, 为了保证组的复用, 控制器需要为每个转发设备维护 一张组表。 将元数据作为索引, 把所有从相同端口组合的转发的组链接到 同一个索引下面。 由于每个组可能包含不同的分流比例, 例如每个操作桶 ( action bucket) 的权重不一样, 不同分流比例的组需要区别对待, 若采 用图 2所示的各个歩骤, 需要控制器向转发设备发送的流表项中添加分 流 比例信息, 从而增大了元数据实现难度, 对于每个组具有的不同分流比例 的场景, 将元数据作为索引, 能够快速査询相同端口组合的组集合, 从而 快速定位到相同端口组合的组集合, 缩小査询的结果空间, 从而加速査询 时间。

进一歩的, 在定位具有相同分流比例的组表后, 将该组表中的组标识 ( Group ID ) 作为流表项发送给转发设备, 以使转发设备将该组标识第一 张表的动作域。

图 5为本发明实施例提供的另一种多路径转发规 构造方法的流程示意 图, 参照图 5, 将元数据(metadata)作为索引, 例如, 图 5中的元数据末尾 16 位为 0000000000000011的索引对应的是从 1,2端口转发的组的集合, 同一个组 集合中的组可以通过链表连起来。 控制器构造第一张流表规则时, 首先根据 对应的端口组合构造出元数据(metadata) /索引 (index) , 基于索引 (index) 査询得到对应的组标识 (Group ID) , 将组标识作为第一张流表中流表项的 操作即可。

需要说明的是, 上述歩骤 105以及将元数据作为索引的方案、 106与 图 2所示的全部歩骤可以分别单独实现, 或以组合的形式实现。 对于非等 比例的分流, 要在元数据 (metadata) 中传递分流的比例或者权重, 将加 大转发设备识别元数据 (metadata) 逻辑的复杂度, 引入更大的开销。 因 而, 对于既有等比例分流如等价多路径(Equal-Cost Multipath Routing , 简 称: ECMP) , 又包含非等比例分流的场景, 可以结合采用图 2所示的方 案和和图 5所示方案。 也就是说, 对于等比例分流的流表规则, 在控制器 侧无需存储组表信息, 直接下发上述建立流表项的指示表项给转发设 备, 而对于包含不同分流比例的流表规则, 可以采用图 5所示方案, 增加元数 据 (metadata) 索引, 以査询到的组标识作为第一张流表规则的动作 。 此 夕卜, 不做组的遍历, 直接使用新的组标识在这种场景下也是一种可 行的方 案。

图 6为本发明实施例提供的另一种多路径转发规 构造方法的流程示 意图, 本发明实施例的执行主体为转发设备。 参照图 6, 该方法包括如下 歩骤: 歩骤 200、 转发设备接收控制器发送的建立流表项的指示 。 具体的, 流建立流表项的指示中包含写元数据指示、 跳转到多路径表 指示和写元数据指示对应的元数据。

歩骤 201、 转发设备根据建立流表项的指示建立第一张表 的流表项, 第一张表的流表项中的动作域为写入写元数据 指示对应的元数据、 以及跳 转到多路径表。

其中, 第一张流表指的是所述转发设备中的入口流表 。 写入写元数据 指示和跳转到多路径表均为操作, 转发设备根据写入写元数据指示将写入 写元数据指示对应元数据改写入多路径表中, 转发设备根据跳转到多路径 表指示将数据包从第一张表跳转到多路径表。

歩骤 202、 转发设备根据写元数据指示建立多路径表的流 表项, 多路 径表的流表项中, 匹配域为元数据, 动作域为从元数据对应的至少一个转 发端口发送数据流。

本发明实施例提供的多路径转发规则构造方法 , 通过转发设备接收控 制器发送的建立流表项的指示, 转发设备根据建立流表项的指示建立第一 张表的流表项, 第一张表的流表项中的动作域为写入写元数据 指示对应的 元数据、 以及跳转到多路径表, 最终转发设备根据写元数据指示建立多路 径表的流表项, 多路径表的流表项中, 匹配域为元数据, 动作域为从元数 据对应的至少一个转发端口发送数据流。 依据该元数据实现了对转发端口 的复用, 节省了转发设备的存储空间。 并且, 由于匹配域为元数据, 因此, 动作域可以包含一系列动作, 从而使得各设备商可以针对多路径表进行硬 件优化以提高性能, 例如优化转发端口的端口信息识别, 优化端口选择算 法的实现。 和传统的 ECMP不同, 转发设备实现组或类似功能的方案, 容 易扩展新的特性, 例如在将数据包转发到某个端口之前增加一系 列的动 作, 使得控制器对转发行为的控制更加灵活。

进一歩的, 图 6中所述元数据中包含端口信息标识区, 端口信息标识 区用于指示转发设备的至少一个转发端口的信 息, 端口信息标识区中的每 个比特位对应指示一个转发端口;

动作域中为根据端口信息标识区中指示的所述 转发设备的至少一个 转发端口的信息一一对应指示的转发端口作为 多路径转发的端口, 发送数 据流。

进一歩的, 在图 6歩骤 202具体包括;

歩骤 202a, 转发设备査询多路径表中是否存在包含元数据 的流表项。 具体的, 若不存在, 则转发设备根据写元数据指示, 提取元数据中端 口信息标识区指示的转发设备的至少一个转发 端口的信息, 对应生成多路 径表的流表项中的动作域。

图 7为本发明实施例提供的另一种多路径转发规 构造方法的流程示 意图, 结合控制器和转发设备。 参照图 7, 对控制器和转发设备之间的交 互进行说明, 该方法包括如下歩骤:

歩骤 300、 控制器调用多路径算法生成数据流的多条路径 。

具体的, 控制器基于某一种多路径算法生成给定流的多 条路径。 其中 多路径算法可以是任意的一种图算法, 例如修改后的 Dijkstra算法, K-shortest-path算法等。 此外, 在获得全网拓扑数据 (链路的 UP/DOWN 信息、 可用带宽、 时延等) , 以及各种业务流量需求、 优先级之后, 路由 的计算成为了一个规划问题, 多路径算法可能使用某种数学规划算法例如 LP ( Linear Programming ) 进行计算。 图 8为本发明实施例多路径示意图, 如图 8所示, 假设将流 f定义为匹配源 IP地址 192.168.1.0和目的 IP地址 192.168.2.0的所有数据包, 多路径算法计算得到的路径为 2条路径: A->B->E, A->C->E 0 需指出所得的两条路径只是本例子中多条路径 中的 一种情况, 可能还包含 A -〉 D -〉 Ε,Α -〉 C -〉 B -〉 E等多种情况, 此处仅为描述 问题使用, 其他情况不一一列举。

歩骤 301、 控制器根据多条路径生成每个转发设备的多端 口规则, 每 个转发设备的多端口规则指示转发设备对应多 条路径的至少一个转发端 口。

具体的,控制器将歩骤 1中计算所得结果转化为成每个转发设备的多 口 的规则。 例如, 对于转发设备 Α来说, 流 f(SRC IP:192.168.1.0, DST IP:192.168.2.0)对应的转发规则为:

Match field: Source IP address = 192.168.1.0/24,

Destination IP address = 192.168.2.0/24

需指出 "/24"位的掩码表示一个 IP地址段的匹配, 转发设备即可支持 IP地址或其他数据包头字段的精确匹配, 也可以支持带掩码的通配。 由歩 骤 300结果可知, 控制器对转发设备 A下发的针对流 f 的流表项应该既可 以从端口 1转发, 亦可以从端口 2转发。

歩骤 302、 控制器根据每个转发设备的多端口规则生成元 数据, 元数 据中包含指示转发设备的至少一个转发端口的 信息。

歩骤 303、 控制器生成建立流表项的指示, 建立流表项的指示中包含 写元数据指示、 跳转到多路径表指示和写元数据指示对应的元 数据。 控制 器将建立流表项的指示发送给每个转发设备

具体的, 控制器将多端口信息包含在元数据中, 构造包含写元数据指示 (Write-metadata) 和跳转到多路径表指示 (Goto multipath table) 的建立流 表项的指示。 具体来说, 将元数据中的若干比特位如 48位作为端口信息标识 区, 当某一比特位置为 1时, 代表该比特位对应的端口将作为多路径转发的 端 口。 如图 3所示, 第 lbit和第 2bit位置为 1, 代表该表项可以支持第一端口和第 二端口多路径转发。 当端口较多时, 可以利用元数据的部分比特位代表槽位 号; 亦可以定制化元数据的位数 (即扩大比特位数) 以适应特殊交换机的需 求。

具体的, 控制器和转发设备间遵循的协议可以包括且不 限于 OpenFlow, PCEP、 Netconf、 IRS , XMPP等, 只要保证控制器和转发设备 都能正确解析协议报文, 提取出其中的转发规则即可。

歩骤 304、 转发设备接收控制器发送的建立流表项的指示 。

转发设备接收到控制器发送的包含转发规则的 数据包, 进行协议解 析, 抽取内部的建立流表项的指示, 建立流表项的指示中包含写元数据指 示、 跳转到多路径表指示和写元数据指示对应的所 述元数据。

歩骤 305、 转发设备根据建立流表项的指示建立第一张表 的流表项。 具体的, 第一张表的流表项中的动作域为写入写元数据 指示对应的元 数据、 以及跳转到多路径表, 其中, 第一张流表指的是转发设备中的入口 流表。 图 8为本发明实施例提供的第一张表与多路径表 结构示意图, 参 照图 8, 具体来说, 第一张流表指的是包含多流表转发设备中的入 口流表, 完成第一张流表的匹配后可能伴随有其他流表 的匹配。 从而实现流水线处 理来增强复杂业务的处理能力合并性能力。 转发设备建立流表项, 对于支 持 OpenFlow协议的设备, 只需将包含两个操作: 写元数据指示 rWrite-metadata 和 跳转到多路径表指示 fGoto multipath table 的流 表项存储在转发设备的第一张表 (OpenFlow流表) 中, 该第一张表即可 能是硬件流表, 也可能是软件流表。 对于不支持 OpenFlow的设备, 修改 元数据信息指示 rWrite-metadata 和 跳转到多路径表指示 ^Goto multipath tabled的逻辑可以内嵌在转发设备的处理逻辑中 , 只要保证数据 包匹配时能按照所述两个逻辑转发即可。

歩骤 306、 转发设备根据写元数据指示建立多路径表的流 表项。

具体的, 多路径表的流表项中, 匹配域为元数据, 动作域为从元数据 对应的至少一个转发端口发送数据流。 多路径表可以是和组表 (group table ) 类似的一个流表, 具体来说需要实现组表中的 select类型 (group type ) 的功能, 同时至少实现等权重的动作桶 ( action buckets ) 的功能。 本发明的另一种实施例中, 多路径表是一种仅做多路径转发的特殊功能 表, 匹配域为元数据, 转发动作完全取决于元数据中包含的端口信息 , 例 如随机从多端口中选择一个端口转发, 或者基于包头某些字段的哈希函数 决定转发端口。 本发明的另一种实施例中, 多路径表中的流表规则的匹配 域是元数据, 对应的动作只要能完成基于某种算法选择元数 据中包含端口 中特定端口即可, 不一定受限于操作桶的实现方式, 例如转发设备中的固 件中内嵌多路径转发逻辑。

歩骤 307、 转发设备査询多路径表中是否存在包含元数据 的流表项。 具体的, 当在转发设备在多路径表査询到元数据对应的 流表项时, 代 表可以复用原来的多路径表逻辑, 本次流表建立过程结束; 如果没有査询 到, 则执行歩骤 308。

歩骤 308、 转发设备根据写元数据指示, 提取元数据中端口信息标识 区指示的转发设备的至少一个转发端口的信息 , 对应生成多路径表的流表 项中的动作域。

需要说明的是, 动作域中可以包含多个动作桶, 每个动作桶对应一个 动作, 执行多路径转发时, 由于需要向多个端口转发数据, 因此每一个转 发端口对应一个动作桶。

具体的, 图 9为本发明实施例提供的一种转发设备侧多流 示意图, 如 图 9所示, 其中, 左侧为转发设备建立的第一张表, 该表的流表项内容为: 写元数据指示 rWrite-metadata 和 跳转到多路径表指示 ^Goto multipath tabled , 转发设备根据该流表项把相应的数据包转至多 路径表 (multipath table ) , 即图 8中右侧的表, 该多路径表中, 匹配域为元数据, 动作域为 随机选择元数据包含的端口。 例如, 图 8中元数据的第 lbit和第 16bit为 1, 代表可以选择端口 1或者端口 16。

图 10为本发明实施实例提供的一种控制器的结构 意图, 该控制器 能够执行图 4所示的各个歩骤, 参照图 10, 该控制器包括: 处理模块 10、 发送模块 11。

处理模块 10, 用于调用多路径算法生成数据流的多条路径, 根据多条 路径生成每个转发设备的多端口规则, 每个转发设备的多端口规则指示转 发设备对应多条路径的至少一个转发端口, 根据每个转发设备的多端口规 则生成元数据, 元数据中包含指示转发设备的至少一个转发端 口的信息, 生成建立流表项的指示, 建立流表项的指示中包含写元数据指示、 跳转到 多路径表指示和写元数据指示对应的元数据;

发送模块 11, 用于将建立流表项的指示发送给每个转发设备 , 以便每 个转发设备依据建立流表项的指示, 根据元数据选择转发设备的至少一个 转发端口转发数据流。

本实施例提供的控制器, 通过处理模块调用多路径算法生成数据流的 多条路径, 根据多条路径生成每个转发设备的多端口规则 , 每个转发设备 的多端口规则指示转发设备对应多条路径的至 少一个转发端口, 根据每个 转发设备的多端口规则生成元数据, 元数据中包含指示转发设备的至少一 个转发端口的信息, 生成建立流表项的指示, 建立流表项的指示中包含写 元数据指示、 跳转到多路径表指示和写元数据指示对应的元 数据; 发送模 块将建立流表项的指示发送给每个转发设备, 以便每个转发设备依据建立 流表项的指示, 根据元数据选择转发设备的至少一个转发端口 转发数据 流。 由于转发设备根据元数据既可以对端口组合实 现复用, 因此, 处理模 块在生成流表项后, 不需要査询已经使用过的组, 对比历史组的操作桶中 的端口组合是否和将建立的组一致, 直接将流表项发送给每个转发设备, 从而加快了控制器的决策时间。 优选的, 元数据中包含端口信息标识区, 端口信息标识区用于指示转 发设备的至少一个转发端口的信息, 端口信息标识区中的每个比特位对应 指示一个转发端口。

可选的, 所述处理模块 10, 还用于在根据每个转发设备的多端口规则 生成元数据之前, 判断每个转发设备的多端口规则对应的分流比 例是否为 等比, 若是等比, 则根据每个转发设备的多端口规则生成所述元 数据。

若每个所述转发设备的多端口规则对应的分流 比例不是等比, 则所述 处理模块 10, 还用于使用元数据作为索引, 根据元数据定位具有相同分流 比例的组表。

图 11为本发明实施例提供的一种转发设备的结构 意图, 该转发设 备能够执行图 6所示的各个歩骤, 参照图 11, 该转发设备包括: 接收模块 20、 处理模块 21。

接收模块 20, 用于接收控制器发送的建立流表项的指示, 建立流表项 的指示中包含写元数据指示、跳转到多路径表 指示和写元数据指示对应的 元数据。

处理模块 21, 用于根据建立流表项的指示建立第一张表的流 表项, 第 一张表的流表项中的动作域为写入写元数据指 示对应的元数据、 以及跳转 到多路径表; 还用于根据写元数据指示建立多路径表的流表 项, 多路径表 的流表项中, 匹配域为元数据, 动作域为从元数据对应的至少一个转发端 口发送数据流, 第一张流表指的是转发设备中的入口流表。

本发明实施例提供的多路径转发规则构造方法 , 通过接收模块接收控 制器发送的建立流表项的指示, 建立流表项的指示中包含写元数据指示、 跳转到多路径表指示和写元数据指示对应的元 数据, 处理模块根据建立流 表项的指示建立第一张表的流表项, 第一张表的流表项中的动作域为写入 写元数据指示对应的元数据、 以及跳转到多路径表; 还用于根据写元数据 指示建立多路径表的流表项, 多路径表的流表项中, 匹配域为元数据, 动 作域为从元数据对应的至少一个转发端口发送 数据流, 第一张流表指的是 转发设备中的入口流表, 依据该元数据实现了对转发端口的复用, 节省了 转发设备的存储空间。 并且, 由于匹配域为元数据, 因此, 动作域可以包 含一系列动作, 从而使得各设备商可以针对多路径表进行硬件 优化以提高 性能, 例如优化转发端口的端口信息识别, 优化端口选择算法的实现。 和 传统的 ECMP不同, 转发设备实现组或类似功能的方案, 容易扩展新的特 性, 例如在将数据包转发到某个端口之前增加一系 列的动作, 使得控制器 对转发行为的控制更加灵活。

优选的, 元数据中包含端口信息标识区, 端口信息标识区用于指示转 发设备的至少一个转发端口的信息, 端口信息标识区中的每个比特位对应 指示一个转发端口;

动作域中发送数据流的至少一个转发端口端口 信息标识区中指示的 转发设备的至少一个转发端口一一对应。

可选的, 所述处理模块 21, 处理模块, 用于根据所述写元数据信息指 示建立所述多路径表的流表项, 具体为:

用于査询所述多路径表中是否存在包含所述元 数据的流表项; 若存在, 则建立多路径表的流表项完毕; 若不存在, 则用于根据所述 写元数据指示, 提取所述元数据中所述端口信息标识区指示的 所述转发设 备的所述至少一个转发端口的信息, 对应生成所述多路径表的流表项中的 所述动作域。

图 12为本发明实施实例提供的一种通用网络组件 结构示意图, 如 图 12所示为典型的通用网络组件 30, 其适用于实施本文本所公开的组 件和方法的一项或多项实施例。 所述网络组件 30可以包括处理器 300 (可以称为中央处理器单元或 CPU ) , 所述处理器通过总线与包含以 下项的存储装置进行通信: 辅助存储器 301、 只读存储器 (ROM ) 302、 随机存取存储器 (RAM ) 303、 输入 /输出 (I/O ) 装置 304以及网络连 接装置 305。 所述处理器 300可以作为一个或多个 CPU芯片实施, 或 者可以为一个或多个专用集成电路 (application specific integrated circuit, ASIC ) 的一部分。

该网络组件 30可以应用于控制器上, 也可以应用在转发设备上。 所述辅助存储器 301通常由一个或多个磁盘驱动器或磁带驱动器 组成, 且用于对数据进行非易失性存储, 而且如果 RAM 303的容量不 足以存储所有工作数据, 所述辅助存储器则用作溢流数据存储装置。所 述辅助存储器 301可用于存储程序, 所述程序在被选择执行时, 被加载 到 RAM 303中。所述 ROM 302用于存储在程序执行期间读取的指令以 及可能的数据。 ROM 302是非易失性存储装置, 其存储容量相对于辅 助存储器 301的较大存储容量而言通常较小。 所述 RAM 303用于存储 易失性数据, 并且还可能用于存储指令。 对 ROM 302和 RAM 303两者 的存取通常比对辅助存储器 301的存取快。

当所述装置 30运行所述存储器中的指令时, 所述处理器 300执行 如方法实施例所述的方法歩骤, 具体的流程请参照方法实施例, 这里不 再赘述。

本实施例还提供一种多路径转发规则构造系统 , 该系统包含至少一个 图 10所示的控制器和至少一个图 11所示转发设备; 或者, 该系统包含至 少一个应用图 12所示的网络组件的控制器和至少一个应用图 12所示的网 络组件的所示转发设备。 相应的, 控制器能够执行图 4所示的各个歩骤, 并能实现图 4对应实施例的技术效果; 转发设备能够执行图 6所示的各个 歩骤, 并能实现图 6对应实施例的技术效果; 进一歩的, 该系统中控制器 与转发设备的交互过程如图 7所示。

本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分歩骤 可以通过程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读 取存储介质中, 该程序在执行时, 执行包括上述方法实施例的歩骤; 而前述 的存储介质包括: ROM、 RAM,磁碟或者光盘等各种可以存储程序代码的 质。

最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的 说明, 本领域的普通 技术人员应当理解:其依然可以对前述各实施 例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替 换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例 技术方案的范围。