Submind YouTube summaries
Thumbnail for Networks | Advanced Computer Architecture | CS501_Lecture43

Networks | Advanced Computer Architecture | CS501_Lecture43

Watch on YouTube

Video summary

The lecture introduces computer networks as a critical extension of computer architecture, emphasizing that network principles apply not only to external connections between distinct computers but also to internal connectivity within a single system. This internal networking allows various subsystems, such as multiple CPUs, storage elements, or even components on a single chip, to communicate efficiently. The primary motivation for architects to understand networks is to leverage these connectivity solutions to enhance system performance, resource sharing, and overall efficiency. While the field of computer networks is vast and often covered in dedicated courses, grasping the fundamental problems of interconnection and their architectural implications is essential. This understanding helps architects design systems that can scale effectively, whether by connecting multiple processors to increase computing power or linking storage arrays to boost capacity and reliability. A key distinction made in the lecture is between computer networks and distributed computing systems. In distributed computing, interconnected elements operate under a single operating system, appearing to the user as one unified machine, whereas in standard computer networks, each node is individually addressable and requires specific login procedures. The lecture also categorizes networks based on the number of connected elements and the distance they cover: Storage Area Networks (SAN) for short distances within a machine room, Local Area Networks (LAN) covering buildings or campuses, Metropolitan Area Networks (MAN) for cities, and Wide Area Networks (WAN) like the Internet that span global distances. Furthermore, the concept of switching technology is introduced, contrasting circuit switching used in telephony with packet switching, which breaks data into blocks called packets for more efficient transmission over networks. The technical mechanics of packet transmission are explained through a model involving headers, payloads, and trailers to manage data flow and error control. When a computer sends data, the operating system prepares the message by calculating checksums for error detection and adding control bits to identify requests or replies. If an error is detected during transmission, the receiver discards the corrupted packet and requests a retransmission once the sender's timer expires. The lecture highlights that while raw bandwidth defines the theoretical speed of a medium, the effective throughput is significantly reduced by latency factors such as propagation delay, transmission time, and processing overheads at both ends. This relationship is illustrated through examples showing how large distances in WANs increase propagation delays, thereby lowering effective bandwidth for short messages, whereas larger message sizes can amortize these overhead costs to approach raw bandwidth limits. Finally, the discussion covers the physical media used to interconnect computers, ranging from copper twisted pairs and coaxial cables to optical fiber. Twisted pairs are noted for their cost-effectiveness in reducing electromagnetic radiation but suffer from signal attenuation over long distances, limiting their bandwidth. Coaxial cables offer better performance with higher throughput capabilities, while optical fiber represents the state-of-the-art medium by converting electrical signals into light pulses to achieve minimal attenuation and extremely high data rates over vast distances. The lecture concludes by explaining that optical fibers use transmitters like lasers or LEDs and receivers like phototransistors to facilitate this conversion, setting the stage for further exploration of these media and their impact on effective bandwidth in subsequent sessions.
Read the full video transcript
As-salamu alaykum. Welcome to the series of lectures on advanced computer architecture. So far, we have concentrated on the individual components of a single computer. We have discussed the internal connectivity of different subsystems, including memory subsystems, IO subsystems, with the central processing unit. Today, we are going to talk about the computer networks. The first important question is that why a computer architect should talk about and know something about computer networks. The first reason to discuss computer networks for a computer architect is that a network corresponds to connectivity of different elements. These elements could be different CPUs, different computers, storage elements, and so on. Now, this connectivity is not necessarily an external connectivity. When we shrink a computer network, then this could also mean a connectivity within a single computer. The standalone subsystems could be interconnected together. And this connectivity could mean that within a system, we could have connectivity of different CPUs together. Or we could have connectivity of different storage elements. Or even within a chip, there could be connectivity of subsystems. Therefore, if a computer architect understands the problems and the proposed solution for computer networks, it would be pretty useful and helpful for extending and getting a sharing and higher efficiency of a system. Now, this internal connectivity was used long ago in mainframes. And today, it is also being used in personal computers. A very typical example could be that so far we have discussed sharing of different elements by using a bus. What if we use a switch? So, the switches are very commonly used in computer networks. So, such a switch is popular for interconnecting different CPUs and different storage elements. So, therefore, the fundamentals of computer networks learned in this particular area which we are going to talk about would be useful and uh just give a horizon to a computer architect. The second reason why a computer architect should know about computer networks is that at present most of the computers are networked together or interconnected. And also these computer networks, they share other resources like printers. Imagine in a laboratory we have 50 computers and about let us say four printers. The service is given to 50 computers by these four printers. And all these elements are interconnected by a network. In general, the computer network is a vast field. We are not going to have detailed study of computer networks. You will take up other elements in a separate course. But it is important just from architectural point of view to understand the basic problems of connectivity and then some of the possible solutions. And we would also look into some of the protocols. As you know, protocol basically is a set of rules. Now these rules may be defined for the hardware or for the software. For a simple computer network, you could imagine that a number of nodes are interconnected. For each node, which could be considered as a host, physically this could be a computer. And for this computer, we have some of the hardware elements placed into the computer, which could be for example some of the LAN cards or it could be in the form of a modem or some interface circuitry. However, hardware is not enough. It's important to have software. For proper working of a computer network, the node or the endpoint or the host could be considered as a combination of hardware and software. And then all of these are interconnected through an interconnection mechanism. And this interconnection mechanism could be a physical medium. We will discuss that in more detail later. But before that, a couple of notions should be explained. Now, we discussed in one of the earlier lecture that a number of CPUs could be interconnected to increase the performance. And this aspect was covered as a parallelism or you could say a parallel processing aspect in architecture. That we will not touch upon at this point of time. However, we know that in the background, whenever we try to increase the number of processors in a system, we would like to increase the computing power. Now, in a very simple case, if we have an array of 3 by 3 CPUs together, then theoretically we could get a computing power of nine times the computing power of a single computer. Practically, this is not achievable. Why? Because there are links, there is intercommunication among different processors. Similarly, you could say that to increase the storage capacity, we could interconnect a number of storage elements. Similarly, if we put 3 by 3 array of hard disks, we could have a higher reliability and a higher storage capacity. So, again, the interconnection problems would be there. Now, these aspects we are not going to cover in this lecture or in the following lecture. You have discussed these aspects in a separate lecture. Now, there is a lot of confusion in the literature between distributed processing and computer networks. Just a point here, what is the difference between distributed computing and computer networks? Distributed computing corresponds to interconnection of different computing elements. However, the major difference is in software. All these elements operate under the control of one operating system. To the user, the whole system appears as a virtual uniprocessor. So, the user just utilizes a system or puts in a command and it gets executed. In the case of a computer network, the user has to specify and log in specifically on a particular machine. And different machines are interconnected, are individually addressable, and could intercommunicate through the network. We will be talking about the computer networks and not the distributed systems. Now, these networks interconnect different nodes together, different computers together. However, we could also have a different separate networks and communication could also take place among different networks. And this is internetwork communication. That also is a part of computer networks. We could classify the networks from different points of view. Firstly, we talk about how many different elements or different computers are connected in a system. And secondly, what is normally the distance that is covered. Based on these two parameters, we could talk of different terminologies. Firstly, we could say and talk of a SAN, which stands for the system uh area network or this could also be called as a storage area network. Now, this interconnection usually corresponds to a machine room environment where a cluster of PCs are interconnected or a number of storage elements like disk arrays are implemented. The typical uh distance in a SAN could be a few tens of meters. Now, the next classification is a LAN, which corresponds to a local area network. A local area network could correspond to a connectivity of computers, usually within a building or within a campus. And the distance usually covered is just a few kilometers. Now, uh extending it further, we could have the third category, which corresponds to the wide area network or a WAN. This is the long-haul connectivity. And a typical example for a WAN is internet. I hope you remember the historical perspective that the LAN extended to WAN, and in between we could also have a metropolitan area network, which is usually called MAN. ARPANET, which was developed by the Defense Department of United States, long ago, and it was perfected around 1974, and then it was made public. And nowadays, the internet provides the connectivity worldwide through different internet connectivity. That means a number of different networks of computers could be interconnected. We will talk about these protocols used in internet connectivity later. At this point of time, another important concept should be understood. And that is of switching technology or switching technique. There are two possible techniques used for switching. The first one is usually called circuit switching. In the case of circuit switching, the switching elements connect one computer to another for a given time, and the data is transferred from one computer to the other. The circuit switching mode is popular and is normally used in telephony. Now, when we call somebody through the exchange, we are connected to the called party. And as long as we remain connected, the switch is available, and this scenario corresponds to circuit switched mode. However, this is not a very efficient mode for data transfer. What we utilize for data transmission or connectivity of computers is the packet switching. What is a packet? Packet is just a collection of bits or bytes together, or you could just call it just a block of data. A packet could be as short as a word. For example, it could be just one byte, two bytes, or a word of 32 bits. And these blocks of data over either a defined path or different paths could be passed on to the destination. This concept corresponds to what we call packet switching. Now, how do we identify different packets? For that, we need to have some additional bits. And these bits could be placed in front or at the back of the packet. So, if we put at front, it would be generally called a header. And if we just place at the back or at the end of the main data, it would be called a trail. Now, the head or tail in between would contain a payload. And that payload is the actual message or the actual data that we want to pass on or communicate from one computer to another computer. Now, to illustrate the basic principle of computer network, let us have a very simple example of connecting two computers together. This is shown in the next slide. This slide shows a very simple model where two machines, A and B, are interconnected. Each machine has a unidirectional wire from one to the other. That means one wire transmits data from A to B, and so does B from A. The data is stored in a buffer, and this buffer is organized, just for example, as a queue of first in, first out or a FIFO arrangement, and that would hold the data. In this simple example, each machine wants to read a word from the other's memory. So, a message is the actual information sent from one machine over the interconnection to the other machine. In this simple example, the payload consists of 32 bits. However, a header is required. For the sake of just explanation, one bit is used as a header, which is just an oversimplification. Actually, we will have a number of bits to have the information in header. For this example, zero in the header corresponds to a request, and one would correspond to a reply. Now, when computer A wants to read some address in the memory of computer B, first, it needs to send some address. So, you will see in the figure that the first packet contains the payload as an address. That would indicate to the other machine that this is the address or the location in the memory from where data is to be read. And then, as a reply in the second packet, the payload is the actual data or the contents of that location available at the address. Now, just imagine that if everything has to be done in the form of hardware, it would be too complicated, and particularly a computer programmer or a network engineer would be totally confused. Most of the work is done by the software. And how these activities are just taken up by the network perspective, it is indicated in the next slide. The software operates in the following manner. First, the application copies data to be sent into the operating system buffer. Then, the operating system calculates the checksum, includes it in the header or in the trailer of the message, and then starts the timer. Thirdly, the operating system sends the data to the network interface hardware and tells the hardware to send this message on the network. On reception of the message, just the order is reversed. The system copies the data from the network interface hardware into the operating system buffer, which is defined in the software. The system calculates the checksum over the data. If the checksum matches the sender's checksum, the receiver sends an acknowledgement back to the sender, meaning that it is correct data or reception is correct. If not, it detects and deletes the message assuming that the sender will resend the message when the associated timer expires. The sender must still react to the acknowledgement. When the sender gets the acknowledgement, it releases the copy of the message from the system buffer. If the system sender gets the timeout instead of the acknowledgement, it repeats and resends the data and starts the timer. Now, in data transmission, the control of errors is extremely important. And for that, some redundant bits are placed along with the message. So, in this particular example, 32 bits is the main message. In the last uh slide, you just saw that we had header as one bit. Now, this is not going to work. We need to increase the number of bits in the header in order to accommodate the response or the acknowledge signal from the receiver. Or, if the time is out and we need to resend or repeat that particular request, then at least two bits would be required. So, you will see in the next slide that the header, instead of one bit, is increased to two bits. Now, at the end, we have a trailer corresponding to four bits. Just for 32 bits, these four bits are redundant bits or additional bits, which would mean that in any one of these, which means 32 plus two header bits plus four bits in the trailer, all together, we will have 32 plus four 36 plus two 38 bits. Any one of these bits is in error, it would be reported and the checksum would not be correct. And checksum just corresponds to different combination of parities. How it is done mathematically, you can do it. We are not going into the detail, but the concept is very simple. We say this corresponds to detection of error. Now, the errors may be uh lesser if we have, for example, shorter distances. And particularly, it is important when we are using the wide area networks for longer distances, the error rate could be higher. So, we will see that the total important parameter in the data communication would be the overall bit error rate, or we'll say the bit error rate needs to be defined, and that would define the quality of the link. So, the engineers who will provide the basic physical link would ensure that the bit error rate is adequate. On top of that, through this check sum, the error control is there, and if an error is detected, then message could be repeated. This could be the simplest way that correction is not done by the processor. The processor just requests that please repeat that message, there is an error. So, you see in the next slide that the 32 bit message is appended and prefixed by the bits. Just have a look on that slide. In our simple example for connecting two computers and using one payload of 32 bits, you just see two bits constitute the header. Now, the combination of these two bits would dictate whether it is a request or a reply or acknowledgement. Just for illustration, 00 corresponds to a request. 01 is the reply from the other end. 10 corresponds to acknowledge request. And 11 is the acknowledge reply corresponding to either the reception of data or a request to repeat under the situation when time is out. A practical protocol must handle many more issues than have been indicated in this simple example where two machines are interconnected. For example, if these machines come from different manufacturers, then the byte order might be also different. And within a word, we need to interchange the byte and put the sequence exactly in the same order as it was intended to be delivered. Let us now discuss in some more detail the performance issues of a general network. The first important parameter is the bandwidth. Bandwidth corresponds to the speed at which the data could be transmitted through the network. It would be usually expressed in the form of bits per second. Now, we have been using bytes. We could convert byte into bit just by multiplying with eight. Now, let us say if you have a simple example and a message length is 32 bits and these 32 bits are transmitted in just 32 microseconds as an example, then the bandwidth would correspond to 32 / 32, which means 1 megabits per second. Now, larger the speed, higher would be the throughput. So, for the net network, overall network, one could consider the throughput in terms of the number of bits per second. Once we know the message size, and we know the transmission time, we could calculate the corresponding bandwidth. Although bandwidth is an important parameter, there is another aspect which which should be considered, and that is the latency. The latency would correspond to the propagation delay through the network. Now, in a local area network, for example, which covers just a short distance, the latency could be short. However, if we have a connection between Lahore and Karachi using a wide area network, then the propagation delay might be significant. On a wide area network, we could have other elements like routers on the way, and then there could be additional delay. Now, for wide area networks, we could have additional overheads both on the sender end, as well as on the receiver end. All these things put together delays, and delay would correspond to latency. Let us look at the next slide and define some of the important parameters corresponding to the performance of a network. The important parameters for the performance are the time of flight, or the propagation time, transmission time, transport latency, sender overhead, and receiver overhead. Time of flight corresponds to the propagation time through the medium. You could imagine that on the sender end, when the first bit enters the network, and that first bit is received on the receiving end, the time between these two points would be just called time of flight. Now, usually, if we have, let us say, uh a copper as a medium, then the electromagnetic waves would be traveling at a speed of light. Now, for an ideal case, the speed of light would be 3 into 10 raised to power 8 m/s. However, for a practical medium like copper, the speed would be less than that. For the examples which we are going to have as some of the numericals, we will assume that the actual speed through the physical medium is about 66% or 2/3 of this particular speed. That means it would be 2 into 10 raised to power 8 m/s. So, the propagation time or time of flight would be larger larger the length of the physical medium or farther apart are the two machines. And if the machines are very close to each other, then this propagation time might be insignificant. The second important parameter is the transmission time. The transmission time corresponds to the actual time of propagation for the message. And it would depend on the length of the message. So, if the message corresponds to a large block, this time would be larger. So, we could imagine that the time of transmission would correspond to when the receiver receives just the first bit of the block and the last bit of the block. This could be just a few microseconds if the block length is just one word or if it is much larger in megabytes as an example, then the time corresponding to transmission could be a few milliseconds. The total latency of the system or the network would constitute these two components. So, if if we add up the flight time, that means the propagation delay, and the transmission time for the actual data, this would constitute the transport latency. As an example, if the propagation delay or the time of flight is just 1 microsecond, and the time for transmission is 10 microseconds, the total latency would be 11 microseconds. Now, we need to add up two additional components. One is the overhead on the sender end, and the second one is the overhead on the receiving end. So, the CPU on the transmitting end or on the sending end would need to pump in data into the network. So, this time would be in the form of a delay or a latency. It might be short in microseconds. It depends on the performance of the computer itself. Similarly, on the receiving end, we have a latency. So, the overall latency for the network would be the sum of all these components, and we could define as the overhead from sending end plus time of flight plus transmission time plus the overhead on the receiving end or by the receiver. And this would constitute the total time in terms of we call it the latency. Now, the effective bandwidth could be defined now as the sum of this latency and the total block length. Let us say we have a total message constituting 1 megabits, right? And it takes a time of 1 microsecond to put this data through one end, machine A, up to machine B. What would be the throughput? The throughput would be, in this case, just division of the message length divided by the time all together in the form of latency, and this would be just for this example 1 megabit per second. That would be the throughput. Actual bandwidth may be larger than the effective throughput. Now, these delays would reduce the effective bandwidth or the effective throughput in the system. Let us consider a very simple example with some figures in the next slide. Assume a network with a bandwidth of 1,000 megabits per second. The sending overhead is 80 microseconds and the receiving overhead is 100 microseconds. Assume two machines. One wants to send a 10,000 byte message to the other. Now, this message would include both the header and the trailer. And the message format allows 10,000 bytes in a single message. Let us compare the performance of a SAN, a LAN, and a WAN by changing the distance between the machines. Calculate the total latency to send the message from one machine to another in a SAN. Assume they are just 10 m apart. In the case of a LAN, assume a distance of 500 m. And in the case of a WAN, assume that two machines are 1,000 km apart. As already explained, we will assume for all these three cases a speed of 66% of the speed of light, which means 2 into 10 raised to power 8 m per second. The total latency in all cases could be calculated by using the same formula as already explained, and that is equal to sender overhead plus time of flight plus the actual transmission time, which would be available as message size divided by the bandwidth plus the receiver overhead. For the case of SAN, you could just see that this would be equivalent to a total latency of 260 microseconds, which is actually 80 microsecond as the sender overhead, 100 microsecond as the receiver overhead, and 80 microseconds corresponds to the transmission time. The propagation delay in this case is insignificant and is just 0.05 microseconds. For the case of LAN, you will just see that now the propagation delay has increased to 2.5 microseconds for 500 m. And the total time is just 262 microseconds or just two or actually 2.5 microsecond on top of SAN latency. However, for the case of WAN, you would just note that total latency is 5,260 microseconds. And we have a significant component, which is 5,000 microseconds or 5 ms as the propagation delay. And this is accounted for because the distance between machine A and B is 1,000 km. >> This example illustrates different component components of the latency. Now, we have noted that the propagation delay is significant for the case of a WAN where distance is large, and that overrides the other components. Whereas in the case of SAN, the propagation delay is almost insignificant, and the total latency corresponds to the actual transmission time of the message plus the overheads on the transmitter and the receiver end. Now, we have neglected one thing. In the case of a van, there would be intermediate nodes or intermediate computers passing on the data and additional delays would be incorporated. Now, in general, we will define the effective bandwidth as the total, let us say the the the total message size divided by the bandwidth. Or we could say that it would constitute overhead total overhead, which would be overhead from the transmitter, overhead from the receiver, plus the propagation delay. Plus the second part would be the size of the message divided by the actual bandwidth. And when we combine these together, then we say that total bandwidth or total size of the message divided by the total latency, that would define the effective throughput or effective bandwidth. And that would usually be lesser than the actual bandwidth. As an example, you could say that the bandwidth of the medium could support 10 megabits per second. However, including the overheads, this could come only up to 1 megabits per second. And where is the other 9 megabits? That would be lost in terms of delays, the extra delays. This is illustrated in the next slide with the help of an example. In this example, we look at the plot of the effective bandwidth as a function of the size for overheads. We consider two cases for the overhead as a parameter. One is 25 microseconds and another one 250 microseconds. We consider three different network bandwidths. First 100, then 1,000 and finally 10,000 megabits per sec. We vary the message size from a short message corresponding to 16 bytes and to a long message which is 4 megabytes. We want to see for what message size is the effective bandwidth virtually the same as the raw network bandwidth. Now, if the overhead is 250 microseconds, then for what message sizes is the effective bandwidth always less than 100 megabits per sec. The plot for this example is from your book. It shows the effective bandwidth on the vertical axis as a function of the message size on the horizontal axis. We utilize the simplified example as already indicated that effective bandwidth is equal to message size divided by the total latency and we add up all different components to calculate this latency. Now, the figure just utilizes the notation OX indicating the overhead component and BWY as the bandwidth component which is available and it corresponds to the raw bandwidth. To amortize the cost of high overhead, the message size must be large. And from this figure, you see that any message size greater than or equal to 4 MB, the effective bandwidth is the same as the network bandwidth. Assuming the high overhead message size about 3 KB or less will not break the 100 MB per second barrier. No matter what is the actual network bandwidth. Thus, we must lower the overhead as well as increase network bandwidth unless the message is very large. This example has illustrated two facts. First one, the size of the message plays an important role. Now, for shorter messages, the same overhead has been assumed. This is just for the sake of explanation. It's a very simple example. In practice, the overhead may vary and it may depend on the size of the message itself. Now, the second aspect which we have illustrated is that the effective bandwidth would always be less than the raw bandwidth. And the effective bandwidth would be closer to the raw bandwidth larger the size of the message. Now, we want to see that in practice, what would be the typical size of the message? Do we frequently get a very large message as indicated in the example like 4 megabytes? This is not actually the case. Usually, the shorter message sizes are more frequent. And that is why then effective overhead, even if we assume the same overhead, effectively in terms of percentage, it would become more significant. It would be a larger percentage as a part of the total latency, and therefore the latency increases, and the effective bandwidth would decrease. So, a network would be more effective if the message size is larger. However, you will note that over a network, it's not only the one user who is sending message. Other users would also be sending the message. When a large number of messages are propagating on the network, then it would be a queuing scenario. And other users might have to wait till the other user another user has finished sending the uh corresponding data. That is why we are using actually the packet switching, and the size of the packet would usually be shortened. And if it is very long, we will just split it up into smaller packets. And this would be illustrated later on in terms of the internet working or the protocols corresponding to that. Let us now consider what different physical media are available for interconnecting different computers? The simplest medium which is available is copper. Now a lot of pairs have been buried by communication companies underground in the form of twisted pairs. Now the simplest available medium would be copper in the form of twisted pair. Now the two wires are twisted together in order to reduce the radiation. Now if we run two parallel wires, there would be larger radiation and it could behave like an antenna. So the twisted pair would have a lesser radiation and therefore lesser interference. A number of twisted pairs could be woven together to form a pair corresponding to or a cable corresponding to 10 pairs, 50 pairs or 100 pairs. So if within a building for example or within a laboratory, we want to interconnect different computers, the simplest or the cheapest available medium would be twisted pair which could be shielded or unshielded. Now we could have different categories in this case depending upon the size of the copper and the type of or quality of insulation. And you might have heard Cat 1, Cat 3 or Cat 5, it's category 5. Now the data which could be transmitted on the twisted pair would depend on quality of the pair and more so on the distance that is to be covered. Now you can imagine larger the distance lesser would be the bandwidth available. Higher would be the corresponding attenuation. So, therefore, usually the bandwidth would reduce, and also we cannot cover a very large distance without putting up repeaters in between. Nevertheless, it is very convenient to interconnect different computers. Now, on on the end, you could just use a connector RJ45, like a connector which is used for a normal telephone set. So, you will see that in the laboratory atmosphere, a LAN could be constituting a physical medium for copper. Now, the twisted pair may not provide a large throughput. If we want to have a higher throughput, still using copper, we have another option, and that is using a coaxial cable. A coaxial cable basically consists of an internal conductor and with an insulation, an external conductor, which is usually braided. The quality or attenuation would be lower in the case of coaxial cable as compared to the twisted pair. And we will be able to provide a larger bandwidth, which could be uh a few hundreds of megabits per second also. So, if a LAN is implemented using, for example, a coaxial cable, we could easily have 10 {slash} 100 megabit as a shared medium. Now, the connection for the case of coaxial cable could be uh implemented by using tees. So, if at one point we want to have a connection, extra connection, we can insert a tee and that bus can continue and connect on the tee'd connection another node or another computer. Now, if one is still not satisfied with the throughput of copper, we can use glass. We can use optical fiber, which is the latest medium and state-of-the-art medium being used. Now, you could consider optical fiber just as an optical waveguide. It consists of a simple glass surrounded with an insulation with a given permittivity and we could cover a larger distance. In this case, the attenuation would be much smaller. Now, we need to convert the electrical signal into optical signal. So, on the transmitting end, we will have just a a converter which converts the electrical signal into an optical signal, which could be done, for example, by using either a simple LED or it could be done by using a laser diode. That would be just a transmitter. On the receiving side, the reverse would be true and we could have another diode or a phototransistor that would convert the optical signal into electrical signal. Optical fiber is one of the best mediums and provides a very large throughput. We'll continue our discussion on the available media with the effective bandwidth in our next lecture. That is all for today. Till next time. Allah Hafiz.