Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
仮想化環境におけるパケットフォワーディング
Search
Takuya ASADA
December 01, 2011
Technology
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
仮想化環境におけるパケットフォワーディング
Takuya ASADA
December 01, 2011
More Decks by Takuya ASADA
See All by Takuya ASADA
Interrupt Affinityについて
syuu1228
0
350
僕のIntel NUCが起動しないわけがない
syuu1228
3
4.5k
Introduction to bhyve
syuu1228
1
480
OSv on bhyve
syuu1228
3
470
ruby-virtualmachine
syuu1228
0
320
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
syuu1228
2
920
10GbE時代のネットワークI/O高速化
syuu1228
14
8.9k
Play with UEFI
syuu1228
1
410
仮想化環境での利用者公平性
syuu1228
0
230
Other Decks in Technology
See All in Technology
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
390
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
0
240
僕のハーネスを紹介します
watany
5
1.4k
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
330
Metadata - Section 2: Simple Metadata & Meta Tags
mohab1
0
110
「私が一番顧客に詳しい」を捨てる~ 全員が一次情報に精通する開発チームをつくり、PMが次のボトルネックへ染み出すまで
kaminashi
3
1.2k
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
190
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
220
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
370
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
5
1.5k
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
180
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
300
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
So, you think you're a good person
axbom
PRO
2
2.2k
Rails Girls Zürich Keynote
gr2m
96
14k
Agile that works and the tools we love
rasmusluckow
331
22k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
Abbi's Birthday
coloredviolet
4
10k
Thoughts on Productivity
jonyablonski
76
5.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Transcript
ԾԽڥʹ͓͚Δ ύέοτϑΥϫʔσΟϯά ઙా ˏ ౦ژՊେֶ Twitter: @syuu1228
͓͞Β͍
ԾԽٕज़ͱ 1ͷίϯϐϡʔλ্ʹෳͷԾతͳίϯϐϡʔλΛ ಈ࡞ͤ͞ɺͦΕͧΕͷ্ͰOSɾΞϓϦέʔγϣϯΛ࣮ ߦ ϋʔυΣΞ 04 ϋʔυΣΞ ϋΠύʔόΠβ 04 04
ϓϩηε ϓϩηε ϓϩηε ैདྷ ԾԽ
ϋʔυΣΞԾԽࢧԉػೳʹ ΑΔԾԽ • CPUʹϋΠύʔόΠβΛ࣮ߦ͢ΔϞʔυͱήε τOSΛ࣮ߦ͢ΔϞʔυΛՃɿIntel VTɺAMD-V • ϋʔυΣΞϨϕϧͰԾԽʹରԠ͢ΔࣄʹΑ ΓԾԽΦʔόϔουΛݮ͠ɺϋΠύʔόΠ βͷ࣮Λ୯७ʹग़དྷΔ
• ϋʔυΣΞࢧԉग़དྷΔൣғΛ͛ͭͭ͋Δ • ϝϞϦཧͷԾԽࢧԉɿEPT • σόΠεIOͷԾԽࢧԉɿIntel VT-d + SR-IOV Χʔωϧ Ϟʔυ Ϣʔβ Ϟʔυ Χʔωϧ Ϟʔυ Ϣʔβ Ϟʔυ ϋΠύʔόΠβ Ϟʔυ ήετϞʔυ ring 0 ring 3
LINUX KVMͷΈ
LINUX KVM ֓ཁ • LinuxΧʔωϧʹΈࠐ·ΕͨγϯϓϧͳϋΠύʔόΠβʢԾԽࢧ ԉػೳͷ͋ΔCPUΛલఏʣ • CPUԾԽҎ֎ͷػೳKVMରԠͷQEMU͕୲ʢԾσόΠεɺϝ ϞϦ֬อɺBIOS…ʣ LinuxΧʔωϧ
KVM QEMU Χʔωϧ Ϣʔβ ϋΠύʔόΠβϞʔυ ήετϞʔυ KVM αϙʔτ ԾσόΠε ήετ04
QEMU • ϓϩάϥϜͰCPUΛΤϛϡϨʔτɺήετڥͷϓϩάϥϜΛ࣮ߦ • ҟͳΔΞʔΩςΫνϟΛΤϛϡϨʔτग़དྷΔʢ͜Ε͕ຊདྷͷతʣ • ඇৗʹ͍ɾΤϛϡϨʔγϣϯԾԽʹແବ QEMU mov dx,3FBh
mov al,128 out dx,al $16 Τϛϡ Ϩʔλ ࣮ߦ Ծσ όΠε OS ཧσ όΠε ཧ $16 IO
QEMU-KVM • CPUΤϛϡϨʔλΛಈ͔͢ΘΓʹKVMήετϞʔυͷΓସ ͑Λཁٻ͢ΔΑ͏ʹվ • ήετ͔ΒIO͕ൃੜͨ͠߹ɺKVM͔ΒQEMUԾσόΠεͷ IO͕ૹΕΔΑ͏ʹվ QEMU Ծσ όΠε
OS ཧσ όΠε ཧ $16 KVM Ϟʔυସ
ήετϞʔυͷΓସ͑ • QEMUCPUΤϛϡϨʔγϣϯΛߦ͏ΘΓʹήετͷϞʔυΓସ͑Λґཔ͢ΔioctlΛΧʔ ωϧൃߦ • KVMCPUͷϞʔυΛήετϞʔυҠߦ • ήετOS͕ϋʔυΣΞͷIOͳͲτϥοϓ͞ΕΔΑ͏ͳಈ࡞Λߦ͏͔ɺཧϋʔυΣΞ͔ ΒͷׂࠐΈ͕͔͔Δ·ͰήετϞʔυ͕࣮ߦ͞ΕΔ LinuxΧʔωϧ
KVM QEMU Χʔωϧ Ϣʔβ ήετ04 KVM αϙʔτ ԾσόΠε ᶃ ioctl(KVM_RUN) ᶄ VMLAUNCH ϋΠύʔόΠβϞʔυ ήετϞʔυ
ԾσόΠεͷIO • ήετOS͕σόΠεIOɺήετϞʔυ͕தஅ͞Ε੍ޚ͕KVMΔ • QEMUσόΠεΤϛϡϨʔγϣϯΛґཔ • QEMUͰσόΠεΤϛϡϨʔγϣϯɺ݁ՌΛKVM௨ LinuxΧʔωϧ KVM QEMU
Χʔωϧ Ϣʔβ ήετ04 KVM αϙʔτ ԾσόΠε ᶃσόΠεͷ*0 ϋΠύʔόΠβϞʔυ ήετϞʔυ ᶄ2&.6ॲཧΛґཔ ᶅσόΠεΤϛϡϨʔγϣϯ
KVMͷԾNIC
NICΤϛϡϨʔγϣϯ • QEMUΛ࣮ͬͯࡏͷNICΛΤϛϡϨʔτ→ήετOSͰطଘͷυϥΠό͕͑Δ • ԾϨδελͷΞΫηεͷͨͼʹήετϞʔυͷ࣮ߦΛதஅ͠ɺΧʔωϧ͔Β QEMUʹΓସ͑ͯΤϛϡϨʔγϣϯΛߦΘͳ͚ΕͳΒͳ͍ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ
Ϣʔβ NIC NICυϥΠό tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ϑΥϫʔυ ׂΓࠐΈ ཧׂΓࠐΈ ύέοτ όοϑΝ Ϩδελ ΞΫηε ׂΓࠐΈ Ϩδελ ΞΫηε ίϐʔ ίϐʔ
NICΤϛϡϨʔγϣϯͷಈ࡞ • ύέοτ͕NICʹண৴ɺཧׂΓࠐΈ͕ൃੜ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ
NICΤϛϡϨʔγϣϯͷಈ࡞ • NICυϥΠό͕ύέοτΛड৴ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴
NICΤϛϡϨʔγϣϯͷಈ࡞ • ϒϦοδ͕ύέοτΛtapσόΠεϑΥϫʔυ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ
NICΤϛϡϨʔγϣϯͷಈ࡞ • tap͔ΒQEMUίϐʔ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ
NICΤϛϡϨʔγϣϯͷಈ࡞ • QEMU͔ΒήετͷύέοτόοϑΝίϐʔ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ
NICΤϛϡϨʔγϣϯͷಈ࡞ • QEMU͔ΒKVMԾׂΓࠐΈΛཁٻ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶈԾׂΓࠐΈཁٻ
NICΤϛϡϨʔγϣϯͷಈ࡞ • KVMήετʹԾׂΓࠐΈΛηοτͯ͠Ϟʔυସ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶈԾׂΓࠐΈཁٻ ᶉԾׂΓࠐΈ
NICΤϛϡϨʔγϣϯͷಈ࡞ • ήετͷNICυϥΠό͕ϨδελΞΫηεΛߦ͍ɺήετϞʔυ͕தஅ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶊԾϨδελΞΫηε ᶈԾׂΓࠐΈཁٻ
NICΤϛϡϨʔγϣϯͷಈ࡞ • KVMQEMUʹΤϛϡϨʔγϣϯΛཁٻ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶊԾϨδελΞΫηε ᶋΤϛϡϨʔγϣϯཁٻ
NICΤϛϡϨʔγϣϯͷಈ࡞ • QEMUe1000ΤϛϡϨʔγϣϯΛߦ͍ɺ݁ՌΛKVM௨ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶊԾϨδελΞΫηε ᶌΤϛϡϨʔγϣϯ݁Ռ௨
NICΤϛϡϨʔγϣϯͷಈ࡞ • KVMΤϛϡϨʔγϣϯ݁ՌΛηοτͯ͠ήετ෮ؼ Ҏ߱ɺϨδελΞΫηεͷͨͼʹᶊʙᶍͷ܁Γฦ͠ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC
NICυϥΠό tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶍήετ෮ؼ ᶌΤϛϡϨʔγϣϯ݁Ռ௨
NICΤϛϡϨʔγϣϯͷಈ࡞ • ήετͷNICυϥΠό͕ύέοτΛड৴ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶍήετ෮ؼ ᶌΤϛϡϨʔγϣϯ݁Ռ௨ ᶎύέοτड৴
NICΤϛϡϨʔγϣϯͷಈ࡞ • TCP/IPελοΫ͕ύέοτΛϑΥϫʔυ Χʔωϧ Χʔωϧ ήετ ϋΠύʔόΠβ Ϣʔβ NIC NICυϥΠό
tapυϥΠό bridge qemu tapΫϥΠΞϯτ e1000 ΤϛϡϨʔγϣϯ kvm e1000 υϥΠό TCP/IP ελοΫ NIC2 ᶃཧׂΓࠐΈ ύέοτ όοϑΝ ᶄύέοτड৴ ᶅUBQϒϦοδ ᶆίϐʔ ᶇίϐʔ ᶍήετ෮ؼ ᶌΤϛϡϨʔγϣϯ݁Ռ௨ ᶎύέοτड৴ ᶏύέοτϑΥϫʔυ
VIRTIO-NET • IOԾԽϑϨʔϜϫʔΫʮvirtioʯΛ༻͍ͯύέοτͷೖग़ྗΛߦ͏ →ήετOSʹvirtio༻υϥΠό͕ඞཁ • ԾϨδελଘࡏͤͣɺvirtio ring্ͷใΛݟͳ͕ΒύέοτΛऔΓग़͢ →ϋΠύʔόΠβͷΓସ͑ճ͕গͳ͍ Χʔωϧ Χʔωϧ
ήετ Ϣʔβ NIC NICυϥΠό tapυϥΠό bridge qemu tapΫϥΠΞϯτ virtio server kvm virtio υϥΠό TCP/IP ελοΫ NIC2 ϑΥϫʔυ ׂΓࠐΈ ཧׂΓࠐΈ ίϐʔ WJSUJPSJOH ίϐʔ ׂΓࠐΈ ϋΠύʔόΠβ
VHOST-NET • QEMUΛ௨ͣ͞ɺΧʔωϧͷvhost-netϞδϡʔϧ͕ϗετ㲗ήε τͷύέοτΓऔΓΛ੍ޚ • QEMU㲗KVMͷΓସ͑ίετΛݮ Χʔωϧ Χʔωϧ ήετ Ϣʔβ
NIC NICυϥΠό tapυϥΠό bridge qemu vhost-net kvm virtio υϥΠό TCP/IP ελοΫ NIC2 ϑΥϫʔυ ׂΓࠐΈ ཧׂΓࠐΈ WJSUJPSJOH ׂΓࠐΈ ϋΠύʔόΠβ ίϐʔ ίϐʔ
SR-IOV • ཧNIC͕VMʹରͯ͠ԾNICΛఏڙɹIOϋΠύʔόΠβʔΛհࡏͤͣʹߦΘΕΔ • ׂࠐΈ͚ͩԾԽग़དྷ͍ͯͳ͍ͷͰKVMΛ௨ͯ͡సૹ͞ΕΔ • ࠷ੑೳ͕ߴ͍͕ϋʔυରԠ͕ඞཁʗήετͷύέοτΛϑΟϧλʔɾվม͢Δࣄ͍͠ NIC Χʔωϧ Χʔωϧ
ήετ Ϣʔβ PF PFυϥΠό qemu kvm VF υϥΠό TCP/IP ελοΫ NIC2 ϑΥϫʔυ ׂΓࠐΈ ཧׂΓࠐΈ ׂΓࠐΈ ׂࠐΈ ϋϯυϥ VF %."ύεεϧʔ ϋΠύʔόΠβ
ͲΕΛ͏͖ʁ • ෯͍OSͰԾNIC͕ಈ࡞͢Δඞཁ͕͋Δ →NICΤϛϡϨʔγϣϯɺe1000͕࠷ߴ • ࠷ۙͷLinuxΛಈ͔͢༧ఆɺSR-IOVରԠNIC͕ແ͍ →vhost-net • SR-IOVରԠNIC͕͋Δ →SR-IOV
KVMͷԾωοτϫʔΫ
BRIDGE + TAP • STPΛؚΉ802.1dඪ४४ڌͷϒϦοδ࣮ • netfilterʹΑΔϑΟϧλϦϯά • ϒϦοδࣗମΛΠϯλϑΣʔεͱͯ͠ίϯϑΟάϨʔγϣϯՄೳ ϒϦοδ
xx:xx:xx:xx:xx:01 ཧ/*$ xx:xx:xx:xx:xx:00 tap0 xx:xx:xx:xx:xx:02 tap1 xx:xx:xx:xx:xx:03 QEMU QEMU
BRIDGE+TAPͰNAT • ϒϦοδʹTAPͷΈΛܨ͗ɺϒϦοδΠϯλϑΣʔεʹ IPϚεΧϨʔυΛઃఆͯ͠NATΛߏ ϒϦοδ xx:xx:xx:xx:xx:01 ཧ/*$ xx:xx:xx:xx:xx:00 tap1 xx:xx:xx:xx:xx:03
QEMU tap0 xx:xx:xx:xx:xx:02 QEMU NAT
MACVTAP • ཧNICʹରͯ͠ՃͷMACΞυϨεΛ༩ɺಠཱͨ͠ΠϯλϑΣʔεͱͯ͠ಈ࡞ • netfilterʹඇରԠɺbridgeΑΓ؆қతͳ࣮Ͱʮ͍ʯͱ͞Ε͍ͯΔ • ߏ্ɺNATߏʹ͑ͳ͍ ཧ/*$ xx:xx:xx:xx:xx:00 macvtap0
xx:xx:xx:xx:xx:01 macvtap1 xx:xx:xx:xx:xx:02 QEMU QEMU
MACVTAPͷϞʔυ • bridge tap㲗tapؒɺtap㲗NICؒ௨৴Λߦ͑ΔϞʔυ • private tap㲗tapؒɺtap㲗NICؒ௨৴ΛڐՄ͠ͳ͍Ϟʔυ • vepa શͯͷύέοτΛ֎෦εΠονͰεΠονϯά͢ΔϞʔυ
• passthrough NICʹೖͬͯ͘ΔશͯͷύέοτΛಛఆͷtapʹྲྀ͢Ϟʔυ
OPENVSWITCH • ԾϚγϯʹର͠ԾOpenFlowεΠονΛఏڙ • ཧߏʹറΒΕͳ͍ॊೈͳԾωοτϫʔΫΛ L2ϨϕϧͰߏஙՄೳ
ͲΕΛ͏͖ʁ • NATڥΛߏɺύέοτϑΟϧλϦϯάͳͲΛߦ͏ →bridge + tap • ߴͳϒϦοδڥ →macvtap •
OpenFlowΛ༻͍ͯॊೈͳL2ωοτϫʔΫΛߏங →OpenvSwitch
࣮ݧతͳػೳɾ࣮தͷػೳ
VHOST-NETͷθϩίϐʔରԠ • tap→vhost-netɺvhost-net→ήετؒͷύέοτίϐʔΛ੍ • εϧʔϓοτͷ্ɺϨΠςϯγͷݮ͕ظ͞ΕΔ Χʔωϧ Χʔωϧ ήετ Ϣʔβ NIC
NICυϥΠό tapυϥΠό bridge qemu vhost-net kvm virtio υϥΠό TCP/IP ελοΫ NIC2 ϑΥϫʔυ ׂΓࠐΈ ཧׂΓࠐΈ WJSUJPSJOH ׂΓࠐΈ ϋΠύʔόΠβ ίϐʔͳ͠ ίϐʔͳ͠
VHOST-NETͷ ϚϧνΩϡʔରԠ • ݱঢ়ͷγϯάϧΩϡʔͳԾ NICͰɺϒϦοδҎ߱ͷύ ε͕ಉ࣌ʹ̍εϨουͰ͔͠ ॲཧͰ͖ͳ͍ҝɺύϑΥʔϚ ϯεωοΫʹͳΔ • vCPU͕ෳ͋ΔڥͰͷੑೳ
্͕ظ͞Ε͍ͯΔ TJOHMFRVFVF WIPTUOFU NIC /*$υϥΠό CSJEHF UBQ WJSUJPQVTI LWN WJSUJPυϥΠό 5$1*1 ϩοΫڝ߹ ͕ൃੜʂ NVMUJRVFVF WIPTUOFU NIC /*$υϥΠό CSJEHF UBQ WJSUJPQVTI LWN WJSUJPυϥΠό 5$1*1
SR-IOVͷϚϧνΩϡʔରԠ • 82599ͷVF࠷େ̐Ωϡʔ·ͰͷRSSʹରԠ • ݱঢ়ͰυϥΠόʹ࣮͞Ε͍ͯͳ͍͕ɺυϥΠόର ԠͰར༻ՄೳʹͳΔͱࢥΘΕΔ
EVB: EDGE VIRTUAL BRIDGING • VEBɿSR-IOVରԠNIC্ͷεΠονͰVMؒ௨৴Λॲཧ • VEPAɿཧεΠονͰVMؒ௨৴Λॲཧ VM VM
VM tap tap tap switch virtio driver NIC switch VM VM VM VF VF VF Linux Kernel Linux Kernel SR-IOV NIC ιϑτϒϦοδ switch switch 7&# VM VM VM VF VF VF Linux Kernel SR-IOV NIC switch 7&1"
·ͱΊ • KVMʹ͓͚ΔԾNICͷϚϧνίΞڥͷ࠷దԽະ ͩෆे • ԾԽͷϋʔυΣΞʹΑΔࢧԉNICʹཹ·Βͣε Πον͕Γͭͭ༗Δ