[standards-jig] Improving network integrity

Tijl Houtbeckers thoutbeckers at splendo.com
Wed Dec 31 17:14:35 UTC 2003

On Wed, 31 Dec 2003 06:09:45 -0800, Justin Karneges 
<justin-keyword-jabber.093179 at affinix.com> wrote:

> 1) Keep track of successful data exchanged between TCP connections.  
> This goes
> for both c2s and s2s.  If a packet does not safely make it across the
> network, then the sending implementation should be aware, so that it can
> bounce if needed.  TCP is actually quite aware of what data has been
> successfully transmitted.  Consider Linux 2.4, in which you can do this:
>   #include<sys/ioctl.h>
>   #include<sys/socket.h>
>   #include<netinet/in.h>
>   #include<linux/sockios.h>
>   /* get TCP send-Queue size */
>   int size;
>   ioctl(sockfd, SIOCOUTQ, &size);
> If this were easily possible everywhere, and implemented by all servers 
> and
> clients, we could nearly eliminate the 'black hole' effect in Jabber.

As I noted before, this is nice to have in some cases, but be careful not 
rely on it too much, since this only works if the jabber client is 
connected directly to the server. If a proxy is used often this will fail 
to detect packets that disappear into the "black hole". Out of my own 
experiance this is very common with GPRS connections when a cellphone goes 
out of coverage. Alternatives may still be needed as well, for example 
acking the arrival of each stanza.

This too could be done without changing XMPP, by wrapping XMPP in another 
protocol that is used for this "signaling" behaviour. (This will ofcourse 
require the server or some kind of proxy to implement that protocol). Or, 
it could be done within XMPP itself, simply using XMPP to communicate 
between the server and the client which packets have been received.

More information about the Standards mailing list