2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

87
日本ソフトウェア科学会第29回大会 チュートリアル 「仮想化技術最前線」 Single-VM Virtualization ~ 最新技術と研究動向 ~ 東京大学 准教授 品川高廣 2012824日(金)

Upload: takahiro-shinagawa

Post on 31-May-2015

2.102 views

Category:

Technology


1 download

DESCRIPTION

Single-VM Virtualization ~ 最新技術と研究動向 ~

TRANSCRIPT

Page 1: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

日本ソフトウェア科学会第29回大会 チュートリアル

「仮想化技術最前線」

Single-VM Virtualization ~ 最新技術と研究動向 ~

東京大学 准教授

品川高廣

2012年8月24日(金)

Page 2: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

自己紹介

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 2

品川 高廣

情報基盤センター 情報メディア教育研究部門 准教授

博士(理学)

研究歴

~2003年 東京大学博士課程 OSによる細粒度保護ドメインの研究 2003年~2006年 東京農工大学助手 OSカーネルでのセキュリティの研究 2006年~2011年 筑波大学講師 仮想化ソフトウェアBitVisorの研究 2011年~現在 東京大学准教授 同上

Page 3: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

目次

I. 仮想化の基礎知識 仮想化とは

仮想化の分類

II. 仮想化技術の詳細 プロセッサ,メモリ,デバイスの仮想化

III. 研究紹介 BitVisorの最新研究

世界の研究動向

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 3

Page 4: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Ⅰ.仮想化の基礎知識

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 4

Page 5: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

仮想化とは(Informal)

• Wikipediaの定義

• ウィキペディアの定義 「仮想化(英語: virtualization)とは、コンピュータのリソースを

抽象化することである。」

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 5

“In computing, virtualization (or virtualisation) is

the creation of a virtual (rather than actual) version

of something, such as a hardware platform, operating

system (OS), storage device, or network resources.”

※virtualization: アメリカ英語 virtualisation: イギリス英語

Page 6: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Question 1

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 6

ウィキペディアの 「仮想化」の定義で

不正確な部分はどこか? どのように不正確か?

Page 7: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

仮想化の概念(1)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 7

Subject Subject

Real version of

something

(Object)

Virtual version of

something

(Object)

仮想化前 仮想化後

“the creation of a virtual version of something”

Page 8: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

仮想化の概念(2)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 8

Subject Subject

仮想化の実体 仮想化後

“the creation of a virtual version of something”

Interface v

Virtual

version of

something

Subject

仮想化前

Interface r

Real

version of

something

Interface v

Virtualizing

System

Interface r

Real

version of

something

Page 9: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

仮想化の構成要素 • Subject(主体)

誰がアクセスするか?

• Interface v (virtual) 仮想 Object がどのように見えるか?

• Virtualizing System(仮想化システム) どのようにしてインターフェイスを変換するか?

• Interface r (real) 実際の Object がどのように見えるか

• Object(対象) 仮想化される対象は何か?

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 9

Subject

Interface v

Virtualizing

System

Interface r

Object

Page 10: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

インターフェイスの抽象度

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 10

Application

System Call Interface

Kernel

Device Driver Interface

Device Driver Device Driver

Hardware Interface Hardware Interface

Linux

Hardware Interface

VMWare

System Call Interface

Windows

Hardware Interface

OSによる抽象化 VMWareによる仮想化

抽象度

Page 11: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

仮想化と抽象化

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 11

抽象度不変

仮想化

Subject

抽象度増加

Interface C

Virtualizing

System

Interface X

Object

抽象度低下

Subject

Interface B

Object

Interface X

Object

Subject

Interface A

Virtualizing

System

Interface X

Object

Page 12: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

インターフェイスの現実性

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 12

Application

System Call Interface

Kernel

Device Driver Interface

Device Driver

Hardware Interface

Linux

Hardware Interface

VMWare

System Call Interface

Windows

Hardware Interface

OSによる抽象化 VMWareによる仮想化

現実のハードウェアと

ほぼ同等

現実のハードウェアと

大きく異なる

Page 13: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

インターフェイスの特性

• 抽象度 Real と Virtual で抽象度が違うか否か?

抽象度を上げると implementation detail が隠蔽される

