一种openflow表达方法、消息处理方法、控制器与交换机的制作方法

文档序号:10666410阅读:307来源:国知局
一种openflow表达方法、消息处理方法、控制器与交换机的制作方法
【专利摘要】本发明实施例公开了一种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协议的规范,兼容性较好。本发明实施例还提供了相关的消息处理方法、控制器与交换机。
【专利说明】
一种openflow表达方法、消息处理方法、控制器与交换机
技术领域
[0001]本发明涉及互联网领域,尤其涉及一种openflow表达方法、消息处理方法、控制器与交换机。
【背景技术】
[0002]开放流(openflow)技术是斯坦福大学提出的一种南向协议,它借鉴IT业的发展过程,通过控制与转发分离,控制集中软件化和转发硬件平台的通用化来加速网络的变革。OpenFlow技术中的重要设备包括控制器与交换机,其中交换机是核心组件,由OpenFlow协议、安全通道和流表三部分组成;控制器通过安全通道下发流表项到交换机的流表中,交换机按照流表进行匹配(match)等操作。但是传统的openflow协议的匹配域没有对范围表达的支持,当需要完成范围表达时,openflow需要通过精确化来表达,比如用户希望对5000-6000端口进行访问控制,使用ACL来做的话,使用I个流表就能够做到;如果用openflow来做,因为openflow不支持范围的表达,所以只能通过精确表达来配置流表项,需要1000次精确表达,生成1000个流表项。这样就浪费了有限的流表资源。
[0003]Openflow协议是通过0FPT_FL0W_M0D消息来配置交换机流表的,0FPT_FL0ff_M0D消息中包括match结构体(即ofp_match结构体)和act1n结构体,其中ofp_match结构体用于描述流表的匹配部分。ofp_match结构体包括多个flow match field结构体,为了实现范围的表达,现阶段的技术中一般在ofp_match结构体中增加新的flow match field结构体,并使用匹配域对应的flow match field结构体以及新增的flow match field结构体,来分别表示匹配域的范围的起始值与结束值。
[0004]但是,Openflow特定协议版本的ofp_match结构体的大小是固定的,现阶段的技术所使用的方法改动了 ofp_match结构体的结构,不符合Openflow协议的规范,破坏了控制器和交换机之间的兼容性,无法后向兼容。

【发明内容】

