Upgrade to Pro — share decks privately, control downloads, hide ads and more …

(仮) このNetwork OS野郎!! インフラ野郎Night おかわり

(仮) このNetwork OS野郎!! インフラ野郎Night おかわり

2017年4月14日 "インフラ野郎Night おかわり" @NHNテコラス
"(仮) このNetwork OS野郎!!" と題して Ethernet Switch の仕組と Network OS の作り方を解説。
Connpass Event Page: https://connpass.com/event/51934/

> Moved from SideShare_net on 2022/11/16
5年経った2022年現在ではだいぶ古い内容だが記録用に移設(5年経って同じ事やっているとは...)

ebiken

April 14, 2017
Tweet

More Decks by ebiken

Other Decks in Technology

Transcript

  1. (仮) このNetwork OS野郎!! ~ ネットワークOSの作り方 ~ 海老澤 健太郎@Ponto Networks, Inc.

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

    Inc. 2 世の中には2種類の野郎がいる (*) 野郎=ジェンダーを問わず
  3. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 3 自作する野郎 ネットワークOS(NOS)を 自作しない野郎 自ら道具を磨き進化させる野郎 与えられた道具を使い続ける野郎
  4. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 4 「ネットワークOS」 とは? 自分、「ネットワークOS」 作ってるんすよ ネットワーク処理に特化した割込とか、 コアの割り当てとか、 スケジューリングとか欲しくないですか? ようやく、BIOSから起動してコンソールに 文字がでるまではできたんすよね お、楽しそう。どんなの? ?!? ( ̄Д ̄;)!?!?
  5. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 5 「ネットワークOS」 とは? ネットワーク処理に特化したカーネル (スイッチ等) ネットワーク機器を動かす ドライバ・アプリの集合
  6. サーバー vs スイッチの中身 (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 |

    海老澤 健太郎@Ponto Networks, Inc. 6 Edge-Core AS7512-32X http://www.edge-core.com/productsInfo.php?cls=1&cls2=5&cls3=68&id=129 ネットワークの専門家しか 理解できない特別な機械!?
  7. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 7 PCI express CPU Memory Memory Memory ASIC マザー ボード Switch ボード PCI express CPU Memory Memory Memory ASIC FAN LED Sensor NIC カード CPU ボード サーバーの中身 スイッチの中身 ASIC
  8. (仮) この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 / Forward Rewrite Push / Pop
  9. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 9 ASIC(データプレーン)の処理 PCI express CPU Memory Memory Memory ASIC FAN LED Sensor パーサー (ヘッダ解析) パケット処理パイプライン 変換・転送 エンジン OF L2 L3 ACL マッチ・テーブル ネットワークOS
  10. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 10 ネットワークOSの中身 PCI express CPU Memory Memory Memory ASIC FAN LED Sensor Base OS (ex: Linux) User Interface (CLI, Shell, REST API) misc drivers (Fan, LED, Sensor) ASIC driver Protocol Agent Protocol Agent Protocol Agent (BGP, OSPF ...) ASIC Controller Config Manager ASIC SDK (API) System Manager
  11. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 13 ↓ 皆さんが普段関わっている 技術と比較してみましょう。 むずかしくない?
  12. (仮) この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 COMPL EX  SIMPL E ☺ (*1) Broadwell EP 24 Core Arrangement (*2) MLPs : multi-layer perceptrons (*3) Azure Cloud IoT Solution Architecture (*4) そうだコンテナー データセンターを作ろう Parse -> Match -> Action
  13. なぜ今、ネットワーク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から取得可能に • 社内で迅速なバグ修正が可能に
  14. なぜ今、ネットワーク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 ディスアグリゲーションの目的
  15. なぜ今、ネットワーク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 Agent Protocol Agent Protocol Agent (BGP, OSPF ...) ASIC Controller Config Manager System Manager ASIC driver ASIC SDK (API) ASICベンダーに よるロックイン
  16. なぜ今、ネットワークOSを作れるのか? (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto

    Networks, Inc. 21 ASIC SDK/API のオープン化・標準化 Broadcom Mellanox Cavium OF-DPA OpenNSL Open Ethernet 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 の標準化
  17. なぜ今、ネットワーク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)
  18. なぜ今、ネットワークOSを作れるのか? ハードウェアの調達 ⇒ ホワイトボックス(ODM製ハードウェア)の購入 ASIC SDK/APIの入手 ⇒ APIのオープン化・標準化(SAI) 開発リソースの確保 ⇒

    オープンソースなネットワークOSの登場 (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks, Inc. 23 ネットワークOS作成のハードル (解消) Giants以外も独自NOSを利用可能に!!
  19. 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) ASIC driver Protocol Agent Protocol Agent Protocol Agent (BGP, OSPF ...) ASIC Controller Config Manager ASIC SDK (API) System Manager スイッチ・ハードウェア
  20. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 26 1. スイッチ・ハードウェアの調達 http://www.colfaxdirect.com/store/pc/viewPrd.asp?idproduct=3019
  21. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 27 2. ベースOSの選択 Linux Distribution Open Network Linux https://opennetlinux.org/
  22. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 28 3. ASIC SDK / API 入手 Broadcom Mellanox Cavium Open Ethernet http://www.mellanox.com/open-ethernet/ OpenNSL https://github.com/Broadcom-Switch/OpenNSL/ OpenXPS https://github.com/XPliant/OpenXPS
  23. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 29 4. ASIC コントローラー作成 User Interface (CLI, Shell, REST API) Protocol Agent Protocol Agent Protocol 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作成 ルート作成
  24. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 30 5. お好みのUIを作成 “REST API” <お好みの言語> サーバー系パッケージの流用 (だってLinuxだもん) 野郎は黙って「自作」 http://qiita.com/isaoshimizu/items/71dd2ca2a08ddb607e31
  25. 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 Routing Agents REST API (WebAPI) User Apps Linux shell (CLI as an Application) Config Broker (data store) Modular Routing Agents FEA (Forwarding Engine Abstraction) Data Path Profile Manager Flexible Data Plane User Apps Management Plane Data Plane Flex ASIC (XPliant etc.) Linux Kernel Network Stack SmartNIC, NPU, FPGA Native Applications Native Applications Native Applications SDK (Language API)
  26. (仮) この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
  27. http://www.pontonetworks.com/ Locations Head Quater San Diego (USA) Development Tokyo (Japan)

    + San Jose (USA) Investors Ex-exectutives of Internet and Mobile industry. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks, Inc. 34 Ponto Networks, Inc.
  28. • プログラマブルなデータプレーンでできる事 • パーサーやマッチ/アクションのカスタマイズ ⇒ 新しいプロトコルを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 プログラマブル・データプレーンの世界
  29. • 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
  30. ネットワークOSを取り巻く環境(まとめ) (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto

    Networks, Inc. 38 ネットワークOSを作るためのパーツはそろった!! オープンなハードウェア オープンな ASIC API/SDK オープンなネットワークOS (サーバーのように) ネットワーク機器(ASIC)上で 自分のアプリを開発できる時代に!
  31. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 39 世の中には2種類の野郎がいる (*) 野郎=ジェンダーを問わず
  32. (仮) このNetwork OS野郎!! @インフラ野郎Night おかわり| 2017/04/14 | 海老澤 健太郎@Ponto Networks,

    Inc. 40 自作する野郎 ネットワークOS(NOS)を 自作しない野郎 自ら道具を磨き進化させる野郎 与えられた道具を使い続ける野郎