123 | | The output of the command is the ''advertisement Rspec'' from the GENI-in-a-Box aggregate. You'll see the aggregate advertises six compute resources. Only two are shown here for readability reasons but you will find the complete advertisement rspec [attachment:gib-advert.rspec here]. Look at the description of the first resource in the spec. This compute resources is an openVZ container running Fedora 15 image (or an Ubuntu 10 image if you are using the Ubuntu flavor of GENI-in-a-Box). The resource has four network interfaces: {{{eth0}}} through {{{eth3}}}. {{{eth0}}} is a control interface and is not available to the experimenter. All six compute resources advertised by this aggregate are identical. You can therefore use this aggregate to create experiment topologies with up to six nodes and up to three links per node. |
124 | | |
125 | | 4. We are now ready to run an experiment using these resources. We'll start with a very simple experiment that consists of two hosts connected to one another by a single link. When the hosts come up they execute an experimenter specified script that: |
| 126 | The output of the command is the ''advertisement rspec'' from the GENI-in-a-Box aggregate. You'll see the aggregate advertises six compute resources. Only two are shown here for readability reasons but you will find the complete advertisement rspec [attachment:gib-advert.rspec here]. Look at the description of the first resource in the rspec. This compute resources is an openVZ container running Fedora 15 image (or an Ubuntu 10 image if you are using the Ubuntu flavor of GENI-in-a-Box). The resource has four network interfaces: {{{eth0}}} through {{{eth3}}}. {{{eth0}}} is a control interface and is not available to the experimenter. All six compute resources advertised by this aggregate are identical. You can therefore use this aggregate to create experiment topologies with up to six nodes and up to three links per node. |
| 127 | |
| 128 | === Running an Experiment === |
| 129 | We are now ready to run an experiment using these resources. We'll start with a very simple experiment that consists of two hosts connected to one another by a single link. When the hosts come up they execute an experimenter specified script that: |
137 | | We'll use the spec file called two-nodes-iperf.rspec. You can view it [attachment:two-nodes-iperf.rspec here] or inside the VM. This rspec requests two nodes called left and right, each of which has one network interface called left:if0 on node left and right:if0 on node right. The {{{<install>}}} element in the rspec asks the aggregate to download a [attachment:iperf-execute-script.sh script] from the specified URL, uncompress and untar it, and save it in the /local directory. The <execute> element asks the aggregate to execute the specified script when the hosts come up. In this case the script to be executed is the one that was installed in /local. |
| 141 | We'll use the rspec file called two-nodes-iperf.rspec. You can view it [attachment:two-nodes-iperf.rspec here] or inside the VM. This rspec requests two hosts called {{{left}}} and {{{right}}}. Host {{{left}}} has one interface called {{{left:if0}}} and host {{{right}}} has one interface called {{{right:if0}}}. The two interfaces are connected by a link called {{{left-right-lan}}}. The {{{<install>}}} element in the rspec asks the GENI-in-a-Box aggregate manager to download a [attachment:iperf-execute-script.sh script] from the specified URL, uncompress and untar it, and save it in the /local directory. The {{{<execute>}}} element asks the aggregate to execute the specified script when the hosts come up. In this case the script to be executed is the one that was installed in {{{/local}}}. |
| 142 | |
| 143 | The following steps will walk you through running this experiment: |
| 144 | 1. First we need to create a slice using the command {{{omni.py createslice myslice}}} where {{{myslice}}} is the name or our slice (of course you can give you slice some other name). |
| 145 | {{{ |
| 146 | $ omni.py createslice myslice |
| 147 | INFO:omni:Loading config file /home/gibuser/.gcf/omni_config |
| 148 | INFO:omni:Using control framework gib_ch |
| 149 | INFO:omni:Created slice with Name myslice, URN urn:publicid:IDN+geni:gpo:gcf+slice+myslice, Expiration 2012-09-28 23:49:43 |
| 150 | INFO:omni: ------------------------------------------------------------ |
| 151 | INFO:omni: Completed createslice: |
| 152 | |
| 153 | Options as run: |
| 154 | framework: gib_ch |
| 155 | getversionCacheName: /home/gibuser/.gcf/get_version_cache.json |
| 156 | |
| 157 | Args: createslice myslice |
| 158 | |
| 159 | Result Summary: Created slice with Name myslice, URN urn:publicid:IDN+geni:gpo:gcf+slice+myslice, Expiration 2012-09-28 23:49:43 |
| 160 | |
| 161 | INFO:omni: ============================================================ |
| 162 | $ |
| 163 | }}} |
| 164 | |
| 165 | 2. We now send our [wiki:two-nodes-iperf.rspec request rspec] to the GENI-in-a-Box aggregate manager using the command {{{omni.py -a http://geni-in-a-box.net:8001 createsliver myslice two-nodes-iperf.rspec}}}. If our request is successful, the aggregate manager will allocate the requested resources to our slice. In GENI parlance the resources allocated to our slice are called slivers. |