用于确定分组优先级的方法和系统的制作方法

文档序号:7801673阅读:223来源:国知局
用于确定分组优先级的方法和系统的制作方法
【专利摘要】本发明公开涉及用于确定分组优先级的方法和系统。在一种实施例中,系统包括适于接收包括一个或多个底层分组的覆盖封装分组的逻辑,适于解封装来自覆盖封装分组的一个或多个底层分组的逻辑,适于基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级的逻辑:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称,及适于设置一个或多个底层分组的优先级的逻辑。在另一种实施例中,方法包括接收覆盖封装分组、解封装来自覆盖封装分组的底层分组、为底层分组得到优先级,以及设置底层分组的优先级,所述优先级基于以下任何一个:覆盖封装分组的优先级、覆盖封装分组的传输报头,和/或底层分组的应用名称。
【专利说明】用于确定分组优先级的方法和系统

【技术领域】
[0001]本发明涉及数据中心基础设施,并且更具体地说,本发明涉及在覆盖网络(overlay network)处理期间给分组提供优先级信息。

【背景技术】
[0002]网络虚拟化是新兴的数据中心和云计算趋势,其目标是在多租户环境以及传统环境中,以从终端工作站的角度来看极大简化网络供应的方式来虚拟化网络。实现网络虚拟化较常见的一种技术是利用网络覆盖,其中隧道在服务器、边缘网络交换机和终端工作站连接到的网关之间建立。隧道实际上是通过把由源端工作站发送的分组封装成经由基于互联网协议(IP)的网络在用户数据报协议(UDP)传输中把分组从源交换机传输到目标交换机的覆盖报头实现的。覆盖报头包括唯一识别虚拟网络的标识符(ID)。目标交换机(隧道终点)剥去覆盖报头封装、UDP传输报头、以及IP报头并且经由传统网络连接把原始分组交付到目的端工作站。除这种隧道机制外,边缘交换机参与地址发现协议,这可以是基于学习/泛洪的或者基于查找的。
[0003]象虚拟可扩展局域网(VXLAN)、利用通用路由封装的网络虚拟化(NVGRE)等的覆盖网络利用隧道连接地理上分离的层-2 (L2)网络。这些是层-3 (L3)隧道上的L2。在VXLAN中源自虚拟机(VM)发往同一 VXLAN中另一个物理位置中的另一个VM或一组VM的L2分组是在L3隧道上承载的。
[0004]可以利用多个VM与控制网络分组从每个VM进和出的处理的虚拟化平台来实现覆盖网络,并且一个或多个VM可以与覆盖网络相关联。虚拟化平台利用用于相应覆盖网络和/或VM的预定义属性和策略处理与每个覆盖网络和/或VM相关联的网络流量。随着覆盖网络数量的增长,虚拟化平台的处理负载需求也随着增长。
[0005]服务器可以托管任意数量的VM,但是当在出口处理期间标记分组时,VM并不是始终在分组的虚拟局域网(VLAN)标签中设置分组优先级位。此外,如果在出口处理期间分组被标记或者被重复标记,那么服务器中的虚拟交换机(Switches)并不始终在VLAN标签中设置分组优先级位。这是因为VM或vSwitch可以依赖服务器所连接的紧靠的交换机在VLAN标签中提供优先级标记。根据处理标准,只有当分组被分类时或者当分组被归于特定的组时才需要标记。
[0006]用于VXLAN或其它覆盖网络的底层隧道以及分组处理模块见不到内部分组的任何优先级标记。这对于在不知道分组优先级的情况下必须处理该分组的下游所有进行进一步分组处理的引擎产生了一个问题。偶尔,由于底层分组优先级与高优先级内部分组不匹配,所以高优先级内部分组(例如,内部以太网光纤通道(FCoE)分组、内部视频分组等)会得到低优先级处理。因此,在某些情况下,这些高优先级分组甚至会由于优先级不明确而被丢弃。
[0007]因此,有一种甚至在处理其中封装有分组的底层分组时也能考虑分组优先级的解决方案将是有益的。


【发明内容】

