42
Extensible Messaging and Presence Protocol Sebastian Schumann Slovak Telekom 5. December 2012 Bratislava, Slovakia

Lecture about XMPP

Embed Size (px)

DESCRIPTION

Lecture notes about XMPP. This lecture has been presented in 2012 in Bratislava, Slovakia at the Slovak University of Technology.

Citation preview

Page 1: Lecture about XMPP

Extensible Messaging and Presence Protocol Sebastian Schumann Slovak Telekom

5. December 2012 Bratislava, Slovakia

Page 2: Lecture about XMPP

About me ¡ Studied 2003 – 2007 telecommunications

and computer sciences in Leipzig, Germany

¡ In Slovakia since 2006

¡ Working for Slovak Telekom since 2007

¡ Post-grad studies at Slovak University of Technology since 2007

¡ Worked extensively with SIP/XMPP based presence and their possible integration

Page 3: Lecture about XMPP

Outline ¡ XMPP ¡  Introduction ¡ Architecture ¡ Protocol

¡ Usage ¡  IM, presence, multi-party interaction ¡ Publish/subscribe ¡ Jingle

¡ Discussion ¡ XMPP vs. SIP/SIMPLE ¡ Relevance

Page 4: Lecture about XMPP

Further reading ¡ This slide set is extended with content from the

presentation of Remko Tronçon et. al.: “XMPP 101” ¡ http://el-tramo.be/blog/xmpp-101-fosdem/

¡ Thank you for making your talk publicly available!

¡ The book “XMPP – The Definitive Guide” is excellent material by the authors of the XMPP standards. ¡ Yes, I bought it myself.

Page 5: Lecture about XMPP

Note! ¡ These slides only summarize the lecture.

¡ Take notes.

¡ Some slides are placeholders for work- ing on the white board, take care!

¡ Questions/Contributions/Criticism/Notes/Hints? ¡  Interrupt me any time!

Page 6: Lecture about XMPP

XMPP

Page 7: Lecture about XMPP

Origins (RFC 2778, RFC 2779) ¡ IETF defines general model for presence and instant

messaging

¡ This model defines ¡ Presence service ¡  Instant messaging service

¡ Generic presence data model

¡ Requirements for instant messaging and presence (IMPP) systems are also described

Page 8: Lecture about XMPP

White board Term definition

Presence service model, presence system Publish/Subscribe, Notify

Watchers Instant Message Service

Presence information

Page 9: Lecture about XMPP

IMPP implementations ¡ Based on IETF generic IMPP RFCs, several protocols

are defined for delivering services

¡ Implementations are done by basic protocol and particular IMPP extension ¡ Base protocol ¡  SIP (RFC 3261)

¡  XMPP Core (RFC 3920)

¡  IMPP extension ¡  SIMPLE (RFC 3265)

¡  XMPP IM (RFC 3921)

Page 10: Lecture about XMPP

XMPP implementations ¡ To start with the relevance of the protocol, has

anyone chatted with the following services? ¡ Google

¡ Facebook ¡ Cisco ¡ WhatsApp

¡  identi.ca ¡ Apple

¡ All are based on or use XMPP to some extend*

* Some use a modification of the protocol.

Page 11: Lecture about XMPP

XMPP, the protocol ¡ Original name: Jabber (1998, by Jeremie Miller)

¡ Purely XML based protocol (for streaming XML) ¡ Comparison: SIP is based on HTTP

¡ Information is shared using a continuous XML stream transported over TCP

¡ SASL (Simple Authentication and Security Layer) and TLS (Transport Layer Security) used to secure stream

¡ Based on a few RFCs and extended by many XEPs ¡ XMPP Extension Protocol ¡ Comparison: SIP extended only through RFCs

Page 12: Lecture about XMPP

XMPP, the protocol ctd. ¡ XEPs make the protocol extensible

¡ XMPP is a decentralized, federated, asynchronous client-server protocol

¡ Sample messages

