在数据网络中处理数据的网络设备和方法

文档序号:7955922阅读:275来源:国知局
专利名称:在数据网络中处理数据的网络设备和方法
技术领域
本发明涉及在网络内处理数据的网络设备,更具体地,本发明涉及一种控制通过能提高处理速度和扩展性的网络设备的数据流的方法。
背景技术
一个网络可包括一个或多个网络设备,例如以太网交换机,每个交换机包括几个模块,用于处理经过该设备传输的信息。具体来说,该设备可包括端口界面模块,用于发送和接收网络中的数据;存储器管理单元(MMU),用于储存数据直到被传输或进一步处理;以及解析模块(resolution module),该模块允许根据指令检查和处理数据。所述决定模块具有交换功能,用于确定应该控制哪个目的端口的数据。网络设备上的某一端口可以是CPU端口,使设备能够向外部交换机/路由控制实体或CPU发送信息以及从其接收信息。
多数网络设备以以太网交换机方式工作,数据包从多个端口进入该设备,并对该数据包执行交换和其它处理。其后,数据包通过MMU传输给一个或多个目的端口。MMU实现在不同的端口间共享包缓存器,同时为每个输入口、输出口和服务队列级别提供资源保证。
根据目前的交换系统架构,每个输入口有相关的8个级别的服务队列。为了确保经过该端口和队列的带宽,该设备包括有调度器,对服务队列级别提供仲裁以确保最小和最大带宽。能确保每个端口的相关队列的带宽的一个实现方案是为每个队列的端口分配总带宽的一个固定部分。这样的话,与具有高优先级的服务级相关的队列分配到的带宽将比与低优先级服务相关的队列分配到的带宽要大。然后,所述调度器以例如循环复用的方式处理每个队列内的数据包。
然而,这种实现方案不够灵活。例如,当一个队列为空闲时,分配给该队列的带宽未被使用,尽管另一个队列需要比分配给它的量更多的带宽。这样的话,在超出其分配的带宽的队列中,数据包会丢失,而空闲队列的带宽仍未被使用。因此,急需要对计量和调度方法进行改进,以实现以要求的速度处理数据,并提供需要的灵活性以利用网络设备的所有资源。

发明内容
根据本发明的一个方面,提供一种在数据网络中处理数据的网络设备,所述网络设备包括多个端口,从数据网络中接收数据并通过输出口将已处理的数据发送给所述数据网络;控制器接口,与外部控制器进行通信;存储器管理单元,与所述网络设备外部的存储器通信并对其进行控制,向所述存储器存储数据以及从所述存储器重新获取数据;计量单元,与所述多个端口、所述控制器接口和所述存储器管理单元通讯,控制将发往所述输出口的已处理数据流;其中,所述计量单元进一步包括可编程寄存器,与所述控制器接口通讯,所述可编程寄存器可由通过所述外部控制器经由所述控制器接口发来的控制信号进行编程,使得所有的已处理数据流可由所述外部控制器进行控制。
优选地,所述可编程寄存器包括8个可编程寄存器。
优选地,所述计量单元根据颜色标记所述已处理数据的数据包,以基于所述控制器的信号控制所述已处理数据流。
优选地,所述计量单元确定输入包的颜色并基于输入包内的值设置输出包的颜色。
优选地,所述计量单元控制经由一系列漏斗桶的数据流,并基于数据包标记的颜色递减漏斗桶。
优选地,所述递减量可通过所述数据包的大小来确定。
优选地,所述一系列漏斗桶中的多个漏斗桶为至少512K的漏斗桶。
根据本发明的一个方面,提供一种在网络设备中处理数据的方法,所述方法包括如下步骤接收从外部控制器通过控制器接口发送来的控制器信号;基于所述已接收的控制器信号,对计量单元中的可编程寄存器进行编程;从多个端口中的一个端口接收数据;由所述网络设备外部的存储器中的存储器管理单元将所述接收的数据存储;确定所述接收的数据的属性,以及为所述接收的数据确定输出口;从所述存储器中重新获取所述接收的数据并修改所述接收的数据,如果需要,基于所述确定的属性生成已处理的数据;根据所述计量单元的指示,通过所述输出口发送所述已处理的数据;其中所述计量单元的所述可编程寄存器确定传送到所述输出口的已处理数据流的所有特征。
优选地,所述编程步骤包括基于所述接收的控制器信号对8个可编程寄存器进行编程。
优选地,所述方法进一步包括依据颜色标记所述已处理数据的数据包,以基于所述控制器信号控制所述已处理的数据流。
优选地,所述方法进一步包括确定输入包的颜色,并基于输入包内的值设置输出包的颜色。
优选地,所述方法进一步包括控制经由一系列漏斗桶的数据流,并基于数据包标记的颜色递减漏斗桶。
优选地,所述递减量可通过数据包的大小来去确定。
优选地,所述控制数据流包括控制经由一系列至少512K的漏斗桶的数据流。
根据本发明的一个方面,提供一种处理数据的网络设备,所述网络设备包括接收从外部控制器通过控制器接口发送来的控制器信号的接收装置;基于所述已接收的控制器信号对计量单元中的可编程寄存器进行编程的编程装置;
通过输出口接收数据以及发送已处理数据的端口装置;由所述网络设备外部的存储器内的存储器管理单元将从分析装置接收的数据存储其中并从其中重新获取数据的存储器装置;基于已确定的属性修改重新获取的、存储的数据以生成已处理数据的修改装置;其中所述可编程寄存器确定传送到所述输出口的已处理数据流的所有特征。
优选地,所述编程装置包括基于所述接收的控制器信号对8个可编程寄存器进行编程的装置。
优选地,所述设备进一步包括依据颜色对所述已处理数据的数据包进行标记以便基于所述控制器信号对所述已处理数据流进行控制的标记装置。
优选地,所述设备进一步包括确定输入包颜色并基于输入包内的值设置输出包颜色的确定装置。
优选地,所述设备进一步包括控制经由一系列漏斗桶的数据流的装置以及基于数据包已标记的颜色递减漏斗桶的装置。


