VoIP : SIP Das Session Initiation Protocol Johannes Jakob 20. Dezember 2004 Zusammenfassung Das Session Initiation Protocol (SIP) stellt mit dem damit einhergehenden Session Description Protocol (SDP) und dem Real-time Transport Protocol (RTP) eine Alternative zum etwas älteren H.323 dar. Es wird von verschiedensten aktuellen VoIP Anbietern verwendet und kann für nahezu alle Internetanwendungen genutzt werden 1 1 Inhalt Inhaltsverzeichnis 1 Inhalt 2 2 VoIP 2.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 3 SIP 3.1 3.2 3.3 3.4 3.5 4 4 4 6 7 8 Allgemein . Geschichte . Methoden . Telefonanruf Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 SDP 11 4.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5 Praxis 5.1 Einsatzmöglichkeiten 5.2 Einschränkungen . . 5.3 VoIP Anbieter . . . 5.4 Aussicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 15 16 16 6 Für Interessierte 17 A Literaturverzeichnis 19 2 2.1 VoIP Allgemein Unter Voice over IP versteht man das Telefonieren über das Internet oder andere Datennetze. Telefongespräche werden hierbei nicht wie bei der konventionellen Festnetztelefonie über dedizierte Telefonleitungen abgewickelt, sondern neben Daten jeglicher Art über eine (breitbandige) Internetverbindung übertragen. Da hierfür in Gebäuden, national oder international nunmehr nur noch ein einziges Netzwerk verlegt, gepflegt und verwaltet werden muss, rückt VoIP immer mehr in den Vordergrund. 2 Telekommunikationsgesellschaften wickeln Transatlantikgespräche schon lange nicht mehr über herkömmliche dedizierte Leitungen ab, sondern routen Telefongespräche schon länger resourcensparend über bestehende und eigene Backbones des Internet ab. Multinationale Konzerne wie Siemens oder SAP telefonieren innerhalb des eigenen Konzerns über verschlüsselte VoIP Verbindungen und sparen damit jährlich Unsummen an Telefongebühren. Privatanwender zeigen stetig wachsendes Interesse an der neuen Alternative zur derzeit vergleichsweise teuren Festnetztelefonie innerhalb Deutschlands und von Deutschland ins Ausland. Da VoIP Anbieter Gespräche innerhalb der IP-Netze zum Nulltarif anbieten können, steigen immer mehr Vieltelefonierer auf die neue Technik um, oder betreiben sie zumindest parallel. Fazit Setzt sich diese Entwicklung weiterhin fort, kann man VoIP durchaus als Evolution der Festnetztelefonie betrachten, die nach analoger Technik und ISDN nun zunehmend an Bedeutung gewinnt und noch großes Potential - man denke an den aus der Science Fiction altbekannten Traum von alltäglicher Bildtelefonie - bereithält. 2.2 Kommunikation Spricht man von VoIP über SIP, oder einem SIP-Telefon, so ist im Allgemeinen eine Kombination aus drei Protokollen gemeint, die nur im Zusammenspiel eine vollständige VoIP Implementierung darstellen. Der Verbindungsaufbau bzw. die Signalisierung eines Anrufes wird bei einer solchen Implementierung von dem Session Initiation Protocol (SIP) (RFC 3261) übernommen. SIP kontaktiert den Gesprächspartner, signalisiert dem Anrufer das Klingeln auf der Gegenseite und sorgt nach dem Abnehmen für den Transport der nötigen Gesprächsparameter. Der Datenaustausch selbst findet über das Real-time Transport Protocol (RTP) (RFC 1889) statt, mit dem je nach Netzwerkverbindung zwischen den beiden Parteien, nahezu in Echtzeit Audio und Video übertragen werden können. Die Beschreibung des während einer Sitzung transportierten Mediums selbst wird vom Session Description Protocol (SDP) (RFC 2327) übernommen. (Vergleiche hierzu die Quellen [5], [3], [4], [10], [1]) 3 Auf SIP und SDP werden. 3 soll nun im Folgenden etwas detaillierter eingegangen SIP 3.1 Allgemein Signalisierungsprotokoll In seiner Eigenschaft als Signalisierungsprotokoll dient das Session Initiation Protocol lediglich dem Verbindungsaufbau, bzw. der Herstellung von Sessions und kann somit nur als Teil einer VoIP Implementierung gesehen werden. Ähnlich dem Verbindungsaufbau im Bereich der konventionellen Festnetztelefonie wird durch SIP eine Anruf → Klingeln → Abnehmen → Gespräch Signalisierung realisiert. Doch während bestehende Systeme speziell für das Telefonnetz entwickelt worden waren, wurde bei der Konzeption und Spezifikation von SIP speziell auf die Verwendung in Datennetzen geachtet. Klartextprotokoll Bei SIP handelt es sich um ein Klartextprotokoll, welches von bereits bestehenden, populären Klartextprotokollen wie HTTP und SMTP einige wesentliche header geerbt hat. Welche header dies im speziellen sind, wird später an Hand von Beispielen erläutert (siehe 3.5 und 4.2). Request → Response Ähnlich dem HTTP lassen sich SIP Anfragen als Request → Response Pakete charakterisieren, wobei SIP auch hier auf bestehende Spezifikationen zurückgreift und im Allgemeinen die vom HTTP verwendeten Response-Codes verwendet. So kann es einem VoIP Teilnehmer durchaus passieren, den aus dem Web bekannten 404 - Not Found Fehler auf seinem Telefondisplay vorzufinden. (Vergleiche hierzu die Quellen [5], [3], [4], [1]) 3.2 Geschichte Februar 1996 Henning Schulzrinne, der Begründer der Entwicklung von SIP, legte im Feburar 1996 erstmals Entwürfe vor, die zuerst von der MMUSIC1 Arbeitsgruppe der IETF aufgefasst und weiterentwickelt wurden. Später wurde eine eigene Arbeitsgruppe mit der Weiterentwicklung von SIP beauftragt. Februar 1999 Drei Jahre später war aus den ursprünglichen Etwürfen ein erster Vorschlag für einen SIP-Standard hervorgegangen. 1 Multiparty Multimedia Session Control 4 März 1999 Dieser Vorschlag wurde im März 1999 in der RFC 2543 als Standard spezifiziert. November 2000 Den bis dahin größten Erfolg konnte SIP im November 2000 erringen, als es für UMTS, den Mobilfunkstandard der Zukunft, als Signalisierungsprotokoll ausgewählt wurde. Juni 2003 Um nur eine der jüngsten Entwicklungen aufzuzeigen, sei hier nur ein Beispiel genannt: Im Juni 2003 hat Apple Computer Inc. eine Betaversion seiner Audio/Video Conferencing software iChat AV freigegeben, die zwischen zwei Benutzern die Kommunikation auf Basis von SIP ermöglicht. Gegenwart Gerade in den letzten Monaten ist die Entwicklung neuer SIP fähiger Soft- und Hardware auf einem weiteren Höhepunkt angelangt. Nahezu wöchentlich ist über einen der vielen (SIP-) VoIP-Anbieter in den einschlägigen Zeitungen/Foren zu Lesen. Die Charta In der von Henning Schulzrinne und der IETF niedergeschriebenen Charta (vgl. [3]) wurden als Ziele der SIP Entwicklung folgende Grunsätze festgelegt: 1. Services and features are provided end-to-end whenever possible. 2. Extensions and new features must be generally applicable, and not applicable only to a specific set of session types. 3. Simplicity is key. 4. Reuse of existing IP protocols and architectures, and integrating with other IP applications, is crucial. Erläuterungen Services and features are provided end-to-end whenever possible. Skalierbarkeit - Um eine aufwendige Netz-/Serverstruktur zu vermeiden, sollten die Clients den abzuwickelnden Datenverkehr unter sich ausmachen und wenn möglich ohne Zwischenstationen direkt miteinander austauschen können. Sessions zweier VoIP Clients werden zwar in der Praxis über einen SIP-Proxy der Anbieter ausgehandelt, die Verbindung inklusive Datenverkehr selbst kommen jedoch zwischen den Gesprächsteilnehmern direkt zustande. Extensions and new features must be generally applicable ... Flexibilität - Die SIP Spezifikationen und alle zukünftigen Erweiterungen sollten 5 auf keinen Fall auf spezifische Dienste und Anwendungsprobleme bezogen sein, sondern in einem möglichst großen Spektrum an Anwendungen einsetzbar sein. (→ keine VoIP-spezifischen Methoden in SIP!) Simplicity is key. Einfachheit - Je einfacher das Protokoll spezifiziert ist, desto einfacher kann es implementiert werden und desto eher findet es in der Praxis Verwendung. Die geringe Komplexität SIP’s spiegelt sich vorallem in seiner Eigenschaft als Klartextprotokoll und der überschaubaren Anzahl spezifizierter Methoden wieder (→ 3.3) Reuse of existing IP protocols and architectures ... Wiederverwendung - Wieso das Rad neu erfinden, wenn auf bereits bestehende Protokolle und Technologien zurückgegriffen werden kann? Da SIP als Protokoll für das Internet entwickelt werden sollte, musste es sich in das existierende Gefüge aus Protokollen und Übertragungsstandards eingliedern. Es lag somit nahe, bereits etablierte Protokolle wie SMTP und HTTP zu analysieren und gegebenenfalls verwendbare Aspekte zu übernehmen. Die Wiederverwendung von Elementen aus SMTP und HTTP wird an Hand der Beispiele zu SIP (→ 3.5) und SDP (→ 4.2) weiter unten etwas detaillierter beschrieben. 3.3 Methoden Die RFC 2543 (vgl [2]) spezifiziert für SIP sieben Methoden, die in jeder SIP Implementierung enthalten sein müssen. Jede Methode stellt einen Request dar, der vom Empfänger des Requests, dem Peer mit einem ResponseCode beantwortet wird. Da eine dieser sieben Methoden nur eine Variation einer Anderen darstellt, kann man folgende SIP Methoden unterscheiden: REGISTER Mit REGISTER meldet ein SIP Client seinem SIP Registrar - ein Server, der eine Liste aller in seinem Zuständigkeitsbereich verfügbaren Clients führt - dass er nun online, also verfügbar ist. Ein VoIP Telefon beispielsweise meldet sich am Registrar des VoIP Anbieters an und signalisiert ihm damit, dass es ab dem Zeitpunkt der Registrierung erreichbar ist. In Folge dessen wird eine etwaige Voicemailbox deaktiviert und ankommende Anrufe werden durchgestellt. INVITE Ein INVITE stellt bei der Herstellung einer Verbindung zwischen Clients den jeweils ersten Request dar. Er signalisiert dem Peer, dass ein Verbindungsaufbau gewünscht wird und initiert damit den Verbindungsaufbau. Wird ein INVITE während einer bestehenden Verbindung gesandt, so nennt man diesen Request einen RE-INVITE. Ein solcher RE-INVITE wird im Allgemeinen gesandt, wenn sich Sitzungs-Parameter geändert haben (Beispielsweise falls im Lauf eines Gesprächs Videoübertragung hinzu geschaltet werden soll). 6 ACK Kommt der Verbindungsaufbau zustande (abhängig vom ResponseCode des Peers), so schickt der ursprünglich initierende client ein ACK an den Peer, um damit den Abschluss des Verbindungsaufbaus zu quittieren. Wurde das Zustandekommen der Sitzung zwischen den Clients mit einem ACK bestätigt, so können nun beispielsweise Daten ausgetauscht, oder ein Gespräch geführt werden. BYE Sendet einer der Clients während einer bestehenden Sitzung ein BYE, so wird hiermit das Ende der Sitzung signalisiert. (→ das Auflegen bei einem Telefonat) CANCEL Soll ein abgeschickter, jedoch noch nicht bestätigter Request abgebrochen werden, so schickt der Initiator des entsprechenden Requests ein CANCEL an den Peer und teilt ihm damit mit, dass der vorangegangene Request für ungültig erklärt wurde. (→ Das Auflegen des Hörers nach zu langer Wartezeit, oder weil der Anrufende gemerkt hat, dass er sich verwählt hat) OPTIONS Im Gegensatz zu H.323 muss bei SIP kein Verbindungsaufbau stattfinden, um die Fähigkeiten des Peers in Erfahrung zu bringen. Mit einem OPTIONS Request kann ein Client schon vor einem Verbindungsaufbau beim Peer anfragen, welche Inhalte dieser interpretieren kann. So kann unter anderem schon vor dem Anklingeln überprüft werden, ob der Angerufene ein Bildtelefon besitzt, oder ob er nur Audio-Anrufe entgegennehmen kann. Wie diese Methoden nun zusammenpassen, soll im Folgenden an Hand eines schematischen Telefonanrufes beschrieben werden. 3.4 Telefonanruf Angenommen es gebe zwei Benutzer A und B, die beide über einen SIP VoIP-Anschluss verfügen. Nehmen wir weiter an, Benutzer A will (→ Abbildung 1) B anrufen. Er nimmt den Telefonhörer ab und wählt die Nummer von B woraufhin sein Telefon einen INVITE Request an das Telefon von B schickt. Dieses fängt an zu Klingeln und teilt es dem Telefon von A mit dem Response Code 180: Klingelt mit sodaß A nun ganz nach Telefon-Manier ein Tuten im Hörer hört. Nimmt B weiterhin nicht ab, schickt sein Telefon so lange 180: klingelt an A’s Telefon, bis B entweder abnimmt, A ein CANCEL schickt, oder die Verbindung aus technischen Gründen zusammenbricht. Nehmen wir jedoch an, B nimmt den Anruf entgegen. Im Moment des Abhebens, signalisiert sein Telefon dem von A mit einem Response-Code 200: OK, dass der Anruf entgegengenommen wurde und das Gespräch nun zustande kommen kann. Da A geduldig gewartet und den Hörer noch nicht wieder aufgelegt hat, schickt sein Telefon zur Quittierung des 200: OK einen ACK -Request und schließt damit den Verbindungsaufbau ab. Das Gespräch 7 Abbildung 1: Schematischer Telefonanruf SIP Telefon SIP Telefon Benutzer A Benutzer B wählt INVITE 180: klingelt nimmt ab 200: OK ACK Sprachübermittlung via RTP legt auf BYE 200: OK kann nun geführt und jederzeit durch Auflegen beendet werden. In unserem Beispiel legt B schneller auf als A, sodaß B’s Telefon das Ende des Telefonats mit einem BYE Request signalisiert. Dieser wird ebenfalls mit 200: OK bestätigt und somit das Gespräch beidseitig beendet. An diesem Beispiel wird auch der Signalisierungscharakter von SIP deutlich. Aber wie sieht nun eine solche SIP-Kommunikation im Speziellen aus? Im Folgenden werden zwei SIP Pakete exemplarisch analysiert. 3.5 Beispiel Nehmen wir auch hier einen Telefonanruf als Beispiel, wobei aus diesen Paketen nicht hervorgeht, welche Art von Sitzung zwischen den beiden Benutzern A und B stattfindet, bzw. welche Medien ausgetauscht werden. (→ Flexibilität von SIP (→ S. 6)!) A ruft B an Betrachten wir zuerst die Seite des Anrufers A, der die Verbindung wünscht und deshalb einen INVITE Request an B schickt (Vgl. Abbildung 2): INVITE sip:[email protected] SIP/2.0 In der ersten Zeile, steht ähnlich einem HTTP Request, der SIP Request, der im ersten Feld genauer 8 Abbildung 2: SIP-Paket von A an B; Variation des Beispiels aus der RFC [2] INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 12.26.17.91:5060 Max-Forwards: 70 To: Benutzer B <sip:[email protected] From: Benutzer A <sip:[email protected];tag=1928301774 Call-ID: [email protected] CSeq: 314159 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 142 spezifiziert wird. Das zweite Feld enthält die Adresse des Angerufenen B und im dritten Feld wird die Protokollversion angegeben, in welcher dieses Paket formuliert ist. Via: SIP/2.0/UDP 12.26.17.91:5060 Die Via: Zeilen ähneln sehr den Received Zeilen der SMTP header. Sie enthalten zeilenweise eine Beschreibung des Weges, den ein Request gekommen ist und den eine Antwort zurückgehen muss. Da wir im Moment das Paket betrachten, wie es von A abgeschickt wird, enthält es bisher nur die Adresse von A und damit das spätere Ziel von Response-Paketen. Max-Forwards: 70 Hier wird das Maximum an möglichen Zwischenstationen (die in den Via Zeilen protokolliert werden) festgelegt. Wird diese Obergrenze überschritten, wird das Paket ungültig und die Verbindung kommt nicht zu Stande. To: Benutzer B <sip:[email protected] Auch die To: Zeile lehnt sich an einem SMTP Header an und enthält die Adresse des RequestEmpfängers, in unserem Telefoniebeispiel dem Benutzer B. From: Benutzer A <sip:[email protected];tag=1928301774 Äquivalent zur To: Zeile wird in der From: Zeile der Request-Ursprung, hier der Benutzer A beschrieben. Zu beachten ist hierbei, dass nach der Adresse des Request-schickenden Clients ein mit tag bezeichneter Zufallswert steht, der vom Client zu lokalen Identifizierungszwecken generiert wird. Call-ID: [email protected] Mit Call-ID wird eine weltweit eindeutige Identifizierung der SIP Session festgelegt, die sich aus einem 9 Zufallswert und der mit @ angeschlossenen IP-Adresse des Sitzungsinitialisierenden Benutzers A zusammensetzt. Die Kombination aus To:, From: und Call-ID Zeilen bilden eine eindeutige Identifizierungsmöglichkeit dieser Sitzung. Diese Kombination definiert einen absolut eindeutigen Dialog zwischen A und B. CSeq: 314159 INVITE Innerhalb eines Dialoges erhält jeder gesendete Request eine eindeutige Nummer, die hauptsächlich aus Gründen chronologischer Konsistenz nötig ist. Kommen bei einer Zwischenstelle aus technischen Gründen zwei oder mehr, zum identischen Dialog gehörenden Requests an, kann die Zwischenstelle an Hand der CSeq entscheiden, welcher von ihnen der zeitlich nächste ist und diesen als erstes weiterleiten. Contact: <sip:[email protected]> Während die Via: Zeilen den Weg beschreiben, den eine Antwort zu A, bzw. dem Request-sendenen Client zu nehmen hat, wird in der Contact: Zeile spezifiziert, an welche Adresse neue Requests geschickt werden sollen. So ein Request kann beispielsweise das BYE sein, um den bestehenden Dialog zu beenden. Content-Type: application/sdp Der Content-Type beschreibt den im SIP Paket enthaltenen Content, der im Body des Pakets mitgeschickt wird. In den meisten Fällen, in denen SIP zur Übertragung von Audio, Video, oder sonstigen Multimedia-Inhalten dient, dürfte das SIP Paket einen Inhalt vom Typ application/sdp transportieren, also im Body ein Paket vom Typ SDP enthalten (→ 4). Content-Length: 142 Wie groß das transportierte Paket ist, kann aus derContent-Length Zeile abgelesen werden. Die Größenangabe ist hierbei in Bytes. In diesem Fall ist das SDP Paket also 142 Bytes groß. B nimmt Anruf entgegen Obiges Paket von A ist nun also bei B eingetroffen, das Telefon hat geklingelt und B hat abgenommen. Das Klingeln wurde hier zwar ausgelassen, doch ließe sich das entsprechende Paket analog zum folgenden Beispiel (→ Abbildung 3), jedoch mit dem Response-Code 180: Ringing konstruieren. Wie zuvor beim INVITE Request, findet sich in der ersten Zeile der eigentliche SIP-Teil, in diesem Fall die Versionsnummer des Protokolls (SIP/2.0) und der Response-Code 200: OK. Die ersten beiden Felder, welche den Request selbst und die Adresse des Request-Peers enthielten, fehlen hier, da das Paket als Response keinen Request enthält und die Zieladresse, bzw. sogar der gesamte Weg zum Ziel, durch die Via: Zeilen festgelegt ist. Die Zeilen To:, From: und Call-ID sind identisch (sie definieren den Dialog, s.o.), jedoch hat nun auch Benuter B in der To: Zeile, einen Zufallswert (tag) erhalten. Die Request-Nummer (CSeq:) ist unverändert, da es sich bei 10 Abbildung 3: Retour-SIP-Paket von B an A SIP/2.0 200 OK Via: SIP/2.0/UDP server10.biloxi.com Via: SIP/2.0/UDP bigbox3.site3.atlanta.com Via: SIP/2.0/UDP 12.26.17.91:5060 To: Benutzer B <sip:[email protected];tag=a6c85cf From: Benutzer A <sip:[email protected];tag=1928301774 Call-ID: [email protected] CSeq: 314159 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 131 dem betrachteten Paket um die Antwort auf den Request (INVITE ) handelt und zwischenzeitig kein weiterer Request abgeschickt wurde. Die Contact: Zeile jedoch beinhaltet nun die Adresse von B, welcher das Response-Paket abschickt und zukünftige Requests (z.B. das vermutlich nun folgende ACK, oder das mögliche CANCEL) erhalten möchte. Auch in diesem Beispiel beinhaltet das SIP Paket einen SDP-Inhalt, diesmal der Länge 131 Bytes. Ähnlichkeiten zu SMTP und HTTP An Hand dieser Beispiele für SIP Pakete sollte deutlich geworden sein, welche Elemente SIP von HTTP und SMTP geerbt hat (Request-Zeile, Via, To und From von SMTP / ContentType, Content-Length und die Response-Codes von HTTP) und welche neu hinzugekommen sind (Call-ID, CSeq, Contact). Der Aufbau der SIP Pakete selbst ähnelt ebenfalls sehr den bereits bekannten Protokollen und macht es damit Entwicklern und Administratoren einfach, sich an dieses ’neue’ Protokoll zu gewöhnen. (Vergleiche hierzu die Quellen [2], [3], [4], [5], [1]) 4 4.1 SDP Allgemein Das Session Description Protocol wird als Content der SIP Pakete übertragen und beschreibt die Medien, welche innerhalb des Dialoges übertragen werden. Während das SIP Paket selbst nur für die Herstellung der Verbindung sorgt, beinhaltet das SDP Paket die Informationen darüber, ob Audio, Video oder sonstige Inhalte, oder eine beliebige Kombination davon übertragen werden sollen. 11 Ein minimales SDP Paket enthält folgende Elemente (vgl. [6]): • Beschreibung der Session allgemein (v=) Protokollversion des SDP Paketes (o=) Ursprung und Identifizierung - enthält Informationen über den Benutzer der die Session initiiert hat (s=) Session-Name - ein beliebiger Name für die Session • Beschreibung des Zeitfaktors (t=) Zeitgrenzen - Start- und Endzeit der Session. Ist kein definitives Ende bekannt (bei VoIP Anrufen ist selten im Vorhinein bekannt, wann das Telefonat vorrüber sein wird), so kann auf die Endzeit verzichtet werden und auf 0 gesetzt werden. Die Startzeit muss jedoch auf jeden Fall gegeben werden. • Beschreibung der zu übertragenden Medien (m=) Name, Typ und Übertragungsadresse - Hier wird jedes übertragene Medium gesondert beschrieben. 4.2 Beispiel Das folgende Beispiel (→ Abbildung 4) beschreibt diesen Vortrag nach SDP Standard. In diesem Beispiel werden neben der Mindest-Beschreibung noch einige weitere Elemente besprochen: Abbildung 4: SDP Paket, das diesen Vortrag beschreibt; Variation des Beispiels aus der RFC [6] v=0 o=jjj 2890844526 2890842807 IN IP4 126.16.64.4 s=SIP Vortrag i=Vortrag ueber VoIP:SIP u=http://wwwbode.cs.tum.edu/[...]/seminars/WS04/PSTK [email protected] (Johannes Jakob) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 49170 RTP/AVP 0 m=video 51372 RTP/AVP 31 m=application 32416 udp wb a=orient:portrait 12 Erklärung zum Beispiel v=0 Protokollversion 0 o=jjj 2890844526 2890842807 IN IP4 126.16.64.4 Der Benutzer mit Loginname jjj hat die Session initiiert. Das zweite Feld enthält die Session-ID, das Dritte stellt eine Versionsnummer dieser Session dar. Die Felder vier, fünf und sechs bezeichnen die Urpsrungsadresse der Session. IN bezeichnet den Netzwerktyp, in diesem Fall Internet, IP4 den Adress-Typ (IP Version 4) und Feld sechs enthält die entsprechende Ursprungsadresse. s=SIP Vortrag Der Name der Sitzung ist SIP Vortrag i=Vortrag ueber VoIP:SIP Als Subtitle, bzw. zusätzliche Information wird Vortrag ueber VoIP:SIP übertragen. u=http://wwwbode.cs.tum.edu/[... /seminars/WS04/PSTK] Hier kann ein URI zu weiteren Informationen im Internet definiert werden. [email protected] (Johannes Jakob) Die eMail-Adresse des Autors c=IN IP4 224.2.17.12/127 Mit c für Connection werden Verbindungsparameter beschrieben. So wird hier analog zur Adressdefinition im oHeader eine Internetadresse vom Typ IP Version 4 beschrieben. Diese Adresse gibt an, WO man diese Sitzung finden kann, in diesem Fall kann der Vortrag vom Server mit der Adresse 224.2.17.12 abgeholt werden. Der Postfix /127 beschreibt eine Time to live (TTL), also eine Obergrenze der Latenzzeit die gestattet wird. Ein Zuhörer, der eine größere Verzögerung hätte, kann Audio und Video nicht synchronisiert empfangen, wird also ausgeschlossen aus dem Hörerkreis. t=2873397496 2873404696 Da der Vortrag in einem festen zeitlichen Rahmen stattfindet, können sowohl Start-, als auch Endzeit angegeben werden. a=recvonly Mit a werden Attribute übergeben, die für die Medien gelten. recvonly erklärt den Vortrag zu einem passiven Vergnügen für die Zuhörer. m=audio 49170 RTP/AVP 0 Hier werden nun die drei Mediastreams definiert, welche von obigem Server empfangen werden können. Hier wird ein Audiostream beschrieben, welcher vom Port 49170 empfangen werden kann und im via RTP/AVP (Real-time Transport Protocol, mit Audio/Video Protocol) übertragen wird. Die 0, bzw. das vierte Feld bezeichnet einen vom Medium abhängigen Formatbezeichner. In unserem Beispiel wird hiermit die Stimme des Vortragenden übertragen. 13 m=video 51372 RTP/AVP 31 Hierbei handelt es sich um einen Videostream am Port 51372. Beschrieben wird hier der visuelle Aspekt des Vortrages (Gestik, Erscheinung des Vortragenden). m=application 32416 udp wb Und zu guter letzt werden hier die über UDP übertragenen Folien beschrieben. a=orient:portrait Diese sollen quer, also für Folien typisch angezeigt werden (Portrait - Orientierung) Zusammenspiel von SIP, SDP und RTP SIP und SDP ergänzen sich beim Aushandeln der Übertragungswege und der Art des Übertragungsinhaltes. Der Inhalt selbst jedoch wird nicht in den selben Nachrichten übertragen: Host A Host B SIP/SDP (TCP oder UDP) Audio durch RTP (UDP) Audio durch RTP (UDP) Video durch RTP (UDP) Video durch RTP (UDP) Host A baut mit SIP (über TCP, oder UDP) eine Verbindung zu B auf und teilt B mit Hilfe des im SIP Paket enthaltenen SDP Paketes mit, welche Medien übertragen werden sollen. Die Daten selbst, im Fall von VoIP hauptsächlich Audio (und Video) Ströme in beide Richtungen, werden mit Hilfe des RTP über UDP Kanäle übermittelt. Hier wird ein weiteres mal deutlich, dass SIP nur einen kleinen Teil einer eigentlichen VoIP Implementierung darstellt. (Vergleiche hierzu die Quellen [10], [6], [7], [2], [8], [10]) 14 5 Praxis 5.1 Einsatzmöglichkeiten Auf Grund seiner Flexibilität und Skalierbarkeit findet SIP Verwendung in verschiedensten Session-basierten Anwendungsbereichen. In folgenden Bereichen werden bereits SIP basierte, oder -gestützte Implementierungen verwendet: • Instant Messaging • Spiele • Internet - Telefonie (→ Anbieter) • Video Conferencing (Windows Messenger, Apple iChat) Diese Auswahl ist jedoch keinesfalls representativ für die Verbreitung von SIP in der heutigen Praxis. Da es nahezu in allen Peer-to-Peer Anwendungen eingesetzt werden kann, sind seiner Verbreitung keinerlei Grenzen gesetzt und so kommen wöchentlich neue Anwendungen oder Geräte hinzu. 5.2 Einschränkungen Durch die grundlegend einfache Struktur von SIP/SDP und die uneingeschränkte Mobilität der Clients, unterliegt eine auf SIP basierende VoIP Lösung zumindest zwei gravierenden Einschränkungen. Betrieb hinter NAT-Firewalls NAT Firewalls werden in der Regel eingesetzt um kleineren internen Netzen mit inoffiziellen, sogenannten ’RFC IPs’, die von ausserhalb der Firewall nicht erreichbar sind, den Internetzugang zu ermöglichen. Hierzu werden Anfragen von Clients innerhalb der Firewall beim Durchwandern der Firewall manipuliert und in den IP-Paketheadern an Stelle der internen IP Adresse des Clients, die nach Aussen hin offizielle IP Adresse der Firewall eingesetzt. Wird die Anfrage von einem Rechner ausserhalb der Firewall beantwortet, erreicht die Antwort ebenfalls die Firewall und wird von ihr an den ursprünglichen Client im internen Netz weitergeleitet. Da Clients im internen Netz nur ihre interne RFC IP-Adresse kennen, können sie in die SIP und SDP Pakete nur diese interne IP-Adresse einsetzen. Diese Pakete jedoch werden von einer herkömmlichen NAT-Firewall nicht korrigiet. Würde ein solches Paket nun einen SIP-Peer erreichen, könnte dieser unmöglich darauf antworten, da er auf Grund der Spezifikation der RFC Adressen keinerlei Kontakt zum ursprünglichen Client aufnehmen kann. Um diesem Problem vorzubeugen, bieten VoIP-Anbieter in der Praxis sogenannte STUN 3 Server an, die den internen Clients hinter einer NAT 3 Simple Traversal of UDP through NAT 15 Firewall die Möglichkeit geben, die nach Aussen hin gültige IP-Adresse der Firewall und den für sie freigeschaltenen Port in Erfahrung zu bringen. Diese nun auch außerhalb der Firewall gültigen Adressdaten, kann der Client nun in die SIP und SDP Pakete schreiben und damit Peers außerhalb des internen Netzes die Möglichkeit geben, auf seine Pakete zu antworten. Alternativ zu solchen STUN Servern können auch neuere NAT Firewalls eingesetzt werden, die SIP/SDP Pakete modifizieren und damit die internen Adressen durch die korrekten externen ersetzen können. (Vergleiche hierzu die Quellen [5], [2], [14], [13], [15]) Notruf Der Notruf stellt ein ganz anderes Problem dar. Da VoIP/SIP Geräte ohne großen Aufwand an einen geographisch anderen Ort transportiert werden können, kann die Herkunft eines eventuellen Notruf-Anrufes nicht lokalisiert werden, wie dies im konventionellen Telefonnetz möglich ist. Hierdurch wäre keine schnelle und kompetente Hilfeleistung, realisiertbar, da beispielsweise nicht herauszufinden ist, welche Rettungsleitstelle die geographisch nächste und zuständige ist. Um auch reinen VoIP Haushalten den Notruf anbieten zu können, hat sipgate als Pionier in dieser Angelegenheit im Raum Düsseldorf ein Pilotprojekt gestartet. Um an diesem ersten Test teilnehmen zu können, müssen VoIP Kunden in diesem Raum authentische Adressdaten hinterlegen. (Vergleiche hierzu die Quellen [16], [17]) 5.3 VoIP Anbieter Momentan sind in Deutschland unter Anderem folgende VoIP-Anbieter aktiv, die auf SIP/SDP basierende Dienste anbieten: Freenet http://www.freenet.de Nikotel http://www.nikotel.de PURtel http://www.purtel.de sipgate http://www.sipgate.de sipsnip http://www.sipsnip.de web.de http://www.web.de 5.4 Aussicht Derzeit sind im Telefoniebereich nach wie vor konventionelle Dienstanbieter aus den Sparten Festnetztelefonie und Mobilfunk führend, jedoch ist gerade in den letzten Monaten ein deutlicher Trend in Richtung VoIP zu erkennen. Sowohl in Deutschland, als auch in den USA können nahezu wöchentlich Schlagzeilen zu VoIP Themen gelesen werden. 16 Regulierung Während in den USA aktuell noch debattiert wird, ob VoIP momentan überhaupt reguliert werden soll, hat in Deutschland die Regulierungsbehörde für Telekommunikation und Post (RegTP) bereits ein erstes Machtwort gesprochen. Zum Schutz der Orstgebundenheit von Vorwahlbereichen wurde am 20.08.2004 angeordnet, dass VoIP Betreiber keine ortsfremden Vorwahlen mehr vergeben dürfen. Diese Anordnung betrifft vorallem Bewohner von Kleinstädten und Dörfern, die bisher VoIP Vorwahlen der nächst größeren Großstadt (oder einer beliebigen Anderen) benutzen konnten. Um auch dieser Nutzergruppe weiterhin VoIP Dienste anbieten zu können, wichen die Anbieter auf ortsunabhängige Vorwahlbereiche wie 01801 (sipgate) aus. Um VoIP Telefonie einen Schritt weiter zum Erfolg zu bringen und Anrufern die Möglichkeit zu geben, an Hand der Rufnummer auf den Anschlusstyp schließen zu können, wurde beschlossen, einen eigenen Vorwahlraum für VoIP Anbieter zu begründen. So wird im ersten Halbjahr 2005 mit der Vergabe von Rufnummern aus dem Vorwahlbereich 032 begonnen und damit die Position der VoIP Anbieter im deutschen Markt gefestigt. Entbündelung des Internetanschlusses vom Festnetzanschluss Da bisher in Deutschland kaum und nur in Großstädten die Möglichkeit besteht, auch ohne einen bestehenden Festnetztelefonanschluss einen breitbandigen Internetanschluss zu erhalten, wird neben der Regulierung des Vorwahlbereichs erwogen, breitbandige DSL Anschlüsse vom Festnetzanschluss zu entbündeln und damit VoIP eine reelle Chance auf tatsächlichen kommerziellen Erfolg einzuräumen. Fazit Da VoIP-Anbieter ein einzigartiges Preisleistungsverhältnis anbieten können und netzinterne Telefonate sogar gratis realisieren können (der Betrieb eines eigenen Telefonnetzes entfällt), rückt VoIP gerade für Vieltelefonierer und preisbewusste Auslandstelefonierer zunehmend in den Vordergrund. Da vermehrt auch preiswerte SIP fähige VoIP Endgeräte auf den Markt kommen, wird VoIP auch für technisch unversierte Anwender zunehmend interessant. 6 Für Interessierte Für weitergehende Informationen und tiefergreifende Spezifikationen soll hier eine Liste von Seiten für den tiefergreifenden Einstieg in die Themen SIP, SDP, RTP und VoIP gegeben werden: • SIP – Henning Schulzrinne’s SIP page http://www.cs.columbia.edu/sip/ 17 – SIP RFC 3261 http://www.ietf.org/rfc/rfc3261.txt – IETF Workgroup http://www.ietf.org/html.charters/sip-charter.html – SIP Forum http://www.sipforum.org – SIP Zusammenfassung http://voip-info.org/wiki-SIP • SDP – SDP RFC 2327 http://www.rfc-editor.org/rfc/rfc2327.txt – SDP Zusammenfassung http://voip-info.org/wiki-SDP • RTP – RTP RFC 3550 http://www.rfc-editor.org/rfc/rfc3550.txt – RTP Zusammenfassung http://voip-info.org/wiki-RTP • VoIP – Sammlung von VoIP Informationen http://voip-info.org – Heise Newsticker zu VoIP http://www.heise.de/newsticker/search.shtml?T=VoIP 18 A Literaturverzeichnis Literatur [1] Henning Schulzrinne’s SIP page http://www.cs.columbia.edu/sip/ [2] SIP RFC 3261 http://www.ietf.org/rfc/rfc3261.txt [3] IETF Workgroup http://www.ietf.org/html.charters/sip-charter.html [4] SIP Zusammenfassung http://voip-info.org/wiki-SIP [5] Englische Wikipedia Seite zu SIP http://en.wikipedia.org/wiki/Session Initiation Protocol [6] SDP RFC 2327 http://www.rfc-editor.org/rfc/rfc2327.txt [7] SDP Zusammenfassung http://voip-info.org/wiki-SDP [8] RTP RFC 3550 http://www.rfc-editor.org/rfc/rfc3550.txt [9] RTP Zusammenfassung http://voip-info.org/wiki-RTP [10] Englische Wikipedia Seite zu RTP http://en.wikipedia.org/wiki/Real-time Transport Protocol [11] Sammlung von VoIP Informationen http://voip-info.org [12] Heise Newsticker zu VoIP http://www.heise.de/newsticker/search.shtml?T=VoIP [13] SIP Clients hinter NAT http://graphics.cs.uni-sb.de/VoIP/config.html [14] Englische Wikipedia Seite zu NAT http://en.wikipedia.org/wiki/NAT [15] Englische Wikipedia Seite zu STUN http://en.wikipedia.org/wiki/STUN [16] sipgate News-Artikel http://www.sipgate.de/user/news.php [17] Teltarif.de Artikel http://www.teltarif.de/arch/2004/kw30/s14332.html Bitte beachten: Bei [5] und [10] sind die Spaces in der URL durch Unterstriche ( ) zu ersetzen. 19