Changes between Version 29 and Version 30 of GENIEducation/SampleAssignments/OpenFlowLoadBalancerTutorial/ExerciseLayout/Execute


Ignore:
Timestamp:
07/10/13 13:57:34 (11 years ago)
Author:
shuang@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GENIEducation/SampleAssignments/OpenFlowLoadBalancerTutorial/ExerciseLayout/Execute

    v29 v30  
    3737 - '''Unix utilities'''[[BR]]
    3838 You will want to use a variety of Unix utilities, in addition to the tools listed in [http://groups.geni.net/geni/wiki/GENIEducation/SampleAssignments/OpenFlowAssignment/ExerciseLayout ExerciseLayout], to test your controllers. The standard ping and ''/usr/sbin/arping'' tools are useful for debugging connectivity (but make sure your controller passes ''ICMP ECHO REQUEST'' and ''REPLY'' packets and ''ARP'' traffic, respectively!), and the command ''netstat -an'' will show all active network connections on a Unix host; the TCP connections of interest in this exercise will be at the top of the listing. The format of netstat output is out of the scope of this tutorial, but information is available online and in the manual pages.
     39 - '''Linux netem''' [[BR]]
     40 Use the ''tc'' command to enable and configure delay and lossrate constraints on the outgoing interfaces for traffic traveling from the OpenFlow switch to the Aggregator node. To configure a path with a 20 ms delay and 10% lossrate on eth2, you would issue the command:
     41{{{
     42sudo tc qdisc add dev eth2 root handle 1:0 netem delay 20ms loss 2%
     43}}}
     44 Use the "tc qdisc change" command to reconfigure existing links,instead of "tc qdisc add". [[BR]]
     45 The outgoing links on node "Switch" in the provided rspec are numbered 192.168.2.1 and 192.168.3.1 for left and right, respectively.
    3946
    4047= 2. Implement a Load Balancing OpenFlow Controller =
     
    5360    - '''Aggregator''': This node is a Linux host running Open vSwitch with a switch controller that will cause TCP connections to “follow” the decisions made by your OpenFlow controller on the Switch node. So leave this node alone, you only need to implement the OpenFlow controller on node "Switch".
    5461
    55 == 2.2 Linux netem ==
    56   Use the ''tc'' command to enable and configure delay and lossrate constraints on the outgoing interfaces for traffic traveling from the OpenFlow switch to the Aggregator node. To configure a path with a 20 ms delay and 10% lossrate on eth2, you would issue the command:
    57 {{{
    58 sudo tc qdisc add dev eth2 root handle 1:0 netem delay 20ms loss 2%
    59 }}}
    60   Use the "tc qdisc change" command to reconfigure existing links,instead of "tc qdisc add". [[BR]]
    61   The outgoing links on node "Switch" in the provided rspec are numbered 192.168.2.1 and 192.168.3.1 for left and right, respectively.
    62 
    63 == 2.3 Balancing the Load ==
     62== 2.2 Balancing the Load ==
    6463  An example openflow controller that arbitrarily assigns incoming TCP connections to alternating paths can be found at [http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/load-balancer.rb load-balancer.rb]. [[BR]]
    6564  Log on to node "switch", download the load balancing controller by running:
     
    6968  If you have already downloaded it on node "Switch", or found a file named "load-balancer.rb" in your home directory on node "Switch", ignore this.
    7069 
    71 == 2.4 Use GIMI Portal to run the experiment and monitor the load balancer ==
     70== 2.3 Use GIMI Portal to run the experiment and monitor the load balancer ==
    7271   - Log on to your !LabWiki Account on http://emmy9.casa.umass.edu:3005 , on the `Prepare` Column, type "OpenFlow", it will pop up with a list of .rb choices. Choose any one, and replace the whole content with the ruby script [http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/ExoGENI/loadbalancer_monitor.rb HERE].
    7372   - Log on to node "Switch" and do "ifconfig" to see the IP addresses on each interfaces.
     
    8483   - '''Note''': Do not start another experiment (i.e., drag and drop the file icon in !LabWiki and press "Start Experiment") before your current experiment is finished.
    8584   
    86 == 2.5 Fetch experimental results from your iRods account ==
     85== 2.4 Fetch experimental results from your iRods account ==
    8786 - Log in your iRods account on https://www.irods.org/web/index.php, use "emmy9.casa.umass.edu" as Host/IP, "1247" as Port.
    8887 - Download your experimental results from your user directory under /geniRenci/home/
    8988
    90 == 2.6 Change network delay and lossrate parameter of left path using tc and repeat the experiment ==
     89== 2.5 Change network delay and lossrate parameter of left path using tc and repeat the experiment ==
    9190 - use the following command to change network condition on node "Switch": here we assume eth2 is the interface connecting node "Left". '''User need to use "ifconfig" to figure out the correct interface'''.
    9291{{{
     
    9796 - To answer the above question, you need to understand the Load Balancing controller. Check out the "load-balancer.rb" file in your home directory on node "Switch". Check Section 3 for hints/explanations about this OpenFlow Controller.
    9897
    99 ==  2.7 Modify the OpenFlow Controller to maximize per-flow throughput ==
     98==  2.6 Modify the OpenFlow Controller to maximize per-flow throughput ==
    10099 - You need to calculate the average per-flow throughput observed from both left and right path in function "stats_reply" in your load-balancer.rb
    101100 - In function "packet_in", change the path decision based on the calculated average per-flow throughput: forward the flow onto the path with more average per-flow throughput. (Why? Hint: TCP tries its best to suck up the whole bandwidth)