[0008]在一种实施例中,一种系统包括:适于接收包括一个或多个底层分组的覆盖封装分组(overlay-encapsulated packet)的逻辑;适于解封装来自覆盖封装分组的一个或多个底层分组(underlay packet)的逻辑;适于基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级的逻辑:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称(applicat1n designat1n);及适于设置一个或多个底层分组的优先级的逻辑。
[0009]在另一种实施例中,一种用于确定分组的优先级的方法包括:接收包括一个或多个底层分组的覆盖封装分组;解封装来自覆盖封装分组的一个或多个底层分组;基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称;及设置一个或多个底层分组的优先级。
[0010]在还有一种实施例中,一种用于确定分组的优先级的计算机程序产品包括其中嵌入有计算机可读程序代码的计算机可读存储介质,该计算机可读程序代码包括配置为接收包括一个或多个底层分组的覆盖封装分组的计算机可读程序代码、配置为解封装来自覆盖封装分组的一个或多个底层分组的计算机可读程序代码、配置为基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级的计算机可读程序代码:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称,以及配置为设置一个或多个底层分组的优先级的计算机可读程序代码。
[0011]本发明的其它方面与实施例将从以下具体描述变得显而易见,当结合附图考虑时,以下具体描述通过例子说明了本发明的原理。

【专利附图】

【附图说明】
[0012]图1说明了根据一种实施例的网络体系结构。
[0013]图2示出了根据一种实施例的可以与图1的服务器和/或客户端关联的代表性硬件环境。
[0014]图3是根据一种实施例的虚拟数据中心的简图。
[0015]图4示出了根据一种实施例的连接到底层网络的有覆盖能力的服务器。
[0016]图5示出了根据一种实施例的覆盖网络网关的详细视图。
[0017]图6示出了根据一种实施例的利用具有覆盖网关功能的网络接口卡(NIC)的有覆盖能力的服务器。
[0018]图7示出了根据一种实施例的包括带有NIC的各种服务器的网络。
[0019]图8示出了根据一种实施例的具有覆盖网关功能的NIC的详细视图。
[0020]图9示出了用于在本文所述的各种实施例中参考的几种以太网帧格式。
[0021]图10示出了根据一种实施例的方法的流程图。

