单队列多流业务整形的系统和方法与流程

文档序号:11263616阅读:179来源:国知局
单队列多流业务整形的系统和方法与流程



背景技术:

业务整形是通过放慢被确定为比优先的业务流更不重要或比优先的业务流更不期望的业务流来调控网络数据业务的技术。存在两种放慢流的通用机制:第一种,放弃或丢弃某些分组,以及第二种,将分组延迟。分组放弃机制被广泛使用并且在众多情况下被当作唯一可行的方案。例如,如果由计算机连接到的单独的设备来执行,业务整形能够通过选择性地放弃分组来执行。

替选地,分组延迟机制能够免除分组放弃或者减少所放弃分组的数目。例如,当分组被延迟时,反馈机制能够发挥“反压力”,即,发送反馈到发送模块(例如,设备或软件组件)以使得发送模块降低其发送分组的速率。在没有这样的“反压力”的情况下,业务整形模块将需要以更快的速率保持接收分组,并且需要缓冲他们,直到其能够以正确的速率来发送他们。缺少这样的“反压力”将不仅防止应用立即知晓业务拥塞,而且还使得分组传输系统的整体吞吐量和性能降级。



技术实现要素:

在一个方面中,给出了一种包括网络设备的系统。网络设备包括:网络接口驱动器、数据业务整形模块以及网卡。网络接口驱动器被配置为发送由软件应用所生成并且转发的第一数据分组集合以由网卡传输,按照第一顺序在主传输队列中存储与所接收的第一数据分组集合相关联的描述符,以及将与所接收的第一数据分组集合相关联的描述符传递到在网卡和至少一个处理器中的一者上执行的数据业务整形模块。响应于确定网卡已经成功传送所接收的第一分组集合中的分组,网络接口驱动器被配置为在将附加数据分组转发到网络接口驱动器之前,将分组传输完成消息通信到等待接收来自网络接口驱动器的分组传输完成消息的软件应用。数据业务整形模块被配置为维持多个业务整形队列,每个业务整形队列具有至少一个相关联的传输速率规则。数据业务整形模块进一步被配置为接收来自主传输队列的由网络接口驱动器所传递的数据分组的描述符,确定网卡的传输将被延迟,以及响应于这样的确定,从主传输队列中移除描述符并且基于分类的结果将其存储在对应的业务整形队列中。数据业务整形模块进一步被配置为使得网卡根据与相应的业务整形队列相关联的传输速率规则来传送与存储在辅助业务整形队列中的描述符相关联的数据分组,以及向网络接口驱动器通知以不同于第一顺序的第二顺序对数据分组的成功传输。

在一个方面中,给出了一种方法,包括由在至少一个处理器上执行的网络接口驱动器接收由软件应用所生成并且转发的第一数据分组集合,以由网卡传输。所述方法进一步包括:由网络接口驱动器按照第一顺序在主传输队列中存储与所接收的第一数据分组集合相关联的描述符;以及由网络接口驱动器将与所接收的第一数据分组集合相关联的描述符传递到在网卡和所述至少一个处理器中的一者上执行的数据业务整形模块。所述方法进一步包括响应于确定网卡已经成功传送所接收的第一数据分组集合中的分组,在将附加数据分组转发到网络接口驱动器之前,由网络接口驱动器将分组传输完成消息通信到等待接收来自网络接口驱动器的分组传输完成消息的软件应用。所述方法进一步包括由数据业务整形模块维持多个业务整形队列,其中每个业务整形队列具有至少一个相关联的传输速率规则;以及由数据业务整形模块接收来自主传输队列的由网络接口驱动器所传递的数据分组的描述符。所述方法进一步包括由数据业务整形模块对与所接收的描述符相关联的数据分组进行分类;由数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输将被延迟,以及响应于这样的确定,从主传输队列中移除与第一数据分组相关联的第一描述符并且基于分类的结果将所述第一描述符存储在对应的业务整形队列中。所述方法进一步包括由数据业务整形模块使得网卡根据与相应的业务整形队列相关联的传输速率规则来传送与存储在业务整形队列中的描述符相关联的数据分组;以及由数据业务整形模块向网络接口驱动器通知以不同于第一顺序的第二顺序对所述数据分组的成功传输。

在一个方面中,一种计算机可读介质,存储当由计算处理器运行时使得计算处理器执行如下操作的指令:经由在计算处理器上中的的网络接口驱动器接收由软件应用所生成并且转发的第一数据分组集合,以由网卡传输。进一步使得所述计算处理器经由网络接口驱动器在主传输队列中存储与所接收的第一数据分组集合相关联的描述符。进一步使得所述计算处理器经由网络接口驱动器将与所接收的第一数据分组集合相关联的描述符传递到在网卡和所述计算处理器中的一者上执行的数据业务整形模块。响应于确定网卡已经成功传送所接收的第一分组集合中的分组,进一步使得所述计算处理器在将附加数据分组转发到网络接口驱动器之前,经由网络接口驱动器将分组传输完成消息通信到等待接收来自网络接口驱动器的分组传输完成消息的软件应用。进一步使得所述计算处理器经由数据业务整形模块维持多个业务整形队列,其中每个业务整形队列具有至少一个相关联的传输速率规则。进一步使得所述计算处理器经由数据业务整形模块接收来自主传输队列的由网络接口驱动器所传递的数据分组的描述符;以及经由数据业务整形模块对与所接收的描述符相关联的数据分组进行分类。进一步使得所述计算处理器经由数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输将被延迟,以及响应于这样的确定,从主传输队列中移除与第一数据分组相关联的第一描述符并且基于分类的结果在对应的业务整形队列中存储第一描述符。所述计算处理器进一步经由数据业务整形模块使得网卡根据与相应的业务整形队列相关联的传输速率规则来传送与存储在业务整形队列中的描述符相关联的数据分组。进一步使得所述计算处理器:经由数据业务整形模块向网络接口驱动器通知对所述数据分组的成功传输。

附图说明

当结合以下附图时,通过参考以下具体实施方式部分,将更全面地理解本公开的以上和相关的对象、特征、以及优点,其中:

图1为根据某些实施方式的具有数据业务整形系统的网络环境的框图;

图2为示例虚拟机环境的框图;

图3为根据某些实施方式的示出网络接口驱动器的操作的流程图;

图4为根据某些实施方式的示出数据整形模块的操作的流程图;

图5为根据某些实施方式的示出网络接口驱动器的操作的流程图;

图6a-6d为根据某些实施方式的表示数据业务整形系统的操作示例的框图;

图7a-7d为根据某些实施方式的表示数据业务整形系统的操作示例的框图;

图8a-8c为根据某些实施方式的表示数据业务整形系统的操作示例的框图;以及

图9为示例计算系统的框图。

具体实施方式

给出了涉及网络设备中的业务整形的系统和方法。在某些实施方式中,所述系统和方法包括网络设备的网络接口驱动器,其被配置为存储与传输队列中所接收的分组相关联的描述符并且将所述描述符传递到业务整形模块。所接收的分组源自在计算设备上运行的应用,例如计算设备所托管的一个或多个虚拟机上。虚拟机的访客操作系统防止应用转发附加分组到网络接口驱动器,直到接收到确认已经成功传送之前所转发分组的消息。如本文中所述,在某些实施方式中,响应于确定网卡成功传送所接收的分组中的第一分组,在转发附加数据分组到网络接口驱动器之前,网络接口驱动器将分组传输完成消息通信到等待接收分组传输完成消息的软件应用或访客操作系统。在某些实施方式中,响应于确定网卡传输所接收的分组中的一个分组将被延迟,业务整形模块从传输队列中移除与分组相关联的描述符并且将所述描述符存储在对应的业务整形队列中。该配置能够利用网络接口驱动器中的单个主传输队列以及采用不同的业务整形规则的多个业务整形队列(例如,在网络接口卡中)来实现,因而允许按照每个流的业务整形,而不需要网络接口驱动器中的多个传输队列。进而,利用这一配置,分组源(诸如运行在网络设备的真实os上(与虚拟机的访客os上相反)的软件应用、或由管理程序管理的访客os中的软件应用或tcp栈的上层)不需要知晓在网络接口驱动器中或在网卡上实现的业务整形算法。因此,能够降低在虚拟机环境中实现网络接口驱动器和访客操作系统的成本。此外,利用这一配置,分组源不需要知晓的不仅是业务整形算法,还有其他配置,例如,分组分类规则和其他业务管理策略。因此,整体业务整形系统能够比其中应用或用户能够配置这样的具体规则和策略(例如,队列的数目)的系统更可靠。

