嵌入式爱好者

查看: 1751|回复: 6

[Linux] A40i 自定义以太网帧被网卡识别为错误包

[复制链接]

2

主题

8

帖子

16

积分

A40i/T3/T507/T527通行证FCU2401通行证

扫一扫,手机访问本帖
发表于 2023-8-22 15:33:38 | 显示全部楼层 |阅读模式
本帖最后由 z_h 于 2023-8-22 15:48 编辑

我们使用 FCU2401 作为数据采集终端,用 网线直连外部设备。设备间没有走常规的网络协议而是基于 libpcap 进行网口数据帧的抓取。在数据帧抓取过程中发现有一种类型的数据帧抓取不到,使用ifconfig eth1 查看发现此类数据帧被网卡识别为错误包。

但在windows上通过 抓包工具Wireshark是可以抓到所有数据的, 通过Wireshark上抓取的内容比对与试验,发现错误帧与正常帧的区别。第13 14位数据为0x64 0x00时可以被网卡识别, 为 0x02 0x00 时无法被识别。
在发现数据帧被网卡识别为错误帧后,本人尝试通过ethtool 关闭了 网卡和校验, 但依然无效。

因数据帧协议是购买产品中已经定义好的, 无法修改协议。并且此类数据在windows上可以正常抓取,本人怀疑是网卡的某些解析或者校验未通过。希望有了解此方面的大师可以提供帮助!

微信截图_20230822154356.png
包内容.png
错误包3.png
回复

使用道具 举报

0

主题

1173

帖子

2195

积分

发表于 2023-8-23 09:52:52 | 显示全部楼层
网络协议不一致的需要您自己更换网络协议,解析不出来是正常的,本身两个协议的数据含义就不一样

点评

z_h
不是数据协议的问题, 我写了一个小程序通过 libpcap 库向 网口发送不同的以太网帧(该数据帧未加校验),通过测试我发现是 当以太网帧的第13个字节 小于 0x06 时就会被网卡认为是错误包,丢弃,大于等于 0x06 时就可  详情 回复 发表于 2023-8-23 14:23
点评回复 支持 反对

使用道具 举报

2

主题

8

帖子

16

积分

A40i/T3/T507/T527通行证FCU2401通行证

 楼主| 发表于 2023-8-23 14:23:10 | 显示全部楼层
zhichao 发表于 2023-8-23 09:52
网络协议不一致的需要您自己更换网络协议,解析不出来是正常的,本身两个协议的数据含义就不一样

不是数据协议的问题, 我写了一个小程序通过 libpcap 库向 网口发送不同的以太网帧(该数据帧未加校验),通过测试我发现是 当以太网帧的第13个字节 小于 0x06 时就会被网卡认为是错误包,丢弃,大于等于 0x06 时就可以收到。
测试.png
点评回复 支持 反对

使用道具 举报

2

主题

8

帖子

16

积分

A40i/T3/T507/T527通行证FCU2401通行证

 楼主| 发表于 2023-8-23 14:30:32 | 显示全部楼层
通过查找资料发现以太网帧的格式为:

目标Mac(6字节)      源Mac(6字节)   网络类型(2字节)     数据

通过将第13字节赋值为 0-255 发现当第13字节小于0x06 时就是错误包,现在怀疑会不会是 13 14 字节代表了网络类型,0x06 以下为保留或者特殊含义,因此被网卡丢弃。但困惑的是在 windows系统的电脑上是可以的。
点评回复 支持 反对

使用道具 举报

0

主题

1173

帖子

2195

积分

发表于 2023-8-23 15:58:57 | 显示全部楼层
https://blog.csdn.net/weixin_46691179/article/details/128937449,由于数据部分的最大长度为1500(十六进制为0x05DC),所以可通过2字节的取值是否大于1500来区分是长度(取值小于或等于1500)还是类型(取值大于1500)。

点评

z_h
现在很奇怪的就是通过我的测试发现, 第13字节 只要小于0x06 就会被网卡认为是错误包丢弃,就是如何不让网卡把它丢弃呢  详情 回复 发表于 2023-8-23 16:16
点评回复 支持 反对

使用道具 举报

2

主题

8

帖子

16

积分

A40i/T3/T507/T527通行证FCU2401通行证

 楼主| 发表于 2023-8-23 16:16:11 | 显示全部楼层
zhichao 发表于 2023-8-23 15:58
https://blog.csdn.net/weixin_46691179/article/details/128937449,由于数据部分的最大长度为1500(十六 ...

现在很奇怪的就是通过我的测试发现, 第13字节 只要小于0x06 就会被网卡认为是错误包丢弃,就是如何不让网卡把它丢弃呢
点评回复 支持 反对

使用道具 举报

0

主题

1173

帖子

2195

积分

发表于 2023-8-24 08:49:28 | 显示全部楼层
您把开发板使用的网络协议改成您用的协议就可以了
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-4 22:03

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表