ネットワーク設計と自動化

gNMI(gRPC Network Management Interface) じーえぬえむあい

gRPCネットワーク自動化OpenConfigテレメトリYANGネットワーク管理
gNMIについて教えて

簡単に言うとこんな感じ!

gNMIは、ネットワーク機器(ルーターやスイッチ)の設定取得・変更・監視を自動でやりとりするための「共通の話し言葉」だよ!昔ながらのSNMPやCLIでの手作業をなくして、プログラムからスマートに機器を操れるようにしてくれる現代的な仕組みなんだ!


gNMIとは

gNMI(gRPC Network Management Interface) は、Googleが開発した高速通信フレームワーク「gRPC」の上に構築された、ネットワーク機器を管理・監視するためのインターフェース仕様です。OpenConfigプロジェクトが推進しており、シスコ・ジュニパー・アリスタなど主要ベンダーが広くサポートしています。

従来のネットワーク管理は、SNMP(Simple Network Management Protocol)やSSH経由のCLI(コマンドライン)が主流でした。しかしこれらは「ポーリング型」(定期的に機器に問い合わせる方式)のため、大量の機器を扱うと遅延や管理コストが膨大になる課題がありました。gNMIは、機器側からリアルタイムにデータを「プッシュ配信」するストリーミング型テレメトリをサポートし、この問題を根本から解決します。

データモデルには YANG(ネットワーク機器の設定・状態をツリー構造で定義する言語)を使い、Protocol Buffers(protobuf)でシリアライズして高速・軽量に通信します。ベンダー独自のコマンドに依存せず、標準化されたデータ形式で機器を操作できるため、マルチベンダー環境の自動化が格段に楽になります。


gNMIの4つの主要操作

gNMIが定義する操作は、シンプルな4つのRPC(Remote Procedure Call:遠隔手続き呼び出し)で構成されています。

操作名種類何をするか例え
Get単発リクエスト機器の現在の設定・状態を取得する「今のインターフェース設定を見せて」
Set単発リクエスト機器の設定を変更・追加・削除する「このインターフェースをオンにして」
Subscribeストリーミング指定データを継続的にプッシュ配信させる「5秒ごとにCPU使用率を送り続けて」
Capabilities単発リクエスト機器がサポートするモデルや機能を確認する「あなたは何ができますか?」

Subscribeのサブモード:3つの配信スタイル

Subscribeはgの目玉機能で、さらに3つのモードがあります。

モード動作用途
STREAMデータが変化したとき・または一定間隔でプッシュリアルタイム監視・障害検知
ONCE1回だけデータを送って終了スナップショット取得
POLLクライアントが要求したときだけ送る従来型ポーリングとの互換

覚え方:「G線上のネット管理」

  • Get → Get(そのまま取得)
  • Set → Setting(設定変更)
  • Subscribe → Stream(流し続ける)
  • Capabilities → Check(できること確認)

ゲット・セット・サブスク・ケーパビリティ」と唱えるだけ!


歴史と背景

  • 2013年頃:Googleが社内ネットワーク管理の課題解決のためにgRPCを開発。大規模DCネットワークの管理自動化が動機
  • 2015年:OpenConfigプロジェクト始動。Googleを中心にFacebook・Microsoft・Appleなど大手がネットワーク管理のベンダー非依存化を推進
  • 2016年:gNMIの初版仕様(v0.1)が公開。OpenConfigのgithubリポジトリでオープンに開発
  • 2018年:主要ベンダー(Cisco IOS XR・Juniper Junos・Arista EOS)が本格サポート開始。業界標準として定着
  • 2019年gNOI(gRPC Network Operations Interface)も登場。gNMIと組み合わせてOSアップグレードや証明書管理なども自動化可能に
  • 2020年以降クラウドネイティブなネットワーク管理スタックの標準コンポーネントとして定着。Telemetry収集基盤(gnmic・gNMIc)や可視化ツール(Grafana/Prometheusとの連携)が充実

gNMI vs 従来技術の比較

gNMIがどれだけ進化しているか、従来手法と比べてみましょう。

比較項目SNMP(旧来)NETCONF(中間世代)gNMI(現代)
通信方式UDP(信頼性低)SSH over TCPHTTP/2(gRPC)
データ形式MIB(独自)XML/YANGProtobuf/YANG
配信方式ポーリングのみポーリング中心ストリーミング対応
速度遅い中程度高速・低遅延
設定変更基本不可可能可能
マルチベンダー対応部分的OpenConfigで改善OpenConfigで統一
開発しやすさ難しいやや複雑gRPCライブラリで簡単
gNMIのアーキテクチャ概要 管理システム側 (gNMI Client) 自動化スクリプト gnmic / pygnmi Telemetry 収集基盤 Grafana / Prometheus CI/CD パイプライン gNMI プロトコル (gRPC / HTTP2 / TLS) Get RPC Set RPC Subscribe RPC Capabilities RPC Protobuf / YANG ネットワーク機器側 (gNMI Server / Target) Cisco IOS XR Juniper Junos Arista EOS Nokia SR OS その他対応機器 要求 応答 転送 配信 ★ Subscribe はサーバーから継続的にデータをプッシュ配信

関連する規格・RFC

規格・RFC番号内容
RFC 6241NETCONF プロトコル仕様(gNMIの前世代にあたるネットワーク管理プロトコル)
RFC 7950YANG 1.1 データモデリング言語の仕様(gNMIのデータ定義に使用)
RFC 8040RESTCONF プロトコル仕様(gNMIと同世代のREST型ネットワーク管理API)
RFC 8342ネットワーク管理データストアのアーキテクチャ(NMDA)定義

※ gNMI本体はIETF RFCではなく、OpenConfigプロジェクト(github.com/openconfig/gnmi)で仕様管理されています。


関連用語

  • gRPC — GoogleのHTTP/2ベース高速RPC通信フレームワーク。gNMIの通信基盤
  • YANG — ネットワーク設定・状態をツリー構造で定義するデータモデリング言語
  • NETCONF — gNMIの前世代にあたるXMLベースのネットワーク管理プロトコル
  • OpenConfig — ベンダー非依存のネットワーク管理モデルを推進するオープンな取り組み
  • SNMP — 旧来型のネットワーク監視プロトコル。gNMIが解決しようとした課題の元凶
  • ストリーミングテレメトリ — 機器が自発的にデータをプッシュ配信する現代的な監視手法
  • Protocol Buffers — Googleが開発した高速・軽量なデータシリアライゼーション形式。gNMIのデータ転送に使用
  • ネットワーク自動化 — インフラ設定・管理をコードで自動化する取り組みの総称