Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur...

49
1 Session Initiation Protocol G.Vanwormhoudt 2 Préambule (1) • Evolution RTC (1ère gen) vers Réseaux Intelligents • Réseaux Intelligents – Introduction de l’informatique dans les réseaux téléphoniques avec pour objectif création de services à valeur ajoutée – Même fonctions dans le réseau téléphonique globale que le CTI (Computer Telephony Integration) dans l’entreprise • Centre d’appel, gestion téléphonie personnelle, messagerie unifié, filtrage des appels, … – Signalisation puissante et sophistiquée (SS7)

Transcript of Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur...

Page 1: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

1

Session Initiation Protocol

G.Vanwormhoudt

2

Préambule (1)

• Evolution RTC (1ère gen) vers RéseauxIntelligents

• Réseaux Intelligents– Introduction de l’informatique dans les réseaux

téléphoniques avec pour objectif création de services àvaleur ajoutée

– Même fonctions dans le réseau téléphonique globaleque le CTI (Computer Telephony Integration) dansl’entreprise

•Centre d’appel, gestion téléphonie personnelle, messagerieunifié, filtrage des appels, …

– Signalisation puissante et sophistiquée (SS7)

Page 2: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

3

Préambule (2)

• Irruption de la téléphonie sur les réseaux de données (IP)

• Quid des procédures de signalisations dans le monde IP ?

=> Next Generation Network

RéseauxIntelligents

RéseauxIP

Circuits Paquets

?

Applications Telecoms

4

Signalisation sur IP

• « La signalisation concerne l’ensemble des informationséchangés par les terminaux, les entités de contrôle et lesgateways participant à toutes les phase d’établissementde contrôle et de rupture de la connexion » [Susbielle99]

• Protocoles de signalisation existants– Réseau intelligent : SS7

– Réseau IP : H323, SIP, MEGACO, SIGTRAN

Sur IP, les échanges de signalisation se font au niveauapplicatif

=> pas de participations des routeurs et commutateurs

Page 3: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

5

Généralités SIP

• Session Initiation Protocol– Internet Engineering Task Force

– RFC2543, RFC3261, RFC3262, RFC3263, RF3264, …

– Historique: 1997 (Columbia university), 1999 (SIP Working group)

• Protocole de signalisation applicatif (niveau 7) utilisé pourl’établissement, la modification et la terminaison de sessionsmultimédias sur Internet

• Applications– Téléphonie IP (fonctions analogues à SS7)

– Audio/Vidéo conférence

– Services multimédia à la demande

– Jeu, Domotique, Messagerie instantanée, Pilotage d’appareils,..

6

Internet

Infrastructure SIP

Vue générale

Alice’s PC

@office.comBob’s SIP

Phone

flux multimédia

messages SIP

messages SIPm

essa

ges SI

P

Page 4: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

7

Caractéristiques

• Protocole client/serveur de type requête/réponse

• Protocole transactionnel– Toute opération SIP se compose d’une série de

messages (requête/réponse)

• Protocole orienté Internet– Messages émis en mode texte

– Inspiration SMTP/HTTP

– compatible RFC 822 (mode texte / UTF-8)

• Indépendant de la couche transport– TCP, UDP, UDP multicast

8

SIP et les autres protocoles IP

Page 5: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

9

Fonctionnalités

• Localisation du(des) participant(s) à la session– terminaux multiple, mobilité, identifiant unique, ...

• Gestion de la disponibilité– mise en attente, transfert, déviation (traitements sophistiqués)

• Gestion des capacités– configuration, négociation des paramètres de la session,

hétérogénéité des terminaux

• Etablissement de la session– mise en relation des deux participants

• Gestion de la session– modification, terminaison

10

Ce que SIP ne fait pas

• Ne décrit pas les sessions

• Ne contrôle pas les conférences

• Ne contrôle pas les passerelles

• Ne réserve pas les ressources pour la session

• Peut être utilisé conjointement avec d’autresprotocoles qui réalisent ses taches– RTP

– RTSP

– SDP

– MEGACO ... et autres

Page 6: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

11

Les couches de SIP

Transaction User layer(traitement applicatif, creation session)

Transaction layer(gestion transactions, retransmission)

Transport Layer(connection/déconnection,

envoi/reception)

Syntax and encoding layer(analyse et formatage messages)

12

Entités d’une architecture SIP1

• Agent Utilisateur Client et Serveur– Points finaux capables d’émettre ou de recevoir des

requêtes (resp. réponses) SIP– Participants à une session SIP– Types d’agent serveur

•Personne physique, machine, enregistreur de message, serveurvidéo à la demande, ...

• Serveur de localisation– Offre des services pour obtenir et mettre à jour des

informations sur le destinataire (adresse actuelle etmultiple, droit, mot de passe, disponibilité, ...)

– Entité utilisée par les serveurs proxy et serveurs deredirection

