Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Naoya Kaneko
PPT, PDF
9,243 views
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1でしゃべった内容。 未完成版。pdfで上げたのが見えないので上げ直し。
Technology
◦
Read more
19
Save
Share
Embed
Embed presentation
Download
Downloaded 73 times
1
/ 38
2
/ 38
Most read
3
/ 38
4
/ 38
5
/ 38
6
/ 38
7
/ 38
8
/ 38
9
/ 38
10
/ 38
Most read
11
/ 38
12
/ 38
Most read
13
/ 38
14
/ 38
15
/ 38
16
/ 38
17
/ 38
18
/ 38
19
/ 38
20
/ 38
21
/ 38
22
/ 38
23
/ 38
24
/ 38
25
/ 38
26
/ 38
27
/ 38
28
/ 38
29
/ 38
30
/ 38
31
/ 38
32
/ 38
33
/ 38
34
/ 38
35
/ 38
36
/ 38
37
/ 38
38
/ 38
More Related Content
PDF
OSC2011 Tokyo/Fall 濃いバナ(virtio)
by
Takeshi HASEGAWA
PDF
Zynq mp勉強会資料
by
一路 川染
PDF
実践イカパケット解析α
by
Yuki Mizuno
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
PDF
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PDF
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
PPTX
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
OSC2011 Tokyo/Fall 濃いバナ(virtio)
by
Takeshi HASEGAWA
Zynq mp勉強会資料
by
一路 川染
実践イカパケット解析α
by
Yuki Mizuno
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
What's hot
PDF
UEFIベアメタルプログラミング
by
Yuma Ohgami
PDF
MQTTとAMQPと.NET
by
terurou
PPTX
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
by
NTT DATA Technology & Innovation
PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
by
VirtualTech Japan Inc.
PPTX
トランザクションの設計と進化
by
Kumazaki Hiroki
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
by
Takeshi HASEGAWA
PDF
Ethernetの受信処理
by
Takuya ASADA
PPTX
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
PDF
BuildKitの概要と最近の機能
by
Kohei Tokunaga
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
by
yoku0825
PDF
Scapyで作る・解析するパケット
by
Takaaki Hoyo
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
by
Yahoo!デベロッパーネットワーク
PDF
すごい constexpr たのしくレイトレ!
by
Genya Murakami
PDF
Xbyakの紹介とその周辺
by
MITSUNARI Shigeo
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
プログラムを高速化する話
by
京大 マイコンクラブ
PDF
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
PDF
周辺知識から理解するMySQL の GIS機能 ~ClubMySQL #4
by
sakaik
PDF
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
PDF
FPGA+SoC+Linux実践勉強会資料
by
一路 川染
UEFIベアメタルプログラミング
by
Yuma Ohgami
MQTTとAMQPと.NET
by
terurou
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
by
NTT DATA Technology & Innovation
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
by
VirtualTech Japan Inc.
トランザクションの設計と進化
by
Kumazaki Hiroki
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
by
Takeshi HASEGAWA
Ethernetの受信処理
by
Takuya ASADA
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
BuildKitの概要と最近の機能
by
Kohei Tokunaga
MySQL 5.7にやられないためにおぼえておいてほしいこと
by
yoku0825
Scapyで作る・解析するパケット
by
Takaaki Hoyo
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
by
Yahoo!デベロッパーネットワーク
すごい constexpr たのしくレイトレ!
by
Genya Murakami
Xbyakの紹介とその周辺
by
MITSUNARI Shigeo
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
プログラムを高速化する話
by
京大 マイコンクラブ
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
周辺知識から理解するMySQL の GIS機能 ~ClubMySQL #4
by
sakaik
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
FPGA+SoC+Linux実践勉強会資料
by
一路 川染
Viewers also liked
PDF
C91 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
PDF
C90 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
PDF
LP49 SystemCall Gateway
by
Naoya Kaneko
PDF
続・ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
PPTX
Chokaigi 2015: Wi-Fi Survey
by
Naoya Kaneko
PDF
DPDKを拡張してみた話し
by
Lagopus SDN/OpenFlow switch
PDF
Dpdk環境の話
by
Masaru Oki
C91 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
C90 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
LP49 SystemCall Gateway
by
Naoya Kaneko
続・ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
Chokaigi 2015: Wi-Fi Survey
by
Naoya Kaneko
DPDKを拡張してみた話し
by
Lagopus SDN/OpenFlow switch
Dpdk環境の話
by
Masaru Oki
Similar to virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
PDF
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
PDF
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
PDF
qpstudy05 lignhing talk - virtio
by
Takeshi HASEGAWA
ODP
Bhyve Internals
by
Takuya ASADA
PDF
BHyVe: The BSD Hypervisor
by
Takuya ASADA
PDF
大義のために:趣味と実益のためのVMware RPCインターフェースの活用 by アブドゥル・アジズ・ハリリ, ジャシエル・スペルマン, ブライアン・ゴーレンク
by
CODE BLUE
PDF
Osc2009 Do Xen Hara
by
Kazuhisa Hara
ODP
Bhyve code reading
by
Takuya ASADA
PDF
Split device driver による仮想マシンモニタ上のセキュアOSの機能拡張
by
Ruo Ando
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
qpstudy05 lignhing talk - virtio
by
Takeshi HASEGAWA
Bhyve Internals
by
Takuya ASADA
BHyVe: The BSD Hypervisor
by
Takuya ASADA
大義のために:趣味と実益のためのVMware RPCインターフェースの活用 by アブドゥル・アジズ・ハリリ, ジャシエル・スペルマン, ブライアン・ゴーレンク
by
CODE BLUE
Osc2009 Do Xen Hara
by
Kazuhisa Hara
Bhyve code reading
by
Takuya ASADA
Split device driver による仮想マシンモニタ上のセキュアOSの機能拡張
by
Ruo Ando
More from Naoya Kaneko
PDF
Interop Tokyo 2018 Day1 Wi-Fi
by
Naoya Kaneko
PDF
JANOG41 Day3 Wi-Fi
by
Naoya Kaneko
PDF
モバイルするハニーポット無線LANアクセスポイント
by
Naoya Kaneko
PDF
C92 Day1 Wi-Fi
by
Naoya Kaneko
PDF
JANOG40 Day2 Wi-Fi
by
Naoya Kaneko
PDF
Interop Tokyo 2017 Wi-Fi
by
Naoya Kaneko
PDF
NSDI2016 Reading: Wireless Part 1
by
Naoya Kaneko
PDF
C89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
PDF
Reitaisai12 2015 Wi-Fi
by
Naoya Kaneko
PDF
C87 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
PDF
続々・ららら、(無線的に)素敵なComiket Space C86
by
Naoya Kaneko
PDF
秋山郷発火村 ネットワーク周りの備忘録・反省
by
Naoya Kaneko
PDF
Carmina Burana 全文私訳/注釈(TBD)
by
Naoya Kaneko
Interop Tokyo 2018 Day1 Wi-Fi
by
Naoya Kaneko
JANOG41 Day3 Wi-Fi
by
Naoya Kaneko
モバイルするハニーポット無線LANアクセスポイント
by
Naoya Kaneko
C92 Day1 Wi-Fi
by
Naoya Kaneko
JANOG40 Day2 Wi-Fi
by
Naoya Kaneko
Interop Tokyo 2017 Wi-Fi
by
Naoya Kaneko
NSDI2016 Reading: Wireless Part 1
by
Naoya Kaneko
C89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
Reitaisai12 2015 Wi-Fi
by
Naoya Kaneko
C87 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
続々・ららら、(無線的に)素敵なComiket Space C86
by
Naoya Kaneko
秋山郷発火村 ネットワーク周りの備忘録・反省
by
Naoya Kaneko
Carmina Burana 全文私訳/注釈(TBD)
by
Naoya Kaneko
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
1.
1 2013/06/09 virtio の基本的なところ (DRAFT) @n_kane
2.
2 参考資料 ✤ というかこのスライドよりむしろ以下の資料を読みましょう ... ✤
Virtio PCI Card Specification ✤ http://github.com/rustyrussell/virtio-spec ✤ とある virtio ドライバの接続部分〜インタフェース〜 by @hasegaw ✤ http://www.slideshare.net/TakeshiHasegawa1/osc2011- tokyofall-virtio
3.
3 ここでするお話について ✤ virtio の基本的なところのお話 ✤
どううごいているか ✤ どうシステムソフトウェアから使えるか ✤ ( つまり )virtio pci card specification のサブセット的な内容 ✤ 主に plan9 の virtio 実装をメインにお話を進めます
4.
4 ここでしないお話について ✤ 仮想化周りの歴史的背景、実現方法、実装、構造 e.t.c. ✤
virtio での通信が VMM 内でどうハンドリングされているか ✤ indirect モード , MSI-X の活用など
5.
5 お題目 ✤ virtio で何ができるの? ✤
virtio デバイスとその見え方 ✤ virtio を使った通信
6.
6 virtio で何ができるの?
7.
7 virtio でホスト・ゲスト間通信! ✤ 何か不思議な力により ✤
ホスト&ゲスト OS 間で共有できるリングバッファができます ✤ しかもメモリ空間が許すかぎり何本でも ✤ ここに適切に情報を詰めてやることで ✤ ゲストからホストへ、あるいはホストからゲストへデータの転送 ができます
8.
8 データの転送ができるなら .... ✤ 準仮想化ドライバ作るときに使えるよね! ✤
たとえば ✤ コントロール用 , TX 用 , RX 用のリングバッファがあれば ✤ NIC っぽい動作をさせられるのでは! ( ホスト側ががんばれば )
9.
9 “virtio デバイス”というもの
10.
10 virtio device ✤ virtio
デバイス ✤ なんらかのまとまった機能を持った仮想的な対象物 = デバイス ✤ たとえば NIC, ブロックデバイス , ファイルシステム e.t.c ✤ いくつかのリングバッファを用いて操作してやることで一定の役 割を果たしてくれる人のこと
11.
11 virtio device as
a PCI device ✤ virtio デバイスはゲストから、 PCI デバイスとして認識されます ✤ ベンダ ID : 0x1AF4 ✤ プロダクト ID : 0x1000 - 0x1040 ✤ これだとどの virtio デバイスだか区別がつかない .... ✤ Subsystem Device ID でデバイスのタイプを判断
12.
12 http://marsee101.blog19.fc2.com/blog-entry-84.html より拝借 0x1000 〜
0x1040 0x1AF4 IDID TYPETYPE 1 NIC 2 BLOCK 3 CONSOLE 5 MEMORY BALLOON 9 9P Subsytem Device ID の例
13.
13 認識できたら初期化 ... の前に ✤
PCI I/O Space に何が入っているかを抑えておきましょう デバイス ( ホスト ) からゲストに 対して提示される利用可能な機能 (feature) 一覧 ( 各ビット ) ゲストが利用する機能 (feature) を 書き込みデバイス ( ホスト ) に伝え るフィールド Virtio Header
14.
14 認識できたら初期化 ... の前に ✤
PCI I/O Space に何が入っているかを抑えておきましょう Qselect に示される番号のリングバ ッファのアドレス ÷ 4096 (guest physical) 操作中のリングバッファの番号 Qselect に示される番号のリング バッファ長 ( デスクリプタの数 ) Virtio Header
15.
15 認識できたら初期化 ... の前に ✤
PCI I/O Space に何が入っているかを抑えておきましょう デバイスの初期化状態や利用状況 についてゲストが告知するために 利用 割り込み状態の通知 リングバッファを操作した際に ゲストがその番号を書き込む Virtio Header
16.
16 virtio デバイスの初期化 (
共通 ) 1 各 OS ごとの PCI デバイス認識フェー ズ 2 ベースアドレスレジスタから map( 左 の構造がみえるようになる ) 3 Status の ACKNOWLEDGE(0x1) ビッ トを立ててデバイスを発見できたこと 、 virtio デバイスだと分かっているこ とを通知 Virtio Header 16
17.
17 virtio デバイスの初期化 (
共通 ) 4 Status の DRIVER(0x2) ビットを立てて 、ゲストがこのデバイスをサポート == ドライバを実装していることを通知 5 デバイス固有の初期化 6 リングバッファの用意 ( 後述 ) 7 Devfeat の内、利用する物を Drvfeat に 書き込み ( 後述 ) Virtio Header 17
18.
18 virtio デバイスの初期化 (
共通 ) 8 すべて正常に成功したら , Status の DRIVER_OK(0x4) ビットを立てる 8 失敗したら , Status の FAILED(0x80) ビットを立てる 以上で attach の部分は終了! 18
19.
19 リングバッファの構造
20.
20 リングバッファとは ✤ 実態はメモリ上のこんなかんじのデータ
21.
21 リングバッファとは ✤ 実態はメモリ上のこんなかんじのデータ デスクリプタテーブル available リング used
リング
22.
22 デスクリプタ ✤ 一つの転送を扱うエンティティ
23.
23 デスクリプタ ✤ 一つの転送を扱うエンティティ 転送対象のデータのアドレス (guest physical) データ長 このデスクリプタの扱いについての フラグ 後続して転送するデスクリプタの番号
24.
24 デスクリプタ ✤ 一つの転送を扱うエンティティ フラグフラグ ((
値値 )) 意味意味 VRING_DESC_F_NEXT (0x01) next フィールドに示される 後続要素がある ( デスクリプ タチェーンによる転送 ) VRING_DESC_F_WRITE (0x02) このデスクリプタは ( ホスト から見て )Write Only である . ホスト→ゲスト方向の転送 VRING_DESC_F_INDIRECT (0x04) Indirect モードによる転送
25.
25 デスクリプタテーブル ✤ ( そのまま
) デスクリプタの配列 ✤ 長さは Virtio Header の Qsize( 個 ) ✤ 転送の度に動的に alloc するのではなく、このテーブルからフリーな デスクリプタを見つけてきて使うという方式 ✤ 基本的には”インデックス値”でアクセスされる
26.
26 available リング このリング用のフラグ ( 割り込み抑制など※
) デスクリプタテーブル used リング avail リング中の 先頭インデックス値 (availidx) デスクリプタ番号を書き込む リング本体 ここに指定された番号のデスクリ プタが処理されるまでは割り込み 抑制
27.
27 used リング このリング用のフラグ ( 割り込み抑制など※
) デスクリプタテーブル available リング used リング中の 先頭インデックス値 (usedidx) デスクリプタ番号が書き込まれる リング本体 ここに指定された番号のデスクリ プタが処理されるまでは割り込み 抑制
28.
28 available リングと used
リング ✤ 基本的には前述のデスクリプタの番号を入れておく配列 ( 長さ Qsize) ✤ available リング ✤ ゲストがデスクリプタの番号を書き込んでリング上のインデックス値 (availidx) を 進めると、それが ( ホストにより ) 処理される ✤ used リング ✤ ホストにより処理されたデスクリプタの番号が書き込まれ、リング上のインデックス値 (usedidx) が更新される ✤ 正確には”デスクリプタの番号”と”デスクリプタチェーンの長さ”が入る ✤ このオペレーション周りは後述
29.
29 リングバッファの扱い方 - 初期 化
-
30.
30 先ほど飛ばしたお話 ✤ リングバッファを用意するのはゲストの責任。以下の流れで行う。 1 .
触りたいリングの番号 (i) を Qselect にセット 2. Qsize をみる 3. 0 ならこのデバイスで Qselect 番目のリングは使えないので終わり 4. > 0 ならその長さのリングが使える 5. 前述のリングバッファを Qsize を元に作る 6. Qaddr にリングバッファの物理アドレスをセット 7. i++; goto 1; Virtio Header
31.
31 初期化周りの細い話 ✤ virtio の本筋とはあまり関係ないけれど、利便性のために
OS でやっ ていること ✤ デスクリプタテーブルのチェーン化 ( 右図 ) ✤ フリーなデスクリプタ番号の保持 ( 右図の free) ✤ avail リング , used リングの先頭アドレス保持 ✤ 過去の usedidx の保持 (lastused)
32.
32 リングバッファの扱い方 - 転送
-
33.
33 転送の手順 ✤ 箇条書きにすると .... 1
. 転送パスのキューを引っ張ってくる 2. その中でフリーなデスクリプタを探してきて、適切に情報を詰め る 3. avail リングの先頭にその番号を書き込み , availidx を +1 して更新 4. Virtio Header の Qnotify に転送パスのキューの番号を書き込む ✤ この時点でホストに制御が移って処理が行われる
34.
34 分かりづらいので図に ... 初期状態 4 番がフリーなので 情報をつめて
... availidx のところに番号を書 き込む availidx を進めて、変更を加 えたリング番号を Qnotify に 書き込み
35.
35 転送が終わったら .... ✤ 割り込みが入って何かデバイス
( ホスト ) から応答があるはず .... →used リングを見よう 1 . 現在の usedidx と lastused の差から変更があったことを検知 2. lastused == usedidx になるまで used リングのデスクリプタを処理 3. 処理が終わったデスクリプタはデスクリプタテーブルに戻す
36.
36 イメージ図 割り込みが入った時点 usedidx と lastused
の差から 変更を検知 一つ進めて該当するデスクリプ タを処理 終わった物は返す
37.
37 slide is never
done
38.
38 virtio-net の場合の事情 ✤ virtqueue
は3つ : tx/rx/control ✤ Drvfeat
Download