基于流的覆盖网络的制作方法

文档序号:6505837阅读:142来源:国知局
基于流的覆盖网络的制作方法
【专利摘要】本发明公开涉及基于流的覆盖网络。在一种实施例中,一种用于给覆盖网络中的流量分类的系统包括:处理器,适于执行逻辑;适于接收覆盖分组的逻辑;适于确定覆盖分组和/或覆盖分组的一个或多个内部分组的至少一个特性以便给覆盖分组分类的逻辑;适于把流标识符关联到覆盖分组的逻辑、适于确定与流标识符关联的一个或多个策略的逻辑,其中一个或多个策略基于覆盖分组和/或覆盖分组的一个或多个内部分组的至少一个特性;及适于把流标识符存储在覆盖分组的头中的逻辑。根据其它实施例给出了用于给覆盖网络中的流量分类的更多系统、方法与计算机程序产品。
【专利说明】基于流的覆盖网络
【技术领域】
[0001]本发明涉及数据中心基础设施,更具体地,本发明涉及基于流的覆盖网络(overlay network)体系结构及其部件。
【背景技术】
[0002]网络虚拟化是新兴数据中心与云计算趋势,其目标是以大大简化多租户环境及传统环境中的网络供应的方式虚拟化终端站看到的网络。实现网络虚拟化的更多常见技术中的一种是使用网络覆盖,其中在服务器、边缘网络交换机和终端站所连接到的网关之间建立隧道。隧道实际上是通过将源终端站发送的分组封装到覆盖头中实现的,其中覆盖头把来自源交换机的分组经基于互联网协议(IP)的网络以用户数据报协议(UDP)传输传输到目标交换机。覆盖头包括唯一识别虚拟网络的标识符(ID)。目标交换机剥离覆盖头封装、UDP传输头和IP头,并且把原始分组交给目标终端站。除了这种隧道机制,边缘交换机也参与到地址发现协议,这种协议可以是基于学习/洪泛的,或者基于查找的。
[0003]像虚拟可扩展局域网(VXLAN)的覆盖网络利用隧道在地理上连接分离的层-2(L2)网络。这些是层3 (L3)隧道之上的L2。源自VXLAN中的虚拟机(VM)并且目的地是位于另一物理位置的同一 VXLAN中的另一个VM或VM组的L2分组在L3隧道之上携带。
[0004]覆盖网络很复杂,难以管理。这种复杂性的一个原因是网络管理员管理网络,而服务器管理员管理服务器。网络与服务器管理员需要一起工作,来管理覆盖网络,其中覆盖网络可以使用覆盖体系结构中的这两种实体。这种增加的复杂性可能导致误传,从而导致有些任务被执行两次,而有些任务没有执行(因为一个管理员可能假设另一个管理员在处理它),及由于需要合作而导致的整体延迟。因而,具有可以被一个管理员管理的覆盖网络将是有益的。

【发明内容】

[0005]在一种实施例中,一种系统包括:处理器,适于执行逻辑;适于确定与覆盖分组关联的流标识符的逻辑;适于确定与所述流标识符关联的一个或多个策略的逻辑;及适于应用与所述流标识符关联的一个或多个策略的逻辑;其中,所述流标识符存储在所述覆盖分组的头中。
[0006]在另一种实施例中,一种用于给覆盖网络中的流量分类的系统,所述系统包括:处理器,适于执行逻辑;适于接收覆盖分组的逻辑;适于确定覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性以便给所述覆盖分组分类的逻辑;适于把流标识符关联到覆盖分组的逻辑;适于确定与流标识符关联的一个或多个策略的逻辑,其中所述一个或多个策略基于所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性;及适于把所述流标识符存储在所述覆盖分组的头中的逻辑。
[0007]在还有另一种实施例中,一种用于管理覆盖网络中的流量的方法,所述方法包括:确定与覆盖分组关联的流标识符;确定与所述流标识符关联的一个或多个策略;及应用与所述流标识符关联的一个或多个策略;其中,所述流标识符存储在所述覆盖分组的头中。
[0008]根据另一种实施例,一种用于给覆盖网络中的流量分类的方法,所述方法包括:接收覆盖分组;确定所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性,以便给所述覆盖分组分类;把流标识符关联到所述覆盖分组;确定与所述流标识符关联的一个或多个策略,其中所述一个或多个策略基于所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性;及把所述流标识符存储在所述覆盖分组的头中。
[0009]在还有另一种实施例中,一种用于管理覆盖网络上的流量的计算机程序产品包括:具有体现在其中的计算机可读程序代码的计算机可读存储介质,该计算机可读程序代码包括:配置成确定与覆盖分组关联的流标识符的计算机可读程序代码;配置成确定与流标识符关联的一个或多个策略的计算机可读程序代码;及配置成应用与流标识符关联的一个或多个策略的计算机可读程序代码,其中流标识符存储在所述覆盖分组的头中。
[0010]从以下具体描述中,本发明的其它方面和实施例将变得显而易见,以下具体描述连同附图一起通过例子说明本发明的原理。
【专利附图】

