Linux
におけるパケット処理機構の
性能評価に基づいたNFV導⼊の⼀検討
○村松 真†, 川島 ⿓太†, 中⼭ 裕貴††, 林 經正††, 松尾 啓志†
†
名古屋⼯業⼤学⼤学院
††
株式会社ボスコ・テクノロジーズ
ICM研究会 2016/03/11研究⽬的
NFV
環境に適したサーバ構成を検討
汎⽤IAサーバ パケット処理機構 VM 物理環境 仮想化環境 仮想NICバックエンド機構 仮想スイッチ性能要因を考察
アウトライン
2u
研究⽬的
ü
パケット処理機構と仮想NICバックエンド機構
u
評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u
NFV
環境のサーバ構成の検討
u
まとめと今後の課題
Network Functions Virtualization (NFV)
u
ソフトウェアでネットワーク機能を実現
専⽤ハードウェア機器 汎⽤IAサーバ VMVM VM 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
パケット処理機構と仮想スイッチ
6 NIC memory skb DMA page use r sp ace ke rn el sp ace NIC memory netmap ring NIC memory DMA pageLinux NAPI
netmap
DPDK
DMA
DMA DMA DMA
DMA to User Space DMA from User Space 割り込み/ ポーリング ポーリング割り込み/ VALEスイッチ Open vSwitch netmap API 直接参照 DPDK API ポーリング
OVS/DPDK
とLagopusの違い
NIC memory skb DMA page use r sp ace ke rn el sp ace NIC memory netmap ring NIC memoryDMA page (Hugepage)
Linux NAPI
netmap
DPDK
ポーリング
DMA
DMA DMA DMA
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 use r sp ace ke rn el sp ace memoryvhost-net
vhost-user
VM memory 物理サーバ メモリコピー vhost-net 物理サーバ VM memory バッファ 参照 メモリコピー コンテキスト スイッチが発⽣ コンテキストスイッチが 発⽣しないアウトライン
u
研究⽬的
ü
パケット処理機構と仮想NICバックエンド機構
u
評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u
NFV
環境のサーバ構成の検討
u
まとめと今後の課題
評価項⽬
本研究における
評価対象
と
評価項⽬
10 物理環境の評価対象 パケット処理機構 Linux NAPI netmap Intel DPDK 仮想化環境の評価対象 仮想スイッチ Open vSwitch VALE Lagopus 仮想NICバックエンド機構 vhost-net vhost-user フロー数 単⼀フロー 複数フロー エントリ数 単⼀エントリ 複数エントリ チェーニング数 単⼀VM 複数VM VMのパケット処理機構 Linux NAPI netmap Intel DPDK パケット転送速度 パケット転送遅延時間・遅延ジッタアウトライン
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/
port1 port2 Open Source Traffic Analyzer† • スループット • 遅延 port1 port2 パケット処理機構 仮想スイッチ • エントリ数: 1 • in_port=1, output:2 物理サーバ
評価(1): 評価対象/評価内容
u
評価対象
u
評価内容
ü
パケット転送速度
ü
パケット転送遅延
OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK
仮想スイッチ OVS VALE OVS Lagopus
(動作空間) (Kernel) (User) (User) (User)
0 2 4 6 8 10
OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK
T h ro u g h p u t [Gbps ] 64 128 256 384 512 768 1024 1500
評価(1): パケット転送速度
14 v0.2.4で改善 約3.5Gbps (64B) [B]評価(1): 1パケットに必要なCPUサイクル数†
u
CPU Hz (
3.4
G) ÷
pps
から概算
OVS/NAPIに焦点を当てて要因を考察
† Assessing Soft- and Hardware Bottlenecks in PC-based Packet Forwarding Systems,
OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK
2,294
288
262
7,389
評価(1): OVS/NAPIの性能要因
16 NIC DMA page skb skb Linear Buf header memcpy memory 0 500 1000 1500 2000 2500 64 128 256 Cycles Data Size [B] L1 Cache 0 500 1000 1500 2000 2500 64 128 256 Cycles Data Size [B] RAM memcpyだけで約1000サイクル消費評価(1): OVS/NAPIの性能要因
NIC DMA page skb skb Linear Buf header memcpy skbの確保/解放 lock/unlock 6回 memory netmap, DPDKはゼロコピー, ロック回数の削減により⾼速化を実現 根源的な処理に約50%(1000~/2294)のサイクル数を消費評価(1): パケット転送遅延
18 0 100,000 200,000 300,000 400,000 500,000 C o u n ts Latency [us] 10 20 30 40u
転送レート
ü
100K pps
OSTA OVS/DPDK VALE/netmap OVS/NAPI Lagopus/DPDK評価(1): パケット転送遅延
19 0 10,000 20,000 30,000 40,000 50,000 60,000 70,000 C o u n ts 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 C o u n ts
1M OSTA OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK
10 20 30 40
10 20 30 40
ハードウェア割り込みとポーリングが半々に混在
ほとんどのパケットをポーリング処理
アウトライン
20u
研究⽬的
ü
パケット処理機構と仮想NICバックエンド機構
u
評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u
NFV
環境のサーバ構成の検討
u
まとめと今後の課題
評価(2): 評価環境
10G Ethernet port1 OVS VM Open Source Traffic Analyzer 仮想NICバックエンド機構 • 1 フロー • UDP 観測点 CPU Memory OS 2 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) U se r Ke rn el Ke rn el U se r U se r port1 port1 port1 port1 コンテキストスイッチ VM VM VM VM コンテキストスイッチ以外
評価(2): 評価結果
0 2 4 6 8 10Pattern 1 Pattern 2 Pattern 3 Pattern 4
T h ro u g h p u t [Gbps ] 64B 128B 256B 384B 512B 768B 1024B 1500B メモリコピー カーネル/ユーザ空間間のコンテキストスイッチ コンテキストスイッチが発⽣しない
アウトライン
24u
研究⽬的
ü
パケット処理機構と仮想NICバックエンド機構
u
評価内容
評価(1): 物理サーバ上でのパケット転送
評価(2): VMと仮想スイッチ間のパケット転送
評価(3): VM上でのパケット転送
u
NFV
環境のサーバ構成の検討
u
まとめと今後の課題
評価(3): 評価環境
port2 10G Ethernet port1 OVS OVS/ NAPI port3 port4 in_port=3, output:4 • 1 フロー • UDP port1 port2 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 T h ro u g h p u t [Mp p s] 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 T h ro u g h p u t [Mp p s] Packet Size [B]
Pattern 1 Pattern 4 評価(1): OVS/NAPI
VMのOVS/NAPIがボトルネック コンテキストスイッチがボトルネック
アウトライン
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
今後の課題
ü
多数のフローが混在する環境下での評価
Lagopus 0.2.4
の遅延ジッタ
30 0 10000 20000 30000 40000 50000 60000 70000 Frequency Latency [ns]OSTA OVS/NAPI VALE/netmap
OVS/DPDK Lagopus/DPDK Lagopus/DPDK'
10 20 30 40 0 100000 200000 300000 400000 500000 Frequency Latency [ns]
OSTA OVS/NAPI VALE/netmap
OVS/DPDK Lagopus/DPDK Lagopus/DPDK'
cycle vs. pps
u
CPU = Core i7 3770 (3.4GHz, Ivy)
0 2 4 6 8 10 12 14 16 18 T h ro u g h tp u [Mp p s] Cycles cycles vs. pps (3.4GHz)