Slide 1

Slide 1 text

SONiC近況報告 2019/Fall Internet Week 2019 ソフトウェアルータ・スイッチBoF Nov 27, 2019 Masaru OKI [email protected]

Slide 2

Slide 2 text

Disclaimer ● あくまで独自に調査した内容です。 正確な内容になるよう心がけていますが、正確性は保証されません。 抜け、誤り等ありましたらご指摘いただければ幸いです。 ● 内容は執筆時に確認したものであり、今後変更されることがあります。 (たとえば設定のsyntaxやコマンド名など) 2

Slide 3

Slide 3 text

SONiCとは ● https://azure.github.io/SONiC/ ● OSをあとからインストールして動かすネットワーク機器、ホワイトボックススイッチ用 のOSのひとつ。 ● オープンソース。Apache v2ライセンス。 ● さまざまなスイッチベンダーの機器に対応している。 ○ accton, alphanetworks, arista, barefoot, broadcom, celestica, centec, cig, dell, delta, embedway, facebook, ingrasys, inventec, juniper, marvell, mellanox, mitac, pegatron, quanta, wnc ● スイッチASICの対応も多い。 ○ barefoot, broadcom, cavium, centec, innovium, marvell, mellanox, nephos ○ 共通APIとして策定されたSAI (Switch Abstraction Interface)を使っている。 ● ソフトウェア実装も用意されている。 ○ SONiC-P4, SONiC-VS 3

Slide 4

Slide 4 text

市場動向 ● 株式会社ミクシィが商用ネットワークで利用 (Goldstone) ○ NTTエレクトロニクスのプレスリリース https://www.ntt-electronics.com/new/information/2019/11/ntt-electronics-contributes-goldstone-o pen-source-network-os-for-disaggregated-coherent-transponders.html ○ Goldstone: EdgecoreのCassini(AS7716-24SC; パケットトランスポンダ )用のNOS ■ さまざまなOSSの集合体で、ベースとなっているのは ONLとSONiC ■ 現在他のハードウェアへの移植も進行中とのこと ● MellanoxがSONiCのサポートを表明 ○ https://www.mellanox.com/products/sonic/ 4

Slide 5

Slide 5 text

対応ハードウェアの追加(May 2019~) ● Juniper (1) ○ QFX5210 ● Accton (8) ○ as5812-54t ○ AS9716-32D ○ as7315-27xb ○ as7312-54xs ○ as5835-54t ○ as5835-54x ○ as5812-54x ○ as4630-54pe ● Delta (1) ○ ag9032v2a ● DELL EMC (3) ○ S5248F-ON ○ S5232F-ON ○ Z9264F-ON ● QCT (4) ○ IX9-32X ○ IX7-32X ○ IX8-56X ○ IX8C-56Xb ● Arista (4) ○ 7280CR3-C40 ○ 7280CR3-32D4 ○ 7280CR3-32P4 ○ 7060CX-32S-SSD ● Marvell (1) ○ ET6448M ● Celestica (3) ○ Silverstone ○ DX010-C32 ○ DX010-D48C8 ● Inventec (2) ○ D6356 ○ D7264 5

Slide 6

Slide 6 text

ARMサポート ● 制御用CPUにARMを載せているスイッチもサポート可能になった。 ● armhf (32bit) ○ make configure PLATFORM=[ASIC_VENDOR] PLATFORM_ARCH=armhf ○ make target/sonic-[ASIC_VENDOR]-armhf.bin ○ ASIC_VENDORは現在のところmarvellのみ ● arm64 ○ make configure PLATFORM=[ASIC_VENDOR] PLATFORM_ARCH=arm64 ○ make target/sonic-{ASIC_VENDOR}-arm64.bin ○ ASIC_VENDORは現在のところmarvellのみ ● 注意点 ○ armhf用イメージをビルドする場合、 Docker 18に依存していて19では動かない模様 6

Slide 7

Slide 7 text

SONiC-VSをGNS3で動かす ● GNS3 ○ https://gns3.com/ ○ ネットワークシミュレータ。 GUIでトポロジを作成しテストなどができる。 ● SONiCでGNS3 アプライアンスファイル (.gns3a) 作成スクリプトを提供。 ○ https://github.com/Azure/sonic-buildimage/blob/master/platform/vs/README.gns3.md ○ ビルドしたsonic-vs.imgを用意して実行する ○ GNS3の Import applianceでインポートする 7

Slide 8

Slide 8 text

SAI version 1.5 ● TAM INT ○ TAM = Telemetry and Monitoring (OCPで策定されている仕様 ) ○ INT = In-band Network Telemetry ○ Ethernetパケット末尾(CRCの直前)にタイムスタンプを挿入する ● NAT ○ Source NAT, Destination NAT, Double NAT, Destination NAT Pool ○ src IP+mask, dst IP+mask, VR ID, L4 src port, L4 dst port ○ カウンタのenable,disableとエントリごとのパケットカウンタ /バイトカウンタ指定 ● deep/large buffer ● BFDのハードウェアオフロード ● サポートしてないASICのときはSAI_STATUS_NOT_IMPREMENTED 8

Slide 9

Slide 9 text

VRF “VRF”: { “Vrf0”: {}, “Vrf-tokyo”: {} }, “INTERFACE”: { “Ethernet0”: { “vrf_name”: “Vrf-tokyo” } } ● VRF名は”Vrf”から始まる必要がある。(それ以降は数字でなくてもOK) ● Broadcomスイッチで動作することを確認。 ● 注: SONiCに現在組み込まれてるip(8)には、ip vrfがない。 9

Slide 10

