cs8900a丢包现象

本文探讨了嵌入式系统中NFS挂载时出现的丢包问题及解决方案。通过对网络流量的分析,发现NFS使用UDP协议时丢包严重。通过修改内核参数指定使用TCP协议,有效缓解了丢包问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在移植cs89x0后,就一直碰到如下这个问题:

nfs: server 192.168.10.1 not responding nfs: server 192.168.10.1 not responding nfs: server 192.168.10.1 OK …… 嵌入式系统要经过很多次很长时间的尝试才能挂上。初步怀疑是NFS配置的问题,后来猜测可能是由于cs8900a丢包严重造成的。

在nfs faq找到: kernel: nfs: server server.domain.name not responding, still trying kernel: nfs: task 10754 can't get a request slot kernel: nfs: server server.domain.name OK A. The "can't get a request slot" message means that the client-side RPC code has detected a lot of timeouts (perhaps due to network congestion, perhaps due to an overloaded server), and is throttling back the number of concurrent outstanding requests in an attempt to lighten the load. Some possible causes: * Network congestion * Overloaded server * Packets (input or output) dropped by a bad NIC or driver....

根据上述观点,造成NFS没有回应的原因有3个,分别为网络拥塞、服务器过载和网卡丢包。 在我们的实验系统中,嵌入式系统和宿主机是直连的,而且服务器的基本处于空载的情形,所以不应该是前面两种情况,所以很可能是嵌入式系统网卡丢包严重引起的。 在目标机器中,用ifconfig看了一下,确实丢包比较严重。很可能就是这个问题了。

另一个意外的发现是,在查询丢包是,用tcpdump观察到nfs使用的是UDP协议。于是猜想,用TCP会不会有所改善? 接着就是另一个问题,如何在nfs作为根文件系统时,指定nfs挂载的参数? 带着问题,跟踪了fs/nfs/nfsroot.c的代码,发现在nfs作为根文件系统时,参数可以直接写在“nfsroot=”后面,每个参数用逗号隔开,如: nfsroot=192.168.10.1:/rootfs,proto=tcp,nfsvers=3,nolock 这样就可以指定nfs使用tcp协议。 重启后发现,竟然不再出现not responding的错误,一切感觉较为正常。

不过,cs8900a丢包现象依然存在。所以,使用tcp只是一个可行的解决办法,但最终还得解决网卡的丢包问题。