在传统的系统中,按照传输队列的顺序来处理分组,所述传输队列例如为先入先出(fifo)队列,并且完成结果按顺序返回。在本公开的某些实施方式中,业务整形模块能够通过从传输队列中移除某些数据分组用于已延迟的传输(在不放弃的情况下)来使得完成消息无序返回。利用“无序完成”这一配置,因为应用在接收到已经转发到网络接口驱动器的数据分组的完成消息之前将不再发送更多数据分组,这能够使得应用更快或更慢地传送数据分组,同时仍然拥有单个传输队列。也就是,这一配置能够通过防止将延迟的数据分组仍然保持在队列中来避免队头阻塞。此外,在某些实施方式中,这一“无序”完成配置能够应用于应用内的数据分组的单独的流(flow)(或流(stream)),使得能够选择性地放慢每个流,其中所述应用例如为具有为对应的流(flow)或流(stream)而打开的成千的连接的应用。

进而,在某些实施方式中,在没有队头阻塞的情况下,“无序”完成配置能够发挥“反压力”到发送模块,这与有多少主传输队列或每个队列中放了多少分组无关,只要完成消息能够无序返回。在某些实施方式中,具有无序完成配置的业务整形机制能够利用特定的网络/硬件配置(例如,特定数目的主传输队列和特定的队列指派规则)来实现。例如,为了对业务的一千个流(flow)/流(stream)进行整形,业务整形机制能够利用仅单个队列或者利用少量的队列(例如,16-32个队列)来实现。当在具有少量的队列的系统中实现时,业务整形机制能够返回“无序”完成消息,指示每个分组是基于预定的队列指派规则而放在正确的队列中还是分组业务“随机地”散布在队列上。例如,在不修改网络/硬件配置(例如,linux系统的队列指派规则或硬件队列的数目)的情况下,用于对来自linux系统的散布在多个硬件队列上的分组业务进行整形的“无序”完成业务整形系统能够在虚拟机中实现。在某些实施方式中,业务整形系统能够通过向应用或用户隐藏业务整形层、流分类规则和策略来提供这样的网络/硬件兼容性。

图1为具有数据业务整形系统160的示例网络环境1000的框图。按照概述,图示的网络环境包括互连的网络节点750的网络700。网络节点750以数据源、数据目的地(或数据宿)、以及通过网络700从源朝目的地传播数据的中间节点来参与到网络700中。网络700包括具有到各种其他参与的网络节点750的链路600的网络设备110的数据业务整形系统160。详见图1,网络700为促进参与设备间的交互的网络。说明性的示例网络700为互联网;然而,在其他实施方式中,网络700可以为另一网络,诸如数据中心内的本地网络、网络结构、或任意其他局域或广域网。网络700可以由多个连接的子网或自治网络组成。网络700能够为局域网(lan),诸如企业内联网、城域网(man)、广域网(wan)、诸如互联网的互连网络、或者例如为自组织wifi对等点对点网络的对等网络。任意类型和/或形式的数据网络和/或通信网络都能够用于网络700。其能够为公共的、私有的、或公共网络和私有网络的组合。一般地,网络700用于在计算设备之间传递信息,例如,在网络节点750之间,并且数据业务整形系统的网络设备110根据其配置促进该通信。

参见图1,网络设备110为托管一个或多个虚拟机的服务器。网络设备110包括数据业务整形系统160。在某些实施方式中,网络设备110包括存储器112、以及网卡168。网络设备110能够包括用于存储数据分组的分组缓冲器169。在某些实施方式中,网络设备110具有与如图9中所示的计算系统140的配置类似的配置。例如,存储器112能够具有与如图9中所示的存储器144的配置类似的配置,以及网卡168能够具有与如图9中所示的网络接口146或网络接口控制器143的配置类似的配置。以下参照图9更详细地描述计算系统140。图9中图示的计算系统140中示出的元件不都需要在图1中图示的网络设备110的某些实施方式中给出。在某些实施方式中,网络设备110可以为软件队列或仿真的网络设备、或充当网络接口的软件。

再次参见图1,在某些实施方式中,数据业务整形系统160与一个或多个应用150(例如,应用150a、150b以及150c)通信。应用150a-150c中的一个或多个应用能够为运行在网络设备110的真实操作系统上的软件应用。除此之外,软件应用150a-150c中的一个或多个软件应用能够为运行在由虚拟机环境中的管理程序管理的访客os上的软件应用、或虚拟机环境的访客os的协议栈(例如,tcp栈)的上层。例如,参见图2,应用150a-150c能够各自为运行在真实os220上的软件应用230、运行在由管理程序250管理的访客os260上的软件应用265、或图2中的访客os260的协议栈261的上层。管理程序250和与其相关的虚拟机环境将在以下参照图2详细描述。

仍旧参见图1,在某些实施方式中,网络设备110包括网络接口驱动器164和数据业务整形模块166。网络接口驱动器164能够为运行在真实os上的网络接口驱动模块。网络接口驱动器164能够直接地(如果运行在网络设备110的真实os上)、经由虚拟机的访客os(如果运行在虚拟机环境中)、或在某些实施方式中通过管理程序和访客os来与软件应用150a-150c(例如,图2中的应用265)中的一个软件应用通信。在某些实施方式中,网络接口驱动器164包括在网络设备110的真实os的传输控制协议(tcp)栈的第一层内并且与包括在tcp栈的上层中的软件模块或应用通信。在一个示例中,网络接口驱动器164包括在tcp栈的传输层内并且与包括在tcp栈的应用层中的软件模块或应用通信。在另一示例中,网络接口驱动器164包括在tcp栈的链路层内并且与包括在tcp栈的互联网/传输层中的tcp/ip模块通信。

再次参见图1,在某些实施方式中,数据业务整形模块166能够被实现为运行在真实os上的网络接口驱动模块的一部分。在某些实施方式中,数据业务整形模块166能够作为网卡168的一部分而被包括。

参见图1,在某些实施方式中,能够将分组缓冲器169定位在网络设备110的共享存储器中,使得应用150、网卡168、网络接口驱动器164以及数据业务整形模块166中的某些或全部能够直接或间接地访问分组缓冲器169。例如,能够将分组缓冲器169定位在访客os、真实os、网络接口驱动器164、以及网卡168可访问的共享存储器中。为了通过网络发送分组,在传输到网卡168之前,能够将数据分组存储在分组缓冲器169中,其中分组缓冲器169能够由网络接口驱动器164和网卡168访问。

图2示出了实现虚拟机环境的示例服务器200的框图。在某些实施方式中,服务器200包括硬件210、运行在硬件210上的真实操作系统(os)220、管理程序250、具有访客操作系统(访客os)260和270的两个虚拟机。硬件210能够包括网络接口卡(nic)215、以及其他组件。硬件210能够具有与如图9中所示的计算系统140的配置类似的配置。硬件210的nic215能够具有与如图9中所示的网络接口控制器143或网络接口164的配置类似的配置。在某些实施方式中,真实os220具有协议栈225(例如,tcp栈)并且具有运行在真实os220上的软件应用。在某些实施方式中,访客os260和270分别具有协议栈261和271。访客os260和270中的每个能够托管大量的应用,例如,软件应用265、266、275以及276。服务器200可以为文件服务器、应用服务器、web服务器、代理服务器、电器、网络电器、网关、网关服务器、虚拟服务器、部署服务器、sslvpn服务器、或防火墙。

再次参见图2,服务器200执行管理程序220,所述管理程序220实例化并且管理第一访客os260和第二访客os270。第一访客os260托管第一软件应用265和第二软件应用266。第二访客os260托管第三软件应用275和第四软件应用276。例如,应用能够包括数据库服务器、数据仓库程序、股市交易软件、网上银行应用、内容发布和管理系统、被托管的视频游戏、被托管的桌面、电子邮件服务器、旅行预定系统、客户关系管理应用、存货控制管理数据库、以及企业资源管理系统。在某些实施方式中,访客os托管其他种类的应用。进一步在以下关于图3-6描述服务器200的组件之间的交互。

