arefinsami
arefinsami

Reputation: 363

How can i force tcp to discard the oldest data segment in the buffer and accept the new data written by the application in NS2

I'm trying to adjust TCP to work well over real-time communication. To do this one of the specification is to force TCP to accept new data written by the application even when the buffer is full which makes TCP sometimes 'unreliable'. This way the applications write calls are never blocked and the timing of the sender application is not broken. I think there must be an option in NS2 to make it possible. So, How can I force TCP to discard the oldest data segment in the buffer and accept the new data written by the application in NS2?

Upvotes: 1

Views: 336

Answers (2)

grieve
grieve

Reputation: 13508

If you are going to be dropping data anyway, just drop it before you send it to the socket. You can use select to see if the socket is available for writing, and if not drop the data at the application layer. If it is of the utmost importance that you have the latest freshest data, then see Brian's answer.

Edit

On a side note you may want to google for real time network protocols, and see what already exists.

Upvotes: 1

Brian White
Brian White

Reputation: 8756

You cannot. TCP is a "reliable stream". Any functionality that allowed data to be dropped would be counter to that goal and so there is no such support.

If you want to be able to drop data, you're going to have to switch to something like UDP and implement your own windowing/retry if you want "mostly reliable delivery" instead of "best effort".

Upvotes: 3

Related Questions