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.