Consists of a set of protocols, among them ordered multicast, group membership, and flow control
Supports the virtually synchronous execution model
Can be used as a toolkit for application programming, or inserted into the system transparently
Can be run in the kernel, in user space, or split between them
Key Features
Flexible stack configuration
The Horus Common Protocol Interface (HCPI) is a defined set of interfaces between protocol layers for doing downcalls and upcalls
Horus microprotocols have standard top and bottom interfaces and can be stacked in various configurations, subject to a partial ordering
Horus protocol stack can be configured at initialization time or at run time
Each protocol layer interacts with 1) endpoints, communication entities like processes, machines, sockets, etc., 2) group objects, containing a group address and a view (a list of group members) and 3) message objects
Messages can be dispersed between different address spaces
Horus has a memory scheduler which manages the rate of memory allocation to different protocol stacks
Example Applications
Horus as an intercept proxy for system calls issued by Tcl; intercepts socket calls.
Elektra, a CORBA ORB that uses Horus for group management.
Implementation of a reliable version of the Continuous Media Toolkit (CMT)
Performance
Ordered multicast adds overhead
Hardware multicast helps with large groups
Questions
Horus can be implemented either in the kernel or in user space. When does it make sense to implement it where?
Is runtime reconfiguration of the stack useful? When could it be used?