NIC u NAPI Linux New API Open v

  • Slides: 30
Download presentation

パケット処理機構/仮想NICバックエンド機構 u パケット処理機構 (仮想スイッチ) ü NAPI: Linux New API (Open v. Switch) ü netmap

パケット処理機構/仮想NICバックエンド機構 u パケット処理機構 (仮想スイッチ) ü NAPI: Linux New API (Open v. Switch) ü netmap (VALE) ü Intel DPDK (OVS with DPDK, Lagopus) u 仮想NICバックエンド機構 ü vhost-net ü vhost-user 5

パケット処理機構と仮想スイッチ Linux NAPI DPDK VALEスイッチ user space kernel space netmap DPDK API 直接参照 DMA

パケット処理機構と仮想スイッチ Linux NAPI DPDK VALEスイッチ user space kernel space netmap DPDK API 直接参照 DMA page Open v. Switch netmap API skb DMA page memory DMA 割り込み/ ポーリング NIC netmap ring DMA memory DMA from User Space memory DMA 割り込み/ ポーリング NIC DMA to User Space ポーリング NIC 6

OVS/DPDKとLagopusの違い OVS/DPDK (Run to completion) Linux NAPI netmap Processing DPDK user space CPU 1

OVS/DPDKとLagopusの違い OVS/DPDK (Run to completion) Linux NAPI netmap Processing DPDK user space CPU 1 I/O RX Processing I/O TXVALEスイッチ フロー単位で並列処理 I/O RX Processing Open v. Switch DPDK API CPU 2 I/O TX 直接参照 kernel space Lagopus (Pipeline) netmap API I/O RX CPU 1 DMA I/O page TX (Hugepage) I/O RX memory I/O RX skb 入力---処理---出力をパイプライン処理 DMA page Processing memory DMA 割り込み/ ポーリング NIC CPU 2 Processing netmap ring memory DMA CPU 3 割り込み/ ポーリング I/O TX NIC DMA from User Space DMA to User Space ポーリング NIC 7

評価(1): 評価環境 • エントリ数: 1 • スループット • in_port=1, output: 2 • 遅延 仮想スイッチ

評価(1): 評価環境 • エントリ数: 1 • スループット • in_port=1, output: 2 • 遅延 仮想スイッチ Open Source Traffic Analyzer† port 2 パケット処理機構 port 1 • 1 フロー 物理サーバ • UDP port 2 port 1 10 G Ethernet 物理サーバの性能 ソフトウェアバージョン CPU Intel Core i 7 3. 4 GHz (4 core, HT: off) OS Fedora 22 (4. 0. 4 -301 -x 86 64) Memory 16 GB OVS v 2. 4. 0 NIC Intel X 540 -T 2 10 Gb Ethernet netmap v 11. 1 Lagopus v 0. 2. 3 DPDK v 2. 1. 0 † Open Source Traffic Analyzer , https: //people. kth. se/~danieltt/pktgen/ 12

Throughput [Gbps] 評価(1): パケット転送速度 64 128 256 384 512 768 1024 1500 [B] 10

Throughput [Gbps] 評価(1): パケット転送速度 64 128 256 384 512 768 1024 1500 [B] 10 8 6 4 2 v 0. 2. 4で改善 0 OVS/NAPI VALE/netmap 約3. 5 Gbps (64 B) OVS/DPDK Lagopus/DPDK 14

評価(1): 1パケットに必要なCPUサイクル数† u CPU Hz (3. 4 G) ÷ pps から概算 OVS/NAPI VALE/netmap OVS/DPDK

評価(1): 1パケットに必要なCPUサイクル数† u CPU Hz (3. 4 G) ÷ pps から概算 OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK 2, 294 288 262 7, 389 OVS/NAPIに焦点を当てて要因を考察 † Assessing Soft- and Hardware Bottlenecks in PC-based Packet Forwarding Systems, Paul Emmerich et. al, Technische Universität München, ICN 2015 15

評価(1): OVS/NAPIの性能要因 skb header skb Linear Buf memory L 1 Cache RAM 2500 2000

