IPM Vortrag – BA Planung – XMPP: Extensible Messaging and Presence Protocol



IPM Vortrag – BA Planung – XMPP: Extensible Messaging and Presence Protocol

0 0


ipm_vortrag


On Github puhoy / ipm_vortrag

IPM Vortrag

BA Planung

"Filesharing auf Basis von XMPP und BitTorrent"

Jan Hartmann / 11083800

puhoy.github.io/ipm_vortrag

Übersicht

Problemstellung Die Idee Konzept Zeitplanung + Meilensteine Zukunft

Problemstellung

XMPP: Extensible Messaging and Presence Protocol

("Jabber")
  • erweiterbares Messagingprotokoll
  • dezentral (Architektur ähnlich wie bei Email)
  • offener Standard (RFC 6120, 6121, 6122)
  • einfach um neue Funktionen zu erweitern
  • unterstützt Transports zu anderen IM-Diensten
genutzt von: facebook chat, whatsapp, google talk
...Nachteile:
  • für in-band Dateiübertragungen muss base64 (zu Text) Codiert werden
  • out-of-band Übertragungen benötigen Proxyfunktionalität
  • Clients implementieren unterschiedliche Standards
base64 -> bytes * 4/3 + overhead ibb oft rate limited

(23:26:30) A: kannst du dich dran erinnern wann das letzte mal eine dateiübertragung per jabber geklappt hat?

(23:27:47) B: Nein^^

(23:28:14) Angebot zum Senden von xmpp_filetransfer_not_working.png an B

jede Menge Ansätze:
  • SI File Transfer (XEP-0096)
  • Jingle SOCKS5 Bytestreams Transport Method (XEP-0260)
  • Jingle In-Band Bytestreams Transport Method (XEP-0261)
  • ICE-TCP RFC 6544
  • Out-of-Band Data (XEP-0066)
  • SOCKS5 Bytestreams (XEP-0065)
  • In-Band Bytestreams (XEP-0047)
  • ...

die Idee

"...könnte man da nicht BitTorrent benutzen?"
freigeben statt pushen xmpp: sowieso den ganzen tag offen

Vorteile:

  • Downloads aus mehreren Quellen!
  • Infrastruktur:
    • (Serverseitig) keine Änderung nötig!
    • kein (XMPP-)Proxy nötig
    • kein Torrent Tracker nötig um Peers zu vermitteln
  • unbekannte IPs lassen sich blockieren
  • wenn gewollt: erweiterbar zu "normalem" BT Client

Anwendungsfälle

Werkzeuge

  • Python
    • libtorrent
    • sleekxmpp
    • flask (+ flask-jsonrpc)
  • Pydoc+Sphinx
  • LaTeX

Konzept

Klassendiagramm

Zeitplanung

Zukunft

Mögliche Erweiterungen

  • Integration in XMPP Clients (Pidgin, gajim, Miranda...)
  • "normale" BT Mechanismen (Verbindung zu Tracker, Peer Discovery...)
  • Chat Funktionalität
  • Benachrichtigungen an bestimmte Kontakte wenn Torrents verfügbar/fertig
  • Möglichkeit Kontakte zu blockieren
  • separate BT Clients je XMPP Account

Vielen Dank!

xkcd.com/927
BitTorrent: magnetlinks erstellen
magnet:?xt=urn:btih: b8bb8887a0b8204894eff2c6e00b1f8570dbd43e &dn=Captain+Beefheart+FLAC+discography &tr=udp%3A%2F%2Ftracker.btzoo.eu%3A80%2Fannounce &tr=udp%3A%2F%2Fopen.demonii.com%3A1337 &tr=udp%3A%2F%2Ftracker.istole.it%3A80 &tr=udp%3A%2F%2Ftracker.publicbt.com%3A80 &tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80
XMPP: PEP ("push") oder GET IQ ("pull")

(als Mechanismen zum verteilen)

(todo: eigentlich reichts wenn ich das sage. folie überflüssig.)

Konzept f. PEP

    • Message-Stanza: "push"-Mechanismus
    • Bsp: ich schicke ("pushe") eine Textnachricht an einen meiner Kontakte
    • Presence-Stanza: "publish-subscribe"-Mechanismus
    • Bsp: ändert ein Kontakt seinen Status erhalten alle Kontakte im Roster einen Presence-Stanza mit dem aktuellen Status ("publish")
    • IQ-Stanza : "request-response"-Mechanismus
    • IQ = Info/Query
    • Mögliche IQ-Stanzatypen: get, set, error, response
    • vergleichbar mit HTTP GET, POST
IPM Vortrag BA Planung "Filesharing auf Basis von XMPP und BitTorrent" Jan Hartmann / 11083800 puhoy.github.io/ipm_vortrag