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
160
仮想化環境におけるパケットフォワーディング
Takuya ASADA
December 01, 2011
Tweet
Share
More Decks by Takuya ASADA
See All by Takuya ASADA
Interrupt Affinityについて
syuu1228
0
220
僕のIntel NUCが起動しないわけがない
syuu1228
3
4.3k
Introduction to bhyve
syuu1228
1
350
OSv on bhyve
syuu1228
3
370
ruby-virtualmachine
syuu1228
0
240
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
syuu1228
2
810
10GbE時代のネットワークI/O高速化
syuu1228
14
8.6k
Play with UEFI
syuu1228
1
300
仮想化環境での利用者公平性
syuu1228
0
150
Other Decks in Technology
See All in Technology
今から、 今だからこそ始める Terraform で Azure 管理 / Managing Azure with Terraform: The Perfect Time to Start
nnstt1
0
240
re:Invent 2024のふりかえり
beli68
0
110
comilioとCloudflare、そして未来へと向けて
oliver_diary
6
450
月間60万ユーザーを抱える 個人開発サービス「Walica」の 技術スタック変遷
miyachin
1
140
AWSマルチアカウント統制環境のすゝめ / 20250115 Mitsutoshi Matsuo
shift_evolve
0
120
AWSの生成AIサービス Amazon Bedrock入門!(2025年1月版)
minorun365
PRO
7
470
2025年に挑戦したいこと
molmolken
0
160
データ基盤におけるIaCの重要性とその運用
mtpooh
4
530
dbtを中心にして組織のアジリティとガバナンスのトレードオンを考えてみた
gappy50
0
290
Godot Engineについて調べてみた
unsoluble_sugar
0
410
2025年の挑戦 コーポレートエンジニアの技術広報/techpr5
nishiuma
0
150
My small contributions - Fujiwara Tech Conference 2025
ijin
0
1.5k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
What's in a price? How to price your products and services
michaelherold
244
12k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Producing Creativity
orderedlist
PRO
343
39k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Typedesign – Prime Four
hannesfritz
40
2.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Statistics for Hackers
jakevdp
797
220k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
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ʹཹ·Βͣε Πον͕Γͭͭ༗Δ