Seamless connectivity

vom Web über Backends bis zu IoT-Geräten

Mai 2016, Tobias Oberstein und Alexander Gödde

Diese Präsentation ist auch zugänglich unter

  • http://crossbario.com/resources/presentations/
  • http://bit.ly/1XwpNhn

Agenda

  1. Wer sind wir?
  2. Was ist Crossbar.io?
  3. Vorteile von Crossbar.io
  4. Sicherheit
  5. Docker & Unikernel
  6. Lizensierung
  7. Technologie mit Services
  • Softwarehersteller
  • Fokus: Infrastruktursoftware für Microservices und IoT
  • Commercial Open Source

Agenda

  1. Wer sind wir?
  2. Was ist Crossbar.io?
  3. Vorteile von Crossbar.io
  4. Sicherheit
  5. Docker & Unikernel
  6. Lizensierung
  7. Technologie mit Services

Crossbar.io ist ein Applikations-Router

Es verbindet Komponenten in verteilten Anwendungen.

Seamless Connectivity

  • ein Protokoll
  • über Sprachgrenzen
  • über Gerätegrenzen
  • über Netzwerkgrenzen
  • in Echtzeit

Anwendungsbeispiel

Crossbar.io ist ein Applikations-Router für das WAMP-Protokoll

Web Application Messaging Protocol (WAMP)

Messaging-Patterns

Deckt alle Kommunikation zwischen verteilten Anwendungskomponenten ab.

Verwendet zwei Patterns:

  • Publish & Subscribe (PubSub)
  • routed Remote Procedure Calls (rRPC)

PubSub

PubSub 1/4

Komponenten sind mit Crossbar.io verbunden

PubSub 2/4

Komponenten registrieren ihr Interesse an einem Thema

PubSub 3/4

Eine Komponente veröffentlicht auf ein Thema

PubSub 4/4

Interessierte Komponenten erhalten Event

PubSub

rRPC

rRPC 1/6

Komponenten sind mit Crossbar.io verbunden

rRPC 2/6

Komponente registriert eine Prozedur

rRPC 3/6

Eine Komponente ruft die registrierte Prozedur

rRPC 4/6

Crossbar.io ruft die Prozedur auf

rRPC 5/6

Die Prozedur gibt das Ergebnis zurück

rRPC 6/6

Crossbar.io sendet das Ergebnis an den Caller

rRPC

Steps

  • 00. Clients connect to Crossbar.io
  • 01. Clients subscribe to "temperature"
  • 02. Fan registers "start/stop fan"
  • 03. Motor temperature rises.
  • 04. Sensor publishes "temperature"
  • 05. "temperature" event dispatched
  • 06. Backend calls "start/stop fan"
  • 07. "start/stop fan" invoked
  • 08. Motor temperature falls.
  • 09. Sensor publishes "temperature"
  • 10. "temperature" event dispatched
  • 11. Backend calls "start/stop fan"
  • 12. "start/stop fan" invoked

WAMP ist ein offenes Protokoll

  • https://github.com/wamp-proto/wamp-proto
  • grundlegende Entwicklung durch Tobias
  • Fortentwicklung mit der Entwickler- und Nutzer-Community
    • 21 Contributors auf GitHub
    • über 180 Mitglieder auf der Mailingliste
  • 22 open-source Client-Implementierungen (12 Sprachen)
  • 11 open-source Router-Implementierungen

Genesi Radix K1

Designphilosophie

  • deckt alle Kommunikation zwischen verteilten Anwendungskomponenten ab
  • saubere Entkopplung von Komponenten (separat von Deployment-Artefakten)
  • sprach- und plattformunabhängig
  • erweiterbar
  • sicher
  • nur notwendige Komplexität
  • iterative Erstellung

Pluggable Architecture

WAMP - Advanced Features

  • Authentifizierung
  • Black/Whitelisting von Subscribern und Callern
  • Identifikation von Publishern und Callern
  • Load-Balancing für Calls
  • Meta-Events und Prozeduren
  • Payload-Verschlüsselung

Etwas Code

