End-to-end principle
From Free net encyclopedia
The end-to-end principle is one of the central design principles of the Internet Protocol (IP) that is the basis of the Internet. It states that, whenever possible, communications protocol operations should be defined to occur at the end-points of a communications system.
The concept first arose in a 1981 paper entitled End-to-end arguments in system design by Jerome H. Saltzer, David P. Reed, and David D. Clark. They argued that reliable systems tend to require end-to-end processing to operate correctly, in addition to any processing in the intermediate system. They pointed out that most features in the lowest level of a communications system have costs for all higher-layer clients, even if those clients do not need the features, and are redundant if the clients have to reimplement the features on an end-to-end basis.
This leads to the model of a "dumb, minimal, network" with smart terminals, a completely different model to the previous paradigm of the smart network with dumb terminals.
For example, in the TCP/IP protocol stack, IP is a dumb, stateless protocol that simply moves datagrams across the network, and TCP is a smart transport protocol providing error detection, retransmission, congestion control, and flow control end-to-end.
A second canonical example is that of file transfer. Even the most reliable file transfer protocol and file transfer program should contain a checksum, which is validated only after everything has been successfully stored on disk. Disk errors and software errors and even kernel errors make an end-to-end checksum necessary.
According to the end-to-end principle, protocol features are only justified in the lower layers of a system if they are a performance optimization, hence, TCP retransmission for reliability is still justified, but efforts to improve TCP reliability should stop after peak performance has been reached.
Reference
- Jerome H. Saltzer, David P. Reed, and David D. Clark. End-to-end arguments in system design. ACM Transactions on Computer Systems 2, 4 (November 1984) pages 277-288. An earlier version appeared in the Second International Conference on Distributed Computing Systems (April, 1981) pages 509-512.