Zum Hauptinhalt springen

VoIP Lexikon

Dies soll ein Nachschlagewerk mit kurzen Zusammenfassungen zu VoIP/SIP sein. Anleitungen zur Konfiguration von Endgeräten finden Sie hier.

VoIP / MoIP

VoIP steht für "Voice over IP" und beschreibt eine Möglichkeit, Sprache über ein Computernetzwerk zu übertragen. Es besteht auch die Möglichkeit, Videostreams und Nachrichten zu übertragen, dann spricht man von MoIP („Multimedia over IP“).

VoIP beschreibt verschiedene Techniken der Übertragung, wir konzentrieren uns hier aber auf die Übertragung per SIP-Protokoll.

Netzwerkgrundlagen

Protokolle

IPv4 / IPv6

Das Internet-Protokoll in der Version 4 (IPv4) ist die Basis heutiger IP-Netze und des Internets. Es ist der OSI-Schicht 3 (Vermittlungsschicht, Network Layer) zugeordnet. Eine IPv4-Adresse umfasst 4 Byte, wird aber normalerweise mit vier durch Punkte getrennten Dezimalzahlen mit Werten zwischen 0 und 255 dargestellt. Jede im öffentlichen Internet genutzte IP-Adresse muss weltweit eindeutig sein. Der 4-Byte-Adressraum bietet theoretisch über 4 Milliarden Adressen, effektiv nutzbar sind aber weniger.

Das Internet-Protokoll in der Version 6 (IPv6) wird immer häufiger anstelle von IPv4 eingesetzt. Es ist eine Weiterentwicklung von IPv4, bietet einen massiv erweiterten Adressraum und integrierte Sicherheitsfunktionen.

Obwohl immer mehr moderne VoIP-Endgeräte IPv6 unterstützen, konzentrieren wir uns in diesem Dokument aufgrund der aktuellen Verbreitung vor allem auf IPv4.

Adressen im Internet

Oft wird als Ziel im Internet nur eine IP-Adresse angegeben. Beachten Sie aber, dass eine vollständige Adresse immer auch einen Port beinhaltet (z. B. 192.168.0.11:5060).

Adressen im LAN

Diese Bereiche werden als private Adressbereiche bezeichnet und sind in RFC 1918 spezifiziert. Für die Nutzung im LAN sind folgende IP-Adressbereiche vorgesehen:

10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

Diese sind zwingend zu nutzen, da es sonst zu Adresskonflikten mit öffentlichen Adressen im Internet kommen kann.

TCP

Transmission Control Protocol

TCP ist ein Transportprotokoll und sorgt für eine sichere Ende-zu-Ende-Transportverbindung. Wird der Empfang eines Pakets nicht innerhalb einer bestimmten Zeit (Retransmission Time) quittiert, wiederholt die Quelle das besagte TCP-Segment. Wegen der fehlenden Echtzeitfähigkeit hat das TCP-Protokoll im Zusammenhang mit VoIP nur bei der Signalisierung für Sessions eine gewisse Bedeutung. Ein Einsatz zusammen mit SIP ist nur optional, bevorzugt wird UDP. Für die Übermittlung von Echtzeit-Nutzdaten wie Sprachdatenpaketen ist TCP wegen möglicherweise unzumutbarer Verzögerungen weitgehend ungeeignet.

UDP

User Datagram Protocol

UDP ist ein einfaches Transportprotokoll und sorgt für eine Ende-zu-Ende-Transportverbindung, allerdings ungesichert. Infolge der verbindungslosen, ungesicherten Kommunikation werden UDP-Datagramme so schnell wie möglich, ohne Verzögerung durch z. B. Paketwiederholungen, übermittelt. Daher ist UDP sehr gut geeignet für die Echtzeitkommunikation.

RTP / RTCP

Real-Time Protocol

RTP ist ein Transportprotokoll für die Übertragung von Audio- und Video-Echtzeitdaten. RTP-Pakete werden im Normalfall per UDP transportiert, um Overhead zu vermeiden.

RTP Control Protocol

RTCP ist ein Protokoll zur Kontrolle von RTP-Sitzungen. Es ergänzt RTP, indem es Quality-of-Service-Informationen zwischen Sender und Empfänger austauscht.

SIP

Session Initiation Protocol

Das SIP-Protokoll dient der Übermittlung von Signalisierungsnachrichten für die Etablierung von Kommunikationsbeziehungen („Sitzungen“) im Bereich VoIP. Die Medienformen im Rahmen einer Sitzung (VoIP, „Video over IP“ oder sonstige Multimedia-Anwendungen) sowie die zur Codierung und Decodierung der Multimedia-Daten notwendigen Parameter (z. B. verwendete Codecs) werden im Rahmen von SIP-Nachrichten ebenso übertragen wie Teilnehmer- und Signalisierungsinformationen. SIP stellt unter Zuhilfenahme des unterstützenden Protokolls SDP die komplette Kommunikationsbasis für den Auf- und Abbau sowie für das Ändern einer bestehenden Sitzung zur Verfügung und bietet somit, im Vergleich zur H.323-Protokollsammlung (ISDN), den entscheidenden Vorteil der einfachen Handhabung, der leichten Erweiterbarkeit sowie der Übersichtlichkeit.

