# IP Multimedia Subsystem

IP Multimedia Subsystem (IMS) è un modello architetturale per reti di telecomunicazione, progettato per la convergenza di tutti i dispositivi di telecomunicazioni (fissi e mobili) su un'infrastruttura basata su rete IP che sia capace di fornire servizi voce e multimediali.
Nelle intenzioni del 3GPP l'obiettivo di IMS è quello di creare una convergenza fisso-mobile per la comunicazione multimediale. Lo standard facilita l'accesso alle applicazioni da qualsiasi terminale attraverso uno strato di controllo comune, basato su protocollo SIP, che isola la rete di accesso dallo strato dei servizi applicativi.

## Storia

Fu originariamente progettata dall'organismo per gli standard wireless (3GPP), quale parte della progetto per evolvere le reti mobili oltre il GSM. La sua prima formulazione (3GPP R5) rappresentò un approccio per fornire "servizi internet" attraverso GPRS. Questa visione fu aggiornata più tardi dal 3GPP, 3GPP2 e TISPAN richiedendo il supporto di altri sistemi oltre al GPRS, come Wireless LAN, CDMA2000 e reti fisse.
Di seguito la successione delle fasi storiche:
* IMS è stato originariamente creato da un organismo chiamato 3G.IP, del 1999. 3G.IP sviluppò l'architettura iniziale di IMS, che portò al "3rd Generation Partnership Project" (3GPP), come parte del suo lavoro di standardizzazione dei sistemi di fonia mobile 3G nelle reti UMTS. Apparve per la prima volta nella release 5, quando furono aggiunti i multimedia basati su SIP e, inoltre, fu fornito anche il support per le vecchie reti GSM e GPRS.
* 3GPP2 (un'organizzazione differente da 3GPP) basò il suo CDMA2000 Multimedia Domain (MMD) su 3GPP IMS, aggiungendo il supporto per CDMA2000.
* 3GPP release 6 aggiunse l'integrazione con WLAN, inter-operabilità tra IMS che usano differenti reti di connessione IP, routing group identities, multiple registration and forking, presence, speech recognition e speech-enabled services (Push to talk).
* 3GPP release 7 aggiunse il supporto per le reti fisse, lavorando insieme con TISPAN release R1.1, le funzioni di AGCF(Access Gateway control function) e PES (PSTN Emulation Service) furono introdotte alle reti cablate per ereditare i servizi che possono essere forniti nelle reti PSTN. Fu aggiunta anche la continuità tra le reti a commutazione di circuito e le reti a commutazione di pacchetto (VCC), la connessione a banda larga da reti fisse ad IMS, l'interoperabilità con le reti non-IMS, Policy and Charging Control (PCC) e le sessioni per le emergenze.
* 3GPP release 8 ha aggiunto il supporto per LTE, System Architecture Evolution (SAE), Multimedia Session Continuity, Enhanced emergency sessions e IMS centralized services.

## Architettura

L'architettura di IMS si basa su tre strati:
* Livello di accesso ed interoperabilità dei media
* Livello di controllo o core network
* Livello dei servizi applicativi
Lo scopo di questa suddivisione è isolare il livello di accesso da quello applicativo: da un punto di vista logico architetturale i servizi non hanno più bisogno di un sistema ad-hoc per controllare le chiamate giacché è lo strato di controllo comune che fornisce queste funzioni indipendentemente dalla tipologia della rete di accesso.
Ogni strato è costituito da diverse funzioni che comunicano tra di loro attraverso interfacce standardizzate. L'insieme di tutte le funzioni forma un dominio di rete IMS.
Una funzione non è un nodo fisico della rete: l'implementatore è libero di combinare 2 funzioni in 1 nodo, oppure di dividere una singola funzione in 1 o più nodi. Ciascun nodo può anche essere presente più volte in una singola rete, per motivi di dimensionamento, di bilanciamento del carico oppure di organizzazione.
Per facilitare l'integrazione con Internet, IMS utilizza protocolli IETF laddove possibile, per esempio il protocollo Session Initiation Protocol costituisce il fulcro di IMS.

## Livello di accesso ed interoperabilità

L'utente può connettersi ad una rete IMS in vari modi, molti dei quali utilizzano lo standard IP. I terminali IMS (così come i cellulari, i PDA ed i computer) possono registrarsi direttamente su una rete IMS, perfino se sono in roaming in un'altra rete di accesso o paese. Il solo requisito è che essi possano utilizzare il protocollo IP ed attivare un agente SIP. Gli accessi da rete fissa (es. Digital Subscriber Line (DSL), modems, Ethernet), o da rete mobile (es. W-CDMA, CDMA2000, GSM, GPRS) o wireless (es. WLAN, WiMAX) sono tutti supportati. Altri sistemi telefonici come POTS (i vecchi telefoni analogici), H.323 ed i sistemi non compatibili con il VoIP di IMS, sono supportati attraverso dei gateway.

### Media Resources

Le risorse media sono quei componenti che operano sul livello dei media e sono sotto il controllo delle funzioni del nucleo di IMS. Nello specifico sono i Media Server (MS) e i Media gateway (MGW).

#### Media Resource Function (MRF)

La Media Resource Function (MRF) fornisce le funzionalità relative ai dati multimediali così come manipolazione dei media (es. mixaggio di voice stream) e l'avvio di toni o annunci.
Ogni MRF è ulteriormente diviso in un Media Resource Function Controller (MRFC) e un Media Resource Function Processor (MRFP).
* Il MRFC è un nodo del livello di segnalazione che interpreta le informazioni che vengono da AS ed S-CSCF per controllare il MRFP.
* Il MRFP è un nodo del livello dei media utilizzato per mixare, generare ed elaborare dei media streams. Può anche gestire i diritti di accesso a risorse condivise.

### Funzioni di interoperabilità
#### Breakout Gateway (BGCF)

Una Breakout Gateway Control Function (BGCF) è un SIP proxy che elabora le richieste per il routing da un Serving Call Session Control Function(S-CSCF) quando l'S-CSCF ha evinto che la sessione non può essere reindirizzata utilizzando DNS o ENUM/DNS, ossia quando la chiamata deve essere indirizzata, per esempio, ad una rete PSTN. BGCF selezionerà un MGCF che sarà responsabile dell'interazione con PSTN: il MGCF riceverà quindi le segnalazioni SIP da BGCF.
BGCF include funzionalità di routing basate sui numeri telefonici.

#### PSTN Gateways

Un PSTN/CS gateway si interfaccia con le reti PSTN a commutazione di circuito. Per la segnalazione queste reti utilizzano ISUP (ISDN User Part) oppure BICC (Bearer Independent Call Control) su MTP (Message Transfer Part), mentre IMS utilizza SIP su IP. Per i media le reti tradizionali utilizzano PCM (Pulse-code modulation), mentre IMS usa RTP.
* Un Media Gateway Controller Function (MGCF) è un SIP endpoint che effettua la conversione del protocollo di controllo tra SIP e ISUP/BICC ed interfaccia l'SGW su protocollo SCTP. Esso controlla anche le risorse nel media gateway (MGW) attraverso un'interfaccia H.248.
* Un Signalling Gateway (SGW) si interfaccia al livello di segnalazione della rete a commutazione di circuito. Questo gateway trasforma i protocolli di basso livello come SCTP in MTP (un protocollo SS7), per consentire il passaggio di ISUP dal MGCF alla rete a commutazione di circuito.
* Un Media Gateway (MGW) si interfaccia con i livelli media della rete a commutazione di circuito, per convertire tra RTP e PCM. Questo gateway può anche effettuare la transcodifica quando i codec non combaciano (es. IMS può utilizzare AMR, PSTN può usare G.711).

## Core network
### Home Subscriber Server

L'Home Subscriber Server (HSS), o User Profile Server Function (UPSF), è il principale database degli utenti. Esso contiene informazioni relative ai profili degli abbonati, effettua l'autenticazione e l'autorizzazione, e può fornire informazione sulla posizione e l'IP degli utenti. La sua funzione è simile a quella dell'Home Location Register e dell'Authenitcation Centre (AuC) della rete GSM.
Una Subscriber Location Function (SLF) sarà necessaria per mappare i riferimenti degli utenti quando si utilizzano più HSSs.
Il database degli abbonati nel HSS contiene gli identificativi degli utenti (IMPU, IMPI, IMSI, e MSISDN), i profili dei servizi associati agli utenti, i dati per le attivazioni dei servizi ed altre informazioni legate sempre agli utenti.

#### Identificazione degli utenti

In IMS ad un utente possono essere associate diversi identificativi: IP Multimedia Private Identity (IMPI), IP Multimedia Public Identity (IMPU), Globally Routable User Agent URI (GRUU), Wildcarded Public User Identity (WPUI). Sia IMPI che IMPU non sono numeri telefonici o successioni di cifre ma sono Uniform Resource Identifier (URIs), quindi possono essere cifre (un URI telefonica, come tel:+1-555-123-4567) oppure identificativi alfanumerici (una SIP URI, come sip:john.doeexample.com).
* IP Multimedia Private Identity (IMPI) è un identitificativo unico, permanentemente assegnato dall'operatore di appartenenza. È utilizzato, per esempio, per la registrazione, l'autorizzazione e per motivi di contabilità. Ogni utente IMS ha uno o più IMPI.
* IP Multimedia Public Identity (IMPU) è utilizzata da un utente per comunicare con altri utenti (potrebbe quindi essere riportata su un biglietto da visita). Possono esserci più IMPU per IMPI. L'IMPU può essere condivisa tra più telefoni, così che possano essere raggiunti con lo stesso identificativo: per esempio, un singolo numero di telefono per un'intera famiglia.
* Globally Routable User Agent URI (GRUU) è un'identità che identifica univocamente la combinazione di IMPU e User Equipment (dispositivo dell'utente). Esistono due tipi di GRUU: Public-GRUU (P-GRUU) e Temporary GRUU (T-GRUU).
** P-GRUU: mostrano l'IMPU e sono a lungo termine
** T-GRUU: non mostrano l'IMPU e sono validi finché il contatto è esplicitamente de-registrato o la registrazione scade.
* Wildcarded Public User Identity esprime un insieme di IMPU raggruppati insieme.

