This wont be the 'normal' Service:Internet_uplink, but is certainly fun to try and play around with. :)
What we'll bring
- Appetite for Interwebs
- Your hsdpa/umts/grps device (just can keep them, just connect them to the network)
- Endless motivation
Please add your device if you want to join this network:
- psy: 3g/gprs t-mobile, no datalimit (5kb/s max)
- buZz: Huawei E220 with kpn 3G hdspa flatfee (3.6mbit downstream, 2GB traffic max per month!)
- Red_Devil: 3g/gprs kpn, no datalimit (FUP 2GB!)
- MishMash: gprs t-mobile, no datalimit
We dont know yet if we will open this way of internet access to everybody or just the people that join with some kind of device. It all depends on how well it works and how many devices we have.
Because we can!
The idea is to provide one gateway that does some kind of round robin scheduling over a variety of gprs/umts enabled mobile devices.
What kind of traffic to we allow? ssh? proxied http access?
Method 1: simple stupid
The simplest way would be to connect all the devices we can get our hands on to one box.
- everybody has to give their phone to us.
- there is a limit on how many devices you can connect to one box by usb and especially bluetooth.
- totally impractical ;)
Method 2: double-gateway system
Everybody that wants to help runs their own plain-old-gateway. However..the gateway is firewalled, and only one box is allowed to access the internet via it. That box will be the 'main-gateway' that everybody is going to use. This main-gateway will distribute the traffic over the other gateways in some logical way:
[regular client] --> [main-gateway] ==>> [mobile gateways] ==>> [internet]
- Everybody with a mobile device can easily join and keep their phone
- Bad traffic distribution. The traffic distribution will be connection based: an eshtablised tcp/udp session will 'stay' on one mobile gateway. Some gateways will get cluttered up while others are idle.
Method 3: double-gateway with tunneled traffic
In an ideal situation we would distributed the traffic on a packet basis, rather than a connection base.
To acomplish this we need a vpn-server on the internet.
[regular client] --> [main-gateway] ====(Encapsulated packets)===>> [mobile gateways] ==>> [internet] ==>> [vpn-server gateway] ===(normal traffic)===> [internet]
The main-gateway will encapsulate the packets and sends them over the gateways in a almost perfect distribution.
The vpn-server gateway will receive those packets, all with different source adresses offcourse, de-encapsulate them, NAT the connections to the apropriate source adres and then send them over the internet.
The reply packets will be send back to the mobile gateways in a simular way.
What kind of protocol is suitable for this? Remember we dont want encryption or any fancy stuff..we just want to distribute the packets over multiple gateways.
Simple plain old IP-IP encapsulation should do it, right? The distribution can be done with iptables-magic, but i'm sure there are many other ways.
This method can also be used to bundle normal uplinks together. As long has internet, we can bundle it to our network!
I think what we're looking for is http://en.wikipedia.org/wiki/Equal-cost_multi-path_routing
with a bit of http://en.wikipedia.org/wiki/Open_Shortest_Path_First
Anyone who has any ideas or comments on how to proceed, feel free to use the discusion page or alter this page if suited.