The paper talks about a principle called “end-to-endargument” which has a major impact on the way a system is designed. Theprinciple states that functions should be provided at lower levels only if theycan be implemented by the applications using it. Implementing functions at lower level has issues likeredundancy and higher cost and for this reason they should be implemented at ahigher level or closer to the application layer using them. The authors suggest that keeping functions at theapplication level is the right way of system design.
To explain this, they havegiven examples like careful file transfer, delivery guarantees, secure transmissionof data, duplicate message suppression and guaranteeing FIFO. Before applying the end-to-end argument to a system, weshould first consider the type of application that will be using the system. 1. File transfer – Here, the application has to think aboutthe errors caused in network, errors in copying/buffering data or host crash.
Thus, end-to-end argument is favored here. 2. Telephone call – Here, noise or loss of packet will nothave a major impact on the conversation and the above principle will just adddelay to the conversation.Thus, end-to-end argument is not favored here.
The authors thus say that using end-to-end argument is notalways the best option. It should depend on the application using it. Limitation:One limitation observed is that the authors did not considerend-to-end arguments for distributed systems. In such a system, data has topass through multiple intermediate nodes to reach its destination. Applyingend-to-end argument principle in this case has not been discussed.
Another limitation observed is that the authors do notdiscuss anything about the security aspect of the functions if they areimplemented at a higher level, as functions at higher level are more atsecurity risk.