VOEvent II summary, part 3

Rob Seaman seaman at noao.edu
Sun Dec 18 09:49:47 PST 2005


Hola,

	Sorry for the delay getting to the third installment of notes from  
the VOEvent II workshop - covering the mini-interop session on  
Wednesday.  I'm sure the doughty attendees, Alasdair, Matthew, Phil,  
Ramon, Robert and Scott will correct and extend my comments.  As you  
can see, we had representatives from several projects that are  
implementing VOEvent infrastructure.

	The goal was to ensure that everybody is pulling in the same  
direction.  I think we were entirely successful in this - for the  
near term.  We reached a broad consensus on a number of issues  
relating to bootstrapping the emerging VOEvent network.  That each  
project is also exploring complementary regions of technology space  
for their own internal use is more a feature of the process, than a  
complication.  We simply don't know yet what the long term technology  
suite is likely to be.

	We do, however, have a much clearer vision of the major components  
that will compose a fully functioning VOEvent system:

	1) Author - any entity that creates content suitable for later  
representation as a sky transient alert.  Strictly speaking, the  
author resides outside the network of VOEvent entities.

	2) Publisher - an entity that assigns a unique identifier to a  
conforming VOEvent packet.  Either the author or the publisher may  
format the content into the original VOEvent packet.  Ensuring that  
output packets are conforming XML documents and validating these  
against the schema would be desirable, but there is really no way to  
enforce this.  Validation is ultimately the responsibility of  
subsequent components.  A publisher is a source of VOEvent packets.

	3) Subscriber - any entity that receives VOEvent packets for  
whatever purpose.  A subscriber is a sink of VOEvent packets.

	4) Relay - a component that subscribes to one or more input packet  
streams and emits one or more output streams.  A relay may filter a  
stream based on the contents of the packets, or in arbitrarily  
advanced ways such as coincidence testing two streams against each  
other.  Implicit in the concept of the VOEvent subscriber model is  
the notion of programmable packet filtering.  Relays will accomplish  
this.  Filtering may be rules based.  Filtering may be richly  
adaptive.  Initial relay prototypes will likely be programmed via web  
interfaces (e.g., with checkboxes).

	5) Repository - a component that persists packets either permanently  
or temporarily.  A repository must subscribe to one or more input  
VOEvent streams.  How repositories are queried and retrievals are  
scheduled is not specified, but this might occur either within the  
VOEvent network or external to the network.  In the former case, a  
repository might be considered a relay implementing a filter with  
arbitrary latency, and with rules applied retroactively.

	6) Broker - any heterogeneous combination of two or more of the  
three atomic components:  publisher, repository or relay.   
(Subscription is mixed in as needed.)  We spent a lot of time trying  
out different words such as aggregator or nexus and assigning  
different names to different combinations of the atoms.  Ultimately,  
it seemed more expressive to use a general term to cover all cases.   
A broker, of course, may offer arbitrary applications-level  
functionality in addition to the VOEvent packet handling.

	A typical VOEvent authority will operate a number of such  
components, each of which may be visible through the registries.  It  
will be easiest to refer to the NOAO or TALON VOEvent "broker", for  
instance, rather than tossing around some loosely defined meaning of  
publisher for such instances.  A publisher publishes new packets.   
Period.

	Note that nothing has yet been said about the underlying transport  
protocol(s).  This is likely to remain a free parameter.   
Interoperability requires two parties to agree on a protocol, of  
course, and it is anticipated that a small number of options will  
garner the lion's share of the VOEvent "market".  To bootstrap the  
system, we settled on two transport protocols, one pull and one push:

Pull:
	RSS 2 with enclosures.  We'll undoubtedly have more to say about  
this choice after we gain more experience.

Push:
	A raw socket connection via a specified port.  Negotiation for a  
port address was deemed too machine dependent - for instance, through  
a firewall.  After establishing the connection, each packet will be  
emitted by the publisher, preceded by a 4 byte network ordered signed  
int count of the size of the packet.  An action item is to decide  
between ASCII and UTF-8 encoding.  Once established, the socket  
remains connected indefinitely.  Responsibility for timeouts related  
to dropped communications links are reserved to each end of each  
channel.

	We are under no illusion that this protocol is sufficient for all  
purposes, but it is simple enough to require minimal effort for any  
project to implement, which will aid the goal of growing the network  
until it reaches critical mass.  Since we're about as far from the  
holy grail of guaranteed delivery of messages as you can get, some  
additional features are desirable to add robustness to the packet  
streams.

1) An ack message:
	Upon successful receipt of a packet, the receiving component will  
return an ack packet to the sender.  At its simplest, this will be an  
empty VOEvent element:

		<VOEvent id=<same as original packet> role="ack" version=... />

An ack packet might also contain normal VOEvent content, but this is  
discouraged until we come up with a good reason for doing so.

2) An "I am alive" packet:
	On an arbitrary schedule(s), each broker emits role="iamalive"  
packets to other brokers (meaning other VOEvent participants, perhaps  
including individual subscribers).  Subsequent discussions have  
clarified the format of these packets to include a timestamp and  
explicit publisher ID:

	<?xml version = '1.0' encoding='UTF-8'?>
	<VOEvent role = "iamalive" id = "ivo://talons.lanl/001" version =  
"1.1">
	    <Who>
	        <PublisherID>ivo://talons.lanl</PublisherID>
	        <Date>2005-12-11T01:10:03</Date>
	    </Who>
	</VOEvent>

Upon receipt, the subscribing entities will respond with the same  
packet, but with an updated <PublisherID>.  The timestamp will allow  
calculation of roundtrip network latencies.

Note that the ack and iamalive functionality partially overlaps.   
Possibly we could simplify to a single packet format satisfying both  
roles.

We are continuing to discuss possibilities for ensuring multihop, end- 
to-end route validation.  This might include a time-to-live field  
similar to IP packet routing.  These mechanisms will likely continued  
to be layered upon any future messaging protocols supported by  
VOEvent, at least optionally.  Overtly these apply only to push  
protocols, of course, but the goal of ensuring a reliable packet  
distribution mechanism is critical whether push or pull is used.

Alasdair has a photo of the whiteboard that we scribbled on:

	http://www.flickr.com/photos/aallan/71222080/in/set-1513473

And I've appended a UML version of the same diagram that Phil  
contributed.  Note the presence of separate names for "broker",  
"nexus" and "aggregator".  All of these combination would be called  
"brokers" under the current terminology.

Further results of the Pearl Harbor day interop will likely come out  
as we discuss various issues.

Rob
-----


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ivoa.net/pipermail/voevent/attachments/20051218/a7ccafc6/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: unknown.png
Type: image/png
Size: 5639 bytes
Desc: not available
URL: <http://www.ivoa.net/pipermail/voevent/attachments/20051218/a7ccafc6/attachment-0001.png>


More information about the voevent mailing list