(no subject)

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

  • Next message: Pravin Bhat: "test-4"

    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 implement 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.

       - 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 –
    The 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.


  • Next message: Pravin Bhat: "test-4"

    This archive was generated by hypermail 2.1.6 : Tue Oct 12 2004 - 22:30:44 PDT