SIP kann wahlweise per UDP oder TCP transportiert werden. Da SIP als Vermittlungs- und Signalisierungsprotokoll selbst Handshake-, Wiederholungs- und Timeout-Verfahren als Massnahmen zur Kommunikationssicherung einsetzt und somit verbindungsorientiert arbeitet, besteht keine Notwendigkeit zur Nutzung eines verbindungsorientiert arbeitenden Transportprotokolls. Üblicherweise wird aus diesem Grund das verbindungslose UDP als Transportprotokoll für SIP verwendet. Dieses bietet im Gegensatz zu den verbindungsorientiert arbeitenden Protokollen TCP und SCTP den Vorteil, dass weder ein zusätzlicher Verbindungsaufbau vor dem SIP-Signalisierungsdatenaustausch noch eine Flusskontrolle währenddessen erfolgen muss. Hieraus ergeben sich Einsparungen in Bezug auf Zeit und Datenverkehrsaufkommen bei der Verwendung von UDP als Transportprotokoll für SIP.

Da SIP bezüglich seines Nachrichtenaufbaus in grossen Teilen auf dem HTTP-Standard basiert und die SIP-Nachrichten unter Verwendung des ASCII-kompatiblen UTF-8-Zeichensatzes (Universal Character Set Transformation Format) übertragen werden, sind für ihre schriftliche Darstellung keine besonderen Decoder nötig.

SDP

Session Description Protocol

SDP dient der Beschreibung von Medien, die im Rahmen einer „Multimedia over IP“-Sitzung übertragen werden. Hierbei werden neben den Medientypen (Audio, Video etc.) auch die Kontaktparameter (IP-Adresse und Port) sowie die verfügbaren Codecs (G.722, G.711, H.264 etc.) übermittelt. Es wird im Body des SIP-Paketes übertragen.

STUN

Session Traversal Utilities for NAT

Mithilfe des STUN-Protokolls können in privaten Netzen angesiedelte Endgeräte die jeweils für sie im öffentlichen Netz gültigen Kontaktdaten ermitteln und selbstständig in SIP-Header-Feldern und SDP-Parametern eintragen.

STUN zu aktivieren, ist aber nur nötig, wenn vom Provider angegeben; im Normalfall benötigt man dies nicht.

DNS

Domain Name System - das Telefonbuch des Internets

DNS ist ein hierarchisch verteiltes Namenssystem, das verwendet wird, um Domainnamen (z. B. example.com) in IP-Adressen (z. B. 192.0.2.1) und umgekehrt zu übersetzen. Es spielt eine entscheidende Rolle dabei, Benutzern den Zugriff auf Ressourcen im Internet unter Verwendung von menschenlesbaren Domainnamen anstelle von numerischen IP-Adressen zu ermöglichen.

Im DNS-Auflösungsprozess sendet eine Anwendung, wenn ein Benutzer einen Domainnamen in einen Webbrowser oder eine andere Netzwerkanwendung eingibt, eine DNS-Anfrage an einen DNS-Resolver, der in der Regel von dem Internetdienstanbieter (ISP) des Benutzers oder einem öffentlichen DNS-Resolverdienst bereitgestellt wird. Der Resolver leitet dann den Auflösungsprozess ein, indem er autoritative DNS-Server abfragt, um die entsprechende IP-Adresse für den angegebenen Domainnamen zu erhalten.

Die DNS-Hierarchie besteht aus verschiedenen Arten von DNS-Servern, einschliesslich:

  • Root-DNS-Server: Diese Server befinden sich an der Spitze der DNS-Hierarchie und verweisen auf Top-Level-Domain (TLD)-DNS-Server.
  • Top-Level-Domain (TLD)-DNS-Server: Diese Server sind für die Verwaltung von Domainnamen innerhalb bestimmter Top-Level-Domains wie .com, .org, .net und länderspezifischen TLDs wie .ch, .at, .de usw. verantwortlich.
  • Authoritative DNS-Server: Diese Server speichern DNS-Einträge (wie A-Einträge, AAAA-Einträge, MX-Einträge usw.) für spezifische Domainnamen und sind dafür verantwortlich, autoritative Antworten auf DNS-Anfragen bereitzustellen.

DNS arbeitet über UDP oder TCP auf Port 53. UDP wird typischerweise für DNS-Anfragen verwendet, während TCP für grosse DNS-Antworten oder Zonentransfers verwendet wird.

