一种适合万兆以太网存储传输系统设计(2)

本文详细描述了以太网控制器如何通过硬件逻辑实现万兆以太网的数据传输,重点介绍了UDP和ARP/ICMP/IP协议的处理,以及数据包封装、拆解、校验和处理过程。通过使用UDP协议和异步FIFO解决资源开销问题,确保高效传输和CPU负载降低。
摘要由CSDN通过智能技术生成

以太网控制器

万兆以太网是存储设备与控制系统之间进行长距离高速数据传输的最佳选择,因此采用万兆光纤将NVMe SSD中的数据回传至PC机以供后续处理。传输层协议的选择上,主要有UDP协议和TCP协议两种方案,两者之间最大不同在于是否需要建立连接,UDP协议无需建立连接,只需要将数据打包后直接发送即可;而TCP协议需要与对端设备建立连接后才能进行真正的数据交互,这就导致其传输效率较低,资源开销也较大。为此,考虑到项目对逻辑资源开销较为敏感,决定通过UDP协议进行数据的回传工作,并通过纯硬件逻辑的方式来实现UDP/IP协议栈的处理工作,使得系统的传输性能更好,同时也有效的减小了CPU的负载。如下图所示为以太网控制器的功能模块框图。
在这里插入图片描述
以太网控制器主要通过硬件逻辑实现了对UDP协议、ARP协议、ICMP协议以及IP协议的处理工作,并在与10G Ethernet IP模块之间添加异步FIFO,来解决大量数据流数据跨时钟域传输的问题。
(1)UDP数据包处理
本设计采用UDP协议上传数据,因此需要实现对UDP数据包的封装和拆解。具体而言,对于UDP数据包的封装,需要给有效数据添加UDP首部,包含源端口号、目的端口号、UDP长度和UDP校验和字段,以便进行传输。而对于UDP数据包的拆解工作,需要首先解析UDP首部,并判断其与本地信息是否一致。若一致,则将UDP数据包中的有效数据部分提取出来,并传输至数据缓存控制器。若不一致,则需要丢弃该数据包。
(2)ARP数据包处理
为了实现与局域网内设备通过万兆光纤进行通信,需要实现ARP协议。具体而言,需要完成可以自动发起或响应同一子网内设备的ARP请求或应答,并且需要实现对MAC地址和IP地址的映射关系的缓存功能。
ARP缓存管理负责完成将MAC地址和IP地址的映射关系缓存到RAM中。当FPGA需要发送IP数据包时,如ICMP应答数据包和UDP数据包,首先在RAM中查询IP地址对应的MAC地址,其次进行组包发送。这个过程无需向对端设备发起ARP请求数据包去询问MAC地址。在发送IP数据包时,若能在RAM中查找到该IP地址对应的MAC地址,则将该MAC地址反馈给发送查询请求的模块;若无法查找到对应的MAC地址,则向该IP地址的设备发送ARP请求数据包,以询问对端设备的MAC地址,在等待接收到ARP应答数据包后,将对应的MAC地址缓存至RAM,并将该MAC地址反馈给发送查询请求的模块。
(3)ICMP数据包处理
为了确保同一子网内的设备可以相互连通,需要实现ICMP协议。具体而言,需要实现以下功能:当设备接收到ICMP请求数据包时,对其类型字段进行判断,若其类型值为0x08,表示为请求数据包,此时需要根据ICMP协议规定生成相应的应答数据包并发送。若为其他类型值,丢弃该包数据。此外还需要对数据包的校验和进行检查,若校验和错误也需要丢弃该包数据。
ICMP、UDP、IP数据包均使用到了Checksun校验和,其计算过程相同,Checksum校验和的计算过程如下:
1) 将数据每16bit划分为一组,若数据包为奇数个字节,则将最后一个字节置于16bit的高八位上;
2) 通过加法器对各组数据进行累加;
3) 若高位溢出,将高16bit和低16bit值进行累加,直到高位不再溢出;
4) 对第三步的累加值按位取反,即可得到Checksum校验和。
(4)IP数据包处理
为了支持UDP和ICMP数据包的传输,需要实现IP协议。具体而言,需要实现以下功能:给UDP数据包和ICMP数据包添加IP首部,封装成完整IP数据包,确保其能够正确地传输。在接收到IP数据包后,需要解析首部信息,并解析其类型字段,若类型值为0x11,表示为UDP数据包,若类型值为0x01,表示为ICMP数据包。随后根据类型字段将数据包传输至相应的模块进行处理。此外,还需要实现当UDP数据包和ICMP数据包同时发起传输请求时的仲裁判决工作,这包括对数据包的优先级进行判断和处理,以确保数据包能够按照预期的顺序传输。
对优先级的判断通过仲裁器的设计来实现,考虑采用固定优先级仲裁器,并设置ICMP报文的优先级大于UDP报文,主要考虑到ICMP协议用于传递错误报文或与路由器、主机交换关键信息,若目标地址不可达时数据就无法传输,同时也为了避免UDP长时间占用发送通道导致无法响应ICMP回显请求的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值