### Controllo delle sessioni/chiamate

In IMS il controllo delle sessioni di comunicazione avviene principalmente attraverso il protocollo SIP. Sono presenti 3 tipi di server/proxy SIP, chiamati Call Session Control Function (CSCF), dedicati all'elaborazione dei pacchetti di segnalazione.

#### Proxy-CSCF (P-CSCF)

Un proxy Proxy-CSCF (P-CSCF) è un proxy SIP che rappresenta il primo punto di contatto per il terminale IMS. Il terminale potrebbe contattare sia quello della rete visitata che quello della propria rete di appartenenza (home network) se la rete visitata non è IMS-compatibile. Alcune reti possono utilizzare un Session Border Controller per questo tipo di funzione.
Il terminale può avere informazione sul proprio P-CSCF nei seguenti modi:
* attraverso il DHCP
* può essere configurato durante il provisioning iniziale
* può essere configurato via 3GPP IMS Management Object (MO)
* può essere presente nell'ISIM (IMS Subscriber Identity Module)
* può essere assegnato nel PDP Context in caso di rete GPRS.
Riassumendo, il P-CSCF:
* è assegnato dall'IMS durante la fase di registrazione, e non cambia per la durata della registrazione.
* viene attraversato da tutti i messaggi di segnalazione, e può controllare ogni messaggio.
* autentica l'utente e stabilisce un IPSec security association con il terminale IMS. Questo previene spoofing attack e replay attacks e protegge la privacy dell'utente. Gli altri nodi confidano nel P-CSCF e non richiedono un'altra autenticazione dell'utente.
* potrebbe comprimere e/ decomprimere i messaggi SIP usando SigComp, che riduce il Round Trip Time su connessioni radio lente.
* può includere una Policy Decision Function (PDF), che autorizza le risorse del livello dei media, es. qualità di servizio sul livello dei media. È utilizzato per le politiche di controllo, gestione della larghezza di banda, ecc. Il PDF può anche essere una funzione separata.
* genera i dati di tariffazione (Charging Data Record).

