I am connecting to the IoT Hub through an edge device. I am sending some telemetry data to the edge. The packets send are processed on the IoT Edge and stored somewhere. The issue that I am currently having is not getting some ACK packets from the server sometimes which causes a connection reset.
Their are 3 different cases:
1) the device is sending telemetary packet and receiving the ACK from the server after each packet
2) The device send few packets without getting any response from the server, and after a while the server send successive ACK packets.
3) Case number 2 trigger a reset. so the device send a TCP RST flag and then attempt to re-connect to the server.
What happens after triggering the RST flag depends on the version of QOS that I am currently using.
When using QOS 1, the device never recovers from this state and keep going in a loop trying to send RST and re-connect, until it eventually stops any further attempts and it gets stuck somewhere in the code.
When using QOS 0, the device recovers normally after sending the RST flag. However, the issue might happen again after some time.
I am attaching screenshots of the wireshark capture for the three different cases that I described.
my question is, what might be the reason that the server is not responding with ACK packets? Also, what makes the board gets stuck when using QOS1?