computer:voip

Voice over IP (VoIP)

Unter Internet-Telefonie bzw. IP-Telefonie (Internet-Protokoll-Telefonie; auch Voice over IP (VoIP) versteht man das Telefonieren über Computernetzwerke, die nach Internet-Standards aufgebaut sind. Dabei werden für Telefonie typische Informationen, d. h. Sprache und Steuerinformationen für z. B. den Verbindungsaufbau, über ein auch für Datenübertragung nutzbares Netz übertragen. Bei den Gesprächsteilnehmern können sowohl Computer, für IP-Telefonie spezialisierte Telefonendgeräte, als auch über spezielle Adapter angeschlossene, klassische Telefone die Verbindung ins Telefonnetz herstellen.

Augenscheinlichster Unterschied ist der Wechsel von exklusiv geschalteten Verbindungen des alten geschlossenen Telefonnetzes in ein öffentliches (und feindliches/unsicheres) Netz mit Schwankendem Verkehrsaufkommen. Daraus ergeben sich viele Vor- und Nachteile.

  • Ortsunabhängig
  • kostengünstig
  • flexibel, man ist weltweit erreichbar
  • viele intelligente Funktionen integrierbar
  • Telefonieren/Erreichbarkeit über PC/Laptop
  • ggf. erhöhte Sicherheit und Zusatzleistungen wie Fax, SMS

ansonsten kann man immer ja noch beim Marketing anhören was noch gut ist :-)

  • Sicherheit: Im SIP-Standard ist an sich erstmal keine Verschlüsselung vorgesehen. D.h. jede Zwischenstation kann das Gespräch mithören. Das ist besonders unterwegs, z.B. an öffentlichen (Wlan-) Hot-spots ein Problem, zu Hause beim gleichen Provider für DSL und VoIP ist das weniger kritisch, zumindest bei entsprechender Wlan-Absicherung (WPA/WPA2, nicht WEP!).
    • neue Angriffsarten auf Telefonie: Wie hier im Vortrag ("VoIP Security Threats") z.B. DoS, SPIT, Gespräche abbrechen, Telefone abmelden, Gespräche aufzeichnen.
    • Firewalls können zu lange (für die zeitkritische Telefonie) bei der Inspektion brauchen, Voice-Proxies können dabei die Lösung sein. siehe auch: Sichere Nutzung von VoIP
  • Ausnutzen von Sicherheitslücken in Implementationen von Telefonen und VoIP-Software durch Exploits
  • Kapern von Benutzerdaten und Anrufen („Registration- bzw. Call-Highjacking“): Dabei wird die IP-Adresse eines IP-Telefons auf eine IP-Adresse des Hackers umgeleitet/umkonfiguriert.
  • SPIT („Spam over Internet Telephony“): Die Gefahr von SPAM in Form von Werbeanrufen ist nicht zu unterschätzen. Ähnlich der eMail ist SPIT kostengünstig zu realisieren und wird derzeit noch durch die Verwendung von SIP-Proxies umgangen: Eine Signalisierung von andere Rechner über SIP wird als Spam behandelt.
  • Verfügbarkeit: Da die Telefonie Bandbreitenschwankungen unterliegt (wie andere Netzverkehr auch) müssen beteiligte Router die zeitkritischen Sprachdaten priorisieren (traffic-shaping).
    • hohe Anforderungen an das IP-Netz, eine Störung der Internetverbindung heißt eben auch, dass kein Kunde mehr anrufen kann.
  • Sprachqualität hängt vom verwendeten Codec ab, gerade bei konkurrierenden Uploads an langsamen DSL-Anschlüssen könnten Qualitätseinbußen stören.
    • Jitter: Genauigkeits- bzw. Laufzeitschwankungen bei der Übertragung von Datensignalen. Da Datenpakete auch andere Wege zum Ziel nehmen können (je nach aktueller Belastung und anderen Faktoren) kann man nie ganz genau sagen, wie viel Zeit die Übertragung beansprucht. Deshalb werden Datenpakete zwischengespeichert („gepuffert“), überlicherweise im Bereich von 40-60 ms.
    • Paketverluste: Durch die Übertragung mit UDP können Paketverluste auftreten die allerdings erst in größerer Menge, bei sehr schlechten Internet-Verbindungen, ein Problem werden.

