打印
[STM32F1]

enc28j60+LWIP在复杂网络长时间运行出现问题

[复制链接]
1363|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
恩哥|  楼主 | 2017-9-18 23:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
该问题出现的时间也不短了,鉴于本渣对网络研究不精,希望网络大神能指点一二

为了详细描述问题,这里交代下设备的使用背景:
公司有一批设备采用的网卡芯片是ENC28J60,使用的网络协议栈是LWIP,
在简单的网络底下运行没有问题(包括带有视频数据包的网络),但在某些网络下使用一段时间就会出问题
例如某场景的网络拓扑图如下:

一开始所有设备都能正常工作,但使用一段时间后就会所有设备都失效,
虽然所有设备不是同时出现问题,但只要有一只出现问题,其他设备都会前赴后继的出问题
经过了一段时间的跟踪之后,终于把问题缩小到设备和路由器之间,目前还不知道网卡的问题还是路由器的问题
本渣使用wireshark抓了2个设备的数据包,一个正常,一个异常,数据内容都比较短
通过比较两个数据包的内容发现设备发送给路由器的数据包都正常:
1、正常设备(192.168.4.194)上传的数据包:

2、异常设备(192.168.4.199)上传的数据包:

通过比较,两者的源IP和目的IP都正常,源MAC地址与目的MAC地址也正常,而且包头的内容也基本一致(除了标识和校验有差别)
基本可以肯定这2台设备的数据包都是合法的!!!

既然设备到路由的数据包正常,那么我重新抓了路由到光猫的数据包
一般而言数据包经过路由器后,源IP地址会被封装成路由器的IP地址,源MAC地址会被封装成路由器的MAC地址
对于正常的设备来说都没有问题,问题就在于不正常的设备并没有按照上面的法则来做!!!
这是我抓到异常的设备通过路由器后的数据包:

这里发生了非常神奇的一幕,异常的设备(192.168.4.199)经过路由器后,源MAC地址变成了路由器的MAC地址,但源IP地址并没有改变!!!what the fuck!!!!!!这理论上是不可能的,通过路由器的数据包怎么可能只改变了源MAC而不改变源IP呢????
ps:别问我是怎么抓路由器到光猫的数据包的,带端口镜像的路由器可以抓通过路由器的所有数据包,包括LAN和WAN

搞了很久也没能搞出来,包括把虚拟服务器也设置了,这诡异的问题还在!
本渣只能把问题的范围缩小到这里,至于是路由器的问题还是ENC28J60的问题,本渣已经没能力考究了,恳请各位大佬赐教!!!

沙发
恩哥|  楼主 | 2017-12-4 11:27 | 只看该作者
后面联系过路由器的厂家了,这应该是路由器的问题,最后找到一个方案去解决这个问题

使用特权

评论回复
板凳
michaellengleng| | 2017-12-6 09:42 | 只看该作者
ENC28J60 是microchip的芯片,我们有代理的,有需要支持的多多联系

使用特权

评论回复
地板
sdggg| | 2018-1-25 21:34 | 只看该作者
子网掩码?

使用特权

评论回复
5
恩哥|  楼主 | 2019-4-24 17:09 | 只看该作者
colin2135 发表于 2018-1-25 11:49
请问楼主是F103还是F107,裸跑还是用了RTOS

用的是ENC28J60,后面发现跟网卡没有任何关系,跟单片机程序也没有任何关系,是网络协议的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

2

粉丝