Computer Networks is the ideal introduction to today's and tomorrow's networks. This classic best-seller has been totally rewritten to reflect the networks of the late 1990s and beyond. Author, educator, and researcher Andrew S. Tanenbaum, winner of the ACM Karl V. Karlstrom Outstanding Educator Award, carefully explains how networks work inside, from the hardware technology up through the most popular network applications. The book takes a structured approach to networking, starting at the bottom the physical layer and gradually working up to the top the application layer. Tanenbaum has an S. He is currently a Professor of Computer Science at the Vrije Universiteit in Amsterdam, The Netherlands, where he heads the Computer Systems Group. He is also Dean of the Advanced School for Computing and Imaging, an interuniversity graduate school doing research on advanced parallel systems, distributed systems, and imaging systems. Nevertheless, he is frying very hard to avoid turning into a bureaucrat. In the past, he has done research on compilers, operating systems, networking, and local-area distributed systems. His current research focuses primarily on the design of wide-area distributed systems that scale to millions of users. These research projects have led to over 70 refereed papers in journals and conference proceedings. He is also the author of five books see page ii. Tanenbaum has also produced a considerable volume of software. He was the principal architect of the Amsterdam Compiler Kit, a widely-used toolkit for writing portable compilers, and MINIX, a small UNIX-like operating system for operating systems courses. Together with his Ph. MINIX and Amoeba are now available for free for education and research via the Internet. He is very proud of them. In this respect he resembles a mother hen. Tanenbaum is a Fellow of the ACM, a Senior Member of the IEEE, a member of the RoyalNetherlands Academy of Arts anti Sciences and winner of the 1994 ACM Karl V. Karlstrom Outstanding Educator Award. He is also listed in Who's Who in the World. Chapter 5: The Network Layer Weighted Fair Queueing A problem with using choke packets is that the action to be taken by the source hosts is voluntary. Suppose that a router is being swamped by packets from four sources, and it sends choke packets to all of them. One of them cuts back, as it is supposed to, but the other three just keep blasting away. The result is that the honest host gets an even smaller share of the bandwidth than it had before. To get around this problem, and thus make compliance more attractive, Nagle 1987 proposed a fair queueing algorithm. The essence of the algorithm is that routers have multiple queues for each output line, one for each source. When a line becomes idle, the router scans the queues round robin, taking the first packet on the next queue. In this way, with n hosts competing for a given output line, each host gets to send one out of every n packets. Sending more packets will not improve this fraction. Some ATM switches use this algorithm. Although a start, the algorithm has a problem: it gives more bandwidth to hosts that use large packets than to hosts that use small packets. In effect, it scans the queues repeatedly, byte-for-byte, until it finds the tick on which each packet will be finished. The packets are then sorted in order of their finishing and sent in that order. The algorithm is illustrated in Fig. At virtual clock tick 1, the first byte of the packet on line A is sent. Then goes the first byte of the packet on line B, and so on. The first packet to finish is C, after eight ticks. The sorted order is given in Fig. In the absence of new arrivals, the packets will be sent in the order listed, from C to A. One problem with this algorithm is that it gives all hosts the same priority. In many situations, it is desirable to give the file and other servers more bandwidth than clients, so they can be given two or more bytes per tick. This modified algorithm is called weighted fair queueing and is widely used. Sometimes the weight is equal to the number of virtual circuits or flows coming out of a machine, so each process gets equal bandwidth. An efficient implementation of the algorithm is discussed in Shreedhar and Varghese, 1995. Hop-by-Hop Choke Packets At high speeds and over long distances, sending a choke packet to the source hosts does not work well because the reaction is so slow. Consider, for example, a host in San Francisco router A in Fig. If the New York host begins to run out of buffers, it will take about 30 msec for a choke packet to get back to San Francisco to tell it to slow down. The choke packet propagation is shown as the second, third, and fourth steps in Fig. In those 30 msec, another 4. Even if the host in San Francisco completely shuts down immediately, the 4. Only in the seventh diagram in Fig. An alternative approach is to have the choke packet take effect at every hop it passes through, as shown in the sequence of Fig. Here, as soon as the choke packet reaches F, F is required to reduce the flow to D. Doing so will require F to devote more buffers to the flow, since the source is still sending away at full blast, but it gives D immediate relief, like a headache remedy in a television commercial. In the next step, the choke packet reaches E, which tells E to reduce the flow to F. This action puts a greater demand on E's buffers but gives F immediate relief. Finally, the choke packet reaches A and the flow genuinely slows down. The net effect of this hop-by-hop scheme is to provide quick relief at the point of congestion at the price of using up more buffers upstream. In this way congestion can be nipped in the bud without losing any packets. The idea is discussed in more detail and simulation results are given in Mishra and Kanakia, 1992. Load Shedding When none of the above methods make the congestion disappear, routers can bring out the heavy artillery: load shedding. Load shedding is a fancy way of saying that when routers are being inundated by packets that they cannot handle, they just throw them away. The term comes from the world of electrical power generation where it refers to the practice of utilities intentionally blacking out certain areas to save the entire grid from collapsing on hot summer days when the demand for electricity greatly exceeds the supply. A router drowning in packets can just pick packets at random to drop, but usually it can do better than that. Which packet to discard may depend on the applications running. For file transfer, an old packet is worth more than a new one because dropping packet 6 and keeping packets 7 through 10 will cause a gap at the receiver that may force packets 6 through 10 to be retransmitted if the receiver routinely discards out-of-order packets. In a 12-packet file, dropping 6 may require 7 through 12 to be retransmitted, whereas dropping 10 may require only 10 through 12 to be retransmitted. In contrast, for multimedia, a new packet is more important than an old one. The former policy old is better than new is often called wine and the latter new is better than old is often called milk. A step above this in intelligence requires cooperation from the senders. For many applications, some packets are more important than others. For example, certain algorithms for compressing video periodically transmit an entire frame and then send subsequent frames as differences from the last full frame. In this case, dropping a packet that is part of a difference is preferable to dropping one that is part of a full frame. As another example, consider transmitting a document containing ASCII text and pictures. Losing a line of pixels in some image is far less damaging than losing a line of readable text. To implement an intelligent discard policy, applications must mark their packets in priority classes to indicate how important they are. If they do this, when packets have to be discarded, routers can first drop packets from the lowest class, then the next lowest class, and so on. Of course, unless there is some significant incentive to mark packets as anything other than VERY IMPORTANT - NEVER, EVER DISCARD, nobody will do it. The incentive might be in the form of money, with the low-priority packets being cheaper to send than the high-priority ones. Alternatively, priority classes could be coupled with traffic shaping. For example, there might be a rule saying that when the token bucket algorithm is being used and a packet arrives at a moment when no token is available, it may still be sent, provided that it is marked as the lowest possible priority, and thus subject to discard the instant trouble appears. Under conditions of light load, users might be happy to operate in this way, but as the load increases and packets actually begin to be discarded, they might cut back and only send packets when tokens are available. Another option is to allow hosts to exceed the limits specified in the agreement negotiated when the virtual circuit was set up e. Such a strategy is actually not a bad idea, because it makes more efficient use of idle resources, allowing hosts to use them as long as nobody else is interested, but without establishing a right to them when times get tough. Marking packets by class requires one or more header bits in which to put the priority. ATM cells have I bit reserved in the header for this purpose, so every ATM cell is labeled either as low priority or high priority. ATM switches indeed use this bit when making discard decisions. In some networks, packets are grouped together into larger units that are used for retransmission purposes. Under these conditions, a router that drops a cell might as well drop all the rest of the cells in that message, since transmitting them costs bandwidth and wins nothing - even if they get through they will still be retransmitted later. Simulation results show that when a router senses trouble on the horizon, it is better off starting to discard packets early, rather than wait until it becomes completely clogged up Floyd and Jacobson, 1993; Romanow and Floyd, 1994. Doing so may prevent the congestion from getting a foothold.... Uses of Computer Networks. Example Data Communication Services. Outline of the Rest of the Book. The Theoretical Basis for Data Communication. Broadband ISDN and ATM. The Data Link Layer. Data Link Layer Design Issues. Error Detection and Correction. Elementary Data Link Protocols. Protocol Specification and Verification. Example Data Link Protocols. The Medium Access Sublayer. The Channel Allocation Problem. IEEE Standard 802 for LANS and MANS. Network Layer Design Issues. The Network Layer in the Internet. The Network Layer in ATM Networks. Elements of Transport Protocols. A Simple Transport Protocol. The Internet Transport Protocols TCP and UDP. The ATM AAL Layer Protocols. SNMP—Simple Network Management Protocol. The World Wide Web. Reading List and Bibliography. Suggestions for Further Reading. It covers new routing algorithms, including distance vector and link state routing. There is a good discussion of expanded application layer that includes DNS, SNMP, USENET, WWW, HTML, Java, video on demand, and multimedia. A textbook providing a clear explanation of the way networks work, from hardware technology up through the most popular network applications. Topics covered include the physical layer copper, fiber, radio, and satellite communication ; the data link layer protocol principles, HDLC, SLIP, and PPP ; the MAC sublayer IEEE 802 LANs, bridges, new high-speed LANs ; the network layer routing, congestion control, internetworking, IPv6 ; the transport layer transport protocol principles, TCP, network performance ; and the application layer cryptography, email, news, the Web, Java, and multimedia. I evaluate every computer book by how many hours it will save me. If it takes twenty hours to read book, then I fully expect it to save me at least twenty hours of frustrated guessing. I'm a businessman first and a hacker second. Everything must have an ROI Return On Investment. Computer Networks won't save one minute over the next year. It has no step-by-step procedures, no problem solving sections, and no butt-saving tricks. The only purpose it can serve at a downed site is as a shield against thrown objects from frustrated users. Normally, theoretical books like this one receive a quick skim and are promptly sent to my for-looks-only tome tomb. However, this isn't a normal theoretical book. In fact, I read it not once but three times. Tanenbaum fills over 700 pages with everything I didn't know, or better still, only thought I knew about networks. For example, let me tell you what Tanenbaum taught me about modems. I have over ten years trench tech UNIX experience. I've hooked up thousands of modems. I've written more chat scripts, custom dialers, and inittab entries than I have sense to count. I even silently considered myself a modem expert -- before reading Tanenbaum's book. I had also used that term many times before my computer days. I worked my way through college at a commercial broadcast station. A broadcast transmitter superimposes audio onto a sine wave called the carrier. However, until I read Computer Networks, I never made the connection between modems and transmitters. Tanenbaum points out that a modem works very much like a commercial transmitter and then proceeds to describe the different types of modem modulation in amazingly great detail. I no longer consider myself a modem expert. That's why I read this book three times. I learned something new on every page and unlearned at least one misunderstanding in every chapter. I saw the gestalt between seemingly dissimilar things like modems and radio stations. The breadth and depth of the book yielded fresh fruit on every reading. The book is well organized. Tanenbaum uses a modified ISO OSI Open Systems Interconnection reference model as a template for the book. While he drops the session and presentation layers, he leaves the physical, data link, network, transport, and application layers in his reference model. The explanation starts with the physical layer in chapter two and ends with the application layer in the last chapter. This bottom-up explanation is logical and easy to follow. While the concepts could have been explained with the warmth of a legal brief, Tanenbaum has a gift for explaining them in an entertaining, conversational manner. True, everything must have an ROI. Sometimes, however, when it's entertaining enough, the sole joy of learning is enough of a return. Dobb's Electronic Review of Computer Books. This is one of the best computer network textbook for engineers and engineering student. Very comprehensive and detailed networking explanation. This is definitely not for some business-man, no techie person. I strongly recommend this for the overall understanding of the network. This is not a reading book. This is definitely a study book for those who are interested in network.