Computation in the Wild

Full textClick to download.
Citation E. Jen Ed. Robust Design: A Repertoire of Biological, Ecological, and Engineering Case Studies, pp. 207-230. Oxford University Press (2004). Reprinted in K. Park and W. Willinger Eds. The Internet as a Large-Scale Complex System, pp. 227-250. Oxford University Press (2005).
AuthorsStephanie Forrest
Justin Balthrop
Matthew Glickman
David Ackley


The explosive growth of the Internet has created new opportunities and risks by increasing the number of contacts between separately administered computing resources. Widespread networking and mobility has blurred many traditional computer system distinctions, including those between operating system and application, network and computer, user and administrator, and program and data. An increasing number of executable codes, including applets, agents, viruses, email attachments, and downloadable software, are escaping the confines of their original systems and spreading through communications networks. These programs coexist and coevolve with us in our world, not always to good effect. Our computers are routinely disabled by network-borne infections, our browsers crash due to unforeseen interactions between an applet and a language implementation, and applications are broken by operating system upgrades. We refer to this situation as computation in the wild, by which we mean to convey the fact that software is developed, distributed, stored, and executed in rich and dynamic environments populated by other programs and computers, which collectively form a software ecosystem. The thesis of this chapter is that networked computer systems can be better understood, controlled, and developed when viewed from the perspective of living systems.

Taking seriously the analogy between computer systems and living systems requires us to rethink several aspects of the computing infrastructure-developing design strategies from biology, constructing software that can survive in the wild, understanding the current software ecosystem, and recognizing that all nontrivial software must evolve. There are deep connections between computation and life, so much so that in some important ways, "living computer systems" are already around us, and moreover, such systems are spreading rapidly and will have major impact on our lives and society in the future.

In this paper we outline the biological principles we believe to be most relevant to understanding and designing the computational networks of the future. Among the principles of living systems we see as most important to the development of robust software systems are: Modularity, autonomy, redundancy, adaptability, distribution, diversity, and use of disposable components. These are not exhaustive, simply the ones that we have found most useful in our own research. We then describe a prototype network intrusion-detection system, known as LISYS, which illustrates many of these principles. Finally, we present experimental data on LISYS' performance in a live network environment.

Back to publications
Back to previous page