Вопрос по Vmware

PavelM
Уже с Приветом
Posts: 13316
Joined: 13 Jun 1999 09:01
Location: Yekaterinburg -> Montreal

Вопрос по Vmware

Post by PavelM »

Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?

Каким образом основная ОС (хозяин) осуществляет изоляцию гостевых ОС от железа? По идее, если есть баг в каком-нибудь драйвере виртуальной видеокарты, например, то с помощью него можно завалить всю систему. Или я не прав?
SlavickP
Уже с Приветом
Posts: 1861
Joined: 13 Dec 2001 10:01
Location: из Днепропетровска

Re: Вопрос по Vmware

Post by SlavickP »

PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?

Наверняка можно, используя какую-нибудь ошибку в коде VMWare.
Каким образом основная ОС (хозяин) осуществляет изоляцию гостевых ОС от железа?

Путём виртуализации.
По идее, если есть баг в каком-нибудь драйвере виртуальной видеокарты, например, то с помощью него можно завалить всю систему. Или я не прав?

Баг в драйвере виртуальной видеокарты завалит виртуальную машину, так как этот драйвер исполняется внутри VM.
PavelM
Уже с Приветом
Posts: 13316
Joined: 13 Jun 1999 09:01
Location: Yekaterinburg -> Montreal

Re: Вопрос по Vmware

Post by PavelM »

SlavickP wrote:
Каким образом основная ОС (хозяин) осуществляет изоляцию гостевых ОС от железа?

Путём виртуализации.


Непонятно, как такие штуки как аппаратные прерывания или запись/чтение из портов и пр. можно виртуализировать. Возьмем например прерывание таймера, моя гостевая ОС хочет его перепрограммировать чтобы он "тикал" положим 100 раз в секунду. Для этого мне надо записать новые параметры таймера в порты контроллера, сделав что-то типа OUT XX, YY. Вопрос - в какой момент хозяйская ОС ловит это дело? Транслирует инструкцию за инструкцией? Подменяет к-л образом адреса портов на свои? После этого, каким образом это аппаратное прерывание инициируется в гостевой ОС?

Баг в драйвере виртуальной видеокарты завалит виртуальную машину, так как этот драйвер исполняется внутри VM.

Я имел ввиду баг в слое виртулизации.
User avatar
zhitkoff
Уже с Приветом
Posts: 571
Joined: 13 Dec 2000 10:01
Location: Minsk ... Charlotte, NC

Re: Вопрос по Vmware

Post by zhitkoff »

PavelM wrote:
Непонятно, как такие штуки ......


http://www.vmware.com/support/esx2/doc/ ... ation.html

А вообще рекомендую почитать классику - IBM VM/ESA (google должен помочь)
IBM сделала VM давным давно - заслуга VMWARE лиш в том, что они перенесли эту идею на интеловское железо. ПРинципы и подходы по виртуализации остаются в общем теми же самыми с поправкой на некоторые вещи встроенные аппаратно в платформу IBM zSeries.
tacmd
PavelM
Уже с Приветом
Posts: 13316
Joined: 13 Jun 1999 09:01
Location: Yekaterinburg -> Montreal

Post by PavelM »

Концепция концепцией, но айбиэмовская реализация строится на некоторых аппаратных средствах защиты. Насколько, с этой точки зрения, нынешняя интеловская платформа аппаратно "слабее" мейнфреймов? Хочется отделить мух от котлет. Просто с одной стороны сильные рекламые заявления о непробиваемости vmware, с другой строны:

http://groups.google.ca/groups?hl=ru&in ... u+100+host

:pain1:
dB13
Уже с Приветом
Posts: 1494
Joined: 08 May 2001 09:01
Location: Silicon Valley

Re: Вопрос по Vmware

Post by dB13 »

SlavickP wrote:
PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?

Наверняка можно, используя какую-нибудь ошибку в коде VMWare.


1. It possible to reset/hang the host server from inside a VM only if VMware ESX/GSX/WS have serious bugs. There no such bugs in VMware.
PavelM, I'll pay you $100 if you can write a program that executes inside a VM
and resets or hangs the host. :D

2. VMware Workstation and GSX don't provide CPU/network/disk bandwith reservations so one VM can affect perfomance of another running VM on the same host. Still I doubt that one VM can get more than 3x of another VM CPU, network, or disk bandwidth usage.

ESX provides such reservations and has much better resource management capabilities, so performace isolation between VMs is almost perfect.

