[net2-wg] Proposal for dissemination structure and interfaces
Philip Levis
pal at cs.stanford.edu
Thu Dec 15 08:38:16 PST 2005
On Dec 15, 2005, at 12:13 AM, Omprakash Gnawali wrote:
>
> Following up on earlier discussion on multiple sink scenario, how
> would one accomplish the following using this proposed interface:
>
> A node wants to send certain messages to the entire network. The
> messages are dynamically generated or as a response to some user
> interaction. If one simply uses the change function, the consumers can
> override or never receive the values prior to the change (ignore older
> seqno, for example). This is not a desired behavior. The consumers
> would like to receive all the messages.
Yes. To some degree, you can't assure that all nodes will reliably
receive all messages. You might be producing values at a rate faster
than the network can cache. You can, however, assure that a node will
eventually receive the most recent message.
I don't think that the "change" command is something that lots of
programs are going to use. It's kind of tricky, as you point out. I
think that more commonly values will originate from *outside* the
network. It just seemed problematic to not allow a protocol on top of
dissemination to update values.
So, to provide the functionality you describe, you could do one of
two things:
1) Have the user program send dissemination data packets to a node
connected on a serial link. The user program (or a library) manages
the (version, key, value) tuple and updates it as needed. The node
acts as if it just received an update, and begins propagating it.
2) Write a higher-level application protocol that handles packets
containing new messages and calls the change() function appropriately.
> If I understand the interface, different nodes are allowed to be
> producers in a connected network, which is very useful in scenarios
> that we are looking at. Commands being sent from different injection
> points.
Yes. If you want to disseminate something from multiple points
simultaneously, then you need to generate the (version) part of the
tuple outside of the network, so it can be coordinated across those
multiple points.
Phil
-------
"We shall not cease from exploration
And the end of all our exploring
Will be to arrive where we started
And know the place for the first time."
- T. S. Eliot, 'Little Gidding'
More information about the net2-wg
mailing list