- http://www.bitvisor.org/summit6
- https://bitvisor.connpass.com/event/72543/
- https://connpass.com/event/72816/
- https://togetter.com/li/1178420
京王線から南武線への乗り換えは久し振りだなぁ。余裕みすぎて9:15くらいに武蔵中原についた。
駅を出てぱっと目に入る富士通川崎工場の方にいってしまった。しまった。
入口の守衛さんから事前登録しておいた名前でゲストカードをもらって入館。
開錠はしっかり電源確保されていた。うれしい。ロビーに設置された無線LANは会場まで届かず残念。
[2017-12-05 09:59]
会場案内
[2017-12-05 10:02]
「BitVisorの現状と今後」 / 品川 高廣(東京大学)
10:00-10:30(30分) 本発表では、最新のBitVisorに関する情報や、東京大学で運用しているvThriiの 運用状況についてお話します。
- https://www.slideshare.net/shinagawa/20171204-bitvisor-summit-6-bitvisor
- 今年も濃い話があつまった。
- 未踏でbitvisorをやってる木村さんを招待講演
- 発表者の層が拡がってきた
- 参加登録者が増えてきた(初回なみ) connpassつかったためか新しい人が増えたっぽい
- BitVisorとは: A Single-VM Lightweight Hypervisor
- BitVisorは小さいのでセキュリティ的に有利 (KVMとかと比べて)
- 準パススルー型 (一部だけフック(デバイスメディエータ)する以外はパススルー)
- 2006年に開始、2009年にver1.0を公開。
- BitVisor2.0の機能はもう榮樂さんしかわからない。。。
- 東大での実運用 vThrii
- 安定稼働している
- MacのうえでMacOSとWindowsがうごいている
- ローカルディスクの内容をアップデートしたい
- ネットワークブートしつつ裏でHDDを更新できるので待たなくてもよい。
- いちおう(ネットワークブートは重いので)夜間に月1で差分配信、4ヶ月に1回フル配信
- 実はイメージをつくるのが大変。
- イメージの切り戻し(rollback)はvThriiの標準機能
- イメージをつくるときにIPをDHCPにするのを忘れて固定IPで配信してvThriiも使えなくなってインストールしなおし。
- vThrii自体のアップデート macOSをアップデートしたらVT-d のアドレス変換のためで vThriiの対応が必要になった
- パーティションサイズの変更
- SSD 250GB くらいしかないのでソフトをインストールしてたら空きが足りなくなったので TMP領域を縮小した
- vThriiは安定している
- 品川研究室での活動
- 査読つき論文2本
- BMCArmor ベアメタルクラウドへの攻撃 不揮発性メモリを破壊/ウイルス感染される恐れ 不揮発性メモリの書き込みだけ準パススルーにすることで性能劣化を最小限におさえる。
- Unified Hardware Abstraction Layer ... デバイスごとOSごとにデバイスドライバ書くのがたいへん virtioで統一したインタフェースを提供 Device Masqueradeで多様なデバイスに対応
- VMMの若返り
- VMMもメモリリークで性能が低下する(aging) -> とりあえずリブート
- VMMを再起動しても上のVMは再起動したくない
- TinyVisorでnested VMM。VMMを一時VMMにマイグレーションしてメインVMMを更新。
- ベアメタルマイグレーション VMのマイグレーションはメモリ状態なのでマイグレーションは簡単 なんとかしてハードウェアの情報をマイグレーションする
- 査読つき論文2本
- BitVisor論文(VEE'09)のインパクト わりとインパクトがある google scalarで199件の参照数はなかなか
- 今後の課題 無線LAN(メンドクサイ) ドキュメンテーション(榮樂さんがいろいろ書いてるのをまとめるとか)
[2017-12-05 10:33]
<招待講演> 「BitVisorをベースとしたカーネル解析プラットフォーム」 / 木村 廉(神戸大学)
10:30-11:10(40分) 近年統合開発環境を始めとする多様なソフトウェア開発プラットフォームの登場 により、デバッグやテストといった作業は従来とは比較にならないほど高効率化 されている。しかし一方でデバイスドライバといったカーネルソフトウェア開発 においては、開発支援ツールが充実しておらず古典的なデバッグ手法を取らざる 得ないケースも多い。 そこでBiVisorをベースとしたカーネルトレーサー、デバッ ガを提案する。 本システムではデバッグ対象のカーネルプログラムをBitVisor 上で動作させながらトレースし、それを元にデバッガで詳細な動きを追う事がで きる。これによりカーネルソフトウェアのデバッグ効率を圧倒的に向上させ、早 期のバグ発見を支援する。 また既存のデバイスドライバの解析、脆弱性やバグ の発見にも利用できる事を示す。
[2017-12-05 10:35]
- Kernel Anylysis Platform based on Thin Hypervisor / @RKX1209
- https://speakerdeck.com/rkx1209/kernel-analysis-platform-based-on-thin-hypervisor
- 背景
- Thin hypervisor ゲストシステムの監視を目的として軽量なhypervisor
- sandobx, TCB削減, resource isolationの手間を省く.
- カーネルの解析 静的なコード検証(linux driver verifier), エージェントをしこんでのIn-VMな動的解析, エミュレータやハイパーバイザーをつかったOut-of-VM
- カーネルDBI (dynamic binary instrumentation for kernel)
- 動的に検査コードをいれる メモリを監視したいならload/store命令の前後にコールバックをいれたり
- 評価指標: performance concurrency reentrancy(監視コードがカーネルコードを使う場合) consistency(対象と解析データ整合性) availability(解析対象のバージョンに対する安定性)
- drk いまのところいちばんよくできている In-kernel
- Thin hypervisor ゲストシステムの監視を目的として軽量なhypervisor
- kltracer: drkがkernel moduleだったのをVMM内にもってきて reentrancy向上 availability向上(複数linux version対応)
- カーネルコードを実行するときだけ動的バイナリ変換(DBT)する
- 設計/実装
- システムコール(syscall/ssyenter) MSRかきかえてスタブにとばす
- 割り込み IDTRをかきかえ
- 例外処理 コールゲートをかきかえ
- コードブロック(ベーシックブロック)をコピーして検査コードをついか
- プラグインでコールバックを実装する(C++) 関連ライブラリはC++に移植した (実は未踏で時間があまったので。。)
- static linkされる (ring -1でうごくダイナミックリンカはまだ存在しない。。)
- Itanium ABIにしたがって実装 なぜかstd::mapをつかうとフリーズするバグが..
- kltraceビルドシステム DBIエンジン・プラグイン・C++ライブラリ bareflankプロジェクトをベースに開発
- 応用
- timeless debugging すべての命令実行をトレースして記録 逆実行もできる qira(キーラ)がリファレンス実行
- timeless debugging for kernel qemu -> kltracer lwipでリモートでみることもできる
- 今後の課題
- BitVisor for ARM? (組み込み業界向け)
[2017-12-05 11:06]
- Q: MSR/IDTRにスタブをいれている理由は? exception bitを設定するとvmexitできて早くなるのでは?
- A: それは知見ですね
- Q: FJ: kltracerつかいたい
- A: どこかのカンファレンスに出すタイミングで公開したい
- Q: クローズドなソフトなデバッグに便利そう (ソースがあればKGDBでなんとかなりそうだし)
- A: ですね
- Q: nested VMでhypervisorのデバッグにつかえるか?
- A: たぶん kltracer のフックにひっかからないけど、対応できるんじゃないかと
- Q: ARM対応のモチベーションはどのくらい?
- A: splatoonにあきたら。。。 今30%くらい
[2017-12-05 11:14]
[2017-12-05 11:16]
「BitVisor 2017年の主な変更点」 / 榮樂 英樹(株式会社イーゲル)
11:10-11:40(30分) 2017年は、大規模PC環境向けOS配信管理ソリューションの開発に伴い、BitVisor に含まれていた細かい問題が修正されています。その修正には、UEFI用ブートロー ダーの改良、PCI configuration spaceアクセスの改良、一部環境で発生する問 題への対応などが含まれます。これらの変更内容について紹介します。
- https://www.bitvisor.org/summit6/slides/bitvisor-summit-6-3-eiraku.pdf
- ファームウェアドライバー切断機能 UEFIがデバイスをつかっていることがあるので一度来ってvirtioにきりかえ
- UEFIブートローダ改良 パスワード認証 暗号化は未対応
- PCI configuration spaceアクセス改良
- Broadcom Thunderbolt Ethernet対応 macOSではPCIeブリッジのバスをいじっていた Windowsでは内蔵etherで対応済だった
- デバッグ機能改良 dbgsh-uefi ieee1394logにリトライ機能追加
- 一部環境での問題に対応 macOSでVT-dをつかっているのはどうやらアクセス制限するのにつかっているだけのようだ
- バグ修正
- コンパイル問題修正
- 未解決問題
- ACPIの解釈でいちぶ問題 ACPIを切ると回避できる
[2017-12-05 11:42]
- Q: IOMMUをつかってbitvisorを保護するときに4GB以上のメモリをもっていると動かない
- A: パッチ歓迎
- Q: vThriiにも入る?
- A: 基本的にはメンテコストをかけたくないので入るとおもう(というかすでに入っているとおもう) 一部のハック以外は。
[2017-12-05 11:46]
11:40-13:00 昼休み(80分)
駅ビルのマックで昼食。時間があまっていたのでQBハウス散髪。20分待ち。
「Implementation and Status of 'mruby in BitVisor'」 / 中田 裕貴(公立はこだて未来大学)
13:00-13:30(30分) 現在のBitVisorでデバイスI/O監視などの機能を実装する場合,主にC言語でプロ グラミングする必要があります.抽象度の高いオブジェクト指向スクリプト言語 をBitVisorの機能実装に使えるようすることを目指して,mrubyコンパイラと仮 想マシンをBitVisorへ組み込みました.本発表では,BitVisorへのmruby組み込 みの際に遭遇した課題とその解決法について紹介します.また,Rubyスクリプト によるデバイスI/O監視の実装例を示し,BitVisorにおける Ruby言語仕様の有効 性について議論したいと思っています.
[2017-12-05 13:00]
中田さんはB2で授業を休めないため松原さん発表
@chikuwa_IT
- https://speakerdeck.com/chikuwait/implementation-and-status-of-mruby-in-bitvisor
- ハードウェアのプログラマグル化がすすんでいる SDN/ホワイトボックススイッチ/FPGAエクストリームコンピューティング
- 組み込み用言語フレームワーク lua ELC micropython mrubyなど
- なぜmrubyなのか? ruby大好きだから。
- 技術的課題
- libc, float, bitvisor API, mrib, mrbgem
- libc
- コンパイルしてみてないものを移植していく。(コンパクトなlibcをまるごと移植するのではなく)
- mrb_allocate() BitVisor用意する
- float
- DISABLE_FLOATを指定しても完全には排除されず
- とりあえず dummy のを用意 #define pow(x) (x)
- やっぱりひどいので berkeley SofFloat をつかった
- MRB_WIthout_FLOAT でできるようになった。
- API
- mrb_define_class_methodで呼べるようにラッピング
- mirb
- dbgsh経由でmirbにつながっている
- mrbgem
- 正規表現 mruby-pcre-regexp を移植
- とりあえずうごいている。
- mirbデモ
- 出力はログにでるのがちょっと残念
- TODO
- 任意のmrubyのコードがBitVisorで動くのはいやなので、mruby VMを別プロセスにしたい。
[2017-12-05 13:21]
QA
[2017-12-05 13:24]
「BitVisorに「移植」する」 / 市川 遼(東京農工大学)
13:30-14:00(30分) BitVisorにLuaの処理系を移植し,LuaからBitVisorの機能を呼び出せるようにす ることでそのインターフェースを提供する仕組み「LVisor」を提案した.その際, libcだけでなくGLibなど外部のライブラリを移植する必要が生じ,大量に修正作 業が発生した.本発表ではLVisorの実装方法を通じて,BitVisorに新しくプログ ラムを移植する汎用的な方法について説明する.
[2017-12-05 13:26]
@icchyr
- LVisorの背景
- 複雑な記述ができる
- evalで動的にプログラムを追加
- VMMに動的機能追加
- VMI(Virtual Machine Introspection)があるとうれしい
- Luaの特徴
- 依存ライブラリがすくないとか
- Luaはプロトタイプベースなので動的にメソッド追加
- 実装方針 できるだけ Ring 0 ではうごかさないようにする。Luaを移植してからLibVMIを移植。
- Luaのビルドシステムは単純なので移植がらく
- 既存のlibc musl libcを移植した (eglibc, uClibc, newlib, musl libc)
- stdout: __fwritex()をputcharで実装
- stdin: 対応せず
- LibVMIの移植
- Glib,json-cにも依存
- Xenをベースにdriverを実装
- jsonが3MBと大きいのでtextに埋め込む方法はなんとかしたい(ファイルシステムがあつかえないので)
- デモ
[2017-12-05 13:54]
- Q: LibVMIをつかうのが目的だがLuaはなぜ必要なのか?
- A: Luaをつかうことで複雑なことが書けるようになる
- Q: BitVisorでつかう目的は?
- A: パフォーマンスと現場で利用するには便利
- Q: /tmpの例は timeobject timeuse問題があるのでは?
- A: おっしゃるとおり
- Q: Luaの新バージョンに追従するコストは?
- A: musl libcでの対処がほとんどなので lua の改造コストはbitvisorのAPIをたたくところだけで少ない。
- Q: libcを公開してくれるとうれしいけど、そうなるとBitVisorがOS化してしまうジレンマ
[2017-12-05 14:00]
「BPFを利用したBitVisor内部でのパケットフィルタリング」 / 味曽野 雅史(東京大学)
14:00-14:20(20分) ハイパーバイザ内でパケットフィルタリングを実行することで,ゲストOSによら ない,強制的なフィルタリング可能になります.動的な設定変更が可能でかつ軽 量・安全なフィルタリングを実現するために今回BitVisorとBerkeley Packet Filter (BPF) を組み合わせたフィルタリングシステムを作成しました.本発表 では,その技術詳細と応用例に関してお話しします.
[2017-12-05 14:01]
- https://speakerdeck.com/mmisono/bpfwoli-yong-sitabitvisornei-bu-defalsepaketutohuirutaringu-plus-a
- intermediate bufferをつネットワークAPIがある
- BitVisorがshadow descriptorとshadow bufferをもっているのでpass moduleでフィルタしたらよい
- BPFをつかう理由: 効率 JIT 十分な記述力 負方向のジャンプがない 検証が容易
- classic BPF(cBPF; libpcap), extended BPF(eBPF; linuxでつかわれている; clang)
- eBPFだとCで書ける
- BPFプログラムの設定方法: VMcall, lwIP.
- 1GbE
- thruputは差が出ず
- ping RTTはbaremetalとippassで差はあるがフィルタかけても悪化はしない。
- eBPF Tracing in BitVisor
- VMexit reasonの統計をとったりMMIOのアドレスの統計をとったり
- デモ
[2017-12-05 14:20]
- Q: 利用予定は? eBPFのコードをring -1になげこめるのは問題になるとおもう。jit spray
- A: 利用予定はない。 検証はやろうとおもえばできる。
- Q: 外部の関数を呼べるようになったらBPFはLua/mrubyになっちゃう?
- A: 安全な外部関数しかよべないようにするのがふつう。
- Q: VMexitでとれる情報は?
- A: BitVisorからBPFに渡す引数しだい(基本的にはBPFでは引数しかみられない)
[2017-12-05 14:26]
14:20-14:40 休憩(20分)
「大学の教育研究用端末上でのベアメタルハイパバイザの運用」 / 大山 恵弘(筑波大学)
14:40-15:10(30分) 筑波大学が全学の教育研究用に提供している計算機システム(全学計算機システ ム)では,学内の16拠点に配置された1000台以上の端末でBitVisorベースのベア メタルハイパバイザであるvThriiが稼働している.本発表では全学計算機システ ムの概要,および,全学計算機システムの導入や運用で得られた経験について述 べる.
[2017-12-05 14:45]
- https://www.bitvisor.org/summit6/slides/bitvisor-summit-6-7-oyama.pdf
- 全学計算機システム 筑波大学全学の教育等(not 研究)のために提供されるシステム
- 1000台以上の端末でvThriiが動いている
- 筑波大学には31サテライトもある
- OSのデュアルブート Win 10 Enterprise or Ubuntu
- vThriiの採用動機
- winとlinuxのデュアルブート・価格もそこそこ・性能もそこそこ・東大で実績
- ネガティブな理由もない
- 学園祭の広告に vThrii がでてた。だれ向け?
- windowsは電源をいれて90秒でワードが起動する。linuxは60秒。初回ログインは10分たってもログインできないということも。
- ユーザのプロファイル情報をとってくるのに時間がかかっている
- 起動できなかったりフリーズしたらvProで再起動。だめならケーブルチェック。それでもだめならハード故障としてエスカレーション。
- vThriiがはいることで障害の原因候補が1つふえるが、一般ユーザはWindowsを疑う(vThiiの知名度のひくさと存在感のなさ)。
- 性能・互換性は導入前に評価した
- ubuntuでUnixBench -> vThriiのオーバヘッドは0.1GHzくらいの差でしかない
- Paranoid fish (Pafish)などでVM検出をこころみたが、ほとんどで実機と判定された。
[2017-12-05 15:11]
- Q: (情報系の人は実は教育計算機はつかわないのですが)virtioはつかってない?
- A: virtioになってる (NICは2このってるけど1つはvPro用になっている)
- Q: 障害の統計(障害理由とか)はとっているか? 他大学での更改での参考になる。
- A: とってない。スタッフの間では暗黙知がたまっているとおもうので報告したい。
- Q: (ユーザは1,2年の共用課程)BitVisorならではの機能はあるか?
- A: hypervisorがあることでのメリットがあるといいかも。一時的に実験用のOSを配るとか、いいかもしれない。
- Q: 24時間稼働のところでwindows updateはどうなる? アンチウィルスは?
- A: 端末ではwindows updateがうごかないようにして、vThriiでイメージを配布している。 アンチウィルスも週1でしか更新してないのでログインすると警告がでる。。。
- Q: イメージは1種類?
- A: 1種類。配信サーバは複数用意している。正確には図書館用のイメージが別途あったりする。long terml service branch(LTSB)をつかっているのでedgeはつかえない。
- vThriiが起動しなかったときは都度イーゲル社に報告しているが、原因判明にはいたらず。
[2017-12-05 15:24]
[2017-12-05 15:26]
「Unsafe Nested Virtualization on Intel CPU」 / 深井貴明(筑波大学)
15:10-15:40(30分) Unsafe Nested Virtualization は,仮想化支援機能を用いる VMM をBitVisor 上で動作させる機能です.通常の Nested Virtualization と異なり,ゲスト VMM に悪意がないことを前提に様々なエミュレーション処理を省き,比較的シン プルな実装になっています.この機能はこれまで AMD CPU にのみ対応していま したが,現在 Intel CPU への対応を進めています.発表では,Intel 対応にお ける実装の詳細,現在の対応状況,および簡単な性能評価の結果について説明し ます.
- https://www.slideshare.net/DeepTokikane/unsafe-nested-virtualization-on-intel-cpu-83409391
- L2 VM / L1 VMM / L0 VMM
- L1にfull emulationのをもってくれば動くのはあたりまえ。仮想化支援で速度向上したい。
- L2->L1にvmentryしたいときでもL0を経由している。
- L1を信用してL0ではアドレス変換しない。
- BitVisorはnon GPU(BSDライセンス)なはじめてのnested VMM。 bhyveはBSDライセンスだがnestedがうごかない。
- 榮樂さんがAMD版(AMD-V)のnested VMMをつくったが、手間がかかるIntel版(VT-x)はあとまわしになっていた。
- intel版はVMX命令が多い。
- vCPUのマイグレーション 物理コアでキャッシュしているVMCSをVMCLEARしてメモリに吐かないといけない。
[2017-12-05 15:49]
- Q: VMCSはふつうのキャッシュ?
- A: VMCS専用のキャッシュ
- BitVisor Advent Calendar 2017 がBitVisorのドキュメントになるので、みんな埋めてほしい。
- ぎりぎりまで空けとくと、神が降臨して知らなかった情報が書き込まれるという。。。
- VMCS shadowingはVMREAD/VMWRITEの肩代わりをしてくれるものらしい。
[2017-12-05 16:00]
「Introducing NVMe driver for BitVisor」 / Ake Koomsin(IGEL Co.,Ltd)
15:40-16:00(20分) In this presentation, we will talk about an overview of NVMe driver implementation for BitVisor.
[2017-12-05 16:02]
(in English)(英語ききとり能力ゼロのため、発表はさっぱりわからずorz)
- https://www.bitvisor.org/summit6/slides/bitvisor-summit-6-9-ake.pdf
- admin queues と I/O queues がある。それぞれに submission queueとcompletion queueがある。
- submissonQのtailに書いたらdoorbellたたいて、コントローラがheadから処理してcompletionQに書いて割り込みいれてホストが処理したらdoorbellたたいてhead更新、というながれっぽい。
[2017-12-05 16:19]
(QA in English...)
[2017-12-05 16:23]
ライトニングトーク(LT) 16:00-17:30
「自作OSもくもく会の紹介」 / cybozu 内田
[2017-12-05 16:28]
@uchan_nos
- 低レイヤーの勉強会
- もくもくとコード書くとか本を読むとか、相談したり
[2017-12-05 16:31]
[2017-12-05 16:32]
学会のの宣伝 / 産総研 秋山
- Euro Sys
- non-volatile memory
[2017-12-05 16:33]
[2017-12-05 16:35]
nested vm デモ / 深井
BIOSのプライマリを外部画面にしておくとgrabの画面が出せるらしい
bitvisor上でKVMがうごく
bitvisor上でVMware playerがうごく
[2017-12-05 16:42]
- Q: 出荷しないならL0 VMMがBSDライセンスにこだわらなくてもよいのでは?
- A: 神経質になるならクリーンルーム開発でGPLのコードを参照できないので、あった方がよい。
デモ
- L0のBitVisorがうごいているのを確かめる方法がない。
- dbgshはL1のがうごいているはず。
- VMM 3段はむりだった。
フリーディスカッション
[2017-12-05 16:53]
自己紹介タイム
[2017-12-05 17:20]
クロージング
[2017-12-05 17:22]
懇親会@木村屋本店 武蔵中原
終了タイムは23:00ということだったが終電が気になるので22時くらいに先に抜けてきた。