# YANG
YANG は、ネットワーク機器の構成・状態データをモデル化するための宣言的なデータモデリング言語である。第11章「ネットワーク管理は今やクールな仕事だ」§11.2は、[[Aether]] 向けに構築中の実行時制御の仕組みが YANG を宣言的な仕様記述言語として採用していると述べ、これによりデータモデルの定義・操作に関する豊富なツールセットを活用できるとする。この設計は次の4つの特性を持つ。(1) データモデルの定義・操作に関する豊富なツールセットの活用、(2) バージョニングへの対応(状態変更のロールフォワード・ロールバックの容易性)、(3) 特定のデータ永続化方法への非依存(通常はクラウドネイティブなキーバリューストアと組み合わせて運用)、(4) ロールベースアクセス制御(RBAC)への対応(主体ごとの制御変数・構成変数への可視性・操作権限のきめ細かな制御)。(Source: [[@2026__LambdaNote__ネットワークシステムについて語るときに我々の語ること - Chapter 11 ネットワーク管理は今やクールな仕事だ]] ch.11 §11.2)
YANG データモデルから自動生成される Control API は、動的な実行時の制御状態の管理という本来の目的に加え、RBAC を通じて最小権限の原則をより確実に実践できること、変数の検証とセキュリティチェックを早い段階で実施できること(ユーザーに近い場所でエラーを捕捉し、より適切なエラーメッセージを返せること)という利点をもたらす。著者はこの適切なデータモデルの価値を「計り知れない」と評している。(Source: ch.11 §11.2)
## 管理APIの標準技術としての位置づけ(§11.4)
第11章§11.4は、機能開発の迅速性と管理性の境界を管理するための課題として、明確に定義された管理APIの必要性を論じる文脈で YANG に再度言及する。SDN の分野では P4 言語(転送パイプラインのプログラミング用)と P4Runtime(制御APIの自動生成用)の組み合わせが、コントロールプレーンの更新に伴う管理プレーンの更新という課題に対する解決策となったが、著者は、マルチテナント型プラットフォームのエンドユーザー(CDNのコンテンツプロバイダーやマネージド接続サービスの企業管理者など)がシステム管理を行う場合に相当する確立された標準技術はまだ存在しないとしつつ、現時点で最も妥当なアプローチは提供したい抽象サービスのデータモデルをYANGなどで定義し、そこからPaaS APIを自動生成するツールを構築することだと述べる。(Source: ch.11 §11.4)
## 教科書における位置づけ(Computer Networks: A Systems Approach)
同じ著者ら(Larry Peterson・Bruce Davie)による教科書 *Computer Networks: A Systems Approach* 第6版第9章§9.3.2は、YANGを「Yet Another Next Generation」の略とし、XSD(XML Schema Definition、XMLのスキーマ定義言語)の制限版として位置づける。ただしXSDと異なりYANG自体はXML専用ではなく、XMLに加えてProtobufs・JSONを含む複数のワイヤフォーマットと組み合わせて使える。第9章はYANGを、SNMPにおけるMIBに相当する役割——ネットワーク機器が公開する構成・監視データの意味論を定義する部分——として説明し、標準化の対象をこのモデリング言語自体に限定し、各機器ベンダーがそれぞれのデータモデルを公開する形を取る点を強調する。OpenConfigはYANGをモデリング言語として採用したうえで、業界を共通モデルへ収束させるプロセスを主導する取り組みであり、RPC機構としてはgNMI(gRPC上で動作しProtobufsをデータ表現に使う、gRPC Network Management Interface)を有力な選択肢として推す。(Source: [[@2020__SystemsApproach__Computer Networks - A Systems Approach - Chapter 9 Applications]] §9.3.2)
LambdaNote版第11章がAetherという具体的なプロジェクトの実装選択としてYANGの採用理由(ツールセットの充実・バージョニング対応・永続化方式非依存・RBAC対応)を述べるのに対し、教科書側はYANGを業界全体のネットワーク管理の潮流(SNMP/MIBからOpenConfig/YANGへの移行)の中に位置づける点で、記述の抽象度が異なる。両者を合わせると、YANGは「なぜ採用されたか(実装上の利点)」と「何を代替しつつあるか(SNMP/MIB体制)」という2つの説明軸を持つことが分かる。(Source: [[@2026__LambdaNote__ネットワークシステムについて語るときに我々の語ること - Chapter 11 ネットワーク管理は今やクールな仕事だ]] ch.11 §11.2, [[@2020__SystemsApproach__Computer Networks - A Systems Approach - Chapter 9 Applications]] §9.3.2)
## Stratumでの具体的な適用: gNMIツールチェーンとOpenConfigモデルの絞り込み(*Software-Defined Networks: A Systems Approach* 第5章)
第9章§9.3.2が「OpenConfigはRPC機構としてgNMIを推す」と教科書的に述べるのに対し、*Software-Defined Networks: A Systems Approach* 第5章は、この gNMI 実装が実際にどう動くかを [[Stratum]] という具体的な Switch OS の実装で示す。YANG ツールチェーンは、YANG ベースの OpenConfig モデルを client 側・server 側の gRPC スタブへ変換し、これが [[gNMI]] の実体となる。このツールチェーンは複数のターゲット言語をサポートし(Stratum は C++ を使う)、gRPC のクライアント側とサーバ側は同じ言語で書かれる必要はない。YANG は gRPC や gNMI に縛られるものではなく、同じ OpenConfig モデルから XML や JSON 表現を生成し NETCONF や RESTCONF で使うこともできるが、Stratum の文脈では protobufs がターゲットになる。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 5 Switch OS]] ch.5 §5.3)
さらに第5章は、実装が OpenConfig モデルの全範囲を扱う必要はないという具体的な絞り込みの実例を示す。Stratum は集権型コントローラをサポートする Switch OS として、データプレーンの諸側面を構成することには関心を持つが、BGP のようなコントロールプレーンプロトコルの構成には通常関与しない。具体的には、Stratum が追跡する OpenConfig モデルは Interfaces・VLANs・QoS・LACP、およびシステム・プラットフォーム変数群に限られる。これは、YANG/OpenConfig という汎用的なモデリング基盤が、実装ごとに関心のある部分集合だけを選び取って使われるものであることを示す。(Source: ch.5 §5.3)
## gNOI: 構成(gNMI)と運用(gNOI)の分離
第5章は、YANG が定義するのは主に永続的な構成状態のモデルであり、reboot のような非冪等な運用操作や一時的な状態のクリア・設定は gNOI という別のインターフェースが担うと整理する。gNOI の基盤機構は gNMI と全く同じだが、YANG モデルが対応するのは gNMI 側(持続的な構成状態)であり、gNOI 側の操作(`Reboot`・`Ping`・`Traceroute` など)は YANG モデルというより protobuf の `Message`/`Service` 定義で直接記述される。この区別は、YANG/OpenConfig が「構成をモデル化する」という役割に特化しており、運用操作全般をカバーする万能なモデリング言語ではないことを示す。(Source: ch.5 §5.3)
## 関連
- [[Aether]] — YANGベースのControl APIを実装するプロジェクト
- 概念: [[GitOps]](構成管理・実行時制御の状態管理という文脈) / [[ソフトウェア定義ネットワーク]](P4/P4Runtimeとの比較対象) / [[ネットワーク自動化]](SNMPからOpenConfig/gNMIへの移行という文脈)
- [[gNMI]] — YANGモデルをgRPC/protobufにバインドする管理インターフェース
- [[Stratum]] — YANGツールチェーンを使う具体的なSwitch OS実装
- [[@2026__LambdaNote__ネットワークシステムについて語るときに我々の語ること - Chapter 11 ネットワーク管理は今やクールな仕事だ]]
- [[@2020__SystemsApproach__Computer Networks - A Systems Approach - Chapter 9 Applications]]
- [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 5 Switch OS]]
## 出典
- [[@2026__LambdaNote__ネットワークシステムについて語るときに我々の語ること - Chapter 11 ネットワーク管理は今やクールな仕事だ]](ch.11 §11.2、§11.4)
- Larry Peterson and Bruce Davie, *Computer Networks: A Systems Approach*, 6th edition, Chapter 9: Applications, §9.3.2 Network Management (SNMP, OpenConfig). https://book.systemsapproach.org/applications.html
- Peterson, Cascone, O'Connor, Vachuska, and Davie, *Software-Defined Networks: A Systems Approach*, 2021, Chapter 5: Switch OS, §5.3. https://sdn.systemsapproach.org/stratum.html