Author Archive

Automating the Simple Experiment: Loading rspec and running the experiment

(I) At this point you should have the following

1) A Request Rspec that contains information on what to execute and install on nodes. (see example)

2) Scripts that will automate the installation and execution process. (See previous blog post)

3) You will need to place the scripts on some webserver accessible from the GENI resources.

 

(II) Next you need to load the rspec into your slice. See the screenshot below:

Loading Rspec from file

Loading Rspec from file

 

Graph loaded from Rspec

Graph loaded from Rspec

(III) Submit your rpec for resource allocation and  then follow the steps that I showed earlier to log on to the nodes and see if everything was fine. You can also download your results from the nodes  you saved them in.

Comments off

Request rspec after removing the history state tag

<rspec type=”request” generated_by=”Flack” generated=”2013-08-20T14:46:15Z” xsi:schemaLocation=”http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd ” xmlns:flack=”http://www.protogeni.net/resources/rspec/ext/flack/1″ xmlns:client=”http://www.protogeni.net/resources/rspec/ext/client/1″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”http://www.geni.net/resources/rspec/3″>

<node client_id=”VM” component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM:if1″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM:if2″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”181″ y=”191″ unbound=”true”/>
</node>
<node client_id=”VM-0″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-0:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”308″ y=”132″ unbound=”true”/>
</node>
<node client_id=”VM-1″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-1:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<node client_id=”VM-2″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-2:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM-2:if1″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM-2:if2″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”118″ y=”287″ unbound=”true”/>
</node>
<node client_id=”VM-3″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-3:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<node client_id=”VM-4″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-4:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<link client_id=”lan0″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-0:if0″/>
<interface_ref client_id=”VM:if0″/>
<property source_id=”VM-0:if0″ dest_id=”VM:if0″/>
<property source_id=”VM:if0″ dest_id=”VM-0:if0″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan1″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM:if1″/>
<interface_ref client_id=”VM-1:if0″/>
<property source_id=”VM:if1″ dest_id=”VM-1:if0″/>
<property source_id=”VM-1:if0″ dest_id=”VM:if1″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan2″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM:if2″/>
<interface_ref client_id=”VM-2:if0″/>
<property source_id=”VM:if2″ dest_id=”VM-2:if0″/>
<property source_id=”VM-2:if0″ dest_id=”VM:if2″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan3″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-2:if1″/>
<interface_ref client_id=”VM-3:if0″/>
<property source_id=”VM-2:if1″ dest_id=”VM-3:if0″/>
<property source_id=”VM-3:if0″ dest_id=”VM-2:if1″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan4″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-2:if2″/>
<interface_ref client_id=”VM-4:if0″/>
<property source_id=”VM-2:if2″ dest_id=”VM-4:if0″/>
<property source_id=”VM-4:if0″ dest_id=”VM-2:if2″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<client:client_info name=”Flack” environment=”Flash Version: LNX 11,5,31,137, OS: Linux, Arch: x86, Screen: 1024×600 @ 72 DPI with touchscreen type none” version=”v14.100″ url=”https://www.emulab.net/protogeni/flack2/flack.swf”/>
<flack:slice_info view=”graph”/>
</rspec>

Comments off

Request Rspec — Downloaded (needs editing)

 

