Review of End-to-End

From: Andrew Putnam (aputnam@cs.washington.edu)
Date: Tue Oct 12 2004 - 23:14:53 PDT

  • Next message: Ioannis Giotis: "End-to-end"

    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.


  • Next message: Ioannis Giotis: "End-to-end"

    This archive was generated by hypermail 2.1.6 : Tue Oct 12 2004 - 23:15:17 PDT