1

A strange situation is seen in this case:

  1. HTTP request is sent with TCP flag NO_DELAY (i.e. Nagle algorithm disabled);
  2. WireShark does not capture the TCP packet with HTTP verb and headers - only the packet with HTTP body is seen (is the packet lost?);
  3. Remote host responses with ACK showing that not all data is acknowledged;
  4. TCP re-transmission occurs, and now HTTP verb and headers are captured by WireShark.

TCP flow from WireShark

More notes:

  1. If Nagle algorithm is ON then no packets loss or re-transmission is seen;
  2. The issue is verified in two distinct networks, so the issue is hardly connected with network environment (except, maybe the fact that hosts are virtual machines);
  3. Request is made with use of c# HttpClient (.NET 4);
  4. HTTP body size seems to play role - no issue for relatively small packets.

So it looks like the NO_DELAY causes a strange behavior with lost TCP packet with HTTP headers/verb inside.

Any advice?

Pavel Baravik
  • 173
  • 1
  • 9
  • Additional tests show that the issue may be connected with virtualized environment. Physical machine does not demonstrate such behavior. – Pavel Baravik Nov 05 '15 at 11:22

0 Answers0