WebRTC - Web Real Time Communication

WebRTC hört sich an wie "RTC fürs Web" und man könnte erhoffen, dass man damit Audio/Video-Clients und Konferenzen nur mit dem Webbrowser machen kann. Da ist auch was dran und ich stelle mir schon vor, wenn ich auf der ein oder andere Webseite surfe und ich dann vom Betreiber "angerufen" werden oder sogar per Video interagiere. Die Werbebranche sieht da sicher einen Vorteil und das könnte die Callcenter mit ihrem "Blind Calls" revolutionieren. Der Agent kennt ja schon den "Weg des Surfers" und vielleicht dank der Werbenetzwerke sogar eine Profil oder die Identität. Aber welche Bedeutung hat WebRTC für Lync?

Diese Seite ist etwas veraltet. Mittlerweile ist WebRTC Realität und wird quasi von allen Konferenz-Systemen genutzt, die einen Teilnahme per Browser ohne Installation eines Plug-ins erlauben. Also auch Teams, Zoom, Google Classroom, Jitsi, BigBlueButton u.a.

WebRTC Basics

Die Idee hinter WebRTC ist, dass auf möglichst vielen Plattformen mit einer einheitlichen API die gleichen Funktionen für Audio und Video zur Verfügung stehen. Als Minimalfunktion sollten ein paar Zeilen JavaScript reichen, um auf Mikrofon und WebCam zuzugreifen und eine Audio/Video-Verbindung aufzubauen. Zudem sollten für diese Funktion keine zusätzlichen Plugins für den Browser erforderlich werden, die erst nachinstalliert werden. Folgende Browser sind aktuell WebRTC tauglich:

Browser Bemerkung  Windows MacOS IOS Android Linux

Chrome

http://www.webrtc.org/chrome

Version 28 und höher

Version 29

Firefox

Aktuell noch kein TURN Support. Siehe http://www.webrtc.org/firefox

Version 22/23 und höher

Opera

 

Version 19 oder höher

Internet Explorer

 

Safari

Announcing WebRTC and Media Capture
https://webkit.org/blog/7726/announcing-webrtc-and-media-capture/

Version 32 oder höher

Version 32 oder höher

Achtung: ggfls. gibt es noch unterschiedliche Implementierungen ne Betriebssystem. Safari gibt es ja neben Windows auch auf MacOS und IOS. Auch zwischen Firefox (Win) und Firefox (Linux) kann es unterschiede geben.

Die WebRTC JavaScript-API enthält folgende Funktionen:

  • getUserMedia
    Zugang zu Audio/Video Mediastreams
  • RTCPeerConnection
    Methoden um Daten zwischen zwei Browsern auszutauschen
  • RTCDataChannel
    Beliebige Daten zwischen Browsens auszutauschen

Grenzen von WebRTC

Die folgenden Informationen sind aus verschiedenen Quellen recherchiert und hier zusammen getragen. Sie müssen nicht mehr dem aktuellen Stand entsprechen.

