Jump to: navigation, search

OpenDaylight Controller:MD-SAL:RPC Service Types

Global Service

  • There is only one instance of a Global Service per controller instance (Note that a controller instance can consist of a cluster of controller nodes.)

Routing

  • Binding-Aware MD-SAL (sal-binding)
  • Rpc Type - Identified by a generated RpcService class and a name of a method invoked on that interface
  • Binding-Independent MD-SAL (sal-dom)
  • Rpc Type - Identified by a QName

Routed Service

  • There can be multiple instances (implementations) of a service per controller instance
  • Can be used for southbound plugins or for horizontal scaling (load-balancing) of northbound plugins (services)

Routing

Routing is done based on the contents of a message, for example 'Node Reference'. The field in a message that is used for routing is specified in a YANG model by using the routing-reference statement from the yang-ext model.

  • Binding Aware MD-SAL (sal-binding)
    • Rpc Type - Identified by an RpcService subclass and the name of the method invoked on that interface
    • Instance Identifier - in a data tree, identifies the element instance that will be used as the route target. The used class is:

          org.opendaylight.yang.binding.InstanceIdentifier        

      The Instance Identifier is learned from the message payload and from the model.

  • Binding Independent MD-SAL (sal-dom)
    • Rpc Type - Identified by a QName
    • Instance Identifier - in a data tree, identifies the element instance that will be used as the route target. The used class is:

          org.opendaylight.yang.data.api.InstanceIdentifier

Mounted Service

Mounted service is a special type of services, which could be nested at well-known points in the overall data tree. A Mounted service could be an implementations altenrative of a Routed Service or a Global service, but the caller would have to identify the target Mounted service instance.

Routing

Routing is done based on the instance identifier, which is provided separately to the payload of message.

  • Binding Aware MD-SAL (sal-binding)
    • Rpc Type - Identified by used RpcService subclass and the name of the method invoked on that interface
    • Instance Identifier - in a data tree, identifies the element instance that will be used as the route target. The used class is:

      org.opendaylight.yang.binding.InstanceIdentifier
  • Binding Independent MD-SAL (sal-dom)
    • Rpc Type - Identified by QName
    • Instance Identifier - in a data tree, identifies the element instance that will be used as the route target. The used class is:

          org.opendaylight.yang.data.api.InstanceIdentifier