Upload
Download free for 30 days
Login
Submit Search
BitVisor Summit 12「BitVisor 2023年から2024年3 月の主な変更点」
0 likes
24 views
BitVisor
BitVisor Summit 12 https://bitvisor.connpass.com/event/311262/
Software
Read more
1 of 27
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
More Related Content
PDF
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
BitVisor
PDF
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
BitVisor
PDF
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor
PDF
BitVisor Summit 13 「BitVisor 2024年4月から2025年3月の主な変更点」
BitVisor
PDF
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
BitVisor
PDF
20130209勉強会
Akira Yoshiyama
PDF
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
BitVisor
PDF
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
Akihiro Motoki
BitVisor Summit 7「2. BitVisor 2018年の主な変更点」
BitVisor
BitVisor Summit 11「1. BitVisor 2022年の主な変更点」
BitVisor
BitVisor Summit 8「2. BitVisor 2019年の主な変更点」
BitVisor
BitVisor Summit 13 「BitVisor 2024年4月から2025年3月の主な変更点」
BitVisor
BitVisor Summit 9「2. BitVisor 2020年の主な変更点」
BitVisor
20130209勉強会
Akira Yoshiyama
BitVisor Summit 10「1. BitVisor 2021年の主な変更点」
BitVisor
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
Akihiro Motoki
Similar to BitVisor Summit 12「BitVisor 2023年から2024年3 月の主な変更点」
(18)
PDF
OpenStack 2014.1 (Icehouse Release)
Akira Yoshiyama
PDF
BHyVe: The BSD Hypervisor
Takuya ASADA
PDF
第12回CloudStackユーザ会_ApacheCloudStack最新情報
Midori Oge
PPTX
VIRLとPyATSで実現するネットワークCI
tetsusat
PPTX
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
Takahiro Shinagawa
PDF
2015-11-26 BitVisor Summit 4(公開版)
Takahiro Shinagawa
PDF
BitVisor Summit 2 「BitVisorの現状と今後」
Takahiro Shinagawa
PDF
BitVisor Summit 3 「BitVisorの現状と今後」
Takahiro Shinagawa
PDF
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
IIJ
PDF
01_2021年上半期 AWS IoT サービスアップデート
Amazon Web Services Japan
PDF
Ivsctonightandday2016winter moringsession awsreinvent2016recap
Tadashi Okazaki
PDF
20130319勉強会
Akira Yoshiyama
PDF
Osc2009 Do Xen Hara
Kazuhisa Hara
PDF
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
PDF
IOS/IOS-XE 運用管理機能アップデート
シスコシステムズ合同会社
PPTX
20170804 IOS/IOS-XE運用管理機能アップデート
Kazumasa Ikuta
PDF
OpenStack on OpenStack with CI
kanabuchi
PDF
もしCloudStackのKVMホストでPCIパススルーできるようになったら
Takuma Nakajima
OpenStack 2014.1 (Icehouse Release)
Akira Yoshiyama
BHyVe: The BSD Hypervisor
Takuya ASADA
第12回CloudStackユーザ会_ApacheCloudStack最新情報
Midori Oge
VIRLとPyATSで実現するネットワークCI
tetsusat
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
Takahiro Shinagawa
2015-11-26 BitVisor Summit 4(公開版)
Takahiro Shinagawa
BitVisor Summit 2 「BitVisorの現状と今後」
Takahiro Shinagawa
BitVisor Summit 3 「BitVisorの現状と今後」
Takahiro Shinagawa
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
IIJ
01_2021年上半期 AWS IoT サービスアップデート
Amazon Web Services Japan
Ivsctonightandday2016winter moringsession awsreinvent2016recap
Tadashi Okazaki
20130319勉強会
Akira Yoshiyama
Osc2009 Do Xen Hara
Kazuhisa Hara
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
IOS/IOS-XE 運用管理機能アップデート
シスコシステムズ合同会社
20170804 IOS/IOS-XE運用管理機能アップデート
Kazumasa Ikuta
OpenStack on OpenStack with CI
kanabuchi
もしCloudStackのKVMホストでPCIパススルーできるようになったら
Takuma Nakajima
Ad
More from BitVisor
(7)
PDF
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor
PDF
BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor
PDF
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor
PDF
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
BitVisor
PDF
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
BitVisor
PDF
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
BitVisor
PDF
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
BitVisor
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor
BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor
BitVisor Summit 7「8. ベアメタルクラウドにおけるハードウェア保護に関する研究 & Advent Calendar について」
BitVisor
BitVisor Summit 7「5. CTFVisor: BitVisorによるCTF作問・出題支援」
BitVisor
BitVisor Summit 7「4. BitVisorによるOSの見かけ上10倍速実行」
BitVisor
BitVisor Summit 7「3. Interesting Issues During NVMe Driver Development」
BitVisor
Ad
BitVisor Summit 12「BitVisor 2023年から2024年3 月の主な変更点」
1.
榮樂 英樹 株式会社イーゲル 2024-03-29 BitVisor
Summit 12 BitVisor 2023年から2024年3 月の主な変更点 1
2.
2 BitVisor 2023年から2024年3月 の主な変更点 Network –
WireGuard対応 – TLS対応 – lwIPアップデート – バグ修正 Core – EPT/NP 1GiBページ対応 – 新CPU対応 – QEMU+Linux KVM対応 追加ファイル/API – .clang-format – ドキュメント – MAX, MIN – 乱数 – クイックソート – Unix epoch time その他 – コード整理と改良 – バグ修正
3.
3 Network: WireGuard (VPN)
対応 https://github.com/smartalock/wireguard-lwip を取り込んだ make config: WIREGUARD=1 defconfig/bitvisor.conf: config.wg.*にWireGuardの設定、さらに TCP/IPスタックを有効化 テスト用echoサーバー・クライアントの他、telnet_dbgshも動作 する ゲスト通信を強制的にWireGuardトンネルに流すモード defconfig/bitvisor.conf: net=ipwggos, config.wg_gos.*にゲストにDHCPで返すアドレス 等を設定
4.
4 Network: TLS対応 https://github.com/Mbed-TLS/mbedtls を取り込んだ make config:
TLS=1 defconfig/bitvisor.conf: config.tls.*に証明書の設定 TLS通信使用例として、テスト用echoサーバー・クラ イアントにTLS対応版を追加した
5.
5 Network: lwIPアップデート 2.0.3から2.1.3にアップデートした
6.
6 Network: バグ修正 テスト用echoクライアントのメモリーリーク修正 AQC107 10GbE:
送信リングバッファーのwrappingバ グ修正 大量のパケットをまとめて送信した時に、リングバッファーのサイズマ イナス1しか入れられないところ、サイズちょうどまで入れてしまって いた virtio-netの割り込み抑制のレースコンディションを修 正
7.
7 Core: EPT/NP 1GiBページ対応
背景: EPT/NPのテーブルサイズが大きい! 大きかった原因: CPUごとにテーブルを作るため数が増える (特にCPU数が多い場合) 2MiBページのため1GiBごとに4KiBのテーブルひとつ分を消費する (特にRAM容量が大き い場合) 検討した対応策: CPU間でテーブルを共有する - TLBシュートダウンがネック 1GiBページに対応してテーブルを減らす 実装した対応策: 1GiBページ対応 MMIOフックへの影響を最小限にするため、4GiB以上のアドレス、かつ、RAM領域に限る
8.
8 Core: 新CPU対応 5-level paging
(LA57) 今は使われると困るので、とりあえず隠蔽による対応とした tpause, umonitor and umwait (WAITPKG) 対応 VT-xのゲストでは、VMCSで明示的に許可されていないと使用できない ので、許可するようにした Linux KVM上では、直接はWAITPKGが使えても、nested virtualization のVMCSには許可設定できない構成となっていることがあるため、その ような場合はWAITPKGを隠蔽する
9.
9 Core: QEMU+Linux KVM対応 (1/2) BIOSのPIOによるATAストレージ読み取りエラー回避策 Debianが使用しているSeaBIOSが、DMAを使わない設定となっているため
(Debian bug #934134)、INS命令によるATAストレージ読み取りが行われる INS命令のメモリー書き込みがEPT violationになると、読み取り内容が失われてしま うため、ストレージ読み取りエラーが発生する 回避のため、先頭1MiBをマップした状態で起動するようにした xHCI para pass-through driverの修正 レジスターアクセスのビット幅がコンパイラー最適化で変わってしまうことがない ようにした Run/Stopをセットする際に一時的にEvent Ring Dequeue Pointerレジスターが不正 な値になっていたのを修正した
10.
10 Core: QEMU+Linux KVM対応 (2/2) Local
APICのフック 以前のLinux KVMはVT-xのwait-for-SIPIステートに対応していなかった (Linux 5.11より前) BitVisorに、wait-for-SIPIステートの対応チェックと、未対応の場合のエ ミュレーションを実装した ● SVM環境では以前からエミュレーションのため同じものを利用している Local APICをパススルーにしてenable_apicv=Y (デフォルト) のLinux KVMを使うと依然として問題が発生するため、その回避用にLocal APIC を常にパススルーにしない設定を追加した ● config.vmm.localapic_intercept=1で有効
11.
11 追加ファイル/API: .clang-format clang-formatバージョン15以降で使える書式ファイル バージョン14ではasmの書式がおかしくなる コード全体に適用するのではなく、追加部分に適用の上、必要 に応じて手で微調整をするか、差分を見て書式ミスがないかを チェックする使い方を想定している 追加部分に適用: hg
diff | clang-format-diff-15 -ip1 差分を見る: hg diff | clang-format-diff-15 -p1 例えば、下のように桁の位置を合わせて見やすくするための追加のスペースは、削 除されてしまうことがある func (foo, 5); func (foo, 10);
12.
12 追加ファイル/API: ドキュメント docsディレクトリにMarkdownで簡単なドキュメントを置くようにした
現状 getting_started.md - 最初に試す時の説明 driver_guide.md - PCI para pass-through driverの書き方 Mbed-TLS.md - TLS設定方法 wireguard.md - WireGuard設定方法 wireguard_guest_os.md - ゲスト通信を強制的にWireGuardトンネルに流すモードの設定方法 今後の目標: バージョン1.1のマニュアル (2010年12月) の内容を網羅で きると嬉しい
13.
13 追加ファイル/API: MAX, MIN #include
<common.h> MAX(a, b) MIN(a, b) よく出てきがちな大小比較をマクロにした storage実装でのみ使われていたmin関数 (int型用、なぜ かstring.hに存在していた) を削除し、代わりに導入し たもの
14.
14 追加ファイル/API: 乱数 #include <core/random.h> unsigned
int random_num_hw (unsigned int retry_times, unsigned int *out_num); ハードウェアの乱数生成器 (RDRAND命令) を用いた乱数取得 1が返されると*out_numに返された値が有効、0は無効 unsigned int random_num_sw (void); 簡単な疑似乱数
15.
15 追加ファイル/API: クイックソート #include <core/qsort.h> void qsort
(void *base, size_t nmemb, size_t size, int (*cmp) (const void *, const void *)); 標準Cライブラリーのqsort相当 initfuncのソートがバブルソートのようなものだったの を置き換えたのと、新たにメモリーマップのソートを するのに使用
16.
16 追加ファイル/API: Unix epoch time #include
<core/time.h> void get_epoch_time (long long *second, int *microsecond); 起動時に現在時刻を取得し、そこからの経過時間を足 して現在のUnix epoch timeとして返す 経過時間は既存のget_time()を使用しているため、ゲストの動作によっ てはズレることがある WireGuard, TLSとSQLiteで使用
17.
17 その他: コード整理と改良 (1/2)
x86依存部分の分離 使われていなかったMAP_UEFI_MMIOを削除 gmm_pass: 不必要なincludeを削除、他から使われていない関数をstaticに 変更 timer: 処理を整理しコメントを追加、メモリー書き込み回数を削減 リンク時の警告requires executable stackを抑制 (-Wa,--noexecstackオプション) tools/log: 新しいバージョンのLinuxに対応 time: TSC周波数をCPUIDで取得できる場合はそれを使うように変更 (起動 時間0.6秒短縮・時刻情報の精度向上)
18.
18 その他: コード整理と改良 (2/2) EPT/NP:
処理を整理しcur_moveの呼び出し回数を削減した VT-x: INVEPT命令を必要時のみ使うように改良した VT-x: CR0のPEとPGビットの変更に伴うVM Exitを減らした VT-x nested virtualization ゲストがVPIDを使えるようにした TLBフラッシュを必要時のみ行うようにした make compile_commands.jsonに対応した clangd用
19.
19 その他: バグ修正 (1/7) uhci,
ehci, xhci: ファームウェアドライバー切り離し ACPI: RESET_REG_SUPの確認 RESET_REGが使えない環境は見たことがないため気づかなかったが、使えない環境が あり得る boot/uefi-loader-login: module2.binサイズ 64KiBまでだったのを1MiBまでに増やした 1MiBちょうどの場合は続きがある可能性があるのでエラーとした CPUID 0x40000000 - 0x4FFFFFFFの隠し方を修正 仮想マシンに使われるCPUID 0を返すのではなく、highest basic information leafを返す
20.
20 その他: バグ修正 (2/7) crypto:
LONG_MIN, LONG_MAXとULONG_MAXを修正 32ビット用の値に固定されていた 並列ビルド時のSQLiteビルドエラーを修正 vmmcall_log: 古いmapmem_gphysが残っていてビルドエラーになっ ていたのを修正 NMIのIRET命令によるブロック解除のバグを修正 IRET命令でEPT violationやページフォールトの際はIRETを再実行するためNMIブロック設 定 IRET命令エミュレーションの時にブロック解除 NVMe暗号化のレースコンディション修正
21.
21 その他: バグ修正 (3/7) Start-up
IPI (SIPI) の取りこぼし (1) 問題 Wait-for-SIPIステートでなければSIPIは失われる UEFI環境では、ゲストが最初にINITを送る時にVMMがAPを開始するが、 APがwait-for-SIPIステートに入る前にBSPのゲストが再開してSIPIを 送ってしまい、取りこぼすケースがあった (macOS 13で発生) BSP VM ───┐ ┌─┬─────── BSP VMM └─┬───┘ │ . │ ┊ AP VM │ ┊ ╒═════ AP VMM └───────┘ BSP VM INIT BSP VMM SIPI . AP VM AP VMM Wait-for-SIPI ・ ───────────────→ (時間)
22.
22 その他: バグ修正 (4/7) Start-up
IPI (SIPI) の取りこぼし (1) 対策 Wait-for-SIPIステートに入るVMLAUNCHまでBSPが待つ実装を追加し た 厳密にはVMLAUNCHを実行して実際にステートに入るまで待たないと いけないが、実装はVMLAUNCHの直前まで待つもので、実用上は問題 ない見込み BSP VM ───┐ ┌─┬─────── BSP VMM └─┬───╍╍╍╍╍┘ │ . │ │ AP VM │ ╒══╡ ┌─── AP VMM └───────┘ └───┘ BSP VM INIT 待ち BSP VMM SIPI . AP VM AP VMM ・ ───────────────→ (時間)
23.
23 その他: バグ修正 (5/7) Start-up
IPI (SIPI) の取りこぼし (2) 問題 AP開始済みの状態で、INITを受けてからwait-for-SIPIステートに入るま でに時間がかかりすぎて取りこぼすケースが、特にnested virtualization で見られた BSP VM ───┬─────┬──────── . │ │ . │ ┊ AP VM ───┤ ┊ ╒══════ AP VMM └───────┘ BSP VM . INIT SIPI . AP VM AP VMM Wait-for-SIPI ・ ───────────────→ (時間)
24.
24 その他: バグ修正 (6/7) Start-up
IPI (SIPI) の取りこぼし (2) 対策 INITを受けたらなるべく早くwait-for-SIPIステートに入るようにした 特にLinux KVMではステートだけでも先にVMWRITEしておくと失われ なくなるようだ BSP VM ───┬─────┬──────── . │ │ . │ │ AP VM ───┤ ╒═══╡ ┌──── AP VMM └─┘ └───┘ BSP VM . INIT SIPI . AP VM AP VMM ・ ───────────────→ (時間)
25.
25 その他: バグ修正 (7/7) Wait-for-SIPIステートにおける割り込みの問題を修正 a)VT-xで、wait-for-SIPIステートに入る時にまだ割り込みのイベントデリバ リーが残っていると、VM
entry failure panicとなる問題 b)VT-xで、wait-for-SIPIステートに入る直前にNMIが発生すると、割り込みの イベントデリバリーを設定してしまう問題 c)Wait-for-SIPIのエミュレーション (SVMの場合、または、VT-xで config.vmm.localapic_intercept=1またはwait-for-SIPIに対応していない場合) の間にNMIが発生すると、SIPIの直後にNMIを発生させてしまう問題 . . │ │ . │ │ AP VM ───┤ ╒═══╡ ┌──── AP VMM └─┘ └───┘ . INIT SIPI . AP VM AP VMM ・ ───────────→ (時間) c)NMIが発生 a), b) panic c)NMIを発生 b)NMIが発生
26.
26 今後の予定 Aarch64対応 make config改良 Nested virtualization改良 3.0リリース
27.
27 BitVisor 2023年から2024年3月 の主な変更点 Network –
WireGuard対応 – TLS対応 – lwIPアップデート – バグ修正 Core – EPT/NP 1GiBページ対応 – 新CPU対応 – QEMU+Linux KVM対応 追加ファイル/API – .clang-format – ドキュメント – MAX, MIN – 乱数 – クイックソート – Unix epoch time その他 – コード整理と改良 – バグ修正 最新リポジトリ http://bitvisor.sf.net
Download