title: TCP receives packets, but it ignores them
body: <p>I have a really strange networking problem. The actual network configuration is quite complex, because I am using Openstack and Docker to build a virtual network. However, the problem is not there, because I am capturing on my host's interface and I see all the packet in the right way.... But for some reasons I do not know, it seems that TCP is ignoring them, though they have been received: it doesn't send ACK for them and it doesn't send the data to the application.</p>
  
  <p>In my trials, I sent HTTP GET request for an html page to a server jetty (IP 192.168.4.3) from an host (192.168.4.100).</p>
  
  <p>What I see capturing on 192.168.4.100 with Wireshark is:</p>
  
  <pre><code>192.168.4.100 -&gt; SYN -&gt; 192.168.4.3
  192.168.4.3 -&gt; SYN, ACK -&gt; 192.168.4.100
  192.168.4.100 -&gt; ACK -&gt; 192.168.4.3
  
  192.168.4.100 -&gt; GET / HTTP/1.1 -&gt; 192.168.4.3
  192.168.4.3 -&gt; ACK -&gt; 192.168.4.100
  192.168.4.3 -&gt; Fragment 1 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 1 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 1 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 1 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 1 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 1 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 1 of HTTP 200 OK response -&gt; 192.168.4.100
  
  192.168.4.100 -&gt; ACK of Fragment 1 -&gt; 192.168.4.3
  
  192.168.4.3 -&gt; Retransmission of Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 2 of HTTP 200 OK response -&gt; 192.168.4.100
  
  192.168.4.100 -&gt; ACK of Fragment 2 -&gt; 192.168.4.3
  
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  192.168.4.3 -&gt; Retransmission of Fragment 3 of HTTP 200 OK response (PSH) -&gt; 192.168.4.100
  
  192.168.4.100 -&gt; ACK of Fragment 3 -&gt; 192.168.4.3
  </code></pre>
  
  <p>This is actually a big problem, because there are about 40 seconds between the GET request and the last ACK which coincides with the moment the application (telnet in this case) gets the data.</p>
  
  <p>I have checked all the checksum and they are correct...</p>
  
  <p>So I actually don't know why this happens and what to do! I have tried with different OS as hosts (a Windows 8 mobile phone, a MAC OSX, a Ubuntu 14.04, ...), but nothing changes.
  If I send the same request from another docker of the virtual network, everything works fine.</p>
  
  <p>Any idea about what the problem could be?</p>
  
  <p>Thanks!</p>
  
  <p>PS here you can see a screenshot of the capture:</p>
  
  <p><img src="https://i.stack.imgur.com/Xpebg.png" alt="enter image description here"></p>
  
  <p><strong>Update</strong></p>
  
  <p>One thing I think can be interesting is that I have made an analogous capture, but when a HTTP request is sent from 192.168.4.3 to 192.168.4.100. The capture is taken again on the 192.168.4.100 interface and it seems again that 192.168.4.100 ignores the packets it receives (look at the three way handshake for example). And I found no reason for this again.</p>
  
  <p><img src="https://i.stack.imgur.com/X4HfD.png" alt="enter image description here"></p>