The MMG (Multiple Multicast Groups) class implements the RLM
protocol (Receiver-driven Layered Multicast). See
<a href=http://www.cs.berkeley.edu/~mccanne/phd-work/>McCanne's
thesis</a> for a detailed description of RLM.<p> This class implements only the basic protocol machinery, it
does not know anything about either ns or mash. MMG is an
abstract class -- you should not instantiate it directly.
Instead, to use RLM a subclass needs to be created that
actually joins and leaves groups, makes upcalls on packet
losses, etc...<p>
Two such subclasses are implemented at the moment, one for
ns and one for mash. Note that since all code in the MMG
base class is shared between ns and mash, you should not
change anything in this file without being certain that the
changes will work properly in both ns and mash.<p>
See documentation for the appropriate subclass (i.e., MMG/ns
or MMG/mash) for details about RLM in different environments.
MMG instproc init { levels }
MMG instvar debug_
MMG instvar env_
MMG instvar maxlevel_
MMG instvar TD
MMG instvar TDVAR
MMG instvar state_
MMG instvar subscription_
MMG instvar layer_
MMG instvar layers_
MMG instproc set-state s
MMG instproc drop-layer {}
MMG instproc add-layer {}
MMG instproc current_layer_getting_packets {}
MMG instproc mmg_loss {}
-
return the amount of loss across all the groups of the given mmg
MMG instproc mmg_pkts {}
-
return the number of packets received across all the groups of the given mmg
MMG instproc check-equilibrium {}
- XXX what is this for?
deleted some code that didn't seem to be used...
MMG instproc backoff-one { n alpha }
MMG instproc backoff n
MMG instproc highest_level_pending {}
MMG instproc rlm_update_D D
MMG instproc exceed_loss_thresh {}
MMG instvar h_npkts
MMG instvar h_nlost
MMG instproc enter_M {}
MMG instproc enter_D {}
MMG instproc enter_H {}
MMG instproc log-loss {}
MMG instvar pending_ts_
MMG instproc relax_TJ {}
MMG instproc trigger_TD {}
MMG instproc set_TJ_timer {}
MMG instproc set_TD_timer_conservative {}
MMG instproc set_TD_timer_wait {}
MMG instproc is-recent { ts }
-
Return true iff the time given by $ts is recent enough
such that any action taken since then is likely to influence the
present or future
MMG instproc level_pending n
MMG instproc level_recently_joined n
MMG instvar join_ts_
MMG instproc pending_inferior_jexps {}
MMG instproc trigger_TJ {}
-
join the next higher layer when in /S
MMG instvar ctrl_
MMG instproc our_level_recently_added {}
MMG instproc recv-ctrl msg
MMG instproc local-join {}
MMG instproc debug { msg }
MMG instproc dumpLevel {}
- XXX