Reliable transports - incomplete documentation

4 views
Skip to first unread message

Mathias Gottschlag

unread,
Jun 18, 2011, 2:29:42 PM6/18/11
to spo...@googlegroups.com

Hello,

While working on the network code of our project, I stepped across the
following question which I could not answer with the help of the ariba
documentation: Does ariba actually support sending packets reliably?

The documentation for sendMessage says "If reliable transport was
selected, the method returns a sequence number and a communication event
is triggered on message delivery or loss.", but I neither can find where
to select reliable transport, nor did I find that communication event.
Does the documentation mean onLinkFail? Does not make any sense really.
And so far I could not find any implementation of reliable packets over
UDP in the ariba sources either. Or rather, I did not find any trace of
UDP at all, but even with only TCP transports implemented I can lose
packets if the path to the other peer changes?

Or is that sentence outdated and either all or no messages are sent
reliably? Do I have to implement my own reliable transport protocol on
top of that? I'd rather prefer not having to do that, but it is kind of
inconvenient if a single packet gets dropped in the middle of a TLS
encoded stream. :o)

Regards,

Mathias Gottschlag

PS: The online ariba doxygen docs in Trac are offline, intentionally or not?

Roland Bless

unread,
Jun 20, 2011, 5:32:22 AM6/20/11
to spo...@googlegroups.com
Hi,

[maybe giving a first quick shot answer before the implementation
experts answer]

On 18.06.2011 20:29, Mathias Gottschlag wrote:
> While working on the network code of our project, I stepped across the
> following question which I could not answer with the help of the ariba
> documentation: Does ariba actually support sending packets reliably?

Yes, but it's not always end-to-end reliability: if two hosts get
a direct transport connection they have a direct e2e TCP connection,
if they need to communicate via a relay, you don't get real transport
ACKs from the other end.

> The documentation for sendMessage says "If reliable transport was
> selected, the method returns a sequence number and a communication event
> is triggered on message delivery or loss.", but I neither can find where
> to select reliable transport, nor did I find that communication event.
> Does the documentation mean onLinkFail? Does not make any sense really.
> And so far I could not find any implementation of reliable packets over
> UDP in the ariba sources either. Or rather, I did not find any trace of
> UDP at all, but even with only TCP transports implemented I can lose
> packets if the path to the other peer changes?

Currently, only TCP transport is available, we've had ongoing efforts
for UDP transport support, but it's not yet finished to be released.
In case we get it integrated, you can select your desired transport
either being reliable (TCP) or unreliable (UDP). The documentation
considered the overall concept, so the transport type selection
was intended to be implemented later. However, if you want to absolutely
be sure that your packet was received by the
other end, you should implement application layer acknowledgements.
Even when using TCP in an end-to-end manner, you cannot be sure that
your packets actually reached the other _application_. A TCP ack means
only that the packet was successfully put into the socket buffer waiting
for its delivery to the application. Following the end-to-end argument,
you actually need application layer acknowledgments, otherwise the app
or network may have crashed etc. before the packet left the socket buffer.

> Or is that sentence outdated and either all or no messages are sent
> reliably? Do I have to implement my own reliable transport protocol on
> top of that? I'd rather prefer not having to do that, but it is kind of
> inconvenient if a single packet gets dropped in the middle of a TLS
> encoded stream. :o)

Currently, only TCP is used and you don't have to realize your own
reliable transport. Maybe only application layer ACKs in some cases. TCP
will take care for everything else, including dropped packets. The more
interesting question is whether you actually need unreliable transport...

Regards,
Roland

Christoph Mayer

unread,
Jun 22, 2011, 1:36:28 AM6/22/11
to SpoVNet
Hi,

> PS: The online ariba doxygen docs in Trac are offline, intentionally or not?

all docu is up now. Sorry for this, the Trac kicked the doxygen plugin
out ... Furthermore all links on https://i72projekte.tm.uka.de/trac/SpoVNet-Software/
are fixed.

Best,
Christoph
Reply all
Reply to author
Forward
0 new messages