Re: [jdev] XEP-0199 (XMPP Ping) to test reliability

2008-01-25 Thread Pedro Melo


On Jan 23, 2008, at 4:21 PM, Yann Leboulanger wrote:


Tomasz Sterna a écrit :

On Śr, 2008-01-23 at 17:12 +0100, Yann Leboulanger wrote:
So is it really possible to find reasonable values for all those  
parameters that I don't know what they really do?

Is it tunable from python for a particular socket or is it in OS
directly?

Why do you want to tune it?


Because currently if I unplug my internet cable, my client detect  
connectut after several minutes, and I'd like it to detect it faster.


But thats a problem with the OS.

If a OS looses the interface where the TCP connection is bound, it  
should signal the applications that those TCP connections are no  
longer valid, right?


FYI, the last time I discussed Pings on a client context scenario, we  
decided on:


 * whitespace pings each 45 seconds (to keep NATs happy);
 * Requirement to have a XMPP ping sent if more than 45 seconds of  
inactivity is detected.


The second point is worded like that because we don't immediately  
send the XMPP ping. We wait 5 minutes or until the user needs it (so  
the next time we send any stanza we also send the ping).


Best regards,
--
HIId: Pedro Melo
SMTP: [EMAIL PROTECTED]
XMPP: [EMAIL PROTECTED]




Re: [jdev] XEP-0199 (XMPP Ping) to test reliability

2008-01-25 Thread Pedro Melo


On Jan 23, 2008, at 6:36 PM, Yann Leboulanger wrote:


Tomasz Sterna wrote:

On Śr, 2008-01-23 at 17:21 +0100, Yann Leboulanger wrote:

Why do you want to tune it?
Because currently if I unplug my internet cable, my client detect  
connectut after several minutes, and I'd like it to detect it  
faster.

b) use NetworkManager to get notifications about network environment
changes (new networks, unplugged cables) and react to notifications
accordingly. (IIRC Windows has a similar facility too.)


That won't help, you can still be connected to your routeur / local  
network but jabber server is no more available.


It helps the test scenario you presented us with, unplugging of  
ethernet cable..


Most OSs have some sort of notification for this. I know Mac OS X  
has, and I think Linux also. And Tomasz mentions windows too.


Best regards,
--
HIId: Pedro Melo
SMTP: [EMAIL PROTECTED]
XMPP: [EMAIL PROTECTED]




Re: [jdev] XEP-0199 (XMPP Ping) to test reliability

2008-01-25 Thread Yann Leboulanger

Pedro Melo wrote:

It helps the test scenario you presented us with, unplugging of ethernet 
cable..


Indeed, but we already have notwork manager implementation. This senario 
was just an example.


Most OSs have some sort of notification for this. I know Mac OS X has, 
and I think Linux also. And Tomasz mentions windows too.


For windows I don't know how to do. I  haven't really serched though. 
For linux we use dbus to communicate with netowork manager.

--
Yann


[jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik

Hi all,

We are a company making financial messaging (www.zeromq.org). As for 
now, we were mostly focused on AMQP, however, I've noticed several 
discussions where the bottom line was: What's AMQP good for, given that 
we can do the same thing via XMPP?


So, we would actually like to make XMPP plugin to our software to find 
out how it fits financial market's needs. However, being new to XMPP I 
have no idea where to start. Can you point me to some explanation of how 
a high-volume stream of  asynchronous opaque binary messages can be 
passed via XMPP?


Thanks for help.
Martin


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Tomasz Sterna
On Pt, 2008-01-25 at 12:10 +0100, Martin Sustrik wrote:
 Can you point me to some explanation of how 
 a high-volume stream of  asynchronous opaque binary messages can be 
 passed via XMPP?

http://www.xmpp.org/extensions/xep-0047.html

-- 
  /\_./o__ Tomasz Sterna
 (/^/(_^^' http://www.xiaoka.com/
._.(_.)_   im:[EMAIL PROTECTED]



Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik

Hm,

Any idea why does the specification insist on low-bandwidth data transfer?

It is likely to be useful for sending small payloads, such as files 
that would otherwise be too cumbersome to send as an instant message 
(such as a text file) or impossible to send (such as a small binary 
image file). It could also be useful for any kind of low-bandwidth 
activity, such as a chess game or a shell session.


What we want to do is high-volume transfer.

Martin

Tomasz Sterna wrote:

On Pt, 2008-01-25 at 12:10 +0100, Martin Sustrik wrote:
  
Can you point me to some explanation of how 
a high-volume stream of  asynchronous opaque binary messages can be 
passed via XMPP?



http://www.xmpp.org/extensions/xep-0047.html

  




Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Dave Cridland
I was going to wade in on this one sooner, but I wanted to read the  
AMQP specification first. It strikes me that the bulk of the  
specification actually maps onto XML (and, by inference, XMPP) quite  
well, so I'm a little surprised by the conclusion you draw.


I apologise for answering points that are already answered by other  
people - I've seen Maciek's reply but left my similar comments in -  
and I apologise if I've got bits of AMQP wrong - I've spent not much  
more than an hour learning it.


On Fri Jan 25 15:02:32 2008, Martin Sustrik wrote:
1. XMPP can be used for sending opaque messages, however, there are  
several limitations:
2. Binary content has to be translated into Base64, adding 1/3 of  
overhead to message size


Not really - assuming the binary message is incompressible to begin  
with, the base64 encoding is recovered through compression - XMPP  
gives you this both by XEP-0138 and by TLS. On the assumption that  
you care about bandwidth, you'll have compression on, and your  
messages will be compressed anyway. Equally, they'll potentially be  
end-to-end encrypted, too.


Rather oddly, AMQP contains nothing about either compression nor  
encryption. I'd have thought the latter would be important in  
financials. (Oh, and that SASL profile is incomplete - SASL can  
negotiate encryption too, but there's no indication of where this  
might kick in, nor any MTI mechanisms).



3. There's no way to do zero-copy as the message has to be  
translated on both ends of the connection


Sure. But then again, a lot of the data in AMQP needs to be copied  
anyway to circumvent alignment issues, handle buffering, queuing,  
etc. Unless you're sending really big chunks of longstr data about,  
the impact is likely to be low - and even if you are, it's just one  
more codec.


For servers, where this would be the highest impact, it seems very  
unlikely that any data is going to be examined anyway - servers look  
at routing keys and topics, and more or less leave everything else  
untouched, so it'd seem reasonable to stick topics and routing keys  
in XML, and then leave the message payload as a blob.


All this assumes that the messages can't be formatted as XML, of  
course.



4. All the messages have to be acknowledged. No no-acknowledge mode  
exists.


message/ is unacknowledged, iq/ is acknowledged.

(To put it another way, iq/ are like your Request/Response frames.)


5. There's no batch acknowledge functionality (acknowledging  
sequence of messages using single acknowledge).


Depends what you mean by this. If you use iq/, then no, but then  
again, these can be acknowledged end-to-end out of order, just as  
Request/Response frames do in AMQP.


If you mean across a connection, then look at XEP-0198, which  
provides precisely this, as well as several other useful features for  
reliability. (And much better than AMQP's heartbeat frames, too, IMO).



6. Pipelining of acknowledges is allowed, but discouraged. (The  
sender need not wait for these acknowledgements before sending  
further stanzas. However, it is RECOMMENDED that the sender does  
wait in order to minimize possible rate-limiting penalties.)



That's a RECOMMENDED - a SHOULD not a MUST - and only for  
bytestreams. If you're sending message/ stanzas with binary  
content, there's no need to concern yourself with whether the  
endpoint is acknowledging, since it won't be. Worth noting that  
bytestreams are for arbitrary length data - while AMQP does in  
principle allow frames of several G (assuming they're made up of  
multiple longstrs, for example), I'm under the impression that  
individual frames tend to be relatively small, and would map to a  
single XMPP stanza.


I'd suggest sitting down and examining RFC3920bis, and familiarizing  
yourself with the general concepts. XMPP will not be as efficient as  
AMQP, but the difference need not be huge. On the other hand, the  
potential gains coming from using XMPP are very great indeed, giving  
you improvements in security and multiple sites to name but two.


I hope this helps.

Dave.
--
Dave Cridland - mailto:[EMAIL PROTECTED] - xmpp:[EMAIL PROTECTED]
 - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
 - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade


Re: [jdev] last presence confusion

2008-01-25 Thread Justin Karneges
On Friday 25 January 2008 7:06 am, Maciek Niedzielski wrote:
 On Sat, Dec 22, 2007 at 12:23:38PM -0800, Justin Karneges wrote:
  On Thursday 20 December 2007 2:52 pm, Peter Saint-Andre wrote:
  2.  Else, if the contact has no available resources, the server MUST
  either (1) reply to the presence probe by sending to the user
   the full XML of the last presence stanza of type unavailable received
   by the server from the contact, or (2) not reply at all. So a nice
   server will return the last unavailable presence information (with a
   Delayed Delivery flag), thus obviating the need for a flood of
   jabber:iq:last requests.
 
  How about emphasizing the first option as a SHOULD?  This would hopefully
  encourage new servers to always reply, while not causing existing servers
  to become non-compliant.

 On the other hand, usually just 1/3 of my roster is online. So if server
 starts sending presence for all contacts, initial presence flood from
 the server increases 3 times.

The price of avoiding a jabber:iq:last flood.  Sounds like the caps 
discussion. :)

-Justin


Re: [jdev] last presence confusion

2008-01-25 Thread Maciek Niedzielski

Justin Karneges wrote:

On Friday 25 January 2008 7:06 am, Maciek Niedzielski wrote:

On Sat, Dec 22, 2007 at 12:23:38PM -0800, Justin Karneges wrote:

On Thursday 20 December 2007 2:52 pm, Peter Saint-Andre wrote:

(1) reply to the presence probe by sending to the user
the full XML of the last presence stanza of type unavailable received
by the server from the contact, or (2) not reply at all. So a nice
server will return the last unavailable presence information (with a
Delayed Delivery flag), thus obviating the need for a flood of
jabber:iq:last requests.

On the other hand, usually just 1/3 of my roster is online. So if server
starts sending presence for all contacts, initial presence flood from
the server increases 3 times.
The price of avoiding a jabber:iq:last flood.  Sounds like the caps 
discussion. :)

But jabber:iq:last flood is not obligatory ;)

