ネットワークOS野郎 ~ インフラ野郎Night 20160414

39
() このNetwork OS野郎!! ~ ネットワークOSの作り方 ~ 海老澤 健太郎@Ponto Networks, Inc. Twitter: @ebiken () このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks, Inc. 1

Transcript of ネットワークOS野郎 ~ インフラ野郎Night 20160414

Page 1: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮)このNetwork OS野郎!!

~ネットワークOSの作り方~

海老澤健太郎@Ponto Networks, Inc.

Twitter: @ebiken

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 1

Page 2: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 2

世の中には2種類の野郎がいる

(*)野郎=ジェンダーを問わず

Page 3: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 3

自作する野郎

ネットワークOS(NOS)を

自作しない野郎

自ら道具を磨き進化させる野郎 与えられた道具を使い続ける野郎

Page 4: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 4

「ネットワークOS」 とは?

自分、「ネットワークOS」 作ってるんすよ

ネットワーク処理に特化した割込とか、コアの割り当てとか、スケジューリングとか欲しくないですか?

ようやく、BIOSから起動してコンソールに文字がでるまではできたんすよね

お、楽しそう。どんなの?

?!? ( ̄Д ̄;)!?!?

Page 5: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 5

「ネットワークOS」 とは?

ネットワーク処理に特化したカーネル

(スイッチ等)ネットワーク機器を動かすドライバ・アプリの集合

Page 6: ネットワークOS野郎 ~ インフラ野郎Night 20160414

サーバー vs スイッチの中身

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 6

Edge-Core AS7512-32Xhttp://www.edge-core.com/productsInfo.php?cls=1&cls2=5&cls3=68&id=129

ネットワークの専門家しか理解できない特別な機械!?

Page 7: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 7

PCI express

CPUMemoryMemoryMemory

ASIC

マザーボード

Switchボード

PCI express

CPUMemoryMemoryMemory

ASIC

FAN

LED

Sensor

NICカード

CPUボード

サーバーの中身 スイッチの中身

ASIC

Page 8: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 8

スイッチのパケット処理

パーサー

(ヘッダ解析)

パケット処理パイプライン

変換・転送

エンジン

OF L2 L3 ACL

マッチ・テーブル

Subnet (LPM) Gateway Port

192.168.10.0 /24 10.0.0.5 5

192.168.20.0 /24 172.16.0.1 1

... ... ...

0.0.0.0/0 172.16.0.1 1

Layer 3 table

MAC Address Port

00-00-5E-00-53-01 1

00-00-5E-00-53-02 2

00-00-5E-00-53-03 3

00-00-5E-00-53-04 4

Layer 2 Tableパケット・ヘッダを解析

テーブル検索 (Match)

処理 (Action)

Action

Drop / ForwardRewrite

Push / Pop

Page 9: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 9

ASIC(データプレーン)の処理

PCI express

CPUMemoryMemoryMemory

ASIC

FAN

LED

Sensorパーサー

(ヘッダ解析)

パケット処理パイプライン

変換・転送

エンジン

OF L2 L3 ACL

マッチ・テーブル

ネットワークOS

Page 10: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 10

ネットワークOSの中身

PCI express

CPUMemoryMemoryMemory

ASIC

FAN

LED

Sensor

Base OS (ex: Linux)

User Interface(CLI, Shell, REST API)

misc drivers(Fan, LED, Sensor)

ASICdriver

Protocol AgentProtocol AgentProtocol Agent(BGP, OSPF ...)

ASIC ControllerConfig Manager

ASIC SDK (API)System Manager

Page 11: ネットワークOS野郎 ~ インフラ野郎Night 20160414

ネットワークOS は(いわゆる)

オペレーティングシステムではない

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 11

Page 12: ネットワークOS野郎 ~ インフラ野郎Night 20160414

ネットワークOSを作る↓

ASICに処理方法を教えるアプリを作る

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 12

Page 13: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 13

↓皆さんが普段関わっている技術と比較してみましょう。

むずかしくない?

Page 14: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 14

Reference:(*1) https://www.theregister.co.uk/2016/03/31/intel_broadwell_ep_xeon_e5_2600_v4/(*2) https://sebastianraschka.com/faq/docs/difference-deep-and-normal-learning.html(*3) http://ssmlwf.azurewebsites.net/(*4) http://www.syuheiuda.com/?p=3972

C O M P L E X S I M P L E ☺

(*1) Broadwell EP 24 Core Arrangement (*2) MLPs : multi-layer perceptrons

(*3) Azure Cloud IoT Solution Architecture

(*4) そうだコンテナーデータセンターを作ろう

Parse -> Match -> Action

Page 15: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今までは作れなかったのか?

なぜ今作れるのか?

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 15

Page 16: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今、ネットワークOSを作れるのか?

ハードウェアの調達

ASIC SDK/APIの入手

開発リソースの確保

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 16

ネットワークOS作成のハードル

Page 17: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今、ネットワークOSを作れるのか?

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 17

ディスアグリゲーション=ソフト・ハード分離Google• B4 (G-Scale Network)

• データセンター間のトラフィック管理

