一种流规则的检测和处理的方法与流程

文档序号:13912462阅读:158来源:国知局

本发明涉及通信技术领域,更具体地,涉及一种流规则的检测和处理的方法。



背景技术:

基于openflow协议的软件定义网络(softwaredefinednetwork,简称为sdn)架构中,应用程序可以根据使用者设置的流规则通过控制器向数据转发设备下达包含有流规则的流表,从而完成改变数据包中某个字段或者控制转发出口的功能。流规则通常是为了实现某种网络功能由人工制定,为完成不同网络功能可能会制定不同的流规则。由于流规则的制定者可能是多个,完成的功能也有不同,这些流规则可能是互相兼容的,也可能是有矛盾冲突的。而作为典型的流规则驱动型网络,sdn网络中流规则一致性的确保,对于网络功能的正常运行至关重要。

数据转发设备不具备流规则分析能力,只是简单按照流规则匹配执行,控制器在下发流规则之前必须经过严密精确的检测分析处理,从而保证流规则能够有效实施。针对sdn中流规则的检测分析处理,目前研究者给出的解决方案的主要思路包括两种:(1)基于应用程序的优先级,对流规则的安全等级进行划分;(2)采用形式化和数学分析方法,对不同流规则之间和冲突性进行检测分析处理。

由于目前控制器对下发的流规则的检测分析处理,其主要目的是避免流规则之间的矛盾冲突,因此仅对流规则进行冲突性的检测分析处理,但是,流规则之间还存在其它不一致性的情况,而目前则没有对除了冲突之外的其它不一致性的情况进行检测分析处理的方法,对除了冲突之外的其它不一致性的情况,或者是提交上层管理员处理,增加了人工操作;或者采用默认全部保留的处理方式,导致虚拟交换机(openvswitch,ovs)中的流表容量增加,控制器中需要维护的流规则的数量也增加了,降低了整个sdn系统的运行效率。



技术实现要素:

为了克服上述问题或者至少部分地解决上述问题,本发明提供一种流规则的检测和处理的方法。

根据本发明的一个方面,提供一种流规则的检测和处理的方法,其特征在于,包括:接收发送方发送的第一流规则;在原有的流规则中确定第二流规则,第二流规则与第一流规则存在包含、包含于或冲突的关系;若确定第一流规则包含第二流规则,则将第一流规则替换第二流规则;若确定第一流规则包含于第二流规则,则删除第一流规则;若确定第一流规则与第二流规则冲突,则根据第一流规则与第二流规则的安全等级进行处理。

其中,在原有的流规则中确定第二流规则,包括:将第一流规则逐一与原有的每一流规则进行比较;将与第一流规则中存在匹配域等同但是动作不同,或者与第一流规则中存在匹配域交叉的流规则确定为第二流规则。

其中,确定第一流规则包含第二流规则,包括:通过确定第二流规则中每一匹配域包含于或等同于第一流规则中对应的匹配域,且第一流规则中存在匹配域不等同于第二流规则中对应的匹配域,并且第二流规则中每一匹配域与第一流规则中对应的匹配域的动作相同,以确定第一流规则包含第二流规则。

其中,确定第一流规则包含于第二流规则,包括:通过确定第一流规则中每一匹配域包含于或等同于第二流规则中对应的匹配域,且第二流规则中存在匹配域不等同于第一流规则中对应的匹配域,并且第一流规则中每一匹配域与第二流规则中对应的匹配域的动作相同,以确定第一流规则包含于第二流规则。

其中,确定第一流规则与第二流规则冲突,包括:通过确定第一流规则中存在第一匹配域与第二流规则中第二匹配域等同或交叉,且第一匹配域的动作与第二匹配域的动作不同,以确定第一流规则与第二流规则冲突。

其中,根据第一流规则与第二流规则的安全等级进行处理之前,还包括:确定第一流规则的发送方和第二流规则的发送方的安全权限;根据第一流规则的发送方的安全权限和第二流规则的发送方的安全权限,确定第一流规则与第二流规则的安全等级。

其中,根据第一流规则与第二流规则的安全等级进行处理,包括:若第一流规则的安全等级比第二流规则的安全等级高,则将第一流规则替换第二流规则;若第一流规则的安全等级比第二流规则的安全等级低,则删除第一流规则;若第一流规则的安全等级比第二流规则的安全等级相同,则向管理者上报检测结果。

