[Standards-JIG] Reliable message delivery

Jean-Louis Seguineau jean-louis.seguineau at laposte.net
Wed Apr 26 14:53:02 UTC 2006

Did you read anywhere in the post there was no hop in the path? Not that I
can see ;) Two clients connected to the same server create two hops, isn't
it? Two clients connected on two different servers with s2s in between is
tree hops, right? To me, Hop-by-hop acknowledgement means each and every
segment in the path has a separate and independent ack process. Whereas ack
forwarding is the same ack being transmitted end to end through all hops.
Just a semantic problem. I'm just saying having a separate ack process on
each path segment between hops is heavier than forwarding the ack. Nothing
more, and IMHO diffcult to deny it, right?

On the actual number of stanzas, what are you trying to explain? Whenever an
XML stanza is sent on a TCP segment, you have a process to mashall/unmarshal
it at both ends of the path segment. So obviously, it is not the 'same'
stanza. But this is a property of every stanza, isn't it? 

On the possibility to activate or deactivate the acking, I was under the
impression we have this as a given. But if you have two hops, what would be
the benefit of acking on a single path segment? Doesn't it defeat the entire
purpose of acking?

-----Original Message-----
Message: 6
Date: Wed, 26 Apr 2006 21:13:04 +1000
From: Trejkaz <trejkaz at trypticon.org>
Subject: Re: [Standards-JIG] Reliable message delivery (the tcp
To: Jabber protocol discussion list <standards-jig at jabber.org>
Message-ID: <29233422-76E9-4651-92F6-74E06CAAB72E at trypticon.org>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed

Hash: SHA1

On 26/04/2006, at 03:23 AM, Jean-Louis Seguineau wrote:

> I agree with Peter on this one. Networks are not that bad nowadays  
> that we
> must have a hop by hop acknowledgement.

Clearly there is a hop somewhere, even one hop, which isn't as  
reliable as you claim.  Otherwise we wouldn't be here talking about  
reliable message delivery.

On 26/04/2006, at 02:38 AM, Peter Saint-Andre wrote:

> What is the definition of "unnecessary"? Personally I think that  
> acking
> every XML stanza at each step in the routing process is  
> unnecessary. In
> a typical architecture that would be:
> 1. My client sends a message intended for you.
> 2. ACK #1: my server acks back to my client.
> 3. My server routes the message to your server.
> 4. ACK #2: your server acks back to my server.
> 5. Your server routes the message to your client.
> 6. ACK #3: your client acks back to your server.
> That's 3 acks compared to 1 ack in the end-to-end case.

You seem to be forgetting that your "1 ack" actually turns into three  
stanzas anyway.  Look:

1. My client sends a message intended for you.

2. My server routes the message to your server.

3. Your server routes the message to your client.

4. ACK #1: your client acks back to my client, but then...

5. ACK #1: your server routes the ack back to my server, and then...

6. ACK #1: my server routes the ack back to my client.

However, the per-hop approach does have one major advantage -- if a  
client doesn't think they need acking (see above) they can actually  
choose to opt out of it.  Also, if a person is paying for their  
bandwidth, they may choose to opt out of it.

In other words, in your numbered points, ACK#1 or ACK#3 may not have  
to happen.  (I suppose ACK#2 could be left out as well, but I bet  
that is where the majority of our messages are being eaten.)


More information about the Standards mailing list