 The next project we have in line is the network simulation and bandwidth monitoring Managed by Mr. Rahul Deshmukh and mentored by Mr. Amesh Srivastav This project provided simulated internet in LAN environment to give different network parameters and monitor the bandwidth and packet of application The team is here so let's start with the presentation I am Shree Leela and we are here to present our summer internship project Our project is network simulation and bandwidth monitoring Our project was to develop a tool for bandwidth monitoring For monitoring the bandwidth So why should we go for bandwidth monitoring? Every application that we use consumes some amount of bandwidth And if the conception of bandwidth is more Then we are paying for more for the application It is more costly So if we can bring down the amount of bandwidth the application is using Then it becomes more affordable and it cost reduces So for this to reduce the bandwidth For this we have to rigorously test the application in various network parameters So for this we have developed a tool which can simulate the environment For various parameters and give the results so that the bandwidth can be reduced So what we are doing here is first we are simulating the environment with parameters And then we are monitoring the results So this is the flow diagram for simulation That is the client system and this is to the application that is to be tested Now when the client is accessing the application The package is routing through our server and we are creating the environment there A virtual environment there where the results Where from where we can get the results like the behavior of the application Now this is the monitoring part once the environment is simulated Then we go for the results part here once the environment is simulated Now after that it sends the data to our server from where we can get the behavior of the application Now after this we have the results part this will be continued by Sampath So basically what we have here is the results that we have generated We want to actually test how much bandwidth our application is using under different environment So the client might be in 54 kbps like broadband connection or any other situation environment So we want to know how the client works how our app is working under that environment So we have to test it in the lab so that is what simulation does It brings that environment into our lab so we can test the client like we have a client And we can test that under that environment So the next thing is once you have simulated it so once we have generated a virtual environment for that We want to test our application so once we test it that is monitoring part So once we run some scripts on the client end and generate these results I will explain how we are doing that and these are the results that we have generated So this is basically a graph of the bandwidth utilization of a video conferencing tool So this is how the bandwidth is varying with time So a developer can actually use these graphs and improve upon his code to reduce this bandwidth utilization So these are the technologies that we have used We have used Django backend as a server so our toolkit our tool will have a Django server running And what we have to do is basically prepare the client So we make a connection with the client and run some scripts on the client when it is actually When it is contacting with our application and get some data to our server And we analyze that data and generate graphs So that is what you are doing and we will show a demo right now So what data is the client sending? The client is sending data like bandwidth uploads, bandwidth uploads, bandwidth downloads And other data related like the percentage of packets in a particular like What are the percentage of packets in this size like 100 kbps, 100 kbps to 200 kbps So if you want to know what is the percentage of packets in that So how do you know that these are the statistics So basically what we are doing is we have some scripts written in different machines So we have to prepare the client for this test I am not asking, I am asking something So why you want to simulate, this is the first question And what sort of data should actually be going from client to server That should be taken from somewhere from a real test environment Or something where an application is available already So are you using any simulation package or NS2, NS3 So simulation is like we create other real time environment into our lab So you want to test our No but you know that there are simulation packages available Network simulation? Yes Oh you are testing on a real machine and it is not simulation No simulation of the networks So it is not simulation Internet Right Okay so Not simulation So what we are doing is we add some commands We route the packets through our server, our toolkit server Route the packets of our client The packets So that is our gateway kind of thing So we introduce a gateway in between So that we can actually control the flow of the packets So if I have a gateway with me I can control how much I have to send it for It is not a gateway, it is an interceptor I think It is not a gateway, a gateway is having a different meaning I can control the flow of the packets in the gateway So you are intercepting and you are sending it to the application So you know what is coming I know what is coming and I don't know how much I have to send So that is how I control the network So this is the client that we have to test And this is the application that has to be tested And this is our server, tool server, testing server So actually the packets are, the client directly contacts the application In general case So for testing purpose we route the packets through our server We add a gateway, we add commands So actually The client is in my lab, so I want to test So I can add commands in my client machine So that I route all my packets through my server So it is like a proxy Okay, yes Because we have to run some scripts to actually send our data to the server You are just a proxy Now I understand who you are, you are a proxy Now tell me why there is a proxy to run some scripts I have to actually monitor how much bandwidth is getting used So I am running a command tool T-shark So that actually monitors the packets and gets me the data I don't care what you are using Your job is, I have 100 Mbps Your job is collect that scripting and keep sick on it Yeah, that is simulation That is done, sir So running a 100 Mbps is sick on it And we take it to the utility Yeah, that is simulation part The script is required to monitor the bandwidth usage That is simulation, sir Once we have simulated the network, now we also want to test it Get back that slide, yes Who will think that I have to know why, next slide This one Run script on the client's This is not, you don't send anything to the client No, we are not correct Why the client has to know you are going to your server? The client, sir, it is in my lab I want to test how it is working So I have to run some scripts on my client So that I send data to my server This is monitoring, this is monitoring the bandwidth That is simulation, once I am done Now it behaves as a 250 previous line I don't understand, you know all the packets that are going What the client system should be prepared for this Why? Client is just a stupid terminal Yeah, sir, I am running it It is a terminal right Yeah, it can wait No What system are you running on a terminal? I am running some PSAR tool On a terminal? On a terminal? Sir, I am a bad Your object, your object says the application under a bandwidth That application is an old application, it is not web based This terminal is connected to it Now you put yourself in the middle, like a property Now tell me, what are you running on a terminal? Sir, we are running, this is based more for a web based tool Doesn't matter, that does not matter You have no business to interfere with any other system You are only sitting in the middle You are going to say how much is the response That's all That is You can sit, look at the packets and know But like, if I want to run a It is for the user who is sitting there to monitor You cannot do anything to it You are just a simulator I can run jmeter on it and find out what is your problem Sir, that is what you have done, sir We are running PSAR tool It is not your job We have to run some tools No, it is for the application and the client to decide What needs to be monitored You cannot do anything Sir, I am the person who is developing the application You can be, it doesn't matter Your particular job here was to be a bandwidth monitor As a package, the only thing you can do is I am giving you the facility to create different environments What you monitor, how you monitor is your business You cannot do anything as an application So that is the other way You are the, no, that is not the way, that is the only way Sir, like I have, if I have access to the client I can obviously make my job easy by running some scripts on the client If I don't have access to my client What scripts you will run generally when you don't know what the application is Sir, if I know the IP of my application I can know how much What the application does you don't know You have no idea what the application does It may be running image processing for all you know What scripts are you going to run Which you cannot run on your machine To find out what is the bandwidth usage and average packet size and all this stuff You are sitting in the middle, you can find it out That is the other way, sir We can obviously Why do you need to do anything with some other system for what reason We can run it either on the client or on the server No, you cannot run it on the client, that is not your machine Because you don't know what the client does I know my client No, what the client can be a stupid, terminally what I am saying You are making it application dependent You don't know what is the application You don't know what it is using The application can be an image processing application Where it is not using the bandwidth You are not supposed to know the application at the client At all So that is the other way of doing No, that is the only way of doing There is no other way You are not drawn the boundaries properly Your boundary is to simulate Different network conditions That is the first part, simulate Monitor depends on the application Because you don't know what to monitor I know the application IP So I can route my packets and find out what is the That is what you do as a proxy, right? That is what I am doing What the application wants to monitor The behavior of the application under this network condition What it wants to monitor you don't know That is why you cannot run a script We only want to monitor the bandwidth That is If that is your only objective, you can do it sitting on your proxy That can be done Correct Why are you interfering with somebody else? Because he may need to monitor Under this network condition What is my color change? For example, how will you monitor that? We are only monitoring the back That is the application requirement My application is designed for low network I will do white, white and black For high network bandwidth I will do red, green and blue That is what I want to see whether it works or not So that is Correct So you don't know what the application requirement is So you cannot monitor it All you can see is You sit here and do it That is what my objection was You can't do it I gave you an example now Tell me what you are going to run This is not applicable It is an application Correct You are providing a tool Measure the performance of the application Under different bandwidth conditions I want to see So that is for web clients only Only the If you want to monitor If you want to monitor I solved that problem also I made a web client If you want to monitor the bandwidth Upload and download Then that is done We can do that That is your objective Now tell me all these scripts How does it help me to find out Whether my application which is designed To give black and white under certain network conditions Three colors under certain network conditions Four thousand ninety six Two fifty six White color We will test our client That is my application How will you measure it I will run the application on my client And I will monitor it I will know if my application is running properly or not So I will But running the application is properly You don't know what test the application Application developer wants to do You are only giving him a very nice tool You have forgotten what your purpose is Your purpose is to throttle that bandwidth That is all your purpose That is the first part Secondly, you have not given I will tell you what you have not given It is a very good thing that you are doing What you have not given is Why not simulating error rate Correct Monitor it from the client What he monitors from the client side Is the application For each application it will be specific That is what I wanted to tell you For each application it will be a specific monitoring So you cannot interfere with it That is outside your scope You will adjust how to give all these network conditions So you are adding all those parameters Very good Go next Go next You cannot do anything on the client side That is not allowed So these are the three options we have One is simulation then monitoring and graphs We can simulate the network That is the first thing So these are the PCs that we have These are the listed clients that I want to test Applications that I want to test These are the clients that I want to test We can add PCs here We have to have the user name and password of the PC Then we can run on so that we can use it We have features like we can scan the network And find what clients are up So let us say I want to test on many clients I can see what clients are up in my lab And add them directly without having problems And we can even update it dynamically Like if I shift from one position to other in my lab I can update the IP of my client No, I am absolutely confused Can you use it to test my acquisition Under different network conditions What you will do I am very confused I have a client in my lab And I will run some scripts on it With your server IP in it So I will tell my client that I want to test the bandwidth Of this IP So I will capture all the packets Of that your A6 or IP And then analyze them And send it to my server And there I am analyzing it I will capture the packets from my client Anyway it does not matter you go I have not understood what you do I just imitate I do not think that is correct You are supposed to provide the bandwidth We have done that sir That is all you are supposed to do What the effect that is to be monitored is done Somebody else should actually monitor you That you are not providing Somebody else I should be able to monitor you So this is actually Whether I have asked for 256 kb Are you giving me 256 kb or giving me 1 megabyte This we will show right now You are not monitoring me You are a package These are the parameters that we can give to our line So like we can give the bandwidth, the loss and the delay Then now the network is simulated So it will behave as a line with 1000 kbps bandwidth And it will have a delay of 100 millisecond So once we start the So basically now the test is running on the client And I am getting the data to my server And I want to see how it is working actually So I will generate some graphs right now To see what is my bandwidth utilization upload and download So these are the graphs that we will generate right now So these are the graphs The first one is bandwidth graph And all other data that we are getting And we have given even pie charts For the percentage of packets With different sizes you know So that we can actually monitor what Percentage of packets are in this size And these charts Are put into the client or by your server My server Sir I am the person who is testing the whole thing I have control of my client as a server I am the gateway Control of the pie chart also I am storing the data From my client in a database And then I am generating the I know that your server is working Have you tested it on FTP for example Yeah we have tested it on We have generated I asked a very simple question Have you tested it on FTP Have you tested it on a web conferencing tool And then useless I ask a specific question Because if I run FTP At the end of that FTP I know how many bytes are transferred And I know what is the Time taker Then I can check whether your promise Is you are giving me or not So simple test you are not run And you are claiming that you are successful By producing your own results No these are the results generated by That I am working well You can verify it using other tools So you can rust No I can verify that different matter You have not verified using FTP We have used Why not As simple as that We can verify it with FTP Web server is useless FTP is a very simple mechanism FTP are Remote copy any damn thing Where simple bytes are transferred We can do that You can do hundreds of things What I am saying is This is a common thing with all of you people If you have written software You have to test your software The software test cannot be by producing your own reports I should have had a test Saying I have run FTP with 256 kb 64 kb 16 kb 1 kb These are the results 1 kb 64 kb with this bit error rate These are the results We have to add a testing so that you can actually Our purpose I don't need this whatever the charts At all What will I do with the charts We can monitor the bandwidth usage You are giving me That is the maximum bandwidth My client won't use 256 kbps Why do I need to test Let's come to that This is the maximum bandwidth that I can allot to my client So anyway if I have 50 kbps connection that is the maximum bandwidth I can have So it is not necessary that My application uses the full 54 kbps I need your tool to check whether the application works Properly under 256 kb I need your tool for an application which works with 1 kbps Do I need your tool I need your tool to find out If my bandwidth is less How does the application behave So it is not maximum bandwidth I am allotting Application is using all the bandwidth 256 kbps If it wants more We want to know how much it is performing Under 250 kbps Application always wants more How much of 256 kbps is being used By the application is a useless figure It is not necessary Let us say it is using less than 256 kbps 64 kbps All these tests Fine 250 kbps will work It is a video conferencing tool Then it will use 3 mbps How does it behave under 250 kbps There is no need to use your tool For an application which requires less than The bandwidth asked for So you are going to use 256 kbps All the tests We will throttle the network But basically when you throttle The network to an application Which requires the bandwidth That means all your charts Will show full 256 kbps being used Why do we need charts Let us say it is using more It is using less than 256 Then we can see how much it is actually using It is using less than 256 I will not use your tool It is a very happy application Why I have to do all this business There are two things One is the upload bandwidth Another is the download So how much is the upload and how much is the download It is being used in the two sessions And then they are also analyzing the amount Of packet size it is being used Out of the 256 kbps How much is the upload and how much is the download Download That information I have to come to you We have shown When you use this 256 kbps only So that is how much the client Is contacting How much it is downloading because that is what we Download upload you know So these are the client These are the packets That is why you did not That is precisely why you did not use ftp Correct And you are useless for it We can verify That this is actually working You can verify my tool with ftp I send this much data It does not differentiate between up and down Because there is no meaning of up and down in ftp There is I can start two sessions That is how we can test our tool Can I start two simultaneously We can assimilate it on Many multiple pieces One from this to this And one from this to this Only once I think I am not sure So we can test it What is the validity of my data So you are not sure of my data So that we can test it using ftp So that we actually know that my tool is actually performing Correctly and it is giving the valid data That we can do by ftp So you send up ftp and we can actually see how Thank you