[jdev] Jabber presence traffic characterization

Jonathan Dickinson jonathanD at k2.com
Mon Jun 9 01:31:26 CDT 2008

> -----Original Message-----
> From: jdev-bounces at jabber.org [mailto:jdev-bounces at jabber.org] On Behalf Of
> JabberForum
> Sent: 08 June 2008 06:20 PM
> To: jdev at jabber.org
> Subject: [jdev] Jabber presence traffic characterization
> Hi folks,
> I'm currently working on a research project for my Ph.D in which I
> need to simulate network traffic during long periods of inactivity on
> mobile Internet tablets.
[Jonathan Dickinson]
Good luck!

> One focus application would be Jabber, and I
> was wondering what would be the traffic pattern for a scenario in which
> a Jabber client is running on a mobile Internet tablet for long periods
> of inactivity (e.g. no data traffic, just presence traffic).
[Jonathan Dickinson]
There are a few instances, as always, it depends on the environment. Does the user have 200+ contacts, or only one contact? Is the user using stream compression? These things make a huge difference to the results you will get.

> Given that
> I could not find any relevant literature in such subject, I'm posting in
> this forum asking for help. In fact, what I need is the traffic
> characterization for Jabber presence traffic, and I'm not really
> concerned about Jabber messaging traffic, because the idea is to
> simulate a network scenario with a connection between a Jabber client
> and a Jabber server. I know Jabber uses XMPP, but I couldn't find
> whether presence information was exchanged over TCP or UDP, for start.
[Jonathan Dickinson]
XMPP is transport agnostic - that is, you can pump it over any transport mechanism that you want: TCP, UDP even HTTP (using BOSH): although I don't think there is an official UDP XEP for it.

> If it is TCP, I would like to know whether this TCP connection is
> "persistent" (kept open for as long as the user is logged on the
> server") or "temporary" (opened each time the users updates its status
> on the server and/or the user requests an update on the status of the
> contacts list).
[Jonathan Dickinson]
XMPP uses a realtime persistent connection, or a simulated one (in the case of BOSH). The user connects and gets presence updates etc. You *could* have the user connect, update their presence and then disconnect, but that isn't really the point of XMPP. So yeah, 90% of the time it's TCP.

If you read the RFC you will see that the flow for presence works as follows:


Client1 -> <presence/> -> Server1
Server1 -> <presence type='probe'/> -> Client1's contacts' Servers (Server2)
Server1 -> <presence/> -> Server2
Server2 -> Checks presence of clients -> <presence type='x'/> -> Server1
Server1 -> <presence type='x'/> -> Client1

Client1 changes presence

Client1 -> <presence>...</presence> -> Server1
Server1 -> <presence>...</presence> -> Server2
Server2 -> <presence>...</presence> -> Client2

Client2 changes presence

Client2 -> <presence>...</presence> -> Server2
Server2 -> <presence>...</presence> -> Server1
Server1 -> <presence>...</presence> -> Client1

That's the rough idea.

> Also, if anybody has knowledge of   related works on
> Jabber traffic characterization and would like to share, it would be
> really valuable.
[Jonathan Dickinson]
Sorry, I have no statistics for you. One thing to keep in mind is that most transports use a the 'whitespace pings': the server sends a whitespace character to the client every few seconds/minutes to see if they are online (i.e. if they have disconnected due to a software/internet crash).

I think your best bet would be to:
A. Read RFC 3290 and RFC 3291 and see what they say and how it relates to your questions. You should be able to make a good amount of assumptions based on those documents.
B. Download Wireshark and extend it to profile what you want: run the client for a few days to see what happens.
C. Find a server with performance profiling (performance monitors under Windows NT), or extend one with those.

I will see if I can get those into my server and I could send you a 'demo' version of it (commercial software now). If you told me what stats you need maybe I could help with a custom server.

> Thanks in advance,
> Fuad Abinader
> --
> fabinader
> ------------------------------------------------------------------------
> fabinader's Profile: http://www.jabberforum.org/member.php?userid=16997
> View this thread: http://www.jabberforum.org/showthread.php?t=244
> _______________________________________________
> 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: JDev-unsubscribe at jabber.org
> _______________________________________________

More information about the JDev mailing list