Thursday, June 25, 2009

Review: The Design Philosophy of the DARPA Internet Protocols

Internet architecture has evolved through the years and is still evolving. It was originally designed to work in a military context through interconnection of existing networks to provide some larger service [1].

In the paper, “The Design Philosophy of the DARPA Internet Protocols” by David D. Clark [1], different design goals, protocols used, as well as the architecture and implementation of the Internet, were addressed. The author discussed the flexibility and survivability of the Internet, in terms of the various services it can offer and some tradeoffs (i.e., accountability). It was also emphasized that the fundamental architectural feature of the Internet was the use of datagrams. However, the author also suggested that there may be another building block that can provide enhanced performance than the datagram.

Indeed, the Internet has truly evolved and has been widely used globally. Its fundamental goals are continuously changing according to the needs of its users. But along with the Internet’s growing popularity comes numerous new challenges. Security, cost, administration and control are just few of the recent concerns on Internet use or abuse. Also, sophisticated types of communication services have been developed. Will the suggested Internet design still be as flexible as it was? Will it still be cost effective?

References:


[1] D. D. Clark, "The design philosophy of the DARPA Internet protocols," ACM SIGCOMM Computer Communication Review, vol. 18, issue 4, August 1988.

Review: End-to-End Arguments in System Design

It is essential for system designers to feasibly and reasonably organize placements of functions among the different modules of a distributed computer system in order to achieve enhanced performance results. While doing so, it is not only sound but also beneficial in the application development if system designers are guided with established system design principles.

In the paper, “End-to-End Arguments in System Design” by J.H. Saltzer, D.P. Reed and D.D. Clark [1], a design principle called end-to-end argument was presented. The paper provided numerous examples of end-to-end arguments such as “careful file transfer”, “data encryption” and “duplicate message suppression” among others. The end-to-end argument opposes low-level function implementation whereas it suggests that functions be carefully placed at the endpoints. But is it always true that functions are strategically better placed at the higher-levels? Also, how do we identify the endpoints?

In some of the examples discussed, it is apparent that realizing the potential threats and applying the possible adjustments are very important in the design process. Such tradeoffs like reliability and performance exist. Do we really have to choose performance over reliability or can we get both?

References:


[1] J. H. Saltzer, D.P. Reed and D. D. Clark, "End-to-end arguments in system design," ACM Transactions in Computer Systems, vol. 2, no. 4, pp. 277-288, November 1984.