Wer sich aber mit Lync und selbst mit SIP im allgemeinen auskennt, der vermisst hier u.a. Funktionen für die Anmeldung an SIP-Servern, Authentifizierung, die generelle Signalisierung und auch Traversal-Funktionen (Stichwort ICE und Kandidaten) konnte ich noch nicht entdecken. Allerdings enthält die Spezifikation zu WebRTC durchaus Hinweise auf ICE. Nur werden Sie sicher keine öffentlichen TURN/STUN-Server finden. Hier bleibt also noch etwas zu tun, wenn wir nicht auf eine vollständige durchgängige Erreichbarkeit mit IPv6 warten wollen.

  • Registrar-Services
    Alles was einen Lync Frontend Server ausmacht (Anmeldung, Buddyliste, Adressbuch, "Finden" von Gegenstellen etc. habe ich bislang bei WebRTC nicht gesehen.
  • Keine Konferenzen
    WebRTC ist aktuell als "Peer2Peer"-System zwischen Browsern ausgelegt. Es müsste also erst jemand eine MCU bereit stellen, die mehrere WebRTC-Streams zusammenfassen und weiter verteilen kann. Es gibt aber erste Hersteller, die MCUs bereit stellen, z.B. Licode (http://lynckia.com/) oder Mantis (http://www.tokbox.com/blog/mantis-next-generation-cloud-technology-for-webrtc/). Es könnte aber durchaus sein, dass in Zukunft ein WebRTC-Client in einer Lync Konferenz teilnehmen kann.
  • IM/Presence
    Mangels Registrar und Buddyliste ist es natürlich auch nicht direkt möglich, eine Präsenz von anderen Personen anzuzeigen. Sicher kann eine Webseite mit JavaScript gegen einen Server arbeiten, aber in WebRTC ist der Server nicht definiert. Drittprodukte und Lync können natürlich einen eigenen SIP-Stack samt Server und Client bereit stellen und für Audio/Video dann auf WebRTC zurückgreifen.
  • PSTN-Kopplung
    Ich habe noch keine Ansätze gesehen, wie WebRTC ein Gateway zu Clients nutzen kann, die keinen PC haben. Auch hier ist aber per Zusatzsoftware eine Lösung denkbar.
  • Codecs
    WebRTC scheint keinen Codec-Satz vorzugeben, vielleicht auch um Patentfragen zu umschiffen. Google versucht VP8 zu pushen und baut an VP9 (Angeblich mit Vidyo). VP8 ist etwas auf 720p Niveau mit H.264 aber ohne SVC. Interessanterweise nutzt Google Hangout selbst kein VP8. Firefox hat keine Codecs, d.h. der Anwender muss aktuell erst entsprechende Codecs selbst nachinstallieren, die Firefox dann nutzen kann.
  • STUN/TURN-Traversal
    Wenn Sie die DemoApp auf http://apprtc.appspot.com/ ausprobieren, dann können sie mit NetMon sehen, dass als STUN/TURN-Server der Host "stun.l.google.com:19302" zum Einsatz kommt. Sie können auch selbst einen Server aufbauen. Mozillar betreibt unter stun.services.mozilla.com einen STUN-Server und auch Google hat den Code unter https://code.google.com/p/rfc5766-turn-server/ öffentlich gemacht und es gibt wohl auch eine VM in der Amazon Cloud oder mit RESTUND (http://www.creytiv.com/restund.html) ein anderer Produkt zum Eigenbetrieb.

Hinweis: Der STUN-Server erfährt ihre offizielle IP-Adressen. Wenn sie also z.B. auf eine Webseite surfen oder eine Applikation nutzen, die per WebRTC eine Verbindung aufbauen, dann kann der Betreiber oft so ihre Adresse orten, selbst wen Sie über Proxy-Server und VPNs arbeiten.

WebRTC und Security

Eines darf bei WebRTC nicht vergessen werden. Wie auch bei SIP gibt es einen Signalisierungskanal, der hier natürlich in der Regel über HTTPS erfolgt. Parallel dazu nutzt WebRTC für Audio/Video. Und hier kommt SDP und ICE zum Einsatz, wie bei jedem anderen VoIP Produkt

Damit eröffnen sich natürlich auch Sicherheitsfragen, denn die entfernte Seite bekommt die SDP-Information übermittelt. Dazu reicht schon, wenn jemand angerufen wird, damit das Ziel verrät, hinter welchen IP-Adressen es sich befindet. Das gilt auch, wenn die IP-Kandidaten gar nicht genutzt werden können. Das eröffnet natürlich die Möglichkeit, die Position eines entfernten Anwender zu bestimmen, selbst wenn dieser über VPN-Provider oder auch Anonymisierungs-Netzwerke (z.B. TOR) arbeiten. Diese Netzwerke leiten in der Regel nur TCP und HTTPS-Anfragen um aber keine direkten RTP-Verbindungen.

Diesem Risiko muss man sich immer bewusst sein, wenn man im Internet unterwegs ist.

WebRTC und Lync/Skype

Aktuell sehe ich noch keinen direkten Einfluss von WebRTC und Lync. Wer auf WebRTC setzt, muss eine Webseite aufsetzen, über die ein Client per JavaScript die lokale WebRTC-API nutze um mit anderen Clients Audio und Video zu machen. Schon wenn ein Client hinter einem NAT-Router steht, muss ein TURN/STUN-Service zusätzlich aufgebaut werden, dessen Funktionen samt Authentifizierung nicht durch WebRTC definiert ist. Auch das Benutzermanagement ist nicht teil von WebRTC sondern könnte jeder Anbieter selbst machen.

Damit ist WebRTC erst mal nicht viel besser als jede andere Konferenzplattform. Sie hat nur den Vorteil, dass beim Einsatz der passenden Browser und nach Installation erforderlicher Codecs kein weiteres Plug-in im Browser mehr erforderlich ist.

Es könnte aber interessant werden, wenn jemand eben so einen Dienst aufbaut und als Plattform für die Signalisierung auf Lync aufsetzt. Mit der Unified Communication Web API steht eine REST-API bereit, mit der Applikationen im Browser sich an Lync per HTTPS anmelden und fast alle Dienste nutzen können. Wenn diese JavaScript-Applikation dann WebRTC für Audio/Video nutzt, könnte dies eine interessante Option werden. Dann fehlt nur noch, dass die Lync MCU und die WebRTC-Clients gemeinsame Codecs nutzen um einen weiteren Lync Client zu haben.

Ich bin sicher, dass Microsoft die Arbeiten um WebRTC sehr genau betrachtet.

Einschätzung

Wenn ich es recht einschätze, dann ist WebRTC aktuell eine Version 1.0 mit der ausgewählte Browser miteinander eine Audio/Video-Verbindung aufbauen können, zumindest solange die beiden Endpunkte sich direkt erreichen können und sie einen gemeinsamen Codec finden. Vielleicht wird die Lync MCU irgendwann mal einen WebRTC Stream verstehen und verteilen und eine Webseite mit JavaScript sich am Lync Server auch anmelden können. Aktuell ist WebRTC aber noch weit davon entfernt überhaupt in der SIP-Welt eine Rolle zu spielen.

Erst wenn Hersteller passende Backends bereitstellen und damit WebRTC-Clients mit einbinden können, dann könnte WebRTC interessant z.B. für anonyme Meeting-Teilnehmer interessant werden. Mit dem passenden Browser müsste der Anwender kein Lync Plugin für Audio/Video mehr installieren und könnte eventuell auch auf "nicht Windows"-Plattformen arbeiten.

Insofern kann ich die ein oder anderen hämischen Kommentare verschiedener Computer-"Fach"-Zeitschriften nicht ganz nachvollziehen, die über eine noch fehlenden WebRTC Unterstützung im Internet Explorer herziehen. Es gibt schlicht nicht allzu viele Anwendungen dafür, solange Skype, Facetime, Hangout und andere Programme funktionieren.

Weitere Links