Citation: J.H. Saltzer, D.P. Reed, and D.D. Clark, "End-to-End Arguments in System Design", ACM Transactions on Computer Systems, November 1984, pp. 277-288. * Summary A principle for guiding the placement of functionality among the modules in a distributed system is presented. The end-to-end argument suggests that functions placed at low levels of a system may be redundant or of little value when compared with the cost of providing them at this low level. * End-to-End Argument The function in question can completely and correctly be implemented only with the knowledge and help of the application standing at the endpoints of the comunication system. Therefore, providing that questioned function as a feature of the communications system itself is not possible. Sometimes an incomplete version of the function provided by the communications system may be useful as a performance enhancement. * Keys to Decisions on End Points 1. Consider the "bad case" performance penalty of supplying the function at each available level, choose the end point that minimizes the penalty for the app 2. Placing functionality at a level that is shared by multiple higher-level components causes all those components to incur the cost of providing that functionality. 3. Will providing incomplete functionality at lower levels fool higher levels into believing their requirements are being met?