Anhand des Providers carpo.de wird hier die Konfiguration eines VoIP-(Soft-)-Phones erklärt.

  • Benutzername und Passwort sind richtig einzutragen
  • Bei VoIP-Verbindungen treten oft Probleme mit NATs auf. Um diese zu umgehen setzen viele SIP-Provider das Protokoll STUN (Simple traversal of UDP over NATsSTUN ein. Durch einfaches Weiterleiten von UDP-Paketen über NAT) kann der Client die vom NAT vergebene IP- und Portnummer ermitteln. Beispiel: stun.sipgate.net auf Port 10000.
  • Registrar: Das ist der Server des Anbieters der die Endgeräte verwaltet, also welche IP man aktuell hat usw. Auf Wunsch kann ein Registrar anderen Nutzern mitteilen, ob man gerade erreichbar ist. Durch die Anmeldung an einem Registrar ist man an jedem Ort unter der gleichen SIP-Adresse erreichbar. Anrufe erfolgen auf sip:<Benutzername>@<Registrar>.
  • Internet Realm: steht für die Domain der SIP-Adresse (URI) beispielweise @carpo.de

Zwar gibt es die Möglichkeit Verschlüsselung einzusetzen, dennoch wird diese Möglichkeit von vielen Anbietern aus Kostengründen nicht unterstützt. Zusätzlich sollte der Datenkanal mit SRTP (Secure Real-Time Transport Protocol) abgesichert sein.

  • TLS ermöglicht eine hop-by-hop Verschlüsselung von SIP (nicht RTP).
  • SIPS ermöglicht eine end-to-end Verschlüsselung von SIP (nicht RTP). Der Verbindungspfad bleibt nach aussen sichtbar. Interessant für Authentifizierung und MIKEY (siehe unten).
  • SRTP ermöglicht eine end-to-end Verschlüsseung von RTP. Es wird mit symetrischen, statischen Keys gearbeitet.
  • MIKEY ermöglicht dynamische Keys mit SRTP.

Falls der aktuelle Anbieter keine der Möglichkeiten unterstützt, kann man derzeit nur

  1. einen Anbieterwechsel zu einem Anbieter mit TLS/ZRTP-abgesicherten Verbindungen vornehmen
  2. eine (Teil-)Absicherung durch VPN in ein bekanntes Netz durchführen und von da aus unverschlüsselt weitersenden
  3. mit proprietären Lösungen (Zu Skype siehe unten) arbeiten
  4. oder zusätzlich aufgesetzter Sicherheit, z.B. mit ZRTP arbeiten.
  • Skype (s.u.)
  • OpenWengo: OpenWengo ist im Gegensatz zu Skype eine freie Software unter der GPL. Es ist für Linux, Windows und Mac erhältlich, sogar als Firefox-Plugin. Siehe OpenWengo Homepage
  • X-Lite: X-Lite ist für Linux, Windows und Mac erhältlich, X-lite Download.
  • Starface (kommerziell), es gibt eine Home Edition mot max. 4 Benutzer und max. 2 ausgehenden Anrufen auf der Starface Homepage.

Skype ist eine kostenlose aber proprietäre Software (man weiß also nicht wirklich was da alles so drin ist, da Skype-Software auch sehr große Anstrengungen unternimmt den Code geheim zu halten). Auch das Kommunikationsprotokoll ist proprietär, demzufolge ist eine eine Kommunikation mit anderen standardkonformen Clients nach dem SIP-Standard nicht möglich. Durch proprietäre Lösungen, also vorrangig Skype, ist man aber auf diese Software als VoIP-Gegenstelle beschränkt (es sei denn man lässt das Gespräch über das Festnetz laufen) und kann

Skype arbeitet immerhin mit starker Verschlüsselung (Offiziell mit 256Bit bzw. 1024Bit RSA beim Aushandeln des Schlüssels), nachprüfen kann man dies natürlich nicht, der Dienst ist etabliert, zudem kommt Skype an so ziemlich jeder Firewall vorbei. Leider sind aber auch Störungen und Qualitätsmängel im Skype-Netz nicht allzu selten.