o セクタ,LBA, ATA/USB → ファイル,フォルダ

• 現実性 現実のハードウェアのインターフェイスか?

(Commodity な Operating System からの観点で)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 13

Page 14: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 14

仮想化の分類

Page 15: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

仮想化の対象(Object) • Resources(リソース)

プロセッサ CPUエミュレータ

メモリ OSの仮想メモリ(Virtual Memory)

I/Oデバイス(ストレージ,ネットワーク) ファイルシステム,SAN,VPN, ...

• Machine(マシン)(実行環境)

Operating Systems Wine, Cygwin, Windows NT Subsystems, ...

Hardware Platform VMWare, Xen, QEMU, ...

• Desktop(デスクトップ) VDI, VNC, RDP

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 15

Interface

Software

Interface

Software

Interface

Application / OS

Machine

Interface

Interface

Software

CPU Memory Device

Page 16: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

マシンの仮想化とは(Formal)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 16

[Popek et al. 1974] Gerald J. Popek and Robert P. Goldberg. Formal

Requirements for Virtualizable Third Generation Architectures. Communications

of the ACM 17, 7 (July 1974), 412-421.

Page 17: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

A Virtual Machine Map

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 17

𝑆𝑗

𝑒𝑖(𝑆𝑖)

𝑆𝑖 𝐶𝑟

𝑆𝑗′

𝑒𝑖′(𝑆𝑖

′)

𝑆𝑖′

𝐶𝑣

𝑓(𝑆𝑖) 𝑓(𝑆𝑗)

Virtualization is the construction of an isomorphism

between a virtual machine and a real machine;

𝑒𝑖′ ∘ 𝑓 𝑆𝑖 = 𝑓 ∘ 𝑒𝑖(𝑆𝑖)

S: a machine state, C: the collection of machine states, 𝑆 ∈ 𝐶

e: an instruction sequence (a unary operator), I: the set of all the instruction sequences of finite length, 𝑒 ∈ 𝐼

Virtual

Real

[Popek et al. 1974]

Page 18: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VM (Virtual Machine)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 18

Software

Interface v

Virtual Machine

Page 19: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Real Machine

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 19

Software

Interface r

Real

Machine

Page 20: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

「Machine」のインターフェイス

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 20

Application Software

System Call

Operating System

ISA (Instruction Set Architecture)

Hardware

Page 21: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMのインターフェイス1

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 21

Application Software

System Call

Operating System

System ISA User ISA

Hardware

Page 22: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMのインターフェイス2

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 22

Application Software

System Call

Operating System

System ISA User ISA

Hardware

ABI = Application Binary Interface

ABI

Page 23: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VM (Virtual Machine) の分類

• Process VM Interface v は ABI

Subject は Process

Process VMを実現するソフトウェアの例 Digital FX!32(IA-32⇒Alpha)

Cygwin(UNIX→Win), Wine(Win→UNIX)

Java, Ruby, .NET framework, ...

o 抽象度高,現実度低

• System VM Interface v は ISA

Subject はアプリケーションとOS

System VMを実現するソフトウェアの例 VMWare, Xen, VirtualBox, QEMU

2012/8/24 23 チュートリアル「仮想化技術最前線」

Single-VM Virtualization

Process

ABI

Virtual Machine

Software (App/OS)

ISA

Virtual Machine

Page 24: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

System VM の実現

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 24

App/OS App/OS

仮想化の実体 仮想化後

ISA

Virtual

Machine

ISA

Virtualizing

Software

Interface r

Real

Machine

Page 25: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

System VM の応用例

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 25

App/OS

1

ISA 1

App/OS

2

ISA 1

Virtualizing

Software

ISA 1

Real

Machine

Replication

App/OS

ISA 2

Virtualizing

Software

ISA 1

Real

Machine

Emulation

Page 26: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Question 2

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 26

VMWare は VM か?

JavaVM は VM か?

Page 27: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VM と VMM の違い

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 27

App/OS 1

ISA 1

VM 1:

Virtual Machine 1

App/OS 2

ISA 1

VM 2:

Virtual Machine 2

VMM: Virtual Machine Monitor

(Virtualizing Software)

ISA 1

Real

Machine

System VM Process VM

Process

