CN111131408B - 一种基于fpga的网络协议栈架构设计方法 - Google Patents
一种基于fpga的网络协议栈架构设计方法 Download PDFInfo
- Publication number
- CN111131408B CN111131408B CN201911252864.1A CN201911252864A CN111131408B CN 111131408 B CN111131408 B CN 111131408B CN 201911252864 A CN201911252864 A CN 201911252864A CN 111131408 B CN111131408 B CN 111131408B
- Authority
- CN
- China
- Prior art keywords
- data
- arbitration
- protocol stack
- socket
- cache
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于FPGA的网络协议栈架构设计方法,通过综合考虑协议栈分层和数据封装特点,实现了网络协议栈的高速处理。本发明适当地打破协议栈分层,优化存储空间设置,具体为:整体结构按TCP/IP协议栈分层,TCP、UDP等协议下行数据链路数据流发送之前,首先查找IP路由表和ARP映射表,之后进行仲裁,获得仲裁后发送数据流;此外,通过多级仲裁机制,方便协议栈协议类型和处理能力的扩展。本发明具有节省存储资源、扩展性强等特点,适用于设备间高速数据互联通信领域,有着广阔的应用前景。
Description
技术领域
本发明涉及一种网络协议栈架构设计方法,属于网络通信协议技术领域。
背景技术
随着信息技术的发展,设备间通过网络互联进行数据通信的方式被广泛应用。在通信、视频/图像处理等领域,以大数据量为特点的设备间数据传输需求对网络的传输速度和处理能力提出了更高的要求。采用软件实现网络协议栈(千兆或万兆)的方式已经不能满足高速传输需求。
FPGA具有硬件并行、可编程以及低成本等优势,由FPGA实现网络协议栈(TCP、UDP、IP、ARP、MAC等)完成设备间高速数据传输的方式被设计者广泛应用到各类***级解决方案中,但FPGA缺乏软件的灵活性,且存储资源十分有限,在协议扩展升级、存储资源受限等应用场景中,由FPGA实现网络协议栈的应用方式受到较大制约。
发明内容
本发明所要解决的技术问题在于,降低协议栈实现所需FPGA存储资源,同时设计多级仲裁机制,保证协议扩展的灵活性。
本发明为解决以上技术问题,而采用以下技术手段:
本发明提出一种基于FPGA的网络协议栈架构设计方法,包括:
整体结构按TCP/IP协议栈分层,在TCP、UDP协议下行数据链路数据流发送之前,执行多级仲裁机制,获得仲裁后发送数据流;
所述多级仲裁机制具体为设置两级仲裁:
一级仲裁:查IP路由表仲裁和查ARP映射表仲裁;
二级仲裁:数据发送仲裁,将仲裁结果送给调度模块,调度模块授予相关申请,并打开合路开关。
还包括优化存储空间设置,包括SOCKET内部存储空间和MAC内部存储空间优化,其中:
SOCKET内部存储空间:设置数据发送缓存和数据接收缓存,缓存的实现形式为基于RAM的异步FIFO;应用层发送数据或者接收数据通过RAM接口完成数据的存储或者读取,且应用层的接口时钟根据应用需求选择,缓存内部完成一包数据存储后方才下发或上发,空间大小根据应用需求设置;
MAC内部存储空间:设置数据发送缓存和数据接收缓存,缓存的实现形式为基于RAM的异步FIFO;发送缓存接收上层数据,完成一帧数据接收后启动发送操作,同时发送缓存输出反压信号,如果存在积压,反馈给SOCKET,使其停止数据发送;接收缓存完成一帧数据接收后,进行CRC校验,判定是否丢弃,如果校验正确,启动上传操作。
作为本发明进一步的优化方案,所述一级仲裁具体为:每个SOCKET向路由表仲裁器和ARP表仲裁器申请两次查询,完成下一跳IP地址查询和IP地址对应的MAC地址查询;
所述二级仲裁具体为:数据发送仲裁器提供对SOCKETs和ARP的跨层次仲裁,SOCKET完成MAC地址查询后,进行数据的组帧,然后向数据发送仲裁器申请发送数据;此外,ARP协议下行数据链路数据流发送之前,也需获得数据发送仲裁器的授予信号。
作为本发明进一步的优化方案,在执行多级仲裁机制时,仲裁器使用赤字轮询机制实现2-12路信号高速仲裁,支持运输层协议的扩展,包括多路TCP、UDP、ICMP、IGMP。
本发明采用以上技术手段,具有以下技术效果:
采用本发明的设计可保证在数据从最上层缓冲区中输出后,在之后的各个模块不会有阻塞,减少了中间模块数据缓冲。它的代价是将部分IP层和MAC层的功能分散到各个协议模块中,打破了TCP/IP协议栈的逻辑分层。
附图说明
图1基于FPGA的网络协议栈架构示意图。
具体的实施方式
以下结合附图对本发明的技术方案做进一步详细说明。
本发明的整体结构按照TCP/IP协议栈分层,但考虑到FPGA实现局限不能做到严格分层。TCP、UDP等协议下行数据链路数据流发送之前,首先查找IP路由表(在IP模块中)和ARP映射表(在ARP模块中),之后进行仲裁,获得仲裁后发送数据流。IP表和ARP表需向相关模块开放,并设置仲裁机制。
将TCP、UDP、ICMP和IGMP统一使用流进行管理,为方便代码实现,将TCP、UDP、ICMP和IGMP统一到一个模块:SOCKET,***支持多个SOCKETs(视应用需求和FPGA资源确定),每个SOCKET可以配置为这四种协议之一。在数据发送时,由于各层协议处理模块在不断的增加各层次的包头,使得传输数据量越来越大。这种情况有两种处理办法,一是在各个层次模块内部增加缓冲,将下一个数据包缓冲一段时间后再发送出去,二是在数据包产生时把各个层次包头时间留出来。本设计采用了第二种方法,这样既保证了模块间的低耦合度,又能节省第一种方法需要的缓冲。
SOCKET模块在发送数据帧之前,需要先查询ARP模块,查找下一跳IP地址对应的MAC地址。当找不到对应表项时需要往外发送ARP请求帧,当收到外部的ARP请求帧时需要往外发送ARP应答帧。
参考图1所示,本发明所述的网络协议栈架构设计包括存储空间设置、多级仲裁机制两部分,具体实施步骤如下:
1、存储空间设置
存储空间主要包括SOCKET内部存储空间和MAC内部存储空间,此外,ARP表、IP路由表等表项也占用少量的存储空间。
SOCKET内部存储空间:SOCKET内部设置数据发送缓存和数据接收缓存,缓存的实现形式为基于RAM的异步FIFO。应用层发送数据或者接收数据通过RAM接口完成数据的存储或者读取,且应用层的接口时钟可以根据应用需求灵活选择。缓存内部完成一包数据存储后方才下发或上发,空间大小可以根据应用需求灵活设置,空间设置越大,缓存数据越多,与应用层的交互越便捷、高效。
MAC内部存储空间:MAC内部设置数据发送缓存和数据接收缓存,缓存的实现形式同SOCKET。缓存大小为两个MAC帧长度(0x0600),即3072字节。发送缓存接收上层数据,完成一帧数据接收后启动发送操作,同时发送缓存输出反压信号,如果存在积压,反馈给SOCKET,使其停止数据发送。接收缓存完成一帧数据接收后,进行CRC校验,判定是否丢弃,如果校验正确,启动上传操作,接收缓存不会存在积压,数据能够顺畅到达SOCKET缓存。
其他存储空间:ARP表、IP路由表等表项也占用少量的存储空间,但不影响总体架构设计。
2、多级仲裁机制
一级仲裁:查路由表仲裁和查ARP表仲裁。每个SOCKET向路由表仲裁器和ARP表仲裁器申请两次查询,完成下一跳IP地址查询和IP地址对应的MAC地址查询。
二级仲裁:数据发送仲裁。数据发送仲裁器提供对SOCKETs和ARP的跨层次仲裁。SOCKET完成MAC地址查询后,进行数据的组帧(MAC帧),然后向数据发送仲裁器申请发送数据。此外,ARP协议下行数据链路数据流发送之前,也需获得数据发送仲裁器的授予信号。二级仲裁的结果送给调度模块,调度模块授予相关申请,并打开合路开关,将SOCKET包或者ARP包发送至MAC。
本发明通过适当地打破协议栈分层,优化了存储空间设置,在下行链路或者上行链路中,节省了IP层存储空间,且MAC内部存储只需设置为两个最长帧空间,即可保证数据流没有阻塞。
本发明通过设计多级仲裁机制,方便协议栈协议类型和处理能力的扩展,仲裁器使用赤字轮询机制实现(2-12)路信号高速仲裁,可支持运输层协议的扩展,如多路TCP、UDP、ICMP、IGMP等,且在协议类型和处理能力扩展的同时,不会对架构产生影响,只需一定的FPGA资源开销。
Claims (3)
1.一种基于FPGA的网络协议栈架构设计方法,其特征在于,整体结构按TCP/IP协议栈分层,在TCP、UDP协议下行数据链路数据流发送之前,执行多级仲裁机制,获得仲裁后发送数据流;
所述多级仲裁机制为设置两级仲裁:
一级仲裁:SOCKET模块完成查IP路由表仲裁和查ARP映射表仲裁,每个SOCKET向路由表仲裁器和ARP表仲裁器申请两次查询,完成下一跳IP地址查询和IP地址对应的MAC地址查询;
二级仲裁:数据发送仲裁器提供对SOCKETs和ARP的跨层次仲裁,SOCKET完成MAC地址查询后,进行数据的组帧,然后向数据发送仲裁器申请发送数据;此外,ARP协议下行数据链路数据流发送之前,也需获得数据发送仲裁器的授予信号;二级仲裁的结果送给调度模块,调度模块授予相关申请,并打开合路开关,将SOCKET包或者ARP包发送至MAC;
其中,所述SOCKET为配置TCP、UDP、ICMP和IGMP中任意一个协议的模块。
2.根据权利要求1所述的一种基于FPGA的网络协议栈架构设计方法,其特征在于,还进行优化存储空间设置,所述优化包括SOCKET内部存储空间和MAC内部存储空间优化,其中:
SOCKET内部存储空间的优化为:设置数据发送缓存和数据接收缓存,缓存的实现形式为基于RAM的异步FIFO;应用层发送数据或者接收数据通过RAM接口完成数据的存储或者读取,且应用层的接口时钟根据应用需求选择,缓存内部完成一包数据存储后方才下发或上发,空间大小根据应用需求设置;
MAC内部存储空间的优化为:设置数据发送缓存和数据接收缓存,缓存的实现形式为基于RAM的异步FIFO;发送缓存接收上层数据,完成一帧数据接收后启动发送操作,同时发送缓存输出反压信号,如果存在积压,反馈给SOCKET,使其停止数据发送;接收缓存完成一帧数据接收后,进行CRC校验,判定是否丢弃,如果校验正确,启动上传操作。
3.根据权利要求1所述的一种基于FPGA的网络协议栈架构设计方法,其特征在于,在执行多级仲裁机制时,仲裁器使用赤字轮询机制实现2-12路信号高速仲裁,支持运输层协议的扩展,包括多路TCP、UDP、ICMP、IGMP。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911252864.1A CN111131408B (zh) | 2019-12-09 | 2019-12-09 | 一种基于fpga的网络协议栈架构设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911252864.1A CN111131408B (zh) | 2019-12-09 | 2019-12-09 | 一种基于fpga的网络协议栈架构设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111131408A CN111131408A (zh) | 2020-05-08 |
CN111131408B true CN111131408B (zh) | 2023-04-18 |
Family
ID=70498057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911252864.1A Active CN111131408B (zh) | 2019-12-09 | 2019-12-09 | 一种基于fpga的网络协议栈架构设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111131408B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111726361B (zh) * | 2020-06-19 | 2022-02-22 | 西安微电子技术研究所 | 一种以太网通信协议栈***及实现方法 |
CN112087421A (zh) * | 2020-07-27 | 2020-12-15 | 北京空间机电研究所 | 一种多路串行图像数据到千兆网口快速输出的转换***及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9117022B1 (en) * | 2011-10-07 | 2015-08-25 | Altera Corporation | Hierarchical arbitration |
CN107729273A (zh) * | 2017-09-08 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种总线逻辑仲裁装置及方法 |
US10341259B1 (en) * | 2016-05-31 | 2019-07-02 | Amazon Technologies, Inc. | Packet forwarding using programmable feature prioritization |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174529A1 (en) * | 2005-12-29 | 2007-07-26 | Intel Corporation | Queue manager having a multi-level arbitrator |
US9634863B2 (en) * | 2011-11-11 | 2017-04-25 | Kollmorgen Corporation | Systems and methods for supporting two different protocols on a same physical connection |
-
2019
- 2019-12-09 CN CN201911252864.1A patent/CN111131408B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9117022B1 (en) * | 2011-10-07 | 2015-08-25 | Altera Corporation | Hierarchical arbitration |
US10341259B1 (en) * | 2016-05-31 | 2019-07-02 | Amazon Technologies, Inc. | Packet forwarding using programmable feature prioritization |
CN107729273A (zh) * | 2017-09-08 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种总线逻辑仲裁装置及方法 |
Non-Patent Citations (1)
Title |
---|
"基于FPGA的万兆以太网链路的设计与实现";孔德伟;《微电子学与计算机》;20191205;第36卷(第12期);第2-3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN111131408A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8369347B2 (en) | Fiber channel over Ethernet and fiber channel switching based on Ethernet switch fabrics | |
US6754222B1 (en) | Packet switching apparatus and method in data network | |
US20140036681A1 (en) | Traffic generator with priority flow control | |
KR100750880B1 (ko) | 가변 길이 데이터 패킷의 이종 네트워크 스위칭을 위한시스템 및 방법 | |
US20120155495A1 (en) | Packet assembly module for multi-core, multi-thread network processors | |
CN105337883A (zh) | 一种支持多业务的网络交换装置及其实现方法 | |
CN111131408B (zh) | 一种基于fpga的网络协议栈架构设计方法 | |
CN101069174A (zh) | 用于同步数据通信量的数据处理***和方法 | |
CN109861931B (zh) | 一种高速以太网交换芯片的存储冗余*** | |
CN103441937A (zh) | 组播数据的发送方法和接收方法 | |
US20210359958A1 (en) | Hierarchical switching fabric and deadlock avoidance method for ultra high radix network routers | |
US20100329262A1 (en) | System and Method for Parsing Frames | |
Hermsmeyer et al. | Towards 100G packet processing: Challenges and technologies | |
US20060221989A1 (en) | Method and system for accommodating several ethernet ports and a wrap transmitted flow handled by a simplifed frame-by-frame upper structure | |
US20040081096A1 (en) | Method and device for extending usable lengths of fibre channel links | |
CN106789706B (zh) | 一种基于tcam的网络分流*** | |
WO2013159501A1 (zh) | 用于多个服务器间的数据传输***、数据接口装置及数据传输方法 | |
KR100662471B1 (ko) | 시스템 온 칩 구조 및 데이터 전송 방법 | |
WO2018196833A1 (zh) | 报文发送方法和报文接收方法及装置 | |
CN101699821B (zh) | 一种分布式多核网络***中地址解析协议实现的方法 | |
US11201831B1 (en) | Packed ingress interface for network apparatuses | |
US7751422B2 (en) | Group tag caching of memory contents | |
CN116762323A (zh) | 一种交换***、交换网络和交换节点 | |
CN110430146A (zh) | 基于CrossBar交换的信元重组方法及交换结构 | |
KR101119367B1 (ko) | 시간 슬롯 스위칭이 가능한 레지덴셜 이더넷 스위칭 장치및 그 시간 슬롯 스위칭 방법 |
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 |