网络设备及处理数据的方法

文档序号:7952143阅读:302来源:国知局
专利名称:网络设备及处理数据的方法
技术领域
本发明涉及在网络中修改数据包的处理,更具体地说,涉及一种允许对不同类型的数据包进行不同类型的修改的引擎。
背景技术
一个网络可包括一个或多个网络设备,例如,以太网交换机,每个网络设备又包括多个用于处理通过该设备传输的信息的模块。处理数据包的过程从数据包的接收开始。然后检查数据包的各部分,并将该数据包暂时存储在存储器内,直到做出关于某个数据包的传送决定。所述传送决定包括决定能将数据包发送至其唯一目的地的网络设备输出口,传送数据包给外部处理器以进行进一步处理,以及在某些情况下丢弃数据包。传送数据包的处理过程还包括修改数据包。
多数情况下,对数据包的修改是必要的。数据包被封装(例如隧道封装)时便属于这种情况。通常情况下,封包是将一个数据结构包含在另一个数据结构内,因此第一个数据结构暂时被隐藏。数据包被封包成特定的格式,而且该封装可由网络设备移除或改变。数据包修改处理是网络设备处理数据包能力的关键。
然而,多数现有的网络设备不能提供网络数据的快速处理以及修改数据包的灵活性。为了提供对数据包的行频(line-rate)处理,需要特殊类型的数据包,使得数据包中重要字段的位置通常可知,并出现在数据包结构内期望的特定位置。因为速度的原因,多数此类处理都结合在硬件内,故而现有的网络设备缺乏灵活性,且通常需要对数据包进行不符合特定标准的外部处理。此外,如果提供一种新的数据包格式,现有的网络设备不能通过现有的处理硬件对新格式的数据包进行处理。

发明内容
根据本发明的一个方面,提供一种在数据网络中处理数据的网络设备,所述网络设备包括端口介面,与多个端口通信,用于从数据网络中接收数据包以及将已处理的数据包发送至所述数据网络;存储器管理单元,与存储器通信并控制所述存储器,向所述存储器存储数据以及从所述存储器中重新获取数据;解析器,与所述端口介面和所述存储器管理单元通信,解析所述已接收的数据包以确定所述数据包的属性以及修改从所述存储器获取的数据包,并基于所述确定的属性生成已处理的数据包;其中所述解析器以单元为基础,通过所述数据包的单元之间的相加、减和替换修改所述数据包,其中所述每个单元具有预定的位长。
优选地,所述预定长度为16位。
优选地,所述解析器将修改数据包字段的指令转译成修改数据包单元的指令。
优选地,所述解析器通过使用链表结构追踪修改来修改所述数据包的片段。
优选地,所述解析器对所述数据包添加标签以实现封装。
优选地,所述解析器保留多个有时延的数据包片段以允许数据包各部分的重新排列,其中各部分的未对准因所述数据包单元的相加、减和替换而出现。
根据本发明的一个方面,提供一种在网络设备中处理数据的方法,所述方法包括在所述端口处通过端口界面接收数据包;发送数据包至存储器管理单元;由所述存储器管理单元将所述数据包存储在存储器内;从所述存储器内重新获取所述数据包;以单元为基础,通过所述数据包单元间的相加、减和置换修改所述重新获取的数据包,以生成已处理的数据包,其中所述每个单元具有预定的位长;发送所述已处理的数据包至所述多个端口中的输出口。
优选地,所述修改重新获取的数据包的步骤包括以单元为基础修改所述重新获取的数据包,其中每个单元的预定长度为16位。
优选地,所述修改重新获取的数据包的步骤包括将修改数据包字段的指令转译成修改数据包单元的指令。
优选地,所述修改重新获取的数据包的步骤包括通过使用链表结构追踪修改来修改所述数据包的片段。
优选地,所述修改重新获取的数据包的步骤包括对所述数据包添加标签以实现封装。
优选地,所述修改重新获取的数据包的步骤包括保留多个有时延的数据包片段以允许数据包各部分的重新排列,其中所述各部分的未对准因所述数据包单元的相加、减和置换而出现。
根据本发明的一个方面,提供一种处理数据的网络设备,所述网络设备包括接收数据包和发送已处理的数据包的端口装置;由存储器中的存储器管理单元向其存储从所述端口装置接收的数据包以及从其重新获取所存储器的数据包的存储器装置;以单元为基础,通过数据包单元间的相加、减和置换修改所述重新获取的数据包以生成已处理的数据包的修改装置,其中所述每个单元具有预定的位长。
优选地,所述修改装置包括以单元为基础修改所述重新获取的数据包的装置,其中每个单元的预定长度为16位。
优选地,所述修改装置包括用于将修改数据包字段的指令转译成修改数据包单元的指令的装置。
优选地,所述修改装置包括通过使用链表结构追踪修改以修改所述数据包的片段的装置。
优选地,所述修改装置包括对所述数据包添加标签以实现封装的装置。
优选地,所述修改装置包括用于保留多个有时延的数据包片段以允许所述数据包各部分的重新排列的装置,其中所述各部分的未对准因所述数据包单元的相加、减和置换而出现。


