# Network functions virtualization

Il termine Network functions virtualization (NFV) nell'ambito delle reti di telecomunicazioni indica un approccio architetturale che sfrutta le tecnologie IT per virtualizzare intere classi di funzioni dei nodi di rete come blocchi elementari che possono essere interconnessi per implementare servizi di comunicazione.
Una funzione di rete virtualizzata consiste in una o più macchine virtuali che gestiscono diversi software e processi su server standard ad alta capacità, switch e dispositivi di memoria o anche su un'infrastruttura in cloud, invece di utilizzare differenti dispositivi hardware per ogni funzione di rete. In questo modo, elaborazioni tradizionalmente residenti nei nodi di rete possono essere eseguite in modo centralizzato sulla macchina virtuale, alleggerendo il carico elaborativo sui nodi di rete che assumono, rispetto alla funzione virtualizzata, il ruolo di attuatori. L'approccio è mirato sia a ridurre il costo dei nodi di rete (per la minore complessità richiesta o in casi estremi eliminando la necessità del nodo fisico stesso) che a integrarsi in una gestione di rete di tipo SDN, contesto in cui le NFV possono essere usate in modo sinergico.
Come esempi applicativi, è possibile definire un session border controller virtuale per proteggere una rete senza i costi e la complessità di approvvigionamento ed installazione di unità di protezione di rete fisiche. Altri esempi dell'utilizzo di NFV includono load balancer, firewall, dispositivi di rilevamento di intrusioni, acceleratori WAN e anche router (che in tal caso vengono detti "router virtuali" o "virtual router") di cui esistono già implementazioni commerciali da parte dei principali costruttori.

## Contesto

Lo sviluppo dei prodotti nell'industria delle telecomunicazioni ha tradizionalmente seguito standard rigorosi per garantire stabilità, aderenza ai protocolli e qualità, come si evince dall'esistenza dell'espressione carrier grade per indicare dispositivi che mostrano tali caratteristiche. Mentre questo approccio ha funzionato correttamente nel passato, esso inevitabilmente portava a lunghi cicli di vita del prodotto, ad un lento passo di sviluppo e alla dipendenza da hardware specifico, come ad esempio application-specific integrated circuit (ASIC) progettati su misura. L'aumento della competizione nei servizi di comunicazione ad opera di organizzazioni operanti su larga scala su internet (come Google Talk, Skype, Netflix) ha portato i service provider a cercare nuove strade per rivoluzionare lo status quo.

## Storia

Ad ottobre 2012, durante una conferenza a Darmstadt (Germania) su SDN ed OpenFlow nell'ambito dell'ETSI il gruppo di standardizzazione "Network Functions Virtualisation" pubblicò un white paper sull'argomento. Il gruppo era formato da rappresentanti dell'industria delle telecomunicazioni da tutto il mondo.
Dopo la pubblicazione del libro bianco, il gruppo ha prodotto una gran quantità di ulteriore documentazione di approfondimento, compresa una terminologia standard e un insieme di use case per NFV che costituiscono un riferimento per aziende produttrici e operatori che hanno l'intento di adottare la Network Virtualization.

## Struttura

La struttura di NFV si compone di tre componenti principali
* Virtualized network functions (VNFs): sono le implementazioni software di funzioni di rete che possono essere rilasciate su un'infrastruttura NFV (NFVI)
* Network functions virtualization infrastructure (NFVI): è il complesso di tutte le componenti hardware e software che costituiscono l'ambiente in cui le VNFs sono rilasciate. L'infrastruttura NFV può essere implementata su postazioni fisicamente disgiunte; la rete che fornisce la connettività tra tali postazioni è essa stessa parte dell'Infrastruttura NFV.
* Network functions virtualization management and orchestration architectural framework (NFV-MANO Architectural Framework): è l'insieme di tutti i blocchi funzionali, dei repository usati da tali blocchi, e dei riferimenti e delle interfacce attraverso cui i blocchi funzionali scambiano informazioni al fine di gestire ed orchestrare NFVI e VNFs.
I blocchi costitutivi sia di NFVI che di NFV-MANO rappresentano la piattaforma NFV. Nel ruolo di NFVI, essa consiste nelle risorse fisiche e virtuali di elaborazione e memorizzazione e nel software di virtualizzazione che opera su un controller hardware. La piattaforma NFV implementa funzionalità carrier grade per rispondere alle necessità delle reti pubbliche: gestire e monitorare i servizi della piattaforma, porre rimedio ai guasti e garantire requisiti di sicurezza.

## Aspetti pratici

Un service provider che segue i principi NFV deve implementare una o più funzioni di rete virtualizzate (VNF). Una VNF in sé stessa non fornisce un prodotto o servizio utilizzabile dal cliente del provider. Per costruire servizi più complessi, si utilizza il concetto di service chaining ("concatenazione di servizi") in cui sono coinvolte più VNF in sequenza in modo che l'interazione complessiva fornisca il servizio desiderato.
Un altro aspetto dell'implementazione della NFV è il processo di orchestration ("orchestrazione"). Per implementare servizi affidabili e scalabili, la NFV necessita che la rete sia in grado di istanziare in modo coordinato più VNF, di monitorarle, correggerle e fatturare per i servizi forniti. Tali caratteristiche di coordinamento, che rientrano nella definizione di funzionalità carrier-grade, sono allocate nel livello di orchestrazione (orchestration layer) che garantisce alta disponibilità e sicurezza e bassi costi operativi e di manutenzione. Fondamentalmente, il livello di orchestrazione deve essere in grado di gestire le istanze di VNF in maniera indipendente dalla tecnologia sottostante. Ad esempio, un livello di orchestrazione deve essere in grado di gestire un SBC-VNF del produttore X in esecuzione su VMware vSphere tanto quanto un IMS-VNF del produttore Y in esecuzione su KVM.