匹配域的匹配方法及相关装置与流程

文档序号:18226676发布日期:2019-07-19 23:31阅读:479来源:国知局
匹配域的匹配方法及相关装置与流程

本发明涉及计算机网络技术领域,具体而言,涉及一种匹配域的匹配方法及相关装置。



背景技术:

软件定义网络sdn(softwaredefinednetwork,sdn)是一种新型的网络架构,这种网络架构将控制平面和数据平面进行分离。其中控制平面由一个逻辑集中的sdn控制器组成,并可以提供网络的全局视图,以及一些开放的网络编程接口;数据平面则负责数据的接收与转发,以及实现控制器下发的各项策略,主要包括sdn交换机。sdn交换机通过流表对数据转发进行抽象,依赖流表实现对数据包的转发,sdn交换机接收数据包后,首先,在流表中找到流表项中匹配字段与数据包中的包头字段相匹配的流表项,然后,根据找到的匹配的流表项中的指令集字段对数据包进行处理,如果找不到,则将该数据包发送至sdn控制器。因此,匹配的效率对于sdn交换机的性能影响很大,如何提高匹配效率,进而提升sdn交换机的性能是本领域亟待解决的问题。



技术实现要素:

本发明实施例的目的在于提供一种匹配域的匹配方法及相关装置,通过对流表中的匹配域进行分类,并为每个分类设定不同的匹配优先级,按照匹配优先级依次对每个分类中的字段与数据包的包头中的对应字段进行匹配,依据匹配结果对数据包进行处理,从而避免了对数据包包头的全部字段进行并行匹配操作带来的性能浪费。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种匹配域的匹配方法,应用于sdn交换机,sdn交换机与sdn控制器通信连接,sdn交换机存储有匹配域,匹配域包括至少两个子匹配域,每个子匹配域包括至少一个匹配字段,每个子匹配域预先设置有优先级,所述方法包括:解析接收到的数据包,得到数据包中的包头字段;按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果;依据匹配结果对数据包进行处理。

第二方面,本发明实施例还提供了一种匹配域的匹配装置,应用于sdn交换机,sdn交换机与sdn控制器通信连接,sdn交换机存储有匹配域,匹配域包括至少两个子匹配域,每个子匹配域包括至少一个匹配字段,每个子匹配域预先设置有优先级所述装置包括解析模块、匹配模块和处理模块。其中,解析模块用于解析接收到的数据包,得到数据包中的包头字段;匹配模块用于按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果;处理模块用于依据匹配结果对数据包进行处理。

第三方面,本发明实施例还提供了一种sdn交换机,sdn交换机与sdn控制器通信连接,sdn交换机包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的匹配域的匹配方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述匹配域的匹配方法。

相对现有技术,本发明实施例提供的一种匹配域的匹配方法及相关装置,首先,sdn交换机接收数据包并对接收到的数据包进行解析,得到数据包中的包头字段;然后,按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果;最后,依据匹配结果对数据包进行处理。与现有技术相比,本发明实施例通过对流表中的匹配域进行分类,并为每个分类设定不同的匹配优先级,按照匹配优先级依次对每个分类中的字段与数据包的包头中的对应字段进行匹配,依据匹配结果对数据包进行处理,从而避免了对数据包包头的全部字段进行并行匹配操作带来的性能浪费。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的应用场景示意图。

图2示出了本发明实施例提供的sdn交换机的方框示意图。

图3示出了本发明实施例提供的匹配域的匹配方法流程图。

图4示出了本发明实施提供的匹配域包括的字段的示意图。

图5示出了本发明实施例提供的匹配域的匹配装置的方框示意图。

图标:10-sdn交换机;101-存储器;102-通信接口;103-处理器;104-总线;20-sdn控制器;200-匹配域的匹配装置;201-解析模块;202-匹配模块;203-处理模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

sdn交换机中存储有流表,流表中记录了sdn交换机转发数据包的规则,sdn交换机依据流表中的规则实现数据包的转发。流表通常存储在三态内容寻址存储器tcam(ternarycontentaddressablememory,tcam)中,tcam天然支持对其中存储的条目的并行访问,因此,sdn交换机收到数据包时,会对数据包包头的全部字段进行并行匹配操作,如果有任意一个字段匹配失败则上交控制器,如果全部字段均匹配成功,则根据流表项中对应的指令集字段处理该数据包。而通常情况下,并不需要对数据包中的包头字段的全部字段进行匹配,因此,不必要的字段匹配对sdn交换机的性能造成不必要的浪费。

