README: IBP Code
This is the IBP 1.3.0 source distribution.
You can get this release from:
http://loci.cs.utk.edu/ibp
Contents
========
1. Introduction
2. Documentation
3. Source tree overview
4. Compiling and installing an IBP server
5. How to start and monitor an IBP server
6. Using the IBP client library
7. Mailing list
8. Support
9. Thank you!
1. Introduction
===============
The Internet Backplane Protocol (IBP) is middleware for managing and using
remote storage. It was invented to support Logistical Networking in large
scale, distributed systems and applications. We define logistical networking
as the global scheduling and optimization of data movement, storage and
computation based on a model that takes into account all the network's
underlying physical resources. This contrasts with more traditional
networking, which does not explicitly model storage or computation resources
in the network.
We call this approach "logistical" because of the analogy it bears with the
systems of warehouses, depots and distribution channels commonly used in the
logistics of military and industrial activity. IBP provides a mechanism for
using distributed storage for logistical purposes.
It acquired its name because it was designed to enable applications to treat
the Internet as if it were a processor backplane. Whereas on a typical
backplane, the user has access to memory and peripherals and can direct
communication between them with DMA, IBP gives the user access to remote
storage and standard Internet resources (e.g. content servers implemented with
standard sockets) and can direct communication between them with the IBP API.
By providing a uniform, application-independent interface to storage in the
network, IBP makes it possible for applications of all kinds to use logistical
networking to exploit data locality and more effectively manage buffer
resources. We believe it represents the kind of middleware needed to overcome
the current balkanization of state management capabilities on the Internet,
so that any application that needs to manage distributed state can benefit
from the kind of standardization, interoperability, and scalability that have
made the Internet into such a powerful communication tool.
2. Documentation
================
The documentation is avaliable at the IBP website. Please check it out at
http://loci.cs.utk.edu/ibp/
3. Source tree overview
=======================
src/ Source code
etc/ IBP server configure files
doc/ Documents
include/ Header files
4. Compiling and installing an IBP server
=========================================
The IBP package should build on any moderate current Unix Like
environment.
The general procedure for compilation and installation follow these
three steps.
./confiugre
make
make install
Optionally you may specify an installation prefix using the
--prefix=
switch to 'configure', where "" is replaced
with the full path to destination directory. The default value is:
//local/
After configure completes successfully, run 'make' followed by
'make install'.
After 'make install' completes successully, edit the file
//etc/ibp.cfg
to set up appropriate value for all parameters used by ibp server.
This should be all ... your IBP server is ready!
5. How to start and monitor an IBP server
=========================================
The executable of IBP is //bin/ibp_server_mt
Before starting, we suggest to check out the options using the option "-help".
IBP server - options:
-help : this screen
-s : the amount of stable storage to allocate
-v : the amount of volatile storage to allocate
-ds : the path of the stable storage directory
-dv : the path of the volatile storage directory
-l : the max duration ( in days )
-p : the port to use
-pw : the password used to access and change server
: fundamnetal data .
-cf : the path to find the config file and store the log file
-c : the name of the config file (default ibp.cfg)
-hn : the host name (Fully Qualified Domain Name) on which
: the ibp server is running.
-tn : number of worker threads to start initially.
-tm : limit on total number of worker threads running.
-tl : enable per-thread logging.
-rt : the time for server grace recovery
-nr : skip the recover of the old capabilities
-V, --version : show version information and exit
If any of these parameters are not specified, the default values found in the
IBP configuration file (ibp.cfg) under /etc will be taken. In case there are
some option you'd like to keep in a sort of permanent way, the best thing to
do is to edit the file "ibp.cfg" and put them there. The options given on-line
override the ibp.cfg options, and the ibp.cfg options override the standard
settings. A sample of ibp.cfg is in the directory: //etc with
default values of all options. For more informations about how to set the ibp.cfg informations,
refer to our on-line documentation about the server configuration
(http://loci.cs.utk.edu/ibp/documents/).
So, now you're ready to start your IBP server with the parameters you like.
If you want to test the server, the best way to do it is using the
"ibp-test" tool. Being a rather crude and small program, you need to
specify the hostname and the port while calling the program.
To monitor the server, the tool ibp-slm (Simple Line Manager) comes with the
distribution. It can monitor any IBP server, and can modify its data (if the
right password is given).
Example:
--------
The following can be a typical ibp.cfg file
VOLSIZE 100
STABLESIZE 50
CFGPORT 6714
VOLDIR IBP/IBPDATA
STABLEDIR IBP/IBPDATA
FIFODIR IBP/IBPDATA
MAXDURATION 5
HOSTNAME ibp.cs.utk.edu
THREADS 10
MAXTHREADS 64
(as you might notice, the size are in Mb unless otherwise specified)
Now, let's start an IBP server changing some of the ibp.cfg parameters:
> ~/IBP/bin/SunOS/ibp_server_mt -pw IloveIBP -p 6715
cfg file: /etc/ibp.cfg
Parameters used:
Hostname: TOTO.CS.UTK.EDU
Port Used: 6715
Stable Storage size: 52428800
Volatile Storage size: 104857600
Stable Storage Dir: IBP/IBPDATA/
Volatile Storage Dir: IBP/IBPDATA/
FIFO Storage Dir: IBP/IBPDATA/
Max Duration: 432000
This is the starting screen of IBP (and the only one you will ever see, if
you're not in debugging mode ...)
Now, to monitor your server:
Now we will start ibp-slm, we'll put in our IBP server's name and port, and
then:
first we will check the actual status,
and then we will modify bot the stable and volatile storage (to 20 Mb).
> ~/IBP/bin/SunOS/ibp-slm
IBP - Simple Line Manager
IBP depot to connect to? toto
port (between 1023 and 65535)? 6715
Command? ?
The only things the IBP-slm can do are:
c to select a status command
s to select an IBP depot
e to exit
Command? c
Status operation? ?
The only operation supported are:
q to query the status of an IBP depot
m to modify some parameters of an IBP depot
c to go back to the command menu
e to exit
Status operation? q
Depot: toto
Port: 6715
Stable storage: 52428800
Stable storage used: 0
Volatile storage: 104857600
Volatile storage used: 0
Max Duration: 432000
Command? c
Status operation? m
Depot password? IloveIBP
New stable storage (in Mb)? 20
New volatile storage (in Mb)? 20
New max duration? -1
Depot: toto
Port: 6715
Stable storage: 20971520
Stable storage used: 0
Volatile storage: 20971520
Volatile storage used: 0
Max Duration: -1
Command? e
IBP - Simple Line Manager - exiting ...
>
6. Using IBP Client Library
=========================================
To use ibp client library in your code, just #include "ibp.h" in the
source code and add -libp when link the library.
The ibp.h is in the //include directory.
The ibp library (libibp.a) is in the //lib directory.
7. Mailing list
===============
Coming soon!
For the time being, just sent a message to loci-interest@cs.utk.edu
8. Support
==========
Yes, we need it. ;-)
If you need any support, please send an e-mail to
loci-interest@cs.utk.edu
I will try to answer to your questions ASAP ...
9. Thank you
============
We'd like to express our thanks to the IBP community and all the users
for all the helpful suggestions and bug reports we have received.
IBP has improved a lot and will continue to do so only with your help.