CN104641608A - 超低延时网络缓冲存储 - Google Patents
超低延时网络缓冲存储 Download PDFInfo
- Publication number
- CN104641608A CN104641608A CN201380048218.8A CN201380048218A CN104641608A CN 104641608 A CN104641608 A CN 104641608A CN 201380048218 A CN201380048218 A CN 201380048218A CN 104641608 A CN104641608 A CN 104641608A
- Authority
- CN
- China
- Prior art keywords
- buffer
- grouping
- queue
- cell
- write
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
Abstract
提供了网络设备中的缓冲设计和缓冲器的写入/读取配置。根据一方面,分组的第一部分被写入网络设备中的缓冲器的多个单元格的第一单元格。每个单元格具有比网络设备所接收的分组的最小尺寸更小的尺寸。可以从第一单元格读取分组的第一部分,同时将分组的第二部分写入第二单元格。
Description
相关申请的交叉引用
本申请要求于2012年9月18日提交的、题为“超低延时网络缓冲存储”的美国临时申请No.61/702,326的优先权,该临时申请的整体通过引用被合并于此。
技术领域
本公开总体涉及最小化网络设备中的缓冲存储。
背景技术
超低延时网络是例如由高频交易(HFT)客户用来交易金融资产的特殊的计算网络类型。在这样的应用中,即使轻微的传输时间延时也可能带来金融影响。具体地,具有比竞争者更快的数据连接可以使得HFT客户在波动时期捕捉机会、增加订单流、流动资产、并且加速价格发现以获得竞争优势。
用于计算网络(甚至是超低延时网络)中的传统联网设备会因为临时将接收到的数据分组存储在网络缓冲器中以吸收仲裁、转发或拥塞延迟而引发不想要的延时。例如,交叉开关(crossbar)和端口逻辑架构可以存储分组多达四次(例如,输入端口、输入交叉开关、输出交叉开关、以及输出端口)。另外,共享的存储器架构可以导致存储数据多达三次(例如,输入端口、缓冲存储器、以及输出端口)。这些存储操作中的每个均增加了不想要的延时。
附图说明
图1根据本文所呈现的技术示出了网络设备的框图,该网络设备被配置来执行从存储器读取分组和向存储器写入分组。
图2是多个缓冲器和针对每个缓冲器的相关联的写入逻辑的详细框图。
图3是多个缓冲器和针对多个缓冲器的相关联的读取逻辑的详细框图。
图4是示出队列结构、调度器和队列管理器的框图,其中,队列管理器被配置为在某些情况下绕过队列结构和/或调度器。
图5是总体描绘了本文所呈现的缓冲配置的读取操作和写入操作的流程图。
具体实施方式
概述
本文呈现了网络设备中的缓冲设计和缓冲的写入/读取配置。在网络设备的端口处接收分组。根据一个方面,分组的第一部分被写入网络设备中的缓冲器的多个单元格(cell)的第一单元格。每个单元格具有比该网络设备所接收的分组的最小尺寸更小的尺寸。可以从第一单元格读取分组的第一部分,并且同时将分组的第二部分写入第二单元格。
具体实施方式
诸如交换机之类的网络设备将延时测量为分组的第一位的发送时间(出发)减去该分组的该第一位的接收时间(到达)。该延时的一个原因是对到达分组的缓冲(即,临时存储接收到的分组以吸收仲裁、转发或拥塞延迟)。期望网络设备中的缓冲器具有写入和读取总共2*(M个输入端口*N Gbps)的能力以维持线速率(wire rate)。高端口密度计数和高端口性能速度为架构方面带来了巨大的挑战。
缓冲器写入应该以防止分组丢失的方式被执行。高带宽操作(例如,高效写入网络缓冲器)具有在数据存储之前建立分页(page)单元的输入缓冲阶段。该操作经由输入端口缓冲器的预分段导致分页延时。例如,10十亿位/秒(Gbps)的100字节分页可能增加另外的160纳秒(ns)的延时(80ns用于写入,80ns用于读取)。
本文呈现了减少或消除输入缓冲阶段(即,输入累加)从而降低延时的技术。这些技术通过将缓冲存储器分页存储单元减小(分离)为单元格来操作。例如,200字节分页可以被划分为二十个10字节单元格。每个10字节单元格是单个的存储器组(bank)列,该存储器组列可以以提供对一个或多个单元格列的完全访问的方式被写入,从而无延时地存储分组。独立的列访问有助于保证数据不会因线速度的高带宽写入而被丢弃(传统上,这通过输入缓冲来实现)。举例来说,还可以通过减小单元格的尺寸、通过将单元格划分为子单元格等来实现附加的优化。
本文所呈现的技术使用共享的存储器架构、多个存储器单元格以及工作保存仲裁器来减少存储和仲裁延时量,其中,共享的存储器架构、多个存储器单元格以及工作保存仲裁器均为缓冲延时的关键部件。降低延时对于超低延时网络用户至关重要。本文所呈现的技术可以实现在特定情形下低达零的延时存储,实现独立于分组尺寸的延时,对于单播、2层多播和3层多播而言实现相同的线速率低延时,和/或实现维持非常高的密度和高性能端口的能力。
现在参照图1,提供了网络设备10的高层框图,网络设备10被配置以用于超低延时缓冲存储。网络设备10包括多个端口12(1)-12(P),在这些端口处,分组可以到达网络设备10并且从网络设备离开。端口12(1)-12(P)被耦合于交换机结构(switch fabric)14。交换机结构14包括对分组执行处理决定的数字逻辑和相关联的存储器。交换机结构14可以被实现于一个或多个专用集成电路(ASIC)中。网络设备10还包括中央处理单元(CPU)16和存储器18。其他部件可以存在于网络设备10中,但未在图1中示出,因为它们不属于本文所呈现的低延时缓冲存储技术。图1示出了交换机结构14包括一组缓冲器20(1)-20(C)、一组相对应的写入逻辑30(1)-30(C)以及读取逻辑40。因此,对于缓冲器20(1),存在写入逻辑框30(1),等等。
存储器18可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质设备、光存储介质设备、闪存设备、电、光、或其他物理/有形存储器存储设备。因此,一般地,存储器18可以包括一个或多个有形(非易失性)计算机可读存储介质(例如,存储器设备),该一个或多个有形(非易失性)的计算机可读存储介质被编码有包括计算机可执行的指令的软件,并且当该软件被(CPU 16)运行时其可操作来执行本文所描述的操作。
网络设备10可以是现在已知或者之后开发的任意网络设备,包括交换机、路由器、网关、主机设备上的软件栈、虚拟网络接口卡(VNIC)虚拟交换机、物理网络接口卡(包括支持虚拟化的那些物理网络接口卡)。
为对缓冲器20(1)-20(C)以及相关联的写入逻辑30(1)-30(C)进行更加详细的描述,现在参照图2。每个缓冲器20(1)-20(C)包括多个单元格22(1)-22(C)。每个单元格22(1)-22(C)是可以被独立写入的单个存储器组列,如上面所一般解释的。对于缓冲器的一行存储器中总共N个字节,一行存储器中存在C个单元格。另外,每个单元格具有比网络设备预期要接收的分组的最小尺寸更小的尺寸。
端口12(1)-12(P)被连接到每个写入逻辑30(1)-30(C)。更具体地,每个写入逻辑框包括输入累加器32(1)-32(P),并且每个输入累加器32(1)-32(P)被连接到端口12(1)-12(P)中相应的一个端口。每个输入累加器32(1)-32(P)在分组内容可以被写入相关联的缓冲器中的多个单元格中的任意一个单元格之前累加N/C个字节。此外,每个写入逻辑框包括C个并行的写入仲裁器34(1)-34(C)。在端口12(1)-12(P)之一处接收到的分组的数据已在输入累加器32(1)-32(P)之一中被充分累加之后,该数据被连接到写入仲裁器34(1)-34(C)之一。来自给定端口的分组数据被一次一个单元格地写入缓冲器中,然后穿过缓冲器中的单元格直到整个分组已被写入。在任意给定的时间,C个写入仲裁器可以写入C个单元格。因此,当分组数据从端口12(1)-12(P)之一到达输入累加器32(1)-32(P)之一时,输入累加器等待累加N/C个字节,并且等待最多P/C个周期以获得对缓冲存储器的访问。
可以设计缓冲器的每个单元格22(1)-22(C)的尺寸,以使得与将分组写入缓冲器和从缓冲器读取分组相关联的延时独立于分组的尺寸。类似地,可以设计缓冲器的每个单元格22(1)-22(C)的尺寸,以使得与将分组写入缓冲器和从缓冲器读取分组相关联的延时独立于端口速度(例如,10Mbps或100Gbps)。
写入仲裁器34(1)-34(C)独立且并行地进行操作,以使得分组可以在多个端口12(1)-12(P)处被接收,并且来自那些分组的各部分可以被同时写入相关联的缓冲器(例如,缓冲器20(1))内的不同的单元格。该写入仲裁方案是这样的方案,即,缓冲器的P个单元格对于到达P个端口12(1)-12(P)的分组的数据而言是无写入冲突的。例如,对于所有分组在相同时间到达的20端口系统,所有的20个分组的第一部分在相同的瞬时(即,时间)被写入。无写入冲突的延伸是对低延时多目的地分组进行写复制的能力。例如,如果多目的地(多播)分组M从端口12(1)到达并去往端口12(2)至12(20),并且没有即将到来的数据到达端口12(2)至12(20),则分组M通过并行写入到每个输出队列被同时发送出端口12(2)至12(20)。
现在参照图3。图3示出与多个缓冲器20(1)-20(C)相关联的读取逻辑40的更多细节,其中,缓冲器20(1)-20(C)与图2中所示的缓冲器相同。读取逻辑40包括C个读取仲裁器42(1)-42(C)和多个解复用器44(1)-44(C),其中,每个读取仲裁器被耦合于缓冲器20(1)-20(C)中相应的一个缓冲器的输出,每个解复用器被耦合于相应的读取仲裁器42(1)-42(C)的输出。每个缓冲器20(1)-20(C)具有P个输入端口(也如图2所示),但只有P’=P/C个输出。这允许读取仲裁器42(1)-42(C)针对分组的第一部分(单元格)在缓冲器的更少数目的输出之间进行仲裁,从而使得能够实现工作保存轮询仲裁方案。在最坏的情形中,输出端口不得不等待P/C个周期来接收分组的第一部分(单元格)。图3中所示的配置提供了从来自P个端口的所有被存储的数据中的每个单元格均无读取冲突以实现低延时的能力。一般地,C的值越大,在图2和图3的配置中越不容易发生写入冲突或读取冲突。
应当理解,图2和图3中所示的写入逻辑和读取逻辑可以通过数字逻辑门而被实现在硬件中,并且可以被集成到包含交换机结构的所有其他硬件部件的ASIC中。
现在转到图4,示出了输出布置,其中,缓冲器(一般被示为缓冲器20(i))被耦合于输入50(包括一个或多个端口)。队列管理器60也被连接到输入50。队列管理器60是被配置为对队列结构70进行管理的数字逻辑。队列管理器包括复用器62、多个输出队列64(0)-64(n)、队列仲裁器66以及复用器68。图4还示出调度器框72。调度器72被耦合于队列仲裁器66和输出队列64(0)-64(n),以控制分组被输出队列64(0)-64(n)进行处理的顺序。队列管理器60、队列结构70以及调度器72可以由数字逻辑门来实现。
如果输出队列64(0)-64(n)为空,则队列管理器60可以绕过队列结构70和调度器72中的一者或二者。图4中的虚线表示当输出队列不为空时被穿越的非绕过路径。分组信息(包含分组指针)首先被存储于队列结构70中。调度器72对非空队列进行检测,并且命令队列管理器60读取分组信息并且将其传递给缓冲器20(i),以使得分组可以被读出至输出80(端口12(1)-12(P)之一)。然而,如果输出队列在分组信息到达时为空,则不需要队列结构70和调度器72的服务。如果输出队列64(0)-64(n)中仅一个是活动的,则调度器72也可以被绕过。图4中的实线表示队列结构70和调度器72均被绕过时所采用的路径。在该情形中,分组信息被直接指向缓冲器20(i),以使得分组可以被立即读取出。
因此,综上所述,图4中所示的布置允许绕过与多个输出队列相关联的队列结构,其中多个输出队列与缓冲器相关联。当针对要被读取出的分组的路由上下文信息被接收时,队列管理器针对多个输出队列是否为空做出确定。如果多个输出队列为空,则队列管理器可以绕过队列结构70,并且路由上下文信息被提供给多个输出队列之一。
另外,综上所述,图4所示的布置允许绕过调度器。队列管理器确定输出队列中是否只有一个输出队列是活动的。当输出队列中只有一个输出队列被确定为活动的时,则调度器可以被绕过,并且分组被直接转发至缓冲器,以使得分组可以被立即读取出。队列结构绕过和调度器绕过可以相互分开且独立地被执行。
另外的低延时方面涉及“丢弃绕过”。“丢弃绕过”可以在缓冲器中存储了被监管(被故意丢弃)或稍后由于超时到期(在缓冲器中的持续时间太长)而被确定为被丢弃(即,不被发送)的分组的情况下被执行。为了丢弃分组,不是读取出整个分组,而是输出队列中的该分组的上下文信息被删除,从而绕过对丢弃分组的出列。
现在参照图5。图5示出了描绘根据上面结合图2-图4所描述的配置在网络设备中执行的操作的流程图。在100处,分组在网络设备的端口处被接收。在110处,分组的第一部分被写入网络设备中的缓冲器的多个单元格中的第一单元格。每个单元格具有比网络设备接收到的分组的最小尺寸更小的尺寸。分组可以在多个端口(例如,网络设备的P个端口)处被接收,并且分组的各部分可以被同时写入到缓冲器的不同单元格中。写入操作可以使用仲裁方案,在该仲裁方案中,缓冲器的P个单元格对于到达P个端口处的分组的数据而言是无写入冲突的。在120处,可以从第一单元格读取分组的第一部分,同时将分组的第二部分写入第二单元格。一般,当存在C个缓冲器、每个缓冲器具有一个输出和与P个端口相对应的P个输入时,可以在从C个缓冲器中读取时针对分组的第一部分在缓冲器的更少数目的输出之间做出仲裁。
示例和延时分析
下面是针对上面所呈现的缓冲系统设计的示例和相关联的延时分析。做出如下定义:
P=交换机上端口的数目,
P’=一个共享的缓冲器中的端口的数目,
N=共享的存储器的带宽(字节),
F=频率,以及
X=端口速度(Gbps)。
在传统的缓冲设计中,当来自给定的输入端口的分组准备被写入共享的缓冲器中时,该分组将与来自所有其他输入端口的分组一起被仲裁以访问共享的缓冲器。这意味着存在的输入端口越多,分组就可能不得不在其将被写入共享的缓冲器之前等待更久。通常,在使用时分复用(TDM)调度仲裁器的情况下,这随着P而线性扩缩。因此,典型的写入仲裁延时为:
写入仲裁延时=P[周期]/F[周期/秒]。
在从共享的缓冲器中读取分组之前,整行存储器(或者换言之,N个字节)必须已被写入存储器中。这意味着N个字节或整个分组必须已经到达共享的缓冲器中,无论这两个中哪个更小。该延时被定义为:
数据累加延时=N[字节]*8/X[Gbps]*10e9。
最后,当输出端口尝试从共享的缓冲器中进行读取时,输出端口也与所有其他输出端口一起被仲裁以访问共享的缓冲器。类似于写入仲裁,使用TDM调度仲裁器,该延时在此被定义为:
读取仲裁延时=P’[周期]/F[周期/秒]。
总延时为:
总延时=(P+P’)/F+N*8/X*10e9。
本文所呈现的技术通过将共享的缓冲器中的条目(表示为分页)划分为较小的组块(chunk)即单元格,降低了经过共享的缓冲器的延时。与改善的写入和读取仲裁方案进行组合,该技术使得能够在整个分页已被写入共享的缓冲器中之前读取分页的单元格。
在本文所呈现的技术中,基于所需要的带宽和分组速率来选择共享的缓冲器的带宽(N)。例如:
N=(1/F)*10Gbps*P*(1/8)*10e9。
为保证最坏情形的分页速率(条目被写入共享的缓冲器中的速率)小于最坏情形的分组速率,该宽度一般将为最小148字节。
分页速率要求可以为:
(2N>=分组尺寸>N)的分页速率=[以百万分组/秒(Mpps)为单位的分组速率*2]<[最坏情形分组速率=14.88Mpps]。
对于148字节分组,分组速率为7.44Mpps,从而满足上面的要求。
如结合图2-图4所进行的解释,每个缓冲器中存在C个单元格。因此,N被划分为C等份或C个相等的单元格,其中,每个均为共享缓冲器中的单个的存储器组。这允许更多端口同时写入共享的缓冲器(即,C个端口)。而且,在开始写入共享的缓冲器之前,只有缓冲器的N/C字节被累加。
利用本文所呈现的缓冲设计,分组的起点可以被写入任意的存储器组(分组的起始单元格)。起始单元格被传递至将对分组进行适当排序的读取控制器。
该写入仲裁延时可以被降低为:
写入仲裁延时=P[周期]/F[周期/秒]/C。
鉴于在写入共享的缓冲器之前只有N/C个字节需要被累加,数据累加延时也降低C倍。由此:
数据累加延时=N[字节]*8/X[Gbps]*10e9/C。
利用该设计,可以在单元格已被写入存储器中之后读取分组。该处理依赖于如下假设:写入速率类似于读取速率;并且依赖于如下假设:当分组被读取出时,第一单元格是分组单元格的起点。
读取仲裁延时被改善了因子C,但如果第一单元格不是分组单元格的起点(如上述假设),则该设计将由于不得不读取整个分页并且在发送出分组之前对单元格进行重新排序而引发其他延时。
在操作中,每个输出端口(分组要从网络设备离开的端口)能够首先读取分组的起始单元格。这意味着共享的缓冲器保证在输出上进行组冲突读取(即,所有的输出端口尝试读取第一存储器组)。结果:
P’=P/C。
应当注意,增加C将以不得不增加共享的缓冲器的数目为代价来进一步降低延时,其中:
共享的缓冲器的数目=p/p’;
根据端口的数目,可以确定在C与共享的缓冲器的数目之间的折中。然而,C的值越大,越不容易发生写入冲突或读取冲突。
最后,本文所呈现的设计的读取仲裁为:
读取仲裁延时=P’[周期]/F[周期/秒]。
另外,由于P’=P/C,因此可以使用工作保存仲裁方案。这意味着上面的读取仲裁成为非典型的最大延时,并且读取仲裁上的统计平均延时也更低。在该设计中,总的延时被降低了因子C。
上面的描述仅旨在通过示例的方式进行。
Claims (23)
1.一种方法,包括:
在网络设备的端口处接收分组;
将所述分组的第一部分写入所述网络设备中的缓冲器的多个单元格的第一单元格中,所述单元格中的每个单元格具有比所述网络设备所接收的分组的最小尺寸更小的尺寸;以及
从所述第一单元格中读取所述分组的所述第一部分,同时将所述分组的第二部分写入第二单元格。
2.如权利要求1所述的方法,其中,所述多个单元格中的每个单元格的尺寸使得与将分组写入所述缓冲器和从所述缓冲器读取分组相关联的延时独立于所述分组的尺寸。
3.如权利要求1所述的方法,其中,所述多个单元格中的每个单元格的尺寸使得与将分组写入所述缓冲器和从所述缓冲器读取分组相关联的延时独立于端口速度。
4.如权利要求1所述的方法,其中,接收包括在所述网络设备的P个端口处接收分组,并且写入包括将在所述P个端口处接收到的分组的各部分同时写入所述缓冲器的不同单元格。
5.如权利要求4所述的方法,其中,写入包括利用仲裁方案进行写入,在所述仲裁方案中,所述缓冲器的P个单元格对于到达所述P个端口的分组的数据而言是无写入冲突的。
6.如权利要求4所述的方法,其中,对于所述缓冲器的一行存储器中的总共N个字节,一行存储器中存在C个单元格,并且所述方法还包括在写入所述多个单元格中的任意一个单元格之前累加N/C个字节。
7.如权利要求6所述的方法,还包括提供C个缓冲器,每个缓冲器具有一个输出和与所述P个端口相对应的P个输入,并且所述方法还包括当从所述C个缓冲器中读取时针对分组的第一部分在所述C个缓冲器的更少数目的输出之间进行仲裁。
8.如权利要求1所述的方法,还包括:
提供与所述缓冲器相关联的多个输出队列;
当针对要被读取出的分组接收路由上下文信息时,确定所述多个输出队列是否为空;
如果所述多个输出队列为空,则绕过队列结构并且将所述路由上下文信息提供给所述多个输出队列之一。
9.如权利要求5所述的方法,还包括:
确定所述输出队列中是否只有一个输出队列是活动的;以及
当所述输出队列中只有一个输出队列被确定为活动的时,绕过调度器并且将所述分组直接转发至所述缓冲器,以使得所述分组能够被立即读取出。
10.如权利要求1所述的方法,还包括:
提供与所述缓冲器相关联的多个输出队列;
确定所述输出队列中是否只有一个输出队列是活动的;以及
当所述输出队列中只有一个输出队列被确定为活动的时,绕过调度器并且将所述分组直接转发至所述缓冲器,以使得所述分组能够被立即读取出。
11.一种网络设备,包括:
缓冲器,所述缓冲器被配置为对在所述网络设备的端口处接收到的分组进行缓冲,所述缓冲器包括多个单元格,每个单元格具有比所述网络设备所接收的分组的最小尺寸更小的尺寸;以及
多个写入仲裁器,所述多个写入仲裁器被配置为使得能够将分组的各部分写入所述缓冲器的相应单元格中,以使得能够从第一单元格读取被写入所述第一单元格的分组的第一部分,同时将所述分组的第二部分写入第二单元格。
12.如权利要求11所述的网络设备,其中,所述单元格中的每个单元格的尺寸使得与将分组写入所述缓冲器和从所述缓冲器读取分组相关联的延时独立于所述分组的尺寸。
13.如权利要求11所述的网络设备,其中,对于所述缓冲器的一行存储器中的总共N个字节,一行存储器中存在C个单元格,并且所述网络设备还包括与所述缓冲器相关联的多个输入累加器,每个输入累加器用于所述网络设备的P个端口中相应的一个端口,并且每个输入累加器被配置为在写入所述多个单元格中的任意一个单元格之前累加分组的N/C个字节。
14.如权利要求13所述的网络设备,还包括C个写入仲裁器,所述C个写入仲裁器被配置为利用仲裁方案来写入所述缓冲器,在所述仲裁方案中,所述缓冲器的P个单元格对于到达所述P个端口的分组的数据而言是无写入冲突的。
15.如权利要求11所述的网络设备,还包括C个缓冲器和C个读取仲裁器,其中,每个缓冲器具有一个输出和与所述P个端口相对应的P个输入,所述C个读取仲裁器被配置为当从所述C个缓冲器中读取时针对分组的第一部分在所述C个缓冲器的更少数目的输出之间进行仲裁。
16.如权利要求11所述的网络设备,还包括:
队列管理器,所述队列管理器包括与所述缓冲器相关联的多个输出队列;
队列结构,所述队列结构被耦合于所述队列管理器;并且
其中,所述队列管理器被配置为当针对要被读取出的分组接收路由上下文信息时,确定所述多个输出队列是否为空,并且如果所述多个输出队列为空,则所述队列管理器绕过所述队列结构并且将所述路由上下文信息提供给所述多个输出队列之一。
17.如权利要求16所述的网络设备,还包括调度器,所述调度器被耦合于所述队列管理器,其中,所述队列管理器被配置为:确定所述输出队列中是否只有一个输出队列是活动的;以及当所述输出队列中只有一个输出队列被确定为活动的时,所述队列管理器被配置为绕过所述调度器并且将所述分组直接转发至所述缓冲器,以使得所述分组能够被立即读取出。
18.如权利要求11所述的网络设备,还包括:
队列管理器,所述队列管理器包括与所述缓冲器相关联的多个输出队列;
调度器,所述调度器被耦合于所述队列管理器;
其中,所述队列管理器被配置为确定所述输出队列中是否只有一个输出队列是活动的,并且当所述输出队列中只有一个输出队列被确定为活动的时,所述队列管理器被配置为绕过所述调度器并且将所述分组直接转发至所述缓冲器,以使得所述分组能够被立即读取出。
19.一种网络设备,包括:
P个端口,分组能够在所述P个端口处到达所述网络设备,并且能够在所述P个端口处离开所述网络设备;
多个缓冲器,所述多个缓冲器包括C个单元格,所述单元格中的每个单元格具有比所述网络设备接收到的分组的最小尺寸更小的尺寸;
多个写入逻辑,每个写入逻辑与所述多个缓冲器中的相应一个缓冲器相关联,其中,每个写入逻辑被配置为将在所述P个端口处接收到的分组的各部分同时写入相关联的缓冲器的不同单元格;以及
读取逻辑,所述读取逻辑与所述多个缓冲器相关联,其中,所述读取逻辑被配置为当从所述多个缓冲器读取时针对分组的第一部分在所述缓冲器的更少数目的输出之间进行仲裁。
20.如权利要求19所述的网络设备,其中,所述多个单元格中的每个单元格的尺寸使得与将分组写入所述缓冲器和从所述缓冲器读取分组相关联的延时独立于所述分组的尺寸。
21.如权利要求19所述的网络设备,其中,每个写入逻辑包括P个输入累加器,每个输入累加器与所述P个端口中相应的一个端口相关联,并且所述网络设备被配置为在写入相关联的缓冲器中的所述多个单元格中的任意一个单元格之前累加N/C个字节。
22.如权利要求19所述的网络设备,还包括:
队列管理器,所述队列管理器包括与所述缓冲器之一相关联的多个输出队列;
队列结构,所述队列结构被耦合于所述队列管理器;并且
其中,所述队列管理器被配置为当针对要被读取出的分组接收路由上下文信息时,确定所述多个输出队列是否为空,并且如果所述多个输出队列为空,则所述队列管理器被配置为绕过所述队列结构并且将所述路由上下文信息提供给所述多个输出队列之一。
23.如权利要求19所述的网络设备,还包括:
队列管理器,所述队列管理器包括与所述多个缓冲器之一相关联的多个输出队列;
调度器,所述调度器被耦合于所述队列管理器;
其中,所述队列管理器被配置为确定所述输出队列中是否只有一个输出队列是活动的,并且当所述输出队列中只有一个输出队列被确定为活动的时,所述队列管理器被配置为绕过所述调度器并且将所述分组直接转发至所述缓冲器,以使得所述分组能够被立即读取出。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261702326P | 2012-09-18 | 2012-09-18 | |
US61/702,326 | 2012-09-18 | ||
US13/708,380 US9037670B2 (en) | 2012-09-18 | 2012-12-07 | Ultra low latency network buffer storage |
US13/708,380 | 2012-12-07 | ||
PCT/US2013/059347 WO2014046947A1 (en) | 2012-09-18 | 2013-09-12 | Ultra low latency network buffer storage |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104641608A true CN104641608A (zh) | 2015-05-20 |
CN104641608B CN104641608B (zh) | 2018-04-24 |
Family
ID=50275619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380048218.8A Active CN104641608B (zh) | 2012-09-18 | 2013-09-12 | 超低延时网络缓冲存储 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9037670B2 (zh) |
EP (1) | EP2898641B1 (zh) |
CN (1) | CN104641608B (zh) |
WO (1) | WO2014046947A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105468546A (zh) * | 2015-11-17 | 2016-04-06 | 中国科学院计算技术研究所 | 互连电路的数据处理装置和方法 |
CN107085394A (zh) * | 2016-02-15 | 2017-08-22 | 株式会社东芝 | 控制装置及控制方法 |
CN109995670A (zh) * | 2017-12-06 | 2019-07-09 | 马维尔以色列(M.I.S.L.)有限公司 | 具有减少延时的网络设备 |
CN110045922A (zh) * | 2018-01-16 | 2019-07-23 | 马维尔以色列(M.I.S.L.)有限公司 | 网络设备和操作方法 |
CN110674063A (zh) * | 2019-09-16 | 2020-01-10 | 南京天数智芯科技有限公司 | 一种fabric实现结构和方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014116223A1 (en) * | 2013-01-25 | 2014-07-31 | Hewlett-Packard Development Company, L.P. | Queue buffer de-queuing |
US9922000B2 (en) * | 2014-08-25 | 2018-03-20 | Marvell World Trade Ltd. | Packet buffer with dynamic bypass |
US9606942B2 (en) * | 2015-03-30 | 2017-03-28 | Cavium, Inc. | Packet processing system, method and device utilizing a port client chain |
US10003551B2 (en) | 2015-03-30 | 2018-06-19 | Cavium, Inc. | Packet memory system, method and device for preventing underrun |
US11150961B2 (en) | 2015-05-26 | 2021-10-19 | Blaize, Inc. | Accelerated operation of a graph streaming processor |
US11379262B2 (en) | 2015-05-26 | 2022-07-05 | Blaize, Inc. | Cascading of graph streaming processors |
US10437637B1 (en) | 2015-05-26 | 2019-10-08 | Thin CI, Inc. | Configurable scheduler for graph processing on multi-processor computing systems |
US11436045B2 (en) * | 2015-05-26 | 2022-09-06 | Blaize, Inc. | Reduction of a number of stages of a graph streaming processor |
US10055365B2 (en) * | 2015-07-24 | 2018-08-21 | Mediatek Inc. | Shared buffer arbitration for packet-based switching |
US9985912B1 (en) * | 2015-09-30 | 2018-05-29 | Juniper Networks, Inc. | Shared memory switch fabric system and method |
EP3854041B1 (en) | 2019-12-02 | 2024-05-01 | DRW Technologies, LLC | System and method for latency critical quality of service using continuous bandwidth control |
US11438239B2 (en) * | 2020-06-22 | 2022-09-06 | New Relic, Inc. | Tail-based span data sampling |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5859856A (en) * | 1994-03-21 | 1999-01-12 | Sun Microsystems, Inc. | Method and apparatus for routing interleaved incoming ATM cells with reduced channel switching |
EP1137225A1 (en) * | 2000-02-28 | 2001-09-26 | Alcatel | A switch and a switching method |
US20030108056A1 (en) * | 1996-12-16 | 2003-06-12 | Juniper Networks, Inc. | Memory organization in a switching device |
CN101501779A (zh) * | 2006-05-12 | 2009-08-05 | 爱诺彼得技术有限责任公司 | 具有自适应容量的存储设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5185875A (en) * | 1989-01-27 | 1993-02-09 | Digital Equipment Corporation | Method and apparatus for reducing memory read latency in a shared memory system with multiple processors |
US5371874A (en) * | 1989-01-27 | 1994-12-06 | Digital Equipment Corporation | Write-read/write-pass memory subsystem cycle |
US6463068B1 (en) * | 1997-12-31 | 2002-10-08 | Cisco Technologies, Inc. | Router with class of service mapping |
US6690664B1 (en) * | 1999-04-27 | 2004-02-10 | Sprint Communications Company, L.P. | Call center communications system for handling calls to a call center |
US6289420B1 (en) * | 1999-05-06 | 2001-09-11 | Sun Microsystems, Inc. | System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem |
US6892237B1 (en) * | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
US7058070B2 (en) | 2001-05-01 | 2006-06-06 | Integrated Device Technology, Inc. | Back pressure control system for network switch port |
US7317730B1 (en) | 2001-10-13 | 2008-01-08 | Greenfield Networks, Inc. | Queueing architecture and load balancing for parallel packet processing in communication networks |
US7899048B1 (en) * | 2003-01-15 | 2011-03-01 | Cisco Technology, Inc. | Method and apparatus for remotely monitoring network traffic through a generic network |
US7474666B2 (en) * | 2003-09-03 | 2009-01-06 | Cisco Technology, Inc. | Switch port analyzers |
US7969971B2 (en) | 2004-10-22 | 2011-06-28 | Cisco Technology, Inc. | Ethernet extension for the data center |
US7830793B2 (en) * | 2004-10-22 | 2010-11-09 | Cisco Technology, Inc. | Network device architecture for consolidating input/output and reducing latency |
US7961621B2 (en) | 2005-10-11 | 2011-06-14 | Cisco Technology, Inc. | Methods and devices for backward congestion notification |
US7656818B1 (en) | 2005-10-28 | 2010-02-02 | Cisco Technology, Inc. | Customizable network device management methods and systems |
US8208389B2 (en) * | 2006-07-20 | 2012-06-26 | Cisco Technology, Inc. | Methods and apparatus for improved determination of network metrics |
US8640036B2 (en) | 2010-04-07 | 2014-01-28 | Cisco Techology, Inc. | Messaging and presence protocol as a configuration and management bus for embedded devices |
-
2012
- 2012-12-07 US US13/708,380 patent/US9037670B2/en active Active
-
2013
- 2013-09-12 WO PCT/US2013/059347 patent/WO2014046947A1/en active Application Filing
- 2013-09-12 EP EP13766825.7A patent/EP2898641B1/en active Active
- 2013-09-12 CN CN201380048218.8A patent/CN104641608B/zh active Active
-
2015
- 2015-03-16 US US14/658,711 patent/US9608940B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5859856A (en) * | 1994-03-21 | 1999-01-12 | Sun Microsystems, Inc. | Method and apparatus for routing interleaved incoming ATM cells with reduced channel switching |
US20030108056A1 (en) * | 1996-12-16 | 2003-06-12 | Juniper Networks, Inc. | Memory organization in a switching device |
EP1137225A1 (en) * | 2000-02-28 | 2001-09-26 | Alcatel | A switch and a switching method |
US20080137675A1 (en) * | 2000-02-28 | 2008-06-12 | Alcatel Lucent | Switch and a switching method |
CN101501779A (zh) * | 2006-05-12 | 2009-08-05 | 爱诺彼得技术有限责任公司 | 具有自适应容量的存储设备 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105468546A (zh) * | 2015-11-17 | 2016-04-06 | 中国科学院计算技术研究所 | 互连电路的数据处理装置和方法 |
WO2017084331A1 (zh) * | 2015-11-17 | 2017-05-26 | 中国科学院计算技术研究所 | 互连电路的数据处理装置和方法 |
CN107085394A (zh) * | 2016-02-15 | 2017-08-22 | 株式会社东芝 | 控制装置及控制方法 |
CN107085394B (zh) * | 2016-02-15 | 2019-12-10 | 株式会社东芝 | 控制装置及控制方法 |
CN109995670A (zh) * | 2017-12-06 | 2019-07-09 | 马维尔以色列(M.I.S.L.)有限公司 | 具有减少延时的网络设备 |
CN109995670B (zh) * | 2017-12-06 | 2023-10-27 | 马维尔以色列(M.I.S.L.)有限公司 | 具有减少延时的网络设备 |
CN110045922A (zh) * | 2018-01-16 | 2019-07-23 | 马维尔以色列(M.I.S.L.)有限公司 | 网络设备和操作方法 |
CN110674063A (zh) * | 2019-09-16 | 2020-01-10 | 南京天数智芯科技有限公司 | 一种fabric实现结构和方法 |
CN110674063B (zh) * | 2019-09-16 | 2021-03-23 | 上海天数智芯半导体有限公司 | 一种用于芯片内实现fabric的架构和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2898641B1 (en) | 2018-01-17 |
US20150188850A1 (en) | 2015-07-02 |
US9608940B2 (en) | 2017-03-28 |
US9037670B2 (en) | 2015-05-19 |
WO2014046947A1 (en) | 2014-03-27 |
CN104641608B (zh) | 2018-04-24 |
EP2898641A1 (en) | 2015-07-29 |
US20140082118A1 (en) | 2014-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104641608A (zh) | 超低延时网络缓冲存储 | |
US8135004B2 (en) | Multi-plane cell switch fabric system | |
EP1839166B1 (en) | Shared-memory switch fabric architecture | |
CN101873253B (zh) | 带缓冲的纵横式交换机系统 | |
JP5863076B2 (ja) | パケットを再構築し再順序付けするための方法、装置、およびシステム | |
EP3562110B1 (en) | Traffic management for high-bandwidth switching | |
US7852866B2 (en) | Low complexity scheduling algorithm for a buffered crossbar switch with 100% throughput | |
US9582440B2 (en) | Credit based low-latency arbitration with data transfer | |
US9602436B2 (en) | Switching device | |
US7991926B1 (en) | Scalable memory architecture for high speed crossbars using variable cell or packet length | |
EP3367622A1 (en) | Data processing apparatus and terminal | |
US20030174699A1 (en) | High-speed packet memory | |
US7675930B2 (en) | Chip circuit for combined and data compressed FIFO arbitration for a non-blocking switch | |
JP5332430B2 (ja) | 共有メモリシステム | |
US7965705B2 (en) | Fast and fair arbitration on a data link | |
Zheng et al. | Design and analysis of a parallel hybrid memory architecture for per-flow buffering in high-speed switches and routers | |
Kabra et al. | Fast buffer memory with deterministic packet departures | |
Simos et al. | Building an FoC using large, buffered crossbar cores | |
US20160173365A1 (en) | Framework for scheduling packets with multiple destinations in a virtual output queue network switch | |
Mutter | A novel hybrid sram/dram memory architecture for fast packet buffers | |
Matthews et al. | A scalable memory-efficient architecture for parallel shared memory switches | |
Alisafaee et al. | Bandwidth-enhanced wastefree control technique for multi-queue network buffers | |
Khani et al. | A Configurable Packet Switch Core |
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 |