ABI

Virtual

Machine

Virtualizing

Software

Interface

Real

Machine

Page 28: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

TypeⅠと TypeⅡの VMM

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 28

Guest OS

ISA

VM

VMM

(Hypervisor)

ISA

Real

Machine

TypeⅠ

Guest OS

ISA

VM

VMM

TypeⅡ

ABI+α

Host OS

ISA

Real

Machine

Page 29: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

TypeⅠと TypeⅡの定義

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

29

Robert P. Goldberg. Architectural Principles for Virtual Computer

Systems. ESD-TR-73-105, Harvard University, pp. 22–26, Feb, 1973.

2012/8/24

Page 30: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Question 3

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 30

QEMU は VMMか?

Page 31: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Characteristics of a VMM

• Equivalence “Any program run under the VMM should exhibit an effect

identical with that demonstrated if the program had been run on the original machine directly, with the possible exception of differences caused by the availability of system resources and differences caused by timing dependencies.”

• Efficiency “It demands that a statistically dominant subset of the virtual

processor's instructions be executed directly by the real processor, with no software intervention by the VMM.”

• Resource Control (1) it is not possible for a program running under it in the

created environment to access any resource not explicitly allocated to it

(2) it is possible under certain circumstances for the VMM to regain control of resources already allocated.

2012/8/24 31 チュートリアル「仮想化技術最前線」

Single-VM Virtualization

[Popek et al. 1974]

Page 32: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMMの特性

• 等価性 プログラムが元のマシン上とほぼ同じ挙動を示す

タイミングや資源の可用性に起因する違いを除く

• 効率性 多くの命令は実際のプロセッサ上で直接実行される

VMMは多くの命令をエミュレーションしない

• 資源制御 プログラムは与えられた資源しかアクセスできない

ある条件下ではVMMは資源を取り返せる

2012/8/24 32 チュートリアル「仮想化技術最前線」

Single-VM Virtualization

[Popek et al. 1974]

Page 33: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMM と Emulator

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 33

App/OS

ISA 2

Virtualizing

Software

ISA 1

Real

Machine

Emulator

App/OS

Subset of ISA

Virtualizing

Software

ISA

Real

Machine

VMM

Page 34: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Single-VM v.s. Multi-VM

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 34

Guest OS

ISA

Multi-VM VMM

Guest OS

ISA

Single-VM VMM

VM VM

Guest OS

ISA

VM

VMM

ISA

Real

Machine

VMM

ISA

Real

Machine

Page 35: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Single-VM VMM の特性

• 等価性 VM上のプログラムは元のマシン上とほぼ同じ挙動を示す

仮想化をしないハードウェアに関する挙動は元と全く同じ

• 効率性 大多数の命令は実際のプロセッサ上で直接実行される

大多数の命令は単一のVM上のプログラムのもの

• 資源制御 VM上のプログラムは与えられた資源しかアクセスできない

特定の条件下ではVMMはVMの資源を取り返せる

2012/8/24 35 チュートリアル「仮想化技術最前線」

Single-VM Virtualization

VMMとしては良い特性を持っている

Page 36: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Single-VM VMM の意義

• 透過性 ゲスト OS に依存せずに機能追加できる

• 効率性 VMMの介在によるオーバーヘッドが少ない

• セキュリティ ゲストOSから保護された環境を利用できる

• シンプル VMMを小さくできる

セキュリティ上も有利

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 36

Guest OS

ISA

VM

VMM

ISA

Real

Machine

Page 37: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Interface r = ISA ≠ ABI

Interface v ≒ Interface r (Virtualizing Software)

Subject = OS/App Interface v = ISA

Object = Machine

仮想化技術の分類のまとめ

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 37

Resource Desktop

Process VM

Emulation

Multi-VM

Type II

Virtualization

Machine

System VM

VMM

Type I

Single-VM Interface v = Interface r

Page 38: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Ⅱ.仮想化技術の詳細 ~Single-VM VMM の実現と PC における実際~

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 38

Page 39: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

物理マシンの構成要素

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 39

OS/App

仮想化前

Interface r = ISA

Processor Memory Devices

Real

Machine

Page 40: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 40

Processor

Page 41: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Processor の仮想化の要件

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 41

THEOREM 1. For any conventional third generation

computer, a virtual machine monitor may be constructed

if the set of sensitive instructions for that computer is a

subset of the set of privileged instructions. [Popek et al. 1974]

Instructions

Privileged

User Sensitive

定理1 「sensitive」な命令が全て特権命令に含まれていればVMMが構成できる.

Page 42: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

「sensitive」な命令

• VMMの実行に影響を与える命令 Control sensitive

システムのリソース設定を変更する命令

o 物理メモリの割り当て状態,システムのモード,I/Oなど

Behavior sensitive 実行時の挙動や結果がシステムのリソース設定に影響される命令

o システムレジスタの値やシステムのモードなど

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 42

Instructions

Innocuous (無害な)

Control

Sensitive

Behavior

Sensitive

Page 43: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMM の要件の充足

• Sensitive な命令 ⇒ VMM へのトラップが発生 「等価性」「資源制御」の実現

• Innocuous な命令 ⇒ なるべく直接実行 「効率性」の実現

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 43

Instructions

Privileged

User Sensitive

Page 44: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Intel CPU(旧)での仮想化

• ゲストOSをユーザレベルで動作させる 特権命令は VMM でトラップできる

• 特権命令を VMM でエミュレーションする ゲストOSも特権モードで動いているようにふるまう

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 44

Ring 3

Ring 0

Kernel

(Guest)

Application

(Guest)

VMM

Ring 3

Ring 0 Kernel

(Guest)

Application

(Guest)

Page 45: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Intel CPU(旧)の仮想化可能性

• 17個の命令が sensitive だが non-privileged Sensitive Register Instructions

システムレジスタを読み込む命令

o SGDT, SIDT, SLDT, SMSW, PUSHF (S: Store, F: Flag)

システムレジスタを書き換えるがトラップされない命令

o POPF

Protection System References

システムレジスタの内容を参照する命令

o LAR, LSL, STR, VERR, VERW (L: Load from system registers, V: Verify)

セグメントの特権レベルを参照する命令

o POP, PUSH, CALL, JMP, INT n, RET

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 45

John Scott Robin and Cynthia E. Irvine. Analysis of the Intel Pentium's Ability to Support a Secure Virtual

Machine Monitor. In Proceedings of the 9th conference on USENIX Security Symposium, 2000.

Page 46: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Binary Translation による仮想化

• 問題となる命令を実行時に動的に変換する Sensitive かつ non-privileged な命令

Emulator を呼び出す命令に書き換える

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 46

Ring 3

Ring 0

Kernel

(Guest)

Application

(Guest)

VMM

popf ⇒ call emulator

Binary Translation

Page 47: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Intel VT による仮想化

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 47

Ring 3

Ring 0

Ring 3

Ring 0 Kernel

(Guest)

Application

(Guest)

VMM

VMX non-root mode VMX root mode

VM Exit

VM Entry

Guest State

Host State

Control Field

VMCS

Page 48: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Intel VT での仮想化可能性

• 新たなモード追加で sensitive な命令を削減 Kernel は従来通り ring 0 で動く

Behavior sensitive な命令が削減

プロセッサの重要な挙動は VMX root mode で設定 Control sensitive な命令が削減

前述の17命令は sensitive ではなくなる

• VMMへトラップする命令を柔軟に設定可能に 真に sensitive な命令だけ VMM で捕捉する

なるべく多くの命令を Processor で直接実行できる

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 48

Page 49: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VM Exit

• 常に VM Exit が発生する命令 CPUID, GETSEC, INVD, XSETBV

• 設定により VM Exit が発生する条件 割り込み関係

o 外部割り込み,NMI, VMX preemption timer

システムレジスタへのアクセス o CR3, CR8, RDMPC, RDTSC, RDRAND, MSR, DR, Descriptor table, APIC, ...

制御関係 o MONITOR, PAUSE, HLT, MWAIT, ...

メモリ関係 o INVLPG, WBINVD, Enable INVPCID, enable VPID

I/O関係 o Unconditional I/O, Use I/O bitmaps

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 49

Page 50: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Single-VM での Processor 仮想化

• ほとんど VM Exit しない VMM を作れる 必要に応じて VM Exit する条件を増やす

• Single-VM VMM でも実装したくなる仮想化の例 リアルモードサポート

割り込みコントローラ

定期的実行

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 50

Page 51: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

リアルモードサポート

• Windows を動作させるためには必須 起動後も何度かリアルモードに切り替わる

• 初期の VT はサポートしていない 仮想8086モードを用いたエミュレーション

それなりに大変な実装が必要

• 最近の VT は “Unrestricted Guest” をサポート ゲストOSのモードに「制限」が無くなる

リアルモードのOSも簡単に仮想化できる

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 51

Page 52: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

割り込みコントローラ

• 最近の PC では APIC で割り込みを制御 Advanced Programmable Interrupt Controller

• APIC を監視しない場合の制約 外部割り込みを起こしたデバイスが分からない

デバイス⇒割り込み番号の制御をAPICが行っている

TLB shootdown (別プロセッサのTLB flush) が出来ない TLB shootdown のための IPI (Inter-Processor Interrupt) を送れない

o 勝手に送るとゲストOSとコンフリクトする

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 52

Page 53: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

定期実行

• 定期的にVMMで制御を取得したい VM Exit する条件を絞るとほとんど制御が戻らない可能性

特に外部割り込みによる VM Exit をしない場合

ゲストOSが無限ループすると永遠に制御が戻らない可能性もある

特定の外部割り込み時だけ VM Exit はできない 外部割り込みは一律 VM Exit するかしないかの設定のみ

外部割り込みによる VM Exit を設定せざるを得ない 必要以上に VM Exit してオーバーヘッドが大きい

• 最近の VT は “Preemption Timer” をサポート プロセッサによるタイマー設定で VM Exit を起こせる

TSC (Time Stamp Counter) と連動してカウントダウンされる

2012/8/24

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

53

Page 54: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 54

Memory

Page 55: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

物理マシンにおける Memory

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 55

Virtual Address Space

Physical Address Space

Paging

Page 56: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Memory の仮想化

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 56

Virtual Address Space

Guest Physical Address Space

Paging

Host Physical Address Space

Paging

Page 57: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Single-VM での Memory 仮想化

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 57

Virtual Address Space

Guest Physical Address Space

Paging

Host Physical Address Space

Identity Mapping

VMM

MMIO MMIO Trap MMIO

Page 58: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMM 領域 と MMIO 領域

• VMMのメモリ領域の隠ぺい ゲストOSに対して予約領域に見せる

システムが返すメモリマップを書き換える

o BIOS Int 15h, AX=e820

ゲストOSからの読み書きを禁止する VMMの領域を別のページにマッピングする

o Read-only の「ゼロページ」など

• MMIO (Memory-Mapped I/O) の捕捉 対応するページが存在しないように設定する

ページフォルトが発生して VMM に制御が移る

ページ単位でしか捕捉できない 4KB単位であらゆる I/O アクセス時に VMM に制御が移る

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 58

※VMM保護とMMIOの両方が不要な場合は2段目のページングなしにもできる

Page 59: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Shadow Paging

• ゲスト・ページテーブルの Shadow を VMM が管理 初期化時は全てのエントリが not present

Page fault のたびにゲスト・ページテーブルをたどってエントリを追加する

• VMM のオーバーヘッドが大きい Shadow page table を管理する必要性がある

頻繁に VM Exit する

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 59

CR3 PD PT

PT

Guest Page Table

Guest OS

PD PT

PT

Shadow Page Table

VMM

ゲストCR3

CR3

Page Fault 時に Guest Page

Table をたどって更新

Page 60: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

EPT (Extended Page Table)

• もう一つのページテーブルをプロセッサに設定する プロセッサが自動的に2段階のページングを行ってくれる

Guest Virtual Address ⇒ Guest Physical Address ⇒ Host Physical

• VMM のオーバーヘッドが小さい 最初に Identity Mapping なPage Table 作っておけばよい

ほとんどのページで Guest Physical Address = Host Physical Address

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 60

EPTP PD PT

PT

Guest Page Table

Guest OS

PT

PT

Extended Page Table

VMM

CR3

Guest Physical Address

を EPT で Host Physical Address に変換する

Page 61: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 61

Devices

Page 62: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

物理マシンにおける Device

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 62

OS/App

ISA

Real

Machine

DMA

I/O Instructions

Registers

Interrupts Memory

Controller

Page 63: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Single-VM における選択肢

• 完全にパススルー 関係ないデバイスの性能・機能を犠牲にしない

• 監視する 実デバイスの挙動・状態を把握できる

• 書き換える 部分的に実デバイスの挙動・状態を変化させられる

• 完全に仮想化する

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 63

Page 64: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

I/O Instructions

• I/O命令による読み書き 64KBのI/Oアドレス空間にアクセス

Intel VTの機能でVMMで捕捉可能 8KBのI/O許可ビットマップでアドレス単位で設定可能

o 1ならI/O命令発行時にVM Exit

o 0ならそのままI/O命令を実行

• メモリアクセス命令でのMMIO 通常のメモリアドレス空間へのアクセス

Shadow Paging or EPT で捕捉可能 不在ページにしてページフォルトを発生させる

命令を解釈してI/O内容を把握する

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 64

1 0 0 0 0 0 0 1

I/O許可ビットマップ(8KB) 0

0x2000

P

D PT

PT

PT

Shadow Page Table or EPT

Page 65: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Interrupts

• 外部割り込み デバイスからの割り込みの捕捉

Intel VT の機能で捕捉可能

割り込みの仮想的な挿入 Intel VT の Event Injection 機能で可能

割り込みベクタ番号の指定が必要

• デバイスの特定 厳密には APIC へのアクセスを監視する必要がある

デバイスの Status レジスタから特定可能な場合も多い APIC の監視を省略可能

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 65

Page 66: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

DMA • ハードウェアでデータをまとめて自動転送

DMAディスクリプタに転送内容を記述する メモリ上に展開されたデータ構造

ホストコントローラがCPUを介さずにデータ転送 データ転送の終了時に割り込みで通知

• VMMでコントローラへのアクセスを捕捉可能 レジスタの監視・変更は I/O Instruction の捕捉で可能

DMAディスクリプタはメモリを直接参照かシャドウ化

66

ホストコントローラ

ベースアドレスレジスタ

インデックス

+

バッファアドレス バイト数 ステータス

0x08086000 4096 OK

0x04004000 8192 OK

0x00386000 4096 Ready

DMAディスクリプタ

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

2012/8/24

Page 67: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

Ⅲ.研究紹介

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 67

Page 68: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

研究紹介の構成

• BitVisor の研究 BitVisor の概要

BitVisor を用いた Single-VM Virtualization の応用例

• 関連研究の紹介 Single-VM Virtualization の研究

Single-VM Virtualization でも活用できる研究

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 68

Page 69: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

BitVisor の沿革

• 「セキュアVM」プロジェクトで研究開発 実施期間:平成18年度~平成20年度

文部科学省 科学技術振興調整費

情報漏洩を確実に防止するVMの構築を目的 OS・ユーザに依存しないセキュリティの実現

o VMMの特権を活用

ストレージとネットワークからの情報漏洩防止を実現 HDDやUSBメモリを強制的に暗号化

ネットワーク通信を強制的にVPN化

暗号鍵はICカードに格納

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 69

Page 70: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

BitVisor の基本アーキテクチャ

• 準パススルー型 基本はI/Oをパススルー

ゲストOSがデバイスを直接制御

最小限のI/Oを監視・変換 制御I/Oの監視

o デバイスの状態把握

o VMMに対するアクセス制御

データI/Oの変換

o 拡張機能の実現

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

70

VMM

ハード

ゲストOS

Device

Device Driver

Device Mediator

監視 変換

制御I/O データI/O 拡張機能

2012/8/24

T. Shinagawa et al. BitVisor: A Thin Hypervisor for Enforcing I/O Device Security. In Proc. 2009 ACM International

Conference on Virtual Execution Environments (VEE 2009), pp. 121-130, Mar. 2009. doi:10.1145/1508293.1508311

Page 71: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

BitVisor の応用研究

• セキュリティ セキュアVM

システムファイル保護

• システム管理 透過的ネットワークブート

透過的VPN切替

• ユーティリティ ボランティアコンピューティング基盤

デバイスドライバのデバッグ環境

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 71

Page 72: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

セキュアVM

• PCからの情報漏洩を防止

ストレージからの情報漏洩防止

HDDやUSBメモリ等を強制的に暗号化

ネットワークからの情報漏洩防止

ネットワーク通信を強制的に暗号化

ICカードでの鍵管理

暗号化の鍵の安全な保存

接続先・ユーザ認証

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 72

ICカード

ネットワーク

ストレージ

Page 73: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

ゲストOS

Device

Device Driver

拡張機能

セキュアVM(実現)

• I/Oを暗号化する

ストレージI/Oを捕捉・暗号化 ATA/ATAPI 及び USB1.1/2.0を捕捉

AES-XTSで暗号化

ネットワークI/Oを捕捉・暗号化 NIC(Intel PRO 100/1000)を捕捉

IPSecでVPN接続

ICカードで鍵管理・認証 USB接続のカードリーダにアクセス

PC/SC, CCIDプロトコル

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 73

ATA NIC USB

ストレージ管理

ネットワーク管理

ID管理

Device Mediator

ATA NIC USB

ATA NIC USB

セキュアVM

VMM

ハードウェア

Page 74: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

システムファイル保護

• Rootkit からの保護

システムファイルの書き込みを禁止する OSの重要なファイル

o カーネル,デバイスドライバ,…

セキュリティソフトウェア

o アンチウィルス,…

カーネルレベルでも書けない

再起動すれば元に戻る 最終ラインでのディフェンス

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 74

Y. Chubachi, T, Shinagawa, K. Kato. Hypervisor-based Prevention of Persistent Rootkits. In Proc. 25th ACM

Symposium On Applied Computing (ACM SAC 2010), pp. 214-220, Mar. 2010. doi:10.1145/1774088.1774131

Page 75: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

システムファイル保護(実現)

• ストレージへの書き込みを監視する

システムファイルの書き換えを検出

o ファイルのデータ領域

o メタデータ領域

o ディレクトリ構造

ファイルとセクタのマッピング

を管理 o セマンティックギャップを克服

o 低オーバーヘッドで実現

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 75

ゲストOS

Device

Device Driver

拡張機能

ATA NIC USB

保護モジュール Device Mediator

ATA

ATA NIC USB

VM

VMM

ハードウェア

保護ポリシー

Page 76: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

透過的ネットワークブート

• 任意のOSをネットワークからブート可能にする

OS・設定に依存しない Windowsをそのままブート可能

Linuxも一切設定なしでブート可能

ローカルのハードウェアをフル活用 内蔵機器・周辺機器をOSが完全管理

o Blu-ray,USB3.0,各種PCIデバイス,…

o 省電力(電源制御),最適化(デフラグなど)

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 76

クライアント

サーバ

表 祐志, 品川 高廣, 加藤 和彦.仮想マシンモニタによる透過的ネットワークブート方式.情報処理学会論文誌:コンピューティングシステム,第4巻,第4号,228-245頁,2011年10月.http://id.nii.ac.jp/1001/00078067/

Page 77: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

透過的ネットワークブート(実現)

• ディスクアクセスを ネットワークへ転送する

ATAのインターフェイスを提供

ローカルディスクと同じアクセス方法

o MS-DOSでも起動する

ATAアクセスをAoEに変換

ATA over Ethernet

パケットをネットワークへ転送

ディスクイメージをサーバで集中管理

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 77

ゲストOS

Device

Device Driver

拡張機能

ATA NIC USB

ATA監視

NICアクセス

ATA-AoE変換

Device

Mediator

ATA

NIC

NIC USB

VM

VMM

ハードウェア

ATA

Page 78: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

透過的VPN切り替え

• クラウド接続の可用性を確保する

ネットワーク/サーバ障害対応 インターネット層での経路障害

VPNサーバ故障

OS/ユーザは意識しない 基盤として高可用性を実現

ユーザ・管理者に負担をかけない

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 78

クライアント

データセンター(クラウド)

専用線

VPN

ルータ2

VPN

ルータ1 Internet

× ×

Y. Matsuhashi, T. Shinagawa, Y. Ishii, N. Hirooka, K. Kato. Transparent VPN Failure Recovery with Virtualization.

