Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
TF
Uploaded by
Takaaki Fukai
PDF, PPTX
1,441 views
Unsafe Nested Virtualization on Intel CPU
BitVisor Summit 6 の発表資料です.
Software
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 56
2
/ 56
3
/ 56
4
/ 56
5
/ 56
6
/ 56
7
/ 56
8
/ 56
9
/ 56
10
/ 56
11
/ 56
12
/ 56
13
/ 56
14
/ 56
15
/ 56
16
/ 56
17
/ 56
18
/ 56
19
/ 56
20
/ 56
21
/ 56
22
/ 56
23
/ 56
24
/ 56
25
/ 56
26
/ 56
27
/ 56
28
/ 56
29
/ 56
30
/ 56
31
/ 56
32
/ 56
33
/ 56
34
/ 56
35
/ 56
36
/ 56
37
/ 56
38
/ 56
39
/ 56
40
/ 56
41
/ 56
42
/ 56
43
/ 56
44
/ 56
45
/ 56
46
/ 56
47
/ 56
48
/ 56
49
/ 56
50
/ 56
51
/ 56
52
/ 56
53
/ 56
54
/ 56
55
/ 56
56
/ 56
More Related Content
KEY
軽快なBHyVe
by
Takuya ASADA
ODP
Bhyve Internals
by
Takuya ASADA
PDF
BHyVe: The BSD Hypervisor
by
Takuya ASADA
ODP
Bhyve code reading
by
Takuya ASADA
PDF
BHyVeってなんや
by
Takuya ASADA
KEY
軽快なPlan 9 Update - Illumos KVM上陸 -
by
Go Saito
PDF
/dev/kvmを直接叩いて自作VM
by
Yuma Ohgami
PPTX
VXLANを使ったプライベートクラウド VMマイグレーションの実現
by
Shota S
軽快なBHyVe
by
Takuya ASADA
Bhyve Internals
by
Takuya ASADA
BHyVe: The BSD Hypervisor
by
Takuya ASADA
Bhyve code reading
by
Takuya ASADA
BHyVeってなんや
by
Takuya ASADA
軽快なPlan 9 Update - Illumos KVM上陸 -
by
Go Saito
/dev/kvmを直接叩いて自作VM
by
Yuma Ohgami
VXLANを使ったプライベートクラウド VMマイグレーションの実現
by
Shota S
What's hot
PDF
#ljstudy KVM勉強会
by
Etsuji Nakai
PDF
Linux KVMではじめるカンタン仮想化入門
by
VirtualTech Japan Inc.
PDF
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
by
株式会社サードウェア
PDF
おにいぽんでもわかるContainer
by
Takahiro Morimoto
PDF
Hyper-V ネットワークの基本
by
Syuichi Murashima
PPTX
VMware ESXi と Microsoft Hyper-V Server を比較してみた
by
POPI Prince
PDF
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
KEY
An idea of bios emulation on b hy ve
by
Takuya ASADA
PDF
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
PDF
次世代仮想化テクノロジー
by
Syuichi Murashima
PPTX
Cloud next with Server Roadmap
by
Hisaki Ohara
PDF
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
PPTX
Hyper v ネットワークの基本
by
Syuichi Murashima
PDF
OVF, OVA, ovftool
by
tshiroyama
PPTX
Packerで自動化
by
Shintaro Hasunuma
PDF
Infinite Debian - Platform for mass-producing system every second
by
Taisuke Yamada
KEY
物理マシンをケチる技術
by
Satoshi KOBAYASHI
ODP
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
by
Kazuyuki Sato
PPTX
Hyper-V を使おう
by
wataken44
PPTX
Azure Bastion の紹介
by
Masakazu Kishima
#ljstudy KVM勉強会
by
Etsuji Nakai
Linux KVMではじめるカンタン仮想化入門
by
VirtualTech Japan Inc.
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
by
株式会社サードウェア
おにいぽんでもわかるContainer
by
Takahiro Morimoto
Hyper-V ネットワークの基本
by
Syuichi Murashima
VMware ESXi と Microsoft Hyper-V Server を比較してみた
by
POPI Prince
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
An idea of bios emulation on b hy ve
by
Takuya ASADA
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
次世代仮想化テクノロジー
by
Syuichi Murashima
Cloud next with Server Roadmap
by
Hisaki Ohara
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
Hyper v ネットワークの基本
by
Syuichi Murashima
OVF, OVA, ovftool
by
tshiroyama
Packerで自動化
by
Shintaro Hasunuma
Infinite Debian - Platform for mass-producing system every second
by
Taisuke Yamada
物理マシンをケチる技術
by
Satoshi KOBAYASHI
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
by
Kazuyuki Sato
Hyper-V を使おう
by
wataken44
Azure Bastion の紹介
by
Masakazu Kishima
Similar to Unsafe Nested Virtualization on Intel CPU
PDF
VIOPS04: Intel VT ~仮想化を支える基礎技術~
by
VIOPS Virtualized Infrastructure Operators group ARCHIVES
PDF
MMIO on VT-x
by
Takuya ASADA
PDF
仮想化技術によるマルウェア対策とその問題点
by
Kuniyasu Suzaki
KEY
関東GPGPU勉強会 LLVM meets GPU
by
Takuro Iizuka
PPTX
TechEd2010_T2-401_EffectiveHyper-V
by
Kuninobu SaSaki
PPTX
Effective Hyper-V - 久しぶりエディション
by
Kuninobu SaSaki
PDF
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
by
Tsukasa Oi
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
PPTX
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
PPTX
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
PDF
仮想化技術の今後の動向
by
VirtualTech Japan Inc.
PDF
2009-03-24 第3回セキュアVMシンポジウム
by
Takahiro Shinagawa
PDF
Technology Used in Virtual Machine (Jan 2008)
by
Kuniyasu Suzaki
PDF
Spectre/Meltdownとその派生
by
MITSUNARI Shigeo
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
by
Takeshi HASEGAWA
PDF
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
PDF
2008-03-19 第2回セキュアVMシンポジウム
by
Takahiro Shinagawa
PDF
2012-12-04 BitVisor Summit (公開版)「BitVisorの現状と今後」
by
Takahiro Shinagawa
PDF
Kernel vm#9 powerkvm-dist-20131208
by
Manabu Ori
PDF
CPUの同時実行機能
by
Shinichiro Niiyama
VIOPS04: Intel VT ~仮想化を支える基礎技術~
by
VIOPS Virtualized Infrastructure Operators group ARCHIVES
MMIO on VT-x
by
Takuya ASADA
仮想化技術によるマルウェア対策とその問題点
by
Kuniyasu Suzaki
関東GPGPU勉強会 LLVM meets GPU
by
Takuro Iizuka
TechEd2010_T2-401_EffectiveHyper-V
by
Kuninobu SaSaki
Effective Hyper-V - 久しぶりエディション
by
Kuninobu SaSaki
セキュアVMの構築 (IntelとAMDの比較、あともうひとつ...) - AVTokyo 2009
by
Tsukasa Oi
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
x86-64/Linuxに独自メモリ空間を勝手増設
by
Minoru Nakamura
仮想化技術の今後の動向
by
VirtualTech Japan Inc.
2009-03-24 第3回セキュアVMシンポジウム
by
Takahiro Shinagawa
Technology Used in Virtual Machine (Jan 2008)
by
Kuniyasu Suzaki
Spectre/Meltdownとその派生
by
MITSUNARI Shigeo
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
by
Takeshi HASEGAWA
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
2008-03-19 第2回セキュアVMシンポジウム
by
Takahiro Shinagawa
2012-12-04 BitVisor Summit (公開版)「BitVisorの現状と今後」
by
Takahiro Shinagawa
Kernel vm#9 powerkvm-dist-20131208
by
Manabu Ori
CPUの同時実行機能
by
Shinichiro Niiyama
More from Takaaki Fukai
PDF
そのベンチマークソフト本当に大丈夫ですか?
by
Takaaki Fukai
PDF
EPT と TLB でしくじった話
by
Takaaki Fukai
PDF
ライブマイグレーション実装で体験したデバッグの解説
by
Takaaki Fukai
PDF
kvm-clock に時間を尋ねるのは間違っているだろうか
by
Takaaki Fukai
PDF
Rancher.ioを試してみる
by
Takaaki Fukai
PDF
僕の考えたさいきょーのVMM開発環境
by
Takaaki Fukai
そのベンチマークソフト本当に大丈夫ですか?
by
Takaaki Fukai
EPT と TLB でしくじった話
by
Takaaki Fukai
ライブマイグレーション実装で体験したデバッグの解説
by
Takaaki Fukai
kvm-clock に時間を尋ねるのは間違っているだろうか
by
Takaaki Fukai
Rancher.ioを試してみる
by
Takaaki Fukai
僕の考えたさいきょーのVMM開発環境
by
Takaaki Fukai
Unsafe Nested Virtualization on Intel CPU
1.
Unsafe Nested Virtualization on
Intel CPU 深井 貴明(筑波大学) 2016年12月5日 1
2.
Nested Virtualization 2 VMM VMM QEMU/KVM, VirtualBox,
etc. VM CPU VM VM の中にVMM が!
3.
Nested Virtualization 3 L0 VMM
(Layer 0) L1 VMM (Layer 1) QEMU/KVM, VirtualBox, etc. L2 VM (Layer 2) CPU VM VM の中にVMM が!
4.
Nested Virtualization 4 L0 VMM
(Layer 0) L1 VMM (Layer 1) QEMU/KVM, VirtualBox, etc. L2 VM (Layer 2) CPU VM VM の中にVMM が! 仮想化支援機能で 速度向上! VT-x/AMD-V Virtual VT-x/AMD-V 仮想化支援機能を 提供
5.
BitVisor の Nested
Virtualization • イーゲル榮樂さんによる発表 Unsafe Nested Virtualization 5
6.
Unsafe Nested Virtualization
とは • L1 VMM が trusted だと仮定し,いくつかの仮想化支援 機能をパススルーで L1 に提供する • E.g. EPT をパススルーとか • Para-passthrough な BitVisor ならではの (荒) 技 6
7.
実行の流れ 7 L2 用 VMCB
を ロード L1 用VMCBを ロード L1 VMM L0 VMM L2 VM L1 が作成したVMCSを変換なしに直接ロード VMExit VMEnter VMExit VMEnter
8.
アドレス変換 L1 VMM L0 VMM L2
VM CPU EPT L2p L1p PT L2v L2p L2 動作時 • L1 が作成した EPT を直接ロード • BitVisor では L0p = L1p • L0 の保護なしUnsafe (L2p = L2 Physical address, …)
9.
夢が広がりますね • VMM のデバッグなどの用途に •
木村さんのシステムと組み合わせればとても夢が広がるか も • 自由なライセンスの Nested Virtualization • BitVisor は BSD ライセンス • Open かつ not GPL で Nested Virtualization できる VMM は ほかにない 9
10.
しかし… • Intel VT-x
- 未着手 • AMD SVM - 実装済み 10
11.
しかし… • Intel VT-x
- 未着手 • AMD SVM - 実装済み 11
12.
Unsafe Nested Virtualization on
Intel CPU 12
13.
基本設計 基本的には AMD 版と同じ(だと思う) •
L1 が作成した VMCS を (ほぼ) 直接ロード • EPT は L1 が作成したものを直接ロード VT-x と AMD-V の違いに対応 • VMX 命令 • VMExit 時の Host State のロード 13
14.
AMD 版実装との主な違い • 全部 •
命令エミュレーション • Host States の Shadowing • VMExit のエミュレーション • vCPU マイグレーションへの対応 14
15.
AMD 版実装との主な違い • 全部 •
命令エミュレーション • Host States の Shadowing • VMExit のエミュレーション • vCPU マイグレーションへの対応 15
16.
VMX instructions • VMXOFF •
VMXON • INVEPT • INVVPID • VMREAD • VMWRITE • VMLAUNCH • VMRESUME • VMCLEAR • VMPTRLD • VMPTRST 16
17.
VMX instructions • VMXOFF •
VMXON • INVEPT • INVVPID • VMREAD • VMWRITE • VMLAUNCH • VMRESUME • VMCLEAR • VMPTRLD • VMPTRST 17 実行したふりだけする BitVisor が代わりに実行
18.
VT-x 命令のエミュレーション 基本的には • VMCS
を L1/L0 L2/L0 に切り替え • 実際に命令を実行 • 結果を L1 に返す • L1 RFLAGS の反映 • オペランドとして渡されたレジスタ or メモリに結果を渡す 18
19.
例: VMREAD 19 L0 BitVisor L1
VMM CPU L1/L0 VMCS L2/L0 VMCS L1/L0 VMCS L2/L1 VMCS VMREAD!
20.
例: VMREAD/VMWRITE 20 L0 BitVisor L1
VMM CPU L1/L0 VMCS L2/L0 VMCS L1/L0 VMCS L2/L1 VMCS VMREAD! VMExit
21.
例: VMREAD/VMWRITE 21 L0 BitVisor L1
VMM CPU L2/L0 VMCS L2/L0 VMCS L1/L0 VMCS L2/L1 VMCS VMPTRLD VMREAD!
22.
例: VMREAD/VMWRITE 22 L0 BitVisor L1
VMM CPU L2/L0 VMCS L2/L0 VMCS L1/L0 VMCS L2/L1 VMCS VMREAD VMREAD!
23.
例: VMREAD/VMWRITE 23 L0 BitVisor L1
VMM CPU L1/L0 VMCS L2/L0 VMCS L1/L0 VMCS L2/L1 VMCS VMREAD! VMPTRLD
24.
例: VMREAD/VMWRITE 24 L0 BitVisor L1
VMM CPU L1/L0 VMCS L2/L0 VMCS L1/L0 VMCS L2/L1 VMCS VMREAD! VMEnter
25.
AMD 版実装との主な違い • 全部 •
命令エミュレーション • Host States の Shadowing • VMExit のエミュレーション • vCPU マイグレーションへの対応 25
26.
VMCS が持つ States 26 VMCS Guest
State Host State Control State
27.
VMCS が持つ States 27 VMCS Guest
State Host State Control State VMExit 時に物理コアに ロードされる情報 • RIP • RSP • etc.
28.
VMCS が持つ States 28 VMCS Guest
State Host State Control State VMExit 時に物理コアに ロードされる情報 • RIP • RSP • etc. L2 からのVMExit 時も BitVisor の状態でないと困る
29.
VMCS Shadowing 29 L2/L0 VMCS Guest
State L1 が設定 Host State L0 が設定 Control State L1 が設定 Host State L1 が設定 Shadow VMCS CPU にセット L0 BitVisor が管理
30.
AMD 版実装との主な違い • 全部 •
命令エミュレーション • Host States の Shadowing • VMExit のエミュレーション • VMCS のライフサイクルの対応 30
31.
VMCS の切り替え 31 L1 VMM L0
VMM L2 VM VMExit VMEnter VMExit VMEnter CPU L1/L0 VMCS L2/L0 VMCS L1/L0 VMCS
32.
VMCS の切り替え 32 L1 VMM L0
VMM L2 VM VMExit VMEnter VMExit VMEnter CPU L1/L0 VMCS L2/L0 VMCS L1/L0 VMCS
33.
VMExit 時の処理 33 Intel SDM
3C が手元にある人は LOADING HOST STATE という章を見てみましょう
34.
34 こんなにある!
35.
35 bool to_64bit_mode; ulong tmp; ulong
cr0, cr3, cr4; /* These bit is not modified */ const u64 cr0_reserved = 0xffffffff1ffaffc0; /* 63:32, 28:19, 17, 15:6 */ ulong cr0_mask = CR0_ET_BIT | CR0_CD_BIT | CR0_NW_BIT | CR0_NE_BIT | cr0_reserved; ulong cr3_mask = ~(current->pte_addr_mask | PAGESIZE_MASK); ulong cr4_mask = CR4_VMXE_BIT; ulong acr; u64 guest_efer; const u64 efer_mask = MSR_IA32_EFER_LME_BIT | MSR_IA32_EFER_LMA_BIT; struct vmcs_host_states hs = current->u.vt.shadow_vt->current_shadow_vmcs->hs; ulong exit_ctl = current->u.vt.shadow_vt->current_shadow_vmcs->exit_ctl_shadow; ulong exec_ctl; /* Load some L2-L0 VMCS field */ これが”VMExit” 時のアトミックな処理…
36.
AMD 版実装との主な違い • 全部 •
命令エミュレーション • Host States の Shadowing • VMExit のエミュレーション • vCPU マイグレーションへの対応 36
37.
vCPU マイグレーション = vCPU
の物理コア間の移動 (プロセスマイグレーションみたいなイメージ) 37 物理コア 物理コア 物理コア 物理コア vCPU
38.
vCPU マイグレーションの流れ 38 物理コア 物理コア vCPU RAM VMM VMCS VMCSの キャッシュ VMCS
39.
vCPU マイグレーションの流れ 39 物理コア 物理コア RAM VMM VMCS VMCS VMCLEAR VMCSの キャッシュ キャッシュ 吐き出し
40.
vCPU マイグレーションの流れ 40 物理コア 物理コア RAM VMM VMCS VMCS VMCS vCPU VMCLEAR
VMPTRLD VMCSの キャッシュ キャッシュ 吐き出し vCPU
41.
Nested Virtualization での vCPU
マイグレーションの流れ 41 物理コア 物理コア RAM L1 VMM L2/L0 VMCS VMCLEAR L0 VMM L2/L1 VMCS L1 Host State vCPU
42.
Nested Virtualization での vCPU
マイグレーションの流れ 42 物理コア 物理コア RAM L1 VMM L2/L1 VMCS L2/L1 VMCS VMCLEAR L0 VMM L1 Host State vCPU
43.
Nested Virtualization での vCPU
マイグレーションの流れ 43 物理コア 物理コア RAM L1 VMM L2/L1 VMCS VMCLEAR L0 VMM L1 Host State L2/L1 VMCS
44.
Nested Virtualization での vCPU
マイグレーションの流れ 44 物理コア 物理コア RAM L1 VMM L2/L1 VMCS VMCLEAR L0 VMM L1 Host State L2/L1 VMCS VMPTRLD
45.
Nested Virtualization での vCPU
マイグレーションの流れ 45 物理コア 物理コア RAM L1 VMM L2/L1 VMCS VMCLEAR L0 VMM L1 Host State L2/L1 VMCS VMPTRLD L2/L1 VMCS
46.
Nested Virtualization での vCPU
マイグレーションの流れ 46 物理コア 物理コア RAM L1 VMM L2/L1 VMCS VMCLEAR L0 VMM L1 Host State L2/L1 VMCS VMPTRLD L2/L1 VMCS L1 Host State
47.
Nested Virtualization での vCPU
マイグレーションの流れ 47 物理コア 物理コア RAM L1 VMM L2/L1 VMCS VMCLEAR L0 VMM L1 Host State L2/L1 VMCS VMPTRLD L2/L0 VMCS L1 Host State L0 Host State vCPU
48.
その他ハマったところ: EFER • IA32_MSR_EFER
が Exit 時にロードされたりされなかっ たりする • Exit control でL1 が制御可能 • ゲストとホストが同じ EFER の設定を使っていると,VMExit の たびに EFER を更新しないような設定にされたりする (KVM) • うまく対応する必要がある 48
49.
EFER の扱い • L1
EFER Physical EFER • VMEntry from L0 to L2 • VMExit from L2 to L0 • If (exit_ctl & load_host_efer) • L1/L0_VMCS_GUEST_EFER = L2/L1_VMCS_HOST_EFER • else • L1/L0_VMCS_GUEST_EFER = Physical EFER • Restore EFER • 32 Bit OS 対応どうしよう? 49
50.
コード行数 • 明らかに Intel
対応の方が行数が多い AMD: +266行,-6行 (Changeset #106) Intel: +1455行, -1行 50
51.
対応状況 (L2 は
Ubuntu 16.04 64bit) 51 L1 VMM 対応状況 KVM O VirtualBox on Linux O VirtualBox on Windows O? VMWare workstation player on Linux O Bhyve O? Hyper-V ? BitVisor O Xen ? * on Mac ?
52.
対応/検証状況 52 • とりあえず OS
起動のみ検証 • デバイスの共有などは未検証 • Nested EPT は未対応 • L2 は Ubuntu 16.04 64bit, Thinkpad X1 でのみの検証
53.
性能評価 • とかやりたかったんですけどね… • Advent
Calendar で書けるといいな… 53
54.
まとめ • Intel CPU
向けに Unsafe Nested Virtualization の対応 • Intel だと以下が大変だった • 命令エミュレーション • Host States の Shadowing • VMExit のエミュレーション • vCPU マイグレーションへの対応 • 色々大変だったけど何とか動いて?よかった • そのうちメインラインに入る…かも…? 54
55.
55
56.
書いてね 56
Download