LINUX.ORG.RU

Модификация ядра KVM

 , ,


3

3

Пытаемся сделать прототип, который должен:

  • 

не детектится как виртуальная машина (проходить тесты на виртуализацию)
  • 
рендомить параметры «железа» при каждом клонировании эталонного образа
  • в качестве гостевой ОС - windows 10, на хостинге CentOS или Ubuntu (можно любой другой)
  • прокидывать видеокарты в гостевые системы (но не GRID, а пользовательские видеокарты на вроде NVIDIA 1080) сразу в несколько активных машин (задача на 15 машин одновременно работающих распараллелить одну видеокарту с хостинга (что то вроде vCPU только vGPU))

Возможно ли это сделать патчами или штатными средствами Linux/KVM/API Windows или нужно лезть в движок KVM и модифицировать его? Может кто нибудь помочь с этой задачей?

Если будут мысли можно в телеграмм @leon2517 , либо в теме форума, очень нужна помощь



1 не детектится как виртуальная машина (проходить тесты на виртуализацию)

Тут всё зависит от того, как именно работает «детектор виртуализации». Самый простой способ - смотреть флаг в cpuinfo. Такое можно обмануть простейшим патчем для qemu (если не ошибаюсь, убирать надо CPUID_EXT_HYPERVISOR). Информация в DMI/SMBIOS тоже относительно просто правится. А вот обнаружению виртуализации при помощи измерения всяких разных таймингов противостоять скорее всего невозможно (кроме очень медленной и очень точной полной виртуализации без всяких KVM).

2 рендомить параметры «железа» при каждом клонировании эталонного образа

Что именно здесь имеется ввиду? Рандомные серийники? Или рандомизация самого эмулируемого железа (1 раз: эмулируем sata и cirrus видео, 2 раз: эмулируем ide и простейшее vga, etc.)?

4 прикидывать видеокарты в гостевые системы (но не GRID, а пользовательские видеокарты на вроде NVIDIA 1080) сразу в несколько активных машин (задача на 15 машин одновременно работающих распараллелить одну видеокарту с хостинга (что то вроде vCPU только vGPU))

Ни разу не сталкивался с прокидыванием видеокарт, но почему-то мне кажется, что именно в такой постановке задача практически не решаема.

Deleted ()
Ответ на: комментарий от Deleted

- 1 Базовый тест на виртуализацию, необходимо пройти на 100% https://github.com/a0rtega/pafish

Не можем победить RDTSC (разница в синхронизации счетчиков микроциклов между ядрами процессоров)

- 2 По рендому параметров ранее мы использовали vbox(сейчас мигрируем на KVM) У гипервизиора vbox есть файл virtualbox manager, он содержит 47 параметров BIOS, ACPI таблицы и идентификаторы «железа», а так же сетевые настройки (например мы измеили локальную подсеть на 192.168.xxx у каждого клона)и всю информацию о названиях виртуальных компонентов системы. Мы рендомили значения BIOS, а все названия компонентов меняли на «реальное железо» разных ПК (например какого нибудь ASUS, HP и тд), таким образом избавлялись от тригиров виртуальной среды vbox. Вероятно к KVM должен быть аналог, если есть время взглянуть на патч для vbox, что бы провести аналогию с KVM могу направить ссылку(лучше телеграмм или джабер).

- 3 По видеокарте - опять же с отсылкой к vbox - в систему прокидывались только шейдеры видеокарты. То есть например тест в Google Chrome в гостевой машине - chrome/gpu - видел Nvidia в каждой гостевой системе, можно ли сделать аналог на KVM? На vbox это достигалось обычным включением поддержки 3D, а ранее использованием патча Вайн3D до выхода релиза 6 версии

LEON2517 ()
Ответ на: комментарий от LEON2517

Не можем победить RDTSC (разница в синхронизации счетчиков микроциклов между ядрами процессоров)

Можно попробовать обмануть конкретно вот этот тест, но в общем случае эту задачу нельзя решить без реализации полной и очень точной эмуляции инструкций процессора.

Мы рендомили значения BIOS, а все названия компонентов меняли на «реальное железо» разных ПК (например какого нибудь ASUS, HP и тд), таким образом избавлялись от тригиров виртуальной среды vbox.

Только названия менять нужно? На IDшники и используемые драйверы это никак же не влияет и всё можно «вычислить» по ним.

  • 3 По видеокарте - опять же с отсылкой к vbox - в систему прокидывались только шейдеры видеокарты. То есть например тест в Google Chrome в гостевой машине - chrome/gpu - видел Nvidia в каждой гостевой системе, можно ли сделать аналог на KVM? На vbox это достигалось обычным включением поддержки 3D, а ранее использованием патча Вайн3D до выхода релиза 6 версии

То есть, производительность настоящей проброшенной видеокарты вам не нужна?

Deleted ()
Ответ на: комментарий от Deleted

Ну и в продолжеине темы защиты от обнаружения виртуализации: вам всё же нужные средства от конкретных систем каких-то конкретных приложений или некое универсальное решение? Потому что в первом случае можно тут подпилить, там подпатчить, сям подхачить, а во втором - серьёзное R&D на много человеколет и без каких-либо гарантий производительности и вообще работоспособности результата.