<rspec type=”request” generated_by=”Flack” generated=”2013-08-20T14:46:15Z” xsi:schemaLocation=”http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd ” xmlns:flack=”http://www.protogeni.net/resources/rspec/ext/flack/1″ xmlns:client=”http://www.protogeni.net/resources/rspec/ext/client/1″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”http://www.geni.net/resources/rspec/3″>
<node client_id=”VM” component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM:if1″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM:if2″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”181″ y=”191″ unbound=”true”/>
</node>
<node client_id=”VM-0″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-0:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”308″ y=”132″ unbound=”true”/>
</node>
<node client_id=”VM-1″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-1:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<node client_id=”VM-2″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-2:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM-2:if1″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM-2:if2″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”118″ y=”287″ unbound=”true”/>
</node>
<node client_id=”VM-3″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-3:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<node client_id=”VM-4″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-4:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<link client_id=”lan0″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-0:if0″/>
<interface_ref client_id=”VM:if0″/>
<property source_id=”VM-0:if0″ dest_id=”VM:if0″/>
<property source_id=”VM:if0″ dest_id=”VM-0:if0″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan1″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM:if1″/>
<interface_ref client_id=”VM-1:if0″/>
<property source_id=”VM:if1″ dest_id=”VM-1:if0″/>
<property source_id=”VM-1:if0″ dest_id=”VM:if1″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan2″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM:if2″/>
<interface_ref client_id=”VM-2:if0″/>
<property source_id=”VM:if2″ dest_id=”VM-2:if0″/>
<property source_id=”VM-2:if0″ dest_id=”VM:if2″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan3″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-2:if1″/>
<interface_ref client_id=”VM-3:if0″/>
<property source_id=”VM-2:if1″ dest_id=”VM-3:if0″/>
<property source_id=”VM-3:if0″ dest_id=”VM-2:if1″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan4″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-2:if2″/>
<interface_ref client_id=”VM-4:if0″/>
<property source_id=”VM-2:if2″ dest_id=”VM-4:if0″/>
<property source_id=”VM-4:if0″ dest_id=”VM-2:if2″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<client:client_info name=”Flack” environment=”Flash Version: LNX 11,5,31,137, OS: Linux, Arch: x86, Screen: 1024×600 @ 72 DPI with touchscreen type none” version=”v14.100″ url=”https://www.emulab.net/protogeni/flack2/flack.swf”/>
<history:slice_history backIndex=”3″ note=”Established lan0″ xmlns:history=”http://www.protogeni.net/resources/rspec/ext/history/1″>
<history:state>eNqVUl1r20AQfO+vWO7Vsk8nOU4QVmghFAJOWnAJoS/mfF5bR6U79T4sub++J53SNA+F9Elib3dm
d2bWxrYowF1aLInBnx6tI3BChYY7POz2l5J8rrn48VexJFnK8nl6M8/Sb2xZLK+KPP1OoLeysKLC
hm+04E5qVZLKubagtOu6RZiXC4WOGrTaG4GWjuQ0h3d10Wm9RW8PENiaWtniOOz2hqY12ul/omDv
6DhD2QuEqCUq958YcegVJNz+BqHLF9qcaJamjD4/bLajLHOprONK4DT1TnnI7QeAtdIHhEi7k8GD
pwcCQjetVkOl4Yqf0Iwv3qii9ftaCnko7u8eZ9j4mu8H8Bn3rtJGustMNASwF7W38hy8P/La4sgU
uGwdamY3pAIUb8JzhJjrFtX5F6FT36hkMWy2k+qooQ/RWKYEQmjYKmjj1V57FVZyxmOcWtOhffyL
xxQvNw0AkWwKXKCSRqtmdCfUbAVPaGzIVQGbx2dgLLlKcpaw/DqBL9tQlMr3CXwyoiqgv1klsBUG
MbSzNFv2qzSFj3Cdwd3Xe+ikq8BpLyo79kA8NqhJ4BxZSnJmywVLw0He1NEsO7n1Kin9E5YYrCx+
FrY7ThdHlYKmYpLpLLErycnwthpa1tHo298e6TTp</history:state>
<history:state>eNrNU01r20AQvfdXDHu1rNVKTmKEFVoIhYCTFhxC6MXI67G1VNpV98OS++u70ipNcwhNbz0JRjPv
zXv7ZqVNixzsucWCaPzh0FgCR5SoS4v77e5ckM91yb//USxImrBsniznafLAFvniIs/YNwK9Ebnh
FTblWvHSCiULUlnb5pR2XRf7eRFLtFSjUU5zNHQkpxm8q4tO68W92YNna2pp8sOw2yuaViur3kTB
3tJxhrJnCF4LlPYfMcLQC4jX/gqhy2KljzRNEkaf7tab0Za5kMaWkuM09U57yPUHgJVUe4RAuxX+
DR7vCHDVtEoOlaaU5RH1+MdpmbduVwsu9vntzf0MG1eXuwF8VjpbKS3secYbAtjz2hlx8m9/KGuD
I5PnMrWv6e2QCpBl438HiLlqUZ5+Ejr1jU7mw2ZbIQ8Keh+NRULAh4Zdem+c3Ckn/UpWOwxTKzq0
v6FonvyXmrJkGTRl6d80BTn5s6oBIJBNR+SphFayGRPna6aCR9TG30oO6/snYCy6iDIWUu0RAu1W
+Du4uyHAVd0o2UfqQhZH1MOJ0zJr3K4SXOyz66vbCdauKnY9+KRwtlRa2IcJrwlgxytnxMnf/aGo
DA5MnstUPqa3/asAWdT+OEBMVYPy9IvQMW9wMus72wp5UNDlhC29J/7RsAu/O7lTTvqWrHYYqla0
T39F0TR+l5rSeBk0pcl/aGLv855GTcnF4m+agpzsSVUPEMjGj8FTCa1kPUyRj5kS7lAbP/8ZrG/v
gbHoLEpZxNJFBF82Piik6yL4pHmZQbc8j2DDNaJPZ3Ey787jGD7CIoGrr9fQCluCVY6XZsiBINa7
SeAUWHJyYvMZi/3jcboKQ2XGqXq2lP4e6vABJGGbmfYwKg4ueU/5aNNJYJuToy6ask9ZhYG8fATR
ScEj</history:state>
<history:state>eNrNVV1vmzAUfd+vuOK1IcaQtikK1TZVkyq13aROVbWXyDEmWAWb2SaQ/foZDG3SDy3bw7Yn4HLu
uT7n2tcLpStGwWwrlniKfa+ZNh6smWCKGJYuV9vE+1QQ+rATTLwwwJEfzP0w+Ipn8ew4np1986DV
7zNSaNZXsrV0YWNq2e0KEKS0vx2FLysmNj88NOC4MExlhD5bWMyzYKCyoN7u+BG65CKTQNLU6tQf
ZS3SsTisdr/GGugxcwg4vs4OR9UmHp7bRtidis/ssxYDj1H1QLNAHfwNG/3gvzXSD/66lVEwd1ZG
4R9Yif+9la9tj0FTeHb6K00FFw+7mgoiRv8XL5QN6zhY24tuLxXLXu34Acg9nB1YFVNmC2507JNB
aqfm4Vkvcp6tqbNotw3Womfm94jRfN8dTf/pZN7ZDEPW+x3ocvo3JzIetXYsrs5wDdlmcyVF2c9s
sybx1opUeQdZuPF//hMbJYah</history:state>
</history:slice_history>
<flack:slice_info view=”graph”/>
</rspec>

 