图3为使用网络接口驱动器所执行的示例方法300来对网络业务进行整形的流程图,所述网络接口驱动器诸如图1中所示的网络接口驱动器164。按照概述,方法300开始于阶段310,其中网络接口驱动器能够接收由应用生成并且转发的第一数据分组集合,以由网卡传输,所述网卡诸如图1中所示的网卡168。在阶段320,网络接口驱动器能够在主传输队列中存储与所接收的第一数据分组集合相关联的描述符。在阶段330,网络接口驱动器能够传递与所接收的第一数据分组集合相关联的描述符到数据业务整形模块,诸如图1中所示的数据业务整形模块166。

现在,将参照图6a和6b来更详细地描述图3中的流程图,图6a和6b为根据某些实施方式的表示数据业务整形系统的操作示例的框图。

在阶段310,网络接口驱动器能够接收由应用生成并且转发的第一数据分组集合,以由网卡传输。例如,参见图6a,网络接口驱动器164接收由应用150a-150c的集合中的一个应用生成并且转发的一个数据分组集合,以由网卡168传输。在某些实施方式中,响应于接收到该数据分组集合,网络接口驱动器164在分组缓冲器(例如,图1和6a-6d中的分组缓冲器169)中存储所接收的该数据分组集合。例如,作为共享的资源,能够将分组缓冲器169定位在访客os与网络接口驱动器164之间的共享存储器中,使得能够将从运行在访客os上的应用150发送的分组存储在分组缓冲器169中并且与分组相关联的描述符指向共享资源内的位置。在某些实施方式中,包含指向分组缓冲器中特定分组的指针(例如,存储器地址)的描述符与特定分组相关联。在某些实施方式中,描述符通常很小(例如,32个字节或者包括少数64比特的整数)并且易于处理,而分组通常为最小几百字节,并且经常为1500个字节。

在某些实施方式中,数据分组能够为流的一部分。应用150能够按照特定的顺序来发送每个流中的数据分组。每个流能够来自不同的应用(例如,在不同的访客os上执行的应用)。在图6a中所示的示例中,应用150a按连续顺序来发送与描述符s1、s2以及s3相对应的第一流的三个分组。应用150b按照连续顺序来发送与描述符t1、t2以及t3相对应的第二流的三个分组。应用150c发送与描述符u1和u3相对应的第三流的两个分组。

在阶段320,网络接口驱动器能够在主传输队列161中存储与所接收的第一数据分组集合相关联的描述符。参见图6a-6d,网络设备110包括主传输队列161,用于包含与从应用150所接收的数据分组相关联的描述符。在某些实施方式中,主传输队列161为单个队列。在某些实施方式中,主传输队列161能够为硬件队列(例如,在专用硬件中实现的队列)或软件队列。在某些实施方式中,主传输队列161为一个主传输队列集合。例如,主传输队列161为在多队列nic中实现的多个队列。在某些实施方式中,该主传输队列集合的数目小于速率限制器(例如,业务整形队列)的数目。例如,为了对成千上万的流(flow)或流(stream)进行整形,网络设备110能够具有约10-约32个硬件队列,同时具有安装于其中以对成千上万的流进行整形的众多更多的业务整形队列。响应于接收来自应用150的数据分组,网络接口驱动器164将与数据分组相关联的描述符写入单个队列,例如,主传输队列161。在某些实施方式中,网络接口驱动器164按照应用150发送分组的顺序将与每个流中的数据分组相关联的描述符写入主传输队列161中。例如,如在图6a中所示,网络接口驱动器164接收来自应用150的八个数据分组并且将与分组相关联的描述符(例如,描述符t1、u1、t2、s1、u2、s2、s3、t3)写入主传输队列161,以用于经由网卡168的分组传输。在某些实施方式中,响应于接收来自应用150的数据分组,网络接口驱动器164能够将所接收的分组写入单个传输队列(而非存储与他们相关联的描述符)。

网络接口驱动器164接收来自应用150a的第一流的分组并且按照他们被传送的顺序来将描述符s1、s2以及s3写入主传输队列161,即,s1,接着s2,接着s3。类似地,网络接口驱动器164从应用150b接收第二流的分组并且按照他们被接收的顺序来将描述符t1、t2以及t3写入主传输队列161,以及网络接口驱动器164接收来自应用150c的第三流的分组并且将描述符u1和u2写入主传输队列161。在某些实施方式中,在主传输队列中,不同的流的分组能够被交织,同时维持每个流中的分组的接收顺序。例如,在图6a中所示的示例中,在主传输队列中,不同的流的分组被交织(即,按照t1、u1、t2、s1、u2、s2、s3以及t3的顺序),同时维持每个流的分组的接收顺序(例如,对于第一流,维持s1->s2->s3的顺序;对于第二流,维持t1->t2->t3的顺序;以及对于第三流,维持u1->u2的顺序)。

在阶段330,网络接口驱动器能够将与所接收的第一数据分组集合相关联的描述符传递到数据业务整形模块。例如,参见图6b,在某些实施方式中,网络接口驱动器164将与所接收的数据分组相关联的描述符(例如,t1、u1、t2、s1、u2、s2、s3、以及t3)传递到数据业务整形模块166。

图4为使用由数据业务整形模块执行的示例方法400来对网络业务进行整形的流程图,所述数据业务整形模块诸如图1和图6a-6d中所示的数据整形模块166。按照概述,所述方法400开始于阶段410,其中数据业务整形模块维持多个业务整形队列并且接收来自主传输队列的由网络接口驱动器所传递的数据分组的描述符,所述网络接口驱动器诸如图1和图6a-6d中所示的网络接口驱动器164。在阶段420,数据业务整形模块对与所接收的描述符相关联的数据分组进行分类。在阶段430,数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输是否将被延迟,其中,所述网卡诸如图1和图6a-6d中所示的网卡168。在阶段440,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输将被延迟,数据业务整形模块从主传输队列中移除与第一数据分组相关联的第一描述符并且基于分类的结果来将第一描述符存储在对应的业务整形队列中。接着,在阶段450,数据业务整形模块使得网卡根据与相应的业务整形队列相关联的传输速率规则来传送与存储在业务整形队列中的描述符相关联的数据分组。在阶段460,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输不会被延迟,数据业务整形模块使得网卡立即传送第一数据分组。在阶段470,数据业务整形模块向网络接口驱动器通知对数据分组的成功传输。注意,如本文中使用的,对数据分组的成功传输不一定要求接收方对数据分组的成功接收。也就是,对分组接收的确认的接收(例如,tcpack消息)不是网络接口卡确定已经成功传送分组的先决条件。

现在,将参照6a-6d来详细描述图4中的流程图,图6a-6d为根据某些实现的表示数据业务整形系统的示例操作的框图。

如以上给出的,在阶段410,数据业务整形模块维持多个业务整形队列并且接收来自主传输队列的由网络接口驱动器所传递的数据分组的描述符。例如,参见图6a-6d,数据业务整形模块166维持多个业务整形队列(例如,业务整形队列162、163以及165)。在某些实施方式中,每个业务整形队列能够维持对应的分组缓冲器(未示出),以用于存储由业务整形队列管理的分组。在某些实施方式中,业务整形队列中的至少某些共享对分组缓冲器169的访问并且因而不需要拥有他们自身的单独的分组缓冲器。参见图6a和6b,响应于网络接口驱动器164将与所接收的数据分组相关联的描述符传递到数据业务整形模块166(例如,t1、u1、t2、s1、u2、s2、s3、以及t3),数据业务整形模块166从主传输队列161接收所传递的数据分组描述符。

