November, 1984 | J.H. Saltzer, D.P. Reed and D.D. Clark
The paper presents the "end-to-end argument," a design principle in distributed systems that suggests functions should be implemented at the application level rather than lower levels, as lower-level implementations may be redundant or less efficient. The argument is based on application requirements and emphasizes that functions like reliable data transmission, encryption, duplicate message suppression, and delivery acknowledgments can be effectively handled at the application level, reducing the need for complex lower-level mechanisms. The paper discusses various examples, including file transfer, secure transmission, duplicate suppression, and message ordering, where the end-to-end argument applies. It also addresses the trade-offs between performance and reliability, noting that lower-level subsystems may not need to provide "perfect" reliability. The argument is not absolute but serves as a guideline for system design, emphasizing that application-level mechanisms can often achieve the same results as lower-level ones with less overhead. The paper also highlights the importance of identifying the correct endpoints for the argument, as the applicability varies depending on the specific application. The end-to-end argument has been applied in various system areas, including network protocols, operating systems, and data storage, and is seen as a key principle in modular system design.The paper presents the "end-to-end argument," a design principle in distributed systems that suggests functions should be implemented at the application level rather than lower levels, as lower-level implementations may be redundant or less efficient. The argument is based on application requirements and emphasizes that functions like reliable data transmission, encryption, duplicate message suppression, and delivery acknowledgments can be effectively handled at the application level, reducing the need for complex lower-level mechanisms. The paper discusses various examples, including file transfer, secure transmission, duplicate suppression, and message ordering, where the end-to-end argument applies. It also addresses the trade-offs between performance and reliability, noting that lower-level subsystems may not need to provide "perfect" reliability. The argument is not absolute but serves as a guideline for system design, emphasizing that application-level mechanisms can often achieve the same results as lower-level ones with less overhead. The paper also highlights the importance of identifying the correct endpoints for the argument, as the applicability varies depending on the specific application. The end-to-end argument has been applied in various system areas, including network protocols, operating systems, and data storage, and is seen as a key principle in modular system design.