<message from=’[email protected]/adium’ to=’ [email protected]' type='chat'> <body>Hello!</body> </message>

<presence type=’busy'> <show>away</show> <status>Giving a lecture!</status> </presence>

Page 13: Lecture about XMPP

White board Architecture

C2S, S2S, GW, FN/FC Comparison to HTTP, E-mail, SIP

Page 14: Lecture about XMPP

XMPP Architecture

C1.1 C2.1 S2 S1

FC1 FN1 G1 C1.2

C2S S2S

Page 15: Lecture about XMPP

Addresses ¡ Bare JID similar to E-mail address, identifying

responsible user and domain ¡ [email protected]

¡ Full JID includes particular resource ¡ [email protected]/psi

¡ Jabber ID (JID) ¡ user@domain/resource

¡ DNS is used for service discovery ¡ SRV ¡ A

Page 16: Lecture about XMPP

White board Addressing

DNS Client Port 5222/Server Port 5269

Page 17: Lecture about XMPP

DNS ¡ Link IP addresses with domain names

¡ Support in locating XMPP servers ¡ SRV lookup

¡ A/AAAA lookup

¡ SRV look-up indicates the domain and port the service listens on ¡  _xmpp-server._tcp.gmail.com. 900 IN SRV 5 0 5269 xmpp-server.l.google.com. ¡  _xmpp-client._tcp.gmail.com. 900 IN SRV 5 0 5222 xmpp.l.google.com

¡ A/AAAA to find the IP address of the domain name ¡  xmpp-server.l.google.com. 300 IN A 173.194.70.125

Page 18: Lecture about XMPP

Client vs. Server Communications

¡ XMPP uses different ports for client to server (c2s) and server to server (s2s) communications ¡ c2s: Port 5222

¡  s2s: Port 5269

¡ Same principle for s2s as for c2s ¡ Discovery ¡ XML streams

¡ No intermediate servers for federation (unlike E-mail)

¡ Similar security mechanisms (SASL, TLS)

Page 19: Lecture about XMPP

Usage

Page 20: Lecture about XMPP

IM, presence, multi-party interaction

¡ All “built in” the main standards

¡ Protocol

¡ “Normal” instant messaging ¡  IM ¡ Presence

¡ Rosters ¡  Initial presence

¡ Statuses ¡ Priorities ¡ Negative priority

Page 21: Lecture about XMPP

XMPP 101: Protocol deep-dive

¡ Streaming XML ¡ Slide 22

¡ XMPP XML stanzas ¡ <message/> ¡ <presence/> ¡ <iq/> (Info/Query) ¡  Slides 23-28

¡ Extensibility ¡ Slide 29

Page 22: Lecture about XMPP

XMPP 101: Protocol deep-dive

¡ Extensions ¡ Multi-User Chat ¡  Slide 37

¡ PubSub ¡  Slide 40

¡ Extended presence ¡  Slide 45

Page 23: Lecture about XMPP

Other aspects ¡ vCards (XEP-0054, RFC 2426) ¡ Server maintains vCard of users

¡ Service Discovery (disco) ¡ Entity: disco#items ¡ Features: disco#info ¡ Server features, client capabilities, etc.

¡ Roster

¡ Server configuration

Page 24: Lecture about XMPP

Other aspects ctd. ¡ Server components ¡ MUC (Multi-user chat)

¡ Foreign network gateways

¡ File Transfer

¡ BOSH (Bidirectional streams over synchronous HTTP) ¡ XMPP over HTTP

¡ Bots ¡ c2s, components

Page 25: Lecture about XMPP

Jingle (XEP-0166+) ¡ Set up multi-media sessions similarly to SIP ¡ Only session setup, no media transport ¡ Negotiate content

¡ Negotiate protocol (UDP, TCP)

¡ Streaming protocol (e.g. RTP) used to transport media

¡ Similar complexity as in SIP ¡ Different protocol/ports ¡ NAT traversal

Page 26: Lecture about XMPP

