RPC TCP connection terminated by server after data sent to client is not acknowledged
Issue
- Client application running on Red Hat Enterprise Linux repeatedly calls the RPC procedure clnt_call with a timeout of 0
- The receive buffer on the client fills and eventually the Red Hat Enterprise Linux stops acknowledging the TCP segments from the RPC server
- RPC server terminates the TCP connection after multiple retransmissions
- The failure to acknowledge the TCP segments is due to the small number of bytes (< 20) sent by the server in each TCP segment and window scaling. The size of the scale makes it impossible to reduce the advertised window appropriately. If window scaling is disabled a zero window is advertised but the result is a hung connection.
Environment
- Red Hat Enterprise Linux 6
- libtirpc
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.