Full text | Click 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).
|
Authors | Stephanie 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.