From: Andrew Putnam (aputnam@cs.washington.edu)
Date: Tue Oct 12 2004 - 23:14:53 PDT
End-to-End Arguments in System Design
J.H. Saltzer, D.P. Reed, and D.D. Clark
Summary: The authors advocate pushing functionality to as high a level
as possible when designing a layered system. Their arguments are
centered on network design, but apply to a wider variety of systems
including operating systems and file systems.
Network communication protocols had been organized into layers in order
to allow for modularity of the design, but the choice of what
functionality to place in what layer was left completely up to the
systems designer. The authors advocate placing functionality in as high
a level as possible.
Applications do not necessarily need certain functionality, but will
pay for it if it is included in the low-level communication system.
Also, the low-level communication system is not aware of larger
patterns that are clear to the application programmer, and hence the
data cannot be handled as efficiently. However, pushing too much
functionality to the higher levels is not always beneficial. When
functions are nearly always used, pushing the functionality higher
simply causes the higher-level applications to unnecessarily implement
functionality again and again.
The authors stop short of saying that the end-to-end argument should be
used in all situations. Instead, they encourage its use as a guideline,
but to leave the final decision to the discretion of the system
designer.
The authors do provide an interesting rule that any functionality
implemented at the lower levels should be replacable by the higher
communication levels. This will allow users to either take advantage of
the default implementation, to make a more efficient implementation for
themselves, or to bypass the functionality all together.
The end-to-end argument has broader applicability than just
communication networks. The same principle applies to operating systems
and file systems.
This paper does not present findings based on experiments, but instead
advocates a design philosophy using anecdotal evidence. I believe the
authors do not properly account for the possibility of higher-level
applications configuring options in the lower-level protocols rather
then pushing that functionality to higher levels. It seems unnecessary
to require applications to implement functionality such as packet
acknowledgment when applications could instead simply configure the
lower level to handle acknowledgment in either a default manner, or not
at all. Any special handling would have to be implemented by the
higher-level, but this seems easier than requiring higher-level
applications to frequently implement standard configurations.
This archive was generated by hypermail 2.1.6 : Tue Oct 12 2004 - 23:15:17 PDT