--
Maciek Niedzielski
 xmpp:[EMAIL PROTECTED]


Re: [jdev] last presence confusion

2008-01-25 Thread Maciek Niedzielski

Peter Saint-Andre wrote:

Maciek Niedzielski wrote:

Peter Saint-Andre wrote:

Maciek Niedzielski wrote:
On the other hand, usually just 1/3 of my roster is online. So if 
server starts sending presence for all contacts, 
initial presence flood from the server increases 3 times.

So do I take that as an objection to the modified text in rfc3921bis?
Not an objection. But I am a bit worried by this change when I look at 
my roster. However, at the same time I know that my roster is most 
probably not a very typical one. Do we have any stats? What's the 
percent of offline contacts? And what's typical roster size? Maybe it 
doesn't matter that presence list increases 3 times if this means 
increasing from 3 to 9 presence stanzas?

I have 1770 people in my roster, so yes I'm concerned. :)

Other idea: even if this becomes a SHOULD, we can at the same time
define a XEP that allows to control this behavior (because I don't think
putting this into RFC itself is a good idea).

--
Maciek Niedzielski
 xmpp:[EMAIL PROTECTED]


[jdev] XMPP user behavior

2008-01-25 Thread Matthias Stiller
Hi,

I am currently writing my bachelor thesis about performance measurings
concerning XMPP. One chapter will deal with the simulation of user (clients)
behavior. Due to this fact I would like to know if someone of you is aware
of statistics or other approaches that cover the behavior of XMPP clients in
real XMPP environments. Probably there are simulation programs that already
implement XMPP users for stress testing purposes (except for tsung - I am
not very familiar with erlang :)) ?! I would be very grateful for your
information!

Thanks in advance!

   - Matthias


Re: [jdev] last presence confusion

