29
susanow NFV: High Performance NFVi Automatically Optimizes for the Environment SHIROKURA Hiroki @slankdev powered by IPA Mitou Program 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Embed Size (px)

Citation preview

Page 1: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

susanow NFV:High Performance NFVi Automatically Optimizes

for the Environment

SHIROKURA Hiroki @slankdevpowered by IPA Mitou Program

動的なVNFの性能調節フレームワーク開発とそれを用いたNFV基盤の開発

Page 2: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Self Introduction

◎ 城倉 弘樹 (SHIROKURA Hiroki)

◎ HN: slankdev (twitter, github, etc...)

◎ 法政大学B4 / IIJII技術研究所

◎ パケット解析, 高性能通信, DPDK

◎ 2017 IPA 未踏事業採択

2

Page 3: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Too Long Don’t Read

susanow NFV

高性能なNFV基盤をフルスクラッチで開発「僕の考える最強のNFV」

- 性能と迅速性がポイント

- VNF性能を動的にスケール

- システム概要と設計と実装とかを話す

3

Page 4: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Outline

1. Backgrounda. NFVとDPDKとその課題

2. susanow NFV overviewa. D2 (VNFの自動スケールフレームワーク)b. ssn-NFVi (新規に開発したスレッドベースのNFV基盤)c. 外部ツール連携

d. 設計と実装

3. Demonstration

4

Page 5: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Background

Page 6: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

ネットワーク機能の柔軟性とNFV

6

❏ 専用機 (ex. シスコルータ)

❏ 専用機

❏ ソフトウェアネットワーク機能

柔軟性が向上昔

現在

Page 7: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Data Plane Development Kit (DPDK)

● 独自にOSやドライバを書かなくてもLinux上で10/40/100GbEが可能に● 使いこなすにはコンピュータ理論に精通する必要あり● DPDK VNF はコアの数で性能を調節できる (達人チューニング)

7

Page 8: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

NFVの課題

1. 性能の問題

2. 複雑な仮想化の問題

3. 柔軟性の問題

8

Page 9: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

性能の問題 (DPDKが大変)

