Technologie der Internettelefonie



Voice over IP


VoIP (Voice over Internet Protocol) bezeichnet allgemein die Internet-Telefonie, die 1995 ihren Ursprung hatte und der mittlerweile mehrere Protokolle zu Grunde liegen. Im Gegensatz zu den weiteren VoIP-Protokollen wie etwa H.323, Skinny und MGCP handelt es sich beim Session Initiation Protocol (SIP) um einen IP Standard, der von der Internet Engineering Task Force (IETF) entwickelt wurde und von verschiedenen Arbeitsgruppen laufend weiterentwickelt wird.

SIP hat sich im Lauf der Jahre zu einem sehr umfangreichen Standard entwickelt, was alleine die Unzahl an RFCs (Request for Comments) in diesem Zusammenhang beweist, das wichtigste Dokument ist sicherlich der

RFC 3261 SIP: Session Initiation Protocol (als Ablöse zu RFC 2543)

als weitere wichtige Unterlagen sollten noch folgende genannt werden:

RFC 4566 SDP: Session Description Protocol (als Ablöse zu RFC 2327)
RFC 2976 The SIP INFO Method
RFC 3311 The Session Initiation Protocol (SIP) UPDATE Method
RFC 3325 Private Extensions to the Session Initiation Protocol (SIP)
RFC 3515 The Session Initiation Protocol (SIP) Refer Method
um nur ein paar zu nennen.

SIP ist ein textbasiertes Protokoll für die Abwicklung von interaktiver Kommunikationssessions zwischen Benutzern. Diese Sessions können Telefonie, Video, Chat, interaktive Spiele und Virtual Reality beinhalten.

Unsere Produkte setzen alle auf diesen ausgezeichnet funktionierenden Standard, speziell der Single User Account, der SIPnal PBX User Account als auch die Trunk-Konfiguration und die Endgeräteanbindung der SIPnal Hosted PBX Cloud Telefonanlage basieren auf dem Session Initiation Protocol.



Es teilt sich wie folgt auf:


1. Das Session Description Protocol (SDP)

  • Aufgaben
  • Aufbau
  • Beispiel

2. Das Session Announcement Protocol (SAP)

  • Erklärung
  • Expliziter Timeout
  • Impliziter Timeout

3. Das Session Initialization Protocol (SIP)

  • Aufgaben
  • Funktionsweise - Die Einladung
  • Aufbau der SIP Nachrichten
  • SIP Aufbau
  • Headerfields

4. SIP Methoden

  • SIP Methoden definiert durch SIP RFC
  • SIP erweiterete Methoden definiert durch andere RFCs

5. SIP Cause Codes

  • 1xx Provisional
  • 2xx Success
  • 3xx Redirection
  • 4xx Client Error
  • 5xx Server Error
  • 6xx Global Failure




SDP - Session Description Protocol


Das Sitzungsbeschreibungsprotokoll SDP ist ein Beschreibungsprotokoll für bevorstehende Multimedia-Sitzungen. Das SDP geht unmittelbar einher mit dem SAP, das eine bevorstehende Sitzung ankündigt (für diese wirbt).

Allgemeine Verwendung von SDP und SAP für einen Anwender ist, eine bevorstehende Sitzung auszurufen, und die relevanten Setup-Informationen bekanntzumachen.Die Einladung selber erfolgt mit Hilfe des Session Initialization Protoclos (SIP). Das SAP sendet einen periodischen Multicast Rundruf, welcher die Ankündigung als Paket enthält (und in dessen Message-Body das SDP enthalten ist) und an eine bekannte Adresse (mit Port) gesendet wird.

Aufbau des SDP und SAP

SAP-Pakete sind UDP-Pakete (32bit lang) mit dem folgenden Format.

		0	       31
-----------------
| SAP-Header |
|---------------|
| |
| Text payload |
|/\/\/\/\/\/\/\/|

Die Ankündigungen werden per Email oder WWW ausgerufen.
Der MIME content type ist application/sdp. Der Empfänger einer Ankündigung muß die Sitzung nicht notwendigerweise empfangen können. (z.B. wenn er nicht über die bei der Sitzung ausgerufene Bandbreite verfügt oder die Sitzung privat ist.)


SDP bedient zwei primere Zwecke:

  • es stellt ein Mittel dar, mit dem die Existenz einer Sitzung bekannt gegeben wird
  • Es ermöglicht die Übermittlung relevanter Informationen an die (potentiellen) Teilnehmer einer Sitzung bekannt zu geben.

Die relevanten Informationen, die SDP übermittelt sind (u.a.):

  • Name und Zweck einer Sitzung
  • Zeitperiode, während der eine Sitzung abgehalten wird.
  • Das Medium, über das die Teilnahme ermöglicht wird (VIC, RAT.....MBone-Tools )
  • Informationen, wo das benötigte Medium zu erhalten ist (Adresse, Port, Format)
  • Informationen über die zu benutzende Bandbreite
  • Kontaktinformationen zu der für die Sitzung verantwortliche Person


Diese Informationen werden nach dem Schema = bekanntgegeben.


Sitzungs Beschreibung:

v= (Protokollversion)
o= (Eigentümer/Ersteller und Sitzungsidentifizierer).
s= (Sitzungsname)
i=* (Sitzungsinformation)
u=* (URI der Beschreibung)
e=* (email Adresse)
p=* (Telefonnummer)
c=* (connection information - nicht benötigt, wenn in allen Medien eingeschlossen)
b=* (Bandweite)

Eine oder mehr Zeitbeschreibungen (siehe unten)
z=* (Zeitzonenbeschreibung)
k=* (Krypto-Schlüssel für die Verschlüsselung)
a=* (Null oder mehr Zeilen für die Sitzungsbeschreibung)

Keine oder mehrere Medien-Beschreibungen

Zeitbeschreibung
t= (Zeit während der die Sitzung aktiv ist)
r=* (Keine oder mehrere Wiederholungszeiten)

Medienbeschreibung
m= (Medienname und Transportadresse)
i=* (Medientitel)
c=* (Verbindungsinformationen - optional, wenn im session-level beinhaltet)
b=* (Informationen zur Bandweite)
k=* (Kryptoschlüssel zur Verschlüsselung)
a=*(Keine oder mehrere Zeilen mit Medienattributen)

Beispiel:
v=0
o=MxSIP 0 89 IN IP4 195.69.183.122
s=SIP Call
c=IN IP4 195.69.183.122
t=0 0
m=audio 4864 RTP/AVP 18 8 0 101
a=rtpmap:18 G729/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000..
a=rtpmap:101 telephone-event/8000
a=fmtp:18 annexb=no
a=fmtp:101 0-15
a=sendrecv
m=image 4866 udptl t38
a=sendrecv

Da SDP kein Transportprotokoll darstellt, hängt es sich an SAP (genauer gesagt in den Body oder Text-payload) und wird mit SAP zusammen per UDP übertragen.

Alle drei hier besprochenen Protokolle befinden sich in der Anwendungsschicht (nach OSI) Die darunterliegenden unterstützten Protokolle sind UDP und RTP bei SAP und
UDP, TCP und RTP bei SIP, wobei jedoch meistens nur UDP verwandt wird.

Weiterhin enthält das SDP-Paket noch zeitliche Informationen:
SDP unterstützt zeitlich abhängige sowie zeitlich unabhängige Sitzungen
Beispiele:

  • jeden Mittwoch um 10:00 Uhr für eine Stunde (für die zeitlich gebundene Variante)
  • eine Dauersendung in die man sich einklinken kann (zeitlich ungebunden)


Die Zeitinformationen sind global gleich und nicht von der lokalen Zeit abhängig (GMT)

Die Sitzungen an sich können öffentlich oder privat abgehalten werden. Bei privaten Sitzungen wird kryptographie verwandt, damit nur bestimmte Teilnehmer an der Sitzung partizipieren können. Private Sitzungen werden außerdem auch privat verkündet, damit Informationen über die Art der Kryptoschlüssel informiert werden kann.

Weitere Möglichkeiten der Sitzungsbeschreibung:

  • Sortierung resp. Verkündigung nach Interessensgebiet
  • Änderung des normalerweise verwendeten ISO 10646 Zeichensatzes in den ISO 8859-1 Zeichensatz.



SAP - Session Announcement Protocol


