Menu

#69 Improve rate control algorithms

3.7.0
closed
ratecontrol (1)
5
2020-01-27
2014-12-19
Anonymous
No

udplso uses a rudimentary method of transmit rate control, consisting of sleeps between each packet send, with a statically configured duration calculated from the desired rate. The actual duration of the sleep is somewhat variable, however, resulting in imprecise rate control. As a result, to achieve a particular desired rate, one must configure some higher rate, and the delta between desired/configured rates is variable between machines and workload sizes.

This feature request is for udplso rate control to use a more sophisticated algorithm. For example, a token bucket (http://en.wikipedia.org/wiki/Token_bucket) or a leaky bucket (http://en.wikipedia.org/wiki/Leaky_bucket).

Some additional advice:

For our intended use, the rate control algorithm must not be allowed to induce unacceptable amounts of jitter into competing RTSP streams (IP telephony and video teleconferencing). What this means: To achieve a desired average rate (over some small rolling window of time), you must occasionally transmit at a higher rate to make up for the moments when transmit rates dipped below configured values. The extent and duration of the overshoot should be minimized. For similar software (SWRDFSH), a bucket capacity of one-second's worth of data (i.e., a one-second rolling window) been shown to function well in our environment.

Discussion

  • Scott Burleigh

    Scott Burleigh - 2014-12-30
    • assigned_to: Scott Burleigh
    • Group: 3.3.0 --> 3.4.0
    • Priority: 1 --> 5
     
  • Scott Burleigh

    Scott Burleigh - 2015-08-31

    There clearly won't be time to address this in version 3.4.0.

     
  • Scott Burleigh

    Scott Burleigh - 2015-08-31
    • Group: 3.4.0 --> 3.5.0
     
  • Jeremy PM

    Jeremy PM - 2016-06-23

    An initial implementation of the token bucket algorithm has been implemented in branch: bug-0069-Improve-LTP-RateControl. Further testing will be performed.

     

    Last edit: Jeremy PM 2016-06-23
  • Scott Burleigh

    Scott Burleigh - 2016-07-13
    • status: open --> pending
     
  • Scott Burleigh

    Scott Burleigh - 2016-07-13

    Addressed in the bug-0069-Improve-LTP-Rate-Control feature branch, per Jeremy Pierce-Mayer.

     

    Last edit: Scott Burleigh 2019-07-08
  • Scott Burleigh

    Scott Burleigh - 2016-08-12
    • status: pending --> accepted
    • Group: 3.5.0 --> 3.5.1
     
  • Scott Burleigh

    Scott Burleigh - 2016-08-12

    Jeremy and I have agreed that some more development and (especially) some more testing to demonstrate reduced jitter will be needed before we release this revision, so we are slipping it into version 3.5.1

    A little clarification may also be in order. Transmission rate control in udplso is "rudimentary" because its original purpose was simply to slow down UDP transmission enough to reduce UDP congestion loss. When a datagram arrives at a UDP buffer before the current occupant of that buffer has been processed, that earlier datagram is simply lost; this results in otherwise avoidable LTP retransmission and reduces throughput. UDP rate control only needed to be strict enough to force the udplso process to be rescheduled, giving the IP stack an opportunity to deal with UDP buffer contents.

    In that sense, the revision proposed in this ticket is not a bug fix but a feature request. UDP rate control is now being asked not only to reduce congestion loss but also to reduce jitter in the rate of datagram arrival, to improve RTS performance on the International Space Station. That is certainly reasonable, but we are going to have to make sure that meeting this new requirement doesn't cause us to fail in the original purpose of the feature.

     
  • Scott Burleigh

    Scott Burleigh - 2017-03-07
    • Group: 3.6.0 --> 3.6.1
     
  • Scott Burleigh

    Scott Burleigh - 2017-03-07

    Jeremy's revisions and testing are not yet finished, so we are slipping this into version 3.6.1.

     
  • Scott Burleigh

    Scott Burleigh - 2018-07-26
    • Group: 3.6.1 --> 3.6.2
     
  • Scott Burleigh

    Scott Burleigh - 2018-07-26

    Nicola Alessi (U. of Bologna) has developed some code that addresses this issue. Josh is working on integrating it into ION.

     
  • Scott Burleigh

    Scott Burleigh - 2018-09-01
    • Group: 3.6.2 --> 3.6.3
     
  • Scott Burleigh

    Scott Burleigh - 2018-09-01

    Nicola will be at JPL in three weeks and can work on this integration himself at that time. Moving it to 3.6.3 in the expectation that it can't be finished in time for the 3.6.2 release, but will bring it back to 3.6.2 if possible.

     
  • Scott Burleigh

    Scott Burleigh - 2018-11-09
     
  • Scott Burleigh

    Scott Burleigh - 2018-11-09

    Nicola's fix for udplso is going into 3.6.2, but this ticket is being left open for two additional closely related work items:
    1. The udpclo daemon in bp/udp needs to be updated to work the same as udplso.
    2. The transmission rate underlying both udplso and udpclo rate control should be taken from the contact plan rather than provided on the daemon command line.

     
  • Scott Burleigh

    Scott Burleigh - 2019-07-08
    • status: accepted --> pending
     
  • Scott Burleigh

    Scott Burleigh - 2019-07-08

    Addressed in bugs-69-and-138 feature branch.

     
  • Scott Burleigh

    Scott Burleigh - 2020-01-27
    • status: pending --> closed
     

Anonymous
Anonymous

Add attachments
Cancel