Opened 8 weeks ago

Last modified 5 weeks ago

#2711 accepted enhancement

Streaming: allow more than one fast retransmit per packet

Reported by: Zlatin Balevsky Owned by: Zlatin Balevsky
Priority: major Milestone: undecided
Component: streaming Version: 0.9.45
Keywords: Cc:
Parent Tickets: Sensitive: no

Description

This is not mentioned in the rfc, but it does not against anything I've seen in the rfc either. The idea is that if the same packet keeps getting NACKed, it makes sense to fast-retransmit it more than once, as long as "enough" time has passed since the last transmission.

Enough should be at least one RTT, maybe one RTO, haven't decided yet. Either measure is better than the magic constant of 4 seconds that is in the code now.

I'm setting 2710 as parent because the issue of the same packet getting NACKed many times becomes more visible if the change in that ticket is applied.

Subtickets

#2715: Streaming: single retransmit timer per connectionclosed
#2718: Streaming: TCP-Westwoodclosed

Change History (4)

comment:1 Changed 8 weeks ago by zzz

Version: 0.9.460.9.45

It's been a long time since I looked at fast retransmit but I suspect it has issues, and it may diverge greatly from the RFCs, even more than what OP implies. It probably needs to be looked at but I think it's lower priority and shouldn't be done in parallel with the other recent streaming tickets.

comment:2 Changed 7 weeks ago by zzz

Add a subticket #2715 (Streaming: single retransmit timer per connection).

comment:3 Changed 6 weeks ago by Zlatin Balevsky

Owner: set to Zlatin Balevsky
Parent Tickets: 2710
Priority: minormajor
Status: newaccepted

This is well defined in RFC 6675. That algorithm is quite complicated, but I believe it is necessary to implement it. Marking this as major and will work on it post-0.9.46

comment:4 Changed 5 weeks ago by zzz

Not convinced the complexity is worth it, and there may be a much simpler interim step we could take. Additionally, there's other things that may be higher priority, e.g. #2713 . For discussion early in the .47 cycle.

Note: See TracTickets for help on using tickets.