One of the significant problem when streaming live content (IPTV channels, live feeds and other) over long-distance and public internet links is a non-congestion packet loss. The more transit hops the link has, the higher chances that non-congestion packet loss occurs. In this case TCP lowers the transfer rate significantly even there’s enough bandwidth.  The other problem are overloaded and misconfigured hops and transit links which are common on the vast spaces of the Internet. Therefore transmitting live uninterrupted feeds and IPTV channels is not a simple task over these links.

The common solution used to solve this problem are a so-called adaptive streaming protocols like HLS and MPEG-DASH. In this case the originating stream is being transcoded into different bitrates and splitted into small chunks. The receiver side tries to download these chunks repeatedly, starting from the highest bitrate to the lowest. This increases the chances that the client will probably get the stream, at least at the bandwidth significantly lower than the original stream.

Lowering the bandwidth is acceptable when streaming to end users but it’s not a good idea when we need to transmit the original stream to a remote distribition server on the other side of the planet. Internet is a connection of independent networks and even if our path is clean and fast today, problems, interruptions and reroutes may occur every moment and can’t be predicted or prevented. To handle this we’ve developed TransUDP, a special proxy software which runs between sender and client sides. It accepts the original stream from sender side and releases it on the client’s side allowing further processing or distribution in the client’s network.

TransUDP utilizes its own packet loss recovery protocol assuming that total bandwitdh is always enough between sender and client side. It recovers lost packets by adding a very little delay when releasing a stream on the client side. It automatically adjusts the delay according round trip time and jitter between sides which guarantees that every lost packet can be retransmitted up to 5-10 times.

This also guarantees that the stream will be delivered safely even when transit links are overloaded and can’t deliver even the lowest bitrates using other protocols like HLS or RTMP. Adding just a little overhead TransUDP delivers pure original stream without needs to reencode and reduce its bandwidth. This happens at the expense of other parties but carrier-level links are usually significantly wider than the live streams we need to transmit. Therefore TransUDP stays unnoticed in most cases.

Proxy-style operation allows TransUDP to be used with almost every streaming software supporting multicast and http MPEG-TS live feeds, including Wowza, Astra, FFmpeg and others.