centralized to distributed
With the world working through the virus, and most meetings happening online from the confines of each others homes, the need for a high quality real time streaming transmission at an affordable price can never ask for a better time. I have been sitting through piano classes where the notes and voice of the teacher sound like staccato or my son’s online classes have been many a time received with inter packet delay causing much hardship to carry on with our lives humbled by the virus.
The current models of a client server routes all packets all the way from every one of the client’s computers to a centralized server across several routers and gateways crossing oceans and satellites meeting the fate of a regular road traffic that zooms in broader highways only to get choked when the roads narrow. While adequate bandwidth may be there with the broadband and fiber links in most situations, the issue is definitely that of QoS (Quality of Service) and the guarantees of latency or inter packet delays resulting in garbled videos or lost voice samples.
The network is an abstraction. If we assume all of us are connected and can reach one another without bothering about the underlying details, the need to bring ten people on a video conferencing call requires some place where the data transmitted by the end users are mixed and then broadcast back to the participants. This mixing can be probably done at the end user devices.
So instead of every user device sending streams to a server far away and getting back the mixed output to be played back as shown below,
We can probably have this done locally on one of the end user devices of the participants in the call.
Depending on the participants locations, a more closer, local end user device that can be reached in least number of hops can be elected as the conferencing server doing the mixing and all other devices can send and receive as a more localized traffic without having the need to crisscross oceans and satellites, creating conflicts and packet loss.
If hundreds of participants are scattered across zones, then multiple localized clusters of mixing can happen and then those four or five streams can go to a centralized server and return back. Probably every cluster can elect its leader who can mix and send on behalf of others and then get back and distribute it to others like this
Well, I do not know how it is implemented today and whether we have some sort of distributed edge servers doing the job. But shifting the computing from being a large number of hops, client-server to a highly localized, client side computing can help to achieve better results for conferencing apps.