Changes between Version 5 and Version 6 of OpenFlow/GeniBackboneTest
- Timestamp:
- 01/18/13 16:40:06 (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
OpenFlow/GeniBackboneTest
v5 v6 8 8 9 9 * You're only testing the OpenFlow backbone in Internet2 and NLR, and not any GENI core resources at regionals. 10 * You'll use 10.42.17.0/24 as the IP subnet to test with; this is normally reserved to jbs@bbn.com, so either check with him before using it, or use a different subnet. (The [wiki:NetworkCore/SubnetReservations GENI Network Core subnet reservations page] has a list of available (and reserved) subnets.) 11 * You're using mesoscale MyPLC plnodes at BBN (via Internet2) and Wisconsin (via NLR), which have dataplane addresses already configured on this subnet, to send and receive traffic via VLAN 3716 in the core. 12 * You're set up to use Omni in general, and have it in your path as 'omni', i.e. you've successfully used Omni to reserve GENI resources (and have the latest version of the software, a user credential signed by a CA that's trusted by the I2 and NLR FOAM aggregates and the GPO Lab MyPLC aggregate, a working omni_config file, etc). 13 * You have valid request rspec files to test with. There are example rspecs [source:trunk/wikifiles/geni-backbone-test here], but NOTE that they do not contain a valid e-mail address, so they MUST be modified to include one (as of FOAM 0.6.3), and MAY need to be modified to point to a different controller, if you use something other than than what's below for $ofctrlhost and $ofctrlport. 10 * You're using 10.42.17.0/24 as the IP subnet to test with; this is normally reserved to jbs@bbn.com, so either check with him before using it, or use a different subnet. (The [wiki:NetworkCore/SubnetReservations GENI Network Core subnet reservations page] has a list of available (and reserved) subnets.) 11 * You're using ProtoGENI VMs BBN (via NLR) and Utah (via Internet2), to send and receive traffic via VLAN 3716 in the core. 12 * You're set up to use Omni in general, i.e. you've successfully used Omni to reserve GENI resources, have a current version of the software (in ~/src/gcf-current, in the examples below), a user credential signed by a CA that's trusted by all aggregates where you'll need to create slivers, a working omni_config file, etc. 13 * You have an OpenFlow controller that you can use for this. (FIXME: It'd be better if we supplied instructions to allocate a controller host, and install and run a controller on it, but this is hard to do in a generic way, because the OpenFlow rspecs depend on the controller hostname, which you don't know until you allocate the host. Could be done, but it's more complicated.) 14 * You have valid request rspec files to test with. There are example rspecs [source:trunk/wikifiles/geni-backbone-test here], but NOTE that they'll need to be modified to point to your OpenFlow controller. 14 15 * You know what output to expect when common things succeed. (Expected output is described here only in cases where an error is the expected result, or where it otherwise might not be obvious; if you think the expected output isn't obvious for any given step, let us know.) 15 16 … … 20 21 == Setup == 21 22 22 This section sets some variables that later sections use. The values below are the ones JBS uses when we do this at BBN; you may need to change some of them for your own use. 23 This section sets some variables that later sections use; in particular, ones that you'll need to allocate resources. 24 25 The values below are the ones JBS uses when we do this at BBN; you may need to change some of them for your own use. 23 26 24 27 Set your slicename: … … 32 35 {{{ 33 36 foam_bbn_rspec=~/rspecs/request/$slicename/openflow-bbn-$slicename.rspec 34 foam_ wisconsin_rspec=~/rspecs/request/$slicename/openflow-wisconsin-$slicename.rspec37 foam_bbn_instageni_rspec=~/rspecs/request/$slicename/openflow-bbn-instageni-$slicename.rspec 35 38 foam_internet2_rspec=~/rspecs/request/$slicename/openflow-internet2-$slicename.rspec 36 39 foam_nlr_rspec=~/rspecs/request/$slicename/openflow-nlr-$slicename.rspec 37 myplc_bbn_rspec=~/rspecs/request/misc/myplc-bbn-all.rspec 40 foam_uen_rspec=~/rspecs/request/$slicename/openflow-uen-$slicename.rspec 41 protogeni_bbn_rspec=~/rspecs/request/$slicename/protogeni-bbn-instageni-$slicename.rspec 42 protogeni_utah_rspec=~/rspecs/request/$slicename/protogeni-utah-protogeni-$slicename.rspec 38 43 }}} 39 44 … … 42 47 {{{ 43 48 foam_bbn_am=https://foam.gpolab.bbn.com:3626/foam/gapi/1 44 foam_ wisconsin_am=https://foam.wail.wisc.edu:3626/foam/gapi/149 foam_bbn_instageni_am=https://foam.instageni.gpolab.bbn.com:3626/foam/gapi/1 45 50 foam_internet2_am=https://foam.net.internet2.edu:3626/foam/gapi/1 46 51 foam_nlr_am=https://foam.nlr.net:3626/foam/gapi/1 47 myplc_bbn_am=https://myplc.gpolab.bbn.com:12346/ 52 foam_uen_am=https://foamyflow.chpc.utah.edu:3626/foam/gapi/1 53 protogeni_bbn_am=https://instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am 54 protogeni_utah_am=https://www.emulab.net:12369/protogeni/xmlrpc/am 48 55 }}} 49 56 50 Set the name, address, and port of the OpenFlow control host:57 Set the target IP address that you'll want to ping. In this example, we use the dataplane IP address of the VM at Utah, which we'll ping from the VM at BBN. 51 58 52 59 {{{ 53 ofctrlhost=navis.gpolab.bbn.com 54 ofctrlport=33017 55 oflaviport=11017 56 }}} 57 58 Set the names of the source and destination test hosts: 59 60 {{{ 61 src_host=ganel.gpolab.bbn.com 62 dst_host=wings-openflow-2-net-10-42-17.wisc.dataplane.geni.net 63 }}} 64 65 Set the MyPLC username you'll need to log in to your plnodes: 66 67 {{{ 68 username=pgenigpolabbbncom_$slicename 60 dst_addr=$(grep "ip address" $protogeni_utah_rspec | sed -re 's/.+ip address="([0-9\.]+)".+/\1/') 69 61 }}} 70 62 … … 74 66 75 67 {{{ 76 omnicreateslice $slicename77 omnirenewslice $slicename "$(date -d 'now + 3 days')"68 ~/src/gcf-current/src/omni.py createslice $slicename 69 ~/src/gcf-current/src/omni.py renewslice $slicename "$(date -d 'now + 3 days')" 78 70 }}} 79 71 80 Create FOAM slivers at BBN, Wisconsin, Internet2, and NLR:72 Create FOAM slivers at BBN, BBN InstaGENI, Internet2, NLR, and UEN: 81 73 82 74 {{{ 83 omni -a $foam_bbn_am createsliver $slicename $foam_bbn_rspec 84 omni -a $foam_wisconsin_am createsliver $slicename $foam_wisconsin_rspec 85 omni -a $foam_internet2_am createsliver $slicename $foam_internet2_rspec 86 omni -a $foam_nlr_am createsliver $slicename $foam_nlr_rspec 75 ~/src/gcf-current/src/omni.py -a $foam_bbn_am createsliver $slicename $foam_bbn_rspec 76 ~/src/gcf-current/src/omni.py -a $foam_bbn_instageni_am createsliver $slicename $foam_bbn_instageni_rspec 77 ~/src/gcf-current/src/omni.py -a $foam_internet2_am createsliver $slicename $foam_internet2_rspec 78 ~/src/gcf-current/src/omni.py -a $foam_nlr_am createsliver $slicename $foam_nlr_rspec 79 ~/src/gcf-current/src/omni.py -a $foam_uen_am createsliver $slicename $foam_uen_rspec 87 80 }}} 88 81 89 Create a MyPLC sliver at BBN:82 Create ProtoGENI slivers at BBN and Utah: 90 83 91 84 {{{ 92 omni -a $myplc_bbn_am createsliver $slicename $myplc_bbn_rspec 85 ~/src/gcf-current/src/omni.py -a $protogeni_bbn_am createsliver $slicename $protogeni_bbn_rspec 86 ~/src/gcf-current/src/omni.py -a $protogeni_utah_am createsliver $slicename $protogeni_utah_rspec 93 87 }}} 94 88 95 NOTE that you may need to wait until your FOAM slivers are approved; you should get e-mail from each of the four FOAM aggregates when they are. Until you do, you can continue with the next section ("Set up your OpenFlow controller") meanwhile, but not beyond that. 96 97 == Set up your OpenFlow controller == 98 99 Log in to your OpenFlow controller host: 100 101 {{{ 102 ssh $username@$ofctrlhost 103 }}} 104 105 All the rest of the commands in this section are run on that host. 106 107 Add to your .bash_profile some of the variables that you set earlier, so you'll have them whenever you log in here: 108 109 {{{ 110 echo "export ofctrlport=33017" >> .bash_profile 111 echo "export oflaviport=11017" >> .bash_profile 112 . .bash_profile 113 }}} 114 115 These next steps to download and install NOX are copied from http://groups.geni.net/geni/wiki/HowTo/RunNoxInFedora8. It may take an hour or more to complete all of these steps. 116 117 Install the Development Tools packages: 118 119 {{{ 120 sudo yum groupinstall "Development Tools" 121 }}} 122 123 Install other packages that NOX depends on: 124 125 {{{ 126 sudo yum install python-twisted libpcap-devel git-core openssl-devel boost-devel python-simplejson 127 }}} 128 129 Download and and install GCC 4.2.4: 130 131 {{{ 132 cd 133 wget http://mirrors-us.seosue.com/gcc/releases/gcc-4.2.4/gcc-4.2.4.tar.bz2 134 tar -xvjpf gcc-4.2.4.tar.bz2 135 mkdir gcc-obj 136 cd gcc-obj 137 ../gcc-4.2.4/configure 138 make 139 sudo make install 140 }}} 141 142 That may take half an hour or so. 143 144 Download and install NOX: 145 146 {{{ 147 cd 148 git clone git://noxrepo.org/nox 149 cd nox 150 ./boot.sh 151 mkdir ../nox_build 152 cd ../nox_build 153 ../nox/configure 154 make -j 5 155 }}} 156 157 That may take another half hour or so. 158 159 Start up the controller: 160 161 {{{ 162 cd ~/nox_build/src 163 ./nox_core --info=$HOME/nox-${ofctrlport}.info -i ptcp:$ofctrlport switch lavi_switches lavi_swlinks jsonmessenger=tcpport=$oflaviport,sslport=0 164 }}} 165 166 Your controller is now ready and listening; to do anything further, you need to wait until your FOAM slivers are approved. 89 NOTE that your FOAM slivers may need to be approved manually by an admin at each FOAM site; you should get e-mail from each of the five FOAM aggregates when they're approved (automatically or manually). You can also check your controller for connections from the relevant switches, but you won't be able to run tests until all of your slivers are approved. 167 90 168 91 == Run tests == … … 170 93 Once your FOAM slivers are approved, you can confirm that the backbone OpenFlow switches are connecting to your controller, and test that you can send traffic on your subnet. 171 94 172 === Confirm connections===95 === OpenFlow controller === 173 96 174 Log in to your OpenFlow controller host: 97 We don't provide detailed instructions for running an OpenFlow controller here. In this example (and the example rspecs), the controller is running at naxos.gpolab.bbn.com port 33017, with a LAVI listener on port 11017. 98 99 That controller was started like this: 175 100 176 101 {{{ 177 ssh $username@$ofctrlhost 102 cd ~/nox_build/src 103 ./nox_core --info=$HOME/nox-33017.info -i ptcp:33017 switch lavi_switches lavi_swlinks jsonmessenger=tcpport=11017,sslport=0 178 104 }}} 179 105 180 On your OpenFlow controller host, create a patched version of the nox-console program:106 That host has a patched version of the 'nox-console' program; you can get the patch from http://groups.geni.net/geni/export/HEAD/trunk/wikifiles/geni-backbone-test/nox-console.patch, and then use it to display a sorted list of DPIDs that are connected to your controller: 181 107 182 108 {{{ 183 cd 184 wget http://groups.geni.net/geni/export/HEAD/trunk/wikifiles/geni-backbone-test/nox-console.patch -O nox-console.patch 185 mkdir -p bin 186 patch -o ~/bin/nox-console ./nox/src/scripts/nox-console.py nox-console.patch 187 chmod 755 ~/bin/nox-console 188 rm nox-console.patch 189 }}} 190 191 On your OpenFlow controller host, use nox-console to display a sorted list of DPIDs that are connected to your controller: 192 193 {{{ 194 nox-console -n localhost -p $oflaviport getnodes | sort 109 nox-console -n localhost -p 11017 getnodes | sort 195 110 }}} 196 111 … … 198 113 199 114 {{{ 200 0 0:00:0e:84:40:39:18:1b201 0 0:00:0e:84:40:39:18:58202 0 0:00:0e:84:40:39:19:96203 0 0:00:0e:84:40:39:1a:57204 0 0:00:0e:84:40:39:1b:93115 06:d6:00:12:e2:22:63:1d 116 06:d6:00:12:e2:22:63:38 117 06:d6:00:12:e2:22:63:6e 118 06:d6:00:12:e2:22:6f:e5 119 06:d6:00:12:e2:22:81:42 205 120 06:d6:00:12:e2:b8:a5:d0 206 06:d6:00:21:f7:be:8d:00 207 06:d6:00:23:47:cc:44:00 208 06:d6:00:24:a8:c4:b9:00 121 06:d6:00:24:a8:d2:b8:40 122 06:d6:84:34:97:c6:c9:00 123 06:d6:ac:16:2d:f5:2d:00 124 0e:84:00:12:e2:22:63:1d 125 0e:84:00:12:e2:22:63:38 126 0e:84:00:12:e2:22:63:6e 127 0e:84:00:12:e2:22:6f:e5 128 0e:84:00:12:e2:22:81:42 209 129 0e:84:00:23:47:c8:bc:00 210 130 0e:84:00:23:47:ca:bc:40 … … 214 134 }}} 215 135 216 The first five are from Internet2, the last five are from NLR, and the middle four are from BBN, Wisconsin, Wisconsin, and BBN, respectively.136 In that list, the first five are from Internet2; the next four are from BBN, NLR, BBN InstaGENI, and UEN, respectively; the next five are from Internet2 again; and the last five are from NLR again. 217 137 218 === Test connectivity ===138 === Connectivity === 219 139 220 Log in to the source test host:140 Use Omni's remote-execute functionality to log in to the BBN VM, and ping the dataplane address of the Utah VM: 221 141 222 142 {{{ 223 ssh $username@$src_host 224 }}} 225 226 Add to your .bash_profile some of the variables that you set earlier, so you'll have them whenever you log in here: 227 228 {{{ 229 echo "dst_host=wings-openflow-2-net-10-42-17.wisc.dataplane.geni.net" >> .bash_profile 230 . .bash_profile 231 }}} 232 233 Ping the destination test host: 234 235 {{{ 236 ping -c 10 $dst_host 143 ~/src/gcf-current/examples/remote-execute.py -a $protogeni_bbn_am $slicename -m "ping -c 10 $dst_addr" 237 144 }}} 238 145 … … 241 148 == Cleanup == 242 149 243 Stop your OF controller (with ctrl-c), and log out of any MyPLC plnodes that you're still logged in to.244 245 150 Delete your slivers: 246 151 247 152 {{{ 248 omni -a $foam_bbn_am deletesliver $slicename 249 omni -a $foam_wisconsin_am deletesliver $slicename 250 omni -a $foam_internet2_am deletesliver $slicename 251 omni -a $foam_nlr_am deletesliver $slicename 252 omni -a $myplc_bbn_am deletesliver $slicename 153 ~/src/gcf-current/src/omni.py -a $foam_bbn_am deletesliver $slicename 154 ~/src/gcf-current/src/omni.py -a $foam_bbn_instageni_am deletesliver $slicename 155 ~/src/gcf-current/src/omni.py -a $foam_internet2_am deletesliver $slicename 156 ~/src/gcf-current/src/omni.py -a $foam_nlr_am deletesliver $slicename 157 ~/src/gcf-current/src/omni.py -a $foam_uen_am deletesliver $slicename 158 ~/src/gcf-current/src/omni.py -a $protogeni_bbn_am deletesliver $slicename 159 ~/src/gcf-current/src/omni.py -a $protogeni_utah_am deletesliver $slicename 253 160 }}} 254