Changes between Version 23 and Version 24 of Tutorials/m0SDN/OpenStack


Ignore:
Timestamp:
Jun 12, 2023, 4:46:27 AM (13 months ago)
Author:
jlaxman
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/m0SDN/OpenStack

    v23 v24  
    6060
    6161{{{cd ../}}}
    62 after copying local.conf to the devstack folder, uncomment and change the HOST_IP to the IP of the current node(so here in this case 10.19.1.2)
     62
     63after copying local.conf to the devstack folder, uncomment and change the HOST_IP to the IP of the current node(so here in this case 10.19.1.2) and
    6364
    646510. Start the OpenStack Installation using DevStack:
     
    6869
    6970
     71This will take around 15-20 minutes. In this process, you might be asked to set up passwords for Horizon, MYSQL, etc.
     72Once installation is done, it provides information related to Horizon, Keystone. You can login to view the Horizon dashboard(http://10.19.1.2/dashboard) using below default credentials
     73
     74This is your host IP address: 10.19.1.2
     75This is your host IPv6 address: ::1
     76Horizon is now available at http://10.19.1.2/dashboard
     77Keystone is serving at http://10.19.1.2/identity/
     78The default users are: admin and demo
     79The password: *****(Password set by you during installation process)
    7080
    7181
    7282
    7383
    74 ==== Installing the !OpenFlow Reference System (old) ====
    75 While presented, it is not recommended to install from tarball.
    76 The detailed instructions may be found here: http://www.openflowswitch.org/wp/getstarted/
    77 
    78 1. Download software and required packages. If using git:
    79 {{{
    80 sudo apt-get install git-core automake m4 pkg-config libtool
    81 git clone http://openflowswitch.org/openflow
    82 cd openflow
    83 ./boot.sh
    84 }}}
    85 if installing from tarball:
    86 {{{
    87 mkdir openflow
    88 cd openflow
    89 wget http://openflowswitch.org/downloads/openflow-0.9.0.tar.gz
    90 tar xzf openflow-0.9.0.tar.gz
    91 cd openflow-0.9.0
    92 sudo apt-get install gcc linux-headers-`uname -r`
    93 }}}
    94 2. Make and install.
    95 {{{
    96 ./configure --with-l26=/lib/modules/`uname -r`/build
    97 make
    98 make install
    99 }}}
    100 
    101 === Installing NOX  ===
    102 It is not only recommended but also much simpler to use git to install NOX. Therefore the following instructions assume you are using git. The full instructions are found at noxrepo.org:  http://noxrepo.org/manual/installation.html [[BR]]
    103 
    104 ''' Dependencies ''' [[BR]]
    105 NOX requires the following packages to be installed on the Console:
    106  * GNU Libtool (libtool)
    107  * Boost C++ libraries (libboost1.35-dev)
    108  * Apache HTTP Server (apache2)
    109  * Xerces C++ parser (libxerces-c28)
    110  * Xerces development files (libxerces-c2-dev)
    111  * SSL development libraries (libssl-dev)
    112  * SQLite 3 development files (libsqlite3-dev)
    113  * Simple JSON for Python (python-simplejson)
    114 Note, this is with respect to the Console, not the node - you may need to install additional packages before NOX can be installed properly.
    115 
    116 If all dependencies are taken care of, NOX will install with the following steps.
    117 {{{
    118 git clone git://noxrepo.org/noxcore
    119 cd noxcore/
    120 ./boot.sh
    121 mkdir build/
    122 cd build/
    123 ../configure --with-python=yes
    124 make
    125 make check
    126 }}}
    127 
    128 
    129 === Controllers on the Console ===
    130 
    131 A sub-set of these instructions can be used to install a "custom" controller in userspace on the console. Most of the requisite libraries should already be installed. Use the following commands to install the Reference system in your userspace:
    132 
    133 '''for the !OpenFlow Reference System :'''[[BR]]
    134 {{{
    135 cd
    136 git clone http://openflowswitch.org/openflow
    137 cd openflow
    138 ./boot.sh
    139 ./configure --with-l26=/lib/modules/`uname -r`/build
    140 make
    141 make install
    142 }}}
    143 
    144 '''for NOX :'''[[BR]]
    145 {{{
    146 cd
    147 git clone git://noxrepo.org/noxcore
    148 cd noxcore/
    149 ./boot.sh
    150 mkdir build/
    151 cd build/
    152 ../configure --with-python=yes
    153 make
    154 make check
    155 }}}
    156 
    157 
    158 === Starting the controller ===
    159 Both commands start the controller and establish a connection with the !OpenFlow switch. The -v is for verbose. -h for both will give you the help files for the controllers. In the reference system, the controller is found under .../openflow/controller/
    160 {{{
    161 ./controller -v ptcp:6633
    162 }}}
    163 and in NOX, it is found under .../noxcore/build/src/
    164 {{{
    165 ./nox-core -v -i ptcp:6633
    166 }}}
    167 `ptcp:6633` refers to a passive connection to TCP 6633, the default !OpenFlow port. An active connection method using standard TCP exists, however this does not work on this setup. In the !OpenFlow reference system, a log of the verbose output can be saved by appending `--log-file [filename]`.   
    168 
    169 [[BR]]
    170 [[BR]]
    171 
    172 ----
    173 === Available Tools ===
    174 
    175 Some of these tools require root privileges and will thus require a custom installation on a node. Others can be run from the console directly in an unprivileged mode.
    176 
    177 ==== the Wireshark plugin ====
    178 The !OpenFlow Reference system comes with an !OpenFlow wireshark dissector.
    179 
    180 '''Permissions:''' [[BR]]
    181 You must be root in order to use Wireshark; Therefore you must install it on a node. [[BR]]
    182 
    183 '''Prerequisites:''' [[BR]]
    184 glib (and of course, wireshark) is required for the plugin to work:
    185 {{{
    186 apt-get install wireshark libgtk2.0-dev
    187 }}}
    188 
    189 '''Installation:'''[[BR]]
    190 The patch is located under the utilities directory:
    191 {{{
    192 cd utilities/wireshark_dissectors/openflow
    193 make
    194 sudo make install
    195 }}} 
    196 
    197 '''Usage:'''[[BR]]
    198 To use wireshark, you need to do some X11 tunneling. To do this, add the -X option when using SSH to access the Console and the nodes.   
    199 
    200 tcpdump pcap files can also be opened using wireshark - once the plugin has been installed, !OpenFlow packets can be interpreted from these files as well. 
    201 
    202 ==== Iperf ====
    203 For performance testing, you may want to run some bandwidth tests. iperf is a tool that measures maximum network performance using TCP for throughput and UDP for jitter and datagram loss. The standard image used for the Sandbox nodes when booted with command `omf tell on` comes with iperf. To take measurements, you need at least two nodes. One node becomes the server, the other(s), clients.
    204 
    205 '''Permissions:''' [[BR]]
    206 Iperf does not require root access.
    207 
    208 '''Usage:'''[[BR]]
    209 Initially, eth0 (the !OpenFlow interface for the nodes) will be disabled. Additionally, there is no DHCP service on that VLAN - you need to enable the interface and statically set the IP address (i.e. using ifconfig). 192.168.x.y is the block associated with the !OpenFlow VLAN. 
    210 
    211 To start the server:
    212 {{{
    213 iperf -s
    214 }}}   
    215 and on the client:
    216 {{{
    217 iperf -c 192.168.x.y
    218 }}}
    219 
    220 Where 192.168.x.y is the IP address of the iperf server. A caveat is that iperf cannot take real-time bandwidth measurements. Real-time bandwidth use can be monitored using BWM-ng.
    221 
    222 '''On the Console'''[[BR]]
    223 Iperf is also installed on the Console. The interfaces available on the Console are the following:
    224  * eth1 - 192.168.100.28
    225  * eth1.27 / Control - 10.19.0.10
    226  * eth1.28 / OF virtual switch - 192.168.1.28
    227  * eth1.100 / OFP interface - 172.16.100.1
    228  
    229 ==== BWM-ng ====
    230 BWM-ng is a tool capable of taking real-time throughput measurements of different interfaces of a host. 
    231 
    232 '''Permissions:''' [[BR]]
    233 BWM-ng does not require root access, and is installed on the Console. 
    234 
    235 '''Usage:'''[[BR]]
    236 By default, the tool will monitor all interfaces on the Console. To monitor just the !OpenFlow interface, you must specify `eth1.100`. To output this to a csv, use the following command:
    237 {{{
    238 bwm-ng -I eth1.100 -o csv -t 1000 -F <file-name>
    239 }}} 
    240  * -I : interface
    241  * -o : output, either in csv or html
    242  * -t : specifies sampling rate in msec. Here, it is 1000 msec, or 1 sample/sec
    243  * -F : Filename of output
    244 
    245 '''Installation on a node'''[[BR]]
    246 The following command will install BWM-ng:
    247 {{{
    248 apt-get install bwm-ng
    249 }}}
    250 
    251 ----
    252 ==== Development ====
    253 The files defining !OpenFlow Protocol can be found in the following locations:
    254  * !OpenFlow reference system:  openflow/include/openflow/openflow.h
    255  * NOX: noxcore/src/include/openflow.hh
    256 
    257 In addition, NOX provides a [http://noxrepo.org/manual/app.html Web API] that allows you to do development in C++ or Python.