Future Generation Computer Systems, Elsevier, Vol. 28, No. 1, pp. 78-84, Jan. 2012. doi:10.1016/j.future.2011.05.020

Page 79: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

透過的VPN切り替え(実現)

• VPN接続を切り替える

定期的にネットワーク到達性をチェック

VMMからサーバにPingを送る

VPN切断・再接続を実施

利用可能なサーバの選択

IPsecでのコネクションを確立

IPアドレスの不整合などを吸収

TCP接続が切れない

切り替え時間は3秒程度

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 79

ゲストOS

Device

Device Driver

拡張機能

ATA NIC USB

VPNクライアント

ID管理

Device Mediator

NIC

ATA NIC USB

セキュアVM

VMM

ハードウェア

Page 80: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

ボランティアコンピューティング

• 計算コードをVMM内実行 計算コードをユーザから保護

計算結果の改ざん防止

計算結果の漏洩防止

計算コードからユーザを保護

計算コードによる不正アクセスを防止

• VMMでELFコードを受信 VMM内の保護ドメインで実行

ユーザは存在を感知しない

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 80

ゲストOS

Device

Device Driver

拡張機能

ATA NIC USB

Device Mediator

NIC

ATA NIC USB

VM

VMM

ハードウェア

保護ドメイン

計算コード

(ELF)

Page 81: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

デバイスドライバのデバッグ

• 滅多に発生しないエラーを意図的に発生させる

デバイスドライバが想定していないバグを洗い出す

• VMMでデバイスの挙動を変える 状態遷移を監視する

意図的な状態遷移を引き起こすようにI/Oを書き換える

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 81

ゲストOS

Device

Device Driver

拡張機能

Device

状態遷移追跡

I/O書き換え

Driver

VM

VMM

ハードウェア

Mediator

Device Mediator

Page 82: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

BitVisor を使った研究

• TCVisor [Rezaei et al., ICITST ‘10]

ユーザ毎に特定のストレージ領域のみを見せる仕組み TPM, password, security tokenの組み合わせで実現

• HyperSafe [Wang et al., IEEE S&P ‘10]

Hypervisor自身の完全性を維持する仕組み Hypervisor を書き換えられなくする

• “Return-less” VMM [Li et al., EuroSys ‘10]

ret命令のないカーネル・VMMを実現 ROR (Return-Oriented Rootkit)対策

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

82 2012/8/24

Page 83: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMMによるセキュリティ(1)

• SecVisor [Seshadri et al., SOSP ‘07]

カーネルコードの一貫性維持に特化 VMMが許可しないとカーネルモードで実行できない

コードサイズは1,112行(AMD SVM+NPT版)

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

83 2012/8/24

Page 84: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMMによるセキュリティ(2)

• CloudVisor [Zhang et al., SOSP ‘11]

セキュリティ専用VMMを既存VMMの下に置く メモリやディスク暗号化などでVM間の保護を実現

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

84 2012/8/24

Page 85: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

VMMによるセキュリティ(3)

• OverShadow [Chen et al., ASPLOS ’08]

信頼出来ないOSからアプリのデータを守る 暗号化とハッシュでメモリの機密性と完全性を保つ

チュートリアル「仮想化技術最前線」 Single-VM Virtualization

85 2012/8/24

Page 86: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

まとめ

• 仮想化の基礎知識 Subject, Interface v, Virtualizing Software, Interface r, Object

Machine, System VM, VMM, Type-I, Single-VM

• 仮想化技術の詳細 プロセッサ:sensitive命令⊂privileged命令,Intel VT

メモリ: shadow paging, EPT, identity mapping

デバイス: I/O, MMIO, Interrupts, DMA

• 研究紹介 BitVisor の研究

関連研究の紹介

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 86

Page 87: 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

BitVisor の宣伝

• BitVisor に関する情報 ホームページ

http://www.bitvisor.org/

メーリングリスト(@bitvisor.org) bitvisor-user(日本語), bitvisor-user-en(英語)

bitvisor-devel(日本語), bitvisor-devel-en(英語)

ソースコード http://sourceforge.net/projects/bitvisor/

• 有償サービス (株)イーゲルが提供

2012/8/24 チュートリアル「仮想化技術最前線」

Single-VM Virtualization 87