On Tue Sep 30 17:28:14 2008, [EMAIL PROTECTED] wrote: > My question is: Is it possible that the UDP version of SIMPLE could > be > more bandwidth efficient than XMPP over TCP for the conveyance of > presence > information? Evidently SIMPLE is more verbose than XMPP, however > UDP is a > much lighter transport layer protocol than TCP.
Short answer: No. TCP is indeed marginally heavier than UDP - the header is 12 octets bigger. Unfortunately, SIMPLE's presence data is typically more than 12 octets bigger than XMPP, so the net gain isn't in SIMPLE's favour. In addition, there's two other factors that come into play. The largest factor - not as common as it should be - is compression, which, due to using previous TCP packets in the stream, can be very effective - again more than amply outweighing any overhead of TCP. Also, more than one XMPP stanza can share a single TCP packet - this means the header overhead can be shared between stanzas. So if three or more stanzas share a single TCP packet, it's lower overhead than UDP. Finally, I would note that whilst TCP is certainly more heavyweight than UDP, traditionally UDP's benefits are that it's connectionless, meaning both fewer resources on the server (not helpful here IMHO, because we're generally dealing with manageable numbers of clients and connected servers) and much more significantly a lower latency from cold to sending data. XMPP will take up several RTTs before a presence packet is sent from cold - potentially as many as ten or so, although you'll find a very good analysis in the archives of the standards list by Tony Finch. SIMPLE, on the other hand, can send that immediately, albeit without any TLS etc, so the latency is, in principle, much lower in the "from cold" case. It's this heavyweight aspect of TCP based protocols that's the reason behind DNS, for example, typically using UDP, since the additional latency of using TCP would really show in session startup times. But it's worth noting that due to the lack of error handling, many operating systems run resolution DNS - ie, workstation-to-resolver - over TCP rather than UDP, maintaining a single TCP session for the OS's resolver service. Similarly, I'd argue that for client-to-server cases, TCP is much more suitable. An argument could be made that for server-to-server cases UDP might be better, but that ignores aspects like TLS and authentication, which are much harder to get right on UDP, and would likely overshadow the additional setup cost of TCP anyway. 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 _______________________________________________ JDev mailing list FAQ: http://www.jabber.org/discussion-lists/jdev-faq Forum: http://www.jabberforum.org/forumdisplay.php?f=20 Info: http://mail.jabber.org/mailman/listinfo/jdev Unsubscribe: [EMAIL PROTECTED] _______________________________________________
