Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
仮想化環境におけるパケットフォワーディング
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takuya ASADA
December 01, 2011
Technology
190
0
Share
仮想化環境におけるパケットフォワーディング
Takuya ASADA
December 01, 2011
More Decks by Takuya ASADA
See All by Takuya ASADA
Interrupt Affinityについて
syuu1228
0
320
僕のIntel NUCが起動しないわけがない
syuu1228
3
4.4k
Introduction to bhyve
syuu1228
1
450
OSv on bhyve
syuu1228
3
450
ruby-virtualmachine
syuu1228
0
300
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
syuu1228
2
890
10GbE時代のネットワークI/O高速化
syuu1228
14
8.8k
Play with UEFI
syuu1228
1
380
仮想化環境での利用者公平性
syuu1228
0
200
Other Decks in Technology
See All in Technology
Agents CLI と Gemini Enterprise Agent Platform で マルチエージェント開発が楽しくなる!
kaz1437
0
140
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
190
AIでAIをテストする - 音声AIエージェントの品質保証戦略
morix1500
1
140
[OAWTT26][THR1028] Oracle AI Database 26ai へのアップグレード:ベストプラクティスと最新情報
oracle4engineer
PRO
1
110
CloudTrail を見つめ直してみる
kazzpapa3
1
110
Cortex Codeのコスト見積ヒントご紹介
yokatsuki
0
110
MLOps導入のための組織作りの第一歩
akasan
0
360
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
250
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
1.5k
目的ファーストのハーネス設計 ~ハーネスの変更容易性を高めるための優先順位~
gotalab555
8
2.3k
Hacobu Tech Deck
hacobu
PRO
0
120
バイブコーディングで3倍早く⚪⚪を作ってみた
samakada
0
120
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Designing for Timeless Needs
cassininazir
0
200
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
180
Measuring & Analyzing Core Web Vitals
bluesmoon
9
810
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
270
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
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ʹཹ·Βͣε Πον͕Γͭͭ༗Δ