万兆以太网MAC设计(13)主机与FPGA之间进行PING

文章目录

前言:

在上板尝试进行PING操作的时候,发现一直是请求超时的情况,结果排查发现是首部校验和没有计算的问题。在UDP层,我们不进行校验和是不会影响数据正常收发的,但是在ICMP层不可以,FPGA没有进行校验和主机是无法正常进行PING板卡的。

一、ICMP校验和计算

ICMP校验和计算与IP层一样,只不过IP层只校验首部,但ICMP需要将数据一起进行校验。校验步骤:

  1. 将数据按照16bit组成一组,以此进行求和
  2. 如果结果超出16位,需要将高16位与低16位进行相加
  3. 对低16位进行取反,即可得到最终校验结果
c 复制代码
always@(posedge i_clk,posedge i_rst)
begin
    if(i_rst)
        r_hd_checksum <= 'd0;
    else if(i_trigger)
        r_hd_checksum <= 16'h0000 + 16'h0000 + i_Identifier + i_Sequence
                            + 16'h6162 + 16'h6364 + 16'h6566 + 16'h6768
                            + 16'h696a + 16'h6b6c + 16'h6d6e + 16'h6f70
                            + 16'h7172 + 16'h7374 + 16'h7576 + 16'h7761
                            + 16'h6263 + 16'h6465 + 16'h6667 + 16'h6869;
    else if(ri_trigger)
        r_hd_checksum <= r_hd_checksum[31:16] + r_hd_checksum[15:0];
    else 
        r_hd_checksum <= r_hd_checksum;
end
c 复制代码
rm_axis_ip_data <= {16'h0000,(~r_hd_checksum[15:0]),ri_Identifier,ri_Sequence};

二、上板效果

修改完校验和计算后PING结果一切正常。

1、终端命令行

1、wireshark捕捉

相关推荐
Bruce_Liuxiaowei41 分钟前
轻量级 IOC 管理方案:Streamlit 驱动的恶意IP情报平台
网络·jvm·网络协议·tcp/ip·安全
2601_965798471 小时前
Is Hygia Good for Maid & Janitorial Sites? Technical Audit
服务器·网络·数据库
蚰蜒螟2 小时前
从内核源码看Linux启动:chroot、execve与MS_MOVE的协奏曲
linux·服务器·网络
Dawn-bit4 小时前
Linux磁盘分区与Swap和磁盘故障查询
linux·运维·服务器·网络·云计算
無识5 小时前
策略路由练习实验
网络
llilian_166 小时前
便携式相位测量模块应用方案的核心优势
网络·功能测试·单片机
QH139292318806 小时前
# R&S ZNB43 ZNA43 ZNA67矢量网络分析仪
开发语言·网络·php
栋***t7 小时前
2026年不止防作弊,麦塔在线培训系统培训与考试安全的体系化设计
网络·安全
紫禁玄科7 小时前
网络安全科普:DDoS与DoS攻击完全指南
网络·web安全·网络安全·系统安全
宁风NF8 小时前
JavaScript:网络请求与前端通信
开发语言·前端·javascript·网络·学习·ecmascript