2008-01-25 Thread Justin Karneges
On Friday 25 January 2008 11:09 am, Peter Saint-Andre wrote:
 Maciek Niedzielski wrote:
  Peter Saint-Andre wrote:
  Maciek Niedzielski wrote:
  On Sat, Dec 22, 2007 at 12:23:38PM -0800, Justin Karneges wrote:
  On Thursday 20 December 2007 2:52 pm, Peter Saint-Andre wrote:
  So a nice server will return the last unavailable presence
  information (with a Delayed Delivery flag), thus obviating the need
  for a flood of jabber:iq:last requests.
 
  How about emphasizing the first option as a SHOULD?  This would
  hopefully encourage new servers to always reply, while not causing
  existing servers to become non-compliant.
 
  On the other hand, usually just 1/3 of my roster is online. So if
  server starts sending presence for all contacts, initial presence
  flood from the server increases 3 times.
 
  So do I take that as an objection to the modified text in rfc3921bis?
 
  Not an objection. But I am a bit worried by this change when I look at
  my roster. However, at the same time I know that my roster is most
  probably not a very typical one. Do we have any stats? What's the
  percent of offline contacts? And what's typical roster size? Maybe it
  doesn't matter that presence list increases 3 times if this means
  increasing from 3 to 9 presence stanzas?

 I have 1770 people in my roster, so yes I'm concerned. :)

 I'll look up some stats on the jabber.org service to see what the
 average roster size is.

It seems funny that it should be a concern if all of your contacts are 
available at the same time.  It is possible for it to happen, and your client 
and internet connection shouldn't explode if it does.  However, maybe it is 
best to optimize out the offline contacts, if a presence response from an 
offline contact isn't useful enough to justify the increase in traffic.

My interest in having the server return a presence response for every contact 
was to aid in determining when a client login is complete.  Right now 
there's really no way to know when a client is finished receiving an initial 
list of presence.  Clients often want to give the user a notification when 
presence activity changes, but only for changes after the initial list.  Psi 
considers the initial presence list to be received once 10 seconds have 
passed after the roster was received.  This is, of course, not very accurate, 
and when Peter takes more than 10 seconds to login, probably 1000 contacts 
trigger sound events.  However, maybe there's a better solution to the 
initial presence list problem.

That clients may want jabber:iq:last information available for all contacts, 
and without polling for it, is valid, IMO.  It relates very much to the 
desire to have jabber:iq:version information without polling.  I smell a 
push-based solution ahead...

-Justin


Re: [jdev] XMPP user behavior

2008-01-25 Thread Mark Doliner
On Fri, 2008-01-25 at 11:52 AM, Matthias Stiller wrote:
 I am currently writing my bachelor thesis about performance measurings
 concerning XMPP. One chapter will deal with the simulation of user
 (clients) behavior. Due to this fact I would like to know if someone of
 you is aware of statistics or other approaches that cover the behavior of
 XMPP clients in real XMPP environments. Probably there are simulation
 programs that already implement XMPP users for stress testing purposes
 (except for tsung - I am not very familiar with erlang :)) ?! I would be
 very grateful for your information!

