Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - io-pkt dropping syn-ack frame with data payload: (5 Items)
   
io-pkt dropping syn-ack frame with data payload  
We're using QNX  to setup a TCP/IP client connection to an embedded device with a very minimal TCP/IP stack.  A bug in 
the embedded server device's stack seems to inject some of the QNX TCP options data into the data section of the first 
syn-ack frame in the three way TCP setup sequence.  When this happens, the QNX TCP/IP stack seems to silently drop the 
frame and the setup never completes.  

The same connection sequence, with a Linux box as the client, is successful.

Attached is a tcpdump, which can be viewed in Wireshark, that shows the detail.  Please see the funny data payload in 
frame #2.  It's weird, but not technically wrong, I think, and should not have been dropped.

192.168.1.2 is the client making the connection
192.168.1.1 is the server receiving it.

Thoughts?

- K.C.
Attachment: Text tcp_qnx_failed.pcap 1.58 KB
Re: io-pkt dropping syn-ack frame with data payload  
Attached is a tcpdump capture of a successful connection with a Linux client (I could not attach two files to the first 
posting).

- K.C.
Attachment: Text tcp_linux_ok.pcap 1.02 KB
Re: io-pkt dropping syn-ack frame with data payload  
On Mon, Mar 22, 2010 at 05:33:31PM -0400, Kenneth Furge wrote:
> We're using QNX  to setup a TCP/IP client connection to an embedded device with a very minimal TCP/IP stack.  A bug in
 the embedded server device's stack seems to inject some of the QNX TCP options data into the data section of the first 
syn-ack frame in the three way TCP setup sequence.  When this happens, the QNX TCP/IP stack seems to silently drop the 
frame and the setup never completes.  
> 
> The same connection sequence, with a Linux box as the client, is successful.
> 
> Attached is a tcpdump, which can be viewed in Wireshark, that shows the detail.  Please see the funny data payload in 
frame #2.  It's weird, but not technically wrong, I think, and should not have been dropped.
> 
> 192.168.1.2 is the client making the connection
> 192.168.1.1 is the server receiving it.

Check the output from 'netstat -pip' and 'netstat -ptcp'
on the qnx end.  There should be some stat incremented
when the packet is dropped.

Regards,

-seanb
Re: io-pkt dropping syn-ack frame with data payload  
Attached is another trace and the netstat statics for both before and after the trace (IP and TCP stats). Looking at the
 TCP traces I see the following notable changes:

8 vs. 11 completely duplicat packets
0 vs. 6 retransmit timeouts
277 vs. 344 PCB hash misses
0 vs 1 PMTUD blackhole detected

Can you provide any thoughts on what's going on? Again, Linux seems to be content with these sequences.



Attachment: Compressed file trace_and_stats.zip 3.6 KB
Re: io-pkt dropping syn-ack frame with data payload  
Sean,

I'll add to Glenn's posting that there is quite a bit of noise in the results since we could not zero in on the 
problematic interface.  I question how helpful the metrics will be.

The localhost interface was still up at the time.  In addition, we had temporarily unplugged an additional Ethernet 
cable also present on the box.

Finally, I should mention that this is on 6.4.1 with io-pkt.

- K.C.