一种网络设备以及在该网络设备中处理数据的方法

文档序号:7952144阅读:251来源:国知局
专利名称:一种网络设备以及在该网络设备中处理数据的方法
技术领域
本发明涉及网络中用于处理数据的一种网络设备,更具体地,涉及在网络设备中采用数值预获悉的技术提高处理速度和数据处理性能。
背景技术
网络通常包括一个或者多个网络设备,如以太网交换机等,每一个设备都包含着几个用来处理将通过该设备发送的信息的模块。具体来讲,该设备可以包括端口接口模块,用来通过网络发送和接收数据;存储器管理单元(MMU),用来在数据被转发或者进一步处理之前存储这些数据;裁决模块(resolution modules),用来根据指令来检查和处理数据。裁决模块包括交换功能,该功能用来决定数据将发送到哪一个目标端口。网络设备的端口中有一个是CPU端口,该端口使得该设备能够向外部交换/路由控制实体或CPU发送信息,以及从外部交换/路由控制实体或CPU接收信息。
许多网络设备的工作方式与以太网交换机相似,数据包从多个端口进入设备,在其中对数据包进行交换和其他处理。之后,数据包通过存储器管理单元(MMU)发送到一个或多个端口。确定数据包出站端口的过程包括对数据包进行检查以确定其属性。
但是,相对于网络设备时钟周期而言,当数据包过大时,比如数据包是一个巨型帧时,数据包的报头比报尾的信息先得到处理。这样,虽然查看数据包的开头部分就可以部分地确定数据包的某些属性和确定与数据包有关的寄存器设置,但是必须待数据包的最后部分接收完并确认之后才能输入或获悉(learn)数据包属性和寄存器设置。因此,这里面就有一个时间损失的问题,这个时间损失反过来又影响了网络设备的性能。

发明内容
根据本发明的一方面,提供一种数据网络中处理数据的网络设备,包括端口接口,该端口接口与多个端口通信,用于从数据网络中接收数据包并将处理后的数据包发送到数据网络中;存储器访问单元,该存储器访问单元与所述端口接口及具有至少一个表的的存储器通信;其中,存储器访问单元设置如下当端口接口接收到数据包的报头时,从所述至少一个表中读取至少一个与所述数据包相关的数值;当端口接口接收到前一个数据包的报尾时,并在读取了所述至少一个数值后,将另一个数值存储到所述至少一个表中。
优选地,所述至少一个表中的每一个入口都分为与报头相关的部分和与报尾相关的部分。
优选地,所述存储器访问单元先存储后接收到的数据包的报头随后存储前一数据包的报尾数值。
优选地,所述至少一个表包括第二层地址表,作为第二层地址获悉过程的一部分,存储器访问单元将数值存储到该第二层地址表中并从中取回数值。
优选地,当端口接口接收到数据包的报头时,该存储器访问单元从第二层地址表中读取源地址、目标地址和散列入口地址(hash entry address)。
优选地,该存储器访问单元通过三个存储器存取操作来实现第二层地址获悉。
优选地,该至少一个表包括多点传送地址表,作为确定多点传送数据包出站端口的过程的一部分,该存储器访问单元往该多点传送地址表中存储数值并从中重新读取数值。
根据本发明的一方面,提供一种在网络设备中处理数据的方法。包括以下步骤在多个端口中的一个端口接收数据包;当所述端口接收到数据包的报头时,从存储器的至少一个表中读取至少一个与该数据包有关的数值;在所述至少一个数值已经读取之后,当所述端口接收到前一个数据包的报尾时,将另外一个数值存储到该至少一个表中。
优选地,存储另外一个数值到该至少一个表中的步骤包括将报头数值存储到该至少一个表的入口的报头相关部分;将报尾数值存储到该至少一个表的入口的报尾相关部分。
优选地,所述报头数值从所述数据包中获得,所述报尾数值从前一个数据包中获得。
优选地,先存储后接收到的数据包的报头随后存储前一数据包的报尾数值。
优选地,作为第二层地址获悉过程的一部分,所述读取至少一个数值的步骤包括从第二层地址表中读取该至少一个数值。
优选地,所述从第二层地址表读取至少一个数值的步骤包括读取源地址,目标地址和散列入口地址。
优选地,所述读取和存储步骤通过三个存储操作完成。
根据本发明的一方面,提供一种处理数据的网络设备,包括用于在多个端口中的一个端口上接收数据包的端口装置;当所述端口接收到数据包的报头时,从存储器的至少一个表中读取至少一个与该数据包有关的数值的读取装置;在所述至少一个数值已经读取之后,当所述端口接收到前一个数据包的报尾时,将另外一个数值存储到该至少一个表中的存储装置。
优选地,所述存储装置包括用于将报头数值存储到该至少一个表的入口的报头相关部分以及将报尾数值存储到该至少一个表的入口的报尾相关部分的装置。
优选地,所述存储装置设置如下先存储后接收到的数据包的报头随后存储前一数据包的报尾数值。
优选地,作为第二层地址获悉过程的一部分,所述读取装置包括从第二层地址表读取至少一个数值的读取装置。
优选地,所述读取装置包括从第二层地址表中读取源地址、目标地址、散列地址的读取装置。
优选地,读取和存储装置都被设定好通过三个存储器存储操作来实现读取和存储。


