== Controller === Overview === OpenDaylight Controller is Java-based, model-driven controller using YANG as its modeling language for various aspects of the system and applications and with its components serves as a base platform for other OpenDaylight applications. The OpenDaylight Controller relies on the following technologies: * *OSGI* - This framework is the back-end of OpenDaylight as it allows dynamically loading of bundles and packages JAR files, and binding bundles together for exchanging information. * *Karaf* - Application container built on top of OSGI, which simplifies operational aspects of packaging and installing applications. * *YANG* - a data modeling language used to model configuration and state data manipulated by the applications, remote procedure calls, and notifications. The OpenDaylight Controller provides following model-driven subsystems as a foundation for Java applications: * *<<_config_subsystem, Config Subsystem>>* - an activation, dependency-injection and configuration framework, which allows two-phase commits of configuration and dependency-injection, and allows for run-time rewiring. * *<<_md_sal_overview,MD-SAL>>* - messaging and data storage functionality for data, notifications and RPCs modeled by application developers. MD-SAL uses YANG as the modeling for both interface and data definitions, and provides a messaging and data-centric runtime for such services based on YANG modeling. * *MD-SAL Clustering* - enables cluster support for core MD-SAL functionality and provides location-transparent accesss to YANG-modeled data. The OpenDaylight Controller supports external access to applications and data using following model-driven protocols: * *NETCONF* - XML-based RPC protocol, which provides abilities for client to invoke YANG-modeled RPCs, receive notifications and to read, modify and manipulate YANG modeled data. * *RESTCONF* - HTTP-based protocol, which provides REST-like APIs to manipulate YANG modeled data and invoke YANG modeled RPCs, using XML or JSON as payload format. include::md-sal-overview.adoc[MD-SAL] include::md-sal-data-tx.adoc[] include::md-sal-rpc-routing.adoc[MD-SAL Rpc Routing] include::restconf.adoc[RESTCONF] include::websocket-notifications.adoc[Websocket Notifications] include::config.adoc[Config Subsystem]