Bug 2794 - Handling SYN+ACK after SYN in tcp-socket-base.cc
Handling SYN+ACK after SYN in tcp-socket-base.cc
Product: ns-3
Classification: Unclassified
Component: tcp
All All
: P3 normal
Assigned To: natale.patriciello
Depends on:
  Show dependency treegraph
Reported: 2017-10-05 10:18 EDT by Tom Henderson
Modified: 2017-10-05 10:28 EDT (History)
1 user (show)

See Also:

test case to reproduce (15.31 KB, text/x-c++src)
2017-10-05 10:25 EDT, Tom Henderson

Note You need to log in before you can comment on or make changes to this bug.
Description Tom Henderson 2017-10-05 10:18:13 EDT
Reported on ns-3-users list:
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.