CN106030562A - 网络处理器中的分组整形 - Google Patents

网络处理器中的分组整形 Download PDF

Info

Publication number
CN106030562A
CN106030562A CN201480076493.5A CN201480076493A CN106030562A CN 106030562 A CN106030562 A CN 106030562A CN 201480076493 A CN201480076493 A CN 201480076493A CN 106030562 A CN106030562 A CN 106030562A
Authority
CN
China
Prior art keywords
packet
network
node
pse
circuit
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
CN201480076493.5A
Other languages
English (en)
Other versions
CN106030562B (zh
Inventor
B·R·弗尔森
J·B·汤普金斯
W·P·斯奈德二世
R·E·凯斯勒
E·兰格文
A·J·琼斯
E·F·罗宾斯
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.)
Kaiwei International Co
Marvell Asia Pte Ltd
Original Assignee
Cavium LLC
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
Application filed by Cavium LLC filed Critical Cavium LLC
Publication of CN106030562A publication Critical patent/CN106030562A/zh
Application granted granted Critical
Publication of CN106030562B publication Critical patent/CN106030562B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/821Prioritising resource allocation or reservation requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active 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/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种电路操作用于在网络分组处理器中管理分组的传送。该电路包括分组描述符管理器(PDM)、分组调度引擎(PSE)以及分组引擎和缓冲模块(PEB)。PDM从命令信号生成元分组和描述符,其中命令信号标识将由电路传送的分组。PSE比较与分组关联的分组传送速率和与分组关联的峰值速率和承诺速率中的至少一个速率,并且基于比较来确定在多个分组之中传送分组的顺序。一旦分组被调度用于传送,则PEB基于在描述符中指示的指令对分组执行处理操作以产生经处理的分组。PEB然后使得经处理的分组朝向目的地被传送。

Description

