SIP – Teil II:
Grundlagen
von Marco Straß
Nachdem im ersten Teil dieser Serie (switch! 1/2007) der grundsätzliche Aufbau des SIP-Protokolls erläutert wurde, liegt im zweiten und letzten Teil dieser Serie der Fokus der Betrachtung auf der Beschreibung der wesentlichen SIP-Netzelemente sowie typischer SIP-Dienstmerkmale und SIP-Kommunikationsabläufe.
SIP-Netzelemente
Bereits im ersten Teil wurden die SIP-Netzelemente User-Agent, Proxy-, Registrar- und Location-Server anhand eines einfachen Beispiels vorgestellt. Zwei weitere wichtige Elemente innerhalb eines SIP-Netzwerkes bilden der Redirect-Server und Gateways.
Redirect-Server
Mit Hilfe eines Redirect-Servers kann die aktuelle SIP-Adresse eines angerufenen Teilnehmers innerhalb einer Domain ermittelt werden. Am folgenden Bild 1 sei dies verdeutlicht. In diesem Beispiel möchte Alice eine VoIP-Verbindung zu Bob auf-bauen, wobei sich Bob nicht in seiner Heimatdomain domainB befindet, sondern in der Domain domainC. Um die VoIP-Verbindung von Alice zu Bob in seiner Heimatdomain domainB zu initiieren, sendet Alice einen INVITE-Request mit der Adresse bob@domainB an den Redirect-Server, der seinerseits beim Location-Server Bobs aktuelle SIP-Adresse erfragt. Da sich Bobs aktuelle Domain von der im initialen INVITE unterscheidet, sendet der Redirect-Server ein „302 Moved Temporarily“ an Alice zurück und setzt Bobs aktuelle Adresse bob@domainC in das „Contact“-Feld der Antwort ein. Der Empfang der Antwort des Redirect-Servers an Alice wird von Alice ihrerseits mit einem ACK bestätigt. Nun kennt Alice Bobs aktuelle SIP-Adresse und sendet erneut ein INVITE an Bob, diesmal jedoch an Bobs aktuelle Adresse bob@domainC. Ab hier kommunizieren Alice und Bob direkt miteinader, d. h. ohne den Redirect-Server. Der weitere Verlauf der SIP-Kommunikation ist dann wie bereits im Teil 1 beschrieben, d. h. dem INVITE folgen ein „180 Ringing“ und „200 OK“ von Bob an Alice, gefolgt von einem ACK von Alice an Bob. Das Ende der SIP-Session wird schließlich von Alice oder Bob durch ein BYE eingeleitet und mit einem ACK bestätigt.
SIP-Gateways
Ein weiteres wichtiges SIP-Netzelement stellt ein SIP-Gateway dar, das das SIP-Protokoll in ein anderes Protokoll umsetzt. Ein bedeutendes Anwendungsgebiet für SIP-Gateways ist die Anbindung von SIP-basierten IP-Netzen in ISDN-TK-Anlagen oder umgekehrt. Hierbei übernimmt das SIP-Gateway die Umsetzung des VoIP-Signalisierungsprotokolls SIP in das Signalisierungsprotokoll, d. h. D-Kanal-Protokoll von ISDN. Da sich SIP und das D-Kanal-Protokoll sehr ähnlich sind, sind derartige Gateways recht einfach zu realisieren. Die Umsetzung der protokollspezifischen Nachrichten veranschaulicht Bild 2. Dem Bild ist zu entnehmen, dass die folgenden Analogien zwischen SIP und D-Kanal-Protokoll gelten:
Andere Anwendungsgebiete für SIP-Gateways liegen zum Beispiel in der Umsetzung von SIP nach SS7 oder von SIP nach H.323.
SIP-Dienstmerkmale
SIP bietet einige aus den TK-Netzen bekannte Dienstmerkmale (Leistungsmerkmale), von denen hier einige kurz vorgestellt werden. Zur Unterstützung der nachfolgend beschriebenen Dienstmerkmale muss der SIP-Proxy-Server entsprechend konfiguriert werden.
Anrufweiterleitung
Ein wichtiges Dienstmerkmal von SIP stellt die Möglichkeit der Anrufweiterleitung (Rufumleitung) dar, bei der ankommende Anrufe generell oder unter bestimmten Bedingungen an andere IP-Telefone weitergeleitet werden.
Generelle Anrufweiterleitung:
Bei der generellen Anrufweiterleitung werden ankommende Anrufe stets an ein zuvor definiertes IP-Telefon weitergeleitet. Beispiel: Anrufweiterleitung an eine Urlaubsvertretung im Büro.
Anrufweiterleitung bei besetzt:
Ein weiteres bedeutendes Dienstmerkmal von SIP ist die Anrufweiterleitung bei besetzt. Bild 3 veranschaulicht dieses Merk-mal. Bei diesem Merkmal leitet der Proxy-Server einen eingehenden INVITE-Request von Alice zunächst an Bobs IP-Telefon weiter. Falls Bob gerade telefoniert und somit sein Telefon besetzt ist, sendet sein Telefon eine SIP-Response
„486 Busy Here“ als Antwort auf den INVITE-Request. Daraufhin leitet der Proxy-Server den INVITE-Request an Carols IP-Telefon weiter. Da Carol bzw. ihr Telefon frei ist, antwortet ihr Telefon mit einem „180 Ringing“ und, sobald Carol abhebt, mit einem „200 OK“. Danach kann Alice mit Carol kommunizieren.
Anrufweiterleitung nach Zeit:
Neben der Anrufweiterleitung bei besetzt ist auch die Anrufweiterleitung nach Zeit ein von SIP unterstütztes Dienstmerkmal. Wie aus Bild 4 ersichtlich ist, leitet der Proxy-Server auch hier Alice’ eingehen-den INVITE-Request zunächst zu Bob weiter. Bobs IP-Telefon ist bereit, den eingehenden INVITE-Request anzunehmen, und antwortet deshalb mit einem „180 Ringing“. Da Bob den Anruf jedoch nicht entgegennimmt (d. h. den Hörer seines Telefons nicht abhebt), sendet sein IP-Telefon auch kein „200 OK“ zum Proxy-Server. Als Folge gibt es beim Proxy-Server ein Timeout für den INVITE-Request zu Bob, so dass dieser einen CANCEL-Request zu Bob sendet, der seinerseits von Bob durch ein „200 OK“ beantwortet wird. Schließlich leitet der Proxy-Server Alice’ INVITE-Request z. B. zu einem konfigurierten Voicemail-System von Bob weiter, das mit einem „200 OK“ antwortet, das vom Proxy-Server zu Alice weitergesandt wird. Nun kann Alice’ eigentliche (Sprach-)Nachricht auf Bobs Voicemail-System übertragen werden.
Anrufverzweigung
Betrachtet sei eine Punkt-zu-Mehrpunkt-VoIP-Kommunikation, bei der ein ankom-mender SIP-Anruf an mehr als ein IP-Telefon verzweigt wird. Gegeben sei Alice, die Bob anruft, siehe initiales INVITE in Bild 5. Der Proxy-Server, der als Forking-Proxy arbeitet, kennt drei SIP-Adressen von Bob und leitet Alice’ INVITE-Request an diese drei Adressen weiter. Dabei sei BH Bobs VoIP-Telefon zu Hause und B2 und B3 zwei weitere IP-Telefone von Bob, die sich nicht zu Hause befinden. In diesem Beispiel hat sich Bob von seinem IP-Telefon BH zu Hause abgemeldet (durch Ausschalten des Gerätes). Deshalb sendet dieses Telefon ein „404 Not Found“ an den Proxy-Server zurück. Die beiden anderen Telefone B2 und B3 von Bob können den Anruf entgegennehmen, und senden deshalb beide ein „180 Ringing“ an den Proxy-Server zurück (das dieser an Alice weiterreicht) und klingeln, um Alice’ Anrufwunsch mitzuteilen. Wenn nun Bob den Hörer am Telefon B2 abhebt, sendet B2 ein „200 OK“ an den Proxy-Server, der diese Response an Alice zur Signalisierung der Anrufannahme weitersendet. Zusätzlich sendet der Proxy-Server ein CANCEL an B3, um so den VoIP-Verbindungsaufbau von Alice nach B3 zu unterbinden und B3 quittiert diesen Request mit einem „200 OK“. Schließlich sendet Alice ein ACK an B2. Der weitere Verlauf der VoIP-Sitzung findet nun von Alice über den Proxy-Server nur noch zu B2 statt, also dorthin, wo sich Bob momentan aufhält.
Halten
Das Dienstmerkmal Halten (Hold) bietet die Möglichkeit, während einer bestehenden SIP-Session den Austausch der Nutzdaten (Sprache bei VoIP) zu unterbrechen. Das Einleiten und Aufheben des Halte-Zustandes wird durch ein SIP-INVITE ausgelöst. Neben dem einfachen Halten wird noch zwischen dem Halten/Makeln mit Rückfrage (Consultation Hold) und dem Halten mit Musik (Music on Hold) unterschieden. Beim Halten mit Rückfrage wird temporär eine weitere SIP-Session zu einem dritten Teilnehmer aufgebaut, die unabhängig zur ersten, weiterhin bestehenden SIP-Session besteht.
Dreierkonferenz
Das Dienstmerkmal Dreierkonferenz (3-Way Conference) ermöglicht es, zu einem Zweiergespräch weitere Teilnehmer hinzuzufügen, wobei alle Teilnehmer gleichberechtigt Nutzdaten (z. B. Sprache) austauschen können. Zur Unterstützung dieses Dienstmerkmals ist eine Instanz notwendig, die alle Datenströme der Teilnehmer mischt und an alle Teilnehmer verteilt. Dies wird i. Allg. durch eine sogenannte Multipoint Control Unit oder einen Conference-Server realisiert. Der Teilnehmerbeitritt kann passiv oder aktiv geschehen.
Verbindungsübergabe
Mit dem Dienstmerkmal Verbindungsübergabe besteht die Möglichkeit, eine SIP-Verbindung an einen dritten Teilnehmer weiterzugeben, wobei die initiale Verbindung beendet wird. SIP unterstützt die direkte Verbindungsübergabe und die Verbindungsübergabe nach Rückfrage. Ausgangspunkt beider Dienstmerkmale ist eine bestehende Verbindung zwischen Alice und Bob. Bei der direkten Verbin-dungsübergabe übergibt Bob die Verbindung (das Gespräch) an Carol und beendet seinerseits die Verbindung zu Alice. Die Verbindungsübergabe leitet Bob durch Senden eines SIP-REFER an Alice ein. Bei der Verbindungsübergabe nach Rückfrage handelt es sich um eine Kombination aus den Dienstmerkmalen Halten mit Rückfrage und direkte Verbindungsübergabe. Neben den hier vorgestellten Dienstmerkmalen gibt es noch weitere, wie z. B. das Merkmal Parken, bei dem eine SIP-Verbindung auf einem Park-Server „zwischengeparkt“ wird, und das Merkmal Anrufübernahme.
Presence
Den Abschluss dieser Betrachtung über SIP bildet eine kurze Vorstellung der Komfortfunktion Presence, die im Zuge der Benutzung diverser Internet-Messenger-Applikationen (z. B. ICQ und MSN Messenger)zur Anwendung kommt. Mit Hilfe dieser Funktion können Messenger-Applikationen den User über den aktuellen Online-Status ausgesuchter Teilnehmer informieren.SIP unterstützt die Komfortfunktion Presence durch Verwendung der Nachrichten SUBSCRIBE und NOTIFY und unter Zuhilfenahme sogenannter Events, wie Bild 6 veranschaulicht. Hier abonniert Alice Bobs Online-Status (Erreichbarkeitsstatus) unter Zuhilfenahme von SIP. Dazu sendet Alice ein SIP-SUBSCRIBE an Bob mit dem SIP-Event „presence“, das durch eine eigene SIP-Headerzeile „Event: presence“ in der SUBSCRIBE-Nachricht codiert wird. Mit Hilfe der SIP Headerzeile „Expires: <Sekunden>“ kann zusätzlich die gewünschte Dauer der Überwachung festgelegt werden. Im Beispiel akzeptiert Bob die Überwachung des Online-Status durch Alice, indem Bob ein „202 Accepted“ an Alice zurücksendet. Anschließend sendet Bob eine erste NOTIFY-Nachricht an Alice mit dem „Subscription State: pending“ (d.h. in Bearbeitung), deren Empfang von Alice durch ein „200 OK“ bestätigt wird. Schließlich sendet Bob in einem weiteren NOTIFY den aktuellen Erreichbarkeitszustand, wobei der „Subscription State“ auf „active“ gesetzt ist, was bedeutet, dass die Online-Überwachung nun aktiv ist. Bobs eigentlicher Online-Status wird innerhalb des NOTIFY in Form von XML-Code gemäß dem Presence Information Data Format (PIDF) nach RFC 3863 übermittelt. Während der Online-Überwachung von Bob durch Alice sendet Bob Änderungen seines Online-Zustandes mit Hilfe von NOTIFY-Messages an Alice. Die Überwachung von Bobs Online-Status kann Alice durch Senden eines weiteren SUBSCRIBE mit dem Eintrag „Expires 0“ beenden. Ebenso kann Bob die Überwachung durch Senden eines NOTIFY an Alice mit dem „Subscription State: terminated“ jederzeit beenden.






