Submit Search
Upload
Unsafe Nested Virtualization on Intel CPU
•
2 likes
•
1,403 views
T
Takaaki Fukai
Follow
BitVisor Summit 6 の発表資料です.
Read less
Read more
Software
Report
Share
Report
Share
1 of 56
Download now
Download to read offline
Recommended
軽快なBHyVe
軽快なBHyVe
Takuya ASADA
Bhyve Internals
Bhyve Internals
Takuya ASADA
BHyVe: The BSD Hypervisor
BHyVe: The BSD Hypervisor
Takuya ASADA
Bhyve code reading
Bhyve code reading
Takuya ASADA
BHyVeってなんや
BHyVeってなんや
Takuya ASADA
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
Go Saito
/dev/kvmを直接叩いて自作VM
/dev/kvmを直接叩いて自作VM
Yuma Ohgami
VXLANを使ったプライベートクラウド VMマイグレーションの実現
VXLANを使ったプライベートクラウド VMマイグレーションの実現
Shota S
Recommended
軽快なBHyVe
軽快なBHyVe
Takuya ASADA
Bhyve Internals
Bhyve Internals
Takuya ASADA
BHyVe: The BSD Hypervisor
BHyVe: The BSD Hypervisor
Takuya ASADA
Bhyve code reading
Bhyve code reading
Takuya ASADA
BHyVeってなんや
BHyVeってなんや
Takuya ASADA
軽快なPlan 9 Update - Illumos KVM上陸 -
軽快なPlan 9 Update - Illumos KVM上陸 -
Go Saito
/dev/kvmを直接叩いて自作VM
/dev/kvmを直接叩いて自作VM
Yuma Ohgami
VXLANを使ったプライベートクラウド VMマイグレーションの実現
VXLANを使ったプライベートクラウド VMマイグレーションの実現
Shota S
#ljstudy KVM勉強会
#ljstudy KVM勉強会
Etsuji Nakai
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
VirtualTech Japan Inc.
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
株式会社サードウェア
おにいぽんでもわかるContainer
おにいぽんでもわかるContainer
Takahiro Morimoto
Hyper-V ネットワークの基本
Hyper-V ネットワークの基本
Syuichi Murashima
VMware ESXi と Microsoft Hyper-V Server を比較してみた
VMware ESXi と Microsoft Hyper-V Server を比較してみた
POPI Prince
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
Takuya ASADA
An idea of bios emulation on b hy ve
An idea of bios emulation on b hy ve
Takuya ASADA
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
次世代仮想化テクノロジー
次世代仮想化テクノロジー
Syuichi Murashima
Cloud next with Server Roadmap
Cloud next with Server Roadmap
Hisaki Ohara
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
tshiroyama
Hyper v ネットワークの基本
Hyper v ネットワークの基本
Syuichi Murashima
OVF, OVA, ovftool
OVF, OVA, ovftool
tshiroyama
Packerで自動化
Packerで自動化
Shintaro Hasunuma
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
物理マシンをケチる技術
物理マシンをケチる技術
Satoshi KOBAYASHI
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
Kazuyuki Sato
Hyper-V を使おう
Hyper-V を使おう
wataken44
Azure Bastion の紹介
Azure Bastion の紹介
Masakazu Kishima
仮想化技術の今後の動向
仮想化技術の今後の動向
VirtualTech Japan Inc.
TechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-V
Kuninobu SaSaki
More Related Content
What's hot
#ljstudy KVM勉強会
#ljstudy KVM勉強会
Etsuji Nakai
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
VirtualTech Japan Inc.
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
株式会社サードウェア
おにいぽんでもわかるContainer
おにいぽんでもわかるContainer
Takahiro Morimoto
Hyper-V ネットワークの基本
Hyper-V ネットワークの基本
Syuichi Murashima
VMware ESXi と Microsoft Hyper-V Server を比較してみた
VMware ESXi と Microsoft Hyper-V Server を比較してみた
POPI Prince
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
Takuya ASADA
An idea of bios emulation on b hy ve
An idea of bios emulation on b hy ve
Takuya ASADA
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
次世代仮想化テクノロジー
次世代仮想化テクノロジー
Syuichi Murashima
Cloud next with Server Roadmap
Cloud next with Server Roadmap
Hisaki Ohara
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
tshiroyama
Hyper v ネットワークの基本
Hyper v ネットワークの基本
Syuichi Murashima
OVF, OVA, ovftool
OVF, OVA, ovftool
tshiroyama
Packerで自動化
Packerで自動化
Shintaro Hasunuma
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
物理マシンをケチる技術
物理マシンをケチる技術
Satoshi KOBAYASHI
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
Kazuyuki Sato
Hyper-V を使おう
Hyper-V を使おう
wataken44
Azure Bastion の紹介
Azure Bastion の紹介
Masakazu Kishima
What's hot
(20)
#ljstudy KVM勉強会
#ljstudy KVM勉強会
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
おにいぽんでもわかるContainer
おにいぽんでもわかるContainer
Hyper-V ネットワークの基本
Hyper-V ネットワークの基本
VMware ESXi と Microsoft Hyper-V Server を比較してみた
VMware ESXi と Microsoft Hyper-V Server を比較してみた
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
An idea of bios emulation on b hy ve
An idea of bios emulation on b hy ve
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
次世代仮想化テクノロジー
次世代仮想化テクノロジー
Cloud next with Server Roadmap
Cloud next with Server Roadmap
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Hyper v ネットワークの基本
Hyper v ネットワークの基本
OVF, OVA, ovftool
OVF, OVA, ovftool
Packerで自動化
Packerで自動化
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
物理マシンをケチる技術
物理マシンをケチる技術
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
Hyper-V を使おう
Hyper-V を使おう
Azure Bastion の紹介
Azure Bastion の紹介
Similar to Unsafe Nested Virtualization on Intel CPU
仮想化技術の今後の動向
仮想化技術の今後の動向
VirtualTech Japan Inc.
TechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-V
Kuninobu SaSaki
INF-016_比べて納得! Windows Server 2016 Hyper-V の新機能すべて見せます!
INF-016_比べて納得! Windows Server 2016 Hyper-V の新機能すべて見せます!
decode2016
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
第6回「VMware vSphere 5」(2011/08/11 on しすなま!)
第6回「VMware vSphere 5」(2011/08/11 on しすなま!)
System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
20120609 cod ws2012概要
20120609 cod ws2012概要
Osamu Takazoe
コンテナ今昔物語_2021_12_22
コンテナ今昔物語_2021_12_22
勇 黒沢
Wakame-VDC / Open Source Conferense 2012 - Cloud (JP)
Wakame-VDC / Open Source Conferense 2012 - Cloud (JP)
axsh co., LTD.
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
Satoshi Shimazaki
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
axsh co., LTD.
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料
Daisuke Nakajima
VIOPS04: Intel VT ~仮想化を支える基礎技術~
VIOPS04: Intel VT ~仮想化を支える基礎技術~
VIOPS Virtualized Infrastructure Operators group ARCHIVES
FD.io VPP事始め
FD.io VPP事始め
tetsusat
Intel TXT and vSphere
Intel TXT and vSphere
Hisaki Ohara
第21回「Windows Server 2012 DeepDive!! Hyper-V と VDI を徹底解説」(2012/10/18 on しすなま!)...
第21回「Windows Server 2012 DeepDive!! Hyper-V と VDI を徹底解説」(2012/10/18 on しすなま!)...
System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
OpenIndiana+KVMによる仮想マシン
OpenIndiana+KVMによる仮想マシン
悟 宮崎
CRX: Container Runtime Executive
CRX: Container Runtime Executive
imurata8203
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
株式会社サードウェア
OpenStack with SR-IOV
OpenStack with SR-IOV
Hideki Saito
Hamのリモートシャックの実践
Hamのリモートシャックの実践
yukutomi
Similar to Unsafe Nested Virtualization on Intel CPU
(20)
仮想化技術の今後の動向
仮想化技術の今後の動向
TechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-V
INF-016_比べて納得! Windows Server 2016 Hyper-V の新機能すべて見せます!
INF-016_比べて納得! Windows Server 2016 Hyper-V の新機能すべて見せます!
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ②IBM資料
第6回「VMware vSphere 5」(2011/08/11 on しすなま!)
第6回「VMware vSphere 5」(2011/08/11 on しすなま!)
20120609 cod ws2012概要
20120609 cod ws2012概要
コンテナ今昔物語_2021_12_22
コンテナ今昔物語_2021_12_22
Wakame-VDC / Open Source Conferense 2012 - Cloud (JP)
Wakame-VDC / Open Source Conferense 2012 - Cloud (JP)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料
VIOPS04: Intel VT ~仮想化を支える基礎技術~
VIOPS04: Intel VT ~仮想化を支える基礎技術~
FD.io VPP事始め
FD.io VPP事始め
Intel TXT and vSphere
Intel TXT and vSphere
第21回「Windows Server 2012 DeepDive!! Hyper-V と VDI を徹底解説」(2012/10/18 on しすなま!)...
第21回「Windows Server 2012 DeepDive!! Hyper-V と VDI を徹底解説」(2012/10/18 on しすなま!)...
OpenIndiana+KVMによる仮想マシン
OpenIndiana+KVMによる仮想マシン
CRX: Container Runtime Executive
CRX: Container Runtime Executive
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
OpenStack with SR-IOV
OpenStack with SR-IOV
Hamのリモートシャックの実践
Hamのリモートシャックの実践
More from Takaaki Fukai
そのベンチマークソフト本当に大丈夫ですか?
そのベンチマークソフト本当に大丈夫ですか?
Takaaki Fukai
EPT と TLB でしくじった話
EPT と TLB でしくじった話
Takaaki Fukai
ライブマイグレーション実装で体験したデバッグの解説
ライブマイグレーション実装で体験したデバッグの解説
Takaaki Fukai
kvm-clock に時間を尋ねるのは間違っているだろうか
kvm-clock に時間を尋ねるのは間違っているだろうか
Takaaki Fukai
Rancher.ioを試してみる
Rancher.ioを試してみる
Takaaki Fukai
僕の考えたさいきょーのVMM開発環境
僕の考えたさいきょーのVMM開発環境
Takaaki Fukai
More from Takaaki Fukai
(6)
そのベンチマークソフト本当に大丈夫ですか?
そのベンチマークソフト本当に大丈夫ですか?
EPT と TLB でしくじった話
EPT と TLB でしくじった話
ライブマイグレーション実装で体験したデバッグの解説
ライブマイグレーション実装で体験したデバッグの解説
kvm-clock に時間を尋ねるのは間違っているだろうか
kvm-clock に時間を尋ねるのは間違っているだろうか
Rancher.ioを試してみる
Rancher.ioを試してみる
僕の考えたさいきょーのVMM開発環境
僕の考えたさいきょーのVMM開発環境
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 now