Telephony in the XXI century
VoIP and VoLTE
Come e dove VoIP?
Percezione Valore
• VoIP = telefonia digitale su rete IP Eccellente 5
• Richiede: Buono 4
Sufficiente 3
• Digitalizzazione e compressione del segnale vocale Insufficiente 2
• Terminali e segnalazione connessi a rete IP Scarso 1
• Rete IP per il trasporto
Codec Kbit/s MOS
G.711 80 4.3-4.7
G.726-32 48 3.9-4.2
G.729A 24 3.6-3.7
G.723.1 17 3.4-3.5
GSM 27 3.7-3.9
iLBC 27 3.7-4.1
2
Voce su rete IP
• IP trunking
• Tecnologia IP (commutazione di pacchetto) su collegamenti della rete di trasporto
• Non ha impatto sulla rete di accesso e sull’utente
• I terminali sono quelli tradizionali
• Può avere impatto sulla tariffazione
• Telefonia IP
• Tecnologia IP per la fornitura del servizio di telefonia
• Ha impatto sulla rete di accesso e sulla rete di trasporto
• Terminali di utente IP
• Segnalazione IP
• Gestione su rete IP
Standard VoIP per terminali/segnalazione
• Standard ITU basato su H.323
• Standard molto completo ed ambizioso ma conseguentemente abbastanza complesso
• I trend attuali lo indicano obsolescente
• Standard IETF basato su protocollo SIP
• Strutturata gerarchica a domini
• Ogni organizzazione controlla il proprio dominio telefonico
• I domini telefonici comunicano tramite rete IP
• Integrato in IMS e parte del VoLTE (Voice over LTE)
• Skype, Whatsup, Telegram (e simili) basato su protocollo proprietario
• Tecnologia P2P
• Tutti gli utenti appartengono alla stesse rete
• Non gerarchico, poco adatto per essere integrato in una struttura aziendale
4
Session Initiation Protocol
• Breve storia
• Primo draft nel Dicembre del 1996
• Sforzo per unire SIP e SCIP
• IETF WG MMUSIC
• (Multiparty MUltimedia SessIon Control)
• RFC 2543 (Febbraio 1999)
• RFC 3261 (Giugno 2002)
• RFC 3261 : “… an application-layer control (signaling) protocol for
creating, modifying, and terminating sessions with one or more
participants…”
SIP: architettura
PSTN
SIP
Gateway ISDN
Entità amministrativa
SIP UA
(SIP domain)
SIP
Redirect / Gateway
Proxy Location SIP UA GSM
Registrar
Server
Server
SIP
Gateway
Rete IP locale SIP UA
H.323
Endpoint Endpoint Endpoint
SIP UA SIP UA SIP UA
Protocollo Stateful su base transazione
A B
Request
crea crea
transaction transaction
state Provisional Responses state
distruggi distruggi
Final Response transaction
transaction
state state
• Approccio: • Identificativo univoco (transaction
– Request iniziale ID) (origine, destinazione, unique
– Attesa di Final Response token, sequence number, …)
• Provisional Responses: • Completamento indipendente della
– Informazioni aggiuntive transaction
– Possono essere inaffidabili
Dialoghi
una transaction indica
• Signalling vs. media session inizializza
transizione di stato
dialog
• Stato distribuito tra gli endpoint crea dialog
stabilisci
• Lo stato cambia se la transazione riesce dialog
• Nessun cambiamento in caso di errore
• Unique dialog identifier
A B
crea dialog create crea dialog
modifica modifica
modify
dialog dialog
modify
distruggi distruggi
dialog destroy dialog
Esempio di dialogo
A B
prepara media
INVITE Early dialog
session Ringing crea media
Early dialog session, dialog
OK
stabilisci media
session, dialog
ACK
sessione
multimediale
sessione Media Streams attiva
multimediale
attiva
BYE termina media
termina media session
session; OK
distruggi
distruggi dialog dialog
Caso particolare: le
transaction INVITE
richiedono un three-
way handshake.
Indirizzamento in SIP
• Seguono lo schema base per gli URI (sintassi RFC 2396)
• Separazione tra il “naming ” (permanente) e gli indirizzi di localizzazione
(temporanei)
• Supporto base per la mobilità
• Due ruoli del SIP URI
• Definire nominalmente un utente (Naming):
• sip:user:password@host:port;uri-parameters?headers
• Fornire le informazioni per contattare un utente (nome host o l’indirizzo IP, numero
di porta, protocollo di trasporto, ...)
• sip:bob@[Link]
• Gli URI SIP
• Possono portare parametri addizionali
• Possono identificare servizi
• Possono richiedere una comunicazione sicura, URI ‘sips’
Esempi
• Domain o indirizzo IP
• sip:[Link]
• sip:[Link]
• SIP URI da chiamare (Registro degli indirizzi)
• sip:bob@[Link]
• SIP Contact Address (locazione attuale)
• sip:bob@[Link]
• sip:bob@[Link]:9950
• Service identifier; semantica opaca all’utente
• sip:voicemail@[Link]
• sip:conf-1234@[Link]
• sip:user34@[Link]
• I parametri nell’URI possono portare informazioni aggiuntive:
• sip:bob@[Link];maddr=[Link]
• sip:+1555123456@[Link];user=phone
Sintassi del messaggio: Richiesta
Start line INVITE sip:user@[Link] SIP/2.0
To: Bob <sip:bob@[Link]>
From: Alice<sip:alice@[Link]>;
tag=4711
Max-Forwards: 70
Intestazione messaggio Content-Length: 117
Content-Type: application/sdp
(header)
Call-ID: 2342344233@[Link]
Cseq: 49581 INVITE
Contact: sip:alice@[Link]:5083;
transport=udp
Via: SIP/2.0/UDP [Link];
branch=z9hG4bK776asdhds
Message body v=0
(contenuto SDP) o=jo 75638353 98543585 IN IP4 [Link]
s=SIP call
t=0 0
c=IN IP [Link]
m=audio 47654 RTP/AVP 0 1 4
Sintassi del messaggio: Richiesta
• Start line -> Request-Line
• Method (SP)
• Request-URI (SP)
• Versione del protocollo SIP (CRLF) • Method : tipo di messaggio che si intende inviare (RFC3261)
• Header • INVITE Avvia una chiamata (crea un Dialogo)
• Specifica le intestazioni del messaggio: transaction, dialog • RE-INVITE, solo per Dialoghi confermati
etc.. • ACK Conferma di un messaggio ricevuto (non nella transaction)
• La transaction ID può essere diversa, i parametri del dialogo sono quelli
• Body dell’INVITE
• Contenuto del messaggio SIP (es: email, HTTP) • BYE Termina o trasferisce la chiamata (Distrugge il Dialogo)
• Solo per Dialoghi confermati
• SP: spazio singolo
• CANCEL Cancella ricerche o lo stato di ringing
• Solo per dialoghi non confermati
• OPTIONS Caratteristiche supportate dall'inviante
• REGISTER Registra presso un server
• UPDATE aggiorna un dialogo non stabilito (simile ad INVITE)
• Solo per dialoghi non confermati
Sintassi del messaggio : Risposta
Start line SIP/2.0 200 OK
To: Bob <sip:bob@[Link]>;tag=428
From: Alice <sip:alice@[Link]>;
tag=4711
Subject: Congratulations!
Intestazione messaggio Content-Length: 121
Content-Type: application/sdp
(header)
Call-ID: 2342344233@[Link]
Cseq: 49581 INVITE
Contact: sip:bob@[Link]
Via: SIP/2.0/UDP [Link];
branch=z9hG4bK776asdhds
Message body v=0
o=jdoe 28342 98543601 IN IP4 [Link]
(contenuto SDP) s=SIP call
t=0 0
c=IN IP [Link]
m=audio 61002 RTP/AVP 0 4
Sintassi del messaggio: Risposta
• Start line -> Status-Line
• Versione SIP (SP)
• Status-Code (SP)
• Indicazione ragione (CRLF)
• Header
• Specifica le intestazioni del messaggio: transaction, dialog etc..
• Body
• Contenuto del messaggio SIP (generalmente omesso)
• Codice di stato: il risultato del tentativo di interpretare e soddisfare la richiesta,
composto da 3 cifre decimali. Processamento in automatico
2008 Aldo Campi
Sintassi del messaggio: Risposta
• La prima cifra definisce la classe di risposta, XX sono cifre numeriche proprie di una determinata
azione.
• 1xx Provisional: in ricerca, squillo, accodato (100 Trying, 180 Ringing)
• 2xx Success: (200 OK)
• 3xx Redirection: forwarding (302 Moved temporarily)
• 4xx Client Error: errori lato client (404 User not Found)
• 5xx Server Error: errori lato server (500 Internal Server Error)
• 6xx Global Failure:occupato, rifiutato, non disponibile (603 Decline)
• Tipi di risposte
• Provvisorie: non terminano una transaction (1xx)
• Definitive: terminano una transaction (2xx, 3xx,4xx,5xx, 6xx)
• 3xx,4xx,5xx: indicano informazioni “provvisorie” per il dialogo
• 2xx, 6xx: avviano o chiudono definitivamente il dialogo
• Indicazione ragione: una descrizione testuale del codice di stato, per l’interazione con l’utente
• Il client non è obbligato ne a mostrare ne a processare la Reason-Phrase (es: linguaggi differenti)
2008 Aldo Campi
Headers
• Formato dei campi header:
• field-name: field-value *(;parameter-name=parameter-value)
• Possono essere estesi su più linee
• L’ordine dei campi non è rilevante
• I campi processati dai proxy dovrebbero essere primi
• Via, Route, Record-Route, Proxy-Require, Max-Forwards, and Proxy-Authorization, etc…
• L’ordine dei campi con lo stesso nome è rilevante
• Via, Route, etc…
• Per ogni field-value si possono specificare più parametri, ma non con lo stesso nome
• field names sono sempre case- insensitive
• Si dividono in campi request header e response header
2008 Aldo Campi
Body del messaggio
• In Richieste e in risposte (opzionale)
• L’interpretazione del body dipende dal tipo di messaggio.
• Body Type
• Definiti dagli headers
• Tipo "multipart" MIME (RFC 2046)
• Tipo di default "text“
• Headers
• Content-Type: definisce il tipo di body
• Content-Length: contiene un ottetto (byte) che indica la lunghezza del body
• Content- Encoding: header: definisce il tipo di decodifica come per esempio la compressione
(altrimenti omesso)
2008 Aldo Campi
Scenari applicativi SIP: chiamata diretta
Chiamata Diretta:
aa UA a UA
IP
Alice Internet Bob
Call signaling
Stream multimediali
Call flow
N.B.:
Il three-way handshake è
[Link] [Link] usato solo per richieste
di tipo INVITE.
INVITE
sip:bob@[Link]
• Il chiamante (caller) conosce il
100 Tying nome host o l’indirizzo IP del
alice@[Link] bob@[Link]
chiamato (callee)
180 Ringing
• L’UA destinatario riporta i
200 OK cambiamenti di stato
• Quando Bob accetta la
ACK chiamata viene inviato l’OK
• L’UA chiamante conferma, la
Media Streams chiamata è stabilita
• Segue lo scambio di
BYE informazioni multimediali (es.
RTP)
200 OK
• La chiamata è terminata da uno
dei due partecipanti
Scenari applicativi SIP: Proxied call
CPL: < Sono Bob,
ridirigi le chiamate
al mio attuale
Chiamata per Bob
indirizzo … >
2 1
3
4
Alice Internet Bob
Chiamata da
parte di Alice
Call signaling
Stream multimediali
Proxied call
Lookup [Link]
server
[Link] Lookup
[Link]
utente
INVITE sip:bob@[Link]
100 Trying INVITE sip:bob@[Link]
alice@[Link] 100 Trying
bob@[Link]
200 OK
200 OK
ACK
Media Streams
Scenario applicativo 2: Redirected Call
Chiamalo
all’indirizzo … CPL: < Sono Bob,
ridirigi le chiamate
al mio attuale
Chiamata per Bob
indirizzo … >
2 1
3
4
Alice Internet Bob
Call signaling
Stream multimediali
Call flow
[Link] [Link]
INVITE sip:bob@[Link]
100 Trying
alice@[Link]
bob@[Link]
302 Moved Temporarily
Contact: sip:bob@[Link];q=1 Lookup
utente
ACK
INVITE sip:bob@[Link] IP: [Link]
200 OK
ACK
User Registration
sip:[Link] REGISTER sip:[Link] SIP/2.0
Entità amministrativa To: sip:bob@[Link]
From: sip:bob@[Link]
(SIP server) Contact: sip:bob@[Link]
Redirect / sip:bobby@[Link]
Location ...
Proxy Registrar
Server
Server
1
Salva le informazioni
di registrazione nel DB
3
2 SIP/2.0 200 OK
Expires: 3600 [Link]
...
DB
[Link]
sip:bob@[Link] sip:bob@[Link]
sip:bobby@[Link]
User Location
Segnalazione SIP
Protocollo arbitrario
(fuori dagli scopi del SIP)
ato DB
hiam Location
va il c
server
Tro
INVITE
•Registrazioni esplicite
•Entry utmp
SIP server •Awareness protocols
•Finger, rwho
(proxy o redirect)
•LDAP, X.500, …
• SIP server chiede al Location server dove trovare il
chiamato
• Location server ritorna una lista di indirizzi (contact
address)
• SIP proxy o redirect processa la richiesta in accordo con
la lista di indirizzi (q= value) trovata
User Location sip:[Link]
INVITE sip:bob@[Link] SIP/2.0 Entità amministrativa
To: sip:bob@[Link] (SIP server)
From: sip:alice@[Link];tag=4711
Contact: sip:alice@[Link] Redirect /
... Location
Proxy Registrar
Server
Server
1
Recupera le informazioni
2 di registrazione dal DB
3
SIP/2.0 302 Moved Temporarily
Contact: sip:bob@[Link]
[Link]
... DB
sip:bob@[Link] sip:bob@[Link]
sip:bobby@[Link]
Architettura multidominio
SIP SIP
Server
backbone Dominio
SIP
SIP
Server
SIP locale
Server
SIP
Server
Dominio SIP SIP Segnalazione SIP SIP Dominio SIP
Provider X Server per l’instradamento Server Provider Y
iniziale e la negoziazione
della chiamata
SIP SIP
Server Server
Segnalazione SIP
durante la chiamata
SIP SIP SIP SIP
Endpoint Endpoint Endpoint Endpoint
Stream multimediale
(es. RTP)
IP Multimedia Sub-system
• Architettura funzionale per realizzare servizi multimediali su
reti IP
• Originalmente formulata per 3GPP Rel-5
• Pensato per superare il modello delle due tecnologie per due
servizi delle reti mobili (voce a circuito, dati e SMS a pacchetto)
• Utilizza SIP per la segnalazione
• Prevede tutte le funzionalità per gestire la comunicazione fra
diversi domini di servizio (operatori)
Architettura
VoLTE terminal
• ISIM (nella SIM card)
• IP Multimedia Private Identity (IMPI)
• Identità privata definita dalla «home network»
• Contiene le informazioni sul dominio dell’operatore con cui abbiamo sottoscritto il
contratto
• Usato per registrazione, autorizzazione, accounting (attribuzione dei costi) ecc.
• IP Multimedia Public Identity (IMPU)
• Identità pubblica rilasciata per essere raggiunta da altri
• Ci possono essere più IMPU per IMPI
• la stessa IMPU può essere attribuita a terminali diversi (unico per una intera famiglia)
• SIP UE (nello smartphone)
• Gestisce la segnalazione SIP
Home Subscriber Server (HSS)
• Database contente le informazioni per gestire le chiamate
• Contiene il profilo dell’utente (cosa un utente può fare e cosa no)
• Gestisce le procedure di autenticazione (chi sei)
• Gestisce le procedure di autorizzazione (cosa puoi fare)
Call Session Control Function (CSCF)
• Proxy-CSCF (P-CSCF) : può trovarsi nella visited network
• Primo punto di contatto
• Redirige i messaggi SIP opportunamente
• Interrogating-CSCF (I-CSCF)
• È il nodo di bordo del dominio di servizio
• Raggiungibile grazie al DNS
• Assegna alle richieste di servizio il relativo S-CSCF
• Serving-CSCF (S-CSCF) : sempre nella home network
• SIP server che gestisce la segnalazione
• Gestisce la registrazione degli utenti e le comunicazione con HSS per avere i profili di
servizio
• Gestisce le policy dell’operatore (un operatore potrebbe decidere di non supportare
tutti i servizi possibili)