用于增加软件定义网络的可缩放性的系统和方法

文档序号:6551720阅读:164来源:国知局
用于增加软件定义网络的可缩放性的系统和方法
【专利摘要】本发明涉及用于增加软件定义网络的可缩放性的系统和方法。用于增加软件定义网络的可缩放性的计算机实现方法可包括(1)保持一组数据库,该组数据库被共同地配置成(i)存储在软件定义网络内指引网络业务的一组流条目,以及(ii)至少部分地基于至少一个秘钥而促进搜索该组流条目,其中无论该组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定,(2)检测用以执行与软件定义网络内的数据分组流关联的操作的请求,(3)识别该请求中的数据分组流的至少一个属性,以及然后(4)使用数据分组流的属性作为数据库秘钥来搜索该组数据库内的至少一个数据库以促进执行操作。还公开了各种其他方法、系统以及装置。
【专利说明】用于增加软件定义网络的可缩放性的系统和方法

【背景技术】
[0001]软件定义网络常常包括基于一组流条目将网络业务从一个计算设备指引到另一个的交换机。例如,启用0PENFL0W的交换机可在从软件定义网络内的设备(诸如,服务器或另一交换机)接收到数据分组时在机载数据库中搜索指定如何处理数据分组的流条目。启用0PENFL0W的交换机还可随着在软件定义网络内发生改变而更新这些流条目。例如,启用0PENFL0W的交换机可向数据库添加新的流条目,修改数据库内的现有流条目,和/或响应于来自负责管理软件定义网络内的设备之间的数据分组流的远程控制器的对于从数据库删除现有流条目的请求而从数据库删除现有流条目。
[0002]在传统方法中,启用0PENFL0W的交换机可将这些流条目保持为链接列表数据结构。结果,启用0PENFL0W的交换机可需要逐个条目地筛过链接列表以便执行某些操作(诸如查找、添加、修改和/或删除流条目)。遗憾的是,由于此逐个条目筛选,启用0PENFL0W的交换机可随着链接列表内的流条目的数目增加超过某个点而遭受显著的性能退化。
[0003]同样地,本公开认识到并解决了对用于增加软件定义网络的可缩放性的改进系统和方法的需要。


【发明内容】

[0004]如下面将更详细地描述的,本公开一般地涉及用于增加软件定义网络的可缩放性的系统和方法。在一个示例中,用于实现此类任务的计算机实现方法可包括(I)保持一组数据库,所述数据库被共同地配置成(i)存储共同地在软件定义网络内指引网络业务的一组流条目,以及(ii)至少部分地基于至少一个秘钥而促进搜索所述一组流条目,其中无论所述一组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定,(2)检测用以执行与软件定义网络内的至少一个数据分组流关联的操作的请求,(3)识别该请求中的数据分组流的至少一个属性,以及然后(4)使用数据分组流的属性作为数据库秘钥来搜索所述一组数据库内的至少一个数据库,以促进执行与数据分组流关联的操作。在本示例中,搜索数据库所需的时间量可至少部分地由于数据库的秘钥的基本上恒定的尺寸而独立于所述一组流条目内的流条目的数目。
[0005]类似地,一种用于实现上述方法的系统可包括(I)保持模块,所述保持模块保持一组数据库,所述数据库共同地被配置成(i)存储共同地在软件定义网络内指引网络业务的一组流条目,以及(ii)至少部分地基于至少一个秘钥来促进搜索所述一组流条目,其中无论所述一组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定,(2)检测模块,所述检测模块检测用以执行与软件定义网络内的至少一个数据分组流关联的操作的请求,(3)识别模块,所述识别模块识别该请求中的数据分组流的至少一个属性,(4)搜索模块,所述搜索模块使用数据分组流的属性作为数据库秘钥来搜索所述一组数据库内的至少一个数据库,以促进执行与数据分组流关联的该操作,以及(5)至少一个物理处理器,所述至少一个物理处理器被配置成执行保持模块、检测模块、识别模块以及搜索模块。在此系统中,搜索数据库所需的时间量可至少部分地由于数据库的秘钥的基本上恒定的尺寸而独立于所述一组流条目内的流条目的数目。
[0006]另外,用于实现上述方法的设备可包括(I)存储器,所述存储器被配置成存储一组数据库,所述数据库(i)包括共同地在软件定义网络内指引网络业务的一组流条目,以及(ii)至少部分地基于至少一个秘钥而促进搜索所述一组流条目,其中无论所述一组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定,(2)至少一个处理器,所述至少一个处理器被配置成(i)保持存储在该存储器内的所述一组数据库,(ii)检测用以执行与软件定义网络内的至少一个数据分组流关联的操作的请求,(iii)识别该请求中的数据分组流的至少一个属性,以及然后(iv)使用数据分组流的属性作为数据库秘钥来搜索所述一组数据库内的至少一个数据库,以促进执行与数据分组流关联的操作。在本示例中,搜索数据库所需的时间量可至少部分地由于数据库秘钥的基本上恒定尺寸而独立于所述一组流条目内的流条目的数目。
[0007]根据本文所述的一般原理,可以相互组合的方式使用来自任何上述实施例的特征。在结合附图和权利要求来阅读以下详细描述时将更全面地理解这些及其他实施例、特征以及优点。

【专利附图】

【附图说明】
[0008]附图图示了许多示例性实施例且是本说明书的一部分。连同以下描述一起,这些图举例说明并解释本公开的各种原理。
[0009]图1是用于增加软件定义网络的可缩放性的示例性系统的框图。
[0010]图2是用于增加软件定义网络的可缩放性的附加示例性系统的框图。
[0011]图3是用于增加软件定义网络的可缩放性的示例性方法的流程图。
[0012]图4是用于增加软件定义网络的可缩放性的示例性的一组数据库的框图。
[0013]图5是图4中所示的一个或多个数据库的示例性数据结构的框图。
[0014]图6是用于增加软件定义网络的可缩放性的示例性核心数据库的框图。
[0015]图7是图6中所示的核心数据库内的示例性搜索路径的图示。
[0016]图8是图6中所示的核心数据库内的示例性流条目的图示。
[0017]图9是具有用于增加软件定义网络的可缩放性的辅助数据库内的示例性搜索路径的图示。
[0018]图10是图9中所示的辅助数据库内的流条目的示例性列表的图示。
[0019]图11是能够实现本文所述和/或所示的实施例中的一个或多个和/或与之相结合地使用的示例性计算系统的框图。
[0020]遍及各图,相同的参考标号和描述指示类似但不一定相同的元件。虽然本文所述的示例性实施例允许有各种修改和替换形式,但在图中已以示例的方式示出了特定实施例并将在本文中详细地描述。然而,本文所述的示例性实施例并不意图局限于公开的特定形式。相反,本公开涵盖落在所附权利要求范围内的所有修改、等同物以及替换。