Page 7: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

13

Entités d’une architecture SIP2

• Serveur proxy– Entité intermédiaire active qui est à la fois client et serveur

– Retransmet les requêtes vers le destinataire (Routage) ens’appuyant sur son service de localisation

– Traite les requêtes (analyse pour authentification, transformation,multi-diffusion, ..)

– Mode opératoire

• stateless, call statefull, transaction stateful

• Serveur de redirection– Reçoit des requêtes et renvoie à l’émetteur une ou plusieurs

adresses pour contacter le destinataire (régulation charge)

– A la différence du serveur proxy, ce serveur n’initie pas derequêtes

14

Exemple d’architecture SIP

Sip proxy

User Agent A

SIP Redirect

Server

Location Information

Service

Sip proxy

(Registrar)

User Agent B

Sip proxy

Non SIP Protocol

SIP Request

SIP Response

Fig 2

1

3

47

8

652

12

9

10

11

Page 8: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

15

Adresse SIP

• SIP exploite des formats d’adresses de type e-mail :user_ID@host_name– user_ID peut être un individu, un groupe, un service, ...

• Différents formes possibles– user@domain [email protected]

– user@host [email protected]

– user@IP_adress [email protected]

– phone-number@gateway [email protected]

• Résolution des adresses (directe, via DNS, SMTP)

16

URLs SIP

• Utilisé dans les requêtes (entête From, To, Contact)• Intégration dans des pages HTML, emails

Exemples : sip:[email protected]

sip:[email protected];user=phone

sip: infos_utilisateur @ domaine paramètres en-têtes

infos_utilisateur (nom de l’utilisateur:mot de passe) ou

(numéro téléphone, si user=phone)

domaine

paramètres

en-têtes

nom de domaine ou nom d’hôte ou adresse IP: port

;transport=udp ou tcp

;user=phone ou IP

;method=INVITE, ACK, OPTIONS, BYE, CANCEL, REGISTER

;ttl=0 à 255 (time-to-live d’un paquet IP multicast)

;maddr=adresse IP multicast

;tag=compteur

? par1=valeur1 & par2=valeur2 & par3=valeur3...

Page 9: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

17

Message SIP

Ligne de début

En-tête message

ligne vide

Format générique des messages SIP - RFC822 (HTTP aussi)

(Requête et réponse)

Corps Message

18

Exemple de message SIP

INVITE sip:[email protected] SIP/2.0

Via: SIP/2.0/UDP gva.enic.fr;

Max-Forwards: 70

To: Pascal<sip:[email protected]>

From: Vanwormhoudt<sip:[email protected]>;

Call-ID: [email protected]

CSeq: 1 INVITE

Contact:<sip:[email protected]>

Content-Type: application/sdp

Content-Length: 142

o=gva 2874587367 2984095874 IN IP4 192.168.247.85

s=heure?

[email protected]

c=IN IP4 192.168.247.100

m=audio 3000 RTP/AVP 0 3

Corps

En-tête

Ligne de début

Page 10: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

19

Requête SIP

méthode URL SIP/2.0

Via:

From:

To:

Call-ID:

Cseq:

Content-Length

Content-Type:

Champ:

SIP/2.0/protocole hôte:port

username <sip:from_user@source>

username <sip:to_user@destination>

localid@hôte

numéro_seq méthode

longueur du corps

type de média du corps

paramètre ;par1=valeur; par2= valeur

ligne vide

V=0

o= user_origine timestamp timestamp IN IP4 hôte

c=IN IP4 média adresse_destination

t=0 0

m= type_média port RTP/AVP types_payload

Lignedébut

En-têtemessage

Corpsmessage

20

Méthodes de requête1

• Méthode REGISTER– Gestion (ajout, maj, suppression) des liaisons (identifiant agent

utilisateur, adresse contact) enregistrées dans le service delocalisation

– Egalement utilisé pour interroger le service de liaison (serveurproxy, redirection)

– L’agent utilisateur doit indiquer la durée de vie de la liaison

– L’agent utilisateur est également responsable du rafraichissementde la liaison

• Méthode OPTIONS– Permet d’obtenir des informations sur les capacités d’un agent

utilisateur ou d’un serveur sans avoir besoin d’établir une session

– Informations : méthodes supportées, extension, type contenu, ..

– Peut être émis en dehors ou à l’intérieur d’une session

Page 11: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

21

Méthodes de requête2

• Méthode INVITE– Initie une session en invitant un agent utilisateur à une conférence

ou à simple appel

– Le corps du message contient généralement une description de lasession (utilisation de SDP: type de média audio, vidéo, data,format, codage en vigueur)

• Méthode ACK– Indique que l’appelant a reçu une réponse finale à l’invitation

– Le corps du message peut contenir la description finale de lasession (négociation des capacités)

– Un corps vide indique que la description du message Invite serautilisée

22

Méthodes de requête3

• Méthode CANCEL– Annule un requête (Invite) émise par l’appelant

– Requête « Hop-by-hop »

– Doit être utilisé après la réception d’une première réponse

– Utilisé par les serveurs proxy lors de recherches parallèles delocalisation

• Méthode BYE– indique à l’autre participant que la session doit se terminer

• Autres méthodes– UPDATE - mise à jour de la Session

– PRACK (RFC3262) - ACK for Provisional Responses

– SUBSCRIBE & NOTIFY (RFC3265) - Service de présence

Page 12: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

23

Réponse SIP

Via:

From:

To:

Call-ID:

Cseq:

Content-Length

Content-Type:

Champ:

SIP/2.0/protocole hôte:port

username <sip:from_user@source>

username <sip:to_user@destination>

localid@hôte

numéro_seq méthode

longueur du corps

type de média du corps

paramètre ;par1=valeur; par2= valeur

ligne vide

V=0

o= user_origine timestamp timestamp IN IP4 hôte

c=IN IP4 média adresse_destination

t=0 0

m= type_média port RTP/AVP types_payload

typeréponse

en-têtemessage

corpsmessage

SIP/2.0 status reason-phrase

24

Statut des réponses

• 1xx : information sur le traitement des requêtes– 100 trying, 180 ringing

• 2xx : succès– 200 Ok

• 3xx : redirection– 300 multiples choices, 302 moved temporarily

• 4xx : erreur client– 401 unauthorized, 404 not found

• 5xx : erreur serveur– 501 not implemented, 503 service unavailable

• 6xx : erreur globale– 600 busy, 601 decline, 606 not acceptable

Page 13: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

25

Exemples de réponse

SIP/2.0 200 OK

Via: SIP/2.0/UDP sip-proxy.int.fr

Via: SIP/2.0/UDP gva.enic.fr;

Max-Forwards: 70

To: Pascal<sip:[email protected]>

From: Vanwormhoudt<sip:[email protected]>;

Call-ID: [email protected]

CSeq: 1 INVITE

Contact:<sip:[email protected]>

Content-Type: application/sdp

Content-Length: 142

o=pascal 4868949 4858949 IN IP4 198.7.6.5

s=Ok

c=IN IP4 goujon.int.fr

m=audio 3000 RTP/AVP 0 3

Corps

En-tête

Ligne de début

26

Principaux champs d’entêtes

• TO: URL-SIP de la destination

• From: URL-SIP de la source

• Call-ID: identifiant de session (vers.simple local-id@host)

• Maxforward: nombre max de sauts pour traiter le message

• Cseq(Command Sequence) : Numéro de transaction dansla session + méthode

• Via: route empruntée par un message jusqu’à ce noeud– prévention des boucles, garantie le chemin de retour (billing,...)

• Contact : pour l’enregistrement d’informations (Register) oule reroutage

• Content-type : type de média du corps (application/sdp)

• ...

Page 14: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

27

Session Description Protocol

• SIP utilise le protocole SDP (session description protocol,RFC 2237)

• SDP est employé pour définir les attributs d’une sessionSIP avec une syntaxe standard– Echange des capacités des terminaux

• Les paramètres SDP sont placés dans le corps d’unerequête SIP

• Les entêtes SDP sont encodées en format text et sont de laforme <champ>=<valeur>.

• Le <champ> est toujours un simple caractère et la<valeur> est une chaine de caractères formatée selon lechamp

28

Quelques champs SDP

information sur laconnexion (PSTN, IP)

informationconnection

c

attributs de session,description de média

session attributesm

attributs de médiasmedia attributesa

bande passantebandwith (kbps)b

nom de la sessionsession names

propriétaire/créateurde la présentation

owner/creator

/session id

o

Page 15: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

29

Exemple SDP

v=0

o=gva 2874587367 2984095874 IN IP4192.168.247.85

s=Inquiry

[email protected]

c=IN IP4 192.168.247.100

m=audio 3000 RTP/AVP 0

m=video 4000 RTP/AVP 31

30

Etablissement d’une sessionMode point à point

User Agent Client User Agent Server

[email protected]@193.48.251.57

INVITE [email protected]

SIP 180 Ringing

SIP 200 OK

ACK

BYE

SIP 200 OK

!

!

COMMUNICATION

Page 16: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

31

Etablissement d’une sessionavec localisation1

1. Enregistrement de la localisationIdentifiant d’appel: <sip:[email protected]>

Alice enregistre son identifiant et son

adresse actuelle dans le proxy de

son domaine

home.com

office.comalice

bobm2.home.com

Proxy

[email protected] =>[email protected]

REGISTER home.com SIP/2.0To: sip:[email protected]: sip:[email protected]

32

Etablissement d’une sessionavec localisation2

2. Appel (phase 1)– Bob appelle Alice en utilisant [email protected]

