Multichannel communication - An introduction
I’m about to enroll in a PhD position on the subject “Distributed Machine Learning in Ubiquitous Environments using Location-dependent Models”.
The way I see it, distributed machine learning cannot work if devices cannot exchange data together in the first place; I want to study and enable peer-to-peer data transfers.
I am a big fan of Nextcloud, a file-hosting service that I run on my server to synchronise my files between all peripherals (work computer, home computer, smartphone). When I want to send a photo from my computer to my phone (or vice versa), I just have to put it into my
Nextcloud/ folder, which will detect new file and send it to the server, from where it will be sent on my phone.
Data exchange takes a few seconds, and most importantly, it involves three actors: my computer, my phone and my server. This may sound a bit stupid, because my phone is literally on top of my computer, while my server is hosted in a datacenter far away from my current location.
This is nonsense, not only because of the distance uselessly crossed by data, but mainly because involving a third-actor in the exchange — here, my Nextcloud instance — involves running a server 24h/24, which consumes (lots of) energy1, just like the network carrying data from servers to my devices.
My photo travelled hundreds of kilometers to get to a device that's centimeters away from its sender, involving useless third-parties.
From a privacy-oriented point of view, me transferring my photos using a Nextcloud instance that runs on a server I own is not too much of a problem; I however do not think that the majority of Internet users have their own cloud (or do even care about data privacy at all): the simplest tool to use for photo synchronisation is the one already available in their phones: Google Photo.
This application conveniently stores all of your photos on Google Drive, making them easy to show to your friends from your computer; it however implies that your (assumed personal) data is stored on Google’s servers, which is a big threat to your privacy.
Google makes money on your back by selling your private data to enterprises that use them to create better advertisement profile about you, for instance. If that doesn’t scare you already, think about how many Google services you use in your digital life. Gmail? Google Drive? Shared docs? Hangouts (SMS mobile application)? Google, just like other Big Tech companies, has a very special (and too much central) place in our lives2.
For these reasons, I believe that we should enforce device-to-device (D2D) communication. A colleague of mine, Adrien, introduced me to previous work about D2D communication using (separately) Wi-Fi and Bluetooth to connect devices; he then suggested I look into multichannel communication.
When I first heard about using multiple communication channels, I thought “well, this isn’t something new, Wi-Fi already does that (multiple access points might use different channels)”; this technique is however used to avoid interferences, not improving data transfer between devices3.
When we talk multichannel communication, we do mean multi-technologies communication: as opposed to using different Wi-Fi channels at the same time, we think about using multiple communication standard, like Bluetooth and Wi-Fi, to exchange data between two devices.
Using several channels to transmit data can be done in different fashions. You might think first of using different technologies to send data in parallel (maybe because I just presented this concept); well, current literature is more about using one technology to ease the use of another one.
For example, connecting two phones over a Wi-Fi connection is tedious, because you have to turn on Wi-Fi access point on device A, and then manually enter AP’s information (IP address, SSID, password) on device B to establish the connection. What can be done here to make things simpler is for device A to send its Wi-Fi access point information through a Bluetooth connection to device B, which can then connect to device A using Wi-Fi: we say here that Bluetooth bootstraps Wi-Fi4.
What I intend to implement is effectively using different technologies in parallel to transmit data between two devices.
…but what for?
This presents several advantages over existing techniques.
Using several channels can improve data transfer speed: using Wi-Fi + Bluetooth might be better than using only Bluetooth. Moreover, with previous negotiations, two devices can choose which technologies they will use to exchange data (older smartphones might not support NFC or BLE, for instance).
If proposed implementation is abstract enough, it will allow data communication between devices of different kind, which nowadays is not possible without adapted applications (e.g. we cannot natively exchange data through Bluetooth between Android and iOS, or Android and a Linux-running computer).
As a developer, you have full control over communication channels, and can decide in a dynamic fashion which one to use, which one to favor, which one to restrain, by live-checking their throughput/error rate.
“The cloud’s electricity needs are growing unsustainably”, IEEE Spectrum, 21st Jul. 2021 ↩
“Google wrongfully bans father for taking naked pics”, Australian Computer Society (ACS), 23rd Aug. 2022 ↩
“What’s the Difference Between Single and Multi-Channel Wi-Fi?”, Extreme Networks, 1st Mar. 2021 ↩