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

文档序号:7952145阅读:351来源:国知局
专利名称:在数据网络中处理数据的网络设备和方法
技术领域
本发明涉及处理网络中的数据的网络设备,更具体地,本发明涉及对能实现更高的处理速度和数据处理能力的网络设备所接收的数据进行解析。
背景技术
一个网络可包括一个或多个网络设备,例如以太网交换机,每个交换机包括几个模块,用于处理经过该设备传输的信息。具体来说,该设备可包括端口界面模块,用于发送和接收网络中的数据;存储器管理单元(MMU),用于储存数据直到被传输或进一步处理;以及解析模块(resolution module),该模块允许根据指令检查和处理数据。所述决定模块具有交换功能,用于确定应该控制哪个目的端口的数据。网络设备上的某一端口可以是CPU端口,使设备能够向外部交换机/路由控制实体或CPU发送信息以及从其接收信息。
多数网络设备以以太网交换机方式工作,数据包从多个端口进入该设备,并对该数据包执行交换和其它处理。其后,数据包通过MMU传输给一个或多个目的端口。MMU实现在不同的端口间共享包缓存器,同时为每个输入口、输出口和服务队列级别提供资源保证。
然而,现有技术中的多数网络设备不具备足够的处理能力,并且经常相互链接在一起才能提供更大的灵活性和处理更大吞吐量的能力。将这些链接在一起的现有设备相结合也带来了其他的问题,例如必须对这些设备编址,这些问题在单个网络设备中是无需考虑的。当必须对多个类型的数据进行解析和解析时,就会出现问题,因此需要提供更强的解析和解析能力以应对可能发生的问题。

发明内容
根据本发明的一个方面,提供一种在数据网络中处理数据的网络设备,所述网络设备包括多个端口,从数据网络中接收数据以及将处理后的数据发送到所述数据网络中;存储器管理单元,控制并与位于所述网络设备外部的存储器通信,向所述存储器存储数据并从所述存储器中重新获取数据;多部件解析器,与所述多个端口和所述存储器管理单元通信,对所述收到的数据进行解析;其中,所述多部件解析器包括几个解析模块,顺序地对数据进行解析,其中每个模块解析特定值,除第一模块外的每个模块从前一模块接收在零偏移位置处具有所述特定值的解析后数据。
优选地,所述几个解析模块包括4个解析模块。
优选地,所述4个解析模块包括专门解析层2、层3和层4字段的解析模块。
优选地,所述几个解析模块由内部通信线路连接在一起,其中通过所述内部通信线路发送的信号,可请求跳过除第一模块外的每个模块的解析。
优选地,所述多个端口中的一个包括较高速端口,且同所所述较高速端口接收的较高速数据由一个单独的解析器进行解析。
优选地,所述几个解析模块中的每个模块可访问一个搜索引擎。
优选地,所述几个解析模块中的一个模块专用于对收到的数据包进行解封装。
根据本发明的一个方面,提供一种在网络设备中处理数据的方法,所述方法包括如下步骤在网络设备的多个端口上接收数据;由多部件解析器对所述数据进行解析;由存储器管理单元将所述数据存储在位于所述网络设备外部的存储器中;从所述存储器中重新获取所述收到的数据,并对所述收到的数据进行修改,如果需要,基于确定的属性来生成处理后的数据;
将所述处理后的数据发送给所述多个端口中的一个输出端口;其中,所述解析数据的步骤包括通过几个解析模块顺序地解析数据,其中每个模块用于解析特定值,除第一模块外的每个模块从前一模块接收在零偏移位置处具有所述特定值的解析后数据。
优选地,所述顺序地解析所述数据的步骤包括通过4个解析模块顺序地解析所述数据。
优选地,所述4个解析模块包括专门用于解析层2、层3和层4字段的解析模块。
优选地,所述方法还包括由一个解析模块通过内部通信线路从前一解析模块接收发送的信号,以跳过由所述一个解析模块执行的解析。
优选地,所述几个解析模块中的每个模块可访问一个搜索引擎。
优选地,所述几个解析模块中的一个模块专用于对收到的数据包进行解封装。
根据本发明的一个方面,提供一种处理数据的网络设备,所述网络设备包括端口装置,接收数据并向输出端口发送处理后的数据;解析装置,通过多部件解析器解析所述数据;存储器装置,通过存储器管理单元将收到的数据存储在位于网络设备外部的存储器中,并从其中重新获取所存储的数据;修改装置,修改获取的所存储的数据,基于确定的属性生成处理后的数据;其中,所述解析装置包括通过几个解析模块顺序地解析所述数据的装置,其中每个模块用于解析特定值,除第一模块外的每个模块从前一模块接收在零偏移位置处具有所述特定值的解析后数据。
优选地,所述顺序地解析所述数据的装置包括通过4个解析模块顺序地解析所述数据的装置。
优选地,所述网络设备还包括查找装置,对搜索表执行查找搜索来确定所述接收的数据的属性。