White board Jingle session setup

Overlap: SIP messages

Page 27: Lecture about XMPP

Live tests ¡ Powered by from Process One ¡ Thank you!

¡ Domain ¡ hosted-im.fiit.ngnlab.eu

¡ Users ¡ Alice, Bob, Charlie, Dave

¡ Password ¡  fiit2012!lecture

Page 28: Lecture about XMPP

White board Stream setup

Have a look at some stanzas Test presence, message, Jingle

Test some server components (PubSub)

Page 29: Lecture about XMPP

Discussion

Page 30: Lecture about XMPP

XMPP vs. SIP/SIMPLE ¡ Which one is better?

¡ How have both historically developed to where they are now?

¡ Similarities/Differences ¡ Architecture ¡ Protocol

¡ Complexity ¡ Practical application

Page 31: Lecture about XMPP

XMPP vs.

SIP

Idea by Inaki Baz Castillo

Page 32: Lecture about XMPP

What can one build with XMPP?

¡ Many things J - needs differentiation

¡ Obvious examples ¡ Real-time communications system

¡ Messaging bus (PubSub)

¡ Yet another… ¡ RCS-e/Joyn? ¡ Facebook?

¡ E-mail? ¡ Gaming platform? ¡  Identity service? Your Ideas?!

Page 33: Lecture about XMPP

Relevance ¡ What is used these days? ¡ On the Internet ¡  Browser

¡ Mobile

¡ Clients ¡  Windows

¡  Mac

¡  Linux

¡ By operators

¡ Can SIP and XMPP be linked/connected?

Page 34: Lecture about XMPP

SIP/XMPP consolidation ¡ Joint paper published @ ONIT 2010

¡  http://link.springer.com/chapter/10.1007%2F978-3-642-17851-1_70

¡ An alternative approach to “SIP/SIMPLE vs. XMPP” and “Telco presence”

¡ Start point: current deployments ¡ Telephony: SIP ¡  IM/Presence: XMPP

¡ Requirements ¡ Use standard protocols (to re-use clients) ¡ Customers can keep current accounts in both worlds

Page 35: Lecture about XMPP

SIP/XMPP consolidation ctd.

Page 36: Lecture about XMPP

SIP/XMPP consolidation ctd. ¡ Telephone state extraction can be easily added to

each infrastructure ¡ Enhanced SIP proxy that can extract call state

information

¡ SIP call states must be converted to XMPP presence information

¡ XMPP as main IM/P protocol

Page 37: Lecture about XMPP

SIP/XMPP consolidation ctd.

Page 38: Lecture about XMPP

SIP/XMPP consolidation ctd.

Page 39: Lecture about XMPP

Summary ¡ A lot of open and/or free resources to follow up ¡ Programming libraries ¡ Clients, server – many open-source

¡ XMPP quite “under the radar” for now ¡ SIP gained a lot of attention w/ IMS, RCS-e, etc. in Telco ¡ Web 2.0 accelerated use of HTTP, esp. REST ¡ XMPP used, but not as “advocated”

¡ The Internet contains extensive material on XMPP ¡ This lecture was only an introduction!

¡ I hope it stimulated some ideas for future projects and helped in understanding communications a bit better.

Page 40: Lecture about XMPP

Sebastian Schumann [email protected] @s_schumann sschumann

Thank you!

Page 41: Lecture about XMPP

Download ¡ This lecture is available at http://bit.ly/fiit-xmpp

Page 42: Lecture about XMPP

References 1.  RFCs 2778, 2779, 3920, 3921. Various XEPs

2.  XMPP: The Definitive Guide. Peter Saint-Andre et.al.

3.  XMPP 101. Remko Tronçon http://www.slideshare.net/remko.troncon/xmpp-101

4.  Several own publications

5.  Graphics from Google Images, Open Clipart

If you feel content where you hold the copyright is displayed within these slides and you do not like it, miss a link/reference, or want me to remove it altogether please let me know.