02.01.2013 Views

Internet Protocol - Research by Kirils Solovjovs

Internet Protocol - Research by Kirils Solovjovs

Internet Protocol - Research by Kirils Solovjovs

SHOW MORE
SHOW LESS

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)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!