データプレーンの最適化は大変 :(◎ 十分に性能を出すためにはマルチコアを使い切る必要あり

◎ DPDKを使いこなせる開発者が少ない.

9

ネットワーク機能の開発

◎ ネットワーク機能のロジック◎ データプレーン (パケットフォワード部分)の最適化

開発も難しいし時間がかかる

高い開発コストが信頼性を稼ぐのの邪魔になる

信頼性がないから導入が難しい

結果「高性能NFVって実現難しいですよねえ」

Page 10: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Note: データプレーンの最適化

10

再プログラム再実行

- リセットは長い時間がかかる- 再実行 (数秒 ~ 数十秒)- 再プログラム (数週間)

4core, 4多重で4Gbps

8core, 8多重で8Gbps

他にも

- パケット処理機能の実装- PCIe配置とbad-NUMAと

性能に合わせてコアアサイン- NICのHWコンフィグ

Page 11: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

複雑な仮想化の問題

● # NF chain● Flexibility (dynamic/static)● Performance <-> Security● DPDK enable ?● コアの扱い

11

Chaining Functions● PCI-passthrough● PCI-passthrough SR-IOV● Virtio User

Page 12: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

柔軟性の課題

12

せっかくソフトウェア + たくさんあるコアでやるわけだし, ふんだんに使いたい. でも無駄に使ってる余裕はない

状況に応じて, 最適にコアを使いまわしたい.

d-plane: DPDKを採用

スレッドベースの独自NFViVNF性能をミリ秒オーダで調節可能

Page 13: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

susanow NFV overview

Page 14: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

susanow NFV1. D2 Framework

◎ データプレーン自動最適化

◎ ネットワーク機能の性能調節

◎ 性能調節をプログラム可能

2. NFV基盤 ssnNFVi

◎ VMを用いない高性能NFV基盤

Flexible, High-Performance, Orchestrate

14

http://github.com/susanow/susanow

Page 15: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

D2: Dynamic Thread Optimize TechnologyNFの性能を自動で調節可能にするスケーラブルフレームワーク

15

D2 operationNo re-executionNo reprogramming

パケット処理ロジック

Dplane最適化ロジック

パケット処理ロジック

Dplane最適化ロジック

D2 Framework

NFの開発工程からDplaneの最適化を分離(自動化可能にした)

Support- Switch/Router- Firewall/DPI- etc...

NF開発者

自動

NF開発者

Page 16: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

D2 Agent / D2 Operation

16

D2 Agent: NFの性能の監視とD2opを発行する

D2 Operation: スレッドの多重化などの操作

D2-op-OUT D2-op-IN

Page 17: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

D2 最適化の流れ

17

Page 18: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

ssn-NFVi◎ D2に最適なnonVM NFV基盤◎ D2によるVNFの自動スケーリング◎ VMを用いないことでVMオーバーヘッドの回避

18

Page 19: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

Design &Implementation

Page 20: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

D2: Design & Implementation

- バックエンドはC++11 (dpdk v17.08)

- フロントエンドはREST API

- VNF開発者はD2フレームワークを用いてVNFを開発すれば,

外部からD2opで制御可能

- 外部からの操作は全て, REST API経由で制御可能

- REST APIをラップしたpython モジュールも開発

-

20

Page 21: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

外部ツール連携

● REST API

● Python モジュール

● ssnctl コマンド

VNFの操作 (作成, 設定, デプロイ...)

システムパフォーマンス情報の取得

Grafana/InfluxDBなどにデータを渡して可視化できます.

REST APIをそのまま叩けるので, Web Dashboardも用意(開発中)

21

Page 22: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

REST API

22

● NFViは全てREST API経由で操作可能

● APIはSwaggerで管理中

● スクリプト言語などで簡単にラップ可能

Page 23: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

ssnpy : susanow python controler◎ REST APIをラップしたPythonモジュール

◎ D2はssnpyを用いて実装されている.

23

Page 24: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

ssnctl : control script

● brctlとかovs-vsctlみたいなもの. VNFの生成やデプロイができる● ssnpyをラップしたスクリプト● d2の制御もここからできる

24

Page 25: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

● 簡単なパケットフォワーダ ● トラフィック量に応じて

必要最低限度のリソースで動作する.● 動作を止めることなく,

動的に自動で最適化

● トラフィックの上昇/下降に注目

agent https://youtu.be/qc0GnlyICl0

ssnctl https://youtu.be/OFAZyPeJ4tQ

25

Demonstration….DEMO: D2の自動最適化

Page 26: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

susanow NFV

More Dynamic :)Higher performance :)

Dynamic Dataplane Tuning w/t D2

Extensive Scalability w/t susanow cluster

Programmable Interfaces for orchestration

High performance NFVi w/o VMto avoid VM-overhead

Page 27: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

appendix

Page 28: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

1. クラウド: 計算機リソース提供2. ssn: ネットワークリソース提供3. NW利用者にスケーラブルな

ネットワークを提供可能

Use-case: susanow-NFV on Cloud

28

◎ ssn-NFViをクラウド上にデプロイ

◎ ssn-NFViの空きリソース枯渇前に

クラウドのインスタンスを増加

◎ NFを移動させて, 空きリソースを確保

◎ サービス全体をスケール

◎ vm: 数秒-数十秒, ssn: 数m秒

Page 29: 動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発

性能向上

D2によるNFの開発サイクルの迅速化

29

開始

パケット処理ロジックデータプレーン最適化- スレッドモデル設計- NICの設定

試験

導入

データプレーン最適化- スレッドモデル再考- NICの設定再考

試験

導入

開始

パケット処理ロジック

試験

導入

性能向上

性能向上

性能向上

性能向上

性能向上

従来のNF開発

◎ 性能向上のために再設計が必要なことがある

◎ データプレーン最適化のための開発コスト

◎ コードを書き換える場合は再テストも必須

D2を利用したNF開発

◎ 初期開発もパケット処理ロジックのみ

◎ 必要に応じてリソースを増やして性能向上可能

◎ しかも動かしながら性能向上もできる