下面将结合附图及实施例对本发明作进一步说明,附图中图1是根据本发明一个实施例的网络设备的示意图;图2是根据本发明一个实施例使用网络设备的端口进行通信的示意图;图3a是网络设备使用的位于网络设备外部的共享存储器的结构示意图;图3b是图3a中共享存储器结构的单元缓存池的示意图;图4是由存储器管理单元用于资源分配限制以确保对资源的公平访问的缓存器管理机构的示意图;图5是根据本发明某些实施例的2级解析器(parser)的示意图;图6是根据本发明某些实施例的与互连端口一起使用的另一解析器的示意图;图7是根据本发明某些实施例的结果匹配器的示意图;图8是用于本发明的输出口仲裁器的配置示意图;图9是根据本发明另一实施例的网络设备的示意图;图10是现有技术中的一种数据包格式的字段示意图;图11是根据本发明一个实施例的一种数据包格式的单元示意图;图12是根据本发明一个实施例多路复用数据结构以形成最终的数据包结构的处理的示意图;图13a是根据本发明一个实施例的多维单元排列的示意图;图13b是根据本发明一个实施例的多维单元排列的示意图;图13c是根据本发明一个实施例的多维单元排列的示意图;图13d是根据本发明一个实施例的多维单元排列的示意图;图13e是根据本发明一个实施例的多维单元排列的示意图。
具体实施例方式
图1所示为实现本发明一个实施例的网络设备例如交换芯片的示意图。设备100包括输入口/输出口模块112和113、存储器管理单元(MMU)115、解析器130和搜索引擎120。输入口/输出口模块用于数据缓存以及发送数据至解析器。解析器130解析接收的数据并基于已解析的数据利用搜索引擎120执行查找。存储器管理单元115的主要功能是即使在严重堵塞的情况下,也可以以可预测方法有效地管理单元缓存和数据包指针资源。通过这些模块,会发生数据包修改,并且数据包可发送到合适的目的端口。
根据本发明的几个实施例,设备100还可以包括一个内部交织高速端口(intemal 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字节突发数据包由本地端口和HiGig端口转送至MMU。图4所示为由MMU 115用于资源分配限制以确保对资源的公平访问的缓存器管理机构的示意图。MMU115包括输入口背压机构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处,所有HiGig报头被移除,并且被设置为MMU接口格式。然后检查数据包属性,例如,端对端、中断贝努里处理(Interupted BernoulliProcess,IBP)或行首(HOL)数据包。此外,数据的头128个字节被监听,并且HiGig报头被传至解析器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可从HiGig报头中获得。
隧道解析器530与隧道检查器531一起工作。隧道检验器检查IP报头的校验和(checksum)以及UDP隧道效应和IPv4之上IPv6数据包(IPv6 over IPv4packets)的特性。隧道解析器530利用搜索引擎520通过预定义的表确定隧道类型。
解析器FIFO 528存储128字节的数据包报头和12字节的HiGig报头,该HiGig报头由深度解析器540再次进行解析。当搜索引擎完成一次搜索并准备进行深层搜寻时,报头字节被存储。也将维持其它的属性,例如数据包长度、HiGig报头状态和数据包ID。深度解析器540提供三种不同类型的数据,包括“流过”的搜索引擎520的搜索结果、内部解析结果和HiGig模块报头。特定的数据包类型将被确定并传送至搜索引擎。深度解析器540读取来自解析器FIFO的数据,对预定义的字段进行解析。搜索引擎基于传送至该搜索引擎的值提供查找结果,其中将对数据包ID进行检查以维持数据包顺序。
深度解析器540还使用协议检查器541来检查内部IP报头的校验和,检查服务攻击属性的否决、HiGig模块报头内的错误,并执行martian校验。该深度解析器还与字段处理器解析器542一起工作,以解析预定义字段和用户定义的字段。预定义字段从深度解析器中接收。这些字段包括MAC目的地址、MAC源地址、内部和外部标签、以太类型、IP目的和源地址、服务类型、IPP、IP标记、TDS、TSS、TTl、TCP标记和流标签。用户定义的字段也是可解析的,最高长度为128位。
如上所述,HiGig端口上接收的数据与其它本地端口上接收的数据是分开单独处理的。如图1所示,HiGig端口108具有自有的缓存器,数据从该端口流入其自有的解析器134内。HiGig解析器的更多细节如图6所示,其结构与图5中所示二级解析器相似,但具有一些差别。HiGig端口601接收的数据被转送至HiGig端口汇编器604。该汇编器以64字节突发串的形式接收该数据和HiGig报头,与用于本地端口中的格式相似。所述数据以MMU接口格式被发送至MMU 610而未带有所述HiGig报头。
所述数据的头128个字节被监听并且与HiGig报头一起发送至深度解析器640。与二级解析器相似的是,端对端信息被检查,并在边频带内发送该解析结果。同样近似的是,CRC和数据包长度由结果匹配器615进行检查。此外,生成16位的数据包ID以用于调试和追踪数据包的流。
深度解析器640的HiGig版本是二级深度解析器540的子设备,并执行相似的功能。然而,搜索引擎620中没有信息经过,它不能跳过MPLS报头,并且只解析有效载荷,不发送深度数据给搜索引擎。从功能上来说,FP解析器642的HiGig版本与上面讨论的FP解析器542相同。
结果匹配器在图7中详细示出。值得注意的是,结果匹配器可被普遍的应用于由多个解析器共用,或者每个解析器使用其自有的结果匹配器。在图中所示的实施例中,两种类型的端口710和720接收数据并通过输入口汇编器715和输入口仲裁器725的操作转送一定数值给结果检查器。该数值包括端口数、EOF的存在、CRC和数据包长度。结果匹配器以一系列FIFO工作,通过使用搜索引擎705来匹配搜索结果。基于每个端口,标签和MIB事件与数据包长度和CRC状态相匹配。每4个循环,搜索结果便被提供给网络端口和HiGig端口。如果存在延时小于输入数据包时间的情况,这种结构使得搜索结果存储在每个端口的结果匹配器内,当搜索延时比输入数据包时间短时,这种结构允许等待数据包结果的终端出现。
在对接收的数据进行解析和评估后,依据接收的信息做出转送决定。该转送决定通常为数据包应发送给什么目的端口,尽管该决定也可为放弃数据包或通过CMIC 111转送数据包给CPU或其它控制器。在输出口,基于网络设备的解析和评估,该数据包被修改。如果输出口为HiGig端口,此修改包括标记、报头信息的修改或添加模块报头。该修改以单元为基础进行,以避免在转送数据包时产生延时。
图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将不对该队列进行服务。
最小和最大带宽计量机构806a-806h可使用简单的漏斗桶机构来实现,追踪一个服务队列级804是否占用了其最小或最大带宽。每个服务级804的最小和最大带宽的范围设置在64Kbps至16Gbps之间,并以64Kbps递增。该漏斗桶机构具有可设置数量的令牌“泄漏”桶,每个桶以可配置的比率与队列804a-804h中一个相关联。在计量服务队列级804的最小带宽时,由于数据包进入服务队列级别804,与该数据包大小成比例的一定数量的令牌被添加到对应的桶中,该桶具有桶最高阀值的最高限度。该漏斗桶机构包括有刷新接口和定义每次刷新时间单元内移除多少个令牌的最小带宽。最小阀值用于指出数据流是否满足至少其最小比率,填充阀值(fill threshold)用于指出漏斗桶中有多少个令牌。当填充阀值上升超过最小阀值,一个指出该数据流已满足其最小带宽要求的标志被设定为真值(true)。当填充阀值下降低于最小阀值,该标志被设定为伪值(false)。
在计量机构806a-806h指出规定的最大带宽已超出高阀值后,调度器802终止对该队列的服务,且该队列被分入已超出最大带宽要求的队列组中。然后,发送一个标志以指出该队列已超出其最大带宽。随后,当其填充阀值下降至高阀值以下且指示其超出最到带宽的标志被重置时,该队列仅从调度器802接收服务。
最大速率计量机构808用于指出某个端口规定的最大带宽已经被超出,并且在最大总带宽被超出时,其与计量机构806a-806h的工作方式是一样的。根据本发明的一个实施例,基于一个队列和端口上的最大计量机构会影响队列804或一个端口将是否被包括在调度仲裁中。因此,该最大计量机构只对调度器802有流量限制影响。
另一方面,服务队列级804的最小计量与调度器802具有更复杂的交互操作。在本发明的一个实施例中,调度器802支持各种调度规则,来模拟加权公平队列方案的带宽共享性能。该加权公平队列方案为基于数据包的公平队列方案的加权版本,被定义为一种用于提供数据包的“基于位循环复用”调度的方法。这样,可对数据包进行调度,以基于该数据包的传送时间访问输出口,该时间在调度器能够提供基于位循环复用服务时计算得出。相关的加权字段将影响调度器如何使用最小计量机构的具体细节,其中该调度器试图提供最小带宽保证。
在本发明的一个实施例中,最小带宽保证是一个相对的带宽保证,其中一个相关字段决定了调度器是否将会把最小带宽计量设置视为一个相对的或绝对的带宽保证的规格。如果设置了相关字段,调度器将把最小带宽806设置视为一个相对带宽规格。然后调度器802尝试提供在积压队列804上共享的相对带宽。
如上所述,本发明的网络设备通过实现强大的和灵活的数据包修改,避免了现有网络设备的局限性。为了更好的理解本发明,以下从字段的角度对数据包给出介绍。
图9所示为实现本发明一个实施例的网络设备例如交换芯片的示意图。如图9所示,设备900包括输入口/输出口模块912、MMU 915、解析器930、修改引擎940和搜索引擎920。输入口/输出口模块用于数据的缓存以及将数据传送给解析器。解析器930解析已接收的数据,并基于已解析的数据利用搜索引擎920执行查找。MMU 915的主要功能是以可预测方式有效地管理单元缓存和数据包指针资源,即使是在严重堵塞的情况下。一旦作出传送决定,数据包通过MMU 915从存储器中读出,传送给修改引擎940以进行修改。其后,将修改后的数据包传送给端口介面912,使其可通过恰当的输出口发送。通过这些模块,可对数据包进行修改,且数据包可传送给适当的目的端口。
网络信息流通过以太端口909a-909x进出设备900。具体来说,设备900内的信息流将从外部以太网源端口路由至一个或多个唯一的目的以太网端口。在本发明的一个实施例中,设备900支持12个物理以太网端口909,其中每个端口可在10/100/1000Mbps的速度下工作。
在某些实施例中,查找表可位于网络设备外部的存储器中,或位于网络设备内自有的存储器中。解析器930解析数据包以确定该数据包的相关部分,从而决定网络设备应该执行什么操作。多数时候,只需检查数据包的一个初始部分,该初始部分又称为报头。
图10所示为一个数据包1000的一部分,即报头部分。该报头部分被分为几个字段,即1001-1004,这些字段包括目的地址、源地址、数据包类型、互联网协议(IP)源和目的地址等等。从这种格式来看,数据包报头由多个字段构成,而且如果网络设备想要修改这些字段的值,就必须先对这些字段定位。然而,如上所述,数据包内字段的位置由数据包类型决定。如果现有技术中的网络设备想要修改某些字段,必须首先确定数据包的类型,然后应用一组值以对给定数据包格式下的字段进行定位。
如果该数据包格式是现有的网络设备不熟悉的格式,则将该数据包发送给外部控制器,这样该数据包才能被正确地处理。或者,如果该格式不容易被理解,可将数据包丢弃。这两种处理均限制了网络设备的吞吐量,且现有技术中的网络设备通常不能再进行改进以处理新格式的数据包并维持需要的处理速度。
本发明提供一种可选方案,以一个“单元”为基础修改数据包。一个单元由数据包中的16位构成,这16位对于数据包的任何字段或功能来说都不是特定的。这种格式如图11中所示,其中数据包1100由多个单元1101-1104构成。从数据包修改引擎的角度来看,每个单元与其它任何单元均相同。因而,如果数据包修改引擎想要对数据包1100添加单元,可参考相对于包头的偏移。因而,如图11所示,对两个单元“X”加上偏移量“5”。或者,各单元可被替代,例如,单元0可被另一个16位的替代单元替代。
通过单元而不是字段来参考数据包位置的处理具有几个优势。该处理将对数据包的修改与控制面板在做什么分离。修改可通过与字段或包格式无关的一个引擎来做出。该修改可通过对硬件的简单指令完成,且支持任何数据包格式。
数据包的单元修改还遵循数据包修改的链表方法。正像存储器中的链表能使存储器中的更多空间得到使用而不需要邻接体(contiguous wholes)一样,这种单元格式能实现更大的灵活性。修改用的偏移量存储在一个单独的寄存器中,从存储器中读出数据包时,便对其做出真正的改变。
图12所示为重新组成数据包中的一段的示意图。将数据包结构中的一段1201中的值输入,代替1202中的黑色单元的值,经过多路复用1200后生成一个完整的数据包结构1203。同样值得注意的是,数据包修改引擎在单元的操作中采用纵横处理(crossbar process),因此一个单元在数据包内的任何位置移动。因此,除了数据包内单元的相加、减或置换外,各个单元可以任何顺序排列。
数据包修改引擎的处理可将宏指令(例如,将目的地址改变成另一个地址)译成微指令(例如,用随后的单元替代单元2、3)。因此,如果需要新的宏指令以适应不同的数据包格式,这些宏指令可翻译成微指令。这样的话,数据包修改引擎可适应变化,并仍能实现数据包的线速(line-speed)修改。
上述处理过程还允许在输出口需要的情况下添加标签。在某些隧道封装中,需要在数据包的L2字段之前插入隧道标签。该隧道标签可以是32位的,其插入涉及对数据包插入2个单元。本发明通过以单元为基础的数据包处理,使这种标签的插入得到简化。因而,本发明支持2个单元的移动的情况下,这种隧道封装能以快速且简单的方式实现。
给定数据包修改处理的一般属性的情况下,某些操作可能比专门对特定类型的数据包执行某些操作的引擎执行的操作要慢。避免可能的延时的一个方法是转发数据包,因为该修改处理将对数据包各段采用时间分割(time division)。图13中示出了这种处理。图13a所示为8个单元组成的同一数据包片段的几种形式。该数据包片段的每种形式可以通过延时电路获得。横轴表示时钟周期内的时间标度。数据包的所述多个形式用于填充因插入、删除或替代产生的间隙。如上所述,这可以使因修改而未对齐的数据包的片段能在单个时钟周期内输出。
图13a中的每种数据包形式用不同的阴影表示。因而,在图13b中,增加的4个单元导致轻微的错位。这样的话,大多数数据包从第三次循环中取出,剩下的数据包从第四次循环中取出。图13c所示为更多单元的插入,第三、第四和第五次循环中的一部分可提供正确的排列。图13d所示为数据包中的删除,所以第二循环中的一部分可用于提供正确的排列。近似地,图13e所示为更多单元地删除,第一、第二和第三次循环中的一部分可实现正确的排列。
以上是对本发明具体实施例的描述。很明显,可对本发明上述描述的实施例做其他的变化和修改,同样能达到本发明的某些或所有优点。因此,本发明的权利要去说明了本发明的精神实质和范围,覆盖了所有对本发明上述实施例的变化和修改情况。
权利要求
1.一种在数据网络中处理数据的网络设备,其特征在于,所述网络设备包括端口介面,与多个端口通信,用于从数据网络中接收数据包以及将已处理的数据包发送至所述数据网络;存储器管理单元,与存储器通信并控制所述存储器,向所述存储器存储数据以及从所述存储器中重新获取数据;解析器,与所述端口介面和所述存储器管理单元通信,解析所述已接收的数据包以确定所述数据包的属性以及修改从所述存储器获取的数据包,并基于所述确定的属性生成已处理的数据包;其中所述解析器以单元为基础,通过所述数据包的单元之间的相加、减和替换修改所述数据包,其中所述每个单元具有预定的位长。
2.根据权利要求1所述的网络设备,其特征在于,所述预定长度为16位。
3.根据权利要求1所述的网络设备,其特征在于,所述解析器将修改数据包字段的指令转译成修改数据包单元的指令。
4.根据权利要求1所述的网络设备,其特征在于,所述解析器通过使用链表结构追踪修改来修改所述数据包的片段。
5.一种在网络设备中处理数据的方法,其特征在于,所述方法包括在所述端口处通过端口界面接收数据包;发送数据包至存储器管理单元;由所述存储器管理单元将所述数据包存储在存储器内;从所述存储器内重新获取所述数据包;以单元为基础,通过所述数据包单元间的相加、减和置换修改所述重新获取的数据包,以生成已处理的数据包,其中所述每个单元具有预定的位长;发送所述已处理的数据包至所述多个端口中的输出口。
6.根据权利要求5所述的方法,其特征在于,所述修改重新获取的数据包的步骤包括以单元为基础修改所述重新获取的数据包,其中每个单元的预定长度为16位。
7.根据权利要求5所述的方法,其特征在于,所述修改重新获取的数据包的步骤包括将修改数据包字段的指令转译成修改数据包单元的指令。
8.一种处理数据的网络设备,所述网络设备包括接收数据包和发送已处理的数据包的端口装置;由存储器中的存储器管理单元向其存储从所述端口装置接收的数据包以及从其重新获取所存储器的数据包的存储器装置;以单元为基础,通过数据包单元间的相加、减和置换修改所述重新获取的数据包以生成已处理的数据包的修改装置,其中所述每个单元具有预定的位长。
9.根据权利要求8所述的网络设备,其特征在于,所述修改装置包括以单元为基础修改所述重新获取的数据包的装置,其中每个单元的预定长度为16位。
10.根据权利要求8所述的网络设备,其特征在于,所述修改装置包括用于将修改数据包字段的指令转译成修改数据包单元的指令的装置。
全文摘要
本发明公开了一种在数据网络中处理数据的网络设备,包括端口介面,与多个端口通信,用于从数据网络中接收数据包以及将已处理的数据包发送至所述数据网络;存储器管理单元,与存储器通信并控制所述存储器,向所述存储器存储数据以及从所述存储器中重新获取数据;解析器,与所述端口介面和所述存储器管理单元通信,解析所述已接收的数据包以确定所述数据包的属性以及修改从所述存储器获取的数据包,并基于所述确定的属性生成已处理的数据包;其中所述解析器以单元为基础,通过所述数据包的单元之间的相加、减和替换修改所述数据包,其中所述每个单元具有预定的位长。
文档编号H04L12/56GK1832455SQ20061000418
公开日2006年9月13日 申请日期2006年2月20日 优先权日2005年2月18日
发明者埃里克·恩格 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1