linuxにおけるパケット処理機構の 性能評価に基づいたnfv導⼊ … ·...
TRANSCRIPT
Linuxにおけるパケット処理機構の 性能評価に基づいたNFV導⼊の⼀検討
○村松 真†, 川島 ⿓太†, 中⼭ 裕貴††, 林 經正††, 松尾 啓志† † 名古屋⼯業⼤学⼤学院 †† 株式会社ボスコ・テクノロジーズ ICM研究会
2016/03/11
アウトライン
2
u 研究⽬的 ü パケット処理機構と仮想NICバックエンド機構
u 評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u NFV環境のサーバ構成の検討
u まとめと今後の課題
Network Functions Virtualization (NFV)
u ソフトウェアでネットワーク機能を実現
3
専⽤ハードウェア機器
汎⽤IAサーバ
VMVMVM VM
機器コスト・運⽤コストを削減
迅速かつ柔軟にサービスを提供可能
汎⽤IAサーバの課題
4
汎⽤IAサーバ
VM
パケット処理機構
仮想NICバックエンド機構
割り込み
パケットコピー
コンテキストスイッチ
OpenFlow処理 仮想スイッチ
新たなパケット処理機構(仮想スイッチ)/仮想NICバックエンド機構が提案
パケット処理機構/仮想NICバックエンド機構
u パケット処理機構 (仮想スイッチ)
ü NAPI: Linux New API (Open vSwitch)
ü netmap (VALE)
ü Intel DPDK (OVS with DPDK, Lagopus)
u 仮想NICバックエンド機構
ü vhost-net
ü vhost-user
5
パケット処理機構と仮想スイッチ
6NIC
memory
skb
DMA page
user
spa
ceke
rnel
spa
ce
NIC
memorynetmap ring
NIC
memoryDMA page
Linux NAPI netmap DPDK
DMADMA DMADMA
DMA to
User Space
DMA from
User Space
割り込み/ポーリング
割り込み/ポーリング
VALEスイッチ
Open vSwitch
netmap API
直接参照
DPDK API
ポーリング
OVS/DPDKとLagopusの違い
7NIC
memory
skb
DMA page
user
spa
ceke
rnel
spa
ce
NIC
memorynetmap ring
NIC
memoryDMA page (Hugepage)
Linux NAPI netmap DPDK
ポーリングDMADMA DMADMA
DMA to
User Space
DMA from
User Space
割り込み/ポーリング
割り込み/ポーリング
VALEスイッチ
Open vSwitch
netmap API
直接参照
DPDK API
I/O RX Processing I/O TX
I/O RX Processing I/O TX
I/O RX
Processing
I/O TX
I/O RX
Processing
I/O TX
CPU1
CPU1
CPU2
CPU3
OVS/DPDK (Run to completion)
Lagopus (Pipeline)
フロー単位で並列処理
⼊⼒---処理---出⼒をパイプライン処理
I/O RX
Processing
I/O TX
CPU2
仮想NICバックエンド機構
8
user
spa
ceke
rnel
spa
ce
memory
vhost-net vhost-user
VM
memory
物理サーバ
メモリコピー
vhost-net
物理サーバ
VM
memory
バッファ
参照
メモリコピーコンテキスト
スイッチが発⽣コンテキストスイッチが
発⽣しない
アウトライン
9
u 研究⽬的 ü パケット処理機構と仮想NICバックエンド機構
u 評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u NFV環境のサーバ構成の検討
u まとめと今後の課題
評価項⽬
本研究における評価対象と評価項⽬
10
物理環境の評価対象
パケット処理機構 Linux NAPI
netmapIntel DPDK
仮想化環境の評価対象
仮想スイッチ Open vSwitch
VALELagopus
仮想NICバックエンド機構 vhost-netvhost-user
フロー数 単⼀フロー複数フロー
エントリ数 単⼀エントリ複数エントリ
チェーニング数 単⼀VM複数VM
VMのパケット処理機構 Linux NAPI
netmapIntel DPDK
パケット転送速度
パケット転送遅延時間・遅延ジッタ
アウトライン
11
u 研究⽬的 ü パケット処理機構と仮想NICバックエンド機構
u 評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u NFV環境のサーバ構成の検討
u まとめと今後の課題
評価(1): 評価環境
12
10G Ethernet
CPU Intel Core i7 3.4GHz (4core, HT:off)
Memory 16GB
NIC Intel X540-T2 10Gb Ethernet
物理サーバの性能OS Fedora 22 (4.0.4-301-x86
64)
OVS v2.4.0
netmap v11.1
Lagopus v0.2.3
DPDK v2.1.0
ソフトウェアバージョン
• 1 フロー
• UDP
† Open Source Traffic Analyzer , https://people.kth.se/~danieltt/pktgen/
port1port2
Open Source Traffic
Analyzer†
• スループット
• 遅延
port1 port2
パケット処理機構
仮想スイッチ
• エントリ数: 1
• in_port=1, output:2
物理サーバ
評価(1): 評価対象/評価内容
u 評価対象
u 評価内容
ü パケット転送速度
ü パケット転送遅延
13
OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK仮想スイッチ OVS VALE OVS Lagopus
(動作空間) (Kernel) (User) (User) (User)パケット処理機構 NAPI netmap DPDK DPDK
0
2
4
6
8
10
OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK
Thro
ughp
ut [G
bps]
64 128 256 384 512 768 1024 1500
評価(1): パケット転送速度
14
v0.2.4で改善
約3.5Gbps (64B)
[B]
評価(1): 1パケットに必要なCPUサイクル数†
u CPU Hz (3.4G) ÷ pps から概算
15
OVS/NAPIに焦点を当てて要因を考察
† Assessing Soft- and Hardware Bottlenecks in PC-based Packet Forwarding Systems, Paul Emmerich et. al, Technische Universität München, ICN 2015
OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK2,294 288 262 7,389
評価(1): OVS/NAPIの性能要因
16
NIC
DMA page
skb
skb Linear Bufheader
memcpy
memory
0
500
1000
1500
2000
2500
64 128 256
Cyc
les
Data Size [B]
L1 Cache
0
500
1000
1500
2000
2500
64 128 256
Cyc
les
Data Size [B]
RAM
memcpyだけで約1000サイクル消費
評価(1): OVS/NAPIの性能要因
17
NIC
DMA page
skb
skb Linear Bufheader
memcpy
skbの確保/解放
lock/unlock 6回
memory
netmap, DPDKはゼロコピー, ロック回数の削減により⾼速化を実現
根源的な処理に約50%(1000~/2294)のサイクル数を消費
評価(1): パケット転送遅延
18
0
100,000
200,000
300,000
400,000
500,000
Cou
nts
Latency [us] 10 20 30 40
u 転送レート
ü 100K pps
OSTAOVS/DPDK
VALE/netmap
OVS/NAPI
Lagopus/DPDK
評価(1): パケット転送遅延
19
0 10,000 20,000 30,000 40,000 50,000 60,000 70,000
Cou
nts
Latency [us]
500K OSTA OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK
0 10,000 20,000 30,000 40,000 50,000 60,000 70,000
Cou
nts
Latency [us]
1M OSTA OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK
10 20 30 40
10 20 30 40
ハードウェア割り込みとポーリングが半々に混在
ほとんどのパケットをポーリング処理
DPDKはポーリングのみであるため遅延ジッタが常に安定
アウトライン
20
u 研究⽬的 ü パケット処理機構と仮想NICバックエンド機構
u 評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u NFV環境のサーバ構成の検討
u まとめと今後の課題
評価(2): 評価環境
2110G Ethernet
port1
OVS
VM
Open Source Traffic Analyzer
仮想NICバックエンド機構
• 1 フロー
• UDP
観測点
CPU Memory OS2 cores 1 GB CentOS 7.2
VMの性能
port2
• エントリ数: 1
• in_port=2, output:1 port1
物理サーバ
評価(2): 各実装パターンの評価
22
vhost-net vhost-net
vhost-net
Pattern 1 Pattern 2
Pattern 3 Pattern 4 (vhost-user)
OVS (Kernel)
OVS (User)
OVS (DPDK)
OVS (DPDK)
Use
rK
erne
lK
erne
lU
ser
Use
r
port1 port1
port1port1
コンテキストスイッチ
VMVM
VM VM
コンテキストスイッチ以外
評価(2): 評価結果
23
0
2
4
6
8
10
Pattern 1 Pattern 2 Pattern 3 Pattern 4
Thro
ughp
ut [G
bps]
64B 128B 256B 384B 512B 768B 1024B 1500B
メモリコピー カーネル/ユーザ空間間のコンテキストスイッチ
コンテキストスイッチが発⽣しない
アウトライン
24
u 研究⽬的 ü パケット処理機構と仮想NICバックエンド機構
u 評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u NFV環境のサーバ構成の検討
u まとめと今後の課題
評価(3): 評価環境
25
port2
10G Ethernet
port1
OVS
OVS/NAPI
port3 port4
in_port=3, output:4
• 1 フロー
• UDP
port1port2
Open Source Traffic Analyzer
ü Pattern 1 と Pattern 4を対象 vhost-net/OVS(Kernel) vhost-user/OVS(DPDK)
in_port=1, output:3
in_port=4, output:2
仮想NICバックエンド機構
VM
物理サーバ
評価(3): パケット転送速度
26
0 2 4 6 8
10 12 14 16
64 128 256 384 512 768 1024 1500
Thro
ughp
ut [M
pps]
Packet Size [B]
Pattern 1 Pattern 4 Theoretical
0 0.2 0.4 0.6 0.8
1 1.2 1.4 1.6
64 128 256 384 512 768 1024 1500
Thro
ughp
ut [M
pps]
Packet Size [B]
Pattern 1 Pattern 4 評価(1): OVS/NAPI
VMのOVS/NAPIがボトルネック
コンテキストスイッチがボトルネック
アウトライン
27
u 研究⽬的 ü パケット処理機構と仮想NICバックエンド機構
u 評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u NFV環境のサーバ構成の検討
u まとめと今後の課題
NFV環境のサーバ構成の検討
u 評価(1)に基づく検討
ü 転送速度
ü 遅延時間・ジッタ
ü 汎⽤性
28
ü OVS/NAPI
ü VALE/netmap
ü OVS/DPDK
状況に応じたパケット処理機構と仮想スイッチを選択
7Mpps per worker thread
遅延ジッタが不安定
まとめと今後の課題
u まとめ ü Linux上で様々なパケット処理機構を評価し、性能要因を考察
ü 転送速度を重要視する場合はnetmap, Intel DPDK
› New APIではmemcpyやlockなどに処理に⼤半のサイクル数を消費
ü 遅延ジッタはNew API, netmap, Intel DPDKすべてにおいて
抑えられることが確認
› 厳密に抑えたい場合はIntel DPDKが適切
u 今後の課題
ü 多数のフローが混在する環境下での評価
ü VM上でDPDKなどのパケット処理機構を⽤いた際の評価29
Lagopus 0.2.4の遅延ジッタ
300
10000 20000 30000 40000 50000 60000 70000
Freq
uenc
y
Latency [ns]
OSTA OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK Lagopus/DPDK'
10 20 30 40
0
100000
200000
300000
400000
500000
Freq
uenc
y
Latency [ns]
OSTA OVS/NAPI VALE/netmap
OVS/DPDK Lagopus/DPDK Lagopus/DPDK'
10 20 30 40