一种数据收发装置的制作方法

文档序号:7554627阅读:153来源:国知局
专利名称:一种数据收发装置的制作方法
技术领域
本发明涉及数据收发装置,尤其涉及IOGbps高速以太网中数据帧的收发装置。
背景技术
目前在对高性能网络设备设计架构的实现中,对于以太网数据帧的接收通常做法是采用FIFO (First In First Out)队列方式。采用这种数据接收方式,只有每个队列的第一个数据帧能被处理。在网络数据传输速率不高的情况下,由于数据帧的接收和内部数据处理速率之间的差异还不明显,FIFO方式尚能满足系统性能的要求。但是当网络速率达到IOGbps甚至更高以后,如果队列最前面的数据帧得不到及时处理,队列中其他所有的数据帧都不能被传送和处理,从而造成头阻塞(HOL: Head of Line)现象发生。头阻塞将导致系统性能降低58.6%,甚至引起丢包现象,影响网络服务质量QoS。
在高速核心路由器的设计中,通常采用虚拟输出队列(V0Q:Virtual Out Queue)技术,将目的输出端口不同的数据帧放在不同的队列中缓存,因此发往不同输出端口的数据帧相互不存在HOL阻塞,在使用合理的算法的情况下,VOQ方式可发挥100%系统性能。但是这种方式适合于仅需要完成对输入队列中的数据帧的路由,不需要对数据做任何处理的接收;而在网络安全处理中,对于数据帧除了进行路由外,往往需要对数据帧进行加解密和认证等处理,这些处理需要占用系统大量处理时间,因此VOQ方式也不适合用于高速特别是IOGbps的网络安全应用中。
另外,从以太网接收的数据帧长度的不确定性严重影响了高速数据接收的效率。当网络数据流量达到IOGbps甚至更高时,高速数据帧接收与在线网络设备内部数据处理速率不匹配的矛盾成为制约系统性能的一个关键因素。
第03127969.4号专利“基于FIFO队列的数据包线速处理方法及其装置”采用两级FIFO的方法可以解决对不定长数据包的线速处理,但是如果在高速以太网络中,如果后级对数据帧的处理速度跟不上数据帧接收速度的话,就会造成头阻塞现象发生,因此该装置无法满足高速网络数据接收的需求。发明内容
为了克服现有技术的不足,本发明提供了一种数据收发装置,以降低数据帧的丢包率。
—种数据收发装置,包括共享缓存模块、分布式缓存模块、数据帧调度器和处理单元,所述共享缓存模块包括异步FIFO缓存器,所述分布式缓存模块包括至少两个FIFO缓存器; 当FIFO缓存器出现空闲,空闲的FIFO缓存器发送中断信号给所述共享缓存模块,所述共享缓存模块将一个数据帧发送给相应的FIFO缓存器; 当处理单元出现空闲,通过所述数据帧调度器将存有数据帧的FIFO缓存器中的数据帧发送到所述处理单元。
当所述共享缓存模块同时接收到多个处于空闲的FIFO缓存器发送来的中断信号,若所述共享缓存模块上一次发送数据帧给第i个FIFO缓存器,则依照从第i+Ι个FIFO缓存器至最大序号的FIFO缓存器、再从第一个FIFO缓存器至第i个FIFO缓存器的顺序,所述共享缓存模块依次将数据帧发送到相应空闲的FIFO缓存器。所述处理单元包括至少两个优先级不同的处理单元;
当多个处理单元出现空闲时,空闲的处理单元分别通过所述数据帧调度器向所述分布式缓存模块中存有数据帧的FIFO缓存器发送请求信号;
分布式缓存模块中的存有数据帧的FIFO缓存器通过所述数据帧调度器选择一个发出请求信号的处理单元,并向被选中的所述的处理单元发出允许信号;
所述的处理单元接收到所述允许信号后,通过所述数据帧调度器选择当前优先级最高的存有数据帧的FIFO缓存器并发出接受信号后,开始接收对应的FIFO缓存器发送的数据帧。共享缓存模块的容量与分布式缓存模块的容量相等。所述分布式缓存模块的各个FIFO缓存器的容量相等。本发明内部处理模块和分布式缓存模块间采用信号握手机制:只有当处理单元完成一个数据帧读入后,分布式缓存模块才能接收下一个数据帧,分布式缓存中的FIFO的容量为一个最长以太网数据帧的长度。共享缓存模块中的异步FIFO的容量选择最坏情况下的容量,即所有的处理单元都处在非空闲状态,因此为单个分布式缓存模块的FIFO缓存器容量的η倍(在每个FIFO容量相同的情况下,η为FIFO缓存器的个数,)。η的值可以根据不同网络设备的需求进行配置,从而满足不同速度的网络环境的应用。本发明中的模块接口信号采用基于数据帧的方式,通过增加对数据帧包头包尾和有效包的控制信号,并通过设置中断信号控制进出FIFO缓存器的数据帧,实现了对可变长度以太网数据帧的高速接收。本发明中的数据帧调度器可以根据网络设备不同性能要求选择不同的调度算法进行实现,增加了该装置的设计的灵活性。