Verbinden mit Crossbar.io

                     
var connection = new autobahn.Connection({
   url: "ws://134.34.1.23",
   realm: "crossbardemo"
});

connection.open();
                     
                  

Handler für die Verbindung

                     
connection.onopen = function(session, details) {
   // set up your application
};

connection.onclose = function(reason, details) {
   // handle failed and dropped connections
};
                     
                  

PubSub

                     
session.subscribe("com.myapp.topic_1",
   function(args, kwargs, details) {
      // process event
   }
);

session.publish("com.myapp.topic_1",
                  args, kwargs, options);
                     
                  

rRPC

                     
session.register("com.myapp.function_1",
   function(args, kwargs, details) {
      // the procedure
   }
);

session.call("com.myapp.function_1", args, kwargs, options)
   .then(function(res) {
      // process the result
   }
                     
                  

Autobahn Projekt

Open-source WAMP Client-Bibliotheken

Gegenwärtig:

  • Autobahn|Python
  • Autobahn|JS
  • Autobahn|CPP

In Entwicklung:

  • Autobahn|Postgres
  • Autobahn|Android
  • Autobahn|C

Autobahn|Testsuite

Testsuite für WebSocket-Implementierungen.

Verwendet von Mozilla, Chrome Dev Team, IE Dev Team und vielen anderen.

Agenda

  1. Wer sind wir?
  2. Was ist Crossbar.io?
  3. Vorteile von Crossbar.io
  4. Sicherheit
  5. Docker & Unikernel
  6. Lizensierung
  7. Technologie mit Services

Seamless Connectivity

  • ein Protokoll
  • über Sprachgrenzen
  • über Gerätegrenzen
  • über Netzwerkgrenzen
  • in Echtzeit

... nicht nur ein WAMP Router

  • Authorisierung
  • Applikationskomponenten-Hosting
  • statischer Webserver
  • REST-Bridge-Services

Platform for verteilte Anwendungen, die All-in-One-Lösungen ermöglicht.

Wahlfreiheit für den Benutzer, welche Features er verwendet!

Performance

  • mehrere 100k Verbindungen
  • mehrere 10k Nachrichten/s
  • läuft auch auf kleinen SBCs (Raspberry Pi 1)

Open Source

Agenda

  1. Wer sind wir?
  2. Was ist Crossbar.io?
  3. Vorteile von Crossbar.io
  4. Sicherheit
  5. Docker & Unikernel
  6. Lizensierung
  7. Technologie mit Services

Sicherheit

Fundamental für vernetzte Geräte, make-or-break für das IoT.

Benutzer

  • Schutz von Daten
  • physische Sicherheit


Hersteller

  • Haftungsrisiken
  • Produktzulassung für den Markt

Sicherheit bei IoT-Geräten ist schlecht!

please add an alt text describing this
  • 50% ohne Transportverschlüsselung
  • 60% ohne gesicherten Update-Mechanismus
  • 40% ohne Schutz gegen Replay-Attacken

SSL ist nicht gleich SSL

Zahlreiche Ciphers sind unsicher.

Crossbar.io verwendet ausschließlich (nach gegenwärtigem Wissensstand) sichere Ciphers.

Was sind die technischen Probleme?

  • viele Geräte
  • begrenzte Ressourcen auf den Geräten
  • Wissen um Angriffe verbreitet sich weit und schnell
  • Updates verbreiten sich langsam

Unser Ansatz

Minimierung der Angriffsfläche auf den Geräten:

  • Geräte initiieren Verbindungen zum Router
  • keine offenen Ports am Gerät

Härtung des Routers

  • Sicherheit als Grundprinzip
  • kein Anwendungscode im Router

Sicherheit ist eingebaut

  • umfangreiche Authentifikations-Features
  • flexible, feingranulare Authorisierung
  • End-to-End Verschlüsselung

Open Source

Agenda

  1. Wer sind wir?
  2. Was ist Crossbar.io?
  3. Vorteile von Crossbar.io
  4. Sicherheit
  5. Docker & Unikernel
  6. Lizensierung
  7. Technologie mit Services

Docker & Unikernel 1/2

  • Crossbar.io als Docker-Image verfügbar (x86)
  • Autobahn als Docker-Image verfügbar
  • Crossbar.io auf Docker ARM ist auf Roadmap
  • Crossbar.io Worker als Docker-Container ist auf Roadmap

Docker & Unikernel 2/2

  • rumprun (https://github.com/rumpkernel/rumprun) ist ein auf Rump Kernel basierender Unikernel
  • Rump Kernels (http://rumpkernel.org/) basiert auf NetBSD
  • rumprun läuft auf: HW (x86_32, x86_64 and ARM), Xen, Posix
  • Crossbar.io auf rumprun möglich als Weiterentwicklung

Agenda

  1. Wer sind wir?
  2. Was ist Crossbar.io?
  3. Vorteile von Crossbar.io
  4. Sicherheit
  5. Docker & Unikernel
  6. Lizensierung
  7. Technologie mit Services

Lizensierung

Autobahn Client-Bibliotheken

MIT, Boost License

  • Liberale Lizenzen
  • Keine Verpflichtung zur Weitergabe von Modifikationen
  • Problemlose Verwendung in kommerziellen Projekten

Crossbar.io

  1. Open Source Lizenz
  2. Kommerzielle Standard-Lizenz
  3. Individuell OEM Lizenz

1. Open Source Lizenz

AGPL v3

  • Copyleft: Pflicht zur Veröffentlichung von Modifikationen bei Verbreitung der Software
  • Nutzung über das Netzwerk gilt als Verbreitung
  • Code-Reuse nur in Projekten unter kompatiblen Lizenzen
  • Aber: WAMP-Clients werden durch ihre Verbindung zum Router nicht von der Lizenz tangiert!

2. Kommerzielle Standard-Lizenz

Tavendo hat alle Rechte am Source-Code von Crossbar.io.

Wir bieten eine kommerzielle Standardlizenz als Teil unserer bezahlten Leistungen zu Crossbar.io

3. Individuelle OEM Lizenz

Wir sind frei in der Lizenzgestaltung.

Agenda

  1. Wer sind wir?
  2. Was ist Crossbar.io?
  3. Vorteile von Crossbar.io
  4. Sicherheit
  5. Docker & Unikernel
  6. Lizensierung
  7. Technologie mit Services

Technologie mit Services

Kommerzielles Standard-Angebot

  • kommerzielle Standard-Lizenz
  • Support mit SLA für Crossbar.io
  • Crossbar.io DevOps Center (CDC) (in Entwicklung)

Technologie mit Services

OEM-Partner-Angebot

  • Entwickler-Support für Crossbar.io
  • Weiterentwicklung von Crossbar.io aufgrund von Kundenanforderungen
  • Entwicklungsleistungen in OEM-Projekten
  • Individuelle OEM-Lizenz für Crossbar.io
  • Crossbar.io DevOps Center on Premise

Crossbar.io DevOps Center (CDC)

Cloud-Service für das Monitoring, Management und Clustering von Crossbar.io-Instanzen.

Monitoring

  • Über Instanzen und Standorte
  • von überall aus
  • Alarme
  • zentralisierte Logs

Management

  • dynamische Konfiguration
  • Templating
  • Automatisierung
  • Orchestrierung
  • Zugriff über API

Clustering

  • Hochverfügbarkeit
  • Skalierung
  • Latenzminimierung (geographisch verteilte Router)

Technologie mit Services

OEM-Partner-Angebot

  • Entwickler-Support für Crossbar.io
  • Weiterentwicklung von Crossbar.io aufgrund von Kundenanforderungen
  • Entwicklungsleistungen in OEM-Projekten
  • Individuelle OEM-Lizenz für Crossbar.io
  • Crossbar.io DevOps Center on Premise


  • Tobias Oberstein - tobias.oberstein@crossbario.com
  • Alexander Gödde - alexander.goedde@crossbario.com


  • IRC - freenode/autobahn
  • Mailing lists (on Google Groups): crossbario, autobahn, wampws