Group … Messaging

RCS could be probably deployed much faster if it wasn’t that general right from the beginning. To implement a simple 1-1 chat is not a big deal. The same applies for voice and video. And honestly one doesn’t expect much from a new product as long as the basic functionality is working fine.

Well, in case of RCS/RCSe group messaging was always referred as a basic one. But sometimes it was not without struggles. There are many ways how a Conference can be established. Just to find out all the relevant RFCs is not an easy task. RCS Group Chat technical realization is based on the “Ad-Hoc Session Mode messaging”. RCS is referencing to OMA-SIMPLE or OMA-CPM. OMA is defining their ways how to handle the chats and pointing to particular RFCs. Many of them. The basic one is the RFC 4353. In this document it is described the logical architecture. Simply put group messaging is a multi 1:1 chat. All the participants will establish a 1:1 chat with a center point called “focus”. This logical role is implemented as a part of RCS (CPM/SIMPLE) server functionality.

Group Chat - focus

Group Chat – focus

As mentioned, in case of RCS we mostly talk about ‘Ad-hoc’ conferencing. That means that the conference does not need to be scheduled or reserved, but is created “on the fly”. The benefit of this approach is that the conference URI doesn’t need to be known to the user; instead it is created by the focus (RCS server) and used by the participants’ UAs. The SIP URI of the Conference Factory is usually provisioned in the client (as in a “create new conference” button). Continue reading

Someone’s Watching

The quantum physics says that some events will happen differently if someone is watching. And one doesn’t need to be a physics to have that experience. At least my performance is always worst when someone is watching me playing piano.

Authors of IMS Presence System were either aware of it or they knew that there can be a thin line between being a watcher and being a stalker. Either way IMS allows to inform a presentity about watchers and authorize their subscription.

The key specification is the RFC 3857 which defines so called watcher info (winfo) event “template-package”. Event template-packages are event packages that can be applied to any other event package (so not only presence). The winfo provides the users with information about who is watching the subscribed resource. If the winfo is applied to presence (see previous posts Presence – More than you wanted to know and Is the Presence Social?) the value of the Event header field is set to presence.winfo.

Event: presence.winfo

The package defines a new MIME type application/watcherinfo+xml. When a SIP request or response contains a Content-Type header field set to application/watcherinfo+xml, it is indicating that the body is an XML document that contains watcher information.

NOTIFY sip:Richard@operator.com SIP/2.0
Content-Type: application/watcherinfo+xml
<?xml version="1.0"?>
   <watcherinfo xmlns="urn:ietf:params:xml:ns:watcherinfo"
                version="0" state="full">
      <watcher-list resource="sip:Richard@operator.com"
                    package="presence">
        <watcher id="23456abcd" event="subscribe"
                 status="pending">sip:Jorgen@operator.com</watcher>
      </watcher-list>
   </watcherinfo>

Continue reading

Whatsapp has 700M monthly active users

Whatsapp is growing and it is growing fast. Just within the last 4 months it gained 100M monthly active users. Additionally, as the founder Jan Koum says on his profile, every day users send over 30 billion messages. What still remains questionable is the business model. But that is a task for Facebook 😉

From the technical point of view the Whatsapp was originally a Jabber server written in Erlang (Ejabberd). The multimedia is sent out-of-the-band via HTTP. Only the thumbnail is encoded in base64. Google push notifications are used on Android.

Jabber or eXtensible Messaging and Presence Protocol (XMPP) was developed by an open source community in 1999 as a standardized alternative to existing Instant Messaging platforms. By design XMPP supports instant messaging, presence and contact list maintenance. But because it is extensible nowadays there is also a support for gaming, social networking, VoiP, file transfer and many other applications. Actually Jingle protocol used by Google is an example of such XMPP extension. Last but not least XMPP extensions are used very much for Mashine-to-Mashine (M2M, IoT) communication.  Generally we can say that XMPP is a direct competitor of SIP. Interwoking between XMPP and SIP is possible however the RFC is not finished yet.

Erlang is a special functional programming language designed by Ericsson especially for telecom systems. There were several basic principles which were followed: massive parallelism, soft-real-time, secure memory management. Erlang supports hot swapping of code blocks and tracing of functions. So Erlang is a very good choice if we need to manage many concurrent processes or  transactions. Whatsapp is processing > 70M Erlang messages/s.

If you want to know more about the architecture of Whatsapp you can check a great article on http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-billion.html.