Il progetto NetBSD sta sviluppando un nuovo hypervisor NVMM

Sviluppatori del progetto NetBSD annunciato sulla creazione di un nuovo hypervisor e dello stack di virtualizzazione associato, che sono già inclusi nel ramo sperimentale NetBSD-current e saranno offerti nella versione stabile di NetBSD 9. NVMM è attualmente limitato a supportare l'architettura x86_64 e fornisce due backend per abilitazione dei meccanismi di virtualizzazione dell'hardware: x86-SVM con supporto per estensioni di virtualizzazione CPU AMD e x86-VMX per CPU Intel. Nella sua forma attuale, è possibile eseguire fino a 128 macchine virtuali su un host, a ciascuna delle quali possono essere allocati fino a 256 core di processore virtuale (VCPU) e 128 GB di RAM.

NVMM include un driver che viene eseguito a livello del kernel del sistema e coordina l'accesso ai meccanismi di virtualizzazione dell'hardware e uno stack Libnvmm che viene eseguito nello spazio utente. L'interazione tra i componenti del kernel e lo spazio utente viene effettuata tramite IOCTL. Una caratteristica di NVMM che lo distingue dagli hypervisor come KVM è HAXM e Bhyve, è che a livello di kernel viene eseguito solo il set minimo richiesto di vincoli attorno ai meccanismi di virtualizzazione dell'hardware e tutto il codice di emulazione hardware viene spostato dal kernel nello spazio utente. Questo approccio consente di ridurre la quantità di codice eseguito con privilegi elevati e di ridurre il rischio di compromettere l'intero sistema in caso di attacchi alle vulnerabilità dell'hypervisor. Inoltre, il debugging e il test fuzzing del progetto sono notevolmente semplificati.

Tuttavia, Libnvmm stesso non contiene funzioni di emulazione, ma fornisce solo un'API che consente di integrare il supporto NVMM negli emulatori esistenti, ad esempio QEMU. L'API copre funzioni come la creazione e l'avvio di una macchina virtuale, l'allocazione della memoria al sistema guest e l'allocazione delle VCPU. Per migliorare la sicurezza e ridurre i possibili vettori di attacco, libnvmm fornisce solo funzioni esplicitamente richieste: per impostazione predefinita, i gestori complessi non vengono chiamati automaticamente e potrebbero non essere utilizzati affatto se possono essere evitati. NVMM cerca di mantenere le cose semplici, senza diventare troppo complicate e permettendoti di controllare quanti più aspetti possibili del tuo lavoro.

Il progetto NetBSD sta sviluppando un nuovo hypervisor NVMM

La parte a livello di kernel di NVMM è strettamente integrata con il kernel NetBSD e consente prestazioni migliorate riducendo il numero di cambi di contesto tra il sistema operativo guest e l'ambiente host. Dal punto di vista dello spazio utente, libnvmm tenta di aggregare operazioni I/O comuni ed evitare di effettuare chiamate di sistema non necessarie. Il sistema di allocazione della memoria si basa sul sottosistema pmap, che consente di rimuovere le pagine della memoria ospite nella partizione di swap in caso di carenza di memoria nel sistema. NVMM è privo di blocchi globali e si adatta bene, consentendo di utilizzare contemporaneamente diversi core CPU per eseguire diverse macchine virtuali guest.

È stata preparata una soluzione basata su QEMU che utilizza NVMM per abilitare meccanismi di virtualizzazione dell'hardware. Sono in corso i lavori per includere le patch preparate nella struttura principale di QEMU. La combinazione QEMU+NVMM esiste già permette eseguire con successo sistemi guest con FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 e altri sistemi operativi su sistemi x86_64 con processori AMD e Intel (NVMM stesso non è legato a un'architettura specifica, ad esempio, se viene creato il backend appropriato , sarà in grado di funzionare su sistemi ARM64). Tra le aree di ulteriore applicazione di NVMM si segnala anche l'isolamento sandbox delle singole applicazioni.

Il progetto NetBSD sta sviluppando un nuovo hypervisor NVMM

Fonte: opennet.ru

Aggiungi un commento