发明人正是针对这一问题,提出一种匹配域的匹配方法及相关装置,通过对流表中的匹配域进行分类,并为每个分类设定不同的匹配优先级,按照匹配优先级进行匹配,避免了对数据包包头的全部字段进行并行匹配操作带来的性能浪费,最终提升sdn交互机的性能。下面将对此进行详细描述。

请参照图1,图1示出了本发明实施例提供的应用场景示意图,图1中,sdn交换机10与sdn控制器20通信连接,当sdn交换机10接收到数据包后,首先对数据进行解析得到数据包中的包头字段,然后,按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果;最后,依据匹配结果对数据包进行处理。

请参照图2,图2示出了本发明实施例提供的sdn交换机10的方框示意图。sdn交换机10可以是,但不限于,主机、虚拟机、实体服务器、实体服务器上的虚拟机等能提供与所述服务器或者虚拟机有相同功能的实体或者虚拟的服务端。sdn交换机10的操作系统可以是,但不限于,windows系统、linux系统等。所述sdn交换机10包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如计算机程序。

其中,存储器101可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现该sdn交换机10与sdn控制器20、以及外部存储设备之间的通信连接。

总线104可以是isa总线、pci总线或eisa总线等。图2中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器101用于存储程序,所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的匹配域的匹配方法。

第一实施例

请参照图3,图3示出了本发明实施例提供的匹配域的匹配方法流程图。处理方法包括以下步骤:

步骤s101,解析接收到的数据包,得到数据包中的包头字段。

在本发明实施例中,sdn交换机10存储有流表,流表中有多个流表项,每个流表项包括匹配域及与该匹配域对应的指令集字段,匹配域在openflowv1.1之前称为包头域,用于数据包的匹配,指令集字段通常也称为动作字段,用于指示sdn交换机10在收到匹配的数据包后应该如何对其进行处理。匹配域中包括12个元组tuple,元组也可以称为字段,如图4所示,图4示出了本发明实施提供的匹配域包括的字段的示意图,匹配域包括:入端口、源mac地址、目的mac地址、以太网类型、vlanid、vlan优先级、源ip地址、目的ip地址、ip协议、iptos位、tcp/udp源端口和tcp/udp目的端口。

在本发明实施例中,sdn交换机10首先对接收到的数据包进行解析,得到数据包中的包头字段,然后将数据包中的包头字段与流表项中的匹配域中的字段进行匹配,匹配成功时,就按照对应的流表项中的指令集字段对该数据包进行处理,匹配失败时,将该数据包转发至sdn控制器20。

在本发明实施例中,由于多数情况下不需要对匹配域中的所有字段进行全部匹配才可以得知是否需要转发至sdn控制器20,因此,本发明实施例首先根据默认规则将匹配域中的匹配字段分配至不同的子匹配域,默认规则可以预先由用户根据最常规的应用场景进行定义,也可以由sdn交换机10的系统根据当前应用场景的网络数据包的处理情况进行自动定义,例如,默认规则可以是将匹配域中的源mac、目的mac地址、源ip地址、目的ip地址分配至第一子匹配域,将匹配域中的其余字段分配至第二子匹配域。当然,用户也可以预先根据具体的应用场景确定一个自定义规则,然后根据自定义规则将匹配域中的匹配字段分配至不同的子匹配域,例如,自定义规则可以是将匹配域中的源mac、目的mac地址分配至第一子匹配域,将源ip地址、目的ip地址分配至第二子匹配域,将匹配域中的其余字段分配至第三子匹配域。

在本发明实施例中,默认规则肯定会存在的,自定义规则可以存在也可以不存在,当存在自定义规则时,每个子匹配域中的匹配字段只会按照所述自定义规则进行分配的,当不存在在自定义规则时,每个子匹配域中的匹配字段是按照默认规则进行分配的。子匹配域的个数是依据默认规则或者自定义规则确定的,可以相同,也可以不同。

在本发明实施例中,每个子匹配域均对应一个优先级,匹配的时候是按照子匹配域的优先级依次进行匹配,先匹配优先级高的子匹配域中的字段,再匹配优先级低的子匹配域中的字段。

步骤s102,按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果。

