CN1679281A - 分组处理引擎 - Google Patents

分组处理引擎 Download PDF

Info

Publication number
CN1679281A
CN1679281A CNA038200570A CN03820057A CN1679281A CN 1679281 A CN1679281 A CN 1679281A CN A038200570 A CNA038200570 A CN A038200570A CN 03820057 A CN03820057 A CN 03820057A CN 1679281 A CN1679281 A CN 1679281A
Authority
CN
China
Prior art keywords
grouping
packet
amended
subclass
descriptor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA038200570A
Other languages
English (en)
Other versions
CN100499564C (zh
Inventor
维塔利·苏孔尼科
迈克尔·拉奥尔
迈克尔·B·加勒
摩西·沃洛申
威廉·N·伊瑟顿
拉米·泽曼施
约翰·H·W·贝廷科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/227,114 external-priority patent/US7404015B2/en
Priority claimed from US10/227,119 external-priority patent/US7304999B2/en
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN1679281A publication Critical patent/CN1679281A/zh
Application granted granted Critical
Publication of CN100499564C publication Critical patent/CN100499564C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3072Packet splitting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Abstract

本发明公开了多种用于处理分组的方法和装置,所述分组处理例如使用高性能海量并行分组处理结构,将分组或者分组的子集分发到单独的分组处理器并且收集经过处理的分组或者分组的子集并且转发作为结果的修改后的分组或者处理过的分组,访问整个共享资源网络上的分组处理资源,使用直接存储器访问技术访问分组处理资源,和/或在全局分组存储器中存储分组的一个重叠部分的同时,将第二重叠部分提供给分组处理器。在一种实施方式中,接收多个分组流的分组。将所述分组的字节的子集分发到基于分发模式所确定的下一分组处理器。处理分组的子集以生成修改后的子集,反过来基于分发模式收集修改后的子集;并且转发包括所述修改后子集的修改后的分组。

Description

分组处理引擎
技术领域
本发明主要涉及通信和计算机系统;更具体地,本发明涉及分组处理,例如路由器、分组交换系统或者其他通信或计算机系统中的分组处理;更具体地,这种处理可以包括将分组或者分组的子集分发(distribute)到单独的分组处理器并且收集处理后的分组或者分组的子集并且转发作为结果的修改后的分组或者经过其他处理的分组,以及访问多个处理引擎之间共享的一个或多个资源。
背景技术
通信工业正飞速变化,以适应新兴技术和不断增长的客户需求。这种对新应用以及现有应用的增强性能的客户需求正驱动着通信网络和系统供应商采用具有更高速率和容量(例如,更宽的带宽)的网络和系统。在实现这些目标时,许多通信供应商所采用的通用方法是使用分组交换技术。供应商越来越多地使用诸如因特网协议(IP)的多种分组技术来建造和扩展公共通信网络和私有通信网络。
诸如交换机或者路由器的网络设备一般基于下述一个或者多个标准接收、处理、转发或者丢弃分组,所述标准包括该分组所使用的协议类别、该分组的地址(例如,源、目的地、组)和所要求的服务类别或服务质量。此外,一般对每个分组执行一种或多种安全操作。
公知的分组处理一般具有由下述流水线组成的体系结构,所述流水线具有多个固定的硬件资源模块和微序列器(micro-sequencer)级。硬件资源模块包括下述功能,例如基于用于分组分类和最长前缀匹配搜索的基于寄存器的配置,解析分组头部。微序列器基于来自资源模块的结果,可以进行头部修改。这种体系结构努力在高性能(与完全硬连线分组处理器的级别相似)与灵活性之间达到平衡。其中已对微代码做出了无数的巧妙处理,以支持在原始ASIC设计时尚未理解的特性,如果没有包括微序列器,这本应需要重制(re-spin)了。
这种体系结构的主要困难是,流水线体系结构仍旧假设处理和资源访问的顺序主要是在专用集成电路(ASIC)设计时所理解的顺序,并且对于所有的应用相当一致。如果新的应用要以新的方式使用资源(例如,存储器、查找引擎或者内容可寻址存储器),或者要更加灵活地权衡性能和功能,则流水线体系结构就过于僵化了。此外,编程流水线化引擎的复杂性随着处理器级数的增加也迅速增加。而且,遍布在流水线体系结构的各个级上的相互分离的分组处理功能极大地限制了分组处理能力。因此,需要新的方法和装置来处理分组。
发明内容
本发明公开了多种方法和装置,用于在路由器、分组交换系统或者其他通信或计算机系统中处理分组。这种分组处理例如包括但不限于(不是所有的实施方式都要求)使用高性能海量并行分组处理结构,将分组或者分组的子集分发到单独的分组处理器,收集处理后的分组或者分组的子集,并且转发作为结果的修改后的分组或者经过其他处理的分组,访问整个共享资源网络上的分组处理资源,使用直接存储器访问技术访问分组处理资源,和/或在全局分组存储器中存储分组的一个重叠部分的同时,将第二重叠部分提供给分组处理器。
在一种实施方式中,接收到属于多个分组流之一的分组。基于分发模式,确定下一分组处理器。将所述分组的字节的子集分发到下一分组处理器。处理所述分组的子集以生成修改后的子集,基于所述分发模式,反过来从所述下一分组处理器收集所述修改后的子集;并且转发包括所述修改后的子集的修改后的分组。在一种实施方式中,分组的一部分被置于全局分组存储器中。在一种实施方式中,这一部分和所述分组的处理过的子集包括分组的重叠字节。在一种实施方式中,分组处理包括访问整个资源网络上的处理资源中的一个或者多个资源,所述处理资源由多个分组处理引擎共享。在一种实施方式中,所述全局分组存储器是这些资源之一。在一种实施方式中,使用直接存储器访问(DMA)技术访问这些资源。在一种实施方式中,分组处理器可以同时具有多个发往相同或者不同资源的DMA请求。在一种实施方式中,使用这里公开的其他方法和装置来执行分组处理。
附图说明
所附权利要求具体地阐述本发明的特性。结合附图,参考下述详细描述,可以最好地理解本发明及其优点,其中:
图1A是采用这里所公开的分组处理器的一种实施方式的示例性系统的方框图;
图1B是在一种实施方式中所使用的组件的方框图,所述组件例如是分组处理器、分发器、收集器或者资源,但又不限于这些;
图2是在一种实施方式中所使用的分组处理器的方框图;
图3A-C是在一种实施方式中所使用的分组处理器的方框图,其包括集群和分组处理引擎分层结构;
图4A图示了在一种实施方式中所使用的过程,其用于将分组的子集分发到分组处理引擎;
图4B图示了在一种实施方式中所使用的分组的第一和第二子集的方框图;
图5图示了在一种实施方式中所使用的过程,其用于从来自分组处理引擎的修改后的分组子集来收集分组;
图6A图示了在一种实施方式中所使用的过程,其用于修改分组的子集;
图6B图示了在一种实施方式中所使用的示例性直接存储器访问(DMA)描述符和一组示例性的状态指示符的方框图;
图7A-B图示了在一种实施方式中由资源使用的过程。
具体实施方式
本发明公开了用于在例如路由器、分组交换系统、或者其他通信或计算机组件、设备或系统中处理分组的方法和装置。这里所描述的实施方式包括各种元素和限制,但是没有一种元素或限制被认为是关键元素或限制。每个权利要求自成一体地单独陈述了本发明的一个方面。此外,所描述的某些实施方式还可以包括系统、网络、集成电路芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质,但又不限于这些。下文所描述的实施方式结合图示了示例性而非限定性配置的附图,具体实现了在本发明的范围和精神之内的各个方面和各种配置。
这里所使用的术语“分组”是指所有类型的分组或者任何其他单元的信息或数据,包括但不限于固定长度信元和可变长度分组,每个分组可被分割为更小的分组或信元,或者不能被分割为更小的分组或信元。这里所使用的术语“分组”也指该分组自身或者分组指示,例如但不限于分组或分组头部、数据结构值、指针或索引、或者分组的任何其他部分或标识中的全部或部分。此外,这些分组可以包含一种或者多种类型的信息,包括但不限于语音、数据、视频和音频信息。这里,术语“项”被用来指分组或者任何其他单元或片断的信息或数据。短语“处理分组”和“分组处理”一般指基于该分组执行某些步骤或动作,其可能包括也可能不包括修改和/或转发该分组。
术语“系统”在这里一般被用来描述任何数目的组件、元件、子系统、设备、分组交换元件、分组交换机、路由器、网络、计算机和/或通信设备或机制、或者这些组件的组合。术语“计算机”在这里一般被用来描述任何数目的计算机,包括但不限于个人计算机、嵌入式处理元件和系统、控制逻辑、ASIC、芯片、工作站、大型机等。术语“处理元件”在这里一般被用来描述任何类型的处理机制或设备,例如处理器、ASIC、现场可编程门阵列、计算机等。术语“设备”在这里一般被用来描述任何类型的机制,包括计算机或者系统或者其组件。术语“任务”和“过程”在这里一般被用来描述任何类型的运行程序,包括但不限于计算机进程、任务、线程、正在执行的应用程序、操作系统、用户进程、设备驱动程序、本地代码、机器语言或其他语言等,并且可以是交互式的和/或非交互式的,可以本地执行和/或远程执行,前台执行和/或后台执行,在用户地址空间中执行和/或在操作系统地址空间中执行,可以是库例程和/或孤立的应用程序,并且不限于任何具体的存储器分区技术。在包括但不限于任何方框图、流程图和消息顺序图的附图中所示的信号和信息的步骤、连接和处理,可以以相同或者不同的串行或者并行顺序被执行,并且/或者由不同的组件和/或进程、线程等执行,并且/或者通过不同的连接,并且可以与其他实施方式中的其他功能相结合,同时仍旧在本发明的范围和精神之内。
此外,术语“网络”和“通信机制”在这里一般被用来描述一个或者多个网络、通信介质或者通信系统,包括但不限于因特网、私有或者公共电话网、蜂窝网、无线网、卫星网、有线网、局域网、城域网和/或广域网、电缆、电连接、总线等,以及诸如消息传递、进程间通信、共享存储器等的内部通信机制。
术语“存储机制”包括任何类型的存储器、存储设备或者用来保存任何格式的指令或数据的其他机制。“计算机可读介质”是一个可扩展术语,其包括任何存储器、存储设备、存储机制和包括下述接口和设备的存储和信令机制,所述接口和设备例如是网络接口卡及其中的缓冲器、任何通信设备和所接收和发送的信号、以及计算机化的系统可以中断、接收和/或发送的其他当前技术和正在发展的技术。术语“存储器”包括任何随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件或元件。术语“存储设备”包括任何固态存储介质、盘驱动器、磁盘、网络化服务、磁带驱动器、以及其他存储设备。存储器和存储设备可以存储将由处理元件和/或控制逻辑执行的计算机可执行指令,以及由处理元件和/或控制逻辑操纵的数据。术语“数据结构”是可扩展的术语,其指任何数据元素、变量、数据结构、数据库和/或一种或多种组织方案,所述方案可被应用于数据,以便于解释该数据,或者便于对该数据执行操作,例如但不限于存储单元(memory location)或者设备、集合、队列、树、堆、列表、链接表、数组、表、指针等。数据结构一般保存在存储机制中。术语“指针”和“链接”在这里一般被用来标识某种用于引用或者标识另一个元素、组件或者其他实体的机制,这些可以包括但又不限于对存储器或者其他存储机制或者其中的存储单元的引用、数据结构中的索引、值等。术语“关联存储器”指任何类型已知的或者将来开发出来的关联存储器,包括但不限于二进制和三进制内容可寻址存储器、哈希表、TRIE和其他数据结构等。
术语“一种实施方式”在这里用来指一种具体的实施方式,其中每次引用“一种实施方式”可以指一种不同的实施方式,在描述相关联的特性、元素和/或限制中,这里反复使用该术语,并不是建立每个实施方式都必须包括的相关联特性、元素和/或限制的累加集合,尽管一种实施方式一般可以包括所有这些特性、元素和/或限制。此外,短语“用于xxx的装置”一般包括计算机可读介质,该介质包含用来执行xxx的计算机可执行指令。
此外,术语“第一”、“第二”等在这里一般被用来表示不同的单元(例如,第一元件、第二元件)。这里使用这些术语并不必然意味着某种顺序,例如一个单元或者事件在另一个之前发生或者到来,而是提供了一种区分具体单元的机制。此外,使用名词的单数时态是非限定性的,使用其一般包括一个或者多个具体的项,而不是刚好一个(例如,使用“存储器”一词一般是指一个或者多个存储器,而不必指明“存储器或者多个存储器”、或者“一个或多个存储器”、或者“至少一个存储器”等)。此外,短语“基于x”和“响应于x”被用来指示项x的下述最小集合,从该集合中导出或者由其导致某个事物,其中“x”是可扩展的,不一定描述对其执行操作等的项的完整列表。此外,短语“耦合到”被用来指示两个元件或者设备之间的某种程度的直接连接或者间接连接,耦合的一个设备或者多个设备修改或者不修改所耦合的信号或者所传输的信息。术语“子集”被用来指示一个集合的一组元素,该组包括该集合的所有元素,或者少于所有元素。此外,术语“或者”在这里被用来表示在多个并列项中选择一个或者多个,包括选择所有项。
本发明公开了用于在路由器、分组交换系统、或者其他通信或计算机系统中处理分组的方法和装置。这种分组处理可以包括例如使用高性能海量并行分组处理体系结构,将分组或者分组的子集分发到单独的分组处理器并且收集处理后的分组或者分组的子集并且转发作为结果的修改后的分组或者经过其他处理的分组,访问整个共享资源网络上的分组处理资源,使用直接存储器访问技术访问分组处理资源,和/或在全局分组存储器中存储分组的一个重叠部分,同时向分组处理器提供第二重叠部分。
在一种实施方式中,接收到属于多个分组流之一的分组。基于分发模式确定下一分组处理器。该分组的字节的子集被分发到该下一分组处理器。处理该分组的子集以生成修改后的子集,基于分发模式,反过来从下一分组处理器收集修改后的子集;然后,转发包括修改后子集在内的修改后的分组。在一种实施方式中,在从分组处理元件收集之前,检查处理的状态。在一种实施方式中,在子集被收集之后,继续对其进行处理,例如在多播分组、分组分段、窃听或者监听(例如,将一个拷贝路由到另一个位置)的情形中。在一种实施方式中,分组处理元件在当前收集回合期间被跳过。在一种实施方式中,基于由分组处理元件提供的指示来确定是否跳过。在一种实施方式中,在收集属于一个特定分组流的所有分组时,执行相同数目的跳过操作。在一种实施方式中,从所收集的分组经修改的子集和存储在全局分组存储器中的分组子集中导出将被转发的分组。在一种实施方式中,经分组处理引擎操纵的分组子集和存储在全局分组存储器中的子集包含着原始分组的重叠部分。
在一种实施方式中,处理分组包括访问由多个分组处理引擎共享的资源网络上的一个或者多个处理资源。在一种实施方式中,全局分组存储器是这种资源之一。在一种实施方式中,使用直接存储器访问(DMA)技术访问这些资源。在一种实施方式中,分组处理器可以同时具有发往相同或者不同资源的多个DMA请求。在一种实施方式中,在在前的DMA请求中使用的描述符被修改,然后被用在第二DMA请求中。
图1A图示了使用被连接到交换结构103的入口分组处理器101和102的一种实施方式,其中交换结构103被连接到出口分组处理器104和105的一种实施方式。在一种实施方式中,分组处理器101、102、104、105对应于图2和/或图3A所示的分组处理器之一,并且/或者根据图4、图5和/或图6A所示的流程图之一运行。
图1B图示了组件120。在一种实施方式中,组件120对应于根据图4、图5和/或图6A所示的流程图之一运行的分组处理器。在一种实施方式中,组件120对应于根据图7A-B所示的流程图运行的资源。
在一种实施方式中,组件120包括处理器121、存储器122、存储设备123、以及用于接收和发送分组和其他信息的外部接口124,这些元件一般经由一个或者多个通信机制129(为了说明,以总线示出)耦合在一起。组件120的各种实施方式可以包括或多或少的元件。一般由处理器121使用存储器122和存储设备123来控制组件120的运行,以执行一项或者多项调度任务或者过程。存储器122是一类计算机可读介质,一般包括随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储组件。存储器122一般存储将要由处理器121执行的计算机可执行指令和/或由处理器121进行操纵以实现本发明功能的数据。存储设备123是另一类计算机可读介质,一般包括固态存储介质、盘驱动器、磁盘、网络化服务、磁带驱动器和其他存储设备。存储设备123一般存储将要由处理器121执行的计算机可执行指令、和/或由处理器121进行操纵以实现本发明功能的数据。
图2图示了分组处理器200的一种实施方式。分组211由输入接口电路212接收。接收分组的第一子集字节被放置在全局分组缓冲区239中。一般地,对于分组处理而言不需要该第一子集字节。然而,由于全局分组缓冲区239被配置为共享资源,所以第一子集的任何部分随后都可以被分组处理引擎取出。
接收分组的第二子集字节被转发到分发器220。第二子集包括包含在接收分组之内,一般为分组处理所需要的信息。在一种实施方式中,第一和第二子集字节包括接收分组的重叠部分,由于分组处理引擎可以覆写第二子集字节中确定不需要的部分,或者释放(deallocate)存储器的相应部分,所以这可能是有利的。在一种实施方式中,这种字节的重叠部分包括在分组处理期间没有被修改的字节,但是它们的内容可能为这种处理所需要。因此,由于在收集阶段中,当在收集和转发过程中修改后的分组被组装时,这些字节将从第一子集被包括进来,所以分组处理引擎可能不需要转发任何重叠部分。
分发器220基于确定性的或者随机的分发模式,将分组的第一子集分发到下一可用的分组处理引擎225。在一种实施方式中,使用循环(round-robin)分发模式。在一种使用随机分发模式的实施方式中,分发顺序被跟踪,以供收集元件使用,使得至少对于属于相同流的分组而言维持分组顺序。在一种实施方式中,分组处理引擎225可以向分发器220指示跳过操作,使得在当前分发回合中,越过特定的分组处理引擎225。在一种实施方式中,属于相同分组流的所有分组引起传递这些分组之一的每个分组处理引擎生成相同数目的跳过操作,以维持这些分组的原始顺序。在一种实施方式中,原始顺序不由分组处理器来维持。在一种实施方式中,如果需要的话,分发器220在向所识别的下一分组处理引擎225分发分组之前,或者在继续前进至下一分组处理引擎225之前,将等待所识别的下一分组处理引擎225就绪。
如图所示,分组处理引擎225经由资源结构230被连接到多个资源235。在一种实施方式中,资源235可以包括资源路由单元、策略器、关联存储器、流量规划器(engineer)、统计收集器和/或授权单元等。例如,下一跳地址可以被确定,并且被返回到发出请求的分组处理引擎225。在一种实施方式中,分组处理引擎使用直接存储器访问(DMA)技术访问资源235。
处理完成之后,接收分组的修改后的第二子集一般以基于分发模式的收集模式被出口分组头部缓冲区228获取/接收,并且被转发到输出接口电路240。原始分组的剩余部分从全局分组缓冲区239被获取/接收。输出接口电路240组装修改后的分组245,并且将其转发到下一组件或系统。在一种实施方式中,分组处理引擎225可以或者不可以变为可用于处理下一分组,这是由于它可能继续处理其当前数据,以生成额外的一个或者多个分组,例如为多播或者监听操作所需要的,或者执行某些额外的处理,例如由某些统计操作所需要的。
图3A-3C图示了在一种实施方式中使用的分层分组处理体系结构。转到图3A,分组301被输入流接口304接收到分组处理器300中,输入流接口304将接收分组的第一子集分发到全局分组缓冲区共享资源310,并且将接收分组的第二重叠或者非重叠子集分发到分组头部分发器306,分组头部分发器306将第二子集分发到集群315A-N之一,有可能指定具体的分组处理引擎,或者将该分发留给具体的集群。集群315A-N内的元件一般使用一个或者多个共享资源310和321-329来执行分组处理,其中经由共享资源网络320访问所述共享资源。
接收分组修改后的第二子集字节由分组头部收集器330从集群315A-315N收集,然后被转发到分组头输出FIFO 335。在基于从全局分组缓冲区共享资源310接收的第一子集字节、以及从分组头输出FIFO 335接收的修改后的字节子集进行组装后,从分组头输出FIFO 340发送修改后的分组349。
图3B图示在一种实施方式中使用的分组处理集群315。集群315一般包括多个分组处理引擎365A-365K,分组处理引擎365A-365K共享公共集群指令存储器370,并且经由集群多路复用器371被连接到集群315之外的组件和资源。
图3C图示分组处理引擎365的一种实施方式。处理器382基于由指令缓存381提供的指令,对接收分组的第二子集字节和/或存储在数据存储器383中的其他数据或信息执行操作。数据存储器是一类计算机可读介质。在一种实施方式中,分组处理引擎365经由直接存储器访问(DMA)设备384与其他组件和/或资源通信,虽然可以使用任何通信机制。
图4A图示了在一种实施方式中使用的,用于分发分组或者其子集的过程。处理首先从过程框400开始,然后前进到过程框402,其中接收到分组。在过程框404中,所述分组的第一子集被存储到全局分组存储器中。注意,与定义一致,这个第一子集可能包括整个分组、分组主体或者它的任何其他部分或多个部分。接下来,在过程框406中,确定下一分组处理引擎(依赖于实施方式,或者是集群,或者是二者)。如过程框408所确定的,如果所确定的分组处理引擎将被跳过,则处理随后返回到过程框406,以确认新的下一分组处理引擎。否则,当如过程框410所示,处理引擎是可用的或者变成可用的时,则在过程框412中,分组的第二子集被分发到所确定的下一分组处理引擎。注意,与定义一致,这个第二子集可能包括整个分组、分组头部、或者它的任何其他部分或多个部分。接下来,如过程框414所确定的,如果还要执行同一分组的分发(例如,将所述分组的第二子集分发到另一个分组处理器,例如为了基于分组以并行多重操作方式进行处理),则处理返回到过程框406。否则,处理随后返回到过程框402,以接收并分发下一分组。
图4B图示了在一种实施方式中使用的分组430、以及从中导出的第一子集431和第二子集432的方框图。在一种实施方式中,第一子集431和/或第二子集432包括分组430的全部。在一种实施方式中,第一子集431和第二子集432包括分组430的重叠部分。在一种实施方式中,第一子集431和第二子集432不包括分组430的重叠部分。在一种实施方式中,第一子集431包括分组430的任何毗邻或者非毗邻部分。在一种实施方式中,第二子集432包括分组430的任何毗邻或者非毗邻部分。
图5图示了在一种实施方式中使用的,用于收集经过处理的分组或者其子集的过程。处理首先从过程框500开始,随后前进到过程框502,其中确定下一处理引擎。如过程框504所确定的,如果对于所确定的下一处理引擎,指示了跳过操作,则处理返回到过程框502,以确定新的下一分组处理引擎。否则,如过程框506所示,在分组处理元件已经完成它的处理之后,从所确定的下一分组处理引擎收集修改后的(或者未经修改的)子集。在过程框510中,从全局分组存储器中获取/接收分组的第一子集,然后在过程框512中,修改后的分组被组装并转发。然后,处理返回到过程框502。
图6A图示了在一种实施方式中使用的,用于处理分组或者其子集的过程。处理首先从过程框600开始,然后前进到过程框602,其中指示符被初始化为分组处理引擎可用于接收数据、处理未结束以及不跳过操作。在过程框604中,接收到分组的子集。在过程框606中,设置分组处理器不可用的指示,并且识别出分组的类型(例如,将要执行何种协议或者其他处理)。如过程框608所确定的,如果分组的类型对应于一种需要跳过操作的类型,则在过程框610中,设置跳过指示符。
接下来,如过程框612所确定的,如果资源需要被访问,则如过程框614所确定的,如果直接存储器访问(DMA)描述符壳已经存在,则在过程框616中,该描述符的相关(例如,剩余的、不同的等)字段被填充;否则,在过程框618中,在存储器中建立DMA描述符。在过程框620中,生成DMA请求。处理返回到过程框612,从而可能发出更多的DMA请求。注意,可以同时存在多个DMA请求。
否则,处理前进到过程框622,以可选地等待某些来自DMA请求的结果,或者接收某些需要处理的其他数据。然后,在过程框624中,按照对分组或者其子集进行处理所要求的那样对分组进行操纵和/或修改。在一种实施方式中,正被操纵和/或被修改的分组的子集的一部分在这一过程中可以被覆写。接下来,如过程框626所确定的,如果预期有更多的结果,则处理返回到过程框622。否则,在过程框628中,分组处理引擎指示处理完成并且设置不跳过操作。在过程框630中,修改后的分组或者它的子集根据请求或者在合适的时间被提供给收集器。如过程框632所确定的,如果完成了所有的处理,并且准备好接收新的分组或者它的子集,则处理返回到过程框602。否则,在过程框634中,分组处理引擎指示处理没有完成,并且处理返回到过程框608。
图6B图示了示例性的DMA描述符650和示例性的指示符660。在一种实施方式中,DMA描述符包括资源识别符字段651、所要读取数据的地址字段652、将要由资源或者其他组件执行的命令字段653、放置返回响应的地址字段654,还可能包括其他字段。在一种实施方式中,由分组处理引擎使用的指示符660包括可用/不可用指示符661、完成/未完成指示符662、以及跳过/不跳过指示符663。
图7A-B图示了在一种实施方式中由资源使用的过程。参见图7A,处理从过程框700开始,然后前进到过程框702,其中接收到DMA请求。在过程框704中,DMA请求被缓冲。处理然后返回到过程框702。参见图7B,处理从过程框710开始,然后前进到过程框712。如果DMA请求被缓冲,则在过程框714中,选择并取出所述DMA请求之一。接下来,在过程框716中,执行对应于该DMA请求的操作。在过程框718中,结果被返回,并且处理返回到过程框712。
由于本发明的原则可以被应用到多种可能的实施方式,所以应当理解,这里结合附图所描述的多种实施方式及其各个方面仅仅是说明性的,而不应被用来限制本发明的范围。例如,可以重新安排许多过程框操作的顺序,以在其他操作之前、之后或者同时被执行,这对于本领域的技术人员是清楚的。此外,在各种实施方式中,可以使用多种不同形式的数据结构。这里描述的发明包括在所附权利要求及其等同物的范围内所有实施方式。

Claims (71)

1.一种用于处理分组的方法,所述方法包括:
接收多个分组流的分组;
基于分发模式,确定多个分组处理器中的下一分组处理器;
将所述分组的字节的子集分发到所述下一分组处理器;
处理所述子集,以生成修改后的子集;
基于所述分发模式,反过来从所述下一分组处理器收集所述修改后的子集;以及
转发包括所述修改后的子集的修改后的分组。
2.如权利要求1所述的方法,其中,所述收集包括确定对所述分组的子集的所述处理是否完成。
3.如权利要求1所述的方法,其中,所述确定包括检查对所述分组的子集的所述处理是否完成的指示。
4.如权利要求1所述的方法,还包括:
在所述的收集修改后的子集之后,处理所述子集或者修改后的子集,以生成第二修改后的子集;
基于所述分发模式,反过来从所述下一分组处理器收集所述第二修改后的子集;以及
转发包括所述第二修改后的子集的第二修改后的分组。
5.如权利要求4所述的方法,其中,所述分组是多播分组。
6.如权利要求5所述的方法,还包括:
处理所述子集、修改后的子集、或者第二修改后的子集,以生成第三修改后的子集;
基于所述分发模式,反过来从所述下一分组处理器收集所述第三修改后的子集;以及
转发包括所述第三修改后的子集的第三修改后的分组。
7.如权利要求4所述的方法,其中,所述分组的一组被分段的分组包括所述修改后的分组和所述第二修改后的分组。
8.如权利要求4所述的方法,其中,所述分组包括一组数据字段;并且所述修改后的分组和所述第二修改后的分组中的每一个都包括该组数据字段。
9.如权利要求2所述的方法,其中,响应于所述确定识别出所述处理还未完成,基于所述分发模式,在当前收集回合中跳过所述分组处理器。
10.如权利要求2所述的方法,其中,当所述分组是第一类别时,所述确定将所述处理识别为未完成,当所述分组是第二类别时,所述确定将所述处理识别为已完成。
11.如权利要求10所述的方法,其中,所述第一和第二类别对应于不同的协议。
12.如权利要求1所述的方法,还包括,在第二存储器中存储所述分组的第二字节子集;从所述第二存储器获取所述分组的第二字节子集;其中所述修改后的分组包括所述分组的第二字节子集。
13.如权利要求12所述的方法,其中,所述第二存储器是由所述多个分组处理器中的每一个共享的全局分组存储器。
14.一种包含有用于执行如权利要求1所述方法的计算机可执行指令的计算机可读介质。
15.一种用于处理分组的方法,所述方法包括:
对于多个有序分组流的多个分组中的每一个分组:
接收所述分组;
基于分发模式和所述多个分组处理器中的一个或者多个处理器的当前可用性,确定多个分组处理器中的下一分组处理器;
将所述分组的字节的子集分发到所述下一分组处理器;并且
处理所述子集以生成修改后的子集;以及
对于所述多个分组处理器中的每个分组处理器:
基于所述分发模式,确定所述多个分组处理器中的下一收集分组处理器;
从所述下一收集分组处理器收集特定分组的所生成的修改后子集;并且
转发包括所生成的修改后子集的修改后的分组。
16.如权利要求15所述的方法,其中,所述确定下一收集分组处理器包括识别是否至少有一个分组处理器已经完成生成所述修改后的子集。
17.如权利要求16所述的方法,其中,所述识别包括检查所述至少一个分组处理器的跳过或收集指示。
18.如权利要求16所述的方法,其中,有多个分组处理器接收到多个有序流中的一个特定流的多个分组之一的字节子集,对于这些分组处理器中至少需要一次跳过操作的每一个处理器,生成相同数目的指示跳过操作的跳过或收集指示,以维持所述多个有序流中的所述特定流的多个分组的原始顺序。
19.如权利要求15所述的方法,其中,所述确定下一分组处理器包括检查来自所述多个分组处理器中的一个或者多个处理器的可用信号。
20.一种包含有用于执行如权利要求14所述方法的计算机可执行指令的计算机可读介质。
21.一种用于处理分组的装置,所述装置包括:
多个分组处理引擎;
耦合到所述多个分组处理引擎中的每一个的资源网络;
耦合到所述资源网络的多个资源;
用于基于分发模式,在所述分组处理引擎之间分发分组的分发器;以及
用于基于所述分发模式,从所述多个分组处理引擎收集分组的收集器;
其中,由所述多个分组处理引擎中的单独一个引擎来执行对每个分组的分组处理。
22.如权利要求21所述的装置,其中,所述多个分组处理引擎被分组到多个集群中。
23.如权利要求22所述的装置,其中,所述多个集群中的每个特定集群还包括公共集群指令存储器,其耦合到所述特定集群内的每一个分组处理引擎。
24.如权利要求22所述的装置,其中,所述多个集群中的每个特定集群还包括集群多路复用器,其耦合到所述特定集群内的每一个分组处理引擎,用于与所述资源网络相接口。
25.如权利要求21所述的装置,其中,所述多个分组处理引擎中的每一个分组处理引擎都包括指令缓存、处理器、数据存储器、以及用于通过所述资源网络与多个资源通信的直接存储器访问设备。
26.如权利要求25所述的装置,其中,所述多个分组处理引擎被分组到多个集群中;其中所述多个集群中的每个特定集群还包括集群多路复用器,其耦合到所述特定集群内的每一个分组处理引擎,用于与所述资源网络相接口。
27.如权利要求21所述的装置,还包括全局分组存储器,其耦合到所述分发器和收集器,用于存储将要被处理的接收分组的第一子集,其中所述分发器将所述接收分组的第二子集分发到所述多个分组处理引擎中的一个。
28.如权利要求27所述的装置,其中,所述多个资源包括全局分组存储器。
29.如权利要求28所述的装置,其中,可以经由所述资源网络和第二输入端来访问所述全局分组存储器。
30.如权利要求21所述的装置,其中,所述多个资源至少包括由下述设备组成的组中的一个:路由单元,策略器,流量规划器,统计收集器和授权单元。
31.一种用于处理分组的装置,所述装置包括:
用于接收多个分组流中的分组的装置;
用于基于分发模式,确定多个分组处理器中的下一分组处理器的装置;
用于将所述分组的字节的子集分发到所述下一分组处理器的装置;
用于处理所述子集,以生成修改后的子集的装置;
用于基于所述分发模式,反过来从所述下一分组处理器收集所述修改后的子集的装置;以及
用于转发包括所述修改后的子集的修改后的分组的装置。
32.如权利要求31所述的装置,其中,所述用于收集的装置包括用于确定对所述分组的子集的所述处理是否完成的装置。
33.如权利要求31所述的装置,其中,所述用于确定的装置包括用于检查对所述分组的子集的所述处理是否完成的指示的装置。
34.如权利要求31所述的装置,还包括:
用于处理所述子集或者修改后的子集,以生成第二修改后的子集的装置;
用于基于所述分发模式,反过来从所述下一分组处理器收集所述第二修改后的子集的装置;以及
用于转发包括所述第二修改后的子集的第二修改后的分组的装置。
35.如权利要求34所述的装置,其中,所述分组是多播分组。
36.如权利要求34所述的装置,其中,所述分组的一组被分段的分组包括所述修改后的分组和所述第二修改后的分组。
37.如权利要求32所述的装置,包括下述装置,用于当所述用于确定对所述分组的子集的所述处理是否完成的装置将处理识别为未完成时,基于所述分发模式,在当前收集回合中跳过所述分组处理器。
38.一种用于处理多个有序分组流的多个分组中的每一个分组的装置,所述装置包括:
用于接收所述分组的装置;
用于基于分发模式和所述多个分组处理器中的一个或者多个处理器的当前可用性,确定多个分组处理器中的下一分组处理器的装置;
用于将所述分组的字节的子集分发到所述下一分组处理器的装置;
用于处理所述子集,以生成修改后的子集的装置;
用于基于所述分发模式,确定所述多个分组处理器中的下一收集分组处理器的装置;
用于从所述下一收集分组处理器收集特定分组的所生成的修改后子集的装置;以及
用于转发包括所生成的修改后的子集的修改后的分组的装置。
39.如权利要求38所述的装置,其中,所述用于确定所述下一收集分组处理器的装置包括用于识别是否至少有一个分组处理器已经完成生成所述修改后子集的装置。
40.一种用于处理分组的方法,所述方法包括:
接收分组;
基于所述分组,构建第一描述符;
生成对应于所述第一描述符的、对第一网络化资源的第一直接存储器访问请求;
从所述第一网络化资源接收第一结果,所述第一结果基于所述第一描述符;以及
基于所述第一结果,修改所述分组。
41.如权利要求40所述的方法,还包括:
基于所述分组,构建第二描述符;
生成对应于所述第二描述符的、对第二网络化资源的第二直接存储器访问请求;
从所述第二网络化资源接收第二结果,所述第二结果基于所述第二描述符;以及
基于所述第二结果,修改所述分组。
42.如权利要求41所述的方法,其中,所述第一和第二直接存储器访问请求是在接收到所述第一和第二结果之前生成的。
43.如权利要求41所述的方法,其中,所述第一直接存储器访问请求包括所述第一描述符、所述第一描述符的地址或所述第一描述符的指示。
44.如权利要求40所述的方法,其中,所述第一直接存储器访问请求包括用于放置所述第一结果的存储器结果地址。
45.如权利要求40所述的方法,还包括初始化一个或者多个状态位,所述状态位用于指示所述第一直接存储器访问请求的状态。
46.如权利要求45所述的方法,还包括检查所述一个或者多个状态位,以确定所述第一直接存储器访问请求是否已被完成。
47.如权利要求46所述的方法,还包括等待所述一个或者多个状态位指示所述第一直接存储器访问请求已被完成。
48.如权利要求45所述的方法,还包括检查所述一个或者多个状态位,以确定是否已接收到所述第二结果。
49.如权利要求48所述的方法,还包括等待所述一个或者多个状态位指示已接收到所述第二结果。
50.如权利要求49所述的方法,其中,在所述修改之前执行所述等待。
51.如权利要求40所述的方法,其中,所述第一描述符包括所述第一网络化资源的标识和用于在存储器中放置所述第一结果的结果地址。
52.如权利要求51所述的方法,其中,所述第一直接存储器访问请求包括所述第一描述符的存储器地址。
53.如权利要求52所述的方法,其中,所述第一描述符还包括一个或者多个状态位,其用于指示所述第一直接存储器访问请求的状态。
54.如权利要求40所述的方法,还包括:
以多个部分将所述第一直接存储器访问请求通过资源网络发送到所述第一网络化资源;以及
所述第一网络化资源基于所述多个部分,重新组装所述第一直接存储器访问请求的至少一部分。
55.如权利要求40所述的方法,
其中所述第一描述符包括多个字段;并且
其中所述方法还包括:
在接收到所述第一结果之后,修改所述第一描述符的多个字段的至少之一,以生成修改后的第一描述符;以及
生成对应于所述修改后的第一描述符的、对所述第一网络化资源的第二直接存储器访问请求。
56.如权利要求40所述的方法,
其中所述第一描述符包括多个字段;并且
其中所述方法还包括:
在接收到所述第一结果之后,修改所述第一描述符的多个字段的至少之一,以生成修改后的第一描述符;以及
生成对应于所述修改后的第一描述符的、对第二网络化资源的第二直接存储器访问请求。
57.一种计算机可读介质,其包含用来执行如权利要求40所述方法的计算机可执行指令。
58.一种处理分组的方法,所述方法包括:
接收包括第一部分和第二部分的第一分组,其中所述第一部分和第二部分包括所述第一分组的至少一个重叠字节的公共部分;
在全局分组存储器中存储所述第一部分;
在第一分组处理引擎的本地存储器中存储所述第二部分;
所述第一分组处理引擎修改所述第二部分,以生成修改后的第二部分;以及
转发包括所述修改后的第二部分和所述第一部分的第一修改后的分组。
59.如权利要求58所述的方法,其中,所述修改第二部分包括释放所述第一部分的至少一个字节,其中所述第二分组的至少一个重叠字节的公共部分包括所述至少一个被释放的字节。
60.如权利要求58所述的方法,其中,所述修改第二部分包括覆写所述第一部分的至少一个字节,其中所述第二分组的至少一个重叠字节的公共部分包括所述至少一个被释放的字节。
61.如权利要求58所述的方法,包括:
接收包括第三和第四部分的第二分组,其中所述第三和第四部分包括所述第二分组的至少一个重叠字节的公共部分;
在所述全局分组存储器中存储所述第三部分;
在第二分组处理引擎的本地存储器中存储所述第四部分;
所述第二分组处理引擎修改所述第四部分,以生成修改后的第四部分;以及
转发包括所述修改后的第四部分和所述第三部分第二修改后的分组。
62.如权利要求58所述的方法,包括
构建第一描述符;以及
从所述全局分组存储器获取所述第一部分的至少一个字段,所述获取包括生成对应于所述第一描述符的直接存储器访问请求,并且基于所述直接存储器访问请求,从所述全局分组存储器接收所述至少一个字段;并且
其中所述修改所述第二部分是基于所述至少一个字段。
63.一种计算机可读介质,其包含用来执行如权利要求58所述方法的计算机可执行指令。
64.一种用于处理分组的装置,所述装置包括:
用于接收分组的装置;
用于基于所述分组,构建第一描述符的装置;
用于生成对应于所述第一描述符的、对第一网络化资源的第一直接存储器访问请求的装置;
用于从所述第一网络化资源接收第一结果的装置,其中所述第一结果基于所述第一描述符;以及
用于基于所述第一结果,修改所述分组的装置。
65.如权利要求64所述的装置,还包括:
用于基于所述分组,构建第二描述符的装置;
用于生成对应于所述第二描述符的、对第二网络化资源的第二直接存储器访问请求的装置;
用于从所述第二网络化资源接收第二结果的装置,其中所述第二结果基于所述第二描述符;以及
用于基于所述第二结果,修改所述分组的装置。
66.如权利要求64所述的装置,还包括:
用于以多个部分中将所述第一直接存储器访问请求通过资源网络发送到所述第一网络化资源的装置;以及
用于基于所述多个部分,重新组装所述第一直接存储器访问请求的至少一部分的装置。
67.如权利要求64所述的装置
其中所述第一描述符包括多个字段;并且
其中所述装置还包括:
用于在接收到所述第一结果之后,修改所述第一描述符的多个字段的至少之一,以生成修改后的第一描述符的装置;以及
用于生成对应于所述修改后的第一描述符的、对所述第一网络化资源的第二直接存储器访问请求的装置。
68.如权利要求64所述的装置,
其中所述第一描述符包括多个字段;并且
其中所述方法还包括:
在接收到所述第一结果之后,修改所述第一描述符的多个字段的至少之一,以生成修改后的第一描述符;以及
生成对应于所述修改后的第一描述符的、对所述第二网络化资源的第二直接存储器访问请求。
69.一种处理分组的装置,所述装置包括:
用于接收包括第一部分和第二部分的第一分组的装置,其中所述第一部分和第二部分包括所述第一分组的至少一个重叠字节的公共部分;
用于在全局分组存储器中存储所述第一部分的装置;
用于在第一分组处理引擎的本地存储器中存储所述第二部分的装置;
用于修改所述第二部分,以生成修改后的第二部分的装置;以及
用于转发包括所述修改后的第二部分和所述第一部分的修改后的分组的装置。
70.如权利要求69所述的装置,其中,所述用于修改所述第二部分的装置包括用于释放所述第一部分的至少一个字节的装置,其中所述第二分组的至少一个重叠字节的公共部分包括所述至少一个被释放的字节。
71.如权利要求69所述的装置,其中,所述用于修改所述第二部分的装置包括用于覆写所述第一部分的至少一个字节的装置,其中所述第二分组的至少一个重叠字节的公共部分包括所述至少一个被释放的字节。
CNB038200570A 2002-08-24 2003-07-19 分组处理引擎 Expired - Fee Related CN100499564C (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/227,119 2002-08-24
US10/227,114 US7404015B2 (en) 2002-08-24 2002-08-24 Methods and apparatus for processing packets including accessing one or more resources shared among processing engines
US10/227,114 2002-08-24
US10/227,119 US7304999B2 (en) 2002-08-24 2002-08-24 Methods and apparatus for processing packets including distributing packets across multiple packet processing engines and gathering the processed packets from the processing engines

Publications (2)

Publication Number Publication Date
CN1679281A true CN1679281A (zh) 2005-10-05
CN100499564C CN100499564C (zh) 2009-06-10

Family

ID=31949791

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038200570A Expired - Fee Related CN100499564C (zh) 2002-08-24 2003-07-19 分组处理引擎

Country Status (5)

Country Link
EP (1) EP1530854B1 (zh)
CN (1) CN100499564C (zh)
AU (1) AU2003252054B2 (zh)
CA (1) CA2494579C (zh)
WO (1) WO2004019571A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409673B (zh) * 2008-11-12 2013-07-03 北京恒光创新科技股份有限公司 一种网络适配器数据传输方法、网络适配器及系统
CN103793340A (zh) * 2012-10-31 2014-05-14 开曼晨星半导体公司 串行数据处理器
CN103970829A (zh) * 2013-01-30 2014-08-06 马维尔以色列(M.I.S.L.)有限公司 用于tcam共享的架构
CN105075204A (zh) * 2013-03-12 2015-11-18 高通股份有限公司 可配置的多核网络处理器
CN106886498A (zh) * 2017-02-28 2017-06-23 华为技术有限公司 数据处理装置和终端

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7551617B2 (en) 2005-02-08 2009-06-23 Cisco Technology, Inc. Multi-threaded packet processing architecture with global packet memory, packet recirculation, and coprocessor
US7739426B1 (en) 2005-10-31 2010-06-15 Cisco Technology, Inc. Descriptor transfer logic
US8316439B2 (en) 2006-05-19 2012-11-20 Iyuko Services L.L.C. Anti-virus and firewall system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450411A (en) * 1994-09-02 1995-09-12 At&T Global Information Solutions Company Network interface for multiplexing and demultiplexing isochronous and bursty data streams in ATM networks
EP0947067A4 (en) * 1996-12-09 2002-05-02 Motorola Inc SYSTEM, DEVICE AND METHOD FOR ROUTING DHCP PROTOCOL PACKETS IN A PUBLIC DATA TRANSMISSION NETWORK
US6128666A (en) * 1997-06-30 2000-10-03 Sun Microsystems, Inc. Distributed VLAN mechanism for packet field replacement in a multi-layered switched network element using a control field/signal for indicating modification of a packet with a database search engine
US5949780A (en) * 1997-07-11 1999-09-07 Network Machines, Inc. Integration of intelligence with communications in a switching node
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
JP3643507B2 (ja) * 1999-09-20 2005-04-27 株式会社東芝 パケット処理装置及びパケット処理方法
US6553005B1 (en) * 2000-07-26 2003-04-22 Pluris, Inc. Method and apparatus for load apportionment among physical interfaces in data routers
CN100426780C (zh) * 2000-11-07 2008-10-15 英特尔公司 基于交换的网络处理器

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409673B (zh) * 2008-11-12 2013-07-03 北京恒光创新科技股份有限公司 一种网络适配器数据传输方法、网络适配器及系统
CN103793340A (zh) * 2012-10-31 2014-05-14 开曼晨星半导体公司 串行数据处理器
CN103793340B (zh) * 2012-10-31 2017-03-01 开曼晨星半导体公司 串行数据处理器
CN103970829A (zh) * 2013-01-30 2014-08-06 马维尔以色列(M.I.S.L.)有限公司 用于tcam共享的架构
CN103970829B (zh) * 2013-01-30 2018-09-14 马维尔以色列(M.I.S.L.)有限公司 用于tcam共享的架构
CN105075204A (zh) * 2013-03-12 2015-11-18 高通股份有限公司 可配置的多核网络处理器
CN105075204B (zh) * 2013-03-12 2018-03-16 高通股份有限公司 可配置的多核网络处理器
CN106886498A (zh) * 2017-02-28 2017-06-23 华为技术有限公司 数据处理装置和终端
CN106886498B (zh) * 2017-02-28 2020-06-26 华为技术有限公司 数据处理装置和终端
US10917361B2 (en) 2017-02-28 2021-02-09 Huawei Technologies Co., Ltd. Data processing apparatus and terminal

Also Published As

Publication number Publication date
CA2494579C (en) 2009-12-22
WO2004019571A2 (en) 2004-03-04
CN100499564C (zh) 2009-06-10
AU2003252054A1 (en) 2004-03-11
AU2003252054B2 (en) 2008-09-25
EP1530854B1 (en) 2017-09-06
CA2494579A1 (en) 2004-03-04
WO2004019571A3 (en) 2004-11-25
EP1530854A2 (en) 2005-05-18

Similar Documents

Publication Publication Date Title
US7304999B2 (en) Methods and apparatus for processing packets including distributing packets across multiple packet processing engines and gathering the processed packets from the processing engines
US7382787B1 (en) Packet routing and switching device
CN1305274C (zh) 用于处理分组的方法和装置
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
JP5657840B2 (ja) ルックアップ・フロントエンド・パケット出力プロセッサ
JP3734704B2 (ja) パケット分類エンジン
US7257633B2 (en) Dynamic allocation of a pool of threads
CN100524287C (zh) 微处理器子系统
US7362762B2 (en) Distributed packet processing with ordered locks to maintain requisite packet orderings
US20050219564A1 (en) Image forming device, pattern formation method and storage medium storing its program
US6769033B1 (en) Network processor processing complex and methods
US7499470B2 (en) Sequence-preserving deep-packet processing in a multiprocessor system
US20020131437A1 (en) Flexible aggregation of output links
CN1171429C (zh) 一种交换数据交换网点内部的信息的方法
US7404015B2 (en) Methods and apparatus for processing packets including accessing one or more resources shared among processing engines
EP2297905B1 (en) Cascaded memory tables for searching
AU2004310639B2 (en) Using ordered locking mechanisms to maintain sequences of items such as packets
CN1802836A (zh) 网络协议卸载引擎存储器管理
CN1829200A (zh) 用于在网络处理器中记帐的装置和方法
CN1781293A (zh) 用于修改从源传输到目的地的数据的系统和方法
CN100499564C (zh) 分组处理引擎
US6804258B1 (en) Method and apparatus for alleviating cell packing problems in bundled link systems
WO2024063859A1 (en) A method for in-network aggregation load balancing
Xu et al. Performance of multicast communication on hypercubes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090610

Termination date: 20200719