Insgesamt ist DNS eine grundlegende Komponente der Internetinfrastruktur, die wesentliche Namensauflösungsdienste bereitstellt, welche eine nahtlose Kommunikation und den Zugriff auf Online-Ressourcen ermöglichen.

NAT / PAT

Network Address Translation / Port Address Translation

NAT wurde eingeführt, um der Adressknappheit im IPv4-Raum zu begegnen. Mit NAT braucht nicht mehr jedes Endgerät eine im öffentlichen Internet erreichbare IPv4-Adresse, sondern nur noch jedes Netzwerk. Die im Netzwerk verbundenen Endgeräte kommunizieren dann über eine gemeinsame öffentliche IP-Adresse.

Umgesetzt wurde dies, indem ein Router die Source-Adresse der Netzwerkpakete ändern kann. So sieht ein Ziel im Internet als Absenderadresse der empfangenen Pakete nicht die lokale Adresse des sendenden Gerätes, sondern die öffentliche Adresse des Routers. Damit der Router die empfangenen Antworten aus dem Internet dem richtigen lokalen Gerät zuordnen kann, speichert der Router diese Daten in einer NAT-Tabelle.

Damit NAT-Tabellen nicht unendlich gross werden, versieht der Router alle Einträge in der NAT-Tabelle mit einer Gültigkeitsdauer. Ist diese Zeit erreicht und wurden so lange keine Daten mehr über die gespeicherte Verbindung übertragen, löscht der Router die Einträge.

PAT wird leider im Zusammenhang mit NAT oft vergessen. Wenn der vom sendenden Endgerät genutzte Port (bei SIP normalerweise 5060) auf der WAN-Seite schon genutzt wird, muss der Router nicht nur die IP-Adresse zur WAN-Adresse ändern, sondern er muss auch den Port der Source-Adresse zu einem ungenutzten Port ändern. So kann es vorkommen, dass ein SIP-Paket vom Endgerät mit der Source-Adresse 192.168.0.11:5060 versendet wird, die Adresse aber vom Router zu 80.70.60.51:1024 angepasst wird.

CGNAT

Carrier-Grade NAT

CGNAT, auch bekannt als Large-Scale NAT oder NAT444, ist eine Netzwerkadressübersetzungstechnik (NAT), die von Internetdienstanbietern (ISPs) verwendet wird, um die Knappheit öffentlicher IPv4-Adressen zu verwalten und die wachsende Anzahl von mit dem Internet verbundenen Geräten zu unterstützen.

Bei einer CGNAT-Bereitstellung erhalten mehrere Kunden innerhalb eines ISP-Netzwerks private IP-Adressen aus einem gemeinsamen Pool von Adressen (typischerweise im RFC 1918-Bereich: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 oder im RCF 6598 Bereich 100.64.0.0/10). Diese privaten IP-Adressen werden für die Kommunikation innerhalb des ISP-Netzwerks verwendet, können jedoch nicht direkt aus dem öffentlichen Internet erreicht werden.

Wenn ein Gerät innerhalb des ISP-Netzwerks eine Kommunikation mit einem Ziel im Internet initiiert, z. B. den Zugriff auf eine Website oder die Verbindung zu einem Server, führt das CGNAT-Gerät eine Adressübersetzung auf den ausgehenden Paketen durch. Es ersetzt die private Quell-IP-Adresse des Pakets durch eine öffentliche IP-Adresse aus dem Pool des ISPs und führt eine Zuordnungstabelle, um die Übersetzung zu verfolgen.

Ebenso führt das CGNAT-Gerät beim Empfang eingehender Pakete aus dem Internet, die für ein Gerät innerhalb des ISP-Netzwerks bestimmt sind, eine umgekehrte Adressübersetzung durch. Es ersetzt die öffentliche Ziel-IP-Adresse durch die entsprechende private IP-Adresse, bevor es das Paket an den beabsichtigten Empfänger weiterleitet.

Vorteile von CGNAT sind:

  • Konservierung von IPv4-Adressen: CGNAT ermöglicht es ISPs, öffentliche IPv4-Adressen zu konservieren, indem mehrere Kunden hinter einer einzelnen öffentlichen IP-Adresse multiplexiert werden.
  • Skalierbarkeit: CGNAT ermöglicht es ISPs, eine grosse Anzahl von mit dem Internet verbundenen Geräten innerhalb ihres Netzwerks zu unterstützen, während die Erschöpfung des öffentlichen IPv4-Adressraums minimiert wird.

