一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

应用级网络排队的制作方法

2022-06-12 00:18:23 来源:中国专利 TAG:

应用级网络排队
1.分案申请说明
2.本技术是申请日为2016年11月25日、申请号为201611054171.8、题为“应用级网络排队”的中国发明专利申请的分案申请。
技术领域
3.本公开在总体上涉及计算机联网领域,并且更具体地但不排他地涉及用于应用级网络排队的系统和方法。


背景技术:

4.繁忙轮询,也称作“繁忙等待”或“回转(spinning)”,是这样一种技术:其中进程反复地监视条件,以查看该条件是否已成真。例如,如果该进程需要输入,则它可以不停地循环,观察输入缓存以查看是否数据已变得可用。其它用途可能是:查看键是否已被按压,或者锁是否可用。另一用途是创建已知的时延,例如通过在规定数量的毫秒中“不做任何事情”,但是处理器速度的变化可能使得这不完全可靠。
5.繁忙轮询可能是一种有用的技术,尤其是在低层级(low-level)编程中——其中受中断驱动的处理(interrupt-driven processing)可能是低效或繁琐的。


技术实现要素:

6.在例子中,公开了一种计算装置,具有:网络接口,其被配置为提供多个队列;应用;以及一个或多个逻辑元件,其包括排队引擎,所述排队引擎用于:检查传入分组(incoming packet);以及基于分类符(classifier)将所述传入分组分配给所述应用的专用队列(dedicated queue)。还公开了一种提供排队引擎的方法,以及一个或多个有形的非瞬态计算机可读存储介质,其上存储有用于提供排队引擎的可执行指令。
附图说明
7.当结合附图阅读时,从下文的具体实施方式中得出对本公开的最佳理解。要强调的是,根据业内的标准实践,各个特征不必按比例绘制,并且仅用于说明目的。在明确地或隐含地示出比例的情况下,其只是提供一个说明性的例子。在其它实施例中,为了论述的清楚,可以随意地增加或减小各个特征的尺寸。
8.图1是根据本技术文档的一个或多个例子的安全使能网络的框图。
9.图2是根据本技术文档的一个或多个例子的客户端设备的框图。
10.图3是根据本技术文档的一个或多个例子的服务器设备的框图。
11.图4是根据本技术文档的一个或多个例子的网络排队系统的框图。
12.图5是根据本技术文档的一个或多个例子的网络排队系统的框图。
13.图6是根据本技术文档的一个或多个例子的开放系统互连模型(osi)七层堆栈的框图。
14.图7是根据本技术文档的一个或多个例子的通过网络设备执行的方法的流程图。
15.图8是根据本技术文档的一个或多个例子的通过应用执行的方法的流程图。
16.图9是根据本技术文档的一个或多个例子的通过应用执行的方法的流程图。
17.图10是根据本技术文档的一个或多个例子的传输操作的流程图。
具体实施方式
18.以下公开提供了用于实现本公开的不同特征的多个不同实施例或例子。下文描述部件和布置的具体例子,以简化本公开。当然,这些只是例子,并非旨在是限制性的。此外,本公开可以在各个例子中重复参考数字和/或字母。该重复是为了简单和清晰,并且其自身不决定所讨论的各个实施例和/或配置之间的关系。不同实施例可以具有不同的优点,并且不必须要求任意实施例的特定优点。
19.例如,当代数据中心层次(tier)可以包括web服务器和数据缓存服务器,具有“大数据”后端,如“hadoop”软件框架。这些可以使用叶脊架构(leaf spine architecture)来联网的。在一个例子中,这些层就其本身和本性而言是分布式系统,并通常服务于成千上万的并发连接,将来预期连接的数量将会随着端节点上核心数量的增加而增加。
20.一些数据中心可以具有目标性能确定性(target performance determinism),例如满足合同要求或作为竞争优势。在该环境中为分布式系统应用提供期望的性能确定性(例如,99.99百分位的延迟,以及始终如一的吞吐量和cpu利用率)可能是一种挑战。在许多情况下,联网接口(networking interface)是对该问题的主要贡献者之一,因为其可能成为繁忙的高端服务器上的应用性能的瓶颈。
21.本技术文档描述了用于应用级网络排队(alnq)的系统和方法,其以可缩放(scalable)方式解决了网络接口瓶颈。在alnq实施例中,提供了改进的网络接口卡(nic),并且还可以调整现有的网络堆栈,例如开放系统互联(osi)或传输控制协议/互联网协议(tcp/ip)堆栈。替代地,在一些实施例中,可以整体或部分绕开主机网络堆栈,并且可以运行对堆栈的并行卸载或加载。
22.许多nic将传入业务量划分成多个单独的“队列”,例如基于散列算法将业务量进行负载平衡到队列,所述散列算法基于将源媒体访问控制地址(mac)、目的地mac和/或协议包括在内的套接字元组(socket tuple)。alnq解决如下问题,例如应用可能希望具有它们自己的“可见”队列,以及具有利用操作系统的联网堆栈的负载平衡控制。alnq通过以下方式使其成为可能:在nic上创建可缩放的应用专用队列,所述队列具有套接字层可见性,以及应用于内核事件多路复用接口的关联建立(affinitization)和唤醒算法,如“epoll”和“kqueue”。在所选的实施例中,这导致较低的和确定性的平均延迟和尾延迟,以及在延迟容差边界内的较高吞吐量,这有助于缩放分布式系统。
23.在实施例中,alnq关于操控业务量到应用和输送低延迟通信而采用自顶向下的视图。从联网角度看,应用可以在系统中通过端口号区分它们自己。例如,http守护进程可以监听端口80,而电子邮件守护进程可以监听端口25。alnq可以使用端口号(以及其它相关识别信息)作为将业务量分配给队列(即,应用专用队列)的主要关键字(primary key)。进入这些队列的业务量可以经由现有的方案进行复用,如用于基于散列的负载平衡的“接收侧缩放”(rss),或用于确定匹配的以太网流量引导器。
24.可以将关于分配队列的信息作为不透明标识符传递给应用。然后应用可以使用该标识符用于对准暗示(alignment hint)。例如,使用epoll的应用可以将对文件描述符进行处置的应用线程与队列对准,从而将访问流线化并且减轻来自与套接字和协议相关的数据结构的缓存行反弹的影响(streamlining access and mitigating effects from cache line bouncing of socket and protocol related data structures)。还可以对中断进行调谐以更好地匹配应用行为,因为这些队列可以分布在应用之间而不是在核心之间,这可以使得它们在应用之间共享。因此,作为贡献的低延迟可以应用于整个应用,并因此应用于队列集合而不是应用于开放(open)的套接字(或流)。该分离还允许用于在执行协议处理之前进行唤醒的直接应用信令方案(direct application signaling schemes)。
25.有利地,alnq通过不是按照接口或虚拟套接字接口(vsi)也不是通过vm或业务量类别分配队列、而是按照端口号分配队列,来操控nic业务,其中端口号起到应用标识符的作用。从联网角度看,端口号可以用作有用的原语,用于识别特定机器上的应用。注意,应用标识符可以是除了端口号以外的任意适当的应用标识符。
26.此外有利地,alnq可以使用已知的基于散列的方案(例如,rss)或精确匹配方案(例如,流量引导器)将分配给应用/端口号的队列进行负载平衡。
27.此外有利地,alnq可以将队列信息作为令牌传递给应用,例如经由对套接字接口选项的增强(enhancement)。
28.此外有利地,应用可以使用这些令牌将线程与队列对准。
29.此外有利地,早早地对应用专用业务量进行分离,提供了一系列的用于关联建立的选项(affinitization choices),例如利用现有的低延迟方法,如繁忙轮询套接字(bps),提供了将队列可缩放地与应用线程对准,或者应用服务质量或安全策略。
30.此外有利地,alnq使能了中断信令方案,其中中断直接用信号通知睡眠中的应用线程,该应用线程然后可以从设备队列中拉取数据。
31.现在将结合附图更具体地描述应用级网络排队的系统和方法。应该注意,在附图中,特定的附图标记可以重复,以表示跨附图整体一致或基本一致的特定设备或框。然而,这并不暗示在所公开的各个实施例之间的任意特定关系。在某些例子中,可以通过特定附图标记(微件10)指代一类元件,同时所述类的单个种类或例子可以由连字符数字(“第一特定微件10-1”和“第二特定微件10-2”)表示。
32.图1是根据本技术文档的一个或多个例子的安全企业100的网络级框图。在该例子中,安全企业100可以配置为向一个或多个顾客162提供服务或数据,所述顾客162可以经由外部网络172访问信息或服务。这可能要求安全企业100至少部分地向外部世界披露特定服务和网络,从而创建逻辑安全孔径。
33.在安全企业中,一个或多个用户120操作一个或多个客户端设备110。每个设备可以包括适当的操作系统,例如microsoft windows、linux、android、mac osx、apple ios、unix等。上述中的一些可以更通常地用于一种类型的设备上而非其它。例如,台式计算机或工程工作站更可能使用microsoft windows、linux、unix或mac osx中的一个。膝上型计算机通常是便携式的现成设备,其具有较少的定制选项,因此更可能运行microsoft windows或mac osx。移动设备更可能运行android或ios。然而,这些例子并非旨在是限制性的。
34.客户端设备110可以经由企业网络170通信地彼此耦合或耦合到其它网络资源。企
业网络170可以是基于一个或多个适当的网络协议运作的任意适当的网络或者一个或多个网络的组合,例如但不限于包括局域网、内联网、虚拟网络、广域网、无线网、蜂窝网或因特网(可选的经由代理、虚拟机或其它类似安全机制进行访问)。企业网络170还可以包括在例子中可以在工作负载群集142中被虚拟化的一个或多个服务器、防火墙、路由器、交换机、安全设备、抗病毒服务器或其它有用的网络设备。在该图示中,为了简单,企业网络170作为单个网络被示出;但是在一些实施例中,企业网络170可以包括大量网络,例如连接到互联网上的一个或多个企业内联网。企业网络170还可以经由外部网络172提供对外部网络(例如,互联网)的访问。外部网络172可以类似地是任意类型的网络。
35.工作负荷群集142例如可以作为在多个机架安装的刀片服务器上的超管理器中运行的虚拟群集被提供,或者作为物理服务器的群集被提供。工作负荷群集142可以在一个或多个超管理器中提供一个或多个服务器功能,或者一个或多个“微云”。例如,虚拟环境(例如,vcenter)可以提供定义多个“租户”的能力,每个租户在功能上与每个其它租户分离,并且每个租户用作单目的微云。每个微云可以服务于不同的功能,并可以包括多个不同风格的多个虚拟机(vm),包括有代理的和无代理的vm。
36.应该注意,还可以经由工作负荷群集142提供端点设备110的一些功能。例如,一个微云可以提供远程桌面超管理器,例如,citrix工作空间,其允许用户120操作端点110以远程登录到远程企业桌面并访问企业应用、工作空间和数据。在这种情况下,端点110可以是“瘦客户端”,例如google chromebook,其仅运行精简的操作系统,并仍向用户120提供对企业资源的有用访问。
37.配置为管理控制台140的一个或多个计算设备也可以在企业网络170上操作。管理控制台140可以向安全管理员150提供用户界面以定义企业安全策略,管理控制台140可以在企业网络170上并跨客户端设备110和工作负荷群集142强制执行。在例子中,管理控制台140可以运行服务器类操作系统,例如linux、unix或window server。在其它情况下,管理控制台140可以在台式类机器上或经由设置在工作负荷群集142中的vm作为web界面而被提供。
38.安全企业100可以跨企业边界104与外部网络172通信。企业边界104可以表示物理、逻辑或其它边界。外部网络172可以包括例如网站、服务器、网络协议和其它基于网络的服务。在另一例子中,安全企业100可以仅仅是家庭,假设父母是安全管理员150的角色。父母可能想要保护他们的孩子免受不期望的内容,例如但不限于,色情图像、广告软件、间谍软件、年龄不合适的内容、主张特定政治、宗教或社会运动的、或用于讨论非法或危险活动的论坛。在该情况下,父母可以执行安全管理员150的一些或全部职责。
39.工作负荷群集142可以配置为向客户端设备(例如客户端设备110和终端用户设备180)提供任意适当的网络服务。例如但不限于,工作负荷群集142可以是机架安装的云系统,其提供安全性和基础设施服务,例如但不限于,防火墙、防病毒、深度分组检测、负载平衡以及交换。工作负荷群集142还提供实质的网络服务,例如但不限于公司文件服务器、数据库文件系统、内联网服务器、或数据库服务器。企业用户120可以使用客户端设备110上的客户端应用112来经由企业网络170访问工作负荷群集142上的服务。
40.终端用户160还可以访问网络资源。终端用户160可以在终端用户设备180上操作终端用户应用162,并经由外部网络172和企业网络170访问工作负荷群集142。根据良好的
企业安全实践,安全企业100外部的网络可以从企业网络业务量隔离,例如通过在不同的子网络上放置企业业务量和外部业务量。
41.工作负荷群集142可以向外部终端用户160提供各种适当的网络服务,例如超文本传输协议(http)上的网站、简单邮件传输协议(smtp)上的电子邮件、经由文件传送协议(ftp)、安全ftp(sftp)的文件共享、或经由例如远程登录(telnet)或安全壳(ssh)的协议的虚拟壳。
42.注意,尽管在本文中通过非限制性例子将终端用户160和企业用户120公开为两个单独实体,但并不要求严格的分离。终端用户160还可以是企业用户,并可以经由远程客户端(诸如citirx)或远程桌面协议(rdp)访问企业资源。企业用户120还可以是访客用户,其具有少于对企业资源的完全访问。
43.为了通过图示提供简化例子,本技术文档将假设工作负荷群集142是具有一个或多个网络接口卡(nic)的单个工作负荷服务器142。然而,本文公开的方法可以被缩放到以任意适当方式配置的任意适当数量的服务器,例如,独立服务器、服务应用、操作多个协议的个体服务器、或在一个或多个物理设备上操作的多个虚拟服务器。
44.在该例子中,工作负荷服务器142托管在端口80上接收业务量的http web服务器和在端口25上接收业务量的smtp邮件服务器。工作负荷服务器142可以为与客户端设备的每个链接打开唯一的通信“套接字”或其它逻辑连接。因此,例如,如果100,000个用户(企业用户120或终端用户160或其任意组合)在给定时间访问网站,则100,000个http套接字将在端口80上打开。类似地,如果50,000个电子邮件用户访问电子邮件服务,则50,000个smtp套接字将在端口25打开。这些量仅为说明提供。较小的或独立的服务器可以具有更少的同时套接字打开,而大的、有人气的web服务器具有更多的套接字打开。
45.如在本技术文档中说明的,对于大量并发连接,排队可能成为相当大的挑战。在传统的“自底向上”的基于散列的排队(例如rss)的某些实施例中,分组从osi网络模型的较低层级开始被散列,这可能由于来自共享相同队列的其它应用的业务量而导致大量延迟。因此,本技术文档提供了用于提供应用级网络排队的系统和方法,以减少延迟并提高性能。在图4和图5中示出了示例性逻辑实施例,而在图7-9中示出了示例性方法。
46.图2是根据本技术文档的一个或多个例子的客户端设备200的框图。客户端设备200可以是任意适当的计算设备。在各个实施例中,通过非限制性例子,“计算设备”可以是或包括:计算机、工作站、服务器、大型机、虚拟机(不管是仿真的还是在“裸机”超管理器上)、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助理、膝上型计算机、蜂窝电话、ip电话、智能手机、平板计算机、可转换平板计算机、计算设备、网络设备、接收器、可穿戴计算机、手持计算器、或任意其它用于处理和通信数据的电子、微电子或微电机设备或装置。任意计算设备可以被指定为在网络上的主机。每个计算设备可以将自身称作“本地主机”,而在其外部的任意计算设备可以被指定为“远程主机”。
47.在特定实施例中,客户端设备110可以全都是客户端设备200的例子。
48.客户端设备200包括连接到存储器220上的处理器210,在其中存储有可执行指令,用于提供操作系统222以及客户端代理224的至少软件部分。客户端设备200的其它部件包括存储设备250、网络接口260以及外围接口240。该架构仅以举例方式提供,并且其旨在是非排他性且非限制性的。此外,公开的各个部分仅旨在是逻辑划分,并且不一定表示在物理
上分离的硬件和/或软件部件。某些计算设备例如在单个物理存储器设备中提供了主存储器220和存储设备250,而在其它情况下,存储器220和/或存储设备250在功能上跨多个物理设备分布。在虚拟机或超管理器的情况下,可以以在虚拟层上运行的软件或固件形式提供功能的全部或一部分,以提供所公开的逻辑功能。在其它例子中,例如网络接口260等设备可以只提供执行其逻辑操作必要的最小硬件接口,并可以依靠软件驱动器来提供额外的必要逻辑。因此,本文讨论的每个逻辑块广泛地旨在包括一个或多个逻辑元件,其被配置为并可用于提供所述块的所公开的逻辑操作。如本技术文档中通篇使用的,“逻辑元件”可以包括硬件、外部硬件(数字、模拟或混合信号)、软件、往复式软件、服务、驱动器、接口、部件、模块、算法、传感器、组件、固件、微代码、可编程逻辑、或可以协调以实现逻辑操作的对象。
49.在例子中,处理器210经由存储器总线270-3通信地耦合到存储器220,存储器总线270-3例如可以是直接存储器存取(dma)总线,但是其它存储器架构也是可以的,包括其中存储器220经由系统总线270-1或一些其它总线与处理器210通信的架构。处理器210可以经由系统总线270-1通信地耦合到其它设备上。如本技术文档中通篇使用的,“总线”包括任意有线或无线互连线、网络、连接、束、单总线、多总线、交叉开关网络、单级网络、多级网络、或者可操作以在计算设备的部件之间或在计算设备之间携带数据、信号或电力的其它传导介质。应该注意,这些用途仅通过非限制性例子公开,并且一些实施例可以省略一个或多个前述总线,而其它的可以采用额外的或不同的总线。
50.在各个例子中,“处理器”可以包括能够操作以执行指令的逻辑元件的任意组合,而不管其是从存储器加载还是直接以硬件实现的,包括例如但不限于微处理器、数字信号处理器、现场可编程门阵列、图形处理单元、可编程逻辑阵列、专用集成电路、或虚拟机处理器。在特定架构中,可以提供多核处理器,在该情况下,在合适时,处理器210可以被视为多核处理器的仅一个核心,或者可以被视为整个多核处理器。在一些实施例中,可以为专门的功能或支持功能提供一个或多个协同处理器。
51.在dma配置中,处理器210可以经由dma总线270-3(或其它类似的存储器互连)连接到存储器220上。为了简化该公开,存储器220公开为单个逻辑块,但是在物理实施例中,其可以包括任意适当的一种或多种易失性或非易失性存储器技术的一个或多个块,例如包括,ddr ram、sram、dram、缓存、l1或l2存储器、片上存储器、寄存器、闪存、rom、光介质、虚拟存储器区域、磁或磁带存储器等。在特定实施例中,存储器220可以包括相对低延迟的易失性主存储器,而存储设备250可以包括相对高延迟的非易失性存储器。然而,存储器220和存储设备250不需要是物理上分离的设备,并且在一些实施例中,可以简单地表示功能的逻辑分离。还应该注意的是,虽然通过非限制性例子公开了dma,但是dma不是与本技术文档相符合的唯一协议,并且其它存储器架构是可用的。
52.存储设备250可以是任意种类的存储器220,或者可以是单独的设备。存储设备250可以包括一个或多个非瞬态计算机可读介质,例如但不限于包括硬盘驱动器、固态驱动器、外部存储设备、独立磁盘冗余阵列(raid)、网络附接存储设备、光存储设备、磁带驱动、备份系统、云存储设备、或上述的任意组合。存储设备250可以是或包括一个或多个数据库或存储于其它配置中的数据,并可以包括操作系统(例如操作系统222)和客户端代理224的软件部分的存储副本。许多其它配置也是可以是,并且意图包含于本技术文档的广泛范围内。
53.可以提供网络接口260用于将客户端设备200通信地耦合到有线或无线网络,并且
可以是网络接口卡(nic)、主机结构接口(hfi)、或任意其它适当设备。在本技术文档中通篇使用的“网络”可以包括可操作以在计算设备内或之间交换数据或信息的任意通信平台,其例如但不限于包括:自组织局域网、为计算设备提供电子交互的能力的因特网架构、老电话系统(pots),该计算设备可以用来执行事务,在所述事务中通过人类操作员帮助或他们可以手动将数据键入到电话或其它适当的电子设备中,在系统中任意两个节点之间提供通信接口或进行交换的任意分组数据网络(pdn),或者任意局域网(lan)、城域网(man)、广域网(wan)、无线局域网(wlan)、虚拟专用网(vpn)、内联网、或促进网络或电话环境中的通信的任何其它适当的架构或系统。
54.在一个例子中,客户端代理224可操作以执行如在本技术文档中描述的计算机实现方法。客户端代理224可以包括一个或多个有形的非瞬态计算机可读介质,其上存储有可操作以指示处理器提供客户端代理224的可执行指令。如在本技术文档中通篇使用的,“引擎”包括一个或多个类似的或不同的种类的逻辑元件的任意组合,可操作用于并被配置为执行由引擎提供的一个或多个方法。因此,客户端代理224可以包括被配置为提供在本技术文档中公开的方法的一个或多个逻辑元件。在一些情况下,客户端代理224可以包括被设计为执行方法或其一部分的特殊集成电路,并还可以包括可用于指示处理器执行方法的软件指令。在一些情况下,客户端代理224可以作为“守护(daemon)”进程来运行。“守护进程”可以包括任意程序或一系列可执行指令,不管其是以硬件、软件、固件或以其任意组合来实现的,其作为后台进程、终止并驻留程序、服务、系统扩展、控制面板、启动过程、bios子例程、或在没有直接用户交互的情况下操作的任意类似程序来运行。在特定实施例中,守护进程(daemon process)可以通过在“驱动器空间”中以提升权限运行,或在保护环架构中的环0、1或2中运行。还应该注意,通过非限制性例子,客户端代理224还可以包括其它硬件和软件,包括配置文件、注册表条目、以及交互式的或用户模式的软件。
55.在一个例子中,客户端代理224包括存储于非瞬态介质上的可用于执行根据本技术文档的方法的可执行指令。在适当的时间,例如当启动客户端设备200时或在来自操作系统222或用户120的命令时,处理器210可以从存储设备250取回指令的副本,并将其加载到存储器220上。处理器210然后可以迭代地执行客户端代理224的指令以提供期望的方法。
56.客户端代理224可以为终端用户(例如,企业用户120或顾客160)提供接口和服务,以访问由服务器300提供的服务。例如,客户端代理224可以是或者包括web浏览器和电子邮件客户端,或者用于诸如文件传输协议(ftp)、telnet、安全壳(ssh)、网络时间协议(ntp)的程序或任意其它适当的基于网络的程序的客户端。
57.外围接口240可以配置为与任意辅助设备通过接口接合,所述辅助设备连接到客户端设备200但是不必是客户端设备200的核心架构的一部分。外围部件可以用于为客户端设备200提供扩展功能,并可以完全依赖或不依赖客户端设备200。在一些情况下,外围部件可以是有其自身权限(in its own right)的计算设备。外围部件可以包括输入和输出设备,通过非限制性例子,例如显示器、终端、打印机、键盘、鼠标、调制解调器、数据端口(例如,串行、并行、usb、火线等)、网络控制器、光学介质、外部存储设备、传感器、换能器、致动器、控制器、数据采集总线、摄像机、麦克风、扬声器、或外部存储设备。
58.在一个例子中,外围部件包括显示适配器242、音频驱动器244和输入/输出(i/o)驱动器246。显示适配器242可以配置为提供人类可读视觉输出,例如命令行接口(cli),或
图形桌面,例如microsoft windows、apple osx桌面或基于unix/linux x window系统的桌面。显示适配器242可以以任意适当格式提供输出,通过非限制性的例子,例如,同轴输出、合成视频、分量视频、vga或数字输出,例如dvi或hdmi。在一些例子中,显示适配器242可以包括硬件图形卡,其可以具有自己的存储器和自己的图形处理单元(gpu)。音频驱动器244可以提供用于可听声音的接口,并在一些例子中可以包括硬件声卡。通过非限制性例子,可以以模拟(例如3.5mm立体声插口)、分量(rca)立体声、或以数字音频格式(例如,s/pdie、aes3、aes47、hdmi、usb、蓝牙或wi-fi音频),来提供声音输出。
59.图3是根据本技术文档的一个或多个例子的服务器类设备300的框图。服务器300可以是任意适当的计算设备或装置,如结合图2描述的。一般而言,图2的定义和例子可以被认为同样地可应用于图3,除非另有特别说明。服务器300在这里单独描述以说明,在某些实施例中,根据本技术文档的逻辑操作可以沿着客户端-服务器模型进行划分,其中客户端设备200提供特定的本地化任务,而服务器300提供特定的其它集中化任务。在当代实践中,服务器300与客户端设备200相比更可能作为在计算群集上运行的“无头”vm被提供,或者作为孤立设备,但是这些配置不是必须的。
60.服务器300包括处理器310,处理器310可以包括多个核心,并且其可以连接到存储器320上,在存储器320内存储有可执行指令,所述可执行指令用于提供操作系统322以及提供服务器引擎324的至少软件部分。服务器300的其它部件包括存储设备350以及网络接口360。如图2中所描述的,每个逻辑块可以由一个或多个类似或不同元件提供。
61.在例子中,处理器310经由存储器总线370-3通信地耦合到存储器320,存储器总线370-3例如可以是直接存储器存取(dma)总线或其它适当的存储器互连。处理器310可以经由系统总线370-1通信地耦合到其它设备上。
62.处理器310可以在dma配置中经由dma总线370-3或经由任意其它适当的存储器配置连接到存储器320。如图2中所讨论的,存储器320可以包括任意适当类型的一个或多个逻辑元件。
63.存储设备350可以是任意种类的存储器320,或可以是单独的设备,如结合图2的存储设备250所描述的。存储设备350可以是,或者在其内包括,一个或多个数据库或以其它配置存储的数据,并可以包括操作软件(例如,操作系统322)和服务器引擎324的软件部分的存储副本。
64.网络接口360可以被提供来将服务器140通信地耦合到有线或无线网络,并可以包括如在图2中描述的一个或多个逻辑元件。网络接口360可以是nic、hfi或任意其它适当的设备。
65.服务器引擎324是如图2所描述的引擎,并且在一个例子中,包括一个或多个逻辑元件,其可操作以执行如在本技术文档中描述的计算机实现方法。服务器引擎324的软件部分可以作为守护进程(daemon)运行。
66.服务器引擎324可以包括一个或多个非瞬态计算机可读介质,其上存储有可操作以指示处理器提供安全引擎的可执行指令。在适当的时间,例如当引导服务器140时或在来自操作系统322或用户120或安全管理员150的命令时,处理器310可以从存储设备350取回服务器引擎324(或其软件部分)的副本,并将其加载到存储器320中。处理器310然后可以迭代地(iteratively)执行服务器引擎324的指令以提供期望的方法。
67.服务器引擎324可以是任意适当的服务器程序,包括守护进程,以提供基于网络的服务。这些可以包括,例如但不限于,http或web服务器、电子邮件服务器、ftp服务器、telnet服务器、ssh服务器、ntp服务器,或任意其它适当服务器。在特定实施例中,服务器引擎324是如本文描述的alnq的“应用”。在特定实施例中,服务器引擎324可以执行图8的方法或相关方法。
68.还可以提供排队引擎326,并且该引擎可以是如本文所描述的引擎。排队引擎326可以配置为提供alnq排队服务,包括执行图7的方法或相关方法。
69.图4是根据本技术文档的一个或多个例子的服务器300的所选元件的框图。在该例子中,nic 360将服务器300连接到网络170,网络170转而(in its turn)通信耦合到多个终端用户设备462。可能有许多终端用户设备462,包括数以千计的或更多的终端用户设备462。终端用户设备462出于访问由服务器300所提供的服务的目的访问服务器300,例如经由服务器引擎324或任意其它适当应用。
70.在该例子中,服务器300包括八个核心310。每个核心310可以视情况而定专用于不同的服务或服务的线程,尽管这只是非限制性例子,其还可以用于处理器310共享不同进程。在该例子中,提供web服务器420。web服务器420被划分为四个单独的线程。具体地,web0 420-0运行在核心0 310-0上。web1 420-1运行在核心1 310-1上。web2 420-2运行在核心2 310-2上。web3 420-3运行在核心3 310-3上。
71.还提供了电子邮件服务器430。在该例子中,两个核心专用于电子邮件服务器430。具体地,电子邮件0 430-0运行在核心4 310-4上。电子邮件1 430-1运行在核心5 310-5上。
72.最后两个核心致力于支持后台进程。具体地,支持应用450运行在核心6 310-6上。操作系统322运行在核心7 310-7上。应该理解的是,核心的数量、线程的数量以及线程在多个核心间的分布是以非限制性例子的方式提供的。在其它实施例中,其它配置是可能的。在一些情况下,机器可以具有多得多的核心,以及多得多的线程。在其它情况下,机器可以具有较少的核心和较少的线程。核心和线程的任何适当的组合是可用的。
73.在该例子中,nic 360披露标号为0至15的队列450。根据在本技术文档中公开的例子,队列0至3(构成组452)专用于端口80上的业务量。队列4和5(构成组454)专用于端口25上的业务量。队列6至15被认为是辅助队列,并且被分派为由操作系统322和支持应用450使用。
74.当传入分组来自网络170去到nic 360时,排队引擎326以自顶向下的方式检查分组。换句话说,排队引擎326首先检查上层信息。在该例子中,排队引擎326具体地查看分组被指定到哪个逻辑端口。在例子中,当且仅当分组是端口80的业务量时,该分组才被分配给组452。因此,端口80的业务量全部被分配给组452,并且没有不是端口80的业务量的业务量被分配给组452。
75.类似地,当且仅当传入业务量被发现是端口25上的电子邮件业务量时,才将该业务量分配给组454。换句话说,所有的端口25业务量被分配给组454,并且没有不是端口25的业务量的业务量被分配给组454。
76.根据标准分配方法,任何既不是端口80的又不是端口25的业务量被分配给标号为6至15的辅助端口之一。这可以包括散列或类似物。这意味着web服务器420知道其所有的业务量将出现在组452中,并且没有外部业务量将出现在该组中。类似地,电子邮件服务器430
知道其所有的业务量将出现在组454中,并且没有外部业务量将出现在该组中。相反地,操作系统322知道这两个组完全由其各自的应用“所拥有”,从而os 322可以在适当的情形下绕过其一些通常的安全过程并让这些应用处置它们自己的内部安全性。
77.将业务量分配给辅助端口6至15可以通过任意适当方法完成,在一些实施例中包括现有技术方法,例如rss、流量引导器(flow director)等。类似地,一旦已经将分组分配给组452或454,将该分组分配给该组中的队列则可以通过任意适当方式(包括rss、流量引导器或等价物)完成。
78.有利地,因为知道组452只包括指定给web服务器420的端口80上的业务量,所以操作系统现在具有灵活性来直接地施加应用专用策略和优化。作为例子,其可以将队列直接传递给应用,无须考虑因具有来自其它应用的业务量而引起安全性的违犯。
79.图5是根据本技术文档的一个或多个例子的附加实施例的视图。在图5的例子中,组452和454是它们在图4的例子中的两倍大。这是为了示出:虽然在队列和线程之间的一对一映射是可以的,但n对一映射也是可以的(对于任何n大于1)。
80.在图5的例子中,组452和454两者都为每个线程保留两个单独的队列。这例示了web服务器420和电子邮件服务器430可能比支持功能450和操作系统322对于服务器300的功能相对地更重要的原则。因此,在某些实施例中为每个线程分派额外的队列以避免通信中的瓶颈,可能是有利的。因此,在该例子中,为web服务器线程420-0保留队列0和1。为web服务器线程420-1保留队列2和3。为web服务器线程420-2保留队列4和5。为web服务器线程420-3保留队列6和7。
81.类似地,队列8和9是用于电子邮件服务器线程430-0的。队列10和11是用于电子邮件服务器线程430-1的。
82.最后,队列12至15是为通用目的分派的,并且可以被用于支持功能450和操作系统322,包括不在端口80或25上的所有业务量。
83.注意,图4和图5的例子是可能的配置的非限制性例子。其它配置是可以的,包括这样的配置:其中队列的数量精确匹配核心的数量,或者队列的数量与核心的数量借助于非整型函数相关。
84.图6是传统osi网络堆栈模型的框图。在传统osi模型中,网络堆栈包括七层,具体为物理层610、数据链路层620、网络层630、传输层640、会话层650、表示层660和应用层670。osi模型在此呈现是为了示例性的目的,但是应该理解的是osi模型只是非限制性的例子。“互联网协议组”(通常称作tcp/ip)也经常被使用。tcp/ip层可以类似于但不等同于osi层。
85.针对本技术文档的相关部分的背景,在此简略描述osi模型的七层。
86.概括地说,所述层是:
87.物理层610—物理层(层1)提供联网硬件和传输技术。该层包括物理电线、时钟、电压和其它物理结构,以提供原始比特(而不是逻辑数据分组)的传输。每个比特流可以被分组成码字(code words)或符号(symbols),并被转换成通过硬件传输介质传输的物理信号。物理层为传输介质提供了电、机械和程序接口。在七层模型的背景中,物理层将逻辑通信请求从数据链路层转换为特定于硬件的操作,以实现电子信号的发送和接收。
88.数据链路层620—数据链路层(层2)是协议层,其在相邻网络节点之间转移数据,以提供在网络实体之间的对数据进行的功能的与过程的转移。在某些实施例中,数据链路
层还提供对错误的检测和校正。在该层的基本数据单位是数据链路帧,其不意图跨局域网边界。在网络之间路由和全局寻址是在更高的层进行的。这允许数据链路层专注于本地输送、寻址和介质仲裁(media arbitration)。数据链路协议规定设备如何检测冲突以及从冲突中恢复,并可以提供用于减少或防止冲突的机制。因此,在某些现有架构中,对分组进行排队是基于使用在该层可用的值的或绝对值的散列(例如,mac地址)。
89.网络层630—层3是网络层。网络层负责分组转发,包括通过中间路由器进行路由。网络层提供经由一个或多个网络将可变长度数据序列从源转移到目的地主机的功能的以及过程的方式(functional and procedural means),同时保持服务功能的质量。网络层的功能包括:
90.连接模型:无连接通信。例如,ip是无连接的,因为数据报(datagram)可以从发送者行进到接收者,而无需接收者发送确认。面向连接的协议存在于osi模型的其它更高的层中。
91.主机寻址。网络中的每个主机必须具有唯一的能确定其在何处的地址。该地址通常从层级系统分配。在tcp/ip中,这是ip地址,要么是32位ipv4(例如,192.168.1.1),要么是128位ipv6(例如,2001:0db8:ac10:fe01:0000:0000:0000:0000)。ipv4地址可以是全局唯一的或局部唯一的(即,如果在局域子网中使用)。ipv6地址旨在是全局唯一的。
92.消息转发。由于许多网络被划分成子网并被连接到其它网络上以进行广域通信,网络使用专门的主机(称作网关或路由器)来在网络之间转发分组。这对于移动应用也是感兴趣的,在此情况下用户可以从一个位置移动到另一位置,并且移动应用必须被布置为使得用户的消息跟随他。
93.网络层响应来自传输层的服务请求,并向数据链路层发出服务请求。
94.传输层640—层4是传输层,其为应用提供端到端或主机到主机的通信服务。传输层提供例如面向连接的数据流支持、可靠性、流控制和多路复用等等服务。简单无连接(无状态)实现方式可以在层4使用用户数据报协议(udp),而面向连接(有状态)实现方式可以使用传输控制协议(tcp)。还通过非限制性例子的方式提供数据报拥塞控制协议(dccp)和流控制传输协议(sctp)。
95.会话层650—层5是会话层。会话层打开、关闭以及管理在终端用户应用(例如,图1的终端用户应用162或客户端应用112)与图4的web服务器420之间的会话。通信会话由在应用之间发生的请求和响应组成。会话层服务通常在利用远程过程调用(rpc)的应用环境中使用。会话层可以响应于来自表示层的服务请求,并向传输层发出服务请求。
96.表示层660—层6是表示层,也称作语法层。表示层负责向应用层递送和格式化信息以便进一步处理或显示,包括将数据结构序列化为平字节(flat byte)字符串。该层处置终端用户系统中数据表示的语法差异。例如,ebcdic编码的数据可以转换为ascii以供应用使用。该层还处置多种数据类型的问题。例如,具有显式整型长度的pascal风格的文本字符串需要与c风格的空结尾字符串进行不同地解释。在适当时,在该层还执行加密。
97.应用层670—层7是应用层。在osi模型中,层7负责向用户显示接收到的信息。
98.在某些现有的联网架构中,将到网络接口(例如,nic 360)的传入业务量分配给队列(例如,队列450)。
99.图7是根据本技术文档的一个或多个例子的通过排队引擎326尤其针对接收到的
分组执行的方法700的流程图。
100.在框720中,nic 360接收传入分组。这表示物理接口接收提供传入数据分组的电信号。
101.在框730中,排队引擎326以自顶向下的方式解析分组。具体地,在该例子中,排队引擎326为分组提取目的地端口,但是其它值也可以使用。
102.在框740中,排队引擎326确定端口是否被配置为“监听”端口。如果是,则它识别被分派给该端口的组中的多个队列。
103.框750,排队引擎326对分组进行负载平衡或分布到其所分配的队列。例如,如果组452已经被指定用于http业务量,并且如果传入分组在端口80上,则排队引擎326可以根据适当的负载平衡算法将分组分配给组452中的线索(cue)之一。可以使用rss、流量引导器或类似物来识别要将分组分配到的具体队列。然后可以经由直接存储器存取(dma)使得分组为可用,从而分组可以在合适时独立于处理器而被访问。
104.在框760中,如果中断被使能(例如,而不是“繁忙轮询”),并且中断节流定时器(interrupt throttling timer)已经期满,则排队引擎326向主机发送中断。换句话说,中断驱动器不会随着每个传入分组触发中断。相反地,中断仅在已经到达分组的或时间的阈值时触发。然后中断服务例程可以直接用信号通知服务器引擎324。中断是依赖于触发逻辑来被断言的,并且如果已断言则用信号通知应用。在任一情况下,从服务器引擎324进行轮询可以触发分组流(packet flow)。
105.在框780中,排队引擎326向适当的进程(例如,服务器引擎324的线程)发送排队通知。例如,在web服务器420的情况下,排队引擎326可以向进程的适当线程(例如,线程0 420-0)发送通知。特别地,驱动器可以从队列中捡拾分组,并连同该分组一起传递识别具体队列的不透明信息。该信息存储于套接字层并且对于应用是可用的。
106.在框799中,方法结束。
107.图8是根据本技术文档的一个或多个例子的通过应用(例如,服务器引擎324)执行的方法800的流程图。
108.在框810中,应用线程进行异步轮询调用。例如,linux操作系统提供被称为epoll的调用。如果使用epoll或类似物,则应用获得用于其正在观察的套接字的不透明队列标识符,并进行校验以查看它是否匹配用于其针对特定事件文件描述符而观察的其它套接字的队列标识符。如果是,则将该套接字添加到观察列表。否则,将套接字交给具有匹配的队列标识符的事件文件描述符,并且添加到其观察列表。在例子中,单个线程在单个事件文件描述符上操作。因此,创建将观察套接字与相同队列标识符的匹配,使得业务流流线化而没有来自其它应用的干扰。
109.在框820中,应用线程根据异步轮询所提供的套接字/事件文件描述符来轮询其分配的队列。如果线程因为没有数据(且从而没有工作需要其去做)而睡眠,则可以在睡眠线程上直接执行唤醒,允许线程重新运行(come back)以及从其队列拉取分组。换句话说,协议和描述符处理发生在线程的上下文中,而不是在中断或者被安排为中断的结果的延迟过程调用(dpc)(window)/softirq(linux)的上下文中。这样,调度的关联关系(affinity)得以保存。应用(例如,服务器引擎326)的调度器唤醒(scheduler wakeup)保持与在相同缓存/调度域中的分组递送和传输相关联的所有共享内核数据结构,与操作系统/超管理器的
调度策略相符合。
110.在框830中,应用线程执行繁忙轮询,直到有超时为止。对套接字进行的繁忙轮询可以被流线化,以从应用专用队列直接拉取分组。
111.在决策框840中,如果数据可用,则在框870中执行图9的方法900。
112.如果数据不可用,则在框880中,线程进入睡眠,伴随着中断被使能。
113.在框899中,该方法结束。
114.图9是根据本技术文档的一个或多个例子的公开了数据消费的额外细节的方法900的流程图。
115.在框940中,nic 360戳记(stamp)出与分组相关联的队列标识符令牌,并将该标识符沿网络堆栈向上传播。应用324然后从nic 360接收该队列标识符。注意,如果存在多于一个nic 360,则这还可以包括设备标识符(例如,nic 0,队列1;nic 1,队列1;等等)。
116.在框960中,套接字层存储队列标识符作为其状态的一部分。再次,该队列标识符可以是设备专有的。
117.在框980中,应用324消费数据。
118.在框999中,该方法结束。
119.图10是根据本技术文档的一个或多个例子的通过alnq执行传输操作的方法1000的流程图。该方法被理解为非限制性例子,并且特别地通过例示的方式在该流程图中为特定网络层分配操作。
120.在框1010中,应用324可以为套接字设置队列映射,例如经由扩展套接字选项。注意,这仅当在发送到的队列不同于上个传输操作时才是必要的。
121.在框1030中,应用324利用正常的套接字send调用来发送分组。
122.在框1040中,网络堆栈的套接字层将队列标识符附接到被发送的分组。
123.在框1050中,协议和网络层执行它们的正常的已知功能。
124.在框1060中,设备层校验队列标识符并将分组放置在指定的队列上以便进行传输。
125.在框1080中,设备层用信号通知适当的nic 360:分组已经准备好进行传输。
126.在框1090中,nic 360传输分组。
127.在框1099中,该方法结束。
128.上述概述了若干实施例的特征,从而本领域技术人员可以更好地理解本公开的各个方面。本领域技术人员应该理解他们可以容易地使用本公开作为设计或修改其它过程和结构的基础,以执行本文引入的实施例的相同目的和/或实现相同优点。本领域技术人员还应意识到,这种等价结构未背离本公开的精神和范围,并且他们可以在此做出各种改变、替代和修改,而不背离本公开的精神和范围。注意,客户端设备200和服务器300都是计算装置或其它计算设备的例子。
129.本文公开的所有或部分任意硬件元件可以容易地提供于片上系统(soc)中,包括中央处理单元(cpu)封装。soc表示将计算机或其它电子系统的部件集成到单个芯片中的集成电路(ic)。因此,例如,客户端设备110或服务器设备300可以整体或部分地提供于soc中。soc可以包含数字、模拟、混合信号以及射频功能,所有这些都可以提供在单个芯片衬底上。其它实施例可以包括多芯片模块(mcm),其中多个芯片位于单个电子封装中,并配置为通过
电子封装彼此密切地相互作用。在各个其它实施例中,本文公开的计算功能可以在专用集成电路(asic)、现场可编程门阵列(fpga)和其它半导体芯片中的一个或多个硅核心中实现。
130.还应注意,在某些实施例中,可以省略或合并一些部件。在一般意义上,在图中描绘的布置可以在其表示上更合乎逻辑,而物理架构可以包括这些元件的各种排列、组合和/或混合。有必要注意,可以使用无数可能的设计配置来实现本文概述的操作目的。因此,相关联的基础设施具有无数替代布置、设计选择、设备可能性、硬件配置、软件实现方式和设备选项。
131.在一般意义上,任意适当配置的处理器(例如,处理器310)可以执行与数据相关联的任意类型的指令以实现本文详述的操作。本文公开的任意处理器可以将元件或物品(例如,数据)从一种状态或事物转换为另一种状态或事物。在另一例子中,在本文列出的一些活动可以通过固定逻辑或可编程逻辑(例如,软件和/或处理器执行的计算机指令)实现,并且在本文识别出的元件可以是以下中的一些类型:可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(fpga)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))、包括数字逻辑、软件、代码、电子指令的asic、闪存、光盘、cd-rom、dvd rom、磁或光卡、适于存储电子指令的其它类型的机器可读介质,或其任意适当组合。
132.在操作中,存储设备(例如,存储设备350)可以将信息存储于任意适当类型的有形的、非瞬态存储介质(例如,随机存取存储器(ram)、只读存储器(rom)、现场可编程门阵列(fpga)、可擦除可编程只读存储器(eprom)、电可擦除可编程rom(eeprom)等)、软件、硬件(例如,处理器指令或微代码),或在适当时并基于特定需要存储于任意其它适当部件、设备、元件或对象中。此外,基于可以在任意适当的时间表中引用的特定需要和实现方式,可以在任意的数据库、寄存器、表格、缓存、队列、控制列表或存储结构中提供被跟踪、发送、接收或存储于处理器中的信息。本文公开的任意存储器或存储元件(例如,存储器320和存储设备350)应该被解释为在适当时包含于广义术语“存储器”和“存储设备”中。本文表达的非瞬态存储介质意图包括任意非瞬态的专用或可编程硬件,其被配置为提供所公开的操作或使得诸如处理器310的处理器执行所公开的操作。
133.实现在本文中描述的所有或部分功能的计算机程序逻辑以各种形式具体实现,包括但不限于:源代码形式、计算机可执行形式、机器指令或微代码、可编程硬件以及各种中间形式(例如,由汇编器、编译器、链接器或定位器生成的形式)。在例子中,源代码包括以各种编程语言实现的一系列计算机程序指令,所述编程语言例如是对象代码、汇编语言或高级语言(例如,opencl、fortran、c、c 、java或html)以与各种操作系统或操作环境一起使用;或者以硬件描述语言实现,例如,spice、verilog和vhdl。源代码可以定义和使用各种数据结构和通信消息。源代码可以是计算机可执行形式(例如,经由解释器),或源代码可以被转换(例如,经由翻译器、汇编器或编译器)为计算机可执行形式,或转换为中间形式(例如,字节码)。在合适时,上述任意可以用于构建或描述适当的离散或集成的电路,不管是顺序的、组合的状态机还是其它。
134.在一个示例性实施例中,可以在相关联的电子设备的板上实现附图的任意数量的电路。所述板可以是一般的电路板,其可以保持电子设备的内部电子系统的各种部件,此外提供用于其它外部部件的连接器。更具体地,所述板可以提供电连接,通过该电连接系统的
其它部件可以电通信。可以基于特定的配置需要、处理要求和计算设计,将任意适当的处理器和存储器适当地耦合到板上。其它部件(例如,外部存储设备、额外的传感器、用于音频/视频显示的控制器和外围设备)可以经由电缆作为插件卡附接到板上,或集成到板本身。在另一例子中,附图的电路可以实现为独立模块(例如,具有配置为执行具体应用或函数的相关联部件和电路的设备),或实现为到电子设备的专用硬件的插件模块。
135.注意,通过本文提供的多个例子,可以依据两个、三个、四个或更多电子部件来描述交互。然而,这只是为了清楚和示例的目的进行的。应该理解的是,可以以任意适当方式合并或重新配置系统。和类似设计替代一起,图中所示的任意部件、模块和元件可以以各种可能配置组合,其所有都落入本技术文档的广泛范围内。在某些情况下,可以通过只引用有限数量的电元件容易地描述给定的一组流程的一个或多个功能。应该理解的是,附图的电路及其教导可以容易地缩放,并可以容纳大量部件以及更复杂/精细的布置和配置。因此,所提供的例子不应该限制范围,或禁止电路在可能应用于无数其它架构的广泛教导。
136.本领域技术人员可以确定各种其它改变、替代、变化、修改和修正,并且本公开意图涵盖落入随附权利要求的范围中的所有这些改变、替代、变化、修改和修正。为了帮助美国专利和商标局(uspto)并且另外地为了帮助在本技术中提及的任何专利的任何读者解释所附权利要求,申请人希望注意,申请人:(a)不旨在使得所附权利要求中的任一项涉及35u.s.c.第112部分的第六(6)款(aia前)或同一部分的条款(f)(aia后),因为其在本文提交日就存在,除非词语“用于

