コンテンツにスキップ

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 を一括管理できるようにするための層である。

関連ページ