MPLS Japan 2019 | 2019年10月15日（火）「Disaggregation ホワイトボックス/OSS」セッション

ホワイトボックスとSmartNICで実装するVNFサーバ

株式会社インターネットイニシアティブ
プロダクト本部 SDN開発部⾧

白崎 博生© Internet Initiative Japan Inc.

1

前回（昨 「期待と現実」年）の昨年のテーマ

ホワイトボックス革命2

前回（昨年）のおさらい• IIJ でホワイトボックスを使おうとして迷走したお話‒ 独自NOS作る?
‒ SDKのSLA締結‒ SDK入手‒ Cavium XPliant ASICで開発‒ ホワイトボックス買う• 人気のない機種は容赦がない。。。

⇒⇒⇒⇒⇒

NOS作らない（方向転換）
文面の解釈方法に悩む・・・
ドキュメントが少ない・・・
ASIC開発中止（!?）
突然EoS、開発中止（!!??）• Rack as a Service‒ 物理ラックから仮想ラックを作り、（社内）サービスチームへ払い出す‒ 仮想ベアメタルと仮想L3スイッチ• 後日談‒ テスト中に BIOS Flash 内容破壊 ⇒ 予備機からコピーして復旧!!
‒ 蓋を開けたら mSATA スロットが ⇒ mSATA SSD を挿して容量大幅アップ

3

（参考）文鎮化した際のBIOSメッセージ*********************************************************(C)Copyright 1985-2009, American Megatrends, Inc.
All Rights Reserved.
AMI Serial Recovery.
*********************************************************
Press space to start recovery from Serial Address 0x2F8
or 'N' to try Next Serial Device or 'Q' to quit

ある日のこと部下:白崎さん、rebootしたらブートしなくなっちゃいました～
私: そんなわけないだろう、どれどれ

Send BIOS image using XMODEM protocol

リカバリ?!XMODEM ?

Aborting Serial Recovery

別の日のこと*********************************************************(C)Copyright 1985-2009, American Megatrends, Inc.
All Rights Reserved.
AMI Serial Recovery.
*********************************************************
Press space to start recovery from Serial Address 0x2F8
or 'N' to try Next Serial Device or 'Q'

部下:AMI に BIOS を吸い出すツールがあったので同型スイッチからコピーして復旧しました私: 見た目はスイッチでも PC なんやねぇ

実際は書き込むタイミング等にコツが必要だったそうです4色々学んだ１年でした✨5本日お話しすること

1. 私目線の「ホワイトボックス動向」
2. 私目線の「Dataplaneプログラミング動向」
3. IIJでのシステム開発動機
4. 本日のまとめ

6

開発中のシステム概要

物理構成

White Boxの内部構成（仮）インターネット

ユーザ
ユーザ
プライベートプライベートWhite Box

MPLS網White BoxFW

SmartNIC

IP ファブリック
Kube
クラスタ

VMware
クラスタ

ベア
メタル

VX

FW

VX

FW

VX

ユーザ
VRF

ユーザ
VRF

ユーザ
VRF

NAT/LB

NAT/LB

NAT/LB

クラスタ

クラスタ

クラスタ

VRF

VRF

VRF

7

１．私目線の「ホワイトボックス動向」

8

私目線の「ホワイトボックス動向」（１）• 100GbE が現実的価格になった‒ 本体価格が100～150万円‒ 種類が増えた ⇒ 選択肢が増えた ⇒ 逃げ先確保（重要）‒ トランシーバーの価格低下が激しい（100GbE SRが１～５万円）• 200GbE, 400GbE が見えてきた‒ トランシーバーはまだ高い（きっと100GbEのように下がっていく）‒ 遠くない印象• SONiC サポート

‒ フリー NOS は SONiC に集約されてきた‒ ASIC メーカーもスイッチメーカーも SONiC サポートに積極的‒ バイナリが公開されている機種にインストールする場合は超簡単‒ 開発中コードが公開されていることもあるので要注意‒ ドキュメントが実装に追い付いていない9私目線の「ホワイトボックス動向」（２）• 事例が増えてきた‒ スイッチメーカーさんもNOSメーカーさんも元気（良いことです）• IIJ社内でもホワイトボックス容認派の声が出てきた‒ えっ?!
‒ 容認派 ≠ 推進派（デスヨネー）

10２．私目線の「Dataplaneプログラミング動向」

11

私目線の「Dataplaneプログラミング動向」（１）「いまSmartNICがアツい!」

ARM Core 搭載モデルが面白い❕❕

主な SmartNIC
SmartNIC メーカー
• 主なメーカー‒ Intel、Broadcom、Mellanox、Marvell(Cavium)、Netronome、Xilinx‒ 他いろいろFPGAベースだったり、ASICベースだったりオフロード機能• オフロード機能‒ TSO、QoS、DPDK、OVS、VXLAN、MPLS、IPsec、conntrack、tc (eBPF)‒ 他いろいろ• 開発環境開発環境‒ DPDK API、P4、OpenCL、Verilog
12私目線の「Dataplaneプログラミング動向」（２）• Dataplane プログラミングの課題‒ 統一されないオープンな開発環境‒ それぞれ習得が必要‒ ホワイトボックスもSmartNICも同じ状況• 汎用環境できるか?
‒ OpenDataPlane
‒ P4
‒ NPL
‒ tc、eBPF‒ DPDK

参加企業少ない
一歩先行く開拓者、Intel買収の影響あるか?
挑戦者（ひと波乱あるかも）6/12 リリース!
http://nplang.org/
LinuxオンリーSmartNIC上のアプリ開発はDPDK APIの流れ