– Résolution DNS coté client

home.com

office.comalice

bobm2.home.com

DNS lookup for sip.udp.home.comResolve to pc4.home.com

pc4.home.com

Page 17: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

33

Etablissement d’une sessionavec localisation3

2. Appel (phase 2)– Envoi de la requête Invite sur le réseau

home.com

office.comalice

bobm2.home.com

pc4.home.com

INVITE sip:[email protected] …To: sip:[email protected]: “Bob” <sip:[email protected]>…c=IN IP4 128.59.19.60m=audio 8000 RTP/AVP 0 5 8

User agent client

34

Etablissement d’une sessionavec localisation4

3. Traitement de la requête par le proxy- Recherche de la localisation à partir de l’identifiant

- Retransmission vers l’adresse actuelle d’Alice

home.com

office.comalice

bobm2.home.com

pc4.home.com

INVITE sip:[email protected] …To: sip:[email protected]: “Bob” <sip:[email protected]>…

Proxy

Page 18: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

35

Etablissement d’une sessionavec localisation5

4. Attente du correspondant– Le correspondant a été trouvé, son “poste” est en train de

“sonné”

– L’attente est traduite par une réponse Ringing

home.com

office.comalice

bobm2.home.com

pc4.home.com

SIP/2.0 180 Ringing

Proxy

36

Etablissement d’une sessionavec localisation6

5. Etablissement de la session– Quand l’appel est accepté par Alice, la réponse OK est

retournée à Bob

– L’UAC de Bob accuse réception de la réponse avec un messageACK

home.com

office.comalice

bobm2.home.com

pc4.home.com

SIP/2.0 200 OK…c=IN IP4 135.180.144.32m=audio 9000 RTP/AVP 0 8

ACK sip:[email protected] …To: sip:[email protected]: “Bob” <sip:bob...>…c=IN IP4 128.59.19.60

Page 19: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

37

Etablissement d’une sessionavec localisation7

6. Transmission des flux multimédia– Paquets RTP audio

home.com

office.comalice

bob

38

Etablissement d’une sessionavec localisation8

7. Fin de la session- Quand l’un des 2 participants met fin à la session, la requête

BYE est envoyée

home.com

office.comalice

bob

BYE sip:[email protected]

Page 20: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

39

Sequence des messages avecplusieurs proxys

40

Etablissement d’une sessionmode redirect

Internet

Location ServerRedirection Server

INVITE [email protected]

SIP 301 Moved Temporarily

ACK

INVITE gva@ 193.48.251.66

ACK

SIP 180 Ringing

int.fr

sip.enic.fr

[email protected]

SIP 200 OK

193.48.251.66REGISTER

Page 21: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

41

Exemple de scénario possibleavec SIP1

[email protected]

Internet Backbone

SIP Server columbia.edu

SIP Server Lucent.com

[email protected]

[email protected]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

42

Exemple de scénario possibleavec SIP2

• Description du scenario– Bob a trois bureaux, un chez Lucent et deux à l’université Columbia

où il enseigne (bureau et lab)

– Bob publie une seule identifiant d’appel: [email protected]

– Un jour, Bob est à l’université et enregistre sur le serveur SIP de Lucentl’adresse [email protected] (1)

– Il enregistre aussi sur le serveur de Columbia, ses deux adresses àColumbia (2, 3)

[email protected], [email protected]

– Le jour suivant, Bob configure son poste de labo pour qu’il redirigeautomatiquement l’appel vers son adresse chez lucent, oubliant lesenregistrements précédents

Page 22: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

43

Exemple de scénario possibleavec SIP3

– Plus tard le même jour, [email protected] appel [email protected] (4)(résolution DNS = Serveur SIP Lucent)

– Le serveur SIP de Lucent localise l’adresse courante de bob (5) etretransmet donc l’appel à [email protected] (6)

– Le Service SIP de Columbia détermine qu’il existe deux adressespossibles (7) et diffuse l’appel (i.e « fork ») vers celles-ci (8,9)

– Le poste de labo selon sa configuration redirige l’appel vers leserveur SIP de Lucent qui détecte une boucle et retourne une erreur(10,11)

– L’erreur est propagée par le poste au serveur SIP de Columbia (12)

– Dans le même temps, Bob a répondu à l’appel depuis son bureau(13)

44

Exemple de scénario possibleavec SIP4

– Le serveur SIP de Columbia a maintenant les deux réponses etpeut retourné l’acceptation de l’appel au Serveur SIP de Lucent(14) qui fait de même vers l’agent de jack (15)

– A ce stade, Les serveurs peuvent détruire les états liés à l’appelJack et Bob communique directement sans passer par les serveursintermédiaires (16)

• Caractéristiques de SIP mises en évidence par ce scénario– Forking

– Mobilité utilisateur

– Détection de boucle

Page 23: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

45

Programmation de services SIP1

" Solutions suggérées par l’IETF– SIP Call Processing Language ( SIP – CPL )

• Langage de scripts pour décrire des services d’appels

• Syntax XML, extensible, éditable// Script qui intercepte les appels anonymes

- <?xml version="1.0" ?><!DOCTYPE cpl PUBLIC "-//IETF//DTD RFCxxxx CPL 1.0//EN""cpl.dtd"><cpl>! <incoming>! ! <address-switch field="origin" subfield="user">! ! ! <address is="anonymous">! ! ! ! <reject status="reject"! ! ! ! ! reason="I don't accept anonymous calls" />! ! ! </address>! ! </address-switch>! </incoming></cpl>

Scritp interprété par le serveur SIP

Call not

matchmatch

actions

46

Programmation de services SIP2

- SIP Common Gateway Interface ( SIP – CGI )– similaire au CGI-HTTP

– Indépendant du langage (Perl, Tcl, C, C++, ...)

– activation d’un exécutable réalisant le service

– Passage des parametres à travers les variablesd’environnement

// traite tout appel du boss comme urgent

if (defined $ENV{SIP_FROM} &&

$ENV{SIP_FROM} =~ /sip:[email protected]/)

{

foreach $reg (get_regs())

print "CGI-PROXY-REQUEST $reg SIP/2.0\n";

print "Priority: urgent\n\n";

}

Page 24: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

47

Programmation de services SIP3

– SIP Servlet– similaire aux servlets HTTP - même propriété

– Encapsulation des messages SIP dans des objets Java, Multi-threading

– Portabilité entre les OS et les serveurspublic class RejectServlet extends SipServletAdapter {

public boolean doInvite(SipRequest req) {

SipResponse res = req.createResponse();

res.setStatus(603);

res.send();

return true;

}

}

– Autre effort : JAIN (cf suite du cours)

48

Passerelle PSTN <-> SIP (1)

Telephone

networkSIP/PSTN gateway

SIP server IP endpointTelephonesubscriber

+1 212 9397063

#Traduction audio (PCMU/PCMA)

#Traduction du signal (PRI/T1,ISUP)#Overlap signaling

#Perte des caractéristiques avancées de SIP in PSTN

#Traduction des identifiers (numéro tel.)#1-212-939xxxx => @itgw1.cs.columbia.edu

Page 25: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

49

Passerelle PSTN <-> SIP (2)

Au debut de la communication lapasserelle reçoit ISUP (Protocole designalisation) du PSTN et emploiel'encapsulation et la traduction dans

les messages SIP envoyés au traversdu réseau VoIP. Pour le proxyl’utilisation du contenu de l'ISUP estdonc ignoré et seulement le contenude SIP est transféré au téléphone

SIP.

50

Agents SIP existants

EZ-Phone Ubiquity SIP Phone

Page 26: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

51

Conclusion sur SIP

• Autres aspects de SIP non abordés– Sécurity (Authentification, cryptage d’entête, du contenu)

– Qualité de services• Pas de réservation des ressources

• Combinaison avec d’autres protocoles: RSVP, COPS (SDP)

– Présence (SUBSCRIBE, NOTIFY méthodes, ...)

– Préférences d’appels• Essayer vidéophone d’abord, ensuite le téléphone, enfin la

messagerie

• Extension du champ CONTACT

– Conference, Facturation

• Plus d’infos sur– http://www.cs.columbia.edu/sip

– http://www.sipcenter.com

52

JAIN - SIP

Gilles Vanwormhoudt

Page 27: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

53

Java API for IntegratedNetworks1

• JAIN est un ensemble d’API Java pour le développementrapide de produits/services de télécoms de la prochainegénération (25 API spécifiés par plus de 80 companies)

• Objectifs– Portabilité des services (Write Once, Run anywhere)

– Abstraction des réseaux pour les applications: (Any network)• réseaux paquets (IP), réseaux circuits (PSTN) et réseaux sans fils

– Accès réseau sécurisé : ouverture controlée et sécurisée descapacités du réseaux aux applications Java

• Vision de JAIN– Faire évoluer le domaine des télécommunications qui repose sur une

architecture de boites matérielles et logicielles propriétaires vers unearchitecture ouverte où les services peuvent être rapidement créés etdéployés, peu importe la plateforme et le réseau

54

JAIN2

Page 28: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

55

Architecture de JAIN

56

Couches d’abstraction JAIN

IPWirelessTelecomm.

SS7 avecapplications

mobiles (MAP)

Mobile SwitchingCenter (MSC)

Base stationcontroller, Home

LocationRegister,...

SIP,MGCP,

Megaco, H323

Réseauintelligent, SS7,

ISUP, TCAP

Couche

réseau

Proxy, Redirect,H323

Gatekeeper, ...

Signaling ServicePoint (SSP)

Couche

signalisation

Serveurd’applications

Internet

Service

Control Point(SCP)

Couche service

Page 29: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

57

APIs JAIN1

58

APIs JAIN2

Page 30: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

59

JAIN Protocol API

• JAIN SS7 API– Fournit des API pour permettre à une application

développée en Java (ex. SCP et SSP) d’accéder auxservices fournis par SS7

– Protocoles supportés: TCAP, ISUP, MAP, INAP

• JAIN IP API– Fournit des API pour permettre à une application

développée en Java (ex: Media gateway, Call Agent,Proxy, Gateway controller) d’établir descommunications avec différents protocoles IP

– Protocoles supportés : H323, MGCP, SIP

60

Principes Architecturauxde JAIN Protocol API

Application

Listener

Event

Provider

Stack

Protocol Stack

JAIN

Protocol

Layer

Page 31: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

61

JAIN JCC/JCAT API

• JCC (Java Call Control) API– API pour le contrôle d’appel en Java

•Création, observation, manipulation, traitement des appels

– Basé sur un modèle d’appel générique supportant dessessions multi-médias, multi-parties et multi-protocoles

• JCAT (Java Coordination and Transaction) API– API pour l’invocation des services/applications avant,

durant et après les appels ainsi que pour le traitementdes paramètres d’appels

62

JAIN JCC/JCAT API

Page 32: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

63

Concepts de JCC/JCAT 1

JCC/JCAT API

64

Concepts de JCC/JCAT 2

Page 33: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

65

JAIN SLEE : Service LogicExecution Environnement1

• Environnement d’exécution générique desservices/applications JAIN (Gateway, Proxy, SCP, SSP)

• Rôle analogue aux serveurs d’applications d’entreprise(exemple conteneur EJB, conteneur Web)

• Conçu et optimisé pour ce type de services/applications– Gestion des évènements très efficace, invocation asynchrones,

transactions légères, …

• Fournit des fonctionnalités communes– Transaction, persistence, régulation de charge, sécurité …

• Facilite le déploiement dynamique de services, leuradministration et leur maintenance

• Fournit une interface JAIN Parlay pour les services àl’extérieur du réseau (untrusted services)

66

JAIN SLEE : Service LogicExecution Environnement2

Page 34: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

67

JAIN SLEE : Service LogicExecution Environnement3

68

JAIN et SIP

• JAIN-SIP– API de bas niveau

basée sur le RFC 2543

• JAIN-SIP Lite– API de haut niveau pour

créér un agent SIP

• JAIN-SIP Servlet– API pour programmer

des servlets SIP

Page 35: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

69

JAIN-SIP

• Interface JAVA standard qui encapsule une pilede signalisation SIP

• Spécification JSR - SUN

• Historique: JSR Approval 1999, Final Aout

• Spécification actuelle : 1.2

• Offre les abstractions du protocole SIP sous-forme d’objets JAVA

• Permet à une application/une servlet ou un beand’embarquer un pile SIP et d’accéder à desfonctionnalités d’appel de bas niveau.

70

JAIN-SIP

• Simplifie la construction des entités SIP– Agents Utilisateurs,

– Serveurs Proxy, Serveur de redirection

• JAIN SIP peut être utilisé dans un agentutilisateur ou un proxy

• Garantit la portabilité des applications entre pileJAIN-SIP via la définition des interfaces et lecomportement à l’exécution (TCK test suite)

Page 36: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

71

Architecture de JAIN-SIP

SIPListeners

SIPProvider SIPProvider

SIPStack SIPStack

SIPListeners

Réseau

EvénementsMessages SIP Messages SIP Evénements

Agent Client Agent Serveur

72

Responsabilités de l’application

• L’application doit utiliser l’interface du provider pour tousaccès à la pile (pas d’accès directe aux couches sous-jacentes)

• L’application doit enregistrer auprès de la pile un ouplusieurs objets implantant l’interface SipListener

• L’application est notifiée de l’arrivée de message SIP, elleest responsable des réponses

• Pour une mode sans état, l’application est responsable dutraitement de retransmission en cas de timeout lié à unmessage

Page 37: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

73

Responsabilités de la pile

• Offre des méthodes pour formater et envoyer desmessages SIP

• Analyse les messages SIP entrants et en construit unreprésentation sous forme objets que l’application peutaccéder et modifier à travers des interfaces Javastandardisés

• Invoque les gestionnaires d’événements de l’applicationquand un événement intéressant se produit

• Fournit le support des transactions

• Gère les transactions et les dialogues pour l’application

74

Vue interne de la Pile SIP

Page 38: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

75

Paquetages JAIN-SIP

• jain.protocol.ip.sip– SipStack, SipProvider, SipListener, ...

• jain.protocol.ip.sip.header:– Fabrique d’entêtes, interfaces pour chaque entête SIP

supportée

• jain.protocol.ip.sip.message– Fabrique de messages : Message, Request, Response

• jain.protocol.ip.sip.address– Fabrique d’adresses : Analyse et construction

d’adresses URL

76

Abstractions JAIN-SIP1

• jain.protocol.ip.sip.SipFactory:– Fabrique pour construire l’objet implantant la Pile et

les autres fabriques d’objets

• jain.protocol.ip.sip.SipStack– Analyse les messages entrants et génère les

évènements associés

– Gère les transactions et génére des événementstimeout associés

– Les objets transactions ne sont pas directementaccessibles par l’application

Page 39: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

77

Abstractions JAIN-SIP2

• jain.protocol.ip.sip.ListeningPoint– Correspond à l’adresse de la pile (UDP/TCP)

– C’est l’adresse IP et le port à partir desquels la pilerecoit et envoie les messages

– La pile peut être configurée pour un ou plusieursListeningpoint

• jain.protocol.ip.sip.Provider– Fournit des facilités pour le programme d’application

(sendRequest, sendResponse, sendAck…)

78

Fabriques d’objets

SipStack

SipFactory

crée

HeaderFactory

AddressFactory

+getInstance

+setPathName

+createSipStack

+createAddressFactory

+createHeaderFactory

+createSipProvider

+getListeningPoints

+createFromHeader

+createToHeader

+createViaHeader

+createContentTypeHeader

+createCSeqHeader

SipProvider

+addSipListener

+getNewCallIdHeader

+sendAck

+sendRequest

+sendResponse

MessageFactory

+createRequest

+createSipURL

+createNameAddress

crée

ListeningPoint*

+getHost

+getPort

Page 40: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

79

JAIN SIP Object Architecture

SIP

Listener

SIP

Factory

Fonction

Initialisation

Pile SIP PropriétairePile SIP

Réseau

SIP

Stack

SIP

Provider

createListener() getInstance()

createStack()createProvider()Event

Registration

80

Abstractions JAIN-SIP3

• jain.protocol.ip.sip.message.Message– Représente un message SIP

– Interface pour extraire le type, les entêtes et lecontenu du message

– Interface pour construire un message

• jain.protocol.ip.header.Header– Représente une entête d’un message SIP

•Entête général : inclus dans requête ou réponse

•Entête de requête

•Entête de réponse

•Entête d’entité : decrit le corps du message SIP

Page 41: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

81

Messages SIP

Message

+getCallIdHeader()

+getBodyAsString()

Request

+getMethod() : String

Response

+getStatusCode() : int

CallIdHeader

+getCallId() : String

MessageFactory

+createRequest(uri, method, …)

+createResponse(status, request,..)

82

L’interface SipListener1

• Tout programme d’applications JAIN-SIP doitimplanter l’interface jain.protocol.ip.sip.SipListener

• Un programme peut être client et serveur (proxy)

public interface SipListener extends java.util.EventListener

{

public void processResponse(SipEvent responseReceivedEvent);

public void processRequest(SipEvent requestReceivedEvent);

public void processTimeOut(SipEvent transactionTimeoutEvent);

}

• SipEvent représente une événement transmis à tousles listeners (accès identifiant transaction + message)

Page 42: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

83

L’interface SipListener2

SipProvider

+addSipListener( :SipListener )

<<interface>>

SipListener

+processRequest( :SipEvent )

+processResponse( :SipEvent )

+processEvent( :SipEvent )

Notifie

SipEvent

+getTransactionId() : long

+getMessage() : Message

MonApplicationSip

+processRequest( :SipEvent )

+processResponse( :SipEvent )

+processEvent( :SipEvent )

Abonné

84

Squelette d’applicationsJAIN-SIP1

1. Creation d’une instance de SIPFactory

2. Creation d’une instance de pile SIP

sipFactory = SipFactory.getInstance();

sipFactory.setPathName("gov.nist");

try {

sipStack = sipFactory.createSipStack();

} catch(SipPeerUnavailableException e) {

System.exit(-1);

} catch(SipException e) {

System.exit(-1);

}

Page 43: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

85

Squelette d’applicationsJAIN-SIP2

3. Création des fabriques d’entête et de messagesHeaderFactory headerFactory =

sipFactory.createHeaderFactory();

AddressFactory addressFactory =

sipFactory.createAddressFactory();

MessageFactory messageFactory =

sipFactory.createMessageFactory();

Listening listeningPoint =

sipStack.createListeningPoint(port,format);

SipProvider sipProvider =

sipStack.createSipProvider(listeningPoint);

4 Création d’un provider associé à un port

86

Squelette d’applications JAIN-SIP3

5 Construction & envoi des messages5.1 Construction des entêtes du message

fromAddress = addressFactory.createSipURL("caller",

sipProvider.getListeningPoint().getHost());

fromAddress.setPort(sipProvider.getListeningPoint().getPort());

fromNameAddress = addressFactory.createNameAddress

("Caller", fromAddress);

fromHeader =

headerFactory.createFromHeader(fromNameAddress);

contentTypeHeader =

headerFactory.createContentTypeHeader("application", "sdp");

...

Page 44: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

87

Squelette d’applications JAIN-SIP3

5.2 Construction du message

callIdHeader = sipProvider.getNewCallIdHeader();

cSeqHeader =

headerFactory.createCSeqHeader(1,Request.INVITE);

invite = messageFactory.createRequest(requestURI,

Request.INVITE, callIdHeader,cSeqHeader,

fromHeader, toHeader, viaHeaders);

invite.setBody("b=32000", contentTypeHeader);

88

Squelette d’applications JAIN-SIP4

5.3 Envoi de messages

transactionId = sipProvider.sendRequest(invite);

// Le résultat d’une émission de requête est un identifiant de

transaction. Une transaction est un échange de messages

sipProvider.sendResponse( transactionId, Response.OK, strBody ,

« application!», «!sdp!»);

// L’émission d’une réponse nécessite un identifiant de transaciton,

le code statut de la réponse, le corps de la réponse, le type mime

sipProvider.sendAck( clientTransactionId );

// L’emission d’un accusé de réception nécessite un identifiant

Page 45: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

89

Squelette d’applications JAIN-SIP5

• Traitement des requêtes (serveur, proxy)

public void processRequest(SipEvent requestReceivedEvent) {

Request request = (Request)requestReceivedEvent.getMessage();

long serverTransactionId = requestReceivedEvent.getTransactionId();

try {

if (request.getMethod().equals(Request.INVITE))

processInvite(request,serverTransactionId);

else if (request.getMethod().equals(Request.ACK))

…..

} catch (SipParseException ex) {

ex.printStackTrace();

}

}

90

Squelette d’applications JAIN-SIP6

• Traitement des réponses (client, proxy)

public void processResponse(SipEvent responseReceivedEvent) {

Response response = (Response)responseReceivedEvent.getMessage();

long clientTransactionId = responseReceivedEvent.getTransactionId();

try {

String method = response.getCSeqHeader().getMethod();

int statusCode = response.getStatusCode();

if((statusCode == Response.OK) &&

(method.equals(Request.INVITE))) {

sipProvider.sendAck(clientTransactionId);

}

else ...

} catch(SipException e) { }

}

Page 46: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

91

Transactions JAIN-SIP

• Une transaction SIP est constitué (RFC 2543)– d’une seule requête

– de zero, une ou plusieurs réponses provisionnelles

– D’une ou plusieurs réponses finales

• Le protocole SIP fournit suffisamment d’éléments dans lesmessages SIP pour extraire l’identifiant de transaction

• JAIN-SIP identifie les transactions par un entier long

• Les transactions sont associés :– En émission avec toutes les méthodes sipProvider.sendXXX

– En réception avec les évènements SipEvent des méthodesSipListener.processRequest(SipEvent)

SipListener.processResponse(SipEvent)

SipListener.processTimeout(SipEvent)

92

Transactions Client/Serveur

Serv

er transactio

n

Clien

t transactio

n

Clien

t transactio

n

Serv

er transactio

n

Statefull proxyUAC UAS

Page 47: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

93

Exemple :Third Party Call Control

94

Références

• Articles sur JAIN dans IEEE Communications Magazine

• Site de référence sur JAIN

http://java.sun.com/products/jain/

• JAIN SIP Specification:

http://jcp.org/jsr/detail/032.jsp

• JAIN-SIP Discussion List:

mailto:[email protected]

• NIST IP-Telephony Project page (NIST-SIP):

http://is2.antd.nist.gov/proj/iptel

Web-based protocol tester (in development):

http://is2.antd.nist.gov:8080/webtester/setup.html

Page 48: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

95

Travaux Pratiques (1)

• Etablissement d’un circuit de transport voix sur IP– Négociation de débit, calcul de durée de la com

96

Travaux pratiques (2) :Déploiement

• Déployer et tester l’architecture SIP– en mode direct (sans proxy)

– en mode indirect (avec proxy)

Sip

Rtp

UAC UAS

UASUAC

Rtp

Sip

Sip

Proxy

Page 49: Pr ambule (1)snight.free.fr/r%E9visions%20bastien/R%E9seaux/R%E9seaux/A45/... · Signalisation sur IP ¥Ç La signalisation concerne lÕ ensemble des informations ... ÐR seau intelligent

97

Travaux pratiques (3) :Programmation

• Implanter la négociation de débit et le calcul de durée

• Groupe 1 de binômes– développement de l’Agent Utilisateur Client

• Groupe 2 de binômes– développement de l’Agent Utilisateur Serveur

• Implantation NIST de l’API Jain-SIP

• Squelette de code JAVA à compléter

• Wapiti - Module A45 - Travaux Pratiques