CN113055403B - 一种线速保序方法 - Google Patents
一种线速保序方法 Download PDFInfo
- Publication number
- CN113055403B CN113055403B CN202110360755.2A CN202110360755A CN113055403B CN 113055403 B CN113055403 B CN 113055403B CN 202110360755 A CN202110360755 A CN 202110360755A CN 113055403 B CN113055403 B CN 113055403B
- Authority
- CN
- China
- Prior art keywords
- cache
- message
- ram
- block
- ping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种线速保序方法,应用于基于FPGA的IP设备,包括:IP设备对进入的报文进行递增编号并将其附加在报文首部的控制头里;识别加解扰之后的报文编号,并将报文写入已编号的RAM缓存空间中,刷新块状态缓存RAM为有效;连续预取包含多个块状态的缓存RAM,判断多个块状态的缓存RAM是否有效;若有效,则往读指令FIFO指令写入缓存RAM中当前有效的编号的读数据块指令,同时读取一个包含新块状态的缓存RAM,放入第一乒乓寄存器列表的最后,其余的寄存器数据依次前移。本发明减少了读块状态信息的总体延迟,极大的提高了处理效率,极大地优化了时序,简化超时序号的处理。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种线速保序方法。
背景技术
由于IPsec协议为当前以太网络通信的安全提供了可靠机制,目前已被广泛应用于各类网卡和专用设备中。100G专用IP设备提供100Gbps带宽的IPsec处理,满足了当前以太网处理流量的爆发式增长,适用于部署在各类大吞吐率的数据中心等场所。
为了提高设备吞吐率,专用设备一般都会提供多个算法核并行的处理以太网数据报文。但是由于以太网报文的长度是不一致的,多算法核并行处理会导致加解扰的数据报文乱序,如附图1所示。因此,专用设备需要对算法核加解扰之后的报文进行保序处理,从而保证原始报文顺序,减少设备对网络的扰动。
专用设备对进入的报文进行递增编号(0~N)并将其附加在报文首部的控制头里。保序模块识别加解扰之后的报文编号,并将报文写入对应编号的双口RAM缓存空间中,然后刷新块状态缓存RAM为有效(“1”)。读指针从0开始,查询对应块的状态信息,如果当前块为有效,则读取读指针对应数据块的报文,然后读指针加1,判断下一个序号的报文状态;如果无效,则等待数据块有效或者超时计数器超时。其具体的处理原理如附图2所示。
根据IEEE802.3协议要求,以太网报文最小包长为64字节,最大包长为1518字节。对于保序而言,其最大的瓶颈在于64字节长度的报文处理。在一般的低速千兆设备中,64字节小报文是64个时钟周期;万兆设备中,64字节小报文是8个时钟周期,也就是说,保序模块只需要在8个时钟周期之内识别响应完,然后流水处理就可以实现线速的保序功能。然而在100G专用设备采中,FPGA内部工作频率和数据总线位宽为:322Mhz*512bit,此时64字节报文只占用1个时钟周期,因此保序处理需要处理这种极限1个时钟周期一个报文的情况。
由于一般的双口RAM输出最小延迟1个时钟周期,判定和等待至少需要1个时钟周期,而且为了满足内部频率为322MHz的时序要求,一般都需要对输出进行寄存器流水,因此对于每个报文其判定和处理的时钟周期至少是3个时钟周期,而100G线速下,64字节报文只有一个时钟周期,因此只是简单的采用双口RAM监测和维护保序状态信息会导致处理效率不够,无法满足100G线速要求。
发明内容
本发明的目的就在于为了解决上述问题而提供一种线速保序方法,应用于基于FPGA的IP设备,包括:
IP设备对进入的报文进行递增编号并将其附加在报文首部的控制头里;
识别加解扰之后的报文编号,并将报文写入已编号的RAM缓存空间中,刷新块状态缓存RAM为有效;
连续预取包含多个块状态的缓存RAM,依次判断多个块状态的缓存RAM是否有效;若有效,则往读指令FIFO指令写入缓存RAM中当前有效的编号的读数据块指令,同时读取一个包含新块状态的缓存RAM,放入第一乒乓寄存器列表的最后,其余的寄存器数据依次前移;若无效,则从缓存RAM中当前无效的编号开始,将后续剩余的块状态依次写进第二乒乓寄存器列表中,然后以第二乒乓寄存器列表的块状态作为新的判断标准,从前端依次进行判断。
具体的,所述IP设备设置有超时计数器;若报文丢失,则读取一个包含新的块状态的缓存RAM,放入乒乓寄存器列表的最后,乒乓寄存器列表其余的寄存器数据依次前移。
具体的,所述缓存RAM为双口RAM缓存。
本发明的有益效果在于:
1.一次性预取多个块状态信息,减少了读块状态信息的总体延迟;
2.采用乒乓寄存器无缝切换,结合流水处理,可以做到每个时钟周期都处理一个报文,极大的提高了处理效率,该机制可适用于任何需要判断—等待场景;
3.可以通过增加乒乓寄存器的深度,来提高块状态信息寄存器输出带来的读延时,从而极大的优化时序;
4.将编号超时的数据和编号有效的数据合并处理,简化超时序号的处理,降低设计实现难度。
附图说明
图1是本发明的原理流程图;
图2是加解扰数据报文乱序示意图;
图3是采用双口RAM实现保序的原理图;
图4是乒乓块状态有效处理原理图;
图5是乒乓块状态无效处理原理图。
图中:A-乒乓寄存器列表A;B-乒乓寄存器列表B。
具体实施方式
下面结合附图对本发明作进一步说明:
如附图1所示,本发明一种线速保序方法,应用于基于FPGA的IP设备,包括:
IP设备对进入的报文进行递增编号并将其附加在报文首部的控制头里;
识别加解扰之后的报文编号,并将报文写入已编号的RAM缓存空间中,刷新块状态缓存RAM为有效;
连续预取包含多个块状态的缓存RAM,依次判断多个块状态的缓存RAM是否有效;若有效,则往读指令FIFO指令写入缓存RAM中当前有效的编号的读数据块指令,同时读取一个包含新块状态的缓存RAM,放入第一乒乓寄存器列表的最后,其余的寄存器数据依次前移;若无效,则从缓存RAM中当前无效的编号开始,将后续剩余的块状态依次写进第二乒乓寄存器列表中,然后以第二乒乓寄存器列表的块状态作为新的判断标准,从前端依次进行判断。
具体的,所述IP设备设置有超时计数器;若报文丢失,则读取一个包含新的块状态的缓存RAM,放入乒乓寄存器列表的最后,乒乓寄存器列表其余的寄存器数据依次前移,即寄存器里的数据左移到另一个寄存器。
具体的,所述缓存RAM为双口RAM缓存。
100G专用设备采用FPGA实现IPSec(Internet Protocol Security,协议包),其内部工作频率和数据总线位宽为:322Mhz*512bit,因此,内部总线实际吞吐率为150Gbps。对于64字节的小报文而言,一个时钟周期一个报文,100Gbps线速的情况下,总线上每三个时钟周期有2个时钟周期为有效报文。
如附图3所示,基于FPGA的保序原理为:对进入的报文进行递增编号(0~N)并将其附加在报文首部的控制头里;识别加解扰之后的报文编号,并将报文写入双口RAM缓存空间中,然后刷新块状态缓存RAM为有效(“1”);连续预取8个块状态缓存RAM,然后依次判断这8个状态的缓存RAM是否有效,如果有效,则往读指令fifo里写入对应当前缓存RAM编号的读数据块指令,同时读取一个新的块状态缓存RAM,放入该乒乓寄存器列表A最后,而其余的寄存器则依次左移;如附图3所示(图中数字表示报文编号),如附图4所示,填充表示当前块状态缓存RAM为有效;如果无效,如附图5所示,此时从该序号开始,将后续剩余的块状态依次写进另一个乒乓寄存器列表B中,然后以乒乓寄存器列表B作为新的判断标准,从左到右依次判断,填充表示当前块状态缓存RAM为有效。
采用上述预取乒乓机制,再配合流水处理,可以达到每个时钟周期处理一个数据报文效率,解决常用保序方法对于64字节小报文无法达到线速处理的缺点。
此外,IP设备会设置一个超时计数器,如果某个序号的报文丢失,该计数器会超时。超时的序号的处理方式同块状态有效一样,即读取一个新的块状态缓存RAM,放入该乒乓寄存器列表最后,而乒乓寄存器列表其余的寄存器则依次左移,这样简化了设计。
本发明具有以下优点:
1.一次性预取多个块状态信息,减少了读块状态信息的总体延迟;
2.采用乒乓寄存器无缝切换,结合流水处理,可以做到每个时钟周期都处理一个报文,极大的提高了处理效率,该机制可适用于任何需要判断—等待场景;
3.可以通过增加乒乓寄存器的深度,来提高块状态信息寄存器输出带来的读延时,从而极大地优化时序;
4.将编号超时的数据和编号有效的数据合并处理,简化超时序号的处理,降低设计实现难度。
本发明的技术方案不限于上述具体实施例的限制,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。
Claims (3)
1.一种线速保序方法,应用于基于FPGA的IP设备,其特征在于,包括:
IP设备对进入的报文进行递增编号并将其附加在报文首部的控制头里;
识别加解扰之后的报文编号,并将报文写入已编号的RAM缓存空间中,刷新块状态缓存RAM为有效;
连续预取包含多个块状态的缓存RAM,依次判断多个块状态的缓存RAM是否有效;若有效,则往读指令FIFO写入对应当前的有效的编号的缓存RAM的读数据块指令,同时读取一个包含新块状态的缓存RAM,放入第一乒乓寄存器列表的最后,其余的寄存器数据依次前移;若无效,则从缓存RAM中当前无效的编号开始,将后续剩余的块状态依次写进第二乒乓寄存器列表中,然后以第二乒乓寄存器列表的块状态作为新的判断标准,从前端依次进行判断。
2.根据权利要求1所述一种线速保序方法,其特征在于,所述IP设备设置有超时计数器;若报文丢失,则读取一个包含新的块状态的缓存RAM,放入乒乓寄存器列表的最后,乒乓寄存器列表其余的寄存器数据依次前移。
3.根据权利要求1所述一种线速保序方法,其特征在于,所述缓存RAM为双口RAM缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110360755.2A CN113055403B (zh) | 2021-04-02 | 2021-04-02 | 一种线速保序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110360755.2A CN113055403B (zh) | 2021-04-02 | 2021-04-02 | 一种线速保序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113055403A CN113055403A (zh) | 2021-06-29 |
CN113055403B true CN113055403B (zh) | 2022-06-17 |
Family
ID=76517193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110360755.2A Active CN113055403B (zh) | 2021-04-02 | 2021-04-02 | 一种线速保序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113055403B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113782028A (zh) * | 2021-09-14 | 2021-12-10 | 咪咕数字传媒有限公司 | 语音流数据的处理方法、装置及系统 |
CN114900486B (zh) * | 2022-05-09 | 2023-08-08 | 江苏新质信息科技有限公司 | 基于fpga的多算法核调用方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055649A (zh) * | 2009-10-29 | 2011-05-11 | 成都市华为赛门铁克科技有限公司 | 多核系统的报文处理方法、装置及系统 |
US7953094B1 (en) * | 2002-02-06 | 2011-05-31 | Juniper Networks, Inc. | Systems and methods for order preserving data |
CN102480430A (zh) * | 2010-11-24 | 2012-05-30 | 迈普通信技术股份有限公司 | 实现报文保序的方法和装置 |
CN102801635A (zh) * | 2012-08-30 | 2012-11-28 | 北京傲天动联技术有限公司 | 在多核处理器系统中使用的报文保序方法 |
CN104468156A (zh) * | 2013-09-16 | 2015-03-25 | 杭州华三通信技术有限公司 | 一种利用时隙仲裁节省资源开销的方法和设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7900090B2 (en) * | 2009-02-13 | 2011-03-01 | Oracle America, Inc. | Systems and methods for memory retention across resets |
US8285926B2 (en) * | 2010-05-03 | 2012-10-09 | Oracle America, Inc. | Cache access filtering for processors without secondary miss detection |
US10509776B2 (en) * | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
-
2021
- 2021-04-02 CN CN202110360755.2A patent/CN113055403B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7953094B1 (en) * | 2002-02-06 | 2011-05-31 | Juniper Networks, Inc. | Systems and methods for order preserving data |
CN102055649A (zh) * | 2009-10-29 | 2011-05-11 | 成都市华为赛门铁克科技有限公司 | 多核系统的报文处理方法、装置及系统 |
CN102480430A (zh) * | 2010-11-24 | 2012-05-30 | 迈普通信技术股份有限公司 | 实现报文保序的方法和装置 |
CN102801635A (zh) * | 2012-08-30 | 2012-11-28 | 北京傲天动联技术有限公司 | 在多核处理器系统中使用的报文保序方法 |
CN104468156A (zh) * | 2013-09-16 | 2015-03-25 | 杭州华三通信技术有限公司 | 一种利用时隙仲裁节省资源开销的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113055403A (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113055403B (zh) | 一种线速保序方法 | |
US9727508B2 (en) | Address learning and aging for network bridging in a network processor | |
US6147996A (en) | Pipelined multiple issue packet switch | |
US7546399B2 (en) | Store and forward device utilizing cache to store status information for active queues | |
US9864633B2 (en) | Network processor having multicasting protocol | |
KR20040002922A (ko) | 네트워크 프로세서의 멀티캐스트 전송 방법, 이 방법을수행하기 위한 컴퓨터 프로그램 및 멀티캐스트 전송 지원네트워크 프로세서 | |
US8683221B2 (en) | Configurable memory encryption with constant pipeline delay in a multi-core processor | |
JP4709526B2 (ja) | 高帯域幅チャネル内に低帯域幅チャネルを生成する方法および装置 | |
US8949578B2 (en) | Sharing of internal pipeline resources of a network processor with external devices | |
CN102664729B (zh) | 一种基于fpga的aes加解密网络通讯装置及其实现方法 | |
CN105099957B (zh) | 一种基于软件查表的数据包转发方法 | |
US8824468B2 (en) | System and method for parsing frames | |
US7680978B1 (en) | Reducing content addressable memory (CAM) power consumption counters | |
EP1226686A1 (en) | System and method for transferring a packet from a port controller to a switch fabric | |
CN104158770A (zh) | 一种交换机数据包切分与重组的方法与装置 | |
US7554908B2 (en) | Techniques to manage flow control | |
CN101425960B (zh) | 实现负载均分的方法和设备 | |
EP2201740B1 (en) | High speed packet processing in a wireless network | |
Wellem et al. | A hardware-accelerated infrastructure for flexible sketch-based network traffic monitoring | |
US7210008B2 (en) | Memory controller for padding and stripping data in response to read and write commands | |
CN108632148A (zh) | 基于预读取方式的学习mac地址的装置及方法 | |
CN113726478B (zh) | 一种多通道数据位宽可配的0比特填充方法及装置 | |
Li et al. | P5: Programmable parsers with packet-level parallel processing for FPGA-based switches | |
CN107426180B (zh) | 一种以太网数据帧覆盖性的检测装置 | |
CN114979041B (zh) | 一种提升片上缓存利用效率的拼包方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |