Main Page Modules Data Structures File List Globals
SUMA : Symmetrically United Machines Architecture (for P2P applications)
0.1.2
Summary
Requirements
Installation
Running
Status
Documents
Thanks
Copyright
SUMA (symmetrically united machines architecture) is a core communication engine which is embedded in applications to construct a huge network of computers which is suitable to run P2P applications.
SUMA also includes APIs (in C language) to write P2P applications easily on both w*ndows and linux.
SUMA's core comunication engine is designed for so-called 'pure p2p' which does not need any centralized servers.
SUMA library (sumalib.a/sumalib.lib) contains APIs below:
- p2p_init
- p2p_create_broadcast_channel
- p2p_create_multicast_channel
- p2p_create_unicast_channel
- p2p_write
- p2p_read
- p2p_close_channel
- p2p_register_response_callback
- p2p_register_shutdown_callback
- p2p_shutdown
With some of these APIs, you can write a talk-routine of Instant Messanger like this:
static void talk(char *friend_name, char *uuid, char *msg)
{
p2p_channel_t *chann;
char *friend_name, *uuid;
char buf[2048];
chann = p2p_create_unicast_channel(IM_PORT, uuid);
sprintf(buf, "talk %s %s %s", myname, friend_name, rest);
p2p_write(chann, buf, strlen(buf) + 1);
p2p_close_channel(chann);
}
Please see more detail in src/c-sample/im.c.
As one of libraries, we are planning to develop the APIs to a distributed file system which involves the Block Managers on each suma nodes. The Block Manager will be implemented as a basic application of suma core APIs. With this distributed file system (suma file system), you will be able to implement BBS, Schedule Management System and/or other groupware applications.
Possible SUMA applications other than Instant Messanger are listed below:
- groupware (schedule management, bbs, ...)
- network games
- various search service (recruiting, shopping, ...)
- video / audio streaming
- net meeting
- e-learning
- file sharing
You can implement other language bindings than C. We include Tix (kind of Tcl/Tk) language binding and a sample implementation of Instant Messanger in Tix in this distribution.
SUMA is also available from SourceForge (http://www.sourceforge.net/projects/suma/). This is work in progress.
One of our contributor Sunnet Inc. has a plan to derive a product version of SUMA which has more secure communication core and rich tools for application development.
SUMA was successfully compiled and run on the following platforms :
- Linux Intel
- Windows family (Win2000 and Win98 was tested)
The following softwares are needed to generate SUMA:
- GCC to generate SUMA on Linux.
- Visual C++ to generate SUMA on Windows family.
- APR (Apache Portable Runtime).
- OpenSSL for Big Integer calculation.
- Tcl/Tk.
- Tix.
- Objective Caml. If you want to execute SUMA simulator, you need this.
- doxygen 1.2.13+, a documentation system for C/C++ needed to generate the documentation.
- graphviz, the AT&T Graph Visualization Tools also needed to generate the documentation.
if you want to develop SUMA with us, you will also need:
Download tarball from SourceForge:
you need softwares below:
- apr (apache portability runtime)
- openssl
- tcl (8.3.x)
- tk (8.3.x)
- tix (8.1.3)
- ocaml (3.04) --- only simulator depends on this.
currently, no configure(.in).
'cd' to top directory.
type 'make all'.
if you installed openssl other directory than /usr or /usr/local/ssl, you have to adjust Makefiles below:
- /src/lib/Makefile
- /src/c-sample/Makefile
- /src/tix/Makefile
Download zip file from SourceForge:
< installation of apr,apr-util and apr-iconv >
- obtain source from "http://apr.apache.org/
- replace 'lf' with 'crlf' of apr.dsp, aprlib.dsp ans other .dsp files
- open apr.dsp with visual studio. and others or aprutil.dsw
- build (or export .mak and nmake /f apr.mak and so on)
< installation of perl >
in order to build openssl on win32, you are required to build perl. you cannot use perl on cygwin.
< installation of openssl >
- obtain source from http://www.openssl.org/
- 0.9.6d is tested. someone reported that 0.9.6e won't be compiled with VC.
- read INSTALL.W32 and build it.
< building sumalib.a >
- adjust definitions (APRDIR, APRUTLDIR, OPENSSLDIR) to your apr location in sumalib.mak
- nmake /f sumalib.mak
< building c-sample >
- adjust definitions (APRDIR, APRUTLDIR, OPENSSLDIR) to your apr location in sumalib.mak
- nmake /f im.mak
< building tix >
- you must download archives (tcl8.3.4.tar.gz, tk8.3.4.tar.gz, tix-8.1.3.tar.gz)
- build them with makefile.vc in their source.
- adjust definitions (APRDIR, APRUTILDIR, OPENSSLDIR, TK_DEFS, TIX_DEFS, APRLIB, APRUTILLIB, APRICONVLIB, TK_LIBS, TCL_LIBS, TIX_LIBS) to your apr location in sumalib.mak
- nmake /f tix.mak
- nmake /f tix.mak bindist
< SUMA simulator >
- ocaml has two kinds of implementations on win. cygwin version and native win32 version.
- both are not stable.
- so, we gave up the execution of sim on win.
this is the binary distribution of our sample implementation of Instant Messanger in Tix in which we embedded SUMA library.
Download installer (exe file) from SourceForge:
install and double-click setup.exe which will be newly created on your desktop.
- cd to src/tix directory.
- execute 'im.sh' (or 'im.bat').
- you can modify /src/tix/im.tcl
- execute /src/c-sample/rep and im.tcl with rep's entry point address, you can construct local IM network.
- you can execute many repeators (or im.tcl with 's' option) to construct huge network.
SUMA is in a very early stage of development. No security, no robustness, many bugs and unstable. Do not use this for serious purpose.
Currently, no documents which we encourage you to read. Some fragments exist in /doc in Japanese only.
thanks to all developpers of great softwares which we are using to develop and to run SUMA.
All software in this package is Copyright 2002 Masao Onishi <masatchi@alto.ocn.ne.jp> and is distributed under the GPL License. See the COPYING
file for full legal details.
Generated on Wed Aug 28 14:45:08 2002 for suma by
1.2.17