November, 1984 | J.H. Saltzer, D.P. Reed and D.D. Clark*
This paper introduces the end-to-end argument, a design principle that guides the placement of functions in a distributed computer system. The principle suggests that functions placed at low levels of a system may be redundant or of little value compared to the cost of providing them at those levels. Examples discussed include bit error recovery, security using encryption, duplicate message suppression, recovery from system crashes, and delivery acknowledgement. The paper argues that low-level mechanisms supporting these functions are justified only as performance enhancements.
The introduction highlights the importance of choosing proper boundaries between functions and discusses how the emergence of data communication networks has sharpened the focus on function placement. The paper then delves into specific examples, such as reliable data transmission, to illustrate the end-to-end argument. It emphasizes that application requirements are crucial in determining the placement of functions, and that functions must be implemented at the application level rather than at lower levels.
The paper also explores the performance aspects of the end-to-end argument, noting that while lower levels can improve reliability, they do not need to provide "perfect" reliability. The trade-off between performance and reliability is a key consideration in system design.
Additionally, the paper discusses other examples of the end-to-end argument, including delivery guarantees, secure transmission of data, duplicate message suppression, and guaranteeing FIFO message delivery. It provides a detailed case study of the SWALLOW distributed data storage system, where the end-to-end argument has led to significant reductions in overhead.
The paper concludes by emphasizing the importance of the end-to-end argument in reducing unnecessary functions in communication subsystems and enhancing modularity in layered systems. It also highlights the historical development of end-to-end arguments and their application in various system areas, such as banking systems, airline reservation systems, and computer architecture.This paper introduces the end-to-end argument, a design principle that guides the placement of functions in a distributed computer system. The principle suggests that functions placed at low levels of a system may be redundant or of little value compared to the cost of providing them at those levels. Examples discussed include bit error recovery, security using encryption, duplicate message suppression, recovery from system crashes, and delivery acknowledgement. The paper argues that low-level mechanisms supporting these functions are justified only as performance enhancements.
The introduction highlights the importance of choosing proper boundaries between functions and discusses how the emergence of data communication networks has sharpened the focus on function placement. The paper then delves into specific examples, such as reliable data transmission, to illustrate the end-to-end argument. It emphasizes that application requirements are crucial in determining the placement of functions, and that functions must be implemented at the application level rather than at lower levels.
The paper also explores the performance aspects of the end-to-end argument, noting that while lower levels can improve reliability, they do not need to provide "perfect" reliability. The trade-off between performance and reliability is a key consideration in system design.
Additionally, the paper discusses other examples of the end-to-end argument, including delivery guarantees, secure transmission of data, duplicate message suppression, and guaranteeing FIFO message delivery. It provides a detailed case study of the SWALLOW distributed data storage system, where the end-to-end argument has led to significant reductions in overhead.
The paper concludes by emphasizing the importance of the end-to-end argument in reducing unnecessary functions in communication subsystems and enhancing modularity in layered systems. It also highlights the historical development of end-to-end arguments and their application in various system areas, such as banking systems, airline reservation systems, and computer architecture.