Cosa è il Software Defined Networking (SDN)
Software-Defined Networking è un termine generico che indica vari approcci che hanno in comune lo stesso obiettivo: rendere il funzionamento di una rete abbastanza elastico da supportare le esigenze di gestione del traffico dettate dalle nuove forme di elaborazione distribuita. In questo senso si fa riferimento principalmente a tre evoluzioni degli ultimi anni che hanno portato il traffico di una rete aziendale a essere molto meno prevedibile che in passato:
- l’adozione di piattaforme di virtualizzazione nei data center
- l’utilizzo crescente di servizi cloud
- la diffusione dei dispositivi mobili come strumento di lavoro principale
Negli ambienti virtualizzati il dialogo fra le risorse di computing e storage segue percorsi variabili e con picchi di traffico che dipendono dai picchi di task da svolgere e non sono a priori localizzabili o quantificabili. Lo stesso si può dire nel caso dei servizi cloud, specialmente per le aziende che hanno adottano molte applicazioni in SaaS anche di cloud provider diversi. La diffusione del mobile computing “massivo”, infine, introduce sia elementi di imprevedibilità del traffico sia la necessità di adattare il funzionamento della rete alla presenza di device che possono connettersi in luoghi diversi ma devono avere accesso sempre alle medesime risorse.
Il Software Defined Networking cerca di rispondere a questa esigenza di elasticità separando la parte che stabilisce il percorso da seguire per ogni singolo pacchetto o flusso di pacchetti lungo la rete (il cosiddetto control plane) dalla parte che fisicamente instrada i pacchetti stessi (detta anche data plane). Nel networking tradizionale il control plane e il data plane sono eseguiti dallo stesso dispositivo fisico: è ad esempio l’intelligenza di uno switch che calcola il percorso che un pacchetto seguirà e di conseguenza lo instrada opportunamente sulle sue porte di rete. In questo scenario due pacchetti che abbiano la stessa destinazione seguono lo stesso percorso e sono, dal punto di vista dello switch, da trattare nello stesso modo.
L’approccio del Software Defined Networking è molto diverso. Le funzioni del control plane sono tolte ai dispositivi di rete e svolte invece da un software (il controller) che viene eseguito centralmente su un server. È il controller a stabilire i percorsi che i pacchetti devono seguire, in funzione non solo della loro destinazione e della topologia della rete, come sarebbe per uno switch convenzionale, ma anche di altre informazioni che il controller può raccogliere da altri elementi e a cui uno switch tradizionale non avrebbe accesso.
Ad esempio, il controller può sapere che i pacchetti dati destinati a una specifica applicazione in cloud devono avere la priorità per un certo periodo di tempo e adatta di conseguenza i flussi di traffico lungo la rete. Il controller “traduce” le sue valutazioni in istruzioni che invia ai singoli dispositivi di networking.
Questa parte di controllo dinamico del traffico è il cuore storico del Software Defined Networking, che poi si è ampliato a comprendere funzioni di automazione – adattare automaticamente i flussi di traffico in base a determinate condizioni definite dagli amministratori di rete – e altri aspetti che più correttamente andrebbero definiti di Network Functions Virtualization (NFV).
Nella NFV alcune funzioni che normalmente verrebbero eseguite da dispositivi specifici, ad esempio un firewall o un load balancer, sono invece implementate come un’applicazione vera e propria che viene eseguita su un server, di solito come macchina virtuale. Le varie applicazioni/funzioni determinano come gestire il traffico di rete in base alle loro valutazioni e comunicano al controller (in un ambiente di SDN) o direttamente agli switch della rete come comportarsi. Il vantaggio della NFV è che elimina la necessità di installare dispositivi di rete mirati e proprietari: tutto può essere fatto con semplici switch.