BitVisor

いってきた: BitVisor Summit 6

京王線から南武線への乗り換えは久し振りだなぁ。余裕みすぎて9:15くらいに武蔵中原についた。

駅を出てぱっと目に入る富士通川崎工場の方にいってしまった。しまった。

imageimage

入口の守衛さんから事前登録しておいた名前でゲストカードをもらって入館。

imageimage

開錠はしっかり電源確保されていた。うれしい。ロビーに設置された無線LANは会場まで届かず残念。

[2017-12-05 09:59]

会場案内

[2017-12-05 10:02]

「BitVisorの現状と今後」 / 品川 高廣(東京大学)image

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のマイグレーションはメモリ状態なのでマイグレーションは簡単 なんとかしてハードウェアの情報をマイグレーションする
  • BitVisor論文(VEE'09)のインパクト わりとインパクトがある google scalarで199件の参照数はなかなか
  • 今後の課題 無線LAN(メンドクサイ) ドキュメンテーション(榮樂さんがいろいろ書いてるのをまとめるとか)

[2017-12-05 10:33]

<招待講演> 「BitVisorをベースとしたカーネル解析プラットフォーム」 / 木村 廉(神戸大学)image

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
  • 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年の主な変更点」 / 榮樂 英樹(株式会社イーゲル)image

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分待ち。

image

「Implementation and Status of 'mruby in BitVisor'」 / 中田 裕貴(公立はこだて未来大学)image

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に「移植」する」 / 市川 遼(東京農工大学)image

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に埋め込む方法はなんとかしたい(ファイルシステムがあつかえないので)
  • デモ

image

[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内部でのパケットフィルタリング」 / 味曽野 雅史(東京大学)image

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のアドレスの統計をとったり
  • デモ

image

[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分)

「大学の教育研究用端末上でのベアメタルハイパバイザの運用」 / 大山 恵弘(筑波大学)image

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」 / 深井貴明(筑波大学)image

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)image

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 内田 image

[2017-12-05 16:28]

@uchan_nos

  • 低レイヤーの勉強会
  • もくもくとコード書くとか本を読むとか、相談したり

[2017-12-05 16:31]

[2017-12-05 16:32]

学会のの宣伝 / 産総研 秋山 image

  • 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]

懇親会@木村屋本店 武蔵中原

imageimageimageimage

終了タイムは23:00ということだったが終電が気になるので22時くらいに先に抜けてきた。

P1160348x

BitVisor Summit 5

一ッ橋から靖国神社を抜け歩いて25分だった。

P1110379P1110388P1110393

工事中で地上はごちゃごちゃしていたが、26階からはスカイツリーや新宿副都心がきれいにみえた(曇天だったけど)。

imageP1110397

昼飯は地下1階の食堂で。まとまって座れそうな席が奥のほうにあったので座ったらドア から風が吹き込んでクソさむいし、外の喫煙場所からガスが流れこんでくるし、空いているのには理由があった。

imageimage

受付はとくになし。

image

[2016-11-30 13:00]P1110398

「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]

[2016-11-30 13:31]P1110399

「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わりこみステータス
  • 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]

[2016-11-30 13:57]P1110400

「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分

[2016-11-30 14:45]P1110402

「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]

[2016-11-30 15:29]P1110404

「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分休憩

[2016-11-30 16:15]P1110408

「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]

[2016-11-30 16:50]P1110409

「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]

檀上背後のカーテンをあけると夜景が。

BlogPaintP1110415image

市ヶ谷駅へ移動。。。

P1110416

BitVisor Summit 4

imageimageimageimageimage

朝は雨だったので電車が遅延ぎみ。予定より10分くらい遅れて到着。人生2度目(今年2度目)の女子大潜入。WLANは使えないという事前アナウンスがあったのでモバイルルーターをもっていったが、理学部3号館2FにはWiMAXの電波は来てなかった。いつものようにNexus7をdocomo 4G(IIJmioクーポン切れなので200kbps)でつないでおいてBluetoothでテザリング。参加者は20人ほど。

[2015-11-26 10:00]

「BitVisorの現状と今後」 / *品川高廣(東京大学) _1030476

BitVisor はSingle-VMという特徴を活かして、通常のハイパーバイザとは異なる様々な目的を実現するための汎用プラットフォームとして活用されることを目指しています。本発表では、まず BitVisor の現在のアーキテクチャの概要を説明し、次にBitVisor を活用した研究や開発をいくつか紹介します。また、BitVisor の今後の方向性についてもお話します。

  • 女子大での開催は最初で最後かも。ComSys初日は守衛さんにけっこう止められたらしい。
  • 招待講演はむつかしくなってきたが、一般セッションは例年どおりあつまった。
  • 来年はComSysの真ん中あたりで開催されるらしい。ComSysの参加者とかぶってないが、来年は混ざる?
  • BitVisor1.5はまだでてない..昨年からcoming soonのまま..
  • bitbucketでソース公開。githubをつかわないのはbitvisorが伝統的にhgをつかってるから。
    • bitvisorでオープンになってないところもある。外部資金のとか特許のところとか。無料で非公開プロジェクトがつくれる。
    • 2014-12-25公開。クリスマスプレゼント的な。
    • コミット94件のうちほとんどは榮樂さん。フォーク4。プルリクエスト1件(しかも却下されてる。。。)
  • 知名度を上げるために一般の人がつかえるようなものがほしい。
  • コーディング規約はあってないようなものなので榮樂さんのコードを参考に。
  • A-STEPプロジェクトで生き存えている。
    • ASPLOS2015: bitvisorをつかったネットワークブート。
      • ローカルディスクアクセスをネットワークに替えて、bgでダウンロードもする。
      • ダウンロードがおわったらde-virtualizationする。
    • UCC015: bitvisorをつかったライブマイグレーション
      • 物理デバイスの状態をbitvisorでマイグレーション。(仮想デバイスじゃないところが肝)
  • 東京大学への導入 (教育用計算システム ECCS)
    • 1341台のiMac。OSXとWin10のデュアルブート。集中管理したい。定期的なOS・アプリの更新。
    • 商用版: vThrii Seamless Provisioning: 榮樂さんが再実装
      • ATMoverUDP→TCPに変更
      • virtioでNIC2つにした。ブート前から対応するにはパススルーではむつかしい。de-virtualはなし。
  • bitvisorの論文の参照件数は順調に伸びている。
  • 今後の課題
    • デバイス対応とかやってほしい。プルリクして。

[2015-11-26 10:33]

[2015-11-26 10:35]

「Unsafe Nested Virtualization」 / *榮樂英樹(株式会社イーゲル) _1030478

最近BitVisorに実装されたUnsafe Nested Virtualizationは、BitVisorの仮想マシンにCPUの仮想化支援機能を提供するものです。ゲストOS上の仮想マシンが直接ハードウェアにアクセスしないことを前提として様々なチェック等を省略しています。現在のところAMD-V限定ですが、基本的な考え方はIntel VT-xにも適用できるものと考えられます。

  • Nested Virtualization: VM上にVMを動かす。
    • AMD SVM: VMRUN/VMEXIT/割り込み/IOでVMMとゲスト遷移
  • アドレス変換テーブルの管理
    • VM上のVMのアドレス変換テーブルの面倒を一番下のVMMがみないといけない。
  • VMCB(制御レジスタ)のデータ構造の変換
    • 終了条件のORをとったりしないといけない。
    • Intel VMCS, AMD VMCB: アドレス変換テーブル、IOビットマップ、MSR(モデル固有レジスタ)ビットマップ。
    • Intelは専用命令をつかうのでそのタイミングで。AMDはメモリアクセスなのでシャドウ作成で。
  • Unsafe Nested Virtualizationは準パススルーをつかって大幅に簡素化したもの。
    • 暗号化対象デバイスはパススルーアクセスしないよね、などを仮定している。ふつうのVMは悪さしないと仮定。
    • アドレス変換テーブルのシャドウをつくらないで済ませる。
    • VMM領域へのアクセスもしないと仮定。
  • Intel VT-xは命令数がおおくて未着手。アドレッシングも複雑。VMEXITはAMDならVMRUNの次からでよい。アドレス空間IDはAMDではCPUの判定なしでおk(VPID,ASID)→Intelめんどくさい
  • NASID=0をbitvisorが使用。無駄なTLBフラッシュを回避。
  • MSR:
  • VMMCALLは実行されないものと仮定。
  • 動作確認: VirtualBoxとLinux KVMが軽快に動作している。

_1030481

[2015-11-26 10:55]

  • Q: bitvisor on bitvisorはできる?
  • A: 試してない。暗号化してるとパススルーしちゃう。
  • Q: ネットワークも速い?
  • A: LiveCDが普通にうごいた。
  • Q: bitvisor on VMWareをやってみたことがあるが、nestedやる同期は?
  • A: 商用利用でそういう話があったので手がすべってやってみた。デバッグ目的ではない。hypervとか。
  • Q: 開発はqemuをつかった?
  • A: 実機で。(最初は割り込みを禁止してるコードをけすのをわすれてた)
  • Q: 商用化の時期は?
  • A: まだ。
  • Q: NASID=2の対応は必要?
  • A: 三重のnestもあり。。