#### Serving-CSCF (S-CSCF)

Il Serving-CSCF è il nodo principale del livello di segnalazione. È un SIP server ma effettua anche il controllo della sessione. È sempre posizionato nella home-network. Utilizza interfacce DIAMETER Cx e Dx per connettersi all'HSS ed accedere ai profili utenti: non ha nessuna registrazione degli utenti e tutte le informazioni vengono caricate dall'HSS.
* Gestisce le registrazioni SIP, che gli consentono di associare la locazione dell'utente (l'indirizzo IP del terminale) e l'indirizzo SIP.
* si trova sul percorso di tutti i messaggi di segnalazione e può ispezionare ogni messaggio.
* decide a quale SIP server il messaggio SIP sarà inviato affinché sia fornito il servizio richiesto
* effettua servizi di routing, tipicamente utilizzando Electronic Numbering (ENUM)
* applica le politiche dell'operatore
* vi possono essere S-CSCF multipli nella rete per una distribuzione del carico e per questioni di affidabilità. È l'HSS che assegna un S-CSCF all'utente quando viene interrogato dal I-CSCF

#### Interrogating-CSCF (I-CSCF)

Un CSCF di interrogazione (I-CSCF) è un'altra funzione SIP posizionata ai bordi del dominio amministrativo: è il punto d'ingresso per tutte le chiamate provenienti da altri domini amministrativi. Il suo indirizzo IP è pubblicato nel DNS del dominio amministrativo (utilizzando i NAPTR and SRV record), cosicché i server remoti possono trovarlo ed utilizzarlo come un punto di inoltro dei pacchetti SIP. L'I-CSCF interroga l'HSS per ottenere l'indirizzo del S-CSCF ed assegnarlo ad un utente che realizzi una registrazione SIP. Esso inoltra le richieste/risposte SIP al S-CSCF. Fino alla release 6 poteva anche essere utilizzato per nascondere la rete interna al mondo esterno (cifrando parte del messaggio SIP): in questo caso era chiamato Topology Hiding Inter-network Gateway (THIG). Dalla release 7 in avanti questa funzione di entry point è stata rimossa dal I-CSCF ed è adesso parte dell'Interconnection Border Control Function (IBCF). L'IBCF è utilizzato come gateway per le reti esterne e fornisce le funzioni di NAT e firewall (pinholing).