Slide 10 text

VLAN sub interface “VLAN_SUB_INTERFACE”: { “Ethernet0.10|10.0.0.1/24”: {} } ● Broadcomスイッチでは動作しなかった。(内部プロセスが終了し機能不全) ○ エラーが “brcm_sai_create_router_interface:92 Un-implemented interface types.” ○ 要するにSAIを呼び出したら中でエラーが発生し、他の機能も使えなくなる。 ● Google Groupで質問してみたところ回答は ○ Broadcom SAI 3.7でサポートされるが、まだリリースされてない ○ Mellanoxなら動くよ ● Broadcom SAIはバイナリ提供のため、待つしかない。 10

Slide 11

Slide 11 text

sflow dockerがデフォルトで有効に "SFLOW_COLLECTOR": { "server1": { "collector_ip": "192.168.0.1", "collector_port": "6343" } }, "SFLOW_SESSION": { "Ethernet8": { "admin_state": "up" } } ● Host sflow (hsflowd) を使っている。 ● 実動作については未確認。 11

Slide 12

Slide 12 text

drop counter “DEBUG_COUNTER”: { “DEBUG_0”: { “type”: “PORT_INGRESS_DROPS” } }, “DEBUG_COUNTER_DROP_REASON”: { “DEBUG_0|INGRESS_VLAN_FILTER”: {} } ● デバッグカウンタの一種という位置づけで、dropの理由を指定しカウント。 ● 設定できカウント情報を参照できるが、カウントアップ動作は未確認。 ○ show dropcounters counts 12

Slide 13

Slide 13 text

デフォルトのルーティングエンジンは FRR 7.2に ● SONiCとしては大きな変更点はなく、これまで通り ○ 設定のVRF対応が予定されている (FRR自体はVRFに対応している) 13

Slide 14

Slide 14 text

Release 201910 ● まだリリースされていない。 ● 状況 https://github.com/Azure/SONiC/wiki/Release-Progress-Tracking-201910 14

Slide 15

Slide 15 text

まだmasterに入っていない機能 ● NAT ○ テーブル名定義だけが commitされている ● FRR設定のVRF対応 ● STP/PVST ● ZTP ● MLAG ● 動的なport breakout ● マネジメントフレームワーク ● VRRP ● VLAN sub interface in Broadcom platform ● etc. 15

Slide 16

Slide 16 text

ビルド時間が長すぎる? ● 聞いた話 ○ ビルドに5時間かかる ○ ビルドに8時間かかる ● うちだと1時間くらいなんですけど…… ○ 特殊なことはしていないつもりだった ○ が、ビルドターゲットを絞っていてそれ自体はおそらく時間削減に大きく貢献する ■ 通常やるであろうビルド : make all (ONIE用バイナリとArista向けabootバイナリを作成) ■ 当方環境で実行: make target/sonic-broadcom.bin (ONIE用バイナリのみ作成 ) 16

Slide 17

Slide 17 text

ビルド時間測定 ● 実際に測ってみた ● rules/config: SONIC_CONFIG_BUILD_JOBS = 8、他は変更なし 実行コマンドライン Xeon E5-2630 (6C12T x2) DDR3 64GB HDD SATA 500GB HDD SATA 500GB RYZEN 5 2400G (4C8T) DDR4 16GB SSD NVMe 512GB SSD SATA 2TB docker rmi (全イメージ) make init make configure PLATFORM=broadcom make clean make target/sonic-broadcom.bin real 173m26.659s user 0m15.109s sys 0m11.721s real 98m51.828s user 0m12.203s sys 0m8.328s 上記の後 make clean make target/sonic-broadcom.bin real 90m20.049s user 0m2.975s sys 0m0.949s real 72m0.073s user 0m2.570s sys 0m0.728s 17

Slide 18

Slide 18 text

ビルド時間考察 ● おそらくストレージI/O速度が大きく関係している。HDDよりSSD。 ● 観察していると全コアが100%に貼りつくのでコア数もそれなりに重要。 ○ nproc(1)でコア数を数えている。 (論理コア数。4C8Tのときは8が返る) ● docker image作成時はネットワークへのアクセスも頻繁。 ● make allではなくmake target/sonic-.bin で速くなる。 ● 悪条件が重なると5時間かかりそうなことはわかった。 18

Slide 19

Slide 19 text

最近の自分による開発 ● VRFの対応が中途半端だったので独自にコードを補完 ○ 作業の1か月後に公式なVRF対応のコードが入る。ほぼ自分の改造と同じだった。 ● Sub portの対応がまだだったので開発を開始 ○ ほどなくして公式な対応コードが入る。 ○ しかしBroadcomでは動かず、対応待ち。 ● NATがなかったので独自に開発(SAI未使用) ○ 公式の動向: SAIは対応した模様。しかし swssの対応がまだ。 19

Slide 20

Slide 20 text

Community ● Google Groups (英語) ○ sonicproject https://groups.google.com/forum/#!forum/sonicproject ○ sonic-evpn-workgroup https://groups.google.com/forum/#!forum/sonic-evpn-workgroup ○ sonic-breakout-workgroup https://groups.google.com/forum/#!forum/sonic-breakout-workgroup ○ sonic-vrf-workgroup https://groups.google.com/forum/#!forum/sonic-vrf-workgroup ○ sonicprojectは比較的活発。 ● 隔週で音声会議 (英語)。 ● developer(スイッチベンダー各社やMicrosoft)向けにSlackもある模様。 ● 日本語のコミュニティはまだない。 ○ そもそも人が集まるだろうか …… ○ 集まったとして話題はあるだろうか …… 20