You have a large number of video sources, connected over low-cost low-bandwidth links and they’re distributed all over the country. Users are also distributed in the same way and they want live access to all video feeds when they want.
- When more than one user streams the same source, it cannot keep up.
- When more than one user streams the same source, some link gets clogged.
- Sources and users are on completely separate networks.
A single video source and more than one user is like a TV broadcast. In computer networks, a more efficient method of multicasting is usually considered. But there are lots of protocols to be aware of, lots of standards implemented differently, which may not be a problem when building a network from scratch but could be an issue when the service needs to run on organically developed separate networks.
So we designed our solution to work in any environment without imposing any new requirements on the physical or logical networking structure. If a user can stream the video directly, she can stream it over the proxy network. Which runs with proxy units:
- attached to the current network in any place
- streaming video from each source only once
- doing the multicast-unicast conversion if necessary
- and delivering it to the users trying to reach it
A single device can stream hundreds of video sources and serve thousands of simultaneous users.
But that’s only the “proxy” part of the solution which solves the first problem but not the others. In order to reduce the throughput between the source and the users, or form a video tunnel between two separate networks, it’s needed to deploy at least two of these devices. So the stream can be
- started from the source
- received at the first proxy
- delivered to the second one
- received at second proxy
- and distributed to the users
This simple deployment optimizes the WAN link between the first proxy and the second. Furthermore, when deployed in large numbers, our solution is capable of:
- optimizing the use of each WAN link
- utilizing different weighted links between proxies
- deploying in chains, meshes or tree structures for increased optimization
- forming virtual networks and streaming over them
- adapting to the changes like lost links, power outages etc.
- and running highly available within a single site with 3 or more devices
It’s not required to do all of these at once though. It’s possible to start with a single proxy to protect video sources from users, then move to optimizing the low-bandwidth links, or even leave some places of the system untouched. It’s all about adaptation.