ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ NetBSD Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½ΠΎΠ² NVMM Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° NetBSD ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΡΡŠΠΎΠ±Ρ‰ΠΈ Π·Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ стСк Π·Π° виртуализация, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² СкспСримСнталния NetBSD-Ρ‚Π΅ΠΊΡƒΡ‰ ΠΊΠ»ΠΎΠ½ ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² стабилната вСрсия Π½Π° NetBSD 9. NVMM Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° x86_64 ΠΈ прСдоставя Π΄Π²Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° виртуализация: x86-SVM с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° AMD ΠΈ x86-VMX CPU Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° Intel CPU. Π’ ΡΠ΅Π³Π°ΡˆΠ½Π°Ρ‚Π° си Ρ„ΠΎΡ€ΠΌΠ° Π΅ възмоТно Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π΄ΠΎ 128 Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини Π½Π° Π΅Π΄ΠΈΠ½ хост, Π½Π° всяка ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π΄ΠΎ 256 Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ процСсорни ядра (VCPU) ΠΈ 128 GB RAM.

NVMM Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ систСмно ядро ​​и ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° виртуализация, ΠΈ стСк Libnvmm, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² потрСбитСлско пространство. ВзаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° ядрото ΠΈ потрСбитСлското пространство сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Ρ‡Ρ€Π΅Π· IOCTL. Π₯арактСристика Π½Π° NVMM, която Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΠΈ ΠΊΠ°Ρ‚ΠΎ KVM, Π΅ HAXM ΠΈ Bhyve, Π΅, Ρ‡Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ядро ​​сС изпълнява само ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ нСобходимият Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π° виртуализация ΠΈ цСлият ΠΊΠΎΠ΄ Π·Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π° Смулация сС прСмСства извън ядрото Π² потрСбитСлското пространство. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π²ΠΈ позволява Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ количСството ΠΊΠΎΠ΄, изпълняван с повишСни ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ риска ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° цялата систСма Π² случай Π½Π° Π°Ρ‚Π°ΠΊΠΈ срСщу уязвимости Π² Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€Π°. Π’ допълнСниС, отстраняванСто Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ тСстванСто Π½Π° fuzzing Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростСно.

Бамият Libnvmm ΠΎΠ±Π°Ρ‡Π΅ Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€, Π° само прСдоставя API, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° NVMM Π² ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ QEMU. API ΠΏΠΎΠΊΡ€ΠΈΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ създаванС ΠΈ стартиранС Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, разпрСдСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ към систСмата Π·Π° гости ΠΈ разпрСдСлянС Π½Π° VCPU. Π—Π° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ сигурността ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π½Π° Π°Ρ‚Π°ΠΊΠ°, libnvmm прСдоставя само Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ поискани – ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ слоТнитС ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π΅ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΄Π° Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚, Π°ΠΊΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ΠΈ. NVMM сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π½Π΅Ρ‰Π°Ρ‚Π° прости, Π±Π΅Π· Π΄Π° става Ρ‚Π²ΡŠΡ€Π΄Π΅ слоТно ΠΈ Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ възмоТно Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ аспСкти ΠΎΡ‚ Π²Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ NetBSD Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½ΠΎΠ² NVMM Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€

Частта Π½Π° Π½ΠΈΠ²ΠΎ ядро ​​на NVMM Π΅ доста тясно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π° с ядрото Π½Π° NetBSD ΠΈ позволява ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° производитСлност Ρ‡Ρ€Π΅Π· намаляванС Π½Π° броя Π½Π° контСкстнитС ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ гост OS ΠΈ хост срСдата. ΠžΡ‚ страна Π½Π° потрСбитСлското пространство, libnvmm сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° Π°Π³Ρ€Π΅Π³ΠΈΡ€Π° ΠΎΠ±Ρ‰ΠΈ I/O ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄Π° избягва Π½Π΅Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ систСмни извиквания. БистСмата Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° сС основава Π½Π° подсистСмата pmap, която Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π³ΠΎΠ½Π²Π°Ρ‚Π΅ страницитС с ΠΏΠ°ΠΌΠ΅Ρ‚ Π·Π° гости Π² суап дяла Π² случай Π½Π° нСдостиг Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² систСмата. NVMM Π΅ Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ ΠΈ сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° Π΄ΠΎΠ±Ρ€Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ CPU ядра, Π·Π° Π΄Π° стартиратС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини Π·Π° гости.

ΠŸΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΎ Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° QEMU Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° NVMM Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π° виртуализация. Π Π°Π±ΠΎΡ‚ΠΈ сС ΠΏΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ‡ΠΎΠ²Π΅ Π² основната структура Π½Π° QEMU. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡΡ‚Π° QEMU+NVMM Π΅ Π²Π΅Ρ‡Π΅ Вя позволява Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ стартирайтС систСми Π·Π° гости с FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ОБ Π½Π° x86_64 систСми с процСсори AMD ΠΈ Intel (самият NVMM Π½Π΅ Π΅ ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ Π΅ създадСн подходящият Π±Π΅ΠΊΠ΅Π½Π΄ , Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° ARM64 систСми ). Π‘Ρ€Π΅Π΄ областитС Π½Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° NVMM сС отбСлязва ΠΈ изолацията Π½Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ прилоТСния Π² ΠΏΡΡΡŠΡ‡Π½Π°Ρ‚Π° срСда.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ NetBSD Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½ΠΎΠ² NVMM Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€