Combining Network Connections for Additive Speed

Edit: I've removed the errors I was receiving while starting the bond by using the teamd utility. However, my goal to increase the total speed by combining the networks is still open. Skip down to EDIT2 below if interested. I may delete in between soon, because it is an artifact of using the 'interfaces' config and commands like iface that have been depreciated, at least in Ubuntu.

I narrowed down errors in starting a bond0 to some circular logic. I'm trying to use bond-mode balance-rr to add together my cell phone connection to my other cellular modem with ethernet for increased speed. Defaulting to the latter when the phone is not tethered. I'm using systemctl restart networking on Kubuntu 20.04 to trigger the changes in /etc/network/interfaces. (Speedify and Connectify do this type of connection bonding).

Edit: https://www.ibm.com/docs/en/linux-on-systems?topic=recommendations-bonding-modes

Quora question maybe clarify the terms used for L2 load balancing as 'link aggregation': https://www.quora.com/How-is-load-balancing-achieved-with-layer-2-devices

"Link aggregation (which is interchangable with the term “etherchannel” which I will use from here on out) is load balancing on layer 2. It’s less about optimization, and more about spreading the load as equally as possible across each individual link."

EDIT2:

It looks like 'network teaming' with teamd may work. Yes this prevents any errors from the interfaces config file, while still bonding the networks with different bonding modes including load balancing.

Load balancing multiple NICs on single machine presenting a virtual IP

There may be difficulty in combining networks for speed. Failover and load balancing seem to be switching between networks based on which is more available, but that doesn't combine them additively. A given process is looking to a single IP address at a time to reassemble packet streams. I would need something that requests packets over two different networks and reassembles the streams, as in 'redundant routing'.

Some kind of VPN may be required for that, similar to what Speedify does. However, a local VPN would be more ideal. If they use physical devices to combine the networks, virtual devices might be able to simulate them.

https://networklessons.com/cisco/ccie-routing-switching/introduction-gateway-redundancy


This cannot work. Bonding is not the right tool for that job. Technically speaking, bonding works on network protocol layer 2. What you want is load balancing on layer 3.

Specifically, bonding would be able to distribute the load between two separate Ethernet connections to the same cellular modem but not between two separate modems. What's more, it would be able to detect when an Ethernet connections was down (ie. cable unplugged) but not whether a cellular modem had an active Internet connection.