Jabber / XMPP




Proseminar Uni Ulm

  27. April 2005




                     <page="1" max="22"/>
Warum?

•   Grosse Messenger:
    •   AIM/ICQ (AOL)
    •   MSN (Microsoft)
    •   Yahoo
•   Windows (+Mac) Only, Werbung, Closed Source
•   Keine Protokoll-Infos, inoffizielle Clients
    funktionieren nur durch Protokoll-Reversing
•   Protokolländerungen = Warten..
•   Single Point of Failure
•   Privacy meist nur Simulation


                                      <page="2" max="22"/>
Jabber/XMPP - Geschichte

•   1998: Entwicklung durch Jeremie Miller
•   Jan 1999: Slashdot
•   März 2000: Jabber, Inc
•   Mai 2000: jabberd 1.0
•   August 2001: Gründung JSF
    •   Jabber Board (3 Personen) – Business Affairs
    •   Jabber Council (6 Personen) – Technical Affairs
    •   JSF (~60 Personen)
•   Oktober 2004: RFC 3920-3924



                                                  <page="3" max="22"/>
Neu an Jabber?

•   Abwärtskompatibel mit beliebigem Inhalt
    erweiterbar
•   Dezentral
•   Dokumentiert und Standardisiert
•   Privacy sehr wichtig
•   Clients für nahezu jede obskure Plattform
•   „eXtensible Messaging and Presence Protocol“
•   Dynamisches Netz – s2s wird nach Bedarf
    aufgebaut



                                         <page="4" max="22"/>
Probleme

•   Relativ jung
•   Techniker programmieren:
    •   Unverständlich, Featureoverkill, „staubig“
    •   Wozu Doku wenn es Source gibt?
    •   Unterschiedlichste Begriffe – Supportalptraum
•   Semiprofessionelle Server, keine QS
    •   DynIP-Server
    •   „jeder darf alles“ - Bug und Feature gleichzeitig
    •   Protokolle nicht immer verstanden
•   Kein Client kann „alles“
•   Multi-Protocol-Clients

                                                    <page="5" max="22"/>
Jabber ist schick, weil:

•   Authorisation muss sein
•   Contact List Serverseitig gespeichert
•   Filter auf Serverseite möglich
•   Einfach und schnell scriptbar
•   Mehrere Clients parallel online
•   Mailadresse = Jabber-Id
•   Sehr gut für Unternehmen/Gruppen
    •   shared/dynamic Roster Management
•   GPG, OTR und Co (End2End Verschlüsselung)
•   „Do it yourself“


                                            <page="6" max="22"/>
Technik: Jid

•   Jabber-ID (jid) „fh@jabber.ccc.de/somewhere“
    •   fh: Benutzer
    •   jabber.ccc.de: Server
    •   somewhere: Resource
    •   Benutzer und Resource sind nicht immer angegeben
•   Zusätzlich: Priority
    •   „Wichtigkeit des Clients“
    •   Meist dargestellt als fh@jabber.ccc.de/somewhere (5)




                                                  <page="7" max="22"/>
Jid Interpretation


 fh@zwoop.de/home (5)




                              to=“fh@zwoop.de/home“
                              to=“fh@zwoop.de“
                              to=“zwoop.de/echo“


fh@zwoop.de/laptop (9)




                                           <page="8" max="22"/>
Serverübergreifend
 bla@jabber.i-pobox.net


                             jabber.i-pobox.net



                                          zwoop.de
                                                     to=“bla@jabber.i-pobox.net“
                                                     to=“someuser@amessage.info“


                          amessage.info



someuser@amessage.info


                                                                 <page="9" max="22"/>
Server-Kommunikation

•   Verbindungsaufbau nicht statisch, sondern dynamisch
    und upon request (vgl. Email)
•   TLS-Support bei neuen Serverversionen
•   Load-Balancing einfach möglich
•   Drei-Wege Handshake




                                         <page="10" max="22"/>
Servertechnik



                                       sessions                some.jabberd.com
                    dns                                        Port 5269
                                                               _xmpp-server._tcp.some.jabberd.com


                                                    s2s
*@zwoop.de

                                                                 Andere Netze
                                                                 AIM/ICQ/MSN/Yahoo
                                                                 SMS/eMail/IRC/RSS...
                                    router

                                                  transports
              c2s
              Ports 5222 und 5223
fh@zwoop.de


                                                               <page="11" max="22"/>
Transports?

•   Umsetzung beliebiger Dienste nach Jabber
    •   ICQ-Uin wird zu 12345@icq.zwoop.de
    •   Transparent für Jabberclients
•   Oft auch Gateways oder „Dienst“ genannt
•   Gateways anderer Server nutzbar
    •   user@zwoop.de kann icq.amessage.de nutzen
•   Gateways zu ICQ/MSN/AIM/Y! gern überlastet




                                              <page="12" max="22"/>
Dienste

•   Registrierung und Bedienung über „Service
    Discovery“




                                         <page="13" max="22"/>