Nachteile von CGNAT sind:

  • Begrenzte Portverfügbarkeit: CGNAT kann die Verfügbarkeit von Ports für bestimmte Anwendungen und Dienste einschränken und möglicherweise Probleme bei der Peer-to-Peer-Kommunikation, beim Online-Gaming und anderen Anwendungen verursachen, die bestimmte Portkonfigurationen erfordern.
  • Auswirkungen auf die Peer-to-Peer-Kommunikation: CGNAT kann die Peer-to-Peer-Kommunikation und bestimmte Netzwerkprotokolle beeinträchtigen, die auf End-to-End-Konnektivität angewiesen sind, da es eine zusätzliche Ebene der Adressübersetzung einführt und eingehende Verbindungen einschränken kann.
  • Komplexität: Die Verwaltung und Fehlerbehebung von CGNAT-Bereitstellungen kann komplex sein, insbesondere in grossen Netzwerken mit einem hohen Datenverkehrsvolumen und dynamischen Adresszuweisungen.

Insgesamt spielt CGNAT eine entscheidende Rolle bei der Verlängerung der Lebensdauer von IPv4 und ermöglicht es ISPs, Internetzugang für eine wachsende Anzahl von Abonnenten bereitzustellen, während die Einschränkungen durch die Erschöpfung von IPv4-Adressen angegangen werden.

SIP-ALG

Da SIP-Endgeräte normalerweise in einem LAN installiert sind, kennen sie nur die interne IP-Adresse des Netzwerks, nicht aber die WAN-Adresse, über die die Pakete zum Provider gesendet werden. Darum können die Endgeräte nur die interne IP-Adresse in die SIP-Pakete schreiben. Das hat einige Router- und Firewall-Hersteller dazu gebracht, auf ihren Produkten eine Funktion zu implementieren, welche die interne IP-Adresse in den SIP-Paketen durch die WAN-Adresse des Anschlusses ersetzt. Die Idee war, dass dann in den SIP-Paketen die Adresse eingetragen ist, zu der der Provider die eingehenden Anrufe senden kann. Doch leider haben die meisten Router- und Firewall-Hersteller nur das Ersetzen der IP-Adresse implementiert. Aber wie unter „Adressen im Internet“ beschrieben gehört auch der Port zur Adresse, nicht nur die IP. Wenn nun nämlich der Router oder die Firewall gleichzeitig mit PAT den Port ersetzen und mit SIP-ALG die IP ersetzen, ist am Ende eine falsche Adresse in den SIP-Paketen eingetragen.

Darum empfiehlt sipcall, SIP-ALG immer zu deaktivieren. Auf den sipcall-Servern ist eine NAT-Erkennung aktiviert, welche die privaten IP-Adressen in den SIP-Paketen erkennt und sich dann entsprechend verhält.

Leider haben einige Mobilfunkprovider SIP-ALG im CGNAT aktiv. Sollte dies der Fall sein und der Mobilfunkanbieter möchte es nicht deaktivieren, können Sie im Endgerät das Transportprotokoll auf TCP ändern. Oft werden TCP-Pakete von SIP-ALG nicht manipuliert, sondern nur UDP-Pakete.

NAT Keepalive

Um den Konfigurationsaufwand für die Benutzenden so gering wie möglich zu halten, wurde VoIP so entwickelt, dass man für die eingehende Erreichbarkeit keine Portweiterleitungen im Router einrichten muss. VoIP-Endgeräte bringen die Technik „NAT Keepalive“ mit. Ist „NAT Keepalive“ auf einem Endgerät aktiv, sendet das Endgerät in regelmässigen Abständen ein leeres Paket zum konfigurierten SIP-Server. Durch dieses Paket wird in der NAT-Tabelle des Routers der Eintrag für die Verbindung „am Leben erhalten (keep alive)“, über die eingehende Anrufe geroutet werden.

RTP Keepalive

Wegen der Situation mit NAT bei den Kunden wartet der SIP-Server mit dem Zustellen der RTP-Streams, bis vom Endgerät des Kunden ein RTP-Stream zu unserem Server gesendet wird. Denn erst durch das Hinaussenden des RTP-Streams wird eine Verbindung durch das NAT geöffnet, über die dann der eingehende RTP-Stream zum Endgerät geroutet wird. Wird nun auf einer PBX anstelle eines Endgeräts eine Weiterleitung nach extern eingerichtet, hat die PBX keinen RTP-Stream vom Endgerät, um ihn hinauszusenden. Und der SIP-Server stellt die RTP-Streams auf der eingehenden und auf der ausgehenden Seite des weitergeleiteten Anrufs nicht zu, da keine Verbindungen durch das NAT geöffnet sind. In diesem Fall muss RTP-Keepalive aktiviert werden, damit die PBX RTP-Pakete generiert und hinaussendet und so eine Verbindung durch das NAT öffnet. Sobald der SIP-Server die leeren RTP-Pakete vom RTP-Keepalive erhält, weiss der Server, dass die Verbindung durch das NAT offen ist, und stellt die RTP-Streams der beiden Seiten zu.

