Subject: Re: [tcpm] Review of draft-ietf-tcpm-rack-08

From: Yuchung Cheng <[email-masked]>
Date: Wed, 15 Jul 2020 15:19:22 -0700

On Tue, Apr 7, 2020 at 2:34 PM Yi Huang
<huanyi=[email-masked]> wrote:
>
> I reviewed the latest version of RACK and I have a few questions about the RACK timer.
Thank you Yi for your review. Sorry it takes so long to respond. We've
released a new revision

>
>
>
> In Section 7.2, Step 5: Detect losses, the draft states how/when the RACK timer is armed. However, it’s not very clear that how/when it is canceled. I suppose when a cumulative ACK arrives and RACK_detect_loss() returns with timeout = 0, it should be canceled? Are the RACK timer and the RTO timer mutually exclusive?
>
Good catch. The timers are indeed mutually exclusive. We've revised to
clarify these points in TLP, but forget to touch RACK.
https://tools.ietf.org/html/draft-ietf-tcpm-rack-09#section-7.2

7.2.  Scheduling a loss probe

   The sender schedules a loss probe timeout (PTO) to transmit a segment
   during the normal transmission process.  ...  Further,
   prior to scheduling a PTO the sender SHOULD cancel any pending PTO,
   RTO, RACK reordering timer, or zero window probe (ZWP) timer
   [RFC793].

We'll add another subsection on "Managing RACK TLP timers" to further
clarify this.

>
>
> When the RACK timer fires and calls RACK_detect_loss(), due to clock granularity, the packets, for which the timer was scheduled for, might have not expired yet. Thus, the RACK timer might be scheduled several times for the same set of packets  even when there is no new (S)ACK coming back. I think it would be helpful to implementers if this is addressed/discussed in the spec.
>
That's a good point. The draft specified

RACK_detect_loss_and_arm_timer():
    timeout = RACK_detect_loss()
    If timeout != 0
        Arm the RACK timer to call
        RACK_detect_loss_and_arm_timer() _after_ timeout

so the RACK timer is supposed to expire 1 time unit after the maximum
remaining time among unacked segments. Therefore these "expired"
segments ideally would be marked lost.

Our initial version puts a "timeout + 1_timer_tick" but it just needs
more explanation to define a timer tick, etc.
>
>
> Thanks,
>
>
>
> Yi
>
>
>
>
>
> _______________________________________________
> tcpm mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/tcpm