From: Pravin Bhat (pravinb@u.washington.edu)
Date: Tue Oct 12 2004 - 22:39:46 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 and 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:39:46 PDT