With yesterday’s release (version 0.3.5), the QuantumGate C++ networking library introduces support for peer-to-peer Bluetooth connections using the RFCOMM protocol. Bluetooth connections enjoy first class support in the library just like TCP and UDP connections, which means that all other features of QuantumGate are also supported over Bluetooth.
One exciting consequence of this is that relayed connections on the QuantumGate network can also be established over Bluetooth, and it’s even possible for one relayed connection to be established across peer-to-peer connections using a mix of protocols for each hop.
For example, looking at the image above we can see 6 peers, A—F, connected to each other. Peer A is connected to peer B over Bluetooth (RFCOMM), while peer B is connected to peer C over TCP. And peer C is connected to peer D over UDP. Simultaneously peer A is also connected to peer D via relayed connection 1 (yellow) over 3 hops, where each hop is tunneled through a different protocol (RFCOMM for hop 1, TCP for hop 2 and UDP for hop 3).
If peer A didn’t have access to the Internet, it could connect to peer B over Bluetooth and reach peer C over the Internet through peer B. In fact, during my tests I used the example Socks5 Extender with the TestApp to browse the Internet over a 3-hop relayed connection, going through Bluetooth on the first hop and a TCP connection on the second hop.
In other scenarios traffic analysis also becomes more difficult when communications suddenly goes off the grid over Bluetooth and reappears somewhere else (on the Internet), possibly even on another network.
Probably the most important use case for Bluetooth support is when applications built on top of QuantumGate need to communicate with each other when there’s a problem with the Internet, for example, when robberments around the world deny their slaves (AKA ‘citizens’) access to the Internet. When the Internet is shut down, it would be possible to keep communications going via a peer-to-peer mesh network over Bluetooth. And if there is still one peer on the network with access to the Internet, other peers could eventually still reach the Internet, for example, via relayed connections.
QuantumGate supports both authenticated and unauthenticated Bluetooth connections. With authenticated Bluetooth connections, two devices have to be paired first via Bluetooth before connections using QuantumGate will succeed. Device pairing is not required using unauthenticated Bluetooth connections, and this allows for a more ad-hoc communications style. Whether Bluetooth authentication and encryption are used or not, connections via QuantumGate always remain secured (and optionally authenticated) through the QuantumGate communications protocol just like with TCP and UDP connections.
Keep in mind that transfer speeds over Bluetooth can be considerably slower compared to TCP and UDP, and this is due to limitations of Bluetooth.
To start experimenting with QuantumGate, head on over to the releases page on GitHub and download the latest version.