其中,确定第一流规则的发送方和第二流规则的发送方的安全权限,包括:获取第一流规则的数字签名和第二流规则的数字签名;根据第一流规则的数字签名和第二流规则的数字签名,确定第一流规则的发送方和第二流规则的发送方;根据预存储的发送方的安全权限确定第一流规则的发送方和第二流规则的发送方的安全权限。

本发明的另一方面,提供一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使计算机执行上述的方法。

本发明的又一方面,提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机程序,该计算机程序使计算机执行上述的方法。

本发明提供的一种流规则的检测和处理的方法,通过控制器对发送方发送的第一流规则与原有的流规则进行不一致性的检测,在现有的冲突检测的基础上,增加包含和包含于的不一致性的检测,并确定与第一流规则存在冲突、包含或包含于的关系的第二流规则,并基于冲突、包含或包含于的关系对第一流规则或者第二流规则进行处理,从而避免了由于包含或包含于的不一致性导致的需要人工参与处理的情况,提高了对流规则的不一致性的处理效率,以及通过对流规则的不一致性的处理,减少了ovs中的流表容量,控制器中需要维护的流规则的数量也减少了,提升了整个sdn系统的运行效率。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的流规则的检测和处理的方法的流程图;

图2为根据本发明实施例的流规则的发送方和控制器及流规则的管理者的交互图。

具体实施方式

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

在本发明的一个实施例中,参考图1,提供一种流规则的检测和处理的方法,其特征在于,包括:s11,接收发送方发送的第一流规则;s12,在原有的流规则中确定第二流规则,第二流规则与第一流规则存在包含、包含于或冲突的关系;s13,若确定第一流规则包含第二流规则,则将第一流规则替换第二流规则;若确定第一流规则包含于第二流规则,则删除第一流规则;若确定第一流规则与第二流规则冲突,则根据第一流规则与第二流规则的安全等级进行处理。

具体的,sdn网络架构从上至下主要分为应用层、控制层和数据转发层。架构的核心集中在基于网络操作系统的控制层,其主要设备为控制器,控制器具有整个网络的集中管理功能;数据转发层主要是底层的数据转发设备;数据转发设备没有控制功能,只按照流规则进行匹配和转发数据流;数据转发设备通过openflow协议与控制层进行信息交互,控制层再与应用层进行信息传递。由于数据转发设备不具备分析检测功能,控制器在下发流规则前要对新的流规则进行分析检测处理。

控制器接收发送方发送的新的流规则(即第一流规则),与控制器中原有的流规则进行不一致性检测,以确定第二流规则,该不一致性包括包含、包含于和冲突,该第二流规则与第一流规则存在包含、包含于或者冲突的不一致性的情形;基于不一致的情形,对第一流规则或第二流规则进行处理,具体为:若确定第一流规则包含第二流规则,则将第一流规则替换第二流规则;若确定第一流规则包含于第二流规则,则删除第一流规则;若确定第一流规则与第二流规则冲突,则根据第一流规则与第二流规则的安全等级进行处理。

本实施例通过控制器对发送方发送的第一流规则与原有的流规则进行不一致性的检测,在现有的冲突检测的基础上,增加包含和包含于的不一致性的检测,并确定与第一流规则存在冲突、包含或包含于的关系的第二流规则,并基于冲突、包含或包含于的关系对第一流规则或者第二流规则进行处理,从而避免了由于包含或包含于的不一致性导致的需要人工参与处理的情况,提高了对流规则的不一致性的处理效率,以及通过对流规则的不一致性的处理,减少了ovs中的流表容量,控制器中需要维护的流规则的数量也减少了,提升了整个sdn系统的运行效率。

基于以上实施例,在原有的流规则中确定第二流规则,包括:将第一流规则逐一与原有的每一流规则进行比较;将与第一流规则中存在匹配域等同但是动作不同,或者与第一流规则中存在匹配域交叉的流规则确定为第二流规则。

具体的,控制器通过某种算法对原有的流规则和新的流规则(即第一流规则)进行规范化表示,如fortnox中提出的“基于别名的规约规则”算法。其目的是通过规范化表示流规则,以便之后的流规则之间的不一致性的检测,而“基于别名的规约规则”算法只是实现的可选方式之一,也可以选择其他的算法来规范化表示原有的流规则和新的流规则。对新的流规则的不一致性的检测,需要将规范化表示后的新的流规则与原有的所有流规则逐一进行检测,在检测过程中,如果在原有的流规则中出现与新的流规则中匹配域等同但是动作不同,或者与新的流规则中匹配域存在交叉的,将该流规则确定为与新的流规则存在不一致性的流规则(即第二流规则)。

