灵活且可扩展的接收端调节的利记博彩app

文档序号:7677211阅读:224来源:国知局
专利名称:灵活且可扩展的接收端调节的利记博彩app
技术领域
本发明的实施例涉及灵活且可扩展的接收端调节。
背景技术
在过去几年中,多处理器系统己经变得普通,其能够实现在系统中的 多个并行处理,以实现较高速度的网络通信。为了实现这个架构的最佳利
用,可以使用通常称为接收端调节(在下文称为"RSS")的技术,通过允 许将来自网络控制器的网络负载在多个处理器之间进行平衡,来使接收处 理随着可利用的计算机处理器数量而进行调节。在"Scalable Networking: Eliminating the Receive Processing Bottleneck - Introducing RSS ", WinHEC (Windows Hardware Engineering Conference), 2005年4月19日(在下文中 称为"WinHEC 2005年4月19日白皮书")中说明了 RSS。 RSS是网络设 备接口规范(在下文中称为"NDIS") 6.0的一部分,可以从Microsoft Windows⑧获得。NDIS 6.0提供了一种设备驱动器,其使单个网络控制器能 够支持多个网络协议,或者使多个网络控制器能够支持多个网络协议。 NDIS6.0当前仍在计划中,但与它有关的信息可以从Microsoft Corporation of Redmond, Washington获得。
实现RSS的系统当前仅支持由RSS支持的有限数量的协议。例如,在 当前的RSS设计中,仅支持在网络层上的Ipv4/v6协议和在传输层上的TCP 及UDP。通常,对符合所支持协议之一的分组进行散列处理,以确定哪一 个处理器会处理指定的分组,并且将不符合所支持协议中任一个的分组发 送到默认处理器。因此,不符合所支持协议中任一个的分组会累积起来, 并引起默认处理器的阻塞现象。


借助附图的各图中的实例示出了本发明的实施例,但不是作为限制,其中类似的参考数字标记指代相似的元件,其中-图l示出了根据实施例的系统。
图2是示出根据实施例的系统的框图。
图3是示出根据实施例的方法的流程图。
图4是根据实施例的协议表。
图5是示出根据实施例的方法的流程图。
具体实施例方式
以下所述的实例仅是用于说明性的目的,而绝不是想要限制本发明的 实施例。因此,在可以详细说明实例的地方,或可以提供实例列表的地方, 应理解这些实例不应解释为穷举性的,且不应将本发明的实施例限于所述 和/或所示的实例。
图1示出了一个实施例中的系统。系统100可以包括一个或多个处理 器102A、 102B、、 102N,主存储器104,总线106、 110、 112,以及网 络控制器126。系统IOO可以包括一个以上以及其它类型的存储器、总线和 网络控制器;然而,所示的这些组件是为了论述的简明而说明的。处理器 102A、 102B、…、102N,主存储器104和总线106、 110、 112可以包括在 单个电路板中,诸如例如系统主板118。
在此所述的"处理器"涉及硬件和软件资源的组合,用于完成计算任 务。例如,处理器可以包括系统存储器和处理电路(例如,中央处理单元 (CPU)或微控制器),以执行机器可读指令,用于根据预定的指令集来处 理数据。可替代地,处理器可以只包括处理电路(例如CPU)。处理器可以 包括多内核处理器,其具有多个计算引擎。可替代地,处理器可以包括一 个计算引擎,该计算引擎可以包含在多内核处理器中,在此操作系统可以 将计算引擎理解为具有完整的一组执行资源的分立处理器。其它可能性也存在。
系统可以包括逻辑130。逻辑130可以包括硬件、软件、或硬件与软件 的组合(例如固件)。例如,逻辑130可以包括电路(即一个或多个电路), 以执行在此所述的操作。例如,逻辑130可以包括一个或多个数字电路、 一个或多个模拟电路、 一个或多个状态机、可编程逻辑电路和/或一个或多
8个ASIC (专用集成电路)。逻辑130可以是硬连线的,以执行一个或多个 操作。可替代地或附加地,逻辑130可以体现为存储在存储器(例如存储 器104)中的机器可执行指令132,以执行这些操作。可替代地或附加地, 逻辑130可以体现为固件。逻辑可以包含在系统100的不同组件中和/或主 板118上,所述不同组件包括网络控制器126,芯片组108,处理器102A、 102B、、 102N。借助于在此所述的不同组件,逻辑130可以用于执行不 同功能。
芯片组108可以包括一个或多个集成电路芯片,例如从可由Intel Corporation商业获得的多种集成电路芯片组之中选择的那些芯片(例如图 形组、存储器组、和i/o控制中心芯片组),尽管还可以或者作为替代而使 用其它一个或多个集成电路芯片组。根据实施例,芯片组108可以包括输 入/输出控制中心(ICH),和/或存储器控制中心(MCH),尽管本发明的实 施例不限于此。芯片组108可以包括主机桥接器/集线器系统,其可以将处 理器102A、 102B、…、102N和主存储器104彼此耦合,并耦合到局域总 线106。芯片组108可以经由存储器总线112与存储器104通信,并经由系 统总线110与处理器102A、 102B、…、102N通信。在可替换实施例中, 处理器102和主存储器104可以直接耦合到总线106,而不是经由芯片组 108耦合。
局域总线106可以包括服从外围组件互连(PCI)局域总线规范修订版 2.2, 1998年12月18日的总线,该规范可以从PCI Special Interest Group, Portland, Oregon, U.S.A.获得(下文中称为"PCI总线")。可替代地,例如, 总线106可以包括服从PCI Express基本规范修订版l.Oa, 2003年4月15 日的总线,该规范可以从PCI Special Interest Group获得(下文中称为"PCI Express总线")。总线106可以包括总线系统的其它类型和结构。
网络控制器126可以包含在电路卡124中(即网络接口卡或NIC),可 以将电路卡124插入到电路卡插槽114中。如在此所称的"网络控制器" 涉及一种可以耦合到数据传输介质以发送数据至耦合到该数据传输介质的 其它设备或从耦合到该数据传输介质的其它设备接收数据的设备。例如, 网络控制器可以设计为发送数据至耦合到诸如局域网之类的网络上的其它 设备或者从这些设备接收数据。这种网络控制器可以按照几种数据通信格式中的任意一种与其它设备通信,诸如例如,按照以下标准的多个版本的
通信格式正EEStd. 802.3 (以太网)、正EE Std. 802.11、 IEEE Std. 802.16、
通用串行总线、固件、异步传输模式(ATM)、同歩光网络(SONET)、或 同步数字体系(SDH)。在可替换实施例中,网络控制器可以包括其它I/O 设备中的任意一种,诸如例如,到数据存储系统的控制器。然而,这些仅 是网络控制器的实例,本发明的实施例不限于这些方面。
网络控制器126可以包括逻辑130,以执行在此所述的由网络控制126 和/或系统100执行的操作。当将电路卡124插入到电路卡插槽114中时, 电路卡插槽114上的PCI总线连接器(未示出)可以变为电气地和机械地 耦合到电路卡124上的PCI总线连接器(未示出)。当这些PCI总线连接器 这样彼此耦合时,在电路卡124中的逻辑130可以变为电气地耦合到总线 106。当逻辑130电气耦合到总线106时,任意处理器102A、 102B、…、 102N都可以经由总线106与逻辑130交换数据和/或命令,这就可以允许一 个或多个处理器102A、 102B、…、102N控制和/或监控逻辑130的操作。 网络控制器126可以不驻留在电路卡124上,而是作为替代可以包含在系 统主板118上。可替代地,可以将网络控制器126集成在芯片组108中。
主存储器104可以存储能够由逻辑(例如逻辑130)执行的机器可执行 指令132,和/或能够由逻辑(例如逻辑130)访问、操作和/或处理的数据。 例如,主存储器104可以包括只读存储器、大容量存储器、随机存取计算 机可访问存储器、和/或一种或多种其它类型的机器可访问存储器。例如, 逻辑130对程序指令132的执行和/或对该数据的访问、操作和/或处理会导 致例如系统100和/或逻辑130执行在此所述的操作之中的一些操作或全部 操作。
图2是根据本发明的实施例的框图。在实施例中,可以在网络控制器 126上实现一个或多个协议表202、间接表210和散列函数206,并且可以 在主存储器104中实现接收队列212A、 212B、、 212N。
图3示出根据本发明实施例的方法。该方法开始于块300,并继续前进 到块302,在块302中,该方法包括响应于接收到分组,在至少一个协议 表之一中查询分组特性以确定该分组中要用作散列值的一个或多个字段。 "分组"指的是可以由从至少一个发送器发送到至少一个接收器的一个或多个信号进行编码的一个或多个符号和/或值的序列。可以由特定协议
栈来处理分组。协议栈的一个实例是TCP/IP (传输控制协议/网际协议)栈。
分组可以包括一个或多个字段,包括报头、数据和报尾。在报头内可以 有附加字段。例如,在IP分组中,报头可以包括IP版本、分组长度、源IP 地址和目的IP地址。可以通过一组比特来标识字段。例如,IP版本字段可
以包括IP报头的前4个比特,源IP地址和目的IP地址可以包括IP报头的 后64个比特。
在许多层中对分组进行封装,在此每一层都可以与一个协议相关联。 如在此所用的,与一个协议相关联的分组指的是在与特定协议相关联的特 定层内的分组。例如,分组200可以包括以太网分组,例如,该以太网分 组包含有被封装在IP分组内(例如包含报头、数据和报尾,在此IP分组的 数据部分包含TCP分组)的TCP分组(例如包含报头、数据和报尾)。在 这个实例中,分组200可以与IP协议以及TCP协议相关联。根据所用的协 议套,可以存在几个封装的其它层。
"分组特性"指的是分组的特性。例如,可以在一个或多个层中见到 这些特性。例如,几个层可以具有的分组特性包括用于该层的协议,和 源和目的的地址或端口。
如图4所示,至少一个协议表202中的每一个都可以包括条目400A、 400B、…、400X,在此每一个条目都可以包括与偏移404A、 404B、…、 404X和掩码406A、 406B、…、406X对应的分组特性402A、 402B、…、 402X。协议表202可以被配置为包括任意数量的分组特性,且分组特性可 以不同(例如协议,目的端口等)。协议表202可以包括容纳全部协议的单 个表。可替代地,协议表202可以包括多个表,在此每个协议表202都可 以对应于用于指定层的分组特性。而且,用于每一层的分组特性可以不同。
偏移404A、 404B、…、404X可以指明从分组200中的起始比特(例 如分组报头的末尾)开始到可以使用掩码406A、 406B、…、406X (例如比 特掩码)来确定散列值204的位置之间的距离(例如,比特数)。例如,起 始比特可以包括分组的开头(例如字节O),偏移可以指明20个比特,比特 掩码可以包括32个比特。在此情况下,可以对比特19到50进行散列处理 以产生散列值204。作为另一个实例,起始比特可以包括分组200的报头的
ii末尾(例如比特112),偏移可以指明0个比特,比特掩码可以包括32个比 特。在此情况下,可以对比特112-143进行屏蔽以产生散列值204。可以默 认地指定起始比特。例如,可以将分组的开头指定为起始比特。而且,起 始比特可以取决于层。可替代地,起始比特可以是可编程的。例如,可以 在一个表(例如任意协议表202)中定义起始比特。
例如,如果分组200与MPLS协议相关联,那么就可以在协议表202 之一中查询MPLS协议。协议表202可以包括条目,例如用于MPLS分组 特性402A的条目400A,在此偏移404A可以包括"OFFSET: 0x0",掩码 406A以包括"MASK: 0xFF:FF:F0:00"。如果起始比特包括分组报头的末 尾(例如比特112),那么这个条目会导致屏蔽比特112-143,这会产生散列 值204,其包括MPLS栈的顶部标签。
在至少一个协议表202之一中査询分组特性以确定分组200中要用作 散列值204的一个或多个字段的过程可以包括迭代过程。例如,在一个实 施例中,可以显露出分组200的下一层,直至没有更多的层显露为止。在 一个实施例中,如果指定设备将特定层的指定为在其中检查分组特性的最 后的层,就没有更多的层显露(例如,在揭示了传输层之后,没有更多的 层显露)。作为另一个实例,如果揭示的协议是不受支持的协议,就没有更 多的层显露。"揭示的协议"可以指的是用于当前显露的层的协议,或者是 可以在当前显露的层中指明的下一层协议。
如果揭示的协议是受支持的协议,那么就可以获得该分组的一个或多 个默认字段。(如果揭示的协议是所显露的第一层且其不是受支持的协议, 那么就没有获得默认字段,可以将该分组发送到用于处理不能分类的分组 的默认处理器。)例如,在当前RSS设计中,默认字段可以是用于在网络层 上的IP协议的IP源地址和IP目的地址,或者是用于在传输层上的TCP协 议的TCP源端口和TCP目的端口 。
如在此所用的,"不受支持的协议"指系统固有地不支持的协议。例如, 实现当前RSS设计方案的系统固有地支持Ipv4/v6、 TCP和UDP,这是通 过硬连线该系统以理解这些协议或者发送这些系统以理解这些协议("受支 持的协议")来实现的。在不同层所揭示的全部其它层会是不受支持的。
如果没有更多的层显露,则可以在至少一个协议表之一中查询对应于
12最后显露的层的该分组特性,以获得偏移和掩码。如果找到该分组特性,
随后就可以将偏移和掩码应用于该分组。如果没有在至少一个协议表202 之一中找到该分组特性,则就可以将在以上迭代过程中获得的一个或多个 默认字段用作散列值204。如果没有获得默认字段,则可以将该分组发送到 多个处理器中默认的一个。
通过将偏移和掩码指定给一个或多个默认字段,可以定制用于散列值 204的字段,允许以不同方式对分组200进行分类。例如,不是基于TCP 分组的源/目的端口而将其发送到处理器,而是特定系统会想要将全部SYN 和FIN分组发送到特定处理器。为此,可以将协议表202之一中的条目 400A、 400B、…、400X设定为TCP的IP协议号,在此可以定义用于该条 目的偏移和掩码,以导致屏蔽TCP分组中除了 SYN和FIN标记之外的全 部比特。
作为另一个实例, 一些应用和/或协议打开了到另一个系统的许多TCP 连接,以建立单个逻辑数据连接。由于该系统可以随机选择TCP源端口, 因此TCP分组的散列处理可能会导致来自多个TCP连接中一些连接的分组 前往与其它连接不同的处理器。由于单个逻辑连接会需要在处理器之间的 跳动,因此这就会导致严重的局部损失。为了解决这个沖突,协议表202 之一可以被配置为包括用于不同TCP目的端口的一个条目,在此该条目会 导致屏蔽掉源端口字段(即多个比特),并允许将来自相同TCP端口的全部 连接散列到相同处理器。实现该目的的其它协议表202结构也是可能的。
在块304,该方法可以包括将散列函数应用于散列值,以获得散列结果。 回来参考图2,可以用散列函数206对散列值204进行散列处理,以获得散 列结果208。散列函数可以包括Toeplitz散列,如在"WinHEC 2005年4 月19日白皮书"中所述的。
在块306,该方法可以包括使用散列结果来确定多个处理器中用于处理 该分组的一个处理器。如在图2中所示的,间接表210可以用于将分组200 指引到接收队列212A、 212B、…、212N。间接表210可以包括一个或多个 条目,在此每一个条目可以包括与接收队列212A、 212B、…、212N相对 应的散列结果208。每一个接收队列212A、 212B、…、212N可以存储一个 或多个接收分组200,并可以对应于处理器102A、 102B、…、102N之中可以处理从指定接收队列212A、 212B、、 212N所接收的这些一个或多个 分组200的一个处理器。可以配置间接表210,以便特定散列结果(对应于 特定分组200)可以对应于特定处理器(以便将对应的分组200发送到这些 处理器)。
该方法在块308结束。
在一个实施例中,上述方法可以用于RSS环境中。如图5所示,这种 方法可以在块500开始,并继续前进到块502,在块502,响应于接收到分 组,该方法可以包括确定与该分组相关联的第一层协议是否是受支持的 第一层协议。例如,该第一层可以包括网络层,在RSS中受支持的网络层 协议可以包括IPv4/v6。
在块504,该方法可以包括如果该第一层协议没有与受支持的第一层 协议相关联,就在第一协议表中查询该第一层协议以确定要将该分组中的 哪些比特用作散列值。例如,如果该分组的网络层协议不是IPv4/v6分组, 就可以在协议表中查询与该分组相关联的网络层协议。例如,在一个实施 例中,第一协议表可以包括以太网类型的表,其包括不受支持的网络层协 议,例如MPLS (多协议标签交换)。
可替代地,如果第一层协议与受支持的第一层协议相关联,就可以获 得与第一层协议相关联的第一组比特,随后可以确定与该分组相关联的第 二层协议是否是受支持的第二层协议。
如果第二层协议没有与受支持的第二层协议相关联,就在第二协议表 中查询该第二层协议以确定散列值。例如,第二层可以包括传输层,在RSS 中受支持的传输层协议可以包括TCP和UDP。因此,例如,如果该分组的 传输层协议不是TCP或UDP分组,就可以在第二协议表中查询不受支持的 传输层协议。例如,在一个实施例中,第二协议表可以包括IP表,其包括 特定的传输层协议,例如IPSec (网际协议安全)。协议表202可以包括条 目,例如用于IPSec协议402B的条目400B,在此偏移404B可以包括"偏 移0x0",掩码406B可以包括"掩码OxFF:FF:FF:FF"。如果起始比特包 括IP报头的末尾,那么这个条目就会导致仅对该分组的SPI (安全参数索 引)的多个比特进行散列处理。
如果第二层协议与受支持的第二层协议相关联,就可以获得与第二层协议相关联的第二组比特,随后就可以在第三协议表中查询第二层协议以
确定散列值。例如,第二层可以包括传输层,在RSS中受支持的传输层协 议可以包括TCP和UDP。因此,例如,如果该分组的传输层协议是TCP 或UDP分组,就可以在协议表中査询传输层协议。
在块506,该方法可以包括将散列函数应用于散列值,以获得散列结果。 如上所述,可以从协议表202之一中得到散列值204。对于受支持的协议, 可以仅从默认字段或者默认字段与协议表202之一的组合获得散列值204。
在块50S,该方法可以包括用散列结果确定多个处理器之中用于处理 该分组的一个处理器。在RSS系统中,可以将散列结果208映射到间接表 210中的一个条目上,以获得结果。可以将该结果加到另一个变量上,以获 得对应于接收队列212A、 212B、、 212N的值。例如,另一个变量可以 包括基本处理器数量,其可以表明RSS中可以使用的处理器的最低数量, 并且该基本处理器数量可以是根据应用而专门指定的。例如,基本处理器 数量可以是0。网络控制器126可以将分组200传递到对应于散列结果208 的接收队列212A、 212B、…、212N。
该方法在块510结束。
结论
因此,在实施例中, 一种方法可以包括响应于接收到分组,在至少
一个协议表之一中查询分组特性以确定该分组中要用作散列值的一个或多 个字段,将散列函数应用于所述散列值,以获得散列结果,并且用所述散 列结果来确定多个处理器中用于处理该分组的一个处理器。
本发明的实施例可以能够以灵活且可扩展的方式、按系统中处理器数 量来调节分组的接收端处理。本发明的实施例不是将受支持的协议限于己 经硬连线或编程到系统中的协议,而是提供了易于添加并易于配置协议的 一种方式。而且,本发明的实施例不仅通过支持不同协议,而且还通过以 允许在不同处理器之间分配分组的方式实现对分组的分类,来实现对多处 理器系统的优化。
在前述说明书中,已经参考本发明的特定实施例说明了本发明。然而, 显然在不脱离于本发明范围的情况下,可以对这些实施例做出各种修改和 变化。因此,应将说明书和附图认为是说明性的,而不是限制性意义的。
权利要求
1、一种方法,包括响应于接收到分组,在至少一个协议表之一中查询分组特性以确定所述分组中要用作散列值的一个或多个字段;将散列函数应用于所述散列值,以获得散列结果;并且用所述散列结果来确定多个处理器中用于处理所述分组的一个处理器。
2、 如权利要求l所述方法,其中,所述在至少一个协议表之一中查询 分组特性以确定所述分组中要用作散列值的一个或多个字段的步骤包括获得与所述分组特性相对应的偏移和掩码;并且在所述分组的起始比特加上所述偏移处,将所述掩码应用到所述分组。
3、 如权利要求l所述方法,其中,所述在至少一个协议表之一中查询 分组特性以确定所述分组中要用作散列值的一个或多个字段的步骤包括执行以下步骤,直至没有更多的层显露为止 显露下一层以揭示协议;并且如果所述揭示的协议是受支持的协议,就获得所述分组中的一个 或多个默认字段;将所述显露的下一层设定为最后显露的协议;在所述至少一个协议表之一中查询与最后显露的层相对应的分组特 性,以获得偏移和掩码;并且如果找到所述分组特性,就将所述偏移和所述掩码应用于所述分组。
4、 如权利要求3所述方法,还包括如果没有在所述至少一个协议表 之一中找到所述分组特性,那么就将所述一个或多个默认字段用作所述散 列值。
5、 如权利要求4所述方法,其中,如果没有默认字段,就将所述分组发送到所述多个处理器中默认的一个。
6、 一种方法,包括响应于接收到分组,确定与所述分组相关联的第一层协议是否是受支 持的第一层协议;并且如果所述第一层协议没有与受支持的第一层协议相关联在第一协议表中査询所述第一层协议,以确定要将所述分组中的 哪些比特用作散列值;将散列函数应用于所述散列值,以获得散列结果;并且 用所述散列结果确定多个处理器中用于处理所述分组的一个处理器。
7、 如权利要求6所述方法,还包括如果所述第一层协议与受支持的 第一层协议相关联获得与所述第一层协议相关联的第一组比特;确定与所述分组相关联的第二层协议是否是受支持的第二层协议;并且如果所述第二层协议没有与受支持的第二层协议相关联,就在第二协 议表中查询所述第二层协议。
8、 如权利要求7所述方法,还包括如果所述第二层协议与受支持的 第二层协议相关联,就在第三协议表中查询与所述第二层协议相对应的分 组特性。
9、 如权利要求6所述方法,还包括如果没有在所述至少一个协议表 之一中找到不受支持的第二层协议和与所述受支持的第二层协议相对应的 分组特性这两者中的一者,那么就将所获得的比特组用作所述散列值。
10、 一种设备,包括 逻辑,用于响应于接收到分组,在至少一个协议表之一中查询分组特性以确定所 述分组中要用作散列值的一个或多个字段;将散列函数应用于所述散列值,以获得散列结果;并且 用所述散列结果来确定多个处理器中用于处理所述分组的一个处理
11、 如权利要求10所述设备,其中,所述在至少一个协议表之一中査 询分组特性以确定所述分组中要用作散列值的一个或多个字段的步骤包 括获得与所述分组特性相对应的偏移和掩码;并且在所述分组的起始比特加上所述偏移处,将所述掩码应用到所述分组。
12、 如权利要求10所述设备,其中,所述在至少一个协议表之一中査 询分组特性以确定所述分组中要用作散列值的一个或多个字段的步骤包 括执行以下步骤,直至没有更多的层显露为止 显露下一层以揭示协议;并且如果所述揭示的协议是受支持的协议,就获得所述分组中的一个 或多个默认字段;将所述显露的下一层设定为最后显露的协议;在所述至少一个协议表之一中查询与最后显露的层相对应的分组特 性,以获得偏移和掩码;并且如果找到所述分组特性,就将所述偏移和所述掩码应用于所述分组。
13、 一种系统,包括电路板,其包括电路卡插槽;以及电路卡,其能够通过所述电路卡插槽耦合到所述电路板,所述电路卡 包括逻辑,该逻辑可操作用于响应于接收到分组,在至少一个协议表之一中查询分组特性以确定所 述分组中要用作散列值的一个或多个字段;将散列函数应用于所述散列值,以获得散列结果;并且 用所述散列结果来确定多个处理器中用于处理所述分组的一个处理器。
14、 如权利要求13所述的系统,所述用于在至少一个协议表之一中査 询分组特性以确定所述分组中要用作散列值的一个或多个字段的逻辑包括 用于以下的逻辑获得与所述分组特性相对应的偏移和掩码;并且 在所述分组的起始比特加上所述偏移处,将所述掩码应用到所述分组。
15、 如权利要求13所述的系统,所述用于在至少一个协议表之一中查 询分组特性以确定所述分组中要用作散列值的一个或多个字段的逻辑包括 用于以下的逻辑-执行以下步骤,直至没有更多的层显露为止 显露下一层以揭示协议;并且如果所述揭示的协议是受支持的协议,就获得所述分组中的一个 或多个默认字段;将所述显露的下一层设定为最后显露的协议;在所述至少一个协议表之一中查询与最后显露的层相对应的分组特 性,以获得偏移和掩码;并且如果找到所述分组特性,就将所述偏移和所述掩码用于所述分组。
16、 如权利要求15所述的系统,还包括如果没有在所述至少一个协 议表之一中找到所述分组特性,那么就将所述一个或多个默认字段用作所 述散列值。
17、 如权利要求16所述的系统,其中,如果没有默认字段,就将所述 分组发送到所述多个处理器中默认的一个。
18、 一种包含存储在其上的指令的制品,所述指令当被机器执行时,导致以下响应于接收到分组,在至少一个协议表之一中査询分组特性以确定所 述分组中要用作散列值的一个或多个字段;将散列函数应用于所述散列值,以获得散列结果;并且 用所述散列结果来确定多个处理器中用于处理所述分组的一个处理器。
19、 如权利要求18所述的制品,其中,导致所述机器在至少一个协议 表之一中查询分组特性以确定所述分组中要用作散列值的一个或多个字段 的所述指令进一步导致所述机器-获得与所述分组特性相对应的偏移和掩码;并且在所述分组的起始比特加上所述偏移处,将所述掩码应用到所述分组。
20、 如权利要求18所述的制品,其中,导致所述机器在至少一个协议 表之一中査询分组特性以确定所述分组中要用作散列值的一个或多个字段 的所述指令进一步导致所述机器-执行以下步骤,直至没有更多的层显露为止-显露下一层以揭示协议;并且如果所述揭示的协议是受支持的协议,就获得所述分组中的一个 或多个默认字段;将所述显露的下一层设定为最后显露的协议;在所述至少一个协议表之一中査询与最后显露的层相对应的分组特 性,以获得偏移和掩码;并且如果找到所述分组特性,就将所述偏移和所述掩码应用于所述分组。
21、 如权利要求20所述的制品,还包括导致所述机器执行以下步骤的 指令如果没有在所述至少一个协议表之一中找到所述分组特性,那么就 将所述一个或多个默认字段用作所述散列值。
22、 如权利要求21所述的制品,其中,如果没有默认字段,所述指令 进一步导致将所述分组发送到所述多个处理器中默认的一个。
全文摘要
在一个实施例中,提供了一种方法。这个实施例的方法提供了响应于接收到分组,在至少一个协议表之一中查询分组特性以确定该分组中要用作散列值的一个或多个字段;将散列函数用于散列值,以获得散列结果;并且用散列结果来确定多个处理器中用于处理该分组的一个处理器。
文档编号H04L12/56GK101455040SQ200780019526
公开日2009年6月10日 申请日期2007年6月26日 优先权日2006年6月28日
发明者L·科尼特, S·D·戈格兰 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1