13

３．IIJでのシステム開発動機

14

IIJでのシステム開発動機• サービスシステムの変化‒ 10年くらい前まではグローバル向けにサービス提供‒ いまはプライベート向けサービスもある• システム設計のズレを手でカバー（オペミス怖い）‒ 機器の設定作業だけでなく、ID 管理も手作業• サーバ環境の変化‒ ベアメタル ⇒ VM ⇒ コンテナ

• 「ネットワーク」がめんどくさくなってきた‒ 調整、申請、調整、申請、設定、テスト、ドキュメント・・・• “イマドキ”の環境を目指す有志が集まってきた
15

IIJでのシステム開発動機• サービスプロバイダーの事情‒ 多段構造‒ インフラ ⇒ サービス ⇒ 契約
‒ お客様のアドレス空間が混在‒ VLANタグで分離できないこともある‒ マルチシステム‒ サービスホストがフラットな設計ではない‒ アクセスログ‒ ProxyやSourceNATできない。戻りパケットの経路問題‒ DCの引っ越し‒ サービスホストは４～５年でリプレースする‒ サービス停止せずに移動する（少しずつ手作業で）16

目指すシステム

17

目指すシステム（１）

物理構成White Boxの内部構成（仮）インターネット

ユーザ
ユーザ
プライベートプライベート• サービスエンドポイントとサービスシステムを結ぶルータ（構成の意図は推し量ってください）

MPLS網White Box
FW

White Box

SmartNIC

IP ファブリック
Kube
クラスタ

VMware
クラスタ

ベア
メタル

VX

FW

VX

FW

VX

ユーザ
VRF

ユーザ
VRF

ユーザ
VRF

NAT/LB

NAT/LB

NAT/LB

クラスタ

クラスタ

クラスタ

VRF

VRF

VRF

White BoxでできないことをSmartNICへオフロード18

目指すシステム（２）• “ボタンぽちっ”でネットワーク開通するシステム‒ 現実は紙ベースの処理もあるので難しい• Phase1 は Kubernetes ベースのサービスクラスタ‒ Auto ScaleやAuto Healing等による運用自動化‒ VMwareとベアメタルは今後対応• ユーザにも開発者にもネットワークを意識させないシステム‒ VRF、NAT、VXLAN、PBR、LBで隠せるものは隠す‒ サービスホストはデフォルトに流すだけ（あとはなんとかする）‒ Kubernetes クラスタは L2 排除• ASICとSmartNICを併せて活用するシステム‒ ASICで対応できないIPsec、NAPT、L7 LB等の機能はSmartNICで実装
19

ホワイトボックス買いました
（開発用）

20

ホワイトボックス買いました

購入したのは「EdgeCore AS7726-32X、DELL S5232F-ON、DELTA AG9032 v2」• Trident3 を選んだ理由‒ NAT 機能があること‒ テーブルサイズが大きいこと‒ テーブルサイズが可変であること• 「WB はサーバー」‒ だから蓋開けた⇒mSATA挿した＝サーバ環境構築• Broadwell-DE CPUは10GBaseKRでASICが繋がる。eBPFも動く。
‒ ヒャッハー!
‒ Linux カーネルからは ixgbe で２ポート見える

21

ヒャッハー!な理由

ASICとCPU間でEthernetパケットを流す場合• PCI バスを介してデータを送受信するASIC

PCI

CPU

• 専用のプロトコルでカプセル化する（オーバーヘッド大）• アプリは SDK の API を呼び出して送受信する（CPU回す）• 転送速度は 10Mbps くらい

10Mbps ….

• サーバ屋が意味なくARP を流すとネットワーク屋が怒る理由
はこういうこと

10GBase-KRでASICとCPUを直結
ASIC

N
I
10Gbps! C

CPU
XeonD
SoC

• PCI を介さない配線• Broadwell-DEのSocはNICを含む• Ethernetパケットを送受信（オーバーヘッドなし）• アプリは普通のソケットプログラム• Linuxのネットワーク機能を活用可能• 転送速度は 10Gbps くらい
22

（参考）購入製品のスペック

AS7726-32X

S5232F-ON

AG9032 v2CPUXeon D-1518@2.20GHz

Atom C3538@2.10GHz

Xeon D-1527@2.20GHz

Memory

16GB

16GB

32GB

Storage

64GB M.2 SSD

64GB M.2 SSD

128GB SATA SSD

BMC(Intel ME)

IPMI

IPMI

Switch ASIC

BCM56870-A0

BCM56870-A0

BCM56870-A0

Front panel
ports

32 x 100GbE(QSFP28)

32 x 100GbE(QSFP28)

32 x 100GbE(QSFP28)23

そして開発24

そして開発• 昨年の反省から SAI （SONiC）ベースの開発• SONiC と SAI がサポートしない機能（NAT、NAPT）の作り込み• モデル設計とAPI設計とコントローラ作成• 他チームとのインタフェース設計• Trident3 以外の ASIC の選定‒ 某社も買収され、昨年の記憶が甦る・・・

25

４．本日のまとめ

26本日のまとめ• ホワイトボックスで開発する環境ができてきた• SmartNIC もアツい!
• Dataplane プログラミングは見極めが必要• ホワイトボックスでネットワークアプリ開発‒ NOS じゃないよ!
• ASIC ＋ SmartNIC でパワーアップ

27

IIJ-BKLT999-0001

28