評価(1): OVS/NAPIの性能要因 skb header skb Linear Buf memory L 1 Cache RAM 2500 2000 1500 Cycles DMA page memcpy 1000 NIC 1000 500 0 64 memcpyだけで約1000サイクル消費 0 128 Data Size [B] 256 64 128 Data Size [B] 256 16

評価(1): パケット転送遅延 u 転送レート ü 100 K pps 500, 000 OSTA Counts 400, 000

評価(1): パケット転送遅延 u 転送レート ü 100 K pps 500, 000 OSTA Counts 400, 000 OVS/DPDK 300, 000 VALE/netmap 200, 000 OVS/NAPI 100, 000 Lagopus/DPDK 0 10 20 Latency [us] 30 40 18

評価(1): パケット転送遅延 70, 000 500 K OSTA OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK 60, 000 Counts

評価(1): パケット転送遅延 70, 000 500 K OSTA OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDK 60, 000 Counts 50, 000 ハードウェア割り込みとポーリングが半々に混在 40, 000 30, 000 20, 000 10, 000 0 10 70, 000 60, 000 1 M 20 Latency [us] 30 40 OSTA OVS/NAPI VALE/netmap OVS/DPDK Lagopus/DPDKはポーリングのみであるため遅延ジッタが常に安定 Counts 50, 000 40, 000 ほとんどのパケットをポーリング処理 30, 000 20, 000 10, 000 0 10 20 Latency [us] 30 40 19

評価(2): 評価環境 VMの性能 CPU Memory OS 2 cores 1 GB Cent. OS 7. 2

評価(2): 評価環境 VMの性能 CPU Memory OS 2 cores 1 GB Cent. OS 7. 2 Open Source Traffic Analyzer • 1 フロー • UDP VM port 2 仮想NICバックエンド機構 • エントリ数: 1 OVS • in_port=2, output: 1 port 1 観測点 物理サーバ port 1 10 G Ethernet 21

Pattern 1 VM VM コンテキストスイッチ以外 Pattern 2 OVS (User) OVS (Kernel) vhost-net port 1

Pattern 1 VM VM コンテキストスイッチ以外 Pattern 2 OVS (User) OVS (Kernel) vhost-net port 1 Pattern 3 VM Pattern 4 (vhost-user) VM OVS (DPDK) User Kernel User 評価(2): 各実装パターンの評価 コンテキストスイッチ vhost-net port 1 22

評価(2): 評価結果 64 B 128 B 256 B 384 B 512 B 768 B

評価(2): 評価結果 64 B 128 B 256 B 384 B 512 B 768 B 1024 B 1500 B Throughput [Gbps] 10 8 コンテキストスイッチが発生しない 6 4 メモリコピー カーネル/ユーザ空間間のコンテキストスイッチ 2 0 Pattern 1 Pattern 2 Pattern 3 Pattern 4 23

評価(3): 評価環境 in_port=3, output: 4 ü Pattern 1 と Pattern 4を対象 vhost-net/OVS(Kernel) vhost-user/OVS(DPDK) OVS/NAPI

評価(3): 評価環境 in_port=3, output: 4 ü Pattern 1 と Pattern 4を対象 vhost-net/OVS(Kernel) vhost-user/OVS(DPDK) OVS/NAPI port 3 VM port 4 仮想NICバックエンド機構 in_port=1, output: 3 Open Source Traffic Analyzer port 2 in_port=4, output: 2 port 1 • 1 フロー OVS 物理サーバ • UDP port 1 port 2 10 G Ethernet 25

Throughput [Mpps] 評価(3): パケット転送速度 16 Pattern 1 14 Pattern 4 Theoretical 12 10 8

Throughput [Mpps] 評価(3): パケット転送速度 16 Pattern 1 14 Pattern 4 Theoretical 12 10 8 6 4 2 0 64 128 256 1. 6 384 512 Packet Size [B] 768 Pattern 1 1. 4 Pattern 4 1024 1500 評価(1): OVS/NAPI 1. 2 VMのOVS/NAPIがボトルネック 1 0. 8 0. 6 0. 4 コンテキストスイッチがボトルネック 0. 2 0 64 128 256 384 512 Packet Size [B] 768 1024 1500 26