 So, I will just provide an overview of the workshop, how things are going to be, so here is the schedule, so I will provide an overview of the workshop and there is also a clarification session. In fact, there are three clarification sessions today, tomorrow as well as Thursday as well as Friday, where the purpose of the clarification session is among the content that you have watched, if there is something you would like me to explain because you did not understand it. If it is something very simple you meet me afterwards, but if it is something a little bit complicated I will undertake it and explain it to you so that you understand it better. We could also use the sessions to, I will pose some problems and you can work in groups, discuss it. This is the think-pair-share which Professor Sridhar will also talk about. So basically I will pose a problem, you think for yourself, you discuss it with your neighbors, come up with a final solution and then we will discuss some of it, like I will like to hear what your solution is and then I will provide the correct solution. So that is how these clarification sessions will go on. So tomorrow I am going to talk about, as I have already mentioned about my experiences in using a flip classroom here at IIT Bombay using this platform. And we have overall five lab sessions. So we have Monday afternoon, Tuesday afternoon, Wednesday is an entire lab session both in the morning and afternoon and Thursday afternoon. So there are the labs and then Thursday there are a few other talks. One is Professor Sridhar Ayer, he is a faculty in CSC department. So he will share with you some of the experiments he has done in teaching pedagogy for effective learning and there is also another lecture by Professor Bhaskar, well he is my husband as if I roped him in to do one presentation. So he will provide you some tips on handling student projects, how to define projects, how to read papers, write presentations, that kind of a thing which, so that is what he will do. And the final day which is Friday morning, I will provide you some information on how the main workshop has to be conducted. There is a logistic sessions where Dr. Mukta will also tell about how to handle some of the budget and other issues. After this again there is a course content clarification and after this is we break in the afternoon, we will, so this is the afternoon sessions, as I said they are all labs but Friday afternoon is a valedictory function. So this is the time where the certificates will be distributed as well as any kind of feedback you wish to give about the platform, this workshop, the lab sessions, whatever it is I will be available. So this is, I mean in fact things improve only via feedback, so your feedback is very important so don't underestimate it say or what is there, everyone is telling the same thing. So that's for us the quantity also if many people tell the same thing then that means it's an important problem which we prioritize and we are going to address it. So don't view your feedback as something chalta hai, no it's very important to us so please take your time, if it's important just put your thoughts down, you can share it as a hard copy, face to face whatever it is, your feedback is extremely important to us, so please do give us feedback. So with that we will, so I will give you a few additional information about, so that's the schedule, so a little bit about how labs are going to be conducted, so labs will be done in groups of two, so please pair up with someone, I mean if you already have friends just pair up otherwise make friends and pair up, in case you don't have a partner we will assign you with one at the location of the lab, the labs as I said are a bit, I mean if you already are familiar with some of the things, things may go on faster but if you have not handled TCP dump, wire shark or whatever of these tools then there may be a bit intimidating, so there are a bit, normally if someone with experience does this lab they do finish within an hour, but if one, one and a half hours but someone without experience it can take a lot of time, so please be there at the labs, if necessary if you finish you can leave early but do get started on time, the labs are spread across three rooms NSL, OSL and something called NSL NX, you may, you can assemble at any of these places in case the computers get, they are occupied then we will ask you to move to another location, so there may be some initial movement at the beginning but from next lab on once you decide you're going to be sitting here just go to the same place that way you don't have to move, so these labs have machines which are Linux Ubuntu based machines, you have to do a local login, the login is if you are in the location called NSL lab, the username as well as password is NSL user, if you are in the OSL lab the username and password is OSL user, so the assignments are up on the Bodhi Tree platform itself, we already have logins, so you just access BodhiTree.csc.itb.ac.in and there is a new tab to your left under the workshop lab exercises, there is under FAQs this tab is there, the first assignment has been placed up there, so get started, as I said since the exercises can be dense instead of exploring many things focus on getting the thing done later you explore, so I think exploration is very important but try to finish the exercise first before you explore and I mean needless to say teaching only when you think you learn, so there are TAs available to help you, take the help of TAs only when you feel you're really stuck unless you really put in try out different things you don't quite learn, so labs it's very important that you do things experiment on your own before you take help, but there is help in case you are stuck please make use of the TAs, so this is a new thing which typically by 5.15 will I'll display the answers, so by 5.15 you finish your try to finish up the lab by this particular time, after that we will do this pairing, so you pair with your neighbor and exchange your answers, both of you exchange your answers with each other, sit as a group and discuss some of the issues you faced or you could discuss the solutions, whether you have maybe you came up with a different way of doing it you can tell oh I thought of this, so compare notes discuss it and the TAs also can help you in case you didn't understand something they will be able to help you understand the answers as well, it's since the same lab you're going to conduct later at your remote center it is important that you understand the nitty gritty details because later when you go there and someone asks you something it's not nice to be stumped, so do ensure that you understand each and every aspect of the question thoroughly if not take the help of the TAs, so this is the first clarification session as I said there are 3 such sessions, so today's session if you have any questions on any of these topics I'll be happy to clarify any questions of any kind, if in case you don't ask me questions I'll start to ask questions, anything that confused you which you like me to explain I'll be happy to explain or in general questions on any it doesn't have to be the content that was covered, something outside also if you have, if I know I'll answer. I have a doubt in Metra's metrics used in evaluation of the computer network, throughput and good put, I have read somewhere there is a good put as well, what is the difference between throughput and good put? Okay, so it's again many of these metrics one point I wish to emphasize is they are to be calculated based on definition, so people will mean different things, some may use good put for throughput, throughput for good put whatever it is, so you have to be aware of the context and how it is defined before you do the calculation, often good put is useful work done, so for example if you are sending let's say 500 bytes and the 500 bytes you received let's say in a duration of 1 second throughput will be 500 bytes over 1 second, but if this 500 bytes carries some headers which take up let's say 100 bytes or 200 bytes then the good put which is basically the useful work that got done in transferring because these headers are not actually delivering useful I mean they are useful in the sense that you need to implement the functionality but they are not really carrying application level data, so that will be 300 over 1 second then, but again as I said people may view it interpreted differently it's a totally a function of in the context you need to read what good put has been defined, different papers will define it differently, so it's a totally but you have to understand this is typically what is used but as I said it could vary someone else may define good put in some other fashion. Good afternoon Madam, I am Dr. Ase Kulkarni, I wanted to know is there any practical implementation of OSI model? OSI model OSI model there is so it has been standardized but it has not been implemented just because I wouldn't say it hasn't been implemented, people did implement it at the very beginning but it just didn't work out because the way they have defined some of the interfaces the way they have defined some of the functionality that it didn't catch on and it felt that it was more complicated and so no one started using it. X.25 network and which was the standardization of last three layers like can we quote it as an example of practical implementation of OSI, it was much prior to TCP IP came it was using public data networks in Europe and all. Yeah so I mean this is something I have to look up I don't really know whether it is an actual implementation of OSI, I mean Wikipedia is as good as me then. Yeah X.25 is typically used in that context. Nearer to that. Thank you. Interlayer communication. Okay. Actually there are various layers in TCP IP model data link layer and the internet layer so it is specified in Maninbooks that there is a interface between these two layers and even these interfaces can be reconfigured by the user so I tried many times in Microsoft Windows operating system that how I can find some interface where I have I can specify something how can I reconfigure the interfaces of the two layers. So just I'm not sure I understood you're talking about interlayer communication or interface interface interface communication yeah interlayer interface because two layers define say interface where they are providing the services yes means data link layer is providing the services to the internet layer yes so is there is something in operating systems where user can see or administrator can see that how this interface can be reconfigured by the administrator. So often so any of these functionality which is defining the interface between two layers this is part of the kernel so for example TCP so if you really want to change them you need to dig into the kernel and change the kernel specifications so if it comes as part of your kernel so unless you change the kernel it you cannot really change it so if you want something to be exposed to the application layer which the kernel normally doesn't then you have to go into the kernel look at the particular module expose that so this fall under kernel programming means actually let me windows I have absolutely no idea because it's a closed system I have rarely worked with windows other than right now I use windows just to record my videos because that software works in windows other than that I'm not familiar with windows at all if you're doing trying to do some of these things in linux in linux you need to do kernel programming where for example at the data link layer you want to expose something you have to dig into the drivers so you have to do driver level programming if you want to expose something in the network layer there are these ip tables blah blah that kind of a thing so you again have to begin into the kernel modules to make any changes so anything you involve where the default kernel does not support and you want to expose additional parameters to the higher layers or do whatever you need kernel programming to be able to do it there is no any kind of utility in ubuntu from where directly we can do this certain parameters for example you can so so for example at the tcp level whatever are the buffers that are it's not quite coming so there are certain it knows it will reserve certain amount of buffer space for an incoming connection there is a default value for it now if you want to change this default value you can potentially do it through the socket call and some such things but these are things there is a default value but you can change them based on exposure like I mean there are ways in which you don't really need kernel programming for that but if there is something which is not exposed in this particular fashion but you still want to change it then you really need to get into the kernel so for example if you are dealing with a wi-fi driver and you want at the application level what the received signal strength is right it doesn't so some some I mean I don't know off-lay drivers but earlier drivers never exposed rssi stops at the link layer itself but if you want to do it then you have to write a procedure where you write a module within the kernel that is taking this data from the link layer writing it into a file and the application is now querying this file to get that get that data so you do all this IPC I mean so you have to follow some of the kernel communication to be able to get that information some things they expose which you can get some if they don't you need to dig into the kernel this is Dr. Sushish Mehta from NIT Raukila I am regarding the service of data link layer basically we have two layers the LLC and the MAC right when we talk about the services is it the service for both the layers or is it distinct for the MAC layer and for the LLC so actually this so when we talk about the data link layer some standards it's again a function of the standard some standards bring about a clear separation between the LLC and the MAC some functionality I mean each standard defines LLC and a MAC more or less but some functionality some MACs implemented at the LLC level some same functionality some other standards implemented at the MAC layer so it's a it's kind of mostly the data link layer is technology specific because it varies from technology to technology Ethernet will have a different thing versus Wi-Fi and so on so it's totally up to the standard to define what functionality it will call LLC what functionality will call MAC typically LLC is something which is common across like it will deal with some kind of so for example if you are doing reliable some session management kind of a thing is managed at the LLC level MAC will often look on the media access control issues but sometimes that functionality for convenience is integrated as part of MAC so we take as a whole that this is the function of this so when we say link layer it's in general I mean at least in the teaching level unless you are working on the standard and are contributing to the standard at the teaching level I prefer not to make any distinction I'll just say link layer supports all these functionalities and media access control is a terminology I use just to define the protocol that does media access control and basically for wireless we give more focus on this MAC layer otherwise we take as in general the DLL does all these things yeah yeah yeah so in media access because other things are like some other aspects of it are taken care of LLC MAC will deal with the CSMA CD sorry CSMA yeah yeah and when we talk about the error detection I mean the error control and flow control is the two service are the two services of DLL so when we consider about error control does it contain only error detection or simultaneously correction as well it again depends on standard some standards for example cellular standards do implement error correction where FEC is included as part of the part of the standard but Ethernet does not do in fact yeah it doesn't do error correction so it's totally a function of the standard so link layer as I said what functionality is implemented is totally a function of the specific standard so when you teach the subject for the undergraduate students when you talk about the DLL should we go for the error detection or error control as a whole or should we focus on detection separately and correction separately or basing on because they study it in general computer networking yes so in general what should you focus on first teaching them so when I teach I teach it more as a concept independent like link layer can support error correction error detection error detection these are the techniques error correction these are the techniques so I mean at the link layer you need to support in certain so we talk about the distinction between why so I probably I don't know if I uploaded this video this some not all videos I have uploaded on the website because I wasn't sure whether there was some corrections had to be made in the video so error so I talk often about why do we go for error detection versus correction so there is a tradeoff between both of them so error correction which probably I probably covered as part of the thing in there in the video so you bring about that and thereby you'd say okay I should implement error detection I should implement error correction because of this tradeoff again it's a tradeoff piece in certain situations you want to do error detection in certain situations you want to do error correction so so both have to be implemented not by the same standard different standards will implement different things and then this is the concept behind error detection this is the concept behind error correction okay one more last question ma'am like for framing we have different techniques bit stopping character stopping all those things for error detection we have the different protocols all those ARQ mechanism and for this in flow control we have the sliding window stop and wait all those things but for the reliable data transfer what basically the protocols or mechanism how we define this one reliable data transfer so reliable data transfer is so when you talk about stop and wait and sliding window these are all part of the reliable data transfer itself as the name suggests you want to transfer data in a reliable fashion now in order to do this there are different techniques like you could do stop and wait which is not very efficient then you can move on to sliding window all these are reliable data transfer itself often flow control is an aspect of reliable data transfer where you are trying to ensure that when you are transferring the data you are not going to overwhelm the receiver exactly so that's so when you talk about TCP the distinction becomes even more clear because TCP is a reliable data transfer protocol within the doing reliable data transfer you also want to ensure two other things one is congestion control one is flow control so both are part of reliable data transfer they are not separate from reliable data transfer so when you do this how do you support both these also as part of so for the data link layer we can say that to have the reliable data transfer we have these are the services and the mechanisms for us yeah so at the data link layer reliable data transfer is done using stop and wait in this but this the fact that you are manipulating the receiver buffers and sender buffers through that you are managing the flow control aspect also because if you receive for example if you have RWS as I defined in my lectures set to something you send more than that it will invariably drop so the sender should be clever that it should know RWS is what is reserved and it should not try to send more than RWS the receiver so again I mean yeah receiver has certain amount of so the link layer as I said lot of the ethernet and others do not implement this is often implement even the Wi-Fi also doesn't implement all this so this is a more a concept some of them maybe some other standard may implement it but you have to look at the standard specifications the implementation that exists TCP so it I'll talk in the context of TCP it's even there so RWS you can change the thing by at the kernel whatever I mean it's a parameter so there are certain commands and the thing which with root permission you can change the amount of buffer space you are allocating to the receiver that that that is that you can change through some commands so can we say that for having this reliable data transfer at the DLL we have the different mechanisms can we conclude in that way ma'am to support reliable data transfer at the link layer these are the protocols that are available the slope and weight which is not efficient sliding window is an improved version of it these are conceptual levels when it comes to implementation each standard will implement it in whatever fashion they want yeah there will be implementation specific artifacts thrown on top of it so then you have to focus if you are talking about a standard then you have to teach the what the standard does but often as a teacher I don't like to get into the standard specification because it's too narrow I mean you should understand the concept why is it that this is used this is not being used later you do whatever you want on top of it what is the difference between OSI model and TCP model just wanted to know that which model is used where okay so there is some history to this again I may to the very good extent I am right but I wouldn't be surprised if someone says no you're wrong I wouldn't be surprised so the way so in the initial days when people were trying to come up this all this internet was at the beginning stages so they figured out that they need to layer and this object oriented approach I was talking about where which functionality to implement where should we implement how to design this entire communication infrastructure so at that time people were discussing so as part of the discussions there was one group that had come up with the OSI and in the research community people were actually implementing it and doing certain I mean they were implementing the network layer function so originally there wasn't any distinction between the TCP and IP both were kind of merged into one thing and were implemented in that particular fashion and OSI came up with this very nice concept with this should be like this these should be the interfaces these seven layers should be there they should interact in this fashion so it it came about in that particular fashion but in academia where most of the implementation because all the internet had originated from MIT Stanford UCLA these places so these people had already implemented it in the particular fashion and people started using it more and more and they were so finally they realized as part of the implementation that some of these layers are probably not necessary like session or presentation and not only that people who had actually taken OSI and implemented it as part of the thing they were leading to often when people implement different portions and they have to be compatible you need to be very clear on what the interface is because someone will be working on the transport layer someone will be working on the network layer someone is working on the application layer so they were that model turned out to be too complex that implementations were not being very successfully used because they were running into a lot of problems whereas in academia they followed this and they were doing well and people were actually using it so over time that thing became outdated and what the academia which defined only five layers and later in fact they separated out the TCP and the network layer more distinctly and that's five layers took off and from then on we call it the internet TCP IP internet protocol stack to refer to the file layers that is actually used now OSI there was implementation but it was never really used is there any visualization tool to see all the functionalities of various layers like because first when you start teaching TCP or OSI place people will start imagining is there any visualization tool through which I can tell them this is the way it works so to some extent when you run wire shark or TCP dump you actually will see the layering that the layers that in fact in the afternoon lab you will be able to see so you will see that for example you are downloading some packets from particular website right you see the packet and for that particular packet you will see all these things being added example but you will only see it in the header format I mean you will not really see an action so if you want to demonstrate some action you need additional lab exercises to demonstrate each and every functionality example in TCP wire shark UDP TCP you can explain like session layer all those things difficult to utilize and there is no session layer implemented so you can't even see it so so this as I said in the internet protocol stack which consists of five layer there is a presentation and session which was OSI defined but the regular things don't do those are incorporated as part of the application layer itself so if you see it you will see the functionality of session layer or presentation layer as part of the application layer itself so email for example the way it displays text you see that's part of the session layer itself I mean that as defined by the session layer ma'am in reference to this slide I have two questions first one is that I have studied in number of books someone tells that TCP IP model have four layers someone have TCP I layer have five models so a theoretical concept which we should consider this is my first question four layer or five layers okay and second question is that in data link layer when a node want to send the frame to the next node actually needs the physical address of that and for which it puts the ARP packet yes in ARP packet it puts the IP address of the next node to my question IP address of the next node yes from where it come to know what is the IP address of the next node because to collect the physical address it need the IP address from where it okay yeah so going with the first thing whether it is four layers or five layers so often I mean physical layer is often ignored just because it's assumed it is there because without it you cannot do anything but that said I would insist there are five layers because when you talk about the wireless specifically the physical layer varies from standards to standard significantly so it's not like for example in the wired domain maybe it's kind of a standard thing that they implement even there in fact even ethernet you have different physical layer the kind of cable you use varies and based on that the attenuation whatever propagation so I would say there are five layers which is physical data link network transport and application number of books specify that the name of this layer is host to network layer host to network layer host to host hst host to network layer number of books specifies the name of this layer is host to network layer which one the physical layer their specific physical layer plus the data link layer this is combined least so yeah so it is possible that they do it because most standards when they write the standard so the network the transport layer and the application layer are kind of not quite technology specific they are common across so everyone whether I use wi-fi or I use ethernet my network transport and the application layer the technology that I'm using will very likely be the same it's only the underlying wi-fi or ethernet will change so most standards specify the data link in combination with the physical layer and this varies from technology because over again wi-fi will specify its MAC as csma ca and the underlying physical layer as depends on OFDM or whatever it is ethernet will have again its MAC as csma cd and the physical layer as some ethernet standard so these things vary this is very technology dependent so often when they look at the thing this two is since it is technology dependent can be clubbed together as one and say okay fine this is something that is specified by the technology so the technology will come up with its specifications the functionality and on top of this the network transport and the application layer resides I mean it's a perception I mean we will five or four layers I mean you have to be clear there is in fact the I would say it is five because the kind of functionality of physical layer does is very distinct from the kind of functionality which a MAC layer does and each standard does distinguish between these two layers clearly because the physical layer will talk about the physical layer stuff which is all about modulation blah blah and the MAC layer will talk about how to access the media content so from my point of view I go to your point but number of times student ask that sir if I will put four layers then examiner will cross my and will not give me marks what well then this happens but I mean at a level you should also convey to the students that it is the concept that is important I mean it's not in the what you're talking about is like a terminology thing I mean you should write four or five but I mean I I don't really then it depends on what your syllabus defines in my university generally these questions comes off 20 marks and if the student is at initial level telling that four layers means he don't know anything cross this question this is happening that has to change then I mean it should it should change because there are a number of books someone is specifying four layers someone is specifying faith yeah even in standard books that is I but as I said this is the reasoning behind it I mean that if you convey to the student maybe they can write four or five layers based on the textbook and then give it next yeah I don't have a second question which is framing related to framing when we want to send the frames to the next host so what is what is happening so so the way internet has evolved this again has to do with the the history of the way the things have evolved so I mean I probably has mentioned this point but let me repeat it again people so all these devices that are implementing the internet protocols they are automated they cannot relate with names like we do so for example if I want to access google.com or whatever it's there it's a text form which you and me can relate so the machines cannot relate to that so one definitely the first step is we need we have an address which is let's say www.google.com and we want to contact this particular server now I need to first find out what the because the standard is before any communication happens you need to determine what the IP address of that particular machine is because from going from one host to other over many hops IP is what is important the Mac is not very important Mac only serves in a local area so you need to know the IP address because you don't know whether this guy is local or he's far away so you need to get the IP address so you need to get that IP address so you use the DNS service you specify to the DNS this is the name I am familiar with which is google.com give me the IP address so this service is independent we talked about DNS if you have not read it you should go through I mean you should probably know what DNS does but so you get the IP address from the DNS now one node when it is when it got the IP address it's going to assemble a packet I am asking it for the first time because first time if you are configuring the DNS even then it need the physical address of next machine to pass the packet or it will always so the next machine which it is always going to pass the address is so again even here any machine before it even starts to communicate needs to know its own identity which is its IP address. My question is when one machine want to send something to next machine it is for first time that as you told it for something domain it will ask the DNS to bring the IP address. No no even forget so let me finish my statement and then you ask your question each machine has an identity it needs to know what its IP address is so when it is this is the bootstrap time through DHCP so when it gets its IP address it or rather during this initial process it gathers certain information one is what is its IP address the second information it also gathers is what is the subnet information which subnet am I part of which basically is defining what my local area is okay this is the two pieces of information it will get and the third piece of information it will also get is if I want to contact with someone who is outside my subnet who is the router I should contact with so it gets the default IP address it will get its own IP address it will get what is the subnet which is the 10.105.star.star whatever that is my subnet so this is the three pieces of information it is going to get without getting this three pieces of information you really cannot communicate you may do local communication but you really cannot communicate outside now once you get this information what is this telling so now let's say you want to assemble a packet you got the IP address of the packet through DNS now the IP address if it is matching your own subnet that means it's a local thing to you you just brought if it's Ethernet you just broadcast it'll it'll go away but if it is not matching you know the IP address of the router so you now take this packet which is the IP packet where the destination is whatever Google but you know the IP address of your router more importantly you know the MAC address of the router also because you can use ARP to get the MAC address of your router but often this is also stored automatically within your thing all you do in this particular case is you take this packet pass it to your router by so the packet will have the destination as the Google's IP address and this is encapsulated within a MAC level packet whose destination MAC will be the router's MAC and you pass it to the router now once the router gets this packet it'll do the same thing it'll forward it further because the network protocol will ensure the distance vector or whatever who it should pass it to and this keeps going in this particular fashion. Now my one more question say in local area network it is the one PC and somewhere it will be the proxy server which is connecting to your to with the WAN how if I'm not using the DHCP administrator will assign the IP addresses to each and every machine he will assign not just IP addresses he'll assign subnet mask he will have to assign the decouled router also all three have to be assigned without which nothing can work so if you do the windows configuration whatever there are fields for this without entering these fields you cannot communicate if it's manual you have to enter if it's automatic DHCP will tell you some of these again you will see in the lab. So on the basis of the gateway it gets the IP address of that server with server say one is the proxy server local area network and there are a number of machines that are proxy server you configure yourself manually. So for example in IATB we have our own proxy server so I get into the browser settings hit use proxy I specify the name of the proxy so that the so that I am each user is specifying the default router and the DNS server information also DNS server information also often I mean it will come through the DHCP who is your DNS server you'll see all this is part of the lab so we'll in I mean once you finish the labs I think many of these things will be clear thank you. Myself Dapos Maithi from Kolagat Indian College RCIRD 1336 my question is related to that layer 3 switch or router whenever a packet came to the router or as it go upwards in every layer data link layer and network layer header part is removed and when this packet is delivered for the output destination actually again header is added at the network layer my question is who takes the responsibility to take that transfer and adding that header either the network driver software or some application software if it is a network layer functionality only the network layer will handle applications do not come into play at all so if it's a router within the router itself router itself will have three layers one will be the physical layer one will be the link layer one will be the network layer so as the packet goes up the physical layer will give it to the top layer which will remove the link layer headers pass it to the network layer network layer will now figure out okay typically routers have multiple interfaces the network layer will figure out okay I have to send this packet on let's say interface one so it will pass it to the link layer corresponding to interface one which will then again add the link layer header corresponding to that interface and then it will go through the physical layer of that particular interface and then it will go further so all this is implemented as part of I mean if you're converting your PC into a router these are all implemented again as part of the kernel often routers when they're when you're implementing the routers many of these functionalities there isn't so lot of the functionalities implemented in hardware so for example because to increase the speeds everything is like an FPGA or whatever you really have to you cannot do any processing delays have to be kept at a very minimal so things are just done extremely fast and it pushes out so there's not there's no software portion also in some of these functionalities everything is hardware they just get all the interpretation of the headers is often done in hardware and it pushes it forward so then what is the role of the driver software then the driver software again depends so drivers are typically used in the context of the data link layer so for example the role of wi-fi driver will be to implement the CSMA CA so it will so even in CSMA CA some portions of it is implemented in software some portions of it is implemented in hardware because for example you need to send an hack right after some duration which is 10 microseconds if you say I will implement in software you cannot maintain 10 microseconds so that has to go bang after you receive the packet you have to interpret do some check that the packet is properly received which is again implemented in hardware if it is properly received it will send an hack right after 10 microseconds these cannot be implemented in software level but that said for example you get a packet if it's a you want for it to even the contention aspect also figuring out what the timers are and when they fire all that is also likely implemented portions of it is implemented in hardware but if you are trying to do for example in wi-fi there are beacons that are sent all those beacons are assembled as part of software and then pass to the hardware for them to be sent on time so certain functionality is implemented in hardware some functionality is implemented in software so it's a function of the first specific technology game and my second question is in every frame there is a CRC part added at the sender side actually so in the CRC part normally CRC polynomial is employed or some other error detection mechanism imposed so CRC is an error detection algorithm so it helps you detect errors if there are any I didn't understand so it's against it's against standard specific most standards to implement CRC there are some standards probably don't implement CRC they may have their own proprietary technology or whatever it is to do error detection that means the network layer you do internet checksum yes yeah so there are different so for example at the network layer the error detection is done via checksum so that is something it is implemented at the link layer some technology is not all do CRC some technologies use CRC to implement it myself Rajesh Thakur from SJCitya Shindore my question is related with the DSCP my question is why the response by the DSCP server is broadcasted at link layer if you are dealing with a host who does not have IP address to begin with in fact it depends sometimes it is not quite broadcast it is unicast also it is a function of whether what is the status of the particular host now if you are starting out with no IP address at all the only way you can receive the reply is if it were broadcast because there is nothing you can target the thing but if you are already have an IP address and you are renewing your lease then it will come I am considering if suppose the request is sent by the host the DSCP server now my question is why this is broadcasted at link layer no IP not a matter because the client has sent the unicast request to the server at link layer so there may be a unicast response from the server at link layer not network layer because the server knows the MAC address of the client no you are assuming that the DHCP server is on the same subnet as the client that is requesting which need not be the case DHCP server may be some other location it may cover many subnets in which case often this goes via relay so you go via relay to the DHCP server in which case I mean the DHCP server really cannot broadcast so DHCP server for example if like something like IIT Bombay where for whatever reason we have a scarcity of addresses which is not because we use a private IP address it's not true but it is possible that I might write one DHCP server for CSE, EEMath whatever in which case it's residing some place you don't typically want to put one DHCP per small subnets because then managing the IP address is kind of you just want one central location where it's managing many places in which case it's not in the same subnet if it's not in the same subnet it's but if the DSCP server receives the request via some relay in that case the response by the DHCP server is unicasted to the relay only yes but my question is different one suppose okay if again I can consider the relay the broadcasting by the broadcasting of the response is done by the DHCP relay in the subnet or in the villain of the source client at link layer only only at link layer I'm not considering the network layer okay so there are again a few reasons which I thought I had asked this question also but in any event so there could be multiple DHCP servers also so it's not that you are going so they this for example three four subnets may be served by multiple DHCP servers just for redundancy fault tolerance purposes so often when you are being you when you do a request you are asking for an address any of them may reply often when you're talking about the response being broadcast it is to convey the information that I have already offered something to it and this guy may act on it or so the fact that there is what is it called an acknowledgement it's DSM it's not like two-way it's there is after that you have to then again say yes I'm kind of accepting what you have given so I guess the point you're trying to make is it's possible that you could implement it without whatever I mean without having to broadcast by varying the parameter but this is true for many protocols why do they do in a specific fashion I mean there may be two three methods of doing it and it's just that broadcasting is giving information to the other guys that something is happening and you can maybe log it better and figure out what what is happening in terms of DHCP and the request response a pair and all but maybe you can potentially do it just by unicasting because you already know what the MAC address is so you could potentially directly contact it depends upon some ARC for example some of the ARC cases like gratuitous ARC and all there are there are kind of unicast things are also done so sometimes I mean this is common across when you especially look at your implementations there is no reason why they do it it's one of the methods of doing so they just do it as a there may be some other reasons like this in terms of debugging or something else that helps for the same thing in RFC it is also mentioned that it is broadcasted yeah yeah because broadcast works it's not going to hurt you and broadcast typically gives additional information to other entities which are kind of monitoring the flow of packets to see what is happening with respect to the DHCP maybe if the other server sees that it has already been offered maybe doesn't have to offer it's so if some other DHCP server replied before you your own reply then it doesn't have to offer an IP address anymore so it will stop some such things can be happening this is shada from cdgi just two or three questions from my side first of all whenever we study this computer network subject we study two models is osa model and tcpip model and then we study is osa model is not practically implemented and tcpip is the practically implemented model do you think that we need another model or in other words we can say what are the limitations of tcpip model my first question is this okay and second question is this error detection is one of the function at the data link layer and it is one of the function of the transport layer also so what is the difference between these two layers in error correction okay and can we apply the same methods of the error correction what we studied in data link layer at the transport layer also and third question is that which is your favorite book in computer networking first question is is in fact that is one of the questions i personally wanted to ask you which is in fact let's view it as an exercise so we have glorified the advantages of layering i said modular design it has uh reusability code reusability and abstraction of layers blah blah i've told a lot of good things about layering is there any disadvantage to layering so i guess kind of relates to your question so tcpip layer osi was not used let's forget about it tcpip the way things have worked out as layering are there any disadvantages to this concept of layering so before you i just want you to spend some time thinking maybe discussing also in another two minutes i will take answers from you so this is a so let's finish this exercise so my question to you is what are the disadvantages of layering discuss just spend two three minutes and then i'm going to take answer think a little bit about what the disadvantages of layering potential we are go ahead one of the disadvantages is overhead additional overhead because we have to add header and trailer so that is the one of the we are adding some complexity additional packets so that is the one disadvantage okay and okay so let me in the interest of so one disadvantage of layering is there is a processing overhead so earlier if you if you want to send something in one place you could add whatever you want and then kind of push it off but now for example each layer when it is handling a packet will have to do a memory read do something and write back to the memory and then the next layer will again pull it do something write back so there's lot of packet keeps moving from layer to layer is basically results in implementation lot of reading from the memory writing back to the memory and so on so this tends to increase the processing delay of a particular packet especially the more the number of layers that means the more that's delays any other disadvantage it increases the resources cost yeah it's kind of related in the fact that you're the requirements for better processing for providing quality of services like you're talking about the overhead cost itself right the fact that you're adding more i'm telling about the second disadvantage that we have to use much more powerful machines because then only it is possible that we can provide good processing and provide quality of services yeah that is what it's related because you are increasing more processing delay if you want to reduce it you have to throw more power at it so it increases the cost of the machines also i think it's a dependency and compatibility when new standards are being added so each layer is dependent on the previous layer so if there's one problem in one layer the second the upper layer is dependent on that this is precisely why that's one of the advantages of layering is that what they do is they freeze the interface interface cannot change only the functionality within a layer can change so in fact the advantage of layering is if you so for example the network layer has been defined and now you move from ethernet to wi-fi you're not changing anything at the network layer that interface is standardized you just change the link layer from ethernet to wi-fi what indirect this is player it is not possible to know for example application layer cannot come to know what is happening in the data link layer and network layer that is also one of the drawback so another big disadvantage is what we call cross you can do cross layer optimization in fact this is area of research specifically in wireless networks because you do want information to be passed on from let's say the link layer to some of the higher layers by let me give an example so for example when you're choosing the network path right you may want to know what the bit error rate on a specific link far away is like if it's your own link you can get that information because you're directly in contact with your link layer but the link layer that is five hops away is not going to give information to the network layer which is five hops this side that it is experiencing this much loss rate because you don't permit peer to peer communication is only between the link layer that is there to this link layer that is here you it will not communicate with the network layer that is residing about the link layer of let's say host one but if you had that information maybe you would have selected your network path better okay yeah so this there are things like this which you can do based on cross layer optimization which layering makes it very difficult so in wireless when you move you try to no more maintain strict layering you do permit interlayer communication which doesn't follow the strict procedure hello ma'am we can easily snoop the layers huh hack the layers snoop the layers yeah we can hack the layers that is only within your own machine you cannot hack for example let's say the example I was giving is let's say there is host one there is host two host one router one router two router three and router three link layer is experiencing some losses how would you get this information on host one network layer even if you whatever hack you can hack within your own machine but but I'm saying hacking is violating the layering principle anyway I mean you are that is what wireless networks typically do you do hack it such that you don't maintain the strict layering because it has a disadvantage in the interest of time specific to this question if you have to add something which I have not covered which is cross layer optimization is it cannot do with this one of the disadvantages there are many examples of cross layer thing I don't want you to go into the examples if you understand the concept that's fine and the overhead if you have any other point another drawback is related to the since these layers has got precedence constraints so cascading aborts of packets is possible so that is a disadvantage of layering mechanism what cascading of cascading aborts of packets like if one layer has committed one mistake of form like processing of packets and that is processed further so it happens like you have to about that packet because of not correct process by the preceded layer but that one to some extent that is why we have all these error detection kind of at each layer such that at each layer if you do detect you kind of drop the packet then and there but that is going to increase overhead once again yeah I mean yeah yeah it will yeah it will increase the overhead for you to implement this additional functionality yes reliability if more number of layers then our system is going to be less reliable yeah I think this relates to his second question so I will get to that point so what was your second question can you repeat once more this error detection is one of the function of data link layer yeah and the correction is one of the function of transport layer transport layer doesn't do error correction it does okay fine let me refresh so I guess the question he was so we are moving on to the next question which is some functionality let's say reliable data transfer where basically you are doing error detection and what I will call error recovery error correction has a specific node so let me distinguish three terms one is error detection which is detecting some packet is an error error correction is a method where you add redundant information into the packet itself such that the receiver can correct the error without anything else coming from the sender error recovery is a mechanism where often it is used in the sense that error correction also is doing error recovery but the typical usage is once you detect something is an error you contact the sender sender is going to retransmit the packet this is not error correction this one is error recovery as I call it but error correction is also a form of error recovery but let me distinguish in the sense that TCP the transport layer does this ARQ kind of a mechanism automatic repeat request is like you it gets the packet back from the sender now the question is which layer should implement this functionality do you implement it in the link layer should you implement it in the transport layer what is what is what is to be done now there is this seminal paper in networking called the end-to-end arguments I have the exact title I don't know but if you search end-to-end arguments in networks you should get hold of this paper so what this thing talks about is if there is certain functionality that you want to implement as part of this entire computer network like for example routing is a functionality media access control is a functionality just like that if you want to implement this reliability as a part of the functionality which layer should you implement it do you implement it at the link layer do you implement it at the network layer do you implement it at the transport layer or do you implement it the application layer so what this paper argues is you should always implement it at the highest layer possible from the protocol stack where highest layer means physical layer is the lowest highest layer is the application layer the reason the paper gives is that suppose you implement it at the link layer and not at any of the higher layers I will say I will implement reliability at the end link layer in other words I will ensure that a packet when it goes from point host A to host B if it got lost I will retransmit the packet and somehow ensure that it will get to host B now what can potentially happen is find this packet got all the way to host B now the host B network layer while it is processing the packet it could corrupt it or it could drop it then who is going to recover this packet it's now the application layer has not seen this packet now so applications are the ones who are handling in fact all this communication functionality is to support the needs of the applications they know best as to what is happening to them because whether network layer fails link layer fails any layer fails the application will finally get to know because it didn't receive whatever it was intended to receive so the best place to implement any functionality is the at the higher most layers because whatever you do for example you talk about duplicate packet suppression you would let's say you implemented the link layer now what if your transport layer when it is doing its functionality duplicated the packet now if you some implemented here application is now going to receive duplicate packets so this is the concept between what is it the end to end arguments so the higher up you implement the best it is so when it comes to reliability the way things are is if but this is a good argument to say where the functionality to should be implemented but certain situations it is important to implement the functionality at the lower layers also otherwise your performance is going to take a major hit so for example let's say you're sending packets and at the link layer the loss rate is rather high so it is kind of dropping the packets now if you don't recover them at the link layer you are not going to react to them until they reach the end and the other endpoint communicates so this adds a lot of delay in the communication so it's an optimization thing so sometimes if loss rates are not bad implemented the higher layer the loss rates are high implemented at the lower layer also it's not implement only at the link layer implemented at the lower layer also it's in in addition so when we teach we follow a lot of at least I refer to two three textbooks Peterson and Davy is it's written with the systems approach so it's kind of more hands-on so that's what we used to Kuros and Ross and Peterson and Davy both of which I kind of use interchangeably other than this rest of the textbooks I have Tannenbaum I know many people use but I thought it focuses more on the lower layers it's not quite a systems when you do a lot of hands-on implementation kind of a thing I find these two are more geared towards that then Tannenbaum seems more of a theory to me can you spell the name of the publishers this I don't know computer networks at top-down approach is Kuros and Ross the other is computer network systems approach is Peterson and Davy anyway I'll put up these in fact I should have put up I will put up on the website itself I realized that I didn't put up I'll put these books up names of the books that is not my question is that first question can we exclude the network or IP layer while we are going to communicate within a LAN and all the computers are connected with the switch only so again the way things have evolved right now as far as in theory yes in practice no just because your machine does not know how to communicate without an IP address actually the communication in a hop to hop is basically based on the mac identification mac address that is what I said in theory yes you can communicate but as I said the way things have evolved a machine needs it doesn't know I mean it'll it needs an IP address before it can communicate because that's how things have evolved and it expects an IP address for it to communicate man second question is what is the difference between simulation and emulation that means simulator and emulator okay simulation is basically where it's a piece of code that you use to so typically for example ns2 simulator that you're going to see is an event-driven simulator so whatever functionality you want to implement so for example you generate a packet it creates an event this packet now has to go to the other end it creates an event of a reception so it kind of is simulating the flow of packets in that particular fashion emulation is where you use existing in like for example if you already have tcp as part of your system and you want to use the tcp behavior that is a kernel code that tcp already has and you want to use this to feed it into some other simulator or to mimic the actual tcp behavior but at the same time it's not a real life you're not actually using an implementation test but you're using the kernel code and doing something on top of it to get some results so anything that involves actual implementation and your kind of doing will be an emulation emulation of in consequently there is ns3 has been released since 2007 and it's very good i have been working since last three years they have a imprim what release a version that is called the network stack cradle yeah nsc yes and there's one the same yeah nsc is the same thing so what you do is your network simulator runs a tcp code so often the you are you have the as part of the network simulator there is tcp code someone wrote and that is doing the behavior of whatever tcp reno taho whatever but the implementation which is linux unix or linux specific implementation will be much different from that particular code ns2 provided and often the behavior when you do simulations is going to be different from the linux versus the ns2 or ns3 provided code but if you want to capture real-time behavior where you want your packets to go through the protocol stack and only at some point enter your simulation you can use the cradle to do that so you actually generate you use so your packets are actually going through your protocol stack and finally at some point before they are exiting at some point at the network layer or the link layer wherever you want to capture from that point on you feed them into your simulator then you can you can mimic multi-hop networks whatever it is and then again at the end point you take it and again pass them up the networking protocol stack to be analyzed at the application layer or the tcp layer last question i will try to give the answer of my colleague that is called the why dhcp is broadcast actually to achieve the higher reliability and all the medias is working on the sharing mode so whenever it broadcasts so other can also listen and record the ip and mac pair for further communication as i think dhcp broadcasting rather than unicasting secondly the question okay that i don't i don't arp is what arp does the mapping dhcp i don't think any others listen to dhcp as far as i am aware they do not listen to the dhcp messages and act on them arp they act arp is a given that they act yeah such question what is jitter actually okay okay jitter is again another metric which i have not covered so this is more it makes more sense in the context of videos so what matters in lot of this video audio is the interspacing between two packets so for example you send packet one packet two separated by let's say 50 milliseconds you want the spacing to be maintained at the receiver ideally but often the spacing will vary so it may go by once it may be separated by so you are sending a stream of packets each separated by 50 milliseconds for proper playback of the video you want the spacing to be roughly maintained but what jitter why you do you measure jitter is sometimes the spacing is 100 milliseconds sometimes the spacing is 20 milliseconds so it kind of varies over time this results in pauses and stalls in the video if the jitter is like if the spacing is not maintained because the way videos plays at bank at this time it needs the packet to display if it's not coming then it results in a stall so jitter tends to capture the inter packet spacing whether it is being preserved or not presently we are seeing that more and more security is trying to be incorporated in the higher layers for example the application layers people are going for software to define security in that case so i just want to i have a small doubt because as we are trying to work more on the application layers on the other we are trying making it more vulnerable for example for the past 30 years we are thinking like tls ssl are all the secure protocols and recently it is again exploited and so on before using the legal http traffic to exploit the downlayer activities as well so even though we know that when you're going for more and more software defined protocols we are actually making more and more loopholes to be exploited then why we we still stress more that we should work on the higher layers okay this is a security question which i'm not an expert in security but still let me answer uh so as i said the end to end arguments that i was mentioning about so the best form of security you can have is application to application if provided you are very confident of the application developer that he has done the right job in implementing security so so for example you want to send securely something from one host A to host B ideally the end to end arguments say that wherever if you implemented the lower layers then there will be vulnerability at the higher layer so ideally you should implement it the highest layer of the protocol stack which would be the application layer and that is what majority of the current thing also does so for example if you you're sending something and there is wi-fi and wi-fi being a broadcast then you can potentially snoop on the packets and do but if you're doing application layer security you you can't really do anything about it because it's encrypted so that way application layer security is a good mechanism to have but what often happens is people who are implementing application layer security this is not like one standard body everyone comes up with their own applications today email tomorrow some other there are a lot of web browsers whatever it is the application is a there are tremendous number of applications now you need to trust them that they have done a good job of implementing their applications in a secure fashion so for example recently there was something about a vulnerability in ssh which like got i mean it's a it's a huge thing all facebook everyone was like talking about it so if there is no so one level is not enough so if you really want a reliable communication where you don't quite trust the applications to have done a good job it's important to do it at at the so often you do at wi-fi level the one link layer because many applications probably don't do at the application layer so for those applications that are not doing it it's good at least some level of security you're providing at the link layer at the network layer there is ipsec which again is this kind of a secure thing so as far as security is concerned one is often is not enough because of the fact that you don't trust them to do the right job so you try to do it at multiple levels and not all use up security at the application level even then if you really want to somehow provide any added feature you try to do it at the network layer and the transport layer if it's a security question i would say let's take it outside just because this is not the focus of the workshop i have two questions ma'am first of all in physical layer up to what extent we should discuss the encoding mechanism in for the student purpose up to what extent we should explain the encoding and second question is we can't add the new functionality in layer architecture then it's advantage or disadvantage because some student think that it's advantage for the layer architecture and some student argues no ma'am it's a disadvantage for that we can't add new functionality so explain it's advantage or disadvantage okay so related to the first question physical layer as i said if you're teaching a wireless course i would say you probably have to spend a lot more time at the physical layer because there's a lot of stuff happening at the physical layer wireless is more or less the first three layers are there is some changes specific to wireless but most of the action is at the media access and the physical layer so i do tend to go a little bit more but for regular computer networks whatever i have covered some they should have some idea of what's happening to the bits when it goes on goes on the wire so whatever topics the three topics i have said is in fact i i normally also talk a little bit about modulation also the passband modulation just so that they know that in wireless at least something else is happening but often whatever i've given the three videos i've said is more or less what i cover with the physical layer now when you talk about functionality at whether add you cannot the concept of layering is that if you want to add some additional functionality at a given layer you don't have to touch the other layers you just need to make changes to that specific layer so that is the advantage of layering in that you're not touching anything else you're just touching that specific thing but i don't know what you mean by disadvantage because well i don't know if this is what you mean once something is standardized like for example wi-fi is standardized and you're following a specific standard it's not easy to add any more functionality it's frozen the standard is frozen but often the standards versions comes for example in wi-fi itself you started with ito 2.11 b g a n e s blah blah blah it keeps on it's a huge number that goes on so over time if there is a functionality which people find is extremely useful that it is important that the standard have they come with up a new version and add it in that new version and then again it kind of takes over so over time it keeps getting updated so on so forth lunch break it's time is up