在阶段420,数据业务整形模块对与所接收的描述符相关联的数据分组进行分类。在某些实施方式中,例如在图6b中所示,数据业务整形模块166基于用于将每个流的特性映射到对应的业务整形队列的分类规则集合来对与所接收的描述符相关联的数据分组进行分类。例如,业务整形模块能够基于分组报头中的数据的四元组或五元组来对分组进行分类,包括源和目标ip地址、源和目标端口号、以及服务指示符类型中的四个或五个。在某些实施方式中,能够更广泛地使用报头更少的数据字段来对分组进行分类。例如,在某些实施方式中,可以基于单个数据字段来对分组进行分类,诸如服务类型(tos)或服务质量(qos)字段(取决于使用的协议和协议版本)、文件类型字段、或端口号,这些字段中的每一个通常能够与优先级相关。在识别分组的相关特性之后,数据业务整形模块166将所识别的特性与分类规则进行比较并且将分组指派给满足分类规则的业务整形队列。在某些实施方式中,业务整形模块166维持“兜底”业务整形队列,以用于处理基于他们的特定特性未指派给其他业务整形队列的所有分组。

在某些实施方式中,每个业务整形队列具有至少一个相关联的传输速率规则。用于特定业务队列的传输速率规则能够指定网卡传送存储在特定业务队列中的分组的流速率限制。参见图6a-6d,数据业务整形模块166能够使得网卡168根据队列的传输速率规则来传送存储在特定业务整形队列中的分组。在某些实施方式中,传输速率规则能够为绝对的或有条件的。类似地,传输速率规则能够基于分组的数目或数据量。某些示例绝对传输速率规则包括1)无限制的传输;2)每秒传送的最大分组数目;3)每秒传送的平均分组数目;4)每秒传送的最大比特;或5)每秒传送的平均比特。在某些实施方式中,传输速率规则能够包括以上类型的规则中的任意组合。例如,传输速率规则可以指定每秒的平均可允许比特或分组、以及每秒的最大比特或分组数目,以允许和/或容纳业务的突发性。有条件的传输速率规则允许不同情形下的不同的绝对传输速率规则。例如,一个有条件的传输速率规则可以许可在与不同的业务整形队列为空相对的该不同的业务整形队列为满的情形下的一个传输速率。另一有条件的传输规则可以许可取决于队列中的分组的数目的不同的传输速率,例如,以允许在该队列变得非所期望地满的情形下更快地处理分组。以上规则为可以针对相应的业务整形队列中的每个业务整形队列而实现的广泛的规则的示例。具体规则能够例如由系统管理员来设置。

在阶段430,数据业务整形模块能够确定网卡对与所接收的第一描述符相关联的第一数据分组的传输是否将被延迟。如果分组的分类导致其被指派给已经存储未发送分组(或其描述符)的业务整形队列,则延迟分组的传输。

在阶段440,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输将被延迟,数据业务整形模块从主传输队列中移除与第一数据分组相关联的第一描述符并且基于分类的结果在对应的业务整形队列中存储第一描述符。例如,参见图6a和6b,响应于确定网卡168对与第二流的描述符t1相关联的数据分组的传输将被延迟,数据业务整形模块166从主传输队列161中移除描述符t1并且将描述符t1存储在业务整形队列165中。类似地,数据业务整形模块166从主传输队列161中移除第二流的描述符t2和t3并且将描述符t2和t3存储在业务整形队列165中。响应于确定网卡168对与第一流的描述符s1相关联的数据分组的传输将被延迟,数据业务整形模块166从主传输队列161中移除描述符s1并且将描述符s1存储在业务整形队列163中。类似地,数据业务整形模块166从主传输队列161中移除第一流的描述符s2和s3并且将描述符s2和s3存储在业务整形队列163中。

从单个传输队列中移除与被确定为将被延迟的业务流相关联的描述符能够解决称作“队头阻塞”的排队问题。如果先入先出(fifo)队列的头处的分组的传输被延迟、但是仍然保持在传输队列中,该分组将阻塞与队列中它之后所存储的描述符相关联的所有其他分组的处理(包括基于业务整形模块所实现的业务整形规则将不被延迟的分组),引起“队头阻塞”问题。相反,对于基于业务整形规则被确定为将被延迟传输的数据分组,数据业务整形模块166能够传递与来自传输队列的头的分组相关联的描述符。这一移除能够允许继续处理在队列中存储的描述符相关联的其他分组,由此解决“队头阻塞”问题。进而,响应于从传输队列中移除描述符,数据业务整形模块166能够将描述符转移到对应的业务整形队列,由此允许延迟的分组传输,而不丢弃描述符或其对应的分组。

再次参见图6b,在某些实施方式中,如果数据业务整形模块166确定网卡168对第一流中的数据分组(例如,与描述符s1相对应的数据分组)的传输将被延迟,数据业务整形模块166将与第一流中的数据分组相关联的描述符存储在第一业务整形队列(即,业务整形队列163)中。如果数据业务整形模块166确定网卡对不同于第一流的第二流中的数据分组(例如,与描述符t1相对应的数据分组)的传输将被延迟,数据业务整形模块166将与第二流中的数据分组相关联的描述符存储在第二业务整形队列(例如,业务整形队列165)中。在某些实施方式中,能够将与不同的流相关联的分组传递到相同的业务整形队列。也就是,业务整形模块166能够维持比业务整形模块166所处理的流的数目更少的业务整形队列,并且在众多情况下,比其少得多的业务整形队列。

在阶段450,数据业务整形模块使得网卡根据与相应的业务整形队列相关联的传输速率规则来传送与存储在业务整形队列中的描述符相关联的数据分组。例如,参见图6b-6d,数据业务整形模块166使得网卡168根据与业务整形队列163相关联的传输速率规则来以延迟方式传送与存储在业务整形队列163中的描述符s1、s2以及s3相关联的数据分组。数据业务整形模块166还能够使得网卡168根据与业务整形队列165相关联的传输速率规则来以延迟方式传送与存储在业务整形队列165中的描述符t1、t2以及t3相关联的数据分组。

在阶段460,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输不会被延迟,数据业务整形模块能够使得网卡立即传送与存储在业务整形队列中的描述符相关联的数据分组。例如,如果对数据分组进行分类使得将其指派给具有允许无限制的传输速率的传输速率规则的业务整形队列并且队列为空,可以无延迟地立即传送数据分组。按照图6a-6d中所示的示例中地处理与描述符u1和u2相关联的分组。类似地,如果将分组分类到为空并且没有超过在其对应的传输速率规则中所识别的传输速率的业务整形队列,可以立即传送分组。

在某些实施方式中,网卡168通过使用资源来传送数据分组。在某些实施方式中,资源为应用150、网络接口驱动器164以及网卡168中的某些或全部所共享的存储器缓冲器(例如,图1和6a-6d中的分组缓冲器169)。例如,网卡168使用与数据分组相关联的描述符来识别(共享存储器中的)分组缓冲器169中的数据分组的地址,并且接着从分组缓冲器169传送数据分组。在某些实施方式中,响应于使用分组缓冲器169来传送数据分组,网卡168能够使得分组缓冲器释放用于存储所传送的分组的存储器空间,使得该空间能够用于存储新的分组。

在阶段470,数据业务整形模块能够向网络接口驱动器通知对数据分组的成功传输。例如,参见图6c,响应于经由网卡168成功完成与描述符u1和u2相关联的数据分组的(立即)传输,数据业务整形模块166向网络接口驱动器164通知对数据分组的成功传输。在某些实施方式中,数据业务整形模块166能够通过向网络接口驱动器164转发网卡168所生成的单个消息来向网络接口驱动器164通知对数据分组的成功传输,其中,所述单个消息指示对与描述符u1和u2相关联的数据分组的成功传输。在某些实施方式中,通过针对每个分组来将单独的传输完成消息转发到网络接口驱动器164,数据业务整形模块166能够单独地向网络接口驱动器164通知与描述符u1和u2相关联的数据分组中的每个数据分组的成功传输。

针对延迟的传输,能够生成并且转发类似的通信。例如,参见图6d,响应于经由网卡168成功完成与描述符t1、s1、t2、s2、t3以及s3相关联的数据分组的(延迟)传输,数据业务整形模块166向网络接口驱动器164通知对数据分组的成功传输。在某些实施方式中,通过向网络接口驱动器164转发网卡168所生成的单个消息,数据业务整形模块166能够向网络接口驱动器164通知对数据分组的成功传输,其中,所述单个消息指示对多个数据分组成功传输。在某些实施方式中,数据业务整形模块166能够单独地向网络接口驱动器164通知每个单独的数据分组的成功传输。

