一种基于FPGA的网络协议栈架构设计方法与流程

文档序号:20678327发布日期:2020-05-08 18:07阅读:737来源:国知局
一种基于FPGA的网络协议栈架构设计方法与流程

本发明涉及一种网络协议栈架构设计方法,属于网络通信协议技术领域。



背景技术:

随着信息技术的发展,设备间通过网络互联进行数据通信的方式被广泛应用。在通信、视频/图像处理等领域,以大数据量为特点的设备间数据传输需求对网络的传输速度和处理能力提出了更高的要求。采用软件实现网络协议栈(千兆或万兆)的方式已经不能满足高速传输需求。

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资源开销。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1