网络处理器中的分组整形
相关申请
本申请是2014年2月28日提交的美国申请14/194,038的延续并要求其优先权。上述申请的全部教导通过引用并入本文。
背景技术
典型的网络处理器对用于上级网络协议的工作(比如分组处理操作)进行调度和排队,并且允许在向连接的设备转发接收的分组之前关于分组中的上级网络协议(例如,传输层和应用层)的处理。通常由网络处理器执行的功能包括分组过滤、队列管理和优先级、服务质量增强以及访问控制。通过运用处理分组数据所特有的特征,网络处理器可以优化联网的设备的接口。
发明内容
本发明的示例实施例提供了一种用于在网络分组处理器中管理分组的传送的电路。电路可以包括分组描述符管理器(PDM)、分组调度引擎(PSE)以及分组引擎和缓冲(PEB)。PDM可以从命令信号生成元分组,其中元分组指示将由电路传送的分组的大小和目的地。PSE可以操作以比较与分组关联的分组传送速率和与分组关联的峰值速率和承诺速率中的一个或者多个速率。基于这一比较,PSE可以确定在多个分组之中传送分组的顺序。PSE可以操作以处理分组并且使得经处理的分组根据由PSE所确定的顺序向目的地传送。
在进一步的实施例中,PSE可以通过网络拓扑的模型来对分组的从目的地到电路的传送进行建模,PSE基于用作模型的传送来确定顺序。PSE还可以对在目的地与电路之间的网络拓扑中的具有网络整形器的多个节点进行建模,网络整形器中的每一个定义峰值速率和承诺速率中的至少一个速率。分组的模型可以被应用到在电路与目的地之间的路径中的网络整形器中的每一个,PSE基于应用来确定顺序。PSE可以基于通过每个网络整形器的建模的分组速率向该网络整形器指派颜色,并且可以基于分组的路径中的网络整形器中的至少一个整形器的颜色来向分组指派颜色。PSE可以应用用于基于元分组的至少一个字段向分组指派颜色的规则。
在更进一步的实施例中,PSE可以比较与目的地关联的分组传送速率和与目的地关联的峰值速率和承诺速率中的至少一个速率,PSE基于比较来确定顺序。基于这一比较,PSE可以向分组指派颜色。PSE也可以对于在电路与目的地之间的路径中的多个节点来比较与节点关联的分组传送速率和与节点关联的峰值速率和承诺速率中的至少一个速率,PSE基于比较来确定顺序。
在进一步的实施例中,PDM还包括元分组队列,PDM被配置为向元分组队列存储元分组。PSE还可以被配置为从元分组队列取回元分组的至少一部分。PDM也可以包括描述符队列,其中PDM向描述符队列存储描述符。PEB可以从描述符队列取回描述符的至少一部分。
在更进一步的实施例中,PSE可以通过从目的地到电路的网络拓扑的模型对分组的传送进行建模,PSE基于用作模型的传送来确定顺序。为了实现这一点,PSE可以对网络拓扑中的在目的地与电路之间的多个节点进行建模,并且可以基于分组在用作模型的传送中相对于其它分组在电路处的到达来确定顺序。PSE也可以对多个分组从多个相应的目的地向电路的传送进行建模,PSE基于在用作模型的传送中在多个分组中的分组的到达来确定顺序。PSE还可以对网络拓扑中的在多个目的地与电路之间的多个节点进行建模,并且可以向模型的多个节点的输入中的每个输入指派相对的优先级。用作模型的传送可以基于差额加权循环计算。
在更进一步的实施例中,PEB可以基于描述符中的指针来构造分组,该指针指示存储分组的存储器的地址。PEB也可以向输出缓冲器存储经处理的分组,PEB使得分组基于与缓冲器关联的信用状态而被传送。元分组可以包括分组的大小的指示和用于对分组进行排序的指令。对照而言,描述符可以包括指示存储分组的存储器的地址的指针以及用于由PEB处理分组的指令。用于构造和处理分组的指令可以由命令信号提供。PEB可以用指示与分组业务规则相符的颜色来标记分组,并且可以向分组添加时间戳。PEB也可以基于来自PSE的指示来有选择地丢弃分组。
在更进一步的实施例中,提供了一种管理分组的传送的方法。在一种这样的方法中,接收命令信号,命令信号标识待处理和传送的分组。从命令信号生成元分组,元分组包括分组的大小的指示和用于对分组进行排序的指令。也从命令信号生成描述符,其中描述符包括指示对分组进行存储的存储器的地址的指针以及用于处理分组的指令。在多个分组之中传送分组的顺序被确定。这样的确定可以基于在元分组中指示的分组的大小和目的地。一旦进行了这一确定,就构造分组,并且基于在描述符中指示的指令来处理对分组的操作以产生经处理的分组。然后向目的地传送经处理的分组。
附图说明
前文将从如在附图中所示的本发明的示例实施例的以下更具体描述而变得清楚,在附图中,贯穿不同视图,相似的附图标记指代相同部分。附图未必按比例,而是代之以进行强调以说明本发明的实施例。
图1是图示了其中可以实施本发明的实施例的网络服务处理器的框图。
图2是图示了其中可以实施本发明的实施例的网络服务处理器的简化框图。
图3是图示了一个实施例中的分组输出处理器(PKO)的框图。
图4是图示了由一个实施例中的PKO对分组进行处理的过程的流程图。
图5A-图5B是元分组和为了存储元分组而分配的存储器空间的框图。
图6是为了存储描述符而分配的存储器空间的框图。
图7是一个实施例中的PKO的详细框图。
图8A-图8B图示了用于分组调度的模型网络拓扑。
图9A-图9C是模型节点的框图。
图10是节点的模型分支的框图。
图11A-图11E是图示了通过模型分支的命令和分组移动的示图。
图12A-图12B图示了用于分组整形的模型网络拓扑。
图13A-图13B是图示了两色和三色整形的框图。
图14是时间轮的框图。
图15是图示了分组整形的流程图。
具体实施方式
本发明的示例实施例的描述如下。
图1是图示了网络服务处理器100的框图。网络服务处理器100使用至少一个处理器核120来递送高应用性能。
网络服务处理器100处理在接收的分组中封装的开放系统互联网络L2-L7层协议。如本领域技术人员熟知的那样,开放系统互连(OSI)参考模型定义了七个网络协议层(L1-L7)。物理层(L1)代表将设备连接到传送媒体的电和物理的实际接口。数据链路层(L2)执行数据成帧。网络层(L3)将数据格式化成分组。传输层(L4)处置端到端传输。会话层(L5)管理在设备之间的通信,例如,无论通信是半双工或者全双工。表示层(L6)管理数据格式化和表示,例如,语法、控制代码、特殊图形和字符集。应用层(L7)允许在用户之间的通信,例如,文件传送和电子邮件。
网络服务处理器100可以对用于上级网络协议(例如,L4-L7)的工作(分组处理操作)进行调度和排队,并且允许执行对接收的分组中的上级网络协议的处理以便以线速转发分组。线速是在其上传送和接收数据的网络的数据传送的速率。通过对协议进行处理以便以线速转发分组,网络服务处理器未减慢网络数据传送速度。
分组由多个接口单元122接收以用于处理。分组也可以由PCI接口124接收。接口单元122通过校验在接收的分组中包括的L2网络协议报头中的各个字段来执行对接收的分组的预处理,并且继而向分组输入单元126转发分组。至少一个接口单元122a可以从多个X附接单元接口(XAUI)、简化X附接单元接口(RXAUI)或者串行千兆媒体独立接口(SGMII)接收分组。至少一个接口单元122b可以从Interlaken接口(ILK)接收连接。
分组输入单元126执行对在接收的分组中包括的网络协议报头(例如,L3报头和L4报头)的进一步的预处理。预处理包括用于TCP/用户数据报协议(UDP)(L3网络协议)的校验和校验。
自由池分配器128维护指向2级(Level-2)高速缓存存储器130和外部DRAM 108中的自由存储器的指针池。分组输入单元126使用指针池之一来在2级高速缓存存储器130或者外部DRAM 108中存储接收的分组数据,并且使用指针池中的另一个指针池来分配用于处理器核120的工作队列条目。
分组输入单元126然后将分组数据写入2级高速缓存130或者外部DRAM 108中的缓冲器中。优选地,以对于在处理器核120中的至少一个处理器核中执行的更高层软件方便的格式将分组数据写入缓冲器中。因此,有助于对更高级网络协议的进一步处理。
网络服务处理器100也可以包括一个或者多个专用协处理器。这些协处理器在被包括时从核120卸除一些处理,由此使得网络服务处理器能够实现高吞吐量分组处理。例如,提供专用于执行对接收的分组的压缩和解压缩的压缩/解压缩协处理器132。协处理单元的其它实施例包括加速用于盘存储应用的数据分段和数据复制处理的RAID/De-Dup单元162。
另一协处理器是包括专用超有限自动机(HFA)线程引擎的超有限自动机(HFA)单元160,所述HFA线程引擎被适配来加速防病毒、入侵检测系统和其它内容处理应用所必需的模式和/或签名匹配。使用HFA单元160,模式和/或签名匹配被加速,例如以每秒数十千兆以上的速率被执行。HFA单元160在一些实施例中可以包括确定性有限自动机(DFA)、非确定性有限自动机(NPA)或者HFA算法单元中的任何单元。
I/O接口136管理总体协议和仲裁并且提供相干I/O划分。I/O接口136包括I/O桥138以及获取和添加单元140。I/O桥包括两个桥——I/O分组桥(IOBP)138a和I/O总线桥(IOBN)138b。I/O分组桥138a被配置为管理总体协议和仲裁并且向相干I/O划分主要提供分组输入和输出。I/O总线桥138b被配置为管理总体协议和仲裁并且向相干I/O划分主要提供I/O总线。获取和添加单元140中的寄存器被用来维护用于通过分组输出单元146转发经处理的分组的输出队列的长度。I/O桥138包括用于存储将在相干存储器互连(CMI)144、I/O总线142、分组输入单元126和分组输出单元146之间传送的信息的缓冲队列。
杂项I/O接口(MIO)116可以包括辅助接口,比如通用I/O(GPIO)、Flash、IEEE 802双线管理接口(MDIO)、串行管理中断(SMI)、通用异步接收器-发射器(UART)、简化千兆媒体独立接口(RGMII)、媒体独立接口(MII)、双线串行接口(TWSI)和其它串行接口。
网络服务提供商100也可以包括支持MIPS EJTAG标准的联合测试行动组(“JTAG”)接口123。根据JTAG和MIPS EJTAG标准,网络服务提供商100内的多个核将各自具有内部测试访问端口(“TAP”)控制器。这允许网络服务提供商100的多核调试支持。
调度/同步和排序(SSO)模块148对用于处理器核120的工作进行排队和调度。通过向队列添加工作队列条目来对工作进行排队。例如,由分组输入单元126为每个分组到达而添加工作队列条目。定时器单元150被用来调度用于处理器核120的工作。
处理器核120请求来自SSO模块148的工作。SSO模块148选择(即,调度)用于处理器核120之一的工作并且向处理器核120返回指向描述工作的工作队列条目的指针。
处理器核120继而包括指令高速缓存152、1级(Level-1)数据高速缓存154和密码加速156。在一个实施例中,网络服务处理器100包括32个超标量简化指令集计算机(RISC)型处理器核120。在一些实施例中,超标量RISC型处理器核120中的每个包括MIPS64版本3处理器核的扩展。在一个实施例中,超标量RISC型处理器核120中的每个包括cnMIPS II处理器核。
2级高速缓存存储器130和外部DRAM 10由所有处理器核120和I/O协处理器设备共享。每个处理器核120由CMI 144耦合到2级高速缓存存储器130。CMI 144是用于在处理器核100、I/O接口136以及2级高速缓存存储器130和控制器之间的所有存储器和I/O事务的通信信道。在一个实施例中,CMI 144可扩展到32个处理器核120,支持具有直通写入的全相干1级数据高速缓存154。优选地,CMI 144被高度缓冲以具有对I/O区分优先级的能力。CMI被耦合到轨迹控制单元164,轨迹控制单元164被配置为捕获总线请求,从而软件可以以后读取请求并且在CM上生成事件序列的轨迹。
2级高速缓存控制器131维护存储器参考相干性。它返回用于每个填充请求的块的最新副本,无论块是否被存储在2级高速缓存存储器130中、外部DRAM 108中或者“在飞行中”。它也存储用于每个处理器核120中的数据高速缓存154的标签的复制副本。它比较高速缓存块存储请求的地址与数据高速缓存标签,并且无效化(均复制)用于处理器核120的数据高速缓存标签,无论何时存储指令来自另一处理器核或者经由I/O接口136来自I/O组件。
在一些实施例中,多个DRAM控制器133支持上至128千兆DRAM。在一个实施例中,多个DRAM控制器包括四个DRAM控制器,DRAM控制器中的每一个都支持32千兆DRAM。优选地,每个DRAM控制器133支持到DRAM 108的64位接口。附加地,DRAM控制器133可以支持优选的协议,比如DDR-III协议。
在分组已经由处理器核120处理之后,分组输出单元146从2级高速缓存存储器130、108读取分组数据、执行L4网络协议后处理(例如,生成TCP/UDP校验和)、通过接口单元122或者PCI接口124转发分组并且释放由分组使用的L2高速缓存130/DRAM 108。
DRAM控制器133管理去往/来自DRAM 108的飞行中事务(加载/存储)。在一些实施例中,DRAM控制器133包括四个DRAM控制器,DRAM 108包括四个DRAM存储器,并且每个DRAM控制器被连接到DRAM存储器。DFA单元160被直接耦合到旁路高速缓存访问路径135上的DRAM控制器133。旁路高速缓存访问路径135允许HFA单元从存储器直接读取而未使用2级高速缓存130,这能提高用于HFA操作的效率。
网络服务处理器100及其上述的组件中的任何子集可以在硬件、软件、固件或者这样的实施方式的组合中被实施。本发明的实施例可以被实施在图1中所示的网络服务处理器100中并且可以更特别地涉及分组输出单元(PKO)146。以下参照图2-图15进一步详细描述示例实施例。
图2是网络服务处理器101的简化框图。处理器可与图1的处理器100相当并且可以包括处理器100的组件中的一些或者所有组件。然而,处理器101被图示出以突出显示处理器101的与PKO 146的操作最相关的组件。除了图1的组件之外,处理器101也包括中央中断单元(CIU)172,其控制在处理器101处的操作中断。另外,处理器101与媒体访问控制器(MAC)190通信,MAC 190与PKO 146和PKI 126对接并且操作来通过网络向目的地发送分组和从目的地接收分组。
图3是图示了一个实施例中的分组输出处理器(PKO)300的框图。PKO 300可以被实施在以上参照图1和图2描述的网络处理器100、101中。PKO 300可以包括分组描述符管理器(PDM)330、分组调度器和整形引擎(PSE)340、以及分组引擎和缓冲单元(PEB)350。PKO 300与处理器核320通信以接收用于将被输出到MAC 390的每个分组的“发送分组”(以下被称为“sendpkt”)命令。每个sendpkt命令可以对应于给定的分组,并且可以标识存储器308的在该处存储给定分组的分段以及用于处理分组的指令。PKO 308从每个sendpkt命令确定相对于其它分组传送分组的顺序、从存储器308构造分组、根据由命令提供的指令处理分组并且向MAC 390转发经处理的分组以用于通过网络向目的地传送。
PDM 330可以被配置为基于接收的sendpkt命令生成元分组和描述符、管理分组描述符和元分组队列以及管理保持用于每个队列的头部和尾部高速缓存线的读取和写入预获取缓冲器。元分组一般提供用于对分组进行取回和排序的信息,并且可以包括如下信息,比如分组的大小、分组的目的地以及用于对分组进行排序的其它特性和指令。以下参照图5A-图5B描述示例元分组。描述符一般提供用于处理分组的信息,并且可以包括信息,比如指示对分组进行存储的存储器的地址的指针以及用于处理分组的指令。以下参照图6描述示例描述符。
PSE 340一般可以操作用于确定传送每个分组的相对顺序。为了进行这一确定,PSE 340可以利用每个元分组来通过模型网络拓扑对每个分组的传送进行建模。一旦分组的顺序被确定,PEB 350就可以基于在描述符中指示的指令来对分组执行处理操作,从而产生经处理的分组用于转发给MAC 390。
以下参照图4描述PKO 300的示例操作,其中以下参照图7描述更详细的操作。
图4是图示了由一个实施例中的PKO对分组进行处理的过程400的流程图。参照图3,在向PKO 300发表sendpkt命令(410)时,PDM330可以分配存储器308并且生成对应的分组描述符和元分组(420),从而将各自写入到它们的相应的缓冲器中(425)。分组描述符缓冲器可以被链接在一起以形成分组描述符队列(PDQ),而元分组缓冲器可以被链接在一起以形成元分组队列(MPQ)。PDM 330可以对于PKO 300中的每个活跃流维护用于这些队列中的每个队列的头部指针和尾部指针。PDM 330从高速缓存线大小的块中的链接的缓冲器读取描述符和元分组,并且将它们存储在PDM内部的预取RAM中。向PSE 340提供个体元分组,PSE340确定用于调度分组以用于传送的时间。当PSE 340确定具体分组准备好向MAC 390传送时,向PEB350提供分组描述符,PEB 350取回并处理分组,从而向MAC 390发送经处理的分组以用于向目标目的地传送。
PSE 340可以被配置为确定接着为设备上的每个活跃链路传送哪个分组。特别地,分组的这一顺序可以通过分组整形(430)和分组调度(440)的操作而被确定。PSE 340可以是事件驱动的系统,该系统提供指示对队列和整形器状态的改变的事件。PSE 340执行为了确定在调度和整形分级的每级处传送下一分组并且相应地更新队列和整形器状态而必需的计算和校验。
PEB 350可以被配置为在转发经处理的分组以用于向目的地传送(470)之前构造分组(450)并且执行在分组描述符中包含的指令和由描述符指向(例如,使用跳跃指令)的任何扩展的结构(460)。PSE 350可以发布读取事务以便走遍缓冲器链或者收集用于每个分组的分段。由PEB 350发布的状态信息可以被用来控制循环冗余校验(CRC)生成器、桶移位器、插入和标记逻辑加上将分组存储到FIFO中以用于传送。可以保存PEB 350的操作状态并且在从存储器中返回、处理和存储属于不同分组的数据块时恢复PEB 350的操作状态。描述符中的指令也可以提示PEB 350向存储器308中的位置发布原子操作并且在完成分组传送之后向SSO发表简写“添加工作”命令。可以在固定(例如,128字节)的块中获取分组,并且PEB 350可以具有一次上至固定最大值(例如,32个)的未完成的多个请求。
图5A-图5B图示了示例实施例中的元分组。首先参照图5A,示出了被分配来存储元分组的存储器空间的配置。该分配包括元分组501的排序的块,其可以被归组成用于由PKO进行寻址的一个或者多个群组。在多个存储器分段被链结以存储元分组的配置中,该分配也可以包括“下一指针”505,该指针指示下一分配的存储器地址。
图5B是示例元分组500的框图。如以上描述的那样,元分组500可以由PDM 330(图3)使用在从处理器核接收的sendpkt命令中提供的信息来构造。元分组可以包含分组的以字节为单位的总长度(pkt长度)560,该总长度可以被用来从存储器获取分组。这一长度可以与有符号的整形值(整形增量)540组合以创建分组的整形长度,该整形长度可以用于PSE340的所有调度和整形信用计算。元分组也可以包含用于覆盖队列级分组策略设置的每分组状态(pkt策略)550。这一设置允许PKO 300在逐个分组的基础上标识在队列处建立的一般策略规则的任何例外。例如,控制分组可以被设置为具有“在RED上发送”策略,该策略覆盖在队列级设立的任何“在RED上拖延”策略。这一设置将允许以未受整形规则影响的最小延时向网络中发送分组,这些整形规则延迟了普通数据平面业务。也可以存在“排除”标志,该标志允许传送分组而不影响任何信用计算。标志排除分组在向流指派的带宽中被考虑,并且允许流未由于运送端点未请求或者利用的分组而被惩罚。
元分组500可以包括其它可配置设置,比如用于指示有效性的有效标志(VAL)510、用于标识对应描述符的位置的描述符定位符(FPD)520和用于指示是否发送关联的分组的不发送标志(DS)530。
图6是被分配用于存储分组描述符610的存储器空间的框图。分组描述符610可以由报头信息和由sendpkt命令提供的指令构造。分组描述符610可以具有固定或者最大大小(例如,128字节)并且可以在固定(例如,128字节)的地址上被对准。描述符610可以被存储到从FPA分配的固定(例如,4K字节)的缓冲器中。每个缓冲器可以保持某个范围(例如,25至200)的分组描述符、长度/策略子描述符和在链结多个缓冲器的情况下指向链605中的下一缓冲器的链路。4KB缓冲器大小提供预定义的描述符阵列,这些描述符的地址可以被容易地计算以实现流水线化的访问。在与分组描述符相同的缓冲器中包括子描述符允许PKO 300使用相同头部指针和尾部指针来跟踪每个阵列。可能需要最小(例如,7位)偏移以标识子描述符阵列的头部和尾部。
图7是一个实施例中的PKO 700的详细框图。可以与参照图3在上面描述的PKO 300相当地配置PKO 700,PKO 700包括PDM 730、PSE 740和PEB 750。另外,在下面图示并且描述了若干附加组件及其在对分组进行排序、处理和转发的示例过程中的实现,这些组件提供对分组的排序、构造和处理以及与外部模块对接。
网控制缓冲器(NCB)705可以包括用于向PKO 700提供控制平面管道的接口。配置和命令由PKO经由NCB 705接口从处理器核(例如,图3中的处理器核320)接收。NCB 705还可以将PKO 700连接到支持存储操作的主存储器。因此,来自PDM 730的所有分组描述符存储、来自PSE 740的命令响应和从PEB 750到存储器的原子操作都可以由NCB 705来提供服务。
IOBP 706、708包括到IOBC块的接口(例如,128位接口),该接口是通向相干存储器总线(CMB)的桥。IOB0接口处置来自PDM730的填充操作以及来自PEB 750中的分组引擎755的上下文获取,作为在分组描述符中嵌入的跳跃(JUMP)指令的结果。IOBP1接口逻辑从分组引擎755取得分组缓冲器地址和传送大小信息并且从主存储器获取分组数据。返回的分组数据被缓冲并且将其向PEB呈现。分组数据由引擎处理并被存储到与目标MAC关联的FIFO中。这些接口706、708与NCB 705一起可以被并行运行以与命令、描述符和分组传送重叠。
MAC分组接口712也被称为P2X_DATA总线,其从PKO向MAC移动输出分组以用于传送到芯片外。总线可以是128位宽。MAC缓冲器信用接口714实施信用系统,该系统防止MAC传送缓冲器溢出。
MAC外部反压接口716可以被用来从MAC向PKO 700传送xon/xoff信道状态。每个MAC可以向PKO 700每周期发送n位xon/xoff信息并且在8周期时段内报告所有支持的信道的状态。PKO中的接口逻辑检测用于每个信道的xon/xoff(信道开启/关闭)的改变、将信道映射到具体PKO队列编号并继而生成向PSE 740发送以用于处理的FlowCtl(Q,Xoff)命令。
除了提供流控制的外部接口之外,控制PKO 700的软件还可以向调度器表中的适当字段经由基于NCB 705的访问直接设置用于每个队列的xon/xoff状态。每个调度器表条目可以包含一对xoff标志、一个用于硬件并且一个用于软件。如果这些xoff标志中的任一xoff标志被设置,那么对队列进行流控制。
MAC信道信用接口718可以处置从MAC(例如,图3中的MAC390)对信用的返回,这些信用被用来限制在向任何具体信道的飞行中的数据量。当外部反压被下游设备施加时,在传送实际停止之前它可以接受的数据量是有限的。信用可以防止比在链路的远端处的设备一旦它用信号发送xoff就可以吸收的数据更多的数据被排队至信道。
PKO 700接收来自两个MAC中的每一个的(例如,4位)总线以及来自DPI块和所有MAC的(例如,2位)串行总线。每个串行接口发送16位字,这些字包含“100”开始序列、信道编号、在该信道上返回的信用字的数目和EOP标志。
MAC在分组数据被传送到芯片外时返回信用。这些更新可以是频繁的并且可以每更新返回范围(例如,从1个信用(16字节)至16个信用(256字节))。PKO 700可以将链路和信道映射到具体队列,并且可以生成“Creditrtn(Q,credit,eop)”事件并将其向PSE 740发送。用于可用信道信用的运行总数可以作为调度器RAM中的信道队列状态的部分而被保持。creditrtn事件可以被用来向这一总数添加信用。当信道队列的信用大于待发送的下一分组的大小时,它被启用以用于传送。从这一队列选择分组以用于传送,从总数中减去分组长度。如果总数值降至待发送的下一分组的大小以下,则队列被禁用于传送。
PKO 700可以使用描述符FPA接口732来分配和释放用于描述符和元分组的存储器缓冲器,并且可以使用分组FPA接口722来释放先前为一个或者多个分组而分配的存储器缓冲器。PKO 700可以使用SSO接口724来向处理器核调度工作。
PKO 700可以对于每个活跃描述符队列(DQ)并且在如由分组描述符所指令的每分组的基础上生成高的和低的水中断。PKO 700也可以生成用于ECC错误和用于若干类型的硬件(HW)故障的中断。这些中断可以通过PKO的CIU接口726被传送到外部CIU块(例如,图2中的CIU 172)。
控制/状态接口(CSI)块745可以与NCB 705和RSL总线二者对接并且提供用于这些接口的访问和仲裁点以读取和写入在PKO700处的控制/状态寄存器(CSR)。CSI 745可以包括专用寄存器并且还扩展到PKO 700中以允许调试对在其它块中包含的状态寄存器和存储器的访问。经由NCB 705或者RSL总线可访问的寄存器和存储器可以是读取和写入可访问的,并且具有副影响的CSR可能已经混淆了允许访问而无副影响的地址。
PKO命令接口可以是NCB 705地址空间的分配的(例如,128字节)存储器映射区域,处理器(例如,图3中的处理器核320)可以在该存储器映射区域处发送命令以配置和管理PKO 700资源,以及对分组进行排队以用于从设备链路传送出去。每个处理器可以向PKO命令缓冲器传送上至固定长度(例如,128字节)的命令作为单个原子存储。NCB接口705可以向PDM 750传递这些命令,其中它解析命令并且执行以下校验:1)校验命令有效。2)校验创建命令以未被使用的队列为目标并且描述符缓冲器可用。3)校验去除命令以使用中的队列为目标。4)校验发送命令以使用中的队列为目标并且描述符缓冲器可用。
对于向PKO 700发送的每个命令,可以预期向发布命令的处理器返回提供响应。向处理器返回的命令响应(例如,64位)发回接收的命令代码和状态代码。状态代码标识命令是否成功完成或者是否遇到错误。校验失败的任何命令被丢弃并且可选中断被生成。在sendpkt命令的情况下,部分(例如,较低48位)可以根据DQ的配置而包含以字节或者分组为单位的瞬时DQ深度。所有其它命令在这一字段中返回零。NCB接口705中的定时器可以被用来跟踪每个命令以防范PKO 700失败。命令超时可以自动产生通过在NCB 705处的命令接口逻辑而向适当处理器返回的响应。
PDM 730也可以管理分组描述符和元分组预取缓冲器736、735。可以对于系统中的每个活跃DQ完成预取以便减少延时、节约DRAM带宽、并且允许PSE 740将调度决定流水线化。分组长度可以是速率整形和DWRR信用计算的中心。为了实现必需的吞吐量,可以在向PKO 700返回第一描述符之前将上至固定数目(例如,32个)的分组描述符获取置于飞行中。如果分组长度被保持在描述符中,则将需要完成信用计算,其中假设最大传送单位(MTU)或者某个平均分组长度并且然后当实际分组长度可用时稍后校正信用计算。这种方式的一个缺点是:当在这么多的分组未完成时,在任何给定时刻处的信用计算错误可能是显著的,并且从这些计算得到的调度和整形决定可能不正确。另一问题是有时不应完成对计算的校正,比如当队列从活跃向不活跃转变时未对差额加权循环(DWRR)校正。这一场景会在第一描述符在PKO 700可用之前出现多次。因此,将需要附加状态信息以便在逐个队列的基础上回忆哪个分组生成和未生成校正动作。这些动作也可能需要处理附加事件从而消耗宝贵的PSE周期和调度表带宽。
为了信用计算准确以及避免这些复杂性,PKO可能要求在获取描述符之前知晓传送的分组的确切长度。为了适应这一要求,用来存储分组描述符的缓冲器也可以包含小数据结构,其保持每个分组的个体长度。每个DQ可以具有PKO 700中的用于保持分组长度的两个专用缓冲器。分组长度/策略预取缓冲器735(PLRB)的一部分例如可以保持用于每个DQ中的前N个分组的长度,其中N例如可配置为16、32或者64。同样地,描述符预取缓冲器736(PLWB)的一部分可以被用来将分组长度打包在一起以用于在每个DQ的尾部处进行突发存储。可以每当选择DQ以用于传送时从PLRB取得分组长度,并且在缓冲器耗用至一半以下时标记N/2个分组长度的下一集合中的DMU获取。在向DQ添加分组时,描述符可以被存储到它的DDR存储器缓冲器,并且向PLWB发送分组长度。一旦N/2个分组长度被打包到PLWB中,就可以将它们冲刷至DDR存储器作为单个突发写入事务。
为了从单个分组队列(PQ)提供大量吞吐量(例如,100Mpps)以及这些分组都可以源自调度树中的单个DQ这样的事实,可以要求树中的每个DQ被配置用于N=64。这一配置将支持让32个分组从任何单个DQ在飞行中并且允许它维持这一输出水平。这一配置的一个结果是,增加DQ分组长度缓冲器的存储可以减少能够支持的DQ的数目。在共计64KB用于分组长度存储时,将所有DQ设置成类型2将允许系统中的最多256个DQ。
PKO也可以管理两个表——描述符队列头部表和尾部指针表,这些表包含用于每个描述符队列的头部指针和尾部指针加上有效位。地址位可以保持零,因为可以从本地DDR存储器分配描述符缓冲器。
以下描述了PKO 700在它操作以处理sendpkt命令、确定相应的分组的顺序、构造和处理分组以及转发分组以用于传送时的示例工作流程过程。以下编号的操作对应于图7内的带圆圈的编号以图示每个操作发生的位置。
(1)通过NCB 705总线从处理器核接收sendpkt命令。
(2)向PDM 730转发sendpkt命令。
(3)PDM 730中的命令逻辑从sendpkt命令提取DQ、分组长度和分组策略字段并且将它们向分组预取缓冲器735发送。向描述符预取缓冲器736发送整个sendpkt命令。
(4)向PSE 740发送addpkt事件。
(5)PSE 740更新DQ深度并且向NCB接口705发布sendpkt响应以用于向MIPS处理器传送。
(6)如果DQ为空,则它被启动并且向在PSE 740处的PA状态机发布pktadvance命令;否则,addpkt终止。PA机器推进分组通过调度级直至它被阻止或者到达PQ寄存器。在分组从队列到队列向前推进时,向统计块发布命令以便以分组和字节二者记录传送。
(7)一旦分组已经到达PQ,则将与PQ关联的链路分级寄存器(在PSE 740处)设置为有效。分级寄存器保持与被选择用于传送的分组关联的所有状态信息。这一状态信息可以包括DQ,该DQ保持分组、分组长度、颜色和策略位、信道编号以及向目标链路指派的PEB750FIFO编号。
(8)链路选择逻辑比较有效分级寄存器与由MCI1块所提供的优先化的链路状态、任何活跃链路整形器的状态和来自PEB 750的每链路资源状态,并且选择PEB 750可以服务于的最高优先级的有效链路。
(9)将来自选择的PSE链路寄存器的FIFO编号和分组状态传递至PEB块750,在其中它被排队以用于处理。
(10)PSE 740向PG状态机发布packetget命令以填充现在为空的PQ寄存器。命令沿着它从PQ到调度树的叶队列的道路工作,从而从下一级向前拉取分组以反向填充空队列。它也向统计块发布命令以在来自每个队列的分组传送穿越调度树时记录该分组传送。(可以连续地重复在步骤7至步骤10中实施的过程以便每12个周期提供新分组选择。)
(11)PEB 750中的分组引擎755向PDM 730中的描述符预取缓冲器736发布对于分组的描述符的请求。可以代表PEB 750FIFO完成请求,该PEB 750FIFO具有这一分组的所有权。分组引擎755通过DQ编号和PEB FIFO编号来标识请求的描述符。
(12)如果描述符在缓冲器中,则描述符预取缓冲器736向在PEB750处的分组引擎755返回描述符,否则告知引擎在从主存储器获取描述符之时睡眠。如果需要获取,则它向IOBP0接口706进行发布,并且DQ编号被用作流ID。一旦描述符在缓冲器中,则向PEB FIFO发信号以唤醒和重新发布描述符请求。
(13)使用在从PDM提供的描述符中的指针,分组引擎755使用一个或者多个高速缓存线(128字节)读取事务来代表PEB FIFO经由IOBP1接口708获取分组。为FIFO而发布的所有分组获取事务使用相同流ID并且被保障按顺序完成。用于分组获取操作的流ID总是等于PEB FIFO数目。在多个链路正被支持时,在PEB内的多个FIFO将竞争分组引擎755。分组引擎755使用轮询机制来服务于这些FIFO。
(14)使用描述符中的子操作,分组数据或者“分组分段”的每128字节传送由分组引擎755处理并且与PEB创建的报头一起存储到与目标链路关联的PEB FIFO 757中。在通过IOBP1接口接收并且由分组引擎处理来自不同分组的分段时,在每FIFO状态存储器中保存和恢复部分状态和残留分组数据。
(15)一旦完整地获取、处理、存储了分组并进行了任何最终更新(比如CRC计算),分组引擎755就向与FIFO 756关联的分组分段计数器添加存储在FIFO 756中的“分段”的数目。这一动作向TX状态机通知分组被排队以用于向链路传送。PEB 750向FPA返回空分组缓冲器并且向FPA提供以字节或者缓冲器数目为单位的分组长度以用于排队目的。
(16)由TX状态机基于由MCI1块714供应的优先化的链路服务向量在分段中从具体TX FIFO 756拉取并且通过P2X总线向目标链路发送分组。
(17)无论何时从链路的TX FIFO 757拉取数据并将其放置在线上,链路都向PKO700回供信用。BGX链路也提供用于在BXG接口处的小FIFO的skid信用返回,这些信用返回馈给在BGX内部的四个TX FIFO。
(18)信用计数器跟踪飞行中并且为每个链路而排队的数据量。MCI0和MCI1块714、718基于这些计数器来标识待服务于的最高优先级链路并且将这一信息向PSE中的链路选择逻辑和PEB中的TX状态机提供。
(19)PEB 750中的TX状态机758向目标链路发送分组,并且一旦EOP字节被传送,PEB就发布在描述符中指定的任何可选SSO事件、中断或者存储器更新。在PTP分组的情况下,PEB 750可以在执行这些操作之前等待MAC确立时间戳提交线。
(20)来自MAC的信道级信用返回和信道级反压(xon/xoff)状态由PKO 700捕获。LUT 728将信道编号翻译成PSE队列ID并且向PSE发表creditrtn和FlowCtrol事件。
分组调度
为了确定传送分组的顺序,PKO(例如,以上参照图3和图7描述的PKO 300、700)可以实施分组整形和/或分组调度。在以上描述的示例中,这样的整形和调度可以由相应的PSE(例如,PSE 340、740)操作。为了实施调度,PSE可以定义用于对分组将被传送到的网络的拓扑进行建模的树数据结构。在树结构内的节点可以代表在网络内的路由点,而分组可以由上述的元分组代表。PSE可以利用包括“推送”和“拉取”技术的算法以对通过网络拓扑推进的分组进行建模。算法和数据结构可以被优化以用于向存储器高效存储和从存储器取回以及如下处理:该处理支持广泛多种硬件处理选项。算法和数据结构可以被配置为支持对任意大的网络的建模,这些网络包括具有很大数目的级别和每节点高扇入(fan-in)的网络。
图8A-图8B图示了用于分组调度的模型网络拓扑。图8A从模型(即,主控PKO的端点,被示出为EP0 830)的观点示出了示例模型网络拓扑800。EP0 830能够通过中间节点820的集合(被标注为节点0-节点9)向多个其它端点810(被标注为EP1-EP35)发送分组。对于在最左节点830处的PKO,网络拓扑表现为树结构,其中PKO在根处。树中的分支代表分组通过网络穿越以到达其它端点的物理路径。在这一视图中,EP0传送的分组通过分支沿着树向上流动并且最终到达叶,这些叶是其它端点。
如以上参照图5B描述的那样,元分组可以包含关于分组的、对于它的建模而言必需的信息。这一信息的格式可以被优化以用于向存储器存储和从存储器取回。元分组可以包括1)关联的分组的长度;2)对分组将被传送到的端点的引用;3)表示元分组是否有效的位;和4)表示元分组是否为冒泡(bubble)的位。在没有其它有效元分组要发送时的一些情况下,可以通过模型推进冒泡元分组以取代有效元分组。元分组也可以包括支持专门化的机制的定制信息,这些机制用于选择下一分组以传送这样的网络业务调度和整形。
图8B图示了顺序与在图8A中所示的拓扑800相反(即,镜像)的模型网络拓扑801。出于选择接着向网络中传送哪个分组的目的,可以实施在图8A中所示的模型拓扑。在这一模型中,端点(EP0 810)传送的分组通过分支从叶沿着树向下流动并且最终到达根830。节点0可以是与PKO关联的根节点(其中端点EP0 830代表包含PKO本身的硬件),并且节点1、节点2和节点3是它的子代。节点4继而是节点1的子代。子分组流聚合成父业务流直至它们到达根节点,在该点处从根节点出来的分组流被传送至网络中。
模型801中的每个节点820可以维护记录,该记录指定它如何适配到网络拓扑中。这一记录可以包括:1)表示节点是否被启用的位;2)父节点引用;3)对子节点的列表中的第一子节点的引用;4)对用于由父节点的子代列表所使用的接下来节点和先前节点的引用;以及5)状态位数。每个节点820也可以具有用于元分组的存储,并且可以限于一次存储一个元分组。这一元分组可以被称为节点的结果,并且它代表将由节点820输出的下一分组。在模型中,为了模拟传出分组业务,元分组可以仅朝着根830向前移动或者推进;它们不可以向后移动。根节点的结果代表将向网络中传送的下一分组。
图9A-图9C是模型节点的框图。图9A提供了模型端点节点910的概念视图。端点910可以能够与来自外部源的关联的元分组一起接收推送命令。端点910将这些元分组存储至FIFO结构中。FIFO中的元分组可用于由分级中的下一节点读取和无效化。端点可以向它们的父节点发送推送命令。用于端点的拓扑记录保持关于它的FIFO状态的信息并且不包含子引用。
图9B提供了模型内部节点920的概念视图。内部节点920可以能够从它们的子代接收推送命令并且从它们的父代接收拉取命令。它们也能够向它的子代发送拉取命令和向它们的父代发送推送命令。可以使内部节点的单个结果时隙可用于由父节点读取和无效化。
图9C提供了模型根节点930的概念视图。根930可以能够从它的子代接收推送命令和从外部源接收拉取命令。它也能够向它的子代发送拉取命令。可以使它的所得元分组可用于外界源在使用时被读取和无效化。根930的拓扑记录可以不包括父引用。
参照图9A-图9C,所有三个节点类型910、920、930也可以能够接收启用或者禁用节点的“开”和“关”命令。所有推送、拉取、开和关命令包含对将对其施加操作的父代和子代的引用。以这种方式,命令指定施加什么操作以及何处发现对其施加它们的子和父数据结构。
虽然模型中的三个不同节点类型910、920、930可以如以上描述的那样不同,但是它们的功能和数据结构相似到足以使得单个算法可以用于所有三个类型。单个算法允许在通用和/或定制硬件上容易地完成各种节点计算。以这种方式,运行软件的通用处理器可以被用来处置更高分级级别,而定制硬件可以被用来处置更低分级级别。数据结构的共性实现在运行软件的通用硬件与定制硬件之间的高效存储、取回和操纵。
作为在拓扑中的每个节点910、920、930具有结果元分组的结果,对接着传送哪个分组的计算可以被划分成在逐个节点基础上被评估的更小计算的集合。因此,无需在传送分组时同时评估整个分支需要。将计算分解成更小原子条具有若干优点。虽然在相邻节点之间存在依赖性,但是计算可以无序地完成;可以在相同或者不同处理器上执行计算;以及算法容易伸缩成具有长分支的大模型,这些分支有许多节点。
参照回图8B的模型801,分组流算法可以使用推送和拉取技术以从FIFO(在EP1至EP35 810)向在右侧上的网络接口830推进元分组。元分组可以根据它们被发送到哪个端点810而向模型801输入。如果端点的父节点已经具有结果,则输入的元分组将在端点的FIFO中排队。如果端点的父节点尚无结果,则输入的元分组从FIFO被立即推进以经由“推送”命令变成父节点。推送命令可以是如下手段,元分组通过该手段在分支内的结果为空时通过模型801推进并且被它的子代之一发送到节点。一系列推送命令将沿着分支向下推进元分组,直至发现已经具有结果的节点。如果未发现节点具有结果,则元分组将通过树的所有通路推进以变成节点0的结果。
在节点820接收推送命令并且它已经具有结果时,提供命令的节点被追加到子代列表,并且子代的连接状态在“拼接”操作中被更新。备选地,在节点接收推送命令并且它尚未具有结果时,它然后向它自己的结果推进子代的结果、无效化子代的结果并且向它的父代转发推送命令。父代然后重复以上过程。
推送机制可以是在网络负荷轻时的元分组推进的主要手段。当网络接受分组比模型810提供它们更快时,推送命令然后将大部分时间通过模型快速推进。然而,当元分组被输入到模型801比网络可以传送它们并且分支开始填满更快时,推送命令发现越来越少的空结果要填充,并且“拉取”机制可以代之而变成为主导。拉取命令如同推送命令那样也可以指引节点以从子节点的结果向它自己的结果推进元分组,但是有不同。例如,如果接收拉取命令的节点不具有任何连接的子代,则它推进“冒泡”元分组并且通过“修剪”操作而变得空闲。如果存在连接的节点,则它从它们之一向它自己的结果推进结果、无效化子代结果并且向子代转发拉取命令。子代然后重复以上过程。
如果模型801忙碌,则无论何时向网络中传送节点0的结果,都发起一系列拉取命令。节点0先执行它自己的拉取命令以向它自己的结果推进子代结果,并且然后它向分支中的下一节点转发拉取命令。这一过程可以继续,直至从端点FIFO推进了下一元分组。
如以上描述的那样,拉取命令可以导致修剪,而推送命令可以导致拼接。修剪和拼接是向树数据结构施加的操作,这些树数据结构控制是否包括记录作为数据结构的部分。模型的优点是在拓扑数据结构中仅包括具有要发送的元分组的节点(即,有效结果)。尽管节点820的拓扑记录包括节点如何适配到网络中,但是节点直至它具有有效结果才可以被拼接到数据结构中。反言之,在节点不再能够产生有效结果时,它从数据结构被修剪。
当节点820被拼接时,认为它变成连接的,并且当节点被修剪时,认为它变成断开的。用两个位来跟踪节点的连接状态。被称为p_con的第一位跟踪节点是否连接到它的父代。被称为c_con的第二位跟踪节点是否具有任何连接的子节点。p_con和c_con位允许推送和拉取命令快速和高效地确定命令是否应当继续传播。
ON命令使节点能够被连接到数据结构中。如果开启的节点已经具有结果,则节点可以立即被拼接。OFF命令防止节点被连接到数据结构中。连接的节点将在OFF命令被接收时被修剪。已经被关闭的节点将忽略除了ON命令之外的所有命令。ON和OFF命令由外部实体驱动并且可以被用作流控制的简单形式。
图10是节点的模型分支1000的框图,模型分支1000可以代表网络模型(比如图8的模型801)的一部分。分支1000包括四个节点:端点1010(可与图9A的端点节点910相当)、内部节点——节点B1020A和节点A 1020B(可与图9B的内部节点920相当)、和根节点1030(可与图9C的根节点930相当)。端点910可以代表分组目的地,而根节点可以代表网络接口。以下参照图11A-图11E描述了利用分支1000的示例操作集合,包括推送和拉取操作。一般而言,各图示出了节点在给定的步骤上接收推送或者拉取请求,并且然后在随后步骤上进行状态改变和元分组推进。示出了一系列五个元分组推送跟随有XOFF、后续XON和最终为一系列五个拉取操作。
图11A-图11E是图示了通过模型分支的命令和分组移动的示图。具体而言,图11A图示了一系列推送命令,图11B图示了关闭命令,图11C图示了跟随关闭命令的又一拉取命令,图11D图示了开启命令,并且图11E图示了一系列拉取命令。
首先参照图11A,在1101中,分支完全地空闲。端点节点1010的输入FIFO为空,大小为零,以及三个其它节点1020A、1020B、1030的所有结果时隙。所有有效c_con和p_con位在每级处被取消确立(de-asserted)。第一活动是对于向端点1010发送的元分组0(MP0)的推送请求。
在1102中,端点1010处理对于MP0的推送请求。向FIFO输入第一MP0,并且FIFO大小增加至一。然后,由于取消确立了p_con位,所以端点1010向它的父节点、节点B-1020A发送推送请求。无论何时处理推送命令,其中发现p_con位被取消确立并且向父节点发送推送命令,都认为推送命令被“转发”。
在1103中,节点B 1020B处理对于MP0的推送命令。由于节点B尚未具有结果并且c_con和p_con位二者均被取消确立,所以如果它向自己的结果移动MP0并且无效化端点的结果。无论何时以这种方式移动元分组,都认为它“推进”。注意,端点的FIFO的深度减回至零并且在节点B无效化端点的有效位的结果时清除端点的有效位。由于取消确立了p_con位,所以向节点A转发推送。
在1104中,端点和节点A二者活跃。端点处理对于MP1的推送请求。向FIFO输入MP1,FIFO深度增加至1,并且向节点B转发推送。同时,节点A通过推进MP0并且向根节点转发推送来处理推送请求。
在1105中,节点B和根节点二者活跃。节点B通过推进MP1并且向节点A转发推送来处理对于MP1的推送请求。根推进MP0,但是由于它是分支中的最后节点,所以不存在转发推送的概念。取而代之,MP0将保持作为根的结果直至附接的网络准备好传送它。
在1106中,端点和节点A二者活跃。端点通过向FIFO中输入MP2并且向节点B转发推送来处理对于MP2的推送请求。节点A通过推进MP1并且向根转发推送来处理推送请求。
在1107中,节点B和根节点二者活跃。节点B通过推进MP2并且向节点A转发推送来处理对于MP2的推送请求。然而,关于根,节点1030接收推送而它已经具有结果。根已经以MP0作为它的结果,因此它不能推进MP1。根节点代之以通过设置子代结果的确立c_con位和确立p_con位来完成拼接。这向节点A指示它不应再向根转发推送,因为没有更多分组可以在这时推进。反言之,它向根指示它的现在连接的子代没有更多元分组要传送。
在1108中,端点和节点A二者活跃。端点1010通过向FIFO中输入MP2并且向节点B转发推送来处理对于MP3的推送请求。节点A处理推送,但是如同在步骤7中的根,它也不能推进元分组,因此它完成拼接。
在1109中,节点B通过执行拼接来处理推送。在这一点,在分支中的每个节点存在有效结果,并且每个节点已经被拼接到它的父代。重要的是要注意:这一示例仅示出了单个路径,其中在实践中,节点B、节点A和根可以具有任何数目的连接的子节点。以这种方式,c_con位意味着存在一个或者多个连接的子节点。
在1110中,端点向FIFO中推送MP4、将FIFO大小递增至二,并且由于FIFO大小变成大于一,所以c_con位也被确立。用于端点的c_con位是向节点B指示多于一个元分组被排队在FIFO中。
参照图11B,1111示出了向节点A的关闭请求(XOFF)。XOFF请求的目的是禁用节点B。
在1112中,节点A通过从它的子代列表修剪节点B来处理XOFF,并且节点B的p_con位被取消确立。并且在这一简单示例中,由于节点B是节点A的仅有子代,所以节点A的c_con位也被取消确立。节点B从节点A被有效地断开。
参照图11C,1113向示例引入第一拉取操作。附接的网络决定传送MP0。在这样做时,根的结果已经被无效化并且已经向根发布了拉取请求。
在1114中,根通过从节点A推进MP1来执行拉取命令;然而,由于节点A的结果并未让它的c_con位被确立,所以根并未转发拉取。拉取在根处停止并且节点A被修剪。
参照图11D,在1115中,向节点A发送XON请求。XON的目的是启用节点B。
在1116中,节点A推进MP2,因为它自己的结果时隙为空,它向根发送推送,并且它向节点B发送拉取。注意,推送被发送是因为p_con位被取消确立,并且拉取被发送是因为节点B的c_con位被确立。节点B也被拼接到节点A,这也因为节点B的p_con位被取消确立。源于节点B的子分支现在重新被连接到节点A。
在1117中,节点B和根1030二者活跃。根1030通过拼接节点A来处理推送。节点B通过推进MP3来对拉取做出响应,并且在它被推进时,端点FIFO大小被减少至一,c_con位被取消确立。
参照图11E,1118开始从根1030拉取元分组而产生的一系列拉取命令。这始于从根拉取MP1。
在1119中,根1030通过推进MP2并且向节点A 1020A转发拉取来处理拉取。
在1120中,从根拉取MP2,并且节点A通过推进MP3并且向节点B 1020B转发拉取来处理拉取。
在1121中,节点B和根二者活跃。节点B通过从端点推进MP4来处理拉取。端点FIFO现在为空,因此它被修剪并且它的有效位被取消确立。根推进MP3并且向节点A转发拉取。
在1122中,从根拉取MP3,并且节点A通过推进MP4来处理拉取。从节点A修剪节点B。
在1123中,根通过推进MP4并且修剪节点A来处理拉取。
在1124中,从根拉取MP4。并未采取其它动作,因为没有当前连接到根的子代,并且因此没有更多元分组可用于发送。
在示例实施例中,p_con和c_con位可以服务于除了加速命令转发决定之外的目的。由PSE运行的操作可以被优化用于多个节点的同时处理,并且连接状态位被算法用来管理在父节点与子节点之间的依赖性。例如,参照图10,如果节点A 1020A推进节点B的1020A结果并且然后向节点B 1020B发布拉取命令,则未确保节点B 1020B将在节点A 1020A再次准备好推进节点B的结果之前执行该拉取命令。节点A 1020A可以在节点B已经产生它的下一结果之前尝试从节点B拉取;然而,由于节点B将最终执行拉取命令,所以确保有效结果将变成可用。c_con位用来管理这一情况。在节点读取子代结果并且发现有效位被取消确立而c_con位被确立时,这指示一旦未决拉取命令执行并且节点被允许拖延直至子代结果可用,结果就将可用。
反言之,在推送命令遇到其p_con位被确立的结果时,这意味着结果已经连接到父代而无论有效位如何,并且处理将继续进行,如同结果有效。这保证在拉取未决时不向父节点转发推送。
连接位也可以用来管理关键互锁,该关键互锁防止多个处理器对相同节点同时执行推送和拉取命令。冲突在处理器从用于另一处理器已经从父节点同时接收拉取命令的相同节点的子节点接收推送命令时出现。这经常在连接的子分支的尾端处发生。p_con位与拉取命令相关,同时c_con位与拉取命令相关。在节点读取它的结果并且发现c_con位被确立而有效位被取消确立时,这指示结果已经被父节点推进并且存在向该节点的未决的关联的拉取命令。这允许推送命令在冲突时终止。
分组整形
为了确定传送分组的顺序,PKO(例如,以上参照图3和图7描述的PKO 300、700)可以实施分组整形和/或分组调度。在以上描述的示例中,这样的整形和调度可以由相应的PSE(例如,PSE 340、740)操作。
网络业务整形是一种将分组的发送限于指定的速率的机制。这通过根据是否已经超过了指定的速率延迟对分组的传送来实现。它具有许多实际应用,比如网络拥堵预防、速率合同履行和服务质量。
在网络变成拥堵时不利地影响分组吞吐量和延时。向网络中发送的太多分组会导致分组被丢弃并且然后稍后被重发。分组整形通过限制向网络中传送分组的速率来预防网络拥堵。以这种方式,将被正常传送的分组被延迟,直至确定网络可以处置它们。为了实施分组整形,PSE可以执行如以下参照图12至图15描述的操作。
图12A-图12B图示了用于分组整形的模型网络拓扑。图12A从模型(即,主控PKO的端点,被标识为EP0 1230)的观点示出了示例模型网络拓扑1200。EP0 1230能够通过中间节点820的集合(被标注为节点0-节点9)向多个其它端点1210(被标注为EP1-EP35)发送分组。网络拓扑向在最左节点830的PKO表现为树结构,其中PKO在根处。树中的分支代表分组通过网络穿越以到达其它端点的物理路径。在这一视图中,EP0传送的分组通过分支沿着树向上流动并且最终到达叶,这些叶是其它端点。模型1200可以与以上参照图8A描述的模型800相当,其中添加在节点1220和目的地端点1210中的每个节点和目的地端点处指示的带宽限制。
在从分组整形受益的示例中,突出显示的路径示出了从EP0 1230到EP7的路由。沿着路径,节点0能够有l00千兆每秒(Gbps)的最大吞吐量。如果EP0 1230以比100Gbps更快的数据速率向节点0发送分组,则拥堵将在该节点出现。相似地,如果EP0以比50Gbps更高的数据速率向节点1发送分组;以比20Gbps更高的数据速率向节点4发送分组;以及以比5Gbps更高的数据速率向EP7发送分组,则拥堵将出现。业务整形可以用来保证不超过这些速率。
网络业务整形也可以用来限制分组流以满足合同服务速率。以这种方式,网络服务提供商可以基于数据速率赋予不同服务等级。网络业务整形可以用来实行服务速率。网络业务整形也可以用来基于分组分类来限制业务流。不同类的分组流可以被配置为具有不同的保障的吞吐量。以这种方式,视频分组流可以被配置为仅取得为了维持可视相干性而需要的带宽数量。
图12B图示了顺序与在图8A中所示的拓扑800相反(即,镜像)的模型网络拓扑801。除了节点1220、端点1210和根1230之外,网络整形器1215被示出为与每个节点1220和端点1210关联。
图13A-图13B是图示了两色和三色整形的框图。图13A图示了可以在图12B的拓扑模型1201中的每个节点1220处存在的双速率、三色整形器模型1300。整形器可以由PSE操作的整形算法和用于节点的支持数据结构的组合实施。整形器算法可以基于如由模型1300例示的令牌桶。在模型1300中,向累加器(即,桶)添加信用(即,令牌)以提供使分组推进有资格的信用。在信用可用时,分组被允许推进。在信用不可用时,分组可以被丢弃或者被拖延直至信用变成可用,或者根据如何配置整形器以别的方式推进分组。
一个信用累加器实行承诺速率而另一信用累加器实行峰值(或者过量)速率。承诺速率是两个速率中的较低速率并且可以是保障的速率。在正常条件之下,分组应当总是至少在承诺速率通过节点进行进展。然后,无论何时过量带宽可用,节点都可以向上传递分组至它们的指定的峰值速率。过量容量可以在对等子节点未使用所有它们的承诺带宽时变成可用。
CAC(承诺累加器)跟踪可用于在承诺速率推进分组的信用数量。CAC是被划分成18位有符号整数部分和8位分数部分的26位值。CAC的大小向整形器给定了128千字节的最大可能突发大小。PAC(峰值累加器)使用与CAC相同的特性以跟踪可用于在峰值速率推进分组的信用。
两个信用累加器的状态确定整形器的颜色:绿色、黄色或者红色。在两个累加器为正时,整形器颜色是绿色。在绿色状态中推进的分组利用节点的承诺带宽。在CAC为负而PAC为正时,整形器是黄色,并且推进分组利用节点的过量带宽。在CAC和PAC二者均为负时,整形器颜色是红色,并且分组可以根据整形器配置而推进或者可以不推进。
关于模型的拓扑数据结构,被允许推进元分组的节点被拼接到数据结构中。修剪未被允许推进元分组的节点。因此,推进其整形器是绿色的分组的节点将被拼接或者保持拼接到它的父节点。通常,推进其整形器变成红色的分组的节点将从它的父节点被修剪。
在整形器推进元分组时,它的累加器之一或者二者根据元分组的大小字段被借记(debit)。在累加器值从非负转变成负时,这指示颜色降级。颜色可以从绿色向黄色、绿色向红色和黄色向红色降级。在降级出现时,节点必须从它当前引用的子代列表被去除并且移向新整形器颜色的子代列表。
下面在表1中说明了用于对为每个分组而提供的数据进行整形的示例数据结构。表1的数据结构可以被包括在元分组(例如,图5B中的元分组500)中或者可以被实施为经由指针或者其它手段而与分组关联的分离的分配。
表1:示例整形数据结构。
参照表1,整形器数据结构中的2位RED_ALGO字段控制整形器将如何在红色状态之中处置分组。整形器提供三个选项:丢弃_开启_红色(DROP_ON_RED)、拖延_开启_红色(STALL_ON_RED)或者发送_开启_红色(SEND_ON_RED)。如在模型1300中所示,如果整形器是红色则不更新累加器。无论选择哪个处理选项都保持这种情况。丢弃_开启_红色(DROP_ON_RED)推进分组而没有任何整形器状态改变,同时元分组的丢弃位被设置。这向后续节点信号通知将不对元分组执行进一步操作。分组将被视为NO-OP直至它退出拓扑。然后外部逻辑被预期丢弃分组而不是向附接的网络中传送它。发送_开启_红色(SEND_ON_RED)推进分组而没有任何整形器状态改变。分组仍然被红色整形器视为NO-OP,但是它然后被后续节点视为恰如任何其它节点。注意,在红色状态中推进的分组很可能引起拥堵并且可能最终在网络中被丢弃。拖延_开启_红色(STALL_ON_RED)具有无论何时整形器到达红色状态都从父代修剪节点的效果。在被修剪时,节点不再被包括在它的父代的子代列表中的任何子代列表中,因此它不能接收任何拉取命令。将最终使节点被拼接回去并且推进分组的仅有命令是来自时间轮的推送命令。
如以上描述,PAC和CAC各自操作以基于相应的整形器数据以跟踪可用信用并且有选择地推进分组。CAC由CBS(承诺突发大小)限制,而PAC由PBS(峰值突发大小)限制。从整形器数据结构的CBS_MAN字段(8位尾数)和CBS_EXP字段(4位指数)计算CBS值。相似地,从PBS_MAN字段和PBS_EXP字段计算PBS。用于CBS和PBS的等式如下:
CBS=(1+CBS_MAN/256)*2CBS_EXP
PBS=(1+PBS_MAN/256)*2PBS_EXP
向CAC添加信用的速率被称为CIR(承诺信息速率)。向PAC添加信用的速率被称为PIR(峰值信息速率)。以字节每秒为单位指定这些速率。从被称为CIR_ADD(CIR加数)和CIR_PER(CIR周期)的两个中间值计算CIR。CIR_ADD指定由CIR_PER指定的每个时间段向CAC添加的字节的数目。相似地,从PIR_ADD和PIR_PER计算PIR。用于CIR和PIR的等式如下:
CIR=CIR_ADD/CIR_PER
PIR=PIR_ADD/PIR_PER
从整形器数据结构的CIR_MAN(8位尾数)字段和CIR_EXP(4位指数)字段计算CIR_ADD值。从PIR_MAN字段和PIR_EXP字段计算PIR_ADD值。用于CIR_ADD和PIR_ADD的等式如下:
CIR_ADD=(1+CIR_MAN/256)*2CIR_EXP
PIR_ADD=(1+PIR_MAN/256)*2PIR_EXP
使用时间轮硬件的周期(TW_PER)和整形器数据结构的被称为CIR_DIV的4位分频器字段来计算CIR_PER值。相似地,从PIR_DIV字段计算PIR_PER。用于CIR_PER和PIR_PER的等式如下:
CIR_PER=TW_CLK_PER*2CIR_DIV
PIRPER=TW_CLK_PER*2PIR_DIV
时间轮周期(TW_PER)由时间轮的硬件实现来规定。图14示出了简化的时间轮1400。时间轮使用简单计数器作为索引来通过整形器数据结构循环。对于每个索引,时间轮从存储器读取整形器数据结构;使用数据结构中的字段以计算下一CAC和PAC值并且然后将那些值存储回到存储器。在一个示例实施例中,PKO可以每时间轮支持256个整形器数据结构,并且关联的时间轮周期是768纳秒。
时间轮14的一个功能是无论何时整形器由于向累加器添加信用而改变状态都向父节点发送拼接(SPLICE)命令。无论何时累计器从负值向正值穿越,整形器都已经改变了状态。这些状态改变可以是红色向黄色、红色向绿色或者黄色向绿色转变。在整形器改变状态时,关联的节点必须从旧颜色列表移向新颜色列表。这利用至父节点的拼接命令来完成。
再次参照上述表1,元分组可以包括被称为颜色(COLOR)的2位字段,该字段用于基于元分组在穿过模型网络拓扑之时遇到的整形器状态来标记分组。在一个实施例中,元分组颜色可以总是在它进入模型时作为绿色开始。无论何时标记绿色的元分组遇到黄色整形器,它的颜色都降级成黄色。无论何时标记绿色或者黄色的元分组遇到红色整形器,它的颜色都降级成红色。所得元分组的颜色将反映在它退出模型时在模型中遇到的最低整形器颜色。外部逻辑然后可以基于这一颜色分类来改变分组。
如上所述,绿色或者黄色整形器无论何时推进分组都根据分组的大小借记它们的信用累加器。提供用于调整分组大小的两种机制。这一调整可以反映分组封装或者CRC插入或者任何种类的下游分组操纵,该下游分组操纵将改变分组在附接的网络中的实际传送之前的大小。
相对于整形器,一种调整是静态的并且另一调整是动态的。静态调整是在整形器数据结构内包含的被称为调整(ADJUST)的9位有符号整数字段。这一调整被应用于穿过整形器的所有分组。另一调整是在元分组本身中携带的也被称为调整(ADJUST)的9位有符号整数字段。这一调整仅应用于携带调整的元分组。在更新信用累计器之前应用两个调整如下:
ADJ_PKT_SIZE=PKT_SIZE+SHAPER[ADJUST]+META_PKT[A DJUST]
与图13A对照,图13B图示了单速率、两颜色整形器模型1301。模型可以与以上描述的模型1300相当,但是CAC被禁用(由变黑的组件示出)并且保持于零以提供单速率、两颜色整形。
图14是以上参照图13A进一步详细描述的时间轮1400的框图。
图15是图示了可以如何更新模型节点的拓扑数据结构以维护与三个可能的整形器颜色对应的三个子代列表的流程图。在节点被拼接到它的父代时,节点的整形器的颜色确定它将被追加到的列表。在被拼接时,具有绿色成型器的节点可以被追加到父代的绿色列表;具有黄色整形器的节点可以被追加到父代的黄色列表;具有被配置成在红色上发送的红色整形器的节点可以被追加到红色列表;并且具有被配置成在红色上拖延的红色整形器的节点可以被修剪。
应当理解,以上呈现的示例流程图可以被容易地转换成以与以上阐述的方式相似的方式操作的模块、子系统或者系统。例如,示例实施例可以包括初始化模块、计算模块和报告模块。
还应当理解,这里呈现的示例可以包括更多或者更少组件、被分割成子单元或者被实施在不同组合中。另外,可以在硬件、固件或者软件中实施这里的示图。如果在软件中被实施,则可以用任何适当软件语言编写软件。可以在任何形式的计算机可读媒体(比如随机访问存储器(RAM)、只读存储器(ROM)或者磁盘或者光盘)上体现并且由通用或者定制处理器加载和执行软件。
尽管已经参照本发明的示例实施例特别地示出和描述了本发明,但是本领域技术人员将理解,可以在其中做出形式和细节上的各种改变而未脱离由所附权利要求涵盖的本发明的范围。

