硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3690|回复: 7
收起左侧

[有问必答] enc28j60+LWIP在复杂网络长时间运行出现问题

[复制链接]

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
发表于 2017-9-18 23:39:45 | 显示全部楼层 |阅读模式
该问题出现的时间也不短了,鉴于本渣对网络研究不精,希望网络大神能指点一二


为了详细描述问题,这里交代下设备的使用背景:
公司有一批设备采用的网卡芯片是ENC28J60,使用的网络协议栈是LWIP,
在简单的网络底下运行没有问题(包括带有视频数据包的网络),但在某些网络下使用一段时间就会出问题
例如某场景的网络拓扑图如下:
拓扑图.PNG
一开始所有设备都能正常工作,但使用一段时间后就会所有设备都失效,
虽然所有设备不是同时出现问题,但只要有一只出现问题,其他设备都会前赴后继的出问题
经过了一段时间的跟踪之后,终于把问题缩小到设备和路由器之间,目前还不知道网卡的问题还是路由器的问题
本渣使用wireshark抓了2个设备的数据包,一个正常,一个异常,数据内容都比较短
通过比较两个数据包的内容发现设备发送给路由器的数据包都正常:
1、正常设备(192.168.4.194)上传的数据包:
   normal.png
2、异常设备(192.168.4.199)上传的数据包:
abnormal.png
通过比较,两者的源IP和目的IP都正常,源MAC地址与目的MAC地址也正常,而且包头的内容也基本一致(除了标识和校验有差别)
基本可以肯定这2台设备的数据包都是合法的!!!

既然设备到路由的数据包正常,那么我重新抓了路由到光猫的数据包
一般而言数据包经过路由器后,源IP地址会被封装成路由器的IP地址,源MAC地址会被封装成路由器的MAC地址
对于正常的设备来说都没有问题,问题就在于不正常的设备并没有按照上面的法则来做!!!
这是我抓到异常的设备通过路由器后的数据包:
router.png
这里发生了非常神奇的一幕,异常的设备(192.168.4.199)经过路由器后,源MAC地址变成了路由器的MAC地址,但源IP地址并没有改变!!!
what the fuck!!!!!!这理论上是不可能的,通过路由器的数据包怎么可能只改变了源MAC而不改变源IP呢????
ps:别问我是怎么抓路由器到光猫的数据包的,带端口镜像的路由器可以抓通过路由器的所有数据包,包括LAN和WAN

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2017-9-19 10:40:23 | 显示全部楼层
极有可能是你们的板子有问题。

可以考虑换个网络环境测试下的你们的这些板子。

另外就是,你们这个是在公司测试吗,还可以用几个电脑网络调试助手定时上传数据出去给服务器,看看是否容易出问题。基本不出问题的话,就是你们板子的问题了。
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
 楼主| 发表于 2017-9-19 11:26:07 | 显示全部楼层

回 eric2013 的帖子

eric2013:极有可能是你们的板子有问题。

可以考虑换个网络环境测试下的你们的这些板子。

另外就是,你们这个是在公司测试吗,还可以用几个电脑网络调试助手定时上传数据出去给服务器,看看是否容易出问题。基本不出问题的话,就是你们板子的问题了。 (2017-09-19 10:40) 
非常感谢eric大神的耐心解答[s:142]
1、服务器那边我找同事抓过包,可以确定服务器端没有问题的
2、机子放在公司里测试了一个多月都没出现问题,但放在客户的小区里就容易出问题
3、一开始以为某个小区会有这问题,但现在在另一个小区也有同样的问题,而且只有我们的设备有这问题,其他网络设备在同一级交换机底下都没有这问题,包括电脑也能正常上网
4、个人怀疑是不是设备的LWIP协议出问题了,虽然UDP数据包没错,但其他数据包没有抓过,所以不敢肯定设备没问题
小弟跑灯的水平
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2017-9-20 00:30:36 | 显示全部楼层

回 一直在跑灯 的帖子

一直在跑灯:非常感谢eric大神的耐心解答[s:142]
1、服务器那边我找同事抓过包,可以确定服务器端没有问题的
2、机子放在公司里测试了一个多月都没出现问题,但放在客户的小区里就容易出问题
3、一开始以为某个小区会有这问题,但现在在另一个小区也有同样的问题,而且只有我们的设备有这问题 .. (2017-09-19 11:26) 
极有可能是UDP通信有问题,用TCP会好很多。
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
 楼主| 发表于 2017-10-2 22:47:19 | 显示全部楼层

回 eric2013 的帖子

eric2013:极有可能是UDP通信有问题,用TCP会好很多。 (2017-09-20 00:30)

麻烦帮忙删除该回复,谢谢!
小弟跑灯的水平
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
 楼主| 发表于 2017-10-2 22:48:17 | 显示全部楼层

回 eric2013 的帖子

eric2013:

极有可能是UDP通信有问题,用TCP会好很多。
找了2周大概找到问题的出现情况了,原因并不在于上层的协议(UDP/TCP)

只有使用企业级路由器时才会有这情况,家用级路由器并不存在这种情况,当企业级路由器复位后,不知为何会把我们的设备排除在网络外,
也就是说路由器会认为这些设备并不是自己管理的,因此会把设备的所有数据包都直接pass到上一层路由。

目前通过测试有一种方法可以让企业级的路由器在复位后重新识别我们的设备,
具体的做法是当设备识别到路由器重启后便立刻重复发送ARP包来通知路由器更新ARP表的信息。
最新版本的LWIP也没有这功能,用户可以通过修改源码让LWIP实现重复发送ARP,由于跟公司签了保密协议具体代码本渣不能提供,希望各位大神谅解
小弟跑灯的水平
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2017-10-3 01:06:59 | 显示全部楼层

回 一直在跑灯 的帖子

一直在跑灯:找了2周大概找到问题的出现情况了,原因并不在于上层的协议(UDP/TCP)

只有使用企业级路由器时才会有这情况,家用级路由器并不存在这种情况,当企业级路由器复位后,不知为何会把我们的设备排除在网络外,
也就是说路由器会认为这些设备并不是自己管理的,因此会把设备的所有数 .. (2017-10-02 22:48) 
谢谢告知问题的原因。帖子有始有终[s:130]
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

小弟跑灯的水平

积分
23
 楼主| 发表于 2017-10-3 12:46:17 | 显示全部楼层

回 eric2013 的帖子

eric2013:谢谢告知问题的原因。帖子有始有终[s:130] (2017-10-03 01:06) 
eric大神放假了也还惦记着论坛,大写的赞[s:151]
小弟跑灯的水平
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 17:10 , Processed in 0.233078 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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