IV - Controllers (Network operation systems)
Until today, NOS are like "machine language", not like the user friendly OS of computers. So it is difficult to manage, change, program, etc. SDN promise to change it with a NOS (Controller) that provide abstractions, essential services, and common APIs to developers and don't care about low level details.
Considerations for NOS
Type of interfaces
Consistency (for distributed)
License (Commercial, GPL, Apache ...)
Programming language (Python, Java, C, C++, Ruby)
Allow to control the FD, can be thought as drivers that provide compatibility with different FD, and the use of several NOS.
Provide compatibility between different controllers
APIs, RESTful APIs
Elements controlled by the NOS
(I/O) operations control, communications, protection, topology, statistics, notifications, and device management, shortest path forwarding and security mechanisms.
Centralized vs distributed
The first can provide higher throughput, but less resilience. Examples: NOX-TM, Maestro, Beacon
Distributed have week consistency semantics translated in problems in updates, examples Onix, Hyperflow,