[2015-11-26 11:02]

[2015-11-26 11:03]

「ライブマイグレーション実装で体験したデバッグの解説」 / *深井貴明(筑波大学),竹腰開(筑波大学), 品川高廣(東京大学) _1030482

これまで,研究でBitVisor にライブマイグレーション機能を実装する中でデバッグか難しいバグにいくつか直面した.例えば,Linuxゲストにおいて,init プロセスが segv で停止する,triple fault で停止する,といったことがある.今回の発表では,今後BitVisor で研究開発する方々の参考となるよう,このようなバグの原因と実際にとった対策について解説する.

  • ライブマイグレーションするとマシン状態がどんどんこわれてしまう。パニックしなかったり。
  • 物理ハードの状態をマイグレーション。
  • InitプロセスがSegV
    • Linuxもbitvisorもpanicしない。ログだけ。libcの中で死んでるっぽい。アドレスランダマイゼーションを止めてみて→
    • SIMDもxorで落ちてた→SIMD状態のXCR0がおかしかった
    • (SIMDつかってるのは文字列処理を高速化するためっぽい)
  • SSEを隠すとLinuxがブートしない。
    • bitvisorでSIMDを隠したらブート初期で止まってしまう→CPUIDあたりのコードを調査→64bit linuxではSIMD必須だった(ないとhalt)
    • RIPが特定のポイントとのときだけSSEみせるようにしたらlinuxは動いた。。なんのためのverifyだったのか。。。(Javaは動かない)
  • triple fault
    • マイグレーション先でおこる。LKMLみるとsysenterがらみでおこるらしい。
    • sysenter関係を送ってなかった。(32bitだとソフト割り込みだけど64はsysenter)
  • 動くけど止まる
    • マイグレーションして動いてるけど、出力がパラパラ。→タイマー割り込みが止まってた(スケジューラが動かないため)
  • Preempt Timer
    • Intel VTに定期的にVMEXITを発生させる機能がある。
    • 定期的にbitvisorに落ちてきてマイグレーションするのにつかいたかった。
    • ねらった間隔で来ない。でもこの機能をつかってる他のVMMがない。
    • C2ステート以上ではタイマーが動かない。(C2はすぐに入っちゃう)
    • linuxブートオプションでC2にならないようにして対応した。
  • realtekのドライバで止まる
    • RTL8169
    • パニックせずに止まる。
    • Rxのheadポインタがtailポインタを追い越してしまったのが原因。→ 空きディスクリプタがないので割り込みが無限に発生→DoS
  • kvm-clockソースが遅いので性能評価するときには注意。

_1030483

[2015-11-26 11:26]

  • Q: qemunのマイグレーションやってた。バッファキャッシュを壊しててshutdownするときにディスクこわしてた。。
  • A: iSCSIつかってるので
  • Q: sysenterじゃなくてsyscallも?
  • A: やってる
  • Q: hypervisorのアップグレードにつかえない?
  • A: ベアメタルクラウドでファームウェアの更新とか、ハードが壊れそうになったのを検知してマイグレーションとか。
  • Q: 割り込みDoSになってるのはどう気づいた?
  • A: ディスクリプタをprintデバッグ。

[2015-11-26 11:36]

昼休み

女子大だけどふつうの生協食堂。ちょうど昼休みの時間なので激混み。あたりまえだけど周りはJDばかり。メニューは小鉢多めな感じ。めんどくさいのでホイコーロープレートのみ選択。食品サンプルにも栄養が書いてあったがレシートにも書いてあった: エネルギー891Kcal,塩分2.6g,赤3.9,緑0.2,黄7.6。

imageimage_1030511

[2015-11-26 13:01]

「不要なデバイスを無効化するハイパーバイザー DeviceDisEnabler」 / *須崎有康(産業技術研究所) _1030484

不要なデバイスを無効化するハイパーバイザー”DeviceDisEnbler(DDE)”を提案する。DDEはbitvisorをベースにし、既存のOSに挿入できる軽量ハイパーバイザーである。DDEはOSがPCIやUSBのデバイスを認識する際に使う情報(Vendor ID, DeviceClassなど)を変更して、OSにデバイスを認識させない。DDEは攻撃者ばかりななく、利用者からもバイパスあるいは無効化される恐れがあるためにTPMを使った改竄防止機能を含める。

  • 去年のbitvisor summitで話す予定だったがblackhatで通ってたので話せなかった。
  • サイバーエスピオナージ
    • インカメラで目に写り込んだ親指の動きをよみとるとか。
    • ジャイロスコープで盗聴(20-200Hzのサンプリング)
  • PCI configuration spaceのデバイスID,ベンダーIDがFFFFの場合はデバイスなしとなる。
  • IO命令に介在してチェック+隠蔽
  • BIOSでデバイスを無効にした場合もFFFFを返す。
  • vendorID,deviceID,classIDでマッチング
  • bitvisorにハードディスクの暗号化は持っているが、Windowsの起動を止めるのはちょっと困難。
    • smss.exeだけを暗号化してbitvisorが介在しないとブートできないようにした。
    • getFileExtents.exeでファイル→ブロック番号に変換してbitvisorが介在。
  • Windowsのリカバリ機能が勝手に修復してしまう。再インストール攻撃も同じ。(対策はあきらめた)
  • 暗号鍵の隠蔽にはセキュリティチップTPMをつかった。正しいbitvisorでないと鍵を取り出せないようにした。
  • TPM non-volatile storageのアクセスにはPCRハッシュ値を知らないとアクセスできない。
  • USBデバイスは今後対応
  • https://www.youtube.com/watch?v=zFghX8Y0-qk

_1030486

[2015-11-26 13:30]

  • Q: デバイスのインタフェースがマルチの場合、IDで区別できないのでは?
  • A: 今は機能単位で認識できるようにする予定。(シリアル番号よりは強力なものをつかって)
  • Q: BIOS updateしたときは?
  • A: 計測しなおし。
  • Q: ゲストOSまでtrust of chainをつなげられる?
  • A: いまは作り込んでない。原理的には可能。
  • Q: スマホでもvendorID,deviceIDでの区別はつかえる?
  • A: できるはず。Androidは知らず。
  • Q: FFFFでもアクセスしにきたら?
  • A: 現状隠してないのでアクセスできちゃう。

[2015-11-26 13:35]

[2015-11-26 13:37]

「BitVisor上の独自機能に対するテストの試み」 / *竹腰開(筑波大学) _1030489

プログラムの質を担保する手法の1つとして、プログラムとは別途記述したテストによりプログラムが仕様通りに動作するか確認する手法が一般に知られている。本発表では、BitVisor上に独自に実装した機能の開発過程において、vmcall命令を用いてゲストから当該機能を呼び出し動作を確認する事で簡易なテストを適用した試みについて発表する。

  • bitvisorでもテストしたいなぁ。
  • VMMのテストは困難
    • 内部構造が複雑・初期化コストが高いなど
  • 自分の実装したところだけでもテストしたい。VMMCALLでテストを呼べるようにした。
  • リファクタリングの助けになった・潜在バグがみつかった。
    • マルチコアのタイミングバグ(実は全コアのTSCは一致してない)
    • メモリリーク(異常系でメモリリーク→メモリ破壊)
  • テストハンドラをちまちま定義するのがめんどくさい
    • ゲストから任意の関数を呼べるようにしたい→ELFシンボル情報を見ればok
  • debug interactive shell で任意の関数呼出。
  • https://www.youtube.com/watch?v=up13acsw3UA

_1030490

[2015-11-26 13:53]

  • Q: iPXEブート?
  • A: iSCSIをlocalにみせるようにしてbitvisorをロード。(テスト用にマシンが1台必要)
  • Q: 電源操作は?
  • A: ビルドがおわったらゲストでリブートか、IPMIか。
  • Q: vmcallはユーザが呼べる
  • A: yes.
  • Q: ユニットテストじゃなく全体テストの場合は時間がかかるのでは? (モバイルではテスト用のファームがある)
  • A: リブートのコストが高いので、テストして状態が壊れてなさそうだったら、別のテストを続行するとか、preempt timerで監視したり。

[2015-11-26 14:01]

休憩

BitVisorシール配布など

_1030492

[2015-11-26 14:20]

「ADvisor機能を応用した有害画像の視覚的規制」 / *宮元景冬(電気通信大学) _1030493

近年ではPCの普及により家庭でのインターネット利用が非常に容易である。それに伴い、青少年の有害サイトへのアクセスと有害画像の閲覧が懸念される。また、無害サイトにおいても有害な広告が数多くみられる。 このように、ウェブサイト上に現れる有害画像を規制するシステムを、BitVisorの既存システムであるADvisor機能を用いて作成することを目標とする。

  • 青少年が有害画像を閲覧しないように。
  • ブラウザ以外も対象にしたい。
  • ADvisorで肌色をぬりつぶそう→VRAM領域をみて肌色の範囲(RGBをHSVに変換)にはいってたら黒にするだけ!
    • 浮動小数点がつかえない
    • CR3レジスタの一定回数更新されたら黒塗り実行
  • 問題点
    • オーバヘッド。ブートが3.5倍くらい時間がかかるようになってしまう。
    • 一瞬見えてしまう。(バッファを塗り潰せないか?)
    • 動画はムリ。
  • https://www.youtube.com/watch?v=L9SNce41Pc4

