全体ミーティング 2009/6/24 D3 西川 賀樹.

Slides:



Advertisements
Similar presentations
Linuxを組み込んだマイコンによる 遠隔監視システムの開発
Advertisements

ファイルキャッシュを考慮したディスク監視のオフロード
Chapter11-4(前半) 加藤健.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
2006年度 計算機システム演習 第4回 2005年5月19日.
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
XenによるゲストOSの解析に 基づくパケットフィルタリング
ファイルシステムキャッシュを 考慮したIDSオフロード
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
オペレーティングシステム (割り込み処理)
Linuxカーネルについて 2014/01.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
オペレーティングシステム i386アーキテクチャ(2)
ネストした仮想化を用いた VMの安全な帯域外リモート管理
VMマイグレーションを可能にするIDSオフロード機構
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
型付きアセンブリ言語を用いた安全なカーネル拡張
AMD64の仮想化技術を利用した 仮想マシンモニタの実装
高速剰余算アルゴリズムとそのハードウェア実装についての研究
全体ミーティング 金田憲二.
KVMにおける仮想マシンの 内部監視機構の実装と性能評価
仮想マシン間にまたがる プロセススケジューリング
Xenによる ゲストOSの監視に基づく パケットフィルタリング
セキュリティ機構のオフロードを考慮した 仮想マシンのスケジューリング
VMのメモリ暗号化によるクラウド管理者への情報漏洩の防止
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
リモートホストの異常を検知するための GPUとの直接通信機構
仮想メモリを用いた VMマイグレーションの高速化
オペレーティングシステム イントロダクション
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
IaaS環境におけるVMのメモリ暗号化による情報漏洩の防止
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
VMMのソフトウェア若化を考慮した クラスタ性能の比較
オペレーティングシステムJ/K 2004年11月15日2時限目
信頼できないクラウドにおける仮想化システムの監視機構
組込みシステムとは コンピュータ制御システム?
Virtualizing a Multiprocessor Machine on a Network of Computers
Cell/B.E.のSPE Isolationモードを用いた監視システム
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
実装について 前田俊行.
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 5 回.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
強制パススルー機構を用いた VMの安全な帯域外リモート管理
Presentation transcript:

全体ミーティング 2009/6/24 D3 西川 賀樹

発表内容 現在行っている研究について 研究テーマは完全仮想化によるARM向け仮想マシンモニタの設計と実装

研究の背景 携帯端末等のモバイル機器における性能の向上 モバイル機器へ汎用OSが導入されるようになってきている 多くの機器がネットワーク接続も可能となり、高機能化・多様化が進んでいる モバイル機器へ汎用OSが導入されるようになってきている 単純なRTOSでは多様なアプリケーションに対応できない 汎用OSを用いることにより、汎用計算機で用いられている既存アプリケーションの移植が容易になる しかしこれにより起こりうる問題も考えられる

モバイル機器の高機能化に伴う問題 セキュリティリスクの増大 リアルタイム処理における問題 ネットワーク接続を行うことにより、マルウェア等に感染するリスクが増大 汎用OSを用いることにより、汎用計算機における既存の攻撃手法が使用可能 リアルタイム処理における問題 多くの汎用OSはリアルタイム性の確保が不十分

目的 モバイル機器向けの仮想マシンモニタを開発 リアルタイム性の向上 セキュリティの向上 組み込みにおいて最も普及しているARMアーキテクチャを対象とする リアルタイム性の向上 RTOSと汎用OSを同時に動作させることができ、リアルタイム処理をRTOSで優先的に実行可能 セキュリティの向上 各OSをVM上で動作させることで、汎用OSでのマルウェア感染時等にRTOSへの影響を防げる

