The paper talks about a principle called “end-to-endargument” have a major impact on system design. The principle states thatfunctions should be kept at lower levels only if they can be implemented by theapplications using it. Implementing functions at lower level has issues likeredundancy and for this reason they should be implemented at a higher level orcloser to the application layer using them. The author say that functions defined at the applicationlevel is a very good option for efficient system designing rather than thelower layers doing it. To explain this, they have given examples like carefulfile transfer, delivery guarantees, duplicate message suppression andguaranteeing FIFO. Before applying the end-to-end argument to a system, weshould first consider the type of application that will be using the system.
Eg. File transfer – Application has to think about theerrors caused in network, errors in copying/buffering data or host crash. Thus, end-to-end argument is favored.Eg. Telephone call – Loss of packet will not have a majorimpact on the conversation and the above principle will just add delay to theconversation.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: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.