SIP Skype
offener Standard proprietär
beliebige Clients; freie Software verfügbar nur Skype-eigener Client; fragwürdige Lizenz
Computer nicht erforderlich Computer erforderlich
NAT-Umgehung muss konfiguriert werden fragwürdige Technik für NAT-Umgehung
Verschlüsselung optional Verschlüsselung automatisch
kein globales Benutzerverzeichnis globales Benutzerverzeichnis
kostenlose Gespräche zu vielen SIP-Anbietern, es muss ein kostenlose Gespräche nur zu anderen Skype-Nutzern

Bekannte Softwarevermittlungsanlagen sind

  • asterisk (SIP-fähige Hauszentralensoftware, eierlegende Wollmilchsau, Kann verschiedene VoIP-Protokolle vermitteln (auch untereinander), hohe Verbreitung, daher auch guter Support, komplexe Situationen sind teils mühsam zu konfigurieren)
  • OpenSer (Mächtiger, gut skalierender Allzweck-SIP-Proxy; Konfiguration sehr low-level (eher eine high-level Programmiersprache), gute SIP-Kentnisse für eine saubere Konfiguration von Hand erforderlich, eine gewisse Frustresistenz ist beim erstmaligen Einrichten von Nutzen, RTP-Proxy, Voicemail, Gateway etc. über Zusatzprogramme)
  • PartySIP (einfacher SIP-Proxy mit Registrar; zum Aufbau kleiner, privater SIP-Netze geeignet, nicht NAT-fähig, Portforwarding automatisch mittels „iptables“ (ähnlich UPnP)
  • Siproxd (Einfacher SIP/RTP-Proxy mit Registrar, Zum Aufbau kleiner, privater SIP-Netze geeignet, als interner (nicht externer!) SIP/RTP-Proxy zur Überwindung eines NAT geeignet, als transparenter Proxy konfigurierbar)

Bei Voice-over-Internet-Protocol (VoIP) wird Sprache über IP-Datenpakete abgewickelt. Die Verbindungen werden über ein Signalisierungsprotokoll (meist SIP, andere wie H.323 oder IAX möglich) und anschließend über den Audiocodec (RTP) realisiert.

SIP ist das „Session Initiation Protocol“.

Die eigentliche Sprachverbindung erfolgt über Streams mittels RTP, dem „Realtime Transport Protocol“.

Es ist für den Aufbau, Abbau und die Steuerung von Verbindungen zuständig.

SIP (Session Initiation Protocol) ist ein einfaches Netzprotokoll (durch RFC 3261 beschrieben) zum Aufbau, zur Steuerung und zum Abbau einer Kommunikationssitzung zwischen zwei und mehr Teilnehmern. Es wurde von der Internet Engineering Task Force (IETF) entwickelt und ist dadurch nicht an einen bestimmten Hersteller gebunden. Diese herstellerunabhängige Standardisierung ermöglicht den Einsatz von SIP-basierten Systemen in heterogenen Umfeldern, insbesondere auch in der Kopplung von VoIP-Komponenten unterschiedlicher Hersteller. Grundsätzlich eignet sich SIP allerdings auch für Einsatzszenarien außerhalb von VoIP.

  • Es folgt einem Schema ähnlich zu HTTP, auch die SIP-Statuscodes und Fehlermeldungen folgen diesem Schema.
  • Normalerweise benutzt SIP die Ports 5060 (TCP/UDP) bzw. 5061 (TCP/UDP; bei TLS-Verschlüsselung: SIPS)
  • SIP kann über IPv4 oder IPv6 und TCP oder UDP benutzen. Die verbreiteten Implementierungen nutzen IPv4 and UDP.
  • SIP kann auch Videoverbindungen und Instant messaging-Dienste vermitteln.
  • SIP Trunking: SIP Trunking nennt man die Verbindung einer TK-Anlage über VoIP mit dem Festnetz (PSTN). Dabei soll sich der Anschluss hinsichtlich Möglichkeiten und Leistungsmerkmale nach außen wie ein herkömmlicher Telefonanschluss verhalten.

Funktionen von SIP

Funktion Beschreibung
Lokalisierung und Registrierung des Benutzers Endpunkten (bzw. Endgeräte wie Telefone) benachrichtigen des SIP-Proxy über ihren Standort; SIP bestimmt welche Endpunkte in einem Anruf beteiligt sind.
Erreichbarkeit des Benutzers SIP wird von den Endgeräten benutzt um zu bestimmen ob abgenommen wird.
Fähigkeiten des Endgerätes SIP wird zur Bestimmung der Fähigkeiten, d.h. welche Codecs (s.u.) ein Gerät unterstützt. Dabei kann nur die Schnittmenge der Codecs benutzt werden.
Sitzungsaufbau SIP signalisiert dem Endgerät wann es „läuten“ soll, also ein Anruf erfolgt. Es wird auch für die Aushandlung der Sitzungsattribute (z.B. verwendete Codecs) verwendet.
Sitzungsverwaltung SIP wird für die Übertragung und Beendigung von Anrufen und die für die Änderung von Gesprächsparametern während der Sitzung (z.B. bei einer dreier Konferenz) benutzt.

WHAT IS SIP: INTRODUCTION

Verbindungsaufbau

FIXME

Schema: SIP Signalisierungs; Lizenz: Public Domain

Auch VoIP benötigt Teilnehmerkennungen, die für die Adressierung einer Gegenstelle, die man anrufen möchte, verwendet werden können. Das SIP-Protokoll verwendet URIs (Uniform Resource Identifiers), die eine Nutzerkennung und eine Domain enthalten. SIP-URIs sind ähnlich aufgebaut wie und in vielen Fällen gleichnamig mit E-Mail-Adressen im Internet.

Beispiele:

  • sip:62200222@sipgate.de
  • sip:Benutzername@EigeneDomain.tld
  • sip:julia.mustermann@uni-stuttgart.de
  • sip:nana@192.168.0.28
  • sip:gandalf@10.0.0.2:5070
  • sip:10.0.0.30

Ein SIP-Client (z.B. ein IP-Telefon oder ein VoIP-Gateway) verwendet diese URIs, um einen Server zu identifizieren, über den der genannte User erreicht werden kann. Erhält der SIP-Client diese Informationen, so kann ein Anruf an die Gegenstelle erfolgen.

Parallel dazu werden auch gewöhnliche Telefonnummern verwendet, die über ENUM auf SIP-URIs abgebildet werden können. Erfolgt also ein Anruf von einem VoIP- und ENUM-fähigen Telefon, so kann dieser direkt und kostenfrei durchgeführt werden. Erfolgt der Anruf über Festnetz, so muß ein Provider diesen auf der jeweiligen Festnetznummer entgegennehmen und als SIP-Anruf weiterleiten. Die Technik hierzu ist in einem separaten Artikel über ENUM-Einträge dargestellt.

Analog werden so auch Anrufe, die per VoIP getätigt werden, jedoch als Gegenstelle eine klassische Festnetznummer haben, von einem Provider weitergeleitet. Diese Weiterleitung wird auch als „Termination Service“ bezeichnet.

an Festnetznummer an VoIP (SIP-URI)
von Festnetznummer kostenpflichtig
über das Festnetz
kostenpflichtig
über einen VoIP-Provider
von VoIP (SIP-URI) kostenpflichtig
über einen VoIP-Provider
kostenfrei und direkt
über das Internet

Das Schöne daran ist, daß Anrufe von SIP-URI zu SIP-URI über das Internet für beide Parteien kostenlos sind.

SIP URIs im Detail

SIP URIs verwenden eine URI-Syntax, die eine Reihe optionaler Parameter erlaubt:

proto:[user[:password]@]host[:port][;params][?headers]
  • proto: Das zu verwendende Protokoll sip oder sips. SIPS verwendet Verschlüsselung im Gegensatz zu SIP.
  • user: Eine eindeutige Identifikation des Angerufenen auf dem Zielsystem. Sofern das Zielsystem keine Nutzer unterscheidet, kann die Angabe auch entfallen. Ein Passwort kann in diesem Fall nicht mit angegeben werden.
  • password: Ein Passwort wird i.a. nicht angegeben, sondern über die Authentifikation im SIP-Protokoll selbst ausgetauscht. Im Falle von SIP (unverschlüsselt) wäre die Übermittlung von Passworten auf diesem Wege höchst unsicher.
  • host: Eine IP-Adresse oder ein Domainname, der eine Domain oder ein Zielsystem identifiziert. Die Bestimmung des tatsächlichen SIP-Servers, der durch die URI referenziert wird, erfolgt ggf. anhand von DNS-Lookups von SRV-Records.
  • port: Eine Portnummer, an die die Anfrage zu senden ist. Ist ein Port angegeben, so wird gewöhnlich kein SRV-Lookup durchgeführt und im „host“ Feld wird der Name eines Zielsystems erwartet.
  • params: Weitere SIP-Paramter können direkt in der URI spezifiziert werden. Dies ist jedoch unüblich und erfolgt i.a. in den SIP-Paketen selbst.
  • headers: Weitere SIP-Header können direkt in der URI spezifiziert werden. Dies ist jedoch unüblich und erfolgt i.a. in den SIP-Paketen selbst.

Das Real-Time Transport Protocol (RTP) ist ein Protokoll zur kontinuierlichen Übertragung von audiovisuellen Daten (Streams) über IP-basierte Netzwerke. Das Protokoll wurde erstmals 1996 im RFC 1889 standardisiert. 2003 wurde ein überarbeiteter RFC veröffentlicht. Der RFC 3550 löst damit den RFC 1889 ab.

Es dient dazu, Multimedia-Datenströme (Audio, Video, Text, etc.) über Netzwerke zu transportieren, d.h. die Daten zu kodieren, zu paketieren und zu versenden. RTP ist ein Paket-basiertes Protokoll und wird normalerweise über UDP betrieben. RTP kann sowohl für Unicast-Verbindungen als auch für Multicast-Kommunikation im Internet eingesetzt werden. Das RealTime Control Protocol arbeitet mit RTP zusammen und dient der Aushandlung und Einhaltung von Quality of Service (QoS) Parametern.

Sprachsignale werden für VoIP aus der analogen Signalform digital codiert, übertragen und von der Gegenstelle decodiert. Die hierzu verwendeten Codecs bestimmen einerseits das Format der Codierung von Sprachdaten in den übertragenen RTP-Paketen, andererseits ergibt sich dadurch auch die erforderliche Bandbreite.

Gibt es keine gemeinsame Schnittmenge von Codecs bei zwei Endgeräten, die eine Verbindung aufbauen möchten, so ist eine Kommunikation nicht möglich.

Eine aktuelle Liste aller offiziell registrierten Codecs findet sich bei IANA. Einzelne Provider oder spezifische Endgeräte können abweichend davon bzw. in Ergänzung auch weitere Codecs anbieten.

Welche Provider welche Codecs unterstützen, ist in der Liste „Codecunterstützung durch VoIP-Provider“ des IP-Phone Wikis aufgeführt.

Die gebräuchlichsten Codecs sind die folgenden:

Codec Sample
[bits]
Sample
[ms]
Bitrate
[kbit/s]
Samples
je Paket
Pakete/s Bandbreite
[kbit/s]
Gespräche
128/256
G.722 640 10 64,0 2 50,0 87,2 1/2
G.7111) 640 10 64,0 2 50,0 87,2 1/2
G.729 80 10 8,0 2 50,0 31,2 4/8
G.723 192 30 6,4 1 33,3 21,9 5/11
G.723 160 30 5,3 1 33,3 20,8 6/12
G.726 2) 200 5 40,0 4 50,0 63,2 2/4
G.726 160 5 32,0 4 50,0 55,2 2/4
G.726 120 5 24,0 4 50,0 47,2 2/5
G.726 80 5 16,0 6 33,3 31,5 4/8
G.729 ? ? ? ? ? ? ?
GSM 264 20 13,2 1 50,0 36,4 3/7
iLBC 400 30 13,3 1 33,3 28,8 4/8
iLBC 304 20 15,2 1 50,0 38,4 3/6