Comments off

Automating the Simple Experiment: Editing Rspecs

The first part of this second step is to understand the rspecs, specifically the request rspec. The GENI wiki talks about various types of Rspecs and points to resources that may be used to create your own (see link). Honestly, I did not find them useful as yet because it has too much information to be useful at this point. May be when I become a power user, I can make more sense out of those. I think, the best way to write and learn to write a Request Rspec is to actually read one that can be downloaded from your flack interface after you create your network graph. Take a look at the rspec that I got from the simple experiment along with the explanation of how I got it.

Now we need to see how to modify it. First, lets see how we can modify the Rspec so that the execution of our scripts on VM and VM-0 happens automatically on system boot up.

All we need to do is to add a “services” tag with three other tags in it to execute a chmod command to make our script executable, then to execute the script and finally to download the script on to the nodes. This is done by adding the following within the  tags for VM and VM-0

<services>
<execute command=”sudo chmod +x /local/client_script.sh” shell=”sh”/>
<execute command=”sudo /local/client_script.sh” shell=”sh”/>
<install install_path=”/local” url=”http:///theurl.com/client_install.tar.gz”/>
</services>

<services>
<execute command=”sudo chmod +x /local/server_script.sh” shell=”sh”/>
<execute command=”sudo /local/server_script.sh” shell=”sh”/>
<install install_path=”/local” url=”http:///theurl.com/server_install.tar.gz”/>
</services>

If you read the services tag carefully, you will see that I need a client_script.sh and a server_script.sh that I am going to execute on the nodes. These files are contained in client_install.tar.gz and server_install.tar.gz respectively. The only way to get them on the nodes on GENI is to download from a web server. This means you need to have a webserver where you can freely keep your files so that GENI resources can see them.

The final Request rspec can be found here.

 

 

 

Comments off

Modified Request Rspec for Automated Simple Experiment

Here is the Request Rspec that was modified so that it contains the execute and installation commands.

___________________________________________________________________

