MPLS Japan 2023

オープンNOS SONiCのコミュニティ動向
日本電信電話株式会社
NTTネットワークイノベーションセンタ
中野 寛二

今日の発表内容•

NTTではBeyond5G時代に向けたネットワークサービス基盤の構成要素として、オープン技術に立脚したパケット転送技術としてSONiCの機能拡張に関する研究開発を進めている。

•SONiCは、近年データセンタを中心に急速に利用が拡大しており、オープンNOSではデファクトスタンダートとなりつつある。

•

一方で従来のキャリアオペレーションなどを考慮すると機能改善すべき点もあり、SONiCにキャリア向け機能の追加や既存機能の改善を行っている。

•本発表では、SONiCの動向を解説するとともに、次期リリースに向けたSONiCコミュニティへの機能拡張提案状況(次期リリースへの唯一の国内事業者からの提案)やアップストリーム作業を通じて得た経験を共有する。

Copyright 2023 NTT CORPORATION

1目次• SONiCについて• SONiCの動向• SONiCの課題とNTT研究所における対応•

SONiCの課題とアプローチ•

SONiCコミュニティへのupstream方法とupstream状況•

NETCONF機能拡張•

Nex Hop Group機能対応• まとめ
Copyright 2023 NTT CORPORATION

2

SONiCについて

Copyright 2023 NTT CORPORATION

3

SONiCについて• SONiCはオープンなネットワークOSである。
• MicrosoftがOCP(Open Compute Project)に2016年に寄贈し、2022まではOCP Networking傘下、2022以降はLinuxFoundationで管理されている。
• 国内の導入企業としてKDDI、 LINEがある。

Copyright 2023 NTT CORPORATION

出展: https://www.zdnet.com/article/microsoft-submits-new-open-sourced-networking-components-to-open-compute-project/
出展: https://www.linuxfoundation.org/press/press-release/software-for-open-networking-in-the-cloud-sonic-moves-to-the-linux-foundation
出展: https://www.janog.gr.jp/meeting/janog51/sonic/
出典: https://www.janog.gr.jp/meeting/janog52/sonicztp/

4

SONiCの技術概要• コンテナベースアーキテクチャ•

Docker (標準)•Kubernetes• Redis DB集中管理システム• Pub/Subメッセージング(Redis)• SAIを用いたスイッチASIC制御

Copyright 2023 NTT CORPORATION

出展: https://github.com/sonic-net/SONiC/wiki/Architecture5

SONiCの動向

Copyright 2023 NTT CORPORATION

6

SONiC 過去の動向• SONiCは5月頃と11月頃の2回リリースしている。
• リリースまでの流れは次の通りである。
202311 Releaseの例
DateMilestone

5/15/2023

Call for feature candidate in community - document subgroup

5/31/2023

202311 release kick-off

6/7/2023

Feature candidate review in community

6/30/2023

Feature submission deadline

9/16/2023

HLD Review deadline

9/30/2023

All code PRs are created

10/15/2023

Prepare SAI header and SAI SDK integration

10/31/2023

Fork release branch

11/30/2023

Ship

Copyright 2023 NTT CORPORATION

出典: https://github.com/sonic-net/SONiC/wiki/release_train
出典: https://lists.sonicfoundation.dev/g/sonicdev/message/317?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3Acreated%2C0%2C202311%2C20%2C2%2C40%2C99214915

7

SONiC 過去の動向
SONiCは基本的にDCユースケース向けに開発が進み、機能数は最初のリリースを除くと2022年までは増加傾向だったがピークアウトしている傾向•

3530
2520151050201705
L1機能

201709L2機能

201712
L3機能

20180

QoS

201807
管理・制御

201811

201904

201911

ハードウェアアーキテクチャ

202006202012

DHCP

ミラーリング

202106202111

ソフト環境改善

202205202211

認証

ACL

202305

テスト

NAT※機能分類はリリースノートより独自で分類
Copyright 2023 NTT CORPORATION

出典: https://github.com/sonic-net/SONiC/wiki/Sonic-Roadmap-Planning8

SONiC 過去の動向•

2017年：BGP、VLAN、LAG、ECMP、SNMPなど•

2018年：VRF、VXLAN、Warm Rebootなど•

2019年：BGP-EVPN、ZTP、NAT、Management Frameworkなど
35302520151050201705
L1機能

201709L2機能

201712
L3機能

20180
QoS

201807管理・制御

201811

201904

201911

ハードウェアアーキテクチャ

202006202012

DHCP

ミラーリング

202106202111

ソフト環境改善

202205202211

認証

ACL

202305

テスト

NAT※機能分類はリリースノートより独自で分類
Copyright 2023 NTT CORPORATION

出典: https://github.com/sonic-net/SONiC/wiki/Sonic-Roadmap-Planning9SONiC 過去の動向•

2020年：ECMP、Port Mirroring、Kubernetesなど•

2021年：BGP Unnumbered、SRv6、MC-LAG、P4(PINS)など•

2022年：SRv6 µSID、Config Rollback、SmartNIC(DASH)、gNMIなど
3530
25
20
15
10
50
201705
L1機能

201709L2機能

201712
L3機能

20180
QoS

201807
管理・制御

201811

201904

201911

ハードウェアアーキテクチャ

202006202012

DHCP

ミラーリング

202106202111ソフト環境改善

202205202211

認証

ACL

202305

テスト

NAT※機能分類はリリースノートより独自で分類
Copyright 2023 NTT CORPORATION

出典: https://github.com/sonic-net/SONiC/wiki/Sonic-Roadmap-Planning10

SONiC 過去の動向•

2023年: FPGAサポート、ASICのFIBに登録していない経路広報の抑制、YANGモデルの拡充などの機能リリース•

近年はハードウェアアーキテクチャ(FPGA, SmartNIC)サポート、管理・制御機能(YANGサポート等)拡充、ソフトウェアインフラストラクチャの環境改善が多く行われている
35
30
25
20
15
10
50
201705
L1機能

201709L2機能

201712
L3機能

Copyright 2023 NTT CORPORATION

20180
QoS

201807
管理・制御

201811

201904

201911

ハードウェアアーキテクチャ

202006202012

DHCP

ミラーリング

202106202111202205202211202305

ACL
NAT
ソフト環境改善
認証テスト※機能分類はリリースノートより独自で分類

出典: https://github.com/sonic-net/SONiC/wiki/Sonic-Roadmap-Planning11

ハードウェアアーキテクチャ(FPGA, SmartNIC)サポート•

2022年に公開されたSONiC DASHでは、SmartNIC (DPU/IPU)にSONiCの機能をオフロードすることで処理の効率化を行っている。

Copyright 2023 NTT CORPORATION

出典: https://github.com/sonic-net/DASH/blob/main/documentation/general/dash-sonic-hld.md

12

SONiCの次期リリース• 次期リリースの202311について94個の機能提案がされている。
• 2023/10/24時点で11個の機能がリリース予定となっている。
30
25
20
15
1050202311
Copyright 2023 NTT CORPORATION※機能分類は独自で分類
出典: https://github.com/orgs/sonic-net/projects/1413

OCP Global Summit 2023におけるSONiC• 今年のハイライトとして次の機能サポートについて説明•

Security&Build, Management, Diagnostic, Reliability, System

Copyright 2023 NTT CORPORATION

出典: https://drive.google.com/file/d/1It6BSi6A4zbxr_2xnNKamZ6EKTNOzSQO/view

14

OCP Global Summit 2023におけるSONiC• SONiCコミュニティ update•

新しいSONiC ウェブサイトの公開›•

Qualityの担保するためのドキュメント公開›•

出典: https://sonicfoundation.dev/

出典: https://github.com/sonicnet/SONiC/blob/master/doc/SONiC%20feature%20quality%20definition.md

Working Groupの作成›Routing WG, UMF WG, OTN WGなど›

出典: https://lists.sonicfoundation.dev/g/main/subgroups

Copyright 2023 NTT CORPORATION

15

SONiCの課題とNTT研究所における対応

Copyright 2023 NTT CORPORATION

16

SONiCにおける現状見えている課題と検討したアプローチ• マネジメントはキャリア観点で課題の抽出を実施• 課題視した機能の中でNETCONFとfpmsyncdについてアップストリームを実施
プレーン

分類
設定変更コマンド体系

コミュニティSONiCの状況/課題

検討したアプローチ

コマンド数が少ない。

KLISH CLI拡張(Management Framework)L2/L3設定コマンド体系が異なる
設定項目が限定的

YANG拡張(Management Framework)

REST, gNMIのみ。旧来から利用する
NETCONFに対応不可。相互接続性に難あり。

NETCONF拡張(Management Framework)

ルーティングプロトコル

標準ではBGPのみ利用可。OSPF等のIGPサポート不可。

COPP関連の設定ファイル変更

ECMP経路処理

旧来の経路追加メッセージのみ利用可。Nexthop Group (netlinkメッセージ)が利用不可

SAIのサポート• SAIサポートの対応状況がASIC毎 •に異なる。
• BroadcomはSAIフルスペックをサポート不可

マネジメント外部制御プロトコル

コントロール

データ

Copyright 2023 NTT CORPORATION

Fpmsyncd機能*拡張*fpm形式のnetlinkメッセージの経路更新
メッセージをRedis DBに同期する機能

SAIの多くのAPIに準拠していたIntel Tofinoを検討→Tofino開発中止のため再検討要。

17

SONiCへのUpstream方法•: 次回リリースのロードマップに追加するように、1ヶ月前にコミュニティに機能提案する。 また、HLDの概要を提案するのとレビューの日付を決定する。

Design: HLDには詳細なデザインとSONiCアーキテクチャへの適合性を記載することが必要になる。HLDはコミュニティからレビューが行われる。

Coding &Test: HLDに従ってコーディングとテスト行う。HLDレビュー結果によってコード修正が必要となる。

Release: 機能を実装したブランチがリリース日に提供される。ブランチの動作検証/コード修正期間(1-2ヶ月)が設けてあり、その間に当該機能の検証/修正作業を行う。

当該ブランチのリリース日までに完成しなかった機能が次のリリース以降に実装される。
Copyright 2023 NTT CORPORATION

出典: https://github.com/sonic-net/SONiC/wiki/release_train

Design Coding & Test Release

PlanPlan•

SONiCに機能提案を行う際に次の開発サイクルを行う。

18

SONiCへのUpstream方法

コミュニティのマイルストーン
NTTの状況

• 202311リリースまでのスケジュール

2023年
56

7

機能提案期間89

10

HLDレビュー期間

Code PRHLDの公開 & 機能提案

11
release

HLDレビュー日の打診
HLD PR
HLDレビュー Routing WG
HLDレビュー SONiC community Meeting
HLDレビューUMF WG, Routing WG
HLD 修正Code PR

Code 修正 & Test
Copyright 2023 NTT CORPORATION

出典: https://lists.sonicfoundation.dev/g/sonicdev/message/317?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3Acreated%2C0%2C202311%2C20%2C2%2C40%2C99214915

19

CLAの確認•

SONiCにコントリビューションする際はLinux FoundationのICLA(Individual CLA)にサインする必要がある。(企業名で活動する際は、属する企業のポリシーに従って上記に署名)•

初めてPRを送る際にEasyCLAシステムでCLA署名を求められ、署名しないとCIが回らない。

Copyright 2023 NTT CORPORATION

出典: https://docs.linuxfoundation.org/lfx/easycla/v2-current/contributors/individual-contributor

20

デザインドキュメントの作成• HLDテンプレートに従ってデザインドキュメントの記載をする。

Copyright 2023 NTT CORPORATION

出典: https://github.com/sonic-net/SONiC/blob/master/doc/hld_template.md

21

オンラインでの議論• SONiC community MeetingでHLDのレビューの実施• HLDレビューの結果、WGで詳細議論を行う•

NETCONFの提案: UMF WG•

fpmsyncdの提案: Routing WG

Copyright 2023 NTT CORPORATION

出典: https://lists.sonicfoundation.dev/g/sonic-dev/subgroups

22

UMF WG/Routing WGの議論で得られた知見
既存機能に影響を与えないことが重要• 既存機能に組み込む場合は初期動作は無効にする• 設定の有効化/無効化機能が必要• 機能ごとにコンテナを作成するデザインが原則

Copyright 2023 NTT CORPORATION

23