Deleted ()
Ответ на: комментарий от Deleted

- Можно попробовать обмануть конкретно вот этот тест, но в общем случае эту задачу нельзя решить без реализации полной и очень точной эмуляции инструкций процессора.

Этого более чем достаточно на данном этапе, было бы здорово посотрудничать если есть мысли как это можно реализовать

- Только названия менять нужно? На IDшники и используемые драйверы это никак же не влияет и всё можно «вычислить» по ним.

ID HDD,CPU,BIOS и других элементов немного рендомятся так же в файле virtualbox manager(могу в ТГ или джабер направить исходник) (последние несколько цифр), таким образом добились прохождения проверки по ID железа, хвид параметров всегда уникальный. Нужно реализовать аналогичное на KVM

- То есть, производительность настоящей проброшенной видеокарты вам не нужна? Пользователи очень косвенно используют возможности видеокарты, поэтому важнее качественные и уникальные параметры зависящие от видео (Canvas/WebGL1,2). В будем можно подключить коммерческие видеокарты (Tesla Nvidia и тд). Сейчас у нас хостинги на 1080 и если задача распараллелить 1080 на несколько машин, сделав это правильно и полноценно, не решаемая, то можно обойтись прокидыванием шейдеров.

- Ну и в продолжеине темы защиты от обнаружения виртуализации: вам всё же нужные средства от конкретных систем каких-то конкретных приложений или некое универсальное решение? Потому что в первом случае можно тут подпилить, там подпатчить, сям подхачить, а во втором - серьёзное R&D на много человеколет и без каких-либо гарантий производительности и вообще работоспособности результата.

Нужно решение которое проходит очень конкретные тесты (то есть подгонка под тесты, их сейчас 3 шт, основной - Пафиш), на данном этапе этого будет достаточно что бы перейти полностью на KVM(отказаться от вбоксов) и автоматизировать процессы, а далее мы бы финансировали разработку более серьезных и глубоких решений ближе к универсальным

Вбоксы - очень медленные, клиенты жалуются + там беда с автоматизацией и не удается обойти Пафиш на 100% (всегда один параметр RDTSC остается красным)

LEON2517 ()
Ответ на: комментарий от LEON2517

Это все делается для более глобальной цели, решение проблем с обнаружением виртуализации - промежуточное звенно. Но совершенно пока не понятно с какой стороны подобраться к KVM

LEON2517 ()

прокидывать видеокарты в гостевые системы (но не GRID, а пользовательские видеокарты на вроде NVIDIA 1080)

Тут разве что SR-IOV поможет.

Meyer ★★★★★ ()

прокидывать видеокарты в гостевые системы

К сожалению это не полетит. Есть VFIO, но он только для Intel. AMD и NVIDIA делают только свои проприетарные решения в драйверах. Поддерживают их только для datacenter-like видеокарт.

Есть еще вариант пробрасывать OpenGL без самой видеокарты, но оно для винды вроде как не работает.

не детектится как виртуальная машина

Тут все плохо.
Либо часики придется подкручиывать, но тогда в виртуалке они будут совсем плохо тикать и пользователи будут грустные от упавшей в ноль производительности.
Либо guest померяет время отклика от прерывания и все поймет без слов.

trex6 ★★★★★ ()

Весьма амбициозно. Скорее всего полностью спрятаться удастся только в эмуляторе с днищной производительностью.
C vGPU вас ждёт фейл, если канешна не напишете свои дрова. Но вы не напишете.

Deleted ()
Ответ на: комментарий от Meyer

Если есть возможность взяться и обойти тест https://github.com/a0rtega/pafish на KVM, напишите пожалуйста по контактам mr.dmitry91@gmail.com или телеграмм @leon2517, можно обсудить оплату, задача крайне срочная и важная, можно полноценное участие в проекте так же обсудить

LEON2517 ()
Ответ на: комментарий от LEON2517

Это все делается для более глобальной цели

Покупка товаров за счет налогоплательщиков других стран и дргие инструменты для авантюристов.

anonymous ()
Ответ на: комментарий от post-factum

у нас белый проект в области маркетинга, стек технологий который обозначен выше перестал устраивать из-за скорости работы систем и проблем с автоматизацией (сложности с масштабированием систем), большая просьба отписать специалистов (ядерщики Linux/KVM) которые смогут помочь с разработкой прототипа и миграцией на новую архитектуру

LEON2517 ()
Ответ на: комментарий от LEON2517

Ну, хантить таких — это не ко мне. Все, кого я знаю из области, уже заханчены (и потому я их и знаю :)).

У меня тоже нет возможности отвлекаться от основной работы на такое.

post-factum ★★★★★ ()
Ответ на: комментарий от LEON2517

Не можем победить RDTSC (разница в синхронизации счетчиков микроциклов между ядрами процессоров)

Смотри на coresched патчи от чуваков из DigitalOcean. Пока только в LKML муссируются, но допилили до нормального вида и скоро смержат.

RDTSC в пределах нескольких сотен-тысяч тактов и на реальном железе отличается.

- 3 По видеокарте - опять же с отсылкой к vbox - в систему прокидывались только шейдеры видеокарты. То есть например тест в Google Chrome в гостевой машине - chrome/gpu - видел Nvidia в каждой гостевой системе, можно ли сделать аналог на KVM? На vbox это достигалось обычным включением поддержки 3D, а ранее использованием патча Вайн3D до выхода релиза 6 версии

vfio и vGPU.

mv ★★★★★ ()
Ответ на: комментарий от trex6

«Есть VFIO, но он только для Intel. AMD и NVIDIA делают только свои проприетарные решения в драйверах. Поддерживают их только для datacenter-like видеокарт.»

vfio работает на обычных видеокартах всех указанных вендоров

anonymous ()
Ответ на: комментарий от mv

Проброс одной видеокарты в несколько виртуалок одновременно и всё это без серьёзного перепиливания драйверов как в госте так и на хосте?

Deleted ()
Ответ на: комментарий от Deleted

Проброс одной видеокарты в несколько виртуалок одновременно и всё это без серьёзного перепиливания драйверов как в госте так и на хосте?

Вроде, так. У нас выход на инженеров Нвидии, правда, был. И карточка - не видюха с полки магазина, а датацентро-облачная какая-то.

mv ★★★★★ ()
Ответ на: комментарий от mv

Вроде, так. У нас выход на инженеров Нвидии, правда, был. И карточка - не видюха с полки магазина, а датацентро-облачная какая-то.

А, ну это проприетарная энвидиевская технология, для которой специальные дрова (как я понял) и которая работает только с избранными видеокартами специально для датацентров, с соответствующим ценником. ТС же хочет (точнее хотел, по описанию в первом посте) то же самое, но для обычных видеокарт.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

прокидывать видеокарты в гостевые системы

Легко. От тебя потребуется приблизительно 1300000$, и примерно 15-18 месяцев...

Jetty ★★★★★ ()
Ответ на: комментарий от post-factum

Разработайте план эвакуации для Сан-Франциско. (вопрос на собеседовании в Google)

Вы разработали план «эвакуации», не узнав какое бедствие.

П/С Пожалуйста без флуда. Уверяю, ничьи религиозные чувства не задеваются, впрочем как и финансовые сбережения. Арбитраж в маркетинге и гэмблинге безобиден. Кто может конструктивно помочь советом буду благодарен.

LEON2517 ()
Ответ на: комментарий от anonymous

Топором можно колоть дрова, можно убивать людей. Специфика арбитража заключается в отработке огромного количества аккаунтов/рекламных компаний в рамках локации. К сожалению, Littleone не смог обеспечить нужного объема трафика.

Радикальным моралистам, раз эта тема важна и перекручивается, я объясню. VDS в которой отсутствует детект на виртуальную среду не является хакерским инструментом, как и обычный ПК или выделенный сервер не является хакерским инструментом. VPN сервис не несет в себе цель пособничества терроризму, а служит ценностям свободного интернета. Арбитраж в маркетинге и гэмблинге является сложной легальной работой(например CPA сети+веб мастера) в которой помогают подобные инструменты.

В любом случае эта тема для дискуссии не в рамках созданной темы. Всем, кто помогает советами - спасибо, буду рад лично пообщаться. Любой флуд будет отправлен на модерацию.

LEON2517 ()
Ответ на: комментарий от anonymous

так полный инет пруфов https://www.reddit.com/r/VFIO/

Это всё про проброс одной видеокарты в одну виртуалку. В том, что это работает, тут никто вроде не сомневается. Вопрос про проброс одной видеокарты в несколько виртуалок так, чтобы они все могли делить её ресурсы и общая производительность при этом была максимально близка к хостовой/нативной. В таком виде опенсорсное решение есть только для новых встроек Intel. У NVidia и AMD такое есть только в виде проприетарных решений для дорогих не десктопных линеек видеокарт.

(и уже выяснили, что ТСу особая производительность вроде не нужна, и подходит проброс 3D ускорения в винду хоть в каком-нибудь виде)

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от LEON2517

я объясню.
VPN сервис не несет в себе цель пособничества терроризму, а служит ценностям свободного интернета.
Арбитраж в маркетинге и гэмблинге является сложной легальной работой

Ты не смог объяснить, зачем тебе для арбитража трафика борьба с детектом виртуалок.

LamerOk ★★★★★ ()
Ответ на: комментарий от Deleted

Конкретно я отвечал на утверждение о невозможности VFIO вообще для консюмерских амд/нвидиа.

О GVT-g мне известно. В следующем году будет проще с этим, когда интел свои видяхи выпустит.

anonymous ()
Ответ на: комментарий от mv

не видюха с полки магазина, а датацентро-облачная какая-то

Тогда вопросов нет, для них поддержка виртуальных GPU действительно запилена в драйвера, как и для дорогих/датацентровых решений для AMD.

trex6 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.