In February, SanDisk announced the world's first one terabyte microSD card. Like all other microSD cards, it's tiny, measuring just 15 mm × 11 mm × 1 mm, and it weighs a mere 250 milligrams. It holds an enormous amount of data in a very small physical space, and you can buy one for US $550. For some context, the first 512 GB microSD card showed up barely a year ago, in February 2018.
We're so used to the pace of progress in computing that these increases in storage density are only mildly noteworthy, usually deserving of a press release and a few blog articles and not much else. What's more interesting (and probably more consequential) is how out of proportion our ability to both generate and store data is growing relative to our ability to move it around over the kinds of networks that are accessible to most people.
This is not a new issue, and for decades, different kinds of "sneakernets" have been used to physically transport data from place to place, whether on foot, through the mail, or by more exotic means. One way of transporting data that's been in active use for the last thousand-ish years is by carrier pigeons (also known as homing pigeons), which can travel hundreds or thousands of kilometers back to their home roost using navigation techniques that are still a bit of a mystery. And as it turns out, in terms of sheer bandwidth (amount of data transmitted over a given distance per unit time), pigeon-based "feathernets*" are getting steadily more efficient than typical networks.
On 1 April, 1990, David Waitzman submitted a Request for Comment (RFC) to the Internet Engineering Task Force's network working group called "A Standard for the Transmission of IP Datagrams on Avian Carriers," now known as IPoAC. RFC 1149 describes "an experimental method for the encapsulation of IP datagrams in avian carriers," and with several updates that address both quality of service concerns and a transition to IPv6 (published on April 1, 1999 and April 1, 2011 respectively).
Submitting April Fool's Day RFCs is a tradition that started in 1978 with RFC 748, which suggested that by sending a Telnet server the command "IAC DONT RANDOMLY-LOSE," that server should then be prohibited from randomly losing data. Seems sensible enough, right? And that's part of the key to a good 1 April RFC, explains Brian Carpenter, who led the networking group at CERN from 1985 to 1996, chaired IETF from 2005 to 2007, and now lives in New Zealand. "It needs to be technically plausible (i.e. doesn't break the laws of physics) and it needs to take at least a page of reading before you realise it's a joke,” he says. “And of course it needs to be absurd."
Carpenter, along with his colleague Bob Hinden, also wrote their own April Fool's Day RFC that attempted to modernize IPoAC for IPv6, back in 2011. Even two decades after it was first introduced, IPoAC was still very well known. "Everybody knows about avian carriers," Carpenter told us. "One day Bob and I were chatting at an IETF meeting about making IPv6 more widespread, and the idea [to add it to IPoAC] came up naturally."
RFC 1149, which initially defined IPoAC, makes clear many of the advantages of the new standard:
Multiple types of service can be provided with a prioritized pecking order. An additional property is built-in worm detection and eradication. Because IP only guarantees best effort delivery, loss of a carrier can be tolerated. With time, the carriers are self-regenerating. While broadcasting is not specified, storms can cause data loss. There is persistent delivery retry, until the carrier drops. Audit trails are automatically generated, and can often be found on logs and cable trays.
The quality of service update (RFC 2549) adds some relevant detail:
Multicasting is supported, but requires the implementation of a clone device. Carriers may be lost if they are based on a tree as it is being pruned. The carriers propagate via an inheritance tree. The carriers have an average TTL of 15 years, so their use in expanding ring searches is limited.
Ostriches are an alternate carrier that have much greater bulk transfer capability but provide slower delivery, and require the use of bridges between domains.
Additional quality of service discussion can be found in a Michelin's guide.
And Carpenter's update of IPoAC for IPv6 addresses, among other things, some potential complications with packet routing:
Routing carriers through the territory of similar carriers, without peering agreements, will sometimes cause abrupt route changes, looping packets, and out-of-order delivery. Similarly, routing carriers through the territory of predatory carriers may potentially cause severe packet loss. It is strongly recommended that these factors be considered in the routing algorithm used to create carrier routing tables. Implementers should consider policy-based routing to ensure reliable packet delivery by routing around areas where territorial and predatory carriers are prevalent.
There is evidence that some carriers have a propensity to eat other carriers and then carry the eaten payloads. Perhaps this provides a new way to tunnel an IPv4 packet in an IPv6 payload, or vice versa.
As you might expect for a standard first conceptualized in 1990, the original format for transmitting data through IPoAC involved printing hexadecimal characters on paper. Things have changed a lot since then, and the amount of data that can be carried within a given volume and weight has increased massively, although the carrying capacity of each individual pigeon has stayed about the same. Pigeons are able to carry a significant percentage of their body weight in payload— the average carrier pigeon weighs about 500 grams, and during the early 1900s, carrier pigeons carrying cameras weighing as much as 75 grams strapped to their chests flew reconnaissance missions over enemy territory.
We spoke with Drew Lesofski, a racing pigeon fancier in Maryland, who confirmed for us that pigeons can comfortably carry 75 grams (or even perhaps slightly more) "all day over any distance." And pigeons can fly incredible distances—the world record for a carrier pigeon seems to be held by one intrepid bird that managed to fly from Arras, France, back to its nest in Ho Chi Minh City, Vietnam, a distance of 11,500 km, a trip which took it 24 days. Most carrier pigeons don't fly nearly that far, of course. Typical long race distances, Lesofski says, are about 1,000 km, with birds traveling at sustained speeds of around 70 km/h. Over shorter distances, sprinters can reach speeds of up to 177 km/h.
Putting these numbers together, if you were to load up a carrier pigeon to its maximum capacity of 75 grams with 1 TB microSD cards weighing 250 mg each, the pigeon would be carrying a total of 300 TB of data. Flying at its top sprinting speed, if that pigeon were to make its way from San Francisco to New York (4,130 km), it would achieve a data rate of 12 TB per hour, or 28 Gbps, which is several orders of magnitude faster than most Internet connections—here in the United States, the fastest average upload speeds can be found in Kansas City (through Google Fiber), at a paltry 127.0 Mbps. At that upload speed, it would take you more than 240 days to transfer 300 TB of data, in which time our pigeon could circle the entire globe 25 times.
This example isn't very realistic, assuming some sort of super pigeon, so let's tone things down a bit. Let's use a more average flight speed of 70 km/h, and only give the bird half of its maximum capacity in 1 TB microSD cards to carry, 37.5 grams worth. Even if we assume that we have access to a very fast 1 Gbps Internet connection, the pigeon still wins. In fact, the pigeon could travel more than halfway around the world in the time it would take for our upload to finish, meaning that it would be faster to send our data by pigeon to literally anywhere on Earth than it would be to use the Internet to upload the data instead.
To be clear, this is a pure bandwidth comparison. We're not considering the time or effort it takes to copy data onto the microSD cards on the front end, affix them to the pigeons, and then read the data once the pigeons arrive at their destination. Latency is obviously very high, making anything but one-way transfers impractical. And the largest constraint is that carrier pigeons only travel in one direction to one place, meaning that you have no choice of destinations and you need to transport them to where you'd like them to depart from, limiting how useful they are in practice.
The fact is, though, that even under realistic assumptions about pigeon payload and speed and available Internet connectivity, the raw bandwidth of a carrier pigeon is hard to beat.
With all that in mind, pigeons carrying data have been used in real-world testing, and they've done quite well. The Bergen Linux user group in Norway successfully implemented IPoAC in 2001, sending one ping per pigeon over a distance of five kilometers:
The ping was started approximately at 12:15. We decided to do a 7 1/2 minute interval between the ping packets, that would leave a couple of packets unanswered, given ideal situations. Things didn’t happen quite that way, though. It happened that the neighbour had a flock of pigeons flying. Our pigeons didn’t want to go home at once, they wanted to fly with the other pigeons instead. And who can blame them, when the sun was finally shining after a couple of days?
But the instincts won at last, and after about an hour of fun, we could see a couple of pigeons breaking out of the flock and heading in the right direction. There was much cheering. Apparently, it WAS our pigeons, because not long after, we got a report from the other site that the first pigeon was sitting on the roof.
And finally, the first return pigeon arrived. The packet was carefully removed from the leg, unrolled and scanned. After manually verifying the OCR and correcting the few mistakes, the packet was accepted as a valid packet, and there was much cheering about what we saw.
For truly massive amounts of data (where the sheer number of pigeons might become difficult to wrangle), physical transfers are still the way to go. Amazon offers a service called Snowmobile, which is a 45-foot long ruggedized shipping container pulled by a semi-trailer truck. Each Snowmobile can transport up to 100 petabytes (100,000 TB) of data. It won't move as fast as an equivalent flock of several hundred pigeons, but it might be easier to manage.
Most people seem to be content with their plodding upload speeds, and aren't especially interested in investing in carrier pigeons of their own. To be fair, it does take some work, says Drew Lesofski, and pigeons themselves generally don't behave like data packets:
GPS technology is becoming more readily available to pigeon fanciers giving us a better picture on how our pigeons fly and why some are faster than others. The shortest distance between two points is a straight line but pigeons rarely fly in straight lines. They tend to zig zag, flying in a general direction and then make course corrections as they get closer to their destination. Some are better athletes and fly faster than others, but a pigeon with a better homing ability in good health and condition can beat a fast flying pigeon who has a bad compass.
Lesofski has fairly high confidence in pigeons as potential data carriers: "I'd feel totally comfortable sending information on my pigeons," he says, with a prudent margin for safety: "I’d release at least three together to make sure that if one has a lesser compass, [hopefully] one of the others has a better one, ensuring a greater speed for all three birds."
The challenges with real-world IPoAC and the increasing availability of reasonably fast (and often wireless) networks mean that most services that used to rely on pigeons, and there were quite a few of these, have over the last several decades switched to more conventional methods of transferring data.
And because of the forethought required to implement a carrier pigeon service, pigeon-comparable sneakernet alternatives (like fixed-wing drones) might ultimately be more viable. Having said that, pigeons still maintain some key advantages: they scale well, they work for literally peanuts (or the equivalent in pigeon chow), they're likely far more reliable, they have highly sophisticated obstacle avoidance software and hardware already integrated into their airframes, and they're experts at recharging their own batteries.
As far as what this implies about the future of IPoAC, well, the standard is there for anyone to use, in all of its absurdity. We asked Brian Carpenter if any more updates are in order, and he told us that he's wondering whether pigeons might be able to carry qubits. But even if IPoAC is a little bit too complicated (and a little bit too silly) for your data transfer needs, sneakernets (and feathernets) are likely to stay relevant for the foreseeable future, as our ability to generate massive amounts of data continues to scale faster than our ability to move it around.
Special thanks to Reddit user AyrA_ch who turned me onto all of this with a Reddit post. AyrA_ch has also made this nifty IPoAC calculator that accepts a bunch of different variables and then tells you how much faster a pigeon almost invariably is.
*The term “pigeonet” is also used, perhaps more commonly, but I feel like “feathernet” is more general and in keeping with the spirit of the IPoAC standard.