增加网络设备中的分组处理速率
相关申请的交叉引用
本公开要求2013年12月18日提交的题为“Increasing packet processing bypacking packet headers”的第61/917,809号美国临时专利申请的权益。
技术领域
本公开总体上涉及网络设备,诸如网络交换机、桥接器、路由器等,并且更特别地涉及在网络设备中实现的分组处理技术。
背景技术
网络交换机通常包括耦合至不同链路的多个端口。网络交换机从网络接收分组并且对分组执行各种处理操作,这些处理操作可以包括与通过网络设备转发分组有关的处理操作,诸如基于分组首部中的地址来确定要将分组导向到的网络设备的端口、针对属于某些流的分组而执行的计量操作、安全策略操作等。
在一些应用中,网络设备可以取决于分组的来源不同地处理分组。比如,取决于分组是从耦合至数据中心的外部网络、从数据中心内的另一设备、还是从位于数据中心的不同层中的网络设备而接收的,可以存在不同的处理要求。
一些网络设备使用数据路径和控制路径来处理分组。数据路径通常缓冲所接收分组的数据直到分组从网络设备被传送,而控制路径通常执行分组的处理。数据路径的吞吐量被测量为数据速率(例如每秒比特数),而控制路径的吞吐量通常被测量为分组速率(例如每秒分组数)。控制路径的分组速率受到数据速率以及被处理的分组的大小的影响。例如,对于相同数据速率的分组流,与大于第一分组大小的第二分组大小相比,第一分组大小的分组速率相对较高。网络设备的性能通常通过缓解与控制路径的分组处理相关联的各种瓶颈来改善。
发明内容
在实施例中,一种用于处理网络设备中的分组的方法包括:在网络设备的第一端口处接收第一分组;从第一分组的首部中提取第一比特集合,第一比特集合对应于第一分组的首部中的第一比特位置集合;以及执行第一处理操作集合以使用从第一分组的首部中提取的第一比特集合来处理第一分组。方法还包括:在网络设备的第二端口处接收第二分组,第二端口不同于第一端口;从第二分组的首部中提取第二比特集合,第二比特集合对应于第二分组的首部中的第二比特位置集合,其中第二比特位置集合包含没有被包含在第一比特位置集合中的至少一个比特位置;以及执行第二处理操作集合以使用从第二分组的首部中提取的第二比特集合来处理第二分组,其中第二处理操作集合包含没有被包含在第一处理操作集合中的至少一个处理操作。
在另一实施例中,一种网络设备包括多个端口。网络设备还包括分组描述符生成器,分组描述符生成器被配置成生成与经由多个端口中的第一端口接收的第一分组相对应的第一数据结构,其中第一数据结构包含从第一分组的首部中提取的第一比特集合,第一比特集合对应于第一分组的首部中的第一比特位置集合。分组描述符还被配置成生成与经由多个端口中的第二端口接收的第二分组相对应的第二数据结构,第二端口不同于第一端口,其中第二数据结构包含于第二首部中的第二比特位置集合相对应的第二比特集合,并且其中第二比特位置集合包含没有被包含在第一比特位置集合中的至少一个比特位置。网络设备还包括分组处理器,分组处理器被配置成:执行第一处理操作集合以使用对应于第一分组的第一数据结构来处理第一分组,以及执行第二处理操作集合以使用对应于第二分组的第二数据结构来处理第二分组,其中第二处理操作集合包含没有被包含在第一处理操作集合中的至少一个处理操作。
在又一实施例中,一种用于处理网络设备中的分组的方法包括:在网络设备的端口处接收第一分组,第一分组将使用第一处理操作缩减集合来处理;以及从第一分组的首部中提取第一比特集合。方法还包括:在网络设备的端口处接收第二分组,第二分组将使用第二处理操作缩减集合来处理;以及从第二分组的首部中提取第二比特集合。方法另外包括将第一比特集合和第二比特集合组合成表示第一分组和第二分组的经组合的单个数据单元;以及向分组处理设备传送表示第一分组和第二分组的经组合的单个数据单元。方法还包括:在分组处理设备处分解单个数据单元以提取对应于第一分组的第一比特集合以及对应于第二分组的第二比特集合;执行第一处理操作缩减集合以使用对应于第一分组的第一比特集合来处理第一分组;以及执行第二处理操作缩减集合以使用对应于第二分组的第二比特集合来处理第二分组。
在又一实施例中,一种网络设备包括多个端口。网络设备还包括分组处理设备,其被配置成处理经由至少一个端口所接收的分组。网络设备还包括描述符生成器,描述符生成器被配置成:从在多个端口中的端口处接收的第一分组的首部中提取第一比特集合,第一分组将使用处理操作缩减集合来处理;以及从在多个端口中的端口处接收的第二分组的首部中提取第二比特集合,第二分组将使用第二处理操作缩减集合来处理。描述符生成器另外被配置成:将第一比特集合和第二比特集合组合成表示第一分组和第二分组的经组合的单个数据单元,以及向分组处理设备传送表示第一分组和第二分组的经组合的单个数据单元。分组处理设备被配置成:分解单个数据单元以提取对应于第一分组的第一比特集合和对应于第二分组的第二比特集合;执行第一指令缩减集以使用对应于第一分组的第一比特集合来处理第一分组;以及执行第二处理操作缩减集合以使用对应于第二分组的第二比特集合来处理第二分组。
附图说明
图1是根据实施例的被配置成对进入网络设备100的不同分组执行不同处理操作集合的示例网络设备的框图。
图2是根据实施例的被配置成组合对应于多个分组的首部信息的示例网络设备的框图。
图3是根据实施例的用于生成分组描述符的示例技术的流程图。
图4是根据实施例的用于确定分组描述符是要发送用于作为单独的单个分组描述符还是作为组合多个分组描述符的数据单元的部分来处理的示例技术的流程图。
图5是根据另一实施例的用于确定分组描述符是要发送用于作为独立的单个分组描述符还是作为组合多个分组描述符的数据单元的部分来处理的示例技术的流程图。
图6是根据实施例的用于处理分组的示例方法的流程图。
图7是根据另一实施例的用于处理分组的示例方法的流程图。
具体实施方式
在本文中描述的实施例中,网络设备被配置成对进入网络设备的不同分组执行不同的处理操作集合。在实施例中,网络设备被配置成对经由网络设备的不同端口进入网络设备的分组执行不同的处理操作集合。例如,网络设备被配置成对经由网络设备的第一端口进入网络设备的分组执行第一处理操作集合,并且对经由网络设备的第二端口进入网络设备的分组执行第二处理操作集合。
在实施例中,第一处理操作集合是网络设备被配置成执行以完全处理分组的处理操作“完全”集合,第二处理操作集合是仅包括网络设备被配置成执行以完全处理分组的处理操作的子集的缩减集合。例如,在实施例中,处理操作缩减集合仅包括与分组转发有关的处理操作,而处理操作完全集合除了与分组转发相关的处理操作之外还包括至少一个附加处理操作,诸如与对流经网络设备的分组进行计量有关的处理操作、与向进入网络设备的分组应用的安全策略有关的处理操作、与对属于不同数据流的分组计数的计量有关的处理操作等。在另一实施例中,第一处理操作集合和第二处理操作集合二者都是处理操作缩减集合,其中第一处理操作集合和第二处理操作集合包括网络设备被配置成执行的处理操作完全集合的不同子集。
在一些实施例中,网络设备被配置成取决于要由网络设备关于分组执行的不同的处理操作来从分组的首部中提取不同的比特集合。例如,与网络设备被配置成从要使用处理操作完全集合来处理的分组的首部中提取的比特完全集合相比,网络设备被配置成从要使用处理操作缩减集合来处理的分组的首部中提取比特缩减集合。在一些实施例中,网络设备被配置成将从相应两个或更多个连续接收的分组中提取的两个或更多个比特缩减集合组合成表示该两个或更多个分组的经组合的单个数据单元,并且向网络设备的各个处理部件以单个数据单元传送所提取的比特缩减集合。如下面更详细地描述的,在至少一些实施例中,将从多个分组中提取的比特缩减集合组合成经组合的单个数据单元并且向网络设备的各个处理部件传送该单个数据单元使得处理部件能够关于分组更快地执行至少一些操作,从而使得网络设备能够以与每个分组相关联的首部信息单独路由通过网络设备的***相比更快地来处理分组。
图1是根据实施例的被配置成对进入网络设备100的不同分组执行不同的处理操作集合的示例网络设备100的框图。网络设备100包括通信地耦合至多个链路(未示出)的多个端口104。在实施例中,端口104中的一些是用于耦合到局域网(LAN)、广域网(WAN)、服务器、其他交换***等的前端端口或网络端口。在实施例中,在包含网络设备100的交换***的模块拓扑结构中,其他端口104是用于将网络设备100耦合到一个或多个其他设备(诸如一个或多个第二级或交叉开关设备、一个或多个脊交换机设备等)的上行链路端口。虽然图1中图示4个端口104,然而网络设备100在各种实施例中包括任意合适数目的端口104。
在一些实施例中,端口104中的每个是可以充当入端口或出端口的双向端口。在其他实施例中,端口104中的至少一些专用于入端口或出端口。在实施例中,网络设备100被配置成经由入端口104接收分组,确定要经由其来传送分组的相应出端口104,并且经由所确定的端口104传送分组。在实施例中,网络设备100被配置成关于进入网络100的分组中的至少一些分组执行附加处理操作。例如,网络设备100被配置成实施与进入网络设备的分组的计量有关的处理操作、确定流过网络设备100的分组的字节计数的计数操作、与向流过网络设备的分组应用安全策略有关的处理操作、向进入网络设备100的分组应用访问控制策略、隧道传输处理操作等。在实施例中,网络设备100被配置成对经由不同端口104进入网络设备100的分组执行不同的处理操作集合。例如,在实施例中,网络设备100被配置成与经由上行链路端口104从包括网络设备100的交换***中的另一网络设备进入网络设备100的分组相比而关于由网络设备100经由网络端口104从网络接收的分组实施不同的处理操作集合。
仍然参考图1,网络设备100包括数据路径106和控制路径108。在实施例中,数据路径106包括用于存储经由入端口104接收的分组的各种部件,例如直到确定应当经由哪个或哪些端口104而从网络设备100传送这些分组。另一方面,控制路径108包括用于处理分组的各种部件,例如用于确定要经由哪些出端口104传送分组。
一般而言,在实施例中,数据路径106的部件被配置成支持经由端口104接收的分组的某个每秒比特率(本文中也称为线路速率)、或者可以由数据路径106的部件在给定时间段中处理的比特(或字节)的数目。另一方面,在实施例中,控制路径108的部件被配置成支持某个每秒分组速率、或者控制路径106的部件在给定时间段内可以处理的某个分组的数目。在至少一些实施例中,网络设备100支持各种长度的分组,诸如例如可变长度的以太网分组。在实施例中,数据路径106需要支持的每秒比特率通常不受网络设备100接收的分组的长度的影响。另一方面,控制路径108需要支持的每秒分组率可以依据所接收的分组的大小变化。例如,在实施例中,与较大大小的分组的流的处理相比,网络设备100接收的相对较小大小的分组的流增加了控制路径在某个时间段内需要处理的分组的数目。
在实施例中,为了加速网络设备100接收的分组中的至少一些分组的处理,网络设备100关于网络设备100接收的至少一些分组而实施处理操作缩减集合。例如,如以上描述的,网络设备100被配置成关于经由网络设备100的某些入端口104进入网络设备100的分组(诸如经由上行链路端口104进入网络设备100的分组,上行链路端口104将网络设备100连接到在包括网络设备100的数据中心内部的其他设备)而实施处理操作缩减集合。
在实施例中,控制路径108被配置成基于与分组相关联的某些信息(诸如从分组的首部中提取的某些首部字段)来执行分组的处理。在实施例中,数据路径106被配置成从分组的首部中提取比特集合,并且向控制路径108提供所提取的比特集合以用于分组的处理。在实施例中,控制路径108被配置成从数据路径106接收从分组的首部中提取的比特集合并且使用从数据路径106接收的比特执行分组的处理。在实施例中,当网络设备100接收到要使用处理操作缩减集合来处理的分组时,数据路径106从分组的首部中提取比特缩减集合,并且向控制路径108提供该比特缩减集合。在实施例中,比特缩减集合包括控制路径108对分组执行处理操作缩减集合所需要的比特。
数据路径106包括分组缓冲器110,分组缓冲器110耦合至端口104并且被配置成存储经由入端口104接收的分组,例如在分组等待经由出端口104传输时。在实施例中,缓冲器110包括暂时缓冲器112和排队或目标已知(target-aware)缓冲器114。在各种实施例中,暂时缓冲器112和排队缓冲器114中的每个实施为合适的非瞬态存储器设备(诸如随机存取存储器(RAM))或者另一合适类型的存储器。在另一实施例中,暂时缓冲器112和排队缓冲器114被包括在相同的非瞬态存储器设备(诸如随机存取存储器(RAM))或者另一合适类型的存储器中。在实施例中,暂时缓冲器112被配置成在分组的首部或者表示分组的其他合适的数据结构被处理(例如以确定分组的目标出端口,执行各种操作,诸如记时,执行各种安全和检查操作等)的同时存储分组或其部分。在实施例中,分组在通常与完成分组的处理所需要的时间段相对应的时间段期间存储在暂停缓冲器112中。在实施例中,对于“存储转发”分组,在分组的处理完成之后,分组被传送给排队缓冲器114,并且被调度用于从查询缓冲器114传输。另一方面,在实施例中,在“直通转发(cut-through)”分组的情况下,不向排队缓冲器114传送分组,而是直接从暂时缓冲器112传输分组。
在实施例中,耦合至端口104的描述符生成器116被配置成解析经由端口104接收的分组的首部并且从分组的首部中提取比特集合(例如提取某些首部字段)。在实施例中,描述符生成器116被配置成取决于分组由网络设备100经由哪些入端口104接收来从分组中提取不同的比特集合。例如,在其中网络设备100被配置成使用不同处理操作集合处理经由不同入端口104接收的分组的实施例中,描述符生成器116被配置成从经由不同端口104接收的分组的首部中提取执行不同的处理操作集合所需要的不同比特集合。在实施例中,描述符生成器116被配置成生成对应于分组的分组描述符或另一合适的数据结构并且将从分组的首部中提取的比特集合包含在对应于分组的分组描述符中。
在实施例中,控制路径108包括分组处理器118。在实施例中,分组处理器118包括被配置成执行各种分组处理任务(诸如以上所讨论的)的一个或多个有形的/物理处理器。在第一说明性实施例中,分组处理器118包括被配置成读取和执行在有形非瞬态计算机可读存储器(例如随机存取存储器(RAM)、只读存储器(ROM)、FLASH存储器等)上存储的软件和/或固件的一个或多个处理器,处理器被配置成执行用于执行分组处理操作的指令。在一些实施例中,软件或固件指令包括在由处理器执行时使得处理器执行本文中描述的分组处理器118的各种动作中的任何动作的计算机可读指令。在一些实施例中,分组处理器118的处理器耦合至由处理器用于卸载某些分组处理任务的一个或多个硬件引擎。在另一说明性实施例中,分组处理器118包括以硬件实现的分组处理管线,诸如一个或多个集成电路(IC)、专用集成电路(ASIC)、或任何其他合适类型的硬件电路。
在示例实施例和场景中,网络设备100经由端口104a接收第一分组120-1。在实施例中,网络设备100被配置成使用第一分组处理操作集合处理经由端口104a进入网络设备100的分组。在实施例中,第一分组处理操作集合是处理操作缩减集合。例如,第一处理操作集合不包括所有的网络设备100被配置以执行的分组处理操作。仅作为示例,在实施例中,虽然网络设备100被配置成执行与转发、计量、监测、安全等有关的处理操作,然而第一处理操作集合仅包括与转发有关的处理操作,而不包括与计量、监测、安全等有关的处理操作。作为另一示例,在实施例中,虽然网络设备100被配置成执行与转发、计量、监测、安全等有关的处理操作,然而第一处理操作集合仅包括与转发和计量有关的处理操作,而不包括与监测、安全等有关的处理操作。
第一分组120-1的至少部分(诸如至少分组120-1的首部)被提供给描述符生成器116。在实施例中,分组描述符生成器116从第一分组120-1的首部中提取第一比特集合。在实施例中,第一比特集合对应于第一分组120-1的首部中的第一比特位置集合,诸如对应于第一分组120-1的首部中的第一首部字段集合的比特位置。在实施例中,分组描述符生成器116从第一分组120-1的首部中提取前n个比特,其中n是正整数。例如,在一些实施例中,分组描述符生成器116从第一分组120-1的首部中提取前64个比特、前128个比特等。在实施例中,描述符生成器116生成对应于分组120-1的分组描述符130-1,并且将从分组120-1的首部中提取的比特集合包括在描述符130-1中。
继续图1中图示的实施例和场景,网络设备100经由端口104c接收第二分组120-2。在实施例中,网络设备100被配置成使用第二分组处理操作集合处理经由端口104c进入网络设备100的分组。在实施例中,网络设备100被配置成对经由端口104c进入网络设备100的分组执行的第二分组处理操作集合与网络设备100被配置成对经由端口104a进入网络设备100的分组执行的第一处理操作集合相比是不同的处理操作集合。在实施例中,第二处理操作集合包括至少一个没有被包括在第一处理操作集合中的处理操作。在实施例中,第二处理操作集合是包括网络设备100被配置成执行的所有处理操作的处理操作完全集合。例如,在实施例中,第二处理操作集合包括与转发、计量、监测、安全等有关的处理操作。
在另一实施例中,网络设备100被配置成对经由端口104c进入网络设备100的分组执行的第二处理操作集合仅包括网络设备100通常被配置成执行的全部处理操作集合的子集。在实施例中,网络设备100被配置成对经由端口104c进入网络设备100的分组执行的处理操作子集不同于网络设备100被配置成对经由端口104a进入网络设备100的分组执行的处理操作子集。仅作为示例,虽然处理操作完全集合包括与转发、计量、监测、安全等有关的处理操作,然而在示例实施例中,网络设备100被配置成对经由端口104a进入网络设备100的分组执行的第一处理操作集合仅包括与分组的转发有关的处理操作,并且网络设备100被配置成关于经由端口104c进入网络设备100的分组执行的第二处理操作集合包括与分组的转发和分组字节的计数有关的处理操作。
分组120-2的至少部分(诸如至少分组120-2的首部)被提供给描述符生成器116。在实施例中,分组描述符生成器116从第二分组120-2的首部中提取第二比特集合。在实施例中,由描述符生成器116从第二分组120-2中提取的第二比特集合不同于由分组描述符生成器116从第一分组120-1的首部中提取的第一比特集合。在实施例中,与从第一分组120-1的首部中提取的第一比特集合对应的比特位置相比,由描述符生成器116从第二分组120-2中提取的第二比特集合对应于第二分组的首部中的不同比特位置集合。在实施例中,描述符生成器116从第二分组120-2的首部中提取与由描述符生成器116从第一分组120-1的首部中提取的首部字段集合不同的首部字段集合。
在实施例中,分组描述符生成器116从第二分组120-2的首部中提取前m个比特,其中m是正整数。在实施例中,与描述符生成器116从第一分组120-1的首部中提取的比特的数目相比,描述符生成器116从第二分组120-2的首部中提取更大数目的比特(例如m>n)。例如,虽然分组生成器116从第一分组120-1的首部中提取前64个比特,但在示例实施例中,分组生成器116从第二分组120-2的首部中提取前128或前256个比特。仅作为另一示例,虽然分组生成器116从第一分组120-1的首部中提取前128个比特,但是在另一示例实施例中分组生成器116从第二分组120-2的首部中提取前256个比特。
在实施例中,描述符生成器116生成对应于第二分组120-2的分组描述符130-2,并且将从第二分组120-2的首部中提取的比特集合包括在描述符130-2中。在实施例中,由于与描述符116从第一分组120-1的首部中提取的比特的数目相比,描述符生成器116从第二分组120-2的首部中提取不同数目的比特,所以对应于第二分组120-2的分组描述符130-2的大小不同于对应于第一分组120-1的分组描述符130-1的大小。例如,在实施例中,分组描述符130-2的大小是分组描述符130-1的大小的一半。作为另一示例,在另一实施例中,分组描述符130-2是分组描述符130-1的大小的四分之一。
在实施例中,分组描述符130-1和分组描述符130-2每个被提供给分组处理器118。在实施例中,分组处理器108分别使用分组描述符130-1和分组描述符130-2中的信息来执行第一分组120-1和第二分组120-2的处理。在实施例中,分组处理器118执行第一处理操作集合以使用从第一分组120-1的首部中提取并且被包括在分组描述符130-1中的第一比特集合来处理第一分组120-1,并且执行第二处理操作集合以使用从第一分组120-2的首部中提取并且被包括在分组描述符130-2中的第二比特集合来处理第二分组120-2。在其中分组处理器118包括被配置成使用计算机可读指令来处理分组的一个或多个处理器的实施例中,分组处理器118执行第一指令集以处理第一分组120-1,并且执行第二指令集以处理第二分组120-2。在实施例中,第一指令集使得处理器118执行第一处理操作集合,并且第二指令集使得处理器118执行第二处理操作集合。
在一些实施例中,第一分组120-1的处理包括修改分组描述符130-1,例如用以修改分组120-1的首部的一个或多个字段。类似地,在一些实施例中,第二分组120-2的处理包括修改分组描述符130-2,例如用以修改分组120-2的首部的一个或多个字段。例如,在实施例中,分组处理器118修改分组的首部的一个或多个字段(例如,分组120-1和/或分组120-2)以改变下一跳跃地址,以添加封装首部,以移除封装首部,等等。
在实施例中,在使用分组描述符130-1处理第一分组120-1之后,分组处理器118向缓冲器110写入分组描述符130-1或分组描述符1301的已修改版本,并且分组120-1随后从一个或多个适当的端口104传送。类似地,在实施例中,在使用分组描述符130-2处理第二分组120-2之后,分组处理器118向缓冲器110写入分组描述符130-2或分组描述符130-2的已修改版本,并且分组120-2随后从一个或多个适当的端口104传送。
图2是根据实施例的另一示例网络设备200的框图。在实施例中,网络设备200类似于图1的网络设备100。例如,在实施例中,网络设备200被配置成对不同分组执行不同的处理操作集合,并且取决于要关于分组执行的特定处理操作从不同分组中提取不同的比特集合。另外,在实施例中,网络设备200被配置成将从多个分组的首部中提取的比特缩减集合组合成组合的单个数据单元,并且向控制路径以单个数据单元提供从多个分组的相应首部中提取的比特缩减集合。如下面更详细地描述的,在至少一些实施例中,将对应于不同分组的比特集合组合成组合的单个数据单元并且向控制路径以单个数据单元提供比特集合减小或消除了由于处理多个分组的处理操作缩减集合的执行而产生的与增加的分组每秒处理速率相关联的处理瓶颈。
网络设备200包括数据路径206和控制路径208。数据路径206包括分组缓冲器110,分组缓冲器110又包括暂时缓冲器112和排队缓冲器114,如以上关于图1描述的。另外,数据路径206包括描述符生成器202,描述符生成器202又包括描述符打包单元204。在实施例中,描述符生成器202与图1的描述符生成器116相同或相似。一般而言,在实施例中,描述符生成器202被配置成从分组的首部中提取比特集合,将所提取的比特集合包括在针对分组生成的分组描述符中,并且向控制路径208提供分组描述符以用于由控制路径208来处理与描述符相关联的分组。在实施例中,描述符打包单元204被配置成将对应于多个分组的多个描述符组合成表示多个分组的组合的单个数据单元并且向控制路径208以单个数据单元提供多个描述符。例如,在实施例中,在其中描述符生成器202从多个连续接收的分组的首部中提取比特缩减集合的至少一些情况下,描述符打包单元204将从多个分组中提取的比特缩减集合组合成表示多个分组的组合的单个描述符,并且向控制路径208提供单个描述符。
在一些实施例中,描述符打包单元204被配置成仅在关于多个分组满足用于对从多个分组中提取的比特集合进行组合的一个或多个准则时组合从多个分组中提取的比特缩减集合(或者包括比特缩减集合的描述符)。例如,在实施例中,描述符打包单元204被配置成仅在多个分组的相应大小低于门限的情况下组合从多个分组中提取的比特缩减集合。类似地,在实施例中,描述符打包单元204被配置成仅在网络设备200接收相应分组之间的时间间隙低于门限的情况下组合从多个分组中提取的比特缩减集合。另一方面,在实施例中,如果关于多个分组不满足用于对从多个分组中提取的比特集合进行组合的一个或多个准则,则描述符打包单元204不组合从多个分组中提取的比特集合,而是将每个比特集合(例如每个描述符)单独传送给控制路径208。
在图2中图示的示例场景中,网络设备200经由端口104b接收第一分组220-1。随后,网络设备200经由端口104b接收第二分组220-3。在示例实施例中,网络设备200被配置成关于经由端口104b进入网络设备100的分组执行处理操作缩减集合。分组220-1和220-2中的每个的至少部分(诸如首部)被提供给描述符生成器202。在实施例中,描述符生成器202生成对应于第一分组220-1的第一分组描述符230-1a,并且生成对应于第二分组220-2a的第二分组描述符230-2a。在实施例中,第一分组描述符230-1a包括从第一分组220-1的首部中提取的比特缩减集合。类似地,在实施例中,第二分组描述符230-2a包括从第二分组220-2的首部中提取的比特缩减集合。在实施例中,描述符打包单元204将第一分组描述符230-1a和第二分组描述符230-2a组合成单个数据结构,诸如表示第一分组220-1和第二分组220-2的单个“组合”分组描述符232a。在实施例中,描述符打包单元204被配置成在组合分组描述符232中包括指示(例如“打包标志”),用以指示组合分组描述符232表示多个分组的并且包括从多个分组中提取的相应首部比特集合。在实施例中,描述符生成器202然后向控制路径208以单个数据单元传送组合分组描述符232a用于由控制路径208来处理相关联的分组220-1和分组220-2。
在实施例中,将多个分组描述符组合成单个描述符使得控制路径208的至少一些部件(诸如控制路径208的至少一些硬件部件)能够以单个数据单元处理多个分组描述符,从而使得控制路径208的各个部件(例如下面更详细地描述的分发器、重新排序块、互连网络)与其中分组描述符被单独提供给部件的***相比能够更快地处理分组。因此,在至少一些实施例和/或场景中,在不增加这些部件的数目和/或复杂性的情况下,提高了控制路径208支持的每秒分组率(与其中分组描述符由这些部件单独处理的***相比)。
在实施例中,控制路径208包括分发器210、重新排序块212、多个外部引擎216、分组处理器217和互连网络218。在实施例中,分组处理器217与图1的分组处理器118相同或相似。在另一实施例中,分组处理器217是不同于图1的分组处理器108的合适的分组处理器。在图2中图示的实施例中,分组处理器217包括被配置成同时并行执行相应分组描述符的处理以处理与分组描述符相关联的分组的多个分组处理节点(PPN)220。根据实施例,PPN 200被配置成通过执行存储在非瞬态存储器(未示出)中的计算机可读指令来处理分组描述符,并且每个PPN 220被配置成执行描述符的所有必要处理(运行以完成处理)。在其他实施例中,至少一些PPN 220被配置成仅执行描述符的必要处理的子集。另一方面,在实施例中,分发器210、重新排序块212和外部引擎216使用专用集成电路(ASIC)或其他硬件部件来实现。
分发器210被配置成从描述符生成器202接收分组描述符并且向PPN 220分发分组描述符用于由PPN 220来处理相关联的分组。在分组的处理期间,PPN 220被配置成选择性地接合外部处理引擎216用于执行外部引擎216被配置成执行的特定处理操作。在至少一些实施例中,PPN 220被配置成不执行外部处理引擎216被配置成执行的特定处理操作。在至少一些实施例和/或场景中,外部处理引擎106被配置成执行的特定处理操作通常是高度资源密集的和/或如果该操作使用更通用的处理器(诸如PPN 220)来执行的话需要相对较长的时间来执行。在至少一些实施例和场景中,PPN 220执行外部处理引擎216被配置成执行的处理操作需要明显更长时间(例如是2倍长、10倍长、100倍长等)。正因如此,在至少一些实施例和/或场景中,外部处理引擎216通过使PPN 220执行需要很长时间的至少一些处理操作加速来帮助PPN 220。因此,外部处理引擎216在本文中有时称为“加速引擎”。
在实施例中,PPN 220被配置成利用由加速引擎216执行的处理操作的结果以用于分组的进一步处理,例如以确定要关于分组进行的某些动作,诸如转发动作、策略控制动作等。在实施例中,在描述符的处理完成之后,PPN 220将处理后的描述符提供给描述符缓冲器214用于随后的传输以将处理后的描述符传输给数据路径206。
通常,需要通过网络设备维持数据流中的数据分组的顺序,使得从网络设备传送分组的顺序与网络设备接收分组的顺序相同。然而,在至少一些场景中,由于数据流中的分组的处理被分布在PPN220中的多个之间,所以数据流中的分组的处理由PPN 220按照与网络设备200接收分组的顺序不同的顺序来完成。分组处理的无序完成是由于例如不同PPN220在访问外部资源(诸如外部存储器、外部硬件引擎等)用于对分组执行处理操作时遇到的潜伏期(latency)的变化。在实施例中,重新排序块212被配置成维持至少属于进入网络设备的相同数据流的分组的顺序以确保这些分组按照网络设备接收分组的顺序从网络设备传送。特别地,在实施例中,重新排序块212确保描述符按照控制路径208从数据路径206接收描述符的顺序从控制路径208传送到数据路径206。
如以上讨论的,在实施例中,网络设备200被配置成关于经由一个或多个特定端口104进入网络设备200的分组执行处理操作缩减集合。在实施例中,PPN 220被配置成执行在耦合到PPN 220的程序存储器中存储的指令缩减集,其中指令缩减集使得PPN 220执行处理分组的处理操作缩减集合。在至少一些实施例中,执行处理操作缩减集合以对提供给PPN220来处理的分组中的一些分组进行处理通常提高了PPN 220支持的最大每秒分组率。在实施例中,增加PPN 220支持的最大每秒分组率使得网络设备200能够使用相对较少的PPN220(与不使用缩减处理的***相比)来支持分组处理器118的某个整体分组处理速率。例如,在实施例中,与PPN 220执行指令缩减集相关联的线程潜伏期是与PPN 220执行指令完全集相关联的线程潜伏期的一半。在实施例中,与指令缩减集的执行相关联的减小的线程潜伏期降低了与PPN 220处理分组相关联的整体平均线程潜伏期。在实施例中,减小的平均线程潜伏期导致支持某个分组处理速率需要相对较少的PPN 220。在其中PPN 220布置在被配置成共享各个资源(诸如存储器资源、引擎互连资源等)的多个PPN集群(PPC)中的实施例中,与处理分组不使用指令缩减集的***相比,每个集群中包括更少的PPN。
类似地,在实施例中,在至少一些实施例和/或场景中,在执行指令缩减集以处理分组时,减小了PPN 220在处理分组期间在PPN 220与引擎216之间的事务(transaction)的数目(例如减小了50%)。减小用于PPN 220处理分组中的至少一些分组的事务的数目带来了支持这样的事务的部件(诸如互连网络218、引擎216访问用以执行事务所指示的查找的存储器等)的复杂性的降低。在一些实施例中,网络设备200包括执行与事务相关联的处理操作所需要的重复(duplicate)资源以支持处理操作缩减集合中包括的特定处理操作(诸如转发操作、计量操作等)的增加的速率。例如,在实施例中,网络设备200包括用以支持包括转发操作的处理操作缩减集合的一个或多个重复转发表格。类似地,网络设备200包括用以支持包括计数操作的处理操作缩减集合的一个或多个重复计数器、用以支持包括计量操作的处理操作缩减集合的一个或多个重复计量设备等等。
在实施例中,当分发器210接收到表示多个分组并且包含对应于多个分组的多个描述符的组合的单个分组描述符时,分发器210向可用的PPN 220提供单个分组描述符。PPN220分解单个分组描述符以检索对应于被包括在单个分组描述符中的相应分组的分组描述符,并且关于从组合分组描述符中提取的每个描述符执行指令缩减集。例如,在图2中图示的示例场景中,分发器210接收包括对应于第一分组220-1的描述符230-1a和对应于第二分组220-2的描述符220-2a的组合分组描述符232a。在实施例中,分发器210将组合分组描述符232a作为单个数据单元提供给PPN 220。在实施例中,PPN 220从分发器220接收组合分组描述符232a,并且基于例如分组描述符232a中包括的打包标记确定分组描述符232a是表示多个分组的组合分组描述符。在实施例中,响应于确定分组描述符232a是组合分组描述符,PPN 220分解组合分组描述符232a以提取第一分组描述符230-1a和第二分组描述符230-2a。在实施例中,PPN 220处理第一分组描述符230-1a以处理第一分组220-1,并且处理第二分组描述符230-2a以处理第二分组220-2。在实施例中,PPN 229执行指令缩减集以执行处理操作缩减集合从而处理第一分组220-1和第二分组220-2。在另一实施例中,PPN 220执行不同的指令缩减集以执行不同的处理操作缩减集合从而处理第一分组220-1和第二分组220-2。在实施例中,PPN 220在开始与第二分组220-2对应的第二分组描述符230-2a的处理之前完成与第一分组220-1对应的第一分组描述符230-1a的处理。在另一实施例中,PPN220采用多线程处理同时处理对应于第一分组220-1的第一分组描述符230-1a和对应于第二分组220-2a的第二分组描述符230-2。
在实施例中,在处理第一分组描述符230-1a和第二分组描述符230-2a之后,PPN220将对应于第一分组220-1的已处理第一分组描述符230-1b和对应于第二分组220-2的已处理第二分组描述符230-2b组合成组合的单个已处理分组描述符232b,并且将组合的单个已处理分组描述符232b提供给已处理描述符214。在实施例中,处理第一分组描述符230-1a包括修改分组描述符230-1a,例如用以改变从第一分组220-1的首部中提取并且被包括在第一分组描述符230-1a中的一个或多个首部比特,向分组描述符230-1a添加信息(例如转发决策)等。在本实施例中,已处理第一分组描述符230-1b是第一分组描述符230-1a的修改版本。在另一实施例中,已处理描述符230-2b是描述符230-2a的未修改版本。类似地,在实施例中,处理第二分组描述符230-1b包括修改分组描述符230-1b,例如用以改变从第二分组220-2的首部中提取并且被包括在第二分组描述符230-2a中的一个或多个首部比特,向分组描述符230-2a添加信息(例如转发决策)等。在本实施例中,已处理第二分组描述符230-2b是第一分组描述符230-2a的已修改版本。在另一实施例中,已处理描述符230-2b是描述符230-2a的未修改版本。
在实施例中,在向缓冲器214提供已处理组合描述符232b时,PPN 220向重新排序块212告知PPN 220已经完成组合分组描述符232a的处理。在实施例中,当先于分组描述符232a从数据路径206接收的所有分组描述符(或者包含多个分组描述符的数据单元)已经返回数据路径206时,分组重新排序块212使得已处理的组合的单个分组描述符232b从缓冲器214传送给数据路径206。允许重新排序块212以单个数据单元处理2个分组描述符减小了重新排序块212需要执行以便维持分组顺序的操作的数目。例如,重新排序块212仅需要执行单个处理操作以处理来自PPN 220的、指示PPN 220已经完成组合分组描述符232a的处理用以指示PPN 220已经完成第一分组220-1和第二分组220-2二者的处理的单个指示。类似地,作为另一示例,在实施例中,重新排序块212仅需要执行单个操作以使得第一已处理描述符230-1b和第二已处理描述符230-2b返回数据路径206。在至少一些实施例中,作为PPN 220执行的指令缩减集的结果,将重新排序块212执行以处理组合分组描述符所需要的操作的数目降低使得重新排序块212能够支持PPN 220的更高处理速率,而不增加重新排序块212的尺寸和/或复杂性。
在实施例中,已处理组合分组描述符232b被提供给描述符拆包单元205。在实施例中,描述符拆包单元205分解已处理组合分组描述符232b以提取第一已处理分组描述符230-1b和第二已处理分组描述符230-2b。在实施例中,描述符拆包单元205将第一已处理分组描述符230-1b和第二已处理分组描述符230-2b写入缓冲器110用于从一个或多个适当端口104传送相关联的第一分组220-1和第二分组220-2。
在实施例中,网络设备200支持单播和多播业务。在实施例中,在一些情况下,描述符打包单元204被配置成将对应于单播分组的分组描述符与对应于多播分组的分组描述符组合成组合的单个分组描述符。在实施例中,在其他情况下,描述符打包单元204被配置成组合对应于两个或更多个多播分组的分组描述符。在实施例中,当分组处理器217接收到包括对应于单播分组的第一分组描述符和对应于多播分组的第二分组描述符的组合分组描述符时,分组处理器217执行第一分组描述符的入处理和出处理,并且仅执行第二分组描述符的入处理。在实施例中,分组处理器217确定用于出送第一(单播)分组的目的地端口104,并且确定用于处理第二(多播)分组的第二实例的回送端口。在描述符拆包单元205分解对应于第一分组和第二分组的已处理组合分组描述符之后,对应于多播分组的分组描述符被回送到控制平面208用于多播分组的下一实例的处理。在实施例中,与多播分组对应的分组描述符到控制平面208的回送绕开描述符打包单元204。换言之,在本实施例中,不执行与被回送到控制平面208的多播分组对应的描述符的组合。
在一些实施例中,与控制路径208支持的分组速率相比,数据路径206的更高进入分组速率引起的拥塞导致控制路径208的过量预定(oversubscription)。在实施例中,网络设备200被配置成向所接收的分组指派过量预定优先级,并且在拥塞发生时丢弃一个或多个较低优先级分组。在实施例中,当描述符打包单元204组合对应于不同分组的多个(例如2个、3个等)分组描述符并且分组描述符中的至少一个对应于更高优先级分组时,描述符打包单元204向表示多个分组的组合描述符分配较高优先级。在这种情况下,在实施例中,如果对应于较低优先级分组的分组描述符与对应于较高优先级分组的分组描述符组合,则较低优先级分组出于减小网络设备200中的拥塞的目的而被作为较高优先级分组处理。
在实施例中,网络设备200支持“存储转发”处理以及“直通转发”处理。通常,在存储和转发分组处理中,描述符生成器202在相关联的分组已经被完全接收并且缓冲在缓冲器110中之后将分组描述符传递给控制路径208。在直通转发处理中,描述符生成器202在相关联的分组被网络设备200整个接收并且缓冲在缓冲器110中之前生成对应于分组的“直通转发”描述符,并且将“直通转发”描述符传递给控制路径206。在至少一些实施例和/或场景中,网络设备200使用由控制路径208基于直通转发描述符做出的转发决策并且在网络设备200完成整个分组的接收之前开始分组的传输。在一些实施例中,除了针对分组生成的直通转发首部,描述符生成器202在整个分组已经被网络设备200接收之后生成对应于分组的第二描述符(以及“存储转发”描述符),并且将第二描述符传递给控制路径208。控制路径208使用第二分组描述符关于分组做出一个或多个另外的(例如非转发)决策。在实施例中,一个或多个非转发操作通常确定和/或利用那些只有在整个分组在缓冲器中可用之后能够确定(或者准确地确定)的信息。在各种实施例中,例如,非转发操作包括确定整个分组的字节计数的计数操作、使用整个分组是否包含任何错误的知识的镜像操作等。
在实施例中,当针对分组生成直通转发分组描述符时,描述符打包单元204不执行直通转发描述符的打包从而不延迟直通转发分组的处理或向该处理增加潜伏期。相反,在本实施例中,直通转发分组描述符被单独地传送给控制路径208。另一方面,在实施例中,当针对分组生成存储转发分组描述符时,描述符打包单元204在至少一些情况下执行存储转发描述符的打包以将存储转发描述符与一个或多个其他描述符组合。
图3是根据实施例的用于生成分组描述符的示例技术300的流程图。在实施例中,技术300由图2的网络设备200来实现。例如,在实施例中,技术300由网络设备200的描述符生成器210来实现。在其他实施例中,技术300由网络设备200的另一部件来实现,或者由除了网络设备200之外的其他合适的网络设备来实现。为了便于解释,参考图2的网络设备200来描述技术300。
在块302,描述符生成器210开始接收分组或对应于分组的首部,其由网络设备200经由端口104来接收。在块402处,在开始分组或分组首部的接收之后,描述符生成器210等待预定时间段。例如,在实施例中,描述符生成器等待对应于分组或分组首部的前x个字节(例如前128个字节)的接收的时间量。在块306,描述符生成器210确定应当生成直通转发描述符还是存储转发描述符。如果在块306确定应当生成直通转发描述符并且分组尚未被网络设备200完全接收,则描述符生成器210在块308生成直通转发描述符。另一方面,如果确定206应当针对分组生成存储转发分组描述符并且整个分组已经被网络设备200接收并且缓存在缓冲器118中,则在块310生成存储转发描述符。
图4是根据实施例的用于确定要发送分组描述符用于作为单独的单个分组描述符还是作为组合多个分组描述符的数据单元的部分来处理的示例技术400的流程图。在实施例中,技术400由图2的网络设备200来实现。例如,在实施例中,技术400由图2的描述符打包单元204来实现。在其他实施例中,技术400由网络设备200的另一部件来实现,或者由除了网络设备200之外的其他合适的网络设备来实现。为了便于解释,参考图2的网络设备200来描述技术400。
在块402,描述符打包单元204等待分组描述符的接收。在块404,在块302处接收到描述符的至少部分之后,描述符打包单元204确定描述符是否对应于直通转发分组。例如,在实施例中,描述符打包单元204基于描述符中包括的指示来确定描述符是否对应于直通转发分组。如果在块404确定描述符对应于直通转发分组,则技术400在块406继续,在块406,将描述符作为单个分组描述符发送给控制路径216。然后,技术400返回块402,在块402,描述符打包单元等待下一描述符。
另一方面,如果在块404确定描述符不对应于直通转发分组,则技术400在块408继续。在块408,描述符打包单元204重置用于测量两个连续的描述符的接收之间的时间间隙的计时器(将其设置为0值)。在块410,使在块408设置的计时器递增。然后,在块412,确定下一连续描述符是否已经被描述符打包单元204接收到,如果在块412确定下一描述符已经被接收到,则技术400在块416继续,在块416,描述符打包单元将两个连续接收的分组描述符组合成单个数据单元。在实施例中,分组描述符生成器210然后将包括两个连续接收的分组描述符的数据单元传送给控制路径206以用于由控制路径206的部件来处理。
另一方面,如果在块412确定下一分组描述符尚未被描述符打包单元204接收到,则技术在块418继续。在块418,确定在块410设置的计数器是否超时。例如,在实施例中,描述符打包单元204将计时器的当前值与门限值(例如,与某个数目的字节的接收对应的值,诸如128个字节)相比较,并且在当前计时器值超过门限值的情况下确定计时器已经超时。如果计时器已经超时,则技术在块406继续,在块406,将分组描述符作为单个分组描述符发送给控制路径216。如果在块418确定计时器尚未超时,则技术400在块410继续,在块410,计时器再次递增。在实施例中,重复块410、412和418,直到(i)在块418确定计时器超时,在这种情况下将分组描述符作为单个分组描述符发送给控制路径206,或者直到(ii)在块412确定已经在计时器的超时之前接收到下一分组描述符,在这种情况下,将两个连续接收的分组描述符组合成单个数据单元,并且然后将单个数据单元发送给控制路径206。
图5是根据实施例的示例技术500的流程图。在实施例中,技术500被实现以确定应当将分组描述符与另一分组描述符组合还是应当将分组描述符单独发送给控制路径以减小与组合多个分组描述符相关联的潜伏期。在实施例中,技术500由图2的网络设备200来实现。例如,在实施例中,技术500由网络设备200的描述符生成器202来实现。在其他实施例中,技术500由网络设备200的另一部件来实现,或者由除了网络设备200之外的其他合适的网络设备来实现。为了便于解释,参考图2的网络设备200来描述技术500。
在块502,重置时间计数器和分组计数器。在实施例中,在块502重置时间计数器和分组计数器包括将时间计数器和分组计数器设置为0值。在块504,递增时间计数器。在块506,确定是否已经接收到分组的结尾。如果在块506确定已经接收到分组的结尾,则技术500在块508继续,在块508,递增分组计数器。然后,在块510,确定分组计数器是否等于2。换言之,在块510确定块506检测到的分组的结尾是否对应于分组描述符生成器202连续接收到的第二分组。如果在块510确定分组计数器等于2,则在块512将对应于描述符生成器202连续接收的两个分组的两个描述符组合成组合的单个描述符。然后,在块514,重置分组计数器(例如,将其设置为0值),并且在块516,将时间计数器设置为最大值(例如,与接收128个比特对应的时间值)。另一方面,如果在块510确定分组计数器不等于2(例如,如果在块506处检测到的分组的结尾对应于仅第一分组),则技术500直接跟进到块516,在块516,将时间计数器设置为最大值。在任何情况下,在块516之后,技术500返回块504,在块504,递增时间计数器。
返回块506,如果确定尚未接收到分组的结尾,则技术500继续到块518,在块518,将时间计数器与门限值(例如,与某个数目的字节的接收对应的值,诸如128个字节)相比较。如果时间计数器超过门限,则技术500在块520继续,在块520,确定分组计数器是否等于1。如果在块520确定分组计数器等于1,则在块522将与1个接收的分组对应的分组描述符作为单个分组描述符传输给控制路径208。如果在块520确定分组计数器尚不等于1(例如分组计数器等于0),则技术500在块524继续,在块524,描述符生成器202等待分组的结尾的接收。当分组的结尾被接收到时,技术500跟进到块522,在块522,将对应于单个分组的分组描述符作为单个分组描述符传输给控制路径208。在实施例中,在块522之后,技术500在块502重新开始。
图6是根据实施例的用于处理网络设备中的分组的示例方法600的流程图。在实施例中,图1的网络设备100实现方法600。在一些实施例中,方法600由网络设备200来实现。仅出于解释目的参考图2讨论方法600。在其他实施例中,方法600由不同于网络设备100(图1)和/或网络设备200(图2)的合适的网络设备来实现。
在块602,在网络设备的第一端口接收第一分组。在实施例中,网络端口是将网络设备耦合到网络的网络端口。在块604,从在块602处接收的第一分组的首部中提取第一比特集合。在实施例中,第一比特集合对应于第一分组的首部中的第一比特位置集合。在实施例中,第一比特集合对应于第一分组的首部中的第一首部字段集合。
在块606,执行第一处理操作集合以使用在块604从第一分组的首部中提取的第一比特集合来处理第一分组。在实施例中,第一处理操作集合是包括网络设备被配置成执行的分组处理操作的子集的缩减分组处理操作子集。例如,在实施例中,第一处理操作集合仅包括与分组的转发有关的处理操作。
在块608,在网络设备的第二端口处接收第二分组。在实施例中,网络设备的第二端口不同于在块602接收第一分组的第一端口。在实施例中,第二端口是将网络设备耦合到另一网络设备(诸如多级交换***中的交换设备)的上行链路端口。
在块610,从第二分组的首部中提取第二比特集合。在实施例中,第二比特集合对应于第二分组的首部中的第二比特位置集合。在实施例中,第二比特位置集合包括没有被包括在对应于在块604从第一分组的首部中提取的第一比特集合的第一比特位置集合中的至少某个一比特位置。在实施例中,第二比特集合对应于第二分组的首部中的第二首部字段集合。在实施例中,第二首部字段集合包括没有被包括在对应于在块604从第一分组的首部中提取的第一比特集合的第一首部字段集合中的至少一个首部字段。作为示例,在实施例中,第一首部字段集合包括与转发有关的一个或多个首部字段,诸如转发标记字段、源地址字段和目的地地址字段中的一个或多个。另一方面,例如,在本实施例中,第二首部字段集合包括至少一个与转发不相关并且没有被包括在第一首部字段集合中的首部字段,诸如以太类型字段或误差校验和字段。
在块612,执行第二处理操作集合以使用在块604从第二分组的首部中提取的第二比特集合处理第二分组。在实施例中,第二处理操作集合包括网络设备被配置成执行的分组处理操作完全集合。在实施例中,第二处理操作集合包括(i)与分组的转发有关的一个或多个处理操作以及(ii)与分组的转发无关的至少一个另外的处理操作。
图7是根据另一实施例的用于处理分组的示例方法700的流程图。在实施例中,图1的网络设备100实现方法700。在一些实施例中,方法700由网络设备200来实现。仅出于解释的目的参考图2来描述方法700。在其他实施例中,方法700由不同于网络设备100(图1)和/或网络设备200(图2)的合适的网络设备来实现。
在块702,在网络设备的端口处接收第一分组。在实施例中,使用第一处理操作缩减集合处理第一分组。在块704,从第一分组的首部中提取第一比特集合。
在块706,在网络设备的端口处接收第二分组。在实施例中,使用第二处理操作缩减集合处理第二分组。在实施例中,第二处理操作缩减集合与第一处理操作集合相同。在另一实施例中,第二处理操作集合不同于第一处理操作缩减集合。在块708,从第二分组的首部中提取第二比特集合。
在块710,将在块704从第一分组的首部中提取的第一比特集合和在块708从第二分组的首部中提取的第二比特集合组合成表示第一分组和第二分组的单个数据单元。例如,将在块704从第一分组的首部中提取的第一比特集合和在块708从第二分组的首部中提取的第二比特集合组合成表示第一分组和第二分组的单个描述符。
在块712,将包括从第一分组的首部中提取的第一比特集合和从第二分组的首部中提取的第二比特集合的单个数据单元传送给分组处理设备。在块714,在分组处理设备处分解单个数据单元以提取对应于第一分组的第一比特集合和对应于第二分组的第二比特集合。在块716,执行第一处理操作缩减集合以使用对应于第一分组的第一比特集合处理第一分组。在块718,执行第二处理操作缩减集合以使用对应于第二分组的第二比特集合处理第二分组。
在实施例中,一种用于处理网络设备中的分组的方法包括:在网络设备的第一端口处接收第一分组;从第一分组的首部中提取第一比特集合,第一比特集合对应于第一分组的首部中的第一比特位置集合;以及执行第一处理操作集合以使用从第一分组的首部中提取的第一比特集合来处理第一分组。方法还包括:在网络设备的第二端口处接收第二分组,第二端口不同于第一端口;从第二分组的首部中提取第二比特集合,第二比特集合对应于第二分组的首部中的第二比特位置集合,其中第二比特位置集合包含没有被包含在第一比特位置集合中的至少一个比特位置;以及执行第二处理操作集合以使用从第二分组的首部中提取的第二比特集合来处理第二分组,其中第二处理操作集合包含没有被包含在第一处理操作集合中的至少一个处理操作。
在其他实施例中,方法包括以下特征中的任何一个特征、或者其中的一个或多个特征的任意组合。
第一处理操作集合仅包含与分组的转发有关的处理操作。
第二处理操作集合包含(i)与分组的转发有关的一个或多个处理操作以及(ii)与分组的转发无关的至少一个另外的处理操作。
第二处理操作集合是网络设备被配置来执行的处理操作完全集合,并且其中第一处理操作集合是包含处理操作完全集合的子集的处理操作缩减集合。
在网络设备的第二端口处接收第一分组包括在将网络设备耦合到多级交换***中的下游交换设备的上行链路端口处接收第二分组。
在第二端口处接收第二分组包括在将网络设备耦合到网络的网络端口处接收第二分组。
在另一实施例中,一种网络设备包括多个端口。网络设备还包括分组描述符生成器,分组描述符生成器被配置成生成与经由多个端口中的第一端口接收的第一分组相对应的第一数据结构,其中第一数据结构包含从第一分组的首部中提取的第一比特集合,第一比特集合对应于第一分组的首部中的第一比特位置集合。分组描述符还被配置成生成与经由多个端口中的第二端口接收的第二分组相对应的第二数据结构,第二端口不同于第一端口,其中第二数据结构包含与第二首部中的第二比特位置集合相对应的第二比特集合,并且其中第二比特位置集合包含没有被包含在第一比特位置集合中的至少一个比特位置。网络设备还包括分组处理器,分组处理器被配置成:执行第一处理操作集合以使用对应于第一分组的第一数据结构来处理第一分组,以及执行第二处理操作集合以使用对应于第二分组的第二数据结构来处理第二分组,其中第二处理操作集合包含没有被包含在第一处理操作集合中的至少一个处理操作。
在其他实施例中,网络设备包括以下特征中的任何一个特征、或者其中的一个或多个特征的任意组合。
分组处理设备被配置成执行第一处理操作集合用以仅执行与分组的转发有关的处理操作。
分组处理设备被配置成执行第二处理操作集合以执行(i)与分组的转发有关的一个或多个处理操作以及(ii)与分组的转发无关的至少一个另外的处理操作。
分组处理设备被配置成执行第二处理操作集合用以执行网络设备被配置来执行的处理操作完全集合,并且其中第一处理操作集合是包含分组处理操作完全集合的子集的处理操作缩减集合。
第一端口是将网络设备耦合到多级交换***中的下游交换设备的上行链路端口。
第二端口是将网络设备耦合到网络的网络端口。
在又一实施例中,一种用于处理网络设备中的分组的方法包括:在网络设备的端口处接收第一分组,第一分组将使用第一处理操作缩减集合来处理;以及从第一分组的首部中提取第一比特集合。方法还包括:在网络设备的端口处接收第二分组,第二分组将使用第二处理操作缩减集合来处理;以及从第二分组的首部中提取第二比特集合。方法另外包括:将第一比特集合和第二比特集合组合成表示第一分组和第二分组的经组合的单个数据单元;以及向分组处理设备传送表示第一分组和第二分组的单个组合数据单元。方法还包括:在分组处理设备处分解单个数据单元以提取对应于第一分组的第一比特集合以及对应于第二分组的第二比特集合;执行第一处理操作缩减集合以使用对应于第一分组的第一比特集合处理第一分组;以及执行第二处理操作缩减集合以使用对应于第二分组的第二比特集合来处理第二分组。
在其他实施例中,方法包括以下特征中的任何一个特征、或者其中的一个或多个特征的任意组合。
方法还包括:在执行第一处理操作缩减集合以处理第一分组并且执行第二处理操作缩减集合以处理第二分组之后,将对应于第一分组的第一比特集合和对应于第二分组的第二比特集合重新组合成表示经处理的第一分组和经处理的第二分组的单个数据单元,以及向已处理分组缓冲器传送表示经处理的第一分组和经处理的第二分组的单个数据单元。
第一处理操作缩减集合包括网络设备被配置来执行的分组处理操作完全集合的第一子集。
第二处理操作缩减集合包括网络设备被配置来执行的分组处理操作完全集合的第二子集。
处理操作的第一子集包括与第一处理操作子集相同的处理操作。
处理操作完全集合包括(i)与转发分组有关的一个或多个处理操作以及(ii)与转发分组无关的至少一个另外的处理操作,并且其中(i)处理操作第一子集和(ii)处理操作第二子集两者中的每个仅包括与转发分组有关的一个或多个处理操作。
将第一比特集合和第二比特集合组合成经组合的单个数据单元包括:仅在第一分组的大小和第二分组的大小低于门限的情况下组合第一比特集合和第二比特集合。
将第一比特集合和第二比特集合组合成经组合的单个数据单元包括:仅在接收第一分组和接收第二分组之间的时间间隙低于门限的情况下组合第一比特集合和第二比特集合。
在又一实施例中,一种网络设备包括多个端口。网络设备还包括分组处理设备,其被配置成处理经由至少一个端口接收的分组。网络设备还包括描述符生成器,描述符生成器被配置成:从在多个端口中的端口处接收的第一分组的首部中提取第一比特集合,第一分组将使用处理操作缩减集合来处理;以及从在多个端口中的端口处接收的第二分组的首部中提取第二比特集合,第二分组将使用第二处理操作缩减集合来处理。描述符生成器另外被配置成:将第一比特集合和第二比特集合组合成表示第一分组和第二分组的经组合的单个数据单元,以及向分组处理设备传送表示第一分组和第二分组的经组合的单个数据单元。分组处理设备被配置成:分解单个数据单元以提取对应于第一分组的第一比特集合和对应于第二分组的第二比特集合,执行第一指令缩减集以使用对应于第一分组的第一比特集合来处理第一分组,以及执行第二处理操作缩减集合以使用对应于第二分组的第二比特集合来处理第二分组。
在其他实施例中,网络设备包括以下特征中的任何一个特征、或者其中的一个或多个特征的任意组合。
分组处理设备还被配置成:在执行第一处理操作缩减集合以处理第一分组并且执行第二处理操作缩减集合以处理第二分组之后,将对应于第一分组的第一比特集合和对应于第二分组的第二比特集合重新组合成表示经处理的第一分组和经处理的第二分组的单个数据单元,以及向已处理分组缓冲器传送表示经处理的第一分组和经处理的第二分组的单个数据单元。
第一处理操作缩减集合包括网络设备被配置成执行以处理分组的整个分组处理操作集合的第一子集。
第二处理操作缩减集合包括网络设备被配置成执行的整个分组处理操作集合的第二子集。
处理操作的第一子集包括与第一处理操作子集相同的处理操作。
处理操作完全集合包括(i)与转发分组有关的一个或多个处理操作以及(ii)与转发分组无关的至少一个另外的处理操作,并且其中(i)处理操作第一子集和(ii)处理操作第二子集两者中的每个仅包括与转发分组有关的一个或多个处理操作。
描述符生成器被配置成仅在第一分组的大小和第二分组的大小低于门限的情况下将第一比特集合和第二比特集合组合成经组合的单个数据单元。
描述符生成器被配置成仅在接收第一分组和接收第二分组之间的时间间隙低于门限的情况下将第一比特集合和第二比特集合组合成经组合的单个数据单元。
以上描述的各种块、操作和技术中的至少一些可以使用硬件、执行固件指令的处理器、执行软件指令的处理器或者其任意组合来实现。
在用硬件实现时,硬件可以包括离散部件、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)等中的一个或多个。
在使用执行软件或固件指令的处理器来实现时,软件或固件指令可以存储在任何计算机可读存储器(诸如磁盘、光盘、或其他存储介质、RAM或ROM或闪存存储器、处理器、硬盘驱动、光盘驱动、磁带驱动等)中。软件或固件指令可以包括机器可读指令,这些指令在由一个或多个处理器执行时使得一个或多个处理器执行各种动作。
虽然已经参考具体示例描述了本发明(其意图仅在于说明而非限制本发明),然而可以在不偏离本发明的范围的情况下对所公开的实施例做出变化、添加和/或删除。例如,以上描述的方法或技术的一个或多个部分可以按照不同顺序(或同时地)执行并且仍然实现期望结果。