Notes from Homework 2
Make a copy of this document, rename it to “hw2-notes” and move it to your CSE 523 Google Docs collection. Maintain your notes in this document. Do not forget that anyone should be able to accomplish the same task by following your notes. You may find it helpful to include screenshots.
Understand the purpose of ONL
Step 1: visit https://onl.wustl.edu to provide further context of why we use ONL and what ONL provides us, please read the first five paragraphs on the homepage( from begin to “An example of such a chart is shown to the right.” )
The information on the routers is out of date and is in the process of being updated, but it is sufficient to understand the main idea.
Some important details:ONL is essentially a closed network, which means that traffic originating inside the testbed cannot reach the rest of the Internet. Additionally, the only machines that users can access are the ones they have been allocated for their experiment.
Step 2: Here is some Q&A you should know.
1. In your own words, what does ONL provide to end users?
Through a Remote Laboratory Interface (RLI), ONL provides the end users access to
open-source, extensible, high performance routers and multi-core servers.
2. What tool do users work with to create a new topology?
Remote Laboratory Interface (RLI) is used to create a new topology.
3. User configurations are sent to what entity in ONL for processing?
User configuration is submitted to the ONL management server.
4. In your own words, why might monitoring traffic counters be useful?
Because the traffic counters can be used to generate charts of traffic rates, or queue lengths as a function of time, to allow users to observe what happens at various points in the network during their experiment and to allow them to document the results of the experiment for presentation and publication.
Sign up for an ONL account
In order to use ONL ourselves, we need to sign up for an account. (If you already have an account from a previous use of ONL, you can use that account. Try logging in to make sure you remember the password. )
Step 1: visit https://onl.wustl.edu click “Get an account”.
Step 2: fill out the necessary information, and submit the application.
Here is an example
If a prompt does not apply to you, you should be able to leave it blank. For the reason why you want an account, please say something to the effect of “I’m a student in cse523 this semester.”
Remember that these applications are processed by a real person (who happens to be your Professor who will not be up at 2AM just to approve your ONL account request). However, within 24 hours of applying you should have been granted access to ONL.
Step 3: Then you will get the Email like this
Ensure the proper working environment
We need to make sure some things are in working order before we can use ONL. You can visit https://onl.wustl.edu/restricted/getting-started.html for your own reference.
Step 1: Download the Remote Laboratory Interface (RLI) from url
https://onl.wustl.edu/restricted/export/RLI.jar
Save it in a local directory at your convenience and take notes of it. We will need
the address of the directory in the next steps.
Step 2: Install java8 using following commands:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
If the outputs indicates that installation was successful, Using ”“java -version” to check if correct version is installed. You need version over 1.4.2.
If java is installed correctly, navigate to the directory of RLI.jar. In my case I put it in the folder called hw2. And then run the RLI using command java -jar RLI.jar, you should see a graphical window pops up as the following.
Step 3: ssh to the ONL base server using the command “ssh YourHost”.
In my case, I used ssh cct@onl.wustl.edu ( ssh {username}@onl.wustl.edu.
The symbol{username} should be filled in with the ONL username that you
registered under.)
Then ls the user directory. Currently, the directory is empty.
See the screenshot below for further details.
Set up the experiment
Step 1: Open a new terminal window, Set up the SSH tunnel using the command ssh -L 7070:onlsrv:7070 YourHost
In my case I used ssh -L 7070:onlsrv:7070 cct@onl.wustl.edu
Step 2: Open another new terminal window, navigate to the directory where RLI. Jar is located. (Refer to step 1 in “Ensure the proper working environment” )lauch the RLI.jar by the command java –jar RLI.jar
In my case I navigate to the hw2 folder and run the command.
Step 3: Open another new terminal window, SSH to ONL using the command ssh HostName In my case I used ssh cct@onl.wustl.edu.
You will be prompt to enter the password for your ONL account. After you type the password and hit enter, you will see a welcome message as shown in the screenshot below. If you see that your host changed to ***@onlusr, then you’re logged in successfully.
Step 4: Starting from this step, we’re going to create and commit a topology.
In the RLI graphical interface, go to “Topology” –> “Add PC2core” –> “Add Host2core” to add Host2core
It will prompt to ask you how many instances you want, choose 2 and click “OK”
Once you completed adding host2core, you should see an image pop up. It looks like only one image, but click and drag the machines apart and you will find they were placed one on top of the other. You should see two separate machines:
Step 5: In the RLI graphical interface, go to “Topology” –> “Add GigE Switch”
It will prompt to ask you how many instances you want, choose 1 and hit enter.
You will then see a gige0 is created in the middle of the two hosts.
Step 6: In the RLI graphical interface, Go to “Links Off” to add links. draw links between the switch and each of the hosts. This should create a connection between the switch and the two machines. See the following screenshot as an example with two links, 1 between switch and h1x1, 1 between switch and h1x2.
Step 7: Click “Links On” to go back to the click and drag mouse.
Step 8: Till now, we have created a topology. Starting from this step, we’re going to make a reservation and commit.
In the RLI graphical interface, go to “File” –> “Make a reservation”
It will prompt you to enter the reservation length/time, fill in the amount of time you would like the reservation for. Even if you want to poke around, 30 minutes should be a generous reservation length. Before your reservation is over, the RLI will prompt you if you’d like to extend your reservation; assuming there is no conflicting reservation ahead of you, it will actually extend them.
Then you’ll be prompted to log in. Type in the Username and password.
Once your reservation is granted, you have real hardware allocated to you during that time interval, and that hardware will be setup in such a way that it logically fulfills your topology. On the pop-up that confirms your reservation, notice the time when it starts. It may be now, or if ONL is busy it may be in the future. If it is in the future you will have to wait until that reservation time comes to take the next steps.
Step 9: In the RLI graphical interface, go to “File” –> “Commit”. This will actually initiate the setup of the hardware.
If it’s committed successfully, you should see the following screenshot.
If you run into some issues in the commit process or while the experiment is running, see the below for reference:
If there is a problem and you have already committed, wait until you can select the “File” –> “Close” option successfully. When you close the topology, the ONL control system restarts those machines to wipe their slate clean. It is not uncommon for this to fix whatever problems were being encountered. If you have waited a fair amount of time (5-10 minutes) and the option still does not present itself, you can close the RLI manually (by closing the terminal window, pkill, etc) and then canceling your reservation from the web interface. At this point you can start from scratch.
Do the experiment
In your SSH connection to the ONL base server(which should be ***@onlusr), use the command source /users/onl/.topology
This will pull the topology you have committed.
Experiment 1
Step 1: In the base server, SSH into h1x1 using the command ssh $h1x1
Step2:Use the command uname –a and see the outputs.
The outputs basically gives information about the host. Operation System, Date, Time, etc.
Step 3: Use the command ping –c 10 h1x2 and see the outputs
It shows the length/time of the transfer when we try to ping h1x2. We can see from the outputs that 10 packets were transmitted, 10 received, 0% packet loss, which is good.
Experiment 2
In this experiment, we will do something interesting with our reservation. The gigE switch that we have in our topology should ensure that there is a link between our two hosts rated at 1 gigabit per second (Gbps); gigE is short for Gigabit Ethernet. Networking researchers and practitioners often need to measure the throughput of connections. In this case, we will measure the TCP throughput between the two hosts.
Step 1: In the terminal where you still logged into h1x1, created the server on h1x1 using the command iperf3 –s –D
Step 2: Exit h1x1 and log onto h1x2 using the command exit and then ssh $h1x2
Step 3: Initiates a 10 second TCP transfer between the two hosts using the command iperf3 –c h1x1
As we can see from the outputs, there’re Bytes been transferred in TCP in 10 seconds.
Closs Experiment
Step 1: In the RLI graphical interface, go to “File” –> “Close” to close any open SSH connections to the host machines
Step 2: Go to “File” –> “Exit”, and when prompted to cancel your reservation, select yes. You can close your remaining terminal windows at this point.
Finalize this file in Google Docs.
Make all of your final edits; make sure your work is neat and easy to follow. Remove the “cross-out” from the following drawing.
Finished!