QoS

Bei Sprachkommunikation geht man von einer guten Qualität aus, wenn die Signalverzögerung (Mund zu Ohr in einer Übertragungsrichtung) unter 200 ms bleibt. 200–300 ms gelten noch als gut, 300–400 ms als gerade noch akzeptabel. Oberhalb von 400 ms ist die Verständlichkeit nicht mehr ausreichend.

Bei heutigen Netzwerken ist die Übertragungskapazität so hoch, dass keine Verzögerungen zur normalen Laufzeit der Pakete hinzukommen sollten. Dann bleibt die Signalverzögerung in etwa bei der Signallaufzeit, welche im Normalfall unter 100 ms beträgt.

Sollte die Signalverzögerung zu hoch sein, deutet dies auf ein Problem im Netzwerk hin, z. B. ein zu geringer NAT-Durchsatz der Firewall. Dann ist es sinnvoller, das Problem zu lösen, z. B. durch eine Firewall mit mehr Performance, als mit QoS-Einstellungen zu versuchen, die RTP-Pakete des Audiostreams zu priorisieren. Nur wenn keine weiteren Optimierungsmöglichkeiten im Netzwerk mehr vorhanden sind, kann mit QoS-Einstellungen im Netzwerk versucht werden, Echtzeitdaten zu priorisieren.

Sollten sich aber mehrere Echtzeitstreams gegenseitig ausbremsen, kann man auch mit QoS nichts mehr korrigieren.

OSI-Modell / DoD-Modell

Es gibt mehrere Referenzmodelle, um Netzwerkprotokolle verschiedenen Schichten im Netzwerk zuzuordnen. Das bekannteste Modell ist das OSI-Modell mit 7 Schichten; Wireshark nutzt zur Darstellung das DoD-Modell.

OSI-Modell

SchichtBezeichnungProtokolle
7Application-LayerBrowser, E-Mail, Instant Messaging
6Presentation-LayerÜbersetzer zwischen verschiedenen Datenformaten
5Session-LayerRPC, HTTP, FTP, SIP, SDP, RTP
4Transport-LayerTCP, UDP
3Network-LayerIP, IPX
2Datalink-LayerMAC
1Physical-LayerEthernet

DoD-Modell

SchichtBezeichnungProtokolle
4ProcessHTTP, SMTP, FTP, Telnet, SSH
3Host-to-HostTCP, UDP
2InternetIP, IPX
1Network AccessEthernet

Firewall

Da die von den Endgeräten genutzten Ports dynamisch ausgehandelt werden, ist es nicht möglich, mit klassischen Portweiterleitungen die Endgeräte für eingehende Anrufe aus dem Internet erreichbar zu machen. Aus diesem Grund empfehlen wir, die Firewall-Konfiguration nicht portbasiert, sondern IP-adressbasiert anzulegen. Erlauben Sie allen ein- und ausgehenden Traffic von und zu unseren SIP-Servern. Welche IP-Adressen sipcall verwendet, finden Sie hier.

SIP-Requests

  • REGISTER:
    • Registrierung eines Clients am Registrar
  • INVITE:
    • Einladen eines SIP-Teilnehmers zu einer Sitzung
  • re-INVITE:
    • Ändern einer bestehenden Sitzung
  • ACK:
    • Bestätigung eines INVITEs
  • CANCEL:
    • Abbruch eines INVITEs
  • BYE:
    • Beenden einer Sitzung
  • OPTIONS:
    • Dient zum Austausch der unterstützten Request-Methoden
  • REFER:
    • Wird für die Vermittlung von Anrufen (Call Transfer) verwendet
  • SUBSCRIBE / NOTIFY:
    • Dienen der Überwachung von Zuständen (z. B. Besetztlampenfelder - BLF)
  • UPDATE:
    • Ändern von Sitzungsparametern ohne Einfluss auf den Dialogzustand

SIP-Response

Die Antworten werden in Klassen unterteilt:

  • 1XX (Provisional):
    • Die Anfrage wurde empfangen und wird verarbeitet (z. B. 180 Ringing)
  • 2XX (Success):
    • Die Anfrage wurde erfolgreich verarbeitet (z. B. 200 OK)
  • 3XX (Redirection):
    • Der Anruf wird an einen anderen Teilnehmer weitergeleitet (z. B. 302 Moved Temporarily)
  • 4XX (Client Error):
    • Es ist ein Fehler auf der Clientseite aufgetreten oder die Anfrage war fehlerhaft (z. B. 401 Unauthorized, 404 Not Found, 486 Busy Here)
  • 5XX (Server Error):
    • Es ist ein Fehler auf der Serverseite aufgetreten (z. B. 500 Server Internal Error, 503 Service Unavailable)
  • 6XX (Global Failure):
    • Die Anfrage kann von keinem Server erfüllt werden (z. B. 603 Decline)

