Changes between Version 5 and Version 6 of OpenFlow/GeniBackboneTest


Ignore:
Timestamp:
01/18/13 16:40:06 (7 years ago)
Author:
Josh Smift
Comment:

Major revamp, to use Utah PG and BBN IG PG

Legend:

Unmodified
Added
Removed
Modified
  • OpenFlow/GeniBackboneTest

    v5 v6  
    88
    99 * 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.
    1415 * 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.)
    1516
     
    2021== Setup ==
    2122
    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.
     23This section sets some variables that later sections use; in particular, ones that you'll need to allocate resources.
     24
     25The 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.
    2326
    2427Set your slicename:
     
    3235{{{
    3336foam_bbn_rspec=~/rspecs/request/$slicename/openflow-bbn-$slicename.rspec
    34 foam_wisconsin_rspec=~/rspecs/request/$slicename/openflow-wisconsin-$slicename.rspec
     37foam_bbn_instageni_rspec=~/rspecs/request/$slicename/openflow-bbn-instageni-$slicename.rspec
    3538foam_internet2_rspec=~/rspecs/request/$slicename/openflow-internet2-$slicename.rspec
    3639foam_nlr_rspec=~/rspecs/request/$slicename/openflow-nlr-$slicename.rspec
    37 myplc_bbn_rspec=~/rspecs/request/misc/myplc-bbn-all.rspec
     40foam_uen_rspec=~/rspecs/request/$slicename/openflow-uen-$slicename.rspec
     41protogeni_bbn_rspec=~/rspecs/request/$slicename/protogeni-bbn-instageni-$slicename.rspec
     42protogeni_utah_rspec=~/rspecs/request/$slicename/protogeni-utah-protogeni-$slicename.rspec
    3843}}}
    3944
     
    4247{{{
    4348foam_bbn_am=https://foam.gpolab.bbn.com:3626/foam/gapi/1
    44 foam_wisconsin_am=https://foam.wail.wisc.edu:3626/foam/gapi/1
     49foam_bbn_instageni_am=https://foam.instageni.gpolab.bbn.com:3626/foam/gapi/1
    4550foam_internet2_am=https://foam.net.internet2.edu:3626/foam/gapi/1
    4651foam_nlr_am=https://foam.nlr.net:3626/foam/gapi/1
    47 myplc_bbn_am=https://myplc.gpolab.bbn.com:12346/
     52foam_uen_am=https://foamyflow.chpc.utah.edu:3626/foam/gapi/1
     53protogeni_bbn_am=https://instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am
     54protogeni_utah_am=https://www.emulab.net:12369/protogeni/xmlrpc/am
    4855}}}
    4956
    50 Set the name, address, and port of the OpenFlow control host:
     57Set 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.
    5158
    5259{{{
    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
     60dst_addr=$(grep "ip address" $protogeni_utah_rspec | sed -re 's/.+ip address="([0-9\.]+)".+/\1/')
    6961}}}
    7062
     
    7466
    7567{{{
    76 omni createslice $slicename
    77 omni renewslice $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')"
    7870}}}
    7971
    80 Create FOAM slivers at BBN, Wisconsin, Internet2, and NLR:
     72Create FOAM slivers at BBN, BBN InstaGENI, Internet2, NLR, and UEN:
    8173
    8274{{{
    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
    8780}}}
    8881
    89 Create a MyPLC sliver at BBN:
     82Create ProtoGENI slivers at BBN and Utah:
    9083
    9184{{{
    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
    9387}}}
    9488
    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.
     89NOTE 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.
    16790
    16891== Run tests ==
     
    17093Once 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.
    17194
    172 === Confirm connections ===
     95=== OpenFlow controller ===
    17396
    174 Log in to your OpenFlow controller host:
     97We 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
     99That controller was started like this:
    175100
    176101{{{
    177 ssh $username@$ofctrlhost
     102cd ~/nox_build/src
     103./nox_core --info=$HOME/nox-33017.info -i ptcp:33017 switch lavi_switches lavi_swlinks jsonmessenger=tcpport=11017,sslport=0
    178104}}}
    179105
    180 On your OpenFlow controller host, create a patched version of the nox-console program:
     106That 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:
    181107
    182108{{{
    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
     109nox-console -n localhost -p 11017 getnodes | sort
    195110}}}
    196111
     
    198113
    199114{{{
    200 00:00:0e:84:40:39:18:1b
    201 00:00:0e:84:40:39:18:58
    202 00:00:0e:84:40:39:19:96
    203 00:00:0e:84:40:39:1a:57
    204 00:00:0e:84:40:39:1b:93
     11506:d6:00:12:e2:22:63:1d
     11606:d6:00:12:e2:22:63:38
     11706:d6:00:12:e2:22:63:6e
     11806:d6:00:12:e2:22:6f:e5
     11906:d6:00:12:e2:22:81:42
    20512006: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
     12106:d6:00:24:a8:d2:b8:40
     12206:d6:84:34:97:c6:c9:00
     12306:d6:ac:16:2d:f5:2d:00
     1240e:84:00:12:e2:22:63:1d
     1250e:84:00:12:e2:22:63:38
     1260e:84:00:12:e2:22:63:6e
     1270e:84:00:12:e2:22:6f:e5
     1280e:84:00:12:e2:22:81:42
    2091290e:84:00:23:47:c8:bc:00
    2101300e:84:00:23:47:ca:bc:40
     
    214134}}}
    215135
    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.
     136In 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.
    217137
    218 === Test connectivity ===
     138=== Connectivity ===
    219139
    220 Log in to the source test host:
     140Use Omni's remote-execute functionality to log in to the BBN VM, and ping the dataplane address of the Utah VM:
    221141
    222142{{{
    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"
    237144}}}
    238145
     
    241148== Cleanup ==
    242149
    243 Stop your OF controller (with ctrl-c), and log out of any MyPLC plnodes that you're still logged in to.
    244 
    245150Delete your slivers:
    246151
    247152{{{
    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
    253160}}}
    254