[2015-11-26 14:36]

  • Q: HDCPのような著作権保護がかかってるやつ(モニタまで暗号化される)のは対応できないのでは?
  • A: 動画は範囲外なので!
  • Q: 画面を頻繁に更新するものだけが遅くなる? CR3をみてるところが悪い? CR3と画面書き換え回数に相関なさそう。
  • Q: CPUの使いかたを工夫してはどうか?
  • Q: 回避法はあるか?
  • A: モノクロにしちゃう?
  • Q: 本質的なところで問題がありそうな。

[2015-11-26 14:46]

[2015-11-26 14:48]

「drivisor internal: How to conceal and disguising real device」 / *米司伊織(筑波大学)

「Holy Device unification of Antioch and How to achieve that? The Implementation status of virtio-modern」 / *米司伊織(筑波大学) _1030496

各OSでたくさんのデバイスドライバを用意しなくてはならない状況により新しいOSの参入が難しくなっている。この問題を解決するため、bitvisorを用いて各種デバイスを同じ種類のデバイスに見せる。今回は実証のため、Intelのギガビットイーサをvirtio-netのデバイスに「偽装」する。本発表ではその具体的な方法を解説する。

  • OSをつくりたいけどドライバ書くのはいやだ。
  • すでに人類はドライバを書き飽きた。Linuxカーネルは半分はドライバ。
  • virtio: デバイス仮想化のデファクト・スタンダード。仮想化ではデバイスはメモリ上にあるので豪勢につかって簡単にしよう、という発想。
  • OSノイズをなくすのにつかえたり。
  • Vring: 双方向リンクのリング
  • virtio legacy → virtio 1.0 (FreeBSDはまだ対応してない; Linuxはlegacyの方を優先してつかってくる)
    • デバイスIDがちがう。capability list(PCIeで必須)をみる。
    • legacy: BAR(PIO)
    • 1.0: VringがVqueueになった。

_1030497

[2015-11-26 15:13]

  • Q: ioMemoryとは? ストレージとはちがう?
  • A: io*riveみたいなやつだとおもう。
  • Q: legacy はbitvisorに入っている。MMIOでどうなる?
  • A: ゲストにハイバーパイザーが用意したコードを実行させることができるようになる。
  • Q: OSvをbitvisor上で動かすやつのと同じ流れ?
  • A: yes。物理デバイスをマイグレーションするよりもvirtioのほうが簡単とか。

[2015-11-26 15:23]

[2015-11-26 15:24]

「SSLWatcher: SSL/TLS通信を監視し警告するハイパバイザ」 / *平井成海(電気通信大学) _1030499

SSL/TLSによる暗号化通信は電子商取引等において広く利用されている. SSL/TLSによる暗号化通信では, 始めに暗号化アルゴリズムとハッシュアルゴリズムの組み合わせである暗号スイートが, クライアントとサーバのネゴシエーションによって決定される. SSL/TLSがサポートする暗号スイートの中には脆弱なものが含まれているが, 不適切なサーバ設定などによりそのような暗号スイートの利用を許してしまうサーバがあることが知られている. また利用者がSSL/TLSに関する表示を見てもすぐに安全かどうかを判別できないため, 脆弱な暗号スイートを利用されてしまった際に安全性が低下する危険性がある. 本研究ではPCのセキュリティ向上を目的としたハイパバイザである, BitVisorを利用することでOSに依存せずにSSL/TLS通信をキャプチャし, SSL/TLSの安全性が低下するような通信を発見した際にディスプレイに警告を表示するシステムであるSSLWatcherを提案する.

  • FREAK,Logjamなど脆弱性がみつかっている。弱い暗号をつかわされたりする攻撃があったり。
  • 安全じゃないSSL/TLSを検出して警告したい。
  • TCPの再構築が必要になる。(lwipは入っているが再構築につかえず、libnidsを移植した)
  • OpenSSLには強度がある: NULL,EXPORT,LOW,MIDIUM,HIGH。
  • 強度や鍵長が短かいときにADvisorで警告を出す。bitvisorのメッセージ機能をつかって警告をださせる。
  • 性能: iperf約28%の性能低下(素と比べて)。wgetだとなぜかHTTPでも性能低下してしまった。
  • IDS/IPS: ネットワークを監視するのでトポロジに依存。
  • 課題
    • CCS Injection
    • 通信の切断

_1030502

[2015-11-26 15:46]

  • Q: ハイパーバイザーで実装するメリットは? OSでもよくない? (脅威モデル)
  • A: ユーザによる無効化を難しくしたい。
  • Q: サーバ証明書のチェックは?
  • A: ルート証明書のストアとチェインの検証がたいへんだったので避けた。
  • Q: 公開は?
  • A: 機会があれば。
  • Q: wgetおそいのは?
  • A: transmit bufferがどうのこうのとシリアルに出てくるのが関係してる? (メモリコピーが多いので遅い?)

[2015-11-26 15:55]

休憩

デモセッション

[2015-11-26 17:00] _1030504

  • igel vThrii Seamless Provisioning で端末の遠隔アップデートのデモ。(OSプロビジョニング・システム)
  • bitvisorベースなので上のOSに依存しないので、windowsでもmacでも可。
  • 競合製品: Citrix PVS, アルファシステム V-Boot, Panasonic OSV-VHD boot
    • Windowsしか対応してない製品がほとんど(V-Bootはlinuxも可)。Macはnetbootのみ。WindowsとMacで管理システムが別になってしまう。
    • 開発側はOSのアップデートをキャッチアップしていく必要がある。
  • 1回目のブートはネットワークから取ってくるので速くない(遅くない)が、
  • 2回目以降はローカルディスクに書いてあるので速い。
  • 1つのファイルサーバでだいたい100台くらいさばける。
  • ネットワークだけvirtioが入っているが、それ以外のデバイスはパススルーなのでオーバヘッドがない。
    • ネットワークを仮想化したのはOSがブートする前にアクセスする必要があるため。
    • ネットワークは仮想化した方が速くなるオマケつき。
  • メモリフットプリントは128MBと小さい。競合製品は大きいのでメモリを積み増しする必要がある。
  • サーバからディスクイメージをコピーするのはOSがアクセスしてきたときとOSが暇してるときに裏でも先読みでダウンロード(バックグラウンド・インストール)する。
    • 暇かどうかはディスクIOとMWAIT(カーネルスケジューラが寝るのにつかっている;HLTはつかってない模様)をフックして判定(CPUステートはみていない)。
  • bitvisorにキラーアプリがないということでセキュリティ関係であれこれやってきたが、これは1つの解(セキュリティと関係ないけど)。
  • ノートPCでWLANだと性能が出ないが、P2Pネットワークで配布できるとおもしろい。
  • 差分アップデートで必要なところだけコピーする。OSを切り替えるようなケースでは全コピーになる。
  • 古いバージョンに戻すのもできる。
  • GPTはパーティション情報を末尾にも置くので、修理でディスクが交換されたときにサイズが変わると困るので、ちょっと細工した。(CRCもいじらないといけない)
  • ディスクイメージ転送中にスリープするとダメなのでスリープサポートしてないとOSに見せてる。サスペンドはたぶんだいじょうぶ(だけど客にはダメといってある)。
  • OSの選択はクライアントでやってるが、管理サーバから設定をつっこんでいる。
  • ディスクイメージ転送プロトコルは独自。
  • bitvisorのネットワーク速度は300Mbpsくらいしかでてない(Gbps出てない)が、一斉にブートしたときにはどうせサーバ律速になるので無問題。
    • ゲストOSのネットワーク速度は限界まで出てる(930Mbpsとか)ので問題ない。
  • https://www.youtube.com/watch?v=H2s9khCITUw

_1030503

BitVisor Summit 3

寝坊して予定より15分遅い電車になり京王線は座れず、有楽町線ではA型ベビーカーにおとなしく座ってない中華系クソガキにガンガン蹴られ、芝浦工大についたら入る建物を間違え遠回り、結局5分ほど遅刻。

_1240987
image_1240988_124098920141121190843419_0001

「BitVisorの現状と今後」 / 品川高廣(東京大学)

DSC08227

BitVisor はSingle-VMというユニークな特徴を活かして、通常のハイパーバイザとは異なる様々な目的を実現するための汎用プラットフォームとして活用されることを目指しています。本発表では、まず BitVisor の現在のアーキテクチャの概要を説明し、次に BitVisor を活用した研究や開発をいくつか紹介します。また、BitVisor の今後の方向性についてもお話します。

  • クライアントからサーバへ
    • ベアメタルでも保護
  • ASPLOS2015に論文とおった。
  • 東大で特殊な応用
    • ついに大規模導入事例!
    • ECCS:教育用計算機システム
    • 1321台のiMac。MacOSXとWin7のデュアル。
    • DeepFreezeで再起動時に環境を復元している。
    • メンテナンス時はDeepFreezeを解除。閉館時にマシンはshutdownしているので自動起動させたい。
    • 問題:
      • iMacがwake on lanに非対応。
      • ファームにタイマ機能がない。
      • windowsの仕様でシャットダウン後のスケジュール起動しない(windowsがスケジュールを消している) → メニューからシャットダウンを消して対応! 再起動させてMacにしてからシャットダウンさせる → 学生はめんどくさいので電源ボタン長押しで止めちゃう orz
    • bitvisorで電源offをフックしてスケジュール起動を設定することで解決し。
    • まったくなにもしてないはずだが、ちょっと遅くなる。。
  • vThrii(ブイスリー): BitVisorの知財をもっている筑波大学が商用利用なら(けっこうな)金をとるっていったので名前変えた。
  • Q: サーバ向けとクライアント向けと分けていく? コードベースが大きくなってしまうとメンテコストが。。。
  • A: シンプルが売りなのでコア部分は大きくならないようにした。モジュールが(ディレクトリで)増えるだけの予定。

