[Standards-JIG] Reliable message delivery (the tcp problem)
jajcus at jajcus.net
Tue Apr 25 18:05:54 UTC 2006
On Tue, Apr 25, 2006 at 10:38:51AM -0600, 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.
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. Your client sends the receipt to your server
5. Your server forwards the recipe to my server
6. My server forwards the recipe to my client
Still we have 6 steps. And in the case of point-to-point acknowledgments
we have an error message from the last point where the message was seen
(instead of just timeout to be handled in client). And there
point-to-point acknowledges may be useful (not 100% fail proof) even if
one of the clients (or both) doesn't support it (remember: simple
clients!). And there are much less privacy problems with link-level
I have been Jabber server administrator and a Jabber advocate for a few
years and most complaints about Jabber I have heard was about its
Stanza acknowledgments would be easy to implement and easy to deploy.
And they would imediately fix many reliability problem (not all of them)
for a lot of people. Unfortunately they were stopped by Council for some
political (as they seem) reasons :-( Technically, much worse JEPs were
accepted (e.g. JEP-13 with awful disco#info get request with side
Why not just let people implement stanza acking (rejection by Council
could be read as a big MUST NOT)? If they are negotiated on a stream
level, then the implementation would not harm protocol in the long run
if it is proven to be wrong. There are still Experimental and Draft
states before it will be called a standard and officially recommended.
More information about the Standards