Servizi Applicativi su Internet - UniPapg/pg/Teaching_files/02 SIP2.pdf · Servizi Applicativi su...
Transcript of Servizi Applicativi su Internet - UniPapg/pg/Teaching_files/02 SIP2.pdf · Servizi Applicativi su...
SIP Session Initiation Protocol Ing. Pierluigi Gallo
Servizi Applicativi su Internet
Introduzione 1/2
Protocollo di segnalazione basato su IP
Standard IETF (poi accettato anche da 3GPP)
Utilizza alcuni paradigmi e strumenti di Internet (URL, DNS, proxy, …)
Protocollo di controllo e segnalazione per la gestione delle sessioni tra utenti
Registrations, invitations, acceptations, and disconnections
Non dipende dai protocolli di livello inferiore(TCP, UDP, X.25, ATM, …)
2
a.a. 2010/2011 Ing. Pierluigi Gallo
Introduzione 2/2
1996 - Henning Schulzrinne, Mark Handley
Prima RFC nel 1999 (RFC n. 2543)
RFC 3261 del 2000
Alternativa ad H.323
Flessibile e semplice
Offre funzionalità avanzate
Consente di gestire sessioni I cui dati possono essere di diverso tipo: Audio (Fonia) Video Instant messaging Notifica presenza
3
a.a. 2010/2011 Ing. Pierluigi Gallo
SIP - Session Initiation Protocol Controlla la segnalazione su reti IP
Determina la locazione del terminale chiamato
Determina la sua eventuale disponibilità
Supporta trasferimento e terminazione chiamata
E’ basato su un modello client-server
E’ un protocollo text-based (come HTTP) basato su richieste/risposte
Inizia, modifica e termina la sessione
Assume che il livello di trasporto sia inattendibile
Non definisce attributi di sessione
rimanendo indipendente
Supporta servizi unicast e multicast
Supporta la mobilità
Usato per il VoIP
4
a.a. 2010/2011 Ing. Pierluigi Gallo
SIP ed il livello applicazione
Livello applicazione DHCP, HTTP, HTTPS , SMTP, POP3, IMAP, FTP, SFTP, DNS,
SSH, IRC, SNMP, SIP, RTSP, Rsync, Telnet, HSRP, RTP, BGP, RIP, IGRP,...
Livello di trasporto TCP, UDP, SCTP, DCCP ...
Livello di rete IPv4, IPv6, ICMP, ICMPv6, IGMP, IPsec, OSPF ...
Data link Ethernet, WiFi, PPP, Token ring, ARP, ATM, FDDI,
LLC, SLIP, WiMAX, HSDPA, MPLS ...
5
a.a. 2010/2011 Ing. Pierluigi Gallo
Caratteristiche E’ un protocollo di livello applicazione
Supporta i seguenti protocolli: SDP (Session Description Protocol) per negoziare
le caratteristiche della sessione multimediale RTP (Real-time Transport Protocol) per il trasporto
dei dati multimediali RTSP (Realt-Time Streaming Protocol) RTCP (Real Time Control Protocol) per monitorare
la qualità del servizio e per comunicare informazioni sui partecipanti di una sessione in corso
MGCP (Media Gateway Control Protocol) per controllare un eventuale accesso alla PSTN
SAP (Session Announcement Protocol)
6
a.a. 2010/2011 Ing. Pierluigi Gallo
Caratteristiche Porta di default 5060 (TCP UDP) non criptato
porta 5061 (TLS) criptato
sessioni unicast e multicast
ciascuna sessione puo’ riguardare uno o piu’ flussi multimediali
I flussi multimediali sono trasportati da altri protocolli RTP/RTSP (SIP si occupa solo della segnalazione)
I parametri vengono negoziati mediante altri protocolli porte, protocolli, codec,
7
a.a. 2010/2011 Ing. Pierluigi Gallo
Applicazioni
chiamate voce
videoconferenze
instant messaging
presence notification
trasferimento files
giochi online
mobilita’
a.a. 2010/2011 Ing. Pierluigi Gallo
8
Altri protocolli di segnalazione
segnalazione PSTN
a.a. 2010/2011 Ing. Pierluigi Gallo
9
Architettura
Segnalazione e dati viaggiano in flussi differenti
UAC: user agent client che fa le richieste
UAS: user agent che risponde alle richieste
10
CHIAMANTE CHIAMATO
UAC
UAS
UAS
UAC
SIP PROXY
UAC
UAC
UAS INVITE INVITE
BYE
a.a. 2010/2011 Ing. Pierluigi Gallo
11 SIP: Funzionalità di base
User location: dispositivo terminale usato per la comunicazione
User capabilities: mezzo e parametri di trasmissione
User availability: capacità, disponibilità e volontà del chiamato di stabilire la comunicazione
Call setup: "ringing", instaurazione di una chiamata tra chiamante e chiamato (in modo simile alla PSTN)
Call handling: gestione della chiamata dall’instaurazione all’abbattimento
a.a. 2010/2011 Ing. Pierluigi Gallo
Lo stack protocollare SIP
Network Access Layer (ATM, Ethernet, PPP, …)
IP
UDP o TCP (tipicamente su porta 5060)
RTP/RTCP
Audio/Video Coding
SIP
12
a.a. 2010/2011 Ing. Pierluigi Gallo
Elementi del sistema SIP
UA - User Agent UAC - User Agent Client (per l’invio delle richieste) UAS - User Agent Server (per ricevere i messaggi ed
inviare le risposte)
Registrar Server (contiene le informazioni di accesso agli UA per la risoluzione degli indirizzi SIP)
Location Server (contiene le corrispondenze tra gli UA e gli indirizzi Ip e consente una loro variazione dinamica per gestire la mobilità)
Network Server Proxy Redirect
13
a.a. 2010/2011 Ing. Pierluigi Gallo
Indirizzi SIP
Sono identificati attraverso un URL (Universal Resource Locator) SIP
Il formato è identico a quello degli indirizzi e-mail:
user@host Nome utente Oppure Numero di telefono
Nome Dominio Oppure Indirizzo IP
Esempi: [email protected] [email protected];user=phone nomeutente:password@host:port;uri-parameters?headers
14
a.a. 2010/2011 Ing. Pierluigi Gallo
Messaggi:
• Messaggi di testo simili all’HTTP • Start line
– Request (client-server) – Response (server-client)
• Uno o più campi di header • Chiamante e chiamato • oggetto
• Una linea vuota che simboleggia le fine degli header
• Message body (opzionale) • Tipo di sessione • Tipo di protocollo
15
a.a. 2010/2011 Ing. Pierluigi Gallo
Message – Transaction - Dialog
• Un messaggio è una richiesta o una risposta
• L’insieme di una richiesta e della/e successiva/e risposta/e viene detta Transaction
• Una transazione è individuata da una transaction-ID che tiene conto della sorgente, del destinatario e del numero di sequenza
• Una relazione tra entità paritetiche che si scambiano richieste e risposte viene detta Dialog
16
a.a. 2010/2011 Ing. Pierluigi Gallo
Metodi Sono composte da: Metodi Request URI (Universal Resource Identifier) Versione del protocollo SIP in uso
I metodi possibili sono: Invite Ack Options Bye Cancel Register Info
17
a.a. 2010/2011 Ing. Pierluigi Gallo
Metodi
Un messaggio SIP contiene un metodo
Dopo I metodi vengono gli headers
Riga vuota
Headers del protocollo SDP
18
a.a. 2010/2011 Ing. Pierluigi Gallo
Richieste
19
a.a. 2010/2011 Ing. Pierluigi Gallo
Register
Consente ad un client di registrare su un register server un utente identificato dall’indirizzo contenuto nel campo to
Registrazione su più server
diverse registrazioni su un unico server
20
a.a. 2010/2011 Ing. Pierluigi Gallo
Invite
Inizia una sessione invitando il chiamato a parteciparvi
Indicazione del chiamante e del chiamato
Specifica il tipo di dati
Contiene, tipicamente, una descrizione di sessione scritta in SDP, con le informazioni sufficienti all’instaurazione della connessione
Viene confermato con un ACK sulla risposta finale
21
a.a. 2010/2011 Ing. Pierluigi Gallo
Cancel
Permette ad un client di cancellare una richiesta inviata precedentemente
Termina una richiesta pendente
Si usa cancel quando la sessione non ha ancora avuto inizio, altrimenti BYE
22
a.a. 2010/2011 Ing. Pierluigi Gallo
BYE
Abbatte una sessione (Dialog)
Può essere inviato sia dal chiamante che dal chiamato
23
a.a. 2010/2011 Ing. Pierluigi Gallo
Info
• Permette lo scambio di informazioni personali lungo un percorso di segnalazione
• Consente lo scambio di informazioni di sessioni in corso
• DTMF
24
a.a. 2010/2011 Ing. Pierluigi Gallo
Risposte
25
a.a. 2010/2011 Ing. Pierluigi Gallo
Risposte
Sei classi di risposte: Informational 1XX Success 2XX Redirection 3XX Request Failure 4XX Server Failure 5XX Global Failure 6XX Tutte le risposte eccetto le 1xx sono considerate
final e quindi vanno seguite da ACK
26
a.a. 2010/2011 Ing. Pierluigi Gallo
Informational 1XX Viene inviato quando il server sta contattando il
chiamato e il tempo risulta superiore a 200ms
Esempio: 180 - ringing - l’utente localizzato è in attesa di risp.
Trying
Success 2XX • Indica che la richiesta è stata accettata con
successo • Esempio: 200 - messaggio di OK
Redirection 3XX • Vengono passate informazioni riguardo alla nuova
posizione dell’utente cercato
27
a.a. 2010/2011 Ing. Pierluigi Gallo
Request Failure 4XX Richiesta fallita a causa del client
Esempio: 404 - not found - utente non reperibile
Server Failure 5XX • Richiesta fallita a causa del server • Esempio: 501 - not implemented - il server non
supporta le modalità necessarie per soddisfare la richiesta
Global Failure 6XX • Il server non risponde ad informazioni definitive
28
a.a. 2010/2011 Ing. Pierluigi Gallo
SIP Diagram
A B Proxy Proxy
(Registrar local services)
……. ……. …….
Register 200 Ok
Register 200 Ok
Invite 100 Trying Invite
100 Trying Invite 180 Ringing
180 Ringing 180 Ringing
200 Ok 200 Ok
200 Ok
Ack Media Session
Bye 200 Ok
29
a.a. 2010/2011 Ing. Pierluigi Gallo
Registrar server
Server dedicato alla registrazione di un utente alla rete
Puo’ essere integrato all’interno del Proxy
le richieste di registrazione vengono memorizzate all’interno dei location server, i quali forniscono la corrispondenza tra indirizzo e location
Una registrazione puo’ essere effettuata in multicast (sip.mcast.net 224.0.1.75)
30
a.a. 2010/2011 Ing. Pierluigi Gallo
Registration and invite 31
Tratto dalla RFC 3261
a.a. 2010/2011 Ing. Pierluigi Gallo
Processo di registrazione 32
REGISTER sip:registrar.work.com SIP/2.0
REGISTER sip:registrar.work.com SIP/2.0 Via: SIP/2.0/UDP station1.work.com; branch=z9hG4bK123 Max-Forwards: 70 From: SIP: [email protected];tag=123456 To: sip:[email protected] Call-ID: [email protected] Cseq: 1 REGISTER Contact: sip: [email protected] Expires: 7200 Content-Length: 0
SIP/2.0 200 OK
SIP/2.0 200 OK Via: SIP/2/0/UDP station1.work.com; branch=z9hG4bK123 From: sip:[email protected] Call-ID: [email protected] CSEQ: 1 REGISTER Contact: sip:[email protected] Expires: 3600 Content-Length: 0
a.a. 2010/2011 Ing. Pierluigi Gallo
Proxy server
Gestisce le richieste o le inoltra ad altri server
Può essere usato per inoltrare una chiamata
33
Ing. Pierluigi Gallo
Redirect servers
Map the destination address to zero or more new addresses
Do not initiate any SIP requests
34
a.a. 2010/2011 Ing. Pierluigi Gallo
35 SIP Call Establishment
a.a. 2010/2011 Ing. Pierluigi Gallo
Chiamata ad un numero
Prova a chiamare lo stesso utente su più destinazioni
Il primo che risponde va a buon fine, gli altri vengono chiusi
36
a.a. 2010/2011 Ing. Pierluigi Gallo
Header:
Consente di specificare: Chiamante Chiamato Percorso Tipo di messaggio
Il protocollo prevede 37 tipi di intestazioni, divisi in 4 gruppi: Intestazioni generale (richieste e risposte) Intestazioni di entità (relative a tipo e lunghezza del
messaggio) Intestazioni di richiesta (consentono informazioni di
richiesta aggiuntive) Intestazioni di risposta (consentono informazioni di
risposta aggiuntive)
37
a.a. 2010/2011 Ing. Pierluigi Gallo
Gestione della mobilità
Il messaggio Register consente la registrazione di uno UA nel Registrar Server della rete corrente
Il Registrar Server può essere individuato: Mandando un messaggio multicast ad un indirizzo
noto
Contattando l’Home Domain Registrar (individuabile attraverso il server DNS)
Usando SLP (Server Location Protocol)
SLP è stato progettato per facilitare l’operazione di discovery di risorse della rete quali Web Servers, stampanti, fax…
38
a.a. 2010/2011 Ing. Pierluigi Gallo
Uno scenario di funzionamento UA UA Proxy/Registrar
Server Register
200 OK Registration
Call Setup
Invite
100 Trying Invite
180 Ringing 180 Ringing
200 OK 200 OK
Ack Ack
Bye
Teardown
Bye 100 Trying
200 OK 200 OK
39
a.a. 2010/2011 Ing. Pierluigi Gallo
Dettaglio di un pacchetto “Invite”
INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP vo1.hq.university.com To: Bob <sip:[email protected]> From: Alice <sip:[email protected]>; tag=18271 Call-ID: [email protected] CSeq: 12921 INVITE Contact: <sip:[email protected]>
Alice invita Bob. Il pacchetto Invite viene inoltrato dallo UA di Alice al proxy server vo1.hq.university.com. La chiamata viene indentificata univocamente grazie al campo Call-ID.
40
a.a. 2010/2011 Ing. Pierluigi Gallo
Transactions
41
a.a. 2010/2011
Ing. Pierluigi Gallo
Transazione 42
Clie
nt
tra
nsa
ctio
n
UAC
Serv
er t
ran
sac
tion
UAS
Clie
nt
tra
nsa
ctio
n
Outbound Proxy
Serv
er t
ran
sac
tion
Clie
nt
tra
nsa
ctio
n
Inbound proxy
Serv
er t
ran
sac
tion
request request request
response response response
a.a. 2010/2011 Ing. Pierluigi Gallo
Client Transaction Una client transaction é implementata con una
State Machine
TU = transaction user (ogni entita’ SIP eccetto i proxy stateless)
Quando TU vuole iniziare una nuova transaction, crea una client transaction la quale inizia l’esecuzione di una macchina a stati (ce ne sono diverse in base al tipo di transaction)
Due tipi di client transaction INVITE transaction (relativa ad una richiesta INVITE) hanno una durata maggiore rispetto a quelle di altro
tipo in quanto richiedono l’intervento umano per accettare la chiamata
Non-INVITE transaction (per gli altri tipi di richieste) Terminano immediatamente
43
a.a. 2010/2011 Ing. Pierluigi Gallo
INVITE transaction
A B Proxy Proxy
(Registrar local services)
……. ……. …….
Register 200 Ok
Register 200 Ok
Invite 100 Trying Invite
100 Trying Invite 180 Ringing
180 Ringing 180 Ringing
200 Ok 200 Ok
200 Ok
Ack Media Session
Bye 200 Ok
44
3-way handshake
a.a. 2010/2011 Ing. Pierluigi Gallo
INVITE transaction
Se il protocollo di trasporto é inaffidabile (UDP), la client transaction ritrasmette le richieste con un intervallo che inizialmente é T1 e poi va raddoppiando ad ogni ritrasmissione
Se il protocollo di trasporto é affidabile -> no ritrasmissione
T = 2n Ti con n = numero di ritrasmissioni
Ti é l’RTT stimato (default 500 ms)
Ti influenza tutti gli altri timers
Dopo la ricezione di un messaggio 1XX cessano le ritrasmissioni
45
a.a. 2010/2011 Ing. Pierluigi Gallo
FSM INVITE transaction 46
RFC 3261
a.a. 2010/2011 Ing. Pierluigi Gallo
SIP Model (1)
Simplified message formats:
REGISTER <Domain> <To> <From> <Contact(device)>
OK <To> <From>
INVITE <To> <From><Via><Content>
BYE <To> <From>
ACK <To> <From>
47
a.a. 2010/2011 Ing. Pierluigi Gallo
SIP: aspetti di sicurezza
Model SIP URI registration and look for registration hijack attacks.
Model interdomain session setup and look for message tampering and proxy impersonation attacks.
Add proxy-to-proxy authentication and secrecy (TLS) to model.
48
a.a. 2010/2011 Ing. Pierluigi Gallo
Authentication
Server Authentication: using TLS: server offers a certificate to the UA, preventing proxy impersonating
User Authentication: using HTTP digest: server challenges a user with a 401 Proxy Authentication, preventing registration hijacking
49
a.a. 2010/2011 Ing. Pierluigi Gallo
Secretezza del messaggio
Mechanisms that rely on existence of end-user certificates are seriously limited (S/MIME).
May use self-signed certificates Susceptible to obvious MITM attack, but… Attacker can only exploit on initial key
exchange. Difficult for attacker to remain in path of all
future dialogs. Same vulnerability in SSH => key fingerprints. For VoIP, users could read off key fingerprint.
Or, use preconfigured certificates when there is an established trust between all SIP entities.
50
a.a. 2010/2011 Ing. Pierluigi Gallo
Attacchi DoS
Floods of messages directed at proxies can lock up resources on the server.
UAs and proxies should challenge questionable requests.
Mutual authentication of proxies (TLS) Reduces potential for intermediaries to introduce
falsified requests or responses. Harder for attackers to make innocent SIP nodes into
agents of amplification.
51
a.a. 2010/2011 Ing. Pierluigi Gallo
SIP Vulnerabilities
Proxy Impersonation
Message Tampering
Session Teardown Spoofed BYEs
Denial of Service Malformed packets
REGISTER and INVITE flooding
Registration Hijacking
52
a.a. 2010/2011 Ing. Pierluigi Gallo
SIP Security Registration hijacking Authenticate originators of requests
Proxy impersonation Authenticate servers
Message tampering Secure body and certain headers end-to-
end
Session teardown Authenticate sender of BYE Confidentiality so attacker can’t learn To,
From tags
Denial of Service Authenticate and authorize registrations
53
a.a. 2010/2011 Ing. Pierluigi Gallo
Esercitazione UA, Proxy, Java API e programmazione
54
a.a. 2010/2011
Ing. Pierluigi Gallo
Esercitazione SIP
Visualizzazione dei messaggi tramite Wireshark
Utilizzo di un SIP client (softphone e.g. Xlite)
Le JAIN API ed implementazione di un semplice UA
55
a.a. 2010/2011 Ing. Pierluigi Gallo
Software SIP open source
Server: Sip X
SER – Sip Express Router
Asterisk
User Agents: X-Lite
SoftPhone
Windows Messenger
56
a.a. 2010/2011 Ing. Pierluigi Gallo
Jain: API Java per SIP
Fornisce un’interfaccia standard in Java allo stack di segnalazione SIP – interfaccia allo stack – interfaccia ai messaggi – gestione degli eventi e della loro semantica – garantisce la portabilità delle applicazioni
API in Java per SIP
57
a.a. 2010/2011 Ing. Pierluigi Gallo
Caratteristiche del Server:
Configurabilità dello stack SIP
Implementazione del Location/Registrar Accessibilità controllata dall’amministratore
Gestione dinamica dei bind secondo le specifiche di protocollo
Implementazione del Proxy Statefull
Stetelless
58
a.a. 2010/2011 Ing. Pierluigi Gallo
Implementazione del Registrar
Dall’RFC 3261: When receiving a REGISTER request, a
registrar follows these steps: The registrar inspects the Request-URI to
determine whether it has access to bindings for the domain identified in the Request-URI.
The registrar extracts the address-of-record from the To header field of the request. If the address-of-record is not valid for the domain in the Request-URI, the registrar MUST send a 404 (Not Found) response and skip the remaining steps.
59
a.a. 2010/2011 Ing. Pierluigi Gallo
Implementazione del Registrar (2)
Dall’RFC 3261: The registrar now processes each contact address in
the Contact header field in turn. For each address, it determines the expiration interval
The registrar returns a 200 (OK) response. The response MUST contain Contact header field values enumerating all current bindings.
60
a.a. 2010/2011 Ing. Pierluigi Gallo
Implementazione del Proxy (1)
Dall’RFC 3261: For all new requests, including any with unknown
methods, an element intending to proxy the request MUST:
1. Validate the request
2. Preprocess routing information
3. Determine target(s) for the request
4. Forward the request to each target
5. Process all responses
61
a.a. 2010/2011 Ing. Pierluigi Gallo
Implementazione del Proxy (2)
Dettaglio del “Forward the request to each target” (dall’RFC 3261): 1. Make a copy of the received request 2. Update the Request-URI 3. Update the Max-Forwards header field 4. Optionally add a Record-route header field value 5. Optionally add additional header fields 6. Postprocess routing information
62
a.a. 2010/2011 Ing. Pierluigi Gallo
Implementazione del Proxy (3)
Dall’RFC 3261: 7. Determine the next-hop address, port, and
transport
8. Add a Via header field value
9. Add a Content-Length header field if necessary
10. Forward the new request
11. Set timer C
63
a.a. 2010/2011 Ing. Pierluigi Gallo
Link utili
SIP Center: www.sipcenter.com
SIP Forum: www.sipforum.org
Lista di Server Pubblici SIP:
www.cs.columbia.edu/sip/servers.html
GNU o SIP library:
www.fsf.org/software/osip/
64
a.a. 2010/2011 Ing. Pierluigi Gallo