多端口以太网交换装置及数据传输方法

文档序号:7614652阅读:145来源:国知局
专利名称:多端口以太网交换装置及数据传输方法
技术领域
本发明涉及一种以太网交换装置及数据传输方法,尤其涉及一种具有转发与存储分离结构的多端口以太网交换装置及数据传输方法。
背景技术
以太网交换芯片的功能是提供多个以太网端口间的二层或二层以上的报文转发,如果是二层转发,则转发行为应该严格按照IEEE 802.3(国际电子电气工程师协会定义的关于以太局域网的协议)协议定义的方式实施,如果是二层以上的转发,则应按照IP协议定义的方式实施。以太网交换芯片是以太网交换设备的核心器件,决定了以太网交换机的性能和功能。
以太网交换最重要的指标在于系统性能,也就是端口间线速交换的能力。所谓线速交换,指的是同速率以太网端口间一对一发送报文情况下,所有端口都可以以满速率发送和接收数据帧,不出现任何数据帧的丢失和延迟。以太网的速度从10M提升到100M、1G、10G,要求交换芯片必须能同步提升性能以满足线速处理要求。
以太网交换的另一项重要指标是业务处理能力。与早期以太网仅用于计算机设备间的简单通讯不同,现在的以太网要求提供诸如用户管理、服务质量、安全管理、流量管制等诸多业务能力,因而要求以太网交换芯片能提供复杂的业务处理能力。
以太网交换芯片一般基于“存储-转发”方式。所谓“存储-转发”,是指以太网数据帧交换时,先将数据帧完整接收下来,保存在内部存储器中,经过正确性校验和转发处理后,才将数据帧从内部存储器发送到以太网上。与之相对的转发方式为“直通”,只要接收到足够的数据帧头信息,就开始转发处理,并将数据帧发送到以太网上,此时数据帧可能还未接收完毕,处于“边接收边发送”的状态。“直通”方式的优点是转发延迟小,问题是错误的数据帧也会被发送,因而较少被使用。
以太网交换过程通常基于“共享缓存”方式。“共享缓存”指的是,所有端口接收的数据帧都集中保存到一个公用存储器中,需要发送数据帧时,从该存储器中读取数据帧发送即可。