[2014-11-21 10:35]

「The Current Status of BitVisor 1.5(仮)」 / 榮樂英樹(株式会社イーゲル)

DSC08231

BitVisor 1.4は2014年5月にリリースされました。その後、これまでに多くの変更が加えられています。次バージョン1.5(仮)には、TCP/IPスタックの追加、ドライバーの指定方法の大幅な変更、性能改善などが含まれる予定です。これらの変更点について詳しく紹介します。

[2014-11-21 10:35]

  • PCIデバドラ
    • おおきく変わった。
    • デバイスをslotやclassで指定できるようになった。
    • そのほか多数
  • TCP/IP
    • network APIをつくった
    • lwIP: オープンソースの組込向けTCP/IP
      • NOSYSモードでのみで
    • 性能はモードによる。ippassだとゲストの割り込み処理で受信。BitVisorがポーリングしてもGpsにはほどとおい。。。
  • 性能改善
    • CPUIDが遅い。VMMなし81,BitVisor2887,KVM1700. VT-xのMSR(model-specific register)を必要なところだけ切り替えるようにした。
    • VM entry/exitの回数削減
    • スレッドスケジューラをロックフリーにしてスピンロックをなくした。(スタベーションすることがあった)
  • デバッグ機能
    • IEEE1394でログを対向のlinuxにおくる
    • UDPでsyslog。相手のMACアドレスは指定する。ARPしてないので。
    • vmmstatusでVMexitの理由を表示するようにした。
  • そのほか
    • ASSERTオフにしても式を評価するようにした。
  • BitVisor1.5は近々発表できるはず。例年は12月。..

[2014-11-21 11:06]

  • Q: コンフィグの変更はPCIのみ?マニュアルほしいです。
  • A: ドキュメントはigelでつくった1.1くらいまでのはあるけど、手間がかかるのでやれてない。。。

[2014-11-21 11:09]

「OSb: OSv on BitVisor」 / 表祐志(筑波大学),品川高廣(東京大学)

DSC08232

OSvは仮想化環境を前提に機能を最小化した軽量OSであり,既存VMM上で多くのLinuxアプリケーションを高速実行できることが確認されている.そこで高速な軽量VMMであるBitVisor上でOSvを動作させることでアプリケーションをより高速に実行できるかを探る.本発表ではBitVisorでOSvをサポートするための最小限の実装について説明する.

[2014-11-21 11:10]

  • BitVisor: たとえるならスライドガラス
  • OSv: たとえるならカバーガラス
  • くっつけてみた→OSb(オーエスビー)
  • BitVisorにVertioをいれた。
    • 理由: bitvisor summitだから。発展中のOSvをいじらなくてよい。管理はbitvisorで。
  • OSvのブートプロセスはふつうのOSとほぼおなじ。物理マシンで動きそうなイメージだが。
  • そのままだとACPIまわりでこける→一箇所なおしたらブートした。
  • でもデバイスはつかえない。
  • ディスクにインストールするのはめんどくさいのでネットワークブートにした。
  • ベアメタルのLinuxよりもOSbの方がCPU性能がでる。(単純ループで)
  • Para Pass-through Virtio
    • QEMUとかのvirtioをもってくるのはイヤだ。
    • pro1000の必要なところだけvirtioで、msi-xはスルー。
    • PCIコンフィグを偽装。
    • PIO空間も偽装。
    • 割り込みなどそのほかはパススルー。
    • virtio ringをエミュレート。
    • Tx: OSvはvirtioのringにデータをつっこむ→PIOたたく→BitVisorがpro1000のバッファにつっこむ
    • Rx: pro1000の割り込みはOSvにくる(パススルーなので)。それをフックしてVMexit。リングバッファにつっこむ。
    • netperf: OSb 816Mbps, Linux 941
    • VMexitが2箇所(送信PIOと受信割り込み)あるのが遅い理由。
    • Exitlessにするには? 1コアをホスト専有にしてしまう方法。VMexitでつかまえるのではなくポーリングで監視する。
    • 816→921Mbpsになったが、まだちょっとLinuxにとどかかない。
    • pingは速い! OSb 0.12ms Linux 0.16ms。
    • 最適化(今後):
      • pro1000からのデータをコピーしているのをzero copy化したい。VMDqがつかえないか。
      • 割り込みを減らす。
      • TCP offloading.
  • 10GbE/40GbEでやってみたい。

[2014-11-21 11:34]

  • Q: スループットはポーリングの頻度による? pingレイテンシが短かいし。
  • A: 全力でポーリングしてるので。intr moderationと関係する。
  • Q: 1コア専有するとトータルの性能は落ちる?OSvはエンタープライズなので1コアも減らしたくない?
  • A: ユースケースによる。IOが多ければ専有しても元がとれるかも。
  • Q: キャッシュミスが多くなるかも。
  • Q: BitVisorのコアとちがうコアでVMexitするとNUMAだと影響あるか?
  • Q: pro1000以外では?
  • A: virtioに近いからpro1000をえらんだが、他のでもだいじょうぶそう。さすがにinfinibandはむりそうだけど。
  • Q: linuxでもvirtioがうごく? そうするとbitvisorとlinuxでNICを共有できる?
  • A: 今はできないけど。
  • Q: リングバッファのメモリアクセスはbitvisorはフックできないので辛い?
  • A: SRIOVとかVMDqとかつかうしかないか。

[2014-11-21 11:44]

昼休み(80分)

3階の学食にてランチ。12時5分前だったので楽々着席。レシートをみると

  • エネルギー 993kcal
  • 塩分 4.5g
  • 赤 3.0 (たぶん肉)
  • 緑 0.9 (たぶん野菜)
  • 黄色 7.4 (たぶん炭水化物)

と書いてあった。塩分多いし野菜すくない。

image

めしくったあとは外に出て日向ぼっこ。日光あびてほんわかしてたら、背後からマクド臭。。。

_1250001

2階の生協で缶コーヒーを買って部屋に戻る。

_1250002

「BitVisor 用のストレージスナップショット機能の実装」 / 奥野航平,大月勇人,瀧本栄二,毛利公一(立命館大学)

DSC08233

スナップショット機能は,仮想マシンの状態を保存・復元する機能である.この機能により,仮想マシンを瞬時に元の状態へ復元できるようになる.現状のBitVisor には,このようなスナップショット機能が実装されていない.そこで,ストレージに対するスナップショット機能を BitVisor に実装した.この機能により,再起動によって仮想マシンの状態を復元できるようになる.

[2014-11-21 13:00]

  • とりあえずストレージを元にもどす。alkanetでマルウェアの解析をして改変されたのを元にもどしたい。
  • AHCIコントローラをエミュレーションする。
  • ベースディスクとスナップショットディスク(microsoft VHDを簡素化したもの)の2つを持つ。
  • concealドライバでスナップショットドライバを隠す。
  • 読み出し
    • guestのread reqはよこどりして、bitvisorがベースかスナップショットをreadしてguestに返す。geustが出したreadはそのままデバイスにいって、結果を破棄して、割り込みはguestにわたす。
  • 書き込み
    • guestのwriteではbitvisorのバッファに書かせる。
  • VHD:
    • LBA 48bit MSB16bitは無視。index 20bit, offset 12bit。
    • BAT: block allocation table.
    • 2MiBアラインメント
  • 課題
    • win7のブートで90秒ほど止まる。ディスクの接続を調べてるっぽい。
    • 1世代しか管理できない。
    • 割り込み待ちの時間。bitvisorで割り込みをエミュレーションすれば解決。
  • 1100行くらいでできた。

[2014-11-21 13:18]

  • Q: 90秒問題が解決したらつかえる?
  • A: IO待ち時間が長いのが問題。とても遅い。
  • Q: AHCIだけ?AHCI前に原始的なアクセスがあるとこまる?
  • A: レガシーでなんとかなる
  • Q: 2台に分けてるのは1台にできない?
  • A: 原理的にはできるが。1台をベースにして型番や容量をguestにまる見せしている。
  • conceleは空きポートとしてエミュレーションしている。現実装では。PIレジスタをエミュレーションする方法もある。windowsは90秒問題があるがLinuxではおこらない。謎。
  • Q: シャドウバッファへのコピーは減らせないか?ベースディスクのreadは直接できないか?
  • A: あまり考えてない。もともとのストレージドライバがバッファをつかうようになってたから。
  • Q: シャドウバッファの読み込み完了は?
  • A: ポーリング。
  • Q: どのくらいかかったか?
  • A: 資料探し2ヶ月、実装1ヶ月。趣味で。研究とはかんけいない。