There's also JabSimul (http://ejabberd.jabber.ru/files/other/jabsimul.tar.gz) 
and The Jabber Test Suite (http://jabbertest.sourceforge.net/).  I have not 
tried either of them--I just know that they exist.

-Mark


Re: [jdev] last presence confusion

2008-01-25 Thread Peter Saint-Andre

Maciek Niedzielski wrote:

Peter Saint-Andre wrote:

Maciek Niedzielski wrote:

On Sat, Dec 22, 2007 at 12:23:38PM -0800, Justin Karneges wrote:

On Thursday 20 December 2007 2:52 pm, Peter Saint-Andre wrote:

So a nice server will return the last unavailable presence information
(with a Delayed Delivery flag), thus obviating the need for a flood of
jabber:iq:last requests.
How about emphasizing the first option as a SHOULD?  This would 
hopefully encourage new servers to always reply, while not causing 
existing servers to become non-compliant.

On the other hand, usually just 1/3 of my roster is online. So if server
starts sending presence for all contacts, initial presence flood from
the server increases 3 times.

So do I take that as an objection to the modified text in rfc3921bis?
Not an objection. But I am a bit worried by this change when I look at 
my roster. However, at the same time I know that my roster is most 
probably not a very typical one. Do we have any stats? What's the 
percent of offline contacts? And what's typical roster size? Maybe it 
doesn't matter that presence list increases 3 times if this means 
increasing from 3 to 9 presence stanzas?


I have 1770 people in my roster, so yes I'm concerned. :)

I'll look up some stats on the jabber.org service to see what the 
average roster size is.


Peter

--
Peter Saint-Andre
https://stpeter.im/



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Dave Cridland

On Fri Jan 25 17:07:48 2008, Martin Sustrik wrote:

Richard,
Base64 is trivial to compute and as far as TLS is concerned surely  
being financial information you would be required to have it  
encrypted? The encryption rather than the compression part is  
likely to be the most CPU intensive part.
Not really. The high-volume distribution scenarios tend to appear  
in closed environments where encryption is not required. I don't  
expect XMPP to be really well-performing here, but there's no much  
point of using XMPP is such an environment anyway.



I'd agree with that. Slipping on a work hat for a moment, we - Isode  
- use a mostly binary messag passing protocol for internal messaging  
inside our applications, although the payloads often turn out to be  
XML. We have considered using XMPP directly, but dropped it for the  
same efficiency reasons you've cited, but equally, we are planning on  
using XMPP for various out-bound interoperability and integration  
issues.



On the other hand, in low-volume over-the-internet messaging, XMPP  
may be interesting. Actually, I am starting to like the idea of the  
plug-in - not least because there is an active community around  
XMPP that may help with implementing particular features. The other  
way round, this may be an interesting toehold in financials for  
XMPP community.


Absolutely - also there's considerable usage of XMPP within the  
financials anyway, so enabling various tie-in technologies makes  
sense. The latency increases of running over XMPP, for example, would  
be far outweighed by having a stock-ticker in Psi, say.


You also need to define low-volume for this community - I suspect  
your low-volume equates to, or exceeds, our flood. :-)


Dave.
--
Dave Cridland - mailto:[EMAIL PROTECTED] - xmpp:[EMAIL PROTECTED]
 - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
 - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Dave Cridland

On Fri Jan 25 16:38:37 2008, Martin Sustrik wrote:

Thanks for extensive clarification.



No problem.


I believe I have some idea of how XMPP plugin can be implemented  
now. When we have something working I'll post the performance  
figures on this list.



I'd recommend outlining what you're proposing - ideally as a XEP -  
and discussing it on the standards@ list, where you'll be most  
welcome, and get a lot of useful feedback.




The issues that still may be performance bottlenecks are:

1. Size of XMPP wrapper of the binary message - 360 bytes in the  
example in the article - with financial protocol like FIX/FAST the  
binary data tend to be quite small (30-40 bytes) thus 360 bytes of  
wrapping XML can extend the message size tenfold.



Well, you're probably talking about bytestreams when you say the  
article, but you only need something like:


message from='N' to='M'amqp xmlns='http://www.amqp.org/fix'  
e='base64'[40-50 octets of base64-encoded binary  
data]/amqp/message. Less than 360 bytes there, more than likely.


There would be more if you use PubSub, of course, which may well  
prove useful. I'm not entirely sure how well topics might map to  
PubSub, though routing keys should map fine.


Bytestreams themselves aren't useful to you, I think.


2. Compression and decompression (binary-base64-TLS  
compression-TLS decompression-base64-binary data) may cause  
latency to be worse. However, I am not sure what exactly the impact  
would be.


Well, the compression certainly introduces a throughput/latency  
tradeoff, although in extreme cases it can actually be positive to  
both.


Dave.
--
Dave Cridland - mailto:[EMAIL PROTECTED] - xmpp:[EMAIL PROTECTED]
 - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
 - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Richard Dobson


1. Size of XMPP wrapper of the binary message - 360 bytes in the 
example in the article - with financial protocol like FIX/FAST the 
binary data tend to be quite small (30-40 bytes) thus 360 bytes of 
wrapping XML can extend the message size tenfold.

Compression will solve much of this.