发明内容
本发明的目的在于提供能够克服现有技术中存在的至少一个缺陷的一种多端口以太网交换装置(该处理装置为芯片),采用存储转发和共享缓存的工作方式,其特征在于,具有业务转发过程与数据存取过程分离的结构。
其中,该处理装置包括数据通路,用于将从网络接收的数据帧不作任何业务处理就保存到一外部存储器中,并响应于控制通路的控制,将数据帧读出,进行必要的处理后发送到网络。
控制通路,采用多级流水线结构,用于对数据帧控制信息进行处理,控制数据通路对数据帧的发送过程。
其中,该数据通路包括
接收端以太网媒体控制器,用于从网络接收数据帧。
接收端先入先出型存储器,用于暂存接收端以太网媒体控制器接收的数据帧,并且对数据帧进行切分。
输入端数据通路模块,在设计上是一个可进行数据插入的多路选一开关,将选中的数据帧从接收端先入先出型存储器中读出并完成数据插入后发送到输出总线上。
外部存储器接口控制器,与输入端数据通路模块和输出端数据通路模块连接,用于控制数据存入和读出外部存储器的过程。
输出端数据通路模块,对即将输出的数据帧进行必要的修改、插入、或删除操作,然后将数据帧发送到发送端先入先出型存储器中。
发送端先入先出型存储器,暂存来自输出端数据通路模块的、即将发送的数据帧。
发送端以太网媒体控制器,与发送端先入先出型存储器连接,将处理后的数据帧发送到网络。
其中,控制通路包括输入端轮询及控制模块,用于对接收端先入先出型存储器的状态进行轮询和控制,并控制输入端数据通路模块和数据帧头缓存,使其将数据储存到外部存储器中。
数据帧信息先入先出型存储器,用于储存来自输入端轮询及控制模块的数据帧控制信息。
数据帧转发及业务处理器,接收所述数据帧信息先入先出型存储器和数据帧头缓存中的数据帧控制信息,完成转发及业务处理。
输出队列及调度器,用于为每个端口的多个输出队列中的每个队列提供调度服务,输出队列及调度器接收来自数据帧转发及业务处理器的数据帧控制信息,控制缓存管理器进行释放操作并且响应于输出端轮询及控制模块的调度申请将数据帧控制信息输出到输出端轮询及控制模块。
输出端轮询及控制模块,用于轮询发送端先入先出型存储器的状态,向所述输出队列及调度器发出调度申请,根据调度出的数据帧控制信息控制所述输出端数据通路模块及所述外部存储器接口控制器将数据帧从外部存储器读出并发送到所述发送端先入先出型存储器,并向缓存管理器提交维护信息。
缓存管理器,用于维护外部存储器的使用。
数据帧转发及业务处理器由多个业务处理单元构成,形成多级流水线结构。
其中,输入端轮询及控制模块包括输入端轮询模块,用于接收来自所述接收端先入先出型存储器的状态信息,完成对所述接收端先入先出型存储器状态的轮询,选择出待处理的端口号。
输入端状态维护模块,接收来自输入端轮询模块轮询出的待处理端口中的数据帧,当数据帧是新数据帧时,输入端状态维护模块向缓存管理器申请可用的外部缓存,并维护端口数据写入状态信息,将新数据帧头缓存控制信号输出到数据帧头缓存中;当数据帧不是新数据帧时,直接检查和维护端口数据写入状态信息,状态检查和维护的输出结果为数据写入外部缓存的地址,如果待处理端口是数据帧尾,则需将帧尾指示信号输出到数据帧头缓存中。
数据帧头缓存写入控制模块,接收来自所述输入端状态维护模块的新数据帧头缓存控制信号,控制所述数据通路将数据帧头写入数据帧头缓存。
输入端数据存储控制模块,接收来自所述输入端状态维护模块的写入外部缓存的地址信息,控制所述数据通路将选中的所述接收端先入先出型存储器中的数据帧写入外部存储器输出总线。
输入端数据帧控制信息生成模块,用于接收来自输入端状态维护模块的信号,当接收到数据帧尾时,将端口状态信息中的有关信息构造为数据帧控制信息,并将生成的数据帧控制信息输出到数据帧信息先入先出型存储器中。
其中,输出队列及调度器包括输出队列服务器,用于提供服务等级,将数据帧转发及业务处理器与数据输出通路隔开。输出队列服务器在功能上是一个先入先出型存储器。
调度器,根据所述输出端轮询及控制模块的请求从端口队列中输出一个数据帧。
其中,输出端轮询及控制模块包括输出端轮询模块,用于接收所述发送端先入先出型存储器的状态信息,完成对所述发送端先入先出型存储器状态的轮询,选择出待处理的端口号。
输出端状态维护模块,接收来自输出端轮询模块轮询出的待处理端口中的数据帧,检查和维护端口的数据帧发送状态,并且判断数据帧是否已经发送完毕,如果数据帧发送已经完毕则向缓存管理器提出释放申请,缓存管理器对相应缓存单元的控制信息进行释放操作,如果返回的数据帧表明数据帧因某种原因已被标记为丢弃,则输出端状态维护模块使用保存在数据帧控制信息中的缓存单元地址向缓存管理器提出释放中请,缓存管理器对相应缓存单元的控制信息进行释放操作。
输出端数据帧读出及修改控制模块,接收来自所述输出端状态维护模块的地址信号,控制所述输出端数据通路模块从所述外部存储器接口控制器读出数据,并控制所述输出端数据通路模块完成对数据帧的修改,修改后的数据被控制写入到所述发送端先入先出型存储器中。
一种多端口以太网交换装置的数据传输方法,其特征在于,该数据传输方法包括以下步骤步骤202,控制通路控制数据通路将从网络接收的数据帧不经过任何业务处理就储存到外部存储器中。
步骤204,所述控制通路采用多级流水线方式对数据帧控制信息进行处理。
步骤206,所述控制通路根据业务处理流水线对数据帧的处理结果,控制所述数据通路读出储存在所述外部存储器中的数据帧,对其进行必要的处理后发送到网络。
其中,步骤202包括以下步骤
步骤202a,接收端以太网媒体控制器从网络接收数据帧,并将接收的数据帧传送到接收端先入先出型存储器中。
步骤202b,接收端先入先出型存储器在暂存数据帧的同时,将数据帧进行切分。
步骤202c,输入端轮询及控制模块对端口的接收端先入先出型存储器不断进行轮询,轮询出一个已接收到数据帧的端口,进行数据帧缓存单元地址维护和业务处理准备。
步骤202d,将接收端先入先出型存储器中的数据通过输入端数据通路模块及外部存储器接口控制器写入到外部存储器中。
其中,步骤206包括以下步骤步骤206a,输出端轮询及控制模块不断轮询发送端先入先出型存储器发送数据的状态,直到发现有端口有一个或多个空闲数据块空间。
步骤206b,检查端口的数据帧是否已经发送完毕,如果数据帧已经发送完毕,则向输出队列及调度器申请新的待发送数据帧,并使用数据帧控制信息中的外部缓存地址将数据帧从外部存储器中读出;如果数据帧还没有发送完毕,则使用端口状态中的地址信息将数据帧从所述外部存储器中读出。
步骤206c,输出端数据通路模块在输出端轮询及控制模块的控制下对读出的数据帧进行处理,并将其写入发送端先入先出型存储器。
步骤206d,输出端轮询及控制模块对数据帧缓存单元地址进行维护,发送端以太网媒体控制器将数据帧发送到网络。
其中,输入端轮询及控制模块进行轮询及处理的过程为步骤402,输入端轮询模块对所有端口的接收端先入先出型存储器的状态进行轮询,轮询出某个已经接收到一个数据块的接收端先入先出型存储器。
步骤404,输入端状态维护模块判断接收到的数据帧是否是新数据帧。
步骤406,如果是新数据帧,向缓存管理器申请可用的外部缓存地址。
步骤408,如果是新数据帧,数据帧头缓存写入控制模块将一控制信号发送到数据帧头缓存,将新数据帧的数据帧头写入数据帧头缓存中。
步骤410,输入端数据存储控制模块控制接收端先入先出型存储器和输入端数据通路模块以及外部存储器接口控制器将接收到的数据块写入外部存储器中。
步骤412,输入端状态维护模块维护端口数据的写入信息和状态。
步骤414,接收端以太网媒体控制器判断是否是数据帧尾,并将该信息通过指定信息位传送给输入端状态维护模块。
步骤416,如果是数据帧尾,输入端状态维护模块调整端口信息。
步骤418,输入端数据帧控制信息生成模块生成数据帧控制信息并将其写入数据帧信息先入先出型存储器中。
步骤420,接收端先入先出型存储器处理结束,进行下一次轮询及处理。
输入端数据轮询及控制模块采用多级轮询结构,即将端口分成多个组,每个组内各自进行轮询,再对所有组的轮询结果进行组间轮询,选择出每次需要处理的接收端先入先出型存储器端口。
其中,输出端轮询及控制模块进行轮询及处理的过程为步骤602,输出端轮询模块轮询出至少有一个空闲数据块的发送端先入先出型存储器。
步骤604,输出端状态维护模块判断该端口的数据帧是否已经发送完毕。
步骤606,如果端口的帧已经发送完毕,那么输出端状态维护模块向输出队列及调度器申请新的待发送数据帧。
步骤608,输出端数据帧读出及修改控制模块控制输出端数据通路模块和发送端先入先出型存储器,将数据块从外部存储器中读出,进行必要的处理然后写入发送端先入先出型存储器中。
步骤610,输出端状态维护模块维护端口的帧发送状态。
步骤612,发送端先入先出型存储器处理结束,进行下一次轮询及处理。
转发过程与存储过程分离,利于实现高性能、高业务能力要求的转发过程。转发过程处理复杂的业务处理流程,使用多级流水线实现,不会对系统性能产生影响。存储过程使用高速率的数据保存和读取通道构造,使用成本低廉的外部动态存储器即可支持高性能、高带宽要求,不会挤压转发过程的灵活处理能力。
对于每个待转发的数据帧,不经过任何转发处理就进行存储器操作,简化了对缓存管理的要求,尤其是多播缓存管理,加强了系统稳定性,降低了芯片成本。


