What we want to achieve is primarily failure tolerance and secondarily a little increase in bandwidth. We'll use the following setup:
Software-wise, we'll use:
The key point is having similar kernel versions on the server and the client end. Also, mixing Linux and for example NetBSD won't work. You can do the same with NetBSD tho.
Transport security is not our main focus tho we'll implement some encryption. To achive better security, vtun should be replaced by OpenVPN or similar.
Besides the RASPBERRY PI Model B+ and the UMTS sticks, you should consider the following items:
Altogether the hardware cost on the client end is below 200EUR. The UMTS sticks can be bought off eBay for around 10EUR/piece. Any UMTS or LTE stick that works with linux is ok to use. Regarding maximum bandwidth available 'from the backplane', read this website. There is one USB bus for the four USB ports and one for the ethernet port. Given that we can push 100Mbit/s through the ethernet port and we only have one, the maximum bandwidth we can fullduplex should be around 30-50Mbit/s (taking USB overhead into account loosely). And it seems to be possible to overbook the second USB bus with 4 fast LTE links.
In the end, this will give us the ability to have a failure-tolerant UMTS bond which also provides for a little more speed, all that using a low-cost client-side hardware and standard linux software on both ends. The server hardware can be any mildly current dedicated linux machine which you can get for around 20EUR/month in most places. VPS machines work too if they let you use the tun/tap kernel modules.
To tune Raspbian to a minimum memory footprint i've closely followed this guide: https://extremeshok.com/1081/raspberry-pi-raspbian-tuning-optimising-optimizing-for-reduced-memory-usage/. I left out these steps: ZRAM, 512MB swapfile and enabling preload. Be careful with the overclocking. Better use the raspi-config commandline tool that comes with Raspbian and set the overclock settings to 'High' or 'Turbo' (also see http://www.raspberrypi.org/introducing-turbo-mode-up-to-50-more-performance-for-free/, your warranty is safe), that does the trick too.
I assume you have a fresh Debian minimal install with all updates and the newest kernel. The more bandwidth you have here the better, but keep in mind that it should be at least twice the size of the sum of all UMTS connections. The easiest and most hassle-free way is renting some dedicated server from one of the many hosters available. See the next paragraph for information on using another RASPBERRY PI for the server side.
If you for some reason use a RASPBERRY PI on this end too, you should also follow the optimization steps mentioned on top of the 'Client Side' paragraph. It does not have to be a model B+ tho (the client side requires this model because of the 4 USB ports and optimized power consumption), you can easily use a Model B Rev. 1 on this end.
There are a number of hosters that provide cheap or even free RASPBERRY PI housing (yes, housing) after quite some waiting time (usually around 3 months). The included traffic ranges from 100GB/month to 500GB/month, which should be fine for most applications. After all, UMTS traffic is shit expensive.
The above setup uses NAT to establish IPv4 connectivity. Instead, use a small (/29 is enough) prefix and route public IP addresses to the client.
If you rent a dedicated server, the chances are the provider will give a /64 prefix to you. Use this in a 'dualstack' kind of configuration. Optionally establish IPv6 connectivity via some tunnel provider.
Establish a nagios or at least collect statistics using rrdtool.
Establish a web interface on both ends to control and configure the connections.
Replace vtun with OpenVPN or similar to achive stronger encryption.
On the client, add a small 2-row LCD display to the RASPBERRY PI. Then use it display system status data, maybe paging through values with a button.
The more different providers (up to 4, obviously) we can use in our setup, the more fault tolerance we should get.
Fun idea: remember IT Crowd? See below . Add the antennas on the outside, keep the USB sticks internal.