<rspec type=”request” generated_by=”Flack” generated=”2013-08-20T14:46:15Z” xsi:schemaLocation=”http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd ” xmlns:flack=”http://www.protogeni.net/resources/rspec/ext/flack/1″ xmlns:client=”http://www.protogeni.net/resources/rspec/ext/client/1″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”http://www.geni.net/resources/rspec/3″>
<node client_id=”VM” component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<services>
<execute command=”sudo chmod +x /local/client_script.sh” shell=”sh”/>
<execute command=”sudo /local/client_script.sh” shell=”sh”/>
<install install_path=”/local” url=”http://www.myweb.com/client_install.tar.gz”/>
</services>
<interface client_id=”VM:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM:if1″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM:if2″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”181″ y=”191″ unbound=”true”/>
</node>
<node client_id=”VM-0″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<services>
<execute command=”sudo chmod +x /local/server_script.sh” shell=”sh”/>
<execute command=”sudo /local/server_script.sh” shell=”sh”/>
<install install_path=”/local” url=”http://www.myweb.com/server_install.tar.gz”/>
</services>
<interface client_id=”VM-0:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”308″ y=”132″ unbound=”true”/>
</node>
<node client_id=”VM-1″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-1:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<node client_id=”VM-2″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-2:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM-2:if1″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<interface client_id=”VM-2:if2″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”118″ y=”287″ unbound=”true”/>
</node>
<node client_id=”VM-3″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-3:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<node client_id=”VM-4″ component_manager_id=”urn:publicid:IDN+emulab.net+authority+cm” exclusive=”false”>
<sliver_type name=”emulab-openvz”/>
<interface client_id=”VM-4:if0″>
<flack:interface_info addressBound=”false” bound=”false”/>
</interface>
<flack:node_info x=”108″ y=”297″ unbound=”true”/>
</node>
<link client_id=”lan0″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-0:if0″/>
<interface_ref client_id=”VM:if0″/>
<property source_id=”VM-0:if0″ dest_id=”VM:if0″/>
<property source_id=”VM:if0″ dest_id=”VM-0:if0″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan1″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM:if1″/>
<interface_ref client_id=”VM-1:if0″/>
<property source_id=”VM:if1″ dest_id=”VM-1:if0″/>
<property source_id=”VM-1:if0″ dest_id=”VM:if1″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan2″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM:if2″/>
<interface_ref client_id=”VM-2:if0″/>
<property source_id=”VM:if2″ dest_id=”VM-2:if0″/>
<property source_id=”VM-2:if0″ dest_id=”VM:if2″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan3″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-2:if1″/>
<interface_ref client_id=”VM-3:if0″/>
<property source_id=”VM-2:if1″ dest_id=”VM-3:if0″/>
<property source_id=”VM-3:if0″ dest_id=”VM-2:if1″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<link client_id=”lan4″>
<component_manager name=”urn:publicid:IDN+emulab.net+authority+cm”/>
<interface_ref client_id=”VM-2:if2″/>
<interface_ref client_id=”VM-4:if0″/>
<property source_id=”VM-2:if2″ dest_id=”VM-4:if0″/>
<property source_id=”VM-4:if0″ dest_id=”VM-2:if2″/>
<link_type name=”lan”/>
<flack:link_info x=”-1″ y=”-1″ unboundVlantag=”true”/>
</link>
<client:client_info name=”Flack” environment=”Flash Version: LNX 11,5,31,137, OS: Linux, Arch: x86, Screen: 1024×600 @ 72 DPI with touchscreen type none” version=”v14.100″ url=”https://www.emulab.net/protogeni/flack2/flack.swf”/>
<flack:slice_info view=”graph”/>
</rspec>

___________________________________________________________________

Comments off

Request Rspec for the Simple Experiment

I downloaded this Rspec by clicking on View -> Preview Request Document and then on the next screen click on the Download button. See screenshots below:

 

Getting the Request Rspec

Getting the Request Rspec

Download Rspec

Download Rspec

 

The Rspec itself is here. If you know a little bit about XML, you can read and understand this Rspec specially if you keen the network picture handy to cross reference.

Go ahead and remove the tag <history:slice_history….> and its content to get the rpec below. If you look closely, you will know how to add nodes, interfaces and connections in your own network. You will get this file.

 

Comments off

Automating the Simple Experiment: First Step (Test)

Once your experiment starts growing, it will be impractical to log on to each node to execute commands. Fortunately there is a way to automate things. Again using the simple experiment from the previous post, although it does not really need to be automated due to the small size…

Here are the script that I will now manually copy over to the client and server sides  and then execute them from the terminal. Note that since I already installed iperf on VM-0 and VM-4, I chose two different machines in my graph to test these scripts

————————————————————————————————————-

CLIENT SCRIPT

————————————————————————————————————-

#!/bin/sh

# Usual directory for downloading software in ProtoGENI hosts is `/local`
cd /local

##### Check if file is there #####
if [ ! -f “./installed.txt” ]
then
#### Create the file ####
sudo touch “./installed.txt”

#### Run one-time commands ####

#Install necessary packages
sudo yum -y install iperf& EPID=$!
wait $EPID
fi
sudo /usr/bin/iperf -c VM-3 -p 5001 -t 90 -i 1 > iperf_client.txt

