Changes between Initial Version and Version 1 of UDTExampleExperiment/VMOnly


Ignore:
Timestamp:
02/20/15 13:19:31 (9 years ago)
Author:
sedwards@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UDTExampleExperiment/VMOnly

    v1 v1  
     1[[PageOutline]]
     2
     3'''This tutorial is under development. We are actively working on updating it, if you need help please contact help@geni.net'''
     4
     5= Sample Experiment: UDT Evaluation =
     6
     7== Purpose ==
     8
     9In this experiment, you will compare the performance of UDT (UDP-based Data Transfer) to TCP (transmission control protocol) in a simple network under varying conditions.
     10
     11This experiment is based on work carried out at the University of Missouri - Kansas City, by Sunae Shin, Kaustubh Dhondge, and Baek-Young Choi. Their paper "Understanding the Performance of TCP and UDP-based Data Transfer Protocols using EMULAB" was presented at the First GENI Research and Educational Experiment Workshop (GREE2012), March 15-16, 2012, Los Angeles, CA. [https://mospace.umsystem.edu/xmlui/handle/10355/14482 link to paper]
     12
     13== Prerequisites ==
     14
     15Before beginning this experiment, you should be prepared with the following.
     16
     17 * You have GENI credentials to obtain GENI resources. (If not, see SignMeUp).
     18 * You are able to reserve GENI resources.  (If not, see [https://www.protogeni.net/trac/protogeni/wiki/FlackTutorial the Flack tutorial]).
     19 * You are comfortable using '''ssh''' and executing basic commands using a UNIX shell. [wiki:HowTo/LoginToNodes Tips about how to login to GENI hosts].
     20
     21== Setup ==
     22
     23 * Download the attached [attachment:udt.rspec?format=raw rspec file] and save it on your machine. (Make sure to save in raw format.)
     24 * Create a new slice and reserve the resources specified in the RSpec. If you use Flack, your sliver should look something like this:
     25
     26[[Image(UDTExperimentSliver.png, 50%)]]
     27
     28== Techniques ==
     29
     30You will use the following techniques during this experiment.
     31
     32=== File Transfer Using UDT ===
     33
     34Follow these steps to perform a file transfer using UDT.
     35
     36 * Log into pc1 and pc2 in separate windows.
     37
     38 * On pc1, start a UDT file transfer server, using this command:
     39{{{
     40% pc1:~% /local/udt4/app/sendfile
     41server is ready at port: 9000
     42}}}
     43
     44 * On pc2, start a UDT file transfer client, using this command:
     45{{{
     46pc2:~% /local/udt4/app/recvfile pc1 9000 /local/datafiles/sm.10M /dev/null
     47}}}
     48You should see output like the following in your pc1 window, showing the results of the file transfer. Note the transfer rate.
     49{{{
     50new connection: 192.168.2.2:55839
     51speed = 7.14472Mbits/sec
     52}}}
     53
     54 * There are three data files available for transfer tests: '''/local/datafiles/sm.10M''' is 10MB, '''/local/datafiles/med.100M''' is 100MB, and '''/local/datafiles/lg.1G''' is 1000MB. Leave your transfer server running on pc1, and try transferring each of these files in turn by typing the appropriate commands on pc2. Keep track of the transfer rates in each case.
     55
     56 * You can leave your UDT server running or stop it with ctrl-C.
     57
     58=== File Transfer Using FTP ===
     59
     60Follow these steps to perform a file transfer using FTP.
     61
     62 * For a TCP-based (FTP) transfer, there's already a FTP server running on pc1. Log into pc2, and start an ftp client:
     63
     64(You type ''ftp pc1'', the user name ''anonymous'', and any password you want, although your e-mail address is traditional.)
     65
     66{{{
     67pc2:~% ftp pc1
     68Connected to PC1-lan1.
     69220 (vsFTPd 2.3.2)
     70Name (pc1:mberman): anonymous
     71331 Please specify the password.
     72Password:
     73230 Login successful.
     74Remote system type is UNIX.
     75Using binary mode to transfer files.
     76ftp>
     77}}}
     78
     79 * Still on pc2, request a file transfer. Note the reported file size, transfer time, and transfer rate.
     80
     81{{{
     82ftp> get med.100M /dev/null
     83local: /dev/null remote: med.100M
     84200 PORT command successful. Consider using PASV.
     85150 Opening BINARY mode data connection for med.100M (104857600 bytes).
     86226 Transfer complete.
     87104857600 bytes received in 8.91 secs (11491.9 kB/s)
     88}}}
     89
     90 * You can perform additional transfers with additional get commands. When you're done, exit the ftp client with the quit command.
     91
     92=== Viewing and Adjusting link characteristics ===
     93
     94In this experiment, you'll be changing the characteristics of the link and measuring how they affect UDT and TCP performance.
     95
     96 * Log into your delay node as you do with any other node. Then, on your delay node, use this command:
     97{{{
     98%sudo ipfw pipe show
     99}}}
     100
     101You'll get something like this:
     102{{{
     10360111: 100.000 Mbit/s    1 ms   50 sl. 1 queues (1 buckets) droptail
     104    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
     105BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
     106  0 ip    207.167.175.72/0       195.123.216.8/6        7     1060  0    0   0
     10760121: 100.000 Mbit/s    1 ms   50 sl. 1 queues (1 buckets) droptail
     108    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
     109BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
     110  0 ip   207.167.176.224/0         195.124.8.8/6        8     1138  0    0   0
     111}}}
     112
     113This information shows the internal configuration of the "pipes" used to emulate network characteristics.
     114(Your output may look different, depending on the version of ipfw installed on your delay node.
     115In any case, the information you need is on the first line of output for each pipe.)
     116
     117You'll want to make note of the two pipe numbers, one for each direction of traffic along your link.
     118In the example above, they are 60111 and 60121.
     119
     120There are three link characteristics we'll manipulate in this experiment: ''bandwidth'', ''delay'', and ''packet loss rate''.
     121You'll find their values listed in the `ipfw` output above.
     122The link bandwidth appears on the first line immediately after the pipe number. It's 100Mbps in the example shown above.
     123The next value shown is the delay, 1 ms in the example above.
     124The packet loss rate (PLR) is omitted if it's zero, as shown above. If non-zero, you'll see something like '''plr 0.000100'''
     125immediately after the "50 sl." on the first output line.
     126
     127It is possible to adjust the parameters of the two directions of your link separately, to emulate asymmetric links.
     128In this experiment, however, we are looking at symmetric links, so we'll always change the settings on both pipes together.
     129
     130Here are the command sequences you'll need to change your link parameters.
     131In each case, you'll need to provide the correct pipe numbers, if they're different from the example.
     132
     133 * To change bandwidth (100M means 100Mbits/s):
     134{{{
     135sudo ipfw pipe 60111 config bw 100M
     136sudo ipfw pipe 60121 config bw 100M
     137}}}
     138
     139 * Request a bandwidth of zero to use the full capacity of the link (unlimited):
     140{{{
     141sudo ipfw pipe 60111 config bw 0
     142sudo ipfw pipe 60121 config bw 0
     143}}}
     144
     145 * To change link delay (delays are measured in ms):
     146{{{
     147sudo ipfw pipe 60111 config delay 10
     148sudo ipfw pipe 60121 config delay 10
     149}}}
     150
     151 * To change packet loss rate (rate is a probability, so 0.001 means 0.1% packet loss):
     152{{{
     153sudo ipfw pipe 60111 config plr .0001
     154sudo ipfw pipe 60121 config plr .0001
     155}}}
     156
     157 * You can combine settings for bandwidth, delay, and loss by specifying more than one in a single ipfw command. We'll use this form in the procedure below.
     158
     159== Experiment Procedure ==
     160
     161 * Set your link parameters to use maximum bandwidth, no delay, no packet loss:
     162
     163{{{
     164sudo ipfw pipe 60111 config bw 0 delay 0 plr 0
     165sudo ipfw pipe 60121 config bw 0 delay 0 plr 0
     166}}}
     167
     168 * Verify with
     169
     170{{{
     171sudo ipfw pipe show
     17260111: unlimited    0 ms   50 sl. 1 queues (1 buckets) droptail
     173    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
     174BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
     175  0 ip    207.167.175.72/0       195.123.216.8/6        7     1060  0    0   0
     17660121: unlimited    0 ms   50 sl. 1 queues (1 buckets) droptail
     177    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
     178BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
     179  0 ip   207.167.176.224/0         195.124.8.8/6        8     1138  0    0   0
     180}}}
     181
     182Note that bandwidth is set to ''unlimited'', delay to ''0 ms'', and no PLR is shown.
     183
     184 * Using this initial setting, try a few UDT transfers, including the larger files. Now try FTP transfers. Record the transfer sizes and rates.
     185
     186 * Now change the link parameters to reduce the available bandwidth to 10Mbps:
     187
     188{{{
     189sudo ipfw pipe 60111 config bw 10M delay 0 plr 0
     190sudo ipfw pipe 60121 config bw 10M delay 0 plr 0
     191}}}
     192
     193 * Repeat your file transfers with the new settings. As before, note the transfer sizes and rates, as well as the link settings.
     194
     195 * Continue with additional trials, varying each of the three link parameters over a range sufficient to observe meaningful performance differences. Record your data.
     196
     197== What to hand in ==
     198
     199 1. Your raw data and appropriate graphs illustrating changes in performance for the two transfer protocols with differing link parameters.
     200 1. Your analysis. Here are some questions to consider.
     201  a. Does one protocol outperform the other?
     202  b. Under what conditions are performance differences most clearly seen? Why?
     203  c. What shortcomings in the experiment design may affect your results? How might you improve the experiment design?
     204  d. What interesting characteristics of the transfer protocols are not measured in this experiment? How might you design an experiment to investigate these?