 The basic procedure we need to do with our fixed routing or adaptive routing is somehow learn about the topology of the network. So that means who is connected to who and what are the link costs. So we need to learn that information because you imagine a node here in Bangkok in a network across the country doesn't immediately know about the other links across the country. So we need to somehow learn about the topology of the network. Once we know that, we can calculate the least cost routes from one node to other nodes and let's say from one node to all other possible destinations because potentially we may need to send data to anywhere in the network. So calculate the least cost routes and again we have algorithms to do that. So an algorithm that takes this topology information can calculate the least cost routes. Then use those least cost routes to create our routing tables. The routing tables store the destination and the next node in the least cost route. So for example, our least cost route from one to six is 1456. The routing table for node one would store in one row destination six, next node four. So that when node one has a packet to send to node six, it sends it to node four by looking up the routing table. It looks in the routing table for the destination it wants to reach and finds the next node. And what we saw on Monday with an example was that if we have a least cost route 1456, then it means that the segments within that route are also least cost routes. If 1456 is a least cost route, then 456 is also a least cost route from four to six. And we use that so that allows us just to store the next node in the routing table, simplifying the routing table. Next routing we, let's say at the start of the network, given the network topology information, determine the routes, create the routing tables and then use those routing tables to send data. They don't change, or at least until there's a major change in the network. Adaptive routing, we're running a network for a long time. The conditions change over time, either on a daily basis or even more frequently. Every second, the conditions change because the conditions include how much data is being sent across the links. Because the amount of data being sent impacts upon the delay and the performance. So if our routes want to take that into account, we need to get some regular or some frequent updates about the conditions of the network. So adaptive routing tries to learn the current conditions of the network, that is the topology and the link costs, and recalculates the routes as needed. So that we always or aim to always get the least cost routes in our routing table. But still we use routing tables and we send in the same way as fixed routing. Let's look at a completely different approach for getting data from A to B. So the purpose, remember, is to get data from source to destination. When we have multiple possible paths, then routing tries to find the best path from source to destination. And then we send that data across that one path. Flooding has the same goal of getting data from source to destination, but it takes a completely different approach in that we just send the data across all paths. We don't choose the best path. If we send data across all paths in the network, then the destination should receive a copy and then we've achieved our aim. So flooding, same purpose, get data from A to B, but completely different approach than what we've seen with calculating these cost routes and routing tables. So instead of choosing a path, choosing a route, we just send the data to everyone. It's like we need to drive here into Bangkok. Normally we choose a path to take, a set of roads to take, maybe we look up on Google Maps and it tells us which roads to take, where to turn and so on. Well flooding, imagine we need to get a package, a parcel into somewhere in Bangkok. And flooding the idea is that we make many copies of this package, this parcel, and we put a copy in many different cars. And we tell people to drive their car and just go somewhere across the roads and eventually some of them will get to the destination. So we make copies of the data and send multiple copies of the data with the hope, and eventually if we use the right procedure, that one copy will get to the destination. So there are different rules that we apply, but we'll demonstrate them and we started with this example. Send a copy of the packet to all your neighbours. And then as you receive a packet, follow the same rule, send a copy of that packet you received to all of your neighbours. And everyone keeps doing that and eventually it's received at the destination, with some exceptions or some conditions on those rules. And they are listed here, one through to five. The first one, when you receive a packet, we say send a copy to all of your neighbours, but you don't have to send it back to the node that just sent it to you. The idea is to get a copy of this packet to everyone. So when you receive a copy, send it to all your neighbours, but you know it just came from the one who sent it to you, so there's no need to send a copy back to them. So that's the first exception or extension here. The other ones, we'll come, we'll demonstrate the other four a little bit later. In fact, this example has extension, the first extension and also extension number four, a hop limit, which is what this number means in the packet. So what we said, if we assume, we ignore this number, one sends to all of its neighbours, two, three and four, two, three and four just received a copy of the packet, send to all of their neighbours, except who sent it to them. As we see, four is about to receive two copies of the packet from node two and node three. So if we think of the next step, four is about to receive from two and three. So it's going to receive a packet from two and the rule says receive a packet, send to all your neighbours. But then it's going to receive another packet from node three. So again, the rule says receive a copy of the packet, send to all your neighbours. So that's why in the next step, four received from two and three. So from the one it received from two, it sends to one, three and five. And from the copy of the packet it received from three, it sends to two, one and five. That's why we see two packets going to one and two to five. And actually in the previous step, one packet gets delivered to six here, and in fact in the next step, some more packets get delivered to six. So that was our goal, get the data from one to six, we've achieved our goal. So how many packets sent? A lot. Count them. Well, yeah, all the ones. How many here? Three. So recall that the goal is to get one copy of the packet from node one to node six. Let's see how many transmissions are needed inside the network to do that. In this case, in the first step, there are three. So three so far. In the next step, you can count them. We've got two plus four plus three, so another nine, so after 12, 12 so far. In the next step, okay, we need to count them. Another four, 16, plus six, 22, plus four here is 26, plus another eight is 34. If you count all of those packets, there are 34 packets there. And let's stop there. In fact, we'll come back and explain why I've stopped after this step. We could keep going and keep transmitting. But 34 packets sent through the network to get one piece of data from node one to node six, using flooding in this case. What if we were using fixed routing? And we had already determined the least cost routes. So we determined least cost routes, created the routing tables. How many packets would need to be transmitted? And okay, yes, two in this case. If we ignore the cost of the links that we had in the previous example, if we just take using the hops as the metric for least cost, then in this case, to get data from one to six, the best case is to send from one to three, that's one transmission, and then three to six, two hops, two transmissions. Using least cost routing, two packet transmissions to get data from one to six. Using flooding, 34 packet transmissions to get the same piece of data from one to six. Flutting is much more inefficient than using fixed or adaptive routing, because we need to send many copies of that one piece of data through the network. So we're using many of the network resources to deliver, let's say, the same 1,000 bytes from one to six. So that's the problem with flooding. It's very inefficient compared to finding the least cost routes. The advantage is it's very simple. There's no concept of calculating the routes. We don't need to know about the network topology. Node 1 doesn't need to know about the links over here. All it needs to know is who are its neighbors. Given that, just send to your neighbors, and then those nodes know their neighbors, so they send to their neighbors, and eventually it gets to node six. So very, very simple, but very, very inefficient. The extensions here try to make it a little bit more efficient, try to reduce the number of packets we send. In my example, I said, okay, node one transmits to its neighbors, two, three, and four send to their neighbors, and then the next step they send to neighbors, note, after this step, focus on node four, it's going to receive a packet from five, from two, and from three. It's going to receive three packets. So with our normal rules, it will receive a packet and send to its neighbors again. So there'll be another step, I just haven't drawn it here. Four would send three copies to its neighbors, as would other nodes. So we'd keep sending, and we could keep going forever, keep transmitting. We want to limit that, because in this case, the data has already been delivered to six, so there's no need for the network to keep sending those packets. We've achieved our aim. The normal way that we limit that is using a hop limit, extension four here. Hop limit, a hop counter. In every packet we send, inside the header, we include an extra value which counts the number of hops we've traversed. We're usually in the reverse, it counts the number of hops remaining that we're allowed to traverse. So we usually set it, and we'll go to our example. In this case, we start with a hop limit of three, in this example, I've chosen three. What that means is when node one sends the first copy of the packets inside the header of those packets, it includes that hop limit of three. That means to its neighbors. When a node receives the packet, it looks at the hop limit. If the hop limit is zero, it will not send any more. If it is not zero, it will reduce it and then send. So in this case, actually I think I've got that wrong, receive, look at the hop limit, decrease, if it's zero, don't send, if it's non-zero, then send. So two receives the packet, the hop limit was three, it reduces it to two, and sends, as do three and four. Next step, nodes receive copies of the packet, they reduce the hop limit down to one, it's not zero yet, so send. Next step, for example, node four is going to receive a packet with hop limit one from node five, it will reduce it down to zero, okay, it will not send now. So when you receive a packet, look at the hop limit inside the header, decrement it by one, if it's zero, do not send any more copies. The idea is to stop the transmissions in the network. And you see with a hop limit initially of three, no packets will traverse more than three hops. We see, look at this packet, it goes one hop to node four, and let's say it's this one, or it's these three, but this one it goes a second hop to node five, and then node five transmits a third hop to node six, it will not go four hops, because our hop limit is three. Okay, so the hop limit is introduced to limit how many hops our packets will traverse. It means we won't keep sending forever. That's why I stopped in this example here, and we have 34 transmissions. Another extension, when you receive a packet for the first time, you send to all your neighbors except who sent it to you, but if you receive that same packet again, don't send it again, because you know your neighbors have already received it. So to do that, nodes remember the packets that they have already sent. To do that, we need some sequence number. So now the header needs to contain a sequence number, and it's not in this example, but we'll see, okay, two, three and four receive a copy. Let's say the sequence number inside this packet, it's not shown, is one. So the header contains a hop limit of three plus a sequence number of one. All of them are sequence number one. All copies of that packet will have the same sequence number, sequence number one. Node four receives a copy from one. It decrements the hop limit. Sequence number is still one for the packets it sends, and node four is going to receive copies from two and three, and the sequence numbers in those packets it receives will also be one. But node four is now recorded. I just sent packet with sequence number one to my neighbors, including two, three and five, and I've received already from node one. So in the next step, when node four receives a packet from three and two, it will check the sequence number, and it will realize, I just received a packet with sequence number one. I've already sent packet with sequence number one to my neighbors, so I would not send again. So what would happen in the next step, focusing on node four, it sends three. It would receive two. It would not have these six transmissions here, because it's already sent. It's already received from node one. It's already sent packet with sequence number one to node two, three and five. It's not going to send again to those nodes. There's no point in sending the same copy of the packet to the same nodes again. And that's a way to significantly reduce the number of transmissions. You could count them. How many? If we use a sequence number, how many packets transmitted? We saw without a sequence number there are 34 transmitted. With a sequence number, all right, we still need to transmit these first three. We still have three packets. And similar, the first time a node receives a packet, it's going to send to its neighbors. So two, three and four are going to send these packets. So we have three plus another nine. We have 12 packets transmitted so far. Then the next step, who is going to send a packet? Well, three is four is going to receive the same sequence number packet. It's not going to send again. Four is finished. Once we've already transmitted the packets to our neighbors, we won't send that same packet again. Four will not send anything. Two will not send anything. Three will not send anything. One will not. It's already transmitted. Five is going to receive two copies of the packet with sequence number one. It will transmit a copy of that packet to its neighbors that it hasn't received from. It's received from three. It will not send back to three. It's received from four. It will not send back to four. It will send to node six. So we have 12 so far. In the next step, five will send one to six, meaning 13 transmissions. Six is not going to send to its neighbors because six is the destination. So we're done. So by introducing a sequence number, we can cut the transmissions down from 34 to just 13. A significant reduction in the overhead of sending packets. With least-cost routing, the number of packets needed to be transmitted, the least-cost path considering hops is 136, so there are two transmissions. With flooding, with a hop limit of three and no sequence numbers, we counted 34 transmissions. If we have flooding with a hop limit of three, but with sequence numbers, we get just 13 transmissions. We want to minimize the number of packets sent in the network to deliver data from one to six. The best case is two. It's the best we can do. With no sequence numbers, we have 34 transmissions. That's very bad. With sequence numbers, we cut it down to 13, which is better than 34, but nowhere near as good as just two. So in fact, actually in that step, we combine two and three. We also, using sequence numbers, if I've received packet with sequence number one, or if I receive two copies with packet sequence, two copies with sequence number one, I only need to send to my neighbors once. No need to care about the duplicate packets, the same packets with the same sequence number. I can discard the duplicates. So those are the main four mechanisms used in flooding, what we call full flooding. We flood to the full network, and we commonly use all of them, those four. What's the disadvantage of including a sequence number? Well, it's a little bit more complexity at the nodes, and we have a little bit more overhead in the packets, but we have a significant reduction in the overhead of the number of packets sent, so it's usually included. Hop limit, commonly included, so that we don't send packets forever. What if we have, and I think there's a slide, all right, how many packets transmitted in the previous example was 34? How much data was delivered to the destination? Well, multiple copies of that one piece of data. What if the hop limit is two? What happens? What if the hop limit is two? What's the advantage and disadvantage? Look at the picture of the network, try and move to the page in your handouts which contain the picture, try and wake up. If you don't want to wake up, then don't come to the lecture, sleep in, and try and find out what happens if there's a hop limit of two. What's less stress mean? Let's just see if you're talking about closing less congestion. Let's packets, less overhead, okay. Let's see, with a hop limit of two, what would happen? The hop limit, instead of three set in the headers, the value would start with two. So the source node sets the hop limit. In this case, we're going to set it to two. Remember what happens? We send it. When a node receives, they decrement and check if it's zero. They will send again if it's not zero. If it's zero, they will not send. So it limits the number of hops, the packet traverses. So if it starts at two, the packet will go to two, three, and four. They will all decrement, it will be down to one. They will send to their neighbors, so you can imagine this picture. Instead of two in the packets, there'll be one in each of the packets. Everyone will receive, or the same ones will receive, including five. Six will receive a copy of the packet. That's good. Six is the destination. Five will receive a copy of the packet, decrement the hop limit down to zero, and will not send to its neighbors. So there'll be one, well, several less transmissions from node five in this case. We won't have all 34, we'll have a few less from node five. If we had used a sequence number, I think we'd have one less. We'd still get data to node six. What if we use a hop limit of one? Replace three with one. Node one sends to two, three, and four, two, three, and four, decrement, it's zero. Once it's zero, we do not send. So two, three, and four would not send to their neighbors. So in fact, these would be the only three transmissions. Two, three, and four would not send, and of course the result there is six doesn't receive. So that's a problem. We've got data to get from one to six with a hop limit of one. Six is not going to receive it, so ineffective communications. So we need a hop limit large enough such that it will reach the destination. So in this example, a hop limit of two is large enough such that six will receive it, because the least cost path with respect to hops is two. In another network, we would need a different hop limit to reach the destination. And the problem is that we don't know in advance how many hops to reach the destination. So usually we need to set the hop limit high enough that we'll cover most cases or all cases of the hop distance in the network. But we want to set it low enough such that we don't have too many extra transmissions. So the choice of the hop limit is important. It reduces the packet sent in the network, but if we have it too low, it means we won't get the data to the destination. Next extension, selective flooding. In everything we've talked about so far with flooding, we just send to all of our neighbors except the one who just sent it. Selective flooding, we select some of our neighbors to send to. So for example, in normal flooding, node one sends to all three neighbors. Selective flooding, it uses some criteria to select some of those neighbors to send to. And there are different ways to select. Random. Every time I have a packet to send, randomly select one of my neighbors to send it to. Or randomly select two of my neighbors to send it to. For example, node one has three neighbors, let's select two and four. Send a copy to them. Don't send to three. It will reduce the number of packets transmitted. That's the advantage of selective flooding. The problem is that the packet now will not go across this path to node three and will not traverse the least hot path to the destination. And even if we have a hot limit now, we may not get the data to the destination. Because if we select to send to two and four only, if we had a hot limit of two, if we don't send to three, then the packet will not get to the destination six. So selective flooding is good in that it reduces the transmissions, but it potentially is bad in that we don't get the data to the destination in some cases. Different ways to select. Random is to select a set of your neighbors randomly, do it differently each time. Round robin, it means what? Round robin means taking turns. For example, let's say node one has many packets to send, not just one packet to send to six, but a thousand packets. For the first packet, it sends a copy to two and four. For the second packet, it sends to three and two. And for the third packet, to four and three. And the fourth packet, two and four again. Just taking turns selecting some of those neighbors to send to and go around and then when it comes back to the next one's turn, send to them. Sorry, another one, probability based. Assign some probability to the links or to the neighbors. For example, I want to send 75% of my packets to node four, 20% of packets to node two and 5% to node three. So now when I have a thousand packets, again you can choose randomly but give it some weighting such that most of the packets go to node four. Some go to node two and a few go to node three. Why would we or what could we base the probabilities on based upon some knowledge about the links? For example, if we know that this is a fast link or a low cost link, send most of the packets in that direction. So we can have variations of selective flooding. The main point, select a subset of your neighbors to send to. Don't send to all neighbors. I'm not going to draw any examples for selective flooding. You can try them if you wish. Sorry, can we summarize on flooding? Advantages and disadvantages of flooding. With full flooding, not selective flooding, with full flooding, all possible routes are tried. What that means is, when we send copies of packets, at least one copy will traverse the least cost route. The minimum hop route. And we saw that in our example. We had a copy of the packet that went from one to three and three to six. So with full flooding, a good thing is that because we send on all paths, it means we must use the least hop path. That can be useful in some purposes when we want to find the least hop path. We can record, we can flood through the network. We know that one copy of the packet will arrive to six on the least hop path. And then node six, if we record that path, knows the least hop path in that case. And can use that to set up connections, set up virtual circuits, or to suit some application. So it's sometimes useful to learn the least hop path. Flooding can do that for us. Another advantage of flooding, all nodes are visited. That means when I send a packet, all nodes in the network receive a copy of that one packet. So that's very useful if I want to distribute information to everyone. So far we've talked about, we're flipping through. We want to send data from node one to node six. So we use flooding and we got data from node one to node six. But sometimes we'd like to send data from node one to all nodes, to all five other nodes. Flooding does that very easily because we send copies to all our neighbors. Okay, two, three, and four have received a copy. Now they send to their neighbors, all right, five, six have received a copy. Everyone's received a copy very quickly. That's useful when we want to distribute information, for example, about the network. If we want to tell every other node what are our link costs, then record your link costs, put them into a packet, and flood that packet through the network. And quite quickly every other node will know your link costs. Why do we do that? Well, we said when we do normal routing, fixed, adaptive routing, we need to somehow learn the link costs to calculate the least cost routes. And in practice, we often use flooding to learn that. It's very simple, it's a very simple protocol to implement. The problem with flooding, it's very, very inefficient. We need to send many copies of packets, just to get one piece of data from source to destination. If you increase the network from six nodes to 100 nodes, many links, then flooding creates a large overhead. That is, we use the network to send a small, we use a network a lot to send a small amount of data. If we use a hop limit which is too small or some cases use selective flooding, we may get a case where the data doesn't reach the destination. That's ineffective communications. Any questions on flooding? This handout that you have, which we had the least cost routes on the left shows how I calculated this value of 34 for flooding. If we use the hop limit of three and no sequence number, I go through the steps. Node one sends to two, three and four, that's three packets. Two sends to three and four, that's another two packets. And I went through the steps and the total of 34 packets was sent. If we had no sequence number but a hop limit of two, we'd send just 12 packets. With a hop limit of one, we'd send just three packets, even better. More efficient. But the destination doesn't receive a copy. With a hop limit of three, node six receives a copy. And here, with a hop limit of two, six receives a copy, good. Hop limit of one, few packets send, good. But node six doesn't receive the data, very bad. And then what if we have a hop limit of three but also include sequence numbers? And sequence numbers allow us to not send the same packet twice. So once I receive a packet, I send it to my neighbors. If I receive that same packet again, I will not send to my neighbors again. We still get the data to node six, but we only send 13 packets, which is much better. Adaptive routing we've mentioned today and on Monday. We're same as fixed routing, except we regularly get updates about the network information and recalculate the least cost routes. So learn about the network topology, calculate the least cost routes, create the routing tables. And then when we send data, use the routing tables to determine who we send to. Same as fixed routing. But we do that in an iterative process, we keep doing it. We keep learning about the network topology, keep updating the least cost routes, and keep updating the routing tables. So for that to work, it requires some information about the current network conditions or network status to be learned. And there are different ways to learn that. You can learn information which is local to your node. You can ask your adjacent nodes to send you information about their links, or get information from all nodes. All nodes send information about their links to all other nodes on a regular basis. And that's common in networks. And how do you do that? Flooding is one way to do that. It's improved in performance compared to fixed routing in that we more frequently use the least cost routes. It's more complex. The algorithms we need often more complex, take more time to process. And there's a trade-off between the quality of the information that we have and the overhead. Basically, the more information we collect, the more frequently we collect it, the more accurate a picture we have of the network topology, and the more chance we can choose the best routes. That's a good thing. More information is good for choosing the best routes. But the more information we collect, and the more frequently we collect it, it's bad for overhead, because we need to send data through the network to do that. So we don't want to collect too much such that we create a high overhead, but we want to collect enough such that the information is up to date. I think that captures the main things that we want to know about the advantages and disadvantages. It's like, again, coming back to our original example, we want to drive into Bangkok. Okay, so how do you choose a path? Anyone? How do I choose a path to drive into Bangkok? What do you do? Again, GPS, okay, so you use some mapping software, and that uses GPS coordinates and finds some path for you. So you drive along those roads to get into Bangkok, and you do that every day. You keep using that same path. You don't need to check again, because you know that path. You keep following that same road. You don't check and use GPS on your map every day. You just follow the same road, and you keep doing that for a year. But it turns out that after a year, the roads have changed. There's been some roadworks, new roads are available. If you keep using that same old road, that original road, you may end up using the suboptimal path. There may be a better path to take, because now there's new roads, a new highway. So to make sure that you get the best path from source to destination, you want to frequently update that information that tells you the best path. Frequently collect information about the new roads, where the traffic jams are, do it on a daily basis. The problem is to frequently collect that information, it takes some effort. And in our network, it consumes some overhead. So collect a lot of information to keep the quality high, but don't collect too much such that overhead is too high. And that's the main concepts that we want to introduce for routing. We talk about least cost routes. We have different metrics. In the earlier part, we talked about the different ways to decide who routes, where to collect information from, how often to update, how to create routing tables, fixed versus adaptive, and this other approach of flooding. How are the main concepts so far that we need to know about routing? Any questions before we move on about those concepts? Or about anything, questions. There's a quiz available after noon today. We'll cover some concepts of routing, some simple concepts, some concepts of switching, the topic before, and some calculations or affiliates and data for routing. And I think maybe not for switching, just concepts. For example, create the routing table. Calculate the number of packets sent. So we get a chance to practice that. The rest is really implementation details or some more details of how is it done today? How do we collect the information and create the routing tables? Well, routing protocols in networks do this job for us. Instead of someone manually have to calculate the routing tables, calculate the least cost routes, and to distribute the information, there's a protocol that does it automatically for us. And that's what a routing protocol does. Automatically collects information and determines the routes in the network and populates the routing tables. It usually specifies the algorithm for determining the least cost routes, what algorithm to use, and there are different ones to choose from. What information needs to be exchanged between nodes? So what do we tell other nodes about our links? And the format of those messages, so I have to send a special message to all my neighbours. What's the structure of that message? What information does it contain? How big is it? That's usually specified by a routing protocol. How often to send those messages? Do I send a message to my neighbours every one minute, every one day? What algorithm do I choose to determine when to update my neighbours? What metrics to be used? Sometimes a protocol will specify sometimes it's up to the user and some often default values of some parameters. So that's what protocols design. There are many different real routing protocols. Some of the acronyms or initialisms are listed here. OSP, FRIP, VGP and others. Some are older, some are newer, some are used in the internet today and some are not so common. But there are many different routing protocols available and they suit different size networks, different networks with different characteristics. We're not going to cover them in this course. You may see some of them next semester in computer networks, what's it called, computer networks and network architectures. There's an example here. Again, I'm not going to cover that. There are only one or two slides. It gives an example of combining our adaptive routing with flooding. Link state routing. We use flooding to send packets about our current link state. So other nodes in the network. We send some special link state packets. So we flood that through the network saying this is my current link conditions. And using that, the nodes update their routing tables. We calculate least cost routes and update their routing tables. For example, we will not go through details. Node 1 periodically sends a special link state packet to all nodes in the network using flooding. And that link state packet would give us, give the nodes information about its links. I have a link to node 4 with a cost of 1. Node 4 has a link to me with a cost of 7. To node 2, 2 and 3. To node 3, 5 and 8. That information would be encoded into a link state packet and then flooded through the network so every other node knows about node 1's links. Every node does that. The end result that every node learns about every other node's links. And now recalculates the least cost routes. There are other routing techniques as well. So let's finish this topic. And these two topics of switching and routing because both of them are about, now we have a network. Not just links, a set of links. Switching is the method of delivering data from source to destination across multiple links. So getting the data across those links. We have our stations or end user devices, those that create data and consume data like computers, servers and so on. And then special devices switches inside the network that forward the data through the network. We saw there's circuit and packet switching. And within packet switching, datagram and virtual circuit packet switching. Techniques to show, to say how to deliver the data through the network. Routing is the process of determining the best path. Determining the path to take from source to destination. So we need them both. We've seen the routing protocols. We have metrics, different strategies. We haven't looked at the algorithms but we've mentioned there are different algorithms for calculating least cost routes and there are different protocols. In practice, circuit switching is mainly in telephone networks. Fixed landline telephone networks and some portions of mobile telephone networks. Still used today. The circuit switching is present mainly in telecommunication telephone networks. Packet switching was developed to be more efficient for sending computer generated data and think of normal internet applications. Telephone networks mainly developed for carrying voice calls. In the internet today and many new wide area networks we use packet switching. In the internet, datagram packet switching. In most large networks, wide area networks, we use adaptive routing. In small networks we could use fixed routing maybe even flooding but in large networks across a wide area adaptive routing. Different routing algorithms. Excuse me. The trade-offs as to what is the best protocol depends upon the size of the network, how much data we're sending through the network and how frequently that network changes. So there's no one best protocol. Any questions before we move on? What's the next topic? Lands, local area networks. We're going to skip this topic or we're going to cover it in the next 25 minutes. That is we're going to skip most of the slides. You're going to... We've already mentioned different examples of lands. So networks for inside buildings, inside homes, inside a campus. And two common ones we know about in your assignment you're using IEEE 802.11 wireless lands, Wi-Fi and in wired networks we use wired lands Ethernet IEEE 802.3 and there are others. The details of how they work covered in these slides or started in these slides We're going to skip over. You're learning a little bit about wireless lands in the assignment. Again, next semester in another course you will learn some details. But let's, because we need some of the knowledge to move on to the next topic, let's just summarize some very simple things that we can say about lands, local area networks. And we'll use a typical example of a land. Think of all the computers in the lecture rooms. Lecture rooms, offices, labs they all have wired connections to them. You see the back of the computer there's a LAN cable. Where does the LAN cable go? To a switch, okay? It's hard to see but there's a LAN cable in the back of this PC. There's a white cable down here. Goes down there. And it actually plugs into a socket in the wall here in the corner and that socket has a cable and you can follow it. It goes up through here into the ceiling and then it goes through the ceiling and in this case there's a device in the third floor part of the computer center that has what's called a switch in there and it plugs into there. And all of the rooms are similar. That they have this LAN cable that all plugs into this one central device. There may be multiple central devices. So what do we get? What sort of network topology? Let's try and draw. What do we have? We have a set of PCs or computers different rooms or different offices. So we look at a common topology for a LAN and we may have some other we have another device called a switch. It's given some numbers. Computers, just PCs in the different rooms or different offices, one, two, three, four, five. And this is a switch and they're connected together via LAN cables. So that's a typical topology for a wired LAN. Our computers have LAN cables, those LAN cables all go back to one central switch and then that switch connects out to usually some other either another switch if we have a large network or some other computing device. I'll call that one R. So we can think this is our simple LAN containing some computers, a switch and another computer. While we call it R, it's usually performs in different operations we'll refer to later as a router. So when we want to communicate between computers in this LAN there are actually six, but let's look at the top five. If computer one wants to send data to another computer in the same LAN, computer two, then what it does is it sends to the switch and the switch sends to computer two. And the protocols used there are part of the LAN protocols or specifically IEEE 802.3, the wired LAN ethernet protocol determines how to send the data, how to connect to the switch and those details we're not going to cover. This is a typical topology where we have what's called a switched LAN. All devices connect to some central switch. Even this computer R. What we want to mention is to send to another computer we need to know its address. So if computer one wants to send a computer two in fact each computer has a specific address and the source assuming it knows the address of the destination we know who we want to send to computer two then we send a frame to the switch containing the source address the address of computer one and the destination address the address of computer two and that frame is delivered to the correct destination by the switch. So if the destination is two the switch sends along this link to computer two. What are the structure of those addresses? Well we commonly call them MAC addresses hardware addresses Ethernet address and we've seen some examples of such structures. It's the same format of the address used in a wired in a wireless LAN. On my computer is the MAC or hardware address of my wired LAN Ethernet interface. This F0.b7 This is my Ethernet wired LAN interface. It has a hardware address and it's hard coded. When I buy the laptop that hardware address is assigned to the LAN interface by the manufacturer of the LAN card. And it's actually similar for wireless LAN. We use the same structure of addresses. With my wireless LAN interface I also have a hardware address this 8C to the 90. Now Ethernet, MAC or hardware addresses all devices have such addresses for communicating on an Ethernet or a wireless LAN. The structure of the address is that it's actually a 48 bit number so just 48 bits what's shown here is just some human friendly form. You may not think it too human friendly but it's converted to hexadecimal. Instead of writing 48 bits my computer converts each 4 bits into a hexadecimal value so into the value 8 the next 4 bits C and so on and writes it in this form so in 12 hexadecimal digits a little bit easier to read than 48 bits. The computers actually use a 48 bit value for their address and for the source destination address. We'll see these addresses in many cases so understand and note that this is a hardware address or a MAC address. What does a frame look like when we send data from one to two we know the source address is the hardware address of computer one destination hardware address of computer two there's usually Ethernet defines a specific structure of the frame that is sent and I think I have an example in the slides a long way through towards the end this captures the main parts there's a lot of details here but if this is our frame that we send from source to destination the main parts we have some data this is the data before that we have some two octets or two bytes of data and before that source and destination address you see there are six bytes in length meaning six octets, six bytes 48 bits so the destination address source address, the type of data then the data and then four bytes at the end a frame check sequence is some error detection code which is used by the receiver to check if there's any errors in the data we're seeing the rest we can ignore any extensions with not worried about extensions so that's the typical format of a frame and again we'll see that you'll see that in different practical tasks and some examples normally the maximum size is 1,500 bytes for data for a frame 1,500 bytes of data four bytes at the end the trailer and 14 bytes in the header is a typical size what else can we say about LANs so if computer one wants to communicate with any of the other four computers even the five including R we use the source destination address send to the switch the switch sends to the destination protocols or mechanisms for the switch to know which line to send on to reach the destination so communications inside the LAN happen using the LAN protocol and the hardware addresses usually via a switch what if we want to communicate from computer one to someone out on a different network not inside this LAN well we need to connect network and the typical way we do is through this gateway or router so we may have some special device on this LAN this computer R which have another connection so in a simple case R could connect to another switch which may be connected to two other computers so at the top we have our five let's say PCs connected to a switch which connects to a router which connects to another LAN so we'd say we have two LANs here the top one and then separate by router the bottom LAN and again this is a similar structure we have one, two, three computers connected to a switch S1, S2 let's say they are servers so these are a web server an email server just a computer with some specific task so computer one wants to send to some server S1 it sends via the switch to the router and the router then sends via the second switch to the server so we have two LANs in this simple example two switched LANs and they are connected together via router and we can extend this and that ok there may be a third router connects to another network maybe a wide area network or another LAN and we keep extending it and connecting LANs and wide area networks together via routers and we get an internet which is the next topic that we are going to cover so for this course so far LANs know that a typical way to structure a wired LAN is using a switch and we connect all our computers into that switch we can have multiple LANs there are different ways to connect them together one way is via router we have 48 bit addresses every device has an address even the router even the router would have two addresses two hardware addresses one for this LAN this interface cable is plugged in here the router has a second interface with this second cable plugged into the other switch from the second LAN so it have two hardware addresses without LANs that's the main thing there are some examples of networks so the example I drew there was a simple one here is a little bit larger network we have multiple LANs so these green boxes here are the switches the LAN switches and we have multiple so we have some computers connected into a switch so think of this as one LAN maybe for the faculty members another LAN for some staff maybe another LAN for a different office some servers and we have connected those LANs together via some central switch to form one large local area network which then connects via router out to the rest of the world out to the internet so that's an example of a LAN configuration and there are a few more examples there the last thing that we want to mention we'll go back and find a slide maybe this one captures it actually no it doesn't this one how fast can we send in a LAN what are the data rates capable depends on which version are we using LAN technologies have been improved over time so there are different variations so often we talk about a common one used today is called generally fast Ethernet the original LAN technology was called Ethernet and originally it had speeds of 1 or 2 megabits per second and then eventually 10 megabits per second that's the data rate but commonly today our LANs support at least 100 megabits per second called fast Ethernet the standard is IEEE 802.3 but there have been improvements and many devices especially and user devices support gigabit Ethernet 1 gigabit per second data rate and there's also 10 gigabit per second Ethernet 100 is not around there's 40 gigabits per second Ethernet but commonly in use today 100 megabit per second fast Ethernet 1 gigabit per second Ethernet and usually between servers in data centers and so on 10 gigabit per second Ethernet in some large networks my laptop supports 100 megabit per second and 1 gigabit per second and most new computers will they can usually switch between the ones so that both endpoints will use the highest one available wireless LAN you're studying in your assignment there are other LAN technologies okay this is not the only ones that's all I want to say about LANs local area networks how they work, the details there are some slides in here but I think that's all we need to get through this course in the next course you'll see some details if there's anything we've missed that we need I'll mention it then but let's just introduce the next topic internet protocols or internet working just the first one or two slides to finish today so what we have LANs and wide area networks if we distinguish or simplify between the two types LANs for inside buildings inside your home maybe across a campus wide area networks to connect buildings together to connect campuses to connect between cities between countries and so on we have different technologies available for each so SIT inside our LAN we use wide Ethernet plus wireless LAN, Wi-Fi okay we have two different technologies inside our campus other organizations maybe the Toshiba factory have a variation of technologies maybe they have an old token ring LAN in their factory or some fibre channel so there's different technologies that they may use in their LAN so different organizations inside inside their homes inside their buildings may choose their own technology depending upon their requirements similar for wide area networks there are many different technologies available to connect between cities between countries if it runs the network we'll choose what's best suited for them what we would like to do is to be able to connect any LAN or a computer on any LAN to any computer on any other LAN or wide area network in the world so this computer here on the wired LAN I would like to be able to communicate with a computer in the US which is connected to some other LAN technology for that we need some path through the network but they may be using different protocols and all the LANs and wide area networks in the middle may be using many different protocols different technologies but we'd still like to be able to allow any computer to communicate with any other computer doesn't matter what technology they're using what LAN or when are they using the concept of internet working aims to achieve this by connecting all these different technologies together and we can visualize it like this we have many different LANs and wide area networks inside these clouds we may have a switched LAN wide LAN we may have a wireless LAN some other technology some point to point links some microwave wireless links satellite in the wide area networks all the different technologies inside these clouds we'd like to be able to allow anyone on any of these networks to talk to anyone else and the way that we do that is that we connect each of these clouds these LANs and wide area networks together using special devices called routers and these routers will have the process of joining them together and allowing the two different networks technologies to talk to each other so we perform internet working using these routers these devices in the middle here and we'll see that routers are packet switches so we come back to switching and in the internet they are datagram packet switches so if we go back to our original slide on switching we had switches in the middle and end stations on the outside well, same here the routers are our switches and I haven't drawn the end stations but imagine on the LANs there are computers then we get a packet switch network and in the internet they're actually datagram packet switches we use datagram packet switching so this topic on the internet internet working and internet protocols we're going to assume this is what we want to achieve how to do what protocols we need and we'll arrive at the internet protocol and cover IP we'll introduce terminology but that's the quick motivation of okay, let's connect multiple LANs and WANs together and we'll do that using internet working enough for today we'll cover that next week