GstRTPNetCC - GstRTPNetCC Design

From RidgeRun Developer Connection
Jump to: navigation, search


  Index Next: Basic Usage




Overview

The GstRTPNetCC is a GStreamer element based on the Google Network Congestion Algorithm. This element allows making periodical estimations based on the incoming RTP stream and creates an approximation of network congestion status. The estimations are sent to the RTP stream provider, which allows regulating the RTP rate to send. This regulation might avoid overusing the available bandwidth.

Benefits:

  • Reduce packet loss.
  • Avoid network collapse.
  • Keep the fairness over the network

System Topology

GstRTPNetcc provides a giant versatility since it might be used in different RTP video streams because its design only requires the RTP information over the stream, it does not need a complex setup to work on the video stream.

Figure 1. represents the GstRTPNetcc internal design, which has several independent modules that perform multiple calculations to make estimations about the available bandwidth.

Error creating thumbnail: Unable to save thumbnail to destination

Figure 1. GstRtpNetCC topology

Arrival Filter

The Arrival Filter calculates the difference in arrival time of two packets or two groups of packets. So, the departure time, [math]\displaystyle{ T(i) - T(i-1) }[/math], is defined as the difference in departure time of two packets or two groups of packets. Finally, the inter-group delay variation, [math]\displaystyle{ d(i) }[/math], is defined as the difference between the inter-arrival time and the departure time. Or interpreted differently, as the difference between the delay of group [math]\displaystyle{ i }[/math] and group [math]\displaystyle{ i-1 }[/math].

[math]\displaystyle{ d(i) = t(i) - t(i-1) - (T(i) - T(i-1)) }[/math]

Departure time is computed between consecutive groups as [math]\displaystyle{ T(i) - T(i-1) }[/math], where [math]\displaystyle{ T(i) }[/math] is the departure timestamp of the last packet in the current packet group being processed. Any packets received out of order are ignored by the arrival-time model.

Each group is assigned a receive time t(i), which corresponds to the time at which the last packet of the group was received. A group is delayed relative to its predecessor if [math]\displaystyle{ t(i) - t(i-1) \gt T(i) - T(i-1) }[/math].

Overuse Estimation

This module implements an algorithm sensitivity to delay variations based on the network conditions:

Under below conditions:

  • The delay-based controller inhibition when the size of the bottleneck queue along the path is not sufficiently large.
  • The starvation of GCC flows in the presence of concurrent loss-based TCP traffic.

Overuse Detector

The block is generated an overuse state signal according to network conditions given by adaptive threshold and delay gradient.

  • Overuse state
  • Normal
  • Underuse state

Bitrate Estimator

This block computes estimated bitrate according to by using the signals produced by the overuse detector, which drives the finite state machine.

RTCP REMB Feedback

This block notifies the sender with the computed rate Ar through REMB messages.

Characteristics:

  • The REMB messages are sent either every 1s.
  • or immediately, if Ar(ti) < 0.97Ar(ti−1), i.e. when Ar has decreased more than 3%.


Index Next: Basic Usage