有效处理通信流量的系统和方法

文档序号:7636584阅读:339来源:国知局

专利名称::有效处理通信流量的系统和方法
技术领域
:本发明涉及一种用于有效通信流量处理的系统和方法,特别涉及一种将通信流量按预定的总线流量宽度重排并将选择的流量类型区分优先次序的交换系统和方法。
背景技术
:IP网上语音(VoIP)在本领域里众所周知,且已经证明其用于通信是非常有用和节省成本的。但是,一些用户发现VoIP质量达不到他们的期望或要求。特别地,延迟和抖动是VoIP最主要的问题。另外,VoIP的安全性也是一个令人担心的问题。由于没有身份验证给VoIP用户,使用各种知名黑客系统就可以轻易地窃听和回放VoIP用户之间的谈话。而且,尽管开发了一些软件用来减少延迟和抖动,但当VoIP流量增加时,语音质量并不能得到保证。当前技术提供一定接口用于在一个通信系统里交换数据信息包。例如,在美国专利6,668,297中Karr等披露了一个接口,通过POS(SONET上的数据包)实施,将物理层(PHY)设备互连到链接层设备。但是,这个接口设计在多信道系统里只有较低的吞吐量。另外,这个接口设计通常是为普通数据传送而设计,并不能为传送语音通信而提供有效途径。因此,需要提供一种系统和方法用于有效且安全地处理和传输语音通信。发明概述此处披露了一种数据处理方法。本方法包括以下步骤接收初始数据宽度窄于或等于预定数据宽度的流量;重排接收到的流量到预定数据宽度的总线流量里;识别总线流量内的一个特别流量;处理总线流量;给予特别流量的优先权次序优于总线流量里的其它流量;并依照优先次序的结果输出总线流量。而且,此处披露了一种用于数据处理的系统。本系统包括一个电路用于接收并重排一个初始数据宽度窄于或等于预定数据宽度的流量到所述预定数据宽度的总线流量;一个电路用于辨认总线流量里一个特别流量;一个处理器用于处理重排的总线流量;和一个电路用于给予特别流量以优先权次序优于总线流量里其它流量。再者,此处披露了一种用于安全帧传输的设备。本设备包括一个接收电路用于接收帧;和一个入口处理器用于处理帧以确定是否进一步处理此帧。依照本发明披露的一个实施例将流量重排到一个预定总线流量数据宽度,以确保在多信道系统里的高吞吐量。另外,依照本发明披露的一个实施例将一个特别类型的流量(如语音)从其它普通数据流量区分出来,并提供优先权来传输此特别流量。再者,由于VoIP用户是由网络验证和授权,VoIP通话的安全性得以保证,且通话不会被泛滥或传播给其他用户。所以,本发明提供一种有效且安全的语音流量处理和传输的系统和方法。图l是描述本发明一个实施例的总体构造的方框示意图。图2是描述如图1所示的本发明相同实施例的总体过程的流程图。图3是一个可以实施所述方案的通用计算机的方框示意图。图4是描述如图1所述的转发芯片模块的方框示意图。图5是描述如图1所述的排队芯片模块的方框示意图。图6是表示存储控制器的方框示意图。图7是图1MUX芯片140的结构方框示意图。图8是图1DEMUX芯片190的结构方框示意图。图9显示由图1转发芯片150处理的Ethernet和IP帧格式。图10是在具体端口上的Ethernet帧的每个区段上执行处理的流程图。图11是图4入口处理模块420的功能流程示意图。图12显示一个端口表格存储器的组织结构。图13显示一个VLAN属性表格的格式。图14显示一个生成树表格的格式。图15是2层转发功能的流程图。图16是一个学习过程的流程图。图17是一个时效过程的流程图。图18显示一个时效表格的编码。0027]图19显示学习FIFO寄存器的格式。图20是2层和3层转发技术的流程图。图21是一个RFC1812硬件里进行单播工P转发的流程图。图22是IP头检验过程的流程图。图23是IP头校验和过程的流程图。图24是ira地址査找过程的流程图。图25是转发更新过程的流程图。图26是转发输出过程的流程示意图。图27显示分类输入项字段的格式。图28是一个由CAM执行过程的流程图。图29是下一跳功能的流程图。图30是下一跳模块过程的流程图。图31显示SRAM里的2层、3层,和流程分类输入项以及在外部SRAM里下一跳表格内的对应输入项之间的关系。图32显示Ethernet帧头里将被替换的字段。图33显示L2NHInfo和L3NHInfo表格里的输入项格式。图34显示在FCNInfo表格里的输入项格式。图35是多播处理功能的流程图。图36是多播数据队列处理功能的流程图。图37显示一个控制头的格式。图38显示MHdrFIFO的输入项格式。图39显示多播控制RAM的输入项格式。图40是描述缓冲和排队过程的方框示意图。图41是表示出站排队过程的方框示意图。图42是表示缓冲工D自由列表的方框示意图。图43是表示输入-输出头和输入-输出尾表格的表格格式的方框示意图。图44是表示自由头寄存器和自由尾寄存器的方框示意图。图45是表示per-flow排队的头和尾缓冲区ID表格的方框示意图。图46是表示使用链接列表的头和尾流队列的方框示意图。图47是表示使用链接列表的头和尾流队列的方框示意图。图48是表示每个-端口-类别-子类队列-长度计数表格格式的方框示意图。图49是表示积压流链接列表的数据结构的方框示意图。图50是表示积压流链接列表的头和尾FlowID表格的方框示意图。图51是表示形成积压FlowID环的数据结构的方框示意图。图52是表示积压端口-类别位图表格的方框示意图。图53是表示积压端口-类别子类位图表格的方框示意图。图54是表示流-端口-类别-子类表格的方框示意图。图55是表示队列长度高阈值表格的方框示意图。图56是表示队列长度低阈值表格的方框示意图。图57是表示队列管理器SRAM存储器映射表格的方框示意图。图58是表示分层式修改加权轮转调度实施的示意图。图59是表示时隙配置表格的方框示意图。图60是表示类别权重表格的方框示意图。图61是表示类别WRR计数表格的方框示意图。图62是表示WRR合适端口类别-位图表格的方框示意图。图63是表示之前被调度的类别表格的方框示意图。图64是表示子类权重表格的方框示意图。图65是表示子类WRR计数表格的方框示意图。图66是表示WRR合适端口-类别子类-位图表格的方框示意图。图67是表示之前被调度的子类表格的方框示意图。发明详述在此,为了便于描述,请参考任何一个或多个附图里的步骤和/或特征,那些具有相同参考数字的步骤和/或特征具有相同的功能或操作,除非出现相反的指示。此处披露了一种交换系统和方法,用于重排通信流量到一个预定总线流量宽度。在此描述的一个实施例里,预定总线宽度是64比特宽。如此所述,宽度窄于或等于64比特的数据被定义为在1比特和64比特之间的任何数据宽度,包括但不限于l、2、4、8、16、32和64比特数据。但是,本领域有经验的技术人员将会理解,使用不同于64比特包括但不限于8、16、32或128比特的总线流量宽度,可以等同地实施本发明的实施例,而不会偏离本发明的精神和范围。综述以下是依照本发明描述本方法和系统的一个具体应用。参考图l和图2,它们分别描述用于流量处理的本系统和方法。图1显示依照本发明披露的一个实施例的整体系统构造100。系统100接收流量105、125。流量首先经过物理层(PHY)芯片110、120,然后行进到媒介访问控制(MAC)芯片130。通常,流量105、125包括语音流量和其它普通数据流量。在这个特别实施例里,流量105、125通常具有一个窄于或等于64比特的数据宽度。但是,实际总线宽度将依照特定应用的不同而不同。所示系统100有48个快速以太网(FE)端口110和4个万兆以太网(GE)端口120,因而总计52个端口可用于接收流量105、125。在所示实施例里,FE端口110接收流量105,而GE端口120接收流量125。FE端口110和GE端口120被双工链接连接到MAC芯片130。相应地,MAC130最好是一个快速以太网MAC和万兆以太网MAC。第一电路140,通常是如图1所示的MUX芯片140,被连接到MAC芯片130。MUX芯片140发送控制信号到MAC芯片130以控制在MUX芯片140和MAC芯片130之间的流量。如前所述,这个实施例的流量通常包括语音流量和数据宽度窄于或等于64比特的其它普通数据流量。当而X芯片140接收到来自MAC芯片130的流量时,MUX芯片140重排此流量成预定宽度(在此例子里是64比特)的总线流量,并在所述总线流量内识别出一个特定类型的流量,如语音流量。例如,在一个实施例里,MUX芯片140在虚拟LAN(VLANID)里使用语音设备识别器,以在存储器内形成一个表格,从而识别此通信流量的源/端口,并相应地编排数据的优先次序。MUX芯片140如何重排和区分语音流量的更多细节将在以下描述。第二电路150,通常是如图l所示的转发芯片150,被连接到MUX芯片140以从MUX芯片140接收重排过的总线流量。转发芯片150执行第二和第三层入口处理,有关细节将在以下描述,重点参考图4。第三电路170,通常是如图1所示的排队芯片170,其被连接到转发芯片150以从转发芯片150接收被处理过的流量。排队芯片170从其它普通流量识别出一个选择的流量类型,如语音,并进一步编排所选择流量的次序优于其它普通流量。特别地,排队芯片170重新整理流量并首先输出所选择的流量,同时存储其它普通数据流量在一个与排队芯片170连接的缓冲区180里。排队芯片170如何编排流量优先次序的细节将在以下描述,重点参考图5。在转发芯片150转发处理过的流量到排队芯片170之前,有可能增加新特征到此流量。相应地,系统100包括一个扩展/处理器接口模块160。选择出的流量被转发芯片150提交给扩展/处理器接口模块160。在一个例子里,扩展/处理器接口模块160利用一个软件程序来配置和改变流量的数据头。在另一个例子里,用户可能发现,对一个特别应用而言,在流量被传递到排队芯片170之前,可以很方便地利用扩展/处理器接口160对流量执行进一步处理,或执行流量特定信息的验证检查。扩展/处理器接口模块160在执行任何要求的处理之后,将转发通信流量到排队芯片170。第四电路190,通常是如图1所示的DEMUX芯片190,其被连接到排队芯片170。如前所述,来自排队芯片170的流量现在是一个预定宽度的总线流量,是一个被MUX芯片140处理后的结果。在这个例子里,总线流量是64比特,相应地,DEMUX芯片190从排队芯片170接收64比特流量,并拆分64比特流量到一个对应初始流量105、125的数据宽度。DEMUX芯片190如何拆分64比特流量到初始数据宽度的有关细节将在以下描述。DEMUX芯片190传递被拆分的流量到MAC芯片130,以便传输到FE端口110和GE端口120。图2是一个由图1系统100执行的方法步骤的流程图200。图2的210到270中的每个步骤对应参考图1以上所述的电路功能。本方法开始于BEGIN步骤205,然后到步骤210,其对应于MUX芯片140接收具有数据宽度窄于或等于预定总线流量数据宽度的流量。如有关图1的以上所述,这个特别例子的预定总线流量数据宽度是64比特,但其它数据宽度可以被等同地使用。控制行进到步骤220,其中MUX芯片140重排接收到的流量成一个64比特的数据宽度流量。控制行进到步骤230,其中MUX芯片140在64比特流量里识别出一个特定类型的流量。控制从步骤230行进到步骤240,其中转发芯片150处理此64比特流量。随后,控制行进到步骤250,其中排队芯片170和缓冲区180编排此特定流量的次序优于其它64比特的流量,并在步骤260依照优先次序结果输出此64比特的流量。控制从步骤260行进到步骤270,其中DEMUX芯片190拆分此64比特的流量到初始数据宽度,并传输此流量回到MAC芯片130,然后依次传递到PHY芯片110、120。控制行进到END步骤280,本方法结束。本发明具有一定的优点。例如,所有通信流量被重排成预定数据宽度的总线流量,从而流量处理率被显著提高,以确保在多信道系统里的高吞吐量。另外,本发明将选择出的流量从其它普通数据流量区分开来,并提供优先权以传输此选择出的流量。在此例子里,语音流量被选择出来以享有优先权,VoIP的延迟被显著降低,且能够提高语音质量。另外,由于VoIP用户是由网络验证和授权,VoIP通话的安全性得以保证,且通话不会被泛滥或广播到任何其他用户。所以,本发明提供了一种有效且安全的语音流量处理和传输的系统和方法。依照本发明的一个实施例,以下是一个在先前技术方法上处理性能改善的例子。通常使用软件的VoIP处理延迟大概是2G0、sec(微秒),使用软件的VoIP处理的吞吐量高达500Mbps。对比而言,依照本发明的一个实施例,VoIP流量的硬件协助处理可以有l、sec或更短的处理延迟。具体地,假设时钟频率是80MHz,且大约需要10个流水线(pipeline)来处理一个64字节帧,在一个8时钟周期流水线里的处理延迟仅是1、sec。如果时钟频率是100MHz,处理延迟是800nsec(纳秒)。而且,如果时钟频率是160MHz,处理延迟是500nsec。因此,依照本发明的处理延迟比先前技术的方法更短。而且,依照本发明的一个实施例,VoIP处理的吞吐量可以高达14Gbps,它比使用软件获得的吞吐量高28倍。另外,由于排队芯片170和缓冲区180,还可以获得进一步的改善。例如,本发明的一个实施例提供会话之间的流量隔离、单个会话的带宽分配、和一个固定低VoIP的流量延迟,而先前技术的软件方法不能提供这样的性能。本发明的实施例可以被应用在不同接口上,用于在通信系统里交换数据信息包。例如,在美国专利6,668,297里Karr等披露的通过一个POS(SONET上的数据包)实施的将物理层(PHY)设备互连到链接层设备的接口已经被成功实施在MUX芯片140和DEMUX芯片190上以增强语音质量。在本领域有经验的技术人员的知识范围内,对MUX芯片140和DEMUX芯片190的设计作出较小改变之后,本发明可以被等同地应用到PCI接口、PCMCIA接口、USB接口和CARDBUS接口等。本发明将依照某些首选实施例被详细描述。为了完整且清晰地描述本发明的细节,某些描述性的名字将被赋予给各种组成部分。本领域有经验的技术人员应该理解,这些描述性术语只是被用来提供一种方式来容易地识别说明书里的组成部分,而不是限制本发明到特定描述。例如,尽管以上披露特别提供优先权给语音流量,但本发明也能够提供优先权给其它类型的流量,如用于增强视频传输质量的视频流量。另外,尽管以上披露特别指定Vo工P,但重排流量成预定总线数据宽度以提高流量处理率的芯片和方法可以被用于其它通信系统,包括控制和编排数据的优先次序用于家庭用具。另外一个例子,在以上实施例里描述的64比特流量转发和处理可以通过一个64比特总线或一个双时钟频率的32比特总线执行。所以,可以作出许多这样的修改,而不会偏离本发明的精神和范围。MUX芯片图7是一个图1中MUX芯片140构造的模块示意图。如以上图1所述,MUX芯片140从MAC芯片130接收流量,重排此流量成一个预定数据宽度的总线流量,并在所述总线流量里识别出一个特定类型的流量,如语音流量。图7显示MUX芯片140从MAC芯片130接收流量705。流量705是以POS-PHY2级接口(PP2Rx)总线(在此例子里是16比特宽)和系统信息包3级接口(SPI3Rx)总线(在此例子里是32比特宽)的格式呈现。在所示实施例里,PP2Rx总线是3.3V,LVTTL,50MHz,SDR,而SPI3Rx总线是3.3V,LVTTL,125MHz,SDR。特别地,来自PP2Rx总线的流量比特705a…705f被提交给一系列相应的PP2Rx接收模块710...710f。类似地,来自SPI3Rx总线的流量比特710a...710d被提交给一系列相应的接收模块720a...720d。在所示实施例里,MUX芯片140同时兼容SPI3和PP2的接口标准。但是,本领域有经验的技术人员应该容易理解,也可以同样使用其它通信标准接口。而且,图7所示的实施例有10个总线通道705a...705f和705g...705j。其它实施例可以同样地使用更多或更少的总线通道,并不偏离本发明的精神和范围。各个PP2Rx接收模块710a...710f各自运行作为一个总线控制器,将来自外部POS-PHY/2级(PP2Rx)总线的流量解码成具有预定数据宽度(在此例子里是64比特)的数据总线,并提交一个64比特的输出到一系列相应的PKTFIFO模块715a...715f。这6个PP2Rx接收模块710a...710f各自提供-8个通道,总计达到图1的48个FE端口.110。每个PKTFIFO.模块715a...715f运行作为一个缓冲区用于从PP2Rx接收模块710a...710f接收数据包,并提交一个64比特的输出到一个多路复用器730。各个SPI3Rx接收模块720a...720d各自运行作为一个总线控制器,将来自外部SPI3(SPI3Rx)总线的流量解码成预定数据宽度的总线流量。在这个例子里,预定总线流量是64比特宽,所以每个SPI3Rx接收模块720a...720d提交一个64比特的输出到一系列相应的PKTFIFO模块725a...725d。这4个SPI3Rx接收模块720a...720d对应图1的4个GE端口120。每个PKTFIFO模块725a...725d运行作为一个缓冲区用于从SP工3Rx接收模块720a...720d接收数据包,并提交一个64比特的输出到多路复用器730。多路复用器730从这10个PKTFIFO模块715a...715f和725a...725d中的每个模块接收64比特输入,并多路复用传iI这10个信道的数据到正确的FIFO信道里HDRFIFO和CHUNKFIFO,以产生(i)一个16比特的输出到一个HDRFIFO模块735,和(ii)一个64比特的输出到一个CHUNKFIFO模块740。HDRFIFO模块735缓冲头信息,并提交一个16比特的输出到一个发送器(XMTR)模块750。CHUNKFIFO模块740缓冲数据并提交一个64比特的输出到这个发送器(XMTR)模块750。发送器模块750产生一个头信息760和数据(DAT)770再被提交到转发芯片150。如上所示,可以同样实施不同的总线流量宽度,并不偏离本发明的精神和范围。因此,MUX芯片140利用PP2Rx接收模块710a...710f和SPI3Rx接收模块720a...720d来将进入的以太网流量解码成64比特数据,其被存储在PKTFIFO模块715a...715f和725a..725d内。MUX芯片140多路复用数据到HDRFIFO735和ChunkFIFO740里。然后,发送器模块750编排头信息和块(chunk)成一个XMT协议的流量760和77(V在所示实施例里,输出是1.8V,HSTL,133MHz,DDR。PKTFIFO的大小是512(地址)x64比特,臓FIFO的大小是128(地址)x16比特,以及CHUNKFIFO的大小是512(地址)x64比特。本领域有经验的技术人员将会理解,可以同样使用其它流量宽度、信息包大小和电压,而不会偏离本发明的精神和范围。转发芯片存发餅-娜图4是一个表示图1转发芯片(FCHIP)150的模块示意图。转发芯片150在一个接收(RCV)模块410上从MUX芯片140接收一个来自预定数据宽度的总线流量的帧405。特别地,RCV模块410通过分析帧头预处理此帧来确定此帧的帧头有效性。如果帧头字段是错误的,该帧将被丢弃。否则,RCV模块410传递此帧到一个入口(ingress)处理器420以确定是否对此帧执行进一步的处理。RCV模块也被连接到CPU/DMA接口415,其提供一个双工链接465到转发芯片150外部的一个中央处理单元(CPU)。此CPU/DMA接口415提供一个直接存储器存取(DMA)通信信道在扩展/处理器接口模块160和排队芯片170之间。典型地,入口处理器420为一个特别帧分配一个VLANID。此VLANID是从一个头VLAN标记、默认端口ID里挑选出来的,或通过一个关联源MAC地址被分类成一个语音VLAN。更具体地,入口处理器420设置VLANID并被配置给VoiceVID,并进一步为VoiceVID设置X2比特以避免帧泛滥。VocieVID和X2随后将在说明书里被详细描述。或者,入口处理器420记录被授权用户的MAC地址到一个硬件寄存器内。在整个过程里使用被分配的VLANID。由于VLANID对一个特别帧是唯一的,入口处理器420能够使用VLANID来识别用户是否被授权,在LAN内未被授权的用户是不能访问这个特别的VLANID。所以,仅有授权用户能够访问网络,而其他用户不能听到授权用户之间的谈话。入口处理器420也能够确定是否以第2层或第3层实体转发此帧。如果帧被确定为是第2层实体,入口处理器420输出一个入口处理帧424到第2层处理器430以引导入口处理帧到一个正确端口以避免帧泛滥。第2层处理器430提交一个入口处理帧432到下一跳处理器460。或者,如果帧被确定为是第3层实体,入口处理器420输出一个入口处理帧426到一个第3层处理器440以引导入口处理帧到一个正确端口。第3层处理器440提交一个入口处理帧442到下一跳处理器460。在其它情况下,如当头信息被确定为是第4层、第5层、第7层等,入口处理器420输出一个入口处理帧422到一个流分类电路450,以通过匹配帧的头字段将此帧分类成一个流。流分类电路450提交一个入口处理帧452到下一跳处理器460。流分类单元450也被连接到一个内容可寻址存储器(CAM)接口455,其从FCHIP150提供一个双工连接475到一个CAM模块,这在图中未显示。下一跳处理器460确定一个接收帧452、432或442的控制帧头修改和帧输出。下一跳处理器460转发帧到一个多播处理器470以输出此帧。多播处理器470通过一个传输(XFER)模块480输出此帧。转发芯片150的输出是一个帧495。下一跳处理器460也被连接到一个SRAM接口445,其从FCHIP150提供一个双工连接到一个静态随机存储器(SRAM)模块。而且,RCV模块410连接到一个FFIF0模块425,其随后连接到下一跳处理器460。綠餅祭遂转发芯片150处理核心是对从MUX芯片140接收到的每个帧执行第2层、第3层和第4层(流)处理。在所述应用里,帧是一个以太网帧。通过检査帧头并随后确定此帧的一个输出决定,转发芯片150执行转发功能。帧的头字段也可以被修改用于第3层转发,包括但不限于如,生存时间(TTL)递减、区分服务代码点(DSCP)标记、和网络地址转换(NAT)的地址和端口替换。一旦转发芯片150作出一个输出决定,帧被转发到排队芯片(QCHIP)170里执行缓冲、排队和调度功能。排队芯片170可以被一个现场可编程门阵列(FPGA)来执行实现。帧以64字节区段从MAC模块130传输到头-处理模块,对应图4的入口处理模块420。头处理是在一个来自输入端口的帧的第一区段上被触发,例如一个以太网帧的起始位。头处理的结果是一个包含FlowID的输出决定。此FlowID值以每一个输入端口为基础被存储,以头信息被增加到相同输入端口的每个64字节帧区段。流分类模块450利用此Flow工D值给每个信息包映射分配正确的输出端口和优先权。此FlowID值也被用来将此帧分类成正确的流量类别和子类用于调度。此FlowID值通过SRAM接口445、485被存储在SRAM内。—旦执行了头处理,多播和输出处理模块470产生一个输出决定。此输出决定被存储在一个外部存储器内(图中未显示),并被用来标记来自相同端口的帧的所有后续区段的头(直到帧指示结束)。因此,所有这些区段被转发到相同的输出端口。微芯#-必麟遂转发芯片150对每个以太网帧执行第2层、第3层和第4层(流)处理。处理包括检查帧头并作出帧输出决定的转发功能,可以改变第2层、第3层和第4层头的头修改功能(例如TTL递减,DSCP标记,NAT的地址和端口替换),和流处理功能(例如校正、RTP监控、信息包统计)。一旦已经执行了输出决定、头修改和流处理功能,帧被转发到在QCHIP芯片170里执行缓冲、排队和调度功能。表1显示在文档剩余部分的帧处理描述里使用的标头缩写。表1<table>tableseeoriginaldocumentpage22</column></row><table>图9显示转发芯片150处理的Ethernet和IP帧的格式900。在一个实施例里,可以使用一个现场可编程门阵列(FPGA)来实现转发芯片150。图IO是一个在一个指定端口上对以太网帧的每个区段执行处理的流程图1000。处理在歩骤1005上开始,然后行进到决策步骤1010,其确定是否处理一个信息包起始位(SOP)。如果处理SOP,控制行进到步骤1040以提取头字段。控制行进到步骤1045以进行入口处理,然后行进到决策步骤1050,其确定是否丢弃正被处理的帧。如果此帧将被丢弃,控制行进到步骤1055,丢弃帧并结束处理。但是,如果在步骤1050上帧未被丢弃,控制行进到下一个决策步骤1060。决策步骤1060确定帧是否将被发送到一个中央处理单元(CPU)。如果帧将被发送到CPU,控制行进到步骤1065,发送帧到CPU。如果在步骤1060上帧未被发送到CPU,控制以并行方式行进到步骤1070和1090。决策步骤1070确定是否执行第3层转发和第3层启动。如果执行第3层转发和第3层启动,控制行进到步骤1075以执行第3层转发,接着过程结束。但是,'如果在步骤1070上没有执行第3层转发和第3层启动,控制行进到步骤1080以执行第2层转发。与决策步骤1070并行,决策步骤1090上确定是否启动流处理。如果启动流处理,控制行进到步骤1095以执行流处理,接着过程结束。但是,如果在步骤1090上没有启东流处理,控制行进到End步骤1035,过程结束。回到步骤1010,如果没有处理信息包起始位(S0P),控制行进到决策步骤1015,其确定是否处理信息包终止位(E0P)。如果处理E0P,控制行进到决策步骤1020,其确定帧循环冗余校验(CRC)是否等于一个计算的CRC。如果是的话,控制行进到步骤1025。回到步骤1015,如果不处理EOP,控制直接行进到步骤1025。步骤1025使用一个当前^^口输出决定,增加FlowID和控制头。控制从步骤1025行进到End步骤1035。回到步骤1020,如果帧CRC不等于计算的CRC,控制从步骤1020行进到步骤1030,在传递控制到End步骤1035之前,增加FlowID和一个丢弃指示。[0111]转发过程包括入口处理功能,接着是第2层和第3层转发功能,然后是流处理功能。注意到信息包可以由第2层或第3层处理转发,但不能同时通过这两个处理转发。但是,流处理功能可以被应用到所有信息包(第2层和第3层转发的)。流处理功能可以修改第2层和第3层转发决策,并可以导致信息包被重新指向不同端口、优先权和队列或用于信息包软件处理。第2层和第3层转发决策的输出包括用于处理帧头的FlowID和控制信息(如替换源工P地址,目标IP地址等),和需要更新的信息字段。存发芯#-乂/7必潘入口处理模块420执行多种预处理功能,包括分析帧头和检查头以确保信息包头是有效的。入口处理模块420通过一个64比特的数据总线连接到RCV模块410,传输帧区段和控制信号(如PORTID、S0P、EOP和ERR控制信号)。在这个实施例里,假设所有以太网帧是VLAN标记格式用于入口处理功能。在一个SOP指示上,第2层头字段(DA、SAP、PT、VID、PRI)和第3层头字段(DIP、SIP、HL、FRAG、PROT)是从帧区段里提取的。然后,头字段被用来执行第2层和第3层头检查以确保帧头的完整性。如果获知头字段是错误的,在开始头处理之前丢弃此帧。如果帧包括需要转发到处理器以作进一步处理的第2层或第3层头字段,对此帧设置toCPU字段,并禁止正常的第2层或第3层转发。除了确定特定案例之外,入口处理模块420对一个特别帧分配VLANID-VLANID是从一个头VLAN标记、默认端口ID选择出来,或通过一个关联的源MAC地址被分类成一个语音VLAN。分配的VLANID被用于在转发过程的其余部分里执行的处理和查询。帧入口处理也确定入站帧是否以第2层或第3层实体而被转发。这是通过首先检查以确保帧有一个0x800的以太网协议类型(PT)、然后比较帧的目标MAC地址(DA)和路由器MAC地址(RMAC)而实现。如果这些MAC地址(和VLANID)匹配的话,使用IP转发算法,帧被转发。如果MAC地址不匹配,对此帧使用第2层(802.1D/Q)基于网桥的转发。图11是一个由入口处理模块420执行的方法1100的流程图。方法1100开始于步骤1105,接收信息包头、输入端口标识符、SOP和EOP。控制从步骤1105行进到步骤1110,从接收到的参数获得头信息、端口ID、VLANID、和生成树ID。控制从步骤1110行进到步骤1120,执行第2层生成树和端口验证。控制行进到步骤1130以执行第2层转发入口检査,并随后行进到步骤1140进行第2层、第3层、第4层的转发检査。控制行进到End步骤1150,并输出信息包头字段、端口ID、SOP、EOP、Drop、toCPU变量、L2Forward、L3Forward、L4Forward、禾口L2Learn。微芯#-雜微1.T進klD索引输入端口工D数据中继线组ID(TrunkGroupID)大小64x6比特7>7/7^/"表格包括在输入端口和中继线组之间的映射。在转发过程里的基于输入端口ID上的所有操作被有关中继线组ID优先执行。默认地,TrunkID表格最好是输入端口ID和中继线组ID之间的1对1映射。当配置一个中继线时,在中继线组里的最低物理端口号使用中继线组ID。2.VL扁emberMap索弓l:VLANID数据成员端口映射(MemberPortMap)大小256x64比特VLA丽emberMap表格保留交换系统100的VLAN到端口的连接关系。一个VLANID索引指向这个表格。数据以位元映射(bitmap)格式被存储在这个表格里。如果对应端口的比特被设置成1,端口是在VLAN上被寄存。这个表格被用来滤除无效的入站帧,并使帧的多播泛滥成为可能。3.SpanningTreeID索引VLANID数据生成树(ST)大小256x3比特5^/Mi/^7ree/"表格存储VLAN到生成树映射。表格是在多个生成树支持的情况下要求的。在此所述的实施例里,交换最多支持8个生成树。生成树的最大数目可能依照特定应用的不同而不同。4.ForwardMap索弓l:ST工D数据转发端口映射(ForwardingPortMap)大小8x64比特/^r附2Y/ife/包括控制比特,其显示端口是否在由生成树协议软件确定的转发模式上。这个表格被生成树ID索引,且每个位置包括每个端口的转发状态的位元映射。5.LearnMap索弓l:ST工D数据学习端口映射(LearningPortM即)大小8x64比特i:朋27^Sp包括控制比特,其显示端口是否在由生成树协议软件确定的学习模式上。生成树ID索引这个表格,且每个位置包括每个端口的学习状态的位元映射。6.體AC索引VLANID数据路由器MAC地址大小49比特7細C表格包括VLANID到路由器MAC地址的映射。对每个入站帧而言,VLANID被确定,并对照这个表格里的对应位置的路由器MAC地址检査DA。如果地址匹配的话,信息包被指定该IP路由引擎。7.AuthPortMap大小64比特^W力A^^/sp是在系统里每个端口的授权状态的位元映射。如果802.lx在端口上是有效的,这个比特的状态是由这个协议确定,否则系统管理员配置这个比特。8.DefaultPortVID索引端口ID数据VLANID大小64x12比特Zfe/ai/h尸oj^K/""表格包括未标记信息包被分配到的默认VLANID。端口ID被使用作为这个表格的索引,且存储器位置包括这个端口的默认VID。默认优先权在这个表格里也被指定。9.AuthMAC索引端口ID数据區C地址大小64x49比特A/仏始c表格包括使用802.lx验证的端口的授权MAC地址。当一个802.lx授权端口被配置作为单机端口时,验证主机的MAC地址被写到这个表格里。这样锁定这个端口,使仅被授权的终端主机能够通过这个端口发送或接收信息包。10.VoiceMAC索引端口ID数据MAC地址大小64x49比特P^'ce船c表格包括与输入端口连接的IP电话的MAC地址。当端口接收一个具有VoiceMac地址作为其源地址的信息包时,信息包被看作一个被授权的MAC地址,并通过这个端口被转发。11.VoiceVID索引端口工D数据VLANID大小64x16比特f^'ceP7"表格指定VLANID分配给任何包括VoiceMac作为其源地址的帧。这样允许交换始终如一地交换引导所有的语音信息包。这个表格也允许对这些信息包分配802.lp优先权。12.AFT大小64比特可接受的帧类型"/T)寄存器是一个位元映射,指定是否应该从当前端口接受被标记的VLAN帧。位元映射里的0值显示仅有未被标记的帧将从端口被接受,1值显示在端口上将允许被标记的和未被标记的帧。,30]13.X2索弓l:VLAN工D数据X2VLAN大小256x1比特X表格被用来实施一个专有VLAN,其中未知泛滥或传播帧是禁止的。X2VLAN也禁止帧的路由,仅当如果帧在相同的VLAN上且存在目标MAC地址的一个输入项,或如果对帧的第4层转发设置了合适的流处理输入项时,帧才被交换。14.MulticastIndex索弓l:VLANID数据丽ndex大小256x9比特M/7"csWT/7ofer表格被用来作为在入站VLAN工D和出站多播表格索引之间的映射。这个索引被用于未知的第2层转发帧(例如,如果在CAM里帧的目标MAC地址不是匹配的)。这个字段的MSB被设置成1,以显示这个值已经由软件写入。如果索引未被初始化,VLANID被用来作为W/72c/^r用于表格l.端口表格图12显示一个端口表格存储器1200的组织结构。端口表格1200包括以上所述的帧头的入口处理所要求的端口属性。端口表格存储器通过端口表格地址和数据寄存器可以进入CPU。2.VLAN表格图13显示一个VLAN属性表格1300的格式。VLAN表格1300通过VLAN表格地址和数据寄存器可以进入CPU。3.生成树表格生成树表格包括8个不同生成树IDs的转发和学习信息。屑14显示一个生成树表格1400的格式。转发第2层转发过程执行以太网信息包基于802.1Q的转发所要求的处理歩骤。第2层转发功能的目标是引导具有认识到的MAC地址的流量到正确的输出端口,从而避免帧泛滥到所有端口。图15是第2层转发功能1500的流程图。第2层(L2)转发功能1500在步骤1510上开始,然后行进到CAMSearchL2步骤1520。如果基于帧头行使L2转发功能,CAMSearchL2步骤1520对一个匹配当前帧的目标MAC地址和VLANID的第2层输入项执行搜索外部内容寻址存储器(CAM)。—个匹配信号显示CAM搜索是成功的,这个从步骤1520返回的匹配信号必须由L2Age表格的状态证明是匹配的索引,以确保输入项不在被删除的过程里。如果L2Match(匹配)信号和L2Index(索引)是有效的,L2Age输入项就是有效的。搜索返回的索引值指定了转发信息表格里的位置,转发信息表格包括L2输入项的转发信息。这个索引被用来从外部SRAM存储器取回FlowID,其指定帧应该被转发到的端口。控制从步骤1520行进到决策步骤1530。决策步骤1530确定匹配信号是否是正的以及时效过程是否已经达到一个预定的时效阈值,在这个例中其显示为L2Age[CAMIndex]〉6。如果是的话,控制行进到步骤1550,设置L2Match等于1和L2Index等于CAMIndex。然后,控制行进到输出步骤1560。回到步骤1530,如果不是的话,控制行进到歩骤1540,其设置L2Match等于0。然后,控制行进到输出步骤1560。输出歩骤1560输出L2Match和L2Index,然后传递控制到End步骤1570。本领域有经验的技术人员将会理解,这个预定的时效阈值是可变的,并且根据实施例应用的不同而不同。学习(Learning)第2层处理也必须执行源MAC地址和VLAN的学习。学习过程的功能如下1.在6"0尸和L^esr"的指示上,在CAM里搜索源MAC地址和VLANID。如果发现没有匹配的,源MAC地址(48比特)、VLANID(8比特)和中继线组ID(6比特)被写入到一个Z朋27FIF0。如果发现有匹配的,MatchIndex(匹配索引,12比特)被作为下一跳SRAM的一个索引,且源MAC地址(48比特)、VLANID(8比特)和中继线组ID(6比特)被写入到SRAM。匹配索引也被用来将Z^4ge表格里的对应输入项更新成来自时效寄存器的当前值,并设置有效的比特。2.在一个非活跃的时隙上,读取Z朋i77FIF0(如果不是空的)的头,并连同源MAC地址和VLANID作为数据字段发出一个学习CAM命令。学习命令在CAM里的下一个自由地址上写入数据,并返回与这个地址相关联的索引值。这个学习索引(12-比特)被作为地址以写入源MAC地址(48比特),VLANID(8比特)和中继线组ID(6比特)到下一跳SRAM。学习索引也被使用将L2Age表格里的对应输入项更新成来自时效寄存器的当前值,并设置有效的比特。图16是当L^eara有效时的学习过程1600的流程图。过程1600在L2Learning歩骤1605上开始,然后行进到CAMSearch步骤1610,其在内容可寻址存储器(CAM)内搜索源MAC地址和VLAN丄D。控制从歩骤1610行进到决策歩骤1615,其确定在源MAC地址和VLANID之间是否有一个匹配。如果存在匹配,控制行进到步骤1620,处理数据。特别地,步骤1620读取一个匹配索引,其将被作为到下一跳SRAM的一个索引,并写入源MAC地址、VLANID和中继线组ID到SRAM。而且,这个匹配索引将L2Age表格里的对应输入项更新成来自时效寄存器的当前值(数据二时效+8)。控制从步骤1630行进到End步骤1645,学习过程1600结束。回到步骤1615,如果没有匹配,控制从歩骤1615行进到决策歩骤1625,其确定学习FIFO队列是否是满的。如果FIFO队列是满的,控制行进到End步骤1645,过程1600结束。但是,如果FIFO队列在步骤1625上不是满的,控制从步骤1625行进到1630。步骤1630写到学习FIFO队列,并设置源MAC地址、VLANID、中继线ID、和时效作为数据字段。控制从步骤1630行进到决策步骤1635,其确定是否有一个空闲时隙。如果没有空闲时隙,控制递归返回到步骤1635,直到有一个空闲时隙。如果在步骤1635上有一个空闲时隙,控制行进到步骤1640,步骤1640读取学习FIFO队列的头,并使用源MAC地址和VLANID作为参数发出一个CAMLearn(学习)命令。这个CAMLearn命令在C雄里的下一个可用的自由地址上写入数据,并返回一个与这个地址相关联的索引值。然后,学习索引被作为一个地址用于写入源MAC地址、VLANID和中继线ID的值到下一跳SRAM。学习索引也被用来更新L2Age表格里的一个对应输入项。控制从步骤1640行进到End步骤1645,过程1600结束。时效(Aging)时效过程的功能是当输入项时效达到一个高于时效寄存器里的时效数值时从CAM地址表格删除第2层MAC输入项。这意味着具有一个对应给定输入项的源MAC地址的Ethernet帧没有在此输入项时效期间内进行交换。一个软件进程在等于由交换配置指定的时效时间V8th的间隔上更新3-比特时效寄存器。图17是一个时效过程1700的流程图。时效过程包括两个主要操作(i)基于时效寄存器的当前值无效L2Age输入项;(ii)当有一个空闲时隙时从CAM删除时效的输入项。时效过程1700在步骤1705上开始,然后行进到步骤1710,其读取L2Age表格的一个当前索引,并获得Valid(有效)值和AgeVal值的数据。控制行进到决策歩骤1715,其确定读取的数据是否等于Oxl,且是否有空闲时隙。AgeVal值存储时效值。如果AgeVal等于Oxl,时效值是在其初始值上。如果不是的话,控制行进到决策步骤1725,其确定Valid数据值是否是正的,且AgeVal值是否等于当前时效值+l。如果是的话,控制行进到步骤1735,使用索引写入L2Age表格,并设置数据为Oxl。然后,控制行进到End步骤1740。回到步骤1715,如果是的话,控制行进到步骤1720,其使用当前索引写入CAM,并设置数据等于0x2。控制从步骤1720行进到步骤1730,其以幅度l递增当前的索引,然后行进到步骤1735。回到步骤1725,如果不是的话,控制行进到步骤1730以递增索引。回到步骤1710,并行路径处理从步骤1710行进到歩骤1720以递增索引。寄存器和表格l.时效寄存器时效寄存器是一个3比特字段,当学习或更新第2层MAC输入项时,其指定被写入到L2Age表格的当前时间。时效寄存器最好通过一个软件进程在一个等于MAC地址时效时间的l/8th的间隔上被更新。2.L2Age表格L2Age表格包括8192个输入项,每个输入项对应CAM里的一个索引,CAM包含一个第2层输入项。在L2Age表格里的每个输入项包括4-比特。图18显示L2Age表格1800的编码。在初始时,所有L2Age输入项被设置成0以显示没有输入项对应CAM里的索引。当一个MAC地址在CAM里被学习时,Valid(有效)比特被设置成1,且时效寄存器的值被写入到L2Age表格输入项。当输入项超过时效时,Valid比特被设置成0,且State(状态)字被设置成l以显示CAM输入项可以被改写。当CAM输入项被清除时,State字被设置成2。3.学习FIFO(LearnFIFO)学习FIFO包括将被存储的数据,直到有可利用的时隙被写到CAM和下一跳SRAM。学习FIFO是一个有512个输入项的36_比特FIFO,只要有空闲时隙,其能够存储将被学习的256个MAC地址。学习FIFO输入项包括(源)MAC地址和VLAN工D、输入中继线ID和当前时效值。图19显示学习FIFO寄存器1900的格式。-第3y^OT^存发L3(第3层)处理功能包括一个IP路由器所要求的转发功能。图20是一个结合L2和L3转发技术的简化流程图2000。流程图2000在BEGIN步骤2005上开始,然后行进到步骤2010,读取帧以获取目标MAC地址(DA)、目标IP地址(DIP)和VLANID(VID)。控制行进到决策歩骤2015,其确定DA是否等于在路由器MAC地址(RMAC)表格的索引V工D上的输入项。如果不等于的话,控制行进到结束步骤2020以进行第2层处理。如果在步骤2015上DA等于在RMAC表格的索引VID上的输入项,控制行进到决策步骤2025,其确定IP地址是否是本地的。如果IP地址是本地的,控制行进到另一个决策歩骤2035。决策步骤2035确定地址是否在CAM里。如果地址是在CAM里,控制行进到步骤2040以进行第3层处理。然后,控制行进到End歩骤2050,过程结束。回到步骤2025,如果IP地址不是本地的,控制行进到结束步骤2030,其发送帧到CPU。回到步骤2035,如果地址不在CAM里,控制行进到结束步骤2030以发送帧到CPU。以上所述的有关图20的方法假设交换保留IP网络地址的路由表格。这些表格被用来确定被指定到路由器的IP帧的下一跳IP和MAC地址。IP转发算法图21是在RFC1812的硬件里进行单播IP转发的流程图2100,其提供IP版本4路由器要求。RFC1812描述每个操作的相关部分如图21里的圆括号所示。由于IP选项处理和互联网控制信息协议(ICMP)生成通常是由软件执行,为了清楚起见,这些操作不在流程图里显示。流程图2100在步骤2105上开始,然后行进到步骤2110,读取一个IP头。控制行进到步骤2115验证IP头,随后行进到步骤2120转发一个决策。控制行进到步骤2125验证下一跳,然后步骤2130减少一个TTL计数器。控制行进到步骤2135连接层地址。下一个步骤2140转发帧到端口,然后过程2100在End步骤2145上结束。对于多播转发,需要额外的检査。特别地,源地址被检查以确保接收信息包的接口就是被用来转发信息包到源的接口。这个过程也可被看作是一个反向路径转发检查。在一个实施例里,多播路由是由软件执行,而多播传送是由硬件执行。第3层功能第3层硬件特征1.支持基于类别的路由和支持可变长度子网掩码。2.支持TTL递减和增量头校验和计算。3.支持基于区分服务(DiffServ)的服务质量(QoS)。第3层功能被分为以下功能:*IP头校验-验证IP头字段是合法的,且头可以由硬件转发处理。*IP校验和-计算IP头的校验和,并验证被插入到帧头里的校验和与这个数值匹配。*IP地址査寻-IP地址查寻的算法足够灵活,能够支持有限数目的可变长度网络前缀,或也能够被用于基于类别的路由。*IP输出-执行增量头校验和的计算和基于IP协议项的流量类别分类,然后转发帧到合适的输出端口。寄存器和表格l.端口IP转发禁止(PortIPFDisl[31:0],PortlPFDis2[31:0])这些寄存器被用来启动或禁止任何端口的IP转发操作。0值代表启动,1值代表禁止。2.3层状态和控制寄存器(L3SCR[31:0])寄存器包含3层转发过程的控制比特。这个寄存器里的比特接通或断开转发信息包到CPU。它包括3层头校验失败的头和没有路由在表格里的帧。功能流程图在以下流程图里,假设己经执行了校验以确保发给3层处理的帧包含路由器MAC地址(对VLAN)作为目标區C地址。对所有其它的帧,执行2层802.1Q处理。图22是一个工P头检查过程2200的流程图。过程2200在步骤2205上开始,然后行进到步骤2210,读取帧以获取目标MAC地址(DA)、IP头长度(HL)、工nP0RTID、工P版本VER、和TTL。然后,控制行进到决策步骤2215,其确定帧是否是一个IP帧。如果在歩骤2215上互联网协议类型(PT)等于0x800,且显示协议类型是互联网协议CIP),控制进行到下一个决策步骤2220。决策步骤2220检查IP选项,且如果IP头长度HL等于0x5,控制行进到另一个决策步骤2225。HL等于0x5表示没有选项出现。决策步骤2225检査IP版本,如果VER等于0x4,从而表示帧是IPv4,控制行进到决策步骤2230,检査TTL是否期满。如果在决策步骤2230上TTL大于Oxl,控制行进到步骤2235以执行拒绝服务(DoS)检查。控制从步骤2235行进到结束步骤2250以执行IP地址查寻。回到决策步骤2215,如果当检查IP帧时PT不等于0x800,控制行进到步骤2240,设置变量toCPU等于1。然后,控制行进到结束步骤2245执行IP转发。回到决策步骤2220,如果IP选项是那些HL不等于0x5的项,如上所述,控制行进到步骤2240。类似地,如果在步骤2225,当检查IP版本时,VER不等于0x4,控制也行进到步骤2240。在类似情况下,如果在步骤2230上当检査TTL是否期满时,TTL不大于Oxl,控制行进到步骤2240。IP头校验执行IP头字段的验证,以便确定硬件里的IP处理是否是可行的,并丢弃非法的IP帧。对IP头验证,将进行以下检査1.帧的协议类型使Ox800(IP)吗?-如果协议类型不是IP,帧被转发到CPU端口。这样允许相同的MAC地址与软件里采用的其它协议一起使用。2.头等长度使等于Ox05(32比特)字吗?-如果IP头不包含IP选项(如源路由),头的大小应该总是10个16-比特字。如果出现IP选项,帧被发送到软件作适当处理。如果头长度小于0x05,帧也可以被软件丢弃。3.IP版本项是Ox4吗?IPv4有一个版本号4。如果版本号是5(ST-I1)或6(IPv6),处理是在软件里进行,另外信息包将被丢弃。4.帧的TTL值等于Ox1或Ox0吗?具有TTL值0或1的帧不应该被转发。但是,这些帧也不应该被丢弃,因为ICMP的时间超过消息可以被发送到帧的最初发送端。因此,这些帧被转发到CPU端口。5.拒绝服务防卫检测6.数据报长度太短7.帧有碎片8.源IP地址=目标IP地址(LAND攻击)9.源IP地址是子网广播地址10.源IP地址不是单播地址11.源IP地址是一个环回地址(loop-backaddress)12.目标IP地址是一个环回地址13.目标地址不是一个有效的单播或多播地址(martian火星地址)在头字段被检查之后,路由IP帧到正确的输出端口是通过IP地址査寻和转发来执行的。图23是一个IP头校验和过程2300的流程图。过程2300在步骤2305上开始,然后行进到步骤2310,设置头阵列的第一元素,HEADER[O],合并IP版本、IP头链接、和生成树信息、(VER&HL&ST)。控制行进到步骤2315,设置索引i等于0。然后,控制行进到步骤2355,设置校验和等于当前校验和加上索引i的当前值指定的头阵列内容。然后,增加索引i。控制从步骤2355行进到决策步骤2320,其确定索引i是否小于10。如果索引j'小于10,控制返回到步骤2355。但是,如果在歩骤2320上索引i不小于10,控制从歩骤2320行进到歩骤2325。步骤2325设置Carry(进位)等于一个远大于16的校验和,并设置校验和(CKSUM)等于Carry(进位)加(CKSUM&OxFFFF)。控制从歩骤2325行进到歩骤2330,设置Carry等于一个远大于16的校验和,然后赋值校验和(CKSUM)等于Carry力口(CKSUM&OxFFFF)。控制从步骤2330行进到决策步骤2335,其确定校验和是否等于0xFFFF。如果等于的话,控制行进到结束步骤2345执行IP地址查寻。如果在步骤2335上校验和不等于0xFFFF,控制行进到2340,设置Drop标记等于1。控制从步骤2340行进到结束步骤2350执行IP转发。头起始位是在IP版本字段(VER)上。校验和算法如下使用20-比特加法,获得IP帧头的首10个16-比特字的总和。使用17-比特加法,获得比特[19:16](进位比特)和比特[15:0]的总和。*比特16被增加到比特[15:0]以获得最终的校验和。杏如果这个总和的求反(complement)等于0,校验和是有效的。7"尸縱査寻图24是一个IP地址査寻过程2400的流程图,其在步骤2405上开始。控制行进到步骤2410,读取目标IP地址(DIP)、源工P地址(SIP)、和端口。控制行进到步骤2420,确定是否有一个无效的前缀地址,DIP(31:24)〉二240。如果是的话,控制行进到步骤2460,设置Drop标记等于1。控制从步骤2460行进到结束IP转发步骤2470。返回到步骤2420,如果DIP(31:24)不大于或等于240,控制行进到步骤2430,使用DIP、S工P和端口执行CAMSearchL3功能。控制行进到另一个决策步骤2440,确定是否有一个匹配。如果没有匹配的话,控制行进到歩骤2460设置Drop等于1。但是,如果在歩骤2440上有匹配,控制行进到步骤2450,设置3层匹配指数等于1,并设置3层指数等于CAMIndex。然后,控制从步骤2450行进到结束步骤2470执行IP转发。地址查寻返回一个到下一跳SRAM的指针,其包括下一跳(路由器或主机)MAC地址、TrunkID、和VID。CAMSearchL3功能返回一个索引,指向在CAM里的目标IP地址的首个匹配。IP地址包括网络前缀和主机号码。网络前缀可以是从1到32比特的任何长度,主机号码是IP地址的其余部分。对一个给定的IP地址而言,在CAM里可以有输入项,是用于匹配目标IP地址的多个网络前缀。IPv4路由器要求(RFC1812)规定,必须使用最长长度网络前缀匹配一个给定的IP地址,以便转发IP帧到正确的下一跳。这个无类别査询要求与已被广泛使用在互联网上的基于类别的寻址完全相反。在基于类别的寻址里,IP地址的首4个比特确定用于IP地址的掩码,以便进行CAM查寻。子网概念将此扩展到两个可能被潜在使用的掩码中的一个最大值。此处描述的实施例使用三态CAM(ternaryCAM),以便确定最长长度匹配。为了进行这个搜索,C旭里的输入项一直增加,从而使较长前缀的路由器总是比较短前缀的路由器存储在一个更低索引的存储器位置。由于CAM将返回存储器里的首个匹配给一个特别IP地址,这个匹配将被保证是IP地址的最长前缀路由匹配。为了简化IP表格管理,对每个前缀最好预订存储器位置的一个区块,从而可以插入输入项,而不会弄乱(shuffling)CAM里的IP路由前缀输入项。在CAM里具有相同前缀长度路由器的输入项顺序是不重要的。这个特性可以被用来实施一个较快的重整(reshuffling),即便是前缀用完了存储器位置。当CAM搜索不产生任何匹配时,帧被丢弃。如果有一个匹配,CAM搜索将返回此匹配的索引。这个索引被用于下一跳模块以获得下一跳MAC、TrunkID和VID。这些数值是从外部SRAM里的转发信息存储器读取。綠棘图25是一个转发更新过程2500的流程图,其在步骤2505上开始。控制行进到初始决策步骤2510,其确定一个变量toCPU是否等于1或Drop标记是否等于1。如果是的话,控制行进到一个输出转发决策步骤2540,过程结束。但是,如果在步骤2510上的答案是否定的,控制行进到步骤2520。步骤2520设置一个临时变量(tmp)等于头校验和(HC)加1。然后,头校验和被设置等于(tmp&OxFFFF)+(t即》16)。TTL计数器是递减的。控制从步骤2520行进到步骤2530,设置一个Etheraent优先权变量(Pri)为生成树ST[8:6]以设置端口映射的优先权,其中ST[8:6]对应图14里ST1…ST8地址中的一个地址。控制从步骤2530行进到输出转发决策步骤2540。IP处理的最后阶段要求递减TTL和更新IP头校验和。当以幅度l递减TTL时,增量头校验和操作是初始校验和增加1。如果设置了Carry进位比特,必须检査进位比特并将其增加到校验和。如果信息包将被丢弃或转发到CPU,不需要进行TTL递减。綠微图26是一个转发输出过程2600的流程图。过程2600在歩骤2605上开始,并行进到步骤2610输出一个转发决策。特别地,步骤2610输出参数L3Match、L3Index、TTL、HC、drop、PRI、和ToCPU。控制从步骤2610行进到End步骤2620,过程结束。3层转发输出生成^i/7ofex,作为输出被用于确定输出FlowID、下一跳目标MAC地址和V工D。新的TTL和HC也被输出,并被用来更新帧的头字段。絲微-魔分微缀微器流分类模块450对2层或IP帧的头字段、甚至包括传输层文件标头执行匹配操作。这个操作将任何与这些字段匹配的信息包分类成一个流。流分类操作产生或不产生一个匹配。在有匹配的情况下,返回一个索引并被转发到下一跳模块460作进一步处理。在没有匹配的情况下,分类不返回一个索引,且信息包也不被分类成一个流。流分类模块执行的处理步骤要点如下1.如果W尸、^s7S^C禾Qh/尸(/T二二0朋仍信号是活跃的,目标IP地址、源IP地址、源端口、目标端口、输入端口、TOS、SYN和ACK字段被用来执行一个相对于CAM里流分类输入项的128-比特搜索操作。7T7Qfer和ife&力状态信号被传递到下一跳模块。2.另外,如果5ZF和A/尸(/T二二做W)信号是活跃的,目标MAC地址、目标IP地址、源端口和目标端口被用来执行一个在CAM里2层分类字段的128-比特搜索。CAM控制器返回T/7o^和i^c力信号。3.如果6YF和i'siP信号不是活跃的,不需要执行流分类搜索。流分类模块也对2层和3层头查寻执行CAM搜索操作,并以流水线方式将这些操作进行排序。CAM控制器CAM控制器为外部CAM执行流水线操作。CAM被用来存储以太网MAC地址、IP路由前缀和流分类输入项。在这个实施例里,使用一个能够存储最大32K72-比特输入项或16K144-比特输入项或以4KB幅度递增的72-比特和144-比特输入项的任何组合的1Mb三态CAM。三态CAM包括CAM里每个输入项的一个掩码,也包括能够被用来在全局基础上进行搜索操作的全局掩码寄存器。当对于一个输入项,设置一个掩码比特为0时,CAM搜索将对应的比特看作"不考虑",并不会去比较那个比特和搜索数据以确定是否已经产生一个匹配。CAM输入项的四个类型是2层输入项、3层输入项(IP路由器)、2层分类输入项和流分类输入项。图27显示分类输入项字段的格式。CAM里每个输入项类型的格式如图27所示。搜索操作是在72-比特区段(对2层/3层搜索)或144-比特区段(对流程/2层分类)里执行的。这些区段最好是在系统启动时被配置,从而搜索操作将仅匹配相关CAM输入项。1-比特类型字段被用来区分2层和3层输入项以及2层分类输入项和流分类输入项。2层输入项2702包括72比特,T二0。2层输入项包括目标MAC地址2705(48比特);VID2710(8比特);未使用的部分2715(14比特);T字段2720(1比特)、和V字段2725(1比特)。3层输入项2704包括72比特,T二l。3层输入项包括源IP地址2730(32比特);端口标识符2735(6比特);目标IP前缀2740(32比特);T字段2745(1比特)、和V字段2750(1比特)。2层分类输入项2706包括144比特,T二Ol。2层分类输入项包括源端口2755(16比特);目标端口2760(16比特);V工D2765(8比特);目标MAC地址2770(48比特);未使用的部分2775(16比特);端口标识符2780(6比特);目标IP前缀2785(32比特);和T字段2790(2比特)。流分类输入项2708包括144比特,T=ll。流分类输入项包括源端口2782(16比特);目标端口2784(16比特);V工D2786(8比特);PR0T字段2788(8比特);T0S字段2792(6比特);SYN字段2794(1比特);ACK字段2796(1比特);未使用的部分2708(16比特);源IP地址2772(32比特);端口标识符2774(6比特);目标IP前缀2776(32比特);和T字段2790(2比特)。基于每个时隙的控制信号,CAM控制器将搜索和写入操作排序到CAM。CAM控制器执行的过程如图28所示。CAM控制器基于来自2层和3层转发模块的控制信号,执行2层和3层搜索。然后,执行流分类搜索,最后也可以执行可选的CPU访问(或源地址学习访问)。图28是CAM控制器操作2800的流程图。过程2800在步骤2805上开始,然后行进到初始决策步骤2810,确定是否需要CAMSearchL2(2层搜索)和CAMSearchL3(3层搜索)。如果不需要的话,控制行进到另一个决策步骤2840,确定是否需要CPU。如果CPU是必需的,控制行进到步骤2850,执行一个写入/搜索命令,并设置Comparand为CPU数据。Comparand是被用来比较CPU数据和学习请求。如果在决策步骤2840上CPU不是必需的,控制行进到另一个决策步骤2845,确定是否需要学习。如果学习是必需的,控制行进到结束步骤2855,执行一个学习命令并设置Comparand为学习FIFO,如果学习不是必需的,控制流程结束。回到步骤2810,如果需要的话,控制行进到决策步骤2815,确定CAMSearchL3是否是必需的。如果是的话,控制行进到步骤2830,执行CAMSearchL3并设置Comparand为SIP、Trunk、和DIP。然后,控制行进到步骤2835'执行CAMSearchL3Flow命令,并设置Co即arand为SIP、DIP、SP、DP、SYN、APK、T0S、TRUNK、和PR0T。控制从步骤2835行进到决策步骤2840以确定进一歩的CPU处理是否是必需的。回到歩骤2815,如果CAMSearchL3不是必需的,控制行进到步骤2820,执行一个CAMSearchL2命令,并设置Co即arand为DMAC、V工D。控制行进到步骤2825,其执行CAMSearchL2Flow命令,并设置Co即arand为DIP、SP、DP、DMAC、VID和TRUNK。寄存器l.CAM命令寄存器CAM命令寄存器被用来执行CAM阵列的写入和搜索操作。CAM命令寄存器包括一个被用来访问三态CAM阵列以读取和写入输入项的13-比特CAM地址和指定是否要执行特别操作的控制比特。这种特别操作可以包括但不限于,例如写入一个掩码字和删除一个掩码输入项。CPU可以使用的典型指令有-在地址位置上写入数据-在地址位置上写入掩码-在地址位置无效输入项-比较三态CAM和comparand寄存器里的数据并返回索引写入到命令寄存器会触发将要执行的操作。在发出命令之前,与指令相关联的数据最好被存储在数据寄存器里。2.CAM数据寄存器CAM数据寄存器被用来将数据和掩码字写入到三态CAM。对一个写入操作,这些寄存器内的数据被用作写入到一个位置里的数据,对一个读取操作,CAM里的数据被返回到这些寄存器里。3.CAM控制和状态寄存器CAM控制和状态寄存器被用来控制通过处理器的CAM操作。指示完成CAM初始化操作的状态比特和CAM的CAM状态标记(全满标记、匹配标记等)被保留在这个寄存器里。綠芯#-r一凝必谬下一跳功能是以流水线方式执行的,从而每8时钟周期处理一个新的帧头决定。这种实施确保处理速度与64字节帧的入站最大信息包到达率匹配。下一跳处理模块460负责确定帧的最终输出决策,并控制帧头修改。下一跳处理步骤的综述如下。基于2层、3层和流分类匹配信号,从一个外部SRAM存储器读取转发信息。转发信息被用来确定输出流和新帧头。接着,基于一个被分配给当前流的PolicingID,对信息包执行policing(监管)和DiffServ(区分服务)操作。如果信息包不被丢弃,执行头字段替换、帧区段复制和转发区段到CPU,正如输出决策所要求的一样。最后,多播控制模块按照需要复制帧区段,并在转发帧区段到QCHIP之前增加正确的头控制比特用于帧缓冲和排队。图29是一个下一跳模块功能2900的流程图。过程2900在步骤2905上开始,然后行进到分类査询步骤2910。控制行进到信息查询步骤2920,然后分成三个平行的流。首个平行流从步骤2920行进到2层处理步骤2930。2层处理步骤使用学习、未知帧、多播帧、和链路汇聚。控制从步骤2930行进到步骤2960。第二平行流从步骤2920行进到3层处理步骤2940,其使用TTL更新和下一跳MAC。控制从步骤2940行进至步骤2960。第三平行处理流从步骤2920行进到步骤2950,在控制行进到2960之前,其使用会话头和帧统计执行会话处理。步骤2960执行监管和区分服务处理,然后控制行进到步骤2970执行头替换之前。控制行进到步骤2980进行多播和输出控制,然后行进到End步骤2990结束。图30是下一跳转发过程3000的流程图。过程3000在步骤3005上开始,然后控制行进到决策步骤3010,确定是否有一个分类指数(CI)匹配。如果有一个CI匹配,控制行进到步骤3015,通过读取下一跳SRAM(NHSRAM):地址是CIndex,数据是CType和CNHIndex而获得分类信息。控制从步骤3015行进到决策步骤3020,确定是否有一个许可证。如果没有许可证,控制行进至另一个决策步骤3025,确定是否需要重新定向。如果需要的话,控制从步骤3025行进到步骤3030以获得下一跳信息。步骤3030读取下一跳SRAM(NHSRAM):地址是NHID,读取的数据是FlowID、MAC、VID、SIP、DIP、SP、DP、和CTRL。控制从步骤3030行进到步骤3070,输出转发信息。转发信息包括FlowID、头字段、控制信息、Dr叩、和未知/多播(UM)比特。控制从步骤3070行进到End步骤3075。返回到步骤3025,如果没有重新定向,控制行进至Drop步骤3035,其设置Drop等于l,然后控制行进到转发信息输出步骤3070。返回到步骤3020,如果有许可证,控制行进到决策步骤3040。返回到步骤3010,如果没有CI匹配,控制行进到决策歩骤3040。决策步骤3040确定是否有2层转发。如果有2层转发,控制行进到决策步骤3050,确定是否有一个2层匹配。如果没有2层匹配,控制从步骤3050行进到步骤3055,设置未知/多播(UM)比特等于1。控制从步骤3055行进到转发信息输出步骤3070。如果在步骤3050上有一个2层匹配,控制行进到步骤3060,获得下一跳信息。步骤3060读取NHSR雄地址是L2Index,数据是UM和FlowID。控制从步骤3060行进到转发信息输出步骤3070。返回到决策步骤3040,如果没有2层转发,控制行进到决策步骤3045,其确定是否有一个3层匹配。如果没有3层匹配,控制行进到drop步骤3035,其设置Drop等于l,然后控制行进到转发信息输出步骤3070。但是,如果在步骤3045上有一个3层匹配,控制行进到步骤3065,获得下—跳信息。步骤3065读取NHSRAM:地址是L3Index,数据是UM、FlowID、MAC、和VID。控制从歩骤3065行进到转发信息输出步骤3070。FlowID参数值被用来确定帧应该被转发到的端口。但是,如果设置了未知/多播(UM)比特,FlowID值被使用作在多播和输出处理模块里转发表格内的一个索引。对2层转发的例子而言,当在CAM里没有匹配时(未知帧),FlowID被设置成0,且多播模块通过读取VID的VLANMemberMap表格确定转发端口映射。图31显示在SRAM里2层、3层和流分类输入项和在外部SRAM里下一跳表格内对应输入项之间的关系。CAM里的2层和3层输入项总是有一个对应输入项在NHSRAM表格里(如图31里的L2NHInfo和L3NHInfo所示)。但是,CAM里的流分类输入项不一定有对应的NHInfo输入项(如FCftlCAM输入项所示),除了重新定向(如FCtt2CAM输入项所示)和会话控制输入项的例子之外。流分类输入项在外部SRAM里总是有分类信息输入项(Cinfo),指定了分类输入项类型。下一跳模块的处理步骤如下1.如果流分类产生一个成功匹配(CIMatch是有效的),读取在分类输入项(CIndex[14:0])的下一跳SRAM里的存储器位置。分类输入项可能有以下4种类型a)—个/7e,Af傻嚴多类撒游/f^"⑧输入项,其指定帧是否应该被转发和其应该以什么类别被转发;b)—个cfe/77f否决9输入项,指定帧应该被过滤;c)一个化&'化"f^^7^9输入项,包含到下一跳存储器的一个指针,其指定端口和参数以转发帧;和d)—个M^io;7f会话J输入项,包含到下一跳存储器的指针和规定将被替换头字段的控制比特。2.基于分类输入项类型,采取以下动作。a)对一个per迈it『it力CoS输入项,通过0R,ing(或操作)具有此字段的下一跳/^opt/A使用CIF1owID[13:0]字段(在6T/7/b输入项里)产生一个新/7o,/"。这样被用来产生帧的新服务类别。b)对一个c/e77y输入项,产生一个Drop信号。c)对一个re^'re"输入项,从C7/7/b输入项读取一个新的下一跳索引(CINHID[13:0]),输入项取代由2层和3层匹配操作返回的索引。d)对一个ses^o/7co/^roJ输入项,产生一个新的CINHID[13:0]和CTRL[4:0]字段,其指定下一跳输入项和替换帧头里各种头的控制字段。3.如果对3层转发帧出现一个匹配(L3Match是有效的),执行读取由L3Index指定的位置。这个位置包括3层路由的下一跳输入项(包括目标MAC地址(DMAC)、VLANID(VID)、UM比特和FlowID)。4.如果L2Match是活跃的,执行读取由L2Index指定的位置。这个位置包括确定帧输出端口的FlowID和UM字段。5.当被一个Redirect或5bssio/7Omz^7分类输入项(FCNHInfo输入项)指定时,读取下一跳信息表格是外部下一跳SRAM的最后读取操作。这次读取找回会话信息,包括与下一跳相关联的2层标头(DMAC和VID)和指定输出端口的未知/多播控制比特(UM)禾口流ID(FlowID)。新的IP和传输标头(SIPIndex、DIP、SP、DP)是从NHSRAM读取,且被用于6^^i'朋6b;^2y^输入项,指定修改这些头。SIPIndex被用来从SIPAddr表格里寻找源IP地址。对一个3层转发帧,源MAC地址(SMAC)是从VLAN信息表格读取。—旦从下一跳SRAM获得标头和控制信息,基于FlowID信息执行监管、区分服务和统计处理。下一跳处理的最后步骤包括从FIFO425读取区段以修改帧头,然后发送帧区段到输出模块470。如果帧区段包括SOP,从下一跳外部存储器读取的参数被用来替换2层头用于3层转发。对于4层转发,可以有选择地替换源和/或目标IP地址和源和目标端口。IP帧的TTL和头校验和字段也被替换用于3层转发,且UDP和TCP校验和被修改用于头转换。在SOP上,控制头也被存储在端口的一个内部存储器内,并被使用直到信息包的下一个起始位。对SOP信号不是活跃的帧区段,从存储在内部存储器内的数据增加控制头,但不改变区段数据。区分服务处理和监管Policing(监管)功能采用一个LeakyBucket算法用来监控流和限制它们的速率。1024个监管器中的每个监管器需要一个平均比特率和一个突发长度作为输入参数,并基于这些参数,监管器或者标记或者丢弃不符合预定特征的帧。帧的PoliceID是从DiffServ(区分服务)表格或分类输入项表格里获得。如果通过流分类匹配没有获得PoliceID,PoliceID就从DiffServ表格里获得。基于DiffServ的policing表格使用帧头里一系列的TrunkPortID和DiffServ码点,作为这个表格的一个索引。这个表格包括一个被用作这些帧的监管器的PoliceID、一个指定帧是否应该被标记的概率值,以及一个替换802.lp优先权字段的优先权。—些寄存器和内部存储器控制监管操作。监管状态(policestatus)和控制寄存器(controlregister)、全局规模寄存器(globalscaleregister)、队列长度RAM(queuelengthRAM))、速率RAM(rateRAM)、和阈值RAM(thresholdRAM)控制监管器的基本操作。对一个给定的PoliceID,一个统计RAM计算被标记(或被丢弃)帧的数目。全局规模寄存器是一个16-比特寄存器,其包括在通过所有policeIDs完成一个完整周期之后开始递减过程的一个新周期的延迟值。设置全局规模寄存器为一个除0以外的值可以提高被监管的最大比率,在监管率粒度上也有相应损失。队列长度RAM跟踪每个PoliceID的队列长度。一个监管器索引的队列长度是基于速率RAM里的相应速率值,而递减的。速率RAM表格包括一个16-比特速率字段。设置速率字段为0,避免队列长度计数器的递减。速率字段指定一个队列长度计数器在周期性间隔上递减的值,周期性间隔则由全局规模计数器规定。速率值由32-比特字给定。阈值RAM表格包括阈值,当在信息包起始位上的相同PoliceID的队列长度计数器达到阈值,会导致一个入站信息包被标记或丢弃,且递增统计计数器。另外,阈值RAM表格包括模式比特(modebit),其指定什么时候能够标记/丢弃,什么时候能够统计计数,以及模式是否是丢弃或标记。会话处理会话处理包括执行网络地址转换和端口地址转换(NAT/PAT)、负载均衡、会话监控和统计收集所要求的特征。会话监控的2个主要硬件功能是*头字段替换;和RTP监控和统计。头字段替换会话处理功能如NAT、PAT和服务器负载均衡要求替换源和目标IP地址和/或源和目标端口。替换源和目标端口的功能和传输控制协议(TCP)或用户数据报协议(UDP)是相同的,除了头校验和的位置之外。替换合适的头字段是基于一个特别流所要求的会话处理类型。基于在分类输入项的会话控制类型里的控制字段,将被替换的字段和它们在以太网帧头里的位置如图32所示。使用源IP索引(被存储在NHSRAM里的Info表格里),从源IP地址RAM里获得源IP地址(SIP)作为RAM里的地址。目标IP(DIP)、源端口(SP0RT)、目标端口(DPORT)字段是直接从NHSRAM获得的。使用一个增量头校验和算法,计算IP、TCP和UDP头校验和。TCP和UDP头校验和使用一个包括源和目标IP地址的伪标头。因此,当仅仅替换这些字段时,仍然需要重新计算UDP和TCP校验和。增量头校验和重新计算算法如以下所示。注意到工P、TCP和UDP案例的校验和计算使用求反运算,是在16-比特字上执行,并且都是相同的。1.IP校验和对一个被路由(TTL递减,DSCP标记)的信息包,或当IP地址或传输端口被更新时,执行增量IP校验和计算。给定x,初始字段数值,和x',更新字段数值,更新的校验和计算如下HC'=Hc~~TTL~~TTL'-~TOS-TOS'-~DIP-DIP"-~SIP-SIP'...l)2.TCP和UDP校验和W二7T-"/尸--67P---OT-卿W-57W-…(2)注意到,以上所写的公式是关于可被替换的头字段的逻辑表达式。但是,这些计算是在包括被替换字段的标头里的合适16-比特字上进行。会话监控会话监控功能的目标是提供一个准确的IP电话通话质量的表示。会话监控通常跟踪一个RTP会话(由分类匹配定义)的一个或多个以下参数.-抖动、帧丢失数目、和任何被监控的流所累积的字节数目,如分类输入项里规定的。设计会话监控功能使得仅有UDP和工P流上的RTP被监控,因为在TCP上的流能够重新传输信息包,导致不正确抖动和丢失包数目。l.抖动抖动计算取决于RTP帧里的时间戳和从RTP源产生帧的期望速率。源的速率由RTP档案(RTPprofile)给定,由合适的RFC或由相互协议规定。源的速率在有效负荷档案(profile)里描述为源产生的每秒样本。由于每个源样本通常是以一个独立RTP帧被分组打包和传输,帧的到达时间和包含在帧里的时间戳可以被联合使用以确定网络传输引起的抖动。表2提供抖动计算的定义R源速率(每218个时钟周期的样本)TS(i)包含在RTP帧i里的32-比特时间戳C(i)RTP帧i到达的32-比特时钟值时间戳单位的帧i的转发延迟计算如下:Transit(i)=R*C(i)-TS(i)…(3)在帧i到达时间上计算的累计抖动被计算如下<formula>formulaseeoriginaldocumentpage54</formula>…(4)为了便于存储和获得更好的准确性,等式(3)和(4)被重新记作<formula>formulaseeoriginaldocumentpage54</formula>…(5)以下例子强调抖动监控功能的操作。在RTP帧里为每个有效载荷类型(7-比特)指定参数R。对一个语音编码器的例子,源速率的共同值是每秒8000个样本,或者假设4微秒的时钟周期,R是8388(20C4h)。假设C(l)是FF000000h,即在流里首个帧的到达时间的时钟值,以及包含在首个帧里的时间戳是72h。然后计算并存储以下的值<formula>formulaseeoriginaldocumentpage54</formula>(6)<formula>formulaseeoriginaldocumentpage54</formula>(7)注意到,对首个信息包,抖动必须被设置成0,因为前一个帧的转发时间是未知的。假设下一个信息包在一个FF0003E8h时钟值上到达,并包含一个9Ah的时间戳值。然后计算和存储以下的值<formula>formulaseeoriginaldocumentpage54</formula>(6)<formula>formulaseeoriginaldocumentpage54</formula>(7)注意到在进行这些计算时,应该考虑时钟时间翻转和时间戳翻转的影响。时钟当前MSB可以与前一个样本的MSB进行比较,以确定是否已经发生翻转,并在如果已经发生翻转时作出适当校正。类似方法也可用于时间戳值。2.丢失帧为了计算丢失RTP帧的数目,RTP帧格式提供一个序列号,其能够被用来确定帧是否已经丢失。通常,RTP序列号应该对由源产生的每个帧递增1。但是,对一些源而言,一个源帧被分割成(被碎成)几个RTP帧是可能的。在这个例子里,对连续的RTP帧,序列号将不会增加。为了计算丢失帧的数目,第一个步骤是确定己经发现一个序列的RTP帧。丢失帧计数过程首先检查确保两个按次序的RTP帧被观察到。然后,如果当前帧的RTP序列号不大于前一个帧的存储值,根据在当前序列号和被存储的序列号之间的差值,这个过程递增丢失计数值。如果序列号差值大于一个预定阈值,计数将不再增加,并假设源重新设置序列号为一个新对每个监控的会话流,存储当前序列号(16-比特)和丢失帧的计数(24-比特)。这个计数,结合信息包和字节统计,确定会话丢失率。统计当统计使在下一跳模块状态和控制寄存器里设置比特成为可能时,每个FlowID的信息包和字节计数器被保留。对会话控制分类输入项,在每个输入项基础上而不是在每FlowID基础上保留统计。这样使确定每个会话的一个更准确蓝图成为可能。下一跳存储器外部NHSRAM被分成多个逻辑表格。这个存储器的布局如表3所示表3<table>tableseeoriginaldocumentpage55</column></row><table><table>tableseeoriginaldocumentpage56</column></row><table>1.L2NHInfo和L2NHInfo表格L2NHInfo和L2NHInfo表格位于128Kx72比特下一跳SRAM的首个16K位置内。图33显示这些表格里的输入项格式。一个样本输入项3300包括UM字段3305(1比特)、备用字段3310(1比特)、FlowID3315(14比特)、VID3320(8比特)、和MAC地址3325(48比特)。对2层转发帧,FlowID3315和UM3305字段被用来确定帧应该被转发到的端口。当MAC地址3325被学习时(通过学习过程),MAC地址和VID连同FlowID—起被写入到L2Info字段。对3层转发帧,MAC地址和VID指定替换当前目标MAC地址和VID的下一跳MAC地址和VLANID。2.FC丽nfo表格FCNHInfo表格位于128Kx72比特下一跳SRAM里从16K(0x4000)到48K-1(0xBFFF)的地址位置内。表格包括16KInfo输入项,每个大小为144比特。这些输入项的格式如图34所示。一个样本输入项3400包括UM字段3405(1比特)、Un字段3410(1比特)、FlowID3415(14比特)、VID3420(8比特)、DMAC3425(48比特)、目标IP3430(32比特)、源IP索弓|3435(8比特)、目标端口3440(16比特)、和源端口3445(16比特)。基于会话处理的FCNHInfo输入项可以执行3层路由功能,而不需要要求一个48-比特目标MAC地址(DMAC)和一个也被用来确定输出帧头的源MAC地址的8-比特VLANID的头替换。源IP(SIP)字段是一个256-输入项源IP地址表格(32-比特宽)的索引,在分类表格里的会话控制输入项的控制比特指定帧头里的源IP地址替换时才被使用。类似地,目标IP、源端口和目标端口字段,在会话控制输入项里的控制比特指定这些字段的替换操作时,才被使用。3.Cinfo表格分类信息表格(Cinfo)占用NHSRAM里的地址OxCOOO(49152)上开始的16K位置。表格里的每个输入项是一个36-比特字,其占用NHSRAM里的72-比特字的LSBs(最低有效位),格式如表4所示。表4输入项类型35:3332:28272625:1615:0QoSi午可i正010未使用CIPoEn未使用CIPoIDCIFlowID拒绝100未使用重新定向.110未使用-CIP。En未使用.CIPoIDCINHID-会话控制111CTRLCIPoEn未使用CIPoIDCINHID分类输入项可以是4种类型,如下所示。e/7t/y(^^^^^着,^/",^^^^类型被用来识别分配有给定优先权队列的特别帧。在这个操作过程中,CLFLOWID参数与从下一跳输入项获得的Flow工D—起被或操作。这样允许FlowID被修改,而不会影响下一跳输入项和参数。ZfeA76/7&7^^/《^>1_#卩类型说明帧应该被悄悄地丢弃;不需要参数。e77^^重箭定/^翰A艰J包括一个CLNHID字段,指定将被使用的下一跳,不考虑2层或3层输入项指定的下一跳。在被用来获得转发信息的下一跳表格里,CLNHID指定输入项地址。&5^》/7co/^ro2e/7^yf会话^^煮/^^A^^包括一个CLNH工D和一个CTRL字段作为参数。CLNHID值指定在被用来获得转发信息的下一跳表格里的输入项地址。CTRL字段比特指示在当前帧上将要进行的动作,如以下表5所定义的表5<table>tableseeoriginaldocumentpage58</column></row><table>REPDIP替换目标IP地址字段除了以上所述的操作之外,许可证、重新定向和会话控制输入项也包括一个与每个输入项相关联接的监管器的索引。这个索引指定被分配到分类输入项的监管器(Policer)索引,并能够被用来限制与分类输入项匹配的信息包流速率。Policer可以在基于以下多个变量中的一个变量而被分派指定每个FlowID、每个分类匹配或每个DiffSev码点和输入端口。4.统计计数器基于字节计数的统计计数器是32-比特字段,基于信息包的计数器是24-比特计数器。计数器被存储在NHSRAM的内存库3(SByteCnt)、5(SPktCnt)和6(FByteCnt和FPktCnt)里。基于流的计数器(FByteCnt和FPktCnt)计算所有基于非会话流的信息包数目。如果存在一个被监控的会话控制分类输入项,计数被保留作为会话计数(FByteCnt和FPktCnt)。5.源IP地址(SIP)表格源IP地址表格是一个256x32比特的表格,存储源IP地址,其可以被用来替换在帧头里的入站源IP地址。当由于一个会话控制分类输入项匹配而从下一跳SRAM的FCNHInfo字段读取一个8-比特索引时,访问这个表格。当源IP地址将被替换时,这个索引指定将被使用的表格里的位置。表格里的输入项格式如表6所示<table>tableseeoriginaldocumentpage59</column></row><table>6.区分服务表格DiffServ(区分服务)表格是一个4Kxl8表格,'其规定DiffServ流的Policing(监管)和流控制行为。来自IP头、优先权、延迟、吞吐量、和可靠性字段的6个T0S(服务类型)比特与6-比特输入端口ID连接在一起,并被使用作为DiffServ表格的索引。这个表格里的数据输入项包括4个字段,优先权字段,Pri,概率,Prob,或速率字段和DiffServPoliceID(DSPoID)和PoliceEnable(监管启动)比特,如表7所示。注意到,这个表格分配的优先权与被用作表格索弓1的T0S头比特里的优先权是不同的,尽管使用一个合适的初始化他们能够达成匹配。<table>tableseeoriginaldocumentpage60</column></row><table>DiffServ功能只有当输入信息包是一个IP信息包时且当来自下一跳转发的FlowID小于64时是活跃的。包含在输入项里的优先权字段与FlowID比特8:6被或操作。概率字段被用来确定是否设置了出站控制头里的DiffServDrop比特。如果概率设定是0,将绝对不设置DiffServDrop比特,且如果概率字段是100%或更高,DiffServDrop总是被设置。在这个范围内的任何数目是一个百分概率,其确定DiffServDrop将被设置的可能性。从一个每8个周期从0到99递增的计数器计算概率字段。因此,对背靠背的信息包,概率字段实际上是确定的,但仍然应该有这个比特集合信息包的恰当比率。'基于在默认流的FlowID里的假设项,选择FlowID格式,如以下表8所示<table>tableseeoriginaldocumentpage60</column></row><table>在这个实施例里,表8是基于一个软件定义,而硬件并不限于此,不同于以上所述的基于比特13:9的启动功能是0。当启动DiffServ时,产生一个PoliceID,DSPoID,允许具有给定T0S比特的流量流被分配到Policer。Police启动比特必须被设置为1以使Policer能够响应这个PoID。注意到,分类系统也能够产生一个PoliceID,CIPoID,且它将具有超过DSPoID的优先权。DiffServ表格有4096个输入项,包括64个输入项的64个内存库,而不是总共仅仅是64个输入项。第一内存库对应端口0,第二内存库对应端口l,等等。PoliceID是9比特,从而DiffServ输入项能够被映射到首512个Policer中的任何一个Policer。7.队列长度RAM队列长度RAM包括每个PoliceID的24-比特Qlen(队列长度)计数器(QlenCtr)。提供一个PoliceID地址寄存器(QlenPoIDAdr),其控制下一个Qlen计数器读取的地址。当这个地址寄存器是CPU可读写(RW)时,那么Qlen数据寄存器是只读的(即Qlen计数器不能被CPU设置)。访问QlenCtr的合适途径是在QlenPoIDAdr寄存器里设置计数器地址,并等待直到状态寄存器里的QlenCntGotlt标记被设置了。然后,QlenData寄存器具有有效的计数。当QlenPoIDAdr寄存器被写入或当QlenData寄存器被读取时,QlenCntGotlt标记自动被硬件消除。可以采用以下公式对QlenCntGot工t标记进行设置最坏情况延迟=2*(GlblScale-1024+2)/系统时钟率…(10)由于这个读取延迟,QlenCtr访问主要用于测试和除错。QlenCtr在一个字是4字节的虚拟"队列"里提供字数目。8.速率RAM速率表格是一个lKxl6表格,其包括每个PoliceID的16速率比特。设置数据为0将避免由当前RatePoIdAdr提供的Qlen计数器的递减。速率字段规定在GlblScale计数器指定的一个周期性间隔上QlenCtr递减的值。速率值以字计数。速率RAM的数据格式由以下表9给定。表格9比特15:0功能速率9.阈值薩阈值RAM是一个1Kx18表格,其包括每个PoliceID的阈值。当QlenCtr达到信息包起始位上的这个数值时,信息包被标记或被丢弃,且统计计数器递增。另外,阈值RAM表格包括模式比特,其说明何时能够标记/丢弃、何时能够统计计数、和模式是否是Drop(丢弃)或Mark(标记)。阈值RAM格式由表10提供。在1时,Drop比特设置模式为Dr叩,在0时,设置模式为Mark。在1时,/b分a^)7启动被标记/被丢弃的信息包的监管统计计数,而/bf/7比特启动标记/丢弃信息包。当这个比特被设置成0时,"leakybucket"继续运作。阈值是一个15-比特值,其由帧区段(16个32-比特字)给定。We/7计数器跟踪字计数,但较低的4比特不进行比较。一个7fff的阈值将从不标记或丢弃信息包。一个oooo的阈值将总是标记或丢弃信息包。表10<table>tableseeoriginaldocumentpage62</column></row><table>10.统计RAM统计表格是一个lKxl8表格,其保留被每个PoliceID的转发芯片标记或丢弃的信息包的计数数目。尽管可以在任何时候读取计数,清除时要特别注意,以避免竞争条件。有两个方法可以使用。第一,通过写入o到那个PoID、然后读回计数器以证明计数没有被信息包递增功能改写,计数器被清除。如果在那个特别PoID上有持续的标记,则需要一些试验。第二,对那个PoID关闭PoStatEn比特,位置被清除,然后PoStatEn比特被再次设置回l。1.设置ThresPoIdAdr为PoID2.设置StatPoIdAdr为PoID3.读取ThresData寄存器4.将3fff和读取数据与操作(ANDed)后,写入ThresData寄存器,关闭PoStatEn比特5.将0写入StatData寄存器6.将步骤3读取的数据写入ThresData寄存器,再次打开这个PoID的状态阈值RAM的数据格式是由表11提供。表ll<table>tableseeoriginaldocumentpage63</column></row><table>下一跳寄存器l.监管控制和状态寄存器(P0CTLST)监管模块控制和状态寄存器被分成两部分,较高的16-比特可用于状态比特,而较低的16-比特可用于控制比特。较高的比特和在较低部分里的任何填补比特仅可被读取而不能被设置。表12概括这些比特的意义。表12<table>tableseeoriginaldocumentpage64</column></row><table>队列长度计数器GotIt标记,We;0^6^/"是一个只读比特,与读取队列长度计数器一起使用。队列长度计数器GotIt标记是寄存器的较高16-比特状态段的最低有效位(LSB)。从寄存器的控制部分的LSBs上开始,全局队列长度计数器递减写入启动比特,WWWe//fec/Frfb,控制着递减速率过程。67W^e"/fecF^>7必须被设置为l,以"打开在leakybucket底部的洞",否则队列长度计数器将从不递减。全局队列长度信息包写入启动比特,67W^e/7/^W:n^,控制着递增速率过程。67W以朋,虹/^&初始应该被设置为1,以允许到达的信息包按照字计数递增队列长度计数器。设置WW^朋尸v^fh5)7为0是用来测试和清除计数器。全局统计写入启动比特,Wi^^^Frf",控制当信息包已被标记或丢弃时的统计写入。67W6Ys^fr5h通常是l,但可以被设置为0用于测试或当从CPU清除统计计数器时避免竞争条件。当WW5YW/&^>7是0时,丢弃或标记不记录。这并不会改变实际信息包的标记或丢弃。全局监管计数器重置比特,WW化ar/fe^V,控制递减过程的PoliceID计数器。设置67W尸oC^/fet/^为0保持计数器为0,从而避免运行递减过程,并避免加载QlenGotlt状态比特和QlenData寄存器。这样可以被用来重置计数器以消清除队列长度计数器。当监管流量正常运作时,WW户oCtryfe^V应该被设置为1。全局队列长度消除比特,WWW朋67r,控制递减过程里的比率值。通过设置67W^e/767r为1,有可能迫使比率达到最大值。消除67W^e/767r恢复存储在比率表格里的比率。设置WWWe77C/r有助加快消除队列长度计数器。2.全局规模寄存器全局规模寄存器是一个16-比特寄存器,其包括一个有预载值的计数器。计数器在系统时钟里计数,并在所有PoliceIDs完成一个完整周期之后延迟开始递减过程的一个新周期。正常运行时,全局规模寄存器被设置为0,以获得足够大的速率用于千兆位以太网端口。全局规模寄存器可以被设置成较大值以补偿较高的系统时钟率,或提高可能在动态范围开销上的低递减率的分辨率。3.NH一Control一RegNH—SCR寄存器是下一跳处理模块的状态和控制寄存器。4.NH一S,一AReg5.NH—S應一DReg26,腿—SRAM—DRegl7.既S應一DRegONH—SRAM—Areg、NH—SRAM—DRegO、NH_SRAM_DRegl和NH—SRAM—DReg2寄存器提供到外部HNSRAM的访问。NH一SRAMAreg寄存器包括用于SRAM地址的17-比特值。在对外部SRAM的读取或写入操作时,首先写入NH—SRAM_Areg寄存器。在读取操作时,NH—SMM—DRegO寄存器包括32-比特外部NHSRAM的32LSBs。NH—SRAM_DRegO寄存器应该被首先读取(在读取NH—SRAM一DRegl和NH—SRAM—DReg2之前),因为这次读取触发从由NH—SRAM—Areg指向的外部SRAM存储器取回数据的动作。—旦NH—SRA^LDRegO被读取,NH—SRAM_DRegl寄存器包括NHSRAM的比特63:32,且NH一SRAM—DReg2包括比特71:64。到外部SRAM的写入操作首先要求写入32LSBs到NH_SRAM_DRegO,随后写入比特63:32到NH—SRAM_DRegl,和写入8MSBs到NH_SRAM_DReg2,其触发写入到外部SRAM。8.NH一SIP—AdrReg9.NH—SIP一DataRegNH—SIP—AdrReg和NH—SIP—DataReg是地址和数据寄存器,其控制访问在NH模块里的内部SIP表格SRAMs。在内部SRAM的读取或写入操作时,首先将被读取的8-比特地址写入到NH—SIP—AdrReg寄存器。对读取操作,读取NH—SIP—DataReg寄存器是从SR颜获取32-比特数据。对写入操作,写入到NH_SIP—DataReg寄存器是在地址寄存器的地址上存储32-比特值到SRAM内。多播和输出处理每个区段处理的最后阶段是多播处理。在这个步骤上,如果是多播帧、镜帧(mirroredframe)或2层未知帧,帧区段被复制到一组输出端卩。初始多播处理功能如图35所示。这个初始处理确定一个输出帧区段是否将被复制到多播队列。由下一跳模块输出的UM比特设置显示当前区段将是多播。图35是一个多播输出处理3500的流程图。过程3500在步骤3505上开始,然后行进到步骤3510,i卖取UM、FlowID、和InPortID。控制从步骤3510行进到决策步骤3515,确定UM是否等于1且Drop是否未被设置。如果是的话,控制行进到步骤3525,增加一个区段到多播数据FIFO队列,存储InTrunk工D、S0P、E0P、VB、FlowID到多播头FIFO内。控制从歩骤3525行进到End步骤3530。如果在决策步骤3515上的回答是否定的,控制行进到步骤3520,增加一个区段到一个输出数据队列。控制从步骤3520行进到结束步骤3530。多播数据队列处理功能如图36所示。过程检查多播头(MHdr)FIF0,并在其非空时,通过读取一个说明^7,(9的FlowID和帧输出端口之间映射关系的多播控制(M7^乃表格,读取头并准备输出头用于多播操作。使用入站FlowID作为索引读取MCtrl表格,且表格输出是基本多播FlowID(#/^^/")和多播映射(ifosp),其包括发送帧所到的端口。对来自#v%/rFIF0的FlowID是0(未知帧)的例子而言,Mzsp被设置等于来自VLAN表格的^AWe涵erifsp,且#/7o^7Z被设置为0。然后多播输出过程挑选在她Kp里设置的首个比特,计算输出Flow工D(0FlowID)。在一个空闲时隙上,多播输出过程插入来自多播数据R認的帧区段,并使用当前帧区段的值写出合适的头。然后,多播过程将在对应输出端口的她sp里的比特归零,并通过在她7邵里寻找下一个非零比特计算帧区段应该被发送到的下一个端口。如果Mffi3/是0,多播输出过程在MHdrFIFO里寻找下一个头。图36是多播队列处理3600的流程图。过程3600在步骤3605上开始,然后行进到决策步骤3610,确定多播头FIFO是否是空的。如果多播头FIFO是空的,控制返回到歩骤3610,但是,如果在步骤3610上多播头FIFO是非空的,控制行进到步骤3615,读取多播头FIFO以获得FlowID、VID和InPportID。控制从步骤3615行进到步骤3620,确定FlowID是否等于0。如果FlowID等于0,控制行进到歩骤3625,读取控制表格,设置地址为FlowID,且数据是MflowID和Mmap。控制从步骤3625行进到步骤3635,设置Mmap(Mmap=Mmap&(l〈〈InportID)),并设置索引i等于0。返回到步骤3620,如果FlowID不等于0,控制行进到步骤3630,读取VLAN表格,设置地址为VID,并设置数据为VLANMemberMap以及MflowID等于0。控制从步骤3630行进到步骤3635。从步骤3635,控制行进到决策步骤3640,确定是否有一个Mmap。如果没有Mmap,控制行进到决策步骤3610。但是,如果在步骤3640上有一个Mmap,控制行进到另一个决策步骤3645。步骤3645确定对当前索引在Mmap里是否有一个输入项。如果没有输入项,控制行进到步骤3650,递增索引i并传递控制到步骤3640。但是,如果在步骤3645在索引上的Mmap里有一个输入项,控制行进到步骤3655。步骤3655传递控制到决策步骤3660,确定是否有一个空闲时隙。如果没有空闲时隙,控制返回到歩骤3660直到有一个空闲时隙。如果在步骤3660上有一个空闲时隙,控制行进到歩骤3665,输出Fdata、S0P、E0P、VB、0PktlD、0flowID、和InPortID。控制从步骤3665行进到步骤3650递增计数器,并继续过程。被传输到设备缓冲和排队区的帧的每64-字节区段有一个相关联的64-比特控制头,其在头总线上被传输。这个控制头包括FlowID、信息包起始和信息包终止指示、区段里的有效字节数目、两个丢弃指示(显示是否是一个无条件丢弃或一个基于会导致帧丢弃的队列长度的丢弃)、和用于多播帧的输入端口ID以及输出信息包ID。控制头的格式如图37所示。存储器1.多播头FIFO多播头(i^rfr)FIFO存储帧区段的控制信息,其具有在来自下一跳模块的控制头里设置的未知/多播比特。i/及frFIFO有512个输入项深和36比特宽。在MHdrFIFO里的输入项格式如图38所示。2.多播数据RAM多播数据RAM是一个1024x64比特的存储器,其在这些区段的复制过程期间存储多播帧区段数据。多播数据RAM能够缓冲高达16个帧区段以便处理。3.多播控制RAM多播控制RAM是一个512x36的模块RAM,其包括8-比特FlowID和输出基本FlowID和用于多播帧区段的输出端口之间的映射关系。多播控制RAM里的输入项格式如图39所示。排队芯片图5是图1中排队芯片的模块示意图。如以上所述,排队芯片170从转发芯片150和扩充/处理器接口160接收处理过的流量。在所述关于VoIP的实施例里,排队芯片170将语音流量和其它普通流量区分开来,并进一步给予语音流量优先权优于其它普通流量。排队芯片170通过一个DDR输入总线510在接收模块525上接收处理过的流量。接收模块525提交流量到缓冲管理器540。缓冲管理器540与BMSRAM接口530和队列管理器545连接。缓冲管理器540提交输出到存储控制器565。存储控制器565与FCRAM接口575连接,并提交输出到传输多路分解器(XMTDEMUX)模块580。多路分解器580的输出被提交到传输模块590。传输模块590提交此输出到一个DDR输出总线595。队列管理器545同时连接到QMSRAM接口555和调度器560。调度器随后连接到传输模块590。QMSRAM接口连接到一个外部总线555。XMTDEMUX模块580被连接到一个本地总线RxDMA520。其随后连接到一个CPU接口515。CPU接口通过一个PLX本地总线505处理在排队芯片170和CPU之间的通信。微芯#-微缓冲、排队和调度功能是由QCH工P170执行。缓冲和排队过程使用一个64-比特Q头,其由转发芯片150预先计划给每个帧区段,以获得控制信息用于处理区段。这个控制信息包括队列的FlowID、帧起始位和帧标记结束位、区段里有效字节的数目、drop标记、mark标记和区段的输入和输出端口ID。缓冲管理器540实现从转发芯片150接收到的帧区段的帧重新组装,并实现与帧缓冲相关联的逻辑结构(缓冲链接列表)。存储控制器565实现到FCRAM存储器的帧区段读取和写入。队列管理器545实现流队列建立和管理算法。QCHIP170也负责与本地总线接口连接,用于从外部接口传送以太网帧和传送以太网帧到外部接口。本地总线接口520实现接收DMA功能用于通过PLXPCI设备505从交换子系统到处理器子系统的有效帧传每个帧区段被拷贝到FCRAM存储器里,并对每个信息包形成帧区段的一个逻辑链接列表。如果信息包被错误接收,帧被丢弃且不进行排队。当信息包已经完全被准确地接收,队列管理器将信息包加到流队列的尾部。在每个流队列里的帧可以被分配到任何具有一个给定类别和子类分配以及低和高队列长度阈值的端口。当流变得活跃时(即有一个排队信息包),此流被增加到一个流列表,其将被服务用于当前端口。排队过程的控制被传递到调度器。—个帧区段的缓冲和排队过程4000的插图描述如图40所示。一个来自FCHIP150的入站区段4005被接收,并被提交到步骤4010和4015。步骤4015存储此入站区段4005在一个DRAM缓冲区4020里。步骤4010分析头并转发该入站区段到一个流配置表格4025。流配置表格4025分配一个输出流到一系列端口4030a...n中的一个端口。端口4030a...n中的每个端口都被分配有一系列端口-类别-子类4035a...k中的一个端口-类别-子图41显示一个出站排队过程4100和调度器任务的插图描述。一旦流变成活跃的,调度器有助于服务处于正确顺序的信息包。调度器在端口基于类别和子类在流之间执行分层式加权轮转(hierarchicalweightedroundrobin)功能。一个时隙配置寄存器执行分配带宽到端口,而调度器在端口上的流之间分配带宽。许多信息包4105a...n被提交到许多环缓冲器(ringbuffer)4110a...k。在缓冲到一系列子类4115a...m中的一个子类之后,环缓冲器4110a...k提交信息包。然后,子类4115a...m被排序分类成类别4120a...z中的一个类别。类别4120a...z提交相应的信息包到端口4125a...y中的一个端口。然后,来自端口4125a...y的信息包被提交到一个调度器4135,-其分配一个时隙给来自相应端口4125a...y的信息包。调度器4135的输出被提交到一个取回模块4140,其从FCRAM缓冲器4150中寻回区段。然后,取回模块4140提交一个输出区段4155。微芯#_麥/7缓冲管理器功能综述缓冲管理器负责(l)管理自由缓冲区链接列表;(2)分配缓冲区IDs(BIDs)用于入队操作;(3)丢弃Q头里设置drop标记的帧;(4)将出队帧的BIDs增加到自由缓冲区链接列表;和(5)建立一个BIDs链接列表以组成一个以太网帧,然后转发帧的头和尾指针到队列管理器。缓冲管理器与(1)接收接口;(2)队列管理器;和(3)FCRAM控制器连接并执行以下功能1.在初始化时,缓冲管理器建立一个自由缓冲区链接列表,其将所有BIDs放置在自由缓冲存储器里。2.对一个入队操作,缓冲管理器从自由缓冲区链接列表分配一个新BID,并将此BID值(具有写入操作比特集合)写入到FCRAM控制器命令FIFO里。缓冲管理器将此新BID更新到输入-输出尾BID(IOT)表格(和以SOP开始的输入-输出头BID(IOH)),并将此新BID值写入到先前尾BID值的存储器位置,从而连接此新BID到任何先前帧区段。3.关于一个EOP,缓冲管理器读取IOH和IOT表格的内容用于当前输入-输出合并,并转发信息到队列管理器。4.关于一个Drop操作,缓冲管理器通过增加头BID到自由列表的尾部释放整个帧。5.关于一个出队操作,缓冲管理器将具有读取操作比特集合的BID值写入到FCRAM命令FIFO里。然后,缓冲管理器增加出队BID到自由缓冲区链接列表的尾部。6.关于一个增加BID操作,缓冲管理器将NextBID值和相关联的标记写入到在外部SRAM里的CurrentBID位置。数据结构1.自由缓冲区链接列表和Per-flow(每个流)排队链接列表为了提供对per-flow队列和一个自由缓冲区链接列表的管理,逻辑队列在缓冲管理器SRAM里形成,其中每个队列对应一个流队列或自由缓冲区链接列表。每个逻辑队列按照FIFO顺序包括FCRAM里的缓冲区地址链接列表。缓冲区的自由列表的数据结构被用来实施per-flow队列。BID自由列表的每个记录包括下一个BID字段(用于存储链接列表里下一个记录的BID)、1-比特信息包终止位(EOP)、1-比特信息包起始位(SOP)地段(以显示下一个BID是否包起始位/终止位相关联)和一个6-比特长度字段(其规定在一个64字节信息包区段里有效八位字节的数目)。BID自由列表的概念性布局如图42所示。BID是从自由列表的头里被删除,最终被插入到对应per-flow队列链接列表里。per-flow排队链接列表的实施被记作flow—BIDlist[BID]二(NxtE0P,NxtS0P,NxtLen,NxtBID}。基于此原因,指向一个单元缓冲区的SDRAM地址被称作缓冲区识别符(BID),而单元缓冲区的自由列表被称作单元缓冲区列表。队列管理器通过缓冲区管理器访问(即写入或读取)per-flow链接歹據。寄存器和表格输入-输出头(TOH)和尾(IOT)表格输入-输出头和尾表格包括在任何输入和输出端口组合之间交换的帧的头和尾BID值。由于随时可能有最多4096个输入-输出端口对(64个输入端口到64个输出端口),表格深度是4096。表格格式如图43所示。帧的首个区段的信息包起始位(SOP)、信息包终止位(EOP)和有效字节(VB)值必须被保留在头BID表格里,因为当接收到一个帧终止位时这些值只能被写入到流队列存储器里。尾BID存储器包括尾指针表格和帧区段长度计数以及有效信息包(VP)控制比特,其显示信息包是否正被处理用于一个给定输入-输出端口组合。颇义哪絲器自由头寄存器包括指向外部SRAM存储器里的自由缓冲区表格的头指针值。自由头寄存器值被用来分配存储器给一个入站帧区段,并通过从外部SRAM读取自由缓冲区链接列表里的下一单元得以更新。自由头寄存器如图44所示。颇眉,絲器自由尾寄存器包括指向外部SRAM存储器里的自由缓冲区表格的尾指针值。当将前一个被分配的存储器位置增加回到自由缓冲区列表时(例如在一个出队操作之后或在一个丢弃操作之后),使用自由尾寄存器值。自由尾寄存器如图44所示。缓冲管理器SRAM存储器映射缓冲管理器(BM)SRAM存储器映射是基于一个1Mx36SRAM存储器。2个512Kx36SRAM的模块可以被用来形成1Mx36存储器。存储器映射布置如图57所示。功能说明缓冲管理器的功能设计是由以下表格13里的一组伪码显示。这些伪码对由缓冲管理器执行的入队和出队操作提供功能说明。表格13操作入队/出队功能开始入队入队Read一RCVMUX(,,鹏i7"/"",0/,I观腳尸',况厕WU"/"W:(义Z層A)读取尾入队ReadS腿A/rfr亂-孤+邻滩,肌欣。义讽读取头入队ReadS腿超潛s,J贝/"7H。义/"观7"腳尸,入队区段入队If(XDR0Pli(IDV==1&&XS0P)II(IDV==0&&!XSOP))ThenDR0P=1ElseIf(IDV==0&&!XE0P)Then{WriteS跳認潜&所n。J,J观WriteS跳超潜s;/,+柳ft"ats,解议'07,7,7Write—MC(FH[19:0],Enqueue)}ElseIf(IDV==l&&!XEOP){WriteSRAM:A/rfres5vi""7Y"":(U/^/79:^WriteS醒/柳请邻,组a;,肌7>7Write—MC09iO5W,S晃fiV巡/"/7乂'ft7)}EOP区段入队If(XEOP&&!DROP)Then{BM—HD=IDH,BM—TL=FH,BM_S0P=IDS0P,BM_EOP=IDE0P,BM_VB=IDVB,<table>tableseeoriginaldocumentpage76</column></row><table>队列管理器功能综述队列管理器负责(1)管理帧的per-flow入队和出队;(2)跟踪积压流队列(即非空流队列);和(3)形成基于每个端口-类别-子类的积压流环。队列管理器与(1)调度器;(2)缓冲管理器;禾P(3)SRAM接口连接并执行以下功能1.在流队列被调度和发送到合适端口之前,队列管理器为per-flow排对管理流队列的一个链接列表数据结构;2.关于缓冲管理器的新帧指示,队列管理器检查PCS的队列长度以确定帧是否能够被增加到队列。为了增加帧到队列,队列管理器査询前一个尾部的BID,并指示缓冲管理器增加信息包头BID到尾部。与头BID记录相关联的状态比特也被存储;如果有必要的话,对处理器已经分配流到合适的端口-类别-子类,更新积压流环(即包含整个信息包的流)。3.—旦调度器请求端口-类别-子类出队,队列管理器从积压FlowIDs的端口-类别-子类环的头上的流队列头找回记录。Per-flow队列长度计数是递减的;4.然后,队列管理器更新对应的流队列头BID和端口-类别-子类的积压FlowIDs环。寄存器和表格戸-,微鹏浙細/i)表潜为了跟踪每个per-flow队列的头和尾用于FIFO操作,per-flow头和尾BID表格(FlowHdTl)是在队列管理器SRAM里执行的。这个表格的一个概念性数据结构如图45所示。头和尾BID表格具有64个输入项,其由Flow工Ds索引。每个输入项包含6个字段一个头BID字段(包含相应流队列头的BID值),一个尾BID字段(包含相应流队列尾的BID值),一个空字段(包含显示per-flow队列是否是空的状态),一个SOP字段(显示当前单元是否是信息包起始位),一个E0P字段(显示当前单元是否是信息包终止位),和一个长度字段(显示当前区段里有效字节)。流队列的头和尾BID和单元缓冲区链接列表如何被用来实现per-flow队列的一个例子如图46和图47所示。图46显示设立头和尾BID表格输入项和相应流队列链接列表字段的例子。图47描述图46的设立例子形成的流队列链接列表。每-樣〃-類-殘廳-长度微每-端口-类别-子类队列-长度计数表格(QCt)存储每个端口、类别、和子类的队列长度。每-端口-类别-子类队列-长度表格的格式如图48所示。为了便于调度具有入队信息包的per-flow队列(即积压流队列),基于端口-类别-子类的积压FlowID链接列表被用于这个实施例里。每个链接列表对应一个端口-类别-子类,并存储被设立到这个端口-类别-子类和具有将被调度信息包的FlowID。积压FlowID链接列表的数据结构如图49所示。积压FlowID链接列表被表示为BF[FloWID]={NxtFlOWID},并被存储在与流的头和尾指针表格相同的16K存储器位置地址。離蔬縦身表鹏鹏表潜为了管理基于端口-类别-子类的积压FlowIDs环的头和尾FlowID,必需存储形成这个环的链接列表的头和尾FlowID在内部寄存器里。对64个线卡(line-card)端口、8个流量类别、和2个子类,基于端口-类别-子类的积压FlowIDs(BradTl)环的头和尾FlowID表格包括1K输入项,如图50所示。积压流链接列表的头和尾FlowID表格是被由连接6-比特PortID,3-比特类别和l-比特子类(PortID(6,b),C1(3,b),Subcl(l,bM形成的10-比特PtClSub索引。每个输入项的最高有效位(mostsignificantbit)包括输入项的空指示符。用于形成基于端口-类别-子类的积压FlowIDs环的数据结构描述如图51所示。微,鄉船—活跃端口位图(PtM即)是一个对应每个端口的64-比特位图。活跃端口位图表格是由队列管理器设立,并被调度器使用。位图里的每个比特指明相应端口是否处于空闲或活跃状态。至于队列管理器调度一个新帧到端口,端口则必须处于空闲状态。舰縱像表潜积压端口类别-位图(BPtClMap)表格包括64个输入项,对应64个可能出站端口的每个端口。积压端口-类别-子类位图表格是由队列管理器设立,并被调度器使用。每个输入项包括一个8-比特宽位图对应8个可能类别。在位图里的每个控制比特显示对应端口-子类是否有积压流队列需要调度。这个表格的概念性描述如图52所示。BPtClMap的编码被定义如下0:对应的端口-类别没有积压流队列用于调度;1:对应的端口-类别有积压流队列用于调度。队列管理器设置或重新设置每个端口-类别的对应控制比特,显示是否有任何与端口-类别相关联的积压流队列。当调度一个传输给端口时,调度器请求一个给定PortID的位图,并使用表格里的控制比特协助端口的调度决策。如果对一个指定端口有至少一个类别的积压流队列控制比特集合,调度器使用WRR算法在控制比特被设置的类别中间作出一个调度决策。舰端O-鄉殘位歸潜积压端口-类别子类位图(BPtSubM即)表格包括512个输入项,对应512个可能端口和类别。积压端口-类别子类位图表格是由队列管理器设立,并被调度器使用。每个输入项包括2比特宽位图对应2个可能的子类。在位图里的每个控制比特显示对应的端口-类别-子类是否有积压流队列用于调度。这个表格的概念性描述如图53所示。BPtSubM邻的编码被定义如下0:对应的端口-类别-子类没有积压流队列用于调度;1:对应的端口-类别-子类有积压流队列用于调度。队列管理器设置或重新设置每个端口-类别-子类的相应控制比特,指示是否有任何与端口-类别-子类相关联的积压流队列。当调度一个单元传输给端口和类别时,调度器请求一个给定PortID和类别的位图,并使用表格里的控制比特协助端口的调度决策。调度器使用WRR算法在控制比特被设置的子类中间作出一个调度决策。魔-端/7-,-殘表潜流-端口-类别-子类表格是一个详细说明FlowID和端口-类别-子类之间映射的管理表格。流-端口-类别-子类表格包括16K输入项对应每个FlowID,并包括FlowID的10-比特端口-类别-子类项。流-端口-类别-子类表格如图54所示。流-端口-类别-子类表格里的每个输入项包括对应FlowID的(端口(6'b),类别(3,b),子类(l,b)}。麵长度庳離队列长度高阈值(QHiThresh)表格是一个管理表格,如图55所示,其指明信息包丢弃开始发生时每个端口-类别-子类的队列长度。队列长度高阈值是16比特长,因此最低分配单元是16帧区段。队列管理器比较队列长度高阈值和当前队列长度以确定一个入站流的信息包是否应该被丢弃。麵长度恋離队列长度低阈值(QLoThresh)表格是一个管理表格,如图56所示,其指明标记信息包被丢弃时每个端口-类别-子类的队列长度。队列长度低阈值是16比特长,因此最低分配单元是16帧区段。队列管理器比较队列长度低阈值和当前队列长度,如果超出队列长度低阈值,且设置了入站帧头里的DSD比特,入站流的信息包被丢弃。队列管理器SRAM存储器映射SRAM存储器映射是基于一个32Kx72SRAM存储器。2个128Kx36SRAM模块被并行排列以形成72-比特宽存储器。存储器映射安排如图57所示。调度器功能综述调度器负责每8-时钟周期安排一次出站传输。1.调度器保留一个时隙配置表格,其将帧里512个时隙中的每个时隙映射到出站端口。2.调度器调度一个出站帧区段传输给端口,通过-a.对端口和类别执行优先权排队或加权轮转调度算法,在具有积压流队列的高达8个类别中间确定一个类别;b.对端口、类别、和子类调度器执行优先权排队或加权轮转调度算法在具有积压流队列的高达2个子类中间确定一个子类;C.调度器执行轮转算法,在所有积压流队列中间确定一个流队列。3.然后,调度器请求流队列头的帧区段记录,该流队列被安排了队列管理器的时隙以被出队。—个分层式改进的加权轮转实施5800的插图如图58所示。许多流队列5810被分类到子类5820里。然后,分类的流队列5830被分类到类别5840里,然后其被输出调度到端口5850。加权轮转过程的详细细节将在以下提供。为类别0和1及其相应子类执行优先权排队,类别l、子类l具有最高优先权,类别O、子类O有最低优先权。寄存器和表格好像體表潜如果59所示,时隙配置(TSConfig)表格将512个出站时隙的一个帧映射到出站端口。当line-card(线卡)端口被配置时,设置相应的输入项。此表格包括512个输入项,每个输入项被一个0511范围内的时隙索引。一个输入项包括一个相应时隙映射的Port工D字段。每个输入项的最高有效位包括PortID的一个空指示符比特。这个最高有效位被编码为*0:输入项PortID是空的,没有端口被配置时隙;*1:输入项PortID不是空的,有端口被配置时隙。之微微游纖、靜器之前被调度的时隙(PreSchTS)寄存器包括8个比特,并存储了512个时隙帧里被调度的之前时隙的索引值。之前被调度的时隙寄存器在被用来确定一个时隙用于调度之前,以幅度1递增。类微羞表潜类别权重表格(ClWeight)包括每个端口-类别的.个输入项,并存储了类别之间用于加权轮转(WRR)调度算法的权重值。此表格的一个概念性描述如图60所示。类别权重表格在有流建立或拆除的PortIDs的交换操作期间建立。对一个给定端口,所有类别的权重总和提供端口的WRR调度窗口大小。一个类别权重对这个总和的比率提供保证给此类别的端口带宽比例。类謝,微表潜类别WRR计数(ClWeightCT)表格包括每个端口-类别的一个输入项。类别权重计数表格存储WRR计数值用于类别之间的加权轮转调度算法运作。此表格的一个概念性描述如图61所示。活跃端口-类别的输入项在WRR调度算法运作期间被更新。WRR适合端口类别-位图表格WRR合适端口类别-位图(WrrPtClMap)表格包括64个输入项,对应64个可能出站端口。每个输入项包括一个8-比特宽位图,对应8个可能类别。位图里的每个控制比特显示对应的端口-类别是否适合被WRR算法调用。此表格的一个概念性描述如图62所示。WrrPtClMap的编码被定义如下0:相应的端口-类别不适合WRR调度-此端口-类别的类别WRR权重计数已经达到相应的端口-类别权重;1:相应的端口-类别适合WRR调度-此端口-类别的类别WRR权重计数没有达到相应的端口-类别权重。之微錄度麟微潜之前被调度的类别(PreSchCl)表格包括64个输入项;每个输入项对应端口之前被WRR算法调度给类别识别符。此表格的一个概念性描述如图63所示。WRR调度算法设置对应端口的输入项为调度算法刚刚调度传输的类别。f微置表潜子类权重表格(SubWeight)包括每个端口-类别-子类的一个输入项,并存储子类之间用于加权轮转(冊R)调度算法的权重值。此表格的一个概念性描述如图64所示。子类权重表格在有流建立或拆除的PortID和类别的交换操作期间建立。对一个给定端口和类别,所有子类的权重总和提供端口和类别的WRR调度窗口大小。一个子类权重对这个总和的比率提供保证给此子类的端口-类别的带宽比例。賴,微表潜子类权重计数(SubWeightCT)表格包括每个端口-类别-子类的一个输入项。子类权重计数表格存储WRR权重值用于子类之间的加权轮转调度算法的运算。此表格的一个概念性描述如图65所示。活跃端口-类别-子类的输入项在子类间的WRR调度算法运算期间被更新。腳适,/7-鄉殘-鄉表搭WRR适合端口-类别子类-位图(WrrPtSubMap)表格包括512个输入项对应512个可能的端口-类别。每个输入项包括一个2-比特宽位图对应2个可能子类。位图里的每个控制比特显示对应的端口-类别-子类是否适合被WRR算法调度。此表格的一个概念性描述如图66所示。WrrPtSubMap的编码被定义如下0:相应的端口-类别-子类不适合WRR调度-此端口-类别-子类的类别WRR权重计数已经达到相应的端口-类别-子类权重;*1:相应的端口-类别-子类适合WRR调度-此端口-类别-子类的类别WRR权重计数没有达到相应的端口-类别-子类权重。之,凝微游残表潜之前被调度的子类(PreSchSub)表格包括512个输入项,每个输入项对应那个端口-类别之前被WRR算法调度的子类识别符。此表格的一个概念性说明如图67所示。WRR调度算法设置对应端口-类别的输入项为WRR调度算法刚刚调度区段传输的子类。功能对一个端口,加权轮转算法被用于类别调度。对一个端口和类别,加权轮转算法被用于子类调度。对一个端口、类别和子类,轮转算法被用于流队列的帧传输调度。*汰辦对加权轮转(TOR)算法的运算,满足三个特性1.如果所有类别包括非积压流,WRR等待下一个区段以进入任何类别的流队列。然后,那个类别被处理,并提供完全服务;2.如果仅有一个类别包括积压流,且所有其它类别包括非积压流,具有积压流的类别被处理,并继续服务,直到流在另一个类别里积压;3.如果两个或多个类别包括积压流;WRR使用调度窗口来确定类别进入服务a.在调度窗口里给一个特别类别较多时隙,保证较多的带宽给此类别;同样,b.在调度窗口里给一个特别类别较少时隙,表示较少的带宽给此类别;c.提供一个特别类别的端口带宽的保证比例是分给那个类别的时隙数目除以调度窗口里的时隙总数。对WRR运算,调度窗口里的时隙顺序和安排不影响分配到每个类别的带宽数量。但是,延迟取决于调度窗口里的时隙顺序。有两种方法用于基于窗口的WRR调度算法1.一个面向模块的WRR调度算法给一个特别类别提供所有按次序的时隙,而不会移到另一个类别;2.—个分布式的WRR调度算法尝试为一个给定类别在调度窗口均匀分布时隙。此处所述的实施例利用第二种方法。特别地,实施例提供一个WRR计数和一个权重给所有与每个端口-分类相关联的流队列。每次从与端口-类别相关联的流队列调度一个区段,对应端口-类别的WRR计数增加1,且类别被存储为之前被调度的类别。对所有到一个端口的类别,只要在类别里有至少一个积压流队列,且相关联的WRR计数没有达到其权重,算法就依次从流队列头里继续调度缓冲区的区段给每个类别。如果在一个类别里不再有积压流队列,或一个类别的对应WRR计数达到其权重,该类别就被排除在调度周期之外。对相同端口-类别里的积压流队列,一个轮转方案被用来从每个积压流队列的头传输区段。对一个给定的端口,只要所有类别使它们的WRR计数达到其权重或WRR计数没有达到其权重的类别没有积压流队列,所有类别的WRR计数被重新设置,且一个新的调度窗口开始用于这个端口。对一个基于可变长度信息包的系统,加权轮转算法必须被修改以适应流达到其服务阈值的情况,但必须如packet-by-packet包传输所要求的,服务信息包直到完成。对这种情况,其中流被服务,而此流已经达到一个相关阈值,这时使用一种亏损服务计数器。亏损服务计数器对每个被服务的高过阈值的帧区段递增,显示流在当前调度循环里已经利用额外带宽。当这个信息包已经被服务完成,如果任何其它的流队列有积压信息包,但还没有达到其阈值,这些流的信息包被服务。当所有这些信息包已经被服务且所有积压队列已经达到其调度阈值时,不需要重新设置调度器计数为0,计数被重新设置为亏损计数器里保留的值。与其它流相比,减少当前循环里流可利用的服务。这样可以保持公平的带宽-共享算法。微餅-存縦縱功能综述存储控制器565从FCRAM缓冲区存储器读取帧区段或写入帧区段到FCRAM缓冲区存储器。存储控制器与(1)MUX模块;(2)缓冲管理器;和(3)DEMUX模块连接以执行以下功能*存储控制器从缓冲管理器读取一个命令FIFO,这个命令是通过读取和写入请求(和存储器里的区段开始地址)而写入的。关于读取请求,存储控制器从给定的存储器地址读取帧区段,并写入数据到一个出队FIFO里。关于写入请求,存储控制器读取入队FIFO,并写入帧区段到具体的存储器地址。存储控制器产生如FCRAM-II规范所要求的存储更新周期。存储控制器模块565的模块图如图6所示。存储控制器565在一个命令FIFO模块610上通过一个21比特总线接收来自缓冲区管理器540的输入。在一个入队FIFO模块650里通过一个64比特总线接收来自MUX芯片140的MUX输入。存储控制器565包括一个读/写状态机630。存储控制器565通过一个FCRAM控制模块640提交输出到FCRAM接口模块570。存储控制器565通过一个出队FIFO模块620提交输出到图5的多路复用器580。FCRAM存储器映射4个FCRAM设备中的每个设备包括4个内存库(内存库A、B、C和D),每个包括32K个行地址和128个列地址。每个FCRAM设备存储每64-字节帧区段的16个字节。这16个字节被存储为每内存库8个字节,且每次读取或写入操作可以传输8个字节(2个字节,突发长度为4)从/到内存库A(内存库C)或从/到内存库B(内存库D)。存储控制器模块接口存做劍器,_,C應W在一个10-周期期间内读取和写入FCRAM存储器,其中读取和写入64-字节帧区段是交叉的。如图所示,每个命令要求5个周期完成。读取和写入可以由FCRAM更新周期预先进行,其消耗大约2%的可用接口带宽。DEMUX芯片140图8是图1的DEMUX芯片190的体系结构模块图。如图1的以上所述,DEMUX芯片190从排队芯片170接收流量,并从预定数据宽度将流量重排成系统100接收到的初始数据宽度。DEMUX芯片190提交输出流量到MAC芯片130。图8显示DEMUX芯片190在接收模块850上接收头'(HDR)860和数据(DAT)870。接收模块850缓冲接收到的头860和数据870,并提交相应信息到HDRFIFO模块835和CHUNGFIFO模块840。HDRFIFO模块835缓冲头信息,并提交一个16比特输出到多路复用器830。类似地,CHUNGFIFO模块840缓冲接收到的数据,并提交一个64比特输出到多路复用器830。多路复用器830多路传输接收到的头和数据信息到10个FIFO信道(被连接到一系列10个PKTFIFO模块815a...f,825a...d),从而将一个预定数据宽度的接收到的总线流量恢复到由系统100接收到的流量705的数据宽度。PKTFIFO模块815a...f缓冲接收到的信息,并提交64比特输出到相应的POS-PHY/Leve12传输(PP2Tx)模块810a...f。类似地,PKTFIF0模块825a...d缓冲接收到的信息,并提交64比特输出到相应的SPI3Tx模块820a...d。PP2Tx模块810a...f产生输出流量805a...f,SPI3Tx模块820a...d产生输出流量805g...j。所有的流量805a...j被提交到MAC130。前述的首选方法包括一个特别控制流。此首选方法可以有许多其它转变,如使用不同的控制流,而不会偏离本发明的精神和范围。而且,首选方法的一个或多个步骤可以并行地而不是按顺序地进行。计算机应用流量处理的方法最好使用一台通用计算机系统300实施,如图3所示,其中图1、2和4到70的过程可以作为软件实施,如计算机系统300内运行的应用程序。特别地,流量处理方法的步骤受计算机执行的软件里的指令影响。这些指令可以由一个或多个代码模块产生,每个代码模块被用来执行一个或多个特别任务。软件也可以被分割成两个独立部分,其中第一部分执行流量处理方法,第二部分管理第一部分和用户之间的用户界面。软件可以被存储在计算机可读媒介里,例如包括以下描述的存储设备。软件从计算机可读媒介被载入到计算机里,然后由计算机执行。记录有这种软件或计算机程序的计算机可读媒介是计算机程序产品。在计算机里使用计算机程序产品最好是流量处理的有效装置。计算机系统300是由计算机模块301、输入设备如键盘302和鼠标303、输出设备包括打印机315、显示设备314和扬声器317组成。调制解调器(Modem)收发器设备316被计算机模块301用来与通信网络320进行通信,例如通过电话线321或其它功能媒介进行连接。Modem316可以被用来访问Internet和其它网络系统,如局域网(LAN)或广域网(WAN),且在一些应用里可以被合并到计算机模块301。计算机模块301通常包括至少一个处理器单元305和一个存储器单元306,例如由半导体随机存取存储器(RAM)和只读存储器(ROM)形成。模块301也包括许多输入/输出(I/O)接口,其包括一个连接视频显示器314和扬声器317的音频-视频接口307,一个1/0接口一313用于键盘302和鼠标303以及可选择的操作杆(未说明),以及接口308用于Modem316和打印机315。在一些应用里,Modem316可以被合并到计算机模块301内,例如接口308内。提供一个存储设备309,其通常包括硬碟驱动器310和软碟驱动器311。也可以使用一个磁带驱动器(未显示)。一个CD-R0M驱动器312通常被提供作为一个永久数据源。计算机模块301的组件305到313通常通过一个互连总线304进行通信,并在某种意义上其就是相关领域计算人员所知的计算机系统300的常规操作模式。所述计算机例子可以包括IBM-PC,s和相容设备、SunSparcstations或由此衍生的相关计算机系统。通常,应用程序驻存在硬碟驱动器310上,并通过处理器305的进行读取和控制。程序的中间存储和从网络320提取任何数据可以使用半导体存储器306来完成,可能与硬碟驱动器310—致。在一些情况下,可以提供应用程序给用户在CD-R0M或软碟上编码,然后通过相应的驱动器312或313读取,或通过Modem设备316用户从网络320读取。更进一步地,软件也可以从其它计算机可读媒介被载入到计算机系统300里。此处使用的术语"计算机可读媒介"是指参与提供指令和/或数据给计算机系统300用于执行和/或处理的任何存储或传输媒介。存储媒介的例子包括软碟、磁带、CD-R0M、硬碟驱动器、ROM或集成电路、磁光盘、或计算机可读卡如PCMCIA卡等,不管这种设备是计算机模块301的内部或外部设备。传输媒介的例子包括无线电或红外传输信道和连接到另一部计算机或网络设备的网络,和Internet或内联网包括在网页上的e-mail传输和记录的信息等流量处理的方法也可以由专用硬件来实施,如执行多路传输和处理功能或子功能的一个或多个集成电路。这种专用硬件可以包括图形处理器、数字信号处理器、或一个或多个微处理器和相连存储器。在一些可选的方案里,交换系统100表现为一个以太网交换机。在一个首选实施例里,-以太网交换机被合并到一个独立IP电话系统。交换机在IP电话手机和以太网网络之间连接以提高语音质量和网络性能。当IP电话接通到交换机,流量通过48FE端口110。交换机分辨并分类IP电话设备。然后,语音VLAN的语音ID被分配给IP电话。其后,交换机也分配优先权给IP电话设备的语音流量以保护如以上所述的计算机应用例子里的语音质量。工业应用从以上显然知道,所述方案可以被应用到计算机、数据处理和电话通信工业。前述仅仅描述了本发明的一些实施例,此外可以对此作出修改和/或变化,而不会偏离本发明的范围和精神,实施例只是用作描述目的而非限制本发明。权利要求1.一种通信流量处理方法,包括接收一个初始数据宽度窄于或等于预定数据宽度的通信流量;将所述接收到的流量重排到所述预定数据宽度的总线流量;辨认所述总线流量里的一个特别流量;处理所述总线流量;给所述特别流量以优先权优于所述总线流量里的其它流量;和依照所述优先次序的结果输出所述总线流量;2.根据权利要求1所述的方法,还包括将所述总线流量拆分到所述初始数据宽度。3.根据权利要求1所述的方法,其中所述辨认和所述给以优先权还包括辨认一个语音流量和给一个语音流量以优先权。4.根据权利要求1所述的方法,其中所述给以优先权还包括将所述预定数据宽度的所述总线流量进行排队。5.根据权利要求1所述的方法,其中所述给以优先权还包括缓冲所述预定数据宽度的所述总线流量。6.根据权利要求1所述的方法,其中所述处理还包括2层、3层、和4层头处理中的至少一种。7.根据权利要求1所述的方法,其中所述接收到的流量被应用到以下至少一个接口POS-PHY接口、SPI接口、PCI接口、PCMCIA接口、USB接口和CARDBUS接口。8.根据权利要求1所述的方法,其中所述预定数据宽度是64比特。9.一种通信流量处理的系统,包括 一个电路用于接收和重排一个初始数据宽度窄于或等于预订数据宽度的流量到所述预定数据宽度的总线流量;一个电路用于区分所述总线流量里一个特别流量-,一个处理器用于处理所述重排的总线流量;和一个电路用于给予所述特别流量以优先权优于所述总线流量里其它流10.根据权利要求9所述的系统,还包括一个电路用于将所述总线流量拆分到所述初始数据宽度。11.根据权利要求9所述的系统,其中所述用于给以优先权的电路给予一个语音流量以优先权优于所述总线流量里的其它流量。12.根据权利要求9所述的系统,其中所述用于给以优先权的电路还包括一个排队芯片用于排队所述总线流量和一个缓冲器用于缓冲所述总线流13.根据权利要求9所述的系统,其中所述处理器包括一个电路,根据2层、3层和4层中的至少一种进行头处理。14.根据权利要求9所述的系统,其中所述的系统包括至少一个用于接收和重排的接口,所述接口是从以下选择POS-PHY接口、SPI接口、PCI接口、'PCMCIA接口、USB接口和CARDBUS接口。15.根据权利要求9所述的系统,其中所述的用于拆分的电路包括以下至少一个接口POS-PHY接口、SPI接口、PCI接口、PCMCIA接口、USB接口禾卩CARDBUS接口。16.根据权利要求9所述的系统,其中所述预定数据宽度是64比特。17.—个用于安全帧传输的设备,包括一个接收电路用于接收帧;和一个入口处理器用于处理所述帧以确定是否进一歩处理所述帧。18.根据权利要求17所述的设备,还包括一个电路用于预处理所述帧,通过分析所述帧头以检查所述帧的帧头有效性。19.根据权利要求17所述的设备,其中所述入口处理器包括一个电路用于分配识别符给所选帧。20.根据权利要求19所述的设备,其中所述识别符是一个VLANID。21.根据权利要求17所述的设备,其中所述入口处理器包括一个电路用于设置一个VLANID被配置给VoiceID,并还设置X2比特给所述VoiceID以避免帧泛滥。22.根据权利要求17所述的设备,其中所述的入口处理器包括一个电路用于记录被授权用户的MAC地址到寄存器里。23.根据权利要求17所述的设备,其中所述寄存器是一个硬件寄存器。24.根据权利要求17所述的设备,其中所述的入口处理器包括一个电路用于确定是否以2层或3层实体转发所述帧。25.根据权利要求17所述的设备,还包括一个2层处理器用于引导所述入口处理的帧到正确端口。26.根据权利要求17所述的设备,还包括一个3层处理器用于引导所述入口处理的帧到正确端口。27.根据权利要求17所述的设备,还包括电路,用于通过匹配所述帧的头字段将所述帧分类成一个流。28.根据权利要求17所述的设备,还包括一个下一跳处理器,用于确定所述帧输出和所述帧的控制帧头修改。29.根据权利要求17所述的设备,还包括一个用于输出所述帧的多播处理器。30.—种处理通信流量的以太网交换系统,所述交换系统包括一个电路,用于接收和重排初始数据宽度窄于或等于预定数据宽度的以太网流量到所述预定数据宽度的总线流量;一个电路,用于区分所述总线流量里的一个特别流量;一个处理器,用于处理所述重排的总线流量;和一个电路,用于给予所述具体流量以优先权优于所述总线流量里其它流量。31.—个互联网协议电话系统,包括一个数据网络;一个互联网协议(IP)电话手机;和一个将所述IP电话手机连接到所述数据网络的交换器,所述交换器包括第一电路,用于从所述电话手机和所述数据网络中的至少一个接收通信流量,所述通信流量具有一个窄于或等于预定数据宽度的初始数据宽度;第二电路,用于将所述接收到的流量重排到所述预定数据宽度的总线流量;第三电路,用于在所述总线流量里区分出来自所述IP电话手机的语音流量;一个处理器,用于处理所述重排的总线流量;和第四电路,用于给予所述IP电话手机的语音流量以优先权优于所述总线流量里的其它流量。全文摘要本发明披露了一种用于通信流量处理以提高数据通信网络整体性能的方法。本方法包括接收一个数据宽度窄于或等于预定数据宽度的通信流量;将接收到的通信流量重排到所述预定数据宽度的总线流量;识别总线流量内的一个特别流量;处理总线流量;给特别流量(如语音流量)优先权优于所述总线流量里的其它流量;和依照优先排序结果输出总线流量。因此,本方法保证网络资源用于语音流量,并避免可能导致系统崩溃的帧泛滥。此处还披露了一种用于通信流量处理的系统。本系统包括一个电路用于接收和重排数据宽度窄于或等于预定数据宽度的通信流量到所述预定数据宽度的总线流量里;一个电路用于区分所述总线流量里一个特别流量;一个处理器用于处理重排的总线流量;和一个电路用于给予特别流量优先权优于所述总线流量的其它流量。本发明还提供一个用于安全帧传输的设备。本设备包括一个接收电路用于接收帧;和一个入口处理器用于处理帧以确定是否进一步处理此帧。文档编号H04L12/28GK101160825SQ200680010081公开日2008年4月9日申请日期2006年2月1日优先权日2005年2月1日发明者林子建,洪俊傑,潘查·朴罗谋申请人:香港应用科技研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1