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
Submit search
EN
Uploaded by
Naoya Kaneko
PPT, PDF
9,237 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
Interrupt Affinityについて
by
Takuya ASADA
PDF
Dalvik仮想マシンのアーキテクチャ 改訂版
by
Takuya Matsunaga
PDF
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
PDF
Intro to SVE 富岳のA64FXを触ってみた
by
MITSUNARI Shigeo
PDF
KubernetesでRedisを使うときの選択肢
by
Naoyuki Yamada
PDF
mTCP使ってみた
by
Hajime Tazaki
PDF
HTTP/2 入門
by
Yahoo!デベロッパーネットワーク
OSC2011 Tokyo/Fall 濃いバナ(virtio)
by
Takeshi HASEGAWA
Interrupt Affinityについて
by
Takuya ASADA
Dalvik仮想マシンのアーキテクチャ 改訂版
by
Takuya Matsunaga
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
Intro to SVE 富岳のA64FXを触ってみた
by
MITSUNARI Shigeo
KubernetesでRedisを使うときの選択肢
by
Naoyuki Yamada
mTCP使ってみた
by
Hajime Tazaki
HTTP/2 入門
by
Yahoo!デベロッパーネットワーク
What's hot
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
PPTX
Keycloakのステップアップ認証について
by
Hitachi, Ltd. OSS Solution Center.
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
PDF
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
by
Yahoo!デベロッパーネットワーク
PPTX
Raspberry Piで始める自宅サーバー超入門
by
VirtualTech Japan Inc./Begi.net Inc.
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
IETF111 RATS: Remote Attestation ProcedureS 報告
by
Kuniyasu Suzaki
PPTX
Dockerからcontainerdへの移行
by
Akihiro Suda
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
by
Kentaro Ebisawa
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
PDF
クラウドを最大限活用するinfrastructure as codeを考えよう
by
NTT Communications Technology Development
PPTX
最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜 - OpenStack最新情報セミナー(2017年3月)
by
VirtualTech Japan Inc.
PDF
目grep入門 +解説
by
murachue
PPT
Cassandraのしくみ データの読み書き編
by
Yuki Morishita
PDF
スイッチ・ルータのしくみ
by
ogatay
PDF
NumPy闇入門
by
Ryosuke Okuta
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
PDF
Scapyで作る・解析するパケット
by
Takaaki Hoyo
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
Keycloakのステップアップ認証について
by
Hitachi, Ltd. OSS Solution Center.
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
by
Yahoo!デベロッパーネットワーク
Raspberry Piで始める自宅サーバー超入門
by
VirtualTech Japan Inc./Begi.net Inc.
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
IETF111 RATS: Remote Attestation ProcedureS 報告
by
Kuniyasu Suzaki
Dockerからcontainerdへの移行
by
Akihiro Suda
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
Glibc malloc internal
by
Motohiro KOSAKI
ネットワークOS野郎 ~ インフラ野郎Night 20160414
by
Kentaro Ebisawa
Dockerからcontainerdへの移行
by
Kohei Tokunaga
クラウドを最大限活用するinfrastructure as codeを考えよう
by
NTT Communications Technology Development
最近のたまおきの取り組み 〜OpenStack+αの実現に向けて〜 - OpenStack最新情報セミナー(2017年3月)
by
VirtualTech Japan Inc.
目grep入門 +解説
by
murachue
Cassandraのしくみ データの読み書き編
by
Yuki Morishita
スイッチ・ルータのしくみ
by
ogatay
NumPy闇入門
by
Ryosuke Okuta
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
Scapyで作る・解析するパケット
by
Takaaki Hoyo
Viewers also liked
PDF
DPDKを拡張してみた話し
by
Lagopus SDN/OpenFlow switch
PDF
Dpdk環境の話
by
Masaru Oki
PDF
続・ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
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
PPTX
Chokaigi 2015: Wi-Fi Survey
by
Naoya Kaneko
DPDKを拡張してみた話し
by
Lagopus SDN/OpenFlow switch
Dpdk環境の話
by
Masaru Oki
続・ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
C91 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
C90 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
LP49 SystemCall Gateway
by
Naoya Kaneko
Chokaigi 2015: Wi-Fi Survey
by
Naoya Kaneko
Similar to virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
PDF
大義のために:趣味と実益のためのVMware RPCインターフェースの活用 by アブドゥル・アジズ・ハリリ, ジャシエル・スペルマン, ブライアン・ゴーレンク
by
CODE BLUE
PDF
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
PDF
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
ODP
Bhyve Internals
by
Takuya ASADA
PDF
BHyVe: The BSD Hypervisor
by
Takuya ASADA
PDF
qpstudy05 lignhing talk - virtio
by
Takeshi HASEGAWA
ODP
Bhyve code reading
by
Takuya ASADA
PDF
Osc2009 Do Xen Hara
by
Kazuhisa Hara
PDF
Split device driver による仮想マシンモニタ上のセキュアOSの機能拡張
by
Ruo Ando
大義のために:趣味と実益のためのVMware RPCインターフェースの活用 by アブドゥル・アジズ・ハリリ, ジャシエル・スペルマン, ブライアン・ゴーレンク
by
CODE BLUE
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
by
tshiroyama
17th_ACRi_Webinar_Sadasue-san_Slide_20240724
by
直久 住川
Bhyve Internals
by
Takuya ASADA
BHyVe: The BSD Hypervisor
by
Takuya ASADA
qpstudy05 lignhing talk - virtio
by
Takeshi HASEGAWA
Bhyve code reading
by
Takuya ASADA
Osc2009 Do Xen Hara
by
Kazuhisa Hara
Split device driver による仮想マシンモニタ上のセキュアOSの機能拡張
by
Ruo Ando
More from Naoya Kaneko
PDF
モバイルするハニーポット無線LANアクセスポイント
by
Naoya Kaneko
PDF
Carmina Burana 全文私訳/注釈(TBD)
by
Naoya Kaneko
PDF
C89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
PDF
秋山郷発火村 ネットワーク周りの備忘録・反省
by
Naoya Kaneko
PDF
続々・ららら、(無線的に)素敵なComiket Space C86
by
Naoya Kaneko
PDF
NSDI2016 Reading: Wireless Part 1
by
Naoya Kaneko
PDF
Interop Tokyo 2018 Day1 Wi-Fi
by
Naoya Kaneko
PDF
Interop Tokyo 2017 Wi-Fi
by
Naoya Kaneko
PDF
Reitaisai12 2015 Wi-Fi
by
Naoya Kaneko
PDF
C87 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
PDF
JANOG40 Day2 Wi-Fi
by
Naoya Kaneko
PDF
C92 Day1 Wi-Fi
by
Naoya Kaneko
PDF
JANOG41 Day3 Wi-Fi
by
Naoya Kaneko
モバイルするハニーポット無線LANアクセスポイント
by
Naoya Kaneko
Carmina Burana 全文私訳/注釈(TBD)
by
Naoya Kaneko
C89 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
秋山郷発火村 ネットワーク周りの備忘録・反省
by
Naoya Kaneko
続々・ららら、(無線的に)素敵なComiket Space C86
by
Naoya Kaneko
NSDI2016 Reading: Wireless Part 1
by
Naoya Kaneko
Interop Tokyo 2018 Day1 Wi-Fi
by
Naoya Kaneko
Interop Tokyo 2017 Wi-Fi
by
Naoya Kaneko
Reitaisai12 2015 Wi-Fi
by
Naoya Kaneko
C87 Wi-Fi: ららら、(無線的に)素敵なComiket Space
by
Naoya Kaneko
JANOG40 Day2 Wi-Fi
by
Naoya Kaneko
C92 Day1 Wi-Fi
by
Naoya Kaneko
JANOG41 Day3 Wi-Fi
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