Dabei wurde für die Bandbreitenberechnung ein Ethernet-Overhead von 58 Bytes berücksichtigt (18 Bytes Ethernet Header, 20 Bytes IP-Header, 8 Bytes UDP-Header, 12 Bytes RTP-Header).

PCMA bzw. PCMU entsprechen den Angaben von G.711.

G.722 entspricht in den Bandbreitenanforderungen G.711, verwendet jedoch eine andere Codierung. Bei G.711 wird mit 8 kHZ (8 Bit) abgetastet, während G.722 16 kHz (7 Bit) verwendet. Dadurch ist die Samplequalität höher und der Codec erreicht eine gering bessere Qualität als G.711.

Für Fax over IP (T.38 = T.30 over IP) werden ca. 14,4 kbit/s Payload übertragen.

Die letzte Spalte gibt an, wie viele parallele Gespräche über eine Leitung mit Bandbreite von 128 bzw. 256 kbit/s Upstream geführt werden können. Dies setzt natürlich voraus, daß diese Bandbreite tatsächlich zur Verfügung steht.

Quelle: IP-Phone Wiki gehört zum IP-Phone-Forum.

Aufgrund der IP-Adressenknappheit von IPv4 stecken viele Internetnutzer hinter NATs. D.h. Rechner stecken hinter Firewalls und Routern die die privaten IP-Adressen in öffentliche umsetzten.

  • Problem 1: Ein SIP-Client hinter einem NAT kann keine SIP-Verbindungen empfangen.