————————————————————————————————————-

SERVER SCRIPT

————————————————————————————————————-

#!/bin/sh
# Usual directory for downloading software in ProtoGENI hosts is `/local`
cd /local

##### Check if file is there #####
if [ ! -f “./installed.txt” ]
then
#### Create the file ####
sudo touch “./installed.txt”

#### Run one-time commands ####

#Install necessary packages
sudo yum -y install iperf& EPID=$!
wait $EPID
fi
sudo /usr/bin/iperf -s -p 5001 > iperf_server.txt

————————————————————————————————————-

I execute these scripts manually using the following commands on the two VMs

[user@VM-3]cd /local
[user@VM-3]sudo chmod +x client.sh
[user@VM-3]sudo ./server.sh

[user@VM-1]cd /local
[user@VM-1]sudo chmod +x client.sh
[user@VM-1]sudo ./client.sh

Everything went well, so I am now ready for the second step of automation…..

Comments off

A simple experiment

Lets run a quick sample experiment to see how this whole thing ties in together. I will do this the hard way i.e., manually just to test the waters and understand what I need for an automated experiment.

I have constructed a network graph and I am logging on to one of the machines (ssh) to run the iperf server.

Sample network graph

Sample network graph

I will start an iperf server on VM-0 and an iperf client on VM-4.

Note that I will need to use sudo with all commands that I type here because al commands run as a user with super user priviledge.

When I looked for iperf command on VM-0, I got an error, see below

[user@VM-0 ~] sudo which iperf
iperf: Command not found

This tells me that iperf is not installed, so make a note that I need to install iperf before I can start my experiment. Since this machine is running fedora, I will use the yum package manager to install iperf

[user@VM-0 ~] sudo yum -y install iperf

I am interested in the last few lines of the output

Installed:
iperf.x86_64 0:2.0.5-3.fc15

Lets check where iperf is located now:

[user@VM-0 ~]$ sudo which iperf
/usr/bin/iperf

Note that the PATH variable is not necessarily set, so we need to provide the entire path to commands unless we explicitly set the PATH environment variable. 

Now I start my iperf server

[user@VM-0 ~]$ sudo /usr/bin/iperf -s -p 5001 > iperf_server.txt
————————————————————
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
————————————————————

Next I will follow the same steps and run the iperf client on VM-4.

[user@VM-4 ~]$ sudo /usr/bin/iperf -c VM-0 -p 5001 -t 90 -i 1 > iperf_client.txt
————————————————————
Client connecting to VM-0, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 3] local 10.10.5.2 port 54339 connected with 10.10.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 11.9 MBytes 99.6 Mbits/sec
[ 3] 1.0- 2.0 sec 11.4 MBytes 95.4 Mbits/sec
[ 3] 2.0- 3.0 sec 11.5 MBytes 96.5 Mbits/sec
[ 3] 3.0- 4.0 sec 11.5 MBytes 96.5 Mbits/sec
[ 3] 4.0- 5.0 sec 11.2 MBytes 94.4 Mbits/sec
[ 3] 5.0- 6.0 sec 11.5 MBytes 96.5 Mbits/sec

Once this experiment finishes, I can collect my data from the files that I stored it in i.e.
iperf_client.txt and iperf_server.txt

Comments off

What is in a Name:A note about node names in your experiment

Before we start an experiment, let me clarify something about resource names in GENI. When you reserve your resources, you will see two names in your network graph. One name is on the resource picture, and the second one is right next to it. See picture below:

names

The name next to the resource, for example PC522.emulab.net is the name you use to connect to that virtual machine from outside the GENI network i.e., from your desktop or laptop when using ssh. The name that is on the picture which is VM-4 for PC522 is the one you will use in your experiment scripts that runs inside GENI. This makes a big difference so please understand the difference and make a note of it. If you use the external name in your experiment scripts and commands, you will find that regardless of how you draw the graph, all your nodes selected from the same GENI aggregate (in this case emulab) are directly connected to each other i.e., they belong to the same subnetwork. For all practical purposes, your experiment will use the internal names and IP addresses.

The internal names are user configurable. Depending on your experiment needs, you can change the internal names by clicking on the on the node and editing the name on the next screen as shown below.

change_name

Comments off

Being a good citizen: Releasing resources

Once you have completed your experiment, you must release the resources you have used. You do so by clicking on the delete button and select “delete everywhere”

delete

delete_all

Comments off

« Previous entries
Skip to toolbar