3. Only CPUs are virtualized, all other HW devices are emulated, so bugs in nonCPU emulation can crash only VMware Workstation/GSX process and the VM. Other VMs run in separate processes, so they are unaffected.

dB13 from VMware, the standard disclamer
dB13
Уже с Приветом
Posts: 1494
Joined: 08 May 2001 09:01
Location: Silicon Valley

Post by dB13 »

PavelM wrote:Концепция концепцией, но айбиэмовская реализация строится на некоторых аппаратных средствах защиты. Насколько, с этой точки зрения, нынешняя интеловская платформа аппаратно "слабее" мейнфреймов? Хочется отделить мух от котлет. Просто с одной стороны сильные рекламые заявления о непробиваемости vmware, с другой строны:

http://groups.google.ca/groups?hl=ru&in ... u+100+host

:pain1:


x86 is really hard to effectively virtualize. To get 100% protection is easy (x86 has 100% protection against user mode programs on modern OSes), to do it with
perfomance near native -- is really hard. VMware can do it.

100% host cpu utilization? That means that the VM(s) is(are) doing something 100% of time. It doesn't break the host. If it bothers you or aps on the host then
use modern (W2k, XP, Linux, BSD) OSes in VMs or run special idler programs in the old OSes (Win95, DOS)
PavelM
Уже с Приветом
Posts: 13316
Joined: 13 Jun 1999 09:01
Location: Yekaterinburg -> Montreal

Re: Вопрос по Vmware

Post by PavelM »

dB13 wrote:
SlavickP wrote:
PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?

Наверняка можно, используя какую-нибудь ошибку в коде VMWare.


1. It possible to reset/hang the host server from inside a VM only if VMware ESX/GSX/WS have serious bugs. There no such bugs in VMware.


Never say never. Looks pretty serious, eh ...

http://groups.google.ca/groups?hl=ru&lr ... .com#link5

"Unfortunately there is a bug in current versions of our products that
causes the guest clock to run too fast with certain guest OSes. In
particular, Win2K Server gains about 121 seconds per day. I recently
fixed this bug, and the fix will be in the next release of all products
(GSX 2.5, Workstation 4.0, and ESX 1.5.2 -- maybe already in ESX 1.5.1;
I've forgotten). There's no way to patch Workstation 3.x in the field
to fix it."
Tim Mann (mann@vmware.com)
zVlad
Уже с Приветом
Posts: 15311
Joined: 30 Apr 2003 16:43

Re: Вопрос по Vmware

Post by zVlad »

zhitkoff wrote:
PavelM wrote:
Непонятно, как такие штуки ......


http://www.vmware.com/support/esx2/doc/ ... ation.html

А вообще рекомендую почитать классику - IBM VM/ESA (google должен помочь)
IBM сделала VM давным давно - заслуга VMWARE лиш в том, что они перенесли эту идею на интеловское железо. ПРинципы и подходы по виртуализации остаются в общем теми же самыми с поправкой на некоторые вещи встроенные аппаратно в платформу IBM zSeries.


Из приведенной ссылки читаем: "CPU Virtualization

Each virtual machine appears to run on its own CPU, or set of CPUs, fully isolated from other virtual machines, with its own registers, translation lookaside buffer, and other control structures. Most instructions are directly executed on the physical CPU, allowing compute-intensive workloads to run at near-native speed. Privileged instructions are performed safely by the patented and patent-pending technology in the virtualization layer. "

Кто нибудь понял как происходит моделирование привелигерованных команд? Я нет.
А теперь предлагаю описание того как это делается в IBM VM/ Cвоими словами:

Гостевые ОС получают управление от управляющей программы VM с реальным состоянием проблемной задачи и виртуальным состоянием супервизор. Прикладные задачи в гостевой системе запускаются с виртуальным и реальным состоянием состоянием "Задача".
Следовательно всякий раз как гостевая система пытается выполнить что либо привелигерованное (установить таймер, начать операцию ввода.вывода, изменить слово состояния програмы PSW и т.д.) то происходит аппаратное прерывание и управление переходит к управляющей программе (СP). СР, делает проверку виртуального состояния программы вызвавшей прерывания и если это состояние "Супервизор" то СР будет безопасно для других и сомой себя "моделировать" выполнение запрошенной привелигированной команды. Если же прерывание произошло в виртуальном состоянии "Задача" (т.е. запрещенном для выполнения привилегированных команд в рамках гостевой системы), то тогда СР будет передавать управление программе обработки прерываний в гостевой системе. Последняя будет аварийно завершать неправильную программу.
В начальных адресах реальной памяти мэйнфрэйма (0 страница) имеют фиксированные адреса, в которых во время инициализации система записывает адреса (так называемые "новые" адреса) входа программ обработки различных видов прерываний. Причем для каждого вида прерываний имеется пара адресных полей - "новое" и "старое". Эти адреса никем не могут быть изменены, кроме самой системы. Когда происходит аппаратное прерывание (например по привелигированной команде) CPU сохраняет адрес команды вызвавшей прерывание в поле "старого" адреса и продолжает процесс использую "новый" адрес, который всегда есть адрес системной программы обработки соответствующего прерывания.
Что бы ни одна виртуальная машина не могла монополизировать CPU перед передачей управления CP устанавливает так называемый "временной компаратор" на определенное значение времени. Если ВМ не отдала управление до истечения установленного в компараторе времени, то происходит прерывание и управление получает системная программа обработки прерываний от таймера. Ясно, что ВМ не в состоянии сама менять значение компаратора.

Ну как вам это объяснение понятно? Есть не ясности с защищеностью в случае IBM VM? Какими бы ни были ошибки в гостевой системе, чего бы гостевая система ни задумала сделать вредного для других процессов - ничего не получится. Вы можете написать свою систему, совершенно произвольную. Эта ваша система сможет доставать исключительно ресурсы выделеные ей. Ни СР ни другие ВМ не смогут быть затронуты вашей системой. И это зависит от уровня ваших знаний о СР и о принципах работы мэйнфрэйм. Вы может идеально все это знать, но это вам не поможет.
dB13
Уже с Приветом
Posts: 1494
Joined: 08 May 2001 09:01
Location: Silicon Valley

Re: Вопрос по Vmware

Post by dB13 »

PavelM wrote:
dB13 wrote:
SlavickP wrote:
PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?

Наверняка можно, используя какую-нибудь ошибку в коде VMWare.


1. It possible to reset/hang the host server from inside a VM only if VMware ESX/GSX/WS have serious bugs. There no such bugs in VMware.


Never say never. Looks pretty serious, eh ...

http://groups.google.ca/groups?hl=ru&lr ... .com#link5

"Unfortunately there is a bug in current versions of our products that
causes the guest clock to run too fast with certain guest OSes. In
particular, Win2K Server gains about 121 seconds per day. I recently
fixed this bug, and the fix will be in the next release of all products
(GSX 2.5, Workstation 4.0, and ESX 1.5.2 -- maybe already in ESX 1.5.1;
I've forgotten). There's no way to patch Workstation 3.x in the field
to fix it."
Tim Mann (mann@vmware.com)


1. I don't say that VMware doesn't have any bugs, just there are no bugs that allow host reset/hang from inside a VM.

2. It is old (2003-01-03 ) post about old versions of VMware, and is not about reset/hang.
zVlad
Уже с Приветом
Posts: 15311
Joined: 30 Apr 2003 16:43

Post by zVlad »

А вот что Вы, db13, скажете по такому поводу: возможно ли зная все принципы работы VmWare и процессора написать такую гостевую систему, которая будет в состоянии заваливать саму VmWare и/или другие ВМ.
PavelM
Уже с Приветом
Posts: 13316
Joined: 13 Jun 1999 09:01
Location: Yekaterinburg -> Montreal

Post by PavelM »

Некоторые ответы по виртуализации я нашел в нижеследующих документах

http://www.extremetech.com/article2/0,3 ... 611,00.asp
http://www.redhat.com/archives/bochs-de ... 00071.html
dB13
Уже с Приветом
Posts: 1494
Joined: 08 May 2001 09:01
Location: Silicon Valley

Post by dB13 »

PavelM wrote:Некоторые ответы по виртуализации я нашел в нижеследующих документах

http://www.extremetech.com/article2/0,3 ... 611,00.asp
http://www.redhat.com/archives/bochs-de ... 00071.html


I recommend the following article and its references written by VMware top developers, awarded Best Paper at USENIX Annual Technical Conference 2001:
http://www.usenix.org/publications/library/proceedings/usenix01/sugerman.html
PavelM
Уже с Приветом
Posts: 13316
Joined: 13 Jun 1999 09:01
Location: Yekaterinburg -> Montreal

Post by PavelM »

Резимируя вышеизложенное, все согласны с тем, что интеловский процессор (IA32) не имеет аппаратных средств 100% виртуализации.
В тоже время vmware заявляет что обладает секретной патентованной технологией позволяющей обойти эти ограничения.
Для этого есть как бы 2 пути:
1. 100% эмулятор по принципу - читать инструкцию из файла, проверить, если непривилегированная - исполнить, если обратное - переслать монитору виртуальной машины. Медленно.
2. Запустить "настоящий" процесс в кольце 3, сделать свой обработчик исключений, как только процесс пытается что-то типа IN, OUT, PUSHF и т.п. срабатывает защита, управление получает наш обработчик исключений и уже решает что с этим делать - игнорировать или переслать в для исполнения в кольцо 0.
Т.е. в данном случае гостевая ОС целиком сидит в кольце 3 - хотя ее ядро с драйверами думает что оно в кольце 0, которое на самом деле эмулируется софтом vmware.

Гипотетическая ситуация, когда одна гостевая ОС может навредить остальным - ошибка в коде который занимается обработкой исключений или передает данные железу (ring 0), в т.ч. в хозяйской ОС. Положим, есть ошибка при записи бутсектора в драйвере флоппи-диска в Win2000 являющейся хозяином, гостевая VM пытаясь записать бутсектор уронит весь сервер.
dB13
Уже с Приветом
Posts: 1494
Joined: 08 May 2001 09:01
Location: Silicon Valley

Post by dB13 »

PavelM wrote:Резимируя вышеизложенное, все согласны с тем, что интеловский процессор (IA32) не имеет аппаратных средств 100% виртуализации.
В тоже время vmware заявляет что обладает секретной патентованной технологией позволяющей обойти эти ограничения.
Для этого есть как бы 2 пути:
1. 100% эмулятор по принципу - читать инструкцию из файла, проверить, если непривилегированная - исполнить, если обратное - переслать монитору виртуальной машины. Медленно.
2. Запустить "настоящий" процесс в кольце 3, сделать свой обработчик исключений, как только процесс пытается что-то типа IN, OUT, PUSHF и т.п. срабатывает защита, управление получает наш обработчик исключений и уже решает что с этим делать - игнорировать или переслать в для исполнения в кольцо 0.
Т.е. в данном случае гостевая ОС целиком сидит в кольце 3 - хотя ее ядро с драйверами думает что оно в кольце 0, которое на самом деле эмулируется софтом vmware.

Гипотетическая ситуация, когда одна гостевая ОС может навредить остальным - ошибка в коде который занимается обработкой исключений или передает данные железу (ring 0), в т.ч. в хозяйской ОС. Положим, есть ошибка при записи бутсектора в драйвере флоппи-диска в Win2000 являющейся хозяином, гостевая VM пытаясь записать бутсектор уронит весь сервер.


BTW, granted patents can't be secret in USA, they are not "trade secrets". VMware has both.

About above methods #1 and #2. VMware uses something like #2 but with significant differences. I can't go into details here.

>ошибка в коде который занимается обработкой исключений
The size of our exeption/interrupt handling code size isn't big, we don't have bugs there :mrgreen:

>передает данные железу (ring 0), в т.ч. в хозяйской ОС
We don't have control of the host OS. Sure, the host OS/drivers can have bugs
and can reset the host. VMware here is not different form any other host app.
VMware has 3-4 own host drivers but they are simple and unlikely to have bugs.
User avatar
шпиён
Уже с Приветом
Posts: 3459
Joined: 29 Oct 2002 20:08
Location: US

Post by шпиён »

PavelM wrote:2. Запустить "настоящий" процесс в кольце 3, сделать свой обработчик исключений, как только процесс пытается что-то типа IN, OUT, PUSHF и т.п. срабатывает защита, управление получает наш обработчик исключений и уже решает что с этим делать - игнорировать или переслать в для исполнения в кольцо 0.
Т.е. в данном случае гостевая ОС целиком сидит в кольце 3 - хотя ее ядро с драйверами думает что оно в кольце 0, которое на самом деле эмулируется софтом vmware.

Гипотетическая ситуация, когда одна гостевая ОС может навредить остальным - ошибка в коде который занимается обработкой исключений или передает данные железу (ring 0), в т.ч. в хозяйской ОС. Положим, есть ошибка при записи бутсектора в драйвере флоппи-диска в Win2000 являющейся хозяином, гостевая VM пытаясь записать бутсектор уронит весь сервер.


Думаю, все именно так - интерпретация не нужна. Вопрос - ну и чем это отличается от описанного zVald на мэйнфрейме? :pain1:

Return to “Вопросы и новости IT”