【具体实施方式】
[0022]以下描述是为了说明本发明的通用原理而不是要限定本文所要求保护的发明概念而做出的。另外,本文所述的特定特征可以以各种可能的组合与置换中的每一种与其它所述特征结合使用。
[0023]除非在本文中专门定义,否则所有术语都要赋予其最广泛可能的解释,包括从本说明书暗示的意义以及本领域技术人员所理解的和/或在词典、论文等中定义的意义。
[0024]还必须指出,如在本说明书和所附权利要求中所使用的,除非另外规定,否则单数形式“一个”和“这个”包括复数的所指对象。
[0025]根据各种实施例,一个或多个底层分组可以在解封装底层分组时从封装底层分组的覆盖分组继承802.1p优先级位的值。此外,底层802.1p位和底层互联网协议(IP)差分服务代码点(DSCP)值可以从继承的802.1p值得到。同样,用于得到802.1p的值和DSCP值的可编程表可以提供用于封装处理,该表在服务器的虚拟化平台、有覆盖能力的网络接口卡(NIC)、覆盖网络网关或某些其它有覆盖能力的设备中被编程。在进口边来看,如果底层分组的优先级是未知的,那么分组优先级可以从封装底层分组的覆盖分组中得到并且用于底层分组的内部处理。
[0026]在一种通用的实施例中,一种系统包括:适于接收包括一个或多个底层分组的覆盖封装分组的逻辑;适于解封装来自覆盖封装分组的一个或多个底层分组的逻辑;适于基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级的逻辑:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称;及适于设置一个或多个底层分组的优先级的逻辑。
[0027]在另一种通用的实施例中,一种用于确定分组的优先级的方法包括:接收包括一个或多个底层分组的覆盖封装分组;解封装来自覆盖封装分组的一个或多个底层分组;基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称;及设置一个或多个底层分组的优先级。
[0028]在还有一种通用的实施例中,一种用于确定分组的优先级的计算机程序产品包括其中嵌入有计算机可读程序代码的计算机可读存储介质,该计算机可读程序代码包括配置为接收包括一个或多个底层分组的覆盖封装分组的计算机可读程序代码、配置为解封装来自覆盖封装分组的一个或多个底层分组的计算机可读程序代码、配置为基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级的计算机可读程序代码:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称,以及配置为设置一个或多个底层分组的优先级的计算机可读程序代码。
[0029]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全硬件实施方式、完全软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“逻辑”、“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0030]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者非暂时性计算机可读存储介质。非暂时性计算机可读存储介质例如可以是但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者以上的任意合适组合。非暂时性计算机可读存储介质的更具体的例子(非穷举列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、便携式紧凑盘只读存储器(⑶-ROM)、蓝光光盘只读存储器(BD-ROM)、光存储器件、磁存储器件、或者上述的任意合适组合。在本文件中,非暂时性计算机可读存储介质可以是任何能够包含或存储程序或应用的有形介质,该程序或应用可以被指令执行系统、装置、或者设备使用或者与其结合使用。
[0031]计算机可读信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适组合。计算机可读的信号介质还可以是非暂时性计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者设备使用或者与其结合使用的程序,诸如具有一条或多条电线的电连接、光纤等。
[0032]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频(RF)等等,或者上述的任意合适组合。
[0033]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明各方面操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括传统的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机或服务器的情形中,远程计算机或服务器可以通过任意种类的网络,包括局域网(LAN)、存储区域网(SAN)、和/或广域网(WAN)、任何虚拟网络连接到用户计算机,或者,可以利用例如互联网服务提供商(ISP)来通过互联网连接到外部计算机。
[0034]本文将参照根据本发明各种实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都能够由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0035]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令可以使计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[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并且可以经网关101从远程网络102访问的数据服务器114。应当指出,数据服务器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互连的多个其它单元的工作站的典型硬件配置,其中根据若干个实施例,总线212可以是诸如本地总线、并行总线、串行总线等不同类型的总线。
[0044]图2中所示的工作站包括随机存取存储器(RAM) 214、只读存储器(ROM) 216、用于把诸如盘存储单元220的外围设备连接到一条或多条总线212的1/0适配器218、用于把键盘224、鼠标226、扬声器228、麦克风232和/或诸如触摸屏、数码相机(未示出)等的其它用户接口设备连接到一条或多条总线212的用户接口适配器222、用于把工作站连接到通信网络235 (例如,数据处理网络)的通信适配器234以及用于把一条或多条总线212连接到显不设备238的显不器适配器236。
[0045]工作站可以在其上驻留操作系统,诸如MICR0S0FTWIND0WS操作系统(OS)、MAC
0S、UNIX OS等。应当认识到,优选实施例还可以在除所提到的那些之外的平台和操作系统上实现。优选实施例可以用JAVA、XML、C和/或C++语言或者其它编程语言以及面向对象的编程方法编写。可以使用越来越多地用于开发复杂应用的面向对象的编程(00P)。
[0046]现在参考图3,示出了根据一种实施例的覆盖网络300的概念图。为了虚拟化网络服务,除了简单地在设备间提供构架路径(连接性)之外,还可以在分组移动通过网关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)互连的一个或多个单元交换域可伸缩架构组件(SFC)。
[0049]覆盖网络300的组件通常基于称作VNI或VNID的虚拟网络标识符来识别往哪里路由。虚拟网络标识符通常是不包括0x0和OxFFFFFF的24位代码或数字。覆盖网络300具有如下能力:通过把L2分组封装到覆盖报头中,在层-3 (L3)网络上隧道化传输层-2 (L2)的分组,这也称为虚拟隧道端点(VTEP)管理。这可以利用虚拟可扩展局域网(VXLAN)或某些其它有覆盖能力的协议实现,其中有覆盖能力的协议诸如定位器/ID分离协议(LISP)、覆盖传输虚拟化(OTV )、利用通用路由封装的网络虚拟化(NVGRE )等。
[0050]分组也可以封装在用户数据报协议(UDP)和互联网协议(IP)UDP/IP的报头中。覆盖网络300可以包括一个或多个点到点隧道,和/或点到多点的隧道。此外,基于诸如覆盖网络300中加入了新设备、从覆盖网络300中删除了设备、任何终端设备启动的任意多种因素,可以创建、删除、改变和修改这些隧道中任意一个,其中所述终端设备即管理隧道端点的设备,诸如虚拟覆盖网络网关、虚拟化平台、能够进行覆盖功能的交换机等。
[0051]为了使设备管理隧道,需要存在原始分组的源地址、目的地址以及隧道标识符之间的映射。以这种方式,物理服务器能够把封装的原始分组转发到合适的目的设备。
[0052]参考图4,示出了连接到底层网络418的服务器400。如所示出的,服务器400包括提供和管理虚拟交换机404的虚拟化平台402。为了向服务器400提供覆盖功能,虚拟化平台402还与多个分立的软件引擎交互,诸如隧道管理器406、ARP和转发信息库(FIB)管理器408、用于提供互联网协议多播(IPMC)支持的引擎410、分组封装与解封装弓丨擎412,以及本领域中已知的任何其它覆盖增强软件引擎。虚拟化平台402还为任意数量的VM414,在图4A中示为VM0、VM1、VM2、…、VMn,提供支持。VM414可以布置在一个或多个虚拟网络中(每个虚拟网络都可以具有不同的虚拟网络标识符(VNID),在图4A中指示为VNID1、VNID2、VNID3等)。因为附图仅仅是示出了 VM414和虚拟网络的示例性布置,所以示例性虚拟网络中VM414的数量与布置不是要对可能的配置进行限制。
[0053]此外,在一种途径中,服务器400包括管理并提供底层网络418和服务器400之间通信的物理NIC416。NIC416包括适于与底层网络418和服务器400通信的一个或多个网络端口。根据一种实施例,当分组被分组封装/解封装引擎412封装在覆盖报头中时,NIC416简单地让分组通过并到覆盖封装分组的外部报头中所规定的目的地。
[0054]为了在虚拟的和非虚拟的网络之间桥接,分组可以被交付到覆盖网络网关420用于进一步转发和/或路由到服务器400所位于的虚拟网络之外。
[0055]现在参考图5,示出了根据一种途径的覆盖网络网关420的详细视图。覆盖网络网关420包括可以用于分组进入和/或分组离开的多个端口 502。取决于覆盖网络网关420的布置和能力,诸如16端口、32端口、64端口、128端口等,可以呈现任意数量的端口 502。覆盖网络网关420还包括适于执行查找L3地址和设备的逻辑504、适于执行查找覆盖地址和设备的逻辑506、适于执行查找L2地址和设备的逻辑508、适于执行查找隧道地址和设备的逻辑510、适于执行分组预归类的逻辑512、适于执行出口隧道管理动作(VTEP)的逻辑514、适于执行出口覆盖动作的逻辑516、适于执行出口 L2动作的逻辑518、适于执行出口转发动作的逻辑520和可能的其它分组功能522。逻辑中的任意一个或者所有的都可以用硬件、软件或其组合来实现。例如,在一种实施例中,用于每个不同逻辑块的分离模块可以用一个或多个处理器实现。该处理器可以包括,但不限于,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、中央处理单元(CPU)、微控制器(MC)、微处理器或本领域已知的某些其它处理器。
[0056]在一种实施例中,到来分组的优先级可以基于规则或者基于内部分组的优先级在入口映射。外部和内部的分组处理可以基于在入口创建的优先级映射。此外,出口 802.1p优先级可以按照入口优先级映射来维护。
[0057]为了提高利用虚拟化平台的虚拟网络服务器的性能,可以通过利用具有覆盖网关功能的NIC提供覆盖网络流量处理。具体而言,具有覆盖网关功能的NIC可以适于提供覆盖网络网关的部分或全部功能,诸如管理虚拟隧道端点(VTEP)、地址解析协议(ARP)高速缓存处理、ARP学习、用于每个覆盖网络的分组封装和解封装、用于L2、L3和/或覆盖网络的各种查找功能、出口分组处理和转发等。该覆盖网络网关功能可以经由NIC或与其它覆盖设备结合、可能利用分离的模块和/或处理器被专门处理,并且处理后的流量可以交付给虚拟化平台用于最终交付给合适的VM,或者该流量可以向下发送到网络用于交付到目的VTEP或其它基于IP的地址。
[0058]现在参考图6,示出了根据另一种途径的利用具有覆盖网络网关功能的NIC616的服务器600。服务器600也包括提供和管理虚拟交换机604的虚拟化平台602。虚拟化平台602还为任意数量的虚拟机(VM) 630,在图6中示为VMO、VMU VM2、…、VMn,提供支持。VM630可以布置在一个或多个虚拟网络中(每个虚拟网络都可以具有不同的虚拟网络标识符(VNID),在图6中指示为VNID1、VNID2、VNID3等)。因为附图仅仅是示出了 VM630和虚拟网络的示例性布置,所以示例性虚拟网络中VM630的数量与布置不是要对可能的配置进行限制。
[0059]在一种实施例中,为了提供覆盖网络网关功能,NIC616利用一个或多个处理器,使得所有覆盖网络网关功能可以卸载到NIC616上。该覆盖网络网关功能可以作为模块嵌入在NIC616中,并且可以包括但不限于,执行查找L3地址和设备606、执行查找覆盖地址和设备608、执行查找L2地址和设备610、执行查找隧道地址和设备612、执行分组预归类614、执行出口隧道管理动作(VTEP)618、执行出口覆盖动作620、执行出口 L2动作622、执行出口转发动作624和可能的其它分组功能626,以及本领域已知的任何其它覆盖网络网关功能。
[0060]根据某些实施例,出口隧道管理动作模块618可以适于提供VTEP起始和终止操作、各种查找模块606、608、610和612可以适于为具有未知地址的分组提供查找操作以及为具有已知地址的分组转发信息、各种出口模块618、620、622和624可以适于为分组处理转发和/或发送操作。
[0061]为了给服务器600中的NIC616和虚拟化平台602之间提供接口,可以在服务器600中提供NIC驱动器628,其理解并支持已经由NIC616提供的覆盖网络网关功能,并且相应地可以管理NIC616。
[0062]以这种方式,根据一种实施例,为了让服务器600适于使用不同的覆盖协议,可以在服务器600中实现能够与覆盖网络协议接口的NIC驱动器628,其中具有覆盖网络网关功能的安装的NIC616支持覆盖网络协议。在一个非限定性例子中,如果服务器具有VXLAN覆盖功能,并且该服务器要在利用Microsoft的Hyper-V的环境中使用,那么可以在服务器中安装能够Hyper-V的加速NIC,并且可以在服务器中实现支持Hyper-V的NIC驱动器,从而使服务器能够在利用Hyper-V作为覆盖协议的覆盖环境中操作。本领域技术人员将认识至IJ,这种过程的使用与覆盖协议无关。
[0063]在一种实施例中,如果服务器600已经安装了能够支持特定覆盖协议的NIC驱动器628,并且在服务器600中安装了能够提供特定覆盖协议、具有覆盖网络网关功能的NIC616,那么就可以简单地把该NIC616插入到服务器600的可用PCIe槽中,并且以即插即用类型的布置,一旦安装即可以工作。
[0064]在一种实施例中,到来分组的优先级可以基于规则或者基于内部分组的优先级在入口被映射。外部和内部分组处理可以是基于在入口创建的优先级映射。此外,出口 802.1p优先级可以按照入口优先级映射来维护。
[0065]如在图7中所示出的,示出了根据一种实施例的网络700。如所示出的,具有当代NIC416的服务器400和具有覆盖网关(GW)NIC616的服务器600可以在同一个网络700中使用。一个或多个以太网交换机702可以用于互连服务器400、600,或者服务器400、600可以彼此直接连接。每个以太网交换机702都包括用于连接到其的多个端口 708。当代NIC416可以包括可以提供某一覆盖功能的虚拟化平台(VP) 402。
[0066]根据一种实施例,在网络700中示出的任意组件都可以包括用于确定分组优先级的功能。在一种这样的实施例中,系统(诸如服务器400、600、以太网交换机702、覆盖GWNIC616、虚拟化平台402等)可以包括适于接收包括一个或多个底层分组的覆盖封装分组的逻辑、适于解封装来自覆盖封装分组的所述一个或多个底层分组的逻辑、适于基于包括在覆盖封装分组中的信息为一个或多个底层分组中每一个得到优先级的逻辑,以及适于设置一个或多个底层分组的优先级的逻辑。用来得到优先级的信息可以是覆盖封装分组的优先级、从覆盖封装分组的传输报头和/或一个或多个底层分组的应用名称中确定,或者基于有关覆盖封装分组的任意其它信息。
[0067]在一种途径中,适于为一个或多个底层分组中每一个设置优先级的逻辑可以包括适于把每个底层层-2分组的802.1p位设置为指定得到的优先级的逻辑。以这种方式,依赖于底层分组802.1p位的任何设备将能够确定底层分组的优先级。此外,覆盖封装分组的优先级可以经覆盖封装分组的802.1p位指定,在这种途径中,一个或多个底层分组中每一个的优先级可以从覆盖封装分组的802.1p位得到。
[0068]在另一种途径中,适于为一个或多个底层分组中每一个设置优先级的逻辑可以包括适于把每个底层层-3分组的DSCP值设置为指定特定的服务质量(QoS)的逻辑,其中服务质量是如本领域所理解的。覆盖封装分组的优先级可以经覆盖封装分组的DSCP值指定,在这种途径中,用于一个或多个底层分组中每一个的优先级至少可以从覆盖封装分组的DSCP值得到,并且可能从其它信息源得到,诸如覆盖封装分组的802.1p位。
[0069]在一种实施例中,适于出口处理一个或多个底层分组的逻辑可以包括在流量管理器中。出口处理可以基于得到的优先级或DSCP映射。此外,当一个或多个底层分组由流量管理器进行出口处理时,适于为一个或多个底层分组中每一个设置优先级的逻辑可以包括适于把每个底层层-2分组的802.1q标签设置为指定得到的优先级的逻辑。
[0070]在还有一种途径中,系统中可以包括适于利用流量管理器对一个或多个底层分组进行入口处理的逻辑,该入口处理基于得到的优先级或DSCP映射。
[0071]在一种途径中,可以基于如表I中所示的映射表确定DSCP或802.1p优先级。在这种方法中,一旦满足特定标准,就可以使用访问控制列表(ACL)来指导处理。该映射表把ACL关联到具体的802.1p位,并且关联到具体的DSCP值映射,使得802.1p位可以关联到DSCP值。在这个示例性表中,ACLl,ACL2和ACL3是不同的ACL,其响应于ACL被实施而使得不同的动作被执行。同样,列出的802.1p优先级映射位只是用于示例,并且,0-7个可用优先级位中任何一个(0x1, Ox,..., 0x7)都可以根据任何期望的映射来分配。此外,Mapping_l,Mapping_2和Mapping_3是不同的DSCP映射,其根据所应用的ACL或802.1p优先级位,使不同的DSCP值插入到分组中。
[0072]