XMPP
                                                    |--------------------|
                                                    | <stream>           |
            •    eXtensible Messaging               |--------------------|
                 and Presence Protocol              | <presence>
                                                    |   <show/>
                                                                         |
                                                                         |
            •    Streaming XML                      | </presence>        |
                                                    |--------------------|
                   •    XML-Pakete                  | <message to='foo'> |
                        eingebettet in einem        |   <body/>          |
                                                    | </message>         |
                        <stream />                  |--------------------|
                                                    | <iq to='bar'>      |
                                                    |   <query/>         |
                                                    | </iq>              |
                                                    |--------------------|
                                                    | ...                |
                                                    |--------------------|
                                                    | </stream>          |
                                                    |--------------------|



Alle Protokollauszüge stammen aus den XMPP-RFCs                     <page="14" max="22"/>
Protokoll-Spezifikation

•   Basis: RFC 3920 – 3924
•   Erweitert durch JEPs, Jabber Enhancement
    Proposals
    •   Ca 150 Stück
    •   Struktur ähnlich RFCs (Draft, Deprecated, ..)
    •   Validierung durch JSF




                                                  <page="15" max="22"/>
Jabber vs. XMPP

•   XMPP ist der Teil von Jabber, der in den RFC-
    Dokumenten spezifiziert ist
•   Jabber lässt einiges zu, was nach XMPP nicht ok
    ist
•   „XMPP ist die kleinliche Variante von Jabber“




                                         <page="16" max="22"/>
Ausblick: Pubsub

•   Publish – Subscribe für nahezu Beliebigen
    Content
    •   User „subscribed“ eine Element
    •   Wenn sich das Element ändert, bekommt User eine
        Nachricht
•   Vergleich: RSS
    •   Bandbreitenfreundlicher
    •   Schneller
    •   Beliebiger Content




                                               <page="17" max="22"/>
Protokoll-Zukunft

•   Shared / Dynamic Roster
•   Remote Controlling Client (JEP146)
•   Whiteboard/ Audio/ Video Support
•   HTTP Binding (Jep 124)
•   Servergespeicherte History
•   Filter auf dem Server
•   Erweiterte Nachrichtenattribute (Jep 79)




                                           <page="18" max="22"/>
Lluna

•   Collaborative Browsing
    •   Kommunikation mit anderen Besuchern der gleichen
        Website über Avatare
    •   Idee: Beratung/Support „im Browser“




                                              <page="19" max="22"/>
Trakm8

•   Monitoring von Fahrzeugbewegungen über
    GSM/GPS
•   Flottenmanagement
•   Mietwagenüberwachung
•   Infrastruktur Jabber
•   Trackingsoftware, SMS-Alerts, ...




                                      <page="20" max="22"/>
Sip/Simple

•   Ziel: Sip durch Jabber ersetzen
•   Es existieren mehrere Gateways
•   „Wenn Client DND klingelt das Telefon nicht“
•   JEP 0111




                                        <page="21" max="22"/>
•     </vortrag>


                                       Florian Holzhauer
                                    jid: fh@jabber.ccc.de
                                mail: fh-jabber@fholzhauer.de




Stand: 14.4.2005                                                <page="22" max="22"/>