下面将结合附图及实施例对本发明作进一步说明,附图中图1是本发明的网络设备的结构示意图,本发明的实施例可在其中实施;图2是根据本发明实施例的利用网络设备的端口进行通讯的方框示意图;图3是本发明网络设备采用的存储器的结构图,其中图3a为网络设备外部的共享存储器的结构示意图,图3b是该共享存储器架构的单元缓冲池(CellBuffer Pool)结构示意图;图4是存储器管理单元所采用的缓冲管理机制的示意图,用以对资源分配进行限制从而确保对资源的公平访问;图5是根据本发明实施例的双阶分析器的示意图;图6是根据本发明实施例的用于互连端口的另一分析器的示意图;图7是根据本发明实施例的结果匹配器的结构示意图;图8是本发明实施例采用的出站端口裁决配置的示意图;图9是根据本发明的实施例的簿记存储器的示意图;图10是根据本发明实施例的基于数值预获悉(pre-learning)方法进行存储的示意图,其中图10a是查找表中一部分的示意图,图10b是存储器读取和存储过程的示意图。
具体实施例方式
图1示出了一种网络设备,如交换芯片,本发明的实施例可在其中实施。设备100包括入站/出站模块(Xport)112和113,存储器管理单元(MMU)115,分析器130和搜索引擎120。入站/出站模块用来缓冲数据和把数据转发到分析器中。分析器130分析接收到的数据和基于分析后的数据用搜索引擎进行查找。存储器管理单元(MMU)115的主要功能是利用一种可预测的方式对单元缓冲(cell buffering)和数据包指针资源进行有效管理,即使在严峻的拥堵状态下。通过这些模块,可对数据包进行修正并将其发送到适当的目标端口。
根据实施例,设备100也可以包括一个内部的光纤高速端口,如HiGigTM端口108、一个或多个外部以太网端口109a至109x、CPU端口110。高速端口108用于使系统内的各个网络设备相互连接,这样就形成了用来在外部源端口和一个或多个目标端口之间传送数据包的内部交换光纤。如此,从包括多个互连的网络设备的系统外部,可能看不到高速端口108的存在。CPU端口110用来向外部交换/路由控制实体或CPU发送信息,或者从外部交换/路由控制实体或CPU中接收信息。根据本发明的实施例,CPU端口110可以认为是外部以太网端口109a一109x中的一个端口。设备100通过一个CPU处理模块(如CMIC)111与外部/芯片外的CPU接口相连(interface with),CMIC与PCI总线接口相连,该PCI总线将设备100和外部的CPU相连接。
另外,搜索引擎模块120可以由附加的搜索引擎模块BSE 122、HSE 124和CSE 126组成。附加搜索模块用来执行详细的查找,用于对正在被网络设备100处理的数据进行描述和修改。同样地,分析器130也包括附加的模块,这些模块主要分析从内部光纤高速端口134和其他端口138接收的数据,另外的模块132和136则把数据转发回网络设备的端口。HiGigTM端口134和双阶分析器(two stage parser)138下面有更详细的说明。
网络通信流通过外部以太网端口109a-109x进/出网络设备100。具体地,设备100中的通信流从外部的以太网源端口路由到一个或多个特定的目标以太网端口。在本发明的实施例中,设备100支持12个物理以太网端口109和1个高速端口108,每一个以太网端口109能以10/100/1000Mbps的速度运行,高速端口108则以10Gbps或12Gbps的速度运行。
图2中示出了物理端口109的结构。一连串的连续/不连续的模块103发送和接收数据,每一个端口接收的数据由端口管理器102A-L管理。这一连串的端口管理器配有定时发生器(timing generator)104和用来帮助端口管理器运行的总线代理器(bus agent)105。数据接收和发送到端口信息库中,从而能够监控信息流。应注意的是,高速端口108具有相似的功能但不需要如此多的部件,这是因为只有一个端口需要管理。
如图3a和图3b所示,在本发明的实施例中,设备100建造在共享存储器架构的基础上,其中,在给每一个入站端口、出站端口和与出站端口相关联的业务队列的分类提供资源保证的同时,MMU 115使得能够在不同端口之间共享数据包缓冲。图3a是本发明的共享存储器架构的示意图。具体地,设备100的存储器资源包括单元缓冲池(Cell Buffer Pool,简称CBP)存储器302和事务队列(Transaction Queue,简称XQ)存储器304。根据一些实施例,CBP存储器302是由4个静态随机存取存储器(DRAM)芯片306a-306d组成的芯片外资源。根据本发明的实施例,每一个DRAM芯片的容量为288M位,其中CBP存储器302的总容量是122M字节(byte)原始数据存储量。如图3b所示,CBP存储器302被分为256K个576字节的单元308a-308x,每一个单元包括一个32字节的报头缓冲310、高达512字节的包数据空间312和一个32字节的保留空间314。这样,每一个输入的数据包至少消耗一个完整的576字节的单元308。因此在这一例子中,当一个输入的数据包包含64字节的帧时,该数据包也为自己保留576字节的空间,即使这576字节中只有64字节被该帧使用。
回到图3a中,XQ存储器304包含一列指向CBP存储器302的数据包指针316a-316x,其中不同的XQ指针316可以与每一个端口相关联。CBP存储器302的单元计数和XQ存储器304的数据包计数是以入站端口、出站端口、服务分类为基础而追踪的。这样,设备100能够以单元和/或数据包为基础提供资源保障。
当一个数据包通过源端口109进入设备100时,数据包被传送到分析器130进行分析。分析过程中,每一个入站端口和出站端口处的数据包共享系统资源302和304。在具体实施例中,两个分离的(separate)64字节的数据包脉冲突发串从本地端口和HiGig端口转发到MMU。图4是存储器管理单元(MMU)115所采用的缓冲管理机制的示意图,用以对资源分配进行限制从而确保对资源的公平访问。MMU 115包含有入站背压机制(ingress backpressuremechanism)404、线端机制(head of line mechanism,简称HOL)406、加权随机早期探测机制(WRED)408。入站背压机制404支持无损耗的行为,并为各入站端口公平地管理缓冲资源。线端机制406支持对缓冲资源的访问,同时优化系统吞吐量。加权随机早期探测机制408提高整个网络吞吐量。
入站背压机制404通过包或单元计数器跟踪入站端口所使用的数据包和单元的数量。入站背压机制包括为一组8个独立的可配置阈值(configurablethresholds)配置的寄存器,以及用于规定系统中每一个入站端口使用8个阈值中哪一个阈值的寄存器。该组寄存器包括限制阈值412、丢弃限制阈值414和复位限制阈值416。如果与入站端口包/单元使用率相关的计数器超过了丢弃限制阈值414,该入站端口的数据包将会丢包。当某入站端口使用的缓冲资源超出了其公平共享缓冲资源的使用量时,根据追踪单元/数据包数目的计数器的计数值,采用暂停流量控制机制阻止通信流量到达该入站端口,从而,阻止来自该令人不愉快的(offending)入站端口的数据流,使得由该入站端口引起的拥塞得到抑制。
具体地,每一个入站端口根据与这组阈值相关联的入站背压计数器的计数值,不断追踪自己是否处于入站背压状态。当入站端口处于入站背压状态时,从该入站端口周期性地发送出带有计时器值0xFFFF的暂停流量控制帧。当入站端口不再处于入站背压状态时,从该入站端口发送出带有计时器值0x00的暂停流量控制帧,使得通信流能够再流通。如果入站端口当前不处于入站背压状态但包计数器计数值高于限制阈值412,则该入站端口转入入站背压状态。如果该入站端口处于入站背压状态但数据包计数器计数值下降到复位限制阈值416之下,该端口转出端口背压状态。
当对系统吞吐量进行优化时,采用线端机制406,以支持对缓冲资源的公平访问。线端机制406依靠数据包丢弃来管理缓冲资源和改进整个系统吞吐量。根据本发明的实施例,线端机制406利用出站计数器和预先确定的阈值,根据出站端口和业务类型,追踪缓冲器使用率,之后再决定是否丢弃任何新到达该入站端口的、其目标端口是特别超额预订的出站端口/业务队列类型的数据包。线端机制406器根据新到达的数据包的颜色来支持不同阈值。包的标色是在入站模块的计量操作和标记的操作中进行的,MMU根据数据包颜色的不同对数据包进行不同的处理。
根据本发明的实施例,线端机制406是可配置的,并且是独立操作于每一类型的业务队列和全部端口上的,包括CPU端口。线段器406采用了计数器和阈值,其中计数器用于追踪XQ存储器304、CBP存储器302的利用率,阈值是被设计用来支持CBP存储缓冲器302的静态分配和支持可使用的XQ存储缓冲器304的动态分配。对CBP存储器302的所有单元都规定了一个丢弃阈值422,而不管颜色标记。当与端口关联的单元计数器计数值达到丢弃阈值422时,该端口转入线端状态。此后,如果其单元计数器计数值下降到复位限制阈值424之下,该端口可以转出线端状态。
对于XQ存储器304,XQ入口(entry)值430a-430h为每一类业务队列定义了XQ缓冲器的保证的固定分配量。每一个XQ入口值430a-430h都定义了应该为有关联的队列保留的缓冲入口数量。例如,如果100字节的XQ存储器被分配给某个端口,分别与XQ存储器入口430a-430d关联的最前面的4个业务队列被分配10字节的值;而分别与XQ入口430e-430d关联的最后的4个业务队列被分配5字节的值。
根据本发明的实施例,即使一个队列没有使用完根据XQ入口值保留给它的缓冲器入口,线端机制406也不会把未使用的缓冲器分配给其他队列。然而,该端口的XQ缓冲器中尚未分配的40字节可以被与该端口关联的所有的业务队列共享。某具体的业务队列类可以消耗多少XQ缓冲器共享池的极限值,由XQ设置限制阈值432设定。因而,设置限制阈值432用于定义能被某队列使用的缓冲器的最大数目,以防止该队列把可用的XQ缓冲器都用完。为了保证XQ入口值430a-430h的总数加起来不超过该端口可利用的XQ缓冲器的数量,及为了保证每一类业务队列能使用根据其入口值430分配的XQ缓冲器配额,每个端口可利用的XQ缓冲池都利用端口动态计数寄存器434追踪。其中,动态计数寄存器434不断追踪该端口可利用的共享XQ缓冲器的数目。动态计数寄存器434的初始值是该端口关联的XQ缓冲器的总数目与XQ入口值430a-430h总数目的差。当一个业务队列类在XQ入口值430分配的配额之外使用了一个可利用的XQ缓冲器时,动态计数寄存器434减少。相反地,当一个业务队列类在XQ入站值430分配的配额之外释放了一个可利用的XQ缓冲器时,动态计数寄存器434增加。
当某队列请求XQ缓冲器304时,线端机制406测定该队列使用的所有的入口是否少于为该队列分配的XQ入口值430,如果使用的入口数少于XQ入口值430,则准许该缓冲请求。但是,如果使用的入口数多于为该队列分配的XQ入口值430,线端机制406测定请求的数量是否少于可利用的缓冲器总量或者是否少于由相关的设置限制阈值432为该队列设定的最大数量。设置限制阈值432本质上是该队列的丢弃阈值,而不管该数据包的颜色标记。这样,当数据包的计数值达到设置限制阈值432时,该队列/端口进入线端状态。当线端机制406检测到线端情形时,将发送一个更新状态信息,使得在该拥塞端口的数据包被丢弃。
但是,由于存在反应时间,当状态更新信息已经被线端机制406发送时,可能有一些包正在MMU 115和端口这间传输。这种情况之下,因为线端状态,MMU 115可能出现丢包的情况。在本发明的实施例中,因为数据包的流水线操作,XQ指针的动态池按预定数量减少。这样,当可利用的XQ指针数量等于或者少于预定的数量时,该端口转为线端状态,MMU 115发送一个更新状态信息到该端口,因此减少了可能被MMU 115丢弃的包的数量。要转出线端状态,该队列的XQ包计数值必须降到复位限制阈值436之下。
对某类业务队列而言,XQ计数器可能不会达到设置限制阈值432,如果该端口的XQ资源被其他类业务队列过度预订时,仍然会丢包。在本发明的实施例中,中间丢弃阈值438和439还可以被用来定义包含特殊颜色标记的包,其中,每一个中间丢弃阈值定义在何时丢弃特定颜色的包。例如,中间丢弃阈值438可以用于定义何时丢弃黄色的包,中间丢弃阈值439可以用于定义何时丢弃红色的包。根据本发明的实施例,根据指定予包的优先级,包可以是绿色、黄色和红色。为了确保每一种颜色的包能按每个队列中所分配的颜色比例处理,本发明的一个实施例包括了虚拟最大阈值440。未分配的、可利用的缓冲器的总数,除以队列数量与目前被使用的缓冲器数量的和所得的商值,就等于虚拟最大阈值440。虚拟最大阈值440确保以相对的比例处理每种颜色的包。因此,如果可利用的未分配的缓冲器数量少于某一特定队列的设置限制阈值432,并且该队列请求访问所有的可利用的未分配缓冲器,线端机制406就计算该队列的虚拟最大阈值440,并以每种颜色定好的比率处理每种颜色的数据包。
为了节省寄存器空间,XQ阈值可以用压缩形式表示,其中,每一单元代表一组XQ入口。组的大小依赖于与某特定出站端口/业务队列类型关联的XQ缓冲器的数量。
加权随机早期探测机制408是队列管理机制,该队列管理机制在XQ缓冲器304耗尽之前根据概率算法事先(preemptively)丢弃数据包。因此,加权随机早期探测机制408用来优化整个网络的吞吐量。加权随机早期探测机制408包括平均统计,平均统计用来追踪每一个队列长度和根据为该队列定义的丢包配置(drop profile)丢弃数据包。丢包配置(drop profile)对给定的具体的平均队列大小定义了一个丢弃概率。根据本发明的实施例,加权随机早期探测机制408可以根据业务队列类型和数据包分别定义丢包配置。
如图1所示,MMU 115从分析器130接收包数据以进行存储。如上所述,分析器130包括一个双阶分析器,图5是这部分的示意图。如上所述,数据通过网络设备端口501被接收。数据也可以通过CMIC 502接收,并传送到入站CMIC接口503。CMIC接口503把CMIC数据从P总线(P-bus)格式转换为入站数据格式。在实施例中,数据从45-位转为168-位格式,因此,后一种格式包括128-位的数据、16-位的控制,也可能包括24-位的HiGig报头。转换后的数据以64-位脉冲突发串(Burst)的形式发送到入站裁决器504。
入站裁决器504从端口501和入站CMIC接口503接收数据,并基于时分复用裁决复用这些输入。然后,数据被发送到MMU 510,在这里所有的HiGig报头都被移除,数据格式被设为MMU接口格式。对包裁决进行检查,如终端对终端、中断柏努利处理(IBP)或者线端包。另外,数据最前面的128字节被探听,HiGig报头被传到分析器ASM 525。如果接收到的数据脉冲突发串包含有结束标记,CRC结果被发送到结果匹配器515。同时,为便于调试,根据脉冲突发串的长度估计包的长度并生成126-位的包ID。
分析器ASM 525把64字节的数据脉冲突发串、每一突发串4个周期,转为128字节的脉冲突发串,每一脉冲突发串8个周期。为了保持相同的包顺序,该128字节脉冲突发串数据被同时送到隧道分析器(tunnel parser)530和分析器FIFO 528中。隧道分析器530确定各种类型的隧道封装是否在使用,包括MPLS和IP隧道。另外,隧道分析器还进行外部标识符和内部标识符的检测。通过分析过程,将会话启动协议(SIP)提供给基于虚拟局域网(VLAN)的子网,在VLAN里,如果包是地址解析协议(ARP)包、反地址解析协议(RARP)包或IP包,就进行SIP分析。基于源中继映射表构造中继端口网格ID,除非没有中继或者中继ID从HiGig报头中获取。
隧道分析器530和隧道校验器531一起工作。隧道校验器检验IP报头的校验和,UDP隧道及在IPv4包上的IPv6的特性。隧道分析器530利用搜索引擎520通过预先配置好的表来确定隧道类型。
分析器FIFO 528存储有128字节的包报头和12字节的HiGig报头,其中HiGig报头还会被深度分析器540分析。当搜索引擎完成一个搜索任务后准备进行深度搜索时,报头字节就被保存。FIFO还保留其他属性,如包长度,HiGig报头状态和包ID。深度分析器540提供三种不同类型的数据,包括来自搜索引擎520的搜索结果、内部分析器结果和HiGig模块报头。特定类型的包被确定并传送到搜索引擎中。深度分析器540从分析预定义字段的分析器FIFO中读取数据。搜索引擎根据传送到搜索引擎的数值提供查找结果,在搜索引擎里,包ID被检验以保持包的顺序。
预定义字段在分析器FIFO中被分析;深度分析器540分析来自分析器FIFO的数据。搜索引擎基于通过其的数值提供搜索结果,包ID在搜索引擎中被检测以维持包顺序。
深度分析器540也使用协议校验器541进行内部IP报头检验和、拒绝服务攻击属性检验、HiGig模块报头检验和执行维持检验。深度分析器还与字段处理分析器542协同工作,分析预定义字段和用户自定义字段。该预定义字段是从深度分析器接收到的。预定义字段包括MAC目标地址、MAC源地址、内部标识符、外部标识符、以太类型、IP目标地址、IP源地址、业务类型、IPP、IP标记、TDS、TSS、TTL、TCP标记和流标签。长度为128-位的用户自定义字段也是可分析的。
如上所讨论,来自HiGig端口的数据和来自本地端口的其它数据是分开处理的。如图1中所示,HiGig端口108有自己的缓冲器,数据流从HiGig端口流到HiGig自身的分析器134中。图6更详细地显示了HiGig分析器。HiGig分析器的结构和图5中显示的双阶分析器的结构类似,也有一些区别之处。在HiGig端口601接收到的数据被转发到HiGig端口汇编程序(assembler)604中。该汇编程序接收来自HiGig端口的数据和与本地端口数据格式相同的64字节脉冲突发串中的HiGig报头。这些数据,除HiGig报头外,以MMU接口的格式送到MMU 610中。
数据的前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状态相匹配。MIB事件、CRC和端口也报告给入站MIB 707。对于网络端口和HiGig端口,每四个周期提供搜索结果。如果搜索延迟大于入站包时间,该结构虑及将结果按端口存储到结果匹配器中,当该搜索延迟小于入站包时间,该结构虑及等待包搜索结果结束。
对接收到的数据进行分析和评估处理之后,做出有关该接收到的信息的转发决定。该转发决定通常是决定该包数据应该发送到哪个目标端口,有时也是决定把包丢弃或者通过CMIC 111把包转发到CPU或其他控制器。在出站处,基于网络设备的分析和评估对包进行修改。如果该出站端口是HiGig端口,这些修改包括标识符添加、报头信息修改或者模块报头的添加。为了避免包数据转发过程中的延迟,这些修改都是以单元为基础进行的。
图8示出了本发明实施例中出站端口裁决器的结构。根据图8,MMU 115包括了调度器802。调度器802对与每个出站端口关联的8类业务队列(COS)804a-804h提供裁决,以提供最小值和最大值的带宽保证。注意,虽然讨论的是8类业务队列,也支持业务队列的其他类配置。调度器802被整合到一组最小和最大计量机制806a-806h中。每个计量机制都基于业务类型和全部出站端口对通信流进行监控。计量机制806a-806h支持通信量的修整功能并基于业务队列类或出站端口保证最小带宽规格,其中,在出站端口里,调度机制802通过通信量调整机制806a-806h和一系列控制掩码最大限度地配置调度决定,控制掩码用来更改调度器802使用通信量调整器806a-806h的方式。
如图8所示,最小和最大计量机制806a-806h基于业务队列类型和全部的出站端口对通信流进行监控。最小和最大带宽计量器806a-806h把状态信息发送给调度器802,调度器802据此修改对业务队列804的服务顺序。因此,网络设备100通过配置业务队列804来提供具体的最小值和最大值的带宽保证,从而使系统供应商能够提供高质量的服务。在本发明的实施例中,计量机制806a-806h基于业务队列来监控通信流,并且把队列通信流是否大于或者小于额定最小或者额定最大带宽的状态信息发送到调度器802,调度器802据此修改调度决定。这样,计量机制806a-806h帮助把业务队列804分成3组一组是还没有达到额定最小带宽标准;一组是已经达到了额定最小的带宽标准但没达到额定最大的带宽标准的;一组是已超过了额定最大的带宽标准的。如果某业务队列处于第一种情况并且该队列中有数据包,调度器802根据所配置的调度规则来服务该队列;如果某服务队列处于第二种情况并且该队列中有数据包,调度器802也根据所配置的调度规律来服务该队列;如果某业务队列处于第三种情况或者该队列是空的,调度器802就不为该队列服务。
最小和最大带宽计量机制806a-806h利用简易漏桶机制(simple leakybucket mechanism)来实现,简易漏桶机制追踪业务队列类804是否用完了其额定最小或额定最大的带宽。每一业务队列类的带宽范围是64kbps到16Gbps,以64kbps作为一个递增单位。漏桶机制有数目可配置的漏出桶外的令牌(token)。每个令牌以一个可配置的比率与队列804a-804h的一类队列关联。当数据包进入业务队列类804时,在为业务队列804计量最小带宽的时候,在不超出桶高阈值的前提下,与数据包大小成比例的一定数目的令牌被加到相应的桶中。漏桶机制包括刷新升级接口、最小带宽,最小带宽定义每个刷新时间单位里移除的令牌数。最小阈值指示通信流是否至少已经满足其最小比率,填充阈值用来指示桶中有多少个令牌。当填充阈值大于最小阈值时,把指示该通信流已经满足其最小带宽标准的标记设为真;当填充阈值落到最小阈值以下时,该标记设为错。
计量机制806a-806h指示所规定的最大带宽标准已经超出了最高阈值之后,调度器802停止服务该队列,该队列被归类到已经超出其最大带宽规定的队列中。之后设置一标记用于指示队列已经超过其最大带宽。此后,只有当队列的填充阈值低于最高阈值并且指示其超出其最大带宽规定的标记复位时,该队列才能得到调度器802的服务。
最大率计量机制808用来指示为端口规定的最大带宽已经被超出。当最大的总带宽已经被超出时,最大率计量机制808的运行方式和计量机制806a-806h一样。根据本发明的实施例,基于队列和端口的最大计量机制通常影响队列804和端口是否包含到调度裁决中。这样,最大率计量器对调度器802仅仅有通信流限制效果。
另一方面,基于业务队列804的最小计量与调度器802之间有复杂的相互作用。在本发明的实施例中,调度器802被设定支持多种调度规则,这些规则模仿加权公平排队方案的带宽共享能力。加权公平排队方案是基于公平排队方案数据包的加权版。公平排队方案定义为“基于位轮流(bit-based roundrobin)”调度数据包的方法。这样,调度器802基于数据包的到达时间(delivery time)对数据包进行调度让其通过出站端口。数据包的到达时间是假设调度器能提供基于位轮流服务的情况下计算的。相关的加权字段对调度器如何使用最小计量机制的规定产生影响。其中,调度器试图提供最小带宽保证。
在本发明的一个实施例中,最小带宽保证是相对的带宽保证,其中,相关字段决定调度器802把最小带宽计量设置当作相对还是当作绝对带宽保证。如果相关字段被设定了,调度器就把最小带宽806的设定当作相对带宽标准,然后试图提供相对带宽,该相对带宽与积压的队列804共享。
根据本发明的实施例,如图9所示,网络设备利用簿记存储器900。簿记存储器链接数据包的报头和报尾,因此,从数据包的报头获取的信息能够存储并供以后使用。很显然,这需要额外的存储器查找操作。簿记存储器900被分割到每个端口区901,因此,每个端口都有自己的簿记存储器部分。图9中显示了12个端口部分,簿记存储器的分割是随网络设备的端口数而定的。图中还显示了数据包报头到达时的写入、数据包报尾到达时的读出。
根据实施例,簿记存储器用上述的包标识符作为进入簿记存储器的地址。数据包ID与数据包一起传输,并按源端口数量和增加的计数值分成等级。由于数据包都规定有包ID,并且基于端口号,包ID被用作簿记存储器的索引以查找指定给该数据包的入口。因此,当从数据包的报头确定一值后,存储该值供以后使用在报尾上,当接收到报尾并确定没有出现CRC错误。
使用簿记存储器的好处之一体现在是在上述的计量过程中。当包到达时,能够基于包目前的状态、字段和寄存器的状态来初步确定包的颜色。但是,只有包的报尾到达之后,计数器才会更新。如上所述,基于包的颜色,桶的消耗基于包长度。当接收到包之后需要确定包的颜色,因为如果包是巨帧,消耗的数量将是不同的。但是,根据包最前面的64k位就能确定包的颜色了,并根据该颜色确定是否消耗桶。这样,收到包后,就不用进行另外的存储器查找了。
簿记存储器另外一个作用体现在L2查找过程和获悉阶段。在数据包的报头,可以做出L2转发决定,但是地址只能当知晓包的CRC正确时,在数据包的报尾才能获悉。在该L2获悉过程中,关键信息被存储到散列入口地址(hashentry address),因为存储器的访问需要包的报头,所以包的源地址能够从散列入站地址中获悉。正因为此,当包的报尾被接收时,这一地址保存了冗余的存储器访问,如果该地址没有被记录下来,这些存储器访问是不可避免的。
虽然以上介绍了簿记存储器的两个例子,但本发明不受此限制。簿记存储器可以应用于由网络设备实施的任何处理中,其中,一旦接收到包的报尾,从包的报头获得的信息就可用于处理该数据包。
预先获悉数据包报头的值,随后在报尾对这些值激活,还可以节省存储器的带宽。当数据包达到网络设备时,就产生了一个L2路由判定。地址的读取通常要求4次存储器访问操作。从包的报头读取目标地址以决定目的地;从包的报头读取源地址以判断其是否安全。此后,一旦接收到包的报尾,读取源地址以决定散列入口地址以获悉该入口,写入源地址以修正散列入站获悉该包的地址。
本发明顾及了带宽的保持。为了便于保持带宽,图10a中所示的L2查找表被分成两部分。把入口分成了与报头相关的信息1010和与报尾相关的信息1020。通过下面将讨论的处理和上述的簿记存储器的作用,存储器的访问次数从四减少到三。
图10b中示出了该处理。列1031是被访问的存储器的部分,1032和1033是与存储器相关的读写操作。从两个存储器中读取目标地址以确定目标,从两个存储器中读取源地址以判断其是否安全,读取散列入口地址以获悉该入口。同样,与包的报头相关的信息被写入到关键(key)存储器部分中。同时,对于相同的访问,报尾信息,来自前一个数据包的报尾信息Wx也写入存储器。
又,如1033所示,即时包的报尾信息被随后的存储器写操作写入。这样,对于每个包来说只需要三次存储器访问操作而不是传统的四次。表面看来省了一次存储去访问操作是微不足道的,但是因为每个包就省一次,这样下来,节省下来的带宽是相当可观的。
另外,上面对获悉L2的存储器带宽保存预获悉处理进行了讨论。实际上,这种处理能应用到包含存储器访问的其它处理中,也能用于获悉多点传送表入口或者获悉VLAN地址。
以上通过具体实施例对本发明进行了讨论。然而,在保持其部分或全部优点的情况下,显然可以对所描述的实施例进行其它的变化或修改。因此,在本发明范围和实质基础上进行的修改和变化,都落入本发明的权利要求范围。
本专利申请要求美国专利申请号为60/653,957、申请日为2005年2月18的专利申请的优先权,并在本申请中全文引用该美国专利申请。
权利要求
1.一种在数据网络中处理数据的网络设备,包括端口接口,该端口接口与多个端口通信,用于从数据网络中接收数据包并将处理后的数据包发送到数据网络中;存储器访问单元,该存储器访问单元与所述端口接口及具有至少一个表的存储器通信;其中,存储器访问单元设置如下当端口接口接收到数据包的报头时,从所述至少一个表中读取至少一个与所述数据包相关的数值,当端口接口接收到前一个数据包的报尾时,并在读取了所述至少一个数值后,将另一个数值存储到所述至少一个表中。
2.根据权利要求1所述的网络设备,其特征在于,所述至少一个表中的每一个入口都分为与报头相关的部分和与报尾相关的部分。
3.根据权利要求1所述的网络设备,其特征在于,所述存储器访问单元先存储后接收到的数据包的报头随后存储前一数据包的报尾数值。
4.根据权利要求1所述的网络设备,其特征在于,所述至少一个表包括第二层地址表,作为第二层地址获悉过程的一部分,存储器访问单元将数值存储到该第二层地址表中并从中取回数值。
5.一种在网络设备中处理数据的方法,包括以下步骤在多个端口中的一个端口接收数据包;当所述端口接收到数据包的报头时,从存储器的至少一个表中读取至少一个与该数据包有关的数值;在所述至少一个数值已经读取之后,当所述端口接收到前一个数据包的报尾时,将另外一个数值存储到该至少一个表中。
6.根据权利要求5所述的方法,其特征在于,存储另外一个数值到该至少一个表中的步骤包括将报头数值存储到该至少一个表的入口的报头相关部分;将报尾数值存储到该至少一个表的入口的报尾相关部分。
7.根据权利要求5所述的方法,其特征在于,所述报头数值从所述数据包中获得,所述报尾数值从前一个数据包中获得。
8.一种处理数据的网络设备,包括用于在多个端口中的一个端口上接收数据包的端口装置;当所述端口接收到数据包的报头时,从存储器的至少一个表中读取至少一个与该数据包有关的数值的读取装置;在所述至少一个数值已经读取之后,当所述端口接收到前一个数据包的报尾时,将另外一个数值存储到该至少一个表中的存储装置。
9.根据权利要求8所述的网络设备,其特征在于,所述存储装置包括用于将报头数值存储到该至少一个表的入口的报头相关部分以及将报尾数值存储到该至少一个表的入口的报尾相关部分的装置。
10.根据权利要求8所述的网络设备,其特征在于,所述存储装置设置如下先存储后接收到的数据包的报头随后存储前一数据包的报尾数值。
全文摘要
本发明涉及一种在数据网络中处理数据的网络设备。该设备包括端口接口和存储器访问单元,端口接口与多个端口通信,用于从数据网络中接收数据包并把处理后的数据包发送到数据网络中;存储器访问单元与端口接口及具有至少一个表的存储器通信。当端口接口接收到数据包的报头时,存储器访问单元从该至少一个表中读取一个与该数据包相关的至少一个值;当端口接口接收到前一个数据包的报尾时,存储器访问单元在读取了该至少一个数值后,存储另外一个数值到该至少一个表中。
文档编号H04L12/56GK1822568SQ20061000418
公开日2006年8月23日 申请日期2006年2月20日 优先权日2005年2月18日
发明者布兰登·卡尔·史密斯, 曹军 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1