maintain network state informationinteracts with network control applications “above” via northbound APIinteracts with network switches “below” via southbound APIimplemented as distributed system for performance, scalability, fault-tolerance, robustness