Thursday, February 05, 2015

The Independent Discovery of TCP/IP, By Ants

The Independent Discovery of TCP/IP, By Ants.

Neat article. It turns out that the way harvester ants determine if it's safe to look for food is very similar to the way TCP deals with network congestion.

Individual harvester ants would forage for seeds to bring back to the colony. Once they’d left, they would not come back until they found something. As you might imagine, this didn’t work out for some ants: ants would often perish before ever finding food, or carrying a seed back to the nest, particularly on the hottest and driest of days. Gordon had noticed that colonies had adapted to their desert environment by not “sending out” as many foragers on extremely hot and dry days, subsisting on the seeds they had stored up instead.

Through careful observation and experimentation, Gordon discovered that would-be foragers wait at a narrow tunnel entrance to the colony. Whenever another forager ant returns with food, it drops off its load, and touches antennae with waiting ants. Whether or not any individual forager sallies forth depends on the number of interactions it has with returning foragers, and the timing of those interactions -- so a complex collective behavior is governed solely through simple individual interactions.

That's one of the important points, there's no "manager" that everyone reports to that determines how many ants to send out. TCP works the same way, there isn't a special manager computer on the network (since it would be bad if that one machine crashed). Instead they all work via a set of rules so that they collectively figure out a good thing to do.

Transmission Control Protocol, also known as TCP, is a big part of what makes the Internet possible. The Internet involves a lot of machines sending each other files including websites, videos, text documents, audio -- over a vast network of hardware including routers, cables, satellites, cellphone towers, and of course computers. The problem is that sometimes parts of the network fail -- hardware can break, or become overloaded and slow down dramatically.

If a source hosting a file is using TCP, it breaks the file down into smaller chunks, called “packets”. It sends out a bunch of packets to the requester, and monitors the acknowledgements of receipt, called “acks”, to calibrate how quickly to send the rest of the packets.

The article also includes this table of other technical problems we've solved in a similar way to low level biological systems:


No comments: