SONiC近況報告 2019/Fall

Fab252f33476e4b269b402cbcb6d4db2?s=47 Masaru OKI
November 27, 2019

SONiC近況報告 2019/Fall

ホワイトボックススイッチ用OSのひとつであるSONiCについて、市場動向や追加された機能などについて概要を紹介します。

Fab252f33476e4b269b402cbcb6d4db2?s=128

Masaru OKI

November 27, 2019
Tweet

Transcript

  1. 3.

    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
  2. 4.

    市場動向 • 株式会社ミクシィが商用ネットワークで利用 (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
  3. 5.

    対応ハードウェアの追加(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
  4. 6.

    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
  5. 7.

    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
  6. 8.

    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
  7. 9.

    VRF “VRF”: { “Vrf0”: {}, “Vrf-tokyo”: {} }, “INTERFACE”: {

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

    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
  9. 11.

    sflow dockerがデフォルトで有効に "SFLOW_COLLECTOR": { "server1": { "collector_ip": "192.168.0.1", "collector_port": "6343"

    } }, "SFLOW_SESSION": { "Ethernet8": { "admin_state": "up" } } • Host sflow (hsflowd) を使っている。 • 実動作については未確認。 11
  10. 12.

    drop counter “DEBUG_COUNTER”: { “DEBUG_0”: { “type”: “PORT_INGRESS_DROPS” } },

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

    まだmasterに入っていない機能 • NAT ◦ テーブル名定義だけが commitされている • FRR設定のVRF対応 • STP/PVST

    • ZTP • MLAG • 動的なport breakout • マネジメントフレームワーク • VRRP • VLAN sub interface in Broadcom platform • etc. 15
  12. 16.

    ビルド時間が長すぎる? • 聞いた話 ◦ ビルドに5時間かかる ◦ ビルドに8時間かかる • うちだと1時間くらいなんですけど…… ◦

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

    ビルド時間測定 • 実際に測ってみた • 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
  14. 18.

    ビルド時間考察 • おそらくストレージI/O速度が大きく関係している。HDDよりSSD。 • 観察していると全コアが100%に貼りつくのでコア数もそれなりに重要。 ◦ nproc(1)でコア数を数えている。 (論理コア数。4C8Tのときは8が返る) • docker

    image作成時はネットワークへのアクセスも頻繁。 • make allではなくmake target/sonic-<PLATFORM>.bin で速くなる。 • 悪条件が重なると5時間かかりそうなことはわかった。 18
  15. 20.

    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