Il protocollo OpenFlow

Cresce il successo di questo protocollo, che permette di realizzare la separazione tra il layer di switching e quello di controllo all'interno di un'architettura SDN

Avatar di Riccardo Florio

a cura di Riccardo Florio

Lo sviluppo di OpenFlow è iniziato nel 2007 ed è stato condotto dalla Stanford University prima e successivamente dalla University of California a Berkeley per approdare nel 2011 alla Open Networking Foundation (ONF che ne ha preso in carico il processo di standardizzazione.

Questo protocollo centralizza in modo standardizzato l'attuazione di un piano di controllo della rete e fornisce anche le API necessarie per favorire l'accoppiamento con la parte applicativa che si fa carico di interpretare e dare forma alle richieste provenienti dal business e favorire l'estensione delle funzionalità necessarie per soddisfare tali esigenze.A differenza di quanto avviene in un router o switch tradizionale, dove l'inoltro veloce dei pacchetti (percorso dei dati) e il livello delle decisioni di routing (percorso di controllo) avvengono all’interno dello stesso dispositivo, in uno switch basato su OpenFlow queste due funzioni risultano separate. La parte relativa al percorso dei dati risiede ancora all’interno dello switch mentre le decisioni di routing vengono spostati in un controller separato che può essere tipicamente un server standard.

Lo switch e il controller comunicano tramite il protocollo OpenFlow che definisce i diversi messaggi: per esempio, pacchetto ricevuto, invio del pacchetto, modifica della tabella di inoltro, richiesta di statistiche e così via.

Poiché OpenFlow consente alle applicazioni o ai controller SDN di accedere al piano dati di un dispositivo di rete gli amministratori hanno la possibilità di modificare dinamicamente il modo in cui i flussi di traffico attraversano la rete.

La maggior parte dei dispositivi di rete moderni hanno tabelle di flusso per l'implementazione di firewall, NAT, QoS e raccolta di dati statistici. Il protocollo OpenFlow fornisce anche un mezzo di programmazione per queste tabelle di flusso da un controller centralizzato attraverso un canale SSL (Secure Sockets Layer).