图5为使用网络接口驱动器执行的示例方法500来对网络业务进行整形的流程图。按照概述,所述方法500开始于阶段510,其中网络接口驱动器(诸如图1和6a-6d中所示的网络接口驱动器164)确定诸如网卡168的网卡是否成功传送所接收的第一分组集合中的分组。在阶段520,如果网络接口驱动器确定成功传送所接收的分组的第一集合中的分组,在将附加数据分组转发到网络接口驱动器之前,网络接口驱动器将分组传输完成消息传送到等待接收来自网络接口驱动器的分组传输完成消息的应用。

以下参照图6a-6d详细描述图5的流程图中所示的方法。

详细参见图5,在阶段510,网络接口驱动器确定网卡是否成功传送所接收的第一分组集合中的分组。例如,参见图6c,响应于网卡168成功完成与描述符u1和u2相关联的数据分组的传输,数据业务整形模块166通过通信单个消息或多个消息向网络接口驱动器164通知对数据分组的成功传输。基于来自数据业务整形模块166的对数据分组的成功传输的通知,网络接口驱动器164确定网卡168成功传送所接收的分组中的每个分组。

在阶段520,响应于网络接口驱动器确定成功传送所接收的第一分组集合中的分组,在转发附加数据分组到网络接口驱动器之前,网络接口驱动器将分组传输完成消息传送到等待接收来自网络接口驱动器的分组传输完成消息的应用。例如,参见图6c,响应于确定网卡168已经成功传送来源于应用150c所发送的第三流的描述符u1相关联的分组,网络接口驱动器164将与描述符u1相对应的分组传输完成消息167(例如,图6c中的m-u1)通信到应用150c。类似地,响应于确定网卡168成功传送来源于应用150c发射的描述符u2相关联的分组,网络接口驱动器164将与描述符u2相对应的分组传输完成消息167(例如,图6c中的m-u2)通信到应用150c。在某些实施方式中,传输完成消息167能够较小(例如,32个字节或包括少数64比特的整数)。在某些实施方式中,响应于从数据业务整形模块166接收指示成功传输与描述符u1和u2相关联的数据分组的单个消息(未示出),网络接口驱动器164生成两个单独的传输完成消息(例如,图6c中的m-u1和m-u2)并且按照成功传输数据分组的顺序来将每个消息通信到对应的分组源,例如,应用150c。在某些实施方式中,响应于从数据业务整形模块166接收指示成功传输与描述符u1和u2相关联的数据分组中的每个数据分组的消息(未示出),网络接口驱动器164能够向对应的分组源(例如,应用150c)转发所接收的消息作为传输完成消息。

参见图6d,响应于确定网卡168已经成功传送起源于应用150b所发送的第二流的描述符t1相关联的分组,网络接口驱动器164将与描述符t1相对应的分组传输完成消息167(例如,图6d中的m-t1)通信到应用150b。类似地,响应于确定网卡168已经成功传送起源于应用150a所发送的第一流的描述符s1相关联的分组,网络接口驱动器164将与描述符s1相对应的分组传输完成消息167(例如,图6d中的m-s1)通信到应用150b。在某些实施方式中,响应于从数据业务整形模块166接收指示成功传输与描述符t1、s1、t2、s2、t3以及s3相关联的数据分组的单个消息(未示出),网络接口驱动器164能够生成六个单独的传输完成消息(例如,图6c中的m-t1、m-s1、m-t2、m-s2、m-t3以及m-s3)并且按照成功传输数据分组的顺序(例如,按照t1、s1、t2、s2、t3以及s3的顺序)来将每个消息通信到对应的分组源(例如,对于第一流的描述符t1、t2、t3,应用150a;以及,对于第二流的描述符s1、s2、s3,应用150b)。或者,随着从数据业务整形模块166接收每个消息,能够仅发送一个消息到每个源(例如,一个消息到应用150a以及一个消息到应用150b),其中每个消息识别多个成功传送的分组。

在某些实施方式中,应用150中的每个应用能够被配置为在转发附加数据分组到网络接口驱动器164之前等待接收来自网络接口驱动器164的分组传输完成消息。在某些实施方式中,应用150中的每个应用能够被配置为在转发相同的流中的附加数据分组到网络接口驱动器164之前等待接收来自网络接口驱动器164的针对特定流的数据分组的传输完成消息。例如,如在图6c中所示,应用150c等待接收第三流中与来自网络接口驱动器164的描述符u1相对应的数据分组的传输完成消息。参见图6d,响应于应用150c接收与描述符u1相对应的传输完成消息,应用150c转发相同的第三流的附加数据分组(例如,与如图6d中所示的描述符u3和u4相对应的数据分组)到网络接口驱动器164。按照这一方式,通过仅在应用150c接收到指示网卡168传送的相同流的分组的分组传输完成消息时发送附加分组到网络接口驱动器164,应用150c能够在主传输队列中维持针对每个流的少量的分组(例如,1或2或3个分组)。在某些实施方式中,响应于接收与特定流的描述符相对应的传输完成消息,应用能够转发与该特定流不同的流的附加数据分组到网络接口驱动器164。

以下还参照图7a-7d来描述图3-5的流程图中所示的方法,图7a-7d为根据某些实施方式的表示数据业务整形系统的操作示例的框图。在图7a-7d中,使用与图6a-6d的附图标记相同的附图标记,并且省略相同的描述。图7a-7d示出了当应用150d发送不同的流(stream)或流(flow)的分组(例如,第四流中与描述符v1、v2、v3相对应的分组,以及第五流中与描述符w1、w2、w3相对应的分组)到网络接口驱动器164时数据业务整形系统的操作。

在图3中的阶段310,网络接口驱动器能够接收由应用所生成并且转发的第一数据分组集合,以由网卡传输。例如,参见图7a,网络接口驱动器164接收由应用150d所生成并且转发的一个数据分组集合,以用于网卡168的传输。在图7a中所示的示例中,应用150d按照连续顺序来发送第四流中与描述符v1、v2以及v3相对应的三个分组。相同的应用150d按照连续顺序来发送第五流中与描述符w1、w2以及w3相对应的三个分组。

在图3中的阶段320,网络接口驱动器能够将与所接收的第一数据分组集合相关联的描述符存储在主传输队列161中。在某些实施方式中,网络接口驱动器164按照应用150d发送分组的顺序将与来自每个流的数据分组相关联的描述符写入主传输队列161。例如,如在图7a中所示,网络接口驱动器164接收来自应用150d的六个数据分组并且将与分组相关联的描述符(例如,描述符w1、w2、v1、v2、v3、w3)写入主传输队列161,以用于经由网卡168来传输分组。网络接口驱动器164从应用150d接收第四和第五流的分组,并且按照传送他们的顺序(例如,w1,接着w2,接着v1,接着v2,接着v3,接着w3)将对应的描述符(例如,对于第四流,v1、v2、v3;以及对于第五流,w1、w2、w3)写入主传输队列161。在某些实施方式中,在主传输队列中,不同流的分组能够被交织,同时维持每个流中的分组的接收顺序。例如,在图7a中所示的示例中,在主传输队列中,不同流的分组被交织(即,按照w1、w2、v1、v2、v3、w3的顺序),同时维持每个流中的分组的接收顺序(例如,对于第四流,维持v1->v2-v3的顺序;以及,对于第五流,维持w1->w2->w3的顺序)。

在图3中的阶段330,网络接口驱动器能够将与所接收的第一数据分组集合相关联的描述符(例如,w1、w2、v1、v2、v3、w3)传递到数据业务整形模块166。

参见图4,在阶段410,数据业务整形模块维持多个业务整形队列并且从主传输队列接收由网络接口驱动器传递的数据分组的描述符。参见图7a和7b,响应于网络接口驱动器164将与所接收的数据分组相关联的描述符传递到数据业务整形模块166(例如,w1、w2、v1、v2、v3、以及w3),数据业务整形模块166从主传输队列161接收所传递的数据分组的描述符。

在图4中的阶段420,数据业务整形模块对与所接收的描述符相关联的数据分组进行分类。在某些实施方式中,例如如在图7b中所示,数据业务整形模块166基于用于将每个流的特性映射到对应的业务整形队列的分类规则集合来对与所接收的描述符相关联的数据分组进行分类。

