← Back to team overview

rohc team mailing list archive

Re: [Question #670854]: negative feedback & rate limit mechamism

 

Question #670854 on rohc changed:
https://answers.launchpad.net/rohc/+question/670854

    Status: Open => Answered

Didier Barvaux proposed the following answer:
Hello,

The rate limiting is specified by the ROHC standard. See RFC3095, §5.7.6
named "Feedback packets and formats":

   When the round-trip time between compressor and decompressor is
   large, several packets can be in flight concurrently.  Therefore,
   several packets may be received by the decompressor after feedback
   has been sent and before the compressor has reacted to feedback.
   Moreover, decompression may fail due to residual errors in the
   compressed header.

   Therefore,

   a) in O-mode, the decompressor SHOULD limit the rate at which
      feedback on successful decompression is sent (if it is sent at
      all);
   b) when decompression fails, feedback SHOULD be sent only when
      decompression of several consecutive packets has failed, and when
      this occurs, the feedback rate SHOULD be limited;
   c) when packets are received which belong to a rejected packet
      stream, the feedback rate SHOULD be limited.

   A decompressor MAY limit the feedback rate by sending feedback only
   for one out of every k packets provoking the same (kind of) feedback.
   The appropriate value of k is implementation dependent; k might be
   chosen such that feedback is sent 1-3 times per link round-trip time.


So, the ROHC library implements a rate-limiting algorithm as follow: a NACK is not sent after every decompression failure, we wait for several failures before sending a NACK :
* if there is less than k failures out of the last n decompressions
   (successful or not), no feedback is sent
* if there is more than k failures out of the last n decompressions
   (successful or not):
    * if there is more than k feedbacks transmitted out of the last n
       decompression (failures only), no feedback is sent
    * if there is less than k feedbacks transmitted out of the last n
       decompression (failures only), one feedback is sent

The k and n values are configurable. They are specific per type of
feedbacks (ACK, NACK, STATIC-NACK). If you set k = 1 and n = 32, it
should disable the rate-limiting.

See the documentation of the rohc_decomp_set_rate_limits() function for more details:
https://rohc-lib.org/support/documentation/API/rohc-doc-2.2.0/group__rohc__decomp.html#gafb8a16da304917f1f820f4b95ab2438b

Regards,
Didier

-- 
You received this question notification because your team ROHC Team is
an answer contact for rohc.