2. Compression and decompression (binary-base64-TLS compression-TLS 
decompression-base64-binary data) may cause latency to be worse. 
However, I am not sure what exactly the impact would be.
Base64 is trivial to compute and as far as TLS is concerned surely being 
financial information you would be required to have it encrypted? The 
encryption rather than the compression part is likely to be the most CPU 
intensive part.


Richard




Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik

Dave,

Thanks for extensive clarification.

I believe I have some idea of how XMPP plugin can be implemented now. 
When we have something working I'll post the performance figures on this 
list.


The issues that still may be performance bottlenecks are:

1. Size of XMPP wrapper of the binary message - 360 bytes in the example 
in the article - with financial protocol like FIX/FAST the binary data 
tend to be quite small (30-40 bytes) thus 360 bytes of wrapping XML can 
extend the message size tenfold.


2. Compression and decompression (binary-base64-TLS compression-TLS 
decompression-base64-binary data) may cause latency to be worse. 
However, I am not sure what exactly the impact would be.


Martin

Dave Cridland wrote:
I was going to wade in on this one sooner, but I wanted to read the 
AMQP specification first. It strikes me that the bulk of the 
specification actually maps onto XML (and, by inference, XMPP) quite 
well, so I'm a little surprised by the conclusion you draw.


I apologise for answering points that are already answered by other 
people - I've seen Maciek's reply but left my similar comments in - 
and I apologise if I've got bits of AMQP wrong - I've spent not much 
more than an hour learning it.


On Fri Jan 25 15:02:32 2008, Martin Sustrik wrote:
1. XMPP can be used for sending opaque messages, however, there are 
several limitations:
2. Binary content has to be translated into Base64, adding 1/3 of 
overhead to message size


Not really - assuming the binary message is incompressible to begin 
with, the base64 encoding is recovered through compression - XMPP 
gives you this both by XEP-0138 and by TLS. On the assumption that you 
care about bandwidth, you'll have compression on, and your messages 
will be compressed anyway. Equally, they'll potentially be end-to-end 
encrypted, too.


Rather oddly, AMQP contains nothing about either compression nor 
encryption. I'd have thought the latter would be important in 
financials. (Oh, and that SASL profile is incomplete - SASL can 
negotiate encryption too, but there's no indication of where this 
might kick in, nor any MTI mechanisms).



3. There's no way to do zero-copy as the message has to be translated 
on both ends of the connection


Sure. But then again, a lot of the data in AMQP needs to be copied 
anyway to circumvent alignment issues, handle buffering, queuing, etc. 
Unless you're sending really big chunks of longstr data about, the 
impact is likely to be low - and even if you are, it's just one more 
codec.


For servers, where this would be the highest impact, it seems very 
unlikely that any data is going to be examined anyway - servers look 
at routing keys and topics, and more or less leave everything else 
untouched, so it'd seem reasonable to stick topics and routing keys in 
XML, and then leave the message payload as a blob.


All this assumes that the messages can't be formatted as XML, of course.


4. All the messages have to be acknowledged. No no-acknowledge mode 
exists.


message/ is unacknowledged, iq/ is acknowledged.

(To put it another way, iq/ are like your Request/Response frames.)


5. There's no batch acknowledge functionality (acknowledging sequence 
of messages using single acknowledge).


Depends what you mean by this. If you use iq/, then no, but then 
again, these can be acknowledged end-to-end out of order, just as 
Request/Response frames do in AMQP.