Jabber/XMPP

  • 1.
    Jabber / XMPP ProseminarUni Ulm 27. April 2005 <page="1" max="22"/>
  • 2.
    Warum? • Grosse Messenger: • AIM/ICQ (AOL) • MSN (Microsoft) • Yahoo • Windows (+Mac) Only, Werbung, Closed Source • Keine Protokoll-Infos, inoffizielle Clients funktionieren nur durch Protokoll-Reversing • Protokolländerungen = Warten.. • Single Point of Failure • Privacy meist nur Simulation <page="2" max="22"/>
  • 3.
    Jabber/XMPP - Geschichte • 1998: Entwicklung durch Jeremie Miller • Jan 1999: Slashdot • März 2000: Jabber, Inc • Mai 2000: jabberd 1.0 • August 2001: Gründung JSF • Jabber Board (3 Personen) – Business Affairs • Jabber Council (6 Personen) – Technical Affairs • JSF (~60 Personen) • Oktober 2004: RFC 3920-3924 <page="3" max="22"/>
  • 4.
    Neu an Jabber? • Abwärtskompatibel mit beliebigem Inhalt erweiterbar • Dezentral • Dokumentiert und Standardisiert • Privacy sehr wichtig • Clients für nahezu jede obskure Plattform • „eXtensible Messaging and Presence Protocol“ • Dynamisches Netz – s2s wird nach Bedarf aufgebaut <page="4" max="22"/>
  • 5.
    Probleme • Relativ jung • Techniker programmieren: • Unverständlich, Featureoverkill, „staubig“ • Wozu Doku wenn es Source gibt? • Unterschiedlichste Begriffe – Supportalptraum • Semiprofessionelle Server, keine QS • DynIP-Server • „jeder darf alles“ - Bug und Feature gleichzeitig • Protokolle nicht immer verstanden • Kein Client kann „alles“ • Multi-Protocol-Clients <page="5" max="22"/>
  • 6.
    Jabber ist schick,weil: • Authorisation muss sein • Contact List Serverseitig gespeichert • Filter auf Serverseite möglich • Einfach und schnell scriptbar • Mehrere Clients parallel online • Mailadresse = Jabber-Id • Sehr gut für Unternehmen/Gruppen • shared/dynamic Roster Management • GPG, OTR und Co (End2End Verschlüsselung) • „Do it yourself“ <page="6" max="22"/>
  • 7.
    Technik: Jid • Jabber-ID (jid) „fh@jabber.ccc.de/somewhere“ • fh: Benutzer • jabber.ccc.de: Server • somewhere: Resource • Benutzer und Resource sind nicht immer angegeben • Zusätzlich: Priority • „Wichtigkeit des Clients“ • Meist dargestellt als fh@jabber.ccc.de/somewhere (5) <page="7" max="22"/>
  • 8.
    Jid Interpretation fh@zwoop.de/home(5) to=“fh@zwoop.de/home“ to=“fh@zwoop.de“ to=“zwoop.de/echo“ fh@zwoop.de/laptop (9) <page="8" max="22"/>
  • 9.
    Serverübergreifend bla@jabber.i-pobox.net jabber.i-pobox.net zwoop.de to=“bla@jabber.i-pobox.net“ to=“someuser@amessage.info“ amessage.info someuser@amessage.info <page="9" max="22"/>
  • 10.
    Server-Kommunikation • Verbindungsaufbau nicht statisch, sondern dynamisch und upon request (vgl. Email) • TLS-Support bei neuen Serverversionen • Load-Balancing einfach möglich • Drei-Wege Handshake <page="10" max="22"/>
  • 11.
    Servertechnik sessions some.jabberd.com dns Port 5269 _xmpp-server._tcp.some.jabberd.com s2s *@zwoop.de Andere Netze AIM/ICQ/MSN/Yahoo SMS/eMail/IRC/RSS... router transports c2s Ports 5222 und 5223 fh@zwoop.de <page="11" max="22"/>
  • 12.
    Transports? • Umsetzung beliebiger Dienste nach Jabber • ICQ-Uin wird zu 12345@icq.zwoop.de • Transparent für Jabberclients • Oft auch Gateways oder „Dienst“ genannt • Gateways anderer Server nutzbar • user@zwoop.de kann icq.amessage.de nutzen • Gateways zu ICQ/MSN/AIM/Y! gern überlastet <page="12" max="22"/>
  • 13.
    Dienste • Registrierung und Bedienung über „Service Discovery“ <page="13" max="22"/>
  • 14.
    XMPP |--------------------| | <stream> | • eXtensible Messaging |--------------------| and Presence Protocol | <presence> | <show/> | | • Streaming XML | </presence> | |--------------------| • XML-Pakete | <message to='foo'> | eingebettet in einem | <body/> | | </message> | <stream /> |--------------------| | <iq to='bar'> | | <query/> | | </iq> | |--------------------| | ... | |--------------------| | </stream> | |--------------------| Alle Protokollauszüge stammen aus den XMPP-RFCs <page="14" max="22"/>
  • 15.
    Protokoll-Spezifikation • Basis: RFC 3920 – 3924 • Erweitert durch JEPs, Jabber Enhancement Proposals • Ca 150 Stück • Struktur ähnlich RFCs (Draft, Deprecated, ..) • Validierung durch JSF <page="15" max="22"/>
  • 16.
    Jabber vs. XMPP • XMPP ist der Teil von Jabber, der in den RFC- Dokumenten spezifiziert ist • Jabber lässt einiges zu, was nach XMPP nicht ok ist • „XMPP ist die kleinliche Variante von Jabber“ <page="16" max="22"/>
  • 17.
    Ausblick: Pubsub • Publish – Subscribe für nahezu Beliebigen Content • User „subscribed“ eine Element • Wenn sich das Element ändert, bekommt User eine Nachricht • Vergleich: RSS • Bandbreitenfreundlicher • Schneller • Beliebiger Content <page="17" max="22"/>
  • 18.
    Protokoll-Zukunft • Shared / Dynamic Roster • Remote Controlling Client (JEP146) • Whiteboard/ Audio/ Video Support • HTTP Binding (Jep 124) • Servergespeicherte History • Filter auf dem Server • Erweiterte Nachrichtenattribute (Jep 79) <page="18" max="22"/>
  • 19.
    Lluna • Collaborative Browsing • Kommunikation mit anderen Besuchern der gleichen Website über Avatare • Idee: Beratung/Support „im Browser“ <page="19" max="22"/>
  • 20.
    Trakm8 • Monitoring von Fahrzeugbewegungen über GSM/GPS • Flottenmanagement • Mietwagenüberwachung • Infrastruktur Jabber • Trackingsoftware, SMS-Alerts, ... <page="20" max="22"/>
  • 21.
    Sip/Simple • Ziel: Sip durch Jabber ersetzen • Es existieren mehrere Gateways • „Wenn Client DND klingelt das Telefon nicht“ • JEP 0111 <page="21" max="22"/>
  • 22.
    </vortrag> Florian Holzhauer jid: fh@jabber.ccc.de mail: fh-jabber@fholzhauer.de Stand: 14.4.2005 <page="22" max="22"/>