Changes between Initial Version and Version 1 of GENIExperimenter/Tutorials/NFV/Ryu


Ignore:
Timestamp:
10/19/16 16:50:59 (8 years ago)
Author:
wyf@bu.edu
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GENIExperimenter/Tutorials/NFV/Ryu

    v1 v1  
     1= NFV Tutorial using Ryu =
     2== Overview ==
     3We provide another version of  the NFV tutorial using the Ryu controller (besides the POX controller).  The differences of the instructions comparing to the POX version are included in this wiki page, and you need to refer to the [wiki:GENIExperimenter/Tutorials/NFV POX version] tutorial when finishing this Ryu version tutorial.
     4
     5== Tools ==
     6-  [https://osrg.github.io/ryu/ Ryu controller],  and a tutorial about how to use the Ryu controller can be found [http://sdnhub.org/tutorials/ryu/ here] . 
     7
     8----
     9== Part I: !Design/Setup ==
     10      - First finish step 1-3 in this [wiki:GENIExperimenter/Tutorials/NFV/DesignSetup page].
     11      - Then ssh to the VM for controller (reserved in Step 3.1), run the following to setup Ryu controller on this VM:
     12          - '''cd ~'''
     13          - '''wget !http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/install_ryu.sh'''
     14          -  '''chmod 755 install_ryu.sh '''
     15          -  '''./install_ryu.sh'''
     16      - Run the following:  '''~/ryu/bin/ryu-manager --verbose ~/ryu/ryu/app/simple_switch.py'''  [[BR]] and if Ryu is installed correctly, you should see the output as follows:
     17
     18{{{
     19#!html
     20<img src="http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/pics/ryu.png" hspace=50>
     21 }}}
     22
     23
     24----
     25
     26== Part II: Execute ==
     27
     28=== 1.     Login to the hosts ===
     29
     30Open the following windows:
     31  -      one window with ssh into ''controller''
     32  -      one window with ssh into ''OVS''
     33  -      one window with ssh into ''s1''
     34  -      one window with ssh into ''VNF1''
     35  -      one window with ssh into ''VNF2''
     36  -      one window with ssh into ''destination''
     37
     38=== 2.     Configure and initialize services ===
     39
     40==== 2.1. Use a simple learning switch controller ====
     41
     42This is a very simple example where we are going to run a learning switch control to forward traffic from s1 to VNF1.[[BR]]
     43
     44      1.     Start a ping from s1 to VNF1 in the window of  s1, which should timeout, since there is no controller running.[[BR]]
     45              '''ping vnf1 -c 10'''
     46      2.     Run the following command to start the simple leaning controller:
     47               '''~/ryu/bin/ryu-manager --verbose ~/ryu/ryu/app/simple_switch.py'''
     48      3.    Now ping again from s1 to VNF1, the ping should work.
     49   
     50====  2.2 NFV OVS controller ====
     51
     52Next we are going to run a different Ryu controller that will install !OpenFlow rules to support NFV load balancing as well as handling intrusion. With this controller, the traffic shall go from a source to destination, and duplicate packets are sent to one of the IDS nodes (VNF1 or VNF2) for Intrusion detection. The picture below shows a red line representing traffic going from source1 to destination, and the green line represents the duplicate traffic that is sent to VNF1 for intrusion detection.
     53
     54{{{
     55#!html
     56<img src="http://csr.bu.edu/rina/grw-bu2016/tutorial_files/image040.gif" hspace=100>
     57 }}}
     58
     59=== 3.     Execute Experiments: ===
     60
     613.1. First we need to download the source code and configuration files for the NFV  Ryu controller onto the controller VM. In the window of controller, run the following:
     62          - '''cd ~'''
     63          - '''wget !http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/setup_nfv_ryu_controller.sh'''
     64          -  '''chmod 755 setup_nfv_ryu_controller.sh '''
     65          -  '''./setup_nfv_ryu_controller.sh'''
     66
     673.2. Now you should have all files needed for the NFV Ryu controller. Open ''nfv.config'' file to configure the system parameters. You can use any editor to edit the file, and we l use nano here as an example.
     68         -  '''nano ~/ryu/ryu/app/nfv.config'''
     69
     703.3. You will see the details of this configuration file as follows.  Change the values of ''vnf1_interface'' and ''vnf2_interface'' to the values that you noted down in ''Section 3.3.1'' in the '''[wiki:GENIExperimenter/Tutorials/NFV/DesignSetup Design/Setup]''' section of this tutorial. These values will tell the controller which interfaces are connected to VNF1 and VNF2.
     71
     72{{{
     73#!html
     74<img src="http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/pics/configPic.png" hspace=100>
     75 }}}
     76
     77'''[wiki:GENIExperimenter/Tutorials/NFV/Ryu/LoadBalanceRRwithRyu Experiment 1:  Load Balancing using Round Robin Control with Ryu Controller]'''[[BR]]
     78'''[wiki:GENIExperimenter/Tutorials/NFV/Ryu/LoadBalancePIwithRyu Experiment 2:  Load Balancing using Proportional Integral (PI) Control with Ryu Controller]'''[[BR]]
     79'''[wiki:GENIExperimenter/Tutorials/NFV/Ryu/HandlingIntrusionwithRyu Experiment 3: Handing Intrusion with Ryu Controller]'''[[BR]]
     80
     81----
     82== Part III: Finish ==
     83
     84=== Tear down Experiment and Release Resources: ===
     85
     86After you are done with all experiments, close all your open windows and release your resources. In the GENI Portal, select the slice and click on the `Delete` button. Now you can start designing and running your own experiments!
     87
     88----
     89----
     90'''Author: Yuefeng Wang'''
     91
     92'''Supervised by: Ibrahim Matta '''
     93
     94'''Boston University'''
     95