[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Planned changes to the ns multicast internals



This is just a brief note to describe the changes we are making
to the internal multicast routing protocols in ns.  If you are
only using multicast routing as a infrastructure mechanism,
and the protocol you use is one of dense mode, or centralized
multicast routing, then these changes need not affect you.
More particularly, these changes can simplify your coding, and
also provide improved features that you would use.  However,
if you are looking at multicast routing, or are using PIM
as your multicast routing protocol, then these changes could
affect you adversely.  To understand the nature of the impact,
we would like to hear from you as to exactly what your multicast
routing work is, or how and why you are using PIM, and to better
understand your needs and concerns.

These changes are scheduled to occur before the next release,
currently impending.  Subsequently, we are also considering
the implementation of a sparse mode multicast routing protocol
as well.  Some of the issues we expect to address are:

- redesign of the network interfaces code.  This would make it
	easier to compose complex links etc. without requiring
	knowledge of the internal structure of links and nodes.
	Thus, this eliminates the need for kludges such as:

		if link head is DuplexNetworkInterface ; then
			do something
		else
			do something else
		fi

- provide increased tracing support in multicast

- devolve support for the MultiLink and MultiLinkofInterfaces
	forms of LANs.

	However, we plan to add support to the LAN models
	done by the Daedalus group at Berkeley.

- eliminate the flag variable, Simulator::NumberInterfaces_.  Users
	no longer need worry or specify this variable.  This 
	setting will be quietly ignored, even if the user sets it.

- Similarly, the flag variable, Simulator::EnableMcast_ is to be phased out,
	in favour of a method based invocation of the same.  The premise
	is that, in an OO environment, methods good, flags bad.

- we expect to work on the dense mode, and centralized multicast code,
	and over a brief span of time, provide a simple sparse mode
	implementation of multicast.

	At least the first two items will be completed before the
	impending release.

	In particular, we do not plan to upgrade the PIM implementation 
	in ns at this time.

For those people working on internal multicast routing, there may be
additional impact.  This also impacts those who are using the PIM
implementation in ns at the present time:

- cleanup some of the internal multicast code, to make it easier
	to experiment with multicast routing protocols.
	in particular, we plan to restructure the internals to
	conform to the idioms of the appropriate programming
	language.  Since most of multicast is in OTcl, this means
	that the OTcl code will change.  One common example of
	change is code such as:

	<mrtproto> instproc <method> { argslist } { ...  }

	will change to

	<mrtproto> instproc <method> { args } { ...  }

		In this case, the args form of input arguments to
		a procedure call is a Tcl idiom, and hence is
		*more natural* to OTcl; however, it means that
		functions that call this method should no longer
		wrap their arguments into a single list.  In
		particular, this will cause OTcl to pass the
		arguments as a doubly nested list, and likely
		confuse such methods.

	This also involves other changes to the internal calling
	APIs that could affect the way the base classes interact
	with your routing protocol.  We will attempt to document
	all the details as we accomplish these changes.  These
	will appear on the changes web pages, at
	http://www-mash.cs.berkeley.edu/ns/mcast.html periodically.

This entire message is also available at the same address,
http://www-mash.cs.berkeley.edu/ns/mcast.html.


Kannan

--
[email protected]
http://www.isi.edu/~kannan