下面将结合附图及实施例对本发明作进一步说明,附图中图1是根据本发明一个实施例的网络设备的示意图;图2是根据本发明一个实施例使用网络设备的端口进行通信的示意图;图3a是网络设备使用的位于网络设备外部的共享存储器的结构示意图;图3b是图3a中共享存储器结构的单元缓冲池的示意图;图4是由存储器管理单元用于资源分配限制以确保对资源的公平访问的缓存器管理机构的示意图;图5是根据本发明某些实施例的2级分析器的示意图;图6是根据本发明某些实施例的与互连端口一起使用的另一分析器的示意图;图7是根据本发明某些实施例的结果匹配器的示意图;
图8是用于本发明的输出口仲裁器的配置示意图;图9是根据本发明某些实施例的最小和最大带宽计量机构的实现示意图;图10a是流ID到桶的映射的示意图;图10b是普通计量桶的示意图;图10c是使用时间戳方法的计量桶的示意图;图11是根据本发明一个实施例的当前时间戳计算结果与令牌计数字段的对比图。
具体实施例方式
图1所示为实现本发明一个实施例的网络设备例如交换芯片的示意图。设备100包括输入口/输出口模块112和113、存储器管理单元(MMU)115、分析器130和搜索引擎120。输入口/输出口模块用于数据缓存以及发送数据至分析器。分析器130分析接收的数据并基于已分析的数据利用搜索引擎120执行查找。存储器管理单元115的主要功能是即使在严重堵塞的情况下,也可以以可预测方法有效地管理单元缓存和数据包指针资源。通过这些模块,会发生数据包修改,并且数据包可发送到合适的目的端口。
根据本发明的几个实施例,设备100还可以包括一个内部交织高速端口(internal fabric high speed port)例如HiGigTM或高速端口108、一个或多个外部以太网端口109a-109x以及一个CPU端口110。高速端口108用于在系统中互连各种网络设备,从而组成一个内部交换网,用于在外部源端口与一个或多个外部目的端口之间传输数据包。这样,高速端口108在包括多个互相连接的网络设备的系统外部是不可见的。CPU端口110用于发送信息给外部交换/路由控制实体或CUP,以及从其中接收信息。根据本发明的一个实施例,CUP端口110可视为外部以太网端口109a-109x中的一个。设备100通过CPU处理模块111(如CMIC,其与连接设备100与外部CPU的PCI数据总线连接)与外部/片外CPU连接。
此外,搜索引擎模块120可附加的搜索引擎模块122、124和126组成,以执行用于网络设备100处理的数据的特征化和修改过程中的特定查找。同样,分析器130也包括有附加的模块,用于对从内部交织高速端口134和其他端口138接收的数据进行分析,分析器130还包括有其它模块132和136,用以转送数据回网络设备的端口。高速端口134和二阶分析器138在下面将给出详细描述。
网络信息通过外部以太网端口109a-109x进入和输出设备100。具体来说,设备100中的信息流量由外部以太网资源端口路由至一个或多个唯一的目的以太网端口。在本发明的一个实施例中,设备100支持12个物理以太网端口109和一个高速端口108,其中每个物理以太网端口可以10/100/1000Mbps的数率工作,该高速端口108可以10Gbps或12Gbps的速率工作。
物理端口109的结构由图2进一步示出。一连串的串行化/并行化模块103发送和接收数据,其中每个端口接收的数据由端口管理器102A-L进行管理。该多个端口管理器具有定时信号发生器104和总线代理105以实现它们的操作。数据接收和传送至端口信息库,这样便可以监视流量。值得注意的是,高速端口108也具有近似的功能但不需要如此多的部件,因为只需对一个端口进行管理。
在本发明的一个实施例中,设备100使用共享存储器结构,如图3a-3b所示,MMU 115实现在不同端口间共享包缓存器,同时为每个输入口、输出口和与每个输出口相关的服务队列级提供资源保证。图3a所示为本发明的共享存储器结构的示意图。具体来说,设备100的存储器资源包括单元缓存池(CBP)存储器302和传输队列(XQ)存储器304。CBP存储器302是片外资源,某些实施例中,CBP存储器由4个DRAM芯片306a-306d组成。根据本发明的一个实施例,每个DRAM芯片具有288Mbits的容量,CBP存储器302的总容量为144Mbytes的原始存储量。如图3b所示,CBP存储器302被分成多个256K 576字节的单元308a-308x,其中每个单元包括32字节的报头缓存310、最高为512字节的数据包312和32字节的预留空间314。这样的话,每个输入包占用至少一个完整576字节的单元308。因此当输入包括64字节的帧时,输入包中为其预留有576字节的空间,尽管该576字节中只有64字节被该帧使用。
参看图3a,XQ存储器304包括一列数据包指针316a-316x,指向CBP存储器302,其中不同的XQ指针316与每个端口相关联。CBP存储器302的单元计数和XQ存储器304的数据包计数可基于输入口、输出口和服务级进行追踪。这样的话,设备100可基于一个单元和/或服务提供资源保证。
一旦数据包通过源端口109进入设备100,该数据包将被传输至分析器以进行处理。在处理过程中,每个输入口和输出口上的数据包共享系统资源302和304。在特定实施例中,两个独立的64字节突发数据包由本地端口和高速端口转送至MMU。图4所示为由MMU 115用于资源分配限制以确保对资源的公平访问的缓存器管理机构的示意图。MMU 115包括输入口背压机构404、行首(head of line)机构406和加权随机早期检测机构408。输入口背压机构404支持无损耗状态,并对所有输入口公平地管理缓存器资源。行首机构406支持对缓存资源的访问,同时优化系统的吞吐量。加权随机早期检测机构408改善整体的网络吞吐量。
输入口背压机构404使用数据包或单元计数器以追踪每个输入口使用的数据包或单元的数量。输入口背压机构404包括有用于一组8个分别设置的阀值的寄存器,和用于指定8个阀值中的哪一个被用于系统中一个输入口的寄存器。该组阀值包括极限阀值412、放弃极限(discard limit)阀值414和重置极限阀值416。如果与输入口数据包/单元的使用相关联的计数器增加且超过放弃极限阀值414时,输入口处的数据包将被丢弃。基于用于追踪单元/数据包数量的寄存器,可使用暂停流量控制来停止到达输入口的信息流(此时该输入口使用的缓存资源已超出了其公平共享的缓存资源),从而阻止来自违反规则的输入口的信息量,并减轻由该输入口造成的堵塞。
具体地,每个输入口基于与该组阀值相关联的输入口背压计数器一直追踪以确定其是否处于输入口背压状态。当该输入口处于输入口背压状态时,周期性地将计时器值为(0xFFFF)的暂停流量控制帧发送出该输入口。当该输入口不再处于输入口背压状态时,将计时器值为(0x00)的暂停流量控制帧由该输入口送出,并且再次允许信息流流动。如果输入口当前不处于输入口被压状态,且数据包计数器的值超出极限阀值412,该输入口的状态将转换为输入口背压状态。如果输入口处于输入口背压状态且数据包计数器的值降至重置有限阀值416以下,则该端口的状态将不再处于背压状态。
行首机构406支持对缓存资源的公平访问,同时优化系统内的吞吐量。行首机构406依靠丢弃的数据包来管理缓存资源避过改善总的系统吞吐量。根据本发明的一个实施例,行首机构406使用输出口计数器和预定的阀值以追踪每个输出口和服务级的缓存器使用,并其后做出决定以放弃新到达输入口并将发往特定已超额的输出口/服务队列级的数据包。行首机构406依据新到达的数据包的颜色支持不同的阀值。数据包可基于在输入口模块内执行的计量和标记操作标记上颜色,并且MMU依靠数据包的不同颜色做出不同的操作。
根据本发明的一个实施例,行首机构406可在每个服务队列级和所有端口(包括CPU端口)上进行独立的设置和操作。行首机构406使用计数器追踪XQ存储器304和CBP存储器302的使用,使用阈值支持CBP存储器缓存302的静态分配以及XQ存储器缓存304的动态分配。放弃阀值422定义给CBP存储器302中的所有单元,而不管标记的是什么颜色。当与一个端口相关的单元计数器的值达到放弃阀值422时,该端口被转换至行首状态。其后,如果其单元计数器的值下降至重置极限阀值424以下,则该端口将从行首状态中转换出来。
对于XQ存储器304,为每个服务队列级分配的固定的XQ缓存由XQ入口值(entry value)430a-430h定义。每个XQ入口值430a-430h对应为一个相关的队列预留多少缓存器入口作出了定义。例如,如果100字节的XQ存储器被指定给一个端口,分别与XQ入口430a-430d相关的第一四个服务队列级分配的值为10字节,而分别与XQ入口430e-430h相关的后四个队列分配的值为5字节。
根据本发明的一个实施例,尽管一个队列未使用所有的根据相关XQ入口值为其预留的缓存器入口,行首机构406可不将未使用的缓存器分配给另一个队列。尽管如此,用于该端口的XQ缓存余下的未分配的40字节可由与该端口相关的所有服务队列级所共享。一个特定服务队列级可占用多少XQ缓存的共享池的限制可由XQ设置极限阀值432设定。这样的话,设置极限阀值432可用来定义一个队列可使用的缓存的最大数量,并用于防止一个队列使用所有可用的XQ缓存。为确保XQ入口值430a-430h的总和不大于该端口可用的XQ缓存的总数量,并确保每个服务队列级可以访问由其入口值430所分配的XQ缓存的配额,使用端口动态计数寄存器来追踪每个端口的XO缓存器的可用池,其中动态计数寄存器434一直追踪该端口的可用共享XQ缓存的数量。动态计数寄存器434的初始值为与该端口相关的XQ缓存器的总数量减去XQ入口值430a-430h的数量之和后的值。当服务队列级使用超出由其XQ入口值430分配的配额后继续可用XQ缓存器时,动态计数寄存器434减1。相反地,当服务队列级使用超出由其XQ入口值430分配的配额后释放XQ缓存器时,动态计数寄存器434加1。
当一个队列请求XQ缓存时,行首机构406确定该队列使用的所有入口是否少于该队列的的XQ入口值430,并且在使用的入口小于XQ入口值430的情况下同意该缓存请求。但是,如果使用的入口大于队列的XQ入口值430,行首机构406将确定所请求的量是否小于可用的缓存器总量或小于由相关的设置极限阀值432设定给该队列的最大量。不管数据包标记的颜色如何,设置极限阈值432实质上是该队列的放弃阀值。这样,该数据包的数据包计数值达到设置极限阀值432时,队列/端口进入行首状态。当行首机构406检测到行首状态时,发送更新状态,因此堵塞端口的数据包将被丢弃。
然而,因为滞后的原因,当行首机构306发送状态更新时,MMU 115和该端口之间可能还有数据包正在传输中。在这种情况下,因为处于行首状态MMU 115处出现丢弃数据包的情况。在本发明的一个实施例中,因为数据包的流水线操作,XQ指针的动态池减少预定的量。这样,当可用XQ指针的数量等于或小于预定的数量时,该端口转换至行首状态,并且一个更新状态由MMU 115发送至该端口,以此降低可能被MMU 115丢弃的数据包的数量。为了跳出行首状态,该队列的XQ数据包计数值必须下降到重置极限阀值436以下。
对于一个特定服务队列级的XO计数器来说,不达到设置极限阀值432并且如果该端口的XQ资源被其它服务队列级超额占用时仍将其数据包丢弃是可能的。在本发明的一个实施例中,还可以为含有特定颜色标记的数据包定义中间丢弃阀值438和439,其中每个中间丢弃阀值定义何时应将特定颜色的数据包丢弃。例如,中间丢弃阀值438可用于定义标记为黄色的数据包应何时被丢弃,中间丢弃阀值439用于定义标记为红色的数据包应何时被丢弃。根据本发明的一个实施例,数据包可依照指定的优先级分别标记为绿色、黄色或红色。为确保每个颜色的数据包与每个队列中的颜色分配相一致的进行处理,本发明的一个实施例包括有虚拟最大阀值440。虚拟最大阀值440等于未分配且可用的缓存数量除以队列数量和当前使用的缓存器数量之和后的值。虚拟最大阀值440确保每个颜色的数据包以一定的比例进行处理。因此,如果可用未分配的缓存器数量小于某一特定队列的设置极限阀值432,并且该队列请求访问所有可用未分配的缓存器,行首机构406为该队列计算虚拟最大阀值440,并且根据为每个颜色定义的比率处理一定比例量的相关颜色的数据包。
为保存寄存器空间,XQ阀值可表示为压缩形式,其中每个单元代表一组XQ入口。组的大小取决于与某个特定的输出口/服务队列级相关的XQ缓存器的数量。
加权随机早期检测机构408是一个队列管理机构,在XQ缓存器304用尽前基于或然算法预清空数据包。加权随机早期检测机构408因此可用于优化整个网络的吞吐量。加权随机早期检测机构408包括一个平均值统计值,用以追踪每个队列的长度,并基于为队列定义的丢弃说明(drop profile)丢弃数据包。该丢弃说明定义了给定特定平均队列大小情况下的丢弃可能性。根据本发明的一个实施例,加权随机早期检测机构408可基于服务队列级和数据包定义单独的说明。
如图1所示,MMU 115从分析器130接收数据包以进行存储。如上所述,分析器130包括一个二级分析器,该部分在图5中示出。如上所述,数据在网络设备的端口501处接收。数据也经由CMIC 502接收,其中该数据将通过输入CMIC接口503。该接口用于将CMIC数据从P-bus格式转换为输入口数据格式。在一个实施例中,数据从45位转换为168位格式,这样后面的格式包括128位的数据、16位的控制和可能的24位的高速报头。其后,数据以64位突发串的形式发送至输入口仲裁器504。
输入口仲裁器504从端口501和输入CMIC接口503接收数据,并基于时分多路仲裁技术对这些输入进行多路复用。其后,数据被传送至MMU 510,在MMU 510处,所有高速报头被移除,并且被设置为MMU接口格式。然后检查数据包属性,例如,端对端、中断贝努里处理(Interupted Bernoulli Process,IBP)或行首(HOL)数据包。此外,数据的头128个字节被监听,并且高速报头被传至分析器ASM 525。如果接收到的突发数据包含端点标志,则CRC结果将被发送至结果匹配器515。而且,数据包的长度由突发串长度估测得到,并生成126位的数据包ID以供调试用。
分析器ASM 525将每个突发串4个循环的64数据突发串转换为每个突发串8个循环的128字节突发串。128字节的突发数据被同时转送给隧道分析器530和分析器FIFO 528以保持相同的数据包顺序。隧道分析器530确定是否采用了任何类型的隧道封装,包括MPLS和IP隧道效应。此外,该隧道分析器还检查外部和内部标签。通过分析处理,将会话初始化协议(SIP)提供给基于子网的VLAN,其中,如果数据包为地址解析协议(ARP)、反向ARP协议(RARP)或IP数据包时,将发生SIP分析。基于源中继线映射表,还可以创建中继线端口栅极的ID(trunk port grid ID),除非没有中继线(trunk)或如果该中继线ID可从高速报头中获得。
隧道分析器530与隧道检查器531一起工作。隧道检验器检查IP报头的校验和(checksum)以及UDP隧道效应和IPv4之上IPv6数据包(IPv6 over IPv4packets)的特性。隧道分析器530利用搜索引擎520通过预定义的表确定隧道类型。
分析器FIFO 528存储128字节的数据包报头和12字节的高速报头,该高速报头由深度分析器540再次进行分析。当搜索引擎完成一次搜索并准备进行深层搜寻时,报头字节被存储。也将维持其它的属性,例如数据包长度、高速报头状态和数据包ID。深度分析器540提供三种不同类型的数据,包括“流过”的搜索引擎520的搜索结果、内部分析结果和高速模块报头。特定的数据包类型将被确定并传送至搜索引擎。深度分析器540读取来自分析器FIFO的数据,对预定义的字段进行分析。搜索引擎基于传送至该搜索引擎的值提供查找结果,其中将对数据包ID进行检查以维持数据包顺序。
深度分析器540还使用协议检查器541来检查内部IP报头的校验和,检查服务攻击属性的否决、高速模块报头内的错误,并执行martian校验。该深度分析器还与字段处理器分析器542一起工作,以分析预定义字段和用户定义的字段。预定义字段从深度分析器中接收。这些字段包括MAC目的地址、MAC源地址、内部和外部标签、以太类型、IP目的和源地址、服务类型、IPP、IP标记、TDS、TSS、TTl、TCP标记和流标签。用户定义的字段也是可分析的,最高长度为128位。
如上所述,高速端口上接收的数据与其它本地端口上接收的数据是分开单独处理的。如图1所示,高速端口108具有自有的缓存器,数据从该端口流入其自有的分析器134内。高速分析器的更多细节如图6所示,其结构与图5中所示二级分析器相似,但具有一些差别。高速端口601接收的数据被转送至高速端口汇编器604。该汇编器以64字节突发串的形式接收该数据和高速报头,与用于本地端口中的格式相似。所述数据以MMU接口格式被发送至MMU610而未带有所述高速报头。
所述数据的头128个字节被监听并且与高速报头一起发送至深度分析器640。与二级分析器相似的是,端对端信息被检查,并在边频带内发送该分析结果。同样近似的是,CRC和数据包长度由结果匹配器615进行检查。此外,生成16位的数据包ID以用于调试和追踪数据包的流。
深度分析器640的高速版本是二级深度分析器540的子设备,并执行相似的功能。然而,搜索引擎620中没有信息经过,它不能跳过MPLS报头,并且只分析有效载荷,不发送深度数据给搜索引擎。从功能上来说,FP分析器642的高速版本与上面讨论的FP分析器542相同。
结果匹配器在图7中详细示出。值得注意的是,结果匹配器可被普遍的应用于由多个分析器共用,或者每个分析器使用其自有的结果匹配器。在图中所示的实施例中,两种类型的端口710和720接收数据并通过输入口汇编器715和输入口仲裁器725的操作转送一定数值给结果检查器。该数值包括端口数、EOF的存在、CRC和数据包长度。结果匹配器以一系列FIFO工作,通过使用搜索引擎705来匹配搜索结果。基于每个端口,标签和MIB事件与数据包长度和CRC状态相匹配。每4个循环,搜索结果便被提供给网络端口和高速端口。如果存在延时小于输入数据包时间的情况,这种结构使得搜索结果存储在每个端口的结果匹配器内,当搜索延时比输入数据包时间短时,这种结构允许等待数据包结果的终端出现。
在对接收的数据进行分析和评估后,依据接收的信息做出转送决定。该转送决定通常为数据包应发送给什么目的端口,尽管该决定也可为放弃数据包或通过CMIC 111转送数据包给CPU或其它控制器。在输出口,基于网络设备的分析和评估,该数据包被修改。如果输出口为高速端口,此修改包括标记、报头信息的修改或添加模块报头。该修改以单元为基础进行,以避免在转送数据包时产生延时。
图8所示为用于本发明的输出口仲裁器的配置示意图。如图8所示,MMU115还包括调度器802,为与每个输出口相关的8个服务队列级804a-804h提供仲裁,从而提供最小和最大带宽保证。值得注意的是,此处介绍的是8级服务,但是也支持其他服务级别模式。调度器802与一组最小和最大计量机构806a-806h集成在一起,其中每个计量机构监控每个服务级的流量以及每个输出口的流量。计量机构806a-806h支持流量调整功能(traffic shaping function),并基于每个服务队列级和/或输出口保证其最小带宽要求,其中调度器802的调度决定通过流量调整机构806a-806h与一组控制掩码一起来配置,该控制掩码用于修改调度器802如何使用流量调整机构806a-806h。
如图8所示,最小和最大计量机构806a-806h监控基于每个服务队列级以及基于每个输出口监控流量。最大和最小带宽计量806a-806h用以反馈状态信息给调度器802,调度器802响应该状态信息,修改其整个服务队列804上的服务顺序。因此,网络设备100可使系统销售商能够通过配置服务队列级804来执行多个服务模型,从而支持明确的最小和最大带宽保证。在本发明的一个实施例中,计量机构806a-806h基于服务队列级检测信息流量,提供一个服务队列级的流量是否高于或低于最小和最大带宽要求的状态信息,并传输该信息至调度器802,调度器802使用该计量信息修改其调度决定。这样的话,计量机构806a-806h协助将服务队列级804分割成一组未符合最小带宽要求的队列、一组符合其最小带宽但不符合最大带宽要求的队列以及一组已超出其最大带宽要求的队列。如果一个队列属于该组不符合其最小带宽要求的队列,且该队列有数据包,调度器802将根据配置的调度规则对该队列进行服务。如果一个队列属于该组不符合其最小带宽要求但没有超过其最大带宽要求的队列,且该队列中有数据包,调度器802将根据配置的调度规则对该队列进行服务。如果一个队列属于该组超出其最大带宽要求的队列或者如果该队列为空,调度器802将不对该队列进行服务。
在图9中,最小和最大带宽计量机构806a-806h可使用简单的漏斗桶机构来实现,追踪一个服务队列级804是否占用了其最小或最大带宽。每个服务级804的最小和最大带宽的范围设置在64Kbps至16Gbps之间,并以64Kbps递增。该漏斗桶机构具有可设置数量的令牌“泄漏”桶902a-902h,每个桶以可配置的比率与队列804a-804h中一个相关联。在计量服务队列级804的最小带宽时,由于数据包进入服务队列级别804,与该数据包大小成比例的一定数量的令牌被添加到对应的桶902中,该桶具有桶最高阀值904的最高限度。该漏斗桶机构包括有刷新接口和定义每次刷新时间单元内移除多少个令牌的最小带宽906。最小阀值908用于指出数据流是否满足至少其最小比率,填充阀值(fillthreshold)910用于指出漏斗桶902中有多少个令牌。当填充阀值910上升超过最小阀值908,一个指出该数据流已满足其最小带宽要求的标志被设定为真值。当填充阀值910下降低于最小阀值,该标志被设定为伪值。
最小阀值908对最小带宽计量机构806的操作所需要的时间量程(timescale)产生影响。如果最小阀值908被设为很低的级别,服务队列级804将快速标记出已达到其最小带宽。这将降低被分入未满足最小带宽要求的该组队列中的时间队列804的流量,且降低该队列由调度器802优先处理的时间周期。高阀值904对一个服务队列级达到其最小带宽906后能建立多少信用量(credit)产生影响。一个大的高阀值904将减少该队列被分入不符合最小带宽要求的队列组的时间,以及减少该队列由调度器802优先处理的时间周期。
在计量机构806a-806h指出规定的最大带宽已超出高阀值904后,调度器802终止对该队列的服务,且该队列被分入已超出最大带宽要求的队列组中。然后,发送一个标志以指出该队列已超出其最大带宽。随后,当其填充阀值下降至高阀值904以下且指示其超出最到带宽的标志被重置时,该队列仅从调度器802接收服务。计量机构806i用以指出某个端口规定的最大带宽已被超出,并在最大带宽被超出时,以与机构806a-806h相同的方式工作。根据本发明的一个实施例,基于队列和端口的最大计量机构通常对队列804或一个端口是否包括在调度仲裁中产生影响。这样的话,最大计量机构仅对调度器802有流量限制作用。
另一方面,服务队列级804的最小计量与调度器802具有更复杂的交互操作。在本发明的一个实施例中,调度器802支持各种调度规则,来模拟加权公平队列方案的带宽共享性能。该加权公平队列方案为基于数据包的公平队列方案的加权版本,被定义为一种用于提供数据包的“基于位循环复用”调度的方法。这样,可对数据包进行调度,以基于该数据包的传送时间访问输出口,该时间在调度器能够提供基于位循环复用服务时计算得出。相关的加权字段将影响调度器如何使用最小计量机构的具体细节,其中该调度器试图提供最小带宽保证。
如上所述,本发明在外部存储器中使用512K的桶。传统的后台填充桶的方法不对多个桶进行调整,未使用所有的可用带宽。系统能够循环外部存储器并后台填充每个桶的最快时间是25ms。由于后台填充桶间的周期越长,对数据包的标记就越不准确,因此桶的后台填充是不可行的。为了支持512K的桶,可使用时间戳方法以增加计量处理的准确度。然而,该时间戳方法也增加了该设计所需的计算量。
数据包分类处理给每个接收的数据包分配一个计量群标识符,此分类在FP模块1001中完成。计量模块使用该计量群标识符来了解该计量模块应该使用哪个桶来确定数据包的颜色。外部FP CAM引擎将数据包分为256K流。外部存储器包括具有256K“双”漏斗桶的512K桶。该存储器分为两段,因此该双桶永远是一对[偶,奇]桶。每个“双”漏斗桶被指定给一个计量群。图10a所示为计量群如何映射至外部存储器的地址空间1002。
一个普通的计量桶可包括如下字段速率、突发串大小和令牌计数,如图10b所示。速率和突发串大小字段由软件编程,硬件不对这些字段做修改。令牌计数字段为硬件修改的“桶”。速率字段指出该桶(令牌计数)要求填充的速率。突发串大小字段指出该桶(令牌计数)允许被填充的最大量。两个事件可以修改该令牌计数字段。第一个事件是分类给该桶的数据流的数据包的接收。当某个数据包被分给一个特定桶时,该桶的令牌计数字段以等于数据包长度的量递减。
第二个事件是后台填充处理。后台填充处理以与该桶的速率字段相等的量递增令牌计数。速率字段通常以这样一种方法定义,即将该字段的值直接加入令牌计数中。例如,如果令牌计数字段的单位为1/2位,后台填充处理每8us循环一次,则速率字段的单位可定义为每8us 1/2位。在这种情况下,后台填充处理可直接将速率字段的值加入令牌计数字段内。
第一事件(接收数据包)仅减去令牌计数,而第二事件(后台填充)仅加入令牌计数。这使得令牌计数需要的数学运算操作相当简单。在任何给定的循环周期中,只发生一次加法或一次减法运算。实际的标记决定基于令牌计数值作出,以下将给出介绍。
将后台填充理想化是不可能的。理想的桶填充与8us量化的后台填充是不同的。以下将介绍这种量化如何导致数据包的标志与理想情况下不同。对于以两倍于桶速率的速率到达的等大小数据包,在理想情况和量化(8us)情况下这些数据包的标记将不同。如果使用的是一个简单的单一桶,采用两色标记方案,那么当令牌计数字段大于或等于数据包大小时,该数据包标记为绿色,且该令牌计数字段以数据包的大小递减。如果该令牌计数字段小于数据包大小,该数据包被标记为红色,且该令牌计数字段不做修改。因为数据包以两倍于桶速率的速率到达,半数的数据包将被标记为红色,另一半标记为绿色。然而,在某些情况下,10个绿色数据包之后跟着是10个红色数据包。在长期情况下,数据包的标记是正确的,但如果检查一个小的时间窗,该数据包的标记是不同的。
25ms后台填充与理想情况相比将产生根本不同的颜色标记。如果假设最大数据包速率为24Gbits/s(12个1G端口和1个12G端口),且假设24Gbits/s的速率下的数据包为64字节,那么在25ms内大约接收90,0000个数据包。假设桶速率为12Gbits/s和24Gbits/s,相当于64字节的数据包将分至该桶内。在这种情况下,一行中大约45,0000个数据包将被标记为红色,接下来的大约45,0000个数据包将被标记为绿色。很不幸,这样提供的标记不正确。
为了改进计量的准确性,采用时间戳方法来代替后台填充方法。时间戳方法在给定后台带宽分配情况下,显著的改进计量的准确度,但是时间戳字段占用了存储空间且还需要额外的计算逻辑。事实上,在用于为后台填充512K桶生成25ms量化的相同带宽分配情况下,该时间戳方法可达到相当于1us量化的准确度。
时间戳方法要求在桶的定义中加入时间戳字段,如图10c所示。利用时间戳方法,触发令牌计数更新的主事件是数据包的接收。时间戳后台处理是使令牌计数更新的次要时间,仅仅是为了防止计数器溢出(rollover),详细解释如下。
与该时间戳字段具有相同宽度的一个内部计数器(current_time)周期性递增,假设每1us增加一次。数据包的接收触发将速率的*倍数*加入令牌计数中。这与直接将速率周期性的加入令牌计数的后台填充处理不同。该速率的倍数与该桶接收到最后一个数据包后流逝的多少时间直接相关。数据包之间流逝的时间等于current_time与桶的时间戳字段之间的差值。
current_tc的等式如下所示current_tc=((current_time-时间戳)*速率)+令牌数 (1)数据包的颜色基于current_tc确定。数据包的标记要求数据包长度减去current_tc。该值(new_tc)的计算如下new_tc=current_tc-数据包长度 (2)最后一步是将new_tc和current_time分别写入令牌计数和时间戳字段内。如果没有时间戳字段,令牌计数字段不具有任何意义,因为它只有在时间戳字段示出的时间内才准确。这就是为什么不管令牌计数字段有没有更新,时间戳字段总是更新为current_time。这一点与后台填充处理不同,在后台填充处理的量化时间例如8us内,令牌计数总是准确的。
图11所示为在垂直虚线所示的数据包到达处current_tc的计算的示意图。图中实线表示令牌计数字段的值。虚线表示桶的理想填充。在每个数据包到达时,计算current_tc(垂直虚线所示)。因为数据包在侧面上(in profile),new_tc被写回令牌计数字段。在数据包之间,我们看到令牌计数为常量。针对分入该桶的每个数据包,该处理过程重复进行。
如果current_time计数器每1us增加一次,如图11所示,在理想填充的1us内该计算是准确的。时间戳方法中的量化错误由current_time递增的频率指出,代替后台填充处理的速率。无论数据包之间流逝的时间是多少,在1us内的计算总是准确的。增加current_time递增的频率会减少标记器的量化错误。每个时间周期增加一次的current_time可产生一个理想的标记器。如上所述,不幸的是,增加current_time递增的频率也会增加给定后台带宽分配情况下时间戳字段的宽度。准确度的代价是占用存储器空间。
出现的一个复杂因素是,内部计数器(current_time)最终将循环。例如,每1us递增一次的17位计数器将每131ms循环一次。一旦current_time计数器开始循环,等式(current_time-时间戳)将不再准确。未加入额外逻辑的情况下,如果在current_time(131ms)的不止1个循环内,数据包未到达计量桶,流逝的时间将不能再准确追踪到。因此,仍然需要时间戳后台处理以保持所有桶的时间戳字段不失效。对于上述current_time计数器,所有桶的令牌计数和时间戳字段至少必须每131ms更新一次。时间戳后台处理基于等式(1)更新令牌计数字段,而时间戳字段设置为current_time。只要时间戳字段不失效,等式(1)总是准确。
在上述例子中,时间戳方法使用只在131ms之内更新每个桶的时间戳后台处理生成在理想填充情况下的1us内准确的current_tc。如果后台填充方法要达到同样的准确度,则要求该后台填充处理每1us更新每个桶。很容易可以推断出后台填充方法和时间戳方法之间的折衷,即增加存储器使用量(时间戳字段)和计算逻辑(速率必须相乘)以节省存储器带宽。
srTCM(单速率3色标记器)和trTCM(双速率3色标记器)均使用两个桶(双桶)以对数据包执行3色(红、黄、绿)标记。该srTCM方案利用一个承诺桶(Committed bucket)和一个超额桶(Excess bucket),而trTCM利用一个承诺桶和一个峰值桶(Peak bucket)。这两种方案的不同之处在于桶填充和递减的方式以及标记数据包的方式。
在srTCM方案中,组成双桶的两个桶依据相同的承诺信息速率(Committed Information Rate,简称CIR)进行填充。承诺桶首先填充至承诺突发量(Committed Burst Size,简称CBS)。只有当承诺桶为“满”时,超额桶才可填充至超额突发量(EBS)。在trTCM方案中,组成双桶的两个桶以不同的速率填充。承诺桶以承诺信息速率(CIR)填充至CBS,而峰值桶以峰值信息速率(PIR)填充至峰值突发量(PBS)。
两种方案的不同之处还在于数据包如何递减,以及如何基于双桶的状态标记数据包,如下4个表格所示。前两行为决定的输入,下一行为输出颜色决定,最后两行代表是否以数据包长度递减该桶。

