工业通讯中我们经常会碰到一些网络通讯问题,导致数据采集中断或者获取不到数据,今天我们就来浅聊一下因ECN引起的KEPServerEX常见通讯故障以及相应的故障处理方法。
什么是ECN?
ECN全称是显式拥塞通知(Explicit Congestion Notification),在IPV4数据包报头中占DS字段后两位。
ECN能做什么?
我们看一下常规TCP针对网络拥塞的应对:
常规TCP针对网络拥塞过程:
1.当网络中出现拥塞的时候,TCP/IP会丢包,在接收定时器超时后重传。
2.源端检测到丢包后,就会下调发送性能,降低传输速率来缓解拥塞。
3.拥塞缓解后TCP为了获得发送的最优性能,又继续扩大发送窗口,直到发现丢包,重复之前问题。
ECN通过TCP发送端和接收端以及中间路由器的配合,感知中间路径的拥塞。
在发送端和接收端成功协商ECN后,支持ECN的路由器就可以发生拥塞时在IP报头中设置一个标记,发出即将发生拥塞的信号,减缓TCP的发送速率,而不是直接丢弃数据包。从而从早期避免拥塞而导致的丢包,实现网络性能的最大利用。
ECN可以减少TCP的丢包数量,通过避免重传,减少了延迟,尤其是抖动,提升了应用的性能。
通讯问题分析:
KEPServerEX中遇到的ECN问题:
如果您遇到以下几个问题那可能就要考虑一下是不是由于ECN导致的通讯故障。
1. 在较旧的操作系统上可以通讯,但是使用较新的服务器反而读不到(网络端口都是通的)
2. 刚连接的时候可以读到数据,但是几分钟后数据状态变成BAD了
3. KEPServerEX事件日志中的设备无响应消息,但是网络及端口都是通的
4. Windows Server 2012系统上查看通讯诊断报文时没有TX/RX
注1:三菱、AB、Omron、Modbus等都可能遇到此问题。
注2:Microsoft在Windows 10、Windows Server 2012 和 Windows Server 2016 中默认在所有网络适配器上启用ECN。
那可能大家就有疑问了,前面不是说ECN可以减少丢包提升网络性能吗?那为什么还会导致出现问题呢?
一般在ECN使用上,需要发送端、接收端、路由器同时启用才可以正常工作。而一些较旧的设备会因为操纵标头而丢弃或拒绝数据包,导致无法进行数据通讯。
解决方案:
通常此时需要禁用计算机上的ECN来避免此问题
通过以下方式在机器上禁用ECN:
● 通过右键单击并选择以管理员身份运行来启动DOS 命令 提示符;
● 输入以下内容:netsh int tcp set global ecncapability=disabled然后按Enter
● 重新启动计算机
文章声明:以上内容(如有图片或视频亦包括在内)除非注明,否则均为Net3C原创文章,转载或复制请以超链接形式并注明出处。定制服务:需要定制服务请加V:Net3c_2022
还没有评论,来说两句吧...