通过参考附图,本发明的特征和优点将变的更加明显,其中图1是根据本发明的多端口以太网交换装置的框图;图2是根据本发明的多端口以太网交换装置的数据传输方法的框图;图3是根据本发明的输入端轮询及控制模块的逻辑结构图;图4是根据本发明的输入端轮询及控制模块进行轮询及处理的过程的流程图;图5是根据本发明的输出端轮询及控制模块的逻辑结构图;以及图6是根据本发明的输出端轮询及控制模块进行轮询及处理的过程的流程图。
具体实施例方式
现在参照附图对根据本发明的具体实施例进行说明,应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
图1是根据本发明的多端口以太网交换装置的框图,该处理装置为芯片。图中除外部存储器130以外的其余部分构成了本设计方案,外部存储器130使用工业标准的DDR SDRAM,在提供高性能的同时降低整个系统的造价。本发明的高性能以太网交换装置由数据通路和控制通路构成。图中,细实线表示控制信息或业务处理信息,细实线相连的单元构成控制通路,完成行为控制及业务处理功能。粗实线表示数据信息,其相连的单元构成数据通路,完成数据保存和发送功能。
数据通路包括接收端以太网媒体控制器(RxMAC)102、接收端先入先出型存储器(RxFIFO)104、输入端数据通路模块110、外部存储器接口控制器112、输出端数据通路模块114、发送端先入先出型存储器(TxFIFO)108、发送端以太网媒体控制器(TxMAC)106,其功能为在控制通路的控制下,将RxMAC 102从网络接收的数据帧保存到外部存储器(DDR SDRAM)130中,在控制通路的控制下,将数据帧从外部存储器130中读出并修改帧格式后从TxMAC 106发出到网络上。
控制通路包括输入端轮询及控制模块116、数据帧信息先入先出型存储器118、数据帧转发及业务处理器120、输出队列及调度器122、输出端轮询及控制模块124、缓存管理器126,其功能为控制数据写入外部存储器130的过程,然后对输入的数据完成业务处理和转发决策,完成输出队列调度后,控制待发数据读出外部存储器130并发送到网络的过程。
本发明的一个实现为4个1G以太网端口和24个100M以太网端口的交换,以下设计说明中的所有设计参数以该设计规格为目标。如果支持更多或更少数量以太网端口的交换,可能需要对部分设计参数进行调整,调整参数不会对本发明有实质性改进。
RxMAC102和TxMAC106分别是MAC(以太网媒体控制器)的接收部分和发送部分,MAC的功能在IEEE 802.3协议中定义,是标准的以太网数据帧处理单元,用于从以太网链路上接收或发送数据帧。实际应用时,还需要在MAC上外接以太网物理层芯片才能真正和以太网通讯。为简化整体设备的造价,也可以将以太网物理层芯片集成到以太网交换芯片内部,这仅仅是集成度的提高,不构成对本发明的实质性改进。本方案外接多个以太网端口时,则芯片内应包含相应数量的MAC。
RxFIFO 104用于暂存RxMAC 102接收到的数据。在本实施例中,数据帧被保存到外部存储器130时需要切分成固定长度,如128字节,因此RxFIFO 104在暂存数据的同时也完成数据帧的切分,每128字节切分为一块,不足128字节的报文或数据帧尾也分为一块,切分过程通过按数据块读出的方式实现。由于芯片内的数据存储速度远高于RxMAC 102接收数据的速度且数据存储以128字节块为单位衡量,RxFIFO 104仅需设计为2个128字节数据块长度,最多不超过3个128字节数据长度,即可支持全速率数据接收,无需考虑待处理的数据帧总长度。另外,为了适应输入速度低,读出速度高的特点,该RxFIFO 104可以设计为输入位宽和输出位宽不同,如RxMAC 102写入RxFIFO 104的位宽为32bit,而输入端数据通路模块110读取的位宽为64bit或128bit,从而减少RxMAC 102侧的总线位宽,减少芯片面积。
输入端轮询及控制模块116的功能是轮询所有RxFIFO 104中数据接收的状况,为每个数据帧申请可用的外部缓存,控制输入端数据通路模块110将数据帧写入申请到的缓存中,当每个数据帧保存完毕时,将数据帧头和数据帧的保存位置等控制信息通过数据帧信息先入先出型存储器118发送给数据帧转发及业务处理器120进行业务处理。
输入端数据通路模块110的功能是在输入端轮询及控制模块116的控制下,将选中的RxFIFO 104的数据读出发送到外部存储器130的输出总线上,如果是新数据帧,同时将该数据帧发送到相关端口的数据帧头缓存中。另外,该单元具有数据插入功能,可在输入数据被送到外部存储器130前插入预设的数据,用于输入数据帧的格式统一化操作,方便业务处理。输入端数据通路模块110在设计上主要是一个可进行数据插入的多路选一开关。
数据帧转发及业务处理器120是由多个业务处理单元构成的多级流水线,用于完成以太网交换需要支持的二层转发、IP转发、安全处理等业务功能。详细的业务处理过程与本发明无关,本文不再讨论。
数据帧转发及业务处理器120通过数据帧信息先入先出型存储器118和输入端轮询及控制模块116以及数据帧头缓存与输入端数据接收过程连接,通过输出队列及调度器122和输出端轮询及控制模块124与输出端数据发送过程衔接,由于输出队列及调度器122的速率隔离作用,使得数据帧转发及业务处理器120在结构上完全独立于数据输入输出过程。另外,数据帧转发及业务处理器120只使用数据帧头信息及输入端口等信息即可决定数据帧转发,因而数据帧转发及业务处理器120的流水线的调整不会对数据发送和接收速度产生限制。这样,无论业务处理过程如何变化,只要调整业务处理流水线的设计保证流水线全速运行,即可保证芯片系统提供全速率处理能力。同样,如果以太网端口增加或端口速率提高,则可以分别提高数据通路的性能和业务处理流水线的性能,两者不构成互相制约关系。
输出队列及调度器122的功能是为每个端口提供多个队列以便输出到该端口的数据帧可以依次被发送。输出队列的配置结构、拥塞控制算法、调度输出算法等是决定以太网交换芯片提供的服务质量的关键,其详细定义和处理过程与本发明无关,本文不再讨论。
输出队列服务器在功能上是一个先入先出型存储器,将业务处理流水线与数据输出过程隔离,详细的队列实现结构与本发明无关,本文不再讨论。
调度器的功能是响应输出端轮询及控制模块124对各端口的申请,从该端口的多个输出队列中选择出待发送的数据帧。为了提高调度器的响应速度,调度器使用了“预调度”结构。所谓“预调度”,是指调度器预先为所有端口调度出一个数据帧,当输出端轮询及控制模块124提出端口的调度申请时即可立刻提供调度结果,在输出数据过程使用该调度结果的同时,调度器可完成该端口的下一个数据的调度,以便响应下一次对本端口的调度申请。通过“预调度”结构,使得输出端轮询和队列调度可以并行操作,降低了对调度器的处理速度要求。
输出端轮询及控制模块124的功能是轮询TxFIFO 108的状态,轮询出至少有一个数据块空闲的TxFIFO 108,则向调度器申请端口的待发数据帧信息,获得返回信息后,根据其中的外部缓存地址从外部缓存128中读出数据帧的内容,指示输出端数据通路模块114完成最后修改后,写入到TxFIFO 108中。如果待发送数据长度超过一个数据块大小,则需要多次轮询该端口并进行多次发送操作。
TxFIFO 108用于暂存即将发送的数据。在本实施例中,虽然数据帧是切分成固定长度的数据块保存在外部存储器中,并且输出过程也是以数据块为单位读取到TxFIFO 108中,但在TxFIFO 108中每一个数据块是连续存放的,TxMAC 106只需要依次连续发送即可,数据块的切分不会对发送产生任何影响。由于芯片内的数据读取速度远高于TxMAC 106发送数据的速度,TxFIFO 108仅需设计为2个128字节数据块长度,最多不超过3个128字节数据长度,即可支持全速率数据发送,无需考虑待处理的数据帧总长度,这将可以减少芯片面积。同样,为了适应输入速度要求高,读出速度要求低的特点,TxFIFO 108也可以设计为输入位宽和输出位宽不同,如TxMAC 106侧为32bit,输出端数据通路模块114侧为64bit或128bit,以减少RxMAC 102侧的总线位宽,减少芯片面积。
外部存储器接口控制器112接收输入端轮询及控制模块116的写外部存储器申请,将输入数据通路模块110发送到外部存储器输入总线上的数据写入到外部存储器130中,并接收输出端轮询及控制模块124的读外部存储器申请,将外部存储器130中的数据通过外部存储器输出总线发送到输出数据通路模块114,每次读写操作为1~128字节。
由于DDR SDRAM 130访问需要预充电、激活等操作才能进行读写操作,想要获得高带宽访问能力必须谨慎设计访问时序。外部存储器接口控制器使用了专利算法协调读写申请,设置访问时序,为数据缓存过程提供足够的存储器带宽支持。由于该专利内容不影响本发明涉及的技术方案,本文不对该专利进行详细描述,具体内容请参考有关专利设计文档。
缓存管理器126的功能是维护数据帧缓存,也就是维护外部存储器130的使用。本实施例使用了按128字节数据块为单元进行读写,但按照最长数据帧维护数据帧缓存的方法,具体内容为将所有外部存储器130按最长数据帧字节为单位进行划分,如2048字节,称为缓存单元,每个缓存单元以一个地址表示,可直接对应到外部存储器地址。对每个新进入的数据帧,都分配一个缓存,无论真正的数据占用了多少内容,空闲字节都不能给其他数据帧使用,数据帧在内部处理时都始终携带缓存单元地址和数据帧长度,这样在数据帧输出时使用这两个信息就可以正确的读出外部存储器130中的数据。使用这种方法,缓存管理器只需对每个缓存单元进行维护即可,一个数据帧只会使用一个缓存单元,从而减少了缓存管理器需要操作的数据量,从而以粗粒度的使用低价外部存储器的方式换取了芯片内部数据量的大幅减少,并且简化了芯片算法开销。
如前,以128字节为单元进行数据读写的过程完全在输入端和输出端轮询及控制模块124中完成,缓存管理器不再需要介入,减少了缓存管理器的设计要求。
缓存管理的过程包括缓存分配和缓存回收两个过程。缓存分配发生在数据输入过程中,由输入端轮询及控制模块116提出分配申请,缓存管理器126收到中请后返回一个未用的缓存单元地址即可。缓存回收发生在队列和数据输出过程中,输出队列发送完毕或如果发生了拥塞需要丢弃数据帧,此时由输出队列及调度器122用缓存单元地址向缓存管理器126提出释放申请,缓存管理器126对相应缓存单元的控制信息进行释放操作。业务转发过程会导致一些数据帧因业务原因被丢弃,所有丢弃数据帧的缓存释放申请可由输出端轮询及控制模块124使用保存在数据帧控制信息中的缓存单元地址向缓存管理器126申请,由缓存管理器126进行释放操作。
缓存管理过程中需要区别单播和多播两种情况。单播是“单入单出”的数据帧,多播是“单入多出”的数据帧,数据帧转发过程中,多播只有一份拷贝存放在外部存储器130中,需要进行多次输出时则对这份拷贝进行多次读操作。为统一单播和多播转发时的缓存管理,缓存管理算法中使用了“数据帧引用计数器”的方法,为每个数据帧单元地址设置一个计数器,新数据帧进行缓存申请时,先为分配的缓存单元配置一个最大值的计数器,当业务处理单元完成输出队列的入队操作后,即可以知道每个数据帧的实际复制份数,单播为一份,多播为一份或多份,缓存管理器126根据输出队列及调度器112发送的数据帧复制状况更新缓存单元的计数器,以精确反映数据帧的复制数量,当数据帧从数据输出通路发送时,每发送一个数据帧就对相应缓存单元的计数器进行减操作,只有当已用数据帧单元的计数器减为零时,才表示这个单元的所有多播数据帧都被发送完毕,该缓存单元可被回收用于新数据帧。
需要说明的是,使用何种缓存管理方法并非本发明的关键技术,任何能提供缓存分配和回收机制的方法都可以支撑本发明的核心方案,以上进行详细说明仅仅是为了使本发明的阐述更加清晰和完整。
对于每个输入的数据帧,首先由RxMAC 102接收并保存到RxFIFO 104中。输入端轮询及控制模块116不断轮询各端口的RxFIFO 104接收数据的状态,只要发现有端口收到了一个完整数据块,则进行输入缓存操作。输入缓存操作首先要向缓存管理器126申请缓存单元,也就是外部存储器地址,获得地址后通过外部存储器输入总线将RxFIFO 104中的数据通过输入端数据通路模块110及外部存储器接口控制器112写入到外部存储器130中,对于超过一个数据块长度的数据帧,数据帧头以后的数据块不再需要申请新的存储器地址,只需由输入端轮询及控制模块116自动进行地址运算即可获得外部存储地址。
对每个数据帧,都要将数据帧头以一定字节长度的信息保存在为每端口设置的数据帧头缓存中,连同数据帧全部保存完毕后由输入端轮询及控制模块116提供的控制信息一起,交由数据帧转发及业务处理器进行数据帧转发和业务处理,经过业务处理后可获得数据帧的输出端口和数据帧修改控制信息。所有这些信息组成输出数据帧控制信息,包括缓存单元地址、数据帧长度、数据帧输出端口、数据帧输出修改指令等,作为一个数据帧控制包进入输出队列,等待从输出端口发送出去。单播数据帧仅被送入一个输出端口队列,多播数据帧会被送入一个或多个输出端口队列。数据帧送入输出端口队列的统计信息由输出队列及调度器122发送给缓存管理器126,以便进行缓存单元使用计数维护。
在输出侧,输出端轮询及控制模块124不断轮询TxFIFO 108发送数据的状态,只要发现有端口有一个或多个空闲数据块空间,就向输出队列及调度器122发送调度申请。如果输出端口对应的输出队列中有待发送数据,输出队列及调度器122将返回其数据帧控制信息,输出端轮询及控制模块124对该控制信息进行解析,用存储器地址信息向外部存储器接口控制器发出读申请,用数据帧长度信息控制多次读过程,用输出修改指令控制输出端数据通路模块114进行数据帧修改,即可完成数据从外部存储器130读出并经过外部存储器输出总线和输出端数据通路模块114发送到TxFIFO108,并且完成必须的数据帧修改的过程。每完成一个数据帧的发送,输出端轮询及控制模块124都向缓存管理器126发送一个释放申请,如果来自调度器的是需要直接丢弃的数据帧,则不进行任何输出操作,直接向缓存管理器发送一个释放申请。
发送到TxFIFO 108中的数据由TxMAC 106发送到网络,即完成数据帧的转发。
图2是根据本发明的多端口以太网交换装置的运行方法的框图。该多端口以太网交换芯片的运行方法是采用存储转发和共享缓存的方式进行的,包括以下步骤步骤202,控制通路控制数据通路将从网络接收的数据帧不经过任何业务处理就储存在外部存储器130中。
步骤204,控制通路采用多级流水线方式对数据帧控制信息进行处理。
步骤206,控制通路根据业务处理流水线对数据帧的处理结果,控制数据通路读出储存在外部存储器130中的数据帧,对其进行必要的修改后发送到网络。
其中,步骤202包括以下步骤步骤202a,接收端以太网媒体控制器102从网络接收数据帧,并将接收的数据帧传送到接收端先入先出型存储器104中。
步骤202b,接收端先入先出型存储器104在暂存数据帧的同时,将数据帧进行切分。
步骤202c,输入端轮询及控制模块110对端口的接收端先入先出型存储器104不断进行轮询,轮询出一个已接收到数据帧的端口,进行数据帧缓存单元地址维护和业务处理准备。
步骤202d,将接收端先入先出型存储器104中的数据通过输入端数据通路模块110及外部存储器接口控制器112写入到外部存储器130中。
其中,步骤206包括以下步骤步骤206a,输出端轮询及控制模块124不断轮询发送端先入先出型存储器108发送数据的状态,直到发现有端口有一个或多个空闲数据块空间。
步骤206b,检查该端口的数据帧是否已经发送完毕,如果数据帧已经发送完毕,则向输出队列及调度器122申请新的待发送数据帧,并使用数据帧控制信息中的外部缓存地址将数据帧从外部存储器130中读出;如果数据帧还没有发送完毕,则使用端口状态中的地址信息将数据帧从所述外部存储器中读出。
步骤206c,输出端数据通路模块114在输出端轮询及控制模块124的控制下对读出的数据帧进行修改,并将其写入发送端先入先出型存储器108。
步骤206d,输出端轮询及控制模块114对数据帧缓存单元地址进行维护,发送端以太网媒体控制器106将数据帧发送到网络。
图3是根据本发明的输入端轮询及控制模块的逻辑结构图。其中,输入端轮询及控制模块包括输入端轮询模块302,用于接收来自所述接收端先入先出型存储器104的状态信息,完成对所述接收端先入先出型存储器状态的轮询,选择出待处理的端口。
输入端状态维护模块304,接收来自所述输入端轮询模块302的待处理端口,待处理端口中是新帧时向所述缓存管理器126申请可用外部缓存并维护端口数据写入状态信息,不是新帧时直接检查和维护端口数据写入状态信息,状态检查和维护的输出结果为数据写入外部缓存的地址,如果待处理端口中是新帧,需输出新帧头缓存控制信号,如果待处理端口是帧尾需输出帧尾指示信号。
数据帧头缓存写入控制模块306,接收来自所述输入端状态维护模块304的新帧头缓存控制信号,控制所述数据通路将数据帧头写入数据帧头缓存128。
输入端数据存储控制模块308,接收来自所述输入端状态维护模块304的写入外部缓存的地址信息,控制所述数据通路将选中的所述接收端先入先出型存储器104中的数据帧写入外部存储器输出总线;以及输入端数据帧控制信息生成模块310,接收来自所述输入端状态维护模块304的帧尾指示信号后,将端口状态信息中的有关信息构造为数据帧控制信息,输出到所述数据帧信息先入先出型存储器118中。
图4是根据本发明的输入端轮询及控制模块的工作过程流程图。输入端轮询及控制模块的工作过程包括以下步骤步骤402,输入端轮询模块302对所有端口的接收端先入先出型存储器104的状态进行轮询,轮询出某个已经接收到一个数据块的接收端先入先出型存储器104。
步骤404,输入端状态维护模块304判断接收到的数据帧是否是新数据帧。
步骤406,如果是新数据帧,向缓存管理器126申请可用的外部缓存地址。
步骤408,如果是新数据帧,数据帧头缓存写入控制模块306将一控制信号发送到数据帧头缓存,将新数据帧的数据帧头写入数据帧头缓存128中。
步骤410,输入端数据存储控制模块控制接收端先入先出型存储器和输入端数据通路模块以及外部存储器接口控制器将接收到的数据块写入外部存储器130中。
步骤412,输入端状态维护模块维护端口数据的写入信息和状态。
步骤414,接收端以太网媒体控制器102判断是否是数据帧尾,并将该信息通过指定信息位传送给输入端状态维护模块。
步骤416,如果是数据帧尾,输入端状态维护模块调整端口信息。
步骤418,输入端数据帧控制信息生成模块310生成数据帧控制信息并将其写入数据帧信息先入先出型存储器118中。
步骤420,接收端先入先出型存储器104处理结束,进行下一次轮询及处理。
在数据写入外部缓存的过程中,输入端轮询及控制模块116向待操作的RxFIFO发送读指令,指令输入端数据通路模块110接收该RxFIFO 104的输出,向外部存储器接口发送写申请,即可完成数据从RxFIFO 104读出并写入外部存储器130的数据保存过程。
如果输入端口数量较少,RxFIFO数量少,输入端轮询及控制模块可以采用单级轮询结构,即每次都检查所有端口RxFIFO的状态,选择出接收到完整数据块的端口,然后进行有关处理。如果输入端口数量较多,RxFIFO数量大,输入端数据轮询及控制模块可以采用多级轮询结构,即将端口分成多个组,每个组内各自进行轮询,再对所有组的轮询结果进行组间轮询,选择出每次需要处理的RxFIFO端口。采用多级轮询结构的目的是尽可能快的从所有RxFIFO中迅速找到需要处理的RxFIFO,如果只采用单级轮询结构而RxFIFO数量很多,直接从中找出待处理的RxFIFO需要消耗芯片面积和较长的运算时间。
图5是根据本发明的输出端轮询及控制模块的逻辑结构图。其中,输出端轮询及控制模块包括输出端轮询模块502,用于接收所述发送端先入先出型存储器的状态信息,完成对所述发送端先入先出型存储器状态的轮询,选择出待处理的端口。
输出端状态维护模块504,接收来自所述输出端轮询模块的待处理端口,待处理端口若已完成一个数据帧的发送则向所述输出队列及调度器122提出数据帧申请,所述输出队列及调度器122返回调度出的数据帧信息给所述输出端状态维护模块用以维护端口发送状态信息,待处理端口的数据帧若未发送完毕则直接检查和维护端口的数据帧发送状态,状态检查和维护的输出结果为用于从外部缓存读取数据的地址,状态检查和维护还用于判断数据帧是否已发送完毕,如果数据帧发送完毕则所述输出端状态维护模块504使用保存在数据帧控制信息中的缓存单元地址向所述缓存管理器126提出释放申请,缓存管理器126对相应缓存单元的控制信息进行释放操作,如果前述输出队列及调度器122返回的数据帧表明数据帧因某种原因已被标记为丢弃,则所述输出端状态维护模块504使用保存在数据帧控制信息中的缓存单元地址向所述缓存管理器126提出释放申请,缓存管理器126对相应缓存单元的控制信息进行释放操作。
输出端数据帧读出及修改控制模块506,接收来自所述输出端状态维护模块504的地址信号,控制所述输出端数据通路模块114从所述外部存储器接口控制器读出数据,并控制所述输出端数据通路模块完成对数据帧的修改,修改后的数据被控制写入到所述发送端先入先出型存储器108中。
图6是根据本发明的输出端轮询及控制模块的工作过程流程图。输出端轮询及控制模块的工作过程包括以下步骤步骤602,输出端轮询模块502轮询出至少有一个空闲数据块的发送端先入先出型存储器104。
步骤604,输出端状态维护模块504判断该端口的数据帧是否已经发送完毕。
步骤606,如果端口的帧已经发送完毕,那么输出端状态维护模块向输出队列及调度器122申请新的待发送数据帧。
步骤608,输出端数据帧读出及修改控制模块506控制输出端数据通路模块和发送端先入先出型存储器108,将数据块从外部存储器130中读出、修改,并写入发送端先入先出型存储器108中。
步骤610,输出端状态维护模块504维护端口的帧发送状态。
步骤612,发送端先入先出型存储器108处理结束,进行下一次轮询及处理。
在数据读出外部缓存过程中,输出端轮询及控制模块124向外部存储器接口发送读申请,指示输出端数据通路模块114接收该TxFIFO 108的输入,向待操作的TxFIFO 108发送写指令,即可完成数据从RxFIFO 104读出并写入外部存储器130的数据保存过程。另外,在进行上述操作的过程中,输出端轮询及控制模块124可向输出端数据通路模块114发送数据修改指令,以完成对发送数据帧的修改。
与输入端轮询及控制模块类似,输出端轮询及控制模块可以采用单级轮询结构,也可以采用多级轮询结构以提高轮询速度并减少芯片面积消耗。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种多端口以太网交换装置,采用存储转发和共享缓存的工作方式,其特征在于,所述交换装置具有业务转发过程与数据存取过程分离的结构。
2.根据权利要求1所述的多端口以太网交换装置,其特征在于,包括数据通路,用于将从网络接收的数据帧不作任何业务处理就保存到一外部存储器中,并响应于控制通路的控制,将数据帧读出,进行处理后发送到所述网络;以及控制通路,采用多级流水线结构,用于对数据帧控制信息进行处理,控制所述数据通路对数据帧的发送过程。
3.根据权利要求2所述的多端口以太网交换装置,其特征在于,所述数据通路包括接收端以太网媒体控制器,用于从网络接收数据帧;接收端先入先出型存储器,用于暂存所述接收端以太网媒体控制器接收的数据帧,并且对数据帧进行切分;输入端数据通路模块,用于将选中的数据帧从所述接收端先入先出型存储器中读出并完成数据插入后发送到外部存储器输出总线上;外部存储器接口控制器,与所述输入端数据通路模块和输出端数据通路模块连接,用于控制数据存入和读出外部存储器的过程;输出端数据通路模块,对即将输出的数据帧进行必要的修改、插入、或删除操作,然后将数据帧发送到发送端先入先出型存储器中;发送端先入先出型存储器,用于暂存来自所述输出端数据通路模块的、即将发送的数据帧;以及发送端以太网媒体控制器,与所述发送端先入先出型存储器连接,用于将处理后的数据帧发送到网络。
4.根据权利要求3所述的多端口以太网交换装置,其特征在于,所述输入端数据通路模块在设计上是多路选一开关。
5.根据权利要求2所述的多端口以太网交换装置,其特征在于,所述控制通路包括输入端轮询及控制模块,用于对接收端先入先出型存储器的状态进行轮询和控制,并控制所述输入端数据通路模块和数据帧头缓存,使其将接收的数据储存到所述外部存储器中;数据帧信息先入先出型存储器,用于储存来自所述输入端轮询及控制模块的数据帧控制信息;数据帧转发及业务处理器,接收所述数据帧信息先入先出型存储器和数据帧头缓存中的数据帧,完成转发及业务处理;输出队列及调度器,用于为每个端口的多个输出队列中的每个队列提供调度服务,所述输出队列及调度器接收来自所述数据帧转发及业务处理器的数据帧控制信息,控制缓存管理器释放缓存,并且将所述数据帧控制信息发送到所述输出端轮询及控制模块;输出端轮询及控制模块,用于轮询发送端先入先出型存储器的状态,向所述输出队列及调度器发出调度申请,根据调度出的数据帧控制信息,控制所述输出端数据通路模块及所述外部存储器接口控制器将数据帧从外部存储器读出并发送到所述发送端先入先出型存储器,并向缓存管理器提交维护信息;以及缓存管理器,用于维护外部存储器的使用。
6.根据权利要求5所述的多端口以太网交换装置,其特征在于,所述数据帧转发及业务处理器由多个业务处理单元构成,形成多级流水线结构。
7.根据权利要求5所述的多端口以太网交换装置,其特征在于,所述输入端轮询及控制模块包括输入端轮询模块,用于接收来自所述接收端先入先出型存储器的状态信息,完成对所述接收端先入先出型存储器状态的轮询,选择出待处理的端口号;输入端状态维护模块,接收来自所述输入端轮询模块轮询出的待处理端口的数据帧,当所述数据帧是新数据帧时,所述输入端状态维护模块向所述缓存管理器申请可用的外部缓存,并维护端口数据写入状态信息,将新数据帧头缓存控制信号输出到所述数据帧头缓存中;当所述数据帧不是新数据帧时,直接检查和维护端口数据写入状态信息,状态检查和维护的输出结果为数据写入外部缓存的地址,如果是数据帧尾,则将帧尾指示信号输出到所述数据帧头缓存中;数据帧头缓存写入控制模块,接收来自所述输入端状态维护模块的新数据帧头缓存控制信号,控制所述数据通路将数据帧头写入数据帧头缓存;输入端数据存储控制模块,接收来自所述输入端状态维护模块的写入外部缓存的地址信息,控制所述数据通路将选中的所述接收端先入先出型存储器中的数据帧写入外部存储器输出总线;以及输入端数据帧控制信息生成模块,接收来自所述输入端状态维护模块的帧尾指示信号后,将端口状态信息中的有关信息构造为数据帧控制信息,输出到所述数据帧信息先入先出型存储器中。
8.根据权利要求5所述的多端口以太网交换装置,其特征在于,所述输出队列及调度器包括输出队列服务器,用于提供服务等级,将数据帧转发及业务处理器与数据输出通路隔开;以及调度器,根据所述输出端轮询及控制模块的请求从端口队列中输出一个数据帧。
9.根据权利要求8所述的多端口以太网交换装置,其特征在于,所述输出队列服务器在功能上是先入先出型存储器。
10.根据权利要求8所述的多端口以太网交换装置,其特征在于,所述调度器采用预调度结构,预先为每个端口调度出一个数据帧,当输出端轮询及控制模块提出端口的调度申请时,可以立刻提供调度结果。
11.根据权利要求5所述的多端口以太网交换装置,其特征在于所述输出端轮询及控制模块包括输出端轮询模块,用于接收所述发送端先入先出型存储器的状态信息,完成对所述发送端先入先出型存储器状态的轮询,选择出待处理的端口号;输出端状态维护模块,接收来自所述输出端轮询模块轮询的待处理端口的数据帧,检查和维护端口的数据帧发送状态,并且判断数据帧是否已发送完毕,如果数据帧发送完毕则向所述缓存管理器提出释放申请,缓存管理器对相应缓存单元的控制信息进行释放操作,如果返回的数据帧表明数据帧因某种原因已被标记为丢弃,则所述状态维护模块使用保存在数据帧控制信息中的缓存单元地址向所述缓存管理器提出释放申请,缓存管理器对相应缓存单元的控制信息进行释放操作;以及输出端数据帧读出及修改控制模块,接收来自所述输出端状态维护模块的地址信号,控制所述输出端数据通路模块从所述外部存储器接口控制器读出数据,并控制所述输出端数据通路模块完成对数据帧的处理,处理后的数据被写入到所述发送端先入先出型存储器中。
12.一种多端口以太网交换装置的数据传输方法,其特征在于,所述运行方法包括以下步骤步骤202,所述控制通路将从网络接收的数据帧储存在外部存储器中;以及步骤204,所述控制通路采用多级流水线方式对数据帧控制信息进行处理;以及步骤206,所述控制通路根据处理结果,控制所述数据通路读出储存在所述外部存储器中的数据帧,对所述数据帧进行必要处理后将其发送到网络。
13.根据权利要求12所述的数据传输方法,其特征在于,所述步骤202包括以下步骤步骤202a,所述接收端以太网媒体控制器从网络接收数据帧,并将接收的数据帧传送到所述接收端先入先出型存储器中;步骤202b,所述接收端先入先出型存储器在暂存数据帧的同时,将数据帧进行切分;步骤202c,所述输入端轮询及控制模块对端口的接收端先入先出型存储器进行轮询,轮询出已接收到数据帧的端口,进行数据帧缓存单元地址维护和业务处理准备;以及步骤202d,将所述接收端先入先出型存储器中的数据通过所述输入端数据通路模块及所述外部存储器接口控制器写入到外部存储器中。
14.根据权利要求12所述的数据传输方法,其特征在于,所述步骤206包括以下步骤步骤206a,所述输出端轮询及控制模块不断轮询所述发送端先入先出型存储器发送数据的状态,直到发现有端口有一个或多个空闲数据块空间;步骤206b,检查所述端口的数据帧是否已经发送完毕,如果数据帧已经发送完毕,则向所述输出队列及调度器申请新的待发送数据帧,并使用数据帧控制信息中的外部缓存地址将新的数据帧从外部存储器中读出;如果所述数据帧还没有发送完毕,则使用端口状态中的地址信息将所述数据帧从所述外部存储器中读出;步骤206c,所述输出端数据通路模块在所述输出端轮询及控制模块的控制下对读出的数据帧进行修改,并将其写入所述发送端先入先出型存储器;步骤206d,所述输出端轮询及控制模块对数据帧缓存单元地址进行维护,所述发送端以太网媒体控制器将数据帧发送到网络。
15.根据权利要求12所述的数据传输方法,其特征在于,所述输入端轮询及控制模块进行轮询及处理的过程为步骤402,所述输入端轮询模块对所有端口的接收端先入先出型存储器的状态进行轮询,轮询出某个已经接收到一个数据块的接收端先入先出型存储器;步骤404,所述输入端状态维护模块判断接收到的数据帧是否是新数据帧;步骤406,如果是新数据帧,向所述缓存管理器申请可用的外部缓存地址;步骤408,如果是新数据帧,所述数据帧头缓存写入控制模块将一控制信号发送到所述数据帧头缓存,将新数据帧的数据帧头写入所述数据帧头缓存中;步骤410,所述输入端数据存储控制模块控制所述接收端先入先出型存储器和所述输入端数据通路模块以及所述外部存储器接口控制器将接收到的数据块写入外部存储器中;步骤412,所述输入端状态维护模块维护端口数据的写入信息和状态;步骤414,接收端以太网媒体控制器判断是否是数据帧尾,并将该信息通过指定信息位传送给输入端状态维护模块;步骤416,如果是数据帧尾,所述输入端状态维护模块调整端口信息;步骤418,所述输入端数据帧控制信息生成模块生成数据帧控制信息并将其写入数据帧信息先入先出型存储器中;以及步骤420,所述接收端先入先出型存储器处理结束,进行下一次轮询及处理。
16.根据权利要求14或15所述的数据传输方法,所述输入端数据轮询及控制模块采用多级轮询结构,即将端口分成多个组,每个组内各自进行轮询,再对所有组的轮询结果进行组间轮询,选择出每次需要处理的接收端先入先出型存储器端口号。
17.根据权利要求14所述的数据传输方法,其特征在于,所述输出端轮询及控制模块进行轮询及处理的过程为步骤602,所述输出端轮询模块轮询出至少有一个空闲数据块的发送端先入先出型存储器;步骤604,所述输出端状态维护模块判断该端口的数据帧是否已经发送完毕;步骤606,如果所述端口的数据帧已经发送完毕,那么所述输出端状态维护模块向输出队列及调度器申请新的待发送数据帧;步骤608,所述输出端数据帧读出及修改控制模块控制所述输出端数据通路模块和所述发送端先入先出型存储器,将数据块从外部存储器中读出、修改,并写入发送端先入先出型存储器中;步骤610,所述输出端状态维护模块维护端口的帧发送状态;以及步骤612,所述发送端先入先出型存储器处理结束,进行下一次轮询及处理。
全文摘要
本发明提供了一种多端口以太网交换装置及数据传输方法,该处理装置基于存储转发和共享缓存的方式,其特征在于,该交换装置具有业务转发过程与数据存取过程分离的结构,包括数据通路,用于将从网络接收的数据帧不作任何业务处理就保存到一外部存储器中,并响应于控制通路的控制,将数据帧读出,进行必要的处理后发送到网络;以及控制通路,采用多级流水线结构,用于对数据帧控制信息进行处理,控制所述数据通路对数据帧的发送过程。
文档编号H04L12/56GK1859275SQ200510036218
公开日2006年11月8日 申请日期2005年7月27日 优先权日2005年7月27日
发明者林郁, 梅柳波, 林晖, 崔靖杰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1