7 These components introduce a DOCSIS QoS Gates management using the PCMM
8 protocol. The driver component is responsible for the PCMM/COPS/PDP
9 functionality required to service requests from PacketCable Provider and
10 FlowManager. Requests are transposed into PCMM Gate Control messages and
11 transmitted via COPS to the CMTS. This plugin adheres to the
12 PCMM/COPS/PDP functionality defined in the CableLabs specification.
13 PacketCable solution is an MDSAL compliant component.
15 PacketCable Components
16 ----------------------
18 PacketCable is comprised of two OpenDaylight bundles:
20 +--------------------------------------+--------------------------------------+
21 | Bundle | Description |
22 +======================================+======================================+
23 | odl-packetcable-policy-server | Plugin that provides PCMM model |
24 | | implementation based on CMTS |
25 | | structure and COPS protocol. |
26 +--------------------------------------+--------------------------------------+
27 | odl-packetcable-policy-model | The Model provided provides a direct |
28 | | mapping to the underlying QoS Gates |
30 +--------------------------------------+--------------------------------------+
32 See the PacketCable `YANG
33 Models <https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=tree;f=packetcable-policy-model/src/main/yang>`__.
35 Installing PacketCable
36 ----------------------
38 To install PacketCable, run the following ``feature:install`` command
43 feature:install odl-packetcable-policy-server-all odl-restconf odl-mdsal-apidocs
45 Explore and exercise the PacketCable REST API
46 ---------------------------------------------
48 To see the PacketCable APIs, browse to this URL:
49 http://localhost:8181/apidoc/explorer/index.html
51 Replace localhost with the IP address or hostname where OpenDaylight is
52 running if you are not running OpenDaylight locally on your machine.
56 Prior to setting any PCMM gates, a CCAP must first be added.
62 extension <https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en>`__
64 `Download and import sample packetcable
65 collection <https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=tree;f=packetcable-policy-server/doc/restconf-samples>`__
70 .. figure:: ./images/packetcable-postman.png
71 :alt: Postman Operations
77 PacketCable REST API Usage Examples
78 -----------------------------------
80 * CCAP "CONFIG" DATASTORE API STRUCTURE
82 * Add and view CCAPConfigDatastore(add triggers also the CCAP COPS connection)::
84 PUT http://localhost:8181/restconf/config/packetcable:ccaps/ccap/CMTS-1
93 "ipAddress": "10.20.30.40",
95 },"subscriber-subnets": [
96 "2001:4978:030d:1000:0:0:0:0/52",
101 ],"downstream-scns": [
108 GET http://localhost:8181/restconf/config/packetcable:ccaps/ccap/CMTS-1
111 * CCAP OPERATIONAL STATUS - GET CCAP (COPS) CONNECTION STATUS
113 * Shows the Operational Datastorecontents for the CCAP COPS connection.
114 * The status is updated when the COPS connection is initiated or after an RPC poll::
116 GET http://localhost:8181/restconf/operational/packetcable:ccaps/ccap/CMTS-1/
125 "E6-CTO: CCAP client is connected"
127 "timestamp": "2016-03-23T14:15:54.129-05:00",
135 * CCAP OPERATIONAL STATUS - RPC CCAP POLL CONNECTION
137 * A CCAP RPC poll returns the COPS connectivity status info and also triggers an Operational Datastore status update with the same data::
139 POST http://localhost:8181/restconf/operations/packetcable:ccap-poll-connection
142 "ccapId": "/packetcable:ccaps/packetcable:ccap[packetcable:ccapId='CMTS-1']"
148 "response": "CMTS-1: CCAP poll complete",
149 "timestamp": "2016-03-23T14:15:54.131-05:00",
155 "CMTS-1: CCAP client is connected"
157 "timestamp": "2016-03-23T14:15:54.129-05:00",
165 * CCAP OPERATIONAL STATUS - RPC CCAP POLL CONNECTION (2) - CONNECTION DOWN::
167 POST http://localhost:8181/restconf/operations/packetcable:ccap-poll-connection
170 "ccapId": "/packetcable:ccaps/packetcable:ccap[packetcable:ccapId='CMTS-1']"
176 "response": "CMTS-1: CCAP poll complete",
177 "timestamp": "2016-03-23T14:15:54.131-05:00",
182 "CMTS-1: CCAP client is disconnected with error: null",
183 "CMTS-1: CCAP Cops socket is closed"],
184 "timestamp": "2016-03-23T14:15:54.129-05:00",
192 * CCAP OPERATIONAL STATUS - RPC CCAP SET CONNECTION
194 * A CCAP RPC sets the CCAP COPS connection; possible values true or false meaning that the connection should be up or down.
195 * RPC responds with the same info as RPC POLL CONNECTION, and also updates the Operational Datastore::
197 POST http://localhost:8181/restconf/operations/packetcable:ccap-set-connection
200 "ccapId": "/packetcable:ccaps/packetcable:ccap[packetcable:ccapId='CMTS-1']",
210 "response": "CMTS-1: CCAP set complete",
211 "timestamp": "2016-03-23T17:47:29.446-05:00",
216 "CMTS-1: CCAP client is connected",
217 "CMTS-1: CCAP COPS socket is already open"],
218 "timestamp": "2016-03-23T17:47:29.436-05:00",
225 * CCAP OPERATIONAL STATUS - RPC CCAP SET CONNECTION (2) - SHUTDOWN COPS CONNECTION::
227 POST http://localhost:8181/restconf/operations/packetcable:ccap-set-connection
230 "ccapId": "/packetcable:ccaps/packetcable:ccap[packetcable:ccapId='E6-CTO']",
239 "response": "E6-CTO: CCAP set complete",
240 "timestamp": "2016-03-23T17:47:29.446-05:00",
245 "E60CTO: CCAP client is disconnected with error: null"],
246 "timestamp": "2016-03-23T17:47:29.436-05:00",
254 A "null" in the error information means that the CCAP connection has been disconnected as a result of a RPC SET.
256 * GATES "CONFIG" DATASTORE API STRUCTURE CHANGED
258 * A CCAP RPC poll returns the gate status info, and also triggers a Operational Datastorestatus update.
259 * At a minimum the appIdneeds to be included in the input, subscriberIdand gateIdare optional.
260 * A gate status response is only included if the RPC request is done for a specific gate (subscriberIdand gateIdincluded in input).
261 * Add and retrieve gates to/from the Config Datastore::
263 PUT http://localhost:8181/restconf/config/packetcable:qos/apps/app/cto-app/subscribers/subscriber/44.137.0.12/gates/gate/gate88/
270 "dscp-tos-overwrite": "0xa0",
271 "dscp-tos-mask": "0xff"
274 "service-class-name": "extrm_dn"
277 "classifier-container": [
279 "classifier-id": "1",
281 "srcIp": "44.137.0.0",
282 "dstIp": "44.137.0.11",
296 GET http://localhost:8181/restconf/config/packetcable:qos/apps/app/cto-app/subscribers/subscriber/44.137.0.12/gates/gate/gate88/
299 * GATES SUPPORT MULTIPLE (UP TO FOUR) CLASSIFIERS
301 * Please note that there is a classifier container now that can have up to four classifiers::
303 PUT http://localhost:8181/restconf/config/packetcable:qos/apps/app/cto-app/subscribers/subscriber/44.137.0.12/gates/gate/gate88/
307 "dscp-tos-overwrite": "0xa0",
308 "dscp-tos-mask": "0xff" },
310 "service-class-name": "extrm_dn"},
312 { "classifier-container":[
313 { "classifier-id": "1",
315 "srcIp6": "2001:4978:030d:1100:0:0:0:0/64",
316 "dstIp6": "2001:4978:030d:1000:0:0:0:0/64",
322 "srcPort-start": "4321",
323 "srcPort-end": "4322",
324 "dstPort-start": "1234",
325 "dstPort-end": "1235"
327 { "classifier-id": "2",
329 "srcIp": "44.137.0.12",
330 "srcIpMask": "255.255.255.255",
331 "dstIp": "10.10.10.0",
332 "dstIpMask": "255.255.255.0",
336 "srcPort-start": "4321",
337 "srcPort-end": "4322",
338 "dstPort-start": "1234",
339 "dstPort-end": "1235"
347 * CCAP OPERATIONAL STATUS - GET GATE STATUS FROM OPERATIONAL DATASTORE
349 * Shows the Operational Datastore contents for the gate.
350 * The gate status is updated at the time when the gate is configured or during an RPC poll::
352 GET http://localhost:8181/restconf/operational/packetcable:qos/apps/app/cto-app/subscribers/subscriber/44.137.0.12/gates/gate/gate88
358 "cops-gate-usage-info": "0",
359 "cops-gate-state": "Committed(4)/Other(-1)",
360 "gatePath": "cto-app/44.137.0.12/gate88",
361 "cops-gate-time-info": "0",
362 "cops-gateId": "3e0800e9",
363 "timestamp": "2016-03-24T10:30:18.763-05:00",
369 * CCAP OPERATIONAL STATUS - RPC GATE STATUS POLL
371 * A CCAP RPC poll returns the gate status info and also triggers an Operational Datastore status update.
372 * At a minimum, the appId needs to be included in the input; subscriberId and gateId are optional.
373 * A gate status response is only included if the RPC request is done for a specific gate (subscriberId and gateId included in input)::
375 POST http://localhost:8181/restconf/operations/packetcable:qos-poll-gates
378 "appId": "/packetcable:apps/packetcable:apps[packetcable:appId='cto-app]",
379 "subscriberId": "44.137.0.11",
387 "cops-gate-usage-info": "0",
388 "cops-gate-state": "Committed(4)/Other(-1)",
389 "gatePath": "ctoapp/44.137.0.12/gate88",
390 "cops-gate-time-info": "0",
391 "cops-gateId": "1ceb0001",
393 "timestamp": "2016-03-24T13:22:59.900-05:00",
396 "response": "cto-app/44.137.0.12/gate88: gate poll complete",
397 "timestamp": "2016-03-24T13:22:59.906-05:00"
401 * When multiple gates are polled (only appId or appId and subscriberId are provided), a generic response is returned and the Operational Datastore is updated in the background::
405 "response": "cto-app/: gate subtree poll in progress",
406 "timestamp": "2016-03-24T13:25:30.471-05:00"