Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failure to Recover from TCP Re-transmission #111

Open
Carter12s opened this issue Feb 25, 2022 · 0 comments
Open

Failure to Recover from TCP Re-transmission #111

Carter12s opened this issue Feb 25, 2022 · 0 comments

Comments

@Carter12s
Copy link

Carter12s commented Feb 25, 2022

Totally possible this is user error, or some misconfiguration, but it looks like a failure in either tokio modbus or mio to handle TCP Re-transmissions correctly. We have two client processes (one reading, one writing) talking to a remote server (ABB VFD) in a harsh EM environment where there are a reasonable number of low level transmission failures.

We see a 100% repeatable pattern in network traffic of:

  1. Request is sent, no response is received
  2. After ~200ms a TCP Retransmission is sent from client to server
  3. Immediately server responds with "TCP Previous segment not captured"
  4. Client does not ack the "TCP Previous Segment not captured message"
  5. After ~800ms a TCP Retransmission is sent from server to client
  6. Request then fails

This may be an issue with how the server device is responding to the re-transmission, I'm unclear on the what the correct low-level responses should be in the situation, but its repeatable that whenever a TCP Re-tranmission occurs the request is never successfully recovered by TCP's retry mechanisms.

It should be noted that while the ~1 second delay from TCP retries is occurring, the other client is still successfully communicating with the device.

Client System Details:
Ubuntu 20.04, Rust 1.58.1, Tokio-Modbus 0.5.1

Wireshark screenshot of events:
image

Link to packet capture of failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants