160311_icm2015-muramatsu-v2.pptx

32 

Loading.... (view fulltext now)

Loading....

Loading....

Loading....

Loading....

全文

(1)

Linux

におけるパケット処理機構の

性能評価に基づいたNFV導⼊の⼀検討

○村松 真†, 川島 ⿓太†, 中⼭ 裕貴††, 林 經正††, 松尾 啓志†

名古屋⼯業⼤学⼤学院

††

株式会社ボスコ・テクノロジーズ

ICM研究会 2016/03/11

(2)

研究⽬的

NFV

環境に適したサーバ構成を検討

汎⽤IAサーバ パケット処理機構 VM 物理環境 仮想化環境 仮想NICバックエンド機構 仮想スイッチ

性能要因を考察

(3)

アウトライン

2

u

研究⽬的

ü

パケット処理機構と仮想NICバックエンド機構

u

評価内容

評価(1): 物理サーバ上でのパケット転送

評価(2): VMと仮想スイッチ間のパケット転送

評価(3): VM上でのパケット転送

u

NFV

環境のサーバ構成の検討

u

まとめと今後の課題

(4)

Network Functions Virtualization (NFV)

u

ソフトウェアでネットワーク機能を実現

専⽤ハードウェア機器 汎⽤IAサーバ VMVM VM VM 機器コスト・運⽤コストを削減 迅速かつ柔軟にサービスを提供可能

(5)

汎⽤IAサーバの課題

4 汎⽤IAサーバ VM パケット処理機構 仮想NICバックエンド機構 割り込み パケットコピー コンテキストスイッチ OpenFlow処理 仮想スイッチ 新たなパケット処理機構(仮想スイッチ)/仮想NICバックエンド機構が提案

(6)

パケット処理機構/仮想NICバックエンド機構

u

パケット処理機構 (仮想スイッチ)

ü

NAPI: Linux New API (Open vSwitch)

ü

netmap (VALE)

ü

Intel DPDK (OVS with DPDK, Lagopus)

u

仮想NICバックエンド機構

ü

vhost-net

(7)

パケット処理機構と仮想スイッチ

6 NIC memory skb DMA page use r sp ace ke rn el sp ace NIC memory netmap ring NIC memory DMA page

Linux NAPI

netmap

DPDK

DMA

DMA DMA DMA

DMA to User Space DMA from User Space 割り込み/ ポーリング ポーリング割り込み/ VALEスイッチ Open vSwitch netmap API 直接参照 DPDK API ポーリング

(8)

OVS/DPDK

とLagopusの違い

NIC memory skb DMA page use r sp ace ke rn el sp ace NIC memory netmap ring NIC memory

DMA 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

(9)

仮想NICバックエンド機構

8 use r sp ace ke rn el sp ace memory

vhost-net

vhost-user

VM memory 物理サーバ メモリコピー vhost-net 物理サーバ VM memory バッファ 参照 メモリコピー コンテキスト スイッチが発⽣ コンテキストスイッチが 発⽣しない

(10)

アウトライン

u

研究⽬的

ü

パケット処理機構と仮想NICバックエンド機構

u

評価内容

評価(1): 物理サーバ上でのパケット転送

評価(2): VMと仮想スイッチ間のパケット転送

評価(3): VM上でのパケット転送

u

NFV

環境のサーバ構成の検討

u

まとめと今後の課題

(11)

評価項⽬

本研究における

評価対象

評価項⽬

10 物理環境の評価対象 パケット処理機構 Linux NAPI netmap Intel DPDK 仮想化環境の評価対象 仮想スイッチ Open vSwitch VALE Lagopus 仮想NICバックエンド機構 vhost-net vhost-user フロー数 単⼀フロー 複数フロー エントリ数 単⼀エントリ 複数エントリ チェーニング数 単⼀VM 複数VM VMのパケット処理機構 Linux NAPI netmap Intel DPDK パケット転送速度 パケット転送遅延時間・遅延ジッタ

(12)