Wichtige Parameter im SIP-Paket

  • From:
    • Displayname, SIP-URI, Anrufernummer
  • To:
    • Displayname, SIP-URI, Zielnummer
  • Contact:
    • Temporäre SIP-URI, kann für die direkte Kontaktaufnahme verwendet werden.
  • Authorization:
    • Authentifizierung per Benutzername und Passwort
  • Call-ID:
    • Ein vom Initiator generierter Zufallswert, identifiziert alle zur gleichen Sitzung gehörenden Anfragen und Statusinformationen.
  • CSeq:
    • Eine Zufallszahl, identifiziert SIP-Request, auf den sich der SIP-Response bezieht.
  • User-Agent:
    • Name des User-Agents
  • Via:
    • Listet die Stationen auf, die ein Paket bereits durchlaufen hat. Dient auch zur Rückleitung von Antworten.
  • Max-Forwards:
    • Begrenzt die Anzahl der Hops (Stationen), die eine Anfrage durchlaufen darf, um Endlosschleifen zu verhindern.
  • Record-Route / Route:
    • Ermöglicht es Proxys, im Pfad für nachfolgende Nachrichten eines Dialogs zu bleiben.
  • o=:
    • Origin, Name der die Mediensitzung einleitenden Person, gefolgt von einer pro Sitzung generierten Zufallszahl, Sitzungsversion, Typ des Netzwerks und Kontaktadresse
  • c=
    • Nutzdatenempfangsadresse des betreffenden Sitzungsteilnehmers, Typ des Netzwerks und IP-Adresse für die Nutzdaten
  • m=
    • Media Descriptions, Medientyp, Port, Protokoll, Codec
  • a=
    • Attributes, Erläuterung zu den im „m“-Parameter angegebenen Codecs

SIP-URI

SIP Uniform Resource Identifier

Eine SIP-URI stellt eine Kontaktadresse eines SIP-Endsystems dar. Ihre Funktion ist vergleichbar mit der Telefonnummer ehemaliger Telekommunikationsnetze. Der Aufbau einer SIP-URI entspricht dem Aufbau einer E-Mail-Adresse mit einer vorangestellten Protokollbezeichnung.

  • sip:User@Host

„User“ stellt hierbei einen individuellen Benutzernamen dar, „Host“ entspricht einer IP-Adresse oder einem Domainnamen.

Codecs

Grundlagen

Es gibt verschiedene Techniken, um die gesprochene Sprache digitalisieren zu können. Dazu verwendet man sogenannte Codecs.

Das Wort Codec setzt sich aus den folgenden zwei Worten zusammen: Coder und Decoder. Ein Codec ist eine Software, welche die Aufgabe hat, analoge Signale in einen digitalen Datenstrom zu kodieren und diese wieder zu dekodieren.

Digitalisierung analoger Signale

Bei der Analog-Digital-Wandlung im Sender wird das analoge Audiosignal abgetastet. Die dabei gewonnenen zeitdiskreten, aber noch wertkontinuierlichen Abtastwerte werden in der Folge quantisiert, d. h. einem bestimmten Amplitudenbereich wird ein wertdiskreter Amplitudenwert zugeordnet. Ergebnis ist ein zeit- und wertdiskretes Signal.

Um dieses als Digitalsignal übertragen zu können, werden die einzelnen Amplitudenwerte als digitale Codeworte, spezielle 0/1-Folgen, abgebildet. Diesen Vorgang nennt man Codierung.

Abhängig vom verwendeten Codec wird berücksichtigt, dass das ursprüngliche analoge Sprachsignal überflüssige Informationen enthält. Diese können bei der Codierung entfernt werden; das Sprachsignal wird dadurch komprimiert.

Empfohlene Codecs

Da viele Provider an den Schnittstellen zum öffentlichen Telefonnetz nur eine begrenzte Auswahl an Codecs unterstützen, empfehlen wir die folgenden Codecs mit der angegebenen Priorität:

Audio:

  1. G.722 – HD-Codec mit hoher Qualität
  2. PCMA (G.711-alaw) – Standard-Codec in Europa
  3. PCMU (G.711-ulaw) – Standard-Codec in Amerika
  4. Opus – Moderner, flexibler Codec (für interne Kommunikation oder unterstützte Provider)

Video:

  1. H.264 – Weit verbreiteter Videocodec

Transcodierung

Transcodierung nennt man das Decodieren und erneute Codieren eines Datenstroms. Dies ist dann notwendig, wenn beim Endgerät A ein anderer Codec zum Einsatz kommt als beim Endgerät B. Dies hat zur Folge, dass ein direkter Nutzdatenaustausch zwischen den beiden Endgeräten nicht möglich ist. Wird der Datenstrom passend transcodiert, funktioniert der Nutzdatenaustausch.