【附图说明】
[0011]图1说明了根据一种实施例的网络体系结构。
[0012]图2示出了根据一种实施例的、可以与图1的服务器和/或客户端关联的代表性硬件环境。
[0013]图3是根据一种实施例的虚拟化数据中心的简化图。
[0014]图4示出了根据一种实施例的系统。
[0015]图5是根据一种实施例的方法的流程图。
[0016]图6是根据一种实施例的方法的流程图。
[0017]图7A是根据一种实施例的示例性策略数据库。
[0018]图7B是根据一种实施例的示例性流与策略数据库。
[0019]图8包括根据一种实施例的、包括流标识符的覆盖分组帧格式的简化示意图。
具体实施例方式
[0020]进行以下描述是为了说明本发明的通用原理而不是要限制在此要求保护的发明性概念。另外,在此所述的特定特征可以结合其它所述特征以各种可能组合与置换中的每
一种一起使用。
[0021]除非在这里另外具体定义,所有术语都要赋予其最广泛的可能解释,包括本说明书暗示的意义及本领域技术人员可以理解和/或在字典、论文等中定义的意义。
[0022]还必须指出,如在说明书和所附权利要求中所使用的,除非另外规定,否则单数形式“一个”和“这个”也包括复数个被指对象。
[0023]在一种方法中,覆盖网络可以由集中式或分布式控制器控制,由此允许策略和规定(provisioning)提供给覆盖流量的内部分组。在一种这样的实施例中,控制器可以遵守在软件定义的网络(SDN)中运行的OpenFlow标准。
[0024]在一种通用实施例中,一种系统包括:处理器,适于执行逻辑;适于确定与覆盖分组关联的流标识符的逻辑;适于确定与所述流标识符关联的一个或多个策略的逻辑;及适于应用与所述流标识符关联的一个或多个策略的逻辑;其中,所述流标识符存储在所述覆盖分组的头中。
[0025]在另一种通用实施例中,一种用于给覆盖网络中的流量分类的系统,所述系统包括:处理器,适于执行逻辑;适于接收覆盖分组的逻辑;适于确定覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性以便给所述覆盖分组分类的逻辑;适于把流标识符关联到覆盖分组的逻辑;适于确定与流标识符关联的一个或多个策略的逻辑,其中所述一个或多个策略基于所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性;及适于把所述流标识符存储在所述覆盖分组的头中的逻辑。
[0026]在还有另一种通用的实施例中,一种用于管理覆盖网络中的流量的方法,所述方法包括:确定与覆盖分组关联的流标识符;确定与所述流标识符关联的一个或多个策略;及应用与所述流标识符关联的一个或多个策略;其中,所述流标识符存储在所述覆盖分组的头中。
[0027]根据另一种通用实施例,一种用于给覆盖网络中的流量分类的方法,所述方法包括:接收覆盖分组;确定所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性,以便给所述覆盖分组分类;把流标识符关联到所述覆盖分组;确定与所述流标识符关联的一个或多个策略,其中所述一个或多个策略基于所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性;及把所述流标识符存储在所述覆盖分组的头中。
[0028]在还有另一种通用实施例中,一种用于管理覆盖网络上的流量的计算机程序产品包括:具有体现在其中的计算机可读程序代码的计算机可读存储介质,该计算机可读程序代码包括:配置成确定与覆盖分组关联的流标识符的计算机可读程序代码;配置成确定与流标识符关联的一个或多个策略的计算机可读程序代码;及配置成应用与流标识符关联的一个或多个策略的计算机可读程序代码,其中流标识符存储在所述覆盖分组的头中。
[0029]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“逻辑”、“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0030]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者非临时性的计算机可读存储介质。非临时性的计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者以上的任意组合。非临时性计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、便携式紧凑磁盘只读存储器(⑶-ROM)、Blu-Ray盘只读存储器(BD-R0M)、光存储器件、磁存储器件、或者上述的任意合适组合。在本文件的背景中,非临时性计算机可读存储介质可以是任何能够包含或存储程序或应用的有形介质,该程序或应用可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0031]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括一但不限于一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是非易失性计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序,例如具有一个或多个有线、光纤等的电连接。
[0032]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、射频(RF)等等,或者上述的任意合适组合。
[0033]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机或服务器可以通过任意种类的网络一包括局域网(LAN)、存储区域网(SAN)和/或广域网(WAN),任何虚拟网络,或可以连接到外部计算机的连接,例如利用因特网服务提供上(ISP)通过因特网一连接到用户计算机。
[0034]下面将参照根据本发明的各个实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0035]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0
[0036]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的一个或多个方框中规定的功能/操作的过程。
[0037]图1说明了根据一种实施例的网络体系结构100。如图1中所示,提供了多个远程网络102,包括第一远程网络104和第二远程网络106。网关101可以稱合在远程网络102与近端网络108之间。在所给出的网络体系结构100的背景下,网络104、106每个都可以采取任何形式,包括但不限于LAN、VLAN、诸如互联网的WAN、公共交换电话网络(PSTN)、内部电话网络,等等。
[0038]在使用当中,网关101承当从远程网络102到近端网络108的进入点。照此,网关101可以充当能够指引到达网关101的给定数据分组的路由器,还可以充当对给定分组提供出入网关101的实际路径的交换机。
[0039]还包括至少一个耦合到近端网络108的数据服务器114,该数据服务器114还可以经网关101从远程网络102访问。应当指出,数据服务器114可以包括任何类型的计算设备/组件。耦合到每个数据服务器114的是多个用户设备116。这种用户设备116可以包括台式计算机、膝上型计算机、手持式计算机、打印机和/或任何其它类型的逻辑包含设备。应当指出,在有些实施例中,用户设备111也可以直接耦合到任何网络。
[0040]外围设备120或外围设备120的系列,例如传真机、打印机、扫描仪、硬盘驱动器、联网和/或本地存储单元或系统等,可以耦合到网络104、106、108中的一个或多个。应当指出,数据库和/或附加部件可以供耦合到网络104、106、108的任何类型的网络元件使用或者集成到其中。在本描述的背景下,网络元件可以指网络的任何部件。
[0041]根据有些方法,在这里描述的方法与系统可以利用虚拟系统和/或模拟一个或多个其它系统的系统——诸如模拟IBM z/OS环境的UNIX系统、虚拟寄存MICROSOFT WINDOWS环境的UNIX系统、模拟IBM z/OS环境的MICROSOFT WINDOWS系统,等等——实现和/或在其上实现。在有些实施例中,这种虚拟化和/或模拟可以通过使用VMWARE软件来增强。
[0042]在更多的方法中,一个或多个网络104、106、108可以代表统称为“云”的系统群集。在云计算中,共享资源,诸如处理能力、外围设备、软件、数据、服务器等,按需提供给云中的任何系统,由此允许跨许多计算系统对服务的访问与分布。云计算一般涉及运行在云中的系统之间的互联网连接,但是,如本领域中已知的,连接系统的其它技术也可以使用。
[0043]图2示出了根据一种实施例、与图1的用户设备116和/或服务器114关联的代表性硬件环境。根据几种实施例,图2说明了具有诸如微处理器的中央处理单元(CPU)210和经一根或多根总线212互连的多个其它单元的工作站的典型硬件配置,其中的总线可以是不同类型,诸如本地总线、并行总线、串行总线等。其它类型的处理器也可以使用,诸如集成电路(1C)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者本领域中已知的任何其它类型的处理器。
[0044]图2中所示的工作站包括随机存取存储器(RAM) 214、只读存储器(ROM) 216、用于把诸如盘存储单元220的外围设备连接到一根或多根总线212的1/0适配器218、用于把键盘224、鼠标226、扬声器228、麦克风232和/或诸如触摸屏、数码相机(未示出)等的其它用户接口设备连接到一根或多根总线212的用户接口适配器222、用于把工作站连接到通信网络235 (例如,数据处理网络)的通信适配器234及用于把一根或多根总线212连接到显示设备238的显示适配器236。
[0045]工作站可以具有驻留在其上的操作系统,诸如MICROSOFT WINDOWS操作系统
(OS)、MAC OS、UNIX OS等。应当认识到,优选实施例还可以在除所提到的那些之外的平台与操作系统上实现。优选实施例可以利用JAVA、XML、C和/或C++语言,或者其它编程语言,以及面向对象的编程方法来编写。变得日益用来开发复杂应用的面向对象的编程(00P)也可以使用。
[0046]现在参考图3,示出了根据一种实施例的覆盖网络300的概念性视图。为了虚拟化网络服务,除了简单地在设备之间提供构架路径(连接性),当分组移动通过网关314时,月艮务也可以在分组上提供,其中网关314提供在非虚拟网络312和虚拟网络A304与虚拟网络B306之间移动的分组的路由与转发。一个或多个虚拟网络304、306存在于物理(实际)网络基础设施302中。网络体系结构302可以包括任何部件、硬件、软件和/或一般与网络基础设施关联和/或用在其中的功能,其中,如本领域技术人员将知道的,网络基础设施包括但不限于交换机、连接器、电线、电路、电缆、服务器、主机、存储介质、操作系统、应用、端口、I/O等。这种网络基础设施302支持至少一个非虚拟网络312,该非虚拟网络可以是传统网络。
[0047]每个虚拟网络304、306都可以使用任意数量的虚拟机(VM)308、310。在一种实施例中,虚拟网络A304包括一个或多个VM308,而虚拟网络B306包括一个或多个VM310。如图3所示,VM308、310不是由虚拟网络304、306共享的,而是在任何给定时刻都只包括在一个虚拟网络304、306中。
[0048]根据一种实施例,覆盖网络300可以隧道通过与一个或多个分布式线卡(DLC)互连的一个或多个单元交换域可缩放架构部件(Scalable Fabric Component, SFC)。
[0049]通过具有“平交换机”体系结构,多个VM可以既容易又有效地跨该体系结构移动数据。通常,VM很难跨层3 (L3)域从一个子网移动到另一个子网,从一个互联网协议(IP)子网移动到另一个IP子网,等等。但是,如果体系结构类似于非常大的层2 (L2)域中的大型平交换机,那么就有助于VM尝试跨体系结构移动数据。
[0050]覆盖网络300的部件一般基于称为VNI或者VNID的虚拟网络标识符识别把分组路由到哪里。这一般是24位的代码或数字,除0x0和OxFFFFFF之外。覆盖网络300具有通过把L2分组封装到覆盖头中在L3网络之上隧道传输L2分组的能力。这可以利用虚拟可扩展局域网(VXLAN)或者某种其它具有覆盖能力的协议——诸如利用通用路由封装的网络虚拟化(NVGRE)定位器/ID分离协议(LISP)、覆盖传输虚拟化(0TV),等等——来执行。分组还可以封装在用户数据报协议(M)P)和互联网协议(IP)UDP/IP头中。覆盖网络300可以包括一个或多个点到点隧道,和/或点到多点隧道。此外,这些隧道中的任何一个都可以基于任意数量的因素来创建、除去、更改和修改,诸如将新设备添加到覆盖网络300、从覆盖网络300除去设备、任何终端设备的启动,即,其中的终端设备是指管理隧道终端点的设备,诸如虚拟覆盖网络网关、虚拟机管理程序(Hypervisor)、具有覆盖功能的交换机,等等。为了让设备管理隧道,需要原始分组的源地址、目的地地址和隧道标识符之间的映射。以这种方式,物理服务器能够把封装的原始分组转发到适当的目的地设备。
[0051]根据各种实施例,覆盖网络上的源地址与目的地地址之间的、在这里被称为流标识符(ID)的唯一会话标识符可以用于给流量分类并且更有效地管理覆盖网络。覆盖网络可以是VXLAN网络、NVRGE网络或者本领域中已知的任何其它覆盖网络。每个流ID可以是唯一的整数,诸如8位整数、16位整数、32位整数、64位整数、128位整数、256位整数,等等。覆盖网络中的每个交换节点能够识别包括在由该交换节点接收到的覆盖分组中的流ID。交换节点可以是覆盖网关、有覆盖能力的交换机、运行虚拟机管理程序的有覆盖能力的服务器或者本领域中已知的任何其它合适的设备或软件。
[0052]当接收到具有与其关联的流ID的覆盖分组时,每个交换节点可以应用与该流ID关联的一个或多个策略,如随后更具体地描述的。此外,所述策略指示关于包括或不包括识别出的流ID的分组要采取的一个或多个动作。如果没有为一个流ID规定策略,就可以应用缺省策略。
[0053]根据一种实施例,每个覆盖分组都在该覆盖分组中某个地方,例如在覆盖分组的头中,包括用于该覆盖分组的关联的流ID,如随后更具体地描述的。具有覆盖头的每个分组都在分组中携带流ID作为覆盖头的一部分。
[0054]在另一种实施例中,关于多个流的多个流ID可以与单个策略关联。此外,多个策略可以与单个流ID关联。策略可以分组并且在组中应用,而且一个或多个策略可以应用到一组流ID。
[0055]策略可以存储在策略数据库中并且在其中检索,对策略ID进行索引。策略数据库可以是集中式或分布式数据库,包括关联到本地覆盖网络、整个数据中心或者任何其它部分的策略。
[0056]策略可以被网络管理员和/或服务器管理员添加、删除和/或更新。策略或者其任何部分可以安全地传送到网络中所有的覆盖交换实体。每个覆盖交换元件可以把策略数据库下载到其存储器。标准的或专有的协议可以用于策略服务器之间的交互。交换机强制执行基于流ID发现的策略。
[0057]不是所有覆盖交换机都需要完整的策略数据库,因此策略服务器可以“智能地”决定策略数据库的哪个部分要发送到每个单个的交换机,由此节省三元内容可寻址存储器(TCAM)和/或查找表空间。策略数据库可以维护策略ID和关联策略的表。它还保持流与策略数据库中流ID与策略ID的映射。
[0058]根据各种备选实施例,分布式覆盖虚拟以太网(DOVE)策略服务器可以在分类之后提供流ID。在一种方法中,流ID可以行政(administratively)管理,例如,管理员可以决定流并且在DOVE策略服务器分配流ID。在另一种方法中,流ID可以基于会话类型分配,例如,流ID= {VM MAC,域ID,应用ID,等等}。例如,应用ID可以在有效载荷传输层看到而且流可以基于应用ID来分类。
[0059]现在参考图4,示出了根据一种实施例的系统400。策略服务器402可以连接到一个或多个具有覆盖能力的设备,诸如具有覆盖能力的服务器418、用于在虚拟网络416与覆盖网络之间桥接的虚拟覆盖网络网关414,等等。如所示出的,每个具有覆盖能力的服务器418的虚拟机管理程序410能够隧道通过覆盖网络到达其它具有覆盖能力的设备。当然,这是一种简化的体系结构,而且可以存在多得多的隧道,而且覆盖网络中可以有多得多的具有覆盖能力的设备(隧道发起或终止的地方),如本领域技术人员将理解的。
[0060]每个虚拟机管理程序410可以连接到任何数量的VM412。此外,覆盖接口 406,诸如DOVE接口、VXLAN接口等,可以位于每个虚拟机管理程序410的下游侧。可以提供虚拟覆盖网络网关414以在覆盖网络与存在的任何非虚拟化网络416之间接口,可以为VXLAN或某种其它覆盖网络启用任一个网关414。
[0061 ] 策略服务器402连接到策略数据库404,策略数据库404可以包括覆盖网络中的策略、策略ID和用于流的流ID。
[0062]在一种实施例中,当覆盖分组从识别出流ID的域发出时,该分组从域中发出的设备可以从覆盖分组的头中除去或者剥离流ID。
[0063]在另一种实施例中,如果一个特定策略是丢弃分组,则只有进入的具有覆盖能力的设备可以具有丢弃写到它们的策略,而其它具有覆盖能力的设备可能不能,从而节约存储器空间。
[0064]具有覆盖能力的服务器418、策略服务器402和/或虚拟覆盖网络网关414中的每一个都可以包括用于执行逻辑的处理器,例如中央处理单元(CPU)、现场可编程门阵列(FPGA)、集成电路(IC)和专用集成电路(ASIC)或者本领域中已知的某种其它合适的处理器。[0065]根据一种实施例,访问控制列表(ACL)可以被策略服务器402应用来确定在接收到覆盖分组时要采取的一个或多个动作。在一种实施例中,ACL可以指示要对覆盖分组的内部分组执行的服务。如本领域技术人员将知道的,在许多其它的可能性当中,本领域中已知的任何服务都可以应用到内部分组,诸如防火墙服务、防止入侵系统(IPS)服务、入侵检测系统(IDS)、IPS/IDS服务、服务器负载平衡服务、LAN优化服务、VPN服务、视频优化服务、网络地址翻译(NAT)服务、加密服务、解密服务等。这些服务中的每一种都可以独立地被激活、独立地被绕过或者手动选择,如在起草ACL时系统管理员所希望的那样。
[0066]在一种实施例中,策略服务器402可以遵守OpenFlow而且可能能够经识别出的覆盖协议,诸如VXLAN、NVGRE等通信。还可以分配和管理流ID,而且可以确定在覆盖分组没有流ID时要采取的动作。此外,策略服务器402可以管理用于单个流ID的时间限制,使得流ID可以在某个时间量之后过期。此外,策略服务器402可以从具有覆盖能力的设备接收消息,其指示已经接收到与已过期的流ID关联的流,而且,通过丢弃分组、重新分配流ID或者执行某种其它动作,可以在情况发生时处理它。
[0067]对于多播覆盖分组,策略服务器402可以把流ID分配给多播分组而且可以指示哪些设备接收多播分组及哪些设备不接收。
[0068]在另一种实施例中,策略服务器402可以连接到OpenFlow控制器420,该控制器420可以连接到多个非覆盖交换机422。
[0069]现在参考图5,示出了根据一种实施例的、用于管理覆盖网络上的流量的方法500的流程图。在各种实施例中,方法500可以根据本发明在图1-4、7A-7B和8中所绘出的任一环境中执行。当然,比图5中具体描述的那些更多或更少的操作可以包括在方法500中,如本领域技术人员在阅读本描述时将理解的。
[0070]方法500的每个步骤都可以由操作环境的任何合适部件执行。例如,在一种实施例中,在各种非限制性方法中,方法500可以部分或完全地由覆盖交换机、处理器(诸如CPU、ASIC、FPGA等)、端点站(诸如虚拟机管理程序、虚拟覆盖网络网关设备、能够发起或终止隧道的覆盖交换机等)或者嵌入在计算机可读存储介质中的计算机程序代码执行。
[0071]如图5中所示,方法500可以以操作502开始,其中确定与覆盖分组关联的流标识符。在一种方法中,流标识符可以存储在覆盖分组的头中。具体而言,流标识符可以存储在覆盖分组的覆盖网络头、最外面的L2头、最外面的IP头或者最外面的UDP头中。对于流标识符可以存储在什么地方的细节,参考图8。
[0072]在一种实施例中,如果没有流标识符与覆盖分组关联,则覆盖分组可以发送到策略服务器,进行进一步的处理,或者它可以根据缺省处理指令被丢弃。在一种实施例中,连同覆盖网关一起,策略服务器可以遵守OpenFlow标准而且可以在覆盖网络中每个具有覆盖能力的服务器上与DOVE接口通信。
[0073]再次参考图5,在操作504中,确定与流标识符关联的一个或多个策略。本领域中已知的用于确定策略的任何方法都可以使用,诸如一个流标识符与一个策略之间的一对一关系、一个流标识符与多个策略之间的一对多关系、多个流标识符与单个策略之间的多对
一关系,等等。
[0074]在一种实施例中,如果没有策略与流标识符关联,则覆盖分组可以发送到策略服务器以进行进一步的处理,或者它可以根据缺省的处理指令被丢弃。[0075]在另一种实施例中,一个或多个策略可以在一个或多个ACL中指示。根据一种实施例,可以应用ACL,来确定在接收到覆盖分组时要采取的一个或多个动作。
[0076]在还有另一种实施例中,每个ACL可以指示要对覆盖分组的内部分组执行的服务。如本领域技术人员将知道的,在许多其它的可能性当中,本领域中已知的任何服务都可以应用到内部分组,诸如防火墙服务、防止入侵系统(IPS)服务、入侵检测系统(IDS)、IPS/IDS服务、服务器负载平衡服务、LAN优化服务、VPN服务、视频优化服务、网络地址翻译(NAT)服务、加密服务、解密服务等。这些服务中的每一种都可以独立地被激活、独立地被绕过或者手动选择,如在起草ACL时系统管理员所希望的那样。
[0077]在操作506中,应用与流标识符关联的一个或多个策略。一个或多个策略的应用可以包括确定每个策略指示什么作为要执行的动作。有些示例性动作包括,但不限于,关于如何处理覆盖分组或者其内部分组的指示、关于要对覆盖分组或者其内部分组做什么的指令、关于要把覆盖分组或者其内部分组发送到哪里的路由信息、要把覆盖分组或者其内部分组转发到哪里的交换信息、确定关于覆盖分组或者其内部分组的进一步特性、要对覆盖分组或者其内部分组执行的服务或者响应接收到覆盖分组要采取的任何其它适当动作。
[0078]在一种实施例中,应用与流标识符关联的一个或多个策略可以包括:对覆盖分组(并且有可能对其一个或多个内部分组)执行特定于策略的动作,包括把覆盖分组和/或其一个或多个内部分组转发到在一个或多个策略中规定的设备。以这种方式,覆盖分组可以路由到能够对覆盖分组或者对其一个或多个内部分组执行某种动作的设备。
[0079]根据另一种实施例,方法500还可以包括在接收覆盖分组之前从策略服务器接收一组流标识符和关联的策略标识符,并且把这组流标识符和关联的策略标识符存储在策略与流数据库中。这组流标识符可以对应于用于接收这组流标识符和关联的策略标识符的特定设备的典型覆盖流量。在其它实施例中,这组流标识符可以包括用于整个覆盖网络的所有流标识符、只用于源和目的地设备之间特定流量的流标识符、用于特定网络段的流标识符、用于特定消费者的流量的流标识符,等等。用于整个覆盖网络的所有流标识符的任何子集都可以被接收并存储到策略与流数据库。
[0080]根据一种实施例,在一种实施例中,流与策略数据库可以包括图7B中所示的示例性表710中所示的信息。在这种示例性表710中,多个桶标识符(ID)与一个流ID和一个策略ID关联。每个策略ID可以与一个特定策略关联,如图7A中所示的示例性策略数据库700中所示。
[0081]现在参考图7A-7B,作为一个例子,DEFAULT_POLICY (缺省策略)与策略表700中的策略ID0000关联。然后,流IDOxFFFFFFFFFFFFFFFF与策略IDOxOOOI关联,该策略IDOxOOOI没有桶ID,这指示分组应当被丢弃。对于其它流ID,通过遵循指向存储在与该特定桶ID有关的存储器中的对应信息的桶ID指针,系统能够确定什么策略要用于任何特定的流ID。
[0082]其它标识符只是代表性的,而不意味着以任何方式进行限制。类似地,策略名字也只是代表性的,而不意味着以任何方式进行限制或限制它们与策略ID、流ID或桶ID的关系O
[0083]再次参考图5,在操作504中,当确定与流标识符关联的一个或多个策略时,这种确定可以通过分析策略与流数据库进行,以便确定任何策略标识符是否与流标识符关联。
[0084]现在参考图6,根据一种实施例示出了用于分类覆盖网络中的流量的方法600的流程图。在各种实施例中,方法600可以根据本发明在图1-4中所绘出的任一环境中执行。当然,比图6中具体描述的那些更多或更少的操作可以包括在方法600中,如本领域技术人员在阅读本描述时将理解的。
[0085]方法600的每一步都可以由操作环境的任何合适部件执行。例如,在一种实施例中,在各种非限制性方法中,方法500可以部分或完全由覆盖交换机、处理器(诸如CPU、ASIC、FPGA等)、端点站(诸如虚拟机管理程序、虚拟覆盖网络网关设备、能够发起或终止隧道的覆盖交换机等)或者嵌入在计算机可读存储介质中的计算机程序代码执行。
[0086]如图6中所示,方法600可以以操作602开始,其中接收覆盖分组。在一种实施例中,覆盖分组可以在策略服务器接收,诸如遵守OpenFlow标准的OpenFlow控制器。策略服务器能够确定和分发流ID和与其关联的策略到覆盖网络中的设备,如在此所述的。
[0087]在一种实施例中,覆盖分组在接收的时候可能缺乏流ID,例如,没有与覆盖分组关联的流ID。
[0088]在操作604中,确定覆盖分组和/或该覆盖分组的一个或多个内部分组的至少一个特性,以便给覆盖分组分类。特性可以包括,但不限于,源地址、目的地地址、覆盖网络ID、分组尺寸、分组类型、包含在分组头中的信息,等等,覆盖分组的分类可以包括确定用于覆盖分组的一个或多个策略。在一种实施例中,策略可以作为ACL包括。
[0089]在操作606中,流ID关联到覆盖分组。在一种方法中,流ID可以是唯一的二进制、数字、字母数字、十六进制或者某种其它形式的标识符。在一种实施例中,流ID可以是64位整数,但不限于此。在有些其它实施例中,流ID可以是8位、16位、32位、128位、256位或者更大的整数。
[0090]在各种实施例中,流ID可以是整个覆盖网络、一个虚拟网络、该覆盖网络的一部分、整个数据中心唯一的、全局唯一的,等等。
[0091]在操作608中,确定与流标识符关联的一个或多个策略。一个或多个策略可以基于覆盖分组和/或该覆盖分组的一个或多个内部分组的至少一个特性,也就是说,这一个或多个策略可以间接地基于覆盖分组的分类。
[0092]在操作610中,流标识符存储在覆盖分组的头中。任何头都可以使用,诸如在覆盖分组的覆盖网络头、最外面的L2头、最外面的IP头或者最外面的UDP头中,等等。
[0093]根据另一种实施例,方法600还可以包括:确定适合覆盖网络中的第一设备的一组流标识符和关联的策略标识符,并且把这组流标识符和关联的策略标识符发送到第一设备。在一种方法中,这组流标识符可以对应于由第一设备接收或者从第一设备发送的典型覆盖流量。在其它实施例中,这组流标识符可以对应于整个覆盖网络、对应于由第一设备使用的特定虚拟网络(例如,用于虚拟网络的流量是通过第一设备发送的)、对应于由第一设备提供服务的覆盖网络的一部分、对应于整个数据中心,等等。
[0094]在另一种实施例中,方法600还可以包括为来自策略数据库的一个或多个关联策略中的每一个确定策略ID并且把流ID和一个或多个策略ID存储到策略与流数据库。策略与流数据库可以包括策略ID与关联的策略,如根据图7B中所示的示例性实施例所示出的。在这种示例性实施例中,策略与流数据库710包括桶标识符(bucket identifier),每个桶标识符都与流ID和策略标识符关联,而且该桶标识符指向存储与关联的策略标识符有关的路由信息的位置。当然,其它数据库结构也可以使用,如本领域技术人员在阅读本描述时将理解的。
[0095]现在参考图5-6,根据进一步的实施例,方法500或600中的任意一个都可以从计算机程序产品利用能够执行这种计算机可读程序代码的处理器执行。例如,用于管理覆盖网络上的流量的计算机程序产品可以包括其中体现了计算机可读程序代码的计算机可读存储介质。计算机可读程序代码可以包括配置成确定与覆盖分组关联的流标识符的计算机可读程序代码、配置成确定与该流标识符关联的一个或多个策略的计算机可读程序代码、配置成应用与该流标识符关联的一个或多个策略的计算机可读程序代码、配置成在接收覆盖分组之前从策略服务器接收一组流标识符和关联的策略标识符的计算机可读程序代码和/或配置成把这组流标识符和关联的策略标识符存储在策略与流数据库中的计算机可读程序代码中的一些或者全部。
[0096]在一种实施例中,这组流标识符可以对应于用于接收这组流标识符和关联的策略标识符的特定设备的典型覆盖流量,而且配置成确定与该流标识符关联的一个或多个策略的计算机可读程序代码可以包括配置成分析策略与流数据库以便确定任何策略标识符是否与该流标识符关联的计算机可读程序代码。
[0097]此外,流标识符可以存储在覆盖分组的头中。在另一种实施例中,配置成应用与流标识符关联的一个或多个策略的计算机可读程序代码可以包括配置成把覆盖分组或其一个或多个内部分组路由到在一个或多个策略中规定的设备的计算机可读程序代码。
[0098]根据另一种实施例,如果没有流标识符与覆盖分组关联或者如果没有策略与流标识符关联,则覆盖分组可以发送到策略服务器以进行进一步的处理。
[0099]现在参考图8,根据各种实施例,流ID803存储到在各个位置的覆盖分组头。流ID804的存储可以按不违反现有标准的方式存储在覆盖分组的头中。在覆盖分组800中,流ID804存储在覆盖网络头806中。在覆盖分组820中,流ID804存储在最外面的UDP头808中。根据各种方法,在覆盖分组830中,流ID804存储在最外面的L2头812、最外面的IP头810和/或最外面的UDP头808中的一个当中。在覆盖分组800、820、830每一个中,存储一个或多个内部分组802。
[0100]在其它实施例中,流ID804可以存储到覆盖分组的其它部分或者存储到覆盖分组头中,如本领域技术人员在阅读本描述时将理解的。
[0101]尽管以上已经描述了各种实施例,但是应当理解,它们仅仅是作为例子而不是限制给出的。因此,本发明实施例的广度与范围不应当受上述任一示例性实施例的限制,而是只应当根据以下权利要求及其等同来定义。
【权利要求】
1.一种系统,包括: 处理器,适于执行逻辑; 适于确定与覆盖分组关联的流标识符的逻辑; 适于确定与所述流标识符关联的一个或多个策略的逻辑;及 适于应用与所述流标识符关联的一个或多个策略的逻辑, 其中,所述流标识符存储在所述覆盖分组的头中。
2.如权利要求1所述的系统,还包括: 适于在没有流标识符与覆盖分组关联时或者在没有策略与流标识符关联时把覆盖分组发送到所述策略服务器进行进一步处理的逻辑。
3.如权利要求1所述的系统,其中所述流标识符存储在覆盖分组的覆盖网络头、最外面的层2头、最外面的互联网协议(IP)头或者最外面的用户数据报协议(UDP)头中。
4.如权利要求1所述的系统,还包括: 适于在接收覆盖分组之前从策略服务器接收一组流标识符和关联的策略标识符的逻辑,其中所述一组流标识符对应于用于所述系统的典型覆盖流量;及 适于把所述一组流标识符和关联的策略标识符存储在策略与流数据库中的逻辑; 其中,所述适于确定与所述流 标识符关联的一个或多个策略的逻辑包括:适于分析所述策略与流数据库以确定是否有任何策略标识符与所述流标识符关联的逻辑。
5.如权利要求1所述的系统,其中所述适于应用与所述流标识符关联的一个或多个策略的逻辑包括: 适于把覆盖分组或者其一个或多个内部分组路由到一个或多个策略中规定的设备的逻辑。
6.一种用于给覆盖网络中的流量分类的系统,所述系统包括: 处理器,适于执行逻辑; 适于接收覆盖分组的逻辑; 适于确定覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性以便给所述覆盖分组分类的逻辑; 适于把流标识符关联到覆盖分组的逻辑; 适于确定与流标识符关联的一个或多个策略的逻辑,其中所述一个或多个策略基于所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性;及适于把所述流标识符存储在所述覆盖分组的头中的逻辑。
7.如权利要求6所述的系统,还包括: 适于为来自策略数据库的一个或多个关联策略中的每一个确定策略标识符的逻辑;及 适于把所述流标识符和所述一个或多个策略标识符存储到策略与流数据库的逻辑, 其中所述策略数据库包括策略标识符和关联的策略, 其中所述策略与流数据库包括桶标识符,每个桶标识符都与流标识符和策略标识符关联,及 其中所述桶标识符指向存储与关联的策略标识符有关的路由彳目息的位置。
8.如权利要求6所述的系统,其中当接收到覆盖分组时,所述覆盖分组不具有与其关联的流标识符。
9.如权利要求6所述的系统,还包括: 适于确定适合所述覆盖网络中的第一设备的一组流标识符与关联的策略标识符的逻辑,其中所述一组流标识符对应于从所述第一设备接收或发送的典型覆盖流量;及适于把所述一组流标识符和关联的策略标识符发送到所述第一设备的逻辑。
10.如权利要求6所述的系统,其中所述流标识符存储在覆盖分组的覆盖网络头、最外面的层2头、最外面的互联网协议(IP)头或者最外面的用户数据报协议(UDP)头中。
11.一种用于管理覆盖网络中的流量的方法,所述方法包括: 确定与覆盖分组关联的流标识符; 确定与所述流标识符关联的一个或多个策略;及 应用与所述流标识符关联的一个或多个策略, 其中,所述流标识符存储在所述覆盖分组的头中。
12.如权利要求11所述的方法,其中,如果没有流标识符与覆盖分组关联或者如果没有策略与流标识符关联,就把所述覆盖分组发送到策略服务器进行进一步处理。
13.如权利要求11所述的方法,其中所述流标识符存储在覆盖分组的覆盖网络头、最外面的层2头、最外面的互联网协议(IP)头或者最外面的用户数据报协议(UDP)头中。
14.如权利要求11所述的方法,还包括: 在接收覆盖分组之前从策略服务器接收一组流标识符和关联的策略标识符,其中所述一组流标识符对应于用于接收所述一组流标识符和关联的策略标识符的特定设备的典型覆盖流量;及 把所述一组流标识符和关联的策略标识符存储在策略与流数据库中, 其中,确定与所述流标识符关联的一个或多个策略包括:分析所述策略与流数据库以确定是否有任何策略标识符与所述流标识符关联。
15.如权利要求11所述的方法,其中应用与流标识符关联的一个或多个策略包括: 对覆盖分组或其一个或多个内部分组执行特定于策略的动作,其中包括:把覆盖分组或其一个或多个内部分组转发到在所述一个或多个策略中规定的设备。
16.一种用于给覆盖网络中的流量分类的方法,所述方法包括: 接收覆盖分组; 确定所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性,以便给所述覆盖分组分类; 把流标识符关联到所述覆盖分组; 确定与所述流标识符关联的一个或多个策略,其中所述一个或多个策略基于所述覆盖分组和/或所述覆盖分组的一个或多个内部分组的至少一个特性;及把所述流标识符存储在所述覆盖分组的头中。
17.如权利要求16所述的方法,还包括: 为来自策略数据库的一个或多个关联策略中的每一个确定策略标识符;及 把所述流标识符和所述一个或多个策略标识符存储到策略与流数据库, 其中所述策略数据库包括策略标识符和关联的策略, 其中所述策略与流数据库包括桶标识符,每个桶标识符都与流标识符和策略标识符关联,及其中所述桶标识符指向存储与关联的策略标识符有关的路由彳目息的位置。
18.如权利要求16所述的方法,其中当接收到覆盖分组时所述覆盖分组不具有与其关联的流标识符。
19.如权利要求16所述的方法,还包括: 确定适合所述覆盖网络中的第一设备的一组流标识符与关联的策略标识符,其中所述一组流标识符对应于所述第一设备接收的或从所述第一设备发送的典型覆盖流量;及把所述一组流标识符和关联的策略标识符发送到所述第一设备。
20.如权利要求16所述的方法,其中所述流标识符存储在覆盖分组的覆盖网络头、最外面的层2头、最外 面的互联网协议(IP)头或者最外面的用户数据报协议(UDP)头中。
【文档编号】G06F9/44GK103546451SQ201310296041
【公开日】2014年1月29日 申请日期:2013年7月16日 优先权日:2012年7月16日
【发明者】D·G·卡玛斯, K·G·坎伯, V·A·潘迪 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1