Hey guys,
I tried the IRC and didn't get a response. I have limited time on the Internet each day so I thought I'd try here. I would like to develop a cellular network which runs off of ad hoced 802.11 technology. I'm kind of tired having to pay a $40 cellphone bill to keep in contact with two other people (at most). I see no justification in this since there are already so many more viable options available.
I would like to develop an open standard which is free for everyone to implement and utilize for their own needs. Before I get people commenting on how it's already been done, I'd like to say, not like this.
The system I'm proposing is built on top of 802.11 ad hoc. Messages are chopped into 4096 byte segments before delivery (I'm considering upping that to 10 kB). It's capable of delivering text messages, walkie-talkie, and files.
I have used avahi-autoipd to implement an IPv4 connection over this network and have given all devices in the network, the same BSSID, SSID, and channel.
This network uses two ports 4100 and 4200. 4100 is for broadcasts. 4200 is for TCP connections with surrounding peers. Each json message is stamped with a 30 character id. The first 15 characters are an sha512 hash of the message recipient's public key. The second are an sha512 hash of the message itself.
Each node keeps up with the last 1000 segments it's been given (in RAM). Anything older than that is deleted.
Every 30 seconds (timer starts when peer joins network) nodes send out a get broadcast for their messages via UDP (GET SHA-KEY-HASH UNIQUE ID). Each peer in the network rebroadcasts this message. Hashes of the last 1000 messages are kept in each server as well. If a message hash is already in server, it isn't rebroadcast (no loops). After the broadcast for messages, the network sends a json list back to them containing all the messages the network has which are addressed to that user.
It is the user's discretion which messages to request from the group from there. Basically, they pick out the ones they don't already have. Another get request is sent GET HASHED-KEY-MESSAGE-HASH (the unique ID for the entire message). The particular message is sent back to the user (via TCP), using paths constructed from the GET requests.
I would like to extend this to an online P2P network so recipients could be part of a global community. Imagine texting your friends in country-x for free because someone was kind enough to plug their tower into their wifi network. By default, this will not share an Internet connection, just texting, walkie-talkie, and file-sharing. I've heard so many people complaining about the B.A.T.M.A.N. network sharing their Internet connection and them routing it through a VPS to avoid any legal problems.
I have a problem with my service though. If/When the numbers reach 10,000 users, I don't really see everyone in the network requesting their messages from everyone else in the network.
The possibilities of this network would be endless. No more texting fees from major carriers for one. No Internet security risks from sharing the network. If the power and Internet went out in areas, people would still be able to chat via battery back-up towers they build themselves. Since there will be online gateways, there's the possibility that any device with wifi access can communicate with these open standard gateways and deliver messages to anyone on the network (direct Internet access or not). Friends could download your messages when you're offline. Then you just request them from others on your friend's list.
Any help with this would be extremely appreciated. I want this to work out of the box. I have my own money making schemes for this service worked up already and would like to make an entire industry from it. Thank you all and sorry for the wall of text. Have a nice day guys.