[0005]本发明实施例提供了一种openflow表达方法,用于在保证兼容性的情况下实现范围的表达。
[0006]本发明实施例的第一方面提供了一种开放流openflow表达方法,包括:
[0007]确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask ;
[0008]生成0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match结构体,所述
ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flowmatch field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围;
[0009]将所述0FPT_FL0W_M0D消息发送给交换机。
[0010]结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括oxm_mask字段与oxm_value字段;
[0011]所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
[0012]或,
[0013]所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
[0014]结合本发明实施例的第一方面或第一方面的第一种实现方式,本发明实施例的第一方面的第二种实现方式中,所述目标匹配域包括:0XM_0F_TCP_SRC域、0XM_0F_TCP_DST域、0FPXMT_0FB_UDP_SRC 域、0FPXMT_0FB_UDP_DST 域、0FPXMT_0FB_SCTP_SRC 域、或 0FPXMT_0FB_SCTP_DST 域。
[0015]本发明实施例的第二方面提供了一种开放流openflow表达方法,包括:
[0016]确定目标匹配域的范围;
[0017]生成第一0FPT_FL0W_M0D 消息,所述第一 0FPT_FL0W_M0D 消息包括 ofp_match 结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match
field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
[0018]将所述第一 0FPT_FL0W_M0D消息发送给交换机;
[0019]生成第二0FPT_FL0W_M0D 消息,所述第二 0FPT_FL0W_M0D 消息包括 ofp_match 结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match
field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
[0020]将所述第二 0FPT_FL0W_M0D消息发送给交换机。
[0021]结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括oxm_mask字段与oxm_value字段;
[0022]所述第一目标flowmatch field结构体中,oxm_hasmask 的取值为 l,oxm_mask字段的取值为全I,oxm_ValUe字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
[0023]本发明实施例的第三方面提供了一种消息处理方法,包括:
[0024]接收控制器发送的0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match
结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow
match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask ;
[0025]根据所述目标flow match field结构体,确定所述目标匹配域的范围。
[0026]结合本发明实施例的第三方面,本发明实施例的第三方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为1,所述目标flowmatch field结构体的身体部包括oxm_mask字段与oxm_value字段;
[0027]所述根据所述目标flow match field结构体,确定所述目标匹配域的范围包括:
[0028]将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oxm_value字段作为所述目标匹配域的范围的结束值;
[0029]或,
[0030]将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
[0031]结合本发明实施例的第三方面或第三方面的第一种实现方式,本发明实施例的第三方面的第二种实现方式中,所述目标匹配域包括:0XM_0F_TCP_SRC域、0XM_0F_TCP_DST域、0FPXMT_0FB_UDP_SRC 域、0FPXMT_0FB_UDP_DST 域、0FPXMT_0FB_SCTP_SRC 域、或 0FPXMT_0FB_SCTP_DST 域。
[0032]本发明实施例的第四方面提供了一种消息处理方法,包括:
[0033]接收控制器发送的第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0W_M0D消息包括
ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
[0034]从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
[0035]接收控制器发送的第二 0FPT_FL0W_M0D消息,所述第二 0FPT_FL0W_M0D消息包括
ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
[0036]从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
[0037]结合本发明实施例的第四方面,本发明实施例的第四方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为I,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全I ;
[0038]所述从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值包括:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;
[0039]所述从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值包括:将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。
[0040]结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第二种实现方式中,所述接收控制器发送的第一 0FPT_FL0W_M0D消息之后还包括:
[0041 ] 将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为I,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第一目标flow match field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域;
[0042]所述接收控制器发送的第二 0FPT_FL0W_M0D消息之前还包括:
[0043]若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flowmatch field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第二 0FPT_FL0W_M0D消息;
[0044]或,
[0045]所述接收控制器发送的第二 0FPT_FL0W_M0D消息之后还包括:
[0046]将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为I,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第二目标flow match field结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;
[0047]所述接收控制器发送的第一 0FPT_FL0W_M0D消息之前还包括:
[0048]若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flowmatch field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第一 0FPT_FL0W_M0D消息。
[0049]本发明实施例的第五方面提供了一种控制器,包括:
[0050]范围确定模块,用于确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask ;
[0051 ] 消息生成模块,用于生成0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括of p_
match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个
flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围;
[0052]消息发送模块,用于将所述0FPT_FL0W_M0D消息发送给交换机。
[0053]结合本发明实施例的第五方面,本发明实施例的第五方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括oxm_mask字段与oxm_value字段;
[0054]所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
[0055]或,
[0056]所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
[0057]结合本发明实施例的第五方面或第五方面的第一种实现方式,本发明实施例的第五方面的第二种实现方式中,所述目标匹配域包括:0XM_0F_TCP_SRC域、0XM_0F_TCP_DST域、0FPXMT_0FB_UDP_SRC 域、0FPXMT_0FB_UDP_DST 域、0FPXMT_0FB_SCTP_SRC 域、或 0FPXMT_0FB_SCTP_DST 域。
[0058]本发明实施例的第六方面提供了一种控制器,包括:
[0059]确定范围模块,用于确定目标匹配域的范围;
[0060]生成消息模块,用于生成第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
[0061]发送消息模块,用于将所述第一 0FPT_FL0W_M0D消息发送给交换机;
[0062]所述生成消息模块,还用于生成第二 0FPT_FL0W_M0D消息,所述第二 0FPT_FL0W_
MOD消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow matchfield结构体包括所述目标匹配域的范围的结束值;
[0063]所述发送消息模块,还用于将所述第二 0FPT_FL0W_M0D消息发送给交换机。
[0064]结合本发明实施例的第六方面,本发明实施例的第六方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括oxm_mask字段与oxm_value字段;
[0065]所述第一目标flowmatch field结构体中,oxm_hasmask 的取值为 l,oxm_mask字段的取值为全I,oxm_ValUe字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
[0066]本发明实施例的第七方面提供了一种交换机,包括:
[0067]消息接收模块,用于接收控制器发送的0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D
消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask ;
[0068]消息处理模块,用于根据所述目标flow match field结构体,确定所述目标匹配域的范围。
[0069]结合本发明实施例的第七方面,本发明实施例的第七方面的第一种实现方式中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为1,所述目标flowmatch field结构体的身体部包括oxm_mask字段与oxm_value字段;
[0070]所述消息处理模块具体用于:将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oXm_Value字段作为所述目标匹配域的范围的结束值;或,将所述目标flow match f ield结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
[0071]结合本发明实施例的第七方面或第七方面的第一种实现方式,本发明实施例的第七方面的第二种实现方式中,所述目标匹配域包括:0XM_0F_TCP_SRC域、0XM_0F_TCP_DST域、0FPXMT_0FB_UDP_SRC 域、0FPXMT_0FB_UDP_DST 域、0FPXMT_0FB_SCTP_SRC 域、或 0FPXMT_0FB_SCTP_DST 域。
[0072]本发明实施例的第八方面提供了一种种交换机,包括:
[0073]接收消息模块,用于接收控制器发送的第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0ff_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域
--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flowmatch field结构体包括所述目标匹配域的范围的起始值;
[0074]处理消息模块,用于从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
[0075]所述接收消息模块还用于:接收控制器发送的第二 0FPT_FL0W_M0D消息,所述第二 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match
field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
[0076]所述处理消息模块还用于:从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
[0077]结合本发明实施例的第八方面,本发明实施例的第八方面的第一种实现方式中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为I,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全I ;
[0078]所述处理消息模块具体用于:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;将所述第二目标flow match field结构体的0Xm_Value字段作为所述目标匹配域的范围的结束值。
[0079]结合本发明实施例的第八方面的第一种实现方式,本发明实施例的第八方面的第二种实现方式中,所述处理消息模块在接收控制器发送的第一 0FPT_FL0W_M0D消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为I,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第一目标flowmatch field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第二 0FPT_FL0W_M0D消息之前还用于:若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxmjnask字段的取值为全1,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第二 0FPT_FL0W_M0D消息;
[0080]或,所述处理消息模块在接收控制器发送的第二 0FPT_FL0W_M0D消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第二目标flowmatch field结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第一 0FPT_FL0W_M0D消息之前还用于:若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxmjnask字段的取值为全1,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第一 0FPT_FL0W_M0D消息。
[0081]本发明实施例提供的openflow表达方法中,控制器确定目标匹配域的范围;生成0FPT_FL0ff_M0D 消息,该 0FPT_FL0W_M0D 消息包括 ofp_match 结构体,ofp_match 结构体包括多个flow match field结构体,该多个flow match field结构体中包括目标匹配域对应的目标flow match field结构体,该目标flow match field结构体中包括所述目标匹配域的范围;将所述0FPT_FL0W_M0D消息发送给交换机。由于本发明实施例提供的方法可以仅使用一个flow match field结构体即可表示目标匹配域的范围,而不需要两条flowmatch field结构体,因此只需要修改目标匹配域对应的flow match field结构体即可实现范围表达,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
【附图说明】
[0082]图1为Openflow协议中ofp_match结构体的基本结构;
[0083]图2为本发明实施例中openflow表达方法一个实施例流程图;
[0084]图3为本发明实施例中消息处理方法一个实施例流程图;
[0085]图4为本发明实施例中openflow表达方法另一个实施例流程图;
[0086]图5为本发明实施例中消息处理方法另一个实施例流程图;
[0087]图6为本发明实施例中控制器一个实施例结构图;
[0088]图7为本发明实施例中交换机一个实施例结构图;
[0089]图8为本发明实施例中控制器另一个实施例结构图;
[0090]图9为本发明实施例中交换机另一个实施例结构图;
[0091]图10为本发明实施例中控制器或交换机另一个实施例结构图。
【具体实施方式】
[0092]本发明实施例提供了一种openflow表达方法,用于在保证兼容性的情况下实现范围的表达。本发明实施例还提供了相关的控制器与交换机,以下将分别进行描述。
[0093]Openflow协议是通过0FPT_FL0W_M0D消息来配置交换机流表的,0FPT_FL0ff_M0D消息中包括match结构体(即ofp_match结构体)和act1n结构体,其中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字段为O时,身体中只有oxm_value字段,用于表示该匹配域的精确值;当oxm_hasmask字段为I时,身体部里除了 oxm_value字段,还存在一个长度与oxm_value字段一样的oxm_mask字段,oxm_mask字段用于表不bitmask。
[0094]现阶段openflow协议规定的匹配域中,有的匹配域支持bitmask,有的匹配域不支持bitmask,如 0XM_0F_TCP_SRC 域、0XM_0F_TCP_DST 域、0FPXMT_0FB_UDP_SRC 域、0FPXMT_0FB_UDP_DST 域、0FPXMT_0FB_SCTP_SRC 域、或 0FPXMT_0FB_SCTP_DST 域等。对于不支持bitmask的匹配域对应的ofp_match结构体而言,oxm_hasmask字段和oxm_mask字段没有实际意义。且在现阶段的openflow协议中,支持bitmask的匹配域均没有范围表达的需求,只有不支持bitmask的匹配域会需要进行范围表达。因此,不支持bitmask的匹配域对应的oxm_hasmask字段和oxm_mask字段可以用于实现范围的表达。
[0095]在上述论述的基础上,本发明实施例提供了一种openflow表达方法,其基本流程请参阅图2,主要包括:
[0096]201、确定目标匹配域的范围;
[0097]本实施例提供的方法可以实现目标匹配域的范围表达。首先,控制器需要确定目标匹配域以及目标匹配域待表达的范围。其中,目标匹配域不支持bitmask。
[0098]202、生成 0FPT_FL0W_M0D 消息;
[0099]控制器生成0FPT_FL0W_M0D消息,该0FPT_FL0W_M0D消息包括ofp_match结构体,
ofp_match结构体又包括与一个或多个匹配域--对应的一个或多个flow match field
结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow matchfield结构体称为目标flow match field结构体,其中目标flow match field结构体中包括目标匹配域的范围。其中,目标flow match field结构体可以通过很多方式来记录目标匹配域的范围,本实施例中不做限定。
[0100]203、将0FPT_FL0W_M0D消息发送给交换机。
[0101]控制器将生成的0FPT_FL0W_M0D消息发送给交换机,使得交换机可以根据该0FPT_FL0ff_M0D消息获知目标匹配域的范围,进而配置范围流表。
[0102]本实施例提供的openflow表达方法中,控制器确定目标匹配域的范围;生成0FPT_FL0ff_M0D 消息,所述 0FPT_FL0W_M0D 消息包括 ofp_match 结构体,所述 ofp_match 结构体包括目标匹配域对应的目标flow match field结构体,该目标flow match field结构体中包括目标匹配域的范围;将所述0FPT_FL0W_M0D消息发送给交换机。由于本发明实施例提供的方法可以仅使用一个flow match field结构体即可表示目标匹配域的范围,而不需要两条flow match field结构体,因此只需要修改目标匹配域对应的flow match field结构体即可即可实现范围表达,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
[0103]特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为I。由于该目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxm_mask字段没有实际意义,可以用于实现范围的表达。具体的,可以用oxm_mask字段表示目标匹配域的范围的起始值,0Xm_Value字段表示目标匹配域的范围的结束值,或用oxmjnask字段表示目标匹配域的范围的结束值,oxm_value字段表示目标匹配域的范围的起始值,此处不做限定。
[0104]上述实施例给出了控制器进行openflow表达的具体方法,下面的实施例将描述当控制器使用上述openflow表达方法时,交换机对应使用的消息处理方法,其基本流程请参阅图3,包括:
[0105]301、接收控制器发送的0FPT_FL0W_M0D消息;
[0106]交换机接收控制器发送的0FPT_FL0W_M0D消息,0FPT_FL0ff_M0D消息中包括
ofp_match结构体,ofp_match结构体包括与一个或多个匹配域--对应的一个或多个
flow match field结构体,该一个或多个匹配域中包括目标匹配域,该目标匹配域不支持bitmask。目标匹配域对应的flow match field结构体称为目标flow match field结构体,其中,目标flow match field结构体中包括目标匹配域的范围。
[0107]302、根据目标flow match field结构体,确定目标匹配域的范围。
[0108]交换机根据目标flow match field结构体,确定目标匹配域的范围。确定了目标匹配域的范围之后,交换机可以根据目标匹配域的范围,配置范围流表。
[0109]本实施例提供的消息处理方法中,交换机接收控制器发送的0FPT_FL0W_M0D消息,其中,0FPT_FL0W_M0D消息中包括目标flow match field结构体,目标flow matchfield结构体中包括目标匹配域的范围。交换机根据目标flow match field结构体,确定目标匹配域的范围。本实施例提供的方法中,交换机仅从一个目标flow match field结构体中获知目标匹配域的范围,而不需要两条flow match field结构体,因此不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
[0110]特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为I。由于目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxm_mask字段没有实际意义,可以用于实现范围的表达。具体的,交换机可以将oxm_hasmask字段为I的flow match field结构体确定为flow match field结构体,并将目标flow match field结构体的oxm_mask字段作为目标匹配域的范围的起始值,将oxm_value字段作为目标匹配域的范围的结束值;交换机也可以将目标flow match field结构体的oxmjnask字段作为目标匹配域的范围的结束值,将0Xm_valUe字段作为目标匹配域的范围的起始值,本实施例中不做限定,但交换机对oxm_mask字段、oxm_value字段的含义的规定应与对应控制器的规定一致。
[0111]上述实施例中,目标匹配域均不支持bitmask,由于现阶段的openf low协议中,支持bitmask的匹配域均没有范围表达的需求,只有不支持bitmask的匹配域会需要进行范围表达,而不支持bitmask的匹配域对应的ofp_match结构体中,oxm_hasmask字段和oxm_mask字段没有实际意义,因此将目标匹配域对应的oxm_hasmask字段和oxm_mask字段用于实现范围的表达。但未来若openflow协议发生演进,原本不支持bitmask的匹配域也有可能支持bitmask,导致支持bitmask的域也需要进行范围表达。针对这一潜在需求,本发明提供了另一种openflow表达方法,其基本流程请参阅图4,主要包括:
[0112]401、确定目标匹配域的范围;
[0113]本实施例提供的方法可以实现目标匹配域的范围表达。首先,控制器需要确定目标匹配域以及目标匹配域待表达的范围。本实施例中,目标匹配域可以支持bitmask,也可以不支持bitmask,本实施例中不做限定。
[0114]402、生成第一 0FPT_FL0W_M0D 消息;
[0115]控制器生成第一0FPT_FL0W_M0D 消息,该第一 0FPT_FL0W_M0D 消息包括 ofp_match
结构体,ofp_match结构体又包括与一个或多个匹配域--对应的一个或多个flow match
field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flowmatch field结构体称为第一目标flow match field结构体,第一目标flow match field结构体中包括目标匹配域的范围的起始值。
[0116]403、将第一 0FPT_FL0W_M0D消息发送给交换机;
[0117]控制器将生成的第一 0FPT_FL0W_M0D消息发送给交换机,使得交换机可以根据该第一 0FPT_FL0W_M0D消息获知目标匹配域的范围的起始值。
[0118]404、生成第二 0FPT_FL0W_M0D 消息;
[0119]控制器生成第二 0FPT_FL0W_M0D消息,该第二 0FPT_FL0W_M0D消息具有与第一0FPT_FL0ff_M0D消息相似的结构,具体包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域--对应的一个或多个flow match field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow match field结构体称为第二目标flow match field结构体,第二目标flow match field结构体中包括目标匹配域的范围的结束值。
[0120]405、将第二 0FPT_FL0W_M0D消息发送给交换机。
[0121]控制器将生成的第二 0FPT_FL0W_M0D消息发送给交换机,使得交换机可以根据该第二 0FPT_FL0W_M0D消息获知目标匹配域的范围的结束值。
[0122]其中,步骤404和/或405也可以位于步骤402或403之前,本实施例中不做限定。其中,交换机接收到第一与第二 0FPT_FL0W_M0D消息后,就可以获知目标匹配域的范围的起始值与结束值,进而配置范围流表。
[0123]本实施例提供的openflow表达方法中,控制器确定目标匹配域的范围;生成第一0FPT_FL0ff_M0D消息,该第一 0FPT_FL0W_M0D消息包括目标匹配域的范围的起始值;控制器将该第一 0FPT_FL0W_M0D消息发送给交换机;生成第二 0FPT_FL0W_M0D消息,该第二 0FPT_FL0ff_M0D消息包括目标匹配域的范围的起结束值;控制器将该第二 0FPT_FL0W_M0D消息发送给交换机,使得交换机能够获知目标匹配域的范围。本发明实施例提供的方法仅使用两条0FPT_FL0W_M0D消息来表达目标匹配域的范围,且每条0FPT_FL0W_M0D消息中只改变了目标匹配域对应的一个flow match field结构体,不需要在ofp_match结构体中新增flowmatch field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
[0124]图4所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为l,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全I的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;第二目标flow match field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
[0125]图4所示的实施例给出了控制器进行openflow表达的具体方法,下面的实施例将描述当控制器使用该openflow表达方法时,交换机对应使用的消息处理方法,其基本流程请参阅图5,包括:
[0126]501、接收控制器发送的第一 0FPT_FL0W_M0D消息;
[0127]交换机接收控制器发送的第一 0FPT_FL0W_M0D消息,该第一 0FPT_FL0W_M0D消息包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域--对应的一个或多个flow match field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow match field结构体称为第一目标flow match field结构体,第一目标flow match field结构体中包括目标匹配域的范围的起始值。
[0128]502、从第一目标flow match field结构体中获取目标匹配域的范围的起始值;
[0129]交换机从第一 0FPT_FL0W_M0D内的第一目标flow match field结构体中,获取所述目标匹配域的范围的起始值。
[0130]503、接收控制器发送的第二 0FPT_FL0W_M0D消息;
[0131 ] 交换机接收控制器发送的第二 0FPT_FL0W_M0D消息,该第二 0FPT_FL0W_M0D消息具有与第一 0FPT_FL0W_M0D消息相似的结构,具体包括ofp_match结构体,ofp_match结构体又包括与一个或多个匹配域--对应的一个或多个flow match field结构体。其中,该一个或多个匹配域中包括目标匹配域,与目标匹配域对应的flow match field结构体称为第二目标flow match field结构体,第二目标flow match field结构体中包括目标匹配域的范围的结束值。
[0132]504、从第二目标flow match field结构体中获取目标匹配域的范围的结束值。
[0133]交换机从第二 0FPT_FL0W_M0D内的第二目标flow match field结构体中,获取所述目标匹配域的范围的结束值。
[0134]其中,步骤503和/或504也可以位于步骤501或502之前,本实施例中不做限定。
[0135]其中,交换机获知了目标匹配域的起始值与结束值后,就可以根据目标匹配域的范围配置范围流表。
[0136]本实施例提供的消息处理方法中,交换机接收控制器发送的第一 0FPT_FL0W_M0D消息,并从第一目标flow match field结构体中获取目标匹配域的范围的起始值;接收控制器发送的第二 0FPT_FL0W_M0D消息,并从第二目标flow match field结构体中获取目标匹配域的范围的结束值,这样交换机就可以获知目标匹配域的表达范围。本发明实施例提供的方法仅使用两条0FPT_FL0W_M0D消息来表达目标匹配域的范围,且每条0FPT_FL0W_MOD消息中只改变了目标匹配域对应的一个flow match field结构体,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
[0137]图5所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为l,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全I的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1,交换机将第一目标flowmatch field结构体的oxm_value字段作为目标匹配域的范围的起始值,将第二目标flowmatch field结构体的oxm_value字段作为目标匹配域的范围的结束值。
[0138]其中,为了能够确定目标匹配域的范围,交换机需要从接收到的多条0FPT_FL0W_MOD消息中,确定包括了目标匹配域的起始值与结束值的两条0FPT_FL0W_M0D消息。以交换机先接收第一 0FPT_FL0W_M0D消息,再接收第二 0FPT_FL0W_M0D消息为例,具体的:若交换机接收到了 0FPT_FL0W_M0D消息,该消息中有一个flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则交换机将该flow matchfield结构体对应的匹配域确定为目标匹配域,由于交换机中没有保存目标匹配域的范围的起始值,故交换机确定该flow match field结构体为第一目标flow match field结构体,该0FPT_FL0W_M0D消息为第一 0FPT_FL0W_M0D消息。交换机确定第一目标flow matchfield结构体中,0Xm_Value字段为目标匹配域的范围的起始值,并保存该目标匹配域的起始值。当控制器再次接收到0FPT_FL0W_M0D消息,且该0FPT_FL0W_M0D消息中与目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I时,由于交换机已经保存了目标匹配域的范围的起始值,所以交换机将再次接收到的0FPT_FL0W_M0D消息确定为第二 0FPT_FL0W_M0D消息,并将第二 0FPT_FL0W_M0D消息中,目标匹配域对应的flow match field结构体中的oxm_value字段作为目标匹配域的范围的结束值。当交换机先接收第二 0FPT_FL0W_M0D消息,再接收第一 0FPT_FL0ff_M0D消息时,确定第一 0FPT_FL0W_M0D消息的方法与上述方法类似,此处不做赘述。
[0139]为了便于理解上述实施例,下面以上述实施例的具体应用场景为例进行描述。
[0140]应用场景一:
[0141]用户通过操作指令告知控制器对0XM_0F_TCP_SRC域的5000-6000端口进行安全控制,控制器确定0XM_0F_TCP_SRC域为目标匹配域,并确定0XM_0F_TCP_SRC域的表达范围为5000-6000。控制器根据该表达范围生成0FPT_FL0W_M0D消息,该消息中,0XM_0F_TCP_SRC域对应的flow matchfield结构体中的oxm_hasmask字段为1,oxm_mask字段的值为起始端口 5000,oxm_value字段的值为结束端口 6000。控制器将该0FPT_FL0W_M0D消息发送给交换机。
[0142]交换机接收该0FPT_FL0W_M0D消息,并确定oxm_hasmask字段为I的0XM_0F_TCP_SRC域为需要进行范围表达的目标匹配域。交换机将0XM_0F_TCP_SRC域对应的flow matchfield结构体中,oxmjnask字段的值5000作为0XM_0F_TCP_SRC域的范围的起始值,将oxm_value字段的值6000作为0XM_0F_TCP_SRC域的范围的结束值。于是,交换机确定了 0ΧΜ_0F_TCP_SRC域的范围为5000-6000,并根据0XM_0F_TCP_SRC域的范围生成范围流表。
[0143]应用场景二:
[0144]用户通过操作指令告知控制器对5000-6000端口进行控制,控制器确定0XM_0F_TCP_SRC域为目标匹配域,并确定0XM_0F_TCP_SRC域的表达范围为5000-6000。控制器根据该表达范围生成第一 OFPT_FLOW_MOD消息与第二 OFPT_FLOW_MOD消息,第一 OFPT_FLOW_MOD消息中,0XM_0F_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxmjnask字段的值为全1,oxm_value字段的值为起始端口 5000。第二 0FPT_FL0W_M0D消息中,0XM_0F_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为全1,oxm_value字段的值为结束端口 6000。控制器先将第一 0FPT_FL0ff_M0D消息发送给交换机,再将第二 0FPT_FL0W_M0D消息发送给交换机。
[0145]交换机先接收第一 0FPT_FL0W_M0D消息,并确定oxm_hasmask字段为1,且oxm_mask字段的值为全I的0XM_0F_TCP_SRC域为需要进行范围表达的目标匹配域。由于交换机中没有保存0XM_0F_TCP_SRC域的范围的起始值,故交换机将0XM_0F_TCP_SRC域确定为目标匹配域,并将0XM_0F_TCP_SRC域对应的flow match field结构体中,oxm_value字段的值5000作为0XM_0F_TCP_SRC域的范围的起始值,并保存0XM_0F_TCP_SRC域的范围的起始值5000。交换机之后再次接收到0FPT_FL0W_M0D消息,其中0XM_0F_TCP_SRC域对应的flow match field结构体中oxm_hasmask字段为I且oxm_mask字段的值为全I。由于交换机已经保存了 0XM_0F_TCP_SRC域的范围的起始值,故交换机将再次接收到的0FPT_FL0W_MOD 消息确定为第二 0FPT_FL0W_M0D 消息,并将第二 0FPT_FL0W_M0D 消息中,0XM_0F_TCP_SRC域对应的flow match field结构体中的oxm_value字段的值6000作为0XM_0F_TCP_SRC域的范围的结束值。于是,交换机确定了 0XM_0F_TCP_SRC域的范围为5000-6000,并根据0XM_0F_TCP_SRC域的范围生成范围流表。
[0146]本发明实施例还提供了相关的控制器与交换机,用于实现上述实施例中描述的方法。本发明实施例提供的控制器的基本结构请参阅图6,主要包括:
[0147]范围确定模块601,用于确定目标匹配域的范围,其中目标匹配域不支持位掩码bitmask ;
[0148]消息生成模块602,用于生成0FPT_FL0W_M0D消息,其中,0FPT_FL0W_M0D消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,该目标flow match field结构体中包括所述目标匹配域的范围;
[0149]消息发送模块603,用于将该0FPT_FL0W_M0D消息发送给交换机。
[0150]本实施例提供的控制器中,范围确定模块601确定目标匹配域的范围;消息生成模块602生成0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括目标匹配域对应的目标flow match field结构体,该目标flowmatch field结构体中包括目标匹配域的范围;消息发送模块603将所述0FPT_FL0W_M0D消息发送给交换机。由于本发明实施例提供的控制器可以仅使用一个flow match field结构体即可表示目标匹配域的范围,而不需要两条flow match field结构体,因此只需要修改目标匹配域对应的flow match field结构体即可即可实现范围表达,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
[0151]特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为I。由于该目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxm_mask字段没有实际意义,可以用于实现范围的表达。具体的,可以用oxm_mask字段表示目标匹配域的范围的起始值,0Xm_Value字段表示目标匹配域的范围的结束值,或用oxmjnask字段表示目标匹配域的范围的结束值,oxm_value字段表示目标匹配域的范围的起始值,此处不做限定。
[0152]上述实施例给出了控制器的基本结构,下面的实施例将描述与该控制器配套使用的交换机的结构,请参阅图7,包括:
[0153]消息接收模块701,用于接收控制器发送的0FPT_FL0W_M0D消息,该0FPT_FL0W_
MOD消息包括ofp_match结构体,ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,目标flow match field结构体中包括所述目标匹配域的范围,其中,目标匹配域不支持位掩码bitmask ;
[0154]消息处理模块702,用于根据目标flow match field结构体,确定目标匹配域的范围。
[0155]本实施例提供的交换机中,消息接收模块701接收控制器发送的0FPT_FL0W_M0D消息,其中,0FPT_FL0W_M0D消息中包括目标flow match field结构体,目标flow matchfield结构体中包括目标匹配域的范围。消息处理模块702根据目标flow match field结构体,确定目标匹配域的范围。本实施例提供的交换机仅从一个目标flow match field结构体中获知目标匹配域的范围,而不需要两条flow match field结构体,因此不需要在οfp_match结构体中新增f 1w match f ieId结构体,没有改动ofp_match结构体的大小,符合Openflow协议的规范,兼容性较好。
[0156]特别地,作为本发明的又一个实施例,目标flow match field结构体中的oxm_hasmask字段为I。由于目标匹配域不支持bitmask,因此身体部里的oxm_hasmask字段和oxmjnask字段没有实际意义,可以用于实现范围的表达。具体的,消息处理模块702可以将oxm_hasmask字段为I的flow match field结构体确定为flow match field结构体,并将目标flow match field结构体的oxm_mask字段作为目标匹配域的范围的起始值,将oxm_value字段作为目标匹配域的范围的结束值;交换机也可以将目标flow match field结构体的oxmjnask字段作为目标匹配域的范围的结束值,将0Xm_valUe字段作为目标匹配域的范围的起始值,本实施例中不做限定,但交换机对oxm_mask字段、oxm_value字段的含义的规定应与对应控制器的规定一致。
[0157]上述实施例中,目标匹配域均不支持bitmask,由于现阶段的openflow协议中,支持bitmask的匹配域均没有范围表达的需求,只有不支持bitmask的匹配域会需要进行范围表达,而不支持bitmask的匹配域对应的ofp_match结构体中,oxm_hasmask字段和oxm_mask字段没有实际意义,因此将目标匹配域对应的oxm_hasmask字段和oxm_mask字段用于实现范围的表达。但未来若openflow协议发生演进,则原本不支持bitmask的匹配域也有可能支持bitmask,导致支持bitmask的匹配域也需要进行范围表达。针对这一潜在需求,本发明提供了另一种控制器与交换机,其中控制器的结构请参阅图8,主要包括:
[0158]确定范围模块801,用于确定目标匹配域的范围;
[0159]生成消息模块802,用于生成第一 0FPT_FL0W_M0D消息,该第一 0FPT_FL0W_M0D消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,第一目标flow match field结构体包括目标匹配域的范围的起始值;
[0160]发送消息模块803,用于将第一 0FPT_FL0W_M0D消息发送给交换机;
[0161 ] 生成消息模块802还用于生成第二 0FPT_FL0W_M0D消息,其中,第二 0FPT_FL0W_
MOD消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,第二目标flow match field结构体包括目标匹配域的范围的结束值;
[0162]发送消息模块803还用于将第二 0FPT_FL0W_M0D消息发送给交换机。
[0163]本实施例提供的控制器中,确定范围模块801确定目标匹配域的范围;生成消息模块802生成第一 0FPT_FL0W_M0D消息,该第一 0FPT_FL0W_M0D消息包括目标匹配域的范围的起始值;发送消息模块803将该第一 0FPT_FL0W_M0D消息发送给交换机;生成消息模块802生成第二 0FPT_FL0W_M0D消息,该第二 0FPT_FL0W_M0D消息包括目标匹配域的范围的起结束值;发送消息模块803将该第二 0FPT_FL0W_M0D消息发送给交换机,使得交换机能够获知目标匹配域的范围。本发明实施例提供的控制器仅使用两条0FPT_FL0W_M0D消息来表达目标匹配域的范围,且每条0FPT_FL0W_M0D消息中只改变了目标匹配域对应的一个flow match field结构体,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
[0164]图8所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为l,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全I的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体中,oxm_hasmask的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的起始值;第二目标flow match field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
[0165]图8所示的实施例给出了控制器的另一种结构,下面的实施例将描述与该控制器配套使用的交换机的结构,请参阅图9,包括:
[0166]接收消息模块901,用于接收控制器发送的第一 0FPT_FL0W_M0D消息,该第一0FPT_FL0ff_M0D消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域
--对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,第一目标flow matchfield结构体包括所述目标匹配域的范围的起始值;
[0167]处理消息模块902,用于从第一目标flow match field结构体中获取目标匹配域的范围的起始值;
[0168]接收消息模块901还用于接收控制器发送的第二 0FPT_FL0W_M0D消息,该第二0FPT_FL0ff_M0D消息包括ofp_match结构体,该ofp_match结构体包括与一个或多个匹配域
--对应的一个或多个flow match field结构体,该一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,第二目标flow matchfield结构体包括所述目标匹配域的范围的结束值;
[0169]处理消息模块902还用于从第二目标flow match field结构体中获取目标匹配域的范围的结束值。
[0170]本实施例提供的交换机中,接收消息模块901接收控制器发送的第一 0FPT_FL0W_MOD消息,处理消息模块902从第一目标flow match field结构体中获取目标匹配域的范围的起始值;接收消息模块901接收控制器发送的第二 0FPT_FL0W_M0D消息,处理消息模块902从第二目标flow match field结构体中获取目标匹配域的范围的结束值,这样交换机就可以获知目标匹配域的表达范围。本发明实施例提供的交换机仅使用两条0FPT_FL0W_MOD消息来确定目标匹配域的范围,且每条0FPT_FL0W_M0D消息中只改变了目标匹配域对应的一个flow match field结构体,不需要在ofp_match结构体中新增flow match field结构体,没有改动ofp_match结构体的大小,因此符合Openflow协议的规范,兼容性较好。
[0171]图9所示的实施例中,目标匹配域可以支持bitmask,而当目标匹配域支持bitmask时,目标匹配域对应的flow match field结构体中的oxm_hasmask字段为l,oxm_mask字段表示bitmask,且oxm_mask字段不能为全1,因此可以用全I的oxm_mask字段来实现范围的表达。具体地,作为本发明的又一个实施例,第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全1,处理消息模块902将第一目标flow match field结构体的oxm_value字段作为目标匹配域的范围的起始值,将第二目标flow match field结构体的oxm_value字段作为目标匹配域的范围的结束值。
[0172]其中,为了能够确定目标匹配域的范围,交换机需要从接收到的多条0FPT_FL0W_MOD消息中,确定包括了目标匹配域的起始值与结束值的两条0FPT_FL0W_M0D消息。以交换机先接收第一 0FPT_FL0W_M0D消息,再接收第二 0FPT_FL0W_M0D消息为例,具体的:若交换机的接收消息模块901接收到了 0FPT_FL0W_M0D消息,该消息中有一个flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则处理消息模块902将该flow match field结构体对应的匹配域确定为目标匹配域,由于交换机中没有保存目标匹配域的范围的起始值,故处理消息模块902确定该flow match field结构体为第一目标flow match field结构体,该0FPT_FL0W_M0D消息为第一 0FPT_FL0W_MOD消息。处理消息模块902确定第一目标flow match field结构体中,oxm_value字段为目标匹配域的范围的起始值,并保存该目标匹配域的起始值。当接收消息模块901再次接收到0FPT_FL0W_M0D消息,且该0FPT_FL0W_M0D消息中与目标匹配域对应的flow matchfield结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I时,由于处理消息模块902已经保存了目标匹配域的范围的起始值,所以处理消息模块902将再次接收到的0FPT_FL0W_M0D消息确定为第二 0FPT_FL0W_M0D消息,并将第二 0FPT_FL0W_M0D消息中,目标匹配域对应的flow match field结构体中的oxm_value字段作为目标匹配域的范围的结束值。当交换机先接收第二 0FPT_FL0W_M0D消息,再接收第一 0FPT_FL0ff_M0D消息时,确定第一 0FPT_FL0W_M0D消息的方法与上述方法类似,此处不做赘述。
[0173]为了便于理解上述实施例,下面以上述实施例的具体应用场景为例进行描述。
[0174]应用场景三:
[0175]用户通过操作指令告知控制器对0XM_0F_TCP_SRC域的5000-6000端口进行安全控制,控制器的范围确定模块确定OXM_OF_TCP_SRC域为目标匹配域,并确定OXM_OF_TCP_SRC域的表达范围为5000-6000。控制器的消息生成模块根据该表达范围生成OFPT_FLOW_MOD消息,该消息中,0XM_0F_TCP_SRC域对应的flow match field结构体中的oxm_hasmask字段为1,oxmjnask字段的值为起始端口 5000,oxm_value字段的值为结束端口 6000。控制器的消息发送模块将该0FPT_FL0W_M0D消息发送给交换机。
[0176]交换机接的消息接收模块接收该0FPT_FL0W_M0D消息,消息处理模块确定oxm_hasmask字段为I的0XM_0F_TCP_SRC域为需要进行范围表达的目标匹配域。消息处理模块将0XM_0F_TCP_SRC域对应的flow match field结构体中,oxmjnask字段的值5000作为0XM_0F_TCP_SRC域的范围的起始值,将oxm_value字段的值6000作为0XM_0F_TCP_SRC域的范围的结束值。于是,交换机确定了 0XM_0F_TCP_SRC域的范围为5000-6000,并根据0XM_0F_TCP_SRC域的范围生成范围流表。
[0177]应用场景二:
[0178]用户通过操作指令告知控制器对5000-6000端口进行控制,控制器的确定范围模块确定0XM_0F_TCP_SRC域为目标匹配域,并确定0XM_0F_TCP_SRC域的表达范围为5000-6000ο控制器的生成消息模块根据该表达范围生成第一 0FPT_FL0W_M0D消息与第二0FPT_FL0ff_M0D 消息,第一 0FPT_FL0W_M0D 消息中,0XM_0F_TCP_SRC 域对应的 flow matchfield结构体中的oxm_hasmask字段为1,oxm_mask字段的值为全l,oxm_value字段的值为起始端口 5000。第二 0FPT_FL0W_M0D 消息中,0XM_0F_TCP_SRC域对应的 flow match field结构体中的oxm_hasmask字段为1,oxm_mask字段的值为全1,oxm_value字段的值为结束端口 6000。控制器的发送消息模块先将第一 0FPT_FL0W_M0D消息发送给交换机,再将第二0FPT_FL0ff_M0D消息发送给交换机。
[0179]交换机的接收消息模块先接收第一 0FPT_FL0W_M0D消息,处理消息模块确定oxm_hasmask字段为1,且oxmjnask字段的值为全I的0XM_0F_TCP_SRC域为需要进行范围表达的目标匹配域。由于交换机中没有保存0XM_0F_TCP_SRC域的范围的起始值,故处理消息模块将0XM_0F_TCP_SRC域确定为目标匹配域,并将0XM_0F_TCP_SRC域对应的flow matchfield结构体中,oxm_value字段的值5000作为0XM_0F_TCP_SRC域的范围的起始值,并保存0XM_0F_TCP_SRC域的范围的起始值5000。交换机的接收消息模块之后再次接收到0FPT_FL0W_M0D 消息,其中 0XM_0F_TCP_SRC 域对应的 flow match field 结构体中 oxm_hasmask字段为I且oxmjnask字段的值为全I。由于交换机已经保存了 0XM_0F_TCP_SRC域的范围的起始值,故处理消息模块将接收消息模块再次接收到的0FPT_FL0W_M0D消息确定为第二 0FPT_FL0W_M0D 消息,并将第二 0FPT_FL0W_M0D 消息中,0XM_0F_TCP_SRC 域对应的 flowmatch field结构体中的oxm_value字段的值6000作为0XM_0F_TCP_SRC域的范围的结束值。于是,交换机确定了 0XM_0F_TCP_SRC域的范围为5000-6000,并根据0XM_0F_TCP_SRC域的范围生成范围流表。
[0180]上面从单元化功能实体的角度对本发明实施例中的控制器进行了描述,下面从硬件处理的角度对本发明实施例中的控制器进行描述,请参阅图10,本发明实施例中的控制器1000另一实施例包括:
[0181]输入装置1001、输出装置1002、处理器1003和存储器1004(其中控制器1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
[0182]其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
[0183]确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask ;
[0184]生成0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match结构体,所述
ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flowmatch field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围;
[0185]将所述0FPT_FL0W_M0D消息发送给交换机。
[0186]本发明的一些实施例中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括oxm_mask字段与oxm_value字段;
[0187]所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的起始值,oxm_value字段表示所述目标匹配域的范围的结束值;
[0188]或,
[0189]所述目标flow match field结构体中,oxm_hasmask字段的取值为1,oxm_mask字段表示所述目标匹配域的范围的结束值,oxm_value字段表示所述目标匹配域的范围的起始值。
[0190]本发明的一些实施例中,所述目标匹配域包括:0XM_0F_TCP_SRC域、0XM_0F_TCP_DST 域、0FPXMT_0FB_UDP_SRC 域、0FPXMT_0FB_UDP_DST 域、0FPXMT_0FB_SCTP_SRC 域、或0FPXMT_0FB_SCTP_DST 域。
[0191]下面从硬件处理的角度对本发明实施例中提供的交换机进行描述,请仍参阅图10,本发明实施例中的交换机1000另一实施例包括:
[0192]输入装置1001、输出装置1002、处理器1003和存储器1004(其中交换机1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
[0193]其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
[0194]接收控制器发送的0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match
结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow
match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask ;
[0195]根据所述目标flow match field结构体,确定所述目标匹配域的范围。
[0196]本发明的一些实施例中,每个所述flow match field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,所述目标flow match field结构体的oxm_hasmask字段的取值为I,所述目标flow match field结构体的身体部包括oxm_mask字段与oxm_value字段;
[0197]所述根据所述目标flow match field结构体,确定所述目标匹配域的范围包括:
[0198]将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的起始值,将oxm_value字段作为所述目标匹配域的范围的结束值;
[0199]或,
[0200]将所述目标flow match field结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。
[0201 ] 本发明的一些实施例中,所述目标匹配域包括:0XM_0F_TCP_SRC域、0XM_0F_TCP_DST 域、0FPXMT_0FB_UDP_SRC 域、0FPXMT_0FB_UDP_DST 域、0FPXMT_0FB_SCTP_SRC 域、或0FPXMT_0FB_SCTP_DST 域。
[0202]下面从硬件处理的角度对本发明实施例中提供的另一种控制器进行描述,请仍参阅图10,本发明实施例中的控制器1000另一实施例包括:
[0203]输入装置1001、输出装置1002、处理器1003和存储器1004(其中控制器1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
[0204]其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
[0205]确定目标匹配域的范围;
[0206]生成第一0FPT_FL0W_M0D 消息,所述第一 0FPT_FL0W_M0D 消息包括 ofp_match 结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match
field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
[0207]将所述第一 0FPT_FL0W_M0D消息发送给交换机;
[0208]生成第二0FPT_FL0W_M0D 消息,所述第二 0FPT_FL0W_M0D 消息包括 ofp_match 结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match
field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
[0209]将所述第二 0FPT_FL0W_M0D消息发送给交换机。
[0210]本发明的一些实施例中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括oxm_mask 字段与 oxm_value 字段;
[0211]所述第一目标flowmatch field结构体中,oxm_hasmask 的取值为 l,oxm_mask字段的取值为全I,oxm_ValUe字段表示所述目标匹配域的范围的起始值;所述第二目标flowmatch field中,oxm_hasmask字段的取值为1,oxm_mask字段的取值为全1,oxm_value字段表示所述目标匹配域的范围的结束值。
[0212]下面从硬件处理的角度对本发明实施例中提供的另一种交换机进行描述,请仍参阅图10,本发明实施例中的交换机1000另一实施例包括:
[0213]输入装置1001、输出装置1002、处理器1003和存储器1004(其中交换机1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)ο在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
[0214]其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
[0215]接收控制器发送的第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0W_M0D消息包括
ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值;
[0216]从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值;
[0217]接收控制器发送的第二 0FPT_FL0W_M0D消息,所述第二 0FPT_FL0W_M0D消息包括
ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值;
[0218]从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。
[0219]本发明的一些实施例中,每个所述flow match field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flowmatch field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全I ;
[0220]处理器1003还执行如下步骤:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;
[0221]处理器1003还执行如下步骤:将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。
[0222]本发明的一些实施例中,处理器1003还执行如下步骤:
[0223]将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为I,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第一目标flow match field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域;若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第二 0FPT_FL0W_M0D消息;
[0224]或,将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第二目标flow match field结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为I,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的OFPT_FLOW_MOD消息确定为第一 OFPT_FLOW_MOD消息。
[0225]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0226]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0227]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0228]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0229]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0230]以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种开放流openf low表达方法,其特征在于,包括: 确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask ; 生成0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flowmatch field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围; 将所述0FPT_FL0W_M0D消息发送给交换机。2.根据权利要求1所述的openflow表达方法,其特征在于,每个所述flowmatchfield结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括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表达方法,其特征在于,所述目标匹配域包括:0XM_0F_TCP_SRC 域、0XM_0F_TCP_DST 域、OFPXMT_OFB_UDP_SRC 域、OFPXMT_OFB_UDP_DST 域、OFPXMT_OFB_SCTP_SRC 域、或 OFPXMT_OFB_SCTP_DST 域。4.一种开放流openflow表达方法,其特征在于,包括: 确定目标匹配域的范围; 生成第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值; 将所述第一 0FPT_FL0W_M0D消息发送给交换机; 生成第二 0FPT_FL0W_M0D消息,所述第二 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值; 将所述第二 0FPT_FL0W_M0D消息发送给交换机。5.根据权利要求4所述的openflow表达方法,其特征在于,每个所述flowmatchfield结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括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结构体,确定所述目标匹配域的范围。7.根据权利要求6所述的消息处理方法,其特征在于,每个所述flowmatch 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字段作为所述目标匹配域的范围的起始值。8.根据权利要求6或7所述的消息处理方法,其特征在于,所述目标匹配域包括:0XM_0F_TCP_SRC 域、0XM_0F_TCP_DST 域、OFPXMT_OFB_UDP_SRC 域、OFPXMT_OFB_UDP_DST 域、OFPXMT_OFB_SCTP_SRC 域、或 OFPXMT_OFB_SCTP_DST 域。9.一种消息处理方法,其特征在于,包括: 接收控制器发送的第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值; 从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值; 接收控制器发送的第二 0FPT_FL0W_M0D消息,所述第二 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match 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字段的取值为全I ; 所述从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值包括:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值; 所述从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值包括:将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。11.根据权利要求10所述的消息处理方法,其特征在于,所述接收控制器发送的第一0FPT_FL0ff_M0D消息之后还包括: 将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第一目标flowmatch field结构体,并将所述第一目标flow match field结构体对应的匹配域确定为目标匹配域; 所述接收控制器发送的第二 0FPT_FL0W_M0D消息之前还包括: 若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow matchfield结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第二 0FPT_FL0W_M0D消息; 或, 所述接收控制器发送的第二 0FPT_FL0W_M0D消息之后还包括: 将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第二目标flowmatch field结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域; 所述接收控制器发送的第一 0FPT_FL0W_M0D消息之前还包括: 若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow matchfield结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第一 0FPT_FL0W_M0D消息。12.一种控制器,其特征在于,包括: 范围确定模块,用于确定目标匹配域的范围,所述目标匹配域不支持位掩码bitmask ; 消息生成模块,用于生成0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围; 消息发送模块,用于将所述0FPT_FL0W_M0D消息发送给交换机。13.根据权利要求12所述的控制器,其特征在于,每个所述flowmatch field结构体中包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括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所述的控制器,其特征在于,所述目标匹配域包括:0XM_0F_TCP_SRC 域、0XM_0F_TCP_DST 域、OFPXMT_OFB_UDP_SRC 域、OFPXMT_OFB_UDP_DST 域、0FPXMT_OFB_SCTP_SRC 域、或 OFPXMT_OFB_SCTP_DST 域。15.一种控制器,其特征在于,包括: 确定范围模块,用于确定目标匹配域的范围; 生成消息模块,用于生成第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第一目标flow match field结构体,所述第一目标flow match field结构体包括所述目标匹配域的范围的起始值; 发送消息模块,用于将所述第一 0FPT_FL0W_M0D消息发送给交换机; 所述生成消息模块,还用于生成第二 0FPT_FL0W_M0D消息,所述第二 0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与所述目标匹配域对应的第二目标flow match field结构体,所述第二目标flow match field结构体包括所述目标匹配域的范围的结束值; 所述发送消息模块,还用于将所述第二 0FPT_FL0W_M0D消息发送给交换机。16.根据权利要求15所述的控制器,其特征在于,每个所述flowmatch field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,当所述oxm_hasmask字段的取值为I时,所述身体部包括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.一种交换机,其特征在于,包括: 消息接收模块,用于接收控制器发送的0FPT_FL0W_M0D消息,所述0FPT_FL0W_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的目标flow match field结构体,所述目标flow match field结构体中包括所述目标匹配域的范围,其中,所述目标匹配域不支持位掩码bitmask ; 消息处理模块,用于根据所述目标flow match field结构体,确定所述目标匹配域的范围。18.根据权利要求17所述的交换机,其特征在于,每个所述flowmatch 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 f ield结构体的oxm_mask字段作为所述目标匹配域的范围的结束值,将oxm_value字段作为所述目标匹配域的范围的起始值。19.根据权利要求17或18所述的交换机,其特征在于,所述目标匹配域包括:0XM_0F_TCP_SRC 域、0XM_0F_TCP_DST 域、OFPXMT_OFB_UDP_SRC 域、OFPXMT_OFB_UDP_DST 域、0FPXMT_OFB_SCTP_SRC 域、或 OFPXMT_OFB_SCTP_DST 域。20.一种交换机,其特征在于,包括: 接收消息模块,用于接收控制器发送的第一 0FPT_FL0W_M0D消息,所述第一 0FPT_FL0ff_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第一目标flow match field结构体,所述第一目标flowmatch field结构体包括所述目标匹配域的范围的起始值; 处理消息模块,用于从所述第一目标flow match field结构体中获取所述目标匹配域的范围的起始值; 所述接收消息模块还用于:接收控制器发送的第二 0FPT_FL0W_M0D消息,所述第二0FPT_FL0ff_M0D消息包括ofp_match结构体,所述ofp_match结构体包括与一个或多个匹配域--对应的一个或多个flow match field结构体,所述一个或多个flow match field结构体中包括与目标匹配域对应的第二目标flow match field结构体,所述第二目标flowmatch field结构体包括所述目标匹配域的范围的结束值; 所述处理消息模块还用于:从所述第二目标flow match field结构体中获取所述目标匹配域的范围的结束值。21.根据权利20所述的交换机,其特征在于,每个所述flowmatch field结构体包括头部与身体部,所述头部包括oxm_hasmask字段,所述第一目标flow match field结构体与第二目标flow match field结构体中:oxm_hasmask字段的取值为1,身体部包括oxm_mask字段与oxm_value字段,其中oxm_mask字段的取值为全I ; 所述处理消息模块具体用于:将所述第一目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的起始值;将所述第二目标flow match field结构体的oxm_value字段作为所述目标匹配域的范围的结束值。22.根据权利要求21所述的交换机,其特征在于,所述处理消息模块在接收控制器发送的第一 0FPT_FL0W_M0D消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I的flowmatch field结构体,确定为第一目标flow match field结构体,并将所述第一目标flowmatch field结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第二 0FPT_FL0W_M0D消息之前还用于:若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxmjnask字段的取值为全I,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第二 OFPT_FLOW_MOD 消息; 或,所述处理消息模块在接收控制器发送的第二 OFPT_FLOW_MOD消息之后还用于:将所述一个或多个flow match field结构体中,头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全I的flow match field结构体,确定为第二目标flow matchfield结构体,并将所述第二目标flow match field结构体对应的匹配域确定为目标匹配域;所述处理消息模块在接收控制器发送的第一 0FPT_FL0W_M0D消息之前还用于:若所述控制器发送的0FPT_FL0W_M0D消息中,与所述目标匹配域对应的flow match field结构体的头部的oxm_hasmask字段的取值为1,且身体部oxm_mask字段的取值为全1,则将所述控制器发送的0FPT_FL0W_M0D消息确定为第一 0FPT_FL0W_M0D消息。
【文档编号】H04L29/06GK106034133SQ201510122496
【公开日】2016年10月19日
【申请日】2015年3月19日
【发明人】杨永强
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1