-
Notifications
You must be signed in to change notification settings - Fork 6
vbdc
Table of content
Volume Based Dynamic Capacity (VBDC) is one of the types of allocation available in OpenSAND (consult the DAMA page for more information).
VBDC is a dynamically requested by the terminal to the gateway. The terminal requests the required volume capacity (nulber of bits per sync period needed) and emits a capacity request (using SAC messages) to the NCC. The VBDC volume requests accumulate until the NCC allocates the requested number of slots.
The NCC processes the capacity request and allocates the capacity depending on the available resources (the allocated capacity may be smaller than the requested); the VBDC capacity is not guaranteed.
VBDC must be enabled in the terminal configuration to allow use of this kind of allocation. Useful parameters in OpenSAND configuration are:
-
sync_period
: (aka OutBand Request) SAC sending period, in ms -
ret_up_frame_duration
: superframe duration, in ms -
vbdc_max
: maximum volume that can be allocated to this terminal, in kb/sync_period
When a terminal logs on to the NCC, it sends its vbdc_max
, which is stored on the gateway side.
Then, during the execution of OpenSAND, VBDC allocations are computed as follow:
- At each
sync_period
, the terminal computes the capacity needed, which corresponds to the FIFO size used at the instant. If the queue is not empty, a SAC is sent, containing this request. As the maximum request that a SAC can hold is 4080 kb, the request is truncated to 4080 kb if the FIFO size is higher. Note that this is an absolute request: it does not take into account the requests already made or the volume already allocated by the terminal. - On the GW, at SAC reception, the NCC compute the allocation for the terminals. This allocation is truncated to
vbdc_max
if it is too high. The volume allocated to terminals is shared on the next TTP. This TTP send the total allocated volume, then the next ones (everyret_up_frame_duration
) send a volume allocated of zero, until a new SAC is received and a new allocation volume is computed. - When a terminal receives volume allocation via a TTP, it sends all its credit as soon as possible. If all the volume can be sent in the next superframe, it is done in this one. Otherwise, it is sent also in the next superframes until the credit is spent. Once the credit is totally used, the remaining superframes can still send a small amount of data, inducing a capacity that can be a bit higher than requested in
vbdc_max
(a few dozens of kb/s at most).
The algorithm RrmQos has not been exhaustively tested, and it is not guaranteed that it works properly on DVB-RCS2.
The parameter cr_rule_output_fifo_only
which alters the method for calculating the VBDC requests is not implemented.
There are several probes that allow the user to inspect the VBDC allocations on the gateway:
-
STX_allocation.VBDC_allocation
: the VBDC allocation for the STX, in kb, sent eachret_up_frame_duration
. -
Spot_X.NCC.VBDC.VBDC_allocated
: the total VBDC allocated for the Spot X, in kb, sent eachret_up_frame_duration
. -
Spot_X.NCC.VBDC.VBDC_requested_capacity
: the total VBDC capacity requested on the Spot X, in kb, sent eachret_up_frame_duration
. -
Spot_X.NCC.VBDC.VBDC_request_number
: the number of requests for VBDC for the Spot X, sent eachret_up_frame_duration
.
The VBDC related probes available on each terminal are:
-
Allocation.Total
: the total allocation (including other types of allocations), in kb/sync_period
. -
Allocation.Remaining
: the total allocation (including other types of allocations) remaining, in kb/sync_period
. -
Request.VBDC
: the VBDC capacity requested, in kb/sync_period
.