Internet Protocol - Research by Kirils Solovjovs
Internet Protocol - Research by Kirils Solovjovs
Internet Protocol - Research by Kirils Solovjovs
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
End-to-end principle 104<br />
The canonical case: TCP/IP<br />
In the <strong>Internet</strong> the IP protocol – a connectionless datagram service with no delivery guarantees and effectively no<br />
QoS parameters – is used for nearly all communications. Arbitrary protocols may sit on top of IP. It turns out that<br />
some applications (such as voice, in many cases) do not need reliable retransmission, and so the only reliability in IP<br />
is in the checksum of the IP header (which is necessary to prevent bit errors from sending packets on wild routing<br />
paths.) End-to-end acknowledgment and retransmission is relegated to the connection-oriented TCP which sits on<br />
top of IP. The functional split between IP and TCP exemplifies proper application of the end-to-end principle to<br />
transport protocol design. In addition, to function properly networks must also have methods for shedding or<br />
rejecting loads that would cause the network to thrash and collapse (think "busy signal" on a telephone network.)<br />
The vast majority of applications on the <strong>Internet</strong> use TCP for communications. It was surprising that it took fully 7<br />
years after TCP was standardized for Van Jacobsen and Karels to invent end-to-end congestion control algorithms<br />
for TCP, which adaptively and in a distributed fashion, scale back transmission rates to shed load from an<br />
overloaded <strong>Internet</strong>.<br />
Limitations of the principle<br />
The most important limitation of the end-to-end principle is that its basic conclusion – put functions in the<br />
application end points rather than the intermediary nodes – is not trivial to operationalize. Specifically:<br />
• it assumes a notion of distinct application end points as opposed to intermediary nodes that makes little sense<br />
when considering the structure of distributed applications;<br />
• it assumes a dichotomy between non-application-specific and application-specific functions (the former to be part<br />
of the operations between application end points and the latter to be implemented <strong>by</strong> the application end points<br />
themselves) while arguably no function to be performed in a network is fully orthogonal to all possible<br />
application needs;<br />
• it remains silent on functions that may not be implemented "completely and correctly" in the application end<br />
points and places no upper bound on the amount of application specific functions that may be placed with<br />
intermediary nodes on grounds of performancy considerations, economic trade-offs, etc.<br />
Notes<br />
[1] See Denning's Great Principles of Computing<br />
[2] Saltzer, J. H., D. P. Reed, and D. D. Clark (1981) "End-to-End Arguments in System Design". In: Proceedings of the Second International<br />
Conference on Distributed Computing Systems. Paris, France. April 8–10, 1981. IEEE Computer Society, pp. 509-512.<br />
[3] The 1981 paper was published in ACM's TOCS in an updated version in 1984.Saltzer, J. H. (1980). End-to-End Arguments in System<br />
Design. Request for Comments No. 185, MIT Laboratory for Computer Science, Computer Systems <strong>Research</strong> Division. ( Online copy (http:/ /<br />
web. mit. edu/ Saltzer/ www/ publications/ rfc/ csr-rfc-185. pdf)).<br />
[4] The full quote from the Saltzer, Reed, Clark paper reads:<br />
In a system that includes communications, one usually draws a modular boundary around the<br />
communication subsystem and defines a firm interface between it and the rest of the system. When<br />
doing so, it becomes apparent that there is a list of functions each of which might be implemented in any<br />
of several ways: <strong>by</strong> the communication subsystem, <strong>by</strong> its client, as a joint venture, or perhaps<br />
redundantly, each doing its own version. In reasoning about this choice, the requirements of the<br />
application provide the basis for the following class of arguments: The function in question can<br />
completely and correctly be implemented only with the knowledge and help of the application standing<br />
at the endpoints of the communication system. Therefore, providing that questioned function as a feature<br />
of the communication system itself is not possible, and moreover, produces a performance penalty for<br />
all clients of the communication system. (Sometimes an incomplete version of the function provided <strong>by</strong><br />
the communication system may be useful as a performance enhancement.) We call this line of reasoning<br />
against low-level function implementation the end-to-end argument. (p. 278)