If you mean across a connection, then look at XEP-0198, which provides 
precisely this, as well as several other useful features for 
reliability. (And much better than AMQP's heartbeat frames, too, IMO).



6. Pipelining of acknowledges is allowed, but discouraged. (The 
sender need not wait for these acknowledgements before sending 
further stanzas. However, it is RECOMMENDED that the sender does wait 
in order to minimize possible rate-limiting penalties.)



That's a RECOMMENDED - a SHOULD not a MUST - and only for bytestreams. 
If you're sending message/ stanzas with binary content, there's no 
need to concern yourself with whether the endpoint is acknowledging, 
since it won't be. Worth noting that bytestreams are for arbitrary 
length data - while AMQP does in principle allow frames of several G 
(assuming they're made up of multiple longstrs, for example), I'm 
under the impression that individual frames tend to be relatively 
small, and would map to a single XMPP stanza.


I'd suggest sitting down and examining RFC3920bis, and familiarizing 
yourself with the general concepts. XMPP will not be as efficient as 
AMQP, but the difference need not be huge. On the other hand, the 
potential gains coming from using XMPP are very great indeed, giving 
you improvements in security and multiple sites to name but two.


I hope this helps.

Dave.




Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik



iq stanzas need a reply (and sometimes this reply is just an
acknowledge). message stanzas are not acknowledged.
  

Great! I've missed that.

Martin


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Maciek Niedzielski
On Fri, Jan 25, 2008 at 04:02:32PM +0100, Martin Sustrik wrote:
 2. Binary content has to be translated into Base64, adding 1/3 of 
 overhead to message size
You can do real binary using direct p2p connections, they way we do
file transfers. But then you'd turn XMPP into a tool to negotiate a TCP
stream, so probably it's not so interesting..

 4. All the messages have to be acknowledged. No no-acknowledge mode exists.
iq stanzas need a reply (and sometimes this reply is just an
acknowledge). message stanzas are not acknowledged.

 5. There's no batch acknowledge functionality (acknowledging sequence of 
 messages using single acknowledge).
There are amore advanced acking extensions, but they are still being
developed and are not really implemented.

-- 
Maciek Niedzielski
 xmpp:[EMAIL PROTECTED]


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik

Thanks for prompt resposes everyone.

So, as I understand it :

1. XMPP can be used for sending opaque messages, however, there are 
several limitations:
2. Binary content has to be translated into Base64, adding 1/3 of 
overhead to message size
3. There's no way to do zero-copy as the message has to be translated on 
both ends of the connection

4. All the messages have to be acknowledged. No no-acknowledge mode exists.
5. There's no batch acknowledge functionality (acknowledging sequence of 
messages using single acknowledge).
6. Pipelining of acknowledges is allowed, but discouraged. (The sender 
need not wait for these acknowledgements before sending further stanzas. 
However, it is RECOMMENDED that the sender does wait in order to 
minimize possible rate-limiting penalties.)


Therefore, my feeling is that XMPP can be used for low-volume transfer 
(say 10,000 messages/second), but it is not suitable for high-volume 
transfer (millions messages/second). Anyway, even throughput of several 
thousands of messages a second is viable in some financial scenarios, so 
we'll dig into XMPP a bit more.


Thanks!
Martin


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Maciek Niedzielski
On Fri, Jan 25, 2008 at 02:24:27PM +0100, Martin Sustrik wrote:
 Not using public servers is ok. However, base64 means not only that the 
 message is longer, but also that is has to be transformed from binary to 
 base64. No way around that? No binary data in XMPP?
XMPP is based on XML. You cannot paste binary data directly into XML,
so you also cannot put it directly into XMPP.

-- 
Maciek Niedzielski
 xmpp:[EMAIL PROTECTED]


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Jefferson Ogata

On 2008-01-25 13:24, Martin Sustrik wrote:
Not using public servers is ok. However, base64 means not only that the 
message is longer, but also that is has to be transformed from binary to 
base64. No way around that? No binary data in XMPP?


The added length of base64 encoding is not a big deal, and besides, any 
SSL/TLS transport will nullify that with compression automatically. 
There's also always CDATA and #-style encoding for binary data, but 
that doesn't let you send \0.


--
Jefferson Ogata [EMAIL PROTECTED]
NOAA Computer Incident Response Team (N-CIRT) [EMAIL PROTECTED]
Never try to retrieve anything from a bear.--National Park Service


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik


Some servers on the public jabber network throttle high-bandwidth connections. 
Since you'd probably not be using public servers this would not be a problem.
Also note that the base64 encoding used in this spec increases the payload 
size by one third.
  
Not using public servers is ok. However, base64 means not only that the 
message is longer, but also that is has to be transformed from binary to 
base64. No way around that? No binary data in XMPP?


Martin


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Norman Rasmussen
On Jan 25, 2008 1:10 PM, Martin Sustrik [EMAIL PROTECTED] wrote:

 Can you point me to some explanation of how
 a high-volume stream of  asynchronous opaque binary messages can be
 passed via XMPP?