### Tariffazione

La tariffazione a debito è applicata agli utenti che pagano per i loro servizi periodicamente (es. alla fine del mese). La tariffazione a credito è utilizzata per utenti prepagati, oppure per il controllo in tempo reale dei servizi post-pagati. Entrambi possono essere applicati ad una sessione di chiamata.
* Tariffazione a debito: tutte le entità funzionali (P-CSCF, I-CSCF, S-CSCF, BGCF, MRFC, MGCF, AS) coinvolte in una sessione usano l'interfaccia Rf del protocollo Diameter per inviare informazioni di tariffazione ad una Charging Collector Function (CCF) dello stesso dominio IMS. La CCF colleziona queste informazioni e costruisce un Call Detail Record (CDR), che è inviato al sistema di fatturazione (Billing System (BS) ). Ogni sessione porta un IMS Charging Identifier (ICID) come identificativo unico. Il parametro Inter Operator Identifier (IOI) definisce la rete di rogine e destinazione. Ogni dominio ha la sua rete di tariffazione. Anche i sistemi di fatturazione (Billing Systems) in domini differenti scambieranno informazioni, così che le tariffe di roaming siano applicate.
* Tariffazione a credito: l'S-CSCF dialoga con un Session Charging Function (SCF) che figura come un normale server SIP. L'SCF può segnalare all'S-CSCF di terminare una sessione quando l'utente termina il credito. L'AS e il MRFC usano l'interfaccia Ro del protocollo Diameter verso un Event Charging Function (ECF).
** quando un Immediate Event Charging (IEC) è utilizzato, un numero di unità di credito è immediatamente dedotto dall'ECF e il MRFC ed l'AS sono autorizzati a fornire il servizio. Il servizio non viene autorizzato se i crediti disponibili non sono sufficienti.
** quando Event Charging with Unit Reservation (ECUR) è utilizzato, l'ECF riserva un numero di crediti sull'acconto dell'utente e poi autorizza l'MRFC o l'AS a fornire il servizio. Quando il servizio è stato offerto, il numero di unità i credito spese vengono dedotte dall'acconto del cliente e quelle riservate vengono azzerate.

