Changes between Version 35 and Version 36 of GENIEducation/SampleAssignments/OpenFlowLoadBalancerTutorial/ExerciseLayout/Execute


Ignore:
Timestamp:
07/12/13 10:09:48 (11 years ago)
Author:
shuang@bbn.com
Comment:

--

Legend:

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

    v35 v36  
    9292 - 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.
    9393
    94 ==  2.6 Modify the OpenFlow Controller to maximize per-flow throughput ==
     94==  2.6 Modify the OpenFlow Controller to balance throughput among all the TCP flows ==
    9595 - 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
    96  - 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)
     96 - 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? TCP tries its best to suck up the whole bandwidth so more throughput means network is not congested)
    9797 - If you do not know where to start, check the hints in Section 3.
    9898  - If you really do not know where to start after reading the hints, download the answer directly from [http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/ExoGENI/load-balancer-solution.rb Here].
    9999 - Redo the above experiment (the one with some lossrate on the left path), check the graphs plotted on !LabWiki as well as the controller's log on node "Switch" at /tmp/lb.tmp and see the difference.
    100  - If you have more time or are interested in trying out things, go ahead. The tutorial is over now and feel free to ask questions :-)
     100 - If you have more time or are interested in trying out things, go ahead and try section 2.7. The tutorial is over now and feel free to ask questions :-)
     101
     102== 2.7 Try more experiments using different kinds of OpenFlow Load Balancers ==
     103 - You can find more load balancers from http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/ExoGENI/load-balancer/
     104 - To try out any one of them, follow the steps:
     105  - At the home directory on node "Switch", download the load balancer you want to try out, e.g.,
     106  {{{
     107  wget http://www.gpolab.bbn.com/experiment-support/OpenFlowExampleExperiment/ExoGENI/load-balancer/load-balancer-random.rb /root/
     108  }}}
     109  - rename this load balancer to "load-balancer.rb" by:
     110  {{{
     111  cp load-balancer-random.rb load-balancer.rb
     112  }}}
     113  - On !LabWiki, drag and drop the "File" icon and re-do the experiment as described in section 2.3
     114 - Some explanations about the different load balancers:
     115  - "load-balancer-random.rb" is the load balancer that picks path randomly: each path has 50% of the chance to get picked
     116  - "load-balancer-roundrobin.rb" is the load balancer that picks path in a round robin fashion: right path is picked first, then left path, etc.
     117  - Load balancers that begin with "load-balancer-bytes" picks path based on the total number of bytes sent out to each path: the one with fewer bytes sent out is picked
     118   - "load-balancer-bytes-thread.rb" sends out flow stats request in function "packet_in" upon the arrival of a new TCP flow and waits until flow stats reply is received in function "stats_reply" before a decision is made. As a result, this balancer gets '''the most up-to-date flow stats''' to make a decision. However, it needs to wait for at least the round-trip time from the controller to the switch (for the flow stats reply) before a decision can be made.
     119   - "load-balancer-bytes-auto-thread.rb" sends out flow stats request once every 5 seconds in a separate thread, and make path decisions based on the most recently received flow stats reply. As a result, this balancer makes path decisions based on some old statistics (up to 5 seconds) but reacts fast upon the arrival of a new TCP flow (i.e., no need to wait for flow stats reply)
     120  - Load balancers that begin with "load-balancer-flows" picks path based on the total number of flows sent out to each path: the one with fewer flows sent out is picked
     121  - Load balancers that begin with "load-balancer-throughput" picks path based on the total throughput sent out to each path: the one with '''more throughput''' is picked
    101122
    102123= 3. Hints / Explanation =