解决了一次ping延迟的问题

前言

上周,代码写的差不多了,在现场和客户的工程师一起调试程序。
发现通讯质量不好。咋发现的呢?我的客户端跟3台设备通讯:他们的2台自研主机(型号相同),另外一个控制设备(控制那2台主机的设备)。是我客户端和他们自研的工控主机通讯时,通讯协议没错,但是经常性的超时,没回包,重连服务程序等。

开始从客户端的本本ping他们的服务程序所在的工控机,看看到底有啥问题,是线路不好么?。
发现,用 ping -t连续观察, 每隔3060秒,总会又那么56秒中,ping会卡住。然后ping -t 才会正常。然后周期性的重复卡住的现象。
当时有以下反应:

  • 现场的网线都接到了一个简陋的交换机上,是不是那个交换机有问题?
  • 网线是不是有接触不好的情况?
  • 是不是嵌入式Linux剪裁时(已经不是标准的Linux, 至少从表面上看,Linux的开机Logo给换成他们家的),参数整的不合适,连tcp/ip协议栈都不对了? 因为ICMP操作根本没在应用程序中调用过。

这个问题,当天没解决了。确实检查出有一根网线质量不好,挑出来,丢了。 但是还是有这种现象。

问题解决

第二天,我还有要完善下程序,就没去现场。
等第三天去现场时,想跑下完整流程。需要确认和修改2台主机的IP.
去仪表盘上调整IP时,不经意瞄到MAC地址,有种异样的感觉。 感紧去看了看另外一台的MAC地址。
原来2台主机的MAC地址相同,将一台的IP地址最后一位,改成不一样的数字。重启,再去ping -t,很连续的运行。

总结问题发生的原因

这种自研的主机,一般不是从网卡上取的实际MAC地址。
简单一点的嵌入式设备,根本就不会真的带一张市面上公板的网卡(MAC地址绝对不会重复).
而是会用MCU(自带网卡芯片控制接口)+一个网卡物理芯片(将外围的原件接好),自己接出一个RJ45网口出来。
那这样的网卡设备,MAC地址,就是自己在配置文件中指定的。所以,一般出厂时,MAC地址就是相同的。

如果在现场,遇到硬件和软件夹杂在一起的问题,确实挺头疼的。
如果自己的任务因为这种环境问题,耽误了进度,确实有点无奈。
如果解决了问题,说有偶然因素,那确实。其实那种异样的感觉,也是以前积累的感觉吧:)

发布了436 篇原创文章 · 获赞 126 · 访问量 175万+

猜你喜欢

转载自blog.csdn.net/LostSpeed/article/details/101001595