• コントローラーからトラフィック分布を管理可能なネットワークOSの自作

• 最も初期の “SDN”のひとつ

Facebook• Wedge + FBOSS

• サーバーと同じツール・手法でネットワーク機器を運用管理可能に

• サーバーと同じハード・ソフト(OS)に、ASIC及びASIC管理ソフトを追加

Microsoft• SONiC / SAI

• 自動化ツールと統合可能なネットワークOS

• ASIC APIの標準化を提唱(SAI)

LinkedIn• Project Falco

• 問題検知・解析を可能とする統計情報などをASICから取得可能に

• 社内で迅速なバグ修正が可能に

Page 18: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今、ネットワークOSを作れるのか?

•サーバー運用管理で培ったイノベーションをネットワークへ• Linux ベースの自動化ツール• e.g. Chef/Puppet/Ansible/CFEngine ...•時代遅れの監視・ログツールへの依存を軽減• SNMP ⇒ Kafka (pub/sub messaging for telemetry)

•バグのタイムリーな修正(自社のプライオリティに応じた)

•自社で使用しない機能に由来するバグからの脱却

•ライセンスやサポート費用のスケーラビリティ

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 18

ディスアグリゲーションの目的

Page 19: ネットワークOS野郎 ~ インフラ野郎Night 20160414

ODMベンダー中心に、ハードウェア「だけ」を購入可能に

なぜ今、ネットワークOSを作れるのか?

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 19

スイッチハードウェアのホワイトボックス化

Page 20: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今、ネットワークOSを作れるのか?

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 20

ASIC SDK/API のオープン化・標準化

Base OS (ex: Linux)

User Interface(CLI, Shell, REST API)

misc drivers(Fan, LED, Sensor)

Protocol AgentProtocol AgentProtocol Agent(BGP, OSPF ...)

ASIC ControllerConfig Manager

System Manager

ASICdriver

ASIC SDK (API)ASICベンダーによるロックイン

Page 21: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今、ネットワークOSを作れるのか?

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 21

ASIC SDK/API のオープン化・標準化

Broadcom Mellanox Cavium

OF-DPAOpenNSL

OpenEthernet

OpenXPS SDK/API

ASIC Broadcom Mellanox Cavium

Switch Abstraction Interface (SAI)

Data Plane Abstraction

Broadcom Mellanox Cavium

Layer 2/3 Agents(OSPF, BGP, STP, LLDP ...)

Data Plane Abstraction

SAI

Layer 2/3 Agents(OSPF, BGP, STP, LLDP ...)

Plug-in

ASIC SDK/API のオープン化 ASIC SDK/API の標準化

Page 22: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今、ネットワークOSを作れるのか?

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 22

オープンソースNOSの登場スイッチハードウェア向けベースOSの提供

Open Network Linux

フル・ネットワークOS

OpenSwitch (Dell + SnapRoute)

制御アプリ(プロトコル・エージェント)

SnapRoute (FlexSwitch)SONiC (Microsoft)| FBOSS (Facebook)

Page 23: ネットワークOS野郎 ~ インフラ野郎Night 20160414

なぜ今、ネットワークOSを作れるのか?

ハードウェアの調達⇒ホワイトボックス(ODM製ハードウェア)の購入

ASIC SDK/APIの入手⇒ APIのオープン化・標準化(SAI)

開発リソースの確保⇒オープンソースなネットワークOSの登場

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 23

ネットワークOS作成のハードル (解消)

Giants以外も独自NOSを利用可能に!!

Page 24: ネットワークOS野郎 ~ インフラ野郎Night 20160414

ネットワークOSの作り方スクラッチから作りたい人向けに

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 24

Page 25: ネットワークOS野郎 ~ インフラ野郎Night 20160414

1. スイッチ・ハードウェアの調達

2. ベースOSの選択

3. ASIC SDK/API 入手

4. ASIC コントローラー作成

5. お好みのUI を作成

•オプション• Protocol Agent

• Config Manager

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 25

ネットワークOSの作り方(5ステップ+オプション)

Base OS (ex: Linux)

User Interface(CLI, Shell, REST API)

misc drivers(Fan, LED, Sensor)

ASICdriver

Protocol AgentProtocol AgentProtocol Agent(BGP, OSPF ...)

ASIC ControllerConfig Manager

ASIC SDK (API)System Manager

スイッチ・ハードウェア

Page 26: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 26

1.スイッチ・ハードウェアの調達

http://www.colfaxdirect.com/store/pc/viewPrd.asp?idproduct=3019

Page 27: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 27

2.ベースOSの選択

Linux Distribution

Open Network Linux

https://opennetlinux.org/

Page 28: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 28

3. ASIC SDK / API入手

Broadcom

Mellanox

Cavium

Open Ethernethttp://www.mellanox.com/open-ethernet/

OpenNSLhttps://github.com/Broadcom-Switch/OpenNSL/

OpenXPShttps://github.com/XPliant/OpenXPS

Page 29: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 29

4. ASIC コントローラー作成

User Interface(CLI, Shell, REST API)