基于以上实施例,确定第一流规则包含第二流规则,包括:通过确定第二流规则中每一匹配域包含于或等同于第一流规则中对应的匹配域,且第一流规则中存在匹配域不等同于第二流规则中对应的匹配域,并且第二流规则中每一匹配域与第一流规则中对应的匹配域的动作相同,以确定第一流规则包含第二流规则;确定第一流规则包含于第二流规则,包括:通过确定第一流规则中每一匹配域包含于或等同于第二流规则中对应的匹配域,且第二流规则中存在匹配域不等同于第一流规则中对应的匹配域,并且第一流规则中每一匹配域与第二流规则中对应的匹配域的动作相同,以确定第一流规则包含于第二流规则;确定第一流规则与第二流规则冲突,包括:通过确定第一流规则中存在第一匹配域与第二流规则中第二匹配域等同或交叉,且第一匹配域的动作与第二匹配域的动作不同,以确定第一流规则与第二流规则冲突。

具体的,两个流规则之间的关系包括一致和不一致,第一流规则和第二流规则具有一致的关系具体为:第一流规则中每一匹配域等同于第二流规则中对应的匹配域,且它们的动作也对应相同。其中,不一致的关系又包括包含、包含于和冲突的关系,通过如下规则确定两个流规则之间的包含、包含于和冲突的关系:

确定第二流规则中每一匹配域包含于或等同于第一流规则中对应的匹配域,且第一流规则中至少存在某一匹配域不等同于第二流规则中对应的匹配域的情况,并且第二流规则中每一匹配域与第一流规则中对应的匹配域的动作相同,则确定第一流规则包含第二流规则。可通过如下表达式表示该规则:

其中,cfi表示第一流规则的第i匹配域,ofj表示第二流规则的j匹配域。

确定第一流规则中每一匹配域包含于或等同于第二流规则中对应的匹配域,且第二流规则中至少存在某一匹配域不等同于第一流规则中对应的匹配域的情况,并且第一流规则中每一匹配域与第二流规则中对应的匹配域的动作相同,则确定第一流规则包含于第二流规则。可通过如下表达式表示该规则:

其中,cfi表示第一流规则的第i匹配域,ofj表示第二流规则的j匹配域。

确定第一流规则中存在第一匹配域与第二流规则中第二匹配域等同或交叉,且第一匹配域的动作与第二匹配域的动作不同,则确定第一流规则与第二流规则冲突。

其中,两个匹配域等同表示两个匹配域的范围完全相同,例如两个匹配域中的ip域都为10.0.0.0/24,即为等同。第一匹配域包含于第二匹配域表示第一匹配域的范围小于第二匹配域,例如匹配域中的ip域,第二匹配域为10.0.0.0/23,第一匹配域为10.0.0.0/24;或者第二匹配域匹配的是icmp协议,第一匹配域匹配的是ip域。两个匹配域交叉表示两个匹配域的范围存在重叠的部分,且不完全相同,两个匹配域的交叉关系也包括包含与包含于的关系。两个匹配域的动作相同表示两个匹配域的动作同为转发或者同为丢弃;两个匹配域的动作不同表示两个匹配域的动作一者为转发,一者为丢弃,相互矛盾。

其中,对一致、冲突、包含和包含于的关系的判断的算法如下:

基于以上实施例,根据第一流规则与第二流规则的安全等级进行处理之前,还包括:确定第一流规则的发送方和第二流规则的发送方的安全权限;根据第一流规则的发送方的安全权限和第二流规则的发送方的安全权限,确定第一流规则与第二流规则的安全等级。其中,确定第一流规则的发送方和第二流规则的发送方的安全权限,包括:获取第一流规则的数字签名和第二流规则的数字签名;根据第一流规则的数字签名和第二流规则的数字签名,确定第一流规则的发送方和第二流规则的发送方;根据预存储的发送方的安全权限确定第一流规则的发送方和第二流规则的发送方的安全权限。

