End-To-End Arguments in System Design

Notes by Thorsten von Eicken, Jan 1999

Idea

The correctness of an operation needs to be checked end-to-end. Correctness checks for intermediate results do not help checking overall correctness, however, they may improve performance by avoiding a  complete end-to-end retry.

Nice anecdotes

Nice MIT gateway byte-swapping bug anecdote, "ultimate end-to-end check: compare files with old listings and correct manually"

Problems with the meaning of ACKs.

Duplicate message suppression.

Questions

Is TCP's notion of a reliable byte stream useful beyond perhaps improving performance? Examples where TCP's reliability is counter-productive?

Is a FIFO delivery guarantee provided by the network useful?

Authentication argument?