アウトライン

u

研究⽬的

ü

パケット処理機構と仮想NICバックエンド機構

u

評価内容

評価(1): 物理サーバ上でのパケット転送

評価(2): VMと仮想スイッチ間のパケット転送

評価(3): VM上でのパケット転送

u

NFV

環境のサーバ構成の検討

u

まとめと今後の課題

(13)

評価(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 物理サーバ

(14)

評価(1): 評価対象/評価内容

u

評価対象

u

評価内容

ü

パケット転送速度

ü

パケット転送遅延

OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK

仮想スイッチ OVS VALE OVS Lagopus

(動作空間) (Kernel) (User) (User) (User)

(15)

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]

(16)

評価(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

(17)

評価(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サイクル消費

(18)

評価(1): OVS/NAPIの性能要因

NIC DMA page skb skb Linear Buf header memcpy skbの確保/解放 lock/unlock 6回 memory netmap, DPDKはゼロコピー, ロック回数の削減により⾼速化を実現 根源的な処理に約50%(1000~/2294)のサイクル数を消費

(19)

評価(1): パケット転送遅延

18 0 100,000 200,000 300,000 400,000 500,000 C o u n ts Latency [us] 10 20 30 40

u

転送レート

ü

100K pps

OSTA OVS/DPDK VALE/netmap OVS/NAPI Lagopus/DPDK

(20)

評価(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

ハードウェア割り込みとポーリングが半々に混在

ほとんどのパケットをポーリング処理

(21)

アウトライン

20

u

研究⽬的

ü

パケット処理機構と仮想NICバックエンド機構

u

評価内容

評価(1): 物理サーバ上でのパケット転送

評価(2): VMと仮想スイッチ間のパケット転送

評価(3): VM上でのパケット転送

u

NFV

環境のサーバ構成の検討

u

まとめと今後の課題

(22)

評価(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 物理サーバ

(23)

評価(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 コンテキストスイッチ以外

(24)

評価(2): 評価結果

0 2 4 6 8 10

Pattern 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 メモリコピー カーネル/ユーザ空間間のコンテキストスイッチ コンテキストスイッチが発⽣しない

(25)

アウトライン

24

u

研究⽬的

ü

パケット処理機構と仮想NICバックエンド機構

u

評価内容

評価(1): 物理サーバ上でのパケット転送

評価(2): VMと仮想スイッチ間のパケット転送

評価(3): VM上でのパケット転送

u

NFV

環境のサーバ構成の検討

u

まとめと今後の課題

(26)

評価(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 物理サーバ

(27)

評価(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がボトルネック コンテキストスイッチがボトルネック

(28)

アウトライン

u

研究⽬的

ü

パケット処理機構と仮想NICバックエンド機構

u

評価内容

評価(1): 物理サーバ上でのパケット転送

評価(2): VMと仮想スイッチ間のパケット転送

評価(3): VM上でのパケット転送

u

NFV

環境のサーバ構成の検討

u

まとめと今後の課題

(29)

NFV

環境のサーバ構成の検討

u

評価(1)に基づく検討

ü

転送速度

ü

遅延時間・ジッタ

ü

汎⽤性

28

ü

OVS/NAPI

ü

VALE/netmap

ü

OVS/DPDK

状況に応じたパケット処理機構と仮想スイッチを選択

7Mpps per worker thread 遅延ジッタが不安定

(30)

まとめと今後の課題

u 

まとめ

ü

Linux

上で様々なパケット処理機構を評価し

性能要因を考察

ü

転送速度を重要視する場合はnetmap, Intel DPDK

›  New APIではmemcpyやlockなどに処理に⼤半のサイクル数を消費

ü

遅延ジッタはNew API, netmap, Intel DPDKすべてにおいて

抑えられることが確認

›  厳密に抑えたい場合はIntel DPDKが適切

u 

今後の課題

ü

多数のフローが混在する環境下での評価

(31)

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'

(32)

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)

Updating...

参照

Updating...

関連した話題 :