本研究の仮想マシンモニタ(VMM) Type-1での完全仮想化による実装 リアルタイム性を考慮したVMスケジューリング ゲストOSの修正が必要ない 汎用OSに比べて組み込みOSは種類が多く、各OSに対して修正を加えることはコストが大きい ソースが公開されていないOSについても対応可能 現在完全仮想化により実装されたVMMは存在しない Type-2に比べ実行速度が高速 リアルタイム性を考慮したVMスケジューリング VMに実行優先度をつけ、RTOSを動作させる場合は最優先で実行する

関連研究 擬似仮想化によるVMM(Trango、VirtualLogix、Xen on ARM) Type-2 VMM(WB-VRT) 完全仮想化に比べ高速だが、ゲストOSの修正が必要 Xen on ARMはSEDFスケジューラを用いており、リアルタイム性が考慮されていない Type-2 VMM(WB-VRT) ホスト・ゲストOS共に修正が必要であり、プラットフォームが限られる Type-1に比べ実行速度が劣る リアルタイム性においては有利

本VMMの設計 CPU 時計 VMスケジューリング 例外・割り込み 割り込みコントローラ メモリ

CPU 対象とするCPUはARM1136(ARMv6) ユーザモード・特権モードの二つの動作モードを持つ 特権モードはさらに以下のような6つのプロセッサモードを持つ アボート、未定義、FIQ、IRQ、スーパーバイザ       (この5種類を例外モードと呼ぶ) システム R0-15、CPSR、SPSR(例外モードのみ)のレジスタを持つ 各例外モードはバンクレジスタを持つ

レジスタの構成

CPU仮想化 VMMを特権モード、ゲストカーネル・アプリケーションをユーザモードで動作させる そのためにセンシティブ命令を確実に検知し、その動作をエミュレーションしなければならない センシティブ命令はマシン状態を変更したり、マシン状態によって動作が変わる命令 ゲストカーネルがマシン状態を変更しようとした場合は、VMMが同様に仮想マシン状態を変更する ゲストカーネルが特権モードとユーザモードで動作が変化するような命令を実行した場合、VMMがその動作をエミュレーションし結果を返す

ARMにおけるセンシティブ命令 4種類のセンシティブ命令 MSR・MRS命令 SPSRがCPSRへコピーされる可能性がある命令 CPSR・SPSRレジスタの操作を行う SPSRがCPSRへコピーされる可能性がある命令 R15をデスティネーションレジスタとする算術命令・論理命令・LDM(3) MCR・MRC命令 コプロセッサのレジスタへの操作を行う ユーザモードレジスタにアクセスする命令 LDM(2)、STM(2)

センシティブ命令実行時の動作 (マニュアルにおける記述) MSR・MRS命令 CPSRの特権ビット(割り込み制御ビット・モードビット)への操作は無視 SPSRへの操作は予測不能 SPSRがCPSRへコピーされる可能性がある命令 予測不能 MCR・MRC命令 v5までは全て未定義例外が発生 v6以降は一部の操作に限りユーザモードで実行可能 ユーザモードレジスタにアクセスする命令

センシティブ命令実行時の動作 (N810での実験結果) MSR・MRS命令によるSPSRへの操作 例外は発生しない SPSRがCPSRへコピーされる可能性がある命令 ユーザモードレジスタにアクセスする命令

センシティブ命令のエミュレーション 予測不能なセンシティブ命令はプラットフォーム依存の可能性も考えられる そのため全てのセンシティブ命令を動的に例外が発生する命令に書き換える その後、例外ハンドラにおいてエミュレーションコードを実行

センシティブ命令の処理 カーネルモード実行時のみ仮想PCから1ブロックの命令を読み込み、解析を行う ブロックは条件分岐命令までの区間、もしくは一定最大区間 該当するセンシティブ命令を検知し、SWI命令に書き換える 各センシティブ命令に対して、SWI命令の下位24ビットの値を設定 Linux(OABI)では下位24ビットが”0x900000+システムコール番号”と設定されるのでその範囲は使用しない Linux(EABI)では下位24ビットは常に0であり使用されない ゲストカーネルを実行させ、ソフトウェア割り込みが発生すると下位24ビットの値から対応するエミュレーション処理を判断・実行する 後の例外処理の部分でモード変更を例として具体的に説明します

