A.1 Single node
This section provides the output of the experiment described in section 6.5 where a preliminary version of the plug-in management module was designed.
1. Plug-in listing - the application searches in the plug-in repository and tries to discover the plug-ins that are embedded in the system. In this case, it discovers two, lists their names, and allows the user to select which plug-in they would like to start.
--- Initialising ---
--- Looking for installed plugins ...
2 plugin(s) loaded. Names are:
chordplugin.ChordPlugin bambooplugin.BambooPlugin
--- You can start an overlay with any of the following : --- > > 1. chordplugin.ChordPlugin
--- > > 2. bambooplugin.BambooPlugin --- Your choice:
3. Plug-in creation and control - In the experiment, the ChordPlugin plug-in which is based on the OpenChord DHT implementation is chosen. As the first node, it creates the overlay and begins running on the default port 3730. After the plug-in has successfully started, it provides the user with options for some operations that can be performed.
136
### Finished overlay discovery and bootstrapping module ... ###
### Node instantiation ... ###
Using plugin: chordplugin.ChordPlugin
Starting: 146.231.123.55 as bootstrap peer...
Creating overlay: chord.ru.ac.za Booting parameters: 146.231.123.55 0
Running node on 146.231.123.55 on port 3730 [main] log4 configured with ’log4j.properties
***** Node options *****
1. Insert record 2. Retrieve record 3. Remove record 4. Leave overlay Your value: [0]
4. Resource insertion - To insert a key, option 1 is selected. The plug-in manager prints out the syntax for inserting a new record, which is key followed by value, separated by a space. Only records that contain the FQDN of the overlay can be inserted. When the user has pressed the enter key, the plug-in manager passes these values to the plug-in, which uses the native syntax to request the insertion into the DHT.
Syntax: <key> <value> sip:[email protected] / sip:[email protected]:5060
Key sip:[email protected] inserted
5. Resource retrieval - The record that was inserted in the previous step can be retrieved by choosing option 2 on the menu. The plug-in manager requests the user to enter the key, after which it returns the value associated with the key.
Syntax: <key> sip:[email protected] Retrieved sip:[email protected]:5060
A.2 Multiple Nodes
In the next stage of experimentation with the plug-in manager, the discovery module is intro- duced. The first node is kept alive and a new node on a different host machine tries to join the overlay by discovering any existing nodes.
1. Node detection - When the new node performs the discovery, it finds the first node, which returns details that the joining node needs to know in order to join the overlay through it. By choosing the option 0, the user tells the plug-in manager to repeat the discovery procedure. If option 1 is chosen, the node joins the overlay through the discovered node. If the option -1 is chosen, the discovery procedure exits, and the user can try to create an overlay that was not discovered (for which it will be the first node in that overlay).
### Starting overlay discovery and bootstrapping module ... ###
--- Listing overlays:
--- Found overlay: (1)chord.ru.ac.za --- Host: 146.231.123.55
--- Port: 3730
Your choice (0 to do rediscovery, -1 to quit discovery):
2. Bootstrapping existing overlay - Option 2 is chosen which prompts the plug-in manager to create the plug-in that is needed. The native join methods are used to join the overlay through the discovered node. The new node runs on port 3730. Options are presented to the user for operations that can be performed.
### Node instantiation ... ###
Using plug-in: chordplugin.ChordPlugin Joining overlay: chord.ru.ac.za
Starting: 146.231.121.180 as non-bootstrap peer...
Booting parameters: 146.231.123.55 3730
Running node on 146.231.121.180 on port 3730 [main] log4j configured with ’log4j.properties’.
***** Node options *****
1. Insert record 2. Retrieve record 3. Remove record 4. Leave overlay Your value: [0]
A.3 Heterogeneous overlays
The last stage of experimentation with the plug-in manager addresses interoperating between heterogeneous overlays.
8. Resource insertion (Node A - OpenChord) - A node in the chord.ru.ac.za overlay inserts a record into the location service.
Syntax: <key> <value> sip:[email protected] / sip:[email protected]:5060
9. Resource retrieval (Node B - Bamboo) - A node in the bamboo.ru.ac.za overlay needs the contact record of the node above. The plug-in manager on the Bamboo node realises that this resource record cannot be found in the local location service since the RHS points to a for- eign overlay. It performs a discovery and tries to find responses that are specifically from the chord.ru.ac.za overlay. It gets such a response and tries to start an appropriate plug-in for that overlay. The plug-in is started and a get request is issued. The record is retrieved and the contact address is passed the plug-in manager of the Bamboo node and the new plug-in is terminated.
Syntax: <key> sip:[email protected]
Parameters: chord.ru.ac.za chordplugin.ChordPlugin / 146.231.121.180 3730
--- Compatible plugin found
Starting: chordplugin.ChordPlugin as non-bootstrap peer...
Booting parameters: localhost 3730
Running node on 146.231.123.55 on port 3731 via bootstrap 3730 [main] log4j configured with ’log4j.properties’.
Retrieved sip:[email protected]:5060