在图4中的阶段430,数据业务整形模块能够确定网卡对与所接收的第一描述符相关联的第一数据分组的传输是否将被延迟。如果分组的传输导致将其指派给已经存储有未发送分组(或其描述符)的业务整形队列,则延迟分组的传输。

在图4中的阶段440,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输将被延迟,数据业务整形模块从主传输队列中移除与第一数据分组相关联的第一描述符,并且基于分类的结果在对应的业务整形队列中存储第一描述符。例如,参见图7a和7c,响应于确定网卡168对与第五流的描述符w1和w2相关联的数据分组的传输将被延迟,数据业务整形模块166从主传输队列161中移除描述符w1和w2,并且将描述符w1和w2存储在业务整形队列163中。

在图4中的阶段450,数据业务整形模块使得网卡根据与相应的业务整形队列相关联的传输速率规则来传送与存储在业务整形队列中的描述符相关联的数据分组。例如,参见图7b-7d,数据业务整形模块166使得网卡168根据与业务整形队列163相关联的传输速率规则来按照延迟方式传送与存储在业务整形队列163中的描述符w1、w2以及w3相关联的数据分组。

在图4中的阶段460,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输不会被延迟,数据业务整形模块能够使得网卡立即传送与存储在业务整形队列中的描述符相关联的数据分组。例如,如果对数据分组进行分类以使得将其指派给具有允许无限制的传输速率的传输速率规则的业务整形队列并且队列为空,则可以立即在没有延迟的情况下传送数据分组。与描述符v1、v2和v3相关联的分组如附图7a-7d中所示示例那样处理。

在图4中的阶段470,数据业务整形模块能够向网络接口驱动器通知对数据分组的成功传输。例如,参见图7c,响应于经由网卡168(立即)成功完成与描述符v1、v2以及v3相关联的数据分组的传输,数据业务整形模块166向网络接口驱动器164通知对数据分组的成功传输。在某些实施方式中,如在图7c中所示,通过针对每个分组来转发单独的传输完成消息到网络接口驱动器164,数据业务整形模块166能够单独地向网络接口驱动器164通知与描述符v1、v2以及v3相关联的数据分组中的每个数据分组的成功传输。

对于延迟的传输,能够生成并且转发类似的通信。例如,参见图7d,响应于经由网卡168(延迟)成功完成与描述符w1、w2以及w3相关联的数据分组的传输,数据业务整形模块166向网络接口驱动器164通知对数据分组的成功传输。

在图5中的阶段510,网络接口驱动器确定网卡是否成功传送所接收的第一分组集合中的分组。例如,参见图7c,响应于网卡168成功完成与描述符v1、v2以及v3相关联的数据分组的传输,数据业务整形模块166通过通信单个消息或多个消息向网络接口驱动器164通知对数据分组的成功传输。基于来自数据业务整形模块166的对数据分组的成功传输的通知,网络接口驱动器164确定网卡168成功传送所接收的分组中的每个分组。

在图5中的阶段520,响应于网络接口驱动器确定成功传送所接收的第一分组集合中的分组,在转发附加数据分组到网络接口驱动器之前,网络接口驱动器将分组传输完成消息通信到等待接收来自网络接口驱动器的分组传输完成消息的应用。例如,参见图7c,响应于确定网卡168成功传送来源于应用150d发送的第四流中与描述符v1相关联的分组,网络接口驱动器164将与描述符v1相对应的分组传输完成消息167(例如,图7c中的m-v1)通信到应用150d。类似地,响应于确定网卡168成功传送来源于应用150d发送的第四流中与描述符v2和v3相关联的分组,网络接口驱动器164将与描述符v2和v3相对应的两个分组传输完成消息167(例如,图7c中的m-v2和m-v3)通信到应用150d。在某些实施方式中,应用150d能够被配置为在转发附加数据分组到网络接口驱动器164之前等待接收来自网络接口驱动器164的分组传输完成消息。在某些实施方式中,应用150d中的每一个应用能够被配置为在转发相同流中的附加数据分组到网络接口驱动器164之前等待接收来自网络接口驱动器164的针对特定流中的数据分组的传输完成消息。例如,如在图7c中所示,应用150d等待接收来自网络接口驱动器164的第三流中与描述符v1相对应的数据分组的传输完成消息。参见图7d,响应于应用150d接收与描述符v1相对应的传输完成消息,应用150d将相同的第四流中的附加数据分组(例如,如图7d中所示的与描述符v4和v5相对应的数据分组)转发到网络接口驱动器164。按照这一方式,通过仅在其接收指示网卡168传送相同流中的分组的分组传输完成消息时才发送附加分组到网络接口驱动器164,应用150d能够在主传输队列中针对每个流维持少量的分组(例如,1或2或3个分组)。

参见图7a-7d,通常,网络业务属于多个流(flow)或流(stream)(例如,第四流中与描述符v1、v2、v3相对应的分组,以及第五流中与w1、w2、w3相对应的分组)。每个流(flow)/流(stream)可以属于特定的应用(例如,应用150d)或者去往特定的远程位置。例如,多个流(flow)/流(stream)属于相同的应用(例如,图7a-7d中的应用150d)或者属于不同的应用(例如,图6a-6d中的应用150a-150c)。在任意给定时间,网络设备可以处理成百或成千或成亿的不同的流(flow)/流(stream),并且有时,可能需要放慢针对特定目标的业务或针对特定应用的业务。参见图7a-7d,在某些实施方式中,通过附加与流(flow)/流(stream)相对应的队列(例如,业务整形队列162和163)并且放慢通过相同的队列发送的所有的业务(例如,放慢通过业务整形队列163发送的与描述符w1、w2、w3相关联的所有的分组),数据业务整形模块166能够在没有队头阻塞的情况下独立地对从相同的应用150d发送的不同的流(flow)/流(stream)进行速率限制或业务整形。使用这一配置,无论应用如何将流放到那些队列上(例如,从对应的不同的应用接收多个流,如在图6a-6d中所示,或者,从相同的应用接收多个流,如在图7a-7d中所示),都能够在不产生队头阻塞或放弃任何分组的情况下选择性地放慢流,并且不需要每个应用知晓从每个应用发送的业务如何能够被分类以及业务整形。

以下还参照图8a-8c来描述图3-5中的流程图中所示的方法,图8a-8c为表示根据某些实施方式的数据业务整形系统的操作示例的框图。在图8a-8c中,使用与图6a-6d相同的附图标记,并且省略相同的描述。图8a-8c示出了当主传输队列161为主传输队列161a-161c的集合时数据业务整形系统的操作。例如,主传输队列161能够为在多队列nic中实现的多个队列。在某些实施方式中,主传输队列161a-161c的集合的数目小于速率限制器或业务整形队列162a-162d的数目。例如,为了对成千上万的流(flow)或流(stream)进行整形,网络设备110能够具有10~32个硬件队列,同时具有安装在其中的众多更多的业务整形队列以对成千上万的流进行整形。

在图3中的阶段310,网络接口驱动器能够接收由应用150所生成并且转发的一个数据分组集合,以由网卡传输。例如,参见图8a,网络接口驱动器164接收由应用150a-150c所生成并且转发的一个数据分组集合,以由网卡168传输。在图8a中所示的示例中,应用150a按照连续的顺序来发送第一流中的与描述符s1、s2以及s3相对应的三个分组。应用150b按照连续的顺序来发送第二流中的与描述符t1、t2以及t3相对应的三个分组。应用150c发送第三流中的与描述符u1和u3相对应的两个分组。在某些实施方式中,网络接口驱动器164按照应用150发送分组的顺序来接收数据分组(例如,t1,接着u1,接着t2,接着s1,接着u2,接着s2,接着s3,接着t3)。

在图3中的阶段320,网络接口驱动器能够将与所接收的第一数据分组集合相关联的描述符存储在主传输队列161a-161c的集合中。在某些实施方式中,网络接口驱动器164为每个所接收的数据分组随机选择主传输队列161a-161c中的一个,并且将对应的描述符写入主传输队列161中的所选择的传输队列中。例如,参见图8a,网络接口驱动器164将描述符t1、s1以及s3(按照t1、s1以及s3的顺序)写入主传输队列161a,将描述符u1、t2以及u2(按照u1、t2以及u2的顺序)写入主传输队列161b,以及将描述符t2、s2以及t3(按照s2和t3的顺序)写入主传输队列161c。在某些实施方式中,在每个主传输队列中,不同的流的分组能够被交织,同时维持每个流中的分组的接收顺序。例如,在图8a中所示的示例中,在主传输队列161a中,不同的流的分组被交织(即,按照t1、s1、s3的顺序),同时维持每个流中的分组的接收顺序(例如,对于第三流,维持s1->s3的顺序)。

