| 1 | [[PageOutline]] |
| 2 | |
| 3 | = FOAM attachment information = |
| 4 | |
| 5 | [wiki:OpenFlow/FOAM FOAM] can be configured with information about what other devices its switches are connected to, which is really useful in helping experimenters figure out the topology of the GENI infrastructure. |
| 6 | |
| 7 | NOTE that you'll want to update this if you add or remove connections! |
| 8 | |
| 9 | = Configuring attachments = |
| 10 | |
| 11 | FOAM keeps track of these attachments, and there are three foamctl commands to work with them: |
| 12 | |
| 13 | {{{ |
| 14 | foamctl topo:create-attachment --passwd-file=/etc/foam.passwd |
| 15 | foamctl topo:list-attachments --passwd-file=/etc/foam.passwd |
| 16 | foamctl topo:remove-attachment --passwd-file=/etc/foam.passwd |
| 17 | }}} |
| 18 | |
| 19 | topo:list-attachments will show of the currently-configured attachments, each of which has a UUID, which you can use to remove the attachment with topo:remove-attachment. The rest of this section describes how to create new attachments. (To modify an existing attachment, just remove it and create a new one.) |
| 20 | |
| 21 | topo:create-attachment takes a variety of arguments: |
| 22 | |
| 23 | * `--type=TYPE`: This identifies what type of remote device this attachment is connected to. There are four options: |
| 24 | * `of` is a FOAM-managed !OpenFlow device with a GENI URN |
| 25 | * `nof` is a non-FOAM-managed network device with a GENI URN |
| 26 | * `host` is a host with a GENI URN |
| 27 | * `other` is anything without a GENI URN |
| 28 | * `--local-dpid=LOCAL_DPID` and `--local-port=LOCAL_PORT`: These identify the DPID and port name on the switch that FOAM manages. |
| 29 | * `--remote-component-id=REMOTE_CMID`: The GENI URN of the remote device, if it has one; don't use this with --type=other. |
| 30 | * `--remote-hostname=REMOTE_HOSTNAME`: A hostname (or some other string) that identifies the remote device, if it doesn't have a GENI URN; only use this with --type=other. |
| 31 | * `--remote-port=REMOTE_PORT`: A string that identifies the port on the remote device. |
| 32 | * `--desc=DESC`: A natural-language description of the remote device; typically something high-level that would be useful to an experimenter. |
| 33 | |
| 34 | = Examples = |
| 35 | |
| 36 | Here are some examples for various BBN things. |
| 37 | |
| 38 | Both sides of a connection between two FOAM-managed !OpenFlow switches (habanero-1750 and poblano-1750): |
| 39 | |
| 40 | {{{ |
| 41 | foamctl topo:create-attachment --type="of" --local-dpid="06:d6:00:24:a8:c4:b9:00" --local-port="47" --remote-component-id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0" --remote-port="GBE0/20" --desc="poblano-1750" --passwd-file=/etc/foam.passwd |
| 42 | foamctl topo:create-attachment --type="of" --local-dpid="06:d6:00:12:e2:b8:a5:d0" --local-port="GBE0/20" --remote-component-id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:24:a8:c4:b9:00" --remote-port="47" --desc="habanero-1750" --passwd-file=/etc/foam.passwd |
| 43 | }}} |
| 44 | |
| 45 | A connection to a ProtoGENI node: |
| 46 | |
| 47 | {{{ |
| 48 | foamctl topo:create-attachment --type="host" --local-dpid="06:d6:00:24:a8:c4:b9:00" --local-port="1" --remote-component-id="urn:publicid:IDN+pgeni.gpolab.bbn.com+node+pc1" --remote-port="eth3" --desc="pc1.pgeni.gpolab.bbn.com[eth3] (ur)" --passwd-file=/etc/foam.passwd |
| 49 | }}} |
| 50 | |
| 51 | A connection to a test node, which isn't GENI managed (and thus doesn't have a GENI URN): |
| 52 | |
| 53 | {{{ |
| 54 | foamctl topo:create-attachment --type="other" --local-dpid="06:d6:00:24:a8:c4:b9:00" --local-port="33" --remote-hostname="argos.gpolab.bbn.com" --remote-port="eth1" --desc="argos[eth1]" --passwd-file=/etc/foam.passwd |
| 55 | }}} |