日本ソフトウェア科学会第29回大会      チュートリアル    「仮想化技術最前線」 Single-VM Virtualization~ 最新技術と研究動向 ~        東京大学 准教授           品川高廣       20...
自己紹介                   情報基盤センター                   情報メディア教育研究部門                   准教授                   博士(理学)             ...
目次I. 仮想化の基礎知識      仮想化とは      仮想化の分類II. 仮想化技術の詳細      プロセッサ,メモリ,デバイスの仮想化III. 研究紹介      BitVisorの最新研究      世界の研究動向    ...
Ⅰ.仮想化の基礎知識              チュートリアル「仮想化技術最前線」2012/8/24                                   4                 Single-VM Virtualiz...
仮想化とは(Informal)• Wikipediaの定義     “In computing, virtualization (or virtualisation) is     the creation of a virtual (rath...
Question 1               ウィキペディアの              「仮想化」の定義で            不正確な部分はどこか?             どのように不正確か?               チュートリ...
仮想化の概念(1)            “the creation of a virtual version of something”             仮想化後                                    ...
仮想化の概念(2)            “the creation of a virtual version of something”   仮想化後                       仮想化の実体                 ...
仮想化の構成要素• Subject(主体)      誰がアクセスするか?                                         Subject• Interface v (virtual)      仮想 Obj...
インターフェイスの抽象度 VMWareによる仮想化                                                OSによる抽象化                   Linux                 ...
仮想化と抽象化                                    仮想化       抽象度低下                     抽象度不変                    抽象度増加             ...
インターフェイスの現実性 VMWareによる仮想化                                                     OSによる抽象化                   Linux            ...
インターフェイスの特性• 抽象度      Real と Virtual で抽象度が違うか否か?             抽象度を上げると implementation detail が隠蔽される               o セクタ,L...
仮想化の分類             チュートリアル「仮想化技術最前線」2012/8/24                                  14                Single-VM Virtualization
仮想化の対象(Object)• Resources(リソース)      プロセッサ                                                  Software    Software         ...
マシンの仮想化とは(Formal) [Popek et al. 1974] Gerald J. Popek and Robert P. Goldberg. Formal Requirements for Virtualizable Third ...
A Virtual Machine Map               Virtualization is the construction of an isomorphism                  between a virtua...
VM (Virtual Machine)                   Software                 Interface v               Virtual Machine                 ...
Real Machine               Software             Interface r                Real               Machine             チュートリアル「...
「Machine」のインターフェイス                  Application Software              System Call            Operating System            I...
VMのインターフェイス1                  Application Software               System Call             Operating System            Syste...
VMのインターフェイス2                    Application Software                 System Call              Operating System            ...
VM (Virtual Machine) の分類• Process VM      Interface v は ABI                                           Process      Subje...
System VM の実現            仮想化後                         仮想化の実体            App/OS                                  App/OS    ...
System VM の応用例            Emulation                              Replication                                              ...
Question 2            VMWare は VM か?            JavaVM は VM か?                チュートリアル「仮想化技術最前線」2012/8/24                  ...
VM と VMM の違い                      System VM                                 Process VM            App/OS 1                ...
TypeⅠと TypeⅡの VMM              TypeⅠ                                    TypeⅡ              Guest OS                       ...
TypeⅠと TypeⅡの定義             Robert P. Goldberg. Architectural Principles for Virtual Computer             Systems. ESD-TR-...
Question 3            QEMU は VMMか?               チュートリアル「仮想化技術最前線」2012/8/24                                    30         ...
Characteristics of a VMM• Equivalence      “Any program run under the VMM should exhibit an effect       identical with t...
VMMの特性• 等価性      プログラムが元のマシン上とほぼ同じ挙動を示す             タイミングや資源の可用性に起因する違いを除く                                              ...
VMM と Emulator                       VMM                                      Emulator                       App/OS       ...
Single-VM v.s. Multi-VM            Single-VM VMM                           Multi-VM VMM               Guest OS            ...
Single-VM VMM の特性• 等価性      VM上のプログラムは元のマシン上とほぼ同じ挙動を示す             仮想化をしないハードウェアに関する挙動は元と全く同じ• 効率性      大多数の命令は実際のプロセッサ...
Single-VM VMM の意義• 透過性      ゲスト OS に依存せずに機能追加できる                              Guest OS• 効率性                              ...
仮想化技術の分類のまとめ             VirtualizationResource       Machine        Desktop                   Object = Machine           ...
Ⅱ.仮想化技術の詳細        ~Single-VM VMM の実現と PC における実際~                 チュートリアル「仮想化技術最前線」2012/8/24                               ...
物理マシンの構成要素                    仮想化前                        OS/App                 Interface r = ISA            Processor Me...
Processor            チュートリアル「仮想化技術最前線」2012/8/24                                 40               Single-VM Virtualization
Processor の仮想化の要件THEOREM 1. For any conventional third generationcomputer, a virtual machine monitor may be constructedif ...
「sensitive」な命令• VMMの実行に影響を与える命令      Control sensitive             システムのリソース設定を変更する命令              o 物理メモリの割り当て状態,システムのモ...
VMM の要件の充足• Sensitive な命令 ⇒ VMM へのトラップが発生      「等価性」「資源制御」の実現• Innocuous な命令 ⇒ なるべく直接実行      「効率性」の実現                   ...
Intel CPU(旧)での仮想化• ゲストOSをユーザレベルで動作させる      特権命令は VMM でトラップできる• 特権命令を VMM でエミュレーションする      ゲストOSも特権モードで動いているようにふるまう      ...
Intel CPU(旧)の仮想化可能性• 17個の命令が sensitive だが non-privileged      Sensitive Register Instructions             システムレジスタを読み込む命...
Binary Translation による仮想化• 問題となる命令を実行時に動的に変換する      Sensitive かつ non-privileged な命令      Emulator を呼び出す命令に書き換える         ...
Intel VT による仮想化                 VMX non-root mode                      VMX root mode                    Application       ...
Intel VT での仮想化可能性• 新たなモード追加で sensitive な命令を削減      Kernel は従来通り ring 0 で動く             Behavior sensitive な命令が削減      プ...
VM Exit• 常に VM Exit が発生する命令      CPUID, GETSEC, INVD, XSETBV• 設定により VM Exit が発生する条件      割り込み関係            o 外部割り込み,NMI,...
Single-VM での Processor 仮想化• ほとんど VM Exit しない VMM を作れる      必要に応じて VM Exit する条件を増やす• Single-VM VMM でも実装したくなる仮想化の例      リア...
リアルモードサポート• Windows を動作させるためには必須      起動後も何度かリアルモードに切り替わる• 初期の VT はサポートしていない      仮想8086モードを用いたエミュレーション             それな...
割り込みコントローラ• 最近の PC では APIC で割り込みを制御      Advanced Programmable Interrupt Controller• APIC を監視しない場合の制約      外部割り込みを起こしたデバ...
定期実行• 定期的にVMMで制御を取得したい      VM Exit する条件を絞るとほとんど制御が戻らない可能性             特に外部割り込みによる VM Exit をしない場合             ゲストOSが無限ル...
Memory            チュートリアル「仮想化技術最前線」2012/8/24                                 54               Single-VM Virtualization
物理マシンにおける Memory               Virtual                                 Physical            Address Space                  ...
Memory の仮想化       Virtual               Guest Physical                     Host Physical    Address Space            Addre...
Single-VM での Memory 仮想化       Virtual               Guest Physical                   Host Physical    Address Space       ...
VMM 領域 と MMIO 領域• VMMのメモリ領域の隠ぺい      ゲストOSに対して予約領域に見せる             システムが返すメモリマップを書き換える              o BIOS Int 15h, AX=e...
Shadow Paging• ゲスト・ページテーブルの Shadow を VMM が管理      初期化時は全てのエントリが not present      Page fault のたびにゲスト・ページテーブルをたどってエントリを追加す...
EPT (Extended Page Table)• もう一つのページテーブルをプロセッサに設定する      プロセッサが自動的に2段階のページングを行ってくれる             Guest Virtual Address ⇒ G...
Devices            チュートリアル「仮想化技術最前線」2012/8/24                                 61               Single-VM Virtualization
物理マシンにおける Device                                  OS/App               I/O Instructions    Interrupts          Memory     ...
Single-VM における選択肢• 完全にパススルー      関係ないデバイスの性能・機能を犠牲にしない• 監視する      実デバイスの挙動・状態を把握できる• 書き換える      部分的に実デバイスの挙動・状態を変化させられる...
I/O Instructions• I/O命令による読み書き                                          I/O許可ビットマップ(8KB)                                  ...
Interrupts• 外部割り込み      デバイスからの割り込みの捕捉             Intel VT の機能で捕捉可能      割り込みの仮想的な挿入             Intel VT の Event Inj...
DMA   • ハードウェアでデータをまとめて自動転送             DMAディスクリプタに転送内容を記述する               メモリ上に展開されたデータ構造             ホストコントローラがCPUを介さ...
Ⅲ.研究紹介            チュートリアル「仮想化技術最前線」2012/8/24                                 67               Single-VM Virtualization
研究紹介の構成• BitVisor の研究      BitVisor の概要      BitVisor を用いた Single-VM Virtualization の応用例• 関連研究の紹介      Single-VM Virtua...
BitVisor の沿革• 「セキュアVM」プロジェクトで研究開発      実施期間:平成18年度~平成20年度             文部科学省 科学技術振興調整費      情報漏洩を確実に防止するVMの構築を目的        ...
BitVisor の基本アーキテクチャ                                                                                  ゲストOS• 準パススルー型       ...
BitVisor の応用研究• セキュリティ      セキュアVM      システムファイル保護• システム管理      透過的ネットワークブート      透過的VPN切替• ユーティリティ      ボランティアコンピューテ...
セキュアVM• PCからの情報漏洩を防止                                                     ストレージ      ストレージからの情報漏洩防止             HDDやUSBメモ...
セキュアVM(実現)• I/Oを暗号化する                                                           ゲストOS                                     ...
システムファイル保護• Rootkit からの保護      システムファイルの書き込み       を禁止する             OSの重要なファイル                 o カーネル,デバイスドライバ,…       ...
システムファイル保護(実現)• ストレージへの書き込み  を監視する                                             ゲストOS                                      ...
透過的ネットワークブート• 任意のOSをネットワークから                                             サーバ  ブート可能にする      OS・設定に依存しない             Wind...
透過的ネットワークブート(実現)• ディスクアクセスを  ネットワークへ転送する                                                   ゲストOS                          ...
透過的VPN切り替え                                                                            データセンター(クラウド)• クラウド接続の可用性を          ...
透過的VPN切り替え(実現)• VPN接続を切り替える                                                       ゲストOS                                   ...
ボランティアコンピューティング• 計算コードをVMM内実行                                       ゲストOS      計算コードをユーザから保護                            D...
デバイスドライバのデバッグ• 滅多に発生しないエラー                                 ゲストOS                                        Device Driver     ...
BitVisor を使った研究• TCVisor [Rezaei et al., ICITST ‘10]      ユーザ毎に特定のストレージ領域のみを見せる仕組み             TPM, password, security t...
VMMによるセキュリティ(1)• SecVisor [Seshadri et al., SOSP ‘07]      カーネルコードの一貫性維持に特化             VMMが許可しないとカーネルモードで実行できない      コ...
VMMによるセキュリティ(2)• CloudVisor [Zhang et al., SOSP ‘11]      セキュリティ専用VMMを既存VMMの下に置く             メモリやディスク暗号化などでVM間の保護を実現    ...
VMMによるセキュリティ(3)• OverShadow [Chen et al., ASPLOS ’08]      信頼出来ないOSからアプリのデータを守る             暗号化とハッシュでメモリの機密性と完全性を保つ     ...
まとめ• 仮想化の基礎知識      Subject, Interface v, Virtualizing Software, Interface r, Object      Machine, System VM, VMM, Type-I...
BitVisor の宣伝• BitVisor に関する情報      ホームページ             http://www.bitvisor.org/      メーリングリスト(@bitvisor.org)            ...
Upcoming SlideShare
Loading in …5
×

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

2,529 views

Published on

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

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,529
On SlideShare
0
From Embeds
0
Number of Embeds
85
Actions
Shares
0
Downloads
32
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

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

  1. 1. 日本ソフトウェア科学会第29回大会 チュートリアル 「仮想化技術最前線」 Single-VM Virtualization~ 最新技術と研究動向 ~ 東京大学 准教授 品川高廣 2012年8月24日(金)
  2. 2. 自己紹介 情報基盤センター 情報メディア教育研究部門 准教授 博士(理学) 品川 高廣 研究歴 ~2003年 東京大学博士課程 OSによる細粒度保護ドメインの研究 2003年~2006年 東京農工大学助手 OSカーネルでのセキュリティの研究 2006年~2011年 筑波大学講師 仮想化ソフトウェアBitVisorの研究 2011年~現在 東京大学准教授 同上 チュートリアル「仮想化技術最前線」2012/8/24 2 Single-VM Virtualization
  3. 3. 目次I. 仮想化の基礎知識  仮想化とは  仮想化の分類II. 仮想化技術の詳細  プロセッサ,メモリ,デバイスの仮想化III. 研究紹介  BitVisorの最新研究  世界の研究動向 チュートリアル「仮想化技術最前線」2012/8/24 3 Single-VM Virtualization
  4. 4. Ⅰ.仮想化の基礎知識 チュートリアル「仮想化技術最前線」2012/8/24 4 Single-VM Virtualization
  5. 5. 仮想化とは(Informal)• Wikipediaの定義 “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: イギリス英語• ウィキペディアの定義  「仮想化(英語: virtualization)とは、コンピュータのリソースを 抽象化することである。」 チュートリアル「仮想化技術最前線」2012/8/24 5 Single-VM Virtualization
  6. 6. Question 1 ウィキペディアの 「仮想化」の定義で 不正確な部分はどこか? どのように不正確か? チュートリアル「仮想化技術最前線」2012/8/24 6 Single-VM Virtualization
  7. 7. 仮想化の概念(1) “the creation of a virtual version of something” 仮想化後 仮想化前 Subject Subject Virtual version of Real version of something something (Object) (Object) チュートリアル「仮想化技術最前線」2012/8/24 7 Single-VM Virtualization
  8. 8. 仮想化の概念(2) “the creation of a virtual version of something” 仮想化後 仮想化の実体 仮想化前 Subject Subject Subject Interface v Interface v Interface r Virtualizing System Virtual Interface r Real version of version of something Real something version of something チュートリアル「仮想化技術最前線」2012/8/24 8 Single-VM Virtualization
  9. 9. 仮想化の構成要素• Subject(主体)  誰がアクセスするか? Subject• Interface v (virtual)  仮想 Object がどのように見えるか? Interface v• Virtualizing System(仮想化システム) Virtualizing  どのようにしてインターフェイスを変換するか? System• Interface r (real) Interface r  実際の Object がどのように見えるか• Object(対象) Object  仮想化される対象は何か? チュートリアル「仮想化技術最前線」2012/8/24 9 Single-VM Virtualization
  10. 10. インターフェイスの抽象度 VMWareによる仮想化 OSによる抽象化 Linux Application 抽象度 Hardware Interface 低 高 System Call Interface VMWare Kernel System Call Interface 高 Device Driver Interface Windows Device Driver Device Driver Hardware Interface 低 低 Hardware Interface Hardware Interface チュートリアル「仮想化技術最前線」2012/8/24 10 Single-VM Virtualization
  11. 11. 仮想化と抽象化 仮想化 抽象度低下 抽象度不変 抽象度増加 Subject Subject Subject Interface A Interface B Interface C Virtualizing Virtualizing Object System System Interface X Interface X Interface X Object Object Object チュートリアル「仮想化技術最前線」2012/8/24 11 Single-VM Virtualization
  12. 12. インターフェイスの現実性 VMWareによる仮想化 OSによる抽象化 Linux Application 現 現 Hardware Interface 実 大実 System Call Interface ほの きの VMWare Kernel ハ ハ System Call Interface ぼー くー 同ド 異ド Device Driver Interface Windows 等ウ なウ Device Driver ェ るェ Hardware Interface ア ア Hardware Interface と と チュートリアル「仮想化技術最前線」2012/8/24 12 Single-VM Virtualization
  13. 13. インターフェイスの特性• 抽象度  Real と Virtual で抽象度が違うか否か?  抽象度を上げると implementation detail が隠蔽される o セクタ,LBA, ATA/USB → ファイル,フォルダ• 現実性  現実のハードウェアのインターフェイスか?  (Commodity な Operating System からの観点で) チュートリアル「仮想化技術最前線」2012/8/24 13 Single-VM Virtualization
  14. 14. 仮想化の分類 チュートリアル「仮想化技術最前線」2012/8/24 14 Single-VM Virtualization
  15. 15. 仮想化の対象(Object)• Resources(リソース)  プロセッサ Software Software Software  CPUエミュレータ Interface Interface Interface  メモリ  OSの仮想メモリ(Virtual Memory) CPU Memory Device  I/Oデバイス(ストレージ,ネットワーク)  ファイルシステム,SAN,VPN, ...• Machine(マシン)(実行環境) Application / OS  Operating Systems Interface  Wine, Cygwin, Windows NT Subsystems, ...  Hardware Platform Machine  VMWare, Xen, QEMU, ...• Desktop(デスクトップ) Interface  VDI, VNC, RDP チュートリアル「仮想化技術最前線」2012/8/24 15 Single-VM Virtualization
  16. 16. マシンの仮想化とは(Formal) [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. チュートリアル「仮想化技術最前線」2012/8/24 16 Single-VM Virtualization
  17. 17. A Virtual Machine Map Virtualization is the construction of an isomorphism between a virtual machine and a real machine; 𝑒 ′ ∘ 𝑓 𝑆 𝑖 = 𝑓 ∘ 𝑒 𝑖 (𝑆 𝑖 ) 𝑖 [Popek et al. 1974] 𝑒 ′ (𝑆 ′ ) 𝑖 𝑖 Virtual 𝑆′ 𝑖 𝑆 𝑗′ 𝐶𝑣 𝑓(𝑆 𝑖 ) 𝑓(𝑆 𝑗 ) 𝑒 𝑖 (𝑆 𝑖 ) Real 𝑆𝑖 𝑆𝑗 𝐶𝑟 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, 𝑒 ∈ 𝐼 チュートリアル「仮想化技術最前線」2012/8/24 17 Single-VM Virtualization
  18. 18. VM (Virtual Machine) Software Interface v Virtual Machine チュートリアル「仮想化技術最前線」2012/8/24 18 Single-VM Virtualization
  19. 19. Real Machine Software Interface r Real Machine チュートリアル「仮想化技術最前線」2012/8/24 19 Single-VM Virtualization
  20. 20. 「Machine」のインターフェイス Application Software System Call Operating System ISA (Instruction Set Architecture) Hardware チュートリアル「仮想化技術最前線」2012/8/24 20 Single-VM Virtualization
  21. 21. VMのインターフェイス1 Application Software System Call Operating System System ISA User ISA Hardware チュートリアル「仮想化技術最前線」2012/8/24 21 Single-VM Virtualization
  22. 22. VMのインターフェイス2 Application Software System Call Operating System System ISA User ISA ABI Hardware ABI = Application Binary Interface チュートリアル「仮想化技術最前線」2012/8/24 22 Single-VM Virtualization
  23. 23. VM (Virtual Machine) の分類• Process VM  Interface v は ABI Process  Subject は Process ABI  Process VMを実現するソフトウェアの例  Digital FX!32(IA-32⇒Alpha)  Cygwin(UNIX→Win), Wine(Win→UNIX) Virtual Machine  Java, Ruby, .NET framework, ... o 抽象度高,現実度低• System VM Software (App/OS)  Interface v は ISA ISA  Subject はアプリケーションとOS  System VMを実現するソフトウェアの例 Virtual Machine  VMWare, Xen, VirtualBox, QEMU チュートリアル「仮想化技術最前線」2012/8/24 23 Single-VM Virtualization
  24. 24. System VM の実現 仮想化後 仮想化の実体 App/OS App/OS ISA ISA Virtualizing Software Virtual Interface r Machine Real Machine チュートリアル「仮想化技術最前線」2012/8/24 24 Single-VM Virtualization
  25. 25. System VM の応用例 Emulation Replication App/OS App/OS App/OS 1 2 ISA 2 ISA 1 ISA 1 Virtualizing Virtualizing Software Software ISA 1 ISA 1 Real Real Machine Machine チュートリアル「仮想化技術最前線」2012/8/24 25 Single-VM Virtualization
  26. 26. Question 2 VMWare は VM か? JavaVM は VM か? チュートリアル「仮想化技術最前線」2012/8/24 26 Single-VM Virtualization
  27. 27. VM と VMM の違い System VM Process VM App/OS 1 App/OS 2 Process ISA 1 ISA 1 ABI VM 1: VM 2: Virtual Virtual Machine 1 Virtual Machine 2 Machine ≒ VMM: Virtual Machine Monitor Virtualizing (Virtualizing Software) Software ISA 1 Interface Real Real Machine Machine チュートリアル「仮想化技術最前線」2012/8/24 27 Single-VM Virtualization
  28. 28. TypeⅠと TypeⅡの VMM TypeⅠ TypeⅡ Guest OS Guest OS ISA ISA VM VM VMM VMM ABI+α (Hypervisor) Host OS ISA ISA Real Real Machine Machine チュートリアル「仮想化技術最前線」2012/8/24 28 Single-VM Virtualization
  29. 29. TypeⅠと TypeⅡの定義 Robert P. Goldberg. Architectural Principles for Virtual Computer Systems. ESD-TR-73-105, Harvard University, pp. 22–26, Feb, 1973. チュートリアル「仮想化技術最前線」2012/8/24 29 Single-VM Virtualization
  30. 30. Question 3 QEMU は VMMか? チュートリアル「仮想化技術最前線」2012/8/24 30 Single-VM Virtualization
  31. 31. 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.” [Popek et al. 1974]• Efficiency  “It demands that a statistically dominant subset of the virtual processors 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
  32. 32. VMMの特性• 等価性  プログラムが元のマシン上とほぼ同じ挙動を示す  タイミングや資源の可用性に起因する違いを除く [Popek et al. 1974]• 効率性  多くの命令は実際のプロセッサ上で直接実行される  VMMは多くの命令をエミュレーションしない• 資源制御  プログラムは与えられた資源しかアクセスできない  ある条件下ではVMMは資源を取り返せる チュートリアル「仮想化技術最前線」2012/8/24 32 Single-VM Virtualization
  33. 33. VMM と Emulator VMM Emulator App/OS App/OS Subset of ISA ISA 2 Virtualizing Virtualizing Software Software ISA ISA 1 Real Real Machine Machine チュートリアル「仮想化技術最前線」2012/8/24 33 Single-VM Virtualization
  34. 34. Single-VM v.s. Multi-VM Single-VM VMM Multi-VM VMM Guest OS Guest OS Guest OS ISA ISA ISA VM VM VM VMM VMM ISA ISA Real Real Machine Machine チュートリアル「仮想化技術最前線」2012/8/24 34 Single-VM Virtualization
  35. 35. Single-VM VMM の特性• 等価性  VM上のプログラムは元のマシン上とほぼ同じ挙動を示す  仮想化をしないハードウェアに関する挙動は元と全く同じ• 効率性  大多数の命令は実際のプロセッサ上で直接実行される  大多数の命令は単一のVM上のプログラムのもの• 資源制御  VM上のプログラムは与えられた資源しかアクセスできない  特定の条件下ではVMMはVMの資源を取り返せる VMMとしては良い特性を持っている チュートリアル「仮想化技術最前線」2012/8/24 35 Single-VM Virtualization
  36. 36. Single-VM VMM の意義• 透過性  ゲスト OS に依存せずに機能追加できる Guest OS• 効率性 ISA  VMMの介在によるオーバーヘッドが少ない VM VMM• セキュリティ  ゲストOSから保護された環境を利用できる ISA Real• シンプル Machine  VMMを小さくできる  セキュリティ上も有利 チュートリアル「仮想化技術最前線」2012/8/24 36 Single-VM Virtualization
  37. 37. 仮想化技術の分類のまとめ VirtualizationResource Machine Desktop Object = Machine Subject = OS/App Process VM System VM Interface v = ISA VMM Emulation Interface v ≒ Interface r (Virtualizing Software) Type I Type II Interface r = ISA ≠ ABI Multi-VM Single-VM Interface v = Interface r チュートリアル「仮想化技術最前線」2012/8/24 37 Single-VM Virtualization
  38. 38. Ⅱ.仮想化技術の詳細 ~Single-VM VMM の実現と PC における実際~ チュートリアル「仮想化技術最前線」2012/8/24 38 Single-VM Virtualization
  39. 39. 物理マシンの構成要素 仮想化前 OS/App Interface r = ISA Processor Memory Devices Real Machine チュートリアル「仮想化技術最前線」2012/8/24 39 Single-VM Virtualization
  40. 40. Processor チュートリアル「仮想化技術最前線」2012/8/24 40 Single-VM Virtualization
  41. 41. Processor の仮想化の要件THEOREM 1. For any conventional third generationcomputer, a virtual machine monitor may be constructedif the set of sensitive instructions for that computer is asubset of the set of privileged instructions. [Popek et al. 1974]定理1 「sensitive」な命令が全て特権命令に含まれていればVMMが構成できる. Instructions Privileged User Sensitive チュートリアル「仮想化技術最前線」2012/8/24 41 Single-VM Virtualization
  42. 42. 「sensitive」な命令• VMMの実行に影響を与える命令  Control sensitive  システムのリソース設定を変更する命令 o 物理メモリの割り当て状態,システムのモード,I/Oなど  Behavior sensitive  実行時の挙動や結果がシステムのリソース設定に影響される命令 o システムレジスタの値やシステムのモードなど Instructions Control Behavior Innocuous Sensitive Sensitive (無害な) チュートリアル「仮想化技術最前線」2012/8/24 42 Single-VM Virtualization
  43. 43. VMM の要件の充足• Sensitive な命令 ⇒ VMM へのトラップが発生  「等価性」「資源制御」の実現• Innocuous な命令 ⇒ なるべく直接実行  「効率性」の実現 Instructions Privileged User Sensitive チュートリアル「仮想化技術最前線」2012/8/24 43 Single-VM Virtualization
  44. 44. Intel CPU(旧)での仮想化• ゲストOSをユーザレベルで動作させる  特権命令は VMM でトラップできる• 特権命令を VMM でエミュレーションする  ゲストOSも特権モードで動いているようにふるまう Application (Guest) Application Kernel (Guest) (Guest) Ring 3 Ring 3 Ring 0 Ring 0 Kernel VMM (Guest) チュートリアル「仮想化技術最前線」2012/8/24 44 Single-VM Virtualization
  45. 45. 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 John Scott Robin and Cynthia E. Irvine. Analysis of the Intel Pentiums Ability to Support a Secure Virtual Machine Monitor. In Proceedings of the 9th conference on USENIX Security Symposium, 2000. チュートリアル「仮想化技術最前線」2012/8/24 45 Single-VM Virtualization
  46. 46. Binary Translation による仮想化• 問題となる命令を実行時に動的に変換する  Sensitive かつ non-privileged な命令  Emulator を呼び出す命令に書き換える Application (Guest) Kernel (Guest) popf ⇒ call emulator Ring 3 Ring 0 VMM Binary Translation チュートリアル「仮想化技術最前線」2012/8/24 46 Single-VM Virtualization
  47. 47. Intel VT による仮想化 VMX non-root mode VMX root mode Application (Guest) Ring 3 Ring 3 Ring 0 VM Entry Ring 0 Kernel VMM (Guest) VM Exit VMCS Guest State Host State Control Field チュートリアル「仮想化技術最前線」2012/8/24 47 Single-VM Virtualization
  48. 48. Intel VT での仮想化可能性• 新たなモード追加で sensitive な命令を削減  Kernel は従来通り ring 0 で動く  Behavior sensitive な命令が削減  プロセッサの重要な挙動は VMX root mode で設定  Control sensitive な命令が削減  前述の17命令は sensitive ではなくなる• VMMへトラップする命令を柔軟に設定可能に  真に sensitive な命令だけ VMM で捕捉する  なるべく多くの命令を Processor で直接実行できる チュートリアル「仮想化技術最前線」2012/8/24 48 Single-VM Virtualization
  49. 49. 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 49 Single-VM Virtualization
  50. 50. Single-VM での Processor 仮想化• ほとんど VM Exit しない VMM を作れる  必要に応じて VM Exit する条件を増やす• Single-VM VMM でも実装したくなる仮想化の例  リアルモードサポート  割り込みコントローラ  定期的実行 チュートリアル「仮想化技術最前線」2012/8/24 50 Single-VM Virtualization
  51. 51. リアルモードサポート• Windows を動作させるためには必須  起動後も何度かリアルモードに切り替わる• 初期の VT はサポートしていない  仮想8086モードを用いたエミュレーション  それなりに大変な実装が必要• 最近の VT は “Unrestricted Guest” をサポート  ゲストOSのモードに「制限」が無くなる  リアルモードのOSも簡単に仮想化できる チュートリアル「仮想化技術最前線」2012/8/24 51 Single-VM Virtualization
  52. 52. 割り込みコントローラ• 最近の PC では APIC で割り込みを制御  Advanced Programmable Interrupt Controller• APIC を監視しない場合の制約  外部割り込みを起こしたデバイスが分からない  デバイス⇒割り込み番号の制御をAPICが行っている  TLB shootdown (別プロセッサのTLB flush) が出来ない  TLB shootdown のための IPI (Inter-Processor Interrupt) を送れない o 勝手に送るとゲストOSとコンフリクトする チュートリアル「仮想化技術最前線」2012/8/24 52 Single-VM Virtualization
  53. 53. 定期実行• 定期的に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 53 Single-VM Virtualization
  54. 54. Memory チュートリアル「仮想化技術最前線」2012/8/24 54 Single-VM Virtualization
  55. 55. 物理マシンにおける Memory Virtual Physical Address Space Address Space Paging チュートリアル「仮想化技術最前線」2012/8/24 55 Single-VM Virtualization
  56. 56. Memory の仮想化 Virtual Guest Physical Host Physical Address Space Address Space Address Space Paging Paging チュートリアル「仮想化技術最前線」2012/8/24 56 Single-VM Virtualization
  57. 57. Single-VM での Memory 仮想化 Virtual Guest Physical Host Physical Address Space Address Space ≒ Address Space Identity Mapping Paging MMIO MMIO Trap MMIO VMM チュートリアル「仮想化技術最前線」2012/8/24 57 Single-VM Virtualization
  58. 58. 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 に制御が移る ※VMM保護とMMIOの両方が不要な場合は2段目のページングなしにもできる チュートリアル「仮想化技術最前線」2012/8/24 58 Single-VM Virtualization
  59. 59. Shadow Paging• ゲスト・ページテーブルの Shadow を VMM が管理  初期化時は全てのエントリが not present  Page fault のたびにゲスト・ページテーブルをたどってエントリを追加する• VMM のオーバーヘッドが大きい  Shadow page table を管理する必要性がある  頻繁に VM Exit する Guest OS VMM ゲストCR3 CR3 PD CR3 PD PT PT Page Fault 時に Guest Page PT Table をたどって更新 PT Guest Page Table Shadow Page Table チュートリアル「仮想化技術最前線」2012/8/24 59 Single-VM Virtualization
  60. 60. EPT (Extended Page Table)• もう一つのページテーブルをプロセッサに設定する  プロセッサが自動的に2段階のページングを行ってくれる  Guest Virtual Address ⇒ Guest Physical Address ⇒ Host Physical• VMM のオーバーヘッドが小さい  最初に Identity Mapping なPage Table 作っておけばよい  ほとんどのページで Guest Physical Address = Host Physical Address Guest OS VMM CR3 PD EPTP PT PT Guest Physical Address を EPT で Host Physical PT PT Address に変換する Guest Page Table Extended Page Table チュートリアル「仮想化技術最前線」2012/8/24 60 Single-VM Virtualization
  61. 61. Devices チュートリアル「仮想化技術最前線」2012/8/24 61 Single-VM Virtualization
  62. 62. 物理マシンにおける Device OS/App I/O Instructions Interrupts Memory ISA Registers Controller DMA Real Machine チュートリアル「仮想化技術最前線」2012/8/24 62 Single-VM Virtualization
  63. 63. Single-VM における選択肢• 完全にパススルー  関係ないデバイスの性能・機能を犠牲にしない• 監視する  実デバイスの挙動・状態を把握できる• 書き換える  部分的に実デバイスの挙動・状態を変化させられる• 完全に仮想化する チュートリアル「仮想化技術最前線」2012/8/24 63 Single-VM Virtualization
  64. 64. I/O Instructions• I/O命令による読み書き I/O許可ビットマップ(8KB) 0  64KBのI/Oアドレス空間にアクセス 1 0 0 0 0 0 0 1  Intel VTの機能でVMMで捕捉可能  8KBのI/O許可ビットマップでアドレス単位で設定可能 o 1ならI/O命令発行時にVM Exit o 0ならそのままI/O命令を実行 0x2000• メモリアクセス命令でのMMIO P D PT  通常のメモリアドレス空間へのアクセス  Shadow Paging or EPT で捕捉可能 PT  不在ページにしてページフォルトを発生させる PT  命令を解釈してI/O内容を把握する Shadow Page Table or EPT チュートリアル「仮想化技術最前線」2012/8/24 64 Single-VM Virtualization
  65. 65. Interrupts• 外部割り込み  デバイスからの割り込みの捕捉  Intel VT の機能で捕捉可能  割り込みの仮想的な挿入  Intel VT の Event Injection 機能で可能  割り込みベクタ番号の指定が必要• デバイスの特定  厳密には APIC へのアクセスを監視する必要がある  デバイスの Status レジスタから特定可能な場合も多い  APIC の監視を省略可能 チュートリアル「仮想化技術最前線」2012/8/24 65 Single-VM Virtualization
  66. 66. DMA • ハードウェアでデータをまとめて自動転送  DMAディスクリプタに転送内容を記述する  メモリ上に展開されたデータ構造  ホストコントローラがCPUを介さずにデータ転送  データ転送の終了時に割り込みで通知 • VMMでコントローラへのアクセスを捕捉可能  レジスタの監視・変更は I/O Instruction の捕捉で可能  DMAディスクリプタはメモリを直接参照かシャドウ化 DMAディスクリプタ バッファアドレス バイト数 ステータス ホストコントローラ 0x08086000 4096 OK ベースアドレスレジスタ + 0x04004000 8192 OK 0x00386000 4096 Ready インデックス チュートリアル「仮想化技術最前線」2012/8/24 66 Single-VM Virtualization
  67. 67. Ⅲ.研究紹介 チュートリアル「仮想化技術最前線」2012/8/24 67 Single-VM Virtualization
  68. 68. 研究紹介の構成• BitVisor の研究  BitVisor の概要  BitVisor を用いた Single-VM Virtualization の応用例• 関連研究の紹介  Single-VM Virtualization の研究  Single-VM Virtualization でも活用できる研究 チュートリアル「仮想化技術最前線」2012/8/24 68 Single-VM Virtualization
  69. 69. BitVisor の沿革• 「セキュアVM」プロジェクトで研究開発  実施期間:平成18年度~平成20年度  文部科学省 科学技術振興調整費  情報漏洩を確実に防止するVMの構築を目的  OS・ユーザに依存しないセキュリティの実現 o VMMの特権を活用  ストレージとネットワークからの情報漏洩防止を実現  HDDやUSBメモリを強制的に暗号化  ネットワーク通信を強制的にVPN化  暗号鍵はICカードに格納 チュートリアル「仮想化技術最前線」2012/8/24 69 Single-VM Virtualization
  70. 70. BitVisor の基本アーキテクチャ ゲストOS• 準パススルー型 Device Driver  基本はI/Oをパススルー VMM  ゲストOSがデバイスを直接制御 Device Mediator  最小限のI/Oを監視・変換 制御I/O 拡張機能 データI/O  制御I/Oの監視 監視 変換 o デバイスの状態把握 o VMMに対するアクセス制御  データI/Oの変換 ハード o 拡張機能の実現 Device 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 チュートリアル「仮想化技術最前線」2012/8/24 70 Single-VM Virtualization
  71. 71. BitVisor の応用研究• セキュリティ  セキュアVM  システムファイル保護• システム管理  透過的ネットワークブート  透過的VPN切替• ユーティリティ  ボランティアコンピューティング基盤  デバイスドライバのデバッグ環境 チュートリアル「仮想化技術最前線」2012/8/24 71 Single-VM Virtualization
  72. 72. セキュアVM• PCからの情報漏洩を防止 ストレージ  ストレージからの情報漏洩防止  HDDやUSBメモリ等を強制的に暗号化 ネットワーク  ネットワークからの情報漏洩防止  ネットワーク通信を強制的に暗号化  ICカードでの鍵管理 ICカード  暗号化の鍵の安全な保存  接続先・ユーザ認証 チュートリアル「仮想化技術最前線」2012/8/24 72 Single-VM Virtualization
  73. 73. セキュアVM(実現)• I/Oを暗号化する ゲストOS Device Driver セキュアVM  ストレージI/Oを捕捉・暗号化 ATA NIC USB  ATA/ATAPI 及び USB1.1/2.0を捕捉  AES-XTSで暗号化 VMM 拡張機能 Device Mediator  ネットワークI/Oを捕捉・暗号化 ストレージ管理  NIC(Intel PRO 100/1000)を捕捉 ATA NIC USB ネットワーク管理  IPSecでVPN接続 ID管理  ICカードで鍵管理・認証 Device ハードウェア  USB接続のカードリーダにアクセス ATA NIC USB  PC/SC, CCIDプロトコル チュートリアル「仮想化技術最前線」2012/8/24 73 Single-VM Virtualization
  74. 74. システムファイル保護• Rootkit からの保護  システムファイルの書き込み を禁止する  OSの重要なファイル o カーネル,デバイスドライバ,…  セキュリティソフトウェア o アンチウィルス,…  カーネルレベルでも書けない  再起動すれば元に戻る  最終ラインでのディフェンス 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 チュートリアル「仮想化技術最前線」2012/8/24 74 Single-VM Virtualization
  75. 75. システムファイル保護(実現)• ストレージへの書き込み を監視する ゲストOS Device Driver VM ATA NIC USB  システムファイルの書き換え を検出 VMM o ファイルのデータ領域 拡張機能 o メタデータ領域 Device Mediator 保護モジュール o ディレクトリ構造 ATA 保護ポリシー  ファイルとセクタのマッピング を管理 Device ハードウェア o セマンティックギャップを克服 ATA NIC USB o 低オーバーヘッドで実現 チュートリアル「仮想化技術最前線」2012/8/24 75 Single-VM Virtualization
  76. 76. 透過的ネットワークブート• 任意のOSをネットワークから サーバ ブート可能にする  OS・設定に依存しない  Windowsをそのままブート可能  Linuxも一切設定なしでブート可能  ローカルのハードウェアをフル活用  内蔵機器・周辺機器をOSが完全管理 o Blu-ray,USB3.0,各種PCIデバイス,… o 省電力(電源制御),最適化(デフラグなど) クライアント 表 祐志, 品川 高廣, 加藤 和彦.仮想マシンモニタによる透過的ネットワークブート方式.情報処理学会論文誌:コ ンピューティングシステム,第4巻,第4号,228-245頁,2011年10月.http://id.nii.ac.jp/1001/00078067/ チュートリアル「仮想化技術最前線」2012/8/24 76 Single-VM Virtualization
  77. 77. 透過的ネットワークブート(実現)• ディスクアクセスを ネットワークへ転送する ゲストOS Device Driver VM ATA NIC USB  ATAのインターフェイスを提供 VMM  ローカルディスクと同じアクセス方法 拡張機能 o MS-DOSでも起動する Device ATA監視 Mediator ATA ATA-AoE変換  ATAアクセスをAoEに変換 NIC NICアクセス  ATA over Ethernet Device ハードウェア  パケットをネットワークへ転送 ATA NIC USB  ディスクイメージをサーバで集中管理 チュートリアル「仮想化技術最前線」2012/8/24 77 Single-VM Virtualization
  78. 78. 透過的VPN切り替え データセンター(クラウド)• クラウド接続の可用性を 専用線 確保する  ネットワーク/サーバ障害対応 VPN × VPN × ルータ1 ルータ2  インターネット層での経路障害 Internet  VPNサーバ故障  OS/ユーザは意識しない  基盤として高可用性を実現  ユーザ・管理者に負担をかけない クライアント 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 チュートリアル「仮想化技術最前線」2012/8/24 78 Single-VM Virtualization
  79. 79. 透過的VPN切り替え(実現)• VPN接続を切り替える ゲストOS Device Driver セキュアVM  定期的にネットワーク到達性を ATA NIC USB チェック VMM  VMMからサーバにPingを送る 拡張機能 Device Mediator  VPN切断・再接続を実施 VPNクライアント  利用可能なサーバの選択 NIC  IPsecでのコネクションを確立 ID管理  IPアドレスの不整合などを吸収 Device ハードウェア ATA NIC USB  TCP接続が切れない  切り替え時間は3秒程度 チュートリアル「仮想化技術最前線」2012/8/24 79 Single-VM Virtualization
  80. 80. ボランティアコンピューティング• 計算コードをVMM内実行 ゲストOS  計算コードをユーザから保護 Device Driver ATA NIC USB VM  計算結果の改ざん防止  計算結果の漏洩防止 VMM  計算コードからユーザを保護 拡張機能  計算コードによる不正アクセスを防止 Device Mediator 保護ドメイン 計算コード NIC (ELF)• VMMでELFコードを受信  VMM内の保護ドメインで実行  ユーザは存在を感知しない Device ハードウェア ATA NIC USB チュートリアル「仮想化技術最前線」2012/8/24 80 Single-VM Virtualization
  81. 81. デバイスドライバのデバッグ• 滅多に発生しないエラー ゲストOS Device Driver VM を意図的に発生させる Driver  デバイスドライバが想定して VMM いないバグを洗い出す 拡張機能 Device Mediator 状態遷移追跡• VMMでデバイスの挙動 Mediator I/O書き換え を変える  状態遷移を監視する Device ハードウェア  意図的な状態遷移を引き起こ Device すようにI/Oを書き換える チュートリアル「仮想化技術最前線」2012/8/24 81 Single-VM Virtualization
  82. 82. 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)対策 チュートリアル「仮想化技術最前線」2012/8/24 82 Single-VM Virtualization
  83. 83. VMMによるセキュリティ(1)• SecVisor [Seshadri et al., SOSP ‘07]  カーネルコードの一貫性維持に特化  VMMが許可しないとカーネルモードで実行できない  コードサイズは1,112行(AMD SVM+NPT版) チュートリアル「仮想化技術最前線」2012/8/24 83 Single-VM Virtualization
  84. 84. VMMによるセキュリティ(2)• CloudVisor [Zhang et al., SOSP ‘11]  セキュリティ専用VMMを既存VMMの下に置く  メモリやディスク暗号化などでVM間の保護を実現 チュートリアル「仮想化技術最前線」2012/8/24 84 Single-VM Virtualization
  85. 85. VMMによるセキュリティ(3)• OverShadow [Chen et al., ASPLOS ’08]  信頼出来ないOSからアプリのデータを守る  暗号化とハッシュでメモリの機密性と完全性を保つ チュートリアル「仮想化技術最前線」2012/8/24 85 Single-VM Virtualization
  86. 86. まとめ• 仮想化の基礎知識  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 86 Single-VM Virtualization
  87. 87. 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 87 Single-VM Virtualization

×