在图3中的阶段330,网络接口驱动器164能够将与所接收的第一数据分组集合相关联并且存储在每个主传输队列中的描述符(例如,主传输队列161a中存储的t1、s1、s3)传递到数据业务整形模块166。

参见图4,在阶段410,数据业务整形模块维持多个业务整形队列并且从主传输队列161a-161c中的每个接收由网络接口驱动器所传递的数据分组的描述符。参见图8a和8b,响应于网络接口驱动器164将与所接收的数据分组相关联的描述符传递到数据业务整形模块166,数据业务整形模块166从主传输队列161a接收数据分组的描述符(例如,描述符t1、s1、s3),从主传输队列161b接收数据分组的描述符(例如,描述符u1、t2、u2),以及从主传输队列161c接收数据分组的描述符(例如,描述符s2、t3)。在某些实施方式中,数据业务整形模块维持多个业务整形队列并且从每个主传输队列接收网络接口驱动器所传递的数据分组的描述符。例如,参见图8a-8c,数据业务整形模块166维持多个业务整形队列(例如,业务整形队列162a-162d)。

在图4中的阶段420,数据业务整形模块166对与来自每个主传输队列的所接收的描述符相关联的数据分组进行分类。在阶段430,数据业务整形模块166能够确定网卡对与所接收的第一描述符相关联的第一数据分组的传输是否将被延迟。如果其分类导致其被指派给已经存储有未发送的分组(或其描述符),分组的传输被延迟。

在图4中的阶段440,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输将被延迟,数据业务整形模块从每个主传输队列中移除与第一数据分组相关联的第一描述符,并且基于分类的结果将第一描述符存储在对应的业务整形队列中。例如,参见图8a和8b,对于主传输队列161a,数据业务整形模块确定网卡168对与存储在主传输队列161a中的描述符t1、s1、s3相关联的数据分组的传输将被延迟。响应于确定网卡168对与第二流的描述符t1相关联的数据分组的传输将被延迟,数据业务整形模块166从主传输队列161a中移除描述符t1,并且将描述符t1存储在业务整形队列162c中。类似地,数据业务整形模块166从主传输队列161a中移除第一流的描述符s1并且将描述符s1存储在业务整形队列162b中。数据业务整形模块166还从主传输队列161a中移除描述符s3并且将描述符s3存储在业务整形队列162b中。按照类似的方式,如在图8a和8b中所示,对于主传输队列161b,数据业务整形模块166从主传输队列161b中移除第三流的描述符u1并且将描述符u1存储在业务整形队列162a中,从主传输队列161b中移除第二流的描述符t2并且将描述符t2存储在业务整形队列162c中,以及从主传输队列161b中移除第三流的描述符u2并且将描述符u2存储在业务整形队列162a中。按照类似的方式,如在图8a和8b中所示,对于主传输队列161c,数据业务整形模块166从主传输队列161c中移除第一流的描述符s2并且将描述符s2存储在业务整形队列162b中,以及从主传输队列161c中移除第二流的描述符t3并且将描述符t3存储在业务整形队列162c中。

在图4中的阶段450,数据业务整形模块使得网卡根据与相应的业务整形队列相关联的传输速率规则来传送与存储在业务整形队列中的描述符相关联的数据分组。例如,参见图8b-8c,数据业务整形模块166使得网卡168根据与业务整形队列162b相关联的传输速率规则来按照延迟方式传送与存储在业务整形队列162b中的描述符s1、s2以及s3相关联的数据分组。数据业务整形模块166还能够使得网卡168根据与业务整形队列162c相关联的传输速率规则来按照延迟方式传送与存储在业务整形队列162c中的描述符t1、t2以及t3相关联的数据分组。

在图4中的阶段460,如果数据业务整形模块确定网卡对与所接收的第一描述符相关联的第一数据分组的传输不会被延迟,数据业务整形模块能够使得网卡立即传送与存储在业务整形队列中的描述符相关联的数据分组。例如,如果对数据分组进行分类以使得将其指派给具有允许无限制的传输速率的传输速率规则的业务整形队列并且队列为空,则可以在没有延迟的情况下立即传送数据分组。按照图8a-8c中所示的示例来处理与描述符u1和u2相关联的分组。

在图4中的阶段470,数据业务整形模块能够向网络接口驱动器通知对数据分组的成功传输。例如,参见图8b和8c,响应于经由网卡168(立即)成功完成与描述符u1和u2相关联的数据分组的传输,数据业务整形模块166向网络接口驱动器164通知对数据分组的成功传输。例如,参见图8b和8c,响应于经由网卡168来(延迟)成功完成与描述符t1、s1、t2、t3以及s3相关联的数据分组的传输,数据业务整形模块166向网络接口驱动器164通知对数据分组的成功传输。

参见图5,在阶段510,网络接口驱动器确定网卡是否成功传送所接收的第一分组集合中的分组。

在阶段520,响应于网络接口驱动器确定成功传送所接收的第一分组集合中的分组,在转发附加数据分组到网络接口驱动器之前,网络接口驱动器将分组传输完成消息通信到等待接收来自网络接口驱动器的分组传输完成消息的应用。例如,参见图8c,响应于确定网卡168成功传送来源于应用150c发送的第三流中与描述符u1相关联的分组,网络接口驱动器164将与描述符u1相对应的分组传输完成消息167(例如,图8c中的m-u1)通信到应用150c。类似地,响应于确定网卡168成功传送来源于应用150c发送的第三流中与描述符u2相关联的分组,网络接口驱动器164将与描述符u2相对应的分组传输完成消息167(例如,图8c中的m-u2)通信到应用150c。类似地,在某些实施方式中,响应于从数据业务整形模块166接收指示成功传输与描述符t1、s1、t2、s2、t3以及s3相关联的数据分组的消息(未示出),网络接口驱动器164能够生成六个单独的传输完成消息(例如,图8c中的m-t1、m-s1、m-t2、m-s2、m-t3以及m-s3),并且按照成功传输数据分组的顺序(例如,按照t1、s1、t2、s2、t3以及s3的顺序)来将每个消息通信到对应的分组源。

参见图8c,在某些实施方式中,应用150中的每个应用能够被配置为在将附加数据分组转发到网络接口驱动器164之前等待接收来自网络接口驱动器164的分组传输完成消息。在某些实施方式中,应用150中的每个应用能够被配置为在将相同的流中的附加数据分组转发到网络接口驱动器164之前等待接收来自网络接口驱动器164的针对特定流中的数据分组的传输完成消息。

参见图8a-8c,在某些实施方式中,应用150或网络接口驱动器164可以按照配置他们的任意方式在主传输队列161a-161c的集合上散布流(flow)/流(stream)以及他们对应的分组(例如,在队列上随机散布,或者,在队列上循环散布)。在某些实施方式中,应用150或网络接口驱动器164可以按照相同的方式在该主传输队列的集合上散布流(flow)/流(stream)以及他们的对应的分组,而不论主传输队列的数目。在某些实施方式中,应用150或网络接口驱动器164被配置成不知晓数据业务整形模块166、业务整形队列162a-162d、以及在那些队列中如何对业务进行分类的实施方式细节。例如,来自在虚拟机中执行的应用的业务能够被整形或限制速率,而没有队头阻塞并且不用向虚拟机的管理员通知业务整形队列以及每个队列上的分类规则的细节。利用图8a-8c中图示的配置,分组能够尽快离开主传输队列并且在分组离开主传输队列之后能够被分类在业务整形队列中,而不返回完成消息。在某些实施方式中,如在图8a-8c中所示,不返回完成消息,直到分组离开业务整形队列,使得完成消息被无序返回,即,按照与将分组保存在主传输队列中的顺序不同的顺序,并且不在fifo中,由此允许发送更快的流的应用发送比发送更慢的流的另一应用更多的附加分组。参见图8a-8c,其中数据业务整形模块166在具有多个主传输队列161a-161c的系统中实现,网络接口驱动器164能够返回“无序”的完成消息(例如,完成消息m-u1、m-u2、m-t2的顺序不同于将对应的分组保存在主传输队列161b中的顺序,即,u1、t2、u2;参见图8a和8c),指示每个分组是基于预定的队列指派规则而放在正确的队列中,还是分组业务“随机”散布在队列上。

