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