Details on MSN’s XMPP server

Posted by Nicolas Vérité on September 15, 2011

Mickaël posted yesterday On MSN / Live Messenger adopting XMPP. Today, we'll dig a little more in technical details.

Here are some technical details and some explainations, as well as some questions.

Microsoft's public XMPP server

Microsoft's public XMPP server is located at: xmpp:messenger.live.com. You can double check on IMtrends:
http://www.imtrends.com/do/search_domain_simple?domain=messenger.live.com&x=19&y=7

Microsoft had been testing xmpp:beta.xmpp.messenger.live.com since a few months, but now it is redirecting to xmpp:messenger.live.com.

New server?

IMtrends test results say:

Software
IMTrends couldn't determine the server running behind messenger.live.com.
This makes sense, since it may be a completely new server.

C2S, but no S2S

C2S stands for client-to-server and S2S stands for server-to-server, which are meaningfull: these describe the connections between clients and servers.

On this matter, IMtrends says:
OK:

  • DNS Client-To-Server record
  • Client-To-Server Stream
Not OK:
  • DNS Server-To-Server record
  • Server-To-Server Stream

What does this mean?

This means:

  • XMPP clients may be able to connect to this XMPP service
  • XMPP servers are not allowed to connect to this XMPP server: Microsoft's XMPP server does not federate with Google's, like Facebook's.
  • As a consequence, we still need gateways ("transports") to MSN service, with MSNP or XMPP protocols, in order to aggregate MSN contacts in an XMPP client.

Questions:

  • Will Microsoft's XMPP server federate with Google's and the rest of the world?
  • Microsoft has invested in Facebook: will Facebook's XMPP server federate with Microsoft's, Google's and the rest of the world?
  • Microsoft has bought Skype: will Skype (which already offers XMPP on their client) offer an XMPP server? Will it federate?

JID, Jabber ID, XMPP addresses

Justin Karneges, of Psi and Livefyre fame, brought our attention to JID and authentication.

JIDs are in the form: [identifier]@messenger.live.com.

Which means:

  • Users will have long JIDs, instead of the short [username]@live.com: it would have been simpler to provide the JID as the email address, like it is the case on Gmail/Gtalk and TextOne
  • I hope [identifier] is the username, or something human-readable...

Authentication mechanism

The client-to-server authentication used is SASL, with a specific and proprietary mechanism called X_MESSENGER_OAUTH2. According to Thijs Alkemade (Adium), it is documented, and "extremely similar to Facebook's OAuth2 mechanism".

Which means that all current XMPP clients are NOT able to connect to messenger.live.com. This new authentication schema will need to be developed and tested.

TLS is required, good point.

Summary

Here is a small summary:

  • Microsoft only offers a client interface to their MSN chat, much like Facebook: they both keep their internal and proprietary chat system
  • Current standard XMPP clients can not connect to Microsoft's XMPP server, since it has a specific and proprietary authentication schema, unlike Facebook
  • Microsoft's XMPP server does not talk to any public and federated XMPP server.

Perspective

This is a big step, and quite a surprise at internet scale (even if some were aware of their beta server). Indeed Microsoft has defended over time their proprietary protocol MSNP (and its mobile version) by changing small bits of their protocol in order to prevent third party clients to connect to their service. A big step, but still a long way to go until full interop and federation with the full XMPP network, including Gtalk, Facebook, and Skype (soon AIM?). ICQ, Yahoo! and QQ are still lagging behind.

Now, given Microsoft's habits to cheat on interop, and "embrace and extend" the open standards, it is needed, not only to run deeper and more strict and exhaustive interop tests, but also run ACID-like tests over XMPP.