【具体实施方式】
[0021]本公开一般地针对用于增加软件定义网络的可缩放性的系统和方法。如下面将更详细地解释的,交换机可基于保持在一组数据库内的一组流条目而在软件定义网络内指引网络业务。通过将这些数据库中的至少一个配置成具有秘钥,该秘钥的尺寸随着数据库内的流条目的数目的增加而基本上保持恒定,本文公开的实施例可使得交换机能够不管数据库内的流条目的数目是多少的情况下都在相同的时间量内对此数据库执行操作(诸如查找、添加、修改或删除流条目)。这又可使得交换机能够保持一致的性能水平,即使随着数据库内的流条目的数目增加,从而增加包括交换机的软件定义网络的可缩放性。
[0022]参考图1、2和4-10,下面将提供能够增加软件定义网络的可缩放性的系统的示例。还可结合图3来提供用于增加软件定义网络的可缩放性的示例性方法的详细描述。最后,对应于图11的讨论将提供系统的示例,该系统可包括图1、2和4-10中所示的系统和元件。
[0023]如结合附图和权利要求所使用的短语“软件定义网络”一般地指的是任何类型或形式的网络,所述网络包括能够由远程和/或集中式控制器配置和/或编程的一个或多个切换设备。在一个示例中,软件定义网络可以为可缩放基础设施提供促进使网络设置内的业务自动化和/或对其进行控制的虚拟化服务的应用编程接口(API)支持。在本示例中,软件定义网络可提供基于网际协议的虚拟网络和/或增强网络部署和利用的效率和/或灵活性的安全服务的弹性管理。
[0024]另外,本文所使用的短语“流条目” 一般指的是与软件定义网络内的至少一个数据分组流相对应的任何类型或形式的数据库条目。在一个示例中,如果流条目和数据分组公共地具有某些属性和/或匹配条件,则流条目可对应于数据分组。例如,交换机在遇到在软件定义网络内传输的数据分组时可通过一组流条目进行迭代,直至识别到其匹配条件与数据分组的属性匹配的流条目。
[0025]流条目可包括多种数据和/或信息。在一个示例中,流条目可包括指示如何处理与流条目相关联的数据分组和/或统计量的信息。例如,流条目可包括指引交换机对数据分组执行至少一个动作的控制逻辑。在本示例中,流条目还可包括识别由交换机接收到的多少数据分组已与流条目匹配的统计量。
[0026]本文所使用的短语“匹配条件”一般指的是任何类型或形式的特性、属性、条件和/或报头信息,其对应于和/或描述软件定义网络内的数据分组流。此类匹配条件的示例在没有限制的情况下包括进入(或传入)端口、外出(或输出)端口、以太网源地址、以太网目的地地址、以太网类型、虚拟局域网(VLAN)标识符、VLAN优先级水平、IP源地址、IP目的地地址、IP协议、IP服务类型(ToS)位、传输源端口、因特网控制消息协议(ICMP)类型、传输目的地端口、ICMP代码、其中的一个或多个的组合或任何其他适当匹配条件。
[0027]最后,本文所使用的术语“数据库秘钥”(或简单地“秘钥”)一般指的是识别和/或定义数据库内的搜索路径的字符的任何类型或形式的属性和/或序列。在一个示例中,秘钥可唯一地识别和/或定义通向数据库内的至少一个流条目的搜索路径。例如,交换机可在数据库中搜索至少一个流条目,所述至少一个流条目通过沿着由秘钥唯一地识别和/或定义的搜索路径遍历数据库而对应于秘钥。在本示例中,在沿着搜索路径遍历数据库时,交换机可到达和/或识别数据库内的流条目。
[0028]图1是用于增加软件定义网络的可缩放性的示例性系统100的框图。如此图中所示,示例性系统100可包括用于执行一个或多个任务的一个或多个模块102。例如,并且如下面将更详细地解释的,示例性系统100可包括保持数据库104,保持数据库104保持一组数据库,该组数据库被共同地配置成(I)存储一组流条目,所述流条目共同地在软件定义网络内指引网络业务,并且(2)促进至少部分地基于至少一个秘钥来搜索该组流条目,其中无论该组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定。示例性系统100还可包括检测模块106,检测模块106检测用以执行与软件定义网络内的至少一个数据分组流关联的操作的请求。
[0029]另外,并且如下面更详细地描述的,示例性系统100可包括识别该请求中的数据分组流的至少一个属性的识别模块108。示例性系统100还可包括搜索模块110,搜索模块110使用数据分组流的属性作为数据库秘钥来搜索该组数据库内的至少一个数据库以促进执行与该数据分组流关联的操作。此外,示例性系统100可包括对软件定义网络内的数据分组执行至少一个动作的动作模块112。
[0030]在某些实施例中,图1中的模块102可表示一个或多个软件应用程序或程序,所述一个或多个软件应用程序或程序在被计算设备执行时可使计算设备执行一个或多个任务。例如,并且如下面将更详细地描述的,模块12可表示被存储并配置成在诸如图2中所示的设备(例如,切换设备202 (I)-(N)、计算设备204 (I)-(N)、计算设备208 (I)-(N)和/或控制器206)和/或图11中的示例性计算系统1100的各部分的一个或多个计算设备上运行的软件模块。
[0031]图1中的模块102还可表示被配置成执行本文所述的任务中的一个或多个的一个或多个专用计算机中的全部或各部分。虽然被示为单独元件,但图1中的模块102中的一个或多个可表示单个模块或应用程序的各部分(诸如JUNIPER网络的JUNOS网络操作系统、CISCO 系统的互联网络操作系统(1S)、OPEN VSWITCH、FLOffVISOR, SNAC, PICA8、INDIGO、PANTOU、OPENFAUCET、0PENFL0WJ、NETTLE、P0X、N0X、MUL、JAXON、FLOODLIGHT、RYU、N0DEFL0W、ROUTEFLOff 和 RESONANCE)。
[0032]如图1中所示,示例性系统100还可包括一个或多个数据库,诸如一组数据库120。在一个示例中,数据库120可包括核心数据库122和一组辅助数据库128 (I)-(N)。在本示例中,可将数据库120可以被配置成存储一组流条目126。
[0033]在一些示例中,流条目126内的每个流条目可包括指示如何处理特定数据分组的信息。例如,每个流条目126可识别将对特定数据分组执行的至少一个动作。此类动作的示例在没有限制的情况下包括向特定设备和/或沿着特定网络路径转送数据分组,从和/或向特定端口转送数据分组,密封数据分组以便经由安全信道来传输(至例如远程控制器),在与特定端口相关联的队列中将数据分组入队(或排队),丢弃数据分组,其中的一个或多个的组合或任何其他适当动作。
[0034]另外或替换地,流条目126内的每个流条目可包括与流条目相关联的一个或多个统计量。例如,每个流条目126可包括随时间被更新的流特定统计量。此类统计量的示例在没有限制的情况下包括已与流条目匹配的数据分组的数目、包括在已与流条目匹配的数据分组中的字节数目、流条目已被存储在数据库或交换机中的持续时间、其一个或多个的组合、或与流条目相关联的任何其他适当统计量。
[0035]在一些示例中,数据库120内的每个数据库可包括流条目126的拷贝。在其他示例中,数据库120可包括被数据库120内的每个数据库共享的流条目126的单个拷贝。
[0036]在一些实施例中,数据库120内的核心数据库122可存储流条目126。在这些实施例中,数据库120内的辅助数据库128 (I)-(N)中的一个或多个还可存储流条目126。
[0037]另外或替换地,数据库120内的辅助数据库128 (I)-(N)中的一个或多个可存储用来在核心数据库122中搜索流条目126内的至少一个特定流条目的数据和/或信息。例如,辅助数据库128(1)-(N)中的一个或多个可存储识别定义核心数据库122内的特定搜索路径的至少一个秘钥的流条目列表(例如,图10中的流条目列表1000)和/或信息。在本示例中,辅助数据库可支持和/或促进至少部分地基于定义特定搜索路径的流条目列表和/或秘钥来搜索核心数据库122。
[0038]如下面将更详细地描述的,在一些示例中,可将数据库120内的每个数据库配置为数据结构。例如,可将核心数据库120和辅助数据库128(1)-(N)中的一个或多个配置为字典树(trie)数据结构。此类字典树数据结构的示例在没有限制的情况下包括字典树、压缩字典树、基数树、patr i c ia字典树、数字树、前缀树、紧凑前缀树、其一个或多个的组合或任何其他适当的字典树数据结构。
[0039]另外或替换地,可将辅助数据库128(1)_(N)中的一个或多个每个配置为散列表。此类散列表的示例在没有限制的情况下包括关联阵列、稀疏阵列、词典、动态集合、映射、散列函数、查找表、其一个或多个的组合或任何其他适当散列表。
[0040]如下面将更详细地描述的,在一些实施例中,数据库120内的数据库中的一个或多个可以是可使用秘钥来搜索的,其中无论流条目126内的流条目的数目是多少,该秘钥的尺寸基本上保持恒定。例如,核心数据库122 (可将其配置为字典树数据结构)可以是可使用核心数据库秘钥124来搜索的。在本示例中,核心数据库秘钥124的尺寸(由于核心数据库122被配置为字典树数据结构)可随着核心数据库122内的流条目的数目增加而基本上保持恒定。此外,由于核心数据库秘钥124的尺寸基本上保持恒定,对核心数据库122执行数据库操作(诸如查找、添加、修改或删除流条目)所需的时间量也可随着核心数据库122内的流条目的数目增加而基本上保持恒定。
[0041]数据库120可表示单个数据库或计算设备或多个数据库或计算设备的各部分。例如,数据库120可表示切换设备202 (I) - (N)、计算设备204 (I) - (N)、计算设备208 (I) - (N)、图2中的控制器和/或图11中的示例性计算系统1100的各部分中的一个或多个的一部分。另外或替换地,数据库120可表示能够被计算设备访问的一个或多个物理上分离的设备,诸如切换设备202 (I) - (N)、计算设备204 (I) - (N)、计算设备208 (I) - (N)、图2中的控制器206和/或图11中的示例性计算系统1100的各部分中的一个或多个。
[0042]如图1中所示,示例性系统100可接收一个或多个请求,诸如请求132。在一个示例中,请求132可引导交换机对数据库120内的至少一个数据库执行操作。请求132的示例在没有限制的情况下包括严格请求、非严格请求、用以在至少一个数据库中查找流条目的请求、用以向至少一个数据库添加新流条目的请求、用以修改至少一个数据库内的现有流条目的请求、用以从至少一个数据库删除现有流条目的请求、用以获得与至少一个数据库内的流条目相关联的统计量的请求、用于将与流条目相关联的统计量提供给至少一个设备的请求、其一个或多个的组合或任何其他适当请求。
[0043]如图1中所示,示例性系统100还可接收一个或多个数据分组,诸如数据分组134。在一个示例中,数据分组134可表示被传输到软件定义网络内的交换机的至少一个格式化数据单元。例如,数据分组134可表示根据0PENFL0W通信协议被格式化的至少一个数据单元。在本示例中,可将数据分组134从计算设备传输到软件定义网络内的交换机。
[0044]可以以多种方式来实现图1中的示例性系统100。例如,示例性系统100的全部或一部分可表示图2中的示例性软件定义网络200的各部分。如图2中所示,软件定义网络200可包括相互通信和/或与控制器206通信的切换设备202 (I)-(N)。软件定义网络200还可包括与切换设备202(1)通信的计算设备204(1)-(N)和与切换设备202 (N)通信的计算设备 208 (I)-(N)0
[0045]在一个示例中,切换设备202(1)_(N)每个可用模块102中的一个或多个编程和/或保持数据库120中的一个或多个。在本示例中,切换设备202(1)可能已从软件定义网络200内的一个或多个设备(诸如控制器206、计算设备204(1)-(N)和/或计算设备208 (I)-(N))接收到请求132和/或数据分组134。
[0046]在一个示例中,来自图1的模块102中的一个或多个模块102在被切换设备202 (I)-(N)中的至少一个的至少一个处理器执行时可促进增加软件定义网络的可缩放性。例如,并且如下面将更详细地描述的,模块102中的一个或多个可使切换设备(例如,切换设备202(1)-(N)中的一个)(I)保持一组数据库(例如,数据库120),所述数据库被共同地配置成(i)存储共同地在软件定义网络200内指引网络业务的一组流条目(例如,流条目126),以及(ii)至少部分地基于至少一个秘钥(例如,核心数据库秘钥124和/或辅助数据库秘钥130(1)-(N)中的至少一个)而促进搜索该组流条目,其中无论该组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定,(2)检测用以执行与软件定义网络200内的至少一个数据分组流关联的操作的请求(例如,请求132),(3)识别该请求中的数据分组流的至少一个属性,以及然后(4)使用数据分组流的属性作为数据库秘钥来搜索该组数据库内的至少一个数据库(例如,核心数据库122和/或辅助数据库128(1)-(N)中的至少一个),以促进执行与该数据分组流关联的操作。在本示例中,搜索数据库所需的时间量可至少部分地由于数据库秘钥的基本上恒定尺寸而独立于该组流条目内的流条目的数目。
[0047]切换设备202(1)_(N) —般地表示能够在软件定义网络的设备之间路由和/或转送信息(诸如数据分组)的任何类型或形式的设备、装置、系统和/或应用。在一些示例中,可由控制器206对切换设备202 (I)-(N)进行重配置和/或重编程。切换设备的示例在没有限制的情况下包括网络集线器、网关、交换机(诸如启用的0PENFL0W交换机)、桥接器、路由器、现场可编程门阵列(FPGA)、节点、其一个或多个的组合或任何其他适当切换设备。
[0048]控制器206 —般地表示能够管理和/或控制软件定义网络内的信息(有时称为“业务”)的移动的任何类型或形式的设备、装置和/或系统。在一个示例中,控制器206可包括能够运行软件的专用设备,该软件确定切换设备202(1)-(N)将如何处理软件定义网络200内的某些数据分组。在另一示例中,控制器206可包括在通用计算设备和/或联网设备上执行的促进软件定义网络200的集中式管理的虚拟机和/或其他软件。
[0049]计算设备204⑴-(N)和208⑴-(N) —般地表示能够读取计算机可执行指令的任何类型或形式的计算设备。计算设备204(1)-(N)和208(1)-(N)的示例在没有限制的情况下包括膝上计算机、平板电脑、台式计算机、服务器、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统、切换设备、应用服务器、web服务器、存储服务器、去重服务器、数据库服务器、图11中的示例性计算系统1100、其一个或多个的组合或任何其他适当计算设备。
[0050]图3是用于增加软件定义网络的可缩放性的示例性计算机实现方法300的流程图。图3中所示的步骤可由任何适当计算机可执行代码和/或计算系统执行。在一些实施例中,图3中所示的步骤可由图1中的系统100、图2中的系统200和/或图11中的计算系统1110的组件中的一个或多个执行。
[0051]如图3中所示,在步骤302处,本文所述的系统中的一个或多个可保持被共同地配置成存储一组流条目的一组数据库。例如,在步骤302处,保持模块104可作为图2中的切换设备202 (I)的一部分保持数据库120,数据库120可被共同地配置成存储来自图1的流条目126。在本示例中,数据库120可包括核心数据库122和辅助数据库128 (I)-(N),其可促进分别至少部分地基于核心数据库秘钥124和辅助数据库键130 (I)-(N)来搜索流条目126。如下面将更详细地描述的,核心数据库秘钥124和/或辅助数据库秘钥130(1)-(N)的尺寸可基本上保持恒定,无论流条目126内的流条目的数目是多少。
[0052]本文所述的系统可以以多种方式来执行步骤302。在一些示例中,保持模块104可按照控制器206的指挥来构造、构建和/或保持数据库120。例如,检测模块106可作为切换设备202 (I)的一部分检测从软件定义网络200内的计算设备204 (I)接收到的数据分组。响应于此数据分组的检测,搜索模块110可在核心数据库122中搜索指示如何处理此数据分组的流条目。
[0053]在这是切换设备202 (I)已第一次遇到数据分组的情况下,核心数据库122可能尚不包括对应于和/或适用于数据分组的流条目(即,搜索模块I1可通过核心数据库122内的流条目126进行迭代而未找到其匹配条件与数据分组的对应属性匹配的流条目)。响应于要找到指示如何处理此数据分组的流条目的此失败尝试,保持模块104可密封数据分组且然后引导切换设备202(1)经由安全信道将已密封数据分组传输到控制器206。在经由此安全信道接收到已密封数据分组时,控制器206可分析已密封数据分组的内容,并至少部分地基于此分析来确定切换设备202(1)将如何处理数据分组(现在和未来遇到的)。控制器206然后可经由安全信道向切换设备202(1)发出请求以向流条目126添加对应于和/或适用于数据分组的新的流条目。一旦检测模块106检测到切换设备202 (I)已经由安全信道从控制器206接收到请求,则保持模块104可向流条目126添加对应于和/或适用于数据分组的流条目。
[0054]保持模块104可以以多种方式向流条目126添加流条目126。在一个示例中,保持模块104可仅向核心数据库122添加流条目。替换地,保持模块104可向核心数据库122和辅助数据库128 (I)-(N)中的一个或多个添加流条目。例如,保持模块104可向核心数据库122和辅助数据库128 (I)-(N)中的每一个两者添加流条目。
[0055]在一个示例中,保持模块104可向流条目中插入指示如何处理数据分组的信息。另外或替换地,保持模块104可向流条目中插入对指示如何处理数据分组的参考。例如,当向辅助数据库128(1)-(N)添加流条目而不是直接向流条目中插入指示如何处理数据分组的信息时,保持模块104可插入促进对被添加到核心数据库122的流条目的访问的参考。在本示例中,该参考可包括定义通向被添加到核心数据库122的流条目的搜索路径的数据库秘钥。
[0056]如上文详述的,保持模块104可将数据库120中的至少一个配置为字典树数据结构。例如,在图4中所示的实施例中,可将核心数据库122和辅助数据库128(2)-(4)中的每一个配置为压缩字典树。相反,可将辅助数据库128(1)配置为散列表。
[0057]图5是示例性字典树数据结构510的图示。如此图中所示,字典树数据结构510可包括根节点(在本示例中“根500”)、每个表示通向至少一个流条目的至少一个搜索路径的中间部分的一组分支节点(在本示例中,“节点502 (I)-(N)”、“节点504(1)-(N)”、“节点(I)-(N) ”和潜在地“节点508(1)-(N)”,取决于在字典树数据结构510内是否存在附加节点)以及一组元素节点,每个包括至少一个流条目(在本示例中,潜在地“节点508 (I)-(N) ”,取决于在字典树数据结构510内是否存在附加节点)。
[0058]图6是作为字典树数据结构的核心数据库122的示例性图示。如此图中所示,核心数据库122可包括每个对应于数据库秘钥内的第一字符(在本示例中,“ 1”、“2”或“3”)的节点502 (I) - (N)、每个对应于其第一字符是“ I ”的数据库秘钥内的第二字符(在本示例中,“I”或“2”)的节点504(1)-(N)、每个对应于其第一字符是“3”的数据库秘钥内的第二字符(在本示例中“4”或“5”)的节点506(1)-(N)和每个对应于其第一和第二字符分别是“3”和“ 4 ”的数据库秘钥内的第三字符(在本示例中,“ 6 ”、“ 8 ”或“ 9 ”)的节点508(1)- (N)。
[0059]在图4中所示的示例中,由于核心数据库122和辅助数据库128(2)-(4)每个被配置为压缩字典树,所以核心数据库秘钥124和辅助数据库秘钥130(2)-(4)的尺寸可随着核心数据库122和辅助数据库128 (2)-(N)内的流条目数目的增加而基本上保持恒定。另外,由于核心数据库122和辅助数据库128(2)-(4)的尺寸基本上保持恒定,所以对核心数据库122和/或辅助数据库128(2)-(N)执行数据库操作(诸如查找、添加、修改或删除流条目)所需的时间量也可随着核心数据库122和辅助数据库128(2)-(N)内的流条目数目的增加而基本上保持恒定。
[0060]换言之,由于核心数据库122和辅助数据库128(2)-(4)每个被配置为压缩字典树,所以搜索模块110可能能够在恒定时间内搜索这些数据库(有时称为“0(常数)”或“0(1) ”)。通过在恒定时间内搜索这些数据库,搜索模块110可促进在恒定时间内执行数据库操作(诸如,查找、添加、修改或删除流条目)。本文所使用的短语“恒定时间”一般指的是其中对数据库执行某个操作所需的时间量并不取决于数据库内的条目数目的任何类型或形式的算法时间复杂性。
[0061]继续图4中所示的示例,数据库120内的每个数据库可具有不同的数据库秘钥。例如,核心数据库122可促进至少部分地基于核心数据库秘钥124来搜索流条目126。在一个示例中,核心数据库秘钥124可包括对应于流条目126内的每个流条目的优先级水平的至少一个字符。在本示例中,与优先级水平相对应的字符可判定要在核心数据库122内遍历的搜索路径的一部分。
[0062]流条目126内的每个流条目的优先级水平可取决于每个流条目的通配符和/或有效匹配条件的数目。本文所使用的短语“有效匹配条件”一般指的是用来确定数据分组或请求是否与流条目匹配的流条目的任何类型或形式的匹配条件。另外,本文所使用的短语“通配符” 一般指的是未被用来确定数据分组或请求是否与流条目匹配的流条目的任何类型或形式的匹配条件。
[0063]在一个示例中,随着有效匹配条件的数目减小(并且进而通配符的数目增加),该优先级水平可降低。例如,在匹配条件的总数是14的情况下,包括14个有效匹配条件和O个通配符的流条目126内的每个流条目可具有最高优先级水平。另外,包括相同的12个有效匹配条件和相同的2个通配符的流条目126内的每个流条目可具有彼此相同的较低优先级水平。相应地,流条目126内的各种流条目可具有彼此相同的优先级水平。
[0064]核心数据库秘钥124还可包括用于流条目126的至少一个匹配条件。例如,核心数据库秘钥124还可包括与至少一个匹配条件相对应的至少一个字符。在本示例中,与匹配条件相对应的字符可判定要在核心数据库122内遍历的搜索路径的另一部分。
[0065]在图4中所示的示例中,辅助数据库128(1)可促进至少部分地基于辅助数据库秘钥130(1)来搜索流条目126。在一个示例中,辅助数据库秘钥130(1)可包括与流条目126的优先级顺序相对应的16位整数。在本示例中,由于辅助数据库128(1)被配置为散列表,所以辅助数据库秘钥130(1)可本质上按照优先级的顺序将辅助数据库128(1)映射成识别流条目128的列表。相应地,辅助数据库128(1)可识别具有彼此相同的优先级水平的流条目126内的每个流条目。
[0066]图4中的辅助数据库128(2)可促进至少部分地基于辅助数据库秘钥130(2)来搜索流条目126。在一个示例中,辅助数据库秘钥130(2)可包括与至少一个匹配条件相对应的至少一个字符。在本示例中,与匹配条件相对应的字符可判定要在辅助数据库130(2)内遍历的搜索路径的一部分。
[0067]另外,辅助数据库秘钥130(2)可包括流条目126的匹配条件的至少一个值。在一个示例中,辅助数据库秘钥130(2)还可包括与匹配条件的值相对应的至少一个字符。例如,在辅助数据库秘钥130(2)包括IP源地址作为匹配条件的情况下,辅助数据库秘钥130(2)还可包括10.10.10.5作为该匹配条件的值。与该匹配条件的值相对应的字符可判定要在辅助数据库130(2)内遍历的搜索路径的另一部分。
[0068]图4中的辅助数据库128(3)可促进至少部分地基于辅助数据库秘钥130(3)来搜索流条目126。在一个示例中,辅助数据库秘钥130(3)可包括与切换设备202(1)的进入端口相对应的至少一个字符。在本示例中,与进入端口相对应的字符可判定要在辅助数据库130(3)内遍历哪个搜索路径。
[0069]图4中的辅助数据库128(4)可促进至少部分地基于辅助数据库秘钥(4)来搜索流条目126。在一个示例中,辅助数据库秘钥130(4)可包括与切换设备202 (2)的外出端口(例如,在流条目126内的至少一个流条目中识别的动作中涉及到的端口)相对应的至少一个字符。在本示例中,与外出端口相对应的字符可判定要在辅助数据库130(4)内遍历哪个搜索路径。
[0070]返回图3,在步骤304处,本文所述的系统中的一个或多个可检测用以执行与至少一个数据分组流关联的操作的请求。例如,在步骤304处,检测模块106可作为图2中的切换设备202 (I)的一部分检测用以执行与数据分组流关联的操作的请求132。此类操作的示例在没有限制的情况下可包括严格操作、非严格操作、在至少一个数据库中查找流条目、向至少一个数据库添加新的流条目、修改至少一个数据库内的现有流条目、从至少一个数据库删除现有流条目、获得与至少一个数据库内的流条目相关联的统计量、向至少一个设备提供与流条目相关联的统计量、其一个或多个的组合或任何其他适当操作。
[0071]如本文所使用的短语“严格操作”一般指的是要求与流条目的优先级水平和每个匹配条件两者都匹配的任何类型或形式的数据库操作。如本文所使用的短语“非严格操作”一般指的是仅要求与流条目的指定匹配条件的子集和那些匹配条件的指定值匹配的任何类型或形式的数据库操作。
[0072]本文所述的系统可以以多种方式来执行步骤304。在一些示例中,切换设备202(1)可经由安全信道从控制器206接收请求132。在此类示例中,由于切换设备202 (I)从控制器206接收到请求132,所以检测模块106可检测请求132。
[0073]如图3中所示,在步骤306处,本文所述的系统中的一个或多个可响应于检测到该请求而识别数据分组流的至少一个属性。例如,在步骤306处,识别模块108可作为图2中的切换设备202(1)的一部分而识别请求132中的数据分组流的至少一个属性。在本示例中,识别模块108可响应于请求132的检测而发起识别流分组的属性的过程。此类属性的示例在没有限制的情况下包括进入端口、外出端口、以太网源地址、以太网目的地地址、以太网类型、VLAN标识符、VLAN优先级水平、IP源地址、IP目的地地址、IP协议、IP ToS位、传输源端口、ICMP类型、传输目的地端口、ICMP代码、流优先级水平、其一个或多个的组合或任何其他适当属性。
[0074]本文所述的系统可以以多种方式来执行步骤306。在一些示例中,识别模块108可分析请求132以识别数据分组流的属性。例如,识别模块108可针对指示数据分组流的属性的信息而扫描请求132。在此扫描期间,识别模块108可识别指示请求132中的数据分组流的属性的信息。
[0075]在一些示例中,识别模块108还可分析请求132以识别数据分组流的属性的至少一个值。例如,识别模块108可针对指示数据分组流的属性的值而扫描请求132。在此扫描期间,识别模块108可识别指示请求132中的数据分组流的属性的值。
[0076]另外或替换地,识别模块108可分析请求132以识别请求132所请求的操作。例如,识别模块108可针对指示请求132所请求的操作的信息而扫描请求132。在此扫描期间,识别模块108可识别指示请求132所请求的操作的信息。
[0077]如图3中所示,在步骤308处,本文所述的系统中的一个或多个可使用数据分组流的属性作为数据库秘钥而在该组数据库内搜索至少一个数据库以促进执行与数据分组流关联的操作。例如,在步骤308,搜索模块110可作为图2中的切换设备202(1)的一部分而搜索数据库120内的至少一个数据库以促进执行操作。在本示例中,搜索模块110可使用数据分组流的属性作为数据库秘钥来搜索数据库120内的数据库。搜索模块110可响应于请求132的检测而使用数据分组流的属性来发起搜索数据库的过程。如上文详述的,搜索数据库120内的数据库所需的时间量可至少部分地由于数据库秘钥的基本上恒定的尺寸而独立于流条目126内的流条目的数目。
[0078]本文所述的系统可以以多种方式来执行步骤308。在一些示例中,搜索模块110可确定要搜索数据库120内的哪个数据库以便执行请求132所请求的操作。例如,识别模块108可将请求132所请求的操作通知搜索模块110。在接收到此通知时,搜索模块110可至少部分地基于请求132所请求的操作来确定要搜索数据库120内的哪个数据库。
[0079]在请求132所请求的操作是严格操作的情况下,搜索模块110可搜索图4中的核心数据库122以对核心数据库122执行严格操作。例如,识别模块108可将数据分组流的优先级水平和属性通知搜索模块110。在接收到此通知时,搜索模块110可使用数据分组流的优先级水平和属性作为核心数据库秘钥124来搜索核心数据库122。在搜索核心数据库122的同时,搜索模块110可识别与数据分组流的优先级水平和属性相对应的流条目126内的位置。在搜索模块I1已识别到流条目126内的位置之后,保持模块104可在流条目126内的所识别位置处对核心数据库122执行严格操作。
[0080]图7是核心数据库122内的示例性搜索路径的图示。如图7中所示,核心数据库秘钥124可包括共同地表示数据分组流的优先级水平(在本示例中,“优先级水平700”)的字符序列(在本示例中,“346”)、数据分组流的第一属性或匹配条件(在本示例中,“匹配条件702”)以及数据分组流的第二属性或匹配条件(在本示例中,“匹配条件704”)。
[0081]使用图7中所示的示例,搜索模块110可将“3”识别为核心数据库秘钥124中的第一字符。搜索模块110然后可通过前进到核心数据库122内的节点502(3)而开始遍历由核心数据库秘钥124定义的搜索路径,因为节点502 (3)对应于在核心数据库秘钥124中识别的字符“3”。
[0082]另外,搜索模块110可将“4”识别为核心数据库秘钥124中的第二字符。搜索模块110然后可通过前进到核心数据库122内的节点506(1)而继续遍历由核心数据库秘钥124定义的搜索路径,因为节点506(1)对应于在核心数据库秘钥124中识别的字符“4”。
[0083]最后,搜索模块110可将“6”识别为核心数据库秘钥124中的最后字符。搜索模块110然后可通过前进到核心数据库122内的节点508(1)而结束遍历由核心数据库秘钥124定义的搜索路径,因为节点508(1)对应于在核心数据库秘钥124中识别的字符“6”。
[0084]在搜索模块110已前进到节点508(1)之后,保持模块104可根据请求132对节点508(1)执行严格操作。例如,在严格操作是添加操作的情况下,保持模块104可向节点508(1)添加流条目706。在严格操作是严格修改操作的情况下,保持模块104可修改节点508(1)中的流条目706。在严格操作是严格删除操作的情况下,保持模块104可从节点508(1)删除流条目706。
[0085]如图8中所示,流条目706可包括识别数据分组流的优先级水平(在本示例中,“3”)、数据分组流的属性(在本示例中,“进入端口 ”和“VLAN ID”)、数据分组流的属性值(在本示例中,“4”和“6”)、将对匹配的数据分组执行的动作(在本示例中,“将数据分组转送到计算设备204(N)”)以及关联统计量(在本示例中,“接收到的分组:20000”、“接收到的字节:1500000”和“持续时间:47000000”)的信息。
[0086]在请求132所请求的操作是不要求流重叠的添加操作的情况下,搜索模块110可搜索图4中的辅助数据库128(1)以确定添加操作是否可导致流重叠。如本文所使用的短语“流重叠”一般指的是其中单个数据分组可与具有相同优先级水平的多个流条目匹配的任何类型或形式的交换机和/或数据库配置。
[0087]在本示例中,搜索模块110可识别请求132中的数据分组流的优先级水平。在识别了请求132中的数据分组流的优先级水平时,搜索模块110可使用数据分组流的优先级水平作为辅助数据库秘钥130(1)来搜索图4中的辅助数据空间128(1)。搜索模块110然后可通过将数据分组流的每个有效匹配条件与具有相同优先级水平的流条目的匹配条件相比较来确定添加操作是否可导致流重叠。换言之,搜索模块110可确定流条目126是否已经包括具有与数据分组流相同的优先级水平和每个有效匹配条件的流条目。
[0088]在流条目126已经包括此类流条目的情况下,搜索模块110至少部分地由于潜在流重叠而拒绝添加操作。响应于此拒绝,保持模块104可发出详述该拒绝的错误报告且然后引导切换设备202(1)经由安全信道将该错误报告传输到控制器206。
[0089]在流条目126尚未包括此类流条目的情况下,搜索模块110可使用数据分组流的优先级水平和每个有效匹配条件作为核心数据库秘钥124来搜索核心数据库122。在搜索核心数据库122的同时,搜索模块110可识别与数据分组流的优先级水平和每个有效匹配条件相对应的流条目126内的位置。在搜索模块110已识别到流条目126内的位置之后,保持模块104可通过在流条目126内的所识别位置处向核心数据库122中插入流条目来执行添加操作。
[0090]在请求132所请求的操作是非严格操作的情况下,搜索模块110可搜索图4中的辅助数据库128(2)以促进对核心数据库122内的所有匹配流条目执行非严格操作。例如,识别模块108可将数据分组流的优先级水平和值通知搜索模块110。在接收到此通知时,搜索模块110可使用数据分组流的优先级水平和值作为辅助数据库秘钥130(2)来搜索辅助数据库128 (2)。在搜索辅助数据库128 (2)的同时,搜索模块110可识别流条目126内的每个流条目,其匹配条件和匹配条件的值分别地被数据分组流的属性和属性值匹配。保持模块104然后可根据请求132来执行非严格操作。
[0091]图9是辅助数据库128 (2)内的示例性搜索路径的图示。如图9中所示,辅助数据库秘钥130(2)可包括共同地表示源IP地址匹配条件(在本示例中,“匹配条件900”)和源IP地址匹配条件的值(在本示例中,“匹配条件值902”)的字符序列(在本示例中,“210.10.10.5”)。
[0092]使用图9中所示的示例,搜索模块110可将“2”识别为辅助数据库秘钥130(2)中的第一字符。搜索模块110然后可通过前进到辅助数据库128(2)内的节点502(3)而开始遍历由辅助数据库秘钥130(2)定义的搜索路径,因为节点502(3)对应于在辅助数据库秘钥130(2)中定义的字符“2”。
[0093]另外,搜索模块110可将“I”识别为辅助数据库秘钥130(2)中的第二字符。搜索模块110然后可通过前进到辅助数据库128(2)内的节点506(2)而继续遍历由辅助数据库秘钥130(2)定义的搜索路径,因为节点506 (2)对应于在辅助数据库秘钥130(2)中定义的第二字符“I”。
[0094]搜索模块110还可将“O”识别为辅助数据库秘钥130(2)中的第三字符。搜索模块110然后可通过前进到辅助数据库128(2)内的节点508(1)而继续遍历由辅助数据库秘钥130(2)定义的搜索路径,因为节点508 (I)对应于在辅助数据库秘钥130(2)中定义的第三字符“O”。
[0095]搜索模块110还可将”识别为辅助数据库秘钥130(2)中的第四字符。搜索模块110然后可通过前进到辅助数据库128(2)内的节点904(10)而继续遍历由辅助数据库秘钥130(2)定义的搜索路径,因为节点904(10)对应于在辅助数据库秘钥130(2)中识别的第四字符”。
[0096]由辅助数据库128(2)内的辅助数据库秘钥130(2)定义的搜索路径可包括与辅助数据库秘钥130(2)的稍后“10.10.5”部分相对应的各种其他节点(图9中未示出)。搜索模块110可继续遍历由辅助数据库秘钥130(2)定义的搜索路径,直至前进到表示在辅助数据库秘钥130(2)中识别的最终字符“5”的元素节点。
[0097]在前进到此元素节点时,搜索模块110可识别流条目列表1000。如图10中所示,流条目列表1000可识别比请求132更具体地的流条目126内的流条目(在本示例中,“流条目1”、“流条目2”、“流条目29”、“流条目70”和“流条目110”)。如本文所使用的短语“更具体” 一般指的是其匹配条件和那些匹配条件的值分别地被在非严格请求中识别的属性和那些属性的值匹配的任何类型或形式的流条目。
[0098]在非严格操作是非严格修改或删除操作的情况下,搜索模块110可在核心数据库122中搜索包括在流条目列表1000中的流条目。例如,搜索模块110可使用那些流条目的优先级水平和匹配条件作为核心数据库秘钥124来搜索核心数据库122。随着搜索模块110识别到核心数据库122内的那些流条目中的每一个,保持模块104可根据请求132对核心数据库122内的那些流条目中的每一个执行非严格修改或删除操作。
[0099]在请求132是识别多个属性和那些属性的值的非严格请求的情况下,搜索模块110可在每次搜索期间使用不同的属性和值配对作为辅助数据库秘钥130(2)而对辅助数据库128 (2)执行多次搜索。结果,搜索模块110可在每次搜索期间识别流条目的不同列表。在完成多次搜索时,搜索模块110可对流条目的不同列表执行联合操作以确定哪些流条目是所有的不同列表所共有的。
[0100]在一个示例中,搜索模块110可通过识别包括最少数流条目的不同列表内的列表来执行联合操作。在识别到包括最少数流条目的列表时,搜索模块110可将此列表与在多次搜索期间所识别的每个不同列表相比较。搜索模块110然后可至少部分地基于此比较来确定哪些流条目是所有不同列表所共有的。
[0101]在确定哪些流条目是所有不同列表所共有时,搜索模块110可在核心数据库122中搜索那些流条目。例如,搜索模块110可使用那些流条目的优先级水平和匹配条件作为核心数据库秘钥124来搜索核心数据库122。随着搜索模块110识别到核心数据库122内的那些流条目中的每一个,保持模块104可根据请求132对核心数据库122内的那些流条目中的每一个执行非严格修改操作。
[0102]在非严格操作是统计操作的情况下,搜索模块110可在核心数据库122中搜索与包括在流条目列表100中的流条目相关联的统计量。例如,搜索模块110可使用那些流条目的优先级水平和匹配条件作为核心数据库秘钥124来搜索核心数据库122。随着搜索模块110识别到核心数据库122内的那些流条目中的每一个,保持模块104可从核心数据库122内的那些流条目获得所请求的统计量。保持模块104然后可引导切换设备202(1)根据请求132将所请求统计量传输到控制器206。
[0103]在请求132所请求的操作对应于和/或适用于具有特定进入端口匹配条件的所有流条目的情况下,搜索模块110可搜索图4中的辅助数据库128(3)以促进对核心数据库122内的所有匹配流条目执行操作。例如,识别模块108可将特定进入端口匹配条件通知搜索模块110。在接收到此通知时,搜索模块110可使用特定进入端口作为辅助数据库秘钥130(3)来搜索辅助数据库128(3)。在搜索辅助数据库128(3)的同时,搜索模块110可识别具有特定进入端口匹配条件的流条目126内的每个流条目。
[0104]搜索模块110然后可使用那些流条目的优先级水平和匹配条件作为核心数据库秘钥124而在核心数据库122中搜索具有特定进入端口匹配条件的流条目。随着搜索模块110识别到核心数据库122内的那些流条目中的每一个,保持模块104可根据请求132通过修改或删除那些流条目中的每一个来执行操作。
[0105]在请求132所请求的操作对应于和/或适用于其动作涉及到特定外出端口的所有流条目的情况下,搜索模块110可搜索图4中的辅助数据库128(3)以促进对核心数据库122内的所有匹配流条目执行操作。例如,识别模块108可将特定外出端口匹配条件通知搜索模块110。在接收到此通知时,搜索模块110可使用特定外出端口作为辅助数据库秘钥130(4)来搜索辅助数据库128(4)。在搜索辅助数据库128(4)的同时,搜索模块110可识别其动作涉及到特定外出端口的流条目126内的每个流条目。
[0106]搜索模块110然后可使用那些流条目的优先级水平和匹配条件作为核心数据库秘钥124而在核心数据库122中搜索其动作涉及到特定外出端口的流条目。随着搜索模块110识别到核心数据库122内的那些流条目中的每一个,保持模块104可根据请求132通过修改或删除那些流条目中的每一个来执行操作。
[0107]在一些示例中,检测模块106可检测软件定义网络200内的数据分组134。例如,切换设备202(1)可从软件定义网络200内的计算设备204(1)接收数据分组134。在本示例中,随着切换设备202(1)从计算设备204(1)接收到数据分组134,检测模块106可检测数据分组134。
[0108]响应于数据分组134的检测,搜索模块110可在核心数据库122中搜索指示如何处理数据分组134的流条目。例如,搜索模块110可按照优先级顺序通过核心数据库122内的流条目126进行迭代。在本示例中,在通过核心数据库122内的流条目126进行迭代的同时,搜索模块110可识别对应于和/或适用于数据分组134的最高优先级流条目。
[0109]更具体地,搜索模块110可识别流条目的每个有效匹配条件且然后将数据分组134的一个或多个属性与流条目的每个有效匹配条件相比较。搜索模块110可至少部分地基于此比较来确定数据分组134的属性是否与流条目的每个有效匹配条件匹配。搜索模块110然后可确定流条目对应于和/或适用于数据分组134,因为数据分组134的属性与流条目的每个有效匹配条件匹配。在搜索模块110已确定流条目对应于和/或适用于数据分组134之后,动作模块112可对数据分组134执行在流条目中识别的至少一个动作。
[0110]如上文所解释的,通过将流条目126保持在数据库120内,切换设备202 (I)可基于此而在软件定义网络200内指引网络业务。另外,通过将数据库120内的核心数据库122和/或辅助数据库128(1)-(N)中的一个或多个配置为字典树数据结构,切换设备202(1)可能能够在相同的时间量内对这些数据库执行数据库操作(诸如,查找、添加、修改或删除流条目),无论这些数据库内的流条目的数目是多少。这进而可使得切换设备202 (I)能够保持一致的性能水平,即使随着数据库120内的流条目的数目增加,从而增加软件定义网络200的可缩放性。
[0111]图11是能够实现本文所述和/或所示的实施例中的一个或多个和/或与之相结合地使用的示例性计算系统1100的框图。在一些实施例中,计算系统1100的全部或一部分可单独地或与其他元件相组合地执行结合图3所述的步骤中的一个或多个和/或是用于执行该步骤中的一个或多个的装置。计算系统1100的全部或一部分还可执行本文所述和/或所示的任何其他步骤、方法或过程和/或是用于执行和/或实现该任何步骤、方法或过程的装置。
[0112]计算系统1100广泛地表示任何类型或形式的计算设备、装置或系统,包括能够执行计算机可读指令的单个或多个处理器计算设备或系统。计算系统1100的示例在没有限制的情况下包括工作站、膝上计算机、客户端侧终端、服务器、分布式计算系统、移动设备、网络交换机、网络路由器(例如,骨干路由器、边缘路由器、核心路由器、移动服务路由器、宽带路由器等)、网络工具(例如,网络安全工具、网络控制工具、网络定时工具、SSLVPN(安全套接字层虚拟专用网)、工具等)、网络控制器、网关(例如,服务网关、移动分组网关、多路接入网关、安全网关等)和/或任何其他类型或形式的计算系统或设备。
[0113]可将计算系统1100编程、配置和/或另外设计成服从一个或多个联网协议。根据某些实施例,可将计算系统1100设计成用开放系统互连(OSI)参考模型的一个或多个层的协议一起工作,诸如物理层协议、链路层协议、网络层协议、传输层协议、会话层协议、呈现层协议和/或应用层协议。例如,计算系统1100可包括根据通用串行总线(USB)协议、电气和电子工程师学会(IEEE) 1394协议、以太网协议、Tl协议、同步光纤联网(SONET)协议、同步数字分级(SDH)协议、综合服务数字网(ISDN)协议、异步传输模式(ATM)协议、点到点协议(PPP)、以太网点到点协议(PPPoE)、ATM点到点协议(PPPoA)、蓝牙协议、IEEE802.XX协议、帧中继协议、令牌环协议、生成树协议和/或任何其他适当协议。
[0114]计算系统1100可包括各种网络和/或计算组件。例如,计算系统1100可包括至少一个处理器1114和系统存储器1116。处理器1114 一般地表示能够处理数据或解释和执行指令的任何类型或形式的处理单元。处理器1114可表示专用集成电路(ASIC)、芯片上系统(例如,网络处理器)、硬件加速器、通用处理器和/或任何其他适当处理元件。
[0115]处理器1114可根据上文所讨论的联网协议中的一个或多个来处理数据。例如,处理器1114可执行或实现协议栈的一部分,可处理分组,可执行存储器操作(例如,将分组排队以用于稍后处理),可执行最终用户应用和/或可执行任何其他处理任务。
[0116]系统存储器1116 —般地表示能够存储数据或/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。系统存储器1116的示例在没有限制的情况下包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器或任何其他适当存储器设备。虽然未要求,在某些实施例中,计算系统共1100可包括易失性存储器单元(诸如系统存储器1116)和非易失性存储设备(诸如主存储设备1132,如下面详细地描述的)。
[0117]在一些实施例中,可将系统存储器1116实现为网络设备中的共享存储器和/或分布式存储器。系统存储器1116还可存储在联网操作中使用的分组和/或其他信息。在一个示例中,可将来自图1的模块102中的一个或多个加载到系统存储器1116中。
[0118]在某些实施例中,除处理器1114和系统存储器1116之外,示例性计算系统1100还可包括一个或多个组件或元件。例如,如图11中所示,计算系统1100可包括存储器控制器1118、输入/输出(I/O)控制器120以及通信接口 1122,其中的每一个可经由通信基础设施1112被互连。通信基础设施1112 —般地表示能够促进计算设备的一个或多个组件之间的通信的任何类型或形式的基础设施。通信基础设施1112的示例在没有限制的情况下包括通信总线(诸如串行ATA(SATA)、工业标准架构(ISA)、外围组件互连(PCI)、快速PCI (PCIe)和/或任何其他适当总线)以及网络。
[0119]存储器控制器1118 —般地表示能够处理存储器或数据或控制计算系统1100的一个或多个组件之间的通信的任何类型或形式的设备。例如,在某些实施例中,存储器控制器1118可经由通信基础设施1112来控制处理器1114、系统存储器1116和I/O控制器1120之间的通信。在一些实施例中,存储器控制器1118可包括可向或从链路适配器传输数据(例如,分组)的直接存储器存取(DMA)单元。
[0120]I/O控制器1120 —般地表示能够协调和/或控制计算设备的输入和输出功能的任何类型或形式的设备或模块。例如,在某些实施例中,I/o控制器1120可控制或促进计算系统1100的一个或多个元件之间的数据传输,诸如处理器1114、系统存储器1116、通信接口 1122和存储接口 1130。
[0121]通信接口 1122广泛地表示能够促进示例性计算系统1100与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在某些实施例中,通信接口1122可促进计算系统1100与包括附加计算系统的私用或公共网络之间的通信。通信接口1122的示例在没有限制的情况下包括链路适配器、有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)以及任何其他适当接口。在至少一个实施例中,通信接口 1122可经由到诸如因特网的网络的直接链路来提供到远程服务器的直接连接。通信接口 1122还可间接地通过例如局域网(诸如以太网)、个域网、广域网、私用网络(例如虚拟专用网)、电话或电缆网、蜂窝式电话连接、卫星数据连接或任何其他适当连接来提供此类连接。
[0122]在某些实施例中,通信接口 1122还可表示被配置成经由外部总线或通信信道来促进计算系统1100与一个或多个附加网络或存储设备之间的通信的主机适配器。主机适配器的示例在没有限制的情况下可包括小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、IEEE1394主机适配器、先进技术附着(ATA)、并行ATA (PATA)、串行ATA(SATA)以及外部SATA(eSATA)主机适配器、光纤信道接口适配器、以太网适配器等。通信接口 1122还可使得计算系统1100能够参与分布式或远程计算。例如,通信接口 1122可从远程设备接收指令或向远程设备发送指令以便执行。
[0123]如图11中所示,示例性计算系统1100还可包括经由存储接口 1130被耦合到通信基础设施1112的主存储设备1132和/或备份存储设备1134。存储设备1132和1134 —般地表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备1132和1134可表示磁盘驱动器(例如,所谓的硬盘驱动器)、固态驱动器、软盘驱动器、磁带驱动器、光盘驱动器、闪速驱动器等。存储接口 1130 —般地表示用于在存储设备1132和1134与计算系统1100的其他组件之间传输数据的任何类型或形式的接口或设备。在一个示例中,可将来自图1的数据库120存储在主存储设备1132中。
[0124]在某些实施例中,可将存储设备1132和1134配置成从可移动存储单元读取和/或向其写入,该可移动存储设备被配置成存储计算机软件、数据或其他计算机可读信息。适当可移动存储单元的示例在没有限制的情况下包括软盘、磁带、光盘、闪速存储设备等。存储设备1132和1134还可包括用于允许将计算机软件、数据或其他计算机可读指令加载到计算系统1100中的其他类似结构或设备。例如,可将存储设备1132和1134配置成读和写软件、数据或其他计算机可读信息。存储设备1132和1134可以是计算系统1100的一部分,或者可以是通过其他接口系统访问的单独设备。
[0125]可将许多其他设备或子系统连接到计算系统1100。相反地,并非图11中所示的所有组件和设备都需要存在以实施本文所述和/或所示的实施例。还可以与图11中所示的那些不同的方式将上文参考的设备和子系统互连。计算系统1100还可采用任何数目的软件、固件和/或硬件配置。例如,可将本文公开的示例性实施例中的一个或多个编码为计算机可读存储介质上的计算机程序(也称为计算机软件、软件应用、计算机可读指令或计算机控制逻辑)。短语“计算机可读存储介质”一般指的是能够存储或载送计算机可读指令的任何形式的设备、载体或介质。计算机可读存储介质的示例在没有限制的情况下包括传输式介质,诸如载波,以及非临时型介质,诸如磁存储介质(例如,硬盘驱动器和软盘)、光存储介质(例如,压缩磁盘(CD)和数字视频磁盘(DVD))、电存储介质(例如,固态驱动和闪速介质)及其他分发系统。
[0126]虽然前述公开使用特定框图、流程图以及示例阐述了各种实施例,但本文所述和/或所示的每个框图组件、流程图步骤、操作和/或组件可使用大范围的硬件、软件或固件(或其任何组合)配置来单独地和/或共同地实现。另外,应认为包含在其他组件内的组件的任何公开本质上是示例性的,因为能够实现许多其他架构以实现相同功能。
[0127]在一些示例中,图1中的系统100的全部或一部分可表示云计算或基于网络的环境的各部分。云计算和基于网络环境可经由因特网来提供各种服务和应用。这些云计算和基于网络服务(例如,作为服务的软件、作为服务的平台、作为服务的基础设施等)可以是可通过web浏览器或其他远程接口访问的。本文所述的各种功能还可提供网络切换能力、网关访问能力、网络安全功能、用于网络的内容高速缓存和输送服务、网络控制服务和/或其他联网功能。
[0128]本文所述和/或所示的过程参数和序列仅仅是以示例的方式给出的且可以根据期望而改变。例如,虽然本文所示和/或所述的步骤可按照特定顺序示出或讨论,但这些步骤不一定需要按照所示或所讨论的顺序来执行。本文所述和/或所示的各种示例性方法还可省略本文所述或所示的步骤中的一个或多个或者可包括除公开的那些之外的附加步骤。
[0129]提供前述描述是为了使得本领域的技术人员能够最好地利用本文公开的示例性实施例的各种方面。本示例性描述并不意图是穷尽的或局限于公开的任何精确形式。在不脱离本公开的精神和范围的情况下可以有许多修改和变更。应认为本文公开的实施例在所有方面是说明性而非限制性的。应在确定本公开的范围时对所附权利要求及其等同物进行参考。
[0130]除非另外说明,在本说明书和权利要求中所使用的术语“连接到”和“耦合到”(及其派生词)理解为允许直接和间接(即,经由其他元件或部件)连接两者。另外,应将如在本说明书和权利要求中使用的术语“一”或“一个”理解为意指“其中的至少一个”。最后,为了便于使用,如在本说明书和权利要求中所使用的术语“包括”和“具有”(及其派生词)可与词语“包含”互换且具有与之相同的意义。
【权利要求】
1.一种计算机实现的方法,包括: 保持一组数据库,所述一组数据库被共同地配置成: 存储共同地在软件定义网络内指引网络业务的一组流条目; 促进至少部分地基于至少一个秘钥来搜索所述一组流条目,其中无论所述一组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定; 检测用以执行与所述软件定义网络内的至少一个数据分组流关联的操作的请求; 响应于检测到所述请求: 识别所述请求中的所述数据分组流的至少一个属性; 使用所述数据分组流的所述属性作为数据库秘钥而在所述一组数据库内搜索至少一个数据库,以促进执行与所述数据分组流关联的所述操作,其中,搜索所述数据库所需的时间量至少部分地由于所述数据库的秘钥的基本上恒定的尺寸而独立于所述一组流条目内的流条目的数目。
2.根据权利要求1所述的方法,其中,保持所述一组数据库包括保持: 核心数据库,所述核心数据库的秘钥包括: 所述一组流条目的优先级顺序; 所述一组流条目的至少一个匹配条件; 至少一个辅助数据库,其秘钥不同于所述核心数据库的秘钥。
3.根据权利要求2所述的方法,其中: 所述核心数据库包括字典树数据结构; 在所述一组数据库内搜索所述数据库包括: 识别所述请求中的所述数据分组流的优先级水平; 识别所述请求中的所述数据分组流的至少一个属性; 使用所述数据分组流的所述优先级水平和属性作为所述核心数据库的秘钥来搜索所述核心数据库; 在搜索所述核心数据库的同时,识别所述一组流条目内与所述数据分组流的所述优先级水平和属性相对应的位置; 对用以执行与所述数据分组流关联的所述操作的所述请求进行响应还包括:在所述一组流条目内的所识别的位置处对所述核心数据库执行所述操作。
4.根据权利要求2所述的方法,其中: 所述辅助数据库包括一种数据结构,该数据结构的秘钥包括所述一组流条目的优先级的顺序; 在所述一组数据库内搜索所述数据库包括: 识别所述请求中的所述数据分组流的优先级水平; 识别所述请求中的所述数据分组流的每个有效匹配条件; 使用所述数据分组流的所述优先级水平作为所述辅助数据库的秘钥来搜索所述辅助数据库; 至少部分地基于搜索所述辅助数据库来确定所述一组流条目尚未包括具有所述数据分组流的所述优先级水平和每个有效匹配条件的流条目; 对用以执行与所述数据分组流关联的所述操作的所述请求进行响应还包括通过以下各项对所述核心数据库执行添加操作: 使用所述数据分组流的所述优先级水平和每个有效匹配条件作为所述核心数据库的秘钥来搜索所述核心数据库; 在搜索所述核心数据库的同时,识别所述一组流条目内与所述数据分组流内的所述优先级水平和每个有效匹配条件相对应的位置; 在所述一组流条目内的所识别的位置处将所述流条目插入所述核心数据库中。
5.根据权利要求2所述的方法,其中: 所述辅助数据库包括字典树数据结构,所述字典树数据结构的秘钥包括: 所述一组流条目的至少一个匹配条件; 所述一组流条目的所述匹配条件的至少一个值; 在所述一组数据库内搜索所述数据库包括: 识别所述请求中的所述数据分组流的至少一个属性; 识别所述请求中的所述数据分组流的所述属性的至少一个值; 使用所述数据分组流的所述属性和所述数据分组流的所述属性的值作为所述辅助数据库的秘钥来搜索所述辅助数据库; 对用以执行与所述数据分组流关联的所述操作的所述请求进行响应还包括通过以下各项对所述核心数据库执行修改操作: 至少部分地基于搜索所述辅助数据库来识别所述一组流条目内的每个流条目,所述流条目的匹配条件和所述匹配条件的值分别地被所述数据分组流的所述属性和所述数据分组流的所述属性的值匹配; 至少部分地基于所述请求来修改所述核心数据库内的每个流条目,所述流条目的匹配条件和所述匹配条件的值分别地被所述数据分组流的所述属性和所述数据分组流的所述属性的值匹配。
6.根据权利要求2所述的方法,其中: 所述辅助数据库包括字典树数据结构,所述字典树数据结构的秘钥包括: 所述一组流条目的至少一个匹配条件; 所述一组流条目的所述匹配条件的至少一个值; 在所述一组数据库内搜索所述数据库包括: 识别所述请求中的所述数据分组流的至少一个属性; 识别所述请求中的所述数据分组流的所述属性的至少一个值;使用所述数据分组流的所述属性和所述数据分组流的所述属性的值作为所述辅助数据库的秘钥来搜索所述辅助数据库; 对用以执行与所述数据分组流关联的所述操作的所述请求进行响应还包括通过以下各项对所述核心数据库执行统计操作: 至少部分地基于搜索所述辅助数据库来识别所述一组流条目内的每个流条目,所述流条目的匹配条件和所述匹配条件的值分别地被所述数据分组流的所述属性和所述数据分组流的所述属性的值匹配; 从所述核心数据库获得每个流条目的至少一个统计量,其中该流条目的匹配条件和所述匹配条件的值分别地被所述数据分组流的所述属性和所述数据分组流的所述属性的值匹配; 至少部分地基于所述请求来将每个流条目的所述统计量提供给所述软件定义网络内的至少一个计算系统。
7.根据权利要求2所述的方法,其中: 所述辅助数据库包括字典树数据结构,所述字典树数据结构的秘钥包括所述软件定义网络内的网络端口; 在所述一组数据库内搜索所述数据库包括: 识别与所述请求中的所述数据分组流相关联的特定网络端口; 使用所述特定网络端口作为所述辅助数据库的秘钥来搜索所述辅助数据库; 对用以执行与所述数据分组流关联的所述操作的所述请求进行响应还包括通过以下各项对所述核心数据库执行修改操作: 至少部分地基于搜索所述辅助数据库来识别与所述特定网络端口相关联的所述一组流条目内的每个流条目; 至少部分地基于所述请求来修改与所述特定网络端口相关联的所述核心数据库内的每个流条目。
8.根据权利要求7所述的方法,其中,修改与所述特定网络端口相关联的所述核心数据库内的每个流条目包括:从所述核心数据库删除与所述特定网络端口相关联的每个流条目。
9.根据权利要求2所述的方法,其中,搜索所述一组数据库内的所述数据库包括: 使用所述数据分组流的所述属性作为所述辅助数据库的秘钥来搜索所述辅助数据库; 识别所述辅助数据库内识别所述数据分组流的至少一个其他属性的至少一个流条目。
10.根据权利要求9所述的方法,其中,所述数据分组流的所述属性和其他属性包括: 所述数据分组流的优先级水平; 所述数据分组流的至少一个匹配条件。
11.根据权利要求10所述的方法,还包括:响应于识别所述辅助数据库内的所述流条目: 使用所述数据分组流的所述优先级水平和匹配条件作为所述核心数据库的秘钥在所述核心数据库中搜索识别要对所述数据分组流执行的至少一个动作的至少一个流条目; 识别所述核心数据库内的识别要对所述数据分组流执行的所述动作的流条目。
12.根据权利要求2所述的方法,进一步包括: 检测所述软件定义网络内的至少一个数据分组; 通过按照优先级顺序对所述核心数据库内的所述一组流条目进行迭代来识别用于识别要对所述数据分组执行的至少一个动作的至少一个流条目; 对所述数据分组执行所识别的动作。
13.根据权利要求12所述的方法,其中,识别用于识别要对所述数据分组执行的所述动作的所述流条目包括: 识别所述一组流条目内的流条目的每个有效匹配条件; 通过将所述数据分组的所述属性与所述流条目的每个有效匹配条件相比较来确定所述数据分组的一个或多个属性与所述流条目的每个有效匹配条件匹配; 确定所述流条目对应于所述数据分组,因为所述数据分组的属性与所述流条目的每个有效匹配条件匹配。
14.根据权利要求1所述的方法,其中,所述一组数据库内的所述数据库包括字典树数据结构。
15.根据权利要求14所述的方法,其中,搜索所述一组数据库内的所述数据库包括通过以下各项来遍历字典树数据结构: 识别所述数据分组流的所述属性内的至少一个字符; 前进至所述字典树数据结构内与在所述数据分组流的所述属性内识别的所述字符相对应的节点。
16.根据权利要求15所述的方法,其中,遍历所述字典树数据结构包括: 识别所述数据分组流的所述属性内的最后字符; 前进至所述字典树数据结构内与在所述数据分组流的所述属性内识别的最后字符相对应的另一节点; 在前进至与在所述数据分组流的所述属性内识别的最后字符相对应的所述另一节点时,执行与所述数据分组流关联的所述操作。
17.根据权利要求16所述的方法,其中,执行与所述数据分组流关联的所述操作包括:至少部分地基于所述请求向所述一组流条目添加流条目。
18.根据权利要求16所述的方法,其中,执行与所述数据分组流关联的所述操作包括以下各项中的至少一个: 至少部分地基于所述请求来修改所述一组流条目内的流条目; 至少部分地基于所述请求从所述一组流条目删除所述流条目。
19.一种系统,包括: 保持模块,所述保持模块保持一组数据库,所述一组数据库被共同地配置成: 存储共同地在软件定义网络内指引网络业务的一组流条目; 促进至少部分地基于至少一个秘钥来搜索所述一组流条目,其中无论所述一组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定; 检测模块,所述检测模块检测用以执行与所述软件定义网络内的至少一个数据分组流关联的操作的请求; 识别模块,所述识别模块识别所述请求中的所述数据分组流的至少一个属性; 搜索模块,所述搜索模块使用所述数据分组流的所述属性作为数据库秘钥来搜索所述一组数据库内的至少一个数据库以促进执行与所述数据分组流关联的所述操作,其中,搜索所述数据库所需的时间量至少部分地由于所述数据库的秘钥的基本上恒定的尺寸而独立于所述一组流条目内的流条目的数目; 至少一个物理处理器,所述物理处理器被配置成执行所述保持模块、所述检测模块、所述识别模块以及所述搜索模块。
20.一种装置,包括: 存储器,所述存储器被配置成存储一组数据库,所述一组数据库: 包括共同地在软件定义网络内指引网络业务的一组流条目; 促进至少部分地基于至少一个秘钥来搜索所述一组流条目,其中无论所述一组流条目内的流条目的数目是多少,所述至少一个秘钥的尺寸基本上保持恒定; 至少一个处理器,所述处理器被配置成: 保持存储在所述存储器中的所述一组数据库; 检测用以执行与所述软件定义网络内的至少一个数据分组流关联的操作的请求; 响应于检测到所述请求: 识别所述请求中的所述数据分组流的至少一个属性; 使用所述数据分组流的所述属性作为数据库秘钥而在所述一组数据库内搜索至少一个数据库,以促进执行与所述数据分组流关联的所述操作,其中,搜索所述数据库所需的时间量至少部分地由于所述数据库的秘钥的基本上恒定的尺寸而独立于所述一组流条目内的流条目的数目。
【文档编号】G06F17/30GK104283786SQ201410306920
【公开日】2015年1月14日 申请日期:2014年6月30日 优先权日:2013年7月5日
【发明者】阿普尔瓦·吉恩达尔, 亚伊宁德拉·库马尔, 拉胡尔·S·卡斯拉里卡尔, 桑迪普·巴贾杰, 拉米亚·奥利钱德兰 申请人:瞻博网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1