的单元”或“用于

的步骤”被具体地用在特定权利要求中;并且(b)不希望申请文档中的任何语句以未在所附权利要求中反映出的任何方式来限制本公开。
137.示例性实现方式
138.在例子1中公开了一种装置,包括:网络接口,其被配置为提供多个队列;应用;以及一个或多个逻辑元件,其包括排队引擎,所述排队引擎用于:检查传入分组;以及基于分类符将所述传入分组分配给所述应用的专用队列。
139.在例子2中公开了例子1的装置,其中,所述分类符包括应用标识符。
140.在例子3中公开了例子1的装置,其中,所述分类符包括端口号。
141.在例子4中公开了例子1的装置,还包括用于就所述分配通知所述应用的单元。
142.在例子5中公开了例子1的装置,包括用于使得所述应用能够绕过中断机制并执行每线程无干扰(per-thread、non-interfering)的繁忙轮询的单元。
143.在例子6中公开了例子1的装置,其中,所述排队引擎还用于经由扩展的套接字选项来接收用于套接字的队列映射。
144.在例子7中公开了例子1的装置,其中,所述应用用于:从所述网络接口接收队列分配通知,包括用于套接字的队列分配;以及将所述套接字分配给与所述队列分配相关联的线程。
145.在例子8中公开了例子7的装置,其中,所述线程在一对一布置中唯一地与所述队列分配相关联。
146.在例子9中公开了例子7的装置,其中,在n对1布置中多个队列分配与所述线程相关联。
147.在例子10中公开了例子7的装置,其中,所述应用绕过中断机制并执行每线程无干
扰的繁忙轮询。
148.在例子11中公开了例子7的装置,其中,所述应用用于经由扩展的套接字选项来设置用于所述套接字的队列映射。
149.在例子12中公开了一个或多个有形的非瞬态计算机可读介质,其上存储有用于提供排队引擎的指令,所述排队引擎用于:检查在网络接口上的传入分组;以及基于分类符将传入分组分配给应用的专用队列。
150.在例子13中公开了例子12的一个或多个有形的非瞬态计算机可读存储介质,其中,所述分类符包括应用标识符。
151.在例子14中公开了例子12的一个或多个有形的非瞬态计算机可读存储介质,其中,所述分类符包括端口号。
152.在例子15中公开了例子12的一个或多个有形的非瞬态计算机可读存储介质,还包括用于就所述分配通知所述应用的指令。
153.在例子16中公开了例子12的一个或多个有形的非瞬态计算机可读存储介质,还包括用于使得所述应用能够绕过中断机制并执行每线程无干扰的繁忙轮询的指令。
154.在例子17中公开了例子12的一个或多个有形的非瞬态计算机可读存储介质,其中,所述排队引擎还用于经由扩展的套接字选项来接收用于套接字的队列映射。
155.在例子18中公开了一个或多个有形的非瞬态计算机可读介质,其上存储有指令用于提供应用,所述应用用于:从所述网络接口接收队列分配通知,包括用于套接字的队列分配,其中所述队列分配对于应用是唯一的;以及将所述套接字分配给与所述队列分配相关联的线程。
156.在例子19中公开了例子18的一个或多个有形的非瞬态计算机可读存储介质,其中,所述线程在一对一布置中唯一地与所述队列分配相关联。
157.在例子20中公开了例子18的一个或多个有形的非瞬态计算机可读存储介质,其中,在n对1布置中多个队列分配与所述线程相关联。
158.在例子21中公开了例子18的一个或多个有形的非瞬态计算机可读存储介质,其中,所述应用绕过中断机制并执行每线程无干扰的繁忙轮询。
159.在例子22中公开了例子18的一个或多个有形的非瞬态计算机可读存储介质,其中,所述应用用于经由扩展套接字选项来设置用于所述套接字的队列映射。
160.在例子23中公开了一种提供应用级网络排队的方法,包括:在网络接口上提供多个队列;提供具有网络能力的应用;一个或多个逻辑元件,其包括排队引擎,所述排队引擎用于:检查传入分组;以及基于分类符将所述传入分组分配给所述应用的专用队列。
161.在例子24中公开了例子23的方法,其中,所述分配器包括应用标识符。
162.在例子25中公开了例子23的方法,其中,所述分类符包括端口号。
163.在例子26中公开了例子23的方法,还包括就所述分配通知所述应用。
164.在例子27中公开了例子23的方法,还包括使得所述应用能够绕过中断机制并执行每线程无干扰的繁忙轮询。
165.在例子28中公开了例子23的方法,还包括经由扩展的套接字选项来接收用于套接字的队列映射。
166.在例子29中公开了例子23的方法,还包括应用:从所述网络接口接收队列分配通
知,包括用于套接字的队列分配;以及将所述套接字分配给与所述队列分配相关联的线程。
167.在例子30中公开了例子29的方法,其中,所述线程在一对一布置中唯一地与所述队列分配相关联。
168.在例子31的方法中,其中,在n对1布置中多个队列分配与所述线程相关联。
169.在例子32中公开了例子29的方法,还包括所述应用绕过中断机制并执行每线程无干扰的繁忙轮询。
170.在例子33中公开了例子29的方法,其中,所述应用用于经由扩展套接字选项来设置用于所述套接字的队列映射。
171.在例子34中公开了一种包括用于执行例子23-33中任一项所述的方法的单元的装置。
172.在例子35中公开了例子34的装置,其中,用于执行方法的单元包括处理器和存储器。
173.在例子36中公开了例子35的装置,其中,所述存储器包括机器可读指令,所述指令当被执行时使得所述装置执行例子23-33中任一项所述的方法。
174.在例子37中公开了例子34-36中任一项所述的装置,其中,所述装置是计算系统。
175.在例子38中公开了包括指令的至少一种计算机可读介质,所述指令当被执行时使如例子23-37中任一项描述的方法被实施或装置被实现。
176.在例子39中公开了一种提供应用级网络排队的方法,包括:在网络堆栈的层1上接收传入分组;以自顶向下的方式解析分组,以提取唯一地分配给应用的高级分类属性(high-level classifying attribute);确定分派给应用的多个队列;对分组进行负载平衡到来自分派给应用的多个队列中的一个队列(load balancing the packet to a queue from the number of queues allocated for the application);以及向应用发送队列通知。
177.在例子40中公开了例子39的方法,其中,所述高级分类属性是应用标识符。
178.在例子41中公开了例子39的方法,其中,所述高级分类属性是端口号。
179.在例子42中公开了例子39的方法,其中,对分组进行负载平衡包括散列。
180.在例子43中公开了例子39的方法,其中,对分组进行负载平衡包括确定负载平衡算法。
181.在例子44中公开了一种包括用于执行例子39-43中任一项所述的方法的单元的装置。
182.在例子45中公开了例子44的装置,其中,用于执行方法的单元包括处理器和存储器。
183.在例子46中公开了例子45的装置,其中,所述存储器包括机器可读指令,所述指令当被执行时使得所述装置执行例子39-43中任一项所述的方法。
184.在例子47中公开了例子44-46中任一项所述的装置,其中,所述装置是计算系统。
185.在例子48中公开了至少一种包括指令的计算机可读介质,所述指令当被执行时使例子39-47中任一项描述的方法被实施或装置被实现。
186.在例子49中公开了一种利用应用级网络排队的应用,包括:调用异步轮询操作,以根据套接字或事件文件描述符轮询多个专用分配队列;繁忙轮询队列直到超时期满;确定
一个或多个数据是可用的;从网络接口设备接收队列标识符通知;将队列标识符伴随套接字状态存储;以及消费数据。
187.在例子50中公开了一种包括用于执行例子49的方法的单元的装置。
188.在例子51中公开了例子50的装置,其中,用于执行方法的单元包括处理器和存储器。
189.在例子52中公开了例子51的装置,其中,所述存储器包括机器可读指令,所述指令当被执行时使得所述装置执行例子49的方法。
190.在例子53中公开了例子50-52中任一项所述的装置,其中,所述装置是计算系统。
191.在例子54中公开了包括指令的至少一个计算机可读介质,所述指令当被执行时使在例子49-53中任一项所描述的方法被实施或装置被实现。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献