[2014-11-21 13:27]

「BitVisor によるライブマイグレーション機構のNIC対応」 / 深井貴明(筑波大学),表祐志(筑波大学),品川高廣(東京大学)

DSC08234

OSのライブマイグレーションは,IaaSにおける事前メンテンナンスなどに用いられる技術である.ライブマイグレーション機能は主にデバイスを仮想化するVMMで提供される.しかし,デバイスの仮想化は性能劣化を生む.そこで,BitVisorを用い,デバイスを仮想化せずにOSをライブマイグレーションする機構を実現する.このうち本発表では,一部のネットワークインターフェイスカードの状態を転送する実装について述べる.

[2014-11-21 13:28]

  • ベアメタルIaaS: 高い性能があるがライブマイグレーションできない。
  • 既存
    • PCI-Pssthroughしながらライブマイグレーション or OSそのものに実装
      • OSに改変が必要なのでベアメタルIaaSに向かない。
      • ゲストOSからの実行なので事業者で実行できない。
    • コンテナ(dockerなど)
      • ゲストkernelを選べないのでIaaSにむかない。
    • ライブラリOS
      • 複雑な構成はむつかしい。
  • 物理IOデバイスの状態復元がむつかしい。。。
    • write onlyレジスタは書き込みを監視する。
    • read onlyレジスタはbitvisorがエミュレーションする。
  • (↑ここまでsummit2の話)
  • 今回RTL8169に対応した。
    • レジスタ・Rxヘッドポインタ・Txテイルポインタ。ポインタはreadもwriteもできない内部状態。
  • 受信処理
    • own bitたててhead pointerをずらす
    • 割り込み生成
    • OSはISR(intr status reg)をよむ。bitvisorはここをフックしてディスクリプタテーブルをスキャンして境界を探す。
    • OSはデータをよんでownbitをもどす。
  • 受信ポインタをずらすために移動元マシンから移動先マシンにダミーパケットを送りつける!
  • 送信ポインタは適当に送信するだけ。
  • 性能測定
    • スループットはbaremetal,vanilla bitvisor,proposl,kvmで違いほとんどなし。
    • 遅延: baremetal=vanilla bitvisor

[2014-11-21 13:51]

  • Q: テーブルスキャンはタイミングによってはずれてしまわない?
  • A: マイグレーションがおわったらNICを止めてしまうので、だいたいだいじょうぶ。全部ownbitがたってると困るので定期的にスキャンしている。
  • pro1000もポインタがreadできるらしいがwriteはできなかたかも。
  • Q: NICのloopback機能はつかえない?
  • A: わからない。
  • Q: MACアドレス
  • A: スワップする。EEPROMを書き換える。マイグレーション中は二人しかMACアドレス知らない状態になる。ダミーパケットを送るときはbcastを受け取らないようにしてる。
  • ポインタはOSもNICももっているので意識があってないとこまる。
  • Q: シャドウテーブルにしちゃう?bitvisorがOSとNICの意識をすりあわせるのは?
  • A: オーバヘッドはあまりかわらないかもしれない。あまりがんばるとvirtioでよくなっちゃう。
  • Q: OSにサスペンド・レジュームさせればどうか?
  • A: hotplugとかつかえるかもしれない。

[2014-11-21 14:06]

休憩

「ブランチトレース機能を用いたゲストOS上のプロセス観測手法」 / 大月勇人(立命館大学),瀧本栄二(立命館大学),齋藤彰一(名古屋工業大学),毛利公一(立命館大学)

DSC08236

最近のマルウェアは,他のプロセスのメモリ上に潜んで動作する.プロセスのメモリ空間内にマルウェアと正規のソフトウェアが混在するため,従来のプロセスやスレッドが発行するシステムコールを観測する手法では個々の動作の区別が困難である.そこで,本発表では,CPUに搭載されているブランチトレース機能により取得した分岐命令の情報に基いてシステムコールを呼び出したコードを特定する手法について述べる.

[2014-11-21 14:15]

  • タイトルにbitvisorがはいってない唯一
  • ほかのプロセスのメモリに潜んで動作するものが出てきた → スレッド単位ではマルウェア判定ができない。
  • どのメモリからsyscallが発行されたか調べる必要がある。
  • alkanet: スタックの戻りアドレスから得る。
    • 改竄されている可能性や、最適化で変わっている可能性がある。
  • BTS(branch trace store): intelにのっている。カーネルメモリに記録。フィルタ機能あり。
  • BTINT: バッファあふれたら割り込み。
  • bitvisorのトレースはいらない。ゲストのトレースがほしい。スレッド毎にトレースをとりたい。
  • windowsのページテーブルをむりやり書き換えてバッファを用意。windowsからは書き込み禁止にみせかける。
  • branchの記録のうちcall/retがおわっているものは消してスタックトレースを作成する。
  • 大域脱出・callが本来とは違う使い方・call以外での関数呼出に課題。
  • パフォーマンスは10%くらい低下。
  • LBRなど他のブランチトレース機能の活用。

[2014-11-21 14:31]

  • Q: マルチコアでもうごく?
  • A: いちおう考えている。ロックかけているのが速度低下の原因か?つかっているbitvisorのバージョンが古い。
  • Q: ROP
  • A: スタックトレースの形になってないものは解析できてない。BTS自体には問題がないが。
  • Q: Windowsのバージョンは?
  • A: XP。alkanet自体がXPべったりなので。いまwin7対応をすすめている。

[2014-11-21 14:38]

「BitVisor on KVM?」 / 竹腰開(筑波大学), 品川高廣(東京大学)

DSC08237

現在公開されているBitVisorは、KVMの上でnested VMとして動作させる事が出来ない。これをソースコードを修正する事でnested VMに対応させる事を目指して現在作業中である。現時点では、KVM上でのBitVisor自体の起動とmemtest86+といった単純なソフトウェアの起動には成功し、現在Linuxの起動に向けて作業を行っている。本発表では、KVMのnested VM環境におけるBitVisorの問題とその解決方法について、発表時点までに対応が完了したものを紹介する。

[2014-11-21 14:41]

  • デバッグの関係でlinux on bitvisor on kvmをやろうとしている。nested VM
  • KVMがサポートしているがbitvisorがサポートしてないとかある。LinuxがKVM用の最適化機能を発動して死亡するなど。
  • コードが書き換えられてることがあるので、disassする価値はあり。
  • no-scrollオプション: ドイツの点字リーダ向けの機能。スクロールのためのmemcpyで落ちてた。VRAMのwriteはできてるがreadができない模様。

[2014-11-21 14:57]

  • qemuだと動いてるらしい。
  • Q: KVM側の問題っぽいのはあったか?
  • A: いまのところバグっぽいのはない。

[2014-11-21 15:05]

休憩

パネルセッション

_1250010

[2014-11-21 15:20]

  • パネリスト: 品川高廣、表祐志、榮樂英樹
  • モデレータ: 松原克弥
  • コミュニティを活性化するためには?
    • 品川:つかう人を増やす。一般人向けではない。敷居が高い。簡単にインストールできるようにする。暗号化でなく応用を。
    • 表:軽くVM上で動かせるとよい。
    • 榮樂:開発者むけだから。
    • MLにパッチがきたことはほぼなし。
    • 榮樂: あまり使っているアピールがないのはライセンスがBSDなのもあるか。
    • インストールしたことない人挙手→3人くらい
    • インストールむつかしい。コンフィグの書き方はドキュメントはなくコード読め、になっている。
    • ハングオン的なものをやってはどうか。
    • 授業で強制的にBitVisorをつかわせる? OSを下から見れる。
    • BitVisorでIOを可視化するとか。なんとなく触るモチベーションとして。
  • 取り組むべき課題
    • 産業界からはARM対応の声がある。
    • 対応デバイスが限られてるとか仕様表に書かれてないところでひっかかるので、入れてみないと分からないところ。
    • 自分で組み立てると問題はおこりにくいがノートPCだとハマりやすい。
    • VMware上で動く動かないとか。Nested環境で動くようにする。
    • 一般ユーザがつかえるアプリをビルドして配布する。
      • full disk encriptionとか
    • boot optionがない。
  • 不満は?
  • リリース方法
    • 今はtar-ball配布、hg repoを公開すべきか? 著作権・特許がからむところは外したりする必要はある。
    • リリース間隔が伸びて活動が見えなくなってきている。
    • バグフィックスがリポジトリにあるのに公開されてない。
    • 基本公開する方向で。
    • 挙手: git/hgは半々

[2014-11-21 16:26]

_1250011_1250012_1250013_1250014_1250015_1250016_1250017_1250018_1250019_1250020

DSC08240

デモセッション

  • vThrii/igelのプロセス切り替えのデモ
  • ライブマイグレーションのデモ

[2014-11-21 17:25]

_1250021_1250025_1250026_1250030_1250033image

いってきた: BitVisor Summit 2

_1130520

新宿→市ヶ谷→豊洲経路で。途中、新富町でたくさん降りる人がいたがなにかあるのかな。はじめての豊洲。だだっぴろいところに高層ビルが林立してる感じ。

