Bundling RTP streams

Primary tabs

The upcoming 4.4 release of linphone-sdk brings a new major feature: the bundling of RTP streams so that they all use a unique UDP port. The implementation is compliant with the "sdp-bundle-negotiation" IETF draft.

The benefits of multiplexing RTP streams over a single port are:

  • it uses less ports and resources on NAT routers, which drastically reduces the risk of a partially broken communications because the NAT could not process some of the ports due to resources limitations.
  • it speeds up the time for ICE (Interactive Connection Establishment) algorithm to complete, allowing the communication to take place almost immediately with the best network path.
  • it improves interoperability with WebRTC, that also uses RTP bundling. Even though WebRTC is compatible with clients not supporting this feature, it is best to support WebRTC's prefered options in order to benefit from the best audio and video user experience.

For reference, a simple audio and video call without bundling consumes 4 ports. However in advanced conferencing scenarios currently being prototyped by our R&D team, if bundling wasn't possible, the number of ports would increase toghether with the number of participants, and the number of ICE checks to run would increase as the square of the number of participants ! This could really make impossible for a large conference to take place with an acceptable level of CPU and network resource consumption.

For these reasons, we also consider RTP bundling as a great improvement, on which future advanced video conferencing features will leverage on.