A brief overview of the multikit architecture
Programs
The entities manipulated by multikit (& shown in directories) are called programs (by analogy with "TV programs", not "computer programs").
Many programs are also channels, meaning that they are associated with an IP multicast address.
(More precisely, channels are associated with a GroupEId: an IP address, a port, and a scope (which in turn consists of a TTL and an optional encryption key). Also, strictly speaking, the IP address need not be a multicast address, although it usually is.)
A directory is a special kind of channel that has contents (a set of zero or more programs as members).
A bundle is a program that has contents, like a directory, but without an associated IP address.
Bundles are used to group together other programs.
Each announcement of a bundle includes all of its members.
Thus there are four basic types of program:
- directories
examples: "Announcements", "SDP default directory"
denoted by a "D" in the "type" column of itemized views
- (non-directory) channels
example: audio-only SDP sessions
denoted by a "C" in the "type" column of itemized views
- bundles
example: SDP sessions that contain both audio and video
denoted by a "B" in the "type" column of itemized views
- other (non-channels that are no bundles)
example: The "README" message in the "Announcements" directory
denoted by a "N" in the "type" column of itemized views
Attributes
Much of the information about a multikit program is contained in its attributes: a set of string names - each with an associated string value.
Each program also inherits attributes from a parent program, as well as from the directories and bundles that it belongs to.
(The roots of the 'parent' hierarchy are a set of four 'template' programs - one for each of the basic types of program described above.)
Perhaps the most important of a program's attributes is "invokedCmd".
The value of this attribute is the command that gets executed whenever the program is launched.
A separate document describes how
developers can implement their own "invoked commands".
Security
The multikit security architecture is not fully implemented in the current alpha release.
However it is anticipated that future versions will provide the following functionality:
- Program announcements can be digitally signed, to provide integrity.
Program ids will contain a public key that can be used to verify these signatures.
Only the holder(s) of the corresponding private key will be able to modify the program's attributes.
- Directories can use optional public key attributes ("modifyContentsKey" and "removeContentsKey") to impose controls on who is allowed to modify (add or remove) the directory's contents.
- Channels - i.e., programs with an associated multicast address - can have an optional encryption key, to provide confidentiality.
Because directories are also channels, this also provides a way to make directory contents confidential.
Return to the main multikit page