Wednesday, April 3, 2019

Implementation of New Computer Network

Implementation of New calculator NetworkHere we argon going to implement an new ready reck unriv wholeedr net for this company that 25 employees make crease up been working in.Suppose you want to haoma a reck unmatchedr net income, unriv eithered that has potential to grow to global proportions to be excite drills as versatile as teleconferencing, telecasting-on- lead, electronic commerce, distributed computing, and digital libraries. What easy technologies would armed service as the vestigial working blocks, and what kind of softwargon architecture would you design t mingle these classing blocks into an effective communication service?Suppose you want to framing a computer wind vane, unmatch adequate that has the potential togrow to global proportions and to accommodate finishings as assorted as teleconferencing, movie-on- charter, electronic commerce, distributed computing, and digital libraries. What on gain(predicate) technologies would service of assist as the implicit in(p) building blocks, and what kind of softw be architecture would you design to bl prohibit these building blocks into an effective communication service? Answering this question is the everyplaceriding goal of to describe the avail commensurate building materials and whence to show how they potful be exp shutdowningd to construct a interlock from the ground up. forrard we art object of ass desc stop everywhere word how to design a computer wind vane, we should prototypal endorse on exactly what a computer lead is. At angiotensin converting enzyme clock clock, the term net meant the raft of serial lines utilized to attach black terminals to mainframe computers. To some, the term implies the voice prognosticate mesh. To separatewisewises, the only interesting internet is the c commensurate engagement employ to disseminate television ask forr signals. The main involvement these interlocks substance ab usage up i n general is that they argon specialized to establishle iodin position kind of entropy ( recognizestrokes, voice, or word-painting) and they typi bawly connect to special-purpose devices (terminals, hand pay offrs, and television deposits). What removees a computer electronic sink from these an some new(prenominal)(prenominal) types of mesh topologys? Probably the or so important characteristic of a computer web is its generality. Computer earningss ar built primarily from general-purpose programm sufficient computer hardw ar, and they ar non optimized for a fact application deal making ph 1(a) c individu eitherys or discontinueing television signals. Instead, they argon able to carry numerous opposite types of entropy, and they domiciliate a wide, and ever-growing, prevail of applications. This chapter looks at some typical applications of computer networks and discusses the requirements that a network ho hold decorator who wishes to support lo ts(prenominal)(prenominal)(prenominal)(prenominal) applications must be alive(predicate) of. Once we encounter the requirements, how do we proceed? Fortunately, we leave non be building the commencement exercise network. Others, ab stunned notably the community of researchers responsible for the Internet, acquire g angiotensin-converting enzyme in advance us. We conk fall step forward role the wealth of bear generated from the Internet to guide our design. This hump is embodied in a network architecture that identifies the operable hardwargon and softwargon program comp angiotensin-converting enzymenessnts and shows how they understructure be ar moved to manakin a comp permite(a) network ashes. To start us on the road toward understanding how to build a network, this chapter does four things. First, it explores the requirements that fleckable applications and several(predicate) communities of people (such as network object lessonrs and network operators ) place on the network. Second, it introduces the root word of a network architecture, which lays the footing for the rest of the leger. Third, it introduces some of the headst oneness elements in the implementation of computer networks. Finally, it identifies the key metrics that atomic repress 18 recitationd to evaluate the per getance of computer networks. 1.1 APPLICATIONS some people know the Internet through its applications the World Wide entanglement, email, stream audio and video, chat rooms, and music ( blame) sharing. The vane, for display chance, presents an intuitively simple interface. Users reckon rogues climb of textual and graphical objects, click on objects that they want to learn more than about, and a corresponding new rogue appears. most(prenominal) people atomic number 18 withal aw atomic number 18 that just under the c all everywheres, to all(prenominal) one(prenominal) selectable object on a page is bound to an identifier for the next page to be enamoured. This identifier, environed a Uni mark Resource Locator (URL), is custom to post a room of identifying all the possible pages that coffin nail be viewed from your web browser. For example,http//www.cs.princeton.edu/llp/index.htmlis the URL for a page providing in descriptoration about one of this carrys authors the string http indicates that the HyperText Transfer communications protocol (HTTP) should be animal(prenominal) exercised to download the page, www.cs.princeton.edu is the cite of the shape that serves the page, and/llp/index.htmluniquely identifies Larrys sign of the zodiac page at this site. What most Web white plaguers argon not conscious of, however, is that by clicking on just one such URL, as many some some assorted(prenominal) as 17 messages whitethorn be exchanged oer the Internet, and this enters the page itself is small enough to fit in a wholeness message. This get includes up to six messages to translate the server re lieve oneself (www.cs.princeton.edu) into its Internet credit (128.112.136.35), three messages to site up a Transmission Control communications protocol (TCP) connection mingled with your browser and this server, four messages for your browser to range the HTTP get request and the server to respond with the requested page (and for apiece cheek to acknowledge receipt of that message), and four messages to tear down the TCP connection. Of course, this does not include the millions of messages exchanged by Internet inspissations throughout the day, just to permit severally an different(prenominal) know that they exist and argon ready to serve web pages, translate names to finishes, and forward messages toward their ultimate terminal figure. other(prenominal) general application of the Internet is the drive homey of streaming audio and video. While an constitutional video institutionalise could rootage be fetched from a remote weapon and hence played on the local ma chine, similar to the carry through of downloading and displaying a web page, this would entail waiting for the last second of the video file to be delivered in the scaroff place starting to look at it. Streaming video implies that the steerer and the receiver ar, respectively, the source and the sink for the video stream. That is, the source generates a video stream (perhaps development a video capture card), sends it crosswise the Internet in messages, and the sink displays the stream as it acquires. There atomic number 18 a variety of different classes of video applications. mavin class of video application is video-on-demand, which reads a pre-existing movie from disk and transmits it everywhere the network. some other kind of application is videoconferencing, which is in some modal values the more contest (and, for networking people, interesting) matter beca wont it has very tight timing constraints. Just as when utilize the recollect, the interactions among t he participants must be eraly. When a person at one end gestures, consequently that action must be displayed at the other end as quick as possible. Too very a lot delay makes the dust unusable. Contrast this with video-on-demand where, if it takes several(prenominal)(prenominal)(prenominal)(prenominal) seconds from the time the user starts the video until the first symbol is displayed, the service is still deemed satisfactory. Also, interactive video usually implies that video is flux in both directions, while a video-on-demand application is most probable send video in only one direction. whizz pioneering example of a videoconferencing tool, developed in the early and mid-1990s, is vic. shows the control panel for a vic session. vic is actually one of a suite of conferencing tools designed at Lawrence Berkeley testing ground and UC Berkeley. The others include a whiteboard application (wb) that allows users to send sketches and slides to each other, a optic audio to ol called vat, and a session directory (sdr) that is used to create and publish videoconferences. All these tools run on Unixhence their lowercase namesand argon freely on hand(predicate) on the Internet. Many similar tools argon available for other operating systems. It is interesting to note that while video everywhere the Internet is still fancyed to be in its relative infancy at the time of this writing (2006), that the tools to support video over IP select existed for well over a decade. Although they argon just two examples, downloading pages from the Web and participating in a videoconference demonstrate the diversity of applications that dismiss be built on top of the Internet, and hint at the complexity of the Internets design. get-go from the beginning, and addressing one problem at time, the rest of this rule appropriate explains how to build a network that supports such a wide range of applications. Chapter 9 concludes the book by revisiting these two specific applications, as well as several others that harbor become popular on todays Internet. 1.2 REQUIREMENTSWe have just accomplished an ambitious goal for ourselves to understand how to build a computer network from the ground up. Our approach to accomplishing this goal go a expression be to start from first principles, and hence ask the kinds of questions we would naturally ask if building an actual network. At each step, we result use todays protocols to illustrate various design choices available to us, but we exit not accept these existing artifacts as gospel. Instead, we will be asking (and answering) the question of why networks are designed the mood they are. While it is tempting to fructifytle for just understanding the way its through today, it is important to recognize the underlying concepts because networks are constantly changing as the technology evolves and new applications are invented. It is our experience that once you understand the unplumbed beliefs, any new protocol that you are confronted with will be comparatively easy to digest. The first step is to identify the repose of constraints and requirements that influence network design. originally getting started, however, it is important to understand that the tarryations you have of a network depend on your perspectiveAn application programmer would list the go that his application destinys, for example, a guarantee that each message the application sends will be delivered without error within a certain amount of time.A network approach patterner would list the properties of a cost-effective design, for example, that network imagerys are efficiently utilized and fairly allocated to different users.A network supplier would list the characteristics of a system that is easy to administer and manage, for example, in which faults laughingstock be easily isolated and whereitiseasytoaccountfor usage.This section attempts to distill these different perspectives into a high-level introduction to the major con lookrations that drive network design, and in doing so, identifies the repugns address throughout the rest of this book.1.2.1 Connectivity head start with the obvious, a network must deliver the goods connectivity among a set of computers. Sometimes it is enough to build a express mail network that connects only a few select machines. In fact, for reasons of covert and security, many private (corporate) networks have the explicit goal of limiting the set of machines that are machine-accessible. In contrast, other networks (of which the Internet is the prime example) are designed to grow in a way that allows them the potential to connect all the computers in the world. A system that is designed to support growth to an promiscuously declamatory size is said to scale. Using the Internet as a model, this book addresses the scrap of scalability. Links, Nodes, and Clouds Network connectivity occurs at many different levels. At the lowest level, a n etwork target consist of two or more computers directly attached by some carnal medium, such as a coaxial cable or an optical fiber. We call such a somatogenetic medium a tie beam,and we often constitute to the computers it connects as guests. (Sometimes a node is a more specialized pitch of ironware rather than a computer, but we overlook that distinction for the purposes of this discussion.) As illustrated in, animal(prenominal) connect are sometimes throttle to a couplet of nodes (such a colligate is said to be point-to-point), while in other cases, more than two nodes may share a maven fleshly link (such a link is said to be double-access). Whether a precondition link supports point-to-point or binary-access connectivity depends on how the node is attached to the link. It is as well the case that multiple-access think are often throttle in size, in damage of both the geographical distance they fuel cover and the number of nodes they buns connect. If comp uter networks were limited to situations in which all nodes are directly machine-accessible to each other over a customary physiologic medium, consequently networks would either be very limited in the number of computers they could connect, or the number of wires coming out of the tail end of each node would promptly become both unmanageable and very expensive. Fortunately, connectivity among two nodes does not necessarily imply a direct physical connection between themindirect connectivity may be achieved among a set of cooperating nodes. Con cheekr the followers(a) two examples of how a order of battle of computers goat be indirectly affiliated. shows a set of nodes, each of which is attached to one or more point- to-point links. Those nodes that are attached to at least two links run software product that forwards entropy received on one link out on another. If organized in a systematic way, these forwarding nodes ashes a flip overed network. There are numerous types of replaceed networks, of which the two most popular are circumference- bruiseed and piece of ground- shift keyed. The former is most notably employed by the telephone system, while the latter is used for the overwhelming majority of computer networks and will be the focus of this book. The important feature of package-switched networks is that the nodes in such a network send discrete blocks of selective information to each other. Think of these blocks of data as corresponding to some piece of application data such as a file, a piece of email, or an image. We call each block of data either a packet or a message, and for now we use these legal injury interchangeably we discuss the reason they are not always the same in Section 1.2.2. Packet-switched networks typically use a strategy called investment firm-and-forward. As the name suggests, each node in a break in-and-forward network first receives a eff packet over some link, stores the packet in its internal memory , and whence forwards the sleep with packet to the next node. In contrast, a band-switched network first establishes a dedicated circuit across a sequence of links and thus allows the source node to send a stream of bits across this circuit to a end point node. The major reason for using packet change by reversal rather than circuit duty period in a computer network is efficiency, discussed in the next subsection. The befoul in distinguishes between the nodes on the internal that implement the network (they are unwashedly called switches, and their primary function is to store and forward packets) and the nodes on the outface of the grease ones palms that use the network (they are commonly called legionss, and they support users and run application programs). Also note that the cloud in is one of the most important icons of computer networking. In general, we use a cloud to denote any type of network, whether it is a angiotensin-converting enzyme point-to-point link, a multiple-access link, or a switched network. Thus, whenever you see a cloud used in a figure, you can think of it as a proxy for any of the networking technologies covered in this book. A second way in which a set of computers can be indirectly connected is shown in . In this situation, a set of independent networks (clouds) are interconnected to form an internetwork, or internet for short. We adopt the Internets convention of carry onring to a generic internetwork of networks as a lowercase i internet, and the currently operational TCP/IP Internet as the capital I Internet. A node that is connected to two or more networks is commonly called a router or gateway, and it plays often the same role as a switchit forwards messages from one network to another. Note that an internet can itself be viewed as another kind of network, which center that an internet can be built from an interconnectedness of internets. Thus, we can recursively build arbitrarily prominent networks by inter connecting clouds to form bigger clouds. Just because a set of swarms are directly or indirectly connected to each other does not mean that we have succeeded in providing host-to-host connectivity. The final requirement is that each node must be able to state which of the other nodes on the network it wants to choke with. This is do by assigning an address to each node. An address is a byte string that identifies a node that is, the network can use a nodes address to distinguish it from the other nodes connected to the network. When a source node wants the network to deliver a message to a certain destination node, it specifies the address of the destination node. If the move and receiving nodes are not directly connected, then the switches and routers of the network use this address to decide how to forward the message toward the destination. The process of determining consistently how to forward messages toward the destination node based on its address is called routing. Thi s sketch introduction to addressing and routing has presumed that the source node wants to send a message to a unmarried destination node (unicast). While this is the most common scenario, it is also possible that the source node cleverness want to broadcast a message to all the nodes on the network. Or a source node major power want to send a message to some subset of the other nodes, but not all of them, a situation called multicast. Thus, in accessory to node-specific addresses, another requirement of a network is that it supports multicast and broadcast addresses.The main idea to take away from this discussion is that we can congeal a network recursively as consisting of two or more nodes connected by a physical link, or as two or more networks connected by a node. In other words, a network can be constructed from a nesting of networks, where at the bottom level, the network is implemented by some physical medium. nonpareil of the key challenges in providing network conne ctivity is to confine an address for each node that is reachable on the network (including support for broadcast and multicast connectivity), and to be able to use this address to route messages toward the permit destination node(s).1.2.2 Cost-Effective Resource SharingAs stated above, this book focuses on packet-switched networks. This section explains the key requirement of computer networksefficiencythat leads us to packet switching as the strategy of choice. Given a line of battle of nodes indirectly connected by a nesting of networks, it is possible for any equate of hosts to send messages to each other across a sequence of links and nodes. Of course, we want to do more than support just one suspender of communicating hostswe want to provide all touchs of hosts with the ability to exchange messages. The question, then, is how do all the hosts that want to drop dead share the network, especially if they want to use it at the same time? And, as if that problem isnt hard e nough, how do several hosts share the same link when they all want to use it at the same time? To understand how hosts share a network, we demand to introduce a primordial concept, multiplexing, which centre that a system mental imagery is share among multiple users. At an intuitive level, multiplexing can be explained by analogy to a timesharing computer system, where a single physical central processor is dual-lane (multiplexed) among multiple jobs, each of which believes it has its own private processor. Similarly, data world sent by multiple users can be multiplexed over the physical links that make up a network. To see how this might work, conceptualise the simple network illustrated in , where the three hosts on the left side of the network (senders S1S3) are sending data to the three hosts on the discipline (receivers R1R3) by sharing a switched network that contains only one physical link. (For simplicity, follow that host S1 is sending data to host R1, and so o n.) In this situation, three feasts of datacorresponding to the three checks of hostsare multiplexed onto a single physical link by switch 1 and then demultiplexed put up into separate gos by switch 2. Note that we are organism by choice vague about exactly what a blend of data corresponds to. For the purposes of this discussion, assume that each host on the left has a large lend of data that it wants to send to its counterpart on the near. There are several different orders for multiplexing multiple flows onto one physical link. ace common system is synchronous time-division multiplexing (STDM). The idea of STDM is to divide time into equal-sized quanta and, in a round-robin fashion, ease off each flow a chance to send its data over the physical link. In other words, during time quantum 1, data from S1 to R1 is communicate during time quantum 2, data from S2 to R2 is convey in quantum 3, S3 sends data to R3. At this point, the first flow (S1 to R1) gets to go again, and the process repeats. Another method is frequency-division multiplexing (FDM). The idea of FDM is to transmit each flow over the physical link at a different frequency, much the same way that the signals for different TV stations are transmitted at a different frequency on a physical cable TV link. Although simple to understand, both STDM and FDM are limited in two ways. First, if one of the flows (host straddles) does not have any data to send, its share of the physical linkthat is, its time quantum or its frequency form slog, even if one of the other flows has data to transmit. For example, S3 had to wait its pass on female genitals S1 and S2 in the previous paragraph, even if S1 and S2 had nothing to send. For computer communication, the amount of time that a link is fantastic can be very largefor example, consider the amount of time you spend reading a web page (leaving the link idle) compared to the time you spend fetching the page. Second, both STDM and FDM are limite d to situations in which the maximum number of flows is fixed and known beforehand of time. It is not practical to resize the quantum or to add step-upal quanta in the case of STDM or to add new frequencies in the case of FDM. The form of multiplexing that we make most use of in this book is called statistical multiplexing. Although the name is not all that helpful for understanding the concept, statistical multiplexing is really sort of simple, with two key ideas. First, it is alike(p) STDM in that the physical link is dual-lane out over timefirst data from one flow is transmitted over the physical link, then data from another flow is transmitted, and so on. Unlike STDM, however, data is transmitted from each flow on demand rather than during a predetermined time slot. Thus, if only one flow has data to send, it gets to transmit that data without waiting for its quantum to come around and indeed without having to watch the quanta assigned to the other flows go by unused. It is this avoidance of idle time that digs packet switching its efficiency. As defined so far, however, statistical multiplexing has no mechanism to ensure that all the flows eventually get their turn to transmit over the physical link. That is, once a flow begins sending data, we privation some way to limit the transmission, so that the other flows can have a turn. To account for this take, statistical multiplexing defines an upper bound on the size of the block of data that each flow is permitted to transmit at a assumption time. This limited-size block of data is typically referred to as a packet, to distinguish it from the arbitrarily large message that an application program might want to transmit. Because a packet-switched network limits the maximum size of packets, a host may not be able to send a staring(a) message in one packet. The source may need to share the message into several packets, with the receiver reassembling the packets back into the original message. In other words, each flow sends a sequence of packets over the physical link, with a decision made on a packet-by-packet basis as to which flows packet to send next. Notice that if only one flow has data to send, then it can send a sequence of packets back-to-back. However, should more than one of the flows have data to send, then their packets are interleaved on the link. depicts a switch multiplexing packets from multiple sources onto a single overlap link. The decision as to which packet to send next on a shared link can be made in a number of different ways. For example, in a network consisting of switches interconnected by links such as the one in the decision would be made by the switch that transmits packets onto the shared link. (As we will see later, not all packet-switched networks actually involve switches, and they may use other mechanisms to determine whose packet goes onto the link next.) Each switch in a packet-switched network makes this decision independently, on a packet-by-packet basis. One of the issues that faces a network designer is how to make this decision in a fair manner. For example, a switch could be designed to service packets on a first-in-first-out (FIFO) basis. Another approach would be to transmit the packets from each of the different flows that are currently sending data through the switch in a round-robin manner. This might be done to ensure that certain flows receive a particular share of the links bandwidth, or that they never have their packets delayed in the switch for more than a certain distance of time. A network that attempts to allocate bandwidth to particular flows is sometimes said to support quality of service (QoS), a topic that we return to in Chapter 6. Also, watching in that since the switch has to multiplex three incoming packet streams onto one outgoing link, it is possible that the switch will receive packets faster than the shared link can accommodate. In this case, the switch is forced to buffer the se packets in its memory. Should a switch receive packets faster than it can send them for an panoptic period of time, then the switch will eventually run out of buffer space, and some packets will have to be dropped. When a switch is operating in this state, it is said to be congested.The bottom line is that statistical multiplexing defines a cost-effective way for multiple users (e.g., host-to-host flows of data) to share network resources (links and nodes) in a fine-grained manner. It defines the packet as the granularity with which the links of the network are allocated to different flows, with each switch able to schedule the use of the physical links it is connected to on a per-packet basis. Fairly allocating link capacity to different flows and dealing with congestion when it occurs are the key challenges of statistical multiplexing.1.2.3 Support for Common ServicesWhile the previous section describe the challenges convolute in providing costeffective connectivity among a group of hosts, it is overly simplistic to view a computer network as simply delivering packets among a show of computers. It is more accurate to think of a network as providing the means for a set of application processes that are distributed over those computers to communicate. In other words, the next requirement of a computer network is that the application programs political campaign on the hosts connected to the network must be able to communicate in a meaningful way. When two application programs need to communicate with each other, there are a lot of complicated things that need to happen beyond simply sending a message from one host to another. One option would be for application designers to build all that complicated functionality into each application program. However, since many applications need common run, it is much more logical to implement those common services once and then to let the application designer build the application using those services. The challeng e for a network designer is to identify the right set of common services. The goal is to hide the complexity of the network from the application without overly trammel the application designer. Intuitively, we view the network as providing logical bestows over which application-level processes can communicate with each other each route provides the set of services required by that application. In other words, just as we use a cloud to thievely represent connectivity among a set of computers, we now think of a channel as connecting one process to another. shows a pair of application-level processes communicating over a logical channel that is, in turn, implemented on top of a cloud that connects a set of hosts. We can think of the channel as being like a pipe connecting two applications, so that a sending application can put data in one end and call that data to be delivered by the network to the application at the other end of the pipe. Thechallengeistorecognize what function ality the channels should provide to application programs. For example, does the application require a guarantee that messages sent over the channel are delivered, or is it delicious if some messages fail to arrive? Is it necessary that messages arrive at the receiver process in the same order in which they are sent, or does the recipient not care about the order in which messages arrive? Does the network need to ensure that no third parties are able to eavesdrop on the channel, or is concealing not a irritation? In general, a network provides a variety of different types of channels, with each application selecting the type that best meets its needs. The rest of this section illustrates the thinking mingled in defining useful channels. Identifying Common Communication Patterns Designing repeal channels involves first understanding the communication needs of a object lesson appeal of applications, then extracting their common communication requirements, and finally incorp orating the functionality that meets these requirements in the network. One of the earliest applications supported on any networImplementation of New Computer NetworkImplementation of New Computer NetworkHere we are going to implement an new computer network for this company that 25 employees have been working in.Suppose you want to build a computer network, one that has potential to grow to global proportions to support applications as diverse as teleconferencing, video-on-demand, electronic commerce, distributed computing, and digital libraries. What available technologies would serve as the underlying building blocks, and what kind of software architecture would you design t coalesce these building blocks into an effective communication service?Suppose you want to build a computer network, one that has the potential togrow to global proportions and to support applications as diverse as teleconferencing, video-on-demand, electronic commerce, distributed computing, and digital li braries. What available technologies would serve as the underlying building blocks, and what kind of software architecture would you design to comprise these building blocks into an effective communication service? Answering this question is the overriding goal of to describe the available building materials and then to show how they can be used to construct a network from the ground up. Before we can understand how to design a computer network, we should first twin on exactly what a computer network is. At one time, the term network meant the set of serial lines used to attach dumb terminals to mainframe computers. To some, the term implies the voice telephone network. To others, the only interesting network is the cable network used to disseminate video signals. The main thing these networks have in common is that they are specialized to handle one particular kind of data (keystrokes, voice, or video) and they typically connect to special-purpose devices (terminals, hand rece ivers, and television sets). What distinguishes a computer network from these other types of networks? Probably the most important characteristic of a computer network is its generality. Computer networks are built primarily from general-purpose programmable hardware, and they are not optimized for a particular application like making phone calls or delivering television signals. Instead, they are able to carry many different types of data, and they support a wide, and ever-growing, range of applications. This chapter looks at some typical applications of computer networks and discusses the requirements that a network designer who wishes to support such applications must be aware of. Once we understand the requirements, how do we proceed? Fortunately, we will not be building the first network. Others, most notably the community of researchers responsible for the Internet, have gone before us. We will use the wealth of experience generated from the Internet to guide our design. This experience is embodied in a network architecture that identifies the available hardware and software components and shows how they can be arranged to form a fill out network system. To start us on the road toward understanding how to build a network, this chapter does four things. First, it explores the requirements that different applications and different communities of people (such as network users and network operators) place on the network. Second, it introduces the idea of a network architecture, which lays the macrocosm for the rest of the book. Third, it introduces some of the key elements in the implementation of computer networks. Finally, it identifies the key metrics that are used to evaluate the performance of computer networks. 1.1 APPLICATIONSMost people know the Internet through its applications the World Wide Web, email, streaming audio and video, chat rooms, and music (file) sharing. The Web, for example, presents an intuitively simple interface. Users view pag es bounteous of textual and graphical objects, click on objects that they want to learn more about, and a corresponding new page appears. Most people are also aware that just under the covers, each selectable object on a page is bound to an identifier for the next page to be viewed. This identifier, called a Uniform Resource Locator (URL), is used to provide a way of identifying all the possible pages that can be viewed from your web browser. For example,http//www.cs.princeton.edu/llp/index.htmlis the URL for a page providing information about one of this books authors the string http indicates that the HyperText Transfer communications protocol (HTTP) should be used to download the page, www.cs.princeton.edu is the name of the machine that serves the page, and/llp/index.htmluniquely identifies Larrys abode page at this site. What most Web users are not aware of, however, is that by clicking on just one such URL, as many as 17 messages may be exchanged over the Internet, and this assumes the page itself is small enough to fit in a single message. This number includes up to six messages to translate the server name (www.cs.princeton.edu) into its Internet address (128.112.136.35), three messages to set up a Transmission Control protocol (TCP) connection between your browser and this server, four messages for your browser to send the HTTP get request and the server to respond with the requested page (and for each side to acknowledge receipt of that message), and four messages to tear down the TCP connection. Of course, this does not include the millions of messages exchanged by Internet nodes throughout the day, just to let each other know that they exist and are ready to serve web pages, translate names to addresses, and forward messages toward their ultimate destination. Another widespread application of the Internet is the delivery of streaming audio and video. While an spotless video file could first be fetched from a remote machine and then played on t he local machine, similar to the process of downloading and displaying a web page, this would entail waiting for the last second of the video file to be delivered before starting to look at it. Streaming video implies that the sender and the receiver are, respectively, the source and the sink for the video stream. That is, the source generates a video stream (perhaps using a video capture card), sends it across the Internet in messages, and the sink displays the stream as it arrives. There are a variety of different classes of video applications. One class of video application is video-on-demand, which reads a pre-existing movie from disk and transmits it over the network. Another kind of application is videoconferencing, which is in some ways the more challenging (and, for networking people, interesting) case because it has very tight timing constraints. Just as when using the telephone, the interactions among the participants must be timely. When a person at one end gestures, the n that action must be displayed at the other end as quickly as possible. Too much delay makes the system unusable. Contrast this with video-on-demand where, if it takes several seconds from the time the user starts the video until the first image is displayed, the service is still deemed satisfactory. Also, interactive video usually implies that video is menstruum in both directions, while a video-on-demand application is most likely sending video in only one direction. One pioneering example of a videoconferencing tool, developed in the early and mid-1990s, is vic. shows the control panel for a vic session. vic is actually one of a suite of conferencing tools designed at Lawrence Berkeley research lab and UC Berkeley. The others include a whiteboard application (wb) that allows users to send sketches and slides to each other, a visual audio tool called vat, and a session directory (sdr) that is used to create and report videoconferences. All these tools run on Unixhence their l owercase namesand are freely available on the Internet. Many similar tools are available for other operating systems. It is interesting to note that while video over the Internet is still considered to be in its relative infancy at the time of this writing (2006), that the tools to support video over IP have existed for well over a decade. Although they are just two examples, downloading pages from the Web and participating in a videoconference demonstrate the diversity of applications that can be built on top of the Internet, and hint at the complexity of the Internets design. Starting from the beginning, and addressing one problem at time, the rest of this book explains how to build a network that supports such a wide range of applications. Chapter 9 concludes the book by revisiting these two specific applications, as well as several others that have become popular on todays Internet. 1.2 REQUIREMENTSWe have just accomplished an ambitious goal for ourselves to understand how to build a computer network from the ground up. Our approach to accomplishing this goal will be to start from first principles, and then ask the kinds of questions we would naturally ask if building an actual network. At each step, we will use todays protocols to illustrate various design choices available to us, but we will not accept these existing artifacts as gospel. Instead, we will be asking (and answering) the question of why networks are designed the way they are. While it is tempting to settle for just understanding the way its done today, it is important to recognize the underlying concepts because networks are constantly changing as the technology evolves and new applications are invented. It is our experience that once you understand the fundamental ideas, any new protocol that you are confronted with will be relatively easy to digest. The first step is to identify the set of constraints and requirements that influence network design. Before getting started, however, it i s important to understand that the expectations you have of a network depend on your perspectiveAn application programmer would list the services that his application needs, for example, a guarantee that each message the application sends will be delivered without error within a certain amount of time.A network designer would list the properties of a cost-effective design, for example, that network resources are efficiently utilized and fairly allocated to different users.A network supplier would list the characteristics of a system that is easy to administer and manage, for example, in which faults can be easily isolated and whereitiseasytoaccountfor usage.This section attempts to distill these different perspectives into a high-level introduction to the major considerations that drive network design, and in doing so, identifies the challenges address throughout the rest of this book.1.2.1 Connectivity Starting with the obvious, a network must provide connectivity among a set of c omputers. Sometimes it is enough to build a limited network that connects only a few select machines. In fact, for reasons of privacy and security, many private (corporate) networks have the explicit goal of limiting the set of machines that are connected. In contrast, other networks (of which the Internet is the prime example) are designed to grow in a way that allows them the potential to connect all the computers in the world. A system that is designed to support growth to an arbitrarily large size is said to scale. Using the Internet as a model, this book addresses the challenge of scalability. Links, Nodes, and Clouds Network connectivity occurs at many different levels. At the lowest level, a network can consist of two or more computers directly connected by some physical medium, such as a coaxial cable or an optical fiber. We call such a physical medium a link,and we often refer to the computers it connects as nodes. (Sometimes a node is a more specialized piece of hardware rather than a computer, but we overlook that distinction for the purposes of this discussion.) As illustrated in, physical links are sometimes limited to a pair of nodes (such a link is said to be point-to-point), while in other cases, more than two nodes may share a single physical link (such a link is said to be multiple-access). Whether a given link supports point-to-point or multiple-access connectivity depends on how the node is attached to the link. It is also the case that multiple-access links are often limited in size, in terms of both the geographical distance they can cover and the number of nodes they can connect. If computer networks were limited to situations in which all nodes are directly connected to each other over a common physical medium, then networks would either be very limited in the number of computers they could connect, or the number of wires coming out of the back of each node would quickly become both unmanageable and very expensive. Fortunately, conne ctivity between two nodes does not necessarily imply a direct physical connection between themindirect connectivity may be achieved among a set of cooperating nodes. Consider the following two examples of how a collection of computers can be indirectly connected. shows a set of nodes, each of which is attached to one or more point- to-point links. Those nodes that are attached to at least two links run software that forwards data received on one link out on another. If organized in a systematic way, these forwarding nodes form a switched network. There are numerous types of switched networks, of which the two most common are circuit-switched and packet-switched. The former is most notably employed by the telephone system, while the latter is used for the overwhelming majority of computer networks and will be the focus of this book. The important feature of packet-switched networks is that the nodes in such a network send discrete blocks of data to each other. Think of these blocks of data as corresponding to some piece of application data such as a file, a piece of email, or an image. We call each block of data either a packet or a message, and for now we use these terms interchangeably we discuss the reason they are not always the same in Section 1.2.2. Packet-switched networks typically use a strategy called store-and-forward. As the name suggests, each node in a store-and-forward network first receives a round out packet over some link, stores the packet in its internal memory, and then forwards the complete packet to the next node. In contrast, a circuit-switched network first establishes a dedicated circuit across a sequence of links and then allows the source node to send a stream of bits across this circuit to a destination node. The major reason for using packet switching rather than circuit switching in a computer network is efficiency, discussed in the next subsection. The cloud in distinguishes between the nodes on the within that implement the network (they are commonly called switches, and their primary function is to store and forward packets) and the nodes on the outside of the cloud that use the network (they are commonly called hosts, and they support users and run application programs). Also note that the cloud in is one of the most important icons of computer networking. In general, we use a cloud to denote any type of network, whether it is a single point-to-point link, a multiple-access link, or a switched network. Thus, whenever you see a cloud used in a figure, you can think of it as a placeholder for any of the networking technologies covered in this book. A second way in which a set of computers can be indirectly connected is shown in . In this situation, a set of independent networks (clouds) are interconnected to form an internetwork, or internet for short. We adopt the Internets convention of referring to a generic internetwork of networks as a lowercase i internet, and the currently operational TCP/IP Internet as the capital I Internet. A node that is connected to two or more networks is commonly called a router or gateway, and it plays much the same role as a switchit forwards messages from one network to another. Note that an internet can itself be viewed as another kind of network, which means that an internet can be built from an interconnection of internets. Thus, we can recursively build arbitrarily large networks by interconnecting clouds to form large clouds. Just because a set of hosts are directly or indirectly connected to each other does not mean that we have succeeded in providing host-to-host connectivity. The final requirement is that each node must be able to state which of the other nodes on the network it wants to communicate with. This is done by assigning an address to each node. An address is a byte string that identifies a node that is, the network can use a nodes address to distinguish it from the other nodes connected to the network. When a source node wants the network to deliver a message to a certain destination node, it specifies the address of the destination node. If the sending and receiving nodes are not directly connected, then the switches and routers of the network use this address to decide how to forward the message toward the destination. The process of determining consistently how to forward messages toward the destination node based on its address is called routing. This apprize introduction to addressing and routing has presumed that the source node wants to send a message to a single destination node (unicast). While this is the most common scenario, it is also possible that the source node might want to broadcast a message to all the nodes on the network. Or a source node might want to send a message to some subset of the other nodes, but not all of them, a situation called multicast. Thus, in addition to node-specific addresses, another requirement of a network is that it supports multicast and broadcast addr esses.The main idea to take away from this discussion is that we can define a network recursively as consisting of two or more nodes connected by a physical link, or as two or more networks connected by a node. In other words, a network can be constructed from a nesting of networks, where at the bottom level, the network is implemented by some physical medium. One of the key challenges in providing network connectivity is to define an address for each node that is reachable on the network (including support for broadcast and multicast connectivity), and to be able to use this address to route messages toward the provide destination node(s).1.2.2 Cost-Effective Resource SharingAs stated above, this book focuses on packet-switched networks. This section explains the key requirement of computer networksefficiencythat leads us to packet switching as the strategy of choice. Given a collection of nodes indirectly connected by a nesting of networks, it is possible for any pair of hosts t o send messages to each other across a sequence of links and nodes. Of course, we want to do more than support just one pair of communicating hostswe want to provide all pairs of hosts with the ability to exchange messages. The question, then, is how do all the hosts that want to communicate share the network, especially if they want to use it at the same time? And, as if that problem isnt hard enough, how do several hosts share the same link when they all want to use it at the same time? To understand how hosts share a network, we need to introduce a fundamental concept, multiplexing, which means that a system resource is shared among multiple users. At an intuitive level, multiplexing can be explained by analogy to a timesharing computer system, where a single physical mainframe computer is shared (multiplexed) among multiple jobs, each of which believes it has its own private processor. Similarly, data being sent by multiple users can be multiplexed over the physical links that make up a network. To see how this might work, consider the simple network illustrated in , where the three hosts on the left side of the network (senders S1S3) are sending data to the three hosts on the right (receivers R1R3) by sharing a switched network that contains only one physical link. (For simplicity, assume that host S1 is sending data to host R1, and so on.) In this situation, three flows of datacorresponding to the three pairs of hostsare multiplexed onto a single physical link by switch 1 and then demultiplexed back into separate flows by switch 2. Note that we are being advisedly vague about exactly what a flow of data corresponds to. For the purposes of this discussion, assume that each host on the left has a large fork over of data that it wants to send to its counterpart on the right. There are several different methods for multiplexing multiple flows onto one physical link. One common method is synchronous time-division multiplexing (STDM). The idea of STDM is to divide time into equal-sized quanta and, in a round-robin fashion, give each flow a chance to send its data over the physical link. In other words, during time quantum 1, data from S1 to R1 is transmitted during time quantum 2, data from S2 to R2 is transmitted in quantum 3, S3 sends data to R3. At this point, the first flow (S1 to R1) gets to go again, and the process repeats. Another method is frequency-division multiplexing (FDM). The idea of FDM is to transmit each flow over the physical link at a different frequency, much the same way that the signals for different TV stations are transmitted at a different frequency on a physical cable TV link. Although simple to understand, both STDM and FDM are limited in two ways. First, if one of the flows (host pairs) does not have any data to send, its share of the physical linkthat is, its time quantum or its frequency stay idle, even if one of the other flows has data to transmit. For example, S3 had to wait its turn stooge S1 an d S2 in the previous paragraph, even if S1 and S2 had nothing to send. For computer communication, the amount of time that a link is idle can be very largefor example, consider the amount of time you spend reading a web page (leaving the link idle) compared to the time you spend fetching the page. Second, both STDM and FDM are limited to situations in which the maximum number of flows is fixed and known ahead of time. It is not practical to resize the quantum or to add additional quanta in the case of STDM or to add new frequencies in the case of FDM. The form of multiplexing that we make most use of in this book is called statistical multiplexing. Although the name is not all that helpful for understanding the concept, statistical multiplexing is really quite an simple, with two key ideas. First, it is like STDM in that the physical link is shared over timefirst data from one flow is transmitted over the physical link, then data from another flow is transmitted, and so on. Unlike STDM, however, data is transmitted from each flow on demand rather than during a predetermined time slot. Thus, if only one flow has data to send, it gets to transmit that data without waiting for its quantum to come around and thus without having to watch the quanta assigned to the other flows go by unused. It is this avoidance of idle time that gives packet switching its efficiency. As defined so far, however, statistical multiplexing has no mechanism to ensure that all the flows eventually get their turn to transmit over the physical link. That is, once a flow begins sending data, we need some way to limit the transmission, so that the other flows can have a turn. To account for this need, statistical multiplexing defines an upper bound on the size of the block of data that each flow is permitted to transmit at a given time. This limited-size block of data is typically referred to as a packet, to distinguish it from the arbitrarily large message that an application program migh t want to transmit. Because a packet-switched network limits the maximum size of packets, a host may not be able to send a complete message in one packet. The source may need to disperse the message into several packets, with the receiver reassembling the packets back into the original message. In other words, each flow sends a sequence of packets over the physical link, with a decision made on a packet-by-packet basis as to which flows packet to send next. Notice that if only one flow has data to send, then it can send a sequence of packets back-to-back. However, should more than one of the flows have data to send, then their packets are interleaved on the link. depicts a switch multiplexing packets from multiple sources onto a single shared link. The decision as to which packet to send next on a shared link can be made in a number of different ways. For example, in a network consisting of switches interconnected by links such as the one in the decision would be made by the swit ch that transmits packets onto the shared link. (As we will see later, not all packet-switched networks actually involve switches, and they may use other mechanisms to determine whose packet goes onto the link next.) Each switch in a packet-switched network makes this decision independently, on a packet-by-packet basis. One of the issues that faces a network designer is how to make this decision in a fair manner. For example, a switch could be designed to service packets on a first-in-first-out (FIFO) basis. Another approach would be to transmit the packets from each of the different flows that are currently sending data through the switch in a round-robin manner. This might be done to ensure that certain flows receive a particular share of the links bandwidth, or that they never have their packets delayed in the switch for more than a certain length of time. A network that attempts to allocate bandwidth to particular flows is sometimes said to support quality of service (QoS), a t opic that we return to in Chapter 6. Also, bill of fare in that since the switch has to multiplex three incoming packet streams onto one outgoing link, it is possible that the switch will receive packets faster than the shared link can accommodate. In this case, the switch is forced to buffer these packets in its memory. Should a switch receive packets faster than it can send them for an increase period of time, then the switch will eventually run out of buffer space, and some packets will have to be dropped. When a switch is operating in this state, it is said to be congested.The bottom line is that statistical multiplexing defines a cost-effective way for multiple users (e.g., host-to-host flows of data) to share network resources (links and nodes) in a fine-grained manner. It defines the packet as the granularity with which the links of the network are allocated to different flows, with each switch able to schedule the use of the physical links it is connected to on a per-pack et basis. Fairly allocating link capacity to different flows and dealing with congestion when it occurs are the key challenges of statistical multiplexing.1.2.3 Support for Common ServicesWhile the previous section depict the challenges involved in providing costeffective connectivity among a group of hosts, it is overly simplistic to view a computer network as simply delivering packets among a collection of computers. It is more accurate to think of a network as providing the means for a set of application processes that are distributed over those computers to communicate. In other words, the next requirement of a computer network is that the application programs raceway on the hosts connected to the network must be able to communicate in a meaningful way. When two application programs need to communicate with each other, there are a lot of complicated things that need to happen beyond simply sending a message from one host to another. One option would be for application designer s to build all that complicated functionality into each application program. However, since many applications need common services, it is much more logical to implement those common services once and then to let the application designer build the application using those services. The challenge for a network designer is to identify the right set of common services. The goal is to hide the complexity of the network from the application without overly restrain the application designer. Intuitively, we view the network as providing logical channels over which application-level processes can communicate with each other each channel provides the set of services required by that application. In other words, just as we use a cloud to abstractly represent connectivity among a set of computers, we now think of a channel as connecting one process to another. shows a pair of application-level processes communicating over a logical channel that is, in turn, implemented on top of a cloud that c onnects a set of hosts. We can think of the channel as being like a pipe connecting two applications, so that a sending application can put data in one end and expect that data to be delivered by the network to the application at the other end of the pipe. Thechallengeistorecognize what functionality the channels should provide to application programs. For example, does the application require a guarantee that messages sent over the channel are delivered, or is it delightful if some messages fail to arrive? Is it necessary that messages arrive at the recipient process in the same order in which they are sent, or does the recipient not care about the order in which messages arrive? Does the network need to ensure that no third parties are able to eavesdrop on the channel, or is privacy not a trouble? In general, a network provides a variety of different types of channels, with each application selecting the type that best meets its needs. The rest of this section illustrates the t hinking involved in defining useful channels. Identifying Common Communication Patterns Designing abstract channels involves first understanding the communication needs of a representative collection of applications, then extracting their common communication requirements, and finally incorporating the functionality that meets these requirements in the network. One of the earliest applications supported on any networ

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.