Claims (23)

1.一种用于管理分组的传送的电路,所述电路包括:
分组描述符管理器(PDM),被配置为从命令信号生成元分组,所述元分组指示将由所述电路传送的分组的大小和目的地;
分组调度引擎(PSE),被配置为比较与所述分组关联的分组传送速率和与所述分组关联的峰值速率和承诺速率中的至少一个速率,所述PSE基于所述比较来确定在多个分组之中传送所述分组的顺序;以及
分组引擎和缓冲(PEB)模块,被配置为处理所述分组并且使得经处理的分组根据由所述PSE确定的所述顺序朝向所述目的地被传送。
2.根据权利要求1所述的电路,其中,所述PSE还被配置为通过网络拓扑的模型对所述分组的从所述目的地到所述电路的传送进行建模,所述PSE基于用作模型的所述传送来确定所述顺序。
3.根据权利要求2所述的电路,其中,所述PSE还被配置为对所述网络拓扑中的、在所述目的地与所述电路之间的具有网络整形器的多个节点进行建模,所述网络整形器中的每一个网络整形器定义峰值速率和承诺速率中的至少一个速率。
4.根据权利要求3所述的电路,其中,所述PSE还被配置为将所述分组的模型应用于在所述电路与所述目的地之间的路径中的所述网络整形器中的每一个网络整形器,所述PSE基于所述应用来确定所述顺序。
5.根据权利要求4所述的电路,其中,所述PSE还被配置为基于通过所述网络整形器中的每一个网络整形器的建模的分组速率来向该网络整形器指派颜色。
6.根据权利要求5所述的电路,其中,所述PSE还被配置为基于所述分组的路径中的所述网络整形器中的至少一个网络整形器的所述颜色向所述分组指派颜色。
7.根据权利要求6所述的电路,其中,所述PSE还被配置为应用用于基于所述元分组的至少一个字段而向所述分组指派所述颜色的规则。
8.根据权利要求2所述的电路,其中,所述PSE还被配置为基于所述分组在用作模型的所述传送中相对于其它分组在所述电路处的到达来确定所述顺序。
9.根据权利要求7所述的电路,其中,所述PSE还被配置为对所述多个分组从多个相应的目的地向所述电路的传送进行建模,所述PSE基于在用作模型的所述传送中在所述多个分组中的所述分组的到达来确定所述顺序。
10.根据权利要求8所述的电路,其中,所述PSE还被配置为对所述网络拓扑中的、在所述多个目的地与所述电路之间的多个节点进行建模。
11.根据权利要求1所述的电路,其中,所述PSE还被配置为基于所述目的地来关联所述分组传送速率与所述分组。
12.根据权利要求1所述的电路,其中,所述PSE还被配置为基于所述比较来向所述分组指派颜色。
13.根据权利要求1所述的电路,其中,所述PSE还被配置为:对于在所述电路与所述目的地之间的路径中的多个节点,比较与所述节点关联的分组传送速率和与所述节点关联的峰值速率和承诺速率中的至少一个速率,所述PSE基于所述比较来确定所述顺序。
14.一种管理分组的传送的方法,所述方法包括:
接收标识待处理和传送的分组的命令信号;
从所述命令信号生成元分组,所述元分组包含所述分组的目的地和所述分组的大小的指示;
比较与所述分组关联的分组传送速率和与所述分组关联的峰值速率和承诺速率中的至少一个速率;
基于所述比较来确定在多个分组之中传送所述分组的顺序;
对所述分组处理操作以产生经处理的分组;以及
使得所述经处理的分组根据所述顺序朝向所述目的地被传送。
15.根据权利要求14所述的方法,还包括:通过网络拓扑的模型对所述分组的从所述目的地到所述电路的传送进行建模,所述PSE基于用作模型的所述传送来确定所述顺序。
16.根据权利要求15所述的方法,还包括:对所述网络拓扑中的、在所述目的地与所述电路之间的具有网络整形器的多个节点进行建模,所述网络整形器中的每一个网络整形器定义峰值速率和承诺速率中的至少一个速率。
17.根据权利要求16所述的方法,还包括:将所述分组的模型应用于在所述电路与所述目的地之间的路径中的所述网络整形器中的每一个网络整形器,所述顺序基于所述应用。
18.根据权利要求17所述的方法,还包括:基于通过所述网络整形器中的每一个网络整形器的建模的分组速率来向该网络整形器指派颜色。
19.根据权利要求18所述的方法,还包括:基于所述分组的路径中的所述网络整形器中的至少一个网络整形器的所述颜色来向所述分组指派颜色。
20.根据权利要求19所述的方法,还包括:应用用于基于所述元分组的至少一个字段而向所述分组指派所述颜色的规则。
21.根据权利要求15所述的方法,还包括:基于所述分组在用作模型的所述传送中相对于其它分组在所述电路处的到达来确定所述顺序。
22.根据权利要求21所述的方法,还包括:对所述多个分组从多个相应的目的地向所述电路的传送进行建模,所述顺序基于在用作模型的所述传送中在所述多个分组中的所述分组的到达。
23.根据权利要求22所述的方法,还包括:对所述网络拓扑中的、在所述多个目的地与所述电路之间的多个节点进行建模。
CN201480076493.5A 2014-02-28 2014-12-30 网络处理器中的分组整形 Active CN106030562B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/194,038 2014-02-28
US14/194,038 US9559982B2 (en) 2014-02-28 2014-02-28 Packet shaping in a network processor
PCT/US2014/072835 WO2015130404A1 (en) 2014-02-28 2014-12-30 Packet shaping in a network processor

