15 | | == (1) RINA Distributed Application == |
16 | | |
17 | | Same as Part (1) RINA Distributed Application in [wiki:GENIExperimenter/Tutorials/NFV/Ryu/LoadBalancePIwithRyu Experiment 2]. |
| 15 | == (1) RINA Distributed Application == (Same as Part (1) RINA Distributed Application in [wiki:GENIExperimenter/Tutorials/NFV/Ryu/LoadBalancePIwithRyu Experiment 2]. ) |
| 16 | |
| 17 | First we will run a RINA distributed application to collect the VNF load information on the controller node. |
| 18 | |
| 19 | {{{ |
| 20 | #!html |
| 21 | <table id="Table_02" width = "1150" border="0" cellpadding="0" cellspacing="10" > |
| 22 | <tr> |
| 23 | <td> <img src = "http://csr.bu.edu/rina/grw-bu2016/tutorial_files/image068.gif" > </td> |
| 24 | <td> We need Java installed on the <i> VNF1, VNF2 </i> and <i> controller </i> nodes to run the RINA application. Check if Java is installed using: java -version. If not, install java on <i> VNF1, VNF2 </i> and <i> controller </i> nodes in new windows (Type Ctrl-C to exit netcat on the sources and destination). To install Java, execute: <span style="background:#c0c0c0; font-size: 10pt"><b>sudo apt-get install openjdk-7-jdk </b> </span> <br> |
| 25 | <b>(If the install fails, you may first run: sudo apt-get update. In some cases, you may need to first run: sudo add-apt-repository ppa:openjdk-r/ppa followed by: sudo apt-get update.)</b> |
| 26 | </td></tr></table> |
| 27 | }}} |
| 28 | |
| 29 | |
| 30 | 1. In the controller window, download the RINA controller code: |
| 31 | |
| 32 | - ''' cd ~ ''' |
| 33 | - ''' wget !http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/rina/Control.tar.gz ''' |
| 34 | - ''' tar -xvf Control.tar.gz ''' |
| 35 | |
| 36 | |
| 37 | 2. Type ''ifconfig'' to get the IP address of the controller. Save this address as we will need this address to direct the RINA processes on the VNFs to the RINA process on the controller. |
| 38 | |
| 39 | 3. In a new VNF1 window, download the RINA VNF1 code: |
| 40 | |
| 41 | |
| 42 | - ''' cd ~ ''' |
| 43 | - ''' wget !http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/rina/VNF1.tar.gz ''' |
| 44 | - ''' tar -xvf VNF1.tar.gz ''' |
| 45 | |
| 46 | 4. In a new VNF2 window, download the RINA VNF2 code. |
| 47 | |
| 48 | |
| 49 | - ''' cd ~ ''' |
| 50 | - ''' wget !http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/rina/VNF2.tar.gz ''' |
| 51 | - ''' tar -xvf VNF2.tar.gz ''' |
| 52 | |
| 53 | 5. Now we will change the IP address in the RINA configuration files for VNF1, VNF2 and controller, so these RINA processes can talk to each other. |
| 54 | In the VNF1 window, execute: |
| 55 | |
| 56 | - ''' cd ~/VNF1''' |
| 57 | - ''' nano ipcVNF1.properties ''' |
| 58 | |
| 59 | At the bottom of the file, change the '''''rina.dns.name''''' and '''''rina.idd.name''''' to the IP address of the controller. The following screenshot shows an example. |
| 60 | |
| 61 | {{{ |
| 62 | #!html |
| 63 | <img src="http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/pics/DNSIDDConfig.png" hspace=50> |
| 64 | }}} |
| 65 | |
| 66 | In the VNF2 window, execute: |
| 67 | |
| 68 | - ''' cd ~/VNF2''' |
| 69 | - ''' nano ipcVNF2.properties ''' |
| 70 | |
| 71 | At the bottom of the file, again change the '''''rina.dns.name''''' and '''''rina.idd.name''''' to the IP address of the controller. |
| 72 | |
| 73 | In the controller window, execute: |
| 74 | |
| 75 | - '''cd ~/Control/RINA''' |
| 76 | - '''nano ipcControl.properties''' |
| 77 | |
| 78 | At the bottom of the file, again change the ''''rina.dns.name'''' and ''''rina.idd.name'''' to the IP address of the controller. |
| 79 | |
| 80 | |
| 81 | |
| 82 | 6. To run the RINA application, follow these steps (make sure you installed Java as noted above): |
| 83 | |
| 84 | o In the controller window, execute the following commands: |
| 85 | |
| 86 | - ''' cd ~/Control/RINA/''' |
| 87 | - ''' ./run_controller.sh ''' |
| 88 | |
| 89 | o In the VNF1 window, execute the following commands: |
| 90 | |
| 91 | - '''cd ~/VNF1/''' |
| 92 | - ''' ./run_VNF1.sh ''' |
| 93 | |
| 94 | |
| 95 | o In the VNF2 window, execute the following commands: |
| 96 | |
| 97 | - '''cd ~/VNF2/''' |
| 98 | - ''' ./run_VNF2.sh ''' |
| 99 | |
| 100 | |
| 101 | |
| 102 | You should see output on the controller window as shown below: |
| 103 | {{{ |
| 104 | #!html |
| 105 | <img src="http://csr.bu.edu/rina/grw-bu2016/nfv_ryu/pics/subInfo.png" hspace=2> |
| 106 | }}} |
| 107 | |
| 108 | {{{ |
| 109 | #!html |
| 110 | <table id="Table_02" width = "1150" border="0" cellpadding="0" cellspacing="10" > |
| 111 | <tr> |
| 112 | <td> <img src = "http://csr.bu.edu/rina/grw-bu2016/tutorial_files/image068.gif" > </td> |
| 113 | <td> <i> The RINA application on VNF1 and VNF2 should be run as soon as possible after the RINA application on the controller is started. If you wait for too long, you will get <b> null</b> values for CPU usage, as the controller's RINA app is not able to subscribe to the CPU load of the VNFs. </i> If this is the case, you should restart all RINA processes. |
| 114 | </td></tr></table> |
| 115 | }}} |
| 116 | |
| 117 | |
| 118 | '''Note: the RINA distributed application also passes the intrusion detection results from the VNFs to the Ryu controller. This information is not used in this experiment, but will be used in [wiki:GENIExperimenter/Tutorials/NFV/Ryu/HandlingIntrusionwithRyu Experiment 3] when handling intrusion traffic.''' |
| 119 | |
| 120 | |
| 121 | |
| 122 | {{{ |
| 123 | #!html |
| 124 | <table id="Table_02" width = "650" border="0" cellpadding="0" cellspacing="10" > |
| 125 | <tr> |
| 126 | <td> <img src = "http://csr.bu.edu/rina/grw-bu2016/tutorial_files/image022.gif" > </td> |
| 127 | <td> <i> To stop all RINA processes running on a VM, run <b> killall -v java </b> </i> |
| 128 | </td></tr></table> |
| 129 | }}} |
| 130 | |
| 131 | |