Protocol AgentProtocol AgentProtocol Agent(BGP, OSPF ...)

ASIC Controller

ASIC SDK (API)(OpenXPS as an example)

sai_create_vlan_fn() sai_create_route_fn()

SAI (Switch Abstraction Interface)xpsVlanCreate()

VLAN作成 ルート作成

Page 30: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 30

5.お好みのUIを作成

“REST API” <お好みの言語>

サーバー系パッケージの流用 (だってLinuxだもん)

野郎は黙って「自作」

http://qiita.com/isaoshimizu/items/71dd2ca2a08ddb607e31

Page 31: ネットワークOS野郎 ~ インフラ野郎Night 20160414

1. スイッチ・ハードウェア• Edge-Core AS7512-32X (XPliant, 100G x 32 port)

2. ベースOSの選択• 某 Linux Distribution

3. ASIC SDK/API 入手• Cavium から直接入手

4. ASIC コントローラー作成• Golangで実装

5. お好みのUI を作成• CLI: Bash Extension (JunOS like)• REST API (Golang)

• Config Manager• 自作 (Zebra2.0)

• Routing Agent• Quagga, GoBGP, Zebra 2.0• GTP対応Match/Action (ASICプロファイルをカスタマイズ)

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 31

作ってみた (PontOS)

Modular RoutingAgents

REST API(WebAPI)

User Apps

Linux shell(CLI as an

Application)

Config Broker(data store)

Modular RoutingAgents

FEA (Forwarding Engine Abstraction)

Data PathProfile

Manager

Flexible Data Plane

User Apps

Management Plane

Data Plane

Flex ASIC(XPliant etc.)

Linux KernelNetwork Stack

SmartNIC, NPU, FPGA

Native Applications

Native Applications

Native Applications

SDK(Language API)

Page 32: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 33

Slides by 石黒邦宏 at ONIC Japan 2016

"Zebra 2.0 – SDN, NFV, Container時代のNetworking Softwareの設計と実装"

http://onic.jp/program-detail/#f07

Page 33: ネットワークOS野郎 ~ インフラ野郎Night 20160414

http://www.pontonetworks.com/

LocationsHead Quater

San Diego (USA)Development

Tokyo (Japan) + San Jose (USA)

InvestorsEx-exectutives of Internet and Mobile industry.

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 34

Ponto Networks, Inc.

Page 34: ネットワークOS野郎 ~ インフラ野郎Night 20160414

• プログラマブルなデータプレーンでできる事• パーサーやマッチ/アクションのカスタマイズ⇒新しいプロトコルをASICで処理• テーブル設計のカスタマイズ⇒ リソースの有効活用⇒スケーラビリティの向上

• アプリケーション:• GTPなど、モバイル分野でのコモディティ機器の利用• In-band Network Telemetry • パケットのふるまいを実トラフィックで観測

• AT&T exploited the programmability of the chip to add In-band Network Telemetry (INT).• https://www.sdxcentral.com/articles/news/att-picks-barefoot-networks-programmable-switches

• Tbps級のLBを数百万円のハードで実現

• 参考:"OPEN NETWORKING" に向けたManagement / Data Plane の動向• ENOG#41@佐渡• https://www.slideshare.net/kentaroebisawa/open-networking-management-data-plane

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 35

プログラマブル・データプレーンの世界

Page 35: ネットワークOS野郎 ~ インフラ野郎Night 20160414

ネットワークOSを取り巻く環境(まとめ)つくった感想

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 36

Page 36: ネットワークOS野郎 ~ インフラ野郎Night 20160414

• ASICドライバやSDKはソースコードでは公開されていない⇒対応してないモデルやOS(Kernel)も。

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 37

現状の課題

• オープンソースはネットワークOSの一部分⇒ SONiC, FBOSS, SnapRoute

• SAIだけでは実現できない機能も⇒ ACL, Match/Action Rules, MPLS etc.

• Full NOS としての OpenSwitch の今後に期待

⇒ HPE -> Dell/SnapRoute 12月に移行開始

• 活発な機能追加提案進行中⇒ “SAI: Releasing the Potential of Switch ASIC”

OCP2017 Slide (*)

(*) http://www.opencompute.org/wiki/Networking/Summit-2017-03#0930_-_SAI:_Releasing_the_Potential_of_Switch_ASIC

Page 37: ネットワークOS野郎 ~ インフラ野郎Night 20160414

ネットワークOSを取り巻く環境(まとめ)

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 38

ネットワークOSを作るためのパーツはそろった!!

オープンなハードウェアオープンな ASIC API/SDKオープンなネットワークOS

(サーバーのように)ネットワーク機器(ASIC)上で

自分のアプリを開発できる時代に!

Page 38: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 39

世の中には2種類の野郎がいる

(*)野郎=ジェンダーを問わず

Page 39: ネットワークOS野郎 ~ インフラ野郎Night 20160414

(仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |海老澤健太郎@Ponto Networks, Inc. 40

自作する野郎

ネットワークOS(NOS)を

自作しない野郎

自ら道具を磨き進化させる野郎 与えられた道具を使い続ける野郎