Transcodierung sollte aber wenn möglich durch passende Codec-Einstellungen in den Endgeräten verhindert werden, da sie eine hohe Rechenleistung auf dem Server beansprucht und die Qualität minimal beeinträchtigen kann.

Netzwerkbandbreite bei VoIP

In den letzten Jahren wurden die Internetverbindungen immer schneller, sodass es meistens nicht mehr nötig ist, Bandbreite zu sparen. Sollte es aber dennoch nötig sein, die Bandbreite zu kalkulieren, können Sie sich an folgenden Werten orientieren:

CodecBitrate
G.711-alaw64 kbit/s
G.711-ulaw64 kbit/s
G.72264 kbit/s
Opus6–510 kbit/s
H.26464 kbit/s – 240 Mbit/s

SIP-Trunking

Ein SIP-Trunk ist ein virtueller Telefonanschluss, der auf dem SIP-Protokoll basiert. Im Gegensatz zu herkömmlichen Anschlüssen (wie ISDN) ermöglicht ein SIP-Trunk die Anbindung einer IP-Telefonanlage (IP-PBX) an das öffentliche Telefonnetz über eine Internetverbindung.

Ein SIP-Trunk kann mehrere Sprachkanäle bündeln, sodass mehrere Gespräche gleichzeitig über dieselbe Verbindung geführt werden können. Dies ist besonders für Unternehmen mit eigener Telefonanlage wichtig.

Endgeräte / User-Agent

Es gibt verschiedene Endgeräte wie Tischtelefone, Softwaretelefone, MS Teams mit Telefonieanbindung und Telefonanlagen. Und für analoge Geräte gibt es SIP-Adapter (ATA), um die analogen Geräte weiter nutzen zu können. Obwohl die Bauformen sehr unterschiedlich sind, unterscheiden sich diese Geräte bezüglich SIP nicht grundlegend; sie alle agieren als User-Agent.

Tracing

Tracing (auf Deutsch: „verfolgen“ oder „nachspüren“) bedeutet im Netzwerkbereich das Aufzeichnen und Speichern des Datenverkehrs zwischen Computern oder Geräten. Dabei werden alle Pakete, die über das Netzwerk übertragen werden, protokolliert und oft in einer Datei (meistens im PCAP-Format) gespeichert.

Tracing ermöglicht es herauszufinden, welche Informationen wann und von wem übertragen wurden. Dies ist beim Troubleshooting sehr nützlich, um die Netzwerkpakete genau zu prüfen.

Wireshark

Wireshark ist eine freie Software zur Analyse und grafischen Aufbereitung von Datenprotokollen. Mit dem integrierten „Netzwerk-Sniffer“ können auch Netzwerkpakete aufgezeichnet werden.

Wireshark bietet für die Analyse von SIP-Paketen eigene Werkzeuge, was die Analyse enorm vereinfacht. Bei unverschlüsselten Daten kann man in Wireshark die Daten in den Netzwerkpaketen im Klartext sehen. D. h. man sieht die SIP-Daten und kann auch den Audioteil abhören.

Switch mit Port Mirroring (Portspiegelung)

Port Mirroring kann den Netzwerkverkehr, der über einen Port des Switches läuft, an einem weiteren Port ausgeben (spiegeln). So wird es möglich, auf einem Computer die Pakete eines anderen Ports zu erhalten und diese mit Wireshark aufzuzeichnen.

Weitere Möglichkeiten zum Tracen

Abgesehen von einem Switch mit Port Mirroring gibt es noch weitere Möglichkeiten, einen Trace zu erstellen:

  • Viele Telefone bieten über das Webinterface eine Tracefunktion an. Dafür haben wir auch ausführliche Anleitungen erstellt.
  • Bei PBX, die über das Webinterface keine Tracingfunktion anbieten, kann man auch im darunterliegenden Betriebssystem tracen:
    • Bei Linux mit tcpdump
    • Bei Windows mit Wireshark
  • Ist im Netzwerk eine Firewall installiert, kann man auch mit der Firewall tracen.

Häufige Probleme (Ursache/Lösung)

User-Agent registriert nicht

Die zwei häufigsten Ursachen für eine nicht funktionierende Registrierung sind:

  • Firewall: Blockiert eine Firewall die REGISTER-Pakete, kann sich der User-Agent nicht registrieren.
  • Falsches Passwort: Manchmal kommt es vor, dass beim Kopieren des Passwortes ein Leerzeichen mitkopiert wird und deshalb das Passwort falsch ist.

Keine eingehenden Anrufe

Die zwei häufigsten Ursachen für nicht ankommende eingehende Anrufe sind:

  • SIP-ALG: Durch ein aktives SIP-ALG kann die Adresse für die eingehenden Anrufe falsch sein, darum SIP-ALG immer deaktivieren.
  • Firewall: Wenn eine Firewall eingehende Anrufe blockiert, muss die Firewall-Konfiguration entsprechend angepasst werden.

