1For message exchange, a message will traverse exactly one link in each case, so traffic load is similar.
2Per connection overhead (setup and keepalive) is higher in option 2, as there are more connections over the slow link.
3When a peer changes its presence status, this will be transmitted exactly once to the client, so overhead is the same in both scenarios.
4When the client changes its presence status, this will be sent once over the client/server link and then over each of the server/server links which has a client that is monitoring presence. This gives a higher overhead for option 2.
1XMPP is a text encoded protocol, and DEFLATE will give an immediate benefit for typical traffic.It is worth considering how much compression is provided. The DEFLATE specification in RFC 1951 notes that English text usually compresses by a factor of 2.5 to 3 (i.e., to 33-40 percent of the original size). Given that IM and MUC traffic is the primary user data carried by XMPP, this is useful compression. Protocol also compresses effectively.
2XMPP has a regular structure, and common elements are often repeated. DEFLATE optimizes for this by reference to data transmitted, and will give substantial compression as use increases. For example, if a peer user is changing presence status between a small number of values, the same packets will be used to report this change, and DEFLATE will give very high compression.
1Long Lived connections may be impractical for several reasons:Even in steady state, 300 bytes per second is going to be tight for IM traffic. Consider (without protocol overhead) a user monitoring several group chats. It is easy to picture that there would be 300 bytes per second of user data, without even considering XMPP protocol and presence overhead.
2High latency will make things much worse. XMPP startup involves around nine handshakes, which will have a significant impact if network latency is high.
- Slow networks are often unreliable, which would mitigate against long lived connections.
- For a slow network, the overhead of maintaining an open connection may be unacceptable.
- HF radio does not do data and voice simultaneously, so data links have to be closed for voice traffic.
1There should be no connection establishment. This will be achieved in two ways:Multicast and EMCON
2Data encoding should be optimized for each packet, as algorithms such as DEFLATE are not very useful for connectionless operation.
- It should offer a connectionless mapping onto IP using UDP, with reliability provided by the application.
- There should be a mapping onto RCOP (STANAG 5066 Reliable Connection Oriented Protocol) to provide efficient operation for HF. This will typically be used for short data transfers.
3There should be a filtering option, to remove traffic that is not considered necessary over the slow link.
4Retransmission should be XMPP aware. For example, when sending presence, the current value should always be used.