WIP LEDBAT
This commit is contained in:
parent
0b0553f038
commit
e7fc31b7f0
1 changed files with 77 additions and 4 deletions
|
@ -3,13 +3,86 @@
|
||||||
|
|
||||||
(define-record-type ledbat-params
|
(define-record-type ledbat-params
|
||||||
(fields
|
(fields
|
||||||
|
; The term "MSS", or the sender's Maximum Segment Size, used in this
|
||||||
|
; document refers to the size of the largest segment that the sender
|
||||||
|
; can transmit. The value of MSS can be based on the path MTU
|
||||||
|
; discovery [RFC4821] algorithm and/or on other factors.
|
||||||
|
mss
|
||||||
|
; INIT_CWND and MIN_CWND SHOULD both be 2. An INIT_CWND of 2 should
|
||||||
|
; help seed FILTER() at the sender when there are no samples at the
|
||||||
|
; beginning of a flow, and a MIN_CWND of 2 allows FILTER() to use more
|
||||||
|
; than a single instantaneous delay estimate while not being too
|
||||||
|
; aggressive. Slight deviations may be warranted, for example, when
|
||||||
|
; these values of INIT_CWND and MIN_CWND interact poorly with the
|
||||||
|
; framing protocol. However, INIT_CWND and MIN_CWND MUST be no larger
|
||||||
|
; than the corresponding values specified for TCP [RFC5681].
|
||||||
|
init_cwnd
|
||||||
|
min_cwnd
|
||||||
|
; ALLOWED_INCREASE SHOULD be 1, and it MUST be greater than 0. An
|
||||||
|
; ALLOWED_INCREASE of 0 results in no cwnd growth at all, and an
|
||||||
|
; ALLOWED_INCREASE of 1 allows and limits the cwnd increase based on
|
||||||
|
; flightsize in the previous RTT. An ALLOWED_INCREASE greater than 1
|
||||||
|
; MAY be used when interactions between LEDBAT and the framing protocol
|
||||||
|
; provide a clear reason for doing so.
|
||||||
|
allowed_increase
|
||||||
|
; The size of the base_delays list, BASE_HISTORY, SHOULD be 10. If the
|
||||||
|
; actual base delay decreases, due to a route change, for instance, a
|
||||||
|
; LEDBAT sender adapts immediately, irrespective of the value of
|
||||||
|
; BASE_HISTORY. If the actual base delay increases, however, a LEDBAT
|
||||||
|
; sender will take BASE_HISTORY minutes to adapt and may wrongly infer
|
||||||
|
; a little more extra delay than intended (TARGET) in the meanwhile. A
|
||||||
|
; value for BASE_HISTORY is thus a trade-off: a higher value may yield
|
||||||
|
; a more accurate measurement when the base delay is unchanging, and a
|
||||||
|
; lower value results in a quicker response to actual increase in base
|
||||||
|
; delay.
|
||||||
|
base_history
|
||||||
|
; GAIN MUST be set to 1 or less. A GAIN of 1 limits the maximum cwnd
|
||||||
|
; ramp-up to the same rate as TCP Reno in Congestion Avoidance. While
|
||||||
|
; this document specifies the use of the same GAIN for both cwnd
|
||||||
|
; increase (when off_target is greater than zero) and decrease (when
|
||||||
|
; off_target is less than zero), implementations MAY use a higher GAIN
|
||||||
|
; for cwnd decrease than for the increase; our justification follows.
|
||||||
|
gain
|
||||||
|
; TARGET MUST be 100 milliseconds or less, and this choice of value is
|
||||||
|
; explained further in Section 3.3. Note that using the same TARGET
|
||||||
|
; value across LEDBAT flows enables equitable sharing of the bottleneck
|
||||||
|
; bandwidth. A flow with a higher TARGET value than other competing
|
||||||
|
; LEDBAT flows may get a larger share of the bottleneck bandwidth. It
|
||||||
|
; is possible to consider the use of different TARGET values for
|
||||||
|
; implementing a relative priority between two competing LEDBAT flows
|
||||||
|
; by setting a higher TARGET value for the higher-priority flow.
|
||||||
|
target
|
||||||
|
; The size of this list, CURRENT_FILTER,
|
||||||
|
; may be variable, and it depends on the FILTER() function as well as
|
||||||
|
; the number of successful measurements made within an RTT amount of
|
||||||
|
; time in the past. The sender should seek to gather enough delay
|
||||||
|
; samples in each RTT so as to have statistical confidence in the
|
||||||
|
; measurements. While the number of delay samples required for such
|
||||||
|
; confidence will vary depending on network conditions, the sender
|
||||||
|
; SHOULD use at least 4 delay samples in each RTT, unless the number of
|
||||||
|
; samples is lower due to a small congestion window. The value of
|
||||||
|
; CURRENT_FILTER will depend on the filter being employed, but
|
||||||
|
; CURRENT_FILTER MUST be limited such that samples in the list are not
|
||||||
|
; older than an RTT in the past.
|
||||||
|
current_filter))
|
||||||
|
|
||||||
(define-record-type ledbat-state
|
(define-record-type ledbat-state
|
||||||
(fields current_delays base_delays last_rollover flightsize cwnd cto))
|
(fields current_delays base_delays last_rollover flightsize cwnd cto))
|
||||||
|
|
||||||
(define (on-init params)
|
(define (ledbat-params-default)
|
||||||
(make-ledbat-state
|
(make-ledbat-params
|
||||||
|
1498 ; mss
|
||||||
|
2 2 ; init_cwnd min_cwnd
|
||||||
|
1 ; allowed_increase
|
||||||
|
10 ; base_history
|
||||||
|
1 ; gain
|
||||||
|
100 ; target
|
||||||
|
5 ; current_filter
|
||||||
|
))
|
||||||
|
|
||||||
(define (on-data) )
|
;(define (on-init params)
|
||||||
|
; (make-ledbat-state
|
||||||
|
|
||||||
(define (on-ack) )
|
;(define (on-data) )
|
||||||
|
|
||||||
|
;(define (on-ack) )
|
||||||
|
|
Loading…
Reference in a new issue