- https://www.bitvisor.org/summit5/
- 日時: 2016-11-30 13:00〜18:00
- 会場: 法政大学 市ヶ谷キャンパス BT棟 26F スカイホール
- http://togetter.com/result/1054899
- http://qiita.com/deep_tkkn/items/aaa7a3553a7f8dd296fb
一ッ橋から靖国神社を抜け歩いて25分だった。
工事中で地上はごちゃごちゃしていたが、26階からはスカイツリーや新宿副都心がきれいにみえた(曇天だったけど)。
昼飯は地下1階の食堂で。まとまって座れそうな席が奥のほうにあったので座ったらドア から風が吹き込んでクソさむいし、外の喫煙場所からガスが流れこんでくるし、空いているのには理由があった。
受付はとくになし。
「BitVisorの現状と今後」 / 品川高廣
- 最近の動向
- 東大で実運用開始
- 1300台くらい
- ユーザ数25000
- 月1でイメージ配信をしている。夜に起動して配信。
- IPSJ-ONE 高校生向け宣伝
- CANONのプロビジョニングシステムで宣伝
- 資源管理をどうするか(端末管理)
- canon in campus device
- vThrii Seamless : networkboot, persistent cache, install, freeze, 差分配信, rollback,
- 東大で実運用開始
- 課題:
- nested VMができない・遅い。OSをインストールする演習があるので。
- ハード依存: ストレージ(NVMeは調査中), ネットワーク。
- 学術的成果
- デバイスドライバはハードウェアの故障(ビット反転など)を想定してない(しきれてない)。ポインタがこわれたら? fault-injectionでHW故障をおこす。
- ベアメタルクラウドで不揮発なものがあると困る(リブートでリセットできない)。NICとかファームウェアとか。MACアドレス書き換え防止。
- 分散フィルタリング。のっとられた(攻撃側)PCにbitvisorがはいっていれば攻撃パケ ットを止める。
- 今後の課題
- WLANとか。
- 筑波大にもvThriiが入る。
[2016-11-30 13:30]
「BitVisor 2016年の主な変更点」 / 榮樂英樹
- PCIeデバイスの割り込み:
- INTx: INTA,INTB,INTC,INTDをメッセージでエミュレーションl
- MSI: バス経由でメモリ書き込み
- virtio-netではIDやベースアドレスレジスタを偽装、わりこみはスルー。MSIを隠す。→INTxがでないPCがある→MSI対応するしか。MSIはvirtioの仕様がわからないのでMSI-X で。
- 性能改善
- thread
- spinlockにはfairness問題がある。lockfree版はまれにpanic。ticketlockは遅い。
- nested paging
- 2MiBページ
- mm_lockレースコンディション
- bitvisor 0.?くらい昔からのバグ。ページの状態繊維でlockしてないところがあった。
- UEFI アラインメントが途中から必須になってた。
- virio-netわりこみステータス
- thread
- iMAC SDカードリーダ対応: nicとsdがマルチファンクションになってたが,bitvisorが かくしすぎてた。
- EFI variableエラー
- intel最新CPU対応 x2APIC
- BitVisor 2.0
- unsafe nested virtualization
[2016-11-30 13:53]
- Q: ページテーブルつかいきったらクリアする処理はそのまま?(じょじょに差し替えるようにならない?)
- A: yes.
- Q: ばあたりすぎない?
- A: 。。。
- Q: 割り込み変換はドライバ発狂しなかった?
- A: エッジトリガなのか、たまたまうまくいっている。
[2016-11-30 13:57]
「Virtualize APIC accessによるAPICフック手法」 / 富田崇詠
- マルウェアの挙動の正確な解析が重要 → Alkanet
- 感染したメモリを経由してシステムコールが発行されたのかどうか判定したい。BTS(intelのBranch Trace Store)で関数の呼出階層を特定。
- BTSはバッファあふれの可能性 → バッファあふれのタイミングで割り込み発生、蓄積 する。
- LPIC LVT(Local Vector Table)を変更する必要があるがゲストOSにさわらせないようにするためAPICをフックする。
- bitvisor MMIOフック (EPT violationで)
- intel VT Virtualize APIC access (APICページアクセスでVM exit)
- 起動時間を比較してみた → 大差なし
- virtualize apic accessではVM Exitを減らすための機能がある(改善余地あり): TPR shadow, apic register virtualization.
- TPR: 割り込み優先度でマスクするときの閾値 (優先度 = ベクタ / 16)
- windows起動時の9割以上がTPR
- TPR shadowはまだ起動中にとまってしまう。
[2016-11-30 14:20]
- Q: shadow apicと物理apicのどっちでルーティングされる?
- A: ?
- Q: どうやって感染領域を知る?
- A: マルウェアを感染させるときに既知。
- Q: 非完成領域からのsysenterでもシステムコール自体を変えられてしまったらダメで は?
- A: ?
- Q: alkanetを回避する方法はある?
- A: しらず。
- Q: XPでも書き込み多い?だとするとshadowからリアルにも反映する必要があるので性 能はあまり改善されないのでは?
- A: 書き込みが多い。。。
[2016-11-30 14:36]
休憩10分
「xHCI Driver Implementation」 / Ake Koomsin
- ((おれの英語力0なので聞き取れず))
- MMIO registers: capability, operational, ex.capability, runtime, doorbell.
[2016-11-30 15:17]
- QA
[2016-11-30 15:28]
「TinyVisorを動作させる際に体験したエラーの共有,解説」 / 安岡亮輔
- tinyvisorはbitvisor summit 2で発表されたもの。
- tinyvisorを動かせる人が少ない。tinyvisorが動いたという報告は安岡が初めて。→ 増やして素人にやさしくしたい。
- 半年かかってtinyvisorがうごくようになった。ハード依存が激しいため?
- snprintf(buf, size, str) -Werror=format-string
- AMLパーサ(NetBSD由来のコード)でパニック → PCを変えてみた → やっぱり原因不明(傾向つかめず)
- 今後の予定: nested VM, tinyvisorの動的on/off, migration(VMMの動的update).
[2016-11-30 15:55]
- Q: tinyvisorのVM0とVM1はいまでも非対称?
- A: yes. VM1は補助的(機能制限がきつい) 上のVMM1が機能差を吸収してくれるのを期待。
- Q: やりはじめた動機は?
- A: VMMを動的にupdateするためにノード内マイグレーションをつかいたい。tinyvisor のon/off(パススルー)ができるとうれしい。
[2016-11-30 16:06]
10分休憩
「BitVisor内蔵のlwIPでAlkanetのログ送信を試みる」 / 山下雄也
- alkanet: アンチデバッグ機能のあるマルウェアでもスレッド単位で解析可能
- IEEE1394でログを転送している → ハードをえらぶため ethernet版alkanet を開発中
- UDP使用
- lwIP(lightweight IP): bitvisorに移植されている。
- VMMでip隠蔽するかしないかを選べる。TCPチューニング(MSS,sndbufなど)できる。
- 性能測定(nic=pro1000)
- tuning+ippassするとパフォーマンス向上
- ARPで解決するまでパケット待ちキューサイズが1pktに設定されているためARP解決前に2パケット以上送信しようとすると上書きされてしまう。 → tcp_connect()をつかう。
- UDPの場合はARP replyを待てるように改造するかqlenを伸ばすか。
[2016-11-30 16:38]
- Q: IEEE1394でのスピードは?
- A: 400Mbps。最新規格でも実測800Mbpsで頭打ち。
- Q: ログがおいつかないケースはあるか?
- A: 400Mbpsでおいつかないケースはるときいている。
- Q: アンチデバッグとは?
- A: VMCALLの反応をみるとわかる。ゲストがVMCALLをだしたらbitvisorは未定を返すよ うにする。時刻をみられるとわかっちゃうかも。
- Q: NIC増やすと速くなる?
- A: わからず。
- Q: 10Gは? etherフレーム生送信すればできる
- Q: syslogも送信できるようになっている。
- Q: IEEE1394
- A: メモリを直接読み書きしている
[2016-11-30 16:50]
「BitVisor と KVM の性能比較の落とし穴」 / 深井貴明
- BitVisorとKVMの性能比較時に陥いった問題の紹介
- sysbenchでKVMが1kBアクセスがやたら遅い
- タイマよみだしが頻発 → kvm-clockがおそかった。tscにするとはやくなった。
- KVMは最大メモリ量がわからないのでメモリサイズをどうしたらいいかtry&errになってしまう。
- KVM host64bit guest32bitだと 64bitの方がドライバやレジスタが多いなので速くなることも。
- turbostat
- processor.max_cstate=0にしてCステート下がらないようにしたらACPI idleが走って遅くなった。idle=pollが速い。oracleチューニング
- EPTバッファあふれ
- 割り込みが1CPUに集中してしまってもKVMが分散させてくれる。
- YCSB ベンチマーク
- 便利ツール: perf, strace/ftrace/dtrace, turbostat
- iPXE,sshをつかって下まわり(baremetal/bitvisor/KVM)の切り替えを自動化しよう。
[2016-11-30 17:11]
- Q: overcommit
[2016-11-30 17:14]
「BitVisor Advent Calendarについて」
- コミュニティのもりあげ
- ドキュメント
- 2015年はそこそこ成功した。
- 2016年は、まだカレンダーが埋まってない。
[2016-11-30 17:20]
- Q: カレーンダーはあとから埋めてもよい?
- A: 当日までに埋めるのが文化。
- Q: 割り込みの分散は、baremetalでLinuxカーネルが分散させる機能が必要なんでは?
- A: ふつうはHWがやるべき。やる価値はあるかも。
- ネットワークではRSSがある。(割り込みをちらしつつ同じフローが同じCPUに行くよう に)
- APICにアイドルCPUに割り込みなげる機能があったかも。
[2016-11-30 17:29]
フリーディスカッション
- どこかにwikiみたいなものがあるといいかなぁ。
- HWの動作確認リストがあるといいかな。
- bitbucketだとダウンロード数が取れない? sourceforgeだと国別に統計情報がとれた りしたんだけど。
- (オフレコ)機能追加を依頼できるところない?(iGEL以外で) 研究ネタなら大学ででき るけど、開発は未来大学では卒論修論で開発論文が認められている。
- VM上のguestOSの具合がわるいときのデバッグ方法。
- CONFIG_EARLY_PRINTK
- bitvisor自体にデバッグ機能を入れてほしい。
- 掲示板かなにかでクラウドソーシング?
- iPXE: UEFIをkernel、initrdをimageに指定すると、ファイルがみられる。
- floating pointをbitvisor内でつかいえないのはguestとぶつかるので。退避してbitたてたらok。
- bitvisorのパッチをとりこむポリシーは決まってないなぁ。えいらくさんがパッチをとりこむときに修正するのでえいらくさんの時間がないととりこまれないという。
[2016-11-30 18:06]
檀上背後のカーテンをあけると夜景が。
市ヶ谷駅へ移動。。。