gNOI / gNSI¶
gNOI (gRPC Network Operations Interface) は、設定読み書き (gNMI) の隣で「操作」を担当する。reboot、OS install、file transfer、factory reset、health check のような operational action を、ベンダー非依存の API として呼べるようにする。gNSI (gRPC Network Security Interface) は、その隣で証明書配布、認証ポリシー、attestation のような security action を担当する。
SONiC の gNOI / gNSI 実装は、telemetry container 内の同じプロセスで gNMI と一緒に動く。API ごとに SONiC のどの service / script を呼んでいるかを押さえると、障害時の切り分けが速い。
API と SONiC service の対応¶
| gNOI service | 主な API | SONiC 側の到達点 | 参照 HLD |
|---|---|---|---|
| System | Reboot, RebootStatus, CancelReboot, Time, Ping, Traceroute, SetPackage, SwitchControlProcessor | reboot、reboot-cause、sonic-installer |
gNOI System |
| OS | Install, Activate, Verify | sonic-installer で image インストール |
gNOI OS |
| File | Get, Put, Stat, Remove, TransferToRemote | local file system、tech-support、log | gNOI File / Factory Reset |
| FactoryReset | Start | reset-factory 系の処理 |
gNOI File / Factory Reset |
| Healthz | Get, List, Acknowledge, Artifact, Check | container / service の health 状態 | gNOI Healthz |
| gNSI | CertZ / Authz / Pathz など | 証明書、認証ポリシー、attestation | gNSI HLD |
各 API の引数、エラーコード、SONiC 固有の制限事項は対応する HLD に書かれている。たとえば Reboot は warm/fast/cold の指定をどの SONiC reboot に対応させるか、Healthz の component 階層をどう SONiC service に割り当てるかが、それぞれの HLD で具体化されている。
System (reboot / package / process)¶
gNOI System APIs は、reboot 操作と OS package 配布、control processor 切替を扱う。SONiC 側では Reboot が /usr/local/bin/reboot 経由か、warm/fast の場合は別経路で走る。CancelReboot、RebootStatus は delayed reboot のキャンセル・状態確認に使う。
reboot 種別の SONiC 内部設計は章 11 (Reboot / Upgrade / Lifecycle) を参照する。
OS (install / activate / verify)¶
gNOI OS APIs は、image を upload して install し、次回 boot で activate する、という標準的な lifecycle を SONiC でどう実装するかを定義する。sonic-installer が backend で動く。Install と Activate を別 RPC に分けているため、image 検証と切替を独立にスケジュールできる。
File / FactoryReset¶
gNOI File / FactoryReset APIs は、log や tech-support の取り出し、設定 file の配置、factory reset を扱う。File.Get / Put のパス権限と、Factory Reset の対象範囲 (config だけか、ログまでか) は SONiC 側のポリシーで決まる。
Factory reset の SONiC 実装 (reset-factory design) は章 11 や reset-factory HLD を参照する。
Healthz¶
gNOI Healthz API は、container や service の health 状態を gRPC で問い合わせる。SONiC で container health を集約する仕組みと組み合わせて、特定の component の status / artifact (たとえば core dump、log) を取れるように設計されている。NMS から「障害発生時のスナップショット取得」を自動化したいときの入口になる。
gNSI: 証明書とポリシー¶
gNSI HLD は、SONiC の証明書配布、認証ポリシー、attestation を gRPC API として扱う。CertZ で server cert / CA を配布し、Authz で gRPC 認可ポリシーを配布し、Pathz で path 単位のアクセス制御を配布する。CLI / 手動オペレーションを置き換えて、複数 device の security posture を一括管理できるようにするための層である。