具体的,可在控制器预先配置流规则的发送方的公钥和安全等级,为确定流规则的安全等级做准备,具体包括下列内容:流规则的发送方将数字签名的公钥发送给控制器,发送方式不限,能确保控制器正确收到即可;控制器收到公钥后为其分配安全等级,并存储到控制器。其中,角色安全等级从高到低可分为三等:管理员、安全应用、普通应用。管理员的安全等级最高,安全应用次之,普通应用的安全等级最低。

流规则的发送方发送带有数字签名的流规则到控制器,具体包括下列内容:流规则的发送方的流规则,通过哈希函数生成信息摘要,再用私钥对信息摘要进行加密,以生成数字签名。其中,流规则的生成形式需要根据流规则接收者的处理方式而定。需要确保生成信息摘要的哈希函数与接收方使用的哈希函数是相同的,可以通过发送哈希函数或者指定某个哈希函数的方式确定流规则发送方与接收方使用的哈希函数。数字签名作为一个独立部分,与流规则一起,以json的形式发送给控制器。json的数据内容需要根据控制器的处理方式而定,可以参考的数据形式如{″digitalsignature″:″...″,″flowrule″:″...″}。

控制器验证数字签名,以确定流规则完整性和发送方的安全权限,并根据发送方的安全权限确定流规则的安全等级,具体包括下列内容:控制器收到流规则后,使用哈希函数生成一份新的信息摘要;此处使用的哈希函数应确保与流规则发送方使用的哈希函数是同一个哈希函数,哈希函数的作用内容只包括流规则,即上文json数据中的”flowrule”域。控制器可以使用一个本地存储的诸多数字签名及对应安全等级的公钥列表来存储所有收到的公钥,在接收到新的流规时,依次使用公钥列表中的公钥解密接收到的json串中的数字签名,如果这些解密后的数字签名没有与预存的数字签名相同的,说明这个数字签名是无效的,则拒绝此次流规则添加操作,如果有相同的,则记录该数字签名对应的发送方的安全权限,并根据发送方的安全权限确定流规则的安全等级,发送方的安全权限越高,对应的流规则的安全等级越高。

基于以上实施例,若确定第一流规则包含第二流规则,则将第一流规则替换第二流规则;若确定第一流规则包含于第二流规则,则删除第一流规则;若确定第一流规则与第二流规则冲突,则根据第一流规则与第二流规则的安全等级进行处理。其中,根据第一流规则与第二流规则的安全等级进行处理,包括:若第一流规则的安全等级比第二流规则的安全等级高,则将第一流规则替换第二流规则;若第一流规则的安全等级比第二流规则的安全等级低,则删除第一流规则;若第一流规则的安全等级比第二流规则的安全等级相同,则向管理者上报检测结果。

具体的,本发明中流规则的发送方和控制器及流规则的管理者的交互图如图2所示,图中,新的流规则即第一流规则,原有的流规则即第二流规则。拒绝新的流规则的情况包括:新的流规则的数字签名无效,或者新的流规则与原有的流规则冲突,但是新的流规则的安全等级比原有的流规则的安全等级低,或者新的流规则包含于原有的流规则;接收新的流规则的情况包括:新的流规则与原有的流规则冲突,但是新的流规则的安全等级比原有的流规则的安全等级高,或者新的流规则包含原有的流规则,或者新的流规则与原有的流规则具有一致性;向管理者上报检测结果的情况包括:新的流规则与原有的流规则冲突,且新的流规则的安全等级和原有的流规则的安全等级一样。

作为本发明的又一个实施例,提供一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收发送方发送的第一流规则;在原有的流规则中确定第二流规则,第二流规则与第一流规则存在包含、包含于或冲突的关系;若确定第一流规则包含第二流规则,则将第一流规则替换第二流规则;若确定第一流规则包含于第二流规则,则删除第一流规则;若确定第一流规则与第二流规则冲突,则根据第一流规则与第二流规则的安全等级进行处理。

作为本发明的又一个实施例,提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机程序,该计算机程序使该计算机执行上述各方法实施例所提供的方法,例如包括:接收发送方发送的第一流规则;在原有的流规则中确定第二流规则,第二流规则与第一流规则存在包含、包含于或冲突的关系;若确定第一流规则包含第二流规则,则将第一流规则替换第二流规则;若确定第一流规则包含于第二流规则,则删除第一流规则;若确定第一流规则与第二流规则冲突,则根据第一流规则与第二流规则的安全等级进行处理。

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

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1