時計 ゲストOSに仮想タイマ割り込みを発生させる 時刻の補正にCCNT(サイクルカウンタ)が使用されるのでそのエミュレーションを行う タイマ割り込みハンドラの縮退によるずれ VMMがCCNTの値を取得し、それをゲストOSに返す CCNTは特権命令であるMCR命令により値を取得するため

VMスケジューリング RTOSを同時に動作させる場合はリアルタイム性を考慮する必要がある 割り込みが発生した場合、直ちにRTOSが動作するVMに実CPUを割り当てる 汎用OSはRTOSがアイドル状態になった場合にのみ実CPUを割り当て実行させる アイドル状態の判定はWFIモードへの移行を検知して行う

例外・割り込み 例外・割り込みが発生すると自動的に各例外モードにプロセッサモードが変更 各例外ベクタから実行が開始される レジスタも各例外モードのバンクレジスタに切り替わる LR_bankには”例外が発生した命令+4もしくは+8”が代入 SPSR_bankには例外発生前のCPSRが代入 各例外ベクタから実行が開始される 例外ベクタは0x00000000~0x00000020 HIVECSを有効にしている場合は0xFFFF0000~0xFFFF0020 通常ハンドラ実行後、PCをRdとしたMOVSやSUBS等の命令で復帰(SPSR_bankがCPSRにコピーされる)

例外ベクタ

例外処理の流れ SP_usr、LR_usrをVSP_svc、VLR_svcもしくはVSP_usr、VLR_usrに保存 SPSRをVSPSR_bankに保存 CPSRをVCPSR、SPSRにコピー ゲストの例外ハンドラの開始アドレスから1ブロック読み込み解析・センシティブ命令の書き換え VSP_bankをSPにロード ユーザモードにモード変更し仮想例外を発生させる SPSRをユーザモードに更新し、ゲストの仮想ベクタアドレスをPCにロード

例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM ゲストアプリケーションがデータアボートが発生するような命令を実行 ゲストアプリケーション ゲストカーネル VMM

例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM データアボート例外発生 SP、LR、SPSRがバンクレジスタに切り替わる SP_usr、LR_usrをVSP_usr、VLR_usrに保存 SPSRをVSPSR_abtに保存 CPSRをVCPSR、SPSRにコピー データアボートのハンドラ開始アドレスから命令を1ブロック読み込み センシティブ命令の解析・書き換え SPにVSP_abtをセット SPSRをユーザモードに更新し、ゲストのハンドラをロード

例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM 仮想データアボート例外発生 データアボートのハンドラを実行 普通ユーザモードのレジスタの保存等をしてスーパーバイザモードに移行 (本当のLinuxのハンドラコードは違いますが、ここではMSR命令でモードフラグを変更し移行したとする) ゲストカーネル VMM

例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM ソフトウェア割り込み発生(センシティブ命令エミュレーション) SP、LR、SPSRがバンクレジスタに切り替わる SP_usr、LR_usrをVSP_abt、VLR_abtに保存 SPSRをVCPSRにコピーし、VCPSRをスーパーバイザモードに更新 LRを保存 SP、LRにVSP_svc、VLR_svcをセット 保存したLRをPCにセット(SPSRがCPSRにコピーされる命令で)

