Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
仮想化環境におけるパケットフォワーディング
Search
Takuya ASADA
December 01, 2011
Technology
0
180
仮想化環境におけるパケットフォワーディング
Takuya ASADA
December 01, 2011
Tweet
Share
More Decks by Takuya ASADA
See All by Takuya ASADA
Interrupt Affinityについて
syuu1228
0
300
僕のIntel NUCが起動しないわけがない
syuu1228
3
4.4k
Introduction to bhyve
syuu1228
1
420
OSv on bhyve
syuu1228
3
430
ruby-virtualmachine
syuu1228
0
280
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
syuu1228
2
860
10GbE時代のネットワークI/O高速化
syuu1228
14
8.8k
Play with UEFI
syuu1228
1
360
仮想化環境での利用者公平性
syuu1228
0
190
Other Decks in Technology
See All in Technology
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
1.7k
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4.4k
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
190
モダンデータスタックの理想と現実の間で~1.3億人Vポイントデータ基盤の現在地とこれから~
taromatsui_cccmkhd
2
270
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
250
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
11k
AI との良い付き合い方を僕らは誰も知らない
asei
0
270
Amazon Connect アップデート! AIエージェントにMCPツールを設定してみた!
ysuzuki
0
140
AgentCoreとStrandsで社内d払いナレッジボットを作った話
motojimayu
1
970
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
670
Microsoft Agent Frameworkの可観測性
tomokusaba
1
110
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
2
66
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
What's in a price? How to price your products and services
michaelherold
246
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
28
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
From π to Pie charts
rasagy
0
91
Design in an AI World
tapps
0
100
Designing Experiences People Love
moore
143
24k
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ʹཹ·Βͣε Πον͕Γͭͭ༗Δ