libsrm is a transport protocol framework for reliable multicast applications that was motivated by earlier work on Scalable Reliable Multicast protocol  (SRM) and its instantiation in the shared drawing tool wb. In addition to a novel timer-based feedback scheme for loss detection and recovery, the authors of the SRM paper also proposed an ALF-based approach to RM protocol design, resulting in a transport protocol that is optimized for the network. While the paper proposed the notion of applying ALF to reliable multicast transport, the problem of designing and developing a customizable protocol framework that could be used by applications with different reliability semantics was left open.
One of the key problems in designing a general protocol framework is the "data naming" problem, articulated here. Traditional transport protocol primitives to name and identify data such as monotonic sequence numbers are not sufficiently flexible to request specific pieces of data and ignore others. Our solution to the naming problem, called the Scalable Naming and Announcement Protocol  (SNAP) proposes structured namespaces and a special protocol to disseminate them scalably.
libsrm is intended as a vehicle for research
into issues in multicast transport such as loss recovery,
data naming, data consistency, and congestion control, and as a
testbed for large scale real world RM experiments.
It has also been used to develop
new and interesting RM applications, e.g., the MASH webcast application, available as part of
the
MASH release.
The software architecture of the toolkit, shown
below, consists of