0

We've implemented a TCP server socket in C++ on a linux machine which is connected to another device, streaming data small packets at high rate (800 Hz). To do so without too much latency (which we need to avoid), the client often flushes after writing the data packet (consistent size). Accordingly we set TCP_NODELAY to avoid buffering.

In wireshark we see this runs well for some period of time (usually some seconds ), until suddenly the server fails to respond [ACK] to the [PSH, ACK] from the client. The client manages to send 5 packets, without [ACK] and then begins waiting for the [ACK] before continuing. It waits for the duration of approximately 2 additional packets (~2ms) beyond the 5 sent successfully, which is unacceptable for our application.

We've set TCP_QUICKACK, which doesn't seem to do anything. We're not sure at all at this point what the cause is.

0

You must log in to answer this question.

Browse other questions tagged .