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
Takuya ASADA
December 01, 2011
Technology
0
170
仮想化環境におけるパケットフォワーディング
Takuya ASADA
December 01, 2011
Tweet
Share
More Decks by Takuya ASADA
See All by Takuya ASADA
Interrupt Affinityについて
syuu1228
0
280
僕のIntel NUCが起動しないわけがない
syuu1228
3
4.4k
Introduction to bhyve
syuu1228
1
400
OSv on bhyve
syuu1228
3
410
ruby-virtualmachine
syuu1228
0
260
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
syuu1228
2
840
10GbE時代のネットワークI/O高速化
syuu1228
14
8.7k
Play with UEFI
syuu1228
1
340
仮想化環境での利用者公平性
syuu1228
0
170
Other Decks in Technology
See All in Technology
마라톤 끝의 단거리 스퍼트: 2025년의 AI
inureyes
PRO
1
670
2025-07-31: GitHub Copilot Agent mode at Vibe Coding Cafe (15min)
chomado
2
370
クマ×共生 HACKATHON - 熊対策を『特別な行動」から「生活の一部」に -
pharaohkj
0
290
robocopy の怖い話/scary-story-about-robocopy
emiki
0
460
人に寄り添うAIエージェントとアーキテクチャ #BetAIDay
layerx
PRO
8
2k
AIに全任せしないコーディングとマネジメント思考
kikuchikakeru
0
440
AI関数が早くなったので試してみよう
kumakura
0
110
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
PRO
6
220
LIFF CLIとngrokを使ったLIFF/LINEミニアプリのお手軽実機確認
diggymo
0
230
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
ojima_h
1
220
相互運用可能な学修歴クレデンシャルに向けた標準技術と国際動向
fujie
0
200
私とAWSとの関わりの歩み~意志あるところに道は開けるかも?~
nagisa53
1
160
Featured
See All Featured
Producing Creativity
orderedlist
PRO
346
40k
Automating Front-end Workflow
addyosmani
1370
200k
It's Worth the Effort
3n
185
28k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
We Have a Design System, Now What?
morganepeng
53
7.7k
Gamification - CAS2011
davidbonilla
81
5.4k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
750
Measuring & Analyzing Core Web Vitals
bluesmoon
7
540
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
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ʹཹ·Βͣε Πον͕Γͭͭ༗Δ