wiki:GIR2.1_BGPMux

Version 1 (modified by lnevers@bbn.com, 8 years ago) (diff)

--

BGPMux Evaluation

BGPMux (a.k.a. dtunnel) version 53 was downloaded from the SVN repository http://davis.gtnoise.net/svn/dtunnel/ with the login/password provided.

Time frame: This evaluation took place June 14-29, 2010.

BGPMux Findings

Initial SVN revision 56 was missing the following files: ref.bib, rfc.bib and data.py. Verified that files are in the next svn revision 57.

With a revoked certificate, the server process is started and no failure is reported to user. Logs show an un-handled error and the revoked certificate message, this may be missed, if user does not look at the logs, also process should not be started if cert is revoked. Verified that files are in the next svn revision 57.

With a properly started server, starting a client results in a twisted exception. Verified that files are in the next svn revision 57.

Using Version 57, new problem was found with tools not handling scenario where ProtoGENI cannot get the requested node information. Handler added and new rspec to be provided. (revision 58)

BGPMux How-to

The package is delivered with a README that captures all software pre-requisites and installation steps:

This file describes the distribution of the Aggregate Manager (AM) for 
BGP-mux.

1. INSTALLING AM

Before running AM make sure that you have following Python libraries
installed and working:
1) Twisted
2) Pexpect
3) Pxssh

2. RUNNING AM

Just run:
./server.py

this will start the AM engine which will bind to a TCP port 8080.

AM accepts requests from XMLRPC clients and implements 'RedeemTicket'
method. Method accepts only one parameter which is an XML string
formatted as RSpec. 

AM needs emulab.net credentials to perform Resolve() calls to Emulab AM.
Right now credentials are hardcoded to point to /home/valas/.ssl
directory in ProtoGENI.py file. If you plan to test AM please change the
pointers to point to your Emulab AM credentials.

3. TESTING AM

A sample RSpec is in the file flash-rspec.xml. Note that this file is
extended version of "official" RSpec and contains some additional
attributes necessary for our script to establish a client tunnel and BGP
session.

We also provide a sample client. To feed in an XML file "RedeemTicket"
call, simply execute:
./client.py flash-rspec.xml

4. KNOWN BUGS

AM should run as close (in terms of network delay) to the Mux as
possible. Jitter and delay can cause expect script sessions to timeout.

The sample rspec provided flash-rspec.xml:

<rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/0.1">
 <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">
   <node_type type_name="pc" type_slots="1"/>

   <interface virtual_id="control"/>
 </node>
 <node component_uuid="gtnoise.net+node+atlanta_mux" component_manager_uuid="f00" virtual_id="atlanta_mux" virtualization_type="emulab-vnode" exclusive="1">
   <node_type type_name="bgpmux" type_slots="1">
     <field key="upstream_as" value="2637"/>
     <field key="prefix" value="168.62.16.0"/>
     <field key="netmask" value="21"/>
   </node_type>
   <interface virtual_id="control"/>
 </node>
 <link virtual_id="link0">
   <link_type name="GRE">
     <field key="key" value="0"/>
     <field key="ttl" value="0"/>
   </link_type>
   <interface_ref virtual_node_id="atlanta_mux" tunnel_ip="192.168.0.1" virtual_interface_id="control"/>
   <interface_ref virtual_node_id="pc1" tunnel_ip="192.168.0.2" virtual_interface_id="control"/>
 </link>
</rspec>

Start the server process, which takes over TCP port 8080 with Twisted Web httpd 8.2.0:

$ sudo ./server.py 

Start the client:

$./client.py flash-rspec.xml