在本发明实施例中,对每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,当任一子匹配域中的任一匹配字段与数据包中对应的包头字段不匹配时,确定匹配结果为匹配失败,当所有子匹配域中的匹配字段与所述数据包中对应的包头字段均匹配成功时,确定匹配结果为匹配成功。

作为一种实施方式,按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果的实现方式可以是:

首先,当任一子匹配域中的任一匹配字段与数据包中对应的包头字段不匹配时,确定匹配结果为匹配失败。

其次,当所有子匹配域中的匹配字段与数据包中对应的包头字段均匹配成功时,确定匹配结果为匹配成功。

在本发明实施例中,虽然子匹配域是按照优先级依次进行匹配,但是任一子匹配域进行匹配时,可以采用tcam技术实现子匹配域中字段的并发匹配,以提高匹配效率。

步骤s103,依据匹配结果对数据包进行处理。

在本发明实施例中,匹配结果有匹配成功和匹配失败两种,sdn交换机10只对匹配成功的数据包进行处理,并且是按照匹配成功的流表项中的指令集字段对数据包进行处理,对匹配失败的数据包,sdn交换机10是无法进行处理的,需要将数据包封装到packet_in消息中,将该消息转发至sdn控制器20,由sdn控制器20对该数据包进行处理。

作为一种实施方式,依据匹配结果对数据包进行处理可以包括:

当匹配成功时,则依据匹配域对应的指令集字段对数据包进行相应的处理。

当匹配失败时,则将数据包转发至sdn控制器。

在本发明实施例中,通过对流表中的匹配域进行分类,并为每个分类设定不同的匹配优先级,按照匹配优先级依次对每个分类中的字段与数据包的包头中的对应字段进行匹配,依据匹配结果对数据包进行处理,与现有技术相比,具有以下有益效果:

第一,避免了对数据包包头的全部字段进行并行匹配操作带来的性能浪费。

第二,用户可以根据应用场景的需求确定自定义规则,从而提高了支持多种应用场景的灵活性。

第三,用户可以根据需要对子匹配域的优先级进行设定,从而提高了匹配的灵活性。

第二实施例

请参照图5,图5示出了本发明实施例提供的匹配域的匹配装置200的方框示意图。匹配域的匹配装置200应用于sdn交换机10,该匹配域的匹配装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述sdn交换机10的操作系统(operatingsystem,os)中的软件功能模块。其包括解析模块201;匹配模块202;处理模块203。

解析模块201,用于解析接收到的数据包,得到数据包中的包头字段。

在本发明实施例中,解析模块201用于执行步骤s101。

匹配模块202,用于按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果。

在本发明实施例中,匹配模块202用于执行步骤s102。

作为一种实施方式,匹配模块202具体用于:

当任一子匹配域中的任一匹配字段与数据包中对应的包头字段不匹配时,确定匹配结果为匹配失败;当所有子匹配域中的匹配字段与数据包中对应的包头字段均匹配成功时,确定匹配结果为匹配成功。

处理模块203,用于依据匹配结果对数据包进行处理。

在本发明实施例中,处理模块203用于执行步骤s103。

作为一种实施方式,处理模块203具体用于:

当匹配成功时,则依据匹配域对应的指令集字段对数据包进行相应的处理;当匹配失败时,则将数据包转发至sdn控制器。

本发明实施例还揭示了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器103执行时实现本发明前述实施例揭示的匹配域的匹配方法。

综上所述,本发明提供的一种匹配域的匹配方法及相关装置,应用于sdn交换机,sdn交换机与sdn控制器通信连接,sdn交换机存储有匹配域,匹配域包括至少两个子匹配域,每个子匹配域包括至少一个匹配字段,每个子匹配域预先设置有优先级,所述方法包括:解析接收到的数据包,得到数据包中的包头字段;按照每个子匹配域的优先级,依次将每个子匹配域中的匹配字段与数据包中对应的包头字段进行匹配,得到匹配结果;依据匹配结果对数据包进行处理。与现有技术相比,本发明通过对流表中的匹配域进行分类,并为每个分类设定不同的匹配优先级,按照匹配优先级依次对每个分类中的字段与数据包的包头中的对应字段进行匹配,依据匹配结果对数据包进行处理,从而避免了对数据包包头的全部字段进行并行匹配操作带来的性能浪费。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

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