end to end

From: Ethan Phelps-Goodman (ethanpg@cs.washington.edu)
Date: Tue Oct 12 2004 - 17:54:55 PDT

  • Next message: Kate Everitt: "End-to-End Arguments in System Design"

    End-To-End Arguments
    Saltzer et al.

    This paper argues for a principle of systems design where functionality is pushed to the highest level. The concentrate on arguing that networking functions, and in particular reliability measures, should be left up to the application. Their argument is simple enough: functionality at lower layers, such as operating systems and networks, will never be general enough for to handle all applications, and never as fast as individually tailored solutions. This must have been obvious enough, even in 1984. It does not, however mean that we should actual build systems with all the functionality pushed into higher layers. While that might give the most optimal code from the machine's point of view it ignores the whole motivation for layering and abstraction. Without these it would be virtually impossible for mere mortals to handle the complexity of modern day systems.

    Their general principle is shaky, their particular examples are even more so. They argue that the process of transferring a file over the network involves error correction at all levels, from the disk, to hardware, to network transport. Further, they argue that this process will never be reliable enough to do away with an application level data consistency check at the end. Because of this they see no benefit from providing strong reliability guarantees at the lower levels. I disagree completely. First, file transfer today is extremely reliable, based on the reliability guarantees of the lower levels, not the application level. Second, the effect of unreliable lower layers will multiply the higher up in the layering you get, turning small chances of errors at say the bus level into a huge chance of error when writing a block to disk. Third, for a programmer it is much more convenient to build on a reliable layer than to have to deal with potential errors at every step.

    They follow with a sequence of discussions about retransmissions, duplications, and reordering in packet networks, arguing that applications should just build on the datagram layer. I have no doubt that you could make very efficient applications by writing your own custom transport protocol. And in a few instances, such as VoIP this makes sense. But for the other 95% of applications, I'm glad we have TCP.

    Ethan


  • Next message: Kate Everitt: "End-to-End Arguments in System Design"

    This archive was generated by hypermail 2.1.6 : Tue Oct 12 2004 - 17:55:01 PDT