图1是一种实施例的以太网络安全设备的示意 图2是一种实施例的数据收发装置的示意 图3是一种实施例的数据收发装置的工作流程 图4是一种实施例的数据收发装置的握手信号示意 图5是一种实施例的数据帧调度器的调度过程示意图。
具体实施例方式以下将结合附图,对本发明的具体实施例作进一步详细说明。如图1所示,一种实施例的以太网络安全设备,其包括SRAM控制器、片外算法控制器、SAD SRAM、SH)查表模块、32-bit CPU、高性能可扩展安全协议处理模块、以及本发明的实施例中的数据收发装置,它们通过挂在系统总线进行通信。如图2所示,一种实施例的数据收发装置,包括高速以太网接口模块、共享缓存模块、包括共享缓存模块、分布式缓存模块、数据帧调度器和处理单元,高速以太网接口模块用于接收来自以太网的数据并封装成数据帧,共享缓存模块采用一个异步FIFO缓存器完成对数据帧的一级缓冲,分布式缓存模块包括至少两个FIFO缓存器,完成对数据的二级缓冲;数据帧调度器在分布式缓存模块和内部处理模块之间通过选择合理的调度算法实现数据帧的调度,从而实现处理单元资源利用的最大化,减小接收数据帧的丢包率。FIFO缓存器可以采用异步FIFO,也可以采用同步FIFO ;处理单元可以有一个,也可以包括多个。
当本实施例的数据收发装置开始工作,其工作过程如下,如图3-5所示: I)整个数据收发装置初始化,共享缓存模块、分布式缓存模块、数据帧调度器和处理单元等都处于空闲状态。
2)高速以太网接口模块接收数据并封装成数据帧,并通知共享缓存模块。
3)共享缓存模块接收来自高速以太网接口模块发送的数据帧; 4)初始化时,共享缓存模块依次分配数据帧给各个FIFO缓存器,当FIFO缓存器存储有数据帧时,对应的状态信号置为高电平,表明该FIFO存储有数据帧。
5)之后,共享缓存模块根据分布式缓存模块的中断信号判断是否存在空闲的FIFO缓存器,如果有空闲的FIFO缓存器,FIF·O缓存器发送中断信号给共享缓存模块。当处理单元从某个FIFO缓存器读取完数据帧后,该FIFO缓存器即处于空闲状态,并向共享缓存模块发送中断信号。
6)共享缓存模块根据中断信号将数据帧分配给空闲的FIFO缓存器,具体可以采用均衡的的分配算法: 如果当前来自分布式缓存模块只有一个中断请求信号,即只有一个FIFO缓存器出现空闲状态,则共享缓存模块对该中断请求信号进行处理,将一个数据帧分配给该请求信号对应的FIFO缓存器中。
如果当前没有中断请求信号,即所有FIFO缓存器都没有出现空闲状态,则共享缓存模块处于等待状态,直到中断请求信号出现。
如果同时有多个中断请求信号,即同时有多个FIFO缓存器出现空闲状态,若上一次共享缓存模块将数据帧分配到第i个FIFO缓存器,则依照从第i+Ι个FIFO缓存器至最大序号的FIFO缓存器、再从第一个FIFO缓存器至第i个FIFO缓存器的顺序,共享缓存模块依次将数据帧发送到相应空闲的FIFO缓存器。例如,同时有第5、第7、第9和第3个FIFO缓存器向共享缓存模块发送中断信号,而上一次数据帧分配到第4个FIFO缓存器,则共享缓存模块向分布式缓存模块分配数据帧的顺序如下 第5、第7、第9和第3。
当分布式缓存模块中的FIFO缓存器有数据帧时,对应FIFO缓存器的状态信号置高,表明该FIFO缓存器存有数据帧。
若仅有一个处理单元时,当处理单元出现空闲,处理单元向存有数据帧的FIFO缓存器发送请求信号,数据帧调度器选择某一个存有数据帧的FIFO缓存器,处理单元从该FIFO缓存器中读取数据帧。
若处理单元包括至少两个优先级不同的处理单元时,数据帧调度器可以采用多次迭代SLIP调度算法(iSLIP)实现数据帧的高效公平调度,算法如下: 当多个处理单元出现空闲时,空闲的处理单元分别通过所述数据帧调度器向存有数据帧的FIFO缓存器发送请求信号; 接收到请求信号的存有数据帧的FIFO缓存器通过数据帧调度器在请求的处理单元中,选择当前优先级最高的处理单元,并通过数据帧调度器向所述优先级最高的处理单元发出允许信号,其余处理单元不作响应; 发送请求信号的处理单元接收到允许信号后,选择当前优先级最高的FIFO缓存器并发出接受信号,之后开始读取该FIFO缓存器中的数据帧; 没有得到接受信号的FIFO缓存器通过数据帧调度器继续向当前优先级最高的处理单元发出允许信号,直至该FIFO缓存器被处理单元接受。
图4为一种实施例的数据收发装置的模块间握手信号示意图,当pkt_rX_avail信号为高时,表明高速以太网接口模块中有数据帧,共享缓存模块首先根据分布式缓存的Interrupt信号,判断分布式缓存模块中是否有空闲的FIFO缓存器,如果有,共享缓存模块则将pkt_rX_ren信号置高,表示可以接收数据帧。共享缓存模块根据Interrupt信号的状态,按照总线轮询的分配算法选择分布式缓存模块中的FIFO缓存器,并将对应FIFO的Wren信号置高。分布式缓存模块中对应的FIFO读入数据帧,当ValicLout信号变为低时,Wren信号置为低,表明读完一个数据帧。
分布式缓存模块中如果有空闲FIFO缓存器,将该空闲FIFO缓存器对应的Interrupt信号置为高表明该FIFO缓存器可以接收数据帧,Wren有效(高电平)时开始接收数据帧,并将Interrupt置低;当FIFO缓存器读完一个数据帧时,对应FIFO缓存器的Rden信号置高;内部处理模块模块根据Rden信号,向分布式缓存模块发出请求并通过数据帧调度器选择FIFO缓存器,从选择的FIFO缓存器中读取数据帧;当内部处理模块模块读取数据帧结束后(wb_e0p_0=l),分布式缓存模块中对应的FIFO缓存器将Interrupt置高,表明该FIFO缓存器处在空闲状态。
权利要求
1.一种数据收发装置,其特征是:包括共享缓存模块、分布式缓存模块、数据帧调度器和处理单元,所述共享缓存模块包括异步FIFO缓存器,所述分布式缓存模块包括至少两个FIFO缓存器; 当FIFO缓存器出现空闲,空闲的FIFO缓存器发送中断信号给所述共享缓存模块,所述共享缓存模块将一个数据帧发送给相应的FIFO缓存器; 当处理单元出现空闲,通过所述数据帧调度器将存有数据帧的FIFO缓存器中的数据帧发送到所述处理单元。
2.如权利要求1所述的数据收发装置,其特征是:当所述共享缓存模块同时接收到多个处于空闲的FIFO缓存器发送来的中断信号,若所述共享缓存模块上一次发送数据帧给第i个FIFO缓存器,则依照从第i+Ι个FIFO缓存器至最大序号的FIFO缓存器、再从第一个FIFO缓存器至第i个FIFO缓存器的顺序,所述共享缓存模块依次将数据帧发送到相应空闲的FIFO缓存器。
3.如权利要求1所述的数据收发装置,其特征是:所述处理单元包括至少两个优先级不同的处理单元; 当多个处理单元出现空闲时,空闲的处理单元分别通过所述数据帧调度器向所述分布式缓存模块中的存有数据帧的FIFO缓存器发送请求信号; 分布式缓存模块中存有数据帧的FIFO缓存器通过所述数据帧调度器选择一个发出请求信号的处理单元,并向被选中的所述的处理单元发出允许信号; 所述的处理单元接收到所述允许信号后,通过所述数据帧调度器选择当前优先级最高的存有数据帧的FIFO缓存器并发出接受信号后,开始接收对应的FIFO缓存器发送的数据帧。
4.如权利要求1所述的数据收发装置,其特征是:共享缓存模块的容量与分布式缓存模块的容量相等。
5.如权利要求4所述的数据收发装置,其特征是:所述分布式缓存模块的各个FIFO缓存器的容量相等。
全文摘要
本发明公开了一种数据收发装置,包括共享缓存模块、分布式缓存模块、数据帧调度器和处理单元,所述共享缓存模块包括异步FIFO缓存器,所述分布式缓存模块包括至少两个FIFO缓存器;当FIFO缓存器出现空闲,空闲的FIFO缓存器发送中断信号给所述共享缓存模块,所述共享缓存模块将一个数据帧发送给相应的FIFO缓存器;当处理单元出现空闲,通过所述数据帧调度器将存有数据帧的FIFO缓存器中的数据帧发送到所述处理单元。
文档编号H04L12/863GK103200131SQ201310114769
公开日2013年7月10日 申请日期2013年4月3日 优先权日2013年4月3日
发明者乌力吉, 牛赟, 张向民, 麦宋平 申请人:清华大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1