例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM データアボートのハンドラを実行終了 ユーザモードへ移行(ここでは ”SUBS PC,LR,#4”実行したとする) ゲストカーネル VMM

例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM ソフトウェア割り込み発生(センシティブ命令エミュレーション) SP、LR、SPSRがバンクレジスタに切り替わる SP_usr、LR_usrをVSP_svc、VLR_svcに保存 VSPSR_svcをVCPSRにコピー SP、LR、SPSRにVSP_usr、VLR_usr、VSPSR_svcをセット VLR_svc-4をPCにセット(SPSRがCPSRにコピーされる命令で)

例外処理の例(データアボート) ゲストアプリケーションが実行を再開 ゲストアプリケーション ゲストカーネル VMM

割り込みコントローラ ARMは2種類の割り込みコントローラを提供 Vectored Interrupt Controller(VIC) Generic Interrupt Controller(GIC) この2種類以外にも実際のチップ製造メーカーが提供する独自割り込みコントローラが多数ある ARM1136ではVICのPL192がサポートされており、そのエミュレーションを行う

PL192 PL192の特徴 0xFFFFF000(HIVECSが有効な時は0xFFFEF000)をベースアドレスとしてメモリにマップ 32個の割り込みベクタを持つ 各割り込みベクタに優先度・マスクを設定可能 ハードウェアで最も優先度の高い割り込みソースのサービスルーチンをロード 0xFFFFF000(HIVECSが有効な時は0xFFFEF000)をベースアドレスとしてメモリにマップ IRQ・FIQハンドラのアドレスからVICADDRESSに1命令でアクセスできるようにするため VICポートを用いる場合はVICADDRESSは使用されないのでレイテンシには影響ない

PL192のレジスタ(1)

PL192のレジスタ(2) ・・・ ・・・

PL192のレジスタ(3)

PL192のエミュレーション ゲストOSがPL192の仮想レジスタを直接管理 VMMはその仮想レジスタの値を見て、優先度・マスクから発生させる仮想割り込みを決定する マルチプロセッサ上だと一時的にこのページをread onlyにする、ただシングルプロセッサ上での実装を前提 仮想VICADDRESSレジスタにサービスルーチンのアドレスをロード VEを有効にしている(VICポートを使用)場合はゲストOSにサービスルーチンアドレスから実行を再開させる

メモリ 仮想化 保護 シャドウページテーブルを用いる ページアロケータによって物理ページの割り当て・回収 ゲストカーネル・アプリケーションが同じユーザモードで動作するため、動作モードによる保護ができない ARMのドメインを用いてゲストカーネル・アプリケーションの保護を行う

シャドウページテーブル シャドウページテーブルの2通りの管理方式 1つのシャドウページテーブルを用いる 複数のシャドウページテーブルを用いる ゲストページテーブルが切り替わる度にシャドウページテーブルをフラッシュ 管理が簡単であり実装は容易 シャドウページテーブル更新のコストが非常に大きい 複数のシャドウページテーブルを用いる 各ゲストページテーブル毎にシャドウページテーブルを用意 シャドウページテーブルをフラッシュする必要がなく、更新のコストが少ない 全てのゲストページテーブルにシャドウページテーブルを用意するとメモリ使用量が非常に多くなる メモリ使用量を抑えるためには、一定量のメモリを使用するとページテーブルを解放し再利用する必要があり管理が複雑になる

本VMMのシャドウページテーブル 複数のシャドウページテーブルによる管理 ゲスト切り替えの度にシャドウページテーブルをフラッシュするのはあまりにコストが大きい ARMのTLBはASIDを持つので、各ゲストページテーブルとASIDを対応づければTLBのフラッシュの必要もなくなる ただし、組み込みのメモリ量は多くないので、シャドウページテーブルに使用するメモリを一定量に制限する

ドメイン ARMにはドメインを用いたアクセス制御機構がある 16個のドメイン ページテーブル・TLBエントリには所属するドメインのフィールドがある DACRに16個の各ドメインに対してアクセス不可、クライアント、マネージャのいずれかを設定する クライアントはAPビットによるチェック、マネージャは常にアクセス許可

ドメインによる保護 このようにすることでゲストアプリケーションからゲストカーネル のメモリ領域を保護することができる D0をVMM、D1をゲストカーネル、D2をゲストアプリケーションとする D0 D1 D2 VMM クライアント マネージャ ゲストカーネル ゲストアプリケーション アクセス不可 このようにすることでゲストアプリケーションからゲストカーネル のメモリ領域を保護することができる