用于虚拟分布式业务的网络接口控制器的制作方法

文档序号:7885213阅读:251来源:国知局
专利名称:用于虚拟分布式业务的网络接口控制器的制作方法
技术领域
本公开涉及电子数据业务,尤其是支持虚拟化的数据中心业务。
背景技术
数据中心中的计算机网络愈发依赖于复杂业务来使能扩展性、虚拟化和安全。这些业务的范围从负载均衡到防火墙再到细粒度网络度量。随着云计算和其他大规模虚拟服务器部署增长,以可扩展和可管理方式提供这些网络业务愈发困难。理想地,大规模服务器部署中的每个单独网络流被跟踪以向标识出的连接或流提供适当业务,例如业务质量、策略等。在某些情况下,数据中心交换机可以提供这些业务中的某些业务,但是穿过单个交换机的单独流的数目需要过多的交换机资源来跟踪和管理每个流。


图1示出了为在单个服务器上工作的多个虚拟机服务的网络接口卡或控制器。图2和图3分别示出了支持多个虚拟网络接口控制器的分组流的进入和外出的网络接口卡的示例实施例。图4示出了对待作为如下分组流的一部分的分组的一系列示例步骤,该分组流经由包括多个虚拟网络控制器的网络接口卡从网络传递到在服务器上运行的虚拟机。图5示出了对待作为如下分组流的一部分的分组的一系列示例步骤,该分组流经由包括多个虚拟网络控制器的网络接口卡从在服务器上运行的虚拟机传递到网络
发明内容
概览这里描述的是支持包括在服务器上运行的虚拟机的虚拟网络接口控制功能在内的虚拟业务的方法和装置的实施例。一种方法包括在网络接口卡处接收来自数据通信网络的分组,在该网络接口卡内对该分组分类以选择该分组应被指派给的多个流表之一以获得选中的流表,该分类至少基于与该分组相关联的逻辑接口,基于所选中流表中存储的信息来处理该分组,并且将该分组传递给在与该网络接口卡通信连接的计算机上工作的虚拟机,该虚拟机与该逻辑接口相关联。该方法还包括在该网络接口卡处接收来自与该网络接口卡通信连接的计算机的第二分组,并且转发该第二分组以在该网络接口卡内进行分类。
具体实施例方式示例实施例图1示出了支持由管理程序115支持的多个虚拟机(VM) 120a、120b、120c的服务器110。服务器110可以是独立服务器或者可以是数据中心基础设施中的服务器丛的一部分。网络接口卡(或者控制器)(NIC)200与服务器110通信耦合。如将在下面更详细说明的,NIC200支持虚拟业务,即支持在服务器110上运行的虚拟机120a、120b、120c中的相应虚拟机的网络接口控制业务。因此,从虚拟机120a、120b、120c中的每一个虚拟机的角度,NIC200担当专用的网络接口控制器。NIC200包括处理器201和存储器202,处理器201和存储器202的功能也将在下面更加完全地描述。NIC200例如经由路由器170连接到计算机网络。集中管理工具180可被用来管理NIC200。如图所示,NIC200与集中管理工具180之间的通信可以经由路由器170(或者其他网络元件)或者可以经由更加私有和/或直接的链路185。NIC200的功能可被实现为一个或多个硬件组件、一个或多个软件组件,或者其组合。更具体地说,处理器201可以是可编程处理器(微处理器或者微控制器)或者固定逻辑处理器。在可编程处理器的情况下,任何相关存储器202可以是编码有或者存储用来实现NIC200的功能的指令的任何类型的有形处理器可读存储器(例如,随机存取、只读等)。在固定逻辑处理设备的情况下,逻辑或者指令例如可被编码在专用集成电路(ASIC)中或者配置有由致使处理器201执行这里描述的功能的指令或者逻辑组成的固件的数字信号处理器中。因此,NIC200可以采用各种形式中的任一种,以便被编码在一个或多个有形介质中,以供例如利用固定逻辑或者可编程逻辑(例如,软件/由处理器执行的计算机指令)来执行,并且任何处理器可以是可编程处理器、可编程数字逻辑(例如,现场可编程门阵列)或者包括固定数字逻辑的ASIC,或者其组合。总而言之,任何处理逻辑可被实现在处理器(或者计算机)可读介质中,该介质编码有供处理器执行的指令,这些指令当被该处理器执行时可操作来使该处理器执行这里描述的功能。图2示出了支持多个虚拟网络接口控制器200a、200b、200c的分组流的进入的NIC200的实施例,这多个虚拟网络接口控制器200a、200b、200c支持在服务器110上运行的虚拟机。在高层次上,NIC200将流跟踪机制、分组转发控制、分组重写能力以及自治管理代理集成到位于服务器边缘的设备中。这允许基于单独流的操纵和/或业务被推送到数据中心网络的计算机(服务器)边缘。抵达NIC200的分组在转发模块210处被接收到并且然后被传递到分类器模块220。这些分组然后被与内部流表230比较,从而产生例如未命中、命中或者冲突。转发模块210例如通过检查分组以及这些分组的任何封装来执行逻辑接口(LIF)标识,并且还可以对要么从网络进入要么从可直接来自内部流表230的环回路径215进入要么从自治代理250进入的分组执行复制(例如以供多播)。转发模块210检查每个进入分组的头部并且通常通过在本地转发表中查找该分组的目的地地址来将每个分组关联到逻
辑接口。分类器模块220接收LIF标识并且基于该信息并且利用存储器中的适当数据来识别分组类型。分组类型例如可包括符合与TCP或UDP协议或者FTP或其他公知协议相关联的IPv4或IPv6层的那些。一旦分组类型已知,分类器模块220就被配置为指派选中的流表来处理该分组。换言之,分类器模块220确定进入分组属于什么流类型并且按照与该流类型相关联的策略指派适当的流表230a、230b、230c等来处理该分组。流表例如可被分为四类:传输控制协议(TCP)流、用户数据报协议(UDP)流、因特网协议(IP)(但不是TCP或者m)P)流,以及非IP流。一旦分类器模块220已经识别出流类型,流表机制就在表中搜索该特定流。该特定流例如可通过TCP源和目的地端口以及源和目的地IP地址来识别。该流可能已经存在于表中,这被定义为表命中,或者其可能未存在于表中,这被定义为未命中或者冲突。未命中在该流未存在于表中并且表中存在用来存储该流的可用位置时发生,冲突在该流未存在于表中并且没有用来存储该流的可用位置时发生。如上面指出,查找流表将产生未命中、命中或者冲突。未命中例如可引起自动流表插入以及诸如向业务进行新流登记之类的动作。例如,当为LIF启用了防火墙业务并且新流的第一分组抵达并且未命中流表时,将为该流自动生成条目并且该分组将被转发给防火墙业务而非被递送到目的地虚拟机。当防火墙业务节点以许可或者拒绝动作作为响应时,流表条目被更新并且该流中的未来分组此后被直接递送到目的地虚拟机(许可)或者丢弃(拒绝)。取决于分组类型和编程的未命中动作,新的流分组可被封装到业务头部中并被转发给可作为虚拟业务本地驻留或者作为业务节点远程驻留的适当的业务节点,其中该业务节点可以是防火墙、负载均衡器、入侵检测业务或者其他基于网络的业务。类似地,流命中可具有可包括分组重写、封装和/或转发动作在内的相关动作。因此,例如,命中流表条目的分组在防火墙拒绝动作的情况下可被丢弃,被重新缓存到本地排队系统以实施诸如高至低优先级、速率限制或者承诺信息速率策略之类的业务质量策略,利用针对低等待时间策略的高优先级中断被递送到目的地虚拟机,或者只是在流表中被计数并加时间戳以支持网络流统计。当查找流表产生无匹配并且所有可用表条目被其他流占据时,冲突发生。在冲突的情况下,各种动作可以发生。例如,分组可被放入指定队列以供软件冲突处理,或者冲突分组可在没有流表卸载机制帮助的情况下被转发给附加业务。此外,自治管理代理250可被配置为对冲突结果执行某些功能。例如,自治管理代理250可被配置为将该流插入在本地存储器中或者在其本地存储器(例如,存储器202)中建立软件冲突表。如在图2中示出,多个流表230a、230b、230c被支持并且可被根据分组分类结果和/或虚拟接口标识符来使用。例如针对TCP、UDP、FTP以及其他L2协议创建不同的流表,这是因为这些协议中的每一种提供了为了唯一地识别该协议内的流将被从分组中提取的不同头部字段。流表条目可以保存包括分组和字节计数以及时间戳在内的流统计信息,自治管理代理250例如可以利用这些信息来支持网络流采集点。在一种示例实现方式中,自治管理代理250包括具有存储器系统202的三个嵌入式中央处理单元(CPU) 201以及多个硬件输入/输出IO设备(未不出)。自治管理代理250不仅可被配置为如已经指出那样工作,而且也可被配置作为与集中管理工具180通信的接口。例如,流表策略和处理指令可被从集中管理工具180经由自治管理代理250 “上传”到NIC200。代理250也可被配置为处理特殊情况分组和流事件。例如,包含用来控制向LIF指派网络业务的管理命令的分组由代理250直接处理,或者不匹配任何流表描述的分组可被递送到代理250以供软件处理或者记录。代理250还可被配置为执行分组封装和转发。例如,复杂或演进的封装或隧穿协议无法总是由硬件表机制处理但是可以在硬件机制继续处理已知封装的同时被递送到代理250以进行更低速度的处理。图3示出了正从服务器110 (例如,在服务器110上运行的VM)发送的分组如何被NIC200处理以便外出到网络。适当的虚拟NIC200a、200b、200c将有效地接收分组(充当该分组发送自的VM的“专用”网络接口控制器)并将该分组传递给传输调度模块310。传输调度模块310被配置为向每个vNIC指派调度优先级和带宽分配。如在图3中看见,自治管理代理250与传输调度模块310通信以便根据从网络接收到的具有管理命令的分组来设置每个nNIC200a、200b、200c的调度策略。在被传输调度模块310处理过之后,给定分组被传递到分类器模块220,在该处基于LIF和存储器中的匹配来标识分组类型。然后可以基于分组类型来指派流表。在这样标识出分组类型的情况下,分组被传递到流表模块230中的适当流表230a、230b、230c。再一次,分组被查找,并且确定是否已经发生命中、未命中或者冲突。适当的处理然后可被执行。例如,流表命中意味着该流被确立并且可以根据流表条目中的控制位来转发,而未命中表明该流是新的并且在被允许传输到网络之前可能需要被发送到防火墙业务以进行检查。基于在选中的流表中应用的策略,分组可被转发模块210发送出来回到网络,或者可被发送以便经由路径215环回。这里描述的实施例允许流被跟踪到虚拟机和虚拟设备层级,支持完全分布式的流跟踪和管理模型,并且随着数据中心中的计算机的数目和类型从流计数扩展到性能层级。这里描述的实施例的一个潜在优点在于管理程序115被配置为执行流跟踪等的程度,极大的负担可被从管理程序和主机处理器(即,在服务器110上运行的一个或多个处理器)中去除。此外,通过以这里描述的方式来配置NIC200,即使在没有管理程序的情况下流跟踪和业务应用也可发生。本领域技术人员将认识到前面描述了网络接口控制器如何可被与虚拟接口支持、分组分类、流表、转发机制以及自治管理代理紧密集成以便向数据中心提供安全和可扩展的网络业务。注意到NIC200可以是用来跟踪流的最能缩放的点,这是因为其与如下单个实体机器相关联,在该单个实体机器处网络连接的数目随着主机处理器和网络接口控制器技术而扩展。另外,在计算机边缘标识流和跟踪流也许提供了虚拟机连接的最精确视图,这是因为NIC200知晓哪个虚拟操作系统和/或应用与哪个虚拟接口设备相关联。例如,因为外围组件快速互连(PCIe)总线处的虚拟NIC或虚拟功能可被与其虚拟机流相关联,可能存在连接末端的减少的不确定性或欺骗。虚拟机移动事件也利用它们的流被跟踪。另外,可以在不涉及或者不知晓虚拟或实体的计算机操作系统的情况下在NIC200处管理流。可以通过集中管理工具180经由到网络接口控制器的自治管理代理250的安全连接来应用流管理和策略。还注意到分布式的流跟踪允许分布式的业务操纵。针对业务应用标识出的流可以被递送到本地虚拟业务或者在应用业务头部之后被转发到远程业务节点。不需要中央的流分配器或者业务节点。最后,NIC200可以在不依赖于主机配置或操作系统的情况下跟踪流和应用网络业务。可以经由基于网络的管理系统来应用管理并且要实施基于流的策略无需信任主机软件。图4示出了用于对待作为如下分组流一部分的分组的一系列示例步骤,该分组流经由包括多个虚拟网络控制器的网络接口卡从网络传递到在服务器上运行的虚拟机。也参考图2,在步骤410处,分组在NIC200处被接收到。在步骤412处,分组被分类以确定该分组属于什么流类型。利用该流类型信息,在步骤414处基于与指示流相关联的流表来处理该分组。在步骤416处,分组朝向在与NIC200通信耦合的计算机上运行的虚拟机被从NIC200中传递出来,并且/或者被环回NIC200内部以进行附加处理。图5示出了用于对待作为如下分组流一部分的分组的一系列示例步骤,该分组流经由包括多个虚拟网络控制器的网络接口卡从在服务器上运行的虚拟机传递到网络。也参考图3,在步骤510处,分组被从例如运行虚拟机的计算机或者服务器接收到。在步骤512处,分组被分类以确定其类型。基于其类型,与该分组相关联的流可被确定。然后在步骤514处基于与指出流类型相关联的流表来处理该分组。经处理的分组然后在步骤516处被传递到网络并且/或者被环回以便在NIC200内进行进一步处理。尽管系统和方法在此被例示和描述为在一个或多个具体示例中实现,然而其并非旨在被限制到所示出的细节,这是因为各种修改和结构改变在不脱离装置、系统和方法的范围的情况下可被做出并且在权利要求的等同物的范围内。因此,宽广地且以与如在此阐述的装置、系统和方法的范围一致的方式理解权利要求是适当的。
权利要求
1.一种方法,包括: 在网络接口卡处接收来自数据通信网络的分组; 在所述网络接口卡内对所述分组分类以选择所述分组应被指派给的多个流表之一以获得选中的流表,该分类至少基于与所述分组相关联的逻辑接口 ; 基于所述选中流表中存储的信息来处理所述分组;以及 将所述分组传递到在与所述网络接口卡通信连接的计算机上工作的虚拟机,该虚拟机与所述逻辑接口相关联。
2.如权 利要求1所述的方法,还包括在所述网络接口卡处接收来自与所述网络接口卡通信连接的计算机的第二分组,以及转发该第二分组以在所述网络接口卡内进行分类。
3.如权利要求1所述的方法,还包括复制所述分组以进行多播。
4.如权利要求1所述的方法,还包括以下步骤中的至少一个:重写所述分组的至少一部分、封装所述分组或者基于所述选中流表中存储的信息来转发所述分组。
5.如权利要求1所述的方法,还包括,当所述分组属于新流时更新所述选中流表以包括所述分组的各方面。
6.如权利要求1所述的方法,还包括从与与所述网络接口卡连接的计算机不同的管理工具接收控制数据。
7.如权利要求6所述的方法,还包括利用所述管理工具来设定分组流的管理和策略。
8.如权利要求1所述的方法,还包括在所述网络接口卡内针对所述流表中表示的每个流来跟踪分组和字节统计信息。
9.如权利要求1所述的方法,还包括在所述网络接口卡内环回已被所述选中流表处理过的分组。
10.一种编码有当被处理器执行时使该处理器执行以下操作的指令的处理器可读介质: 在网络接口卡处接收来自数据通信网络的分组; 对所述分组分类以选择所述分组应被指派给的多个流表之一以获得选中的流表,其中分类至少基于与所述分组相关联的逻辑接口; 基于所述选中流表中存储的信息来处理所述分组;以及 将所述分组传递到在与所述网络接口卡通信连接的计算机上工作的虚拟机,该虚拟机与所述逻辑接口相关联。
11.如权利要求10所述的处理器可读介质,还包括当被所述处理器执行时使所述处理器执行以下操作的指令: 在所述网络接口卡处接收来自与所述网络接口卡通信连接的计算机的第二分组,以及转发该第二分组以在所述网络接口卡内进行分类。
12.如权利要求10所述的处理器可读介质,还包括当被所述处理器执行时使所述处理器执行以下操作的指令: 复制所述分组以进行多播。
13.如权利要求10所述的处理器可读介质,还包括当被所述处理器执行时使所述处理器执行以下操作中的至少一个的指令: 重写所述分组的至少一部分、封装所述分组或者基于所述选中流表中存储的信息来转发所述分组。
14.如权利要求10所述的处理器可读介质,还包括当被所述处理器执行时使所述处理器执行以下操作的指令: 当所述分组属于新流时更新所述选中流表以包括所述分组的各方面。
15.如权利要求10所述的处理器可读介质,还包括当被所述处理器执行时使所述处理器执行以下操作的指令: 从与与所述网络接口卡连接的计算机不同的管理工具接收控制数据。
16.如权利要求15所述的处理器可读介质,还包括当被所述处理器执行时使所述处理器执行以下操作的指令: 基于来自所述管理工具的数据设定分组流的管理和策略。
17.一种装置,包括: 转发模块,其被配置为接收来自电子网络的分组并且确定与该分组相关联的逻辑接Π ; 分类器模块,其被配置为基于所述逻辑接口来标识与所述分组相关联的流;以及多个流表,其中的一个被配置为基于与所述分组相关联的流而被选择,所选中的流表被配置为按照预定策略来处理所述分组, 其中所述装置被配置为操作多个虚拟网络接口控制器,所述多个虚拟网络接口控制器被配置为当所述装置与服务器通信耦合时服务在服务器上运行的相应虚拟机。
18.如权利要求17所述的装置 ,还包括自治管理代理模块,其被配置为执行以下操作中的至少一个: 重写所述分组的至少一部分、封装所述分组或者基于所述流表中存储的信息来转发所述分组。
19.如权利要求17所述的装置,其中,所述自治管理代理模块被配置为从与与所述服务器不同的管理工具接收控制信息。
20.如权利要求17所述的装置,还包括在所述流表与所述转发模块之间的环回路径。
全文摘要
在一个实施例中一种方法和装置支持包括在服务器上运行的虚拟机的虚拟网络接口控制功能在内的虚拟服务。一种方法包括在网络接口卡处接收来自数据通信网络的分组,在该网络接口卡内对该分组分类以选择该分组应被指派给的多个流表之一以获得选中的流表,该分类至少基于与该分组相关联的逻辑接口,基于所选中流表中存储的信息来处理该分组,并且将该分组传递到在与该网络接口卡通信连接的计算机上工作的虚拟机,该虚拟机与该逻辑接口相关联。
文档编号H04L29/08GK103141058SQ201180045891
公开日2013年6月5日 申请日期2011年4月5日 优先权日2010年9月23日
发明者迈克尔·B·加勒, 伊兰戈·加内桑, 迈克尔·佛雷德, 劳伦斯·R·克里格 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1