处理规则的修改方法、装置及设备与流程

文档序号:15878345发布日期:2018-11-09 17:24阅读:166来源:国知局
本发明涉及通信领域,尤其涉及处理规则的修改方法、装置及设备。
背景技术
:为解决网元的部署灵活性和可管理性,业界提出了软件定义网络(sdn,software-definednetwork)的概念。sdn通过将网元的控制逻辑和转发功能解耦,并将控制逻辑进行集中部署,使得对网络的控制和维护工作能够简单地通过对控制面设备的操作实现,从而提高网络的管理效率,并使得转发面设备更为简单化,有利于实现转发面设备的高性能和可重用性。在实际应用中,sdn网络中一般包括作为控制面设备的控制器和作为转发面设备的转发器,控制器通过控制转发器上的处理规则实现对数据报文处理流程的控制,每个处理规则包括匹配域信息及由一个或多个动作指令组成的指令集,所述匹配域信息用于确定待匹配的数据报文,即与该处理规则对应的数据报文,所述指令集用于指示根据所述指令集中的所述动作指令对所述处理规则对应的数据报文进行处理。每个动作指令又可选地包括动作类型及动作参数;本发明中将动作类型和动作参数统称为动作指令的动作变量。通常,处理规则还可以包括处理规则的标识或者索引。处理规则的匹配域信息和处理规则的标识或者索引可以称为该处理规则的规则描述信息,该处理规则的规则描述信息可以用于标识该处理规则。值得注意的是,这里规则描述信息用于标识处理规则,并不一定是指唯一标识处理规则,不同的处理规则可以有相同的规则描述信息。开放流(openflow)协议是sdn网络中最典型和应用最多的协议。openflow协议中的网元包括开放流控制器(openflowcontroller)和开放流转发器(openflowswitch),以下分别简称为of控制器和of转发器。openflow协议中的数据报文处理以业务流为粒度,每个业务流可以采用源媒体接入控制(mac)地址、目的mac地址、源互联网协议(ip)地址、目的ip地址、源端口号、目的端口号等不同的报文头域的组合来表示。of转发器将这些流粒度的处理规则存储在of转发器的流表中,因此openflow协议中的处理规则又被称为流表项,每个流表项的组成结构如下表1所示:表1matchfieldsprioritycountersinstructionstimeoutscookie其中,每个流表项包括:匹配域(matchfields)、优先权(priority)、计数器(counters)、指令集(instructions)、超时(timeouts)以及暂存(cookie)等部分,所述匹配域可以认为是流表项的规则描述信息,指令集中包括流表项对应的动作指令,每一动作指令的动作变量包括动作类型和动作参数;此时,所述规则描述信息还可以用于确定所述处理规则对应的数据报文,所述处理规则对应的数据报文满足所述规则描述信息。当of转发器接收到用户的数据报文时,对数据报文与各流表项的匹配域进行匹配,并根据匹配成功的流表项对数据报文执行指令集包含的动作,从而实现数据报文的转发、修改等控制处理。openflow协议采用流修改(flow_mod)消息实现对流表项的增加、修改和删除。每个flow_mod消息的主要组成结构如下:flow_mod={消息类型(msgtype),表id(tableid),匹配规则(matchrule),instructions(action1,action2,…actionn)};当执行流表项修改时,flow_mod消息通过包含有msg_type为修改(modify)或严格修改(modify_strict)的标识,分别实现对流表项的非严格匹配修改和严格匹配修改。所谓严格匹配修改,即将匹配域与flow_mod消息携带的匹配规则完全相同的流表项的指令集修改为flow_mod消息携带的指令集。非严格匹配修改,即将所有匹配域被flow_mod消息携带的匹配规则覆盖的流表项的指令集均修改为flow_mod消息携带的指令集。以下举例说明两种修改的区别:对于流表中存储的如下三个流表项(以下举例及后续本发明实施例中仅列出与专利相关的部分流表项内容,其它域如timeouts/cookie与本发明无关,在此不再列举):流表项1:匹配规则(matchrule)(src_ip=ip1,dst_ip=ip2,protocol=tcp,dst_port=80),instructions(action1,action4);流表项2:matchrule(src_ip=ip1,dst_ip=ip2,protocol=udp,dst_port=53),instructions(action2,action4);流表项3:matchrule(src_ip=ip1,dst_ip=ip2),instructions(action3,action4);假设flow_mod消息中携带的信息为:msg_type,matchrule(src_ip=ip1,dst_ip=ip2),instructions(action4,action5);则,如果该flow_mod消息中携带的msg_type为modify_strict,由于仅有流表项3与flow_mod消息中携带的匹配规则完全匹配,因此只将流表项3的instructions替换为instructions(action4,action5);如果flow_mod消息中携带的msg_type为modify,由于流表项1、2、3中均包括flow_mod消息中的匹配规则,因此将流表项1、2、3的instructions均替换为instructions(action4,action5)。从上述描述和实例可以看出,openflow协议所定义的流表项修改方法中,可以通过严格匹配修改或非严格匹配修改,对一个或多个流表项进行批量修改。但这种修改仅限于使用flow_mod消息携带的指令集完全替代流表项原有的指令集。这种流表项的修改方法仅限于使用flow_mod消息携带的指令集完全替代流表项原有的指令集,修改方式过于死板,在很多情况下修改效率低,且较多地占用了of控制器和of转发器之间的通信资源。技术实现要素:本发明实施例提供一种处理规则的修改方法、装置及设备,能够提高转发器中处理规则的修改效率,减少控制器和转发器之间的通信资源占用。第一方面,提供一种处理规则的修改装置,所述修改装置上存有第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识所述第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理;所述装置包括:接收单元,用于接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;修改单元,用于确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,根据所述接收单元接收到的所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。结合第一方面,在第一方面第一种可能的实现方式中,所述动作指令修改信息包括:动作指令匹配条件和修改操作信息;其中,所述动作指令匹配条件用于确定待修改的动作指令,所述修改操作信息用于指示对所述待修改的动作指令的修改操作;所述修改单元包括:指令确定子单元,用于确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令;修改子单元,用于根据所述修改操作信息对所述第一动作指令进行修改。结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述动作指令匹配条件包括位置信息,所述位置信息用于指示所述待修改的动作指令在所述待修改的处理规则的指令集中的位置;所述指令确定子单元具体用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,根据所述位置信息确定所述第一动作指令。结合第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,所述位置信息包括第一掩码,所述第一掩码中每一掩码位的位置对应所述待修改的处理规则的指令集中每一动作指令的位置;所述指令确定子单元具体用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,确定所述第一掩码中具有第一预设数值的掩码位;根据所述具有第一预设数值的掩码位的位置确定所述第一动作指令。结合第一方面第二种可能的实现方式,在第一方面第四种可能的实现方式中,所述位置信息包括修改指示列表,所述修改指示列表包括修改指示,所述修改指示列表中每一修改指示在所述修改指示列表中的位置对应所述待修改的处理规则的指令集中每一动作指令的位置,所述修改指示用于指示是否修改动作指令;所述指令确定子单元具体用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,确定所述修改指示列表中用于指示修改动作指令的修改指示;根据所述用于指示修改动作指令的修改指示在所述修改指示列表中所在的第一位置,确定与所述第一位置对应的所述第一动作指令。结合第一方面第一种可能的实现方式,在第一方面第五种可能的实现方式中,所述动作指令匹配条件包括:指令类型信息,所述指令类型信息用于指示所述待修改的动作指令的指令类型;所述指令确定子单元具体用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,根据所述指令类型信息确定所述第一动作指令。结合第一方面第一种可能的实现方式,和/或第一方面第二种可能的实现方式,和/或第一方面第三种可能的实现方式,和/或第一方面第四种可能的实现方式,和/或第一方面第五种可能的实现方式,在第一方面第六种可能的实现方式中,所述修改操作信息包括:新的动作指令;所述修改子单元具体用于:将所述第一动作指令修改为所述新的动作指令。结合第一方面第一种可能的实现方式,和/或第一方面第二种可能的实现方式,和/或第一方面第三种可能的实现方式,和/或第一方面第四种可能的实现方式,和/或第一方面第五种可能的实现方式,在第一方面第七种可能的实现方式中,所述修改操作信息包括:修改参数指示信息,所述修改参数指示信息用于指示对所述待修改的动作指令的动作变量进行修改;所述修改子单元具体用于:根据所述修改参数指示信息对所述第一动作指令的动作变量进行修改。结合第一方面第七种可能的实现方式,在第一方面第八种可能的实现方式中,所述修改参数指示信息包括参数匹配条件和参数修改操作信息,所述参数匹配条件用于确定所述待修改的动作指令中的待修改的动作变量,所述参数修改操作信息用于指示对所述待修改的动作变量的修改;所述修改子单元包括:确定模块,用于根据所述参数匹配条件确定所述第一动作指令中待修改的第一动作变量;修改模块,用于根据所述参数修改操作信息对所述第一动作变量进行修改。结合第一方面第八种可能的实现方式,在第一方面第九种可能的实现方式中,所述参数修改操作信息包括新的变量值;所述修改模块具体用于:将所述第一动作变量的变量值修改为所述新的变量值。结合第一方面第八种可能的实现方式,在第一方面第十种可能的实现方式中,所述参数修改操作信息包括运算方法信息,所述运算方法信息用于指示获取变量值的运算方法;所述修改模块具体用于:根据所述运算方法信息获取新的变量值;将所述第一动作变量的变量值修改为所述新的变量值。第二方面,提供一种处理规则的修改装置,该装置适用于与转发器进行通信的控制器,所述转发器上存有第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识所述第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理;所述装置包括:生成单元,用于生成规则修改信息;发送单元,用于向所述转发器发送所述生成单元生成的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;以便所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。第三方面,提供一种处理规则的修改方法,适用于转发器,所述转发器上存有第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识所述第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理;所述方法包括:所述转发器接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;当所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,所述转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。结合第三方面,在第三方面第一种可能的实现方式中,所述动作指令修改信息包括:动作指令匹配条件和修改操作信息;其中,所述动作指令匹配条件用于确定待修改的动作指令,所述修改操作信息用于指示对所述待修改的动作指令的修改操作;所述转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改,包括:所述转发器根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令;所述转发器根据所述修改操作信息对所述第一动作指令进行修改。结合第三方面第一种可能的实现方式中,在第三方面第二种可能的实现方式中,所述动作指令匹配条件包括位置信息,所述位置信息用于指示所述待修改的动作指令在所述待修改的处理规则的指令集中的位置;所述转发器根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令包括:所述转发器根据所述位置信息确定所述第一动作指令。结合第三方面第二种可能的实现方式,在第三方面第三种可能的实现方式中,所述位置信息包括第一掩码,所述第一掩码中每一掩码位的位置对应所述待修改的处理规则的指令集中每一动作指令的位置;所述转发器根据所述位置信息确定所述第一动作指令包括:所述转发器确定所述第一掩码中具有第一预设数值的掩码位;所述转发器根据所述具有第一预设数值的掩码位的位置确定所述第一动作指令。结合第三方面第二种可能的实现方式,在第三方面第四种可能的实现方式中,所述位置信息包括修改指示列表,所述修改指示列表包括修改指示,所述修改指示列表中每一修改指示在所述修改指示列表中的位置对应所述待修改的处理规则的指令集中每一动作指令的位置,所述修改指示用于指示是否修改动作指令;所述转发器根据所述位置信息确定所述第一动作指令包括:所述转发器确定所述修改指示列表中用于指示修改动作指令的修改指示;所述转发器根据所述用于指示修改动作指令的修改指示在所述修改指示列表中所在的第一位置,确定所述第一动作指令。结合第三方面第一种可能的实现方式,在第三方面第五种可能的实现方式中,所述动作指令匹配条件包括:指令类型信息,所述指令类型信息用于指示所述待修改的动作指令的指令类型;所述转发器根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令包括:所述转发器根据所述指令类型信息确定所述第一动作指令。结合第三方面第一种可能的实现方式,和/或第三方面第二种可能的实现方式,和/或第三方面第三种可能的实现方式,和/或第三方面第四种可能的实现方式,和/或第三方面第五种可能的实现方式,在第三方面第六种可能的实现方式中,所述修改操作信息包括:新的动作指令;所述转发器根据所述修改操作信息对所述第一动作指令进行修改包括:所述转发器将所述第一动作指令修改为所述新的动作指令。结合第三方面第一种可能的实现方式,和/或第三方面第二种可能的实现方式,和/或第三方面第三种可能的实现方式,和/或第三方面第四种可能的实现方式,和/或第三方面第五种可能的实现方式,在第三方面第七种可能的实现方式中,所述修改操作信息包括:修改参数指示信息,所述修改参数指示信息用于指示对所述待修改的动作指令的动作变量进行修改;所述转发器根据所述修改操作信息对所述第一动作指令进行修改包括:所述转发器根据所述修改参数指示信息对所述第一动作指令的动作变量进行修改。结合第三方面第七种可能的实现方式,在第三方面第八种可能的实现方式中,所述修改参数指示信息包括参数匹配条件和参数修改操作信息,所述参数匹配条件用于确定所述待修改的动作指令中的待修改的动作变量,所述参数修改操作信息用于指示对所述待修改的动作变量的修改;所述转发器根据所述修改参数指示信息对所述第一动作指令的参数进行修改包括:所述转发器根据所述参数匹配条件确定所述第一动作指令中待修改的第一动作变量;所述转发器根据所述参数修改操作信息对所述第一动作变量进行修改。结合第三方面第八种可能的实现方式,在第三方面第九种可能的实现方式中,所述参数修改操作信息包括新的变量值;所述转发器根据所述参数修改操作信息对所述第一动作变量进行修改包括:所述转发器将所述第一动作变量的变量值修改为所述新的变量值。结合第三方面第八种可能的实现方式,在第三方面第十种可能的实现方式中,所述参数修改操作信息包括运算方法信息,所述运算方法信息用于指示获取变量值的运算方法;所述转发器根据所述参数修改操作信息对所述第一动作变量进行修改包括:所述转发器根据所述运算方法信息获取新的变量值;所述转发器将所述第一动作变量的变量值修改为所述新的变量值。第四方面,提供一种处理规则的修改方法,该方法适用于与转发器进行通信的控制器,所述转发器上存有第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识所述第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理;所述方法包括:所述控制器向所述转发器发送规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;以便所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。本发明实施例中,转发器接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,所述转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例处理规则修改方法应用场景结构图;图2本发明处理规则的修改方法第一实施例示意图;图3为本发明处理规则的修改方法第二实施例示意图;图4为本发明处理规则的修改方法第三实施例示意图;图5为本发明处理规则的修改装置第一实施例示意图;图6为本发明处理规则的修改装置第二实施例示意图;图7为本发明转发器结构示意图;图8为本发明控制器结构示意图。具体实施方式在一些场景下流表项指令集中的某些动作指令是流表项特有的,或者,很多场景下实际需要修改的仅是流表项指令集中的部分动作指令,因此,of控制器希望在批量修改流表项指令集中的部分动作指令的同时,保留流表项指令集中的其他动作指令。例如,对于
背景技术
:中举例的流表项1~3,假设action1、2、3分别表示将数据报文进行流表项对应的不同隧道封装动作,action4表示将数据报文从端口1转发,action5表示将数据报文从端口2转发;如果of控制器希望在保留action1、2、3不变的情况下,将流表项1、2、3的action4均修改为action5,从而使数据报文的最后转发端口从端口1迁移到端口2;由于现有技术中仅支持通过flow_mod消息对流表项指令集完全替换,of控制器无法通过一条flow_mod消息实现上述批量修改能力,只能通过3条flow_mod消息分别对三个处理规则进行修改。从而导致对于转发器中流表项的修改效率低,且需要3条flow_mod消息才能实现流表项1~3的修改,占用了of控制器和of转发器之间的通信资源;尤其在of转发器中存在大量流表项的场景下,这种低效率的流表项修改会导致of控制器和of转发器之间大量flow_mod消息的传输,降低流表项的修改效率,消耗of控制器和of转发器之间的通信资源。为此,本发明实施例提供一种处理规则的修改方法、装置及设备,能够提高转发器中处理规则的修改效率,减少控制器和转发器之间的通信资源占用。本发明实施例处理规则的修改方法、装置及设备,不仅可以适用于openflow协议下of控制器对of转发器中流表项的修改,还可以适用于其他sdn网络中控制器对转发器中处理规则的修改。参见图1,为本发明实施例处理规则修改方法所应用的sdn网络结构示意图,其中,包括控制器110和转发器120,其中,控制器110通过向转发器120发送规则修改信息,来对转发器120中存储的各种第一处理规则进行修改。转发器120中存储的第一处理规则与前述的处理规则所指代的对象相同,这里以及后续将转发器120中存储的处理规则称为第一处理规则主要用于将第一处理规则与待修改的处理规则进行区分。具体的,所述第一处理规则可以包括规则描述信息和指令集,所述规则描述信息用于标识所述第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理。参见图2,为本发明处理规则修改方法第一实施例示意图,该方法包括:步骤201:转发器接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;步骤202:当所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,所述转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。本实施例中,转发器接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;从而,对于规则描述信息满足所述规则描述匹配信息的每一个第一处理规则,转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。参见图3,为本发明处理规则修改方法第二实施例示意图,该方法包括:步骤301:控制器向转发器发送规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;以便所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。可选地,步骤301之前还可以包括:所述控制器生成所述规则修改信息。其中,控制器具体如何生成所述规则修改信息这里不再赘述。本实施例中,控制器向转发器发送规则修改信息,所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;从而,对于规则描述信息满足所述规则描述匹配信息的每一个第一处理规则,转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。参见图4,为本发明处理规则修改方法第三实施例示意图,该方法包括:步骤401:控制器向转发器发送规则修改信息,所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;其中,控制器如何被触发进行第一处理规则的修改,如何确定需要修改第一处理规则的哪些动作指令这里并不限定。例如,控制器可以根据外部条件如来自转发器的数据报文上报、来自控制器上层管理系统的规则修改请求或虚拟机迁移通知等,或者根据内部条件如修改定时器超时等触发对某一个或多个第一处理规则的修改;例如,控制器可以从转发器上报的数据报文头域中提取或者从上层管理系统直接输入的信息中获取需要修改的第一处理规则、以及每个第一处理规则中需要修改的动作指令,或者,根据转发器所转发的数据报文的类型、所转发数据报文所属用户的签约信息、网络状态等信息确定需要修改的第一处理规则、以及每个第一处理规则中需要修改的动作或动作变量等。其中,控制器和转发器之间如何实现所述规则修改信息的传输,本发明并不限制。例如,在openflow协议中,本步骤可以通过of控制器向of发送携带所述规则修改信息的flow_mod消息实现;在其他的sdn网络中,也可以通过控制器和转发器之间的其他消息实现等等。所述规则描述信息用于标识第一处理规则;例如所述规则描述信息可以是所述控制器或转发器为第一处理规则分配的唯一标识等。在某些场景下例如openflow协议中,所述规则描述信息可以为流表项的匹配域,此时所述规则描述信息还可以用于确定第一处理规则对应的数据报文,所述第一处理规则对应的数据报文满足所述规则描述信息。所述规则描述匹配信息在不同的应用场景下可以有不同的实现。举例1:在openflow协议中,所述规则描述匹配信息可以是flow_mod消息中携带的匹配规则(matchrule),按照flow_mod消息中携带的是严格匹配修改或非严格匹配修改标识,匹配规则可以覆盖不同匹配域范围,进而指示不同的流表项集合。例如,
背景技术
:中对于匹配规则与流表项中匹配域匹配的举例;或者,例如flow_mod消息中携带匹配规则为:matchrule={src_ip=ip1,dst_ip=ip2,protocol=all,port=all,tunnel_id=all};则,如果flow_mod消息中携带严格匹配修改标识,转发器中与上述匹配规则完全相同的匹配域就是该匹配规则覆盖的范围,如果flow_mod消息中携带非严格匹配修改标识,转发器中包括上述匹配规则的匹配域就是该匹配规则覆盖的范围。或者,例如所述匹配规则可以通过媒体接入控制(mac,mediaaccesscontrol)/互联网协议(ip,internetprotocol)/传输控制协议(tcp,transmissioncontrolprotocol)/用户数据包协议(udp,userdatagramprotocol)等头域的通配或者cookie掩码等方式,使得该匹配规则能够覆盖一个或多个流表项的匹配域。如匹配规则为:matchrule={src_ip=ip1,dst_ip=ip2,cookie=0x0031,cookie_mask=0xfffe},则该匹配规则可以覆盖所有源ip地址和目的ip地址为指定地址,以及满足以下逻辑的流表项的匹配域:(flowentry:cookie&flowmod:cookiemask)==(flow_mod:cookie&flowmod:cookiemask)。举例2:假设所述规则描述信息通过唯一标识第一处理规则的处理规则标识实现,则所述规则描述匹配信息可以包括:一个或多个规则标识,如规则描述匹配信息为{1,3,4};或者,规则标识掩码,如规则描述匹配信息为{0x001,mask=0xfffe};或者规则标识范围,如规则描述匹配信息为{min=1,max=3}等。在实际应用中,所述规则描述匹配信息的实现灵活,可以根据实际应用环境具体设定,这里并不限制。其中,所述动作指令修改信息可以包括:动作指令匹配条件、修改操作信息;其中,所述动作指令匹配条件用于确定待修改的动作指令,所述修改操作信息用于指示对所述待修改的动作指令的修改操作;具体的,所述动作指令匹配条件可以包括:位置信息,所述位置信息用于指示所述待修改的动作指令在所述待修改的处理规则的指令集中的位置;或者,指令类型信息,所述指令类型信息用于指示所述待修改的动作指令的指令类型;或者,待修改的动作指令。其中,所述位置信息可以包括:第一掩码,所述第一掩码中每一掩码位的位置对应所述待修改的处理规则的指令集中每一动作指令的位置;或者,所述位置信息可以包括修改指示列表,所述修改指示列表包括修改指示,所述修改指示列表中每一修改指示在所述修改指示列表中的位置对应所述待修改的处理规则的指令集中每一动作指令的位置,所述修改指示用于指示是否修改动作指令。其中,所述修改操作信息可以包括:新的动作指令;或者,修改参数指示信息,所述修改参数指示信息用于指示对所述待修改的动作指令的动作变量进行修改。其中,所述修改参数指示信息可以包括:参数匹配条件和参数修改操作信息,所述参数匹配条件用于确定所述待修改的动作指令中的待修改的动作变量,所述参数修改操作信息用于指示对所述待修改的动作变量的修改。其中,所述参数匹配条件可以包括:待修改的动作变量;或者,动作变量和与动作变量绑定的修改指示;所述修改指示用于指示绑定的动作变量是否进行修改。所述参数修改操作信息可以包括新的变量值;或者,运算方法信息,所述运算方法信息用于指示获取变量值的运算方法。其中,所述动作的动作变量包括动作类型和动作参数。动作参数可以包括一种或多种参数。步骤402:转发器接收所述规则修改信息。步骤403:当转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,所述转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。以下对本步骤中所述转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改的实现进行说明。其中,所述动作指令修改信息可以包括:动作指令匹配条件和修改操作信息;其中,所述动作指令匹配条件用于确定待修改的动作指令,所述修改操作信息用于指示对所述待修改的动作指令的修改操作;所述转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改可以包括:所述转发器根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令;所述转发器根据所述修改操作信息对所述第一动作指令进行修改。以下对所述动作指令匹配条件的实现进行举例说明:1.1、所述动作指令匹配条件可以包括位置信息,所述位置信息用于指示所述待修改的动作指令在所述待修改的处理规则的指令集中的位置;所述转发器根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令可以包括:所述转发器根据所述位置信息确定所述第一动作指令。在第一种可能的实现方式中,所述位置信息可以包括第一掩码,所述第一掩码中每一掩码位的位置对应所述待修改的处理规则的指令集中每一动作指令的位置;所述转发器根据所述位置信息确定所述第一动作指令可以包括:所述转发器确定所述第一掩码中具有第一预设数值的掩码位;所述转发器根据所述具有第一预设数值的掩码位的位置确定所述第一动作指令。在实际应用中,所述第一动作指令对应的掩码位为第一预设数值,其他掩码位的数值与所述第一预设数值不同。例如,以本发明实施例应用于openflow协议为例,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,mask=0x001,instructions{action3};其中,位置信息通过掩码0x001实现,假设第一预设数值为1,则掩码0x001中仅最后一个掩码位是1,表示流表项指令集的最后一个动作指令为第一动作指令。在第二种可能的实现方式中,所述位置信息可以包括修改指示列表,所述修改指示列表包括修改指示,所述修改指示列表中每一修改指示在所述修改指示列表中的位置对应所述待修改的处理规则的指令集中每一动作指令的位置,所述修改指示用于指示是否修改动作指令;所述转发器根据所述位置信息确定所述第一动作指令可以包括:所述转发器确定所述修改指示列表中用于指示修改动作指令的修改指示;所述转发器根据所述用于指示修改动作指令的修改指示在所述修改指示列表中所在的第一位置,确定所述第一动作指令。例如,以本发明实施例应用于openflow协议为例,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,instructions{(action1,0),(action2,1),(action3,0)}};其中,flow_mod消息的指令集中携带的action1、action2、action3分别为修改操作信息,具体为新的动作指令,后续描述中会进行详细说明,这里不赘述;(action1,0)(action3,0)中的0、(action2,1)中的1分别是所述修改指示;假设修改指示为1时,表示对修改指示对应的动作指令进行修改,修改指示为0时,表示对修改指示对应的动作指令不进行修改;则,(action1,0)在flow_mod消息的指令集中位于第1位,其对应流表项指令集中的第一个动作指令,但是修改指示为0,则转发器不对流表项指令集中的第一个动作指令进行修改;同样的原理,转发器对流表项指令集中的第二个动作指令进行修改,不对流表项指令集中的第三个动作指令进行修改。1.2、所述动作指令匹配条件可以包括:指令类型信息,所述指令类型信息用于指示所述待修改的动作指令的指令类型;所述转发器根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令可以包括:所述转发器根据所述指令类型信息确定所述第一动作指令。例如,以本发明实施例应用于openflow协议为例,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid,matchrule,type_only,instructions{action3}};其中,action3为修改操作信息,具体为新的动作指令,后续描述中会进行详细说明,这里不赘述;type_only为指令类型信息,用来表示待修改的动作指令的动作类型与修改操作信息中的action3的动作类型相同;则,转发器会将流表项指令表中动作类型与action3相同的动作指令均确定为所述第一动作指令。1.3、所述动作指令匹配条件可以包括:待修改的动作指令;所述转发器根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令可以包括:所述转发器根据动作指令匹配条件中包括的动作指令从所述第一处理规则的指令集中确定所述第一动作指令。例如,以本发明实施例应用于openflow协议为例,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid,matchrule,instructions{(action1,action3),(action2,action4)}};其中,动作指令对(action1,action3),(action2,action4)中每一个动作指令对的前一个动作指令为动作指令匹配条件,后一个动作指令为修改操作信息;具体的,动作指令对(action1,action3),(action2,action4)中的前一个动作指令action1和action3分别为待修改的动作指令,则转发器将流表项指令集中的action1和action3分别确定为第一动作指令。以上实例中的每个动作指令都包括动作类型以及动作参数,例如action1是将数据报文从端口1转发的动作,则action1可以为:action(type=output,port=1);由于本发明实施例的以上描述与每个动作指令的具体实现无关,因此,这里并未详述。以下对所述修改操作信息的实现进行举例说明:2.1、所述修改操作信息可以包括:新的动作指令;所述转发器根据所述修改操作信息对所述第一动作指令进行修改可以包括:所述转发器将所述第一动作指令修改为所述新的动作指令。例如,在上述1.2~1.3所示的举例中,修改操作信息均是通过新的操作指令实现的。具体的,如果of控制器向of转发器发送的flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,mask=0x001,instructions{action3};则,修改操作信息携带在flow_mod消息的指令集中,为action3;则,转发器只将流表项指令集的最后1个动作指令修改为flow_mod消息中指示的新的动作指令:action3,流表项指令集中的其他动作不变。如果of控制器向of转发器发送的flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,instructions{(action1,0),(action2,1),(action3,0)}};其中,flow_mod消息的指令集中携带的action1、action2、action3分别为修改操作信息,具体为新的动作指令;(action1,0)(action3,0)中的0、(action2,1)中的1分别是所述修改指示;则,(action1,0)在flow_mod消息的指令集中位于第1位,其对应流表项指令集中的第一个动作指令,修改指示为0,则转发器不将流表项指令集中的第一个动作指令修改为action1;同样的原理,转发器将流表项指令集中的第二个动作指令修改为action2,不将流表项指令集中的第三个动作指令修改为action3。如果of控制器向of转发器发送的flow_mod消息如下:flow_mod={modify,tableid,matchrule,type_only,instructions{action3}};其中,action3为修改操作信息,具体为新的动作指令;则,转发器会将流表项指令表中动作类型与action3相同的动作指令均修改为action3,其他动作指令保持不变。如果of控制器向of转发器发送的flow_mod消息如下:flow_mod={modify,tableid,matchrule,instructions{(action1,action3),(action2,action4)}};其中,动作指令对(action1,action3),(action2,action4)中每一个动作指令对的前一个动作指令为动作指令匹配条件,后一个动作指令为修改操作信息;具体的,转发器将流表项指令集中的action1修改为action3,action2修改为action4,其他动作指令保持不变。2.2、所述修改操作信息可以包括:修改参数指示信息,所述修改参数指示信息用于指示对所述待修改的动作指令的动作变量进行修改;所述转发器根据所述修改操作信息对所述第一动作指令进行修改包括:所述转发器根据所述修改参数指示信息对所述第一动作指令的动作变量进行修改。其中,所述修改参数指示信息可以包括参数匹配条件和参数修改操作信息,所述参数匹配条件用于确定所述待修改的动作指令中的待修改的动作变量,所述参数修改操作信息用于指示对所述待修改的动作变量的修改;所述转发器根据所述修改参数指示信息对所述第一动作指令的动作变量进行修改可以包括:所述转发器根据所述参数匹配条件确定所述第一动作指令中待修改的第一动作变量;所述转发器根据所述参数修改操作信息对所述第一动作变量进行修改。在第一种可能的实现方式中,所述参数匹配条件可以包括:待修改的动作变量;所述转发器根据所述参数匹配条件确定所述第一动作指令中待修改的第一动作变量可以包括:所述转发器根据所述参数匹配条件中的动作变量确定所述第一动作指令中待修改的第一动作变量。例如,以本发明实施例应用于openflow协议为例,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,instructions[action1(mbr=3mbps]}其中,以动作参数mbr作为所述参数匹配条件。在第二种可能的实现方式中,所述参数匹配条件可以包括:动作变量和与动作变量绑定的修改指示;所述转发器根据所述参数匹配条件确定所述第一动作指令中待修改的第一动作变量可以包括:所述转发器根据动作变量和与动作变量绑定的修改指示确定所述第一动作指令中待修改的第一动作变量。例如,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,instructions[action1((mbr=3mbps,para_modify_ind=false),(gbr=1mbps,para_modify_ind=true)),action2((port=1,para_modify_ind=false))]}其中,以动作参数mbr、gbr及其绑定的修改指示para_modify_ind作为所述参数匹配条件,其中,假设para_modify_ind=false表示动作变量不进行修改,para_modify_ind=true表示动作变量进行修改,则转发器将流表项指令表中action1的动作参数gbr确定为第一动作变量。在第一种可能的实现方式中,所述参数修改操作信息可以包括新的变量值;所述转发器根据所述参数修改操作信息对所述第一动作变量进行修改可以包括:所述转发器将所述第一动作变量的变量值修改为所述新的变量值。例如,以本发明实施例应用于openflow协议为例,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,instructions[action1(mbr=3mbps]}其中,将action1这一动作指令为第一动作指令,mbr这一动作变量为参数匹配条件,参数修改操作信息为3mbps这一新的变量值;则,转发器将流表项指令集中action1这一动作指令的动作参数mbr修改为3mbps。在第二种可能的实现方式中,所述参数修改操作信息可以包括运算方法信息,所述运算方法信息用于指示获取变量值的运算方法;所述转发器根据所述参数修改操作信息对所述第一动作变量进行修改可以包括:所述转发器根据所述运算方法信息获取新的变量值;所述转发器将所述第一动作变量的变量值修改为所述新的变量值。例如,所述运算方法信息可以包括:第二掩码以及需要修改的变量位对应的目标值;所述第二掩码的每一掩码位对应第一动作变量的变量值的每一变量位,需要修改的所述变量位对应的掩码位为第二预设数值,其他掩码位的数值与所述第二预设数值不同;所述转发器根据所述运算方法信息获取新的变量值可以包括:转发器将第二掩码中具有第二预设数值的掩码位所对应的第一动作变量的变量值的变量位确定为需要修改的变量位;转发器将所述需要修改的变量位的数值修改为变量位对应的目标值,得到新的变量值。例1,以本发明实施例应用于openflow协议为例,of控制器向of转发器发送flow_mod消息如下:flow_mod={modify,tableid=1,matchrule,instructions[action1(type=push_tunnel,tunnel_id=0xffff,mask=0x0000),action2(type=output,port=1,mask=0xfffe)]};其中,运算方法信息的第二掩码分别为动作action1中的mask=0x0000以及动作action2中的mask=0xfffe,假设以掩码位为0表示对应的变量位修改,掩码位为1表示对应的变量位不修改,则0x0000表示每一变量位都进行修改,0xfffe表示仅最后一个变量位进行修改,则转发器将流表项指令集中action1的动作参数tunnel_id的参数值修改为0xffff;将action2的动作参数port的参数值的最后一个参数位修改为1。例2,origin_tunnel_id;指示保留原有隧道标识(origin_tunnel_id);dec(orgin_port);指示将原有端口号(orgin_port)在原变量值的基础上减1运算,结果作为新的变量值;inc(origin_port);指示将原有端口号在原变量值的基础上加1运算,结果作为新的变量值;mul(origin_gbr,2);指示将原有gbr(origin_gbr)的原变量值执行乘2运算,结果作为新的变量值;其中的dec、inc、mul(变量,2)等即为所述运算方法。步骤404:转发器接收需要转发的数据报文,根据修改后的第一处理规则进行数据报文的转发。其中,转发器具体如何根据第一处理规则对数据报文进行转发,这里不赘述。可选的,本发明实施例中,转发器可以根据对指定动作指令的修改结果,向所述控制器发送修改结果指示信息;所述修改结果指示信息可以包括:处理规则修改结果指示信息和/或动作修改结果指示信息,所述处理规则修改结果指示信息可以用于指示第一处理规则的修改结果,所述动作修改结果指示信息可以用于指示所述指定动作指令的修改结果。例如,转发器根据所述动作指令修改信息对指定动作指令修改成功时,所述处理规则修改结果指示信息可以包括:第一成功指示、修改成功的第一处理规则的规则描述信息,所述动作修改结果指示信息可以包括:第二成功指示、修改成功的动作指令;或者,转发器根据所述动作指令修改信息对指定动作变量未修改成功时,所述处理规则修改结果指示信息可以包括:第一失败指示、未修改成功的第一处理规则的规则描述信息,所述动作失败指示信息可以包括:第二失败指示、未修改成功的动作指令。其中,第一成功指示和第二成功指示可以相同或不同;第一失败指示和第二失败指示可以相同或不同。在实际应用中,转发器根据所述动作指令修改信息对指定动作指令修改成功时,也可以不上报修改结果指示信息,在转发器根据所述动作指令修改信息对指定动作指令未修改成功时,上报修改结果指示信息,本发明并不限定。另外,不同的第一处理规则和/或不同的动作指令的修改结果可以由转发器分别通过不同的修改结果指示信息发送给控制器;或者,不同的修改结果(成功和失败)也可以由转发器分别通过不同的修改结果指示信息发送给控制器等等。所述修改结果指示信息的实现本发明并不限制,可以在实际应用中灵活实现。其中,所述对指定动作指令未修改成功的原因可以很多,例如本发明实施例应用于openflow协议时,流表项指令集中的动作可能与of控制器发送的flow_mod消息中的动作数量不匹配,或flow_mod消息中的指定动作变量与流表项指令集中动作变量格式不同,或of转发器对流表项指令集中动作变量的变量值运算出错如端口号计算结果为负值,或of转发器无法对某个流表项的动作参数执行运算或修改等。本发明实施例应用于openflow协议时,所述修改结果指示信息可以通过action_para_error消息实现。本实施例中,控制器向转发器发送规则修改信息,所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;从而,对于规则描述信息满足所述规则描述匹配信息的每一个第一处理规则,转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。参见图5,为本发明处理规则的修改装置第一实施例示意图,该装置可以适用于转发器,所述修改装置上存有第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理;该装置500包括:接收单元510,用于接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;修改单元520,用于确定所述第一处理规则的规则描述信息满足所述接收单元510接收到的所述规则描述匹配信息时,根据所述接收单元510接收到的所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。可选地,所述动作指令修改信息可以包括:动作指令匹配条件和修改操作信息;其中,所述动作指令匹配条件用于确定待修改的动作指令,所述修改操作信息用于指示对所述待修改的动作指令的修改操作;所述修改单元520可以包括:指令确定子单元,用于确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令;修改子单元,用于根据所述修改操作信息对所述第一动作指令进行修改。可选地,所述动作指令匹配条件可以包括位置信息,所述位置信息用于指示所述待修改的动作指令在所述待修改的处理规则的指令集中的位置;所述指令确定子单元具体可以用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,根据所述位置信息确定所述第一动作指令。可选地,所述位置信息可以包括第一掩码,所述第一掩码中每一掩码位的位置对应所述待修改的处理规则的指令集中每一动作指令的位置;所述指令确定子单元具体可以用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,确定所述第一掩码中具有第一预设数值的掩码位;根据所述具有第一预设数值的掩码位的位置确定所述第一动作指令。可选地,所述位置信息可以包括修改指示列表,所述修改指示列表包括修改指示,所述修改指示列表中每一修改指示在所述修改指示列表中的位置对应所述待修改的处理规则的指令集中每一动作指令的位置,所述修改指示用于指示是否修改动作指令;所述指令确定子单元具体可以用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,确定所述修改指示列表中用于指示修改动作指令的修改指示;根据所述用于指示修改动作指令的修改指示在所述修改指示列表中所在的第一位置,确定与所述第一位置对应的所述第一动作指令。可选地,所述动作指令匹配条件可以包括:指令类型信息,所述指令类型信息用于指示所述待修改的动作指令的指令类型;所述指令确定子单元具体可以用于:确定所述第一处理规则的规则描述信息满足所述接收单元接收到的所述规则描述匹配信息时,根据所述指令类型信息确定所述第一动作指令。可选地,所述修改操作信息可以包括:新的动作指令;所述修改子单元具体可以用于:将所述第一动作指令修改为所述新的动作指令。可选地,所述修改操作信息可以包括:修改参数指示信息,所述修改参数指示信息用于指示对所述待修改的动作指令的动作变量进行修改;所述修改子单元具体可以用于:根据所述修改参数指示信息对所述第一动作指令的动作变量进行修改。可选地,所述修改参数指示信息可以包括参数匹配条件和参数修改操作信息,所述参数匹配条件用于确定所述待修改的动作指令中的待修改的动作变量,所述参数修改操作信息用于指示对所述待修改的动作变量的修改;所述修改子单元可以包括:确定模块,用于根据所述参数匹配条件确定所述第一动作指令中待修改的第一动作变量;修改模块,用于根据所述参数修改操作信息对所述第一动作变量进行修改。可选地,所述参数修改操作信息可以包括新的变量值;所述修改模块具体可以用于:将所述第一动作变量的变量值修改为所述新的变量值。可选地,所述参数修改操作信息可以包括运算方法信息,所述运算方法信息用于指示获取变量值的运算方法;所述修改模块具体可以用于:根据所述运算方法信息获取新的变量值;将所述第一动作变量的变量值修改为所述新的变量值。可选地,所述接收单元510具体可以用于:接收控制器发送的流修改flow_mod消息,所述flow_mod消息中携带所述规则修改信息。本实施例中,转发器接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;从而,对于规则描述信息满足所述规则描述匹配信息的每一个第一处理规则,转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。参见图6,为本发明处理规则的修改装置第二实施例示意图,该装置适用于与转发器进行通信的控制器,所述转发器上存有第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识所述第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理;所述装置600包括:生成单元610,用于生成规则修改信息;发送单元620,用于向所述转发器发送所述生成单元610生成的所述规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;以便所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。可选地,所述发送单元620具体可以用于:向转发器发送流修改flow_mod消息,所述flow_mod消息中携带所述规则修改信息。本实施例中,控制器向转发器发送规则修改信息,所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;从而,对于规则描述信息满足所述规则描述匹配信息的每一个第一处理规则,转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。参见图7,为本发明实施例转发器结构示意图,该转发器700包括:处理器710、存储器720、收发器730和总线740;处理器710、存储器720、收发器730通过总线740相互连接;总线740可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器720,用于存放程序,还用于存储第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器720可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。收发器730用于连接其他设备,并与其他设备进行通信。所述收发器730,用于接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;所述处理器710执行所述程序代码,用于确定所述第一处理规则的规则描述信息满足所述收发器730接收到的所述规则描述匹配信息时,根据所述收发器730接收到的所述动作指令修改信息对所述存储器720中存储的所述第一处理规则的指令集中指定的动作指令进行修改。可选地,所述动作指令修改信息可以包括:动作指令匹配条件和修改操作信息;其中,所述动作指令匹配条件用于确定待修改的动作指令,所述修改操作信息用于指示对所述待修改的动作指令的修改操作;所述处理器710具体可以用于:根据所述动作指令匹配条件确定所述第一处理规则的指令集中待修改的第一动作指令;根据所述修改操作信息对所述第一动作指令进行修改。可选地,所述动作指令匹配条件可以包括位置信息,所述位置信息用于指示所述待修改的动作指令在所述待修改的处理规则的指令集中的位置;所述处理器710具体可以用于:根据所述位置信息确定所述第一动作指令。可选地,所述位置信息可以包括第一掩码,所述第一掩码中每一掩码位的位置对应所述待修改的处理规则的指令集中每一动作指令的位置;所述处理器710具体可以用于:确定所述第一掩码中具有第一预设数值的掩码位;根据所述具有第一预设数值的掩码位的位置确定所述第一动作指令。可选地,所述位置信息可以包括修改指示列表,所述修改指示列表包括修改指示,所述修改指示列表中每一修改指示在所述修改指示列表中的位置对应所述待修改的处理规则的指令集中每一动作指令的位置,所述修改指示用于指示是否修改动作指令;所述处理器710具体可以用于:确定所述修改指示列表中用于指示修改动作指令的修改指示;根据所述用于指示修改动作指令的修改指示在所述修改指示列表中所在的第一位置,确定所述第一动作指令。可选地,所述动作指令匹配条件可以包括:指令类型信息,所述指令类型信息用于指示所述待修改的动作指令的指令类型;所述处理器710具体可以用于:根据所述指令类型信息确定所述第一动作指令。可选地,所述修改操作信息可以包括:新的动作指令;所述处理器710具体可以用于:将所述第一动作指令修改为所述新的动作指令。可选地,所述修改操作信息可以包括:修改参数指示信息,所述修改参数指示信息用于指示对所述待修改的动作指令的动作变量进行修改;所述处理器710具体可以用于:根据所述修改参数指示信息对所述第一动作指令的动作变量进行修改。可选地,所述修改参数指示信息可以包括参数匹配条件和参数修改操作信息,所述参数匹配条件用于确定所述待修改的动作指令中的待修改的动作变量,所述参数修改操作信息用于指示对所述待修改的动作变量的修改;所述处理器710具体可以用于:根据所述参数匹配条件确定所述第一动作指令中待修改的第一动作变量;根据所述参数修改操作信息对所述第一动作变量进行修改。可选地,所述参数修改操作信息可以包括新的变量值;所述处理器710具体可以用于:将所述第一动作变量的变量值修改为所述新的变量值。可选地,所述参数修改操作信息可以包括运算方法信息,所述运算方法信息用于指示获取变量值的运算方法;所述处理器710具体可以用于:根据所述运算方法信息获取新的变量值;将所述第一动作变量的变量值修改为所述新的变量值。可选地,所述收发器730具体可以用于:接收控制器发送的流修改flow_mod消息,所述flow_mod消息中携带所述规则修改信息。本实施例中,转发器接收控制器发送的规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;从而,对于规则描述信息满足所述规则描述匹配信息的每一个第一处理规则,转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。参见图8,为本发明实施例控制器结构示意图,该控制器800包括:处理器810、存储器820、收发器830和总线840;处理器810、存储器820、收发器830通过总线840相互连接;总线840可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器820,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器820可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。所述处理器810用于执行所述程序代码。收发器830用于连接其他设备,并与其他设备进行通信。所述收发器830,用于向所述转发器发送规则修改信息;所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;以便所述转发器确定所述第一处理规则的规则描述信息满足所述规则描述匹配信息时,根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改;其中,所述转发器上存有第一处理规则,所述第一处理规则包括规则描述信息和指令集,所述规则描述信息用于标识第一处理规则,所述指令集包括至少一个动作指令,所述指令集用于指示根据所述指令集中的所述动作指令对所述第一处理规则对应的数据报文进行处理。可选地,所述收发器830具体可以用于:向转发器发送flow_mod消息,所述flow_mod消息中携带所述规则修改信息。可选地,所述处理器810还可以用于:生成所述规则修改信息,将生成的规则修改信息发送给收发器830。本实施例中,控制器向转发器发送规则修改信息,所述规则修改信息包括规则描述匹配信息和动作指令修改信息,所述规则描述匹配信息用于确定待修改的处理规则,所述待修改的处理规则的规则描述信息符合所述规则描述匹配信息,所述动作指令修改信息用于指示对所述待修改的处理规则的指令集中指定的动作指令进行修改;从而,对于规则描述信息满足所述规则描述匹配信息的每一个第一处理规则,转发器根据所述动作指令修改信息对所述第一处理规则的指令集中指定的动作指令进行修改。从而转发器不再仅使用类似于用flow_mod消息携带的指令集完全替代流表项原有的指令集的方式来实现第一处理规则的修改,而是可以对第一处理规则的指定动作和/或指定动作变量单独进行修改,第一处理规则的修改方式灵活,提高了控制器对转发器中第一处理规则进行修改的效率;而且,在仅需要修改第一处理规则的指令集中部分动作指令的场景下,相对于现有技术可以通过相对较少的消息数量完成第一处理规则的指令集中部分动作指令的修改,相对于现有技术减少了第一处理规则修改所使用的消息数量,从而减少了控制器和转发器之间通信资源的占用。本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1