CN104584492A - 报文处理方法、设备及系统 - Google Patents
报文处理方法、设备及系统 Download PDFInfo
- Publication number
- CN104584492A CN104584492A CN201380001132.XA CN201380001132A CN104584492A CN 104584492 A CN104584492 A CN 104584492A CN 201380001132 A CN201380001132 A CN 201380001132A CN 104584492 A CN104584492 A CN 104584492A
- Authority
- CN
- China
- Prior art keywords
- prefix
- switching equipment
- message
- matching
- list item
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种报文处理方法、设备和系统。该方法包括交换设备接收报文,其中该交换设备上有以前缀项为索引建立的前缀项和通用流表项的对应关系,其中该前缀项对应的通用流表项的匹配域包括该前缀项;该交换设备根据该前缀项获取该报文中用于匹配的比特域;该交换设备将该比特域的值与该前缀项对应的通用流表项的匹配域的数据参数进行匹配。本发明实施例可以降低报文提取通用字段的次数,提高处理效率。
Description
报文处理方法、 设备及系统 技术领域 本发明实施例涉及通信技术, 尤其涉及一种报文处理方法、设备及系统。 背景技术
开放流( OpenFlow ) 网络中包括 OpenFlow交换机( OpenFlow Switch ) 和控制服务器( Controller )。 OpenFlow交换机会在本地维护流表( Flow Table ), 如果要转发的报文在流表中有对应项, 则直接根据该对应项进行快速转发; 如流表中没有对应项, 报文会被发送到控制服务器进行传输路径的确认, 控 制服务器在确认传输路径后会向 OpenFlow交换机下发流表, OpenFlow交换 机根据控制服务器下发的流表进行转发。
流表可以包括一个或多个流表项, 每个流表项用于匹配报文, 包含匹配 域(match field )字段和指令集(instructions )等。 当接收的报文的字段与匹 配域中的内容匹配时, 则 OpenFlow交换机按照指令集中的动作 ( action )进 行处理, 例如将报文转发到指定的输出端口, 丟包、 修改报文头或者转发到 群组表等。
通用流处理实现了转发面与具体协议格式无关的原子处理, OpenFlow交 换机能够对收到的报文中的任意比特域与预设的值进行比较, 如果相等则匹 配成功。为了指定分组报文中的任意比特域,采用偏移量( offset )、长度( size )、 比特掩码(mask )和数据(data )这 4个参数描述一个用于匹配的比特域的 特征。 offset表示偏移量, 以交换机入接口收到的分组帧起始位置算起; size 指定 offset后面连续比特的长度, offset和 size共同指定分组数据报文中一个 确定长度的连续的比特字段; mask表示 offset和 size指定比特字段内的比特 掩码,指定该比特字段内哪些比特位参与匹配操作。 mask长度为 size字节长, mask 为可选项, 如果不包括 mask, 则表明指定的整个比特字段作为匹配用 的比特域; data表示匹配用的比特域的所需满足的取值。 示例性的, 实现通 用匹配的过程为: OpenFlow 交换机的流表中增加通用匹配流表项, 包含 offset, size, mask和 data。 当 OpenFlow交换机接收到分组数据报文后, 如 果该报文按照 offset, size, mask指定的比特域的值等于 data值,则匹配成功,
然后 OpenFlow交换机可按照流表项中指定的动作 (action )执行后续操作。 上述的 offset和 size可以称为前缀项, offset, size和 mask也可以称为前 缀项, 即前缀项包括 offset和 size, 或者包括 offset, size和 mask。
在实践中, 通用匹配的处理效率较低。 发明内容
有鉴于此, 本发明实施例提供了一种报文处理方法、 设备及系统, 用于 解决通用匹配处理效率较低的问题。
第一方面, 提供了一种报文处理方法, 包括:
交换设备接收报文, 其中所述交换设备上有以前缀项为索引建立的所述 前缀项和通用流表项的对应关系 , 所述前缀项对应的通用流表项的匹配域包 括所述前缀项;
所述交换设备根据所述前缀项获取所述报文中用于匹配的比特域; 所述交换设备将所述比特域的值与所述前缀项对应的通用流表项的匹配 域的数据参数进行匹配。
结合第一方面, 在第一方面的第一种可能的实现方式中, 所述交换设备 上还有和所述通用流表项对应的精确流表项, 该方法还包括:
所述交换设备将所述报文与所述精确流表项进行匹配, 以便在匹配成功 后根据所述前缀项获取所述报文中用于匹配的比特域; 或者,
所述交换设备在将所述比特域的值与所述前缀项对应的通用流表项的匹 配域的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行匹配。
结合第一方面或第一方面的第一种可能的实现方式, 在第一方面的第二 种可能的实现方式中, 还包括:
所述交换设备以所述前缀项为索引, 建立所述前缀项与所述交换设备上 的通用流表项的对应关系。
结合第一方面或第一方面的第一种或第二种可能的实现方式, 在第一方 面的第三种可能的实现方式中, 在所述交换设备以所述前缀项为索引, 建立 所述前缀符与所述交换设备上的通用流表项的对应关系之前, 所述方法还包 括:
所述交换设备接收控制设备发送的前缀项配置消息, 所述前缀项配置消
息包括所述前缀项。
结合第一方面或第一方面的第三种可能的实现方式, 在第一方面的第四 种可能的实现方式中, 该方法还包括:
所述交换设备接收所述控制设备发送的特征请求消息;
所述交换设备发送特征回复消息至所述控制设备, 其中, 所述特征回复 消息指示所述交换设备支持通用匹配, 以便所述控制设备根据所述特征回复 消息发送所述前缀项配置消息。
第二方面, 提供一种报文处理方法, 包括:
交换设备接收前缀项配置消息, 所述前缀项配置消息中包括前缀项; 所述交换设备以所述前缀项为索引, 建立所述前缀项与所述交换设备上 的通用流表项的对应关系, 其中所述前缀项对应的通用流表项的匹配域包括 所述前缀项, 以使所述交换设备接收到报文后, 根据所述前缀项提取用于匹 配的比特域, 并将所述比特域的值与所述前缀项对应的通用流表项的匹配域 的数据参数进行匹配。
结合第二方面, 在第二方面的第一种实现方式中, 还包括: 所述交换设 备接收到报文后, 根据所述前缀项提取用于匹配的比特域; 所述交换设备将 所述比特域的值与所述前缀项对应的通用流表项的匹配域的数据参数进行匹 配。
结合第二方面或者第二方面的第一种实现方式, 在第二方面的第二种实 现方式中, 还包括: 所述交换设备接收控制设备发送的特征请求消息, 并向 所述控制设备发送特征回复消息, 所述特征回复消息中携带所述交换设备支 持的匹配类型, 以便所述控制设备根据所述交换设备支持的匹配类型确定所 述交换设备支持通用匹配时, 发送所述前缀项配置消息。
结合第二方面的第一种或者第二种实现方式, 在第二方面的第三种实现 方式中, 所述交换设备上还存有精确流表项, 所述精确流表项与所述前缀项 对应的通用流表项对应, 所述方法还包括: 所述交换设备将所述报文与所述 精确流表项进行匹配, 以便在匹配成功后根据所述前缀项提取用于匹配的比 特域; 或者, 所述交换设备将所述比特域的值与所述前缀项对应的通用流表 项的匹配域的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行 匹配。
第三方面, 提供了一种报文处理方法, 包括:
控制设备生成前缀项配置消息, 所述前缀项配置消息中包括前缀项; 所述控制设备向交换设备发送所述前缀项配置消息, 以便所述交换设备 以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流表项的对 应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项。
结合第三方面, 在第三方面的第一种可能的实现方式中, 还包括: 所述控制设备在下发通用流表项至所述交换设备的情况下, 对所述下发 的通用流表项对应的前缀项进行统计;
所述控制设备根据统计结果确定所述前缀项配置消息中包含的前缀项。 结合第三方面或第三方面的第一种可能的实现方式, 在第三方面的第二 种可能的实现方式中, 所述控制设备向交换设备发送所述前缀项配置消息, 包括:
所述控制设备发送多条所述前缀项配置消息至虚拟层设备, 以使所述虚 拟层设备整合所述多条前缀项配置消息, 并将整合后的前缀项配置消息发送 至所述交换设备。
结合第三方面或第三方面的第一种或第二种可能的实现方式, 在第三方 面的第三种可能的实现方式中, 还包括:
所述控制设备向所述交换设备发送特征请求消息, 并接收所述交换设备 发送的特征回复消息, 所述特征回复消息中携带所述交换设备支持的匹配类 型;
所述控制设备根据所述交换设备支持的匹配类型确定所述交换设备支持 通用匹配 。
第四方面, 提供了一种交换设备, 包括:
存储单元, 用于存储以前缀项为索引建立的所述前缀项和通用流表项的 对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项; 接收单元, 用于接收报文;
获取单元, 用于根据所述前缀项获取所述报文中用于匹配的比特域; 第一匹配单元, 用于将所述比特域的值与所述前缀项对应的通用流表项 的匹配域的数据参数进行匹配。
结合第四方面, 在第四方面的第一种可能的实现方式中, 所述存储单元
还用于存储和所述通用流表项对应的精确流表项; 所述交换设备还包括第二 匹配单元; 所述第二匹配单元, 用于在将所述报文与所述精确流表项进行匹 配; 其中, 所述第一匹配单元, 具体用于当所述第二匹配单元匹配成功的情 况下, 将所述比特域的值与所述前缀项对应的通用流表项的匹配域的数据参 数进行匹配。
结合第四方面或第四方面的第一种可能的实现方式, 在第四方面的第二 种可能的实现方式中, 所述存储单元还用于存储和所述通用流表项对应的精 确流表项; 所述交换设备还包括第三匹配单元; 所述第三匹配单元, 用于在 所述第一匹配单元匹配成功的情况下, 将所述报文与所述精确流表项进行匹 配。
结合第四方面或第四方面的第一种或第二种可能的实现方式, 在第四方 面的第三种可能的实现方式中, 还包括建立单元, 所述建立单元, 用于以所 述前缀项为索引, 建立所述前缀项与所述通用流表项的对应关系。
结合第四方面, 或者第四方面的第一种、 第二种或者第三种实现方式, 在第四方面的第四种实现方式中, 所述接收单元还用于接收控制设备发送的 前缀项配置消息, 所述前缀项配置消息包括所述前缀项。
结合第四方面, 或者第四方面的第一种、 第二种、 第三种或者第四种实 现方式, 在第四方面的第五种实现方式中, 所述接收单元, 还用于接收所述 控制设备发送的特征请求消息; 所述交换设备还包括发送单元, 用于发送特 征回复消息至所述控制设备, 其中, 所述特征回复消息指示所述交换设备支 持通用匹配, 以便所述控制设备根据所述特征回复消息发送所述前缀项配置 消息。
第五方面, 提供了一种交换设备, 包括: 存储器、 处理器和通信单元; 所述存储器, 用于存储以前缀项为索引建立的所述前缀项和通用流表项 的对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项; 所述通信单元, 用于接收报文;
所述处理器, 用于根据所述前缀项获取所述报文中用于匹配的比特域, 将所述比特域的值与所述前缀项对应的通用流表项的匹配域的数据参数进行 匹配。
结合第五方面, 在第五方面的第一种实现方式中, 所述存储器还用于存
储和所述通用流表项对应的精确流表项; 所述处理器用于将所述比特域的值 与所述前缀项对应的通用流表项的匹配域的数据参数进行匹配, 包括: 所述 处理器用于将所述报文与所述精确报文进行匹配, 匹配成功后, 将所述比特 域的值与所述前缀项对应的通用流表项的匹配域的数据参数进行匹配。
结合第五方面, 在第五方面的第二种实现方式中, 所述存储器还用于存 储和所述通用流表项对应的精确流表项; 所述处理器还用于在所述比特域的 值与所述前缀项对应的通用流表项的匹配域的数据参数进行匹配成功的情况 下, 将所述报文与所述精确流表项进行匹配。
结合第五方面, 或者第五方面的第一种或者第二种实现方式, 在第五方 面的第三种实现方式中, 所述处理器还用于以所述前缀项为索引, 建立所述 前缀项与所述通用流表项的对应关系。
结合第五方面, 或者第五方面的第一种、 第二种或者第三种实现方式, 在第五方面的第四种实现方式中, 所述通信单元还用于接收控制设备发送的 前缀项配置消息, 所述前缀项配置消息包括所述前缀项。
结合第五方面的第四种实现方式, 在第五方面的第五种实现方式中, 所 述通信单元还用于接收所述控制设备发送的特征请求消息, 并发送特征回复 消息至所述控制设备, 其中, 所述特征回复消息指示所述交换设备支持通用 匹配, 以便所述控制设备根据所述特征回复消息发送所述前缀项配置消息。
第六方面, 提供了一种交换设备, 包括:
接收单元, 用于接收前缀项配置消息, 所述前缀项配置消息中包括前缀 项;
建立单元, 用于以所述前缀项为索引, 建立所述前缀项与所述交换设备 上的通用流表项的对应关系, 其中所述前缀项对应的通用流表项的匹配域包 括所述前缀项, 以使所述交换设备接收到报文后, 根据所述前缀项提取用于 匹配的比特域, 并将所述比特域的值与所述前缀项对应的通用流表项的匹配 域的数据参数进行匹配。
结合第六方面, 在第六方面的第一种实现方式中, 所述接收单元还用于 接收报文;
所述交换设备还包括:
提取单元, 用于根据所述前缀项从所述报文提取用于匹配的比特域;
匹配单元 , 用于将所述比特域的值与所述前缀项对应的通用流表项的匹 配域的数据参数进行匹配。
结合第六方面, 或者第六方面的第一种实现方式, 在第六方面的第二种 实现方式中, 所述接收单元还用于接收控制设备发送的特征请求消息, 所述 交换设备还包括发送单元, 用于向所述控制设备发送特征回复消息, 所述特 征回复消息中携带所述交换设备支持的匹配类型, 以便所述控制设备根据所 述交换设备支持的匹配类型确定所述交换设备支持通用匹配时, 发送所述前 缀项配置消息。
结合第六方面的第一种或者第二种实现方式, 在第六方面的第三种实现 方式中, 所述交换设备上还存有精确流表项, 所述精确流表项与所述前缀项 对应的通用流表项对应, 所述匹配单元还用于将所述报文与所述精确流表项 进行匹配, 以便在匹配成功后根据所述前缀项提取用于匹配的比特域; 或者 所述匹配单元还用于将所述比特域的值与所述前缀项对应的通用流表项的匹 配域的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行匹配。
第七方面, 提供了一种交换设备, 包括: 通信单元, 存储器和处理器; 所述通信单元, 用于接收前缀项配置消息, 所述前缀项配置消息中包括 前缀项;
所述处理器, 用于以所述前缀项为索引, 建立所述前缀项与所述交换设 备上的通用流表项的对应关系, 其中所述前缀项对应的通用流表项的匹配域 包括所述前缀项, 以使所述交换设备接收到报文后, 根据所述前缀项提取用 于匹配的比特域, 并将所述比特域的值与所述前缀项对应的通用流表项的匹 配域的数据参数进行匹配;
所述存储器, 用于存储所述前缀项, 所述通用流表项和所述前缀项与所 述通用流表项的对应关系。
结合第七方面, 在第七方面的第一个实现方式中, 所述通信单元还用于 接收报文; 所述处理器还用于根据所述前缀项从所述报文提取用于匹配的比 特域, 将所述比特域的值与所述前缀项对应的通用流表项的匹配域的数据参 数进行匹配。
结合第七方面, 或者第七方面的第一种实现方式, 在第七方面的第二种 实现方式中, 所述通信单元还用于接收控制设备发送的特征请求信息, 向所
述控制设备发送特征回复消息, 所述特征回复消息中携带所述交换设备支持 的匹配类型, 以便所述控制设备根据所述交换设备支持的匹配类型确定所述 交换设备支持通用匹配时, 发送所述前缀项配置消息。
结合第七方面的第一种或者第二种实现方式, 在第七方面的第三种实现 方式中, 所述存储器还用于存储精确流表, 所述精确流表项与所述前缀项对 应的通用流表项对应, 所述处理器还用于将所述报文与所述精确流表项进行 匹配, 以便在匹配成功后根据所述前缀项提取用于匹配的比特域, 或者所述 处理器还用于, 将所述比特域的值与所述前缀项对应的通用流表项的匹配域 的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行匹配。
第八方面, 提供了一种控制设备, 包括:
生成单元, 用于生成前缀项配置消息, 所述前缀项配置消息中包括前缀 项;
发送单元, 用于向交换设备发送所述前缀项配置消息, 以便所述交换设 备以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流表项的 对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项。
结合第八方面, 在第八方面的第一种可能的实现方式中, 还包括: 统计单元, 用于在下发通用流表项至所述交换设备的情况下, 对所述下 发的通用流表项对应的前缀项进行统计;
确定单元,用于根据统计结果确定所述前缀项配置消息中包含的前缀项。 结合第八方面或者第八方面的第一种可能的实现方式, 在第八方面第二 种可能的实现方式中, 所述发送单元具体用于发送多条所述前缀项配置消息 至虚拟层设备, 以使所述虚拟层设备整合所述多条前缀项配置消息, 并将整 合后的前缀项配置消息发送至所述交换设备。
结合第八方面, 或者第八方面的第一种或者第二种可能的实现方式, 在 第八方面第三种可能的实现方式中, 所述发送单元还用于向所述交换设备发 送特征请求消息; 所述控制设备还包括接收单元和能力确定单元; 所述接收 单元, 用于接收所述交换设备发送的特征回复消息, 所述特征回复消息中携 带所述交换设备支持的匹配类型; 所述能力确定单元, 用于根据所述交换设 备支持的匹配类型确定所述交换设备支持通用匹配。
第九方面, 提供了一种控制设备, 包括: 通信单元和处理器;
所述处理器用于生成前缀项配置消息, 所述前缀项配置消息中包括前缀 项;
所述通信单元用于向交换设备发送所述前缀项配置消息, 以便所述交换 设备以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流表项 的对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项。
结合第九方面, 在第九方面的第一种可能的实现方式中, 所述处理器还 用于在下发通用流表项至所述交换设备的情况下, 对所述下发的通用流表项 对应的前缀项进行统计, 根据统计结果确定所述前缀项配置消息中包含的前 缀项。
结合第九方面或者第九方面的第一种可能的实现方式, 在第九方面的第 二种可能的实现方式中, 所述通信单元具体用于发送多条所述前缀项配置消 息至虚拟层设备, 以使所述虚拟层设备整合所述多条前缀项配置消息, 并将 整合后的前缀项配置消息发送至所述交换设备。
结合第九方面, 或者第九方面的第一种或者第二种可能的实现方式, 在 第九方面第三种可能的实现方式中, 所述通信单元还用于向所述交换设备发 送特征请求消息, 接收所述交换设备发送的特征回复消息, 所述特征回复消 息中携带所述交换设备支持的匹配类型; 所述处理器还用于根据所述交换设 备支持的匹配类型确定所述交换设备支持通用匹配。
第十方面, 提供了一种报文处理系统系统, 包括上述任——种交换设备 和任一一种控制设备。
通过上述技术方案, 本发明实施例在交换设备上会获取前缀项, 交换设 备接收到报文后首先会根据该前缀项提取用于匹配的比特域, 之后才将用于 匹配的比特域与通用流表中的通用流表项进行匹配, 这样就实现了对报文的 预处理, 不需要根据通用流表中每个通用流表项对报文的用于匹配的比特域 进行提取及匹配, 可以降低报文提取用于匹配的比特域的次数, 提高通用匹 配的处理效率。 附图说明 为了更清楚地说明本发明实施例中的技术方案, 下面将对实施例描述中 所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图是本发明
的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前 提下, 还可以根据这些附图获得其他的附图。
图 1为本发明实施例提供的一种报文处理方法的流程示意图;
图 2为本发明实施例中一种 OpenFlow网络的结构示意图;
图 3为本发明实施例提供的另一种报文处理方法的流程示意图; 图 4为本发明实施例中通用流表的获取流程示意图;
图 5为未优化的根据通用流表对报文进行处理的流程示意图;
图 6为本发明实施例中根据通用流表对报文进行处理的流程示意图; 图 7为本发明实施例提供的另一种报文处理方法的流程示意图; 图 8为图 7对应的系统结构示意图;
图 9为本发明实施例提供的另一种报文处理方法的流程示意图; 图 10 为本发明实施例中一种根据混合流表对报文进行处理的流程示意 图;
图 11 为本发明实施例中另一种根据混合流表对报文进行处理的流程示 意图;
图 12为本发明实施例提供的另一种报文处理方法的流程示意图; 图 13 为本发明实施例中通用流表项和精确流表项之间的映射关系的示 意图;
图 14 为本发明实施例中另一种根据混合流表对报文进行处理的流程示 意图;
图 15 为本发明实施例中另一种根据混合流表对报文进行处理的流程示 意图;
图 16为本发明实施例提供的另一种报文处理方法的流程示意图; 图 17为本发明实施例提供的另一种报文处理方法的流程示意图; 图 18为本发明实施例提供的一种交换设备的结构示意图;
图 19为本发明实施例提供的一种控制设备的结构示意图;
图 20为本发明实施例提供的一种报文处理系统的结构示意图; 图 21为本发明实施例提供的另一种报文处理系统的结构示意图; 具体实施方式
为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发 明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获 得的所有其他实施例, 都属于本发明保护的范围。
图 1为本发明实施例提供的一种报文处理方法的流程示意图, 包括: 11 : 交换设备接收前缀项配置消息, 所述前缀项配置消息中包括前缀项; 示例性的, 前缀项配置消息中包含的前缀项的个数可以为一个或多个, 具体个数可以进行预先设定。
示例性的, 在前缀项配置消息中, 假设前缀项的内容为 offset=5, size=8, mask=l l l l l l l l , 或者前缀项的内容为 offset=5, size=8, 前述 2个前缀项指示 了报文从起始位置起的第 6个比特位到第 13个比特位的比特字段中所有的比 特位参与匹配操作。 再例如, 有报文的字段 A[0-15],表示该报文的字段共有 16个比特位, 比特位从 0开始编号, 一直递增至 15 , 其中 A[0]表示其中的第 一个比特位, A[ l ]表示其中的第二个比特位, 以此类推; 当前缀项为 offset=5, size=8, mask=l l 111111或者当前缀项为 offset=5, size=8时 , 表示 A[0-15]中的 比特字段 A[5-12]中所有的比特位进行匹配; 又例如当 mask=10100000时,表 示 A[5-12]中第 1个和第 3个比特位, 即 A[5]和 A[7] , 进行匹配。
示例性的, 前缀项配置消息可以用于增加、 修改或者删除前缀配置表, 其中当控制设备下发了多个前缀项至交换设备时, 交换设备可以以列表的形 式来存储所述多个前缀项, 该列表可称为前缀配置表。
12: 所述交换设备以所述前缀项为索引, 建立所述前缀项与所述交换设 备上的通用流表项的对应关系, 其中, 所述前缀项对应的通用流表项的匹配 域包括所述前缀项, 以使所述交换设备收到报文后, 根据所述前缀项提取用 于匹配的比特域, 并将所述比特域的值与所述前缀项对应的通用流表项的匹 配域的数据参数进行匹配。
其中, 前缀项配置消息中包括的前缀项和通用流表项的匹配域包括的前 缀项的数据结构可以不同, 但承载相同的内容。
示例性的, 也可将建立的前缀项与通用流表项的对应关系存储在前缀配 置表中, 或者单独存在其他列表中, 本发明实施例对此不作限制。
示例性的, ^^设在交换设备上存有通用流表项 Tl、 Τ2、 Τ3和 Τ4 ,若 Tl、 Τ2和 Τ3都包括前缀项 Prefix X,当交换设备接收到的前缀项配置消息中包括 该前缀项 Prefix X时, 交换设备可以建立 Prefix X到 Tl、 T2和 T3的对应关 系, 即 Prefix X分别和 Tl、 Τ2和 Τ3存在对应关系。 利用建立的对应关系, 当交换设备收到报文, 例如 Α[0-15]时, 可以先通过 Prefix X获取报文的待匹 配字段, 即用于匹配的比特域, 例如 A[2-9] , 再根据建立的 Prefix X到 Tl、 Τ2和 Τ3的对应关系, 将用于匹配的比特域 Α[2-9]的值, 分别与 Tl、 Τ2和 Τ3中匹配域的数据参数进行匹配,这样在进行与 Τ1、Τ2和 Τ3匹配的过程中, 只需要获取 1次用于匹配的比特域 Α[2-9]。 而在实践中, 由于没有建立前缀 项与交换设备上的通用流表项的对应关系, 进而无法获知用于匹配的比特域 Α[2-9]可以用于 Tl、 Τ2和 Τ3的匹配, 当交换设备收到报文 Α后,分别与 Tl、 Τ2和 Τ3进行匹配的过程中, 都需要各获取一次用于匹配的比特域 Α[2-9] , 即共获取 3次用于匹配的比特域 Α[2-9] , 造成了重复的获取操作。 因此, 通 过在交换设备上建立前缀项和通用流表项的对应关系, 可以在匹配过程中利 用已经获取的用于匹配的比特域和多个通用流表项进行匹配, 而不必针对每 个通用流表项都进行一次获取用于匹配的比特域的操作, 从而提高了通用流 表项的处理效率。
为了更清楚的对本发明实施例的方案进行说明, 在本发明实施例中, 采 用本发明实施例提出的通过建立前缀项和通用流表项的对应关系来进行流表 项的匹配的过程称之为优化的通用匹配的处理过程; 对应的, 未采用本发明 实施例提出的通过建立前缀项和通用流表项的对应关系, 而直接将报文与通 用流表项进行匹配的过程称之为普通的通用匹配的处理过程
当交换设备上建立了前缀项和通用流表项的对应关系后, 在交换设备收 到报文后, 可以进行优化的通用匹配的处理过程。
示例性的, 优化的通用匹配的处理过程, 可以包括:
所述交换设备接收到报文后, 根据所述前缀项提取用于匹配的比特域; 所述交换设备将所述比特域的值与所述前缀项对应的通用流表项的匹配 域的数据参数进行匹配。
作为一种可选的实施方式, 如图 1所示的方法, 在步骤 11和 12后, 还 可以包括优化的通用匹配的处理过程。
本领域技术人员应知, 当交换设备上已经存有前缀项和通用流表项的对 应关系的情况下 (例如, 如图 1所示的方式, 由交换设备建立前缀项和通用 流表项的对应关系, 也可以由交换设备从其他已建立前缀项和通用流表项的 对应关系的交换设备上获取), 交换设备后续收到报文后, 可以直接执行优化 的通用匹配的处理过程, 而不必执行步骤 11和 12。
作为一种可选的实施方式, 图 1所示的方法还可以包括:
所述交换设备接收所述控制设备发送的特征请求消息, 并向所述控制设 备发送特性回复消息, 所述特征回复消息中携带所述交换设备支持的匹配类 型, 以便所述控制设备根据所述交换设备支持的匹配类型确定所述交换设备 支持通用匹配时, 发送所述前缀项配置消息。
示例性的, 控制设备在向交换设备发送前缀项配置消息之前, 可以先获 知交换设备是否具有处理通用匹配的能力, 可以理解为具有处理通用流表项 的能力, 也可以理解为处理前缀项的能力。 通常可以通过请求消息来请求交 换设备上报是否具备通用匹配的能力, 本发明实施例对于此类请求消息的具 体实现方式并不作限定。
作为一种可选的实施方式, 交换设备上还可以存有精确流表项, 即交互 设备上同时存储精确流表项和通用流表项, 其中, 精确流表项和通用流表项 之间也可以存在对应关系。 例如存在精确流表项 T1和通用流表项 T2, T1和 T2存在对应关系 ,此时 T1和 T2的对应关系可以表示为: 先进行 T1的匹配, 匹配通过后才进行 T2的匹配; 也可以表示为: 先进行 T2的匹配, 匹配通过 后再进行 T1的匹配。 鉴于此, 图 1所示的方法还可以包括: 述交换设备将所 述报文与所述精确流表项进行匹配, 以便在匹配成功后根据所述前缀项提取 用于匹配的比特域; 或者该方法还可以包括: 所述交换设备将所述比特域的 值与所述前缀项对应的通用流表项的匹配域的数据参数进行匹配成功后, 将 所述报文与所述精确流表项进行匹配。
本领域技术人员应知, 图 1有关的实施例中的关于前缀项、 前缀项配置 消息、 前缀配置表、 前缀项和通用流表项的对应关系、 通用匹配的能力等概 念和内容的解译以及举例也适用于本发明的其他实施例中。
示例性的, 本发明实施例中的控制设备可以为 OpenFlow 网络中的控制 服务器(Controller ), 交换设备可以为 OpenFlow网络中的 OpenFlow交换机
( OpenFlow Switch )。
示例性的, 该前缀项配置消息可以是控制设备发送给交换设备的, 也可 以是其他设备发送给交换设备的。
如图 2所示, 给出了一种 OpenFlow网络, 该网络中包括控制设备、 交 换设备和主机, 图 1所示的方法可以在图 2所示的网络中应用。 在图 2中, 由控制设备向交换设备下发前缀项配置消息。以下将以图 2所示的网络为例, 对本发明实施例提供的一种报文处理的方法进行举例说明。
在图 3所示的场景中, 控制设备预先获知交换设备是否能够支持通用匹 配, 当控制设备确定交换设备能够支持通用匹配的情况下, 控制设备根据向 交换设备配置通用流表项的过程中的所涉及的通用流表项, 将所涉及的通用 流表项对应的前缀项组成前缀池, 并将前缀池中对应通用流表项较多的前缀 项通过前缀项配置消息发送至交换设备, 从而交换设备可以根据下发的前缀 项建立前缀配置表, 并将建立的前缀项和通用流表项的对应关系存储在前缀 配置表中, 在交换设备收到报文后, 可以根据前缀项和通用流表项的对应关 系来执行优化的通用匹配的处理过程。 以下将对图 3所示的场景进行详细的 说明。
参见图 3 , 31-32为控制设备获知交换设备是否能够支持通用匹配的过程, 该过程不是必须执行的过程, 该过程的执行与否可以参考具体的网络情况, 例如图 2中和控制设备连接的所有交换设备都支持通用匹配, 则没有必要执 行此过程, 若图 2中的控制设备上的配置信息已经表明部分与其连接的交换 设备支持通用匹配, 则控制设备可以与其他未表明是否支持通用匹配的交换 设备执行此过程。 该过程可以包括:
31 : 控制设备向交换设备发送特征请求( feature request ) 消息。
其中, 控制设备向交换设备发送特征请求消息的目的是为了获知交换设 备是否支持通用匹配, 本领域技术人员应知, 其他的形式的消息也可来获知 交换设备是否支持通用匹配, 例如通用匹配能力查询消息等, 在此不作限制。
32: 交换设备向控制设备发送特征回复( feature reply ) 消息, 表明是否 支持通用匹配。
其中, 交换设备可以直接返回是否支持通用匹配至控制设备, 也可以返 回支持的匹配类型至控制设备, 从而使控制设备获知交换设备是否支持通用
匹配。
示例性的,交换设备支持的匹配类型可以包括:精确匹配和 /或通用匹配。 精确匹配是指交换设备可以根据精确流表项对报文进行处理, 通用匹配是指 交换设备可以根据通用流表进行处理。
例如, 交换设备通过 feature reply消息, 回复自身支持通用匹配和 /或精 确匹配。
本实施例以控制设备支持通用匹配为例。
通常, 一个流表包括一个或多个流表项, 每个流表项包括匹配域( match field )和指令集(instructions ), 当报文的字段与匹配域匹配时, 交换设备根 据指令集中的动作 (action )对报文进行处理。
一种可选的观点认为: 精确流表项与通用流表项的区别在于: 精确流表 的匹配域中会包含具体的字段名称, 例如源 IP地址、 目的 IP地址、 端口号 等; 通用流表的匹配域中不包含具体的字段名称, 而是采用 offset和 size表 示要匹配的字段在报文中的位置, 用 mask和 data表示要匹配的取值, 例如, 表明要匹配的字段为从分组帧起始位置算起的第 M个字节到第 N个字节的字 段。 由于目前的精确流表中的具体字段名称只是第二层〜第四层(L2〜L4 ) 的 字段, 存在一定的限制。 而通用流表采用 offset, size和 mask这种方式, 并 不限定在 L2〜L4, 可以一直指示到第七层(L7 ), 即通用流表可以指示的字段 包括 L2〜L7的字段。
33 : 在交换设备建立前缀配置表之前, 控制设备和交换设备之间可以进 行配置通用流表项的过程。
作为一种可选的实施方式, 在交换设备上配置有通用流表项之后, 交换 设备可以进行普通的通用匹配的处理过程, 如步骤 33'所示。
示例性的, 配置通用流表项的过程也可以理解为交换设备从控制设备获 取通用流表项的过程。
示例性的, 配置通用流表项的过程可以参见图 4, 包括:
41 : 交换设备接收到报文后, 如果在交换设备上没有存储有与该报文匹 配的通用流表项时, 交换设备向控制设备发送流表项请求报文( packet— in ), 该流表项请求报文中封装有接收到的报文。
42: 控制设备接收到交换设备发送的流表项请求报文后, 确定该流表项
请求报文封装有交换设备接收到的报文对应的通用流表项, 并向交换设备发 送流表项配置 (flow— mod ) 消息, 其中, 该流表项配置消息中包含该通用流 表项。
作为一种可选的实施方式, 交换设备可以将收到的通用流表项存入列表 中, 该列表可以称之为通用流表。
至此, 交换设备获取了该报文对应的通用流表项, 并可以根据获取的通 用流表项对报文进行相应的处理, 即可对报文进行普通的通用匹配的处理过 程。
示例性的, 普通的通用匹配的处理过程可以参见图 5 , 包括:
当交换设备接收到报文的情况下:
51 : 交换设备遍历通用流表中的通用流表项;
52: 交换设备根据遍历的通用流表项的匹配域中的 offset, size和 mask (其 中 mask为可选)获取报文的待匹配的比特域, 并将提取出的待匹配的比特域 与该通用流表项的匹配域中的数据参数 (data)进行比较, 得到匹配结果。
其中, 每个通用流表项可以包含匹配域 ( match field ) 和指令集
( instructions ), 匹配域中可以记录前缀项(即 offset, size和 mask,其中 mask 为可选)以及前缀项对应的值(也可以理解为数据参数, 即 data ), 指令集中 可以记录动作 (action ), 当根据前缀项获取的报文中的待匹配的比特域的值 与通用流表项的匹配域的值( data )匹配时, 可以对该报文执行相应的指令集 中的动作。
例如, 当前遍历的通用流表项的前缀项为第一前缀项, 第一前缀项具体 包括 offsetl、 sizel和 maskl , 该第一前缀项对应的值为 datal , 那么交换设备 根据该 offsetl、 sizel从接收的报文中提取出对应的第一通用字段, 通用字段 也可以称为用于匹配的比特域, 采用 maskl对提取出的第一通用字段进行加 掩, 并将加掩后的第一通用字段与 datal进行比较, 如果两者相同, 则匹配成 功, 否则失败。 例如通过 offsetl 和 sizel 提取出一段 8 个字节的字段如 00101101 , 掩码为了提取中间 4位, 可以采用或的操作或者与的操作, 或的 操作设定为 maskl=11000011 , 与的操作设定为 maskl=00111100加掩后, 得 到 11101111 , 而 datal为 11101111 , 则匹配。 当然, 可以理解的是, 在采用 offset, size, mask和 data进行匹配时并不限于上述的匹配方式, 例如还可以
进行哈希查找等, 上述匹配方式只是一种示例, 还可以采用其它定义的匹配 方式。
53 : 交换设备判断匹配是否成功, 若是, 执行 54, 否则执行 55。
54: 交换设备根据该通用流表项的指令集中动作进行处理。 之后结束。 作为一种可选的实施方式, 交换设备在匹配成功后, 可以先记录匹配的 通用流表项中的指令集中的动作, 再遍历其他的通用流表项, 若有其他流表 项也与该接收到的报文匹配, 一并将其他流表项的指令集的动作记录下来, 等到流表中所有流表项都遍历完成后, 再执行记录下来的动作。
55: 交换设备判断遍历是否完成, 若没有匹配的通用流表项, 可以执行 56, 否则重复执行 52及其后续步骤。
56: 交换设备将该报文封装到流表请求报文(packet— in ) 中发送给控制 设备, 用以请求控制设备下发与该接收到的报文相匹配的流表项。 之后结束。 其中, 步骤 56并不是普通的通用匹配的处理过程的必选步骤。
通过图 5所示的流程可以看出, 在普通的通用匹配的处理过程中, 需要 遍历通用流表中的流表项, 因此针对每个遍历到的通用流表项, 都需要提取 报文的待匹配的比特域。 但是, 这些通用流表项中可能存在相同的前缀项, 例如, 在上述遍历过程中遍历了 100项通用流表项, 可能其中 20个通用流表 项的前缀项 (offset, size和 mask, 其中 mask为可选)相同, 那么在匹配这 20个通用流表项时, 其实只需要在报文中提取 1次待匹配的比特域, 再分别 与这 20个通用流表项的匹配域的数据参数进行匹配,而在普通的通用匹配的 处理过程中, 在每一次与通用流表项匹配的过程中, 都需要提取一次待匹配 的比特域, 因此需要在报文中提取 20次重复的待匹配的比特域, 这样将会造 成效率低下。 为了提高效率, 本实施例可以在交换设备中建立前缀配置表, 将具有相同前缀项的通用流表项归为一类, 在匹配时, 针对每一类通用流表 项只需要提取一次待匹配的比特域, 再与该类下的每一个通用流表项的匹配 域的数据参数进行匹配, 这样可以降低提取次数。 例如在上述场景下, 本实 施例通过建立前缀配置表, 将这 20 个具有相同前缀项的通用流表项归为一 类, 在提取报文的带匹配字段时可以仅提取 1次, 而不避提取 20次。 示例性 的, 在交换设备上建立前缀配置表可以采用如下流程:
34: 控制设备建立前缀池( prefix pool )。
控制设备在每次下发流表配置消息时, 可以统计其中携带的每个通用流 表项中的前缀项的情况, 根据优先级或者次数等对前缀项进行排列, 建立前 缀池。 例如, 经过统计在第一时间内包含第一前缀项的通用流表项发送了 5 次, 包含第二前缀项的通用流表项发送了 3次, 包含第三前缀项的通用流表 项发送了 1次, 那么建立的前缀池中包括第一前缀项、 第二前缀项和第三前 缀项, 且从前到后的顺序为: 第一前缀项、 第二前缀项和第三前缀项。
其中, 步骤 34是可选的, 下发给交换设备的前缀项也可以通过配置, 或 者与其他设备协商等方式实现, 在此不作限制。 通过统计每个前缀项的使用 情况, 并根据使用情况下发前缀项至交换设备, 可以使交换设备建立更加合 理、 科学的前缀项配置表, 以期进一步提高交换设备的处理效率。
35: 控制设备向交换设备发送前缀符修改(generic prefix modification ) 消息, 其中携带从前缀池中选取的前缀项。
示例性的, 携带的前缀项的个数可以预先设定, 例如, 设定个数为 2个, 那么在上述场景下, 该前缀项配置消息中携带的前缀项为第一前缀项和第二 前缀项。
该前缀项配置消息可以具体用于增加、 修改或删除前缀配置表。
该前缀项配置消息的结构可以如表 1所示:
表 1
也就是说, 前缀项配置消息中可以包括如下字段: header, prefix table id, command和 refix [] , 其中 , header为 OpenFlow消息头; refix table id为前 缀配置表序号; command为命令类型, 例如增加、 修改或删除; prefix[]为前 缀项, 例如, 上述的第一前缀项和第二前缀项, 该前缀项的个数是可变的。
36: 交换设备根据前缀项配置消息建立前缀配置表。
其中, 前缀配置表也可以称为集合或其它名称。
例如,前缀项配置消息中包含的 prefix table id为 idl , prefix[]包括第一前
缀项和第二前缀项, command为增加, 那么交换设备可以建立标识为 idl的 前缀配置表, 该前缀配置表中包括的前缀项为第一前缀项和第二前缀项。 当 然, 可以理解的是, 如果交换设备中已经建立标识为 idl 的前缀配置表, 那 么交换设备可以在已有的前缀配置表中增加第一前缀项和第二前缀项。
37: 在交换设备建立前缀配置表之后, 控制设备和交换设备之间可以采 用优化的通用匹配的处理过程对报文进行处理。
示例性的, 参见图 6, 该优化的通用匹配的处理过程可以包括: 交换设备接收到报文后;
61 : 交换设备从前缀配置表中获取前缀项, 并根据前缀项从报文中提取 出待匹配的比特域;
62: 交换设备将提取出的待匹配的比特域与上述前缀项对应的通用流表 项的匹配域中的数据参数进行比较, 得到匹配结果。
一般来说, 通用流表项中可能存在相同的前缀项, 而建立的前缀配置表 中包含不同的前缀项。
例如,通用流表项中包含 100个前缀项,但可能只有 20个不同的前缀项, 那么建立的前缀配置表中可以包含该 20个不同的前缀项。 因此, 在提取待匹 配的比特域时, 普通的通用匹配的处理过程中需要提取待匹配的比特域 100 次, 而本实施例仅需要提取 20次。 可以提高查找效率。
63 : 交换设备判断匹配是否成功, 若是, 执行 64, 否则可以执行 65。 在匹配时可以以前缀项为索引, 获取对应的通用流表项, 例如, 根据前 缀配置表中的第一前缀项从接收的报文中提取出第一待匹配的比特域, 且第 一通用流表项的匹配域中包括第一前缀项, 那么可以将报文中第一通用字段 的值与第一通用流表项的匹配域中的数据参数(data )进行比较, 如果两者相 同, 则匹配成功, 否则失败。
64: 交换设备根据匹配成功的通用流表项的指令集中动作进行处理。 至 此, 优化的通用匹配的处理过程结束。
若没有通用流表项与该报文匹配, 则可以执行步骤 65。
65: 交换设备将该报文封装到入分组(packet— in )报文中发送给控制设 备。 其中, 步骤 65并不是优化的通用匹配的处理过程的必选步骤。
另外, 交换设备获取通用流表项的流程可以参见图 4, 在此不再贅述。
本实施例通过在交换设备中建立前缀配置表, 交换设备接收到报文后首 先根据该前缀配置表提取待匹配的比特域, 可以实现对报文的预处理, 避免 遍历每个通用流表项时, 每次都提取待匹配的比特域, 可以提高通用流表项 的处理效率。
图 7为本发明实施例提供的另一种报文处理方法的流程示意图, 图 8为 图 7对应的系统结构示意图,本实施中, OpenFlow网络中还包括虚拟层设备, 虚拟层设备可以对转发面资源进行分片, 使得各个相互隔离的具有不同转发 逻辑的网络可以共享同一组物理转发面设备。 虚拟层设备例如为 hypervisor。
参见图 7, 本实施例包括:
71 : 第一控制设备和第二控制设备分别向虚拟层设备发送前缀项配置消 息;
每个控制设备生成及发送前缀项配置消息的具体流程可以参见上述的 34-35 , 在此不再贅述。
另外, 可以理解是, 本实施例的控制设备并不限于两个, 也可以为至少 三个, 当存在至少三个控制设备时也可以采用本实施例类似的原理执行。
72: 虚拟层设备对第一前缀项配置消息和第二前缀项配置消息中的前缀 表进行整合。
其中, 每个控制设备发送的前缀修改消息中可以包含交换设备的信息及 对应的前缀表, 例如, 第一前缀修改消息中包含第一交换设备的信息和第二 交换设备的信息以及第一交换设备的前缀表和第二交换设备的前缀表, 或者 仅包含第一交换设备的信息以及第一交换设备的前缀表, 或者, 仅包含第二 交换设备的信息以及第二交换设备的前缀表, 第二前缀修改消息类似。
虚拟层设备可以根据前缀修改消息中包含的交换设备的信息, 对同一个 交换设备对应的前缀表中相同的前缀项进行合并, 例如, 第一前缀修改消息 中包含的第一交换设备的前缀表包含第一前缀项 (具体为 offsetl和 sizel ), 第二前缀修改消息中包含的第一交换设备的前缀表也包含第一前缀项 (具体 为 offsetl和 sizel ), 那么虚拟层设备可以将该第一前缀项合并, 使得发送给 第一交换设备的该第一前缀项仅为一项, 而不再是两项。
另外, 上述的整合也可以是删除需要丟弃的前缀项, 可以在虚拟层设备 中预先定义需要丟弃的前缀项, 虚拟层设备在接收到前缀修改消息后可以丟
弃其中需要丟弃的前缀项。 例如, 虚拟层设备预先定义需要修改的前缀项为 第二前缀项, 如果接收的第一前缀修改消息和 /或第二前缀修改消息中包含第 二前缀项, 则丟弃该第二前缀项, 也就是整合后的前缀表中不再包含第二前 缀项。
再者, 上述的整合也可以是分片处理。 在由多个交换机构成一个大的转 发网络中, 可以分成多个逻辑区域, 不同的逻辑区域可能有重叠, 不同逻辑 区域的控制设备也可能不一样。 该大的转发网络中的交换机都与虚拟层设备 相连, 不同逻辑区域的控制设备也都与该虚拟层设备相连。 针对重叠区域的 交换机, 重叠区域的控制设备在逻辑上看成是一个交换机, 只发送一条前缀 表修改消息, 当该前缀表修改消息到达虚拟层设备时, 虚拟层设备将其拆分 成多条前缀表修改消息, 分别发送给重叠区域的不同的交换机。
可以理解的是, 上述的整合不限于上述的合并删除或分片处理, 还可以 进行其它处理。
73: 虚拟层设备分别向第一交换设备和第二交换设备发送前缀项配置消 息, 其中分别携带整合后的前缀表。
74: 第一交换设备和第二交换设备接收到前缀修改消息后, 根据其中携 带的整合后的前缀表建立各自的前缀配置表。
75 : 第一交换设备和第二交换设备分别根据各自的前缀配置表进行优化 的通用匹配的处理过程。 73〜75 的具体内容可以参见上述的 36〜37以及图 6 的内容。
本实施例通过在交换设备中建立前缀配置表, 交换设备接收到报文后首 先根据该前缀配置表中的前缀项预先提取报文中待匹配的比特域, 再与前缀 项对应的多个通用流表项的匹配域中的数据参数进行匹配, 可以实现对报文 的待匹配的比特域的预提取, 避免在遍历每个通用流表项时, 都需要提取一 次待匹配的比特域, 因此可以提高通用流表项的处理效率; 另外, 本实施例 在虚拟层设备中进行整合, 可以降低来自不同控制设备的重复的前缀项的个 数或者丟弃需要删除的前缀项, 可以进一步提高交换设备建立的前缀配置表 中前缀项的有效性, 进一步提高查找效率。
上述描述了优化的通用匹配的处理流程, 在一些场景下, 控制设备可以 配置给交换设备通用流表项以及精确流表项, 也就是说, 交换设备既需要进
行精确流表项的匹配也需要进行通用流表项的匹配, 此时, 可以将精确流表 项和通用流表项统称为混合流表项, 对于混合流表项的匹配, 是指精确匹配 与通用匹配混合在一起的匹配, 可以称为混合匹配。 混合流表项的匹配可以 采用合一或分离的方式, 在合一方式下, 一种流表项的匹配作为另一种流表 项的匹配的补充, 在分离方式下, 两种匹配方式独立匹配。 和上面的实施例 类似, 精确流表项的匹配可以称为精确匹配, 通用流表项的匹配可以称为通 用匹配, 在通用匹配中, 采用本发明的思想进行的优化的通用流表项的处理 过程可以称为优化的通用匹配, 反之未采用本发明的思想进行的普通的通用 流表项的处理过程可以称为普通的通用匹配。
可选的, 所述交换设备上还包括与所述前缀项对应的通用流表项对应的 精确流表项, 所述方法还包括:
在所述交换设备根据所述前缀项提取用于匹配的比特域之前, 所述交换 设备将所述报文与所述精确流表项进行匹配, 以便在匹配成功后根据所述前 缀项提取于匹配的比特域; 或者,
所述交换设备将所述比特域的值与所述前缀项对应的通用流表项的匹配 域的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行匹配。
在上述精确匹配和通用匹配时, 可以是遍历每个精确流表项以及每个通 用流表项, 以分别完成精确匹配和通用匹配; 或者, 也可以预先建立每个精 确流表项与每个通用流表项的对应关系, 在一种匹配(精确匹配或通用匹配 ) 成功后, 确定匹配成功的一种流表项 (精确流表项或通用流表项 )对应的另 一种流表项(通用流表项或精确流表项), 根据对应的流表项(通用流表项或 精确流表项 )进行另一种匹配(通用匹配或精确匹配), 而不需要再遍历另一 种匹配的每个流表项。
具体的, 上述的在所述交换设备根据所述前缀项提取用于匹配的比特域 之前, 所述交换设备将所述报文与所述精确流表项进行匹配, 以便在匹配成 功后根据所述前缀项提取于匹配的比特域可以具体包括:
在所述交换设备根据所述前缀项提取用于匹配的比特域之前, 所述交换 设备将所述报文与每个精确流表项依次进行匹配, 以便在匹配成功后再依次 根据每个前缀项提取用于匹配的比特域; 或者,
在所述交换设备根据所述前缀项提取用于匹配的比特域之前, 所述交换
设备将所述报文与每个精确流表项依次进行匹配, 以便在匹配成功后根据与 匹配成功的精确流表项对应的通用流表项中包括的前缀项提取用于匹配的比 特域。
上述的所述交换设备将所述比特域的值与所述前缀项对应的通用流表项 的匹配域的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行匹 配可以具体包括:
所述交换设备将所述比特域的值与所述前缀项对应的通用流表项的匹配 域的数据参数进行匹配成功后,将所述报文依次与每个精确流表项进行匹配; 或者,
所述交换设备将所述比特域的值与所述前缀项对应的通用流表项的匹配 域的数据参数进行匹配成功后, 将所述报文与匹配成功的通用流表项对应的
^"确流表项进行匹配。
具体可以参见后续实施例。
图 9为本发明实施例提供的另一种报文处理方法的流程示意图, 本实施 例以合一方式下的混合匹配为例进行说明。 本实施例包括:
91 : 交换设备向控制设备发送流表项请求报文。
其中, 流表项请求报文可以是 packet— in消息。
交换设备在接收到报文后, 如果本身不存在对应的流表项, 则可以将该 报文封装到中发送给控制设备以请求新的流表项。
92: 控制设备向交换设备发送流表项配置消息, 包含精确流表项和通用 流表项。
其中, 流表项配置消息可以用于增加、修改或删除交换设备上的流表项。 示例性的, 交换设备上可以预先配置好前缀配置表, 若没有配置也可以 通过前缀符配置消息来配置。
可选的, 该方法还可以包括:
93 : 控制设备向交换设备发送前缀符修改消息, 以便交换设备根据前缀 修改消息建立前缀配置表。
控制设备生成以及发送前缀修改消息的具体内容, 以及交换设备建立前 缀配置表的具体内容可以参见图 3中的相应步骤。
至此, 交换设备可以进行混合匹配的处理。
94: 交换设备对报文进行混合匹配。
交换设备以合一的方式对报文进行混合匹配的处理的流程可以参见图 10, 包括:
101 : 交换设备通过网络端口接收报文;
102: 交换设备根据精确流表项从报文中提取匹配字段, 并将匹配字段与 精确流表项进行匹配。 其中, 在报文中事先定义好的字段可以称为匹配字段, 例如目的 IP, 源 IP等等。
例如, 根据协议规定的设定个数的匹配字段, 在报文中提取出相应设定 个数的匹配字段, 该匹配字段包括源 IP、 目的 IP地址等多个字段。 之后再将 提取的匹配字段的数值与精确流表项中相应字段的数值进行比较, 如果两者 相同则匹配成功, 否则失败。 当然, 上述匹配方式也是一种示例, 在具体精 确匹配时还可以采用 mask进行掩码等。
103: 交换设备判断精确匹配是否成功,若是,执行 104,否则,执行 108。 104: 交换设备从前缀配置表中获取前缀项, 并根据前缀项从报文中提取 出待匹配的比特域; 示例性的, 这里获取的前缀项可以有一个或多个
105: 交换设备将提取出的待匹配的比特域与前缀项对应的通用流表项的 匹配域中的数据参数进行比较, 得到通用匹配结果。
106: 交换设备判断通用匹配是否成功, 若是, 执行 107, 否则执行 108。 107: 交换设备根据匹配成功的通用流表项的指令集中动作进行处理。 至此, 合一方式的混合匹配的处理可以视为完成。
若, 交换设备上不存在与接收到的报文相匹配的流表项时, 交换设备还 可以向控制设备请求与该报文相匹配的流表项, 如步骤 108所示。
108: 交换设备将该报文封装到流表请求报文(例如: packet— in ) 中发送 给控制设备, 以请求控制设备下发与该报文相匹配的流表项。
本实施例中, 当以合一方式进行混合匹配时, 可以先判断精确匹配是否 成功, 在精确匹配成功时还需要判断通用匹配是否成功, 只有在精确匹配和 通用匹配都成功时才执行相应的动作。
可以理解的是, 图 10是先进行精确匹配再进行通用匹配, 也可以是, 先 进行通用匹配, 在通用匹配成功时再进行精确匹配及处理。
另夕卜, 图 10所示的实施例中, 在通用匹配时先通过前缀项提取待匹配的
比特域, 也可以是在精确匹配成功后采用普通的通用匹配流程, 此时就不需 要建立前缀配置表。
参见图 11 , 在混合流表的场景下本发明还提供一种实施例包括:
111 : 交换设备根据第一流表项对接收的报文进行第一匹配;
112: 所述交换设备在第一匹配成功后, 根据第二流表项对所述报文进行 第二匹配;
示例性的, 所述第一流表项为精确流表项, 所述第一匹配为精确匹配, 所述第二流表项为通用流表项, 所述第二匹配为通用匹配; 或者, 所述第一 流表项为通用流表, 所述第一匹配为通用匹配, 所述第二流表项为精确流表, 所述第二匹配为精确匹配。
可选的, 当第一流表项为通用流表项时, 在通用匹配时也可以首先根据 前缀配置表中前缀项从报文中提取出待匹配的比特域, 在采用该待匹配的比 特域与通用流表项进行匹配。 而具体的建立前缀配置表、 提取通用字段以及 匹配的具体内容可以参见上述实施例。
本实施例通过在一种匹配成功后再进行另一种匹配, 可以在混合流表场 景下完成报文匹配处理, 提高处理效率。
图 12为本发明实施例提供的另一种流表处理方法的流程示意图,本实施 例以混合流表为分离方式为例。 本实施例包括:
121 : 交换设备向控制设备发送流表项请求报文(例如: packet— in )。 交换设备在接收到第一报文后, 如果在交换设备上不存在对应的流表, 则可以将该第一报文封装到流表项请求报文中发送给控制设备以请求与该第 一才艮文对应的流表项。
122: 控制设备向交换设备发送流表项配置消息, 包含精确流表项和通用 流表项以及匹配方式。
示例性的, 流表项配置消息可以用于增加、 修改或删除交换设备上的流 表项。
匹配方式(match type ) 包括: 仅精确匹配、 仅通用匹配、 合一方式的混 合匹配, 分离方式的混合匹配。 可以用不同的数值表示匹配方式, 以便交换 设备根据该数值获知匹配方式, 例如, 用 00 表示仅精确匹配 (only exact match ), 用 01表示仅通用匹配 ( only generic match ), 用 10表示合一方式的
混合匹配( multiple match ), 用 11标识分离方式的混合匹配。
至此, 交换设备可以获取了精确流表项和通用流表项, 交换设备还可以 获知需要进行哪种匹配。
可选的, 该方法还可以包括:
123: 控制设备向交换设备发送前缀符配置消息, 以便交换设备根据前缀 符配置消息中的前缀项建立前缀配置表。
控制设备生成以及发送前缀符配置消息的具体内容以及交换设备建立前 缀配置表的具体内容可以参见图 3中的相应步骤。
124: 交换设备根据流表项配置消息, 建立混合流表项, 该混合流表项包 括通用流表项和精确流表项以及映射表, 该映射表用于表明精确流表项与通 用流表项的对应关系。
参见图 13 , 交换设备在建立每个通用流表项时, 插入对应的精确流表项 的索引, 例如, 建立的通用流表项 #1对应的精确流表项的索引为索引 #1 ; 在 建立每个精确流表项时, 插入对应的通用流表项的索引, 例如, 建立的精确 流表项 #1对应的通用流表项索引为索引 #1。
125: 交换设备根据混合流表项对报文进行处理。 即对报文进行混合匹配 的处理。
交换设备根据混合流表项对报文进行处理的流程可以参见图 14, 包括: 1401 : 交换设备通过网络端口接收报文;
1402: 交换设备根据精确流表项从报文中提取匹配字段, 并将匹配字段 与精确流表项进行匹配。 其中匹配字段的说明可以参见图 10所示的实施例, 此处不做贅述。
例如, 精确流表项表明要匹配的字段为源 IP地址, 那么可以在报文中直 接提取出源 IP地址, 并将该报文的源 IP地址的数值与精确流表项中的源 IP 地址的数值进行比较, 如果两者相同则匹配成功否则失败。
1403: 交换设备判断是否需要进行通用匹配, 若是, 执行 1405, 否则执 行 1404。
交换设备可以根据匹配方式进行判断。 匹配方式的说明可以参照图 12所 示的实施例, 此处不做赞述。
1404: 交换设备处理匹配的精确流表项的指令集中的动作。
示例性的, 与报文相匹配的精确流表项可以是一个, 也可以多个, 在多 个的情况下, 交换设备可以依次执行匹配的精确流表项的指令集中的动作, 也可以按照动作的优先级执行匹配的精确流表项的指令集中的动作, 也可以 只执行匹配的精确流表项的指令集中的优先级最高的动作。 本发明其他实施 例中关于交换设备处理匹配的精确流表项的指令集中的动作的说明与本实施 例类似。
示例性的, 如果精确匹配失败, 可以向控制设备发送流表项请求
( packet— in ) 消息。
1405: 交换设备根据匹配的精确流表项确定对应的通用流表项。
例如, 在根据精确流表项对报文进行提取及匹配的精确流表项为精确流 表项 #1 , 再根据精确流表项与通用流表项的映射关系, 如精确流表项 #中插入 的通用流表项的索引为索引 #1 , 那么确定出的通用流表项为索引 #1的通用流 表项。 这里确定出的通用流表项可以是一个, 也可以是多个。 1406: 交换设 备根据该对应的通用流表项, 从报文中提取待匹配的比特域。
例如, 索引 #1 的通用流表项的匹配域中会包含前缀项 (offset, size 和 mask ) , 根据该 offset、 size和 mask从才艮文中提取出对应的待匹配的比特域。
示例性的, 若索引 #1的通用流表项为多个, 采用普通的通用匹配需要为 每一个对应的通用流表项提取待匹配的比特域。 若索引 #1的多个通用流表项 中有部分通用流表项的匹配域中的前缀项相同,也可以采用优化的通用匹配, 只为前缀项相同的多个通用流表项提取一次待匹配的比特域。
1407: 交换设备将提取出的待匹配的比特域与该通用流表项中匹配域的 数据参数进行比较, 得到通用匹配结果。
例如, 根据索引 #1的通用流表项提取的待匹配的比特域为第一比特域, 之后将该第一比特域与索引 #1 的通用流表项的匹配域中的数据参数 ( data ) 进行比较, 如果两者数值相同则通用匹配成功, 否则通用匹配失败。
1408:交换设备判断通用匹配是否成功,若是,执行 1409,否则执行 1410。 示例性的, 在有多个通用流表项的情况下, 只要其中有一个通用流表项 可以匹配即可认为通用匹配成功。
1409: 交换设备根据该通用流表项的指令集中动作进行处理。
示例性的, 如前所述与 4艮文相匹配的通用流表项可以是一个, 也可以多
个, 在多个的情况下, 交换设备可以依次执行匹配的通用流表项的指令集中 的动作,也可以按照动作的优先级执行匹配的通用流表项的指令集中的动作, 也可以只执行匹配的通用流表项的指令集中的优先级最高的动作。 本发明其 他实施例中关于交换设备处理匹配的通用流表项的指令集中的动作的说明与 本实施例类似。
若没有通用流表项与交换设备接收到的报文相匹配, 交换设备可以结束 流程, 也可以向控制设备请求与该报文匹配的流表项。 例如: 可以参考步骤
1410。
1410: 交换设备将该报文封装到流表请求(packet— in ) 消息中发送给控 制设备。
可以理解的是, 图 14是先进行精确匹配再确定是否进行通用匹配, 在需 要通用匹配时根据匹配到的精确匹配项对应的通用匹配项进行处理, 也可以 是, 先进行通用匹配再确定是否进行精确匹配, 在需要精确匹配时根据匹配 到的通用匹配项对应的精确匹配项进行处理。
另外, 在先进行通用匹配时可以是先根据前缀配置表对报文进行通用字 段提取再与通用流表的各通用流表项进行匹配。 此处不做贅述, 请参考前述 相关的实施例。
参见图 15 , 在混合流表的场景下本发明还提供一种实施例包括:
151 : 交换设备根据第一流表项对接收的报文进行第一匹配;
152: 所述交换设备根据接收的匹配方式确定需要进行第二匹配后, 根据 预先建立的对应关系确定第一匹配时采用的第一流表项对应的第二流表项, 并采用所述对应的第二流表项对所述报文进行第二匹配;
其中, 所述第一流表项为精确流表项, 所述第一匹配为精确匹配, 所述 第二流表项为通用流表项, 所述第二匹配为通用匹配; 或者, 所述第一流表 项为通用流表项, 所述第一匹配项为通用匹配项, 所述第二流表项为精确流 表项, 所述第二匹配为精确匹配。
上述的预先建立的对应关系就是如图 13 所示的通用流表项与精确流表 项的映射关系, 具体建立的流程可以参见上述实施例。
可选的, 当第一流表项为通用流表项时, 在通用匹配时也可以首先根据 前缀配置表中前缀项从报文中提取出待匹配的比特域, 在采用该通用字段与
通用流表项进行匹配。 而具体的建立前缀配置表、 提取待匹配的比特域以及 匹配的具体内容可以参见上述相关实施例。
本实施例通过在混合流表时建立精确流表项与通用流表项的映射关系, 可以保证通用流表和精确流表之间的唯一性,提高了通用流处理的应用价值。
图 16为本发明实施例提供的另一种报文处理方法的流程示意图, 包括: 161 : 交换设备接收报文, 其中所述交换设备上有以前缀项为索引建立的 所述前缀项和通用流表项的对应关系 , 所述前缀项对应的通用流表项的匹配 域包括所述前缀项;
162: 所述交换设备根据前缀项提取所述报文中用于匹配的比特域; 163:所述交换设备将所述比特域的值与所述前缀项对应的通用流表项的 匹配域的数据参数进行匹配。
可选的, 所述交换设备上还有和所述通用流表项对应的精确流表项, 所 述方法还包括:
在所述交换设备根据前缀项提取所述报文中用于匹配的比特域之前, 所 述交换设备将所述报文与所述精确流表项进行匹配, 以便在匹配成功后根据 所述前缀项提取所述 ^艮文中用于匹配的比特域; 或者,
所述交换设备在将所述比特域的值与所述前缀项对应的通用流表项的匹 配域的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行匹配。
图 17为本发明实施例提供的另一种报文处理方法的流程示意图, 包括:
171 :控制设备生成前缀项配置消息,所述前缀项配置消息中包括前缀项;
172: 所述控制设备向交换设备发送所述前缀项配置消息, 以便所述交换 设备以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流表项 的对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项。
其中, 前缀项配置消息中包括的前缀项和通用流表项的匹配域包括的前 缀项的数据结构可以不同, 但承载的内容相同。
可选的, 该方法还包括:
所述控制设备向所述交换设备发送特征请求消息, 并接收所述交换设备 发送的特征回复消息, 所述特征回复消息中携带所述交换设备支持的匹配类 型;
所述控制设备根据所述交换设备支持的匹配类型确定所述交换设备支持
通用匹配。
可选的, 所述控制设备向交换设备发送所述前缀项配置消息, 包括: 所述控制设备发送多条所述前缀项配置消息至虚拟层设备, 以使所述虚 拟层设备整合所述多条前缀项配置消息, 并将整合后的前缀项配置消息发送 至所述交换设备。
可选的, 该方法还包括:
所述控制设备在下发通用流表项至所述交换设备的情况下, 对所述下发 的通用流表项对应的前缀项进行统计;
所述控制设备根据统计结果确定所述前缀项配置消息中包含的前缀项。 本实施例通过控制设备向交换设备发送前缀项, 可以使得交换设备接收 到报文后首先根据该前缀项从报文中提取通用字段, 可以实现对报文的预处 理, 避免遍历每个通用流表项, 可以提高查找效率。
图 18为本发明实施例提供的一种交换设备的结构示意图,该设备 180包 括通信单元 181、 处理器 182和存储器 183。
所述存储器 183 , 用于存储以前缀项为索引建立的所述前缀项和通用流 表项的对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前 缀项;
所述通信单元 181 , 用于接收报文;
所述处理器 182, 用于根据所述前缀项获取所述报文中用于匹配的比特 域, 将所述比特域的值与所述前缀项对应的通用流表项的匹配域的数据参数 进行匹配。
可选的, 所述存储器 183还用于存储和所述通用流表项对应的精确流表 项; 所述处理器 182用于将所述比特域的值与所述前缀项对应的通用流表项 的匹配域的数据参数进行匹配, 包括: 所述处理器 182用于将所述 文与所 述精确 文进行匹配, 匹配成功后, 将所述比特域的值与所述前缀项对应的 通用流表项的匹配域的数据参数进行匹配。
可选的, 所述存储器 183还用于存储和所述通用流表项对应的精确流表 项; 所述处理器还用于在所述比特域的值与所述前缀项对应的通用流表项的 匹配域的数据参数进行匹配成功的情况下, 将所述报文与所述精确流表项进 行匹配。
可选的, 所述处理器 182还用于以所述前缀项为索引, 建立所述前缀项 与所述通用流表项的对应关系 .
可选的,所述通信单元 181还用于接收控制设备发送的前缀项配置消息, 所述前缀项配置消息包括所述前缀项。
所述通信单元 181还用于接收所述控制设备发送的特征请求消息, 并发 送特征回复消息至所述控制设备, 其中, 所述特征回复消息指示所述交换设 备支持通用匹配, 以便所述控制设备根据所述特征回复消息发送所述前缀项 配置消息。
作为另一种可选的实施方式, 交换设备可以包括:
存储单元, 用于存储以前缀项为索引建立的所述前缀项和通用流表项的 对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项; 接收单元, 用于接收报文;
获取单元, 用于根据所述前缀项获取所述报文中用于匹配的比特域; 第一匹配单元, 用于将所述比特域的值与所述前缀项对应的通用流表项 的匹配域的数据参数进行匹配。
可选的,所述存储单元还用于存储和所述通用流表项对应的精确流表项; 所述交换设备还包括第二匹配单元; 所述第二匹配单元, 用于在将所述报文 与所述精确流表项进行匹配; 其中, 所述第一匹配单元, 具体用于当所述第 二匹配单元匹配成功的情况下, 将所述比特域的值与所述前缀项对应的通用 流表项的匹配域的数据参数进行匹配。
可选的,所述存储单元还用于存储和所述通用流表项对应的精确流表项; 所述交换设备还包括第三匹配单元; 所述第三匹配单元, 用于在所述第一匹 配单元匹配成功的情况下, 将所述报文与所述精确流表项进行匹配。
可选的, 交换设备还包括建立单元, 所述建立单元, 用于以所述前缀项 为索引, 建立所述前缀项与所述通用流表项的对应关系。
可选的, 所述接收单元还用于接收控制设备发送的前缀项配置消息, 所 述前缀项配置消息包括所述前缀项。
可选的, 所述接收单元, 还用于接收所述控制设备发送的特征请求消息; 所述交换设备还包括发送单元, 用于发送特征回复消息至所述控制设备, 其 中, 所述特征回复消息指示所述交换设备支持通用匹配, 以便所述控制设备
根据所述特征回复消息发送所述前缀项配置消息。
本实施例通过交换设备接收控制设备发送的前缀项, 可以在交换设备上 建立前缀项和通用流表项的对应关系, 在交换设备接收到报文后首先根据该 前缀项从报文中提取待匹配的比特域, 再依次与该前缀项对应的通用流表项 的匹配域中的数据参数进行匹配, 从而避免了对每个通用流表项都需要提取 一次待匹配的比特域, 可以提高通用流表项的处理效率。
图 19为本发明实施例提供的一种控制设备的结构示意图,该设备 190包 括处理器 191 , 通信单元 192。
所述处理器 191用于生成前缀项配置消息, 所述前缀项配置消息中包括 前缀项;
所述通信单元 192用于向交换设备发送所述前缀项配置消息, 以便所述 交换设备以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流 表项的对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前 缀项。
可选的, 所述处理器 191还用于在下发通用流表项至所述交换设备的情 况下, 对所述下发的通用流表项对应的前缀项进行统计, 根据统计结果确定 所述前缀项配置消息中包含的前缀项。
可选的, 所述通信单元 192具体用于发送多条所述前缀项配置消息至虚 拟层设备, 以使所述虚拟层设备整合所述多条前缀项配置消息, 并将整合后 的前缀项配置消息发送至所述交换设备。
可选的, 所述通信单元 192还用于向所述交换设备发送特征请求消息, 接收所述交换设备发送的特征回复消息, 所述特征回复消息中携带所述交换 设备支持的匹配类型; 所述处理器 191还用于根据所述交换设备支持的匹配 类型确定所述交换设备支持通用匹配。
作为一种可选的实施方式, 控制设备可以包括:
生成单元, 用于生成前缀项配置消息, 所述前缀项配置消息中包括前缀 项;
发送单元, 用于向交换设备发送所述前缀项配置消息, 以便所述交换设 备以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流表项的 对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项。
可选的, 控制设备还包括统计单元, 用于在下发通用流表项至所述交换 设备的情况下, 对所述下发的通用流表项对应的前缀项进行统计; 确定单元, 用于根据统计结果确定所述前缀项配置消息中包含的前缀项。
可选的, 所述发送单元具体用于发送多条所述前缀项配置消息至虚拟层 设备, 以使所述虚拟层设备整合所述多条前缀项配置消息, 并将整合后的前 缀项配置消息发送至所述交换设备。
可选的, 所述发送单元还用于向所述交换设备发送特征请求消息; 所述 控制设备还包括接收单元和能力确定单元; 所述接收单元, 用于接收所述交 换设备发送的特征回复消息, 所述特征回复消息中携带所述交换设备支持的 匹配类型; 所述能力确定单元, 用于根据所述交换设备支持的匹配类型确定 所述交换设备支持通用匹配。
本实施例通过控制设备向交换设备发送前缀项, 可以使得交换设备建立 前缀项和通用流表项的对应关系, 在交换设备接收到报文后首先根据该前缀 项从报文中提取待匹配的比特域, 再依次与该前缀项对应的通用流表项的匹 配域中的数据参数进行匹配, 从而避免了对每个通用流表项都需要提取一次 待匹配的比特域, 可以提高通用流表项的处理效率。
图 20 为本发明实施例提供的一种报文处理系统的结构示意图, 该系统 200包括交换设备 201和控制设备 202; 交换设备 201可以具体如图 18中直 接与控制设备进行通信时的描述,控制设备 202可以具体如图 19中直接与交 换设备通信时的描述。 或者, 参见图 21 , 该系统还可以包括虚拟层设备 203 , 此时,交换设备 201可以具体如图 18中通过虚拟层设备与控制设备进行通信 的描述,控制设备 202可以具体如图 19中通过虚拟层设备与交换设备通信时 的描述, 虚拟层设备 203用于接收所述控制设备 202发送的多条所述前缀项 配置消息, 以及整合所述多条前缀项配置消息, 并将整合后的前缀项配置消 息发送至所述交换设备 201。
本实施例通过控制设备向交换设备发送前缀项, 可以使得交换设备建立 前缀项和通用流表项的对应关系, 在交换设备接收到报文后首先根据该前缀 项从报文中提取待匹配的比特域, 再依次与该前缀项对应的通用流表项的匹 配域中的数据参数进行匹配, 从而避免了对每个通用流表项都需要提取一次 待匹配的比特域, 可以提高通用流表项的处理效率。
所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 仅以上 述各功能模块的划分进行举例说明, 实际应用中, 可以根据需要而将上述功 能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块, 以完成以上描述的全部或者部分功能。 上述描述的系统, 装置和单元的具体 工作过程, 可以参考前述方法实施例中的对应过程, 在此不再贅述。
在本申请所提供的几个实施例中, 应该理解到, 所揭露的系统, 装置和 方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示 意性的, 例如, 所述模块或单元的划分, 仅仅为一种逻辑功能划分, 实际实 现时可以有另外的划分方式, 例如多个单元或组件可以结合或者可以集成到 另一个系统, 或一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的相 互之间的耦合或直接耦合或通信连接可以是通过一些接口, 装置或单元的间 接耦合或通信连接, 可以是电性, 机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的, 作 为单元显示的部件可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一个单 元中。 上述集成的单元既可以采用硬件的形式实现, 也可以采用软件功能单 元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售 或使用时, 可以存储在一个计算机可读取存储介质中。 基于这样的理解, 本 申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 全部或部分可以以软件产品的形式体现出来, 该计算机软件产品存储在一个 存储介质中, 包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器, 或者网络设备等)或处理器(processor )执行本申请各个实施例所 述方法的全部或部分步骤。 而前述的存储介质包括: U盘、 移动硬盘、 只读 存储器(ROM, Read-Only Memory ),随机存取存储器(RAM, Random Access Memory )、 磁碟或者光盘等各种可以存储程序代码的介质。
以上所述, 以上实施例仅用以说明本申请的技术方案, 而非对其限制;
尽管参照前述实施例对本申请进行了详细的说明, 本领域的普通技术人员应 当理解: 其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其 中部分技术特征进行等同替换; 而这些修改或者替换, 并不使相应技术方案 的本质脱离本申请各实施例技术方案的精神和范围。
Claims (1)
- 权 利 要求 书1、 一种 文处理方法, 其特征在于, 包括:交换设备接收报文, 其中所述交换设备上有以前缀项为索引建立的所述 前缀项和通用流表项的对应关系 , 所述前缀项对应的通用流表项的匹配域包 括所述前缀项;所述交换设备根据所述前缀项获取所述报文中用于匹配的比特域; 所述交换设备将所述比特域的值与所述前缀项对应的通用流表项的匹配 域的数据参数进行匹配。2、 根据权利要求 1所述的方法, 其特征在于, 所述交换设备上还有和所 述通用流表项对应的精确流表项, 所述方法还包括:所述交换设备将所述报文与所述精确流表项进行匹配, 以便在匹配成功 后根据所述前缀项获取所述报文中用于匹配的比特域; 或者,所述交换设备在将所述比特域的值与所述前缀项对应的通用流表项的匹 配域的数据参数进行匹配成功后, 将所述报文与所述精确流表项进行匹配。3、 根据权利要求 1或 2所述的方法, 其特征在于, 还包括:所述交换设备以所述前缀项为索引, 建立所述前缀项与所述交换设备上 的通用流表项的对应关系。4、 根据权利要求 3所述的方法, 其特征在于, 在所述交换设备以所述前 缀项为索引, 建立所述前缀符与所述交换设备上的通用流表项的对应关系之 前, 还包括:所述交换设备接收控制设备发送的前缀项配置消息, 所述前缀项配置消 息包括所述前缀项。5、 根据权利要求 4所述的方法, 其特征在于, 还包括:所述交换设备接收所述控制设备发送的特征请求消息;所述交换设备发送特征回复消息至所述控制设备, 其中, 所述特征回复 消息指示所述交换设备支持通用匹配, 以便所述控制设备根据所述特征回复 消息发送所述前缀项配置消息。6、 一种 文处理方法, 其特征在于, 包括:控制设备生成前缀项配置消息, 所述前缀项配置消息中包括前缀项; 所述控制设备向交换设备发送所述前缀项配置消息, 以便所述交换设备 以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流表项的对 应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项。7、 根据权利要求 6所述的方法, 其特征在于, 还包括:所述控制设备在下发通用流表项至所述交换设备的情况下, 对所述下发 的通用流表项对应的前缀项进行统计;所述控制设备根据统计结果确定所述前缀项配置消息中包含的前缀项。8、 根据权利要求 6或 7所述的方法, 其特征在于, 所述控制设备向交换 设备发送所述前缀项配置消息, 包括:所述控制设备发送多条所述前缀项配置消息至虚拟层设备, 以使所述虚 拟层设备整合所述多条前缀项配置消息, 并将整合后的前缀项配置消息发送 至所述交换设备。9、 根据权利要求 6-8任一所述的方法, 其特征在于, 还包括: 所述控制设备向所述交换设备发送特征请求消息, 并接收所述交换设备 发送的特征回复消息, 所述特征回复消息中携带所述交换设备支持的匹配类 型;所述控制设备根据所述交换设备支持的匹配类型确定所述交换设备支持 通用匹配。10、 一种交换设备, 其特征在于, 包括:存储单元, 用于存储以前缀项为索引建立的所述前缀项和通用流表项的 对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项; 接收单元, 用于接收报文;获取单元, 用于根据所述前缀项获取所述报文中用于匹配的比特域; 第一匹配单元, 用于将所述比特域的值与所述前缀项对应的通用流表项 的匹配域的数据参数进行匹配。11、 根据权利要求 10所述的交换设备, 其特征在于,所述存储单元还用于存储和所述通用流表项对应的精确流表项; 所述交换设备还包括第二匹配单元;所述第二匹配单元, 用于在将所述 ^艮文与所述精确流表项进行匹配; 其 中, 所述第一匹配单元, 具体用于当所述第二匹配单元匹配成功的情况下, 将所述比特域的值与所述前缀项对应的通用流表项的匹配域的数据参数进行 匹配。12、 根据权利要求 10所述的交换设备, 其特征在于,所述存储单元还用于存储和所述通用流表项对应的精确流表项; 所述交换设备还包括第三匹配单元;所述第三匹配单元, 用于在所述第一匹配单元匹配成功的情况下, 将所 述报文与所述精确流表项进行匹配。13、 根据权利要求 10-12任一所述的交换设备, 其特征在于, 还包括建 立单元, 所述建立单元, 用于以所述前缀项为索引, 建立所述前缀项与所述 通用流表项的对应关系。14、 根据权利要求 10-13任一所述的交换设备, 其特征在于,所述接收单元还用于接收控制设备发送的前缀项配置消息, 所述前缀项 配置消息包括所述前缀项。15、 根据权利要求 14所述的交换设备, 其特征在于,所述接收单元, 还用于接收所述控制设备发送的特征请求消息; 所述交换设备还包括发送单元,用于发送特征回复消息至所述控制设备, 其中, 所述特征回复消息指示所述交换设备支持通用匹配, 以便所述控制设 备根据所述特征回复消息发送所述前缀项配置消息。16、 一种控制设备, 其特征在于, 包括:生成单元, 用于生成前缀项配置消息, 所述前缀项配置消息中包括前缀 项;发送单元, 用于向交换设备发送所述前缀项配置消息, 以便所述交换设 备以所述前缀项为索引, 建立所述前缀项与所述交换设备上的通用流表项的 对应关系, 其中, 所述前缀项对应的通用流表项的匹配域包括所述前缀项。17、 根据权利要求 16所述的控制设备, 其特征在于, 还包括:统计单元, 用于在下发通用流表项至所述交换设备的情况下, 对所述下 发的通用流表项对应的前缀项进行统计;确定单元,用于根据统计结果确定所述前缀项配置消息中包含的前缀项。18、 根据权利要求 16或 17所述的控制设备, 其特征在于, 所述发送单 元具体用于发送多条所述前缀项配置消息至虚拟层设备, 以使所述虚拟层设 备整合所述多条前缀项配置消息, 并将整合后的前缀项配置消息发送至所述 交换设备。19、 根据权利要求 16-18任一所述的控制设备, 其特征在于,所述发送单元还用于向所述交换设备发送特征请求消息;所述控制设备还包括接收单元和能力确定单元;所述接收单元, 用于接收所述交换设备发送的特征回复消息, 所述特征 回复消息中携带所述交换设备支持的匹配类型;所述能力确定单元, 用于根据所述交换设备支持的匹配类型确定所述交 换设备支持通用匹配。20、 一种报文处理系统, 包括如权利要求 10-15任一所述的交换设备和 如权利要求 16-19任一所述的控制设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810156571.2A CN108173763B (zh) | 2013-08-28 | 2013-08-28 | 报文处理方法、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/082430 WO2015027401A1 (zh) | 2013-08-28 | 2013-08-28 | 报文处理方法、设备及系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810156571.2A Division CN108173763B (zh) | 2013-08-28 | 2013-08-28 | 报文处理方法、设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104584492A true CN104584492A (zh) | 2015-04-29 |
CN104584492B CN104584492B (zh) | 2018-03-13 |
Family
ID=52585383
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380001132.XA Active CN104584492B (zh) | 2013-08-28 | 2013-08-28 | 报文处理方法、设备及系统 |
CN201810156571.2A Active CN108173763B (zh) | 2013-08-28 | 2013-08-28 | 报文处理方法、设备及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810156571.2A Active CN108173763B (zh) | 2013-08-28 | 2013-08-28 | 报文处理方法、设备及系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10057392B2 (zh) |
EP (1) | EP3029894B1 (zh) |
CN (2) | CN104584492B (zh) |
WO (1) | WO2015027401A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108173763A (zh) * | 2013-08-28 | 2018-06-15 | 华为技术有限公司 | 报文处理方法、设备及系统 |
CN110442570A (zh) * | 2019-06-06 | 2019-11-12 | 北京左江科技股份有限公司 | 一种BitMap高速模糊查找方法 |
CN117354237A (zh) * | 2023-11-03 | 2024-01-05 | 中科驭数(北京)科技有限公司 | 网络流表操作处理方法、装置、电子设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016131422A1 (en) * | 2015-02-17 | 2016-08-25 | Hangzhou H3C Technologies Co., Ltd. | Flow entry generating and packet processing based on flow entry |
WO2017105452A1 (en) * | 2015-12-17 | 2017-06-22 | Hewlett Packard Enterprise Development Lp | Reduced orthogonal network policy set selection |
CN109815263B (zh) * | 2019-01-04 | 2021-10-26 | 烽火通信科技股份有限公司 | 一种模糊查找的数据流识别方法及系统 |
CN113923303B (zh) * | 2020-07-10 | 2024-06-28 | 中国电信股份有限公司 | 平台号码传递方法、主叫侧处理装置和被叫侧处理装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070008888A1 (en) * | 2005-06-28 | 2007-01-11 | Shuchi Chawla | Direct lookup tables and extensions thereto for packet classification |
CN101072034A (zh) * | 2007-06-12 | 2007-11-14 | 华为技术有限公司 | 一种变长解码方法及其装置 |
CN101272386A (zh) * | 2007-03-23 | 2008-09-24 | 凹凸电子(武汉)有限公司 | 一种前缀匹配算法 |
CN101505279A (zh) * | 2009-03-20 | 2009-08-12 | 中国人民解放军信息工程大学 | 一种路由查找方法和装置 |
CN102377664A (zh) * | 2010-08-27 | 2012-03-14 | 武汉烽火网络有限责任公司 | 一种基于tcam的区域匹配装置和方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7466703B1 (en) * | 1998-05-01 | 2008-12-16 | Alcatel-Lucent Usa Inc. | Scalable high speed router apparatus |
US6154446A (en) * | 1998-07-08 | 2000-11-28 | Broadcom Corporation | Network switching architecture utilizing cell based and packet based per class-of-service head-of-line blocking prevention |
WO2002019624A2 (en) * | 2000-08-31 | 2002-03-07 | The Regents Of The University Of California | Cluster-based aggregated switching technique (cast) for routing data packets and information objects in computer networks |
US7085281B2 (en) * | 2000-10-26 | 2006-08-01 | Wave7 Optics, Inc. | Method and system for processing upstream packets of an optical network |
US7219184B2 (en) * | 2002-12-10 | 2007-05-15 | Isic Corporation | Method and apparatus for longest prefix matching in processing a forwarding information database |
KR100481806B1 (ko) * | 2004-07-03 | 2005-04-11 | 오토윈주식회사 | 창을 이용한 실내 공기질 개선방법 및 장치 |
US7555594B2 (en) * | 2004-07-22 | 2009-06-30 | Netlogic Microsystems, Inc. | Range representation in a content addressable memory (CAM) using an improved encoding scheme |
US7957332B1 (en) * | 2006-11-15 | 2011-06-07 | Marvell International Ltd. | Memory efficient filtering |
US8644149B2 (en) * | 2011-11-22 | 2014-02-04 | Telefonaktiebolaget L M Ericsson (Publ) | Mechanism for packet forwarding using switch pools in flow-based, split-architecture networks |
US8521905B2 (en) * | 2011-12-22 | 2013-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | System for flexible and extensible flow processing in software-defined networks |
US8886827B2 (en) * | 2012-02-13 | 2014-11-11 | Juniper Networks, Inc. | Flow cache mechanism for performing packet flow lookups in a network device |
US8799507B2 (en) * | 2012-03-13 | 2014-08-05 | Juniper Networks, Inc. | Longest prefix match searches with variable numbers of prefixes |
CN104584492B (zh) * | 2013-08-28 | 2018-03-13 | 华为技术有限公司 | 报文处理方法、设备及系统 |
-
2013
- 2013-08-28 CN CN201380001132.XA patent/CN104584492B/zh active Active
- 2013-08-28 EP EP13892621.7A patent/EP3029894B1/en active Active
- 2013-08-28 WO PCT/CN2013/082430 patent/WO2015027401A1/zh active Application Filing
- 2013-08-28 CN CN201810156571.2A patent/CN108173763B/zh active Active
-
2016
- 2016-02-26 US US15/054,265 patent/US10057392B2/en active Active
-
2018
- 2018-07-31 US US16/050,434 patent/US10749997B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070008888A1 (en) * | 2005-06-28 | 2007-01-11 | Shuchi Chawla | Direct lookup tables and extensions thereto for packet classification |
CN101272386A (zh) * | 2007-03-23 | 2008-09-24 | 凹凸电子(武汉)有限公司 | 一种前缀匹配算法 |
CN101072034A (zh) * | 2007-06-12 | 2007-11-14 | 华为技术有限公司 | 一种变长解码方法及其装置 |
CN101505279A (zh) * | 2009-03-20 | 2009-08-12 | 中国人民解放军信息工程大学 | 一种路由查找方法和装置 |
CN102377664A (zh) * | 2010-08-27 | 2012-03-14 | 武汉烽火网络有限责任公司 | 一种基于tcam的区域匹配装置和方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108173763A (zh) * | 2013-08-28 | 2018-06-15 | 华为技术有限公司 | 报文处理方法、设备及系统 |
CN110442570A (zh) * | 2019-06-06 | 2019-11-12 | 北京左江科技股份有限公司 | 一种BitMap高速模糊查找方法 |
CN110442570B (zh) * | 2019-06-06 | 2021-08-17 | 北京左江科技股份有限公司 | 一种BitMap高速模糊查找方法 |
CN117354237A (zh) * | 2023-11-03 | 2024-01-05 | 中科驭数(北京)科技有限公司 | 网络流表操作处理方法、装置、电子设备及存储介质 |
CN117354237B (zh) * | 2023-11-03 | 2024-09-27 | 中科驭数(北京)科技有限公司 | 网络流表操作处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20180367649A1 (en) | 2018-12-20 |
CN108173763A (zh) | 2018-06-15 |
US20160173657A1 (en) | 2016-06-16 |
WO2015027401A1 (zh) | 2015-03-05 |
EP3029894A4 (en) | 2016-08-10 |
US10057392B2 (en) | 2018-08-21 |
EP3029894B1 (en) | 2020-08-19 |
US10749997B2 (en) | 2020-08-18 |
CN108173763B (zh) | 2021-06-01 |
CN104584492B (zh) | 2018-03-13 |
EP3029894A1 (en) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104584492A (zh) | 报文处理方法、设备及系统 | |
CN106664261B (zh) | 一种配置流表项的方法、装置和系统 | |
CN105791214B (zh) | 一种RapidIO报文和以太网报文之间的转换方法和设备 | |
CN105072038B (zh) | 一种数据报文转发方法及装置 | |
CN103685006A (zh) | 一种在边缘设备上的报文转发方法和边缘设备 | |
CN107733799A (zh) | 一种报文传输方法和装置 | |
CN102946356B (zh) | 一种基于cb-pe网络的组播报文传输方法和设备 | |
CN103401773A (zh) | 一种实现板间通信的方法及网络设备 | |
CN102611634A (zh) | 一种接入ip网络的方法和边缘设备 | |
CN104486589B (zh) | 基于gvrp的视频监控系统中的访问方法及装置 | |
CN106685826A (zh) | 交换机堆叠系统、从设备、交换芯片及处理协议报文方法 | |
CN103490961A (zh) | 一种网络设备 | |
CN105099959A (zh) | 一种多播包的转发方法、设备和系统 | |
CN105763437A (zh) | 报文转发的方法及网络设备 | |
CN103746914B (zh) | 建立私网标签与原始vrf对应关系的方法、装置及系统 | |
CN106031104A (zh) | 数据报文的转达方法、装置及设备 | |
CN103873464B (zh) | 报文处理的方法及转发设备 | |
CN106713144A (zh) | 一种报文出口信息的读写方法及转发引擎 | |
CN101159674A (zh) | 一种报文路由交换装置及其方法 | |
CN104639440A (zh) | 一种在网络中实现三层转发并封装协议信息的方法和装置 | |
CN106209559A (zh) | 一种建立组播隧道的方法和装置 | |
CN106330783B (zh) | 一种OpenFlow交换机能力上报的方法及装置 | |
CN105812221A (zh) | 虚拟可扩展本地区域网络中数据传输的设备和方法 | |
CN101605087B (zh) | 流量信息提取方法、设备及系统 | |
CN107086960B (zh) | 一种报文传输方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |