test-4

From: Pravin Bhat (pravinb@u.washington.edu)
Date: Tue Oct 12 2004 - 22:37:56 PDT


Paper Summary: The goal of this paper is to evangelize a minimalist approach to
design known as the end-to-end argument. This design principle suggests that in
a layered system, application specific functionality should be implemented in
the layers closer to the application keeping the lower layers as simple as
possible. The paper is peppered with examples of real world systems that could
have benefited from using this approach.

Strengths: The authors make a valid point about how ambitious designs that try to
provide every possible feature in lower levels often fail because:
   1. Missing the unique needs of an individual application, even slightly, can
      cause the application to re-implement features.

   2. Such designs increase the costs for applications that are forced to use
      features not applicable to their needs.

   3. Applications that require features with guarantees/correctness end up
      re-implementing critical features (i.e. an airline reservation system that
      re-implements packet error-detection).

The paper suggests that the under-lying layers should only implement
application-specific features when performance demands make it unfeasible to
implement them higher-up in the layer-hierarchy. These features should be
completely optional allowing applications to to bypass them or implement their own.

Limitations and unproven assumptions:
   - The paper, at times, presents exceptions as if they were typical applications.
     For example, the paper makes a case against strong error-detection in
     lower-levels by pointing to banking software-applications that implement
     stronger error-detection mechanism in the application layer. Unless the
     authors have some statistics that suggest that such reimplementation is
     typical for majority of the applications that use TCP/IP the argument fails
     to make its point at the scale it wants to. In fact most applications must
     adapt well to TCP/UDP otherwise we would have seen a lot more
     application-designers build their systems directly on IP.

   - The paper tries to trivialize the need to implement features in the lower
     levels as a performance measure. However performance is often one of the main
     features required by applications. The internet couldn't function at its
     current speed without specialized hardware for routing. Similarly, the authors
     seem to have overlooked examples like graphics-cards or sound-cards which go
     against their suggestion for reduced instruction-set computer architecture.

   - The End-to-end argument does not scale to heterogeneous systems where unique
     ends have conflicting goals. Let's says using this principle we decided not to
     implement TCP. As a result, many short-sited applications would choose not to
     implement congestion control to reduce complexity. Such end-heavy design
     leaves the entire system vulnerable to malicious and sub-optimal applications.

Relevance/Future Work –
This paper will remain relevant as long as people continue to design complex
systems. However the end-to-end design principle, like any other approach, isn't
a universal solution to all design-problems. Care should be taken to apply it
reasonably to the problem at hand.
For future work it would be interesting to see a board survey of existing
applications for a layered system like the internet that listed the number of
features in the underlying layers used by each application and the number
re-implemented.



This archive was generated by hypermail 2.1.6 : Tue Oct 12 2004 - 22:37:57 PDT