The Local Group based Multicast Protocol (LGMP) is a protocol implementation based on the ideas as defined by the Local Group Concept (LGC). It supports reliable and semi-reliable transfer of both continuous media and data files. LGMP is based on the principle of subgrouping for local error recovery and for local feedback processing. Some of its features are:
Receivers dynamically organize themselves into subgroups, which are called local groups. They automatically select a Group Controller to coordinate local retransmissions and to process feedback messages. The selection of appropriate receivers as Group Controllers is based on the current state of the network and of the receivers themselves. In contrast to other reliable multicast protocols, no manual or administrative intervention is necessary. LGMP subgroups are self-organizing and self-adapting, thus, improving fault-tolerance and system reliability.
The selection of Group Controllers is not part of the data transfer protocol itself. Instead, a separate protocol has been defined and implemented, which is named Local Group Configuration Protocol (LGCP, formerly DCP). LGCP provides mechanisms for automated self-configuration of local groups and for dynamic reconfiguration in accordance with the current network load and group membership. Scalability is achieved using a novel state distribution mechanism called Expanding Ring Advertisement (ERA).
LGCP is independent from data transfer. Therefore, it can be used by any other multicast protocol in order to define local groups (local regions, local domains) and to establish and maintain a tree-based structure of subgroups. It can also be used to dynamically set up more general overlay networks.
In LGMP, packet errors are firstly recovered inside local groups using a coordinated, receiver-oriented approach. Missing data units are requested from the sender or a higher level Group Controller only if not even a single member of the local group holds a copy of the missing data unit. Otherwise, errors will be recovered by local retransmissions within the subgroup. We refer to this mechanism as local error recovery. Local error recovery is different from tree-based protocols using strict hierarchical error recovery. With strict hierarchical error recovery, Group Controllers always request missing data packets from their parent, even if the data packet has been successfully received by a member of their subgroup. Most tree-based protocols operate this way. Measurements on the MBone have shown that LGMP-style error recovery yields notable performance gains over strict hierarchical error recovery in certain environments.
LGMP uses packet-based selective retransmissions, and it precisely restricts the scope of local retransmissions by using separate multicast addresses for each local group. Full reliability and efficient buffer utilization are achieved using a three-state acknowledgment scheme. This scheme enables dynamic reconfiguration of subgroups and hot swapping of Group Controllers in the case of system failures without loosing synchronization.
LGMP implements a hierarchical, rate-based congestion control scheme. The problem of congestion detection is handled for each local group separately, thus, being able to run a TCP-like scheme on acceptable timescales. A receiver, whose packet loss rate exceeds a pre-defined threshold, sets the CONGESTION bit in its outgoing feedback messages. On receiving such a message, Group Controllers perform two steps: First, they adapt their retransmission rate according to the "multiplicative decrease and additive increase" principle. Second, they set the CONGESTION bit in outgoing feedback messages, thus, forwarding the congestion notification upstream towards a higher level Group Controller and the sender. Finally, the sender adapts the transmission rate according to received congestion notifications.
LGMP as well as LGCP have been implemented and tested on a variety of different platforms, such as Linux, Solaris, Digital Unix, SCO UnixWare, Windows NT and Windows 95. The implementation provides a multi-threaded user space library that can be linked to any application. More information and a free copy of the source code can be found here.
Unfortunately, there is not yet an English written protocol specification available. For a German specification including packet formats and protocol state machines have a look at " Scalable Multicast Communication in Wide Area Networks (in German)" at the Publications page.
Maintained by Markus
Last modified: Monday, October 25, 2004