_1130502_1130504

芝浦工大の教室棟のエスカレータを登って会場へ。すでに講義がはじまってる。ガラス張りなので中はまるみえだ。みんなまじめに聞いてるように見える。さすが朝から勉強するやつらは違うぜ、と自分が学生だったころを思いだしながら。

_1130509

10:00-10:10
[2013-12-06 10:01]_1130511

オープニング

  • 開催趣旨 前回と同じ
  • bitvisorを題材とした低レイヤーの交流をはかる。
  • 一般発表者が筑波に偏ってる?
  • 発表登録にスパムが来たらしい。
  • 企業からの参加が減っている。夏にミニサミットとか土日開催とか。
10:10-10:40

「BitVisorの現状と今後」/ 品川高廣(東京大学)

BitVisor はSingle-VMというユニークな特徴を活かして、通常のハイパー

バイザとは異なる様々な目的を実現するための汎用プラットフォームとし

て活用されることを目指しています。本発表では、まず BitVisor の現在

のアーキテクチャの概要を説明し、次に BitVisor を活用した研究や開発

をいくつか紹介します。また、BitVisor の今後の方向性についてもお話

します。

[2013-12-06 10:07]
  • 去年のスライドをみたけど、あまり変化がない...
  • 2006年開始 もう7年 年1回リリースしてきた 1.4はちょっと遅れてる
  • もともとはSecureVMのためにBitVisorはつくられたが、汎用な方向にむかっている。
  • H22から資金が途絶えたがH25に
    • 総務省から「広域分散ベアメタル・クラウド環境のためのハイパーバイザーの開発」
    • JST A-STEP 「高セキュリティ・高信頼のクラウドコンピューティング環境実現に...」
    • あと3年は続く
  • BitVisorとは -- A Single-VM Lightweight Hypervisor (でもTiniVisor..)
  • BitVisor Tシャツもあるよ (学生さんがつくった)
  • singleのメリット
    • セキュリティ: OSよりもVMの方がシンプルなので破られにくいはず
    • 互換性: ゲストOSをいじらずに機能追加
    • VMMを小さくできる(→セキュリティ・オーバヘッド)
    • でも他のVM(non-single)も最適化をがんばってるので負けるケースもないわけではない...
  • 準パススルー型が特徴
    • 基本はパススルー 部分的に仮想化
    • デバイスメディエータ
      • 中継・フィルタ
      • 準パススルードライバとも
      • デバイスドライバの1/5〜1/10のサイズで実装できるメリット
    • 保護ドメイン(sandbox)で動かすのでアタックされても安心
    • 応用: IDS(侵入検知)とか iMacのスケジュール起動
  • iMacのスケジュール起動問題
    • windowsからシャットダウンすると使えない(windowsの仕様で、BIOS的には未定義)
    • 最後にwindowsでシャットダウンすると機能しない問題。
    • windowsのデバイスドライバでは回避できない
    • BitVisorでIOポートを監視して電源OFFのときにスケジュール起動をつっこむ。VMをつかうのはややオーバースペックなかんじだが。
  • VMMにVMEXITで制御がもどってくる条件のon/offをAPIで簡単にできるようにしたい devirtualization
  • 準パススルーのレベル
    • 監視のみ(IDS,デバッグ(アナライザは高い))
    • 監視+変換(暗号化,RAID,SSDの遅延書込)
    • 多重化[Piggyback](ICカードアクセス、OSのアクセスにのっかってなにかする)
      • DMAシャドウイングとか
  • 世界の研究: TCVisor, HyperSafe, "Return-less"VMM
  • 2012年のrefer: 62件 → 2013年のrefer: 87件
    • われわれの論文はなかなか通らない...
  • BitVisor1.4
    • リリースは技術的ではない理由で遅れていた
    • UEFI対応
    • オーバヘッド削減 (タイマーアクセス・スレッドスケジューリング・外部割り込み)
    • タイマーアクセス
      • IOは遅い ACPI PMTをつかっていた
      • TSCは安定しないものがあって採用してなかった
      • invariant TSCに対応したCPUではこれを使うように
    • スレッドスケジューリング
      • 無条件に動いていた タイマーをつかってなくても
    • 外部割り込み
      • 毎回VMExitしていた
      • 外部割り込みをフックしないと長時間制御がとれないことも
      • preemption timerでCPUクロック単位でVMExitができるようになった
    • netperfでためしてみると効果あり
[2013-12-06 10:40]
  • Q: iMacスケジュール起動問題でmacのときは?
  • A: windowsのときだけbitvisorを起動する
  • Q: preemption timerはVMMの中でつかえる?
  • A: ゲストから戻るためのタイマーなので保護ドメインのプロセスをプリエンプトするのにはつかえない
[2013-12-06 10:43]
10:40-10:50

休憩(10分)

10:50-11:50

【招待講演】「TinyVisorの開発と設計」/ 渡辺祐一_1130516_1130517

TinyVisorは、OSを二個動作させることが可能な、BitVisorベースのハイ

パーバイザです。CPU、メモリ、I/Oなどのリソースを各OSに割り当て、OS

が直接制御することで、ホストOSなしで各OSが独立動作します。割り当て

られたリソースのみをOSに認識させ、かつ、割り当てられていないリソー

スへのアクセスを制限することが設計のポイントです。開発の経緯や今後

の目標、具体的な設計について説明します。

[2013-12-06 10:51]
  • 数年年から趣味で開発 去年公開
  • ホストOSなしに各OSが独立動作
  • ゲストBIOSは seaBIOS(GPL)を使用
  • 使い方: display,keyboard,mouse,video,hdd,hbaカード,nicは二組用意する。それぞれのHDDにOSをインストール。USBメモリにVMMとゲストBIOSをインストール。
  • ここまでは去年にできていた。今年はVM1(2つめの方)をリブートできるように。
  • VM0の再起動はホストのBIOSを再起動する必要があって難しい。
  • VMの独立性向上: 片方がパニックしてもまきこまれないようにしたい。
  • VMMの部分アップデート: 片方づつVMMを更新できるようにしたい
  • 夫婦でパソコンを共用? 喧嘩しても隣あわせ
  • 重複するCPU,memory,IO:
    • CPUはマルチコア・ハイパースレッディング
    • メモリたっぷり
    • IOはチップセットのAHCIとマザーボード、USB3とUSB2、PITとHPET
    • けっこう二重にもってる
    • root port (PCI-exのスロット単位)で資源割り当て
  • APIC IDでプロセッサ識別
  • MADTテーブル書き換え: VM0はVM1の論理プロセッサストラクチャを無効化
  • IPI: 指定ならパススルー、ブロードキャストなら割り当てたプロセッサに変換
  • 論理ディスティネーションモード(local APIC ID)・物理ディスティネーションモード(APIC ID)
    • VM1は物理〜しかつかえないようにする。ACPI FADTのフラグで指定。local apic idが重複してしまうため。
  • メモリは4KB単位で物理アドレス範囲指定。
  • VM0の物理はホストとおなじ reservedで
  • IOはバス・デバイス・ファンクションIDで指定
    • 他のVMへのアクセスは、readはall FF、writeは無効化
    • rootから先はOSがスキャンする
  • MMIO領域 重複してる
  • マルチファンクションデバイス
    • OSはファンクション0がないと1以降を検出してくれない 0があれば歯抜けでもok。
  • IOデバイスからメモリは VT-d のIOMMUで。
  • 割り込み: VM0はINTとMSI、VM1はMSIのみ。 PCではIOAPICは1個しかないので。
  • PITはVM0に、HPETはVM1に。VM1でレガシーを要求したらエミュレート
  • USBメモリのVMMをロード→INT 18Hでブート失敗したことに→VM0がロードされる(ホストBIOSの挙動) 他の方法もあるが
  • VMMロード時にゲストBIOSをロードする
  • SeaBIOS: C言語 VMMにあわせてカスタマイズしている BIOSの中に問題があってもソースがみれるメリットがある
  • シリアルをポーリング 。。。 sttyプロセス 。。。
  • 設計のポイント
    • 割り当てあられたリソースのみをOSに認識させる
    • 割り当てられてないリソースへのアクセスを制限する
    • ホストBIOSでVM0、ゲストBIOSでVM1
[2013-12-06 11:41]
  • Q: bitvisor意外で参考にしたものは?
  • A: ない (Q:岡山大のMINTで似たようなこと(リソース分割)をやってたので)
  • Q: デバッグツール
  • A: printfデバッグのみ
  • Q: 2個用意しなくても簡単に多重化できるものはないか?
  • A: IOデバイスの仮想化はたいへんなのでやるつもりない。現状35k lineで、あまりおおきくしたくない。
  • Q: 本業は?
  • A: ふつうのソフトウェア開発(もうちょっと上のレイヤ)。
  • Q: 3つ以上に増やすにはハードを用意するしかない?
  • A: OS間で共有できる機能があるハードもあるし、まだ数に余裕があるデバイスもあるし。
  • VM1でwindowsを動かすのはたぶんたいへん。BIOSまでしか対応してない。VM0はなんとかなるかもしれない。
  • Q: 性能は?
  • A: VM0とVM1で体感では性能差はないかんじ。ビデオゲームとか片方が他方にひっぱられるかもしれないが、マウスが動いたら満足しちゃうので。
  • Q: どうやって勉強したか?
  • A: 仕様書を読んで。BIOSはネットで。すいすい読めるようになった。
  • Q: bitvisorの改造しやすさは?
  • A: globalをつかって読むには困らなかった。
