| 1 | = BGPMux Evaluation = |
| 2 | |
| 3 | BGPMux (a.k.a. dtunnel) version 53 was downloaded from the SVN repository http://davis.gtnoise.net/svn/dtunnel/ with the login/password provided. |
| 4 | |
| 5 | Time frame: This evaluation took place June 14-29, 2010. |
| 6 | |
| 7 | = BGPMux Findings = |
| 8 | |
| 9 | Initial SVN revision 56 was missing the following files: ref.bib, rfc.bib and data.py. Verified that files |
| 10 | are in the next svn revision 57. |
| 11 | |
| 12 | With a revoked certificate, the server process is started and no failure is reported to user. |
| 13 | Logs show an un-handled error and the revoked certificate message, this may be missed, if user does |
| 14 | not look at the logs, also process should not be started if cert is revoked. Verified that files |
| 15 | are in the next svn revision 57. |
| 16 | |
| 17 | With a properly started server, starting a client results in a twisted exception. Verified that files |
| 18 | are in the next svn revision 57. |
| 19 | |
| 20 | Using Version 57, new problem was found with tools not handling scenario where ProtoGENI cannot get |
| 21 | the requested node information. Handler added and new rspec to be provided. (revision 58) |
| 22 | |
| 23 | |
| 24 | = BGPMux How-to = |
| 25 | |
| 26 | The package is delivered with a README that captures all software pre-requisites and installation steps: |
| 27 | {{{ |
| 28 | This file describes the distribution of the Aggregate Manager (AM) for |
| 29 | BGP-mux. |
| 30 | |
| 31 | 1. INSTALLING AM |
| 32 | |
| 33 | Before running AM make sure that you have following Python libraries |
| 34 | installed and working: |
| 35 | 1) Twisted |
| 36 | 2) Pexpect |
| 37 | 3) Pxssh |
| 38 | |
| 39 | 2. RUNNING AM |
| 40 | |
| 41 | Just run: |
| 42 | ./server.py |
| 43 | |
| 44 | this will start the AM engine which will bind to a TCP port 8080. |
| 45 | |
| 46 | AM accepts requests from XMLRPC clients and implements 'RedeemTicket' |
| 47 | method. Method accepts only one parameter which is an XML string |
| 48 | formatted as RSpec. |
| 49 | |
| 50 | AM needs emulab.net credentials to perform Resolve() calls to Emulab AM. |
| 51 | Right now credentials are hardcoded to point to /home/valas/.ssl |
| 52 | directory in ProtoGENI.py file. If you plan to test AM please change the |
| 53 | pointers to point to your Emulab AM credentials. |
| 54 | |
| 55 | 3. TESTING AM |
| 56 | |
| 57 | A sample RSpec is in the file flash-rspec.xml. Note that this file is |
| 58 | extended version of "official" RSpec and contains some additional |
| 59 | attributes necessary for our script to establish a client tunnel and BGP |
| 60 | session. |
| 61 | |
| 62 | We also provide a sample client. To feed in an XML file "RedeemTicket" |
| 63 | call, simply execute: |
| 64 | ./client.py flash-rspec.xml |
| 65 | |
| 66 | 4. KNOWN BUGS |
| 67 | |
| 68 | AM should run as close (in terms of network delay) to the Mux as |
| 69 | possible. Jitter and delay can cause expect script sessions to timeout. |
| 70 | }}} |
| 71 | |
| 72 | The sample rspec provided flash-rspec.xml: |
| 73 | {{{ |
| 74 | <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/0.1"> |
| 75 | <node component_uuid="urn:publicid:IDN+emulab.net+node+pc1" component_manager_uuid="28a10955-aa00-11dd-ad1f-001143e453fe" virtual_id="pc1" virtualization_type="emulab-vnode" exclusive="1"> |
| 76 | <node_type type_name="pc" type_slots="1"/> |
| 77 | |
| 78 | <interface virtual_id="control"/> |
| 79 | </node> |
| 80 | <node component_uuid="gtnoise.net+node+atlanta_mux" component_manager_uuid="f00" virtual_id="atlanta_mux" virtualization_type="emulab-vnode" exclusive="1"> |
| 81 | <node_type type_name="bgpmux" type_slots="1"> |
| 82 | <field key="upstream_as" value="2637"/> |
| 83 | <field key="prefix" value="168.62.16.0"/> |
| 84 | <field key="netmask" value="21"/> |
| 85 | </node_type> |
| 86 | <interface virtual_id="control"/> |
| 87 | </node> |
| 88 | <link virtual_id="link0"> |
| 89 | <link_type name="GRE"> |
| 90 | <field key="key" value="0"/> |
| 91 | <field key="ttl" value="0"/> |
| 92 | </link_type> |
| 93 | <interface_ref virtual_node_id="atlanta_mux" tunnel_ip="192.168.0.1" virtual_interface_id="control"/> |
| 94 | <interface_ref virtual_node_id="pc1" tunnel_ip="192.168.0.2" virtual_interface_id="control"/> |
| 95 | </link> |
| 96 | </rspec> |
| 97 | }}} |
| 98 | |
| 99 | Start the server process, which takes over TCP port 8080 with Twisted Web httpd 8.2.0: |
| 100 | {{{ |
| 101 | $ sudo ./server.py |
| 102 | }}} |
| 103 | |
| 104 | Start the client: |
| 105 | {{{ |
| 106 | $./client.py flash-rspec.xml |
| 107 | }}} |