Tuesday, December 8, 2009

End to end arguments

This paper by J.H. Saltzer, D.P. Reed and D.D. Clark shows the basic principle on communication protocol design. It says instead of placing functions such as error control on the network subsystem, it is better to implement them on the endpoints of the network. The rule states that in order to create a desirable function on a subsystem layer, that layer must have a knowledge on the application that will use it. A designer cannot implement a function that services itself. For example this paper explains that in securing transmission of data, the lower layer subsystem doesn't need to encrypt the traffic because the application on both ends must implement all the requirements for secure data transmission, thus removing redundant security. Another example is guaranteeing FIFO message delivery. Sometimes, the application specially a distributed one needed its own control of ordering actions because the subsystem cannot guarantee the correct ordering if the messages are sent along independent virtual circuits.

The logic in end to end argument is very much rational and straight forward and every network researcher must understand what the principle is trying to explain about system design. Its fundamental logic (in theory, not in actuality) will be a great help on obtaining the goals when designing and implementing network protocols. Effectively implementing such protocols have huge impact on scalability and performance. The success of the Internet architecture is one proof when the implementation of TCP/IP adheres to end to end argument. The only difficult part on the principle is how to identify the endpoints of the network. It requires much effort when it comes to layering communication protocols.

Some of the technologies today challenges the end to end argument. One example is the network address translation or NAT. NAT emerges as a temporary solution of IP addresses exhaustion. Network address translation allows a router, to act as an agent between the Internet and a local network. This means that only one IP address is required to represent an entire group of computers. NAT rewrites the TCP/IP (or IP only) parts of a packet, hence violating the end to end connectivity of a network. The solution that sticks to end to end argument is switching to ipv6, but the cost of general worldwide deployment slows down the migration.

Until now there are still debates going on (specially on internet forums) whether or not the end to end argument is still relevant on the evolution of the Internet even new emerging technologies (eg. NAT, multicasting) violate the principle. Of course it's as important as it is decades ago. End to end argument is a valuable guide. Correctly placing functionality on correct communication layers will always produce good system design.

No comments:

Post a Comment