Subject: Skipping past TCP lost packet in userspace

From: Josh Lehan <[email-masked]>
Date: Mon, 30 May 2011 18:19:20 -0700

Hello.  I looked, but could not find an answer.  Is there already an
ioctl() or something like that in Linux, that would allow a userspace
TCP socket to skip past a lost packet?

The kernel already will continue to queue up packets, and with TCP SACK,
the kernel can acknowledge reception of further packets beyond the lost
packet, allowing the queue to continue growing.  However, all these
queued packets won't be delivered to userspace until the original lost
packet is received again, after it has been retransmitted.

Is there a way for a userspace program to prevent this needless stall?
It would be great if there was an ioctl() or similar call, that would
tell the kernel that it's OK to leave a gap in the data stream, and
resume supplying userspace with more data.  An obvious application would
be media streaming, and many high-level media protocols do their own
block framing anyway, so resynchronization after the data gap would not
be a problem.

This sounds like something that would be a FAQ, and if so, please point
me to the answer.  Thank you!

Josh Lehan