Il piano di controllo SDN

Pasted image 20231014113024.png
In questo paragrafo approfondiremo il piano di controllo SDN. La trattazione sarà un approfondimento di ciò che è stato trattato in Inoltro generalizzato e SDN.
In questo contesto i dispositivi di rete abilitati all'inoltro saranno chiamati packet switch.
In un'architettura SDN possono essere identificate quattro caratteristiche fondamentali:

  • Inoltro basato sui flussi. I pacchetti sono inoltrati dai packet switch SDN sulla base del valore dei campi dell'intestazione a livello di trasporto, rete e collegamento. (Si ricordi dalla figura sopra che la tabella dei flussi specifica le regole di inoltro dei pacchetti, inoltre ricordiamo che è compito del piano di controllo calcolare, gestire e installare le occorrenze della tabella in tutti gli switch).
  • Separazione piano dei dati e piano di controllo. La separazione è chiara nella figura sopra. Il piano dei dati consiste di switch di rete che eseguono le regole match-action presenti nelle loro tabelle dei flussi. Il piano di controllo consiste di server e software che determinano e gestiscono le tabelle dei flussi degli switch.
  • Funzioni di controllo di rete: esterne agli switch del piano dei dati. Il piano di controllo è implementato via software. Al contrario dei router tradizionali, tale software è eseguito su server remoti rispetto agli switch. Il piano di controllo consiste di:
    • controller SDN (sistema operativo di rete) che mantiene informazioni di stato della rete quali per esempio lo stato dei collegamenti, degli switch e degli host remoti; queste informazioni vengono fornite alle applicazioni di controllo di rete. Anche se il controller sembra centralizzato, nella pratica è fisicamente distribuito.
    • Un insieme di applicazioni di controllo di rete.
  • Una rete programmabile. La rete è programmabile attraverso le applicazioni di controllo di rete che vengono eseguite nel piano di controllo. Tali applicazioni utilizzano le API fornite dal controller SDN per specificare e controllare il piano dei dati nei dispositivi di rete. Un'applicazione di instradamento potrebbe determinare i percorsi tra sorgente e destinazione usando Dijkstra, un'altra invece potrebbe determinare quali pacchetti vadano bloccati dal packet switch.
    Pasted image 20231020155922.png
Il piano di controllo SDN: controller SDN e applicazioni di controllo
...

Il piano di controllo SDN si divide in grandi linee in due componenti: il controller e le applicazioni di controllo SDN.
La seguente figura fornisce una descrizione dettagliata di un generico controller.
Pasted image 20231020160323.png
Le sue funzionalità possono essere divise in tre livelli, partiamo dal più basso:

  • Livello di comunicazione: che effettua le comunicazioni tra il controller SDN e i dispositivi di rete controllati. Chiaramente, se un controller SDN deve controllare le operazioni di uno switch, un host o un altro dispositivo da remoto ha bisogno di un protocollo che trasferisca le informazioni tra di essi. Inoltre un dispositivo deve essere in grado di comunicare al controller eventi che osserva localmente, quali un messaggio che indichi che un collegamento è stato connesso o disconnesso, un dispositivo che si è unito alla rete o un dispositivo che è diventato operativo. Tali eventi forniscono al controller SDN una visione aggiornata dello stato della rete. Tale protocollo costituisce il livello più basso dell'architettura del controller. La comunicazione tra il controller e i dispositivi controllati passa attraverso un'interfaccia del controller nota come interfaccia "southbound".
  • Livello di gestione dello stato globale della rete. Le decisioni di controllo finali prese dal piano di controllo SDN richiedono che il controller abbia informazioni aggiornate sullo stato di host, link, switch e altri dispositivi SDN controllati della rete. Una tabella dei flussi di uno switch contiene contatori i cui valori possono essere utilizzati proficuamente dalle applicazioni di controllo di rete e pertanto devono essere disponibili. Poiché lo scopo finale del piano di controllo è determinare le tabelle dei flussi dei vari dispositivi controllati, un controller potrebbe anche mantenere una copia di tali tabelle.
  • L'interfaccia con il livello di applicazione di controllo della rete. Il controller interagisce con le applicazioni di controllo di rete attraverso la sua interfaccia "northbound". Tali API permettono alle applicazioni di leggere/scrivere lo stato della rete. Le applicazioni possono richiedere una notifica quando avviene un evento di cambiamento di stato, in modo che possano intraprendere azioni in risposta alle notifiche di evento di rete inviata da un dispositivo controllato.
    I controller moderni pongono grande enfasi sulla progettazione di una piattaforma di controller centralizzata, ma fisicamente distribuita, che fornisca servizi scalabili ed elevata disponibilità ai dispositivi controllati e alle applicazioni di controllo.
Il protocollo OpenFlow
...

OpenFlow opera tra un controller SDN e uno switch o un altro dispositivo che implementi le API OpenFlow. Il protocollo opera su TCP con numero di porta 6653.
Alcuni dei più importanti messaggi del protocollo inviati dal controller allo switch controllato sono i seguenti:

  • Configuration. Questo messaggio permette al controller di interrogare e impostare i parametri di configurazione di uno switch.
  • Modify-State. Questo messaggio viene usato dal controller per aggiungere/cancellare o modificare le occorrenze della tabella dei flussi dello switch e per impostare le proprietà delle porte dello switch.
  • Read-state. Questo messaggio è usato dal controller per raccogliere statistiche e i valori dei contatori nelle tabelle dei flussi e nelle porte dello switch.
  • Send-packet. Questo messaggio è usato dal controller per inviare un pacchetto specifico da una specifica porta dello switch; il messaggio stesso contiene il pacchetto da inviare.
    Alcuni dei più importanti messaggi del protocollo inviati dallo switch controllato al controller sono i seguenti:
  • Flow removed. Questo messaggio informa il controller che un'occorrenza della tabella dei flussi è stata cancellata.
  • Port-status. Questo messaggio è usato dallo switch per informare il controller di un cambiamento nello stato di una porta.
  • Packed-in. Un pacchetto in arrivo su una porta di uno switch che non abbia corrispondenza alcuna nella tabelle dei flussi, viene inviato al controller per ulteriori elaborazioni. Inoltre anche i pacchetti che abbiano trovato una corrispondenza possono essere inviati al controller in seguito a un'azione che deve essere intrapresa a seguito della corrispondenza. Packed-in è usato per inviare tali pacchetti al controller.
Interazione tra piano dei dati e piano di controllo: un esempio
...

Per fissare quanto visto finora si consideri l'esempio in figura:
Pasted image 20231020180848.png
nel quale è utilizzato Dijkstra per determinare i cammini più brevi.
Vi sono alcune differenze tra Dijkstra implementato in una rete SDN e in una classica:

  • Dijkstra viene eseguito come un'applicazione separata, esterna agli switch;
  • gli switch inviano aggiornamenti sui collegamenti solo al controller SDN e non li scambiano tra di loro.
    Si assuma che il collegamento tra s1 e s2 cada; che si implementi l'instradamento basato su cammino minimo e che le regole di inoltro dei flussi in entrata e in uscita in s1, s2 e s4 ne siano condizionati, mentre le operazioni in s2 rimangono inalterate. si assuma, inoltre, che OpenFlow venga usato come protocollo a livello di comunicazione e che il piano di controllo effettui unicamente la funzione di instradamento sulla base dello stato dei collegamenti.
    In riferimento alla figura abbiamo:
  1. s1 osserva la caduta del collegamento con s2 e notifica tale cambiamento nello stato del collegamento al controller SDN utilizzando un messaggio OpenFlow port-status.
  2. Il controller SDN riceve tale messaggio OpenFlow, lo notifica al gestore dello stato del collegamento che aggiorna il database degli stati dei collegamenti.
  3. L'applicazione che implementa Dijkstra riceve la notifica del cambiamento dello stato del collegamento.
  4. L'applicazione di instradamento interagisce con il gestore dello stato del collegamento per ottenere lo stato aggiornato del collegamento; potrebbe anche consultare altre componenti del livello di gestione dello stato. Quindi computa i nuovi percorsi minimi.
  5. L'applicazione di instradamento interagisce quindi con il gestore della tabella dei flussi che determina quali tabelle debbano essere aggiornate.
  6. Il gestore della tabella dei flussi usa quindi il protocollo OpenFlow per aggiornare le occorrenze della tabella dei flussi negli switch coinvolti: s1, che adesso instrada i pacchetti destinati a s2 attraverso s4, s2 che adesso inizia a ricevere i pacchetti da s1 attraverso s4, e s4 che adesso deve inoltrare i pacchetti da s1 destinati a s2.