Lösung: SIP-Proxy.

  • Problem 2: Ein SIP-Client hinter einem NAT kann keine RTP-Verbindungen empfangen.

Für Problem 2 gibt es mehrere Lösungen mit verschiedenen Vor- und Nachteilen.

NAT-Lösungen
Lösung Vorteile Nachteile
Client ausserhalb des NAT platzieren kein SIP-Proxy nötig Client braucht eine öffentliche IP-Adresse, wenig flexibel
Router mit eingebautem SIP-Client kein SIP-Proxy nötig wenig flexibel
SIP-fähiger Router / Interner SIP/RTP-Proxy: Der Router/Proxy korrigiert die SIP-Packete, und leitet die RTP-Packete weiter. minimaler Aufwand auf ClientseiteRouter/Proxy mit zu schwacher CPU kann den Durchsatz beeinträchtigen
Externer SIP/RTP-Proxy: Der Proxy korrigiert die SIP-Packete, und leitet die RTP-Packete über sich selbst zum jeweiligen Gesprächspartner. minimaler Aufwand auf Clientseite Bandbreitenkosten des Proxy
STUN: Mittels STUN kann der Client die vom NAT vergebene IP- und Portnummer ermitteln. minimaler Aufwand auf Clientseitefunktioniert nicht bei NATs, die für jede Verbindung neue Portnummern vergeben (vor allem „grosse“ Router). Siehe auch STUN-Server aufsetzen.
UPnP: Mittels UPnP kann der Client ein Portforwarding auf dem NAT einrichten.hohe Zuverlässigkeitnur auf „kleinen“ Routern verfügbar, nur wenige UPnP-fähige Clients, Sicherheitsbedenken
TURN: Variante des SIP/RTP-Proxys, die vom Client explizit gesteuert werden kann.hohe Zuverlässigkeit, sauberer und flexibler als normale SIP/RTP-Proxys Bandbreitenkosten des TURN-Servers, nur wenige TURN-fähige Clients

tElephone NUmber Mapping (ENUM) ist eine Anwendung des Domain Name Systems zur Übersetzung von Telefonnummern in Internet-Adressen. ENUM wird im RFC 3761 definiert. Der Bedarf für eine solche Lösung erwuchs aus der Verfügbarkeit von VoIP-Diensten und dem Bedarf des Anwenders, sowohl im Internet als auch im klassischen Telefonnetz unter der selben Nummer erreichbar zu sein.


1)
kennt man von ISDN
2)
Variable Bitrate, kennt man von DECT