Publications (2)

Publication Number Publication Date
CN106030562A true CN106030562A (zh) 2016-10-12
CN106030562B CN106030562B (zh) 2018-07-13

Family

ID=52395216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480076493.5A Active CN106030562B (zh) 2014-02-28 2014-12-30 网络处理器中的分组整形

Country Status (4)

Country Link
US (1) US9559982B2 (zh)
CN (1) CN106030562B (zh)
TW (1) TWI668975B (zh)
WO (1) WO2015130404A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110958215A (zh) * 2018-09-26 2020-04-03 马维尔国际贸易有限公司 安全的在线接收的网络分组处理

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9680742B2 (en) * 2014-02-28 2017-06-13 Cavium, Inc. Packet output processing
US9397938B2 (en) 2014-02-28 2016-07-19 Cavium, Inc. Packet scheduling in a network processor
US9559982B2 (en) 2014-02-28 2017-01-31 Cavium, Inc. Packet shaping in a network processor
US10452669B2 (en) * 2014-06-26 2019-10-22 Ciena Corporation Simplifying quantitative analysis of time-bounded resource consumption
US10447608B2 (en) * 2014-11-14 2019-10-15 Marvell Semiconductor, Inc. Packet scheduling using hierarchical scheduling process with priority propagation
US10110515B2 (en) * 2014-11-14 2018-10-23 Cavium, Inc. Packet scheduling using hierarchical scheduling process
US9606926B2 (en) * 2014-11-29 2017-03-28 Freescale Semiconductor, Inc. System for pre-fetching data frames using hints from work queue scheduler
US9641448B1 (en) * 2015-01-31 2017-05-02 Netronome Systems, Inc. Packet ordering system using an atomic ticket release command of a transactional memory
US10129102B2 (en) * 2016-05-11 2018-11-13 Spirent Communications, Inc. Service based testing
US11258679B2 (en) 2015-07-28 2022-02-22 Spirent Communications, Inc. Systems and methods for automated testing of MoCA networks
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications
EP3744066A4 (en) * 2018-01-28 2021-06-16 Drivenets Ltd. METHOD AND DEVICE FOR IMPROVING BANDWIDTH USAGE IN A COMMUNICATIONS NETWORK
TWI672930B (zh) * 2018-02-12 2019-09-21 瑞昱半導體股份有限公司 網路資料預測方法、網路資料處理裝置及網路資料處理方法
US11038856B2 (en) * 2018-09-26 2021-06-15 Marvell Asia Pte, Ltd. Secure in-line network packet transmittal
JP7096190B2 (ja) * 2019-03-29 2022-07-05 株式会社日立製作所 データ収集サーバ及びデータ収集方法
WO2020219832A1 (en) * 2019-04-25 2020-10-29 Lumigrow, Inc. Wireless lighting array
US20200412670A1 (en) * 2019-06-28 2020-12-31 Intel Corporation Output queueing with scalability for segmented traffic in a high-radix switch
US11269644B1 (en) 2019-07-29 2022-03-08 Marvell Asia Pte, Ltd. System and method for implementing strong load ordering in a processor using a circular ordering ring
US11722438B2 (en) * 2019-08-21 2023-08-08 Intel Corporation Maintaining bandwidth utilization in the presence of packet drops
JP7468219B2 (ja) 2020-07-22 2024-04-16 富士通株式会社 パケット伝送装置及びパケット伝送方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110219113A1 (en) * 2010-03-02 2011-09-08 Grewal Avininder Pal Singh Method and system for client assisted stateful handling of packets in a communications network
US20120263192A1 (en) * 2011-04-18 2012-10-18 Fujitsu Limited Transmission apparatus and interface card
EP2575329A1 (en) * 2011-09-20 2013-04-03 Telefonaktiebolaget L M Ericsson (Publ) Proportional bandwidth sharing of the excess part in a MEF Traffic Profile

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100302263B1 (ko) 1997-03-25 2001-09-22 모리시타 요이찌 스트림 데이터 전송방법 및 시스템
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
IL144709A (en) 2000-08-03 2010-11-30 Cisco Tech Inc Path discovery in a distributed network management architecture
US6862291B2 (en) 2000-11-03 2005-03-01 Telcordia Technologies, Inc. Method and system for quality of service provisioning for IP virtual private networks
US7349405B2 (en) 2003-06-23 2008-03-25 Transwitch Corporation Method and apparatus for fair queueing of data packets
US7965708B2 (en) * 2005-06-07 2011-06-21 Cisco Technology, Inc. Method and apparatus for using meta-packets in a packet processing system
US8730982B2 (en) 2005-11-10 2014-05-20 Broadcom Corporation Scheduling of data transmission with minimum and maximum shaping of flows in a network device
US7426610B2 (en) * 2005-12-29 2008-09-16 Intel Corporation On-device packet descriptor cache
JP5108261B2 (ja) 2006-07-11 2012-12-26 株式会社リコー 情報処理装置およびデータ通信装置
US7778170B2 (en) 2007-11-14 2010-08-17 Microsoft Corporation Spectrum and medium access allocation for fairness
US8406131B2 (en) * 2008-08-14 2013-03-26 Verizon Patent And Licensing Inc. System and method for monitoring and analyzing network traffic
US7986706B2 (en) 2009-04-29 2011-07-26 Telefonaktiebolaget Lm Ericsson Hierarchical pipelined distributed scheduling traffic manager
US8391896B2 (en) * 2010-07-09 2013-03-05 Nokia Corporation Method and apparatus for providing a geo-predictive streaming service
WO2013064603A1 (en) 2011-11-04 2013-05-10 Packet Architects Ab Device for efficient use of packet buffering and bandwidth resources at the network edge
JP5536962B2 (ja) * 2011-11-15 2014-07-02 独立行政法人科学技術振興機構 パケットデータ抽出装置、パケットデータ抽出装置の制御方法、制御プログラム、コンピュータ読み取り可能な記録媒体
US9397938B2 (en) * 2014-02-28 2016-07-19 Cavium, Inc. Packet scheduling in a network processor
US9559982B2 (en) 2014-02-28 2017-01-31 Cavium, Inc. Packet shaping in a network processor
US9680742B2 (en) * 2014-02-28 2017-06-13 Cavium, Inc. Packet output processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110219113A1 (en) * 2010-03-02 2011-09-08 Grewal Avininder Pal Singh Method and system for client assisted stateful handling of packets in a communications network
US20120263192A1 (en) * 2011-04-18 2012-10-18 Fujitsu Limited Transmission apparatus and interface card
EP2575329A1 (en) * 2011-09-20 2013-04-03 Telefonaktiebolaget L M Ericsson (Publ) Proportional bandwidth sharing of the excess part in a MEF Traffic Profile

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110958215A (zh) * 2018-09-26 2020-04-03 马维尔国际贸易有限公司 安全的在线接收的网络分组处理
CN110958215B (zh) * 2018-09-26 2023-05-30 马维尔国际贸易有限公司 安全的在线接收的网络分组处理

