CN106034133B - 一种openflow处理方法、消息处理方法、控制器与交换机 - Google Patents
一种openflow处理方法、消息处理方法、控制器与交换机 Download PDFInfo
- Publication number
- CN106034133B CN106034133B CN201510122496.4A CN201510122496A CN106034133B CN 106034133 B CN106034133 B CN 106034133B CN 201510122496 A CN201510122496 A CN 201510122496A CN 106034133 B CN106034133 B CN 106034133B
- Authority
- CN
- China
- Prior art keywords
- field
- flow
- oxm
- structural body
- value
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 29
- 230000005540 biological transmission Effects 0.000 claims description 24
- 230000008859 change Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 5
- 230000000630 rising effect Effects 0.000 description 5
- 238000007630 basic procedure Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000000306 component Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 239000000686 essence Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种openflow处理方法,用于在保证兼容性的情况下实现范围的表达。本发明实施例提供的openflow处理方法中,控制器确定目标匹配域的范围;生成OFPT_FLOW_MOD消息,该OFPT_FLOW_MOD消息的目标flow match field结构体中包括所述目标匹配域的范围;将所述OFPT_FLOW_MOD消息发送给交换机。由于本发明实施例提供的方法可以仅使用一个flow match field结构体即可表示目标匹配域的范围,而不需要两条flow match field结构体,因此只需要修改目标匹配域对应的flow match field结构体即可实现范围表达,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。本发明实施例还提供了相关的消息处理方法、控制器与交换机。
Description
技术领域
本发明涉及互联网领域,尤其涉及一种openflow处理方法、消息处理方法、控制器与交换机。
背景技术
开放流(openflow)技术是斯坦福大学提出的一种南向协议,它借鉴IT业的发展过程,通过控制与转发分离,控制集中软件化和转发硬件平台的通用化来加速网络的变革。OpenFlow技术中的重要设备包括控制器与交换机,其中交换机是核心组件,由OpenFlow协议、安全通道和流表三部分组成;控制器通过安全通道下发流表项到交换机的流表中,交换机按照流表进行匹配(match)等操作。但是传统的openflow协议的匹配域没有对范围表达的支持,当需要完成范围表达时,openflow需要通过精确化来表达,比如用户希望对5000-6000端口进行访问控制,使用ACL来做的话,使用1个流表就能够做到;如果用openflow来做,因为openflow不支持范围的表达,所以只能通过精确表达来配置流表项,需要1000次精确表达,生成1000个流表项。这样就浪费了有限的流表资源。
Openflow协议是通过OFPT_FLOW_MOD消息来配置交换机流表的,OFPT_FLOW_MOD消息中包括match结构体(即ofp_match结构体)和action结构体,其中ofp_match结构体用于描述流表的匹配部分。ofp_match结构体包括多个flow match field结构体,为了实现范围的表达,现阶段的技术中一般在ofp_match结构体中增加新的flow match field结构体,并使用匹配域对应的flow match field结构体以及新增的flow match field结构体,来分别表示匹配域的范围的起始值与结束值。
但是,Openflow特定协议版本的ofp_match结构体的大小是固定的,现阶段的技术所使用的方法改动了ofp_match结构体的结构,不符合Openflow协议的规范,破坏了控制器和交换机之间的兼容性,无法后向兼容。
发明内容
本发明实施例提供了一种openflow处理方法,用于在保证兼容性的情况下实现范围的表达。
本发明实施例的第一方面提供了一种开放流openflow处理方法,包括:
确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask;
生成OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flowmatch field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围;
将所述OFPT_FLOW_MOD消息发送给交换机。
结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
或,
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
结合本发明实施例的第一方面或第一方面的第一种实现方式,本发明实施例的第一方面的第二种实现方式中,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
本发明实施例的第二方面提供了一种开放流openflow处理方法,包括:
确定目标匹配域的范围;
生成第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow matchfield结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
将所述第一OFPT_FLOW_MOD消息发送给交换机;
生成第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow matchfield结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
将所述第二OFPT_FLOW_MOD消息发送给交换机。
结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
本发明实施例的第三方面提供了一种消息处理方法,包括:
接收控制器发送的OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flowmatch field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask;
根据所述目标flow match field结构体,确定所述目标匹配域的范围。
结合本发明实施例的第三方面,本发明实施例的第三方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为1,所述目标flow matchfield结构体的身体部包括oxm_mask字段与oxm_value字段;
所述根据所述目标flow match field结构体,确定所述目标匹配域的范围包括:
将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oxm_value字段作为所述目标匹配域的范围的结束值;
或,
将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
结合本发明实施例的第三方面或第三方面的第一种实现方式,本发明实施例的第三方面的第二种实现方式中,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
本发明实施例的第四方面提供了一种消息处理方法,包括:
接收控制器发送的第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
接收控制器发送的第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
结合本发明实施例的第四方面,本发明实施例的第四方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1;
所述从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值包括:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;
所述从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值包括:将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。
结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第二种实现方式中,所述接收控制器发送的第一OFPT_FLOW_MOD消息之后还包括:
将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第一目标flow match field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域;
所述接收控制器发送的第二OFPT_FLOW_MOD消息之前还包括:
若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flowmatch field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息;
或,
所述接收控制器发送的第二OFPT_FLOW_MOD消息之后还包括:
将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第二目标flow match field结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;
所述接收控制器发送的第一OFPT_FLOW_MOD消息之前还包括:
若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flowmatch field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第一OFPT_FLOW_MOD消息。
本发明实施例的第五方面提供了一种控制器,包括:
范围确定模块,用于确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask;
消息生成模块,用于生成OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flowmatch field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围;
消息发送模块,用于将所述OFPT_FLOW_MOD消息发送给交换机。
结合本发明实施例的第五方面,本发明实施例的第五方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
或,
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
结合本发明实施例的第五方面或第五方面的第一种实现方式,本发明实施例的第五方面的第二种实现方式中,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
本发明实施例的第六方面提供了一种控制器,包括:
确定范围模块,用于确定目标匹配域的范围;
生成消息模块,用于生成第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
发送消息模块,用于将所述第一OFPT_FLOW_MOD消息发送给交换机;
所述生成消息模块,还用于生成第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow matchfield结构体包括所述目标匹配域的范围的结束值;
所述发送消息模块,还用于将所述第二OFPT_FLOW_MOD消息发送给交换机。
结合本发明实施例的第六方面,本发明实施例的第六方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
本发明实施例的第七方面提供了一种交换机,包括:
消息接收模块,用于接收控制器发送的OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask;
消息处理模块,用于根据所述目标flow match field结构体,确定所述目标匹配域的范围。
结合本发明实施例的第七方面,本发明实施例的第七方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为1,所述目标flow matchfield结构体的身体部包括oxm_mask字段与oxm_value字段;
所述消息处理模块具体用于:将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oxm_value字段作为所述目标匹配域的范围的结束值;或,将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
结合本发明实施例的第七方面或第七方面的第一种实现方式,本发明实施例的第七方面的第二种实现方式中,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
本发明实施例的第八方面提供了一种种交换机,包括:
接收消息模块,用于接收控制器发送的第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flow matchfield结构体包括所述目标匹配域的范围的起始值;
处理消息模块,用于从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
所述接收消息模块还用于:接收控制器发送的第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flowmatch field结构体包括所述目标匹配域的范围的结束值;
所述处理消息模块还用于:从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
结合本发明实施例的第八方面,本发明实施例的第八方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1;
所述处理消息模块具体用于:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。
结合本发明实施例的第八方面的第一种实现方式,本发明实施例的第八方面的第二种实现方式中,所述处理消息模块在接收控制器发送的第一OFPT_FLOW_MOD消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第一目标flowmatch field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第二OFPT_FLOW_MOD消息之前还用于:若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息;
或,所述处理消息模块在接收控制器发送的第二OFPT_FLOW_MOD消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第二目标flow matchfield结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第一OFPT_FLOW_MOD消息之前还用于:若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第一OFPT_FLOW_MOD消息。
本发明实施例提供的openflow处理方法中,控制器确定目标匹配域的范围;生成OFPT_FLOW_MOD消息,该OFPT_FLOW_MOD消息包括ofp_match结构体,ofp_match结构体包括多个flow match field结构体,该多个flow match field结构体中包括目标匹配域对应的目标flow match field结构体,该目标flow match field结构体中包括所述目标匹配域的范围;将所述OFPT_FLOW_MOD消息发送给交换机。由于本发明实施例提供的方法可以仅使用一个flow match field结构体即可表示目标匹配域的范围,而不需要两条flow matchfield结构体,因此只需要修改目标匹配域对应的flow match field结构体即可实现范围表达,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
附图说明
图1为Openflow协议中ofp_match结构体的基本结构;
图2为本发明实施例中openflow处理方法一个实施例流程图;
图3为本发明实施例中消息处理方法一个实施例流程图;
图4为本发明实施例中openflow处理方法另一个实施例流程图;
图5为本发明实施例中消息处理方法另一个实施例流程图;
图6为本发明实施例中控制器一个实施例结构图;
图7为本发明实施例中交换机一个实施例结构图;
图8为本发明实施例中控制器另一个实施例结构图;
图9为本发明实施例中交换机另一个实施例结构图;
图10为本发明实施例中控制器或交换机另一个实施例结构图。
具体实施方式
本发明实施例提供了一种openflow处理方法,用于在保证兼容性的情况下实现范围的表达。本发明实施例还提供了相关的控制器与交换机,以下将分别进行描述。
Openflow协议是通过OFPT_FLOW_MOD消息来配置交换机流表的,OFPT_FLOW_MOD消息中包括match结构体(即ofp_match结构体)和action结构体,其中ofp_match结构体用于描述流表的匹配部分,其基本结构请参阅图1:ofp_match结构体包括多个flow matchfield结构体,每个flow match field结构体为TLV(Type Length Value)格式,且对应一个匹配域。每个flow match field结构体包括头部与身体部。其中,头部包括oxm_class、oxm_field、oxm_hasmask和oxm_length字段,oxm_class字段和oxm_field字段共同决定了匹配域的类型,oxm_hasmask字段表示身体部中是否有位掩码(bitmask),oxm_length字段表示身体部的长度。当oxm_hasmask字段为0时,身体中只有oxm_value字段,用于表示该匹配域的精确值;当oxm_hasmask字段为1时,身体部里除了oxm_value字段,还存在一个长度与oxm_value字段一样的oxm_mask字段,oxm_mask字段用于表示bitmask。
现阶段openflow协议规定的匹配域中,有的匹配域支持bitmask,有的匹配域不支持bitmask,如OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域等。对于不支持bitmask的匹配域对应的ofp_match结构体而言,oxm_hasmask字段和oxm_mask字段没有实际意义。且在现阶段的openflow协议中,支持bitmask的匹配域均没有范围表达的需求,只有不支持bitmask的匹配域会需要进行范围表达。因此,不支持bitmask的匹配域对应的oxm_hasmask字段和oxm_mask字段可以用于实现范围的表达。
在上述论述的基础上,本发明实施例提供了一种openflow处理方法,其基本流程请参阅图2,主要包括:
201、确定目标匹配域的范围;
本实施例提供的方法可以实现目标匹配域的范围表达。首先,控制器需要确定目标匹配域以及目标匹配域待表达的范围。其中,目标匹配域不支持bitmask。
202、生成OFPT_FLOW_MOD消息;
控制器生成OFPT_FLOW_MOD消息,该OFPT_FLOW_MOD消息包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域一一对应的一个或多个flow match field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow matchfield结构体称为目标flow match field结构体,其中目标flow match field结构体中包括目标匹配域的范围。其中,目标flow match field结构体可以通过很多方式来记录目标匹配域的范围,本实施例中不做限定。
203、将OFPT_FLOW_MOD消息发送给交换机。
控制器将生成的OFPT_FLOW_MOD消息发送给交换机,使得交换机可以根据该OFPT_FLOW_MOD消息获知目标匹配域的范围,进而配置范围流表。
本实施例提供的openflow处理方法中,控制器确定目标匹配域的范围;生成OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括目标匹配域对应的目标flow match field结构体,该目标flow match field结构体中包括目标匹配域的范围;将所述OFPT_FLOW_MOD消息发送给交换机。由于本发明实施例提供的方法可以仅使用一个flow match field结构体即可表示目标匹配域的范围,而不需要两条flow match field结构体,因此只需要修改目标匹配域对应的flow match field结构体即可即可实现范围表达,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为1。由于该目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxm_mask字段没有实际意义,可以用于实现范围的表达。具体的,可以用oxm_mask字段表示目标匹配域的范围的起始值,oxm_value字段表示目标匹配域的范围的结束值,或用oxm_mask字段表示目标匹配域的范围的结束值,oxm_value字段表示目标匹配域的范围的起始值,此处不做限定。
上述实施例给出了控制器进行openflow表达的具体方法,下面的实施例将描述当控制器使用上述openflow处理方法时,交换机对应使用的消息处理方法,其基本流程请参阅图3,包括:
301、接收控制器发送的OFPT_FLOW_MOD消息;
交换机接收控制器发送的OFPT_FLOW_MOD消息,OFPT_FLOW_MOD消息中包括ofp_match结构体,ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flowmatch field结构体,该一个或多个匹配域中包括目标匹配域,该目标匹配域不支持bitmask。目标匹配域对应的flow match field结构体称为目标flow match field结构体,其中,目标flow match field结构体中包括目标匹配域的范围。
302、根据目标flow match field结构体,确定目标匹配域的范围。
交换机根据目标flow match field结构体,确定目标匹配域的范围。确定了目标匹配域的范围之后,交换机可以根据目标匹配域的范围,配置范围流表。
本实施例提供的消息处理方法中,交换机接收控制器发送的OFPT_FLOW_MOD消息,其中,OFPT_FLOW_MOD消息中包括目标flow match field结构体,目标flow match field结构体中包括目标匹配域的范围。交换机根据目标flow match field结构体,确定目标匹配域的范围。本实施例提供的方法中,交换机仅从一个目标flow match field结构体中获知目标匹配域的范围,而不需要两条flow match field结构体,因此不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为1。由于目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxm_mask字段没有实际意义,可以用于实现范围的表达。具体的,交换机可以将oxm_hasmask字段为1的flow match field结构体确定为flow match field结构体,并将目标flow match field结构体的oxm_mask字段作为目标匹配域的范围的起始值,将oxm_value字段作为目标匹配域的范围的结束值;交换机也可以将目标flow match field结构体的oxm_mask字段作为目标匹配域的范围的结束值,将oxm_value字段作为目标匹配域的范围的起始值,本实施例中不做限定,但交换机对oxm_mask字段、oxm_value字段的含义的规定应与对应控制器的规定一致。
上述实施例中,目标匹配域均不支持bitmask,由于现阶段的openflow协议中,支持bitmask的匹配域均没有范围表达的需求,只有不支持bitmask的匹配域会需要进行范围表达,而不支持bitmask的匹配域对应的ofp_match结构体中,oxm_hasmask字段和oxm_mask字段没有实际意义,因此将目标匹配域对应的oxm_hasmask字段和oxm_mask字段用于实现范围的表达。但未来若openflow协议发生演进,原本不支持bitmask的匹配域也有可能支持bitmask,导致支持bitmask的域也需要进行范围表达。针对这一潜在需求,本发明提供了另一种openflow处理方法,其基本流程请参阅图4,主要包括:
401、确定目标匹配域的范围;
本实施例提供的方法可以实现目标匹配域的范围表达。首先,控制器需要确定目标匹配域以及目标匹配域待表达的范围。本实施例中,目标匹配域可以支持bitmask,也可以不支持bitmask,本实施例中不做限定。
402、生成第一OFPT_FLOW_MOD消息;
控制器生成第一OFPT_FLOW_MOD消息,该第一OFPT_FLOW_MOD消息包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域一一对应的一个或多个flow matchfield结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flowmatch field结构体称为第一目标flow match field结构体,第一目标flow match field结构体中包括目标匹配域的范围的起始值。
403、将第一OFPT_FLOW_MOD消息发送给交换机;
控制器将生成的第一OFPT_FLOW_MOD消息发送给交换机,使得交换机可以根据该第一OFPT_FLOW_MOD消息获知目标匹配域的范围的起始值。
404、生成第二OFPT_FLOW_MOD消息;
控制器生成第二OFPT_FLOW_MOD消息,该第二OFPT_FLOW_MOD消息具有与第一OFPT_FLOW_MOD消息相似的结构,具体包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域一一对应的一个或多个flow match field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow match field结构体称为第二目标flowmatch field结构体,第二目标flow match field结构体中包括目标匹配域的范围的结束值。
405、将第二OFPT_FLOW_MOD消息发送给交换机。
控制器将生成的第二OFPT_FLOW_MOD消息发送给交换机,使得交换机可以根据该第二OFPT_FLOW_MOD消息获知目标匹配域的范围的结束值。
其中,步骤404和/或405也可以位于步骤402或403之前,本实施例中不做限定。其中,交换机接收到第一与第二OFPT_FLOW_MOD消息后,就可以获知目标匹配域的范围的起始值与结束值,进而配置范围流表。
本实施例提供的openflow处理方法中,控制器确定目标匹配域的范围;生成第一OFPT_FLOW_MOD消息,该第一OFPT_FLOW_MOD消息包括目标匹配域的范围的起始值;控制器将该第一OFPT_FLOW_MOD消息发送给交换机;生成第二OFPT_FLOW_MOD消息,该第二OFPT_FLOW_MOD消息包括目标匹配域的范围的起结束值;控制器将该第二OFPT_FLOW_MOD消息发送给交换机,使得交换机能够获知目标匹配域的范围。本发明实施例提供的方法仅使用两条OFPT_FLOW_MOD消息来表达目标匹配域的范围,且每条OFPT_FLOW_MOD消息中只改变了目标匹配域对应的一个flow match field结构体,不需要在ofp_match结构体中新增flowmatch field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
图4所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全1的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;第二目标flow match field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
图4所示的实施例给出了控制器进行openflow表达的具体方法,下面的实施例将描述当控制器使用该openflow处理方法时,交换机对应使用的消息处理方法,其基本流程请参阅图5,包括:
501、接收控制器发送的第一OFPT_FLOW_MOD消息;
交换机接收控制器发送的第一OFPT_FLOW_MOD消息,该第一OFPT_FLOW_MOD消息包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域一一对应的一个或多个flow match field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow match field结构体称为第一目标flow match field结构体,第一目标flowmatch field结构体中包括目标匹配域的范围的起始值。
502、从第一目标flow match field结构体中获取目标匹配域的范围的起始值;
交换机从第一OFPT_FLOW_MOD内的第一目标flow match field结构体中,获取所述目标匹配域的范围的起始值。
503、接收控制器发送的第二OFPT_FLOW_MOD消息;
交换机接收控制器发送的第二OFPT_FLOW_MOD消息,该第二OFPT_FLOW_MOD消息具有与第一OFPT_FLOW_MOD消息相似的结构,具体包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域一一对应的一个或多个flow match field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow match field结构体称为第二目标flow match field结构体,第二目标flow match field结构体中包括目标匹配域的范围的结束值。
504、从第二目标flow match field结构体中获取目标匹配域的范围的结束值。
交换机从第二OFPT_FLOW_MOD内的第二目标flow match field结构体中,获取所述目标匹配域的范围的结束值。
其中,步骤503和/或504也可以位于步骤501或502之前,本实施例中不做限定。
其中,交换机获知了目标匹配域的起始值与结束值后,就可以根据目标匹配域的范围配置范围流表。
本实施例提供的消息处理方法中,交换机接收控制器发送的第一OFPT_FLOW_MOD消息,并从第一目标flow match field结构体中获取目标匹配域的范围的起始值;接收控制器发送的第二OFPT_FLOW_MOD消息,并从第二目标flow match field结构体中获取目标匹配域的范围的结束值,这样交换机就可以获知目标匹配域的表达范围。本发明实施例提供的方法仅使用两条OFPT_FLOW_MOD消息来表达目标匹配域的范围,且每条OFPT_FLOW_MOD消息中只改变了目标匹配域对应的一个flow match field结构体,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
图5所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全1的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1,交换机将第一目标flow match field结构体的oxm_value字段作为目标匹配域的范围的起始值,将第二目标flow match field结构体的oxm_value字段作为目标匹配域的范围的结束值。
其中,为了能够确定目标匹配域的范围,交换机需要从接收到的多条OFPT_FLOW_MOD消息中,确定包括了目标匹配域的起始值与结束值的两条OFPT_FLOW_MOD消息。以交换机先接收第一OFPT_FLOW_MOD消息,再接收第二OFPT_FLOW_MOD消息为例,具体的:若交换机接收到了OFPT_FLOW_MOD消息,该消息中有一个flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则交换机将该flow matchfield结构体对应的匹配域确定为目标匹配域,由于交换机中没有保存目标匹配域的范围的起始值,故交换机确定该flow match field结构体为第一目标flow match field结构体,该OFPT_FLOW_MOD消息为第一OFPT_FLOW_MOD消息。交换机确定第一目标flow matchfield结构体中,oxm_value字段为目标匹配域的范围的起始值,并保存该目标匹配域的起始值。当控制器再次接收到OFPT_FLOW_MOD消息,且该OFPT_FLOW_MOD消息中与目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1时,由于交换机已经保存了目标匹配域的范围的起始值,所以交换机将再次接收到的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息,并将第二OFPT_FLOW_MOD消息中,目标匹配域对应的flow match field结构体中的oxm_value字段作为目标匹配域的范围的结束值。当交换机先接收第二OFPT_FLOW_MOD消息,再接收第一OFPT_FLOW_MOD消息时,确定第一OFPT_FLOW_MOD消息的方法与上述方法类似,此处不做赘述。
为了便于理解上述实施例,下面以上述实施例的具体应用场景为例进行描述。
应用场景一:
用户通过操作指令告知控制器对OXM_OF_TCP_SRC域的5000-6000端口进行安全控制,控制器确定OXM_OF_TCP_SRC域为目标匹配域,并确定OXM_OF_TCP_SRC域的表达范围为5000-6000。控制器根据该表达范围生成OFPT_FLOW_MOD消息,该消息中,OXM_OF_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为起始端口5000,oxm_value字段的值为结束端口6000。控制器将该OFPT_FLOW_MOD消息发送给交换机。
交换机接收该OFPT_FLOW_MOD消息,并确定oxm_hasmask字段为1的OXM_OF_TCP_SRC域为需要进行范围表达的目标匹配域。交换机将OXM_OF_TCP_SRC域对应的flow matchfield结构体中,oxm_mask字段的值5000作为OXM_OF_TCP_SRC域的范围的起始值,将oxm_value字段的值6000作为OXM_OF_TCP_SRC域的范围的结束值。于是,交换机确定了OXM_OF_TCP_SRC域的范围为5000-6000,并根据OXM_OF_TCP_SRC域的范围生成范围流表。
应用场景二:
用户通过操作指令告知控制器对5000-6000端口进行控制,控制器确定OXM_OF_TCP_SRC域为目标匹配域,并确定OXM_OF_TCP_SRC域的表达范围为5000-6000。控制器根据该表达范围生成第一OFPT_FLOW_MOD消息与第二OFPT_FLOW_MOD消息,第一OFPT_FLOW_MOD消息中,OXM_OF_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为全1,oxm_value字段的值为起始端口5000。第二OFPT_FLOW_MOD消息中,OXM_OF_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为全1,oxm_value字段的值为结束端口6000。控制器先将第一OFPT_FLOW_MOD消息发送给交换机,再将第二OFPT_FLOW_MOD消息发送给交换机。
交换机先接收第一OFPT_FLOW_MOD消息,并确定oxm_hasmask字段为1,且oxm_mask字段的值为全1的OXM_OF_TCP_SRC域为需要进行范围表达的目标匹配域。由于交换机中没有保存OXM_OF_TCP_SRC域的范围的起始值,故交换机将OXM_OF_TCP_SRC域确定为目标匹配域,并将OXM_OF_TCP_SRC域对应的flow match field结构体中,oxm_value字段的值5000作为OXM_OF_TCP_SRC域的范围的起始值,并保存OXM_OF_TCP_SRC域的范围的起始值5000。交换机之后再次接收到OFPT_FLOW_MOD消息,其中OXM_OF_TCP_SRC域对应的flow matchfield结构体中oxm_hasmask字段为1且oxm_mask字段的值为全1。由于交换机已经保存了OXM_OF_TCP_SRC域的范围的起始值,故交换机将再次接收到的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息,并将第二OFPT_FLOW_MOD消息中,OXM_OF_TCP_SRC域对应的flowmatch field结构体中的oxm_value字段的值6000作为OXM_OF_TCP_SRC域的范围的结束值。于是,交换机确定了OXM_OF_TCP_SRC域的范围为5000-6000,并根据OXM_OF_TCP_SRC域的范围生成范围流表。
本发明实施例还提供了相关的控制器与交换机,用于实现上述实施例中描述的方法。本发明实施例提供的控制器的基本结构请参阅图6,主要包括:
范围确定模块601,用于确定目标匹配域的范围,其中目标匹配域不支持位掩码bitmask;
消息生成模块602,用于生成OFPT_FLOW_MOD消息,其中,OFPT_FLOW_MOD消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,该目标flow match field结构体中包括所述目标匹配域的范围;
消息发送模块603,用于将该OFPT_FLOW_MOD消息发送给交换机。
本实施例提供的控制器中,范围确定模块601确定目标匹配域的范围;消息生成模块602生成OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括目标匹配域对应的目标flow match field结构体,该目标flow matchfield结构体中包括目标匹配域的范围;消息发送模块603将所述OFPT_FLOW_MOD消息发送给交换机。由于本发明实施例提供的控制器可以仅使用一个flow match field结构体即可表示目标匹配域的范围,而不需要两条flow match field结构体,因此只需要修改目标匹配域对应的flow match field结构体即可即可实现范围表达,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为1。由于该目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxm_mask字段没有实际意义,可以用于实现范围的表达。具体的,可以用oxm_mask字段表示目标匹配域的范围的起始值,oxm_value字段表示目标匹配域的范围的结束值,或用oxm_mask字段表示目标匹配域的范围的结束值,oxm_value字段表示目标匹配域的范围的起始值,此处不做限定。
上述实施例给出了控制器的基本结构,下面的实施例将描述与该控制器配套使用的交换机的结构,请参阅图7,包括:
消息接收模块701,用于接收控制器发送的OFPT_FLOW_MOD消息,该OFPT_FLOW_MOD消息包括ofp_match结构体,ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,目标flow match field结构体中包括所述目标匹配域的范围,其中,目标匹配域不支持位掩码bitmask;
消息处理模块702,用于根据目标flow match field结构体,确定目标匹配域的范围。
本实施例提供的交换机中,消息接收模块701接收控制器发送的OFPT_FLOW_MOD消息,其中,OFPT_FLOW_MOD消息中包括目标flow match field结构体,目标flow matchfield结构体中包括目标匹配域的范围。消息处理模块702根据目标flow match field结构体,确定目标匹配域的范围。本实施例提供的交换机仅从一个目标flow match field结构体中获知目标匹配域的范围,而不需要两条flow match field结构体,因此不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为1。由于目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxm_mask字段没有实际意义,可以用于实现范围的表达。具体的,消息处理模块702可以将oxm_hasmask字段为1的flow match field结构体确定为flow match field结构体,并将目标flow match field结构体的oxm_mask字段作为目标匹配域的范围的起始值,将oxm_value字段作为目标匹配域的范围的结束值;交换机也可以将目标flow match field结构体的oxm_mask字段作为目标匹配域的范围的结束值,将oxm_value字段作为目标匹配域的范围的起始值,本实施例中不做限定,但交换机对oxm_mask字段、oxm_value字段的含义的规定应与对应控制器的规定一致。
上述实施例中,目标匹配域均不支持bitmask,由于现阶段的openflow协议中,支持bitmask的匹配域均没有范围表达的需求,只有不支持bitmask的匹配域会需要进行范围表达,而不支持bitmask的匹配域对应的ofp_match结构体中,oxm_hasmask字段和oxm_mask字段没有实际意义,因此将目标匹配域对应的oxm_hasmask字段和oxm_mask字段用于实现范围的表达。但未来若openflow协议发生演进,则原本不支持bitmask的匹配域也有可能支持bitmask,导致支持bitmask的匹配域也需要进行范围表达。针对这一潜在需求,本发明提供了另一种控制器与交换机,其中控制器的结构请参阅图8,主要包括:
确定范围模块801,用于确定目标匹配域的范围;
生成消息模块802,用于生成第一OFPT_FLOW_MOD消息,该第一OFPT_FLOW_MOD消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,第一目标flow match field结构体包括目标匹配域的范围的起始值;
发送消息模块803,用于将第一OFPT_FLOW_MOD消息发送给交换机;
生成消息模块802还用于生成第二OFPT_FLOW_MOD消息,其中,第二OFPT_FLOW_MOD消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,第二目标flow match field结构体包括目标匹配域的范围的结束值;
发送消息模块803还用于将第二OFPT_FLOW_MOD消息发送给交换机。
本实施例提供的控制器中,确定范围模块801确定目标匹配域的范围;生成消息模块802生成第一OFPT_FLOW_MOD消息,该第一OFPT_FLOW_MOD消息包括目标匹配域的范围的起始值;发送消息模块803将该第一OFPT_FLOW_MOD消息发送给交换机;生成消息模块802生成第二OFPT_FLOW_MOD消息,该第二OFPT_FLOW_MOD消息包括目标匹配域的范围的起结束值;发送消息模块803将该第二OFPT_FLOW_MOD消息发送给交换机,使得交换机能够获知目标匹配域的范围。本发明实施例提供的控制器仅使用两条OFPT_FLOW_MOD消息来表达目标匹配域的范围,且每条OFPT_FLOW_MOD消息中只改变了目标匹配域对应的一个flow matchfield结构体,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
图8所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全1的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;第二目标flow match field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
图8所示的实施例给出了控制器的另一种结构,下面的实施例将描述与该控制器配套使用的交换机的结构,请参阅图9,包括:
接收消息模块901,用于接收控制器发送的第一OFPT_FLOW_MOD消息,该第一OFPT_FLOW_MOD消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
处理消息模块902,用于从第一目标flow match field结构体中获取目标匹配域的范围的起始值;
接收消息模块901还用于接收控制器发送的第二OFPT_FLOW_MOD消息,该第二OFPT_FLOW_MOD消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,第二目标flow matchfield结构体包括所述目标匹配域的范围的结束值;
处理消息模块902还用于从第二目标flow match field结构体中获取目标匹配域的范围的结束值。
本实施例提供的交换机中,接收消息模块901接收控制器发送的第一OFPT_FLOW_MOD消息,处理消息模块902从第一目标flow match field结构体中获取目标匹配域的范围的起始值;接收消息模块901接收控制器发送的第二OFPT_FLOW_MOD消息,处理消息模块902从第二目标flow match field结构体中获取目标匹配域的范围的结束值,这样交换机就可以获知目标匹配域的表达范围。本发明实施例提供的交换机仅使用两条OFPT_FLOW_MOD消息来确定目标匹配域的范围,且每条OFPT_FLOW_MOD消息中只改变了目标匹配域对应的一个flow match field结构体,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
图9所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全1的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1,处理消息模块902将第一目标flow matchfield结构体的oxm_value字段作为目标匹配域的范围的起始值,将第二目标flow matchfield结构体的oxm_value字段作为目标匹配域的范围的结束值。
其中,为了能够确定目标匹配域的范围,交换机需要从接收到的多条OFPT_FLOW_MOD消息中,确定包括了目标匹配域的起始值与结束值的两条OFPT_FLOW_MOD消息。以交换机先接收第一OFPT_FLOW_MOD消息,再接收第二OFPT_FLOW_MOD消息为例,具体的:若交换机的接收消息模块901接收到了OFPT_FLOW_MOD消息,该消息中有一个flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则处理消息模块902将该flow match field结构体对应的匹配域确定为目标匹配域,由于交换机中没有保存目标匹配域的范围的起始值,故处理消息模块902确定该flow match field结构体为第一目标flow match field结构体,该OFPT_FLOW_MOD消息为第一OFPT_FLOW_MOD消息。处理消息模块902确定第一目标flow match field结构体中,oxm_value字段为目标匹配域的范围的起始值,并保存该目标匹配域的起始值。当接收消息模块901再次接收到OFPT_FLOW_MOD消息,且该OFPT_FLOW_MOD消息中与目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1时,由于处理消息模块902已经保存了目标匹配域的范围的起始值,所以处理消息模块902将再次接收到的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息,并将第二OFPT_FLOW_MOD消息中,目标匹配域对应的flow match field结构体中的oxm_value字段作为目标匹配域的范围的结束值。当交换机先接收第二OFPT_FLOW_MOD消息,再接收第一OFPT_FLOW_MOD消息时,确定第一OFPT_FLOW_MOD消息的方法与上述方法类似,此处不做赘述。
为了便于理解上述实施例,下面以上述实施例的具体应用场景为例进行描述。
应用场景三:
用户通过操作指令告知控制器对OXM_OF_TCP_SRC域的5000-6000端口进行安全控制,控制器的范围确定模块确定OXM_OF_TCP_SRC域为目标匹配域,并确定OXM_OF_TCP_SRC域的表达范围为5000-6000。控制器的消息生成模块根据该表达范围生成OFPT_FLOW_MOD消息,该消息中,OXM_OF_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为起始端口5000,oxm_value字段的值为结束端口6000。控制器的消息发送模块将该OFPT_FLOW_MOD消息发送给交换机。
交换机接的消息接收模块接收该OFPT_FLOW_MOD消息,消息处理模块确定oxm_hasmask字段为1的OXM_OF_TCP_SRC域为需要进行范围表达的目标匹配域。消息处理模块将OXM_OF_TCP_SRC域对应的flow match field结构体中,oxm_mask字段的值5000作为OXM_OF_TCP_SRC域的范围的起始值,将oxm_value字段的值6000作为OXM_OF_TCP_SRC域的范围的结束值。于是,交换机确定了OXM_OF_TCP_SRC域的范围为5000-6000,并根据OXM_OF_TCP_SRC域的范围生成范围流表。
应用场景二:
用户通过操作指令告知控制器对5000-6000端口进行控制,控制器的确定范围模块确定OXM_OF_TCP_SRC域为目标匹配域,并确定OXM_OF_TCP_SRC域的表达范围为5000-6000。控制器的生成消息模块根据该表达范围生成第一OFPT_FLOW_MOD消息与第二OFPT_FLOW_MOD消息,第一OFPT_FLOW_MOD消息中,OXM_OF_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为全1,oxm_value字段的值为起始端口5000。第二OFPT_FLOW_MOD消息中,OXM_OF_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为全1,oxm_value字段的值为结束端口6000。控制器的发送消息模块先将第一OFPT_FLOW_MOD消息发送给交换机,再将第二OFPT_FLOW_MOD消息发送给交换机。
交换机的接收消息模块先接收第一OFPT_FLOW_MOD消息,处理消息模块确定oxm_hasmask字段为1,且oxm_mask字段的值为全1的OXM_OF_TCP_SRC域为需要进行范围表达的目标匹配域。由于交换机中没有保存OXM_OF_TCP_SRC域的范围的起始值,故处理消息模块将OXM_OF_TCP_SRC域确定为目标匹配域,并将OXM_OF_TCP_SRC域对应的flow match field结构体中,oxm_value字段的值5000作为OXM_OF_TCP_SRC域的范围的起始值,并保存OXM_OF_TCP_SRC域的范围的起始值5000。交换机的接收消息模块之后再次接收到OFPT_FLOW_MOD消息,其中OXM_OF_TCP_SRC域对应的flow match field结构体中oxm_hasmask字段为1且oxm_mask字段的值为全1。由于交换机已经保存了OXM_OF_TCP_SRC域的范围的起始值,故处理消息模块将接收消息模块再次接收到的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息,并将第二OFPT_FLOW_MOD消息中,OXM_OF_TCP_SRC域对应的flow match field结构体中的oxm_value字段的值6000作为OXM_OF_TCP_SRC域的范围的结束值。于是,交换机确定了OXM_OF_TCP_SRC域的范围为5000-6000,并根据OXM_OF_TCP_SRC域的范围生成范围流表。
上面从单元化功能实体的角度对本发明实施例中的控制器进行了描述,下面从硬件处理的角度对本发明实施例中的控制器进行描述,请参阅图10,本发明实施例中的控制器1000另一实施例包括:
输入装置1001、输出装置1002、处理器1003和存储器1004(其中控制器1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask;
生成OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flowmatch field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围;
将所述OFPT_FLOW_MOD消息发送给交换机。
本发明的一些实施例中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
或,
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
本发明的一些实施例中,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
下面从硬件处理的角度对本发明实施例中提供的交换机进行描述,请仍参阅图10,本发明实施例中的交换机1000另一实施例包括:
输入装置1001、输出装置1002、处理器1003和存储器1004(其中交换机1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
接收控制器发送的OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flowmatch field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask;
根据所述目标flow match field结构体,确定所述目标匹配域的范围。
本发明的一些实施例中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为1,所述目标flow match field结构体的身体部包括oxm_mask字段与oxm_value字段;
所述根据所述目标flow match field结构体,确定所述目标匹配域的范围包括:
将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oxm_value字段作为所述目标匹配域的范围的结束值;
或,
将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
本发明的一些实施例中,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
下面从硬件处理的角度对本发明实施例中提供的另一种控制器进行描述,请仍参阅图10,本发明实施例中的控制器1000另一实施例包括:
输入装置1001、输出装置1002、处理器1003和存储器1004(其中控制器1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
确定目标匹配域的范围;
生成第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow matchfield结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
将所述第一OFPT_FLOW_MOD消息发送给交换机;
生成第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow matchfield结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
将所述第二OFPT_FLOW_MOD消息发送给交换机。
本发明的一些实施例中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
下面从硬件处理的角度对本发明实施例中提供的另一种交换机进行描述,请仍参阅图10,本发明实施例中的交换机1000另一实施例包括:
输入装置1001、输出装置1002、处理器1003和存储器1004(其中交换机1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
接收控制器发送的第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
接收控制器发送的第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
本发明的一些实施例中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flowmatch field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1;
处理器1003还执行如下步骤:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;
处理器1003还执行如下步骤:将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。
本发明的一些实施例中,处理器1003还执行如下步骤:
将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第一目标flow match field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域;若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flowmatch field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息;
或,将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第二目标flow match field结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flowmatch field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第一OFPT_FLOW_MOD消息。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (22)
1.一种开放流openflow处理方法,其特征在于,包括:
确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask;
生成OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flowmatch field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标flow match field结构体中包括头部与身体部,所述身体部包括oxm_mask字段与oxm_value字段,所述oxm_mask字段与所述oxm_value字段用于实现所述目标匹配域的范围的表达;
将所述OFPT_FLOW_MOD消息发送给交换机。
2.根据权利要求1所述的openflow处理方法,其特征在于,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
或,
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
3.根据权利要求1或2所述的openflow处理方法,其特征在于,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
4.一种开放流openflow处理方法,其特征在于,包括:
确定目标匹配域的范围;
生成第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
将所述第一OFPT_FLOW_MOD消息发送给交换机;
生成第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
将所述第二OFPT_FLOW_MOD消息发送给交换机。
5.根据权利要求4所述的openflow处理方法,其特征在于,每个所述flowmatch field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
6.一种消息处理方法,其特征在于,包括:
接收控制器发送的OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow matchfield结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask,所述目标flow match field结构体中包括头部与身体部,所述身体部包括oxm_mask字段与oxm_value字段,所述oxm_mask字段与所述oxm_value字段用于实现所述目标匹配域的范围的表达;
根据所述目标flow match field结构体,确定所述目标匹配域的范围。
7.根据权利要求6所述的消息处理方法,其特征在于,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为1,所述目标flowmatch field结构体的身体部包括oxm_mask字段与oxm_value字段;
所述根据所述目标flow match field结构体,确定所述目标匹配域的范围包括:
将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oxm_value字段作为所述目标匹配域的范围的结束值;
或,
将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
8.根据权利要求6或7所述的消息处理方法,其特征在于,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
9.一种消息处理方法,其特征在于,包括:
接收控制器发送的第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flowmatch field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flowmatch field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
接收控制器发送的第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flowmatch field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flowmatch field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
10.根据权利要求9所述的消息处理方法,其特征在于,每个所述flowmatch field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1;
所述从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值包括:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;
所述从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值包括:将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。
11.根据权利要求10所述的消息处理方法,其特征在于,所述接收控制器发送的第一OFPT_FLOW_MOD消息之后还包括:
将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第一目标flowmatch field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域;
所述接收控制器发送的第二OFPT_FLOW_MOD消息之前还包括:
若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flow matchfield结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息;
或,
所述接收控制器发送的第二OFPT_FLOW_MOD消息之后还包括:
将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第二目标flowmatch field结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;
所述接收控制器发送的第一OFPT_FLOW_MOD消息之前还包括:
若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flow matchfield结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第一OFPT_FLOW_MOD消息。
12.一种控制器,其特征在于,包括:
范围确定模块,用于确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask;
消息生成模块,用于生成OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flowmatch field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flowmatch field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标flow match field结构体中包括头部与身体部,所述身体部包括oxm_mask字段与oxm_value字段,所述oxm_mask字段与所述oxm_value字段用于实现所述目标匹配域的范围的表达;
消息发送模块,用于将所述OFPT_FLOW_MOD消息发送给交换机。
13.根据权利要求12所述的控制器,其特征在于,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
或,
所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
14.根据权利要求12或13所述的控制器,其特征在于,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
15.一种控制器,其特征在于,包括:
确定范围模块,用于确定目标匹配域的范围;
生成消息模块,用于生成第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
发送消息模块,用于将所述第一OFPT_FLOW_MOD消息发送给交换机;
所述生成消息模块,还用于生成第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
所述发送消息模块,还用于将所述第二OFPT_FLOW_MOD消息发送给交换机。
16.根据权利要求15所述的控制器,其特征在于,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为1时,所述身体部包括oxm_mask字段与oxm_value字段;
所述第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
17.一种交换机,其特征在于,包括:
消息接收模块,用于接收控制器发送的OFPT_FLOW_MOD消息,所述OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask,所述目标flow matchfield结构体中包括头部与身体部,所述身体部包括oxm_mask字段与oxm_value字段,所述oxm_mask字段与所述oxm_value字段用于实现所述目标匹配域的范围的表达;
消息处理模块,用于根据所述目标flow match field结构体,确定所述目标匹配域的范围。
18.根据权利要求17所述的交换机,其特征在于,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为1,所述目标flow match field结构体的身体部包括oxm_mask字段与oxm_value字段;
所述消息处理模块具体用于:将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oxm_value字段作为所述目标匹配域的范围的结束值;或,将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
19.根据权利要求17或18所述的交换机,其特征在于,所述目标匹配域包括:OXM_OF_TCP_SRC域、OXM_OF_TCP_DST域、OFPXMT_OFB_UDP_SRC域、OFPXMT_OFB_UDP_DST域、OFPXMT_OFB_SCTP_SRC域、或OFPXMT_OFB_SCTP_DST域。
20.一种交换机,其特征在于,包括:
接收消息模块,用于接收控制器发送的第一OFPT_FLOW_MOD消息,所述第一OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
处理消息模块,用于从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
所述接收消息模块还用于:接收控制器发送的第二OFPT_FLOW_MOD消息,所述第二OFPT_FLOW_MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域一一对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flowmatch field结构体包括所述目标匹配域的范围的结束值;
所述处理消息模块还用于:从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
21.根据权利要求20所述的交换机,其特征在于,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1;
所述处理消息模块具体用于:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。
22.根据权利要求21所述的交换机,其特征在于,所述处理消息模块在接收控制器发送的第一OFPT_FLOW_MOD消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow matchfield结构体,确定为第一目标flow match field结构体,并将所述第一目标flow matchfield结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第二OFPT_FLOW_MOD消息之前还用于:若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第二OFPT_FLOW_MOD消息;
或,所述处理消息模块在接收控制器发送的第二OFPT_FLOW_MOD消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1的flow match field结构体,确定为第二目标flow matchfield结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第一OFPT_FLOW_MOD消息之前还用于:若所述控制器发送的OFPT_FLOW_MOD消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第一OFPT_FLOW_MOD消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510122496.4A CN106034133B (zh) | 2015-03-19 | 2015-03-19 | 一种openflow处理方法、消息处理方法、控制器与交换机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510122496.4A CN106034133B (zh) | 2015-03-19 | 2015-03-19 | 一种openflow处理方法、消息处理方法、控制器与交换机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106034133A CN106034133A (zh) | 2016-10-19 |
CN106034133B true CN106034133B (zh) | 2019-05-28 |
Family
ID=57149439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510122496.4A Active CN106034133B (zh) | 2015-03-19 | 2015-03-19 | 一种openflow处理方法、消息处理方法、控制器与交换机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106034133B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105056A (en) * | 1995-12-19 | 2000-08-15 | International Business Machines Corporation | Object oriented mail server framework mechanism |
CN103368851A (zh) * | 2013-07-22 | 2013-10-23 | 武汉烽火网络有限责任公司 | 基于资源复用的Openflow流表存储优化方法 |
CN103997414A (zh) * | 2013-02-18 | 2014-08-20 | 华为技术有限公司 | 生成配置信息的方法和网络控制单元 |
CN104009877A (zh) * | 2014-06-22 | 2014-08-27 | 陈桂芳 | 一种sdn流表可视化的实现方法 |
CN104158745A (zh) * | 2013-05-13 | 2014-11-19 | 中兴通讯股份有限公司 | 一种实现数据包转发的方法及系统 |
-
2015
- 2015-03-19 CN CN201510122496.4A patent/CN106034133B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105056A (en) * | 1995-12-19 | 2000-08-15 | International Business Machines Corporation | Object oriented mail server framework mechanism |
CN103997414A (zh) * | 2013-02-18 | 2014-08-20 | 华为技术有限公司 | 生成配置信息的方法和网络控制单元 |
CN104158745A (zh) * | 2013-05-13 | 2014-11-19 | 中兴通讯股份有限公司 | 一种实现数据包转发的方法及系统 |
CN103368851A (zh) * | 2013-07-22 | 2013-10-23 | 武汉烽火网络有限责任公司 | 基于资源复用的Openflow流表存储优化方法 |
CN104009877A (zh) * | 2014-06-22 | 2014-08-27 | 陈桂芳 | 一种sdn流表可视化的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106034133A (zh) | 2016-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10091090B2 (en) | Packet forwarding in software defined networking | |
CN106664261B (zh) | 一种配置流表项的方法、装置和系统 | |
CN108377671B (zh) | 处理报文的方法和计算机设备 | |
CN109981457A (zh) | 一种报文处理的方法、网络节点和系统 | |
JP2017212726A5 (zh) | ||
CN109450852A (zh) | 网络通信加密解密方法及电子设备 | |
CN109361606A (zh) | 一种报文处理系统及网络设备 | |
CN103647759B (zh) | 一种mss的协商方法及装置 | |
US11337211B2 (en) | Operation request generating method, device, and system | |
CN106161335A (zh) | 一种网络数据包的处理方法和装置 | |
WO2016086670A1 (zh) | Vxlan报文传输方法及装置、存储介质 | |
CN104378299B (zh) | 流表项处理方法以及装置 | |
MY160082A (en) | Method and apparatus for providing host node awareness for multiples nat64 environments | |
CN106878194A (zh) | 一种报文处理方法和装置 | |
CN106664235B (zh) | 软件定义网络与传统网络的融合方法以及装置 | |
US10298508B2 (en) | Communication system, receiving-side apparatus and transmission-side apparatus | |
CN109005116B (zh) | 一种报文转发方法及装置 | |
GB2592315A (en) | Methods and systems for sending packets through a plurality of tunnels | |
CN106716974B (zh) | 访问分发方法、装置及系统 | |
CN109936566A (zh) | 一种数据传输方法系统、装置及计算机可读存储介质 | |
CN106034133B (zh) | 一种openflow处理方法、消息处理方法、控制器与交换机 | |
CN105471756A (zh) | 一种数据包处理方法及装置 | |
EP3589024A1 (en) | Method and apparatus for processing message | |
WO2017173601A1 (zh) | 软件定义网络sdn中流量控制方法和设备 | |
CN106789695A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |