Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Background
Virtualization Types
Key Techniques
Summary
Background
Virtualization Types
Key Techniques
Summary
Key Techniques
Summary
Outline
CS 6V81-05: System Security and Malicious Code Analysis
Overview of System Virtualization: The most powerful
platform for program analysis and system security
1
Background
2
Virtualization Types
3
Key Techniques
4
Summary
Zhiqiang Lin
Department of Computer Science
University of Texas at Dallas
April 4th , 2012
Outline
Background
Virtualization Types
Why virtualization?
Why
1
Background
2
Virtualization Types
3
Key Techniques
Today’s
data center
not virtualize?
Cloud
computing
Fault resist
Cost Effect
4
Summary
Easy to maintain
Virtual
resource
pool
Background
Virtualization Types
Key Techniques
Summary
What is Virtualization
Background
Virtualization Types
Key Techniques
Summary
Key Techniques
Summary
Virtualization Properties
What is Virtualization
Linux
Linux (devel)
XP
Vista
Isolation
Encapsulation
Interposition
MacOS
Virtual Machine Monitor
Hardware
Background
Virtualization Types
Key Techniques
Isolation
Summary
Background
Virtualization Types
Encapsulation
Fault Isolation
Fundamental property of virtualization
Performance Isolation
Accomplished through scheduling and resource allocation
All VM state can be captured into a file
Operate on VM by operating on file
mv, cp, rm
Complexity
Proportional to virtual HW model
Independent of guest software configuration
Background
Virtualization Types
Key Techniques
Summary
Interposition
Background
Key Techniques
It about interfaces
Monitor can inspect, modify, deny operations
VMMs operate at the hardware interface
Hardware interface are typically smaller, better defined than
software interfaces
Example:
Compression
Encryption
Profiling
Translation
Virtualization Types
Virtualization benefits
Increased resource utilization:
Disadvantages of being in the monitor
Low visibility into what the guest is doing
Key Techniques
Summary
Background
Virtualization Types
Key Techniques
Virtualization: server consolidation
Virtualization: server consolidation
Physical
Servers
Server consolidation
Multiplexing
Mobility
Enhanced Security
Test and Deployment
...
Summary
Why Not the OS?
All guest actions go through monitor
Background
Virtualization Types
Virtual
Server
Host
Virtual
Machines
Guests
Summary
Background
Virtualization Types
Key Techniques
Summary
Mobility: load balance
(Migration)
Mobility:
load balance
Server 1
CPU Utilization =
90%
Background
Virtualization Types
Enhanced Security
Server 2
Enhanced Security
50%
CPU Utilization =
Key Techniques
Conventional
VM
Secure
VM
Firewall
VM
Guest 1
VM
Guest 2
VM
Guest 3
VM
Guest 4
VM
Guest 5
None
VM
Guest 6
Mobility: load balance
Server 1
CPU Utilization =
Background
VM
Guest 7
Server 2
70%
Virtualization Types
VMM
70%
CPU Utilization =
Key Techniques
Summary
Outline
Testing and Deployment
VM
Guest 1
VM
None
Guest 2
Development
VM
Develop
VM
Guest 3
VM
Guest 4
VM
Guest 5
VM
None
Guest 2
QA
VM
Test
Deploy
1
Background
Production
VM
2
Virtualization Types
Production
VM
3
Key Techniques
Production
VM
4
Summary
Production
VM
VM
VM
Guest
6 Guest 7
Summary
Background
Virtualization Types
Key Techniques
Summary
Types of Virtualization
Background
Virtualization Types
Key Techniques
Summary
Taxonomy
Taxonomy
Process Virtualization
Language construction
Process VMs
Java, .NET
System VMs
Cross-ISA emulation
Same
ISA
Apple’s 68000-PowerPC to Intel X86 Transition
Different
ISA
Same
ISA
Different
ISA
Application virtualization
Sandboxing, mobility
System Virtualization
VMware
Multiprogrammed
Systems
Dynamic
Translators
Classic-System
VMs
Whole-System
VMs
Dynamic
Binary
Optimizers
HLL VMs
Hosted
VMs
Co-designed
VMs
Xen
Microsoft’s Viridian
Background
Virtualization Types
Key Techniques
System Virtual Machine Monitor Architectures
Summary
Background
Virtualization Types
Traditional
Key Techniques
Summary
What is Virtualization
Traditional
Hosted
VMware Workstation
Hybrid
VMware ESX
Xen
Hypervisor
Linux
Linux (devel)
XP
Virtual Machine Monitor
Hardware
Examples: IBM VM/370, Stanford DISCO
Vista
MacOS
Background
Virtualization Types
Key Techniques
Summary
Hosted Virtual Machines
Background
Virtualization Types
Key Techniques
Summary
Hosted Monitor Architecture (VirtualBox)
Hosted Monitor Architecture
Goal:
Run Virtual Machines as an application on an existing
Operating System (QEMU, VirtualPC, VirtualBox,
VMware-workstation)
Guest OS (Linux)
User App
Why
Application continuity
Reuse existing device drivers
Leverage OS support
World Switch
Kernel Module
Host OS (Window XP)
File system
CPU Scheduler
Hardware
Hosted Monitor Architecture
VM management platform
Background
Virtual Machine Monitor
Virtualization Types
Key Techniques
Hosted Monitor Scheduling (VirtualBox)
Hosted Monitor Scheduling
Summary
Background
Virtualization Types
Key Techniques
Hosted Architecture Tradeoffs
User App
Positives
Installs like an application
Kernel Module
User App
Guest OS Guest OS (Linux)
(Vista)
User App
Guest OS (Linux)
CPU / Memory
Virtualization
No
disk(Window XP)
partitioning needed Virtual Machine Monitor
Host OS Virtual disk is a file on host file system
No host reboot needed
Hardware
Hosted Monitor Architecture
Runs like an application
Uses host schedulers
Kernel Module
Host OS (Window XP)
Virtual Machine Monitor
Virtual Machine Monitor
Hardware
Hosted Monitor Scheduling
3
Negatives
I/O path is slow
User Appswitch
Requires world
Relies on host scheduling
Display, Keyboard, Timer, USB
Host OS (Window XP)
User App
Device I/O
May not be suitable for intensive VM Network, Disk,
workloads
Kernel Module
User App
Guest OS (Linux)
Guest OS Guest OS (Linux)
(Vista)
Virtual Machine Monitor
Hardware
Hosted Monitor Architecture
Summary
Background
Virtualization Types
Key Techniques
Summary
VMware ESX 2.0
Background
Virtualization Types
Hybrid Ex 2 - Xen 3.0
Para -virtualization
Linux Guest
Hardware-supported
virtualization
Unmodified
Windows
Isolated Device Drivers
Source: Ottawa Linux Symposium 2006 presentation.
http://www.cl.cam.ac.uk/netos/papers/
Source: http://www.vmware.com/pdf/esx2_performance_implications.pdf
Background
Virtualization Types
Key Techniques
Summary
Outline
Hypervisor
Hypervisor
Hardware-supported
• Hardware-supported
single-usesingle-use
monitor monitor
Characteristics
• Characteristics
– Small size
Small size
in a special
Runs in– aRuns
special
hardware mode
hardware
mode
– Guest OS runs in
Guest OSnormal
runs in
privileged level
normal
privileged level
• Uses
– Security
– System management
Security– Fault tolerance
Uses
System management
Fault tolerance
User
Mode
Operating System
Kernel
Mode
Hypervisor
Monitor
Mode
Hardware
1
Background
2
Virtualization Types
3
Key Techniques
4
Summary
Key Techniques
Summary
Background
Virtualization Types
Key Techniques
Summary
Key Techniques to implement Virtualization
Background
Virtualization Types
Key Techniques
Summary
I Instruction Interpretation
Emulate Fetch/Decode/Execute pipeline in software
Positives
Instruction Interpretation
Easy to implement
Minimal complexity
Binary Translation
Trap-and-emulate
Negatives
Para-virtualization (hardware virtualization)
Slow!
Bochs: http://bochs.sourceforge.net/
Background
Virtualization Types
Example: CPUState
static struct {
uint32 GPR[16];
uint32 LR;
uint32 PC;
int
IE;
int
IRQ;
} CPUState;
void CPU_CLI(void)
{
CPUState.IE = 0;
}
void CPU_STI(void)
{
CPUState.IE = 1;
}
Key Techniques
Summary
Background
Virtualization Types
Key Techniques
Summary
Example: Virtualizing the Interrupt Flag w/ Instruction
Interpreter
void CPU_Run(void)
{
while (1) {
inst = Fetch(CPUState.PC);
CPUState.PC += 4;
switch (inst) {
case ADD:
CPUState.GPR[rd]
= GPR[rn] + GPR[rm];
break;
...
case CLI:
CPU_CLI();
break;
case STI:
CPU_STI();
break;
}
if (CPUState.IRQ
&& CPUState.IE) {
CPUState.IE = 0;
CPU_Vector(EXC_INT);
}
}
}
void CPU_CLI(void)
{
CPUState.IE = 0;
}
void CPU_STI(void)
{
CPUState.IE = 1;
}
void CPU_Vector(int exc)
{
CPUState.LR = CPUState.PC;
CPUState.PC = disTab[exc];
}
Background
Virtualization Types
Key Techniques
Summary
II. Binary Translator
Background
Virtualization Types
Key Techniques
Summary
Basic Blocks
Binary Translator
Basic Blocks
Guest
Code
Guest Code
vPC
Translator
mov
ebx, eax
cli
and
ebx, ~0xfff
mov
ebx, cr3
Straight-line code
Basic Block
sti
Background
Virtualization Types
ret
CPU
Emulation
Routines
Callouts
Key Techniques
Summary
Binary Translator
vPC
mov
ebx, eax
cli
Virtualization Types
Key Techniques
Summary
III. Trap and Emulate
Trap and Emulate
Binary Translation
Guest Code
Background
Control flow
Guest OS + Applications
Translation Cache
mov
ebx, eax
call
HANDLE_CLI
and
ebx, ~0xfff
and
ebx, ~0xfff
mov
ebx, cr3
mov
[CO_ARG], ebx
sti
call
HANDLE_CR3
ret
call
HANDLE_STI
jmp
HANDLE_RET
start
Page
Fault
Unprivileged
Translation
Cache
Undef
Instr
vIRQ
MMU
Emulation
CPU
Emulation
I/O
Emulation
Virtual Machine Monitor
Privileged
TC
Index
Background
Virtualization Types
Key Techniques
Summary
Background
Virtualization Types
Key Techniques
Summary
IV. Hardware virtualization, Para-virtualization (e.g.,
Xen)
Software VMM
Software VMM
Direct Exec
(user)
Faults, syscalls,
interrupts
IRET, sysret
Modify operating systems to let OS to cooperate with VMM
Let OS runs in Ring1 and user apps run in Ring3
Change sensitive instructions to explicit calls to the VMM
No need to trap and emulate
VMM
Guest Kernel
Execution
Traces, faults,
interrupts, I/O
Translated Code
(guest kernel)
Background
Virtualization Types
Key Techniques
Summary
Traditional Address Spaces
Background
Virtualization Types
Key Techniques
Shadow Page Tables
Sol: Shadow Page Tables
Traditional Address Spaces
0
4GB
Process Virtual Address Space
Background Process
Background Process
Operating System
Operating System
0
Virtual
CR3
4GB
Current Process
Operating System
0
Virtual
Address Space
Guest
Guest
Guest
Page Table
Page Table
Page Table
Shadow
Shadow
Shadow
Page Table
Page Table
Page Table
Real CR3
4GB
RAM
Frame
Buffer
Devices
ROM
Physical
Address Space
Summary
Background
Virtualization Types
Key Techniques
Summary
Outline
Guest Write to CR3
Guest Write to CR3
Virtual
CR3
Guest
Guest
Guest
Page Table
Page Table
Page Table
Virtual
CR3
Real CR3
Background
Guest Write to CR3
1
Background
2
Virtualization Types
Guest
Guest
Guest
Page Table
Page Table
Page Table
3
Key Techniques
4
Summary
Real CR3
Shadow
Shadow
Shadow
Shadow
Shadow
Shadow
Page Table
Page Table
Page Table
Page Table
Page Table
Page Table
Virtualization Types
Key Techniques
Summary
Summary
Virtualization (or virtualisation), in computing, is the creation of
a virtual (rather than actual) version of something, such as a
hardware platform, operating system, storage device, or
network resources
Impacts
Cloud computing
Data centers
Provides greater opportunities to security
Background
Virtualization Types
Key Techniques
References
Xen and the art of virtualization
Memory resource management for Vmware Esx Server
http://en.wikipedia.org/wiki/Virtualization
http://labs.vmware.com/courseware (great virtualization
resources)
CPU Virtualization- Basic Virtualization
http://labs.vmware.com/download/76/
Memory Virtualization
http://labs.vmware.com/download/77/
Summary