コードPRの実施• 実装したソースコードのPRを行う。
• このとき、PRの一覧をissueにまとめる必要がある。

Copyright 2023 NTT CORPORATION

24

提案したNETCONFの概要•

NETCONFを対応することで相互接続性の向上を行う。

•NETCONF ServerにNetopeer2を使用している。NETCONF ServerはNETCONFの設定値をRESTに変換してSONiC内部のRESTを操作する。
対応している機能

Copyright 2023 NTT CORPORATIONRFC Operation Name

Supported

edit-config

Partially

get-config

Partially

getNo

copy-config

Nodelete-config

No

lockNounlockNo

close-session

Yeskill-sessionYes

出典: https://github.com/sonic-net/SONiC/blob/32e394b6e48a4e91bb78617d69bb61e83010e60e/doc/mgmt_netconf/hld_NETCONF-NTT.md

25

NETCONFのupstream状況•DesignのHLDレビュー段階•

NETCONFのHLDをPRしたところフランスのテレコム会社のOrangeもNETCONFの実装をしていることが判明•Orangeと議論しながらNETCONF拡張を目指している
NTTのデザイン

Copyright 2023 NTT CORPORATION

Orangeのデザイン

出典: https://github.com/sonic-net/SONiC/blob/874c710a1d93650218f219f872d3913f65d2560c/doc/mgmt/Management%20Framework.md

26

提案したfpmsyncd拡張の概要•

経路処理の効率化であるNext Hop GroupにDBからASICまでは対応している。

•

FRRとAPPL_DB間のfpmsyncdはNext Hop Groupに非対応である。

•fpmsyncdをNext Hop Group対応を行い経路処理の効率化を目指す。
database container(radis-server)

bgp container (FRR)

staticd

bgpd

zabra
[dplane_fpm_nl][zebra.conf]②2 fpm use-nexthop-group
オプションの有効化

Tcp.port 2620
format: netlink

CONFIG_DB

1①設定有効化

APPL_DB③ fpmメッセージ処理の有効化
3

fpmsyncd④ fpmメッセージ処理の実行
4
Copyright 2023 NTT CORPORATION

5⑤NEXTHOP_GROUP_TABLE

ASIC_DB

エントリを作成

出典: https://github.com/sonic-net/SONiC/blob/c658cc40a6528bc7a23fdf1bff503146fa6ac180/doc/fpmsyncd/hld_fpmsyncd-NTT.md

27

Fpmsyncd拡張のupstream状況• Coding & Testのコード修正してテストが完了した段階• PRしたfpmsyncd拡張のHLDはコミュニティミーティング及びRouting WGでのレビューにて、Next Hop Group機能の必要性が認められ機能追加が承認された• HLDレビューでは、次の確認があり対応を行った•

デフォルトはDisable動作が必要•

Enable/Disableの追加するため修正•

Warm boot時の動作確認

Copyright 2023 NTT CORPORATION

28

upstream状況のまとめ
PlanNETCONFのupstream状況

fpmsyncd拡張を行いルーティングの効率化はコミュニティから賛同を得られて順調に進んでいる状況

fpmsyncd拡張のupstream状況

Copyright 2023 NTT CORPORATION

Design Coding & Test Release

NETCONFは、コミュニティから必要性の理解されたが、SONiCのデザイン原則に会わないため修正を要求

29

まとめ

Copyright 2023 NTT CORPORATION

30

まとめ
•

キャリアの考えているものとコミュニティのSONiCのギャップがあった。

•

一定のコントリビューション成果を得ることができた。

••

NETCONFに関してDC系事業者からは必要性の理解されたが、SONiCのデザイン原則に会わないため修正を要求された•ルーティングの効率化に関してはDC事業者からも賛同が得られた

コントリビューションを行う中で得られた知見•既存機能に影響を与えないことが重要›

既存機能に組み込む場合は初期動作は無効にする›

設定の有効化/無効化機能が必要›

機能ごとにコンテナを作成するデザインが原則

Copyright 2023 NTT CORPORATION

31

謝辞
本研究成果は、国立研究開発法人情報通信研究機構（NICT）の委託研究 （04801）により得られたものです。

Copyright 2023 NTT CORPORATION

32

Your Value Partner