Bug 2794

Summary: Handling SYN+ACK after SYN in tcp-socket-base.cc
Product: ns-3 Reporter: Tom Henderson <tomh>
Component: tcpAssignee: natale.patriciello
Status: CONFIRMED ---    
Severity: normal CC: ns-bugs
Priority: P3    
Version: unspecified   
Hardware: All   
OS: All   
Attachments: test case to reproduce

Description Tom Henderson 2017-10-05 10:18:13 EDT
Reported on ns-3-users list:
https://groups.google.com/forum/#!topic/ns-3-users/f-gmOfSJ4F0
Comment 1 Tom Henderson 2017-10-05 10:25:54 EDT
Created attachment 2929 [details]
test case to reproduce

Enabling this program in the src/internet/test directory will demonstrate the problem.

Run it as:
NS_LOG="TcpSocketBase" ./waf --run 'test-runner --suite=tcp-handshake' > log.out 2>&1

The test forces the loss of the first SYN+ACK, but not subsequent ones.

The log will show that the TCP will repeatedly resend SYN+ACK then give up.

On line 12, if ENABLE_DATA is enabled, the test will get by ths because the ACK (of SYN+ACK) comes in the initial data from the source.
Comment 2 Tom Henderson 2017-10-05 10:28:47 EDT
My sense of this is that an uncommon scenario would trigger this bug:

1) client initiates TCP session to server (via connect()).

2) despite completing the connection (from its perspective) the client leaves the connection open and sends no data to the server.