One Way Voice

Sollte es bei einem aufgebauten Anruf vorkommen, dass Sie als Anrufer zwar vom Gegenüber gehört werden, aber Sie das Gegenüber nicht hören können, spricht man von „One Way Voice“. Ursache dafür ist oft eine Firewall, welche die eintreffenden RTP-Pakete blockiert.

Erlauben Sie in diesem Fall SIP- und RTP-Pakete von unseren SIP-Servern. Details zu Netzwerk- und Firewall-Konfiguration finden Sie hier.

Abgebrochene Gespräche

Wenn Gespräche nach einer immer gleichen Zeit (z. B. nach exakt 30 Sekunden oder 15 Minuten) abgebrochen werden, liegt dies meist an einer fehlerhaften Signalisierung:

  • NAT-Timeout: Die Firewall schliesst die Verbindung in der NAT-Tabelle vorzeitig. Abhilfe schafft hier ein kürzeres NAT Keepalive.
  • Session-Timer: SIP nutzt Session-Timer, um zu prüfen, ob ein Gespräch noch aktiv ist. Wenn die Bestätigungspakete (re-INVITE oder UPDATE) durch eine Firewall blockiert werden, bricht eine Seite das Gespräch nach Ablauf des Timers ab.
  • ACK fehlt: Wenn das Bestätigungspaket (ACK) nach dem Gesprächsaufbau nicht beim Empfänger ankommt, beendet dieser den Anruf nach einigen Sekunden (meist 30s).

Schlechte Gesprächsqualität

Für eine optimale Gesprächsqualität ist es wichtig, dass alle 20 ms ein Paket des Audiostreams mit 20 ms Audio als Inhalt übertragen wird. Falls Sie eine schlechte Gesprächsqualität feststellen, kann dies verschiedene Ursachen haben:

Paketverlust

Gehen auf der Strecke zwischen Endgerät und sipcall-Server Pakete verloren, nimmt die Gesprächsqualität ab. Ursache für Paketverlust ist oft eine Störung an einer Netzwerkkomponente oder am Internetanschluss. Oft hilft es, das betroffene Gerät neu zu starten. Sollte der Internetanschluss die Ursache sein, muss der Internetprovider dafür sorgen, dass kein Paketverlust mehr auftritt.

Jitter / Verzögerungen

Eher selten kommt es vor, dass Pakete zwar übertragen werden, aber zeitlich verzögert. Bei Audioübertragungen werden zu spät eintreffende Pakete aber verworfen, weil man sie nicht zu spät doch noch abspielen kann. Ursache für Verzögerungen sind oft überlastete Netzwerkkomponenten. Wenn z. B. eine Firewall für einen 10 Mbit/s Internetanschluss ausgelegt ist, aber durch ein Upgrade plötzlich an einem 1 Gigabit/s Anschluss angeschlossen ist, kann der höhere Traffic die CPU der Firewall überlasten. Dann kommt es vor, dass Pakete erst verzögert zugestellt werden.

Analoge Störungen

Sollte das genutzte Endgerät bei den analogen Komponenten (z. B. Mikrofon oder Lautsprecher) einen Defekt aufweisen, sieht man das oft nicht in den SIP-Logfiles. In diesem Fall hilft Wireshark bei der Analyse, weil man bei einem aufgezeichneten Anruf in das Gespräch reinhören kann. Sollten Sie dort z. B. ein Rauschen hören, kann dies auf einen Defekt hinweisen.

Ghost-Calls

Da sich die Endgeräte eine Verbindung durch den Router offenhalten, um eingehend erreichbar zu sein, werden alle SIP-Pakete, die beim Router am entsprechenden Port eintreffen, zum Endgerät weitergeleitet. Dies nutzen Hacker aus, um über das Internet SIP-Pakete zu den Endgeräten zu senden. Und leider gibt es Endgeräte, die bei jedem eintreffenden Anruf klingeln. In diesem Fall sprechen wir von Ghost-Calls.

Um Ghost-Calls zu verhindern, installieren Sie bitte eine Firewall und erlauben Sie eingehende Pakete nur von den sipcall-VoIP-Servern. Welche IP-Adressen sipcall verwendet, finden Sie hier.

Sicherheit

Da SIP-Endgeräte und Telefonanlagen aus dem Internet erreichbar sind, ist es wichtig, die Geräte immer aktuell zu halten. Ebenso wichtig ist die Länge der verwendeten Passwörter. Diese sollten mind. 15 Zeichen lang sein. Zudem sollte eine Firewall die Kommunikation auf den eigenen Provider einschränken, damit keine SIP-Pakete direkt zu den Endgeräten gesendet werden können.