CS268 Reading
Review
End-to-end Arguments in System Design
David D. Clark
Review by Feng Zhou
1/22/2003
The problem: When designing computer networks and systems in general,
people are repetitively faced with the problem of in which layer and which
component to put the desired functionality. Error recovery, encryption and
delivery acknowledgement all need to be addressed somewhere in the network. Some
general principles are needed here to guide the design processes.
Key points:
- The primary point of the paper is sound and very useful. In the context of
computer networks, functions that can only be implemented fully with
application-specific knowledge should be implemented by the applications on end
hosts, not by the network itself. Moreover, partial implementation by the
network can sometimes be counterproductive.
- The "Careful file transfer" is a good example to explain the idea of end-to-
end arguments. However, one thing I'd like to point out is that end-to-end
should not mean that everything should be done by the applications, which seems
to be what this example and some later ones lead to. Although care-taking in
the file transfer process should be done on end-hosts, it can be done by a
common facility like TCP, not necessarily the application itself. For common
usage scenarios, error rates of harddisks and software error are either
negligible or should be reduced to negligible. Thus relying on a reliable
"abstration" of network (like TCP) is common pratice now and seems to be working
pretty well.
- The RISC analogy is interesting. Another similar problem is virtual memory.
There has been a lot of debate over whether VM should be the exclusive memory
interface provided by the OS. Following this paper, one may well argue that:
VM should be a performance (or ease-of-use?) optimization, instead of a
fundamental necesity of operation systems.