[2013-12-06 11:54]

11:50-13:00 昼休み

生協食堂でランチ。チキンおろしだれ(290)、麦飯?ライス中200g(90)、豆腐とわかめの味噌汁(30)、ほうれん草のゴマあえ(50)。suicaで支払い。以外とICカード払いのレーンは空いてるようにみえた。

_1130519

生協購買でコーヒー買って時間まで外でのんびり。

_1130521

13:00-13:30 デモ・セッション

_1130530

  • スリープするとbitvisorが検出してOSを切り替える。
  • XPを動かしておきたい需要はあるがセキュリティを考えると社内ネットワークには繋ぎたくないとか、XPでしか使えないデバイスがあるとか。
  • 1つ目のOSを立ち上げてスリープするとイメージをディスクに書き出してから2つ目のOSを立ち上げる。2つ目のOSをスリープすると1つ目のOSがディスクから読み込まれ、そのあとはメモリに常駐して切り替えが行われる。
  • 切り替え時のデバイスリセットはOSまかせなのでbitvisorは何もする必要がない。

_1130531

  • OSvのようなコンテナ仮想化とは途中のレイヤを抜いて軽くするという点は同じだが、目的が違うので共存できる。逆にKVMとかは廃れるのではないか?
  • 転送はUDP。

_1130532

13:30-14:30

【招待講演】「BitVisorのUEFI対応」/ 榮樂英樹(株式会社イーゲル)_1130526

BitVisorはバージョン1.3までUEFIに対応していませんでした。しかし、

UEFI対応PCは増加しており、近年はプリインストールされたオペレーティ

ングシステムもUEFIで起動するのが一般的になってきました。そこで、

UEFIでBitVisorを起動できるようにする対応を行いました。UEFI対応にあ

たり、ファームウェアの実装の違いによって発生する多くの問題が見つか

りました。特に、PCのファームウェアは通常ブラックボックスであり、原

因調査が簡単ではありません。そのような問題と対応方法について紹介し

ます。

[2013-12-06 13:32]
  • UEFI: OSとファームウェアのあいだのインタフェースを埋める仕様 元EFI IA64でつかわれていた。
    • ページ単位のalloc/freeeもある。
    • 不揮発メモリ(setup)へのアクセスも提供される。
    • ファイルシステム(FAT)もある。
    • UEFIアプリケーション: フォーマットはPE。サブシステムはちがって0x0A。relocatableにしておくべし。ABIはMS Windows。
    • エントリポイント: EFI_IMAGE_ENTRY_POINT(ImageHandle, *SystemTable) SystemTableにいろいろサービスが書いてある。
      • Boot Service, Runttime Service, Protocolなどが用意されている。
    • 開発環境:
      • gnu-efi(rEFIでつかわれている) ホストのgccでコンパイル(ELF)して、最後にobjcopyでPEに変換。関数呼出規約が違うので差異はじぶんで吸収する。
      • EDK
      • EDK2: bitvisorではこれをつかったほうがよかったかも。
  • BIOSでの起動方法: gnu gubかvmmローダ(bitvisor同梱のbootloader)。
  • UEFIでの起動:
    • GRUBはExitBootService()を呼ぶ → boot serviceがつかえない → GRUBはつかえない
    • bitvisorをUEFIアプリケーション化: リロケータブルにしないといけないなど、おおがかり
    • VMMローダをつくることに
  • VMMローダ: 最初にVMM(ELF)をロードして起動、そしたらローダは終了、次のOSが起動される。
    • 2 stageに分けた。1stはUEFIappで2ndをロード。2ndは1GB未満のところにロードされる。1GB未満の領域はVMMからみえるメリット。
  • UEFIではグラフィックモードになっていてpanicログをだせない。シルアルはUEFIがついてるマシンは限定される。etherはuefiのと衝突する可能性がある。text output protocolをつかう方法はブートにつかうCPUからしか呼べない。しかもブート中のみ。あとはVRAM直書き。
  • 32bitUEFIには対応してない。あまり環境がおおくないとか、windowsは64bitのみだし、intelのはVMX有効のままページングoffにできないとか。
  • ファームウェアはゲストOS上で実行される。
[2013-12-06 14:21]
  • Q: Windowsがうごかないときの対応は?
  • A: printf。VRAMらしいアドレスのところに書き込んで表示。
  • Q: boot loaderを起動するだけでよいのにUEFIは高機能すぎないか?
  • A: UEFIは16bitをきりしててシンプルになってるメリットはあるが、PEバイナリをつくらないといけないのは敷居が高い。
  • Q: TPM対応は?
  • A: UEFIでは対応してない。たぶんプロトコルが定義されているのではないか?(未調査)
  • Q: bitvisor自体には変更はない?
  • A: フックなど変更はない。
  • Q: MacとWindowsでブートに違いは?
  • A: どちらもおなじ感じ。(1年前、igelはMacのブート部分は知財にしようと思ってたが...あてがはずれた...)
  • Q: Macは低レイヤーはそう違いがないが、高レイヤのプロトコル部分は、Macは古いのを独自拡張しているから、苦労するかも。
  • A: 暗号化ディスクでどうなるか試してない。
  • Q: 1.4リリース予定は?
  • A: 大人の事情で遅れている... クリスマス... どうかなあぁ...
[2013-12-06 14:36]

14:30-14:40 休憩(10分)

14:40-15:10

「BitVisorにおけるゲストOS・保護ドメイン・USB ドングル間の遠隔手続き呼び出し」/ 新城靖、松下正吾(筑波大学)_1130533

BitVisorの保護ドメインは、耐タンパ性のある USB ドングルと同様に、

ゲストOS から隔離されており、機密性が高いコードを実行できる。この

発表では、ゲスト OS から保護ドメインと USB ドングルを利用するため

のメッセージ交換について述べる。

[2013-12-06 14:45]
  • 耐タンパデバイス Rockey6
  • 機密環境 と 通常環境
    • デジタル署名・著作権保護・コード隠しなど
  • 実現レイヤ: マイクロカーネル、VMM、intel SGX(software guard extensions)とか。
    • SGX: 暗号化されたままで実行できる。VMMよりも下のレイヤでやる。
  • 耐タンパデバイスは遅いのでアクセラレータとして機密プログラムを実装。
  • 環境間通信はどうすべきか? → RPCと逆RPC
    • 機密環境・耐タンパデバイスはサーバが普通だがたまにクライアントになりたい。
      • 暗号の委託計算 server-aided computation
      • ストレージとかUIとか
      • でもスリープできない問題。
  • 保護ドメインRPC: int vmmcall_rpc(desc,request,result);
  • msgsendbuf(): allocate_buffer()を毎回呼んでてムダ?
  • 保護ドメインはデバイスIO付きの機密環境としてユニークで耐タンパデバイスと組み合わせるとおもしろい。
[2013-12-06 15:06]
  • Q: 逆RPCはポーリング?
  • A: ポーリングだがRPCのつづきで逆RPCを出すなら無駄なループはない。
  • Q: nestしたら?
  • A: 保護ドメインのプログラムがシングルスレッドならnestしない。
[2013-12-06 15:09]
15:10-15:40

「ケーススタディ:BitVisorにおけるバイナリBLOB USBドライバの利用」/ 北村朋宏(株式会社イーゲル)_1130543

USBドングル製品Rockey6をBitVisorから利用可能にした事例について紹介

します。Rockey6のUSBドライバは、libusbの上で動作するユーザランドプ

ログラムであり、そのライブラリは、ソースコード未公開でした。しかし

、BitVisorはlibusb互換APIを備えており、バイナリBLOBとしてライブラ

リを利用できる可能性がありました。そのため、BitVisorにRockey6ドラ

イバを取り込む実装を試みましたが、その過程において幾つかの問題が生

じ、それらを解決する必要がありました。その内容について解説します。

[2013-12-06 15:10]
  • Rockey6のライブラリはソースコードが公開されていない。
  • Rockey6内部にCPUをもっていて乱数生成などができる。USB1.1のインタラプト転送。
  • API: DIC_File, DIC_Open, DIC_Command DIC_Set, DIC_Close
  • Rockey6の未定義シンボルを解決できればbitvisorにとりこめるはず。
  • bitvisorのlibusb互換実装はある。元はICカードをつかうために実装された。
    • 構造体の定義がちがっていてpagefaultとか。つかってないフィールドは削っていたため。
    • stack guardのカナリアが設定されてないためpagefault。32bit環境だとgsレジスタをつかって干渉するのでライブラリをstackguardなしで提供してもらって解決。n
    • GOT: リンカスクリプトにGOT,PLTが書いてなかった。-fPICなしでライブラリを提供してもらって解決。
    • usb_busses: リンクリストの先頭ポインタ。ライブラリがusb_get_busses()をつかってくれてなかった。
  • usb_device構造体の差異があってpagefault。
  • DIC_Openのデバッグ
    • 関数入口でスタックダンプ
    • あやしい関数をnopでおきかえ (strcpyをnopにしたら動いた)
