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.
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,
Elements controlled by the NOS
(I/O) operations control, communications, protection, topology, statistics, notifications, and device management, shortest path forwarding and security mechanisms.
Southbound interfaces
Allow to control the FD, can be thought as drivers that provide compatibility with different FD, and the use of several NOS.
Eastbound/westbound interfaces
Provide compatibility between different controllers
Northbound interfaces
APIs, RESTful APIs
Considerations for NOS
Architecture (Centralized-distributed)
Type of interfaces
Consistency (for distributed)
License (Commercial, GPL, Apache ...)
Programming language (Python, Java, C, C++, Ruby)