GstNetBalancer A GStreamer Network Balancer Element - User Guide

From RidgeRun Developer Wiki
Revision as of 22:15, 12 October 2022 by Mherrera (talk | contribs)



  Index  





Element usage

Bandwidth requirements for network streaming are a vital part of most multimedia applications, and it plays a critical role in wireless streaming applications such as wifi or radio links. For most wireless streaming applications, going beyond the limited bandwidth causes artifacts in the video content such as green and blocky regions or ghosting effects

The netbalancer element is used for flattening the data transmission curve of a network in order to get the most out of a connection. This is achieved by introducing dynamic delays between packets; the element keeps track of the amount of data that has transmitted in a limited time frame. In case a new package wants to be sent but the data cap for that time frame has already been reached, then the packets are delayed until a new time window starts. This ensures that the data transmission is always under a specified bandwidth.

The netbalancer does not modify the contents of any of the packets or the way they are sent. The characteristics of the packets remain the same; the only thing that varies is the rate at which these packets enter and exit the element pads. The netbalancer then does not replace any of the elements in a pipeline; it is not intended for packaging data nor send it over a network. A netbalancer element is usually added at the end of the streaming pipeline; just before an udpsink or rtspsink element, but can be added anywhere where the packet rate wants to be controlled.

An ideal use case for the netbalancer element happens when there are spikes of data transmitted in a very small time frame; meaning that the network load is not constant, so it is heavily stressed for a short time and idle the rest of the time.

A real world example for this is the transmission of compressed video where I-frames are significantly larger so they periodically stress the network and these frames don't need to be immediately available on the receiver since the stream works at a fixed framerate. The netbalancer can space out the packets that make up the I-frames and send them at a pace that alleviates the network and keeps the framerate requirements.

The following image represents the netbalancer theoretical functionality:


Properties selection

This element balances the network load by distributing the packages over time. To do so netbalancer provides 3 main properties:

  • bandwidth: defines the maximum desired bandwidth in kbps.
  • distribution_factor: defines the number of intervals in a second used to fine control the bandwidth. Larger number produces more distributed data but a too large value can add extra delays not required.
  • min_delay: add a minimum delay between each pair of consecutive packets.

You can adjust this properties to fit you network and stream conditions.


In general the netbalancer will distribute the bandwidth between the intervals, allowing only to send a portion of the bandwidth in each interval. If the stream provides more bytes that the bytes assigned to an interval time, the netbalancer will wait until the next interval to send them.

Also you can define a minimum delay between packets to have minimal uniform distribution.

Examples

Please refer to the Examples page for reference pipelines.



  Index