表1

表2

表3

表4本发明也同样允许对颜色标记、桶递加和递减进行完全编程。在本发明的某些实施例中,提供8个可编程寄存器来完整地规定网络设备的计量操作。这些寄存器可用于实现上述的srTCM和trTCM方法。使用该网络设备的用户可通过对提供的寄存器内的表进行编程来确定和实现其自己的计量方案。使用哪个寄存器的选择基于每个流作出。
如上所述,计算时间戳需要的宽度(ts_width)时涉及两个变量执行时间戳后台处理以服务每个桶的时间(loop_period)和current_time递增的频率,或同等的current_time单位(counter_unit)。基本上,时间戳后台处理服务每个桶的速度必须与current_time计数器溢出的速度一样快或比其还快。然而,如下所述的解决方案需要时间戳后台处理以current_time计数器循环的时间的两倍速度对每个桶进行服务。与这些变量相关的等式如下所示
loop_period=1/2(2ts_width×counter_unit)(3)得出的ts_width的结果为ts_width=log2((2*loop_period)/counter_unit) (4)如果loop_period为25ms(25000us)且counter_unit为1us,那么时间戳字段需要的宽度为15.6或16位。
增加的计算量是明显的。后台填充方法要求对令牌计数字段执行不多于一次的加法或减法。时间戳方法要求对每个接收的数据包执行等式(1)和(2)并要求对时间戳后台处理执行等式(1)。
等式(1)中的乘法从时间上看范围很广。简化该乘法的一个可能的解决方案是将其简化为速率上的移位操作。例如,如果(current_time-时间戳)为240或二进制的“b11110000”,该速率可乘以128或二进制的“b10000000”。这是一个简单的比率上7的移位操作。因为简化该乘法而遗失的余下时间可用于调整时间戳字段。在上面的情况中,遗失了122个时间单位。因此,将该时间戳字段设定为current_time-122,而不是将其设为current_time。这使得下一个数据包的(current_time-时间戳)的值增加122个时间单位,因此考虑到了遗失的时间。
上述解决方案简化等式(1)中的乘法为速率上的移位操作,并增加一个减法操作来修改时间戳字段以考虑到遗失的时间。利用上述简化的乘法的等式(1)的伪码版本如下(假设时间戳为4位)delta_t[3:0]=(current_time-TIMESTAMP)if(delta_t[3])current_tc=(RATE<<3)+TOKEN COUNTmissed_time={1’b0,delta[2:0]}else if(delta_t[2])current_tc=(RATE<<2)+TOKEN COUNTmissed_time={2’b0,delta[1:0]}else if(delta_t[1])current(RATE<<2)+TOKEN COUNT
missed_time={3’b0,delta
}else if(delta_t
)current_tc=RATE+TOKEN COUNTmissed_time=4’b0else current_tc=RATEmissed_time=4’b0new_tc=current_tc-packet_length最后,missed_time用以计算TIMESTAMP字段的值new_ts=current_time-missed_time (5)以上是对本发明具体实施例的描述。很明显,可对本发明上述描述的实施例做其他的变化和修改,同样能达到本发明的某些或所有优点。因此,本发明的权利要去说明了本发明的精神实质和范围,覆盖了所有对本发明上述实施例的变化和修改情况。
本申请引用并要求申请日为2005年2月18的美国临时专利申请No.60/653942的优先权。
权利要求
1.一种在数据网络中处理数据的网络设备,所述网络设备包括多个端口,从数据网络中接收数据并通过输出口将已处理的数据发送给所述数据网络;控制器接口,与外部控制器进行通信;存储器管理单元,与所述网络设备外部的存储器通信并对其进行控制,向所述存储器存储数据以及从所述存储器重新获取数据;计量单元,与所述多个端口、所述控制器接口和所述存储器管理单元通讯,控制将发往所述输出口的已处理数据流;其中,所述计量单元进一步包括可编程寄存器,与所述控制器接口通讯,所述可编程寄存器可由通过所述外部控制器经由所述控制器接口发来的控制信号进行编程,使得所有的已处理数据流可由所述外部控制器进行控制。
2.根据权利要求1所述的网络设备,其特征在于,所述可编程寄存器包括8个可编程寄存器。
3.根据权利要求1所述的网络设备,其特征在于,所述计量单元根据颜色标记所述已处理数据的数据包,以基于所述控制器的信号控制所述已处理数据流。
4.根据权利要求3所述的网络设备,其特征在于,所述计量单元确定输入包的颜色并基于输入包内的值设置输出包的颜色。
5.一种在网络设备中处理数据的方法,所述方法包括如下步骤接收从外部控制器通过控制器接口发送来的控制器信号;基于所述已接收的控制器信号,对计量单元中的可编程寄存器进行编程;从多个端口中的一个端口接收数据;由所述网络设备外部的存储器中的存储器管理单元将所述接收的数据存储;确定所述接收的数据的属性,以及为所述接收的数据确定输出口;从所述存储器中重新获取所述接收的数据并修改所述接收的数据,如果需要,基于所述确定的属性生成已处理的数据;根据所述计量单元的指示,通过所述输出口发送所述已处理的数据;其中所述计量单元的所述可编程寄存器确定传送到所述输出口的已处理数据流的所有特征。
6.根据权利要求5所述的方法,其特征在于,所述编程步骤包括基于所述接收的控制器信号对8个可编程寄存器进行编程。
7.根据权利要求5所述的方法,其特征在于,所述方法进一步包括依据颜色标记所述已处理数据的数据包,以基于所述控制器信号控制所述已处理的数据流。
8.一种处理数据的网络设备,所述网络设备包括接收从外部控制器通过控制器接口发送来的控制器信号的接收装置;基于所述已接收的控制器信号对计量单元中的可编程寄存器进行编程的编程装置;通过输出口接收数据以及发送已处理数据的端口装置;由所述网络设备外部的存储器内的存储器管理单元将从分析装置接收的数据存储其中并从其中重新获取数据的存储器装置;基于已确定的属性修改重新获取的、存储的数据以生成已处理数据的修改装置;其中所述可编程寄存器确定传送到所述输出口的已处理数据流的所有特征。
9.根据权利要求8所述的网络设备,其特征在于,所述编程装置包括基于所述接收的控制器信号对8个可编程寄存器进行编程的装置。
10.根据权利要求8所述的网络设备,其特征在于,所述设备进一步包括依据颜色对所述已处理数据的数据包进行标记以便基于所述控制器信号对所述已处理数据流进行控制的标记装置。
全文摘要
本发明公开的一种在数据网络中处理数据的网络设备,包括多个端口,从数据网络中接收数据并通过输出口将已处理的数据发送给所述数据网络;控制器接口,与外部控制器进行通信;存储器管理单元,与所述网络设备外部的存储器通信并对其进行控制,向所述存储器存储数据以及从所述存储器重新获取数据;计量单元,与所述多个端口、所述控制器接口和所述存储器管理单元通讯,控制将发往所述输出口的已处理数据流;其中,所述计量单元进一步包括可编程寄存器,与所述控制器接口通讯,所述可编程寄存器可由通过所述外部控制器经由所述控制器接口发来的控制信号进行编程,使得所有的已处理数据流可由所述外部控制器进行控制。
文档编号H04L12/56GK1822572SQ200610054908
公开日2006年8月23日 申请日期2006年2月16日 优先权日2005年2月18日
发明者布兰登·卡尔·史密斯, 曹军 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1