The Protocol for Unified Multicasting Through Announcements (PUMA) is a distributed, receiver initiated, mesh based multicast routing protocol. By default, the first receiver in a multicast group acts as the core (i.e., rendezvous point) for that particular group. PUMA uses a simple and very efficient control message, a multicast announcement, to maintain the mesh. Besides that, multiple meshes can be compiled into a single announcement bucket. PUMA does not require any unicast protocol, and all transmissions are broadcasts. Even though broadcast transmissions are unreliable, the mesh itself introduces some redundancy, and because the mesh includes only group members and the nodes interconnecting them, broadcasts remain scoped within the mesh.
As a multicast announcement propagates throughout the mesh, nodes learn the shortest path to the core. This way, data packets can be quickly routed to the core. On its way toward the core, two things can happen to a data packet: (a) the packet goes all the way until it reaches the core, or (b) a mesh member is hit before reaching the core. Anyway, once a data packet reaches the mesh, the packet propagates only inside the mesh. The core is not a single point of failure, because when the core fails a group member quickly takes the core role. See ns/puma directory and ns/tcl/ex/puma.tcl for implementation of PUMA in ns.
Tom Henderson 2011-11-05