Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!amdcad!ames!ucbcad!ucbvax!AI.AI.MIT.EDU!JBVB From: JBVB@AI.AI.MIT.EDU ("James B. VanBokkelen") Newsgroups: comp.protocols.tcp-ip Subject: Re: ..."layering violations" Message-ID: <276112.871027.JBVB@AI.AI.MIT.EDU> Date: Tue, 27-Oct-87 22:40:41 EST Article-I.D.: AI.276112.871027.JBVB Posted: Tue Oct 27 22:40:41 1987 Date-Received: Sat, 31-Oct-87 00:45:22 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 27 One has to be at least a little suspicious of layering violations, if for no other reason that if you go blithely installing hooks and odd interdependencies, you will wind up with a tangled morass of code that can't be enhance, or ported, or even maintained. Layering usually exists because the designers wanted modularity, and relatively clean interface specifications on module boundaries. Handling RIF-cache flush on TCP timeouts means adding another hook, and dummy routines to the other low-level routing layers. Maybe some of the other routing layers could use it, too. It certainly represents more code, and more complexity (and work, and money for initial purchase and support). Even something like ICMP illustrates this: Essentially all TCPs will return an error to their caller whenb they receive a Reset. An ICMP Destination Unreachable message implies much the same thing, but many TCP/IPs won't return an error to the caller. I won't defend this, but I certainly understand why: Handling ICMP Destination Unreachable requires a 2nd, parallel demultiplexing path through IP and into the TCP, and it is not absolutely required during the initial rush to get on the air. A seer employed by one large network user I know of has pronounced that 1 Mb of memory will be necessary to implement ISO. I don't know if he/she/it is right, but the pronouncement certainly made more than one manufacturer jump... jbvb