# ネットワークオペレーティングシステム
## 定義
ネットワークオペレーティングシステム(Network OS, NOS)とは、単一スイッチのローカルな状態管理を超えて、ネットワーク全体をグローバルな視点で管理するソフトウェア層である。水平スケール可能な他のクラウドアプリケーションと同じ設計思想を持ち、疎結合なサブシステム群(マイクロサービス的な構成)と、スケーラブルで高可用なkey/valueストアから構成される。NOSは3層のアーキテクチャを持つ: (1) アプリケーションがネットワーク状態の把握と制御に用いる北向きインターフェース(Northbound Interface, NBI)、(2) ネットワーク状態の管理とアプリケーションへの変更通知を担い、内部に分散key/valueストアを持つ分散コア(Distributed Core)、(3) 共有プロトコルライブラリとデバイス固有ドライバからなるプラグイン群で構成される南向きインターフェース(Southbound Interface, SBI)である。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.1)
NOSを従来のOSに例えると、ハードウェア(ネットワークスイッチ群)へのすべてのアクセス(制御プログラムによるものも人間オペレータによるものも)がNOSを介して媒介される点は共通する。一方で、特権カーネルと複数のユーザ空間を分けるsyscall相当の境界を持たず単一信頼ドメインで動作する点、ある機能が「in NOS」(NOS自体の一部)か「on NOS」(NOS上で稼働するアプリケーション)かの境界が恣意的である点で、従来のOSとは異なる。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.1)
NOSの参照実装である[[ONOS]]では、分散コアの内部が[[Atomix]](Raftベースのkey/valueストア兼分散システム構築ツールキット)によって実装される。Topology・Device・Link・Host・Pathなどの各サービスはAtomixのmapをラップする形で構成され、テーブル(map)とサービスは同一の存在の2つの視点(データ構造とインターフェース)として扱われる。NOSに固有なのはこのAtomix自体ではなく、それが定義するmapの集合、すなわちキーの意味論と値の型からなるデータモデルであり、これがNOSをNOS足らしめている(配車アプリやSNSではない)。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.2)
北向きインターフェースの中心的な抽象の1つがFlow Objectiveである。デバイス中心でありながらパイプライン非依存(pipeline-agnostic)という性質を持ち、Filtering→Forwarding→Nextという3段の抽象パイプラインとして表現される。Pipeliner・Pipeconfという機構がこの抽象を、固定機能パイプラインおよびP4プログラムされたパイプラインの双方に対する具体的なFlow Rule操作へマッピングする。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.3)
## 横断的知見
- **「ネットワークOS(NOS)」という語は、少なくとも2つの異なるスコープを指す用語として、分野・出典をまたいで多義的に使われている**: 本ページがこれまで参照してきた*Software-Defined Networks: A Systems Approach* ch.6は、NOSを「単一スイッチのローカルな状態管理を超えて、ネットワーク全体をグローバルな視点で管理するソフトウェア層」と定義し、参照実装ONOSは複数スイッチにまたがる分散コア(Atomix/Raft)を持つ、SDNコントローラそのものである。一方『実践SONiC入門』第1章は、NOS(の代表例であるSONiC)を「Switch ASICやペリフェラルを管理しながら、マネジメントプレーンおよびコントロールプレーンの機能を提供するもの」と定義し、スイッチ1台のCPU上で動作する単一デバイスのソフトウェアとして扱う——ネットワーク全体の集中管理は範囲外である。両者は矛盾しているわけではなく、SDN文脈での「Network OS」(ONOS・ONIXなど、ネットワーク全体を管理する集中コントローラ)と、ネットワーク機器業界での従来的な「Network OS」(Cisco IOSやJunOS、SONiCのような、スイッチ単体を制御するデバイス組込みソフトウェア)という、同じ語を使う2つの異なる用語系統(コミュニティ)が存在することを示している。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.1, [[@2025__Gihyo__実践SONiC入門 - Chapter 1 ホワイトボックススイッチとSONiCアーキテクチャ]] ch.1 §1.1.3)
- **NOSの構造的な3層分割(NBI/分散コア/SBI)は、単一デバイスNOSの3層分割(マネジメントプレーン/コントロールプレーン/データプレーン)と対応しない**: ONOS流のNOSはネットワーク全体を対象にNBI・分散コア・SBIの3層で構成されるのに対し、SONiC流のNOS(単一デバイス)はマネジメントプレーン・コントロールプレーンという2層の機能提供にとどまり、3層目のデータプレーン(パケット転送そのもの)はNOSの外側、すなわちSwitch ASIC側の責務として明確に切り離されている。単一デバイスNOSにとってのデータプレーンは「自身が制御する対象」であって「自身の内部構造」ではない点が、ネットワーク全体を1つのシステムとして扱うONOS流NOSとの構造的な違いである。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.1, [[@2025__Gihyo__実践SONiC入門 - Chapter 1 ホワイトボックススイッチとSONiCアーキテクチャ]] ch.1 §1.1.1, §1.1.3)
- **NOSの分散コアは、[[ソフトウェア定義ネットワーク]] concept がch.1由来で残していた「集中コントロールプレーンの実装は具体的にどの分散システム技術に依拠するのか」という未解決の問いに、解像度の高い回答を与える**: [[ソフトウェア定義ネットワーク]] concept は「集中コントロールプレーンの実装自体は複数サーバへ分散させてよい(単一障害点ではない)」というch.1の論法を記録しつつ、「具体的にどの分散システム技術(合意プロトコル・シャーディングなど)に依拠しているのかはch.1自身が一般化するにとどまる」と未解決のまま残していた。本ページが扱うch.6は、その答えを具体的に示す——ONOSはRaftコンセンサスアルゴリズムをコアとするAtomixというkey/valueストアの上に構築され、group membershipプリミティブでインスタンス集合を把握し、leader-electionプリミティブでスイッチごとの担当(master)インスタンスを選出する。つまり「論理的に集中化されたコントロールプレーン」という抽象は、実装レベルでは分散コンセンサス(Raft)によるフォールトトレラントな状態複製として具現化されている。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 1 Introduction]] ch.1, [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.2, §6.2.1)
- **SDNの「コントロール/データプレーン分離」という原則は、NOS内部ではさらに「北向き(アプリケーションが見る抽象)」と「南向き(デバイス固有の詳細)」という別の分離軸に折り重なる**: [[ソフトウェア定義ネットワーク]] concept はディスアグリゲーション(RIB/FIBの分離)・集中対分散・プログラマブル対固定機能という3設計軸を記録するが、これらはいずれもコントロールプレーンとデータプレーン(スイッチ)の間の分離を扱う。本ページのch.6は、コントロールプレーン自体の内部にも同種の分離原則(Protocol Providers・Device Driversというプラグインによる、プロトコル固有性とデバイス固有性からのコア・アプリケーションの隔離)が入れ子状に適用されていることを示す。SDNの分離原則は「スイッチとコントローラの間」だけでなく「コントローラ内部のコアとプラグインの間」にも再帰的に現れる。(Source: [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]] ch.6 §6.4, §6.4.1, §6.4.2)
## 未解決の問い
- ONOSは「単一信頼ドメインで動作し、特権カーネルとユーザ空間を分けるsyscall相当の境界を持たない」と明言される。マルチテナント・マルチアプリケーションでの権限分離(ある制御アプリケーションが他アプリケーションの管理領域を誤って書き換えることを防ぐ仕組み)が必要になった場合、NOSはどのように進化するのか。ch.6はこれを将来の課題として示唆するにとどめている。
- μONOSへのマイクロサービス化(Atomix・制御アプリケーション・南向きアダプタの個別マイクロサービス化、コアの4分割)は、単一プロセス内でAtomixのトランザクション的一貫性を享受できていたモノリシックなONOSと比べて、サービス間の一貫性保証(例えばTopology Management とControl Managementの間の整合性)をどう再構築しているのか。ch.6はμONOSの分割方針を述べるが、分割後の一貫性モデルには踏み込んでいない。
- Flow Objectiveのパイプライン非依存という抽象は、Pipeconfが対応関係を管理する「モデル定義」自体が現状ONOS定義であるという限界を持つ。ch.6は「将来的にはP4で統一される見込み」と述べるが、統一後にONOS固有のモデルがどう置き換わるのか、既存の制御アプリケーションの移行コストがどの程度かは示されていない。
- Atomixの`DistributedMap`が結果整合性を提供する仕組みは、[[分散コンセンサス]] concept が指摘するとおり、Raftという強一貫性の複製ログの上でどう構築されているのか原本からは分からない。ONOSのどのサービスがAtomicMap(強一貫性)を、どのサービスがDistributedMap(結果整合性)を使い分けているのかという具体例も、ch.6には記載がない。
- 「ネットワークOS」の2つの用語系統(ネットワーク全体を管理するONOS流と、単一デバイスを制御するSONiC流)は、本書『実践SONiC入門』の他章(特にSONiCとSDNコントローラの連携を扱う章があれば)で橋渡しされるのか。SONiC(単一デバイスNOS)がONOS流のNOS(ネットワーク全体のコントローラ)からgNMI等を通じて制御される構図であれば、両者は「入れ子」の関係として整理できるはずだが、本章の範囲では確認できない。
## 関連
- [[ソフトウェア定義ネットワーク]] — NOSが具現化する「論理的に集中化されたコントロールプレーン」という上位概念
- [[分散コンセンサス]] — NOSの分散コアが依拠するRaftベースの合意アルゴリズム
- [[プログラマブルデータプレーン]] — Flow ObjectiveがPipeconf経由でマッピングするP4プログラマブルパイプライン
- [[ONOS]] — 本ページが扱うNOSの参照実装(ネットワーク全体を管理する流儀)
- [[Atomix]] — ONOSの分散コアを実装するRaftベースのkey/valueストア
- [[ホワイトボックススイッチ]] — SONiC流NOSが制御するハードウェア側の概念
- [[SONiC]] — 単一デバイスNOSの実例
- [[@2021__SystemsApproach__Software-Defined Networks - A Systems Approach - Chapter 6 Network OS]]
- [[@2025__Gihyo__実践SONiC入門 - Chapter 1 ホワイトボックススイッチとSONiCアーキテクチャ]]
## 出典
- Peterson, Cascone, O'Connor, Vachuska, and Davie, *Software-Defined Networks: A Systems Approach*, 2021, Chapter 6: Network OS. https://sdn.systemsapproach.org/onos.html
- Peterson, Cascone, O'Connor, Vachuska, and Davie, *Software-Defined Networks: A Systems Approach*, 2021, Chapter 1: Introduction. https://sdn.systemsapproach.org/intro.html(集中コントロールプレーンの分散実装という論法の出典)
- 海老澤健太郎, 『実践SONiC入門』, 技術評論社, 2025, 第1章 §1.1.3.