The Border Gateway Protocol (BGP) is one of the foundations of the internet. It’s how the big routers that shift data around the Internet talk to each other, passing info on where they can send data to. It’s a simple protocol, with each router sending text messages that advertise the routes that they carry. The administrators of these routers create communities, each with an individual code, and this information is passed between routers. Most top-level ISPs don’t spread this data far, but [Ben Cox] realized that his ISP did. and that he could use this as an interesting way to transmit data over the Internet. What data to send? He decided to play battleships.
He did this by writing some code that encoded the battleship board into a new community announcement. By squishing the data representing the board down, he was able to send the entire board of blank spaces, hits and misses into a single 16-bit number that was sent as a part of this community announcement. At the other end of the game, a friend running the same software would receive this announcement, see the change and be able to send a move in response.
Needless to say, this is not something that should be done lightly. Both [Ben] in London and his opponent in New York are running large networks, and they didn’t want to break anything. So, they limited the system to one move every 30 seconds. This was to avoid what’s called BGP Route Flapping, where the routers start blocking BGP data because there are too many changes. Despite their precautions, the game was interrupted for 45 minutes when the routers sending the data began damping the connection, so they increased the time between moves to 90 seconds.
Is there any point or purpose to this hack? Not really, except to show that, with a bit of thought, it is possible to send data in ways that you might not expect.