下面将结合附图及实施例对本发明作进一步说明,附图中图1是依据本发明一个实施例的网络设备的结构示意图;图2是依据本发明一个实施例的使用网络设备端口进行通信的示意图;图3a是依据本发明一个实施例的网络设备所使用的位于该网络设备外部的共享存储器的示意图;图3b是图3a中所示的共享存储器结构的单元缓存池的示意图;图4是由存储器管理单元用于资源分配限制以确保对资源的公平访问的缓存器管理机构的示意图;图5是依据本发明某些实施例的二阶解析器的示意图;图6是依据本发明某些实施例的与互连端口一起使用的另一解析器的示意图;图7是依据本发明某些实施例的结果匹配器的示意图;图8是依据本发明一个实施例的输出口仲裁器的配置示意图;图9是依据本发明一个实施例的多部分解析器(multi-part parser)的各级的示意图。
具体实施例方式
以下结合优选地实施例对本发明进行描述,其中的实例在附图中进行了介绍。
图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接收的数据进行解析,还包括有其它模块132和136,用以转送数据回网络设备的端口。这两个解析器将在下面给出详细描述。
网络信息通过外部以太网端口109a-109x进入和输出设备100。具体来说,设备100中的信息流量由外部以太网资源端口路由至一个或多个唯一的目的以太网端口。在本发明的一个实施例中,设备100支持12个物理以太网端口109和一个高速端口108,其中每个物理以太网端口可以10/100/1000Mbps的数率工作,该高速端口108可以10Gbps或12Gbps的速率工作。
物理端口112的结构由图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数据从CMIC-bus格式转换为输入口数据格式。在一个实施例中,数据从45位转换为172位格式,这样后面的格式包括128位的数据、20位的控制和可能的24位的高速报头。其后,数据以64位突发串的形式发送至输入口仲裁器504。
输入口仲裁器504从端口501和输入CMIC接口503接收数据,并基于时分多路仲裁技术对这些输入进行多路复用。其后,数据被传送至MMU 510,在MMU 510处,所有高速报头被移除,并且被设置为MMU接口格式。然后检查数据包属性,例如,端对端、中断贝努里处理(Interupted Bernoulli Process,IBP)或行首(HOL)数据包。此外,数据的头128个字节被监听,并且高速报头被传至解析器ASM 525。如果接收到的突发数据包含端点标志,则CRC结果和数据包长度将被发送至结果匹配器515。而且,数据包的长度由突发串长度估测得到,并生成16位的数据包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、TT1、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状态相匹配。对于网络端口来说,每8个周期提供一次搜索结果,对于高速端口来说,每8个周期提供一次搜索结果。如果存在延时小于输入数据包时间的情况,这种结构使得搜索结果存储在每个端口的结果匹配器内,当搜索延时比输入数据包时间短时,这种结构允许等待数据包结果的终端出现。
在对接收的数据进行解析和评估后,依据接收的信息做出转送决定。该转送决定通常为数据包应发送给什么目的端口,尽管该决定也可为放弃数据包或通过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将不对该队列进行服务。
最小和最大带宽计量机构806a-806h可使用简单的漏斗桶机构来实现,追踪一个服务队列级804是否占用了其最小或最大带宽。每个服务级804的最小和最大带宽的范围设置在64Kbps至16Gbps之间,并以64Kbps递增。该漏斗桶机构具有可设置数量的令牌“泄漏”桶,每个桶以可配置的比率与队列804a-804h中一个相关联。在计量服务队列级804的最小带宽时,由于数据包进入服务队列级别804,与该数据包大小成比例的一定数量的令牌被添加到对应的桶中,具有桶最高阀值的最高限度。该漏斗桶机构包括有刷新接口和定义每次刷新时间单元内移除多少个令牌的最小带宽。最小阀值用于指出数据流是否满足至少其最小比率,填充阀值(fill threshold)用于指出漏斗桶中有多少个令牌。当填充阀值上升超过最小阀值,一个指出该数据流已满足其最小带宽要求的标志被设定为真值。当填充阀值下降低于最小阀值,该标志被设定为伪值。
在计量机构806a-806h指出规定的最大带宽已超出高阀值后,调度器802终止对该队列的服务,且该队列被分入已超出最大带宽要求的队列组中。然后,发送一个标志以指出该队列已超出其最大带宽。随后,当其填充阀值下降至高阀值以下且指示其超出最到带宽的标志被重置时,该队列仅从调度器802接收服务。
最大速率计量机构808i用以指出某个端口规定的最大带宽已被超出,并在最大带宽被超出时,以与机构806a-806h相同的方式工作。根据本发明的一个实施例,基于队列和端口的最大计量机构通常对队列804或一个端口是否包括在调度仲裁中产生影响。这样的话,最大计量机构仅对调度器802有流量限制作用。
另一方面,服务队列级804的最小计量与调度器802具有更复杂的交互操作。在本发明的一个实施例中,调度器802支持各种调度规则,来模拟加权公平队列方案的带宽共享性能。该加权公平队列方案为基于数据包的公平队列方案的加权版本,被定义为一种用于提供数据包的“基于位循环复用”调度的方法。这样,可对数据包进行调度,以基于该数据包的传送时间访问输出口,该时间在调度器能够提供基于位循环复用服务时计算得出。相关的加权字段将影响调度器如何使用最小计量机构的具体细节,其中该调度器试图提供最小带宽保证。
在本发明的一个实施例中,最小带宽保证是一个相对的带宽保证,其中一个相关字段决定了调度器是否将会把最小带宽计量设置视为一个相对的或绝对的带宽保证的规格。如果设置了相关字段,调度器将把最小带宽806设置视为一个相对带宽规格。然后调度器802尝试提供在积压队列804上共享的相对带宽。
图9所示为多部件解析器的功能示意图。在本发明的某些实施例中,该多部件解析器结合在深度解析器540中。该多部件解析器由多个解析模块910、920等构成,其中每个模块专门解析输入数据包的特定片段。每个模块都从零偏移量开始进行解析,这样一来,一个模块输出的解析后的片段在提供给下一个模块时,下一模块想要解析的字段从零位开始。因此,如果一个模块专用于解析隧道值,下一模块专用于解析层3(layer 3)字段,那么前一模块将解析其自己的字段,然后将解析后的片段提供给下一模块而没有进行隧道封装(tunnel encapsulation)。由于模块解析是累积进行的,随后的模块无需搜索数据包的报头来查找相关字段。此外,这还可以使各个模块的功能以流水线形式实现。
在特定的实施例中,在步骤901,将数据提供给第一级910来解析层2(layer2)的值,然后在步骤915,将解析后的片段提供给第二级920来解析隧道值,包括IP或MPLS值。此后,第三级930解析层3(layer 3)的值,第四级940解析层4(layer 4)的值。经过最后一级后,在步骤975,相关的和/或所请求的字段值将输出以进行搜索、修改或替换。此外,还可使用其他解析模块,包括解封装引擎。但是,模块的数量没有限制为4个或5个,但所使用的模块的数量与总体的解析要求有关。
在图9中还示出了模块之间的通信918。模块间的这些交互操作使得该多部件解析器可对特定的环境作出响应。可能用到的一个特定通信是在不需要使用的情况下跳过下一模块的解析操作。一个典型的例子是,如果最初决定应该对该数据包片段执行解封装,但在另一处理步骤中,发现该数据包不是IP隧道(IP tunnel),而是IP上的IP(IP over IP),因此只需针对IPv4值对该数据包片段进行解析。
以上是对本发明具体实施例的描述。很明显,可对本发明上述描述的实施例做其他的变化和修改,同样能达到本发明的某些或所有优点。因此,本发明的权利要去说明了本发明的精神实质和范围,覆盖了所有对本发明上述实施例的变化和修改情况。
本申请引用并要求申请日为2005年2月18的美国临时专利申请No.60/653953的优先权。
权利要求
1.一种在数据网络中处理数据的网络设备,所述网络设备包括多个端口,从数据网络中接收数据以及将处理后的数据发送到所述数据网络中;存储器管理单元,控制并与位于所述网络设备外部的存储器通信,向所述存储器存储数据并从所述存储器中重新获取数据;多部件解析器,与所述多个端口和所述存储器管理单元通信,对所述收到的数据进行解析;其中,所述多部件解析器包括几个解析模块,顺序地对数据进行解析,其中每个模块解析特定值,除第一模块外的每个模块从前一模块接收在零偏移位置处具有所述特定值的解析后数据。
2.根据权利要求1所述的网络设备,其特征在于,所述几个解析模块包括4个解析模块。
3.根据权利要求2所述的网络设备,其特征在于,所述4个解析模块包括专门解析层2、层3和层4字段的解析模块。
4.根据权利要求1所述的网络设备,其特征在于,所述几个解析模块由内部通信线路连接在一起,其中通过所述内部通信线路发送的信号,可请求跳过除第一模块外的每个模块的解析。
5.一种在网络设备中处理数据的方法,所述方法包括如下步骤在网络设备的多个端口上接收数据;由多部件解析器对所述数据进行解析;由存储器管理单元将所述数据存储在位于所述网络设备外部的存储器中;从所述存储器中重新获取所述收到的数据,并对所述收到的数据进行修改,如果需要,基于确定的属性来生成处理后的数据;将所述处理后的数据发送给所述多个端口中的一个输出端口;其中,所述解析数据的步骤包括通过几个解析模块顺序地解析数据,其中每个模块用于解析特定值,除第一模块外的每个模块从前一模块接收在零偏移位置处具有所述特定值的解析后数据。
6.根据权利要求5所述的方法,其特征在于,所述顺序地解析所述数据的步骤包括通过4个解析模块顺序地解析所述数据。
7.根据权利要求6所述的方法,其特征在于,所述4个解析模块包括专门用于解析层2、层3和层4字段的解析模块。
8.一种处理数据的网络设备,所述网络设备包括端口装置,接收数据并向输出端口发送处理后的数据;解析装置,通过多部件解析器解析所述数据;存储器装置,通过存储器管理单元将收到的数据存储在位于网络设备外部的存储器中,并从其中重新获取所存储的数据;修改装置,修改获取的所存储的数据,基于确定的属性生成处理后的数据;其中,所述解析装置包括通过几个解析模块顺序地解析所述数据的装置,其中每个模块用于解析特定值,除第一模块外的每个模块从前一模块接收在零偏移位置处具有所述特定值的解析后数据。
9.根据权利要求8所述的网络设备,其特征在于,所述顺序地解析所述数据的装置包括通过4个解析模块顺序地解析所述数据的装置。
10.根据权利要求8所述的网络设备,其特征在于,所述网络设备还包括查找装置,对搜索表执行查找搜索来确定所述接收的数据的属性。
全文摘要
本发明公开了一种在数据网络中处理数据的网络设备,包括多个端口,从数据网络中接收数据以及将处理后的数据发送到所述数据网络中;存储器管理单元,控制并与位于所述网络设备外部的存储器通信,向所述存储器存储数据并从所述存储器中重新获取数据;多部件解析器,与所述多个端口和所述存储器管理单元通信,对所述收到的数据进行解析;其中,所述多部件解析器包括几个解析模块,顺序地对数据进行解析,其中每个模块解析特定值,除第一模块外的每个模块从前一模块接收在零偏移位置处具有所述特定值的解析后数据。
文档编号H04L12/56GK1832456SQ20061000418
公开日2006年9月13日 申请日期2006年2月20日 优先权日2005年2月18日
发明者丹尼斯·苏吉克·李 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1