图9为示例计算系统140的框图。按照说明性的实施方式,示例计算系统140适于实现本文中所描述的计算机化的组件中使用。按照概述,计算系统140包括用于根据指令来执行动作的至少一个处理器148,以及用于存储指令和数据的一个或多个存储器设备144或149。图示的示例计算系统140包括经由总线142来与存储器144通信的一个或多个处理器148,具有用于连接到网络(未示出)的网络接口端口146的至少一个网络接口控制器143,以及其他组件145(例如,输入/输出(“i/o”)组件147)。通常,处理器148将执行从存储器所接收的指令。所图示的处理器148并入或直接连接到高速缓存存储器149。在某些实例中,从存储器144读取指令到高速缓存存储器149中并且由处理器148通过高速缓存存储器149执行。

更详细地,处理器148可以为处理指令的任意逻辑电路,例如,从存储器144或高速缓存149中提取的指令。在众多实施方式中,处理器148为微处理器单元或专用处理器。计算设备140可以基于任意处理器、或处理器集合,其能够如本文中所述的操作。处理器148可以为单核或多核处理器。处理器148可以为多个不同的处理器。

存储器144可以为适于存储计算机可读数据的任意设备。存储器144可以为具有固定储存器的设备或者用于读取可移动存储介质的设备。示例包括以下中的所有形式,非易失性存储器、介质和存储器设备、半导体存储器设备(例如,eprom、eeprom、sdram、以及闪存设备)、磁盘、磁光盘、以及光盘(例如,cdrom、dvd-rom、或蓝光盘)。计算系统140可以具有任意数目的存储器设备144。

高速缓存存储器149通常是为了快速读取时间而放置在非常接近处理器148的计算机存储器的形式。在某些实施方式中,高速缓存存储器149为处理器148的一部分或者与其在相同的芯片上。在某些实施方式中,存在多级高速缓存存储器149,例如,l2和l3高速缓存层。

网络接口控制器143经由网络接口146(有时称作网络接口端口)来管理数据交换。网络接口控制器143为网络通信而处理osi模型的物理层和数据链路层。在某些实施方式中,网络接口控制器的任务中的某些任务由处理器148中的一个或多个来处理。在某些实施方式中,网络接口控制器143为处理器148的一部分。在某些实施方式中,计算系统140具有由单个控制器143控制的多个网络接口146。在某些实施方式中,计算系统140具有多个网络接口控制器143。在某些实施方式中,每个网络接口146为物理网络链路(例如,5类以太网链路)的连接点。在某些实施方式中,网络接口控制器143支持无线网络连接并且接口端口146为无线(例如,无线电)接收机/传送机(例如,用于ieee802.11协议、近场通信“nfc”、蓝牙、ant、或任意其他无线协议中的任意者)。在某些实施方式中,网络接口控制器143实现诸如以太网的一个或多个网络协议。通常,计算设备140通过网络接口146经由物理或无线链路来与其他计算设备交换数据。网络接口146可以直接链接到另一设备,或者经由例如为网络设备(诸如集线器、网桥、交换机、或路由器)的中间设备来链接到另一设备,将计算设备140连接到诸如互联网的数据网络。

计算系统140可以包括或者提供用于一个或多个输入或输出(“i/o”)设备的接口。输入设备包括但不限于键盘、麦克风、触摸屏、脚踏开关、传感器、midi设备、以及诸如鼠标或轨迹球的指针设备。输出设备包括但不限于视频显示器、扬声器、点字终端、灯、midi设备、以及2维或3维打印机。

其他组件145可以包括i/o接口、外部串行设备端口、以及任意附加的协同处理器。例如,计算系统140可以包括接口(例如,通用串行总线(usb)接口),以用于连接输入设备、输出设备、或附加的存储器设备(例如,便携式闪驱或外部介质驱动)。在某些实施方式中,计算设备140包括诸如协同处理器的附加设备145,例如,数学协同处理器能够辅助处理器148进行高准确性或复杂的计算。

本说明书中描述的主题以及操作的实施方式能够在数字电子电路中、或者嵌入为有形介质、固件、或硬件的计算机软件中实现,包括本说明书中公开的结构及其结构上的等价物、或者他们中的一个或多个的组合。本说明书中描述的主题的实施方式能够被实现为嵌入在有形介质上的一个或多个计算机程序,即,编码在一个或多个计算机存储介质上以由数据处理装置执行或者用于控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质能够为计算机可读存储设备、计算机可读存储基底、随机或顺序存取存储器阵列或设备、或他们中的一个或多个的组合,或者包括在其中。计算机存储介质还能够为一个或多个单独的组件或介质(例如,多cd、盘、或其他存储设备),或者包括在其中。计算机存储介质还可以为有形的以及非暂时性的。

本说明书中描述的操作能够被实现为数据处理装置对存储在一个或多个计算机可读存储设备上的数据或者从其他源接收的数据执行的操作。

计算机程序(还被称为程序、软件、软件应用、脚本、或代码)能够以任意形式的编程语言来编写,包括经编译或解释型的语言、声明或过程语言,并且其能够以任意形式来部署,包括独立程序或者包括模块、组件、子例程、对象、或适于在计算环境中使用的其他单元。计算机程序可以但不需要与文件系统中的文件相对应。程序能够被存储在托管其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),能够存储在专用于所讨论的程序的单个文件中,或者能够存储在多个协同文件中(例如,存储一个或多个模块、子程序、或部分代码的文件)。能够部署计算机程序以在一个计算机上或多个计算机上执行,所述一个计算机或多个计算机位于一个地点或者分布在多个地点并且由通信网络互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互连网络(例如,互联网)、以及对等网络(例如,对等点对点网络)。

本说明书中描述的过程和逻辑流程能够由一个或多个可编程处理器执行,所述一个或多个可编程处理器执行一个或多个计算机程序以通过操作输入数据并且生成输出来执行动作。过程和逻辑流程还能够由同样能够实现为专用逻辑电路的装置来执行,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。这样的特殊用途电路可以称作计算机处理器,即使其不是通用处理器。

虽然本说明书包含众多特定的实施方式细节,但是,不应该将这些解释为限制可以要求保护的任意发明的范围,而是应该解释为对特定于特定发明的特定实施方式的特征的描述。在单独的实施方式的场境中在本说明书中描述的某些特征在单个实施方式中还能够以组合的方式来实现。相反地,在单个实施方式的场境中描述的各种特征还能够分别在多个实施方式中实现或者在任意合适的子组合中实现。此外,尽管可以如上地将特征描述为以某些组合来起作用并且甚至初始地这样要求,来自要求保护的组合的一个或多个特征能够在某些情况下从组合中删除,并且要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然按照特定顺序在附图中描绘了各操作,不应该将这理解为要求这样的操作按照所示的特定顺序或连续顺序来执行,或者理解为要求执行所有图示的操作,以达到期望的结果。在某些情形下,多任务以及并行处理可以是有利的。此外,以上描述的实施方式中的各种系统组件的分离不应该被理解为在所有的实施方式中要求这样的分离,并且应该理解,所描述的程序组件和系统通常能够一起集成在单个软件产品中或者封装成多个软件产品。

对“或”的引用可以解释为包括性的,使得使用“或”描述的任意术语可以指示所描述的术语中的单个、多个、以及全部中的任意者。标记“第一”、“第二”、“第三”等等不一定意指指示排序并且通常仅用于在相同或类似的项或元素之间进行区分。

因而,已经描述了主题的特定实施方式。其他实施方式在以下权利要求的范围内。在某些情况下,在权利要求中记载的动作能够按照不同的顺序来执行并且仍然达到期望的结果。除此之外,在所附附图中描绘的过程不一定要求所示的特定顺序、或者按照连续的顺序,以达到期望的结果。在某些实施方式中,可以利用多任务或并行处理。

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