This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Does the current NDK2.0 version support fast retransmission of a packet after three duplicate acks are seen? I cannot wait the the retransmssion timer to expire as waiting for 100ms causes issue with our application. I need to recover as fast as possible.
Any thoughts or feedback is welcomed.
The NDK supports a feature called Selective Acknowledgement. Perhaps this feature can help you with your issue?
From a quick Google search:
The problemMultiple packet losses from a window of data can have a catastrophic effect on TCP throughput. TCP uses a cumulative acknowledgment scheme in which received segments that are not at the left edge of the receive window are not acknowledged. This forces the sender to either wait a roundtrip time to find out about each lost packet, or to unnecessarily retransmit segments which have been correctly received. With the cumulative acknowledgment scheme, multiple dropped segments generally cause TCP to lose its ACK-based clock, reducing overall throughput.The solutionSelective Acknowledgment (SACK) is a strategy which corrects this behavior in the face of multiple dropped segments. With selective acknowledgments, the data receiver can inform the sender about all segments that have arrived successfully, so the sender need retransmit only the segments that have actually been lost.
The NDK supports SACK via the following socket option:
Permit RFC-2018 Selective Acknowledgment(SACK) conformantconnection. The SACK permitted option is exchanged at socketconnection time. Hence; on server side, the setting must be done beforecalling "accept()", and on clint side before calling "connect()".
We are glad that we were able to resolve this issue, and will now proceed to close this thread.
If you have further questions related to this thread, you may click "Ask a related question" below. The newly created question will be automatically linked to this question.
In reply to Steven Connell:
Thanks for responding.
I am currently using the SACK option and it works as advertized.
What I am looking for is a faster way to recover dropped/lost packets other than waiting for the NDK timer (100ms) to expire and then retransmit the lost packet. I have read about fast retransmission that detects a certain number of Duplicate Acks and when reached will retansmit the missing packet without the need to wait for the NDK timer to expire.
This functionality is described in RFC 2581.
As a seperate question does there exist a different TCP stack that can run on the DM648 other that the NDK that may be full featured? For DSP/ARM processors are there TCP stacks available?
In reply to dchasse:
Ok, I see, this clarifies it ... however, this feature is not supported in the NDK unfortunately. I've filed a bug so that this will be tracked and we can consider adding support for this feature in the future:
SDOCM00090231 consider adding fast retransmit to NDK (RFC 2581)
There are other stacks, but the one that supports the DSP/BIOS and SYS/BIOS operating systems is the NDK.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.