-
Notifications
You must be signed in to change notification settings - Fork 0
Blackhawk: A Publish/Subscribe Prototype for FreeBSD
License
Unknown, GPL-2.0 licenses found
Licenses found
Unknown
LICENSE
GPL-2.0
COPYING
srcman/blackhawk
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Blackhawk v0.3: A Publish/Subscribe Prototype for FreeBSD ========================================================= Please visit code.psirp.org! System requirements: -------------------- Either: * A PC with a 64-bit processor * The FreeBSD operating system, version 7.2 or 8.0 * Internet access or a set of FreeBSD CDs (for installing packages) or: * A virtual machine image with FreeBSD and Blackhawk preinstalled * A computer with a virtual machine system that can run the image Installation: ------------- If you have downloaded a virtual machine image with Blackhawk preinstalled, you can skip the rest of these installation steps. The first thing to do is to install some required packages, namely autotools, python26, swig, and ruby. This can be done by running the 'install-prereqs.sh' script. In addtion, you need to have the FreeBSD kernel sources installed (can be done with sysinstall). Next, the build environment needs to be configured with the 'runme.sh' script. Finally the prototype can be compiled by running 'make', and installed with 'make install'. Root privileges are needed for installation. Example: # ./install-prereqs.sh # ./runme.sh # make all install (Note: by default runme.sh runs configure --prefix=/usr/local This should be fine.) In order to avoid problems, disable multicore support by setting kern.smp.disabled=1 in FreeBSD's /boot/loader.conf (and reboot): # echo kern.smp.disabled=1 >> /boot/loader.conf The installation can be verified by running 'make check'. Running the checks can take several minutes. Finally the output should say: "All 7 tests passed". Uninstallation is done by running: # make uninstall It's adviceable to always uninstall a previous version of Blackhawk before upgrading to a new one. If you want clean up the build system (i.e., automatically generated Makefiles etc.), run: # make clean distclean # ./cleanup.sh System Initialization: ---------------------- The local pub/sub system (kernel module, file system, and scope daemon) can be loaded by running: # loadps If also the network helpers need to be started, the command is: # loadps net (Note that the default network configuration will most probably not work in your environment. You need to edit /etc/netiod.conf according to the instructions found at code.psirp.org.) Unloading the system is done with either one of these commands: # unloadps or # unloadps net Reload commands are also provided: # reloadps or # reloadps net Directories: ------------ examples - Programming and configuration examples figures - Blackboard visualization tools helpers - Helper applications m4 - Compilation helper scripts libpsirp - API psfs - Kernel module and scoped test - Test applications and scripts utils - Utilities Tools: ------ These apps can be used for simple testing: Application - Function: publish - publish a file or input from stdin subscribe - subscribe to a publication subevents - use kevents to get information about new publications and/or subscriptions printscope - prints scope contents psirptest - a tool that can do pretty much the same as the other apps above. Perhaps more of debugging value. Running "psirptest -i" dumps internal state to stdout. Helpers: -------- scoped - Scope Daemon: Updates scope publications when something is published laird - Pub/Sub Local Area Intradomain Rendezvous Daemon: Implements a simple link-local network rendezvous mechanism netiod - Pub/Sub Network I/O Daemon: Implements packet sending, receiving, and forwarding File system view: ----------------- For debugging and backwards compatibility, the pub/sub system is also visible as a set of files and directories: /pubsub/ - root directory for the file system view /pubsub/sid/ - scopes are visible under the root /pubsub/sid/rid/ - RIds (including SIds) are visible in scopes /pubsub/sid/rid/meta - read-only view to the binary metadata /pubsub/sid/rid/data - reading gives latest version; writing creates a publication version /pubsub/sid/rid/vrid/ - view to a specific version; incl. data & meta /pubsub/sid/rid/vrid/prid - read access to individual pages Creating your own applications: ------------------------------- The libpsirp API with publish() and subscribe() functions can be used for application programming in C, Python, and Ruby. For more information, check the API description at code.psirp.org, and also the examples/C, examples/python, and examples/ruby directories. Pub/Sub networking: ------------------- Note: Networking support in this release is still preliminary. For example, publication versioning, demand paging, and subscribe-before-publish are NOT supported. Moreover, only simple tree topologies should be set up. All links in the network should be point-to-point -- connecting several nodes to the same broadcast link is not supported. 'make install' copies a network configuration file template to /etc/netiod.conf. This file lists network interfaces and their zFilters. Configuration examples are also found under examples/zf. The configuration file must be edited manually in order to set up a local network. Each outgoing link interface must have a link identifier and each node must have a virtual identifer pointing to itself. In addition, one node is assumed to act as the local rendezvous node. Other nodes must have default routes pointing towards that node (i.e., zFilters with the link-Ids on the path ORed with the rendezvous node's virtual Id). Performance testing ------------------- If you are going to make any performance measurements with Blackhawk, you should first completely disable all debug prints that slow down the system: 1. Edit runme.sh and change the "./configure --enable-debug $@" line to just "./configure $@". 2. Edit psfs/module/Makefile and replace the "DEBUG_FLAGS=-g -DDEBUG" line with "DEBUG_FLAGS=". 3. Edit libpsirp/python/ps_debug.py and set the PSIRP_PY_DEBUG variable to 0. 4. [Optional: You can also edit the utils/loadps script and set the USER_DEBUG_MASK parameter to 0x0 and KERN_DEBUG_MASK to 0x0000000000000000, although these changes shouldn't make any difference after doing the previous steps.] 5. Finally, reconfigure and recompile the system by running (e.g.) "make uninstall clean distclean && ./runme.sh && make all install". Then your system is ready for performance testing. Note, however, that this will disable all runtime warnings and error messages. Hence you should probably check that your test cases work before turning off all debug messages. More information: ----------------- Please visit code.psirp.org!
About
Blackhawk: A Publish/Subscribe Prototype for FreeBSD
Resources
License
Unknown, GPL-2.0 licenses found
Licenses found
Unknown
LICENSE
GPL-2.0
COPYING
Stars
Watchers
Forks
Packages 0
No packages published