2. Agenda
- XMPP Intro
- Some XMPP Extension
- XMPP vs DDS
- Concluding Remarks
OMG DDS SIG
3. XMPP History
XMPP = eXtensible Messaging and Presence Protocol
- 1999: Jabber starts as an Open Source project
- 2001: Jabber Software Foundation (JSF) is established
- 2002: XMPP Working Group started at IETF
- 2004: XMPP RFCs (3920-3923)
- 2006: JSF becomes the XMPP Standards Foundation
OMG DDS SIG
4. Core XMPP Features
- XMPP started as a standard for messaging and
presence. Today it is more than simply messaging
and presence, providing:
Channel encryption and authentication
Presence and Contact Lists
One-to-one and Multi-Party Messaing
Alerts and Notifications (XMPP Pub/Sub extension)
Peer-to-Peer Media Sessions (Jingle)
Data Forms and Remote Command
OMG DDS SIG
5. XMPP Architecture
- Client/Server
- Network of Decentralized Servers
- (Authenticated) Long Lived Connection from Client to Servers
Server Server
jabber.org mac.com
<message to=‘giorgia@jabber.org’>
<body> Have you seen my new
stratocaster?
</body>
</message>
Carmen Giorgia
carmen@jabber.org OMG DDS SIG giorgia@mac.com
6. Addressing
- User are addressed by Jabber ID (JID)
es. carmen@jabber.com
- Resource can be addressed via full JID
es. carme@jabber.com/concerts
OMG DDS SIG
7. Communication Primitives
- XMPP defines three different communication
primitives--called stanzas
- XMPP Stanzas are:
<message/>
<presence/>
<iq/>
OMG DDS SIG
8. <message/>
- A <message/> stanza contains:
From, To
Type
Subject + Body (Payload)
<message from=‘carmen@jabber.com
to=‘giorgia@jabber.org’>
<subject>Got a new Strato!</subject>
<body> Have you seen my new
stratocaster?
</body>
</message>
OMG DDS SIG
9. <presence/>
- The <presence/> stanza is used to advertise
presence and contains:
Status
Status Message
<presence from=‘carmen@jabber.com>
<show>xa</show>
<status>C9sus</status>
</presence>
OMG DDS SIG
10. <iq/>
- The <iq/> stanza is used to perform Request/
Response interactions (similar to HTTP GET, POST,
PUT)
<iq type=”get”>
<query xmlns=”jabber:iq:roster”/>
</iq>
<iq type=”result”>
<query xmlns=”jabber:iq:roster”>
<item jid=”carmen@jabber.org”/>
<item jid=”mario@jabber.org”/>
<item jid=”franco@jabber.org/>
</query>
</iq>
OMG DDS SIG
11. Agenda
- XMPP Intro
- Some XMPP Extension
- XMPP vs DDS
- Concluding Remarks
OMG DDS SIG
12. Pub/Sub Extension
- XMPP has been extended with basic Pub/Sub
capabilities
- <iq/> stanzas are used to manage subscriptions,
as well as to do pub/sub
OMG DDS SIG
14. Pub/Sub in XMPP
musicisti-ct {
carmen@jabber.org
Mario
giorgia@mac.com Server
mario@xmpp.org mario@xmpp.org
} xmpp.org
Server Server
jabber.org mac.com
Carmen Giorgia
carmen@jabber.org giorgia@mac.com
OMG DDS SIG
15. Pub/Sub in XMPP
musicisti-ct {
carmen@jabber.org
Mario
giorgia@mac.com Server
mario@xmpp.org mario@xmpp.org
} xmpp.org
Server Server
jabber.org mac.com
<iq
from=”carme@jabber.org”
to=notify.jabber.org”>
...
</iq>
Carmen Giorgia
carmen@jabber.org giorgia@mac.com
OMG DDS SIG
16. Pub/Sub in XMPP
musicisti-ct {
carmen@jabber.org
Mario
giorgia@mac.com
<iq Server
mario@xmpp.orgfrom=”carme@jabber.org” mario@xmpp.org
to=notify.jabber.org”> xmpp.org
} ...
</iq>
Server Server
jabber.org mac.com
<iq
from=”carme@jabber.org”
to=notify.jabber.org”>
...
</iq>
Carmen Giorgia
carmen@jabber.org giorgia@mac.com
OMG DDS SIG
17. Pub/Sub in XMPP <iq
from=”carme@jabber.org”
to=notify.jabber.org”>
...
</iq>
musicisti-ct {
carmen@jabber.org
Mario
giorgia@mac.com Server
mario@xmpp.org mario@xmpp.org
} xmpp.org
Server Server
jabber.org mac.com
<iq
from=”carme@jabber.org”
to=notify.jabber.org”>
...
</iq>
Carmen Giorgia
carmen@jabber.org giorgia@mac.com
OMG DDS SIG
18. Jingle Extension
- XMPP is not designed for distributing data with
real-time constraints
- XMPP Jingle is used to set-up direct connections
between points for streaming
Voice
Audio
Video
...
- After negotiating a connection via XMPP,
communication goes through other protocols, e.g.,
RTP, etc.
OMG DDS SIG
19. Agenda
- XMPP Intro
- Some XMPP Extension
- XMPP vs DDS
- Concluding Remarks
OMG DDS SIG
20. What is Standardized?
- DDS - XMPP
API Standard
Wire Protocol Standard Wire Protocol Standard
Application
Application
Object/Relational Mapping
Data Local Reconstruction Layer (DLRL)
DDS v1.2
Content
Ownership Durability
Subscription
Minimum Profile
API (?)
Data Centric Publish/Subscribe (DCPS)
DDSI v2.1
RFC-3920/9
eXtensible Messaging and
Real-Time Publish/Subscribe Protocol Presence Protocol
DDS Interoperability Wire Protocol Wire Protocol
UDP/IP TCP
OMG DDS SIG
21. Architecture
- DDS - XMPP
Fully Distributed Store and Forward
Topic-Based Pub/Sub Client/Server
QoS Enabled Pub/Sub as a protocol extension
Data Centric (keys, queries, etc.) “Source Addressing”-based
discovery
Dynamic Discovery
DDS XMPP
Subscriber
Publisher
Server Server
B
m
jabber.org mac.com
A F
Subscriber
Publisher J
D C
K
E
Publisher
Client Client
Subscriber
OMG DDS SIG
22. Type/Message Encoding
- DDS - XMPP
Efficient binary encoding XML encoding for both data
for both data-payload payload and protocol
and protocol messages messages
Strongly Typed Topic Just one message type, an
Types XML message
Polymorphic Type
Type extensibility/ Type extensibility/evolvability
evolvability supported by by leveraging XML
upcoming xTopics RFP
Note: Multiple encoding
supported via xTopics
OMG DDS SIG
23. Performance
- DDS - XMPP
Targeting high performance Targeting interactive systems
systems Discovery traffic often shown
Very low latencies to introduce non-negligible
Very high throughputs load
Real-Time determinism
OMG DDS SIG
24. Agenda
- XMPP Intro
- Some XMPP Extension
- XMPP vs DDS
- Concluding Remarks
OMG DDS SIG
25. Concluding Remarks
- DDS and XMPP target different application domains
- DDS is able to address very sophisticated data
distribution needs, where complex QoS need to be
satisfied
- XMPP is targeting interactive web applications
- DDS provides complete transparency w.r.t changes
in the infrastructure
- Due to its “source-addressing”-based discovery
XMPP might propagate back to the application
changes into the infrastructure
OMG DDS SIG