## Livello dei servizi applicativi
### Server Applicativi

I server applicativi (Application Server) ospitano i servizi e si interfacciano con gli S-CSCF utilizzando SIP. Un esempio di server applicativo è la funzione di Voice call continuity (VCC server). A seconda del servizio l'application server può operare come un SIP proxy, un SIP User Agent oppure un SIP back-to-back user agent. Un AS può essere posizionato nella home network oppure in una rete esterna di terza parti. Un AS può essere un:
* SIP AS: IMS application server nativo
* IP Multimedia Service Switching Function (IM-SSF): un'interfaccia IM-SSF che si interfaccia con CAMEL (Customized Applications for Mobile networks Enhanced Logic) Application Servers che usano CAP (Camel Application Part).
L'AS può interrogare l'HSS con l'interfaccia Diameter Sh (per un SIP-AS) oppure con l'interfaccia MAP (Mobile Application Part) (per IM-SSF).

#### Public Service Identity

Public Service Identities (PSI) sono informazioni che identificano i servizi che sono ospitati dagli application server. come per gli identificativi degli utenti i PSI hanno la forma di SIP oppure Tel URI. I PSI sono registrati nell'HSS sia in maniera distinta oppure raggruppati con wildcard:
* un PSI distinto contiene il PSI utilizzato nel routing
* un PSI con wildcard rappresenta una collezione di PSI

## Descrizione delle interfacce

