test-2

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

  • Next message: Pravin Bhat: "(no subject)"

    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 calls for application specific functionality to 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. Such features should be optional to allow applications to implement their own or bypass them.

    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 be adaptable 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 over-looked examples like graphics-cards while calling 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 design-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: "(no subject)"

    This archive was generated by hypermail 2.1.6 : Tue Oct 12 2004 - 22:13:40 PDT