SAP dient dazu, Sitzungen auszurufen (bekanntmachen). Dazu benutzt es folgende Features:

  • Periodischer Multicast-Rundruf an bekannte Adressen. (z.B.: 224.2.127.254/9875 (sap.mcast.net)
  • Gleicher Gültigkeitsbereich (TTL) wie die Sitzung selber.
  • Rückmeldung (Re-advertisement) hängt von drei Faktoren ab:

    • Der Gültigkeitsbereich (TTL) einer Sitzung
    • Anzahl der momentan ausgerufenen Sitzungen.
    • Die Größe des (eigenen) Datenpakets.

Für das Timeout gibt es zwei verschiedene Arten:

1. Expliziter Timeout:

  • Momentane Zeit ist zeitlich nach dem Ende der Sitzung
  • Es ist ein Sitzung-löschen -Paket eingetroffen

Dieses Paket muß folgende Informationen beinhalten:

  • Die Version der zu löschenden Sitzung
  • Die gleiche IP-Quell-Adresse der Sitzung

2. Impliziter Timeout:

  • Die SAP-Nachricht muß periodisch (von einem Multicast-Server) empfangen werden.
  • Die Zeitperiode kann vom Empfänger (Server) bestimmt werden.
  • Wenn die SAP-Pakete für 10 Perioden oder ½ Stunde nicht empfangen wurden wird die Sitzungsankündigung gelöscht.

Ähnlich läuft es ab, wenn per SAP geänderte Sitzungsinformationen bekannt gegeben werden sollen.

Eine vor-angekündigte Sitzung kann einfach durch bekanntgabe der Änderungen (der geänderten Werte) geändert werden. Die betroffene Sitzung wird eindeutig identifiziert durch das SDP-origin-Feld im Text payload. Für die Modifizierung gelten die gleichen Regeln, wie für die Löschung.




SIP Methoden definiert durch SIP RFC


SIP Methoden definiert durch SIP RFC

INVITE Einladen eines anderen UA zu einer Session
re-INVITE Ändern einer bestehenden Session
REGISTER Registrieren eines Standortes am Registrar
ACK Bestätigung eines INVITEs
CANCEL Abbruch eines INVITEs
BYE Beenden einer Session
OPTIONS
Host check


SIP erweiterete Methoden definiert durch andere RFCs

INFO Erweiterung in RFC 2976
NOTIFY Erweiterung in RFC 2848
SUBSCRIBE Erweiterung in RFC 2848
UNSUBSCRIBE Erweiterung in RFC 2848
UPDATE Erweiterung in RFC 3311
MESSAGE Erweiterung in RFC 3428
REFER Erweiterung in RFC 3515
PRACK Erweiterung in RFC 3262




SIP - Cause Codes



1xx Der Request wurde empfangen und wird nun verarbeitet
2xx Die Anfrage wurde erfolgreich empfangen und verarbeitet
3xx Der Anruf wird an einen anderen Server weitergeleitet
4xx Es ist ein Fehler auf der Clientseite aufgetreten
5xx Es ist ein Fehler auf der Serverseite aufgetreten
6xx Die Anfrage kann von keinem Server erfüllt werden


1xx SIP Response Codes, Klasse 1: Provisional Messages

100 Trying
180 Ringing
181 Call Is Being Forwarded
182 Queued
183 Session Progress


2xx SIP Response Codes: Klasse 2: Success

200 OK
202 accepted: Used for referrals

3xx SIP Response Codes, Klasse 3: Redirection

300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
305 Use Proxy
380 Alternative Service

4xx SIP Response Codes, Klasse 4: Request Failures

400 Bad Request
401 Unauthorized: Used only by registrars. Proxys should use proxy authorization 407
402 Payment Required (Reserved for future use)
403 Forbidden
404 Not Found: User not found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout: Couldn't find the user in time
410 Gone: The user existed once, but is not available here any more.
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Unsupported URI Scheme
420 Bad Extension: Bad SIP Protocol Extension used, not understood by the server
421 Extension Required
423 Interval Too Brief
480 Temporarily Unavailable
481 Call/Transaction Does Not Exist
482 Loop Detected
483 Too Many Hops
484 Address Incomplete
485 Ambiguous
486 Busy Here
487 Request Terminated
488 Not Acceptable Here
491 Request Pending
493 Undecipherable: Could not decrypt S/MIME body part

5xx SIP Response Codes, Klasse 5: Server Failures

500 Server Internal Error
501 Not Implemented: The SIP request method is not implemented here
502 Bad Gateway
503 Service Unavailable
504 Server Time-out
505 Version Not Supported: The server does not support this version of the SIP protocol
513 Message Too Large

6xx SIP Response Codes, Klasse 6: Global Failures

600 Busy Everywhere
603 Decline
604 Does Not Exist Anywhere
606 Not Acceptable