Also Published As

Publication number Publication date
CN106030562B (zh) 2018-07-13
WO2015130404A1 (en) 2015-09-03
US20150249620A1 (en) 2015-09-03
US9559982B2 (en) 2017-01-31
TW201540027A (zh) 2015-10-16
TWI668975B (zh) 2019-08-11

Similar Documents

Publication Publication Date Title
CN106030562B (zh) 网络处理器中的分组整形
CN106031107B (zh) 用于管理分组传输的电路及方法
US9680742B2 (en) Packet output processing
US11916800B2 (en) Dynamic virtual cut-through and dynamic fabric bandwidth allocation between virtual cut-through and store-and-forward traffic
US7809009B2 (en) Pipelined packet switching and queuing architecture
US11012411B2 (en) Network interface device
US20170026300A1 (en) Method and system for flexible credit exchange within high performance fabrics
US20150180782A1 (en) Method, apparatus and system for qos within high performance fabrics
Arashloo et al. Hotcocoa: Hardware congestion control abstractions
Correa et al. Ultra-low latency communication channels for FPGA-based HPC cluster
CN115917473A (zh) 用分布式lpm实现的高度可扩展算法构建数据结构的系统
US20220166718A1 (en) Systems and methods to prevent packet reordering when establishing a flow entry
CN109814927A (zh) 一种机器学习推理协处理器
US20230224261A1 (en) Network interface device
Guesmi et al. Design of priority-based active queue management for a high-performance IP switch
Llorente et al. Advanced packet segmentation and buffering algorithms in network processors
Elmor Lang Worst-Case Latency Analysis for the Versal Network-on-Chip
Nemeth et al. Network Infrastructure Optimization

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Cavium, Inc.

Address before: California, USA

Patentee before: Cavium, Inc.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20200426

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200426

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: California, USA

Patentee before: Cavium, Inc.

TR01 Transfer of patent right