规则|802.1p优先级映射|DSCP值映射
ACLl 0x7Mapping—I
ACL2 0x3Mapping—2
ACL3 0x4Mapping—3
ACL n OxlMapping—η
[0073]表I
[0074]ACL规则元组可以包括任何相关的信息,诸如底层分组的源MAC (SMAC)地址、目的MAC (DMAC)地址、以太网类型(Ethertype)、VLAN标识符(ID)、优先级、源IP (SIP)地址、目的IP (DIP)地址、使用的协议、源端口(SPORT)、目的端口(DPORT)等。ACL元组还可以基于覆盖封装分组的SMAC地址、DMAC地址、以太网类型、VLAN ID、优先级、SIP地址、DIP地址、使用的协议、SPORT、DPORT等。在更多途径中,ACL元组可以基于UDP SPORT、UDP DPORT,VNID 等。
[0075]现在参考图8,更详细地示出了根据一种实施例的具有覆盖网络网关功能的NIC616。NIC616包括用于与服务器接口的多通道(mult1-lane)PCIe接口 802、用于高速缓存到/来自服务器的流量的接收和发送(RX/TX)分组缓冲区804、用于高速缓存到/来自网络的流量的RX/TX分组缓冲区806、用于与网络交互的以太网控制器808、以及以逻辑、模块或其某种组合的形式的各种覆盖网络网关功能。覆盖网络网关功能可以包括下面任意一种作为分离的模块或其各种组合:诸如执行查找L3地址和设备606、执行查找覆盖地址和设备608、执行查找L2地址和设备610、执行查找隧道地址和设备612、执行分组预归类614、执行出口隧道管理动作(例如,VTEP) 618、执行出口覆盖动作620、执行出口 L2动作622、执行出口转发动作624和可能的其它分组功能626,以和/或本领域已知的任何其它覆盖网络网关功能。
[0076]某些附加功能可以包括与虚拟化平台和虚拟交换机交互以和/或提供I/O虚拟化。
[0077]根据各种实施例,模块606、608、610、612等每个模块都可以由单一处理器或多个分离的处理器实现,每个处理器能够提供所必需的功能。处理器可以包括但不限于,ASIC、FPGA、CPU、MC、微处理器或本领域已知的某些其它处理器。
[0078]在其它实施例中,当模块606、608、610、612等每个模块都用多个分离的处理器实现时,在各种实施例中,可以利用分离的NIC驱动器628 (例如,每个处理器一个NIC驱动器)或者通过与所有多个分离的处理器接口的单一 NIC驱动器628对每个处理器进行控制和/或与其接口。
[0079]根据一种实施例,虚拟化平台可以包括适于为网络流量提供覆盖功能的逻辑。在该实施例中,NIC可以包括允许具有由虚拟化平台提供的覆盖功能的网络流量旁路该NIC的功能。
[0080]在另一种实施例中,网络可以不包括能够提供覆盖网络网关功能(或覆盖功能)的元件。这就是说,在网络中,唯一能提供覆盖网络网关功能或覆盖功能的元件可以是在服务器中实现的NIC。在另一种途径中,服务器可以根本不提供覆盖功能(例如,虚拟化平台没有覆盖能力),在这种情况下,是依赖NIC来提供所有覆盖功能。当然,在其它实施例中,会存在提供覆盖功能的NIC和其它元件的某种组合,诸如覆盖网关、虚拟化平台等。
[0081]在一种实施例中,到来分组的优先级可以基于规则或基于内部分组的优先级在入口映射。外部和内部分组处理可以基于在入口创建的优先级映射。此外,入口 802.1p优先级可以按照入口优先级映射来维护。
[0082]参考图9,根据各种途径示出了若干个以太网帧格式。以太网帧902示出了不包括任何优先级信息的标准帧。该帧902包括指示把分组转发到的目的地的目的媒体访问控制(DMAC)地址、指示对于分组的源设备或发起者的源MAC (SMAC)地址、以及类型长度值(TLV)可以放置其中来指示关于分组的类型,长度和杂项信息的类型/长度字段。帧902还包括用于放置数据的数据字段和用于检测错误的循环冗余校验(CRC)字段。
[0083]在第一步当准备要发送出的分组时,在IQ标签设置优先级位,这就生成了以太网帧904。如该帧904所示出的,根据一种实施例,802.1Q VLAN标签包括信息906,其包括标签协议ID0x8100 (可以是16位长度)、用户优先级字段(可以是3位长度)、规范格式标识符(CFI)位(I位长度)和VLAN ID (可以是12位长度)。IEEE802.1Q网络标准提供了关于每个字段可以用于什么以及什么信息可以存储在各个字段中的额外信息。
[0084]在另一种实施例中,如在帧908中所示出的,S标签和C标签都可以在以太网帧908中存在。然后,可以把该帧908封装成帧910以便在覆盖网络上发送。该隧道帧910可以包括隧道DMAC、隧道SMAC、从内部帧908的S标签和C标签信息继承的802.1Q VLAN标签信息、IP报头、UDP报头、覆盖或VLAN报头、内部帧908、以及CRC。
[0085]现在参考图10,示出了根据一种实施例的用于确定分组优先级的方法1000。在各种实施例中,根据本发明的方法1000也可以在图1-9中所绘出的任一环境中执行。当然,如本领域技术人员在阅读本描述之后将理解的,在方法1000中可以包括比在图10中具体描述的更多或更少的操作。
[0086]方法1000的每个步骤都可以由操作环境的任意合适组件执行。例如,在各种非限定实施例中,方法1000可以部分地或完全地由控制器、可以嵌入在服务器中和/或在其中操作的处理器(诸如CPU、ASIC、FPGA等)、NIC、嵌入在控制器或服务器中的计算机可读存储介质中的计算机程序代码等执行。
[0087]如在图10中所示,方法1000可以用操作1002启动,其中收到包括一个或多个底层分组的覆盖封装分组。覆盖封装分组可以由任何设备、模块、逻辑或能够提供隧道端点操作的构造接收。在一种途径中,一个或多个底层分组可以遵守任何帧格式,并且可以跨多于一个覆盖封装分组进行封装。
[0088]在操作1004中,根据本领域已知的任意方法,一个或多个底层分组从覆盖封装分组中进行解封装。此外,某些操作可以先于解封装执行,诸如读取覆盖封装分组的报头,确定覆盖封装分组的目的地等。
[0089]在操作1006中,一个或多个底层分组中每一个的优先级是基于包括在覆盖封装分组中的信息得到的。可以使用任何信息,诸如覆盖封装分组的优先级(如果优先级在其接收之前已经被设置)、覆盖封装分组的传输报头(该报头可以包括可以用于确定底层分组优先级的信息)、一个或多个底层分组的应用名称(例如,底层分组是用于什么的,诸如视频、音频、警告、备份等),或任何其它有用信息。
[0090]在操作1008中,设置了一个或多个底层分组的优先级。
[0091]在一种实施例中,一个或多个底层分组中每一个的优先级是通过把每个底层层-2分组的802.1p位设置为指定得到的优先级来设置的。在其它实施例中,覆盖封装分组的优先级可以经覆盖封装分组的802.1p位指定,并且附加地,一个或多个底层分组中每一个的优先级可以从覆盖封装分组的802.1p位得到。
[0092]根据另一个实施例,一个或多个底层分组中每一个的优先级可以通过把每个底层层-3分组的DSCP值设为指定特定的QoS或优先级来设置。在其它实施例中,覆盖封装分组的优先级可以经覆盖封装分组的DSCP值指定,并且附加地,一个或多个底层分组中每一个的优先级可以从覆盖封装分组的DSCP值得到。
[0093]在其它途径中,方法1000还可以包括利用流量管理器对一个或多个底层分组进行不同的出口处理。出口处理的不同级别(例如,转储分组、正常转发到目的地、以高优先级转发到目的地等)可以基于得到的优先级或DSCP映射,其中DSCP映射基于从覆盖封装分组得到的DSCP值。在其它途径中,一个或多个底层分组中每一个的优先级可以通过在一个或多个底层分组的出口处理期间把每个底层层-2分组的802.1q标签设置为指定得到的优先级来设置。
[0094]在另一种途径中,方法1000还可以包括基于得到的优先级或DSCP映射利用流量管理器对一个和多个底层分组进行入口处理。
[0095]如本领域技术人员在阅读本描述之后将理解的,本文描述的其它实施例可以同样在方法1000中实现。
[0096]根据另一种实施例,方法1000可以体现为用于确定分组优先级的计算机程序产品。计算机程序产品可以包括其中嵌入有计算机可读程序代码的计算机可读存储介质,该计算机可读程序代码包括配置为接收包括一个或多个底层分组的覆盖封装分组的计算机可读程序代码、配置为解封装来自覆盖封装分组的一个或多个底层分组的计算机可读程序代码、配置为基于覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称中的至少一个为一个或多个底层分组中每一个得到优先级的计算机可读程序代码,以及配置为设置一个或多个底层分组的优先级的计算机可读程序代码。
[0097]如本领域技术人员在阅读本描述之后将理解的,本文描述的其它实施例可以同样用计算机程序产品实现。
[0098]虽然上面已经描述了各种实施例,但是应当理解,它们的给出仅仅是作为例子,而不是限制。因而,实施例的广度和范围不应当受以上描述的任何示例性实施例限制,而是应当只能根据以下权利要求及其等同来定义。
【权利要求】
1.一种系统,包括: 适于接收包括一个或多个底层分组的覆盖封装分组的逻辑; 适于解封装来自覆盖封装分组的一个或多个底层分组的逻辑; 适于基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级的逻辑:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称;及 适于设置一个或多个底层分组的优先级的逻辑。
2.如权利要求1所述的系统,其中适于为一个或多个底层分组中的每一个设置优先级的逻辑包括: 适于把每个底层层-2分组的802.1p位设置为指定得到的优先级的逻辑。
3.如权利要求2所述的系统,其中覆盖封装分组的优先级经由覆盖封装分组的802.1p位指定,并且其中一个或多个底层分组中每一个的优先级是从覆盖封装分组的802.1p位得到的。
4.如权利要求1所述的系统,其中适于为一个或多个底层分组中的每一个设置优先级的逻辑包括: 适于把每个底层层-3分组的差分服务代码点(DSCP)值设置为指定特定服务质量(QoS)的逻辑。
5.如权利要求4所述的系统,其中覆盖封装分组的优先级经由覆盖封装分组的DSCP值指定,并且其中一个或多个底层分组中每一个的优先级是从覆盖封装分组的DSCP值得到的。
6.如权利要求1所述的系统,还包括: 适于利用基于得到的优先级或DSCP映射的流量管理器对一个或多个底层分组进行出口处理的逻辑。
7.如权利要求6所述的系统,其中适于为一个或多个底层分组中的每一个设置优先级的逻辑包括: 适于在对一个或多个底层分组进行出口处理时把每个底层层-2分组的802.1q标签设置为指定得到的优先级的逻辑。
8.如权利要求1所述的系统,还包括: 适于利用基于得到的优先级或DSCP映射的流量管理器对一个或多个底层分组进行入口处理的逻辑。
9.一种用于确定分组的优先级的方法,所述方法包括: 接收包括一个或多个底层分组的覆盖封装分组; 解封装来自覆盖封装分组的一个或多个底层分组; 基于以下中的至少一个为一个或多个底层分组中的每一个得到优先级:覆盖封装分组的优先级、覆盖封装分组的传输报头和一个或多个底层分组的应用名称;及 设置一个或多个底层分组的优先级。
10.如权利要求9所述的方法,其中为一个或多个底层分组中的每一个设置优先级包括: 把每个底层层-2分组的802.1p位设置为指定得到的优先级。
11.如权利要求10所述的方法,其中覆盖封装分组的优先级经由覆盖封装分组的802.1p位指定,并且其中一个或多个底层分组中每一个的优先级是从覆盖封装分组的802.1p位得到的。
12.如权利要求9所述的方法,其中为一个或多个底层分组中的每一个设置优先级包括:把每个底层层-3分组的差分服务代码点(DSCP)值设置为指定特定服务质量(QoS)。
13.如权利要求12所述的方法,其中覆盖封装分组的优先级经由覆盖封装分组的DSCP值指定,并且其中一个或多个底层分组中每一个的优先级是从覆盖封装分组的DSCP值得到的。
14.如权利要求9所述的方法,还包括: 利用基于得到的优先级或DSCP映射的流量管理器对一个或多个底层分组进行出口处理。
15.如权利要求14所述的方法,其中为一个或多个底层分组中的每一个设置优先级包括: 在对一个或多个底层分组进行出口处理时把每个底层层-2分组的802.1q标签设置为指定得到的优先级。
16.如权利要求9所述的方法,还包括: 利用基于得到的优先级或DSCP映射的流量管理器对一个或多个底层分组进行入口处理。
17.一种用于确定分组的优先级的系统,包括被配置为执行权利要求9-16中任一方法的所有步骤的装置。
【文档编号】H04L12/851GK104168223SQ201410156345
【公开日】2014年11月26日 申请日期:2014年4月18日 优先权日:2013年4月19日
【发明者】K·G·坎伯, U·S·纳格拉杰, V·A·潘迪 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1