Disconnecting connection: Mirror.NetworkConnectionToServer because handling a message of type Mirror.SpawnMessage caused an Exception. This can happen if the other side accidentally (or an attacker intentionally) sent invalid data. Reason: System.IO.EndOfStreamException: ReadBlittable<System.Byte> not enough data in buffer to read 1 bytes: [FF-FF-FF-FF-FF-FF-FF-FF-03-01-02-00-00-00-35-01-14-00-00-00-8C-2E-E7-3C-66-38-FB-3D-CF-ED-17-3B-A9-76-15-35-ED-54-53-31-8D-6F-A3-B6-00-00-80-3F-6D-23-88-23-3D-6A-1F-3D-47-E3-94-A2-00-00-00-00-00-00-00-00-9B-84-D0-36-00-00-80-3F-F2-31-E5-AA-8F-E2-0B-3D-94-B3-7D-A6-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-AF-2A-C9-B1-14-26-FC-3C-A4-94-3B-25-1C-80-8B-35-E1-1F-83-BB-C7-16-BF-B7-7A-FF-7F-3F-07-F8-44-34-47-D2-02-3E-CB-4F-31-B2-A9-76-15-35-E9-05-37-31-41-57-5F-B4-00-00-80-3F-14-6D-23-24-33-07-14-3D-9E-CD-52-A4-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-C8-0D-99-B4-3D-B6-0D-3D-82-0A-4F-A6-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-FE-9A-A3-34-99-BD-16-3D-80-F5-20-A6-29-E0-B2-B5-FF-0E-96-BB-DF-7A-2B-3A-4D-FF-7F-3F-EF-91-41-BD-5B-66-DF-3D-AF-32-14-3B-EA-66-3F-36-EA-20-52-31-31-E7-13-B9-00-00-80-3F-E9-F5-97-24-FE-6F-29-3D-6E-5D-DB-23-A8-CC-C7-B6-BF-88-16-B1-8C-E0-C0-39-FF-FF-7F-3F-4C-02-9E-A7-A0-91-D4-3C-AE-C0-27-25-0D-90-75-36-DF-25-67-B0-F8-F8-70-B9-00-00-80-3F-DC-FF-55-27-EB-85-EF-3C-99-D8-DD-A3-46-E6-8C-B5-69-58-86-BB-EC-BF-16-3A-70-FF-7F-3F-1C-96-B5-BC-50-C5-F8-3D-D4-A2-D1-B8-A8-76-15-35-BE-C3-52-31-28-4D-A0-B6-00-00-80-3F-A5-39-D7-A2-33-81-13-3D-DB-B9-1A-25-FA-CE-1A-B6-65-C5-A3-AD-17-69-07-37-00-00-80-3F-FB-D4-00-28-AE-77-07-3D-1D-78-11-27-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-9D-C6-81-34-1F-EB-15-3D-4B-51-35-34-3F-5F-0E-37-20-5E-F2-BB-2A-0D-4A-BA-30-FE-7F-3F-F3-00-F6-3C-8B-30-1B-3D-69-88-B1-3C-9B-F4-8E-BE-9A-27-E1-BE-B7-CD-A6-3C-8C-76-5A-BF-12-E8-45-24-9E-5A-42-3D-59-49-EF-25-4B-12-E9-36-72-51-C4-AC-8D-A1-57-B5-00-00-80-3F-7E-00-D4-27-F3-7D-33-3D-F5-DE-67-29-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-13-44-5C-33-0F-AF-0D-3D-05-A1-8A-31-87-DC-15-3C-19-A7-00-BE-BC-9A-93-BD-24-4A-7D-3F-10-8C-2E-E7-3C-66-38-FB-3D-CF-ED-17-3B-FF-FD-F7-DF-10-6D-23-88-23-3D-6A-1F-3D-47-E3-94-A2-FF-FD-F7-DF-10-F2-31-E5-AA-8F-E2-0B-3D-94-B3-7D-A6-FF-FD-F7-DF-10-AF-2A-C9-B1-14-26-FC-3C-A4-94-3B-25-FF-F1-F7-DF-10-07-F8-44-34-47-D2-02-3E-CB-4F-31-B2-FF-FD-F7-DF-10-14-6D-23-24-33-07-14-3D-9E-CD-52-A4-FF-FD-F7-DF-10-C8-0D-99-B4-3D-B6-0D-3D-82-0A-4F-A6-FF-FD-F7-DF-10-FE-9A-A3-34-99-BD-16-3D-80-F5-20-A6-FF-F1-F7-DF-10-EF-91-41-BD-5B-66-DF-3D-AF-32-14-3B-FF-FD-F7-DF-10-E9-F5-97-24-FE-6F-29-3D-6E-5D-DB-23-FF-FD-F7-DF-10-4C-02-9E-A7-A0-91-D4-3C-AE-C0-27-25-FF-FD-F7-DF-10-DC-FF-55-27-EB-85-EF-3C-99-D8-DD-A3-FF-F1-F7-DF-10-1C-96-B5-BC-50-C5-F8-3D-D4-A2-D1-B8-FF-FD-F7-DF-10-A5-39-D7-A2-33-81-13-3D-DB-B9-1A-25-FF-FD-F7-DF-10-FB-D4-00-28-AE-77-07-3D-1D-78-11-27-FF-FD-F7-DF-10-9D-C6-81-34-1F-EB-15-3D-4B-51-35-34-FE-E9-F7-DF-10-F3-00-F6-3C-8B-30-1B-3D-69-88-B1-3C-F0-F5-9C-EC-10-12-E8-45-24-9E-5A-42-3D-59-49-EF-25-FF-FD-F7-DF-10-7E-00-D4-27-F3-7D-33-3D-F5-DE-67-29-FF-FD-F7-DF-10-13-44-5C-33-0F-AF-0D-3D-05-A1-8A-31-CB-91-66-E0-00-00-38-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-80-3F-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-80-3F-10-85-2E-E7-BC-66-38-FB-3D-D1-ED-17-3B-FF-FD-F7-DF-10-B8-C2-43-A2-3D-6A-1F-3D-85-0B-2D-A4-FF-FD-F7-DF-10-06-B9-68-29-8F-E2-0B-3D-4D-93-8D-26-FF-FD-F7-DF-10-F8-69-5B-32-14-26-FC-3C-52-B8-11-23-FE-11-F8-DF-10-1E-96-32-B4-47-D2-02-3E-C5-4F-31-B2-FF-FD-F7-DF-10-52-54-11-A2-33-07-14-3D-F5-98-43-A5-FF-FD-F7-DF-10-93-F4-9D-34-3D-B6-0D-3D-EB-75-C3-26-FF-FD-F7-DF-10-89-45-99-B4-99-BD-16-3D-47-95-D5-A5-00-12-F8-DF-10-F3-91-41-3D-5B-66-DF-3D-AB-32-14-3B-FF-FD-F7-DF-10-F5-F0-B8-22-EB-6F-29-3D-70-0D-E9-A5-FF-FD-F7-DF-10-DE-DE-31-29-C2-91-D4-3C-52-6C-F7-A5-FF-FD-F7-DF-10-BB-72-44-A9-EB-85-EF-3C-66-56-8D-26-FD-15-F8-DF-10-26-96-B5-3C-47-C5-F8-3D-10-A3-D1-B8-FF-FD-F7-DF-10-14-75-45-23-47-81-13-3D-CD-4A-B3-A5-FF-FD-F7-DF-10-F2-4E-88-29-AE-77-07-3D-47-4E-80-A6-FF-FD-F7-DF-10-9A-C6-81-B4-1F-EB-15-3D-47-C3-F5-A5-FF-15-F8-DF-10-F0-00-F6-BC-8A-30-1B-3D-69-88-B1-3C-A0-52-57-EB-10-47-89-80-24-9E-5A-42-3D-3D-8A-0A-A5-FF-FD-F7-DF-10-D8-C8-06-27-05-7E-33-3D-9C-75-38-A9-FF-FD-F7-DF-10-23-09-F0-B3-FD-AE-0D-3D-BC-8E-79-B4-33-6E-69-E0-38-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-80-3F-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-80-3F-38-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-80-3F-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-80-3F-DD-01-1A-00-00-00-BE-53-9C-BC-D8-0C-53-BB-C1-3E-B0-3C-6D-33-BC-BA-10-82-BD-BD-D8-1C-7D-BC-E7-DE-7E-3F-4E-3D-34-B3-A5-F5-AD-3B-62-10-7B-3D-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-AF-01-3A-B3-DD-83-85-B1-87-DA-1D-3D-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-FC-6A-12-34-BD-5C-7C-32-87-C9-AC-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-6F-4C-25-33-CA-D9-B8-34-12-ED-AD-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-77-58-B2-3C-76-5D-2E-BB-96-00-A1-3C-A0-7A-BD-B5-9B-A7-A5-3D-D9-ED-91-37-43-29-7F-3F-20-EB-A0-B3-17-82-8D-39-44-EF-64-3D-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-7B-5A-11-34-09-D3-0B-B1-26-35-DD-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-75-4E-40-B3-3D-E5-9C-32-E0-54-8A-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-36-C8-25-32-56-DA-A6-B3-A2-AE-9F-3C-D9-92-09-36-00-00-00-00-00-00-00-80-00-00-80-3F-F4-E1-76-BB-77-2F-3C-B8-A0-4E-B9-3C-52-03-21-BD-00-3F-11-BD-D8-40-A9-BA-0B-A4-7F-3F-2B-0A-F3-2F-7C-DA-C7-B1-57-16-77-3D-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-4E-30-AA-B0-AF-AF-2E-34-07-58-3B-3D-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-01-C9-40-32-A8-D7-86-B4-92-E0-CA-3C-A0-B3-33-22-00-00-80-A1-FF-FF-4F-A1-00-00-80-3F-2E-54-24-33-BE-EE-E5-B4-AF-20-CE-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-00-00-00-80-00-00-00-00-5C-8F-42-3D-32-31-8D-A4-74-BE-9B-09-32-31-8D-A4-00-00-80-3F-76-F2-14-3C-64-38-26-39-B0-38-B7-3C-02-77-F6-BC-D3-C0-CE-3C-D3-C8-5B-3A-6D-CD-7F-3F-09-C6-74-B3-07-0A-0C-AF-64-97-65-3D-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-B6-4D-30-34-C2-77-A7-B3-89-B0-30-3D-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-62-29-20-B4-EE-C8-4B-34-50-3A-A9-3C-00-00-80-A2-00-00-00-24-00-00-40-A1-00-00-80-3F-89-37-F2-B2-6F-8A-BF-34-25-92-AE-3C-A9-17-6E-35-00-00-00-00-00-00-00-80-00-00-80-3F-18-81-E7-BC-9D-21-66-BC-6B-C6-B3-3C-60-33-FD-BD-BA-D7-BC-BE-57-78-D8-3E-70-88-51-3F-D4-A5-03-33-F7-29-2C-34-A5-61-E9-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-75-44-8C-33-84-93-8C-B2-17-FF-E6-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-ED-3C-45-B4-AA-D8-3F-33-37-B1-EB-3C-00-00-00-00-00-00-00-80-00-00-00-80-00-00-80-3F-00-00-00-00-00-00-00-00-00-00-00-00-F4-04-35-3F-00-00-00-00-00-00-00-00-F4-04-35-3F-10-00-00-00-00-A0-45-36-3E-36-5E-9A-BF-FF-FD-F7-DF-10-80-33-BA-3A-CA-A0-7C-BF-91-36-4C-3F-ED-0D-BD-A7-00-00-10-30-EB-3F-3E-CA-A0-7C-BF-91-36-4C-3F-ED-0D-BD-A7-00-00 @ 2229/2222] at Mirror.NetworkReader.ReadBlittable[T] () [0x00047] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkReader.cs:142 at Mirror.NetworkReader.ReadByte () [0x00000] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkReader.cs:182 at Mirror.NetworkBehaviour.Deserialize (Mirror.NetworkReader reader, System.Boolean initialState) [0x00003] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkBehaviour.cs:1319 at Mirror.NetworkIdentity.DeserializeClient (Mirror.NetworkReader reader, System.Boolean initialState) [0x0002c] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkIdentity.cs:1422 at Mirror.NetworkClient.ApplySpawnPayload (Mirror.NetworkIdentity identity, Mirror.SpawnMessage message) [0x000fb] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkClient.cs:1166 at Mirror.NetworkClient.OnSpawn (Mirror.SpawnMessage message) [0x0001b] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkClient.cs:1550 at (wrapper delegate-invoke) System.Action`1[Mirror.SpawnMessage].invoke_void_T(Mirror.SpawnMessage) at Mirror.NetworkClient+<>c__DisplayClass68_0`1[T].<RegisterHandler>g__HandlerWrapped|0 (Mirror.NetworkConnection _, T value) [0x00000] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkClient.cs:559 at Mirror.NetworkMessages+<>c__DisplayClass9_0`2[T,C].<WrapHandler>g__Wrapped|0 (C conn, T msg, System.Int32 _) [0x00000] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkMessages.cs:206 at Mirror.NetworkMessages+<>c__DisplayClass8_0`2[T,C].<WrapHandler>b__0 (Mirror.NetworkConnection conn, Mirror.NetworkReader reader, System.Int32 channelId) [0x000cf] in D:\unity\project\1\MR\MR\Assets\Mirror\Core\NetworkMessages.cs:179 UnityEngine.Debug:LogError (object) Mirror.NetworkMessages/<>c__DisplayClass8_0`2<Mirror.SpawnMessage, Mirror.NetworkConnection>:<WrapHandler>b__0 (Mirror.NetworkConnection,Mirror.NetworkReader,int) (at Assets/Mirror/Core/NetworkMessages.cs:186) Mirror.NetworkClient:UnpackAndInvoke (Mirror.NetworkReader,int) (at Assets/Mirror/Core/NetworkClient.cs:293) Mirror.NetworkClient:OnTransportData (System.ArraySegment`1<byte>,int) (at Assets/Mirror/Core/NetworkClient.cs:369) kcp2k.KcpTransport:<Awake>b__29_2 (System.ArraySegment`1<byte>,kcp2k.KcpChannel) (at Assets/Mirror/Transports/KCP/KcpTransport.cs:117) kcp2k.KcpClient:OnData (System.ArraySegment`1<byte>,kcp2k.KcpChannel) (at Assets/Mirror/Transports/KCP/kcp2k/highlevel/KcpClient.cs:74) kcp2k.KcpPeer:TickIncoming_Authenticated (uint) (at Assets/Mirror/Transports/KCP/kcp2k/highlevel/KcpPeer.cs:402) kcp2k.KcpPeer:TickIncoming () (at Assets/Mirror/Transports/KCP/kcp2k/highlevel/KcpPeer.cs:438) kcp2k.KcpClient:TickIncoming () (at Assets/Mirror/Transports/KCP/kcp2k/highlevel/KcpClient.cs:272) kcp2k.KcpTransport:ClientEarlyUpdate () (at Assets/Mirror/Transports/KCP/KcpTransport.cs:184) Mirror.NetworkClient:NetworkEarlyUpdate () (at Assets/Mirror/Core/NetworkClient.cs:1649) Mirror.NetworkLoop:NetworkEarlyUpdate () (at Assets/Mirror/Core/NetworkLoop.cs:193)
05-25
### Mirror框架中NetworkReader读取Blittable数据时出现的EndOfStreamException异常解决方案 在使用Mirror框架进行网络通信时,`NetworkReader.ReadBlittable<T>()` 方法可能会抛出 `System.IO.EndOfStreamException` 异常。此异常通常表示尝试从流中读取超出其实际长度的数据[^1]。 #### 可能的原因分析 1. **发送方与接收方数据结构不匹配** 如果发送方和接收方使用的序列化对象定义不同,则可能导致接收方试图解析不存在的数据字段,从而引发该异常。 2. **消息大小不足** 发送的消息可能未完全写入缓冲区或在网络传输过程中被截断,导致接收方接收到的部分数据不足以完成反序列化操作[^3]。 3. **协议版本差异** 类似于ZooKeeper中的客户端和服务端版本不一致问题[^2],如果Mirror框架的不同组件之间存在版本冲突,也可能引起此类错误。 4. **自定义消息类型的实现不当** 当开发者扩展了新的消息类型而没有正确处理边界条件或者忘记更新相关的偏移量计算逻辑时,同样会触发这种状况[^1]。 #### 推荐解决办法 以下是几种常见的排查与修复策略: - **验证双方同步的消息格式** 确认所有参与通信的应用程序都基于相同的类定义构建消息负载。任何改动都需要重新编译整个项目并分发给所有的节点实例运行最新版代码[^1]。 - **增加超时重传机制** 对重要的交互设置合理的等待时间限制以及必要的重复请求流程来应对偶尔发生的丢包现象[^3]。 - **升级至相容版本** 查阅官方文档确认当前所依赖库的最佳搭配组合建议列表,并据此调整环境配置直至消除潜在兼容隐患为止[^2]。 - **加强日志记录功能** 扩展应用程序内部的日志体系以便更清晰地捕捉到发生崩溃前后的上下文线索用于后续诊断工作[^4]。 ```csharp try { var myData = reader.ReadBlittable<MyStruct>(); } catch (EndOfStreamException e) { Debug.LogError($"Failed to deserialize message due to incomplete stream: {e.Message}"); } ``` 以上代码片段展示了如何优雅地捕获可能出现的问题并将之转化为可追踪的形式供进一步研究参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值