La virtualizzazione dei sistemi operativi – Capitolo 3.2.4

La rete

Xen fornisce un firewall-router virtuale (VFR) al quale ciascun domain ha collegato una o più schede di rete virtuali (VIF).

Ci sono due I/O rings, uno per la trasmissione e uno per la ricezione. Ciascuna direzione ha una lista di filtri associati espressi nella forma <tipo>,<azione>. Se il tipo corrisponde, allora l’azione associata è eseguita. I filtri sono inseriti o rimossi da domain 0.
Un esempio di uso di queste regole può essere la prevenzione di azioni di spoofing del indirizzo IP sorgente o assicurare la corretta demultiplazione del dato in base al socket di destinazione.

Le regole possono essere associate anche a interfacce fisiche presenti sull’host per effettuare azioni di firewalling e prevenire connessioni su porte insicure.

Per inviare un pacchetto il sistema operativo guest accoda un descrittore nel I/O ring di trasmissione. Xen si copia il descrittore e, per sicurezza, copia l’header del pacchetto da inviare per verificarlo in base ai filtri. Il payload non è copiato, dato che viene utilizzata la tecnica dello scatter-gather DMA1.

Per implementare con efficienza la ricezione dei pacchetti, è richiesto che il sistema operativo guest scambi un page frame non utilizzato per ogni pacchetto che riceve. Quando viene ricevuto un pacchetto, Xen controlla le regole del filtro di ricezione, identifica l’interfaccia virtuale (VIF) di destinazione e comunica al I/O ring di ricezione il page frame nel quale è presente il pacchetto.

Capitolo 3.2.5

Il disco

Solamente domain 0 ha accesso incontrollato ai dischi. Tutti gli altri domain accedono ai dischi attraverso le astrazioni chiamate Virtual Block Devices (VBD), che vengono create e configurate attraverso il software di management in esecuzione su Domain 0.

Il VBD è visto dal sistema operativo guest come una device SCSI ed è localizzato da un area di memorizzazione continua sul disco con associate informazioni sul proprietario e sul controllo di accesso.
Si accede al VBD attraverso il meccanismo di I/O ring; le richieste di accesso vengono accodate sul ring e riordinate utilizzando un algoritmo che riduce i tempi di risposta. Tuttavia, dato che Xen ha una visione completa di tutto lo storage fisico, può anch’esso effettuare un ulteriore riordinamento.

Xen gestisce una tabella di traduzione per ogni VBD. Le righe di questa tabella sono create e aggiornate da domain 0.
Al ricevimento di una richiesta, Xen analizza l’identificativo del VBD e l’offset e ritorna il corrispondente indirizzo del settore del disco fisico. Nel contempo controlla anche i permessi di accesso.
I dati vengono trasferiti dalla memoria al disco utilizzando la tecnica DMA Zero-copy data transfer.

Xen server tratta le richieste che gli pervengono dai domain U utilizzando l’algoritmo round-robin. Queste vengono passate a uno scheduler prima di arrivare al disco. Lo scheduler di basso livello garantisce lo sfruttamento della banda di accesso allo storage fisico e il raggruppamento delle richieste, inoltre fornisce un accesso equamente distribuito tra i vari domain U.

1La tecnica del DMA scatter-gather permette il trasferimento di dati verso più regioni di memoria nel corso di una singola transazione DMA. Il risultato è equivalente a quello che si avrebbe con una catena di normali richieste DMA, ma in questo modo si alleggerisce ulteriormente la CPU da interrupt e operazioni di copia di dati.

Notizie: abbiamo molto da raccontare