| Nome Interfaccia | Funzione IMS | Descrizione | Protocollo |
| Cr | MRFC, AS | Used by MRFC to fetch documents (scripts and other resources) from an AS | HTTP over dedicated TCP/SCTP channels |
| Cx | I-CSCF, S-CSCF, HSS | Used to communicate between I-CSCF/S-CSCF and HSS | Diameter |
| Dh | AS (SIP AS, OSA, IM-SSF) <-> SLF | Used by AS to find a correct HSS in a multi-HSS environment.DH_SLF_QUERY indicates a IMPU and DX_SLF_RESP return the HSS name. | Diameter |
| Dx | (I-CSCF or S-CSCF) <-> SLF | Used by I-CSCF or S-CSCF to find a correct HSS in a multi-HSS environment. DX_SLF_QUERY indicates a IMPU and DX_SLF_RESP return the HSS name. | Diameter |
| Gm | UE, P-CSCF | Used to exchange messages between UE and P-CSCF | SIP |
| Go | PDF, GGSN | Allows operators to control QoS in a user plane and exchange charging correlation information between IMS and GPRS network | COPS (Rel5), Diameter (Rel6+) |
| Gq | P-CSCF, PDF | Used to exchange policy decisions-related information between P-CSCF and PDF | Diameter |
| ISC | S-CSCF, AS | Reference point between S-CSCF and AS. Main functions are to: Notify the AS of the registered IMPU, registration state and UE capabilities Supply the AS with information to allow it to execute multiple services Convey charging information | SIP |
| Ici | IBCFs | Used to exchange messages between an IBCF and another IBCF belonging to a different IMS network. | |
| Ma | I-CSCF <-> AS | Main functions are to: Forward SIP requests which are destinated to a Public Service Identity hosted by the AS Originate a session on behalf of a user or Public Service Identity, if the AS has no knowledge of a S-CSCF assigned to that user or Public Service Identity Convey charging information | SIP |
| Mg | MGCF -> I,S-CSCF | MGCF converts ISUP signalling to SIP signalling and forwards SIP signalling to I-CSCF | SIP |
| Mi | S-CSCF -> BGCF | Used to exchange messages between S-CSCF and BGCF | SIP |
| Mj | BGCF -> MGCF | Used for the interworking with the PSTN/CS Domain, when the BGCF has determined that a breakout should occur in the same IMS network to send SIP message from BGCF to MGCF | SIP |
| Mk | BGCF -> BGCF | Used for the interworking with the PSTN/CS Domain, when the BGCF has determined that a breakout should occur in another IMS network to send SIP message from BGCF to the BGCF in the other network | SIP |
| Mm | I-CSCF, S-CSCF, external IP network | Used for exchanging messages between IMS and external IP networks | SIP |
| Mn | MGCF, IM-MGW | Allows control of user-plane resources | H.248 |
| Mp | MRFC, MRFP | Allows an MRFC to control media stream resources provided by an MRFP. | H.248 |
| Mr | S-CSCF, MRFC | Used to exchange messages between S-CSCF and MRFC | SIP |
| Mx | BGCF/CSCF, IBCF | Used for the interworking with another IMS network, when the BGCF has determined that a breakout should occur in the other IMS network to send SIP message from BGCF to the IBCF in the other network | SIP |
| Mw | P-CSCF, I-CSCF, S-CSCF | Used to exchange messages between CSCFs | SIP |
| Rf | P-CSCF, I-CSCF, S-CSCF, BGCF, MRFC, MGCF, AS | Used to exchange offline charging information with CCF | Diameter |
| Ro | AS, MRFC, S-CSCF | Used to exchange online charging information with ECF | Diameter |
| Rx | P-CSCF, PCRF | Used to exchange policy and charging related information between P-CSCF and PCRF (Policy and Charging Rule Function) Replacement for the Gq reference point. | Diameter |
| Sh | AS (SIP AS, OSA SCS), HSS | Used to exchange information between an AS (SIP AS or OSA SCS) and HSS. Main functions are to: Transfer user related data, group lists from the HSS Activate/deactivate filter criteria stored in the HSS on a per subscriber basis | Diameter |
| Si | IM-SSF, HSS | Transports CAMEL subscription information including triggers for use by CAMEL based application services information. | MAP |
| Sr | MRFC, AS | Used by MRFC to fetch documents (scripts and other resources) from an AS | HTTP |
| Ut | UE, AS (SIP AS, OSA SCS, IM-SSF) | Facilitates the management of subscriber information related to services and settings | HTTP(s), XCAP |

## Tecnologie alternative

Esistono tecnologie alternative e concorrenti per l'accesso e la distribuzione di servizi su reti fisse e mobili, esse contemplano la combinazione di Unlicensed Mobile Access, soft switch e SIP. Queste tecnologie partono dal presupposto che è più semplice vendere servizi che vendere le virtù dei servizi integrati ed, inoltre, il compito di vendere IMS su un singolo servizio è comunque difficile giacché vi sono spesso alternative più semplici ed economiche per creare e installare quella prestazione particolare. C'è da aggiungere che i vantaggi di IMS cominciano ad essere messi in discussione da quando sta diventando sempre più semplice accedere a contenuti e contatti utilizzando meccanismi fuori dal controllo dei tradizionali operatori fisso/mobile.