1 .. _ocpplugin-user-guide:
6 This document describes how to use the ORI Control & Management Protocol
7 (OCP) feature in OpenDaylight. This document contains overview, scope,
8 architecture and design, installation, configuration and tutorial
9 sections for the feature.
14 OCP is an ETSI standard protocol for control and management of Remote
15 Radio Head (RRH) equipment. The OCP Project addresses the need for a
16 southbound plugin that allows applications and controller services to
17 interact with RRHs using OCP. The OCP southbound plugin will allow
18 applications acting as a Radio Equipment Control (REC) to interact with
19 RRHs that support an OCP agent.
21 .. figure:: ./images/ocpplugin/ocp-sb-plugin.jpg
22 :alt: OCP southbound plugin
26 It is foreseen that, in 5G, C-RAN will use the packet-based
27 Transport-SDN (T-SDN) as the fronthaul network to transport both control
28 plane and user plane data between RRHs and BBUs. As a result, the
29 addition of the OCP plugin to OpenDaylight will make it possible to
30 build an RRH controller on top of OpenDaylight to centrally manage
31 deployed RRHs, as well as integrating the RRH controller with T-SDN on
32 one single platform, achieving the joint RRH and fronthaul network
33 provisioning in C-RAN.
38 The OCP Plugin project includes:
42 - Integration of OCP protocol library
44 - Simple API invoked as a RPC
46 - Simple API that allows applications to perform elementary functions
47 of the following categories:
55 - Object state management
59 - Software management (not yet implemented)
61 - Indication processing
63 - Logging (not yet implemented)
65 - AISG/Iuant interface message tunnelling (not yet implemented)
67 - ALD connection management (not yet implemented)
69 Architecture and Design
70 -----------------------
72 OCP is a vendor-neutral standard communications interface defined to
73 enable control and management between RE and REC of an ORI architecture.
74 The OCP Plugin supports the implementation of the OCP specification; it
75 is based on the Model Driven Service Abstraction Layer (MD-SAL)
78 OCP Plugin will support the following functionality:
88 - Connection establishment will be handled by OCP library using
89 opensource netty.io library
93 - Event/indication handling and propagation to upper layers
95 **Activities in OCP plugin module**
97 - Integration with OCP protocol library
99 - Integration with corresponding MD-SAL infrastructure
101 OCP protocol library is a component in OpenDaylight that mediates
102 communication between OpenDaylight controller and RRHs supporting OCP
103 protocol. Its primary goal is to provide the OCP Plugin with
104 communication channel that can be used for managing RRHs.
108 - Immutable transfer objects generation (transformation of OCP protocol
109 library’s POJO objects into OpenDaylight DTO objects)
111 - Scalable non-blocking implementation
113 - Pipeline processing
119 OCP Service addresses the need for a northbound interface that allows
120 applications and other controller services to interact with RRHs using
121 OCP, by providing API for abstracting OCP operations.
123 .. figure:: ./images/ocpplugin/plugin-design.jpg
124 :alt: Overall architecture
131 .. figure:: ./images/ocpplugin/message_flow.jpg
132 :alt: Message flow example
139 The OCP Plugin project has two top level Karaf features,
140 odl-ocpplugin-all and odl-ocpjava-all, which contain the following
143 - odl-ocpplugin-southbound
145 - odl-ocpplugin-app-ocp-service
147 - odl-ocpjava-protocol
149 The OCP service (odl-ocpplugin-app-ocp-service), together with the OCP
150 southbound (odl-ocpplugin-southbound) and OCP protocol library
151 (odl-ocpjava-protocol), provides OpenDaylight with basic OCP v4.1.1
154 You can interact with OCP service via RESTCONF, so you have to install
155 the following features to enable RESTCONF.
159 karaf#>feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs
161 Then install the odl-ocpplugin-all feature which includes the
162 odl-ocpplugin-southbound and odl-ocpplugin-app-ocp-service features.
163 Note that the odl-ocpjava-all feature will be installed automatically as
164 the odl-ocpplugin-southbound feature is dependent on the
165 odl-ocpjava-protocol feature.
169 karaf#>feature:install odl-ocpplugin-all
171 After all required features are installed, use following command from
172 karaf console to check and make sure features are correctly installed
177 karaf#>feature:list | grep ocp
182 Configuring the OCP plugin can be done via its configuration file,
183 62-ocpplugin.xml, which can be found in the
184 <odl-install-dir>/etc/opendaylight/karaf/ directory.
186 There are the following settings that are configurable:
188 1. **port** specifies the port number on which the OCP plugin listens
189 for connection requests
191 2. **radioHead-idle-timeout** determines the time duration (unit:
192 milliseconds) for which a radio head has been idle before the idle
193 event is triggered to perform health check
195 3. **ocp-version** specifies the OCP protocol version supported by the
198 4. **rpc-requests-quota** sets the maximum number of concurrent rpc
201 5. **global-notification-quota** sets the maximum number of concurrent
202 notifications allowed
204 .. figure:: ./images/ocpplugin/plugin-config.jpg
205 :alt: OCP plugin configuration
207 OCP plugin configuration
212 The OCP Plugin project contains a simple OCP agent for testing purposes;
213 the agent has been designed specifically to act as a fake radio head
214 device, giving you an idea of what it would look like during the OCP
215 handshake taking place between the OCP agent and OpenDaylight (OCP
218 To run the simple OCP agent, you have to first download its JAR file
219 from OpenDaylight Nexus Repository.
223 wget https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/ocpplugin/simple-agent/${ocp-version}/simple-agent-${ocp-version}.jar
225 Then run the agent with no arguments (assuming you already have JDK 1.8
226 or above installed) and it should display the usage that lists the
231 java -classpath simple-agent-${ocp-version}.jar org.opendaylight.ocpplugin.OcpAgent
233 Usage: java org.opendaylight.ocpplugin.OcpAgent <controller's ip address> <port number> <vendor id> <serial number>
239 java -classpath simple-agent-${ocp-version}.jar org.opendaylight.ocpplugin.OcpAgent 127.0.0.1 1033 XYZ 123
241 Programmatic Interface
242 ----------------------
244 The OCP Plugin project has implemented a complete set of the C&M
245 operations (elementary functions) defined in the OCP specification, in
246 the form of both northbound and southbound APIs, including:
268 The API is documented in the OCP Plugin Developer Guide under the
269 section Southbound API and Northbound API, respectively.