[2013-12-06 15:34]
  • Q: libusbの実行速度の差異は問題になった?
  • A: ない。ゲストOSがUSBのわりこみを吸い込んでしまう問題があった。bitvisorはUSBのwriteを同期で処理するためにbusy waitしているので、linuxの実装よりも速いかも。
  • Q: バイナリのオプション抜きは?
  • A: メーカにたのんだらあっさりとやってもらえた。
[2013-12-06 15:38]

15:40-15:50 休憩(10分)

15:50-16:20

「BitVisorのためのOSの状態復元機能」/ 河崎雄大(電気通信大学)_1130544

BitVisorのためのOSの状態復元機能を提案する.OSの状態として保存,復

元するものはディスク内にあるデータとメモリ上にあるデータである.ま

た,データの保存,復元のトリガーはユーザが任意のタイミングでゲスト

OS上の特別なプログラムを実行させることによって引かれる.

[2013-12-06 15:50]
  • 暗号化・マルウェア検出・OS復元をOSの外でやる。
  • livewire,VMwatcher, BitVisor
  • 使用例: ゲストOS上でマルウェアを実行して挙動を観察したあと、チェックポイントを復元する。
  • 復元トリガーは VMCALL を呼ぶだけ。
  • チェックポイントではメモリとディスクを保存するがbitvisorでは簡単ではない。
    • メモリは別パーティションに保存。
    • ディスクはメインパーティションと差分パーティションを用意して復元では差分パーティションをすてる。
  • bonnie++
    • まばら状態だと性能が低下している。
  • BitVisor1.3のビルドベンチ
    • 2%程度のオーバヘッド
  • 類似
    • VMware,Hyper-V,KVMにも復元機能があるが、マルウェアがホストOSを検出して動作を止めてしまうかも。
    • BareBox
[2013-12-06 16:13]
  • Q: レジスタは
  • A: VMCSでやる予定
  • Q: バッファキャッシュは?
  • A: メモリごと保存しているのでフラッシュしなくてもok。
  • Q: VMCSをそのままコピペは動かなかったがだいじょうぶか?
  • A: まだ動いてない。(Q:VMCSにはホストの状態もはいっているため動かない)
  • Q: メインと差分と両方のreadのときにどうしてる?
  • A: 今は差分の方はbusy waitして完了をまっている。
  • Q: 2回目にチェックポイントをとったらどうする?
  • A: チェックポイントは1つだけなので。(Q:差分で記録すると差分を捨てるコストは安くなるが、チェックポイントを連続して取るコストは上がってしまう)
[2013-12-06 16:22]
16:20-16:40

「Live Migration on BitVisor」/ 深井貴明,表祐志(筑波大学システム情報工学研究科), 品川高廣(東京大学)_1130545

OS のライブマイグレーションは仮想マシンモニタ(VMM)が提供する機能の

一つであり,ハードウェアの障害対応や負荷分散などに有効な技術である

.しかし,ライブマイグレーション機能を提供するVMMはデバイスを仮想

化し,性能劣化を生む.そこで,デバイスを仮想化しない準パススルー型

VMMであるBitVisorによる,OSのライブマイグレーションを目指し,実装

している.現在,RamDisk上で動作し,一部デバイスのみを用いるLinuxを

マイグレーションすることに成功している.本発表では,ライブマイグレ

ーション機能のうち実装が完了している部分について述べる.

[2013-12-06 16:23]
  • メンテナンス性向上
  • bitvisorでやるメリット: OSに依存しない。オーバヘッドがすくない。
  • ハードウェア構成は同じでないと動かず。
  • メモリとCPUはふつうにコピーすればok
  • デバイスの状態は書き込み専用レジスタがあるためbitvisorで監視する。(めんどくさい)
    • 宛先ポート・IOタイプ・書き込みデータ(ビット) をみて判断。デバイスの状態や直近のIOによっても読み書きがかわる。
    • デバイスごとに状態取得コードを書かないといけない。
  • 応用: チェックポイント・クローン
  • 脱仮想化と再仮想化
    • マイグレーションのときだけ再仮想化してマイグレーションがおわった脱仮想化できたらよい。
[2013-12-06 16:37]
  • Q: すでにライブマイグレーションの実装はあるが?
  • A: bare-metalに近いところでやりたい。checkpointingは需要があるはず。
  • Q: DMAはどうする? (NICとか)
  • A: タイミングをえらんでやるが、bitvisorは割り込みをフックしてないし。
  • Q: デバイスをエミュレートするのは大変なので、いちどデバイスが抜けた(スリープ)ように見せかけるのはだめか?
  • A: OSに気づかれないようにしたい。(Q:ユースケースがほしい)
[2013-12-06 16:43]

16:40-16:50 休憩(10分)

16:50-17:10

「ネットワークによるADvisor機能の拡張」/ 山本航洋(電気通信大学大山研究室)_1130546

現在のBitVisorにはグラフィックハードウェアのメモリを書き換える事に

よりデスクトップ上に画表示させるADvisor機能が実装されている。

ADvisorで表示する画像データはBitVisorのバイナリに埋め込まれている

。そのため表示画像の変更を行うためにはビルドしなおす必要がある。そ

こでBitVisorとサーバで通信する機能を実装し、ADvisorで表示可能な画

像を動的に更新する拡張を行った。

[2013-12-06 16:51]
  • ADvisor: VMMが画像をむりやり表示する。
  • 利用例: 組織内における情報表示、広告表示。
  • 問題点: 画像データはVMMソースコードに埋め込み。 → 動的に変更できるようにした。
  • サーバからUDPで送られてきたデータを捕捉。
    • サーバは送るデータの大きさを伝えてから画像を分割して送信。
  • サーバ側でMTUを考慮して小さく送る。
  • CR3レジスタの更新をタイミングで画像がそろっているか確認(あんまりよくない)
  • 表示タイミング: ディスクやネットワーク中の文字列マッチングなど
  • テキストをサーバで画像化して表示など(マルチバイトもいける)
[2013-12-06 17:07]
  • Q: 認証とか?
  • A: UDPで送りつけると表示。表示中はパケット破棄している。
  • Q: HTTPパケットすべてをスキャンするコストは?
  • A: ポート80に制限しているが、性能測定はしてない。フラグメントして文字列が切れたら検出できない。
  • Q: パケットドロップしたら?
  • A: 表示されない。
  • Q: ちらついていたが?
  • A: 録画のつごうではないか?
[2013-12-06 17:11]
17:10:17:30

「TCP/IP on BitVisor」 / 表祐志,島田恭平,芹川大地,深井貴明(筑波大学システム情報工学研究科)_1130550

現在のBitVisorには汎用的なTCP通信機能は実装されていない.そこでオ

ープンソースの軽量 TCP/IP スタックであるlwIP (Lightweight TCP/IP

Stack)をBitVisorに移植し,TCP及び一部の上位層プロトコルによる汎用

的な通信機能を実装した.本発表では今回実装した通信機能を利用するた

めの基本的なAPIの使い方と,BitVisorサーバやクラウドサービスとの連

携といった応用例を,デモを交えながら説明する.

[2013-12-06 17:12]
  • 設定をリモートから変更したい・情報をつかわせたい・クラウドサービスと連携したい
  • フルスクラッチで書くか・移植するか?
  • フルスクラッチでCで4000行?
  • stackoverflowできくとlwIP(lightweight IP)がいいらしい。品川先生もおすすめ。
    • 3項BSDライセンス
    • プラットホーム側ですべて用意しなくても、それなりに動く。
    • ドキュメントが整備されてない、Makefileもない。
    • Raw API: もっとも低級。イベントドリブン。
  • サーバ: BitVisor HTTP Serverを実装してみた。
  • クライアント: cURL Visorを実装してみた。
  • TwitVisor改: クラウドサービスと連携できた。大きなタイムラインでもok。
  • FlickVisor: screenshotをとってflickrに送りつける。大きな画像でもok。
  • bitbucketで公開中
[2013-12-06 17:25]
  • Q: SSLは?
  • A: Raw APIでつなげられれば。
  • Q: bitvisor1.4にいれてもよい?
  • A: welcome!
  • Q: UDPのコードとは?
  • A: まったく共有してない。
  • Q: より便利なAPIをつかえるようにするには?
  • A: mutex,thread,timerが必要。再送はAPIを呼ぶ側が時間コントロールしてる。
[2013-12-06 17:29]

_1130551

帰り際に榮樂さんと松原さんに挨拶して帰社。そとはまっくら。豊洲駅までイルミネーションと月がきれいだったので写真をとりながら。

_1130552_1130559_1130572_1130585

記事検索
月別アーカイブ
アクセスカウンター

    タグ絞り込み検索
    ギャラリー
    • 今日の練習 2018-11-15
    • 今日の練習 2018-11-15
    • 今日の練習 2018-11-13
    • 今日の練習 2018-11-11
    • 今日の練習 2018-11-11
    • 今日の練習 2018-11-10
    Amazon
    楽天市場
    adby google
    LINE読者登録QRコード
    LINE読者登録QRコード
    • ライブドアブログ