Even in the XMPP world, high-volume binary streams are preferably done
out-of-band (socks5, jingle, etc).  How opaque are the messages? Could they
be reformatted as XML?

-- 
- Norman Rasmussen
- Email: [EMAIL PROTECTED]
- Home page: http://norman.rasmussen.co.za/


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik




Even in the XMPP world, high-volume binary streams are preferably done 
out-of-band (socks5, jingle, etc).  How opaque are the messages? Could 
they be reformatted as XML?
Messages are user-defined. It may be XML, but often it's highly 
compressed binary data.


So AFAIU, XMPP is not a serious candidate for high-volume messaging, right?

Martin


Re: [jdev] last presence confusion

2008-01-25 Thread Maciek Niedzielski

Peter Saint-Andre wrote:

Maciek Niedzielski wrote:

On Sat, Dec 22, 2007 at 12:23:38PM -0800, Justin Karneges wrote:

On Thursday 20 December 2007 2:52 pm, Peter Saint-Andre wrote:

So a nice server will return the last unavailable presence information
(with a Delayed Delivery flag), thus obviating the need for a flood of
jabber:iq:last requests.
How about emphasizing the first option as a SHOULD?  This would 
hopefully encourage new servers to always reply, while not causing 
existing servers to become non-compliant.

On the other hand, usually just 1/3 of my roster is online. So if server
starts sending presence for all contacts, initial presence flood from
the server increases 3 times.

So do I take that as an objection to the modified text in rfc3921bis?
Not an objection. But I am a bit worried by this change when I look at 
my roster. However, at the same time I know that my roster is most 
probably not a very typical one. Do we have any stats? What's the 
percent of offline contacts? And what's typical roster size? Maybe it 
doesn't matter that presence list increases 3 times if this means 
increasing from 3 to 9 presence stanzas?


--
Maciek Niedzielski
 xmpp:[EMAIL PROTECTED]


Re: [jdev] last presence confusion

2008-01-25 Thread Peter Saint-Andre

Maciek Niedzielski wrote:

On Sat, Dec 22, 2007 at 12:23:38PM -0800, Justin Karneges wrote:

On Thursday 20 December 2007 2:52 pm, Peter Saint-Andre wrote:

   2.  Else, if the contact has no available resources, the server MUST
   either (1) reply to the presence probe by sending to the user the
   full XML of the last presence stanza of type unavailable
   received by the server from the contact, or (2) not reply at all.
So a nice server will return the last unavailable presence information
(with a Delayed Delivery flag), thus obviating the need for a flood of
jabber:iq:last requests.
How about emphasizing the first option as a SHOULD?  This would hopefully 
encourage new servers to always reply, while not causing existing servers to 
become non-compliant.

On the other hand, usually just 1/3 of my roster is online. So if server
starts sending presence for all contacts, initial presence flood from
the server increases 3 times.


So do I take that as an objection to the modified text in rfc3921bis?

Peter

--
Peter Saint-Andre
https://stpeter.im/



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Richard Dobson


Messages are user-defined. It may be XML, but often it's highly 
compressed binary data.


So AFAIU, XMPP is not a serious candidate for high-volume messaging, 
right?
No, wrong, as with anything it will all depend on the capacity of your 
servers and the bandwidth you have available at your disposal, there is 
nothing stopping high-volume messaging over XMPP if you control the 
infrastructure.


Richard




Re: [jdev] Financial messaging via XMPP

2008-01-25 Thread Martin Sustrik

Richard,
Base64 is trivial to compute and as far as TLS is concerned surely 
being financial information you would be required to have it 
encrypted? The encryption rather than the compression part is likely 
to be the most CPU intensive part.
Not really. The high-volume distribution scenarios tend to appear in 
closed environments where encryption is not required. I don't expect 
XMPP to be really well-performing here, but there's no much point of 
using XMPP is such an environment anyway.


On the other hand, in low-volume over-the-internet messaging, XMPP may 
be interesting. Actually, I am starting to like the idea of the plug-in 
- not least because there is an active community around XMPP that may 
help with implementing particular features. The other way round, this 
may be an interesting toehold in financials for XMPP community.


Martin