7406abac14e5e8b7d63d46b4b2b81b0fd38a8b0b
[packetcable.git] / protocol_plugins.packetcable / docs / ODLProject.wiki.txt
1
2 == Name  ==
3
4 === PacketCable PCMM ===
5
6 Develop a PacketCable PCMM/COPS southbound plugin and supporting modules to allow the OpenDayLight controller to provision CMTS as a network element that manages service flows with dynamic QoS. 
7
8 == Repo Name ==
9
10 packetcable
11
12 == Description  ==
13
14 Packet Cable MultiMedia (PCMM) provides an interface to control and management service flow for CMTS network elements. A service flows constitute a DOCSIS data path between a CMTS and a subscriber's cable modem (CM) guaranteed application specific quality of service (QoS), known as Dynamic Quality of Service (DQoS). PCMM offers (MSOs) the ability to deliver new services using existing cable infrastructure. MSOs have already begun to apply PCMM technology for expanding their multimedia service offerings.
15 The PCMM architecture comprises the following components: 
16
17 * The Application Manager, which specifies QoS requirements to the Policy Server on a per-application basis. 
18 * The Policy Server, which allocates network resources per subscriber and per application, ensuring that consumption meets MSO priorities. 
19 * The Cable Modem Termination System (CMTS), which enforces policies according to bandwidth capacity. 
20 * The Cable Modem, which resides on the client side and connects the client's network to the cable system.
21
22 PacketCable Multimedia defines a service delivery framework that provides general-purpose QoS, event-based accounting, and security functionality founded upon the mechanisms defined in PacketCable 1.x. However, due to the broader spectrum of applications and services addressed by this initiative, each of these functional areas has been revisited and generalized for the present purposes. Telephony-specific requirements and interfaces (e.g., call signaling, PSTN interconnection and electronic surveillance) are not part of PacketCable Multimedia, while core functionality such as QoS resource management mechanisms, has been enhanced. Throughout this process, one of the primary objectives of this work has been to leverage and reuse as much of the existing body of PacketCable 1.x investment, knowledge base, and technical functionality as possible.  Key features of the described Multimedia service delivery framework include: 
23
24 * Simple, powerful access to DOCSIS QoS mechanisms supporting both time and volume-based network resource authorizations, 
25 * Abstract, event-based network resource auditing and management mechanisms, 
26 * A robust security infrastructure that provides integrity and appropriate levels of protection across all interfaces. 
27
28 The goal of this project is to utilizes the OpenDayLight controller platform as for the Application Manager and parts of the Policy Server and leverage the as many existing components offered by the platform.
29
30 The initial southbound transport has been written to the following version of the specification:
31 http://www.cablelabs.com/wp-content/uploads/specdocs/PKT-SP-MM-I05-091029.pdf
32
33 == Scope  ==
34
35 * Provision a CMTS and an associated Cable Modem to form a Subscriber service for which (service) flows can be established and metered.
36 * Flow Programmer match-only for managing DOCSIS (service) flows  
37 * Northbound APIs for provisioning CMTS network elements
38 ** HTML Provisioning Interface
39 * Northbound APIs for provisioning Service Flow values and types
40 * Northbound APIs for provisioning QoS (or metering) parameters
41 * SAL extensions for DOCSIS specific data model and configuration APIs
42 * Southbound PCMM/COPS transport plugin
43
44 == Detailed Design  ==
45
46 ==== DOCSIS SDN Application Logic ====
47
48 This component is introduced at the Network Applications Orchestrations and Services layer. The component is proposed as an application responsible for the workflow logic that represents the use cases of interest: L2VPN, Buffer Management, Service Flow QoS Management, and general configuration automation.
49
50 ==== Flow Programmer ====
51
52 This standard components exists at the Controller Platform layer and is responsible for programming flows at network elements that register support for flow management. It adheres to this [https://jenkins.opendaylight.org/controller/job/controller-merge/ws/opendaylight/northbound/flowprogrammer/target/site/wsdocs/resource_FlowProgrammerNorthbound.html FlowProgrammer Restful API].
53
54 ==== PacketCable Manager ====
55
56 This component is introduced at the Controller Platform layer. This component manages the PCMM/DOCSIS specific attributes that are applied to an existing Service Flow, configuration, and addition and removal of CMTS elements. It should export a PacketCable Manager RESTful API as part of ODL architecture.
57
58 ==== PCMM/COPS ====
59
60 This component is introduced at the Southbound Interfaces & Protocol Plugins layer. This component is responsible for the PCMM/COPS/PDP functionality required to service requests from PacketCable Manager and FlowManager. Requests are transposed into PCMM Gate Control messages and transmitted via COPS to the CMTS. This plugin adheres to the PCMM/COPS/PDP functionality defined in the [http://www.cablelabs.com/wp-content/uploads/specdocs/PKT-SP-MM-I06-110629.pdf CableLabs specification]. 
61
62 == Information and Data Models ==
63
64 ==== CCAP and DOCSIS 3.1 CMTS YANG Model Support ====
65
66 Since both devices optionally support the NETCONF protocol, these cable devices also ''optionally'' support YANG data models which are translated into mandatory supported XML Schema data models. The OpenDaylight framework also uses YANG models for their data model representation and tooling.
67
68 ==== CCAP PCMM Configuration Management Information Model ====
69
70 The CableLabs CCAP specification defines a UML Class Diagram Information Model for configuration management of PCMM in the CCAP device. This is represented in the figure below.
71
72 [[Image:PKT-CFG Class Diagram.png]]
73
74 The above Information Model is translated into the YANG configuration management data module and corresponding XML Schema. Therefore, these objects and attributes can be provisioned via XML configuration files and ''optionally'', if supported, via NETCONF messaging.
75
76
77 ==== Openflow Match Action and PCMM Service Flow Comparison ====
78
79 ===== Openflow Match =====
80 {| 
81 |-
82 !| OpenFlow|
83 !|PCMM Service Flow
84 |-
85 | dlDst (MAC address)||no
86 |-
87 | dlSrc (MAC address)||no
88 |-
89 | vlanId||no
90 |-
91 | vlanPri||no
92 |-
93 | tosBits||nwDscp
94 |-
95 | ||SF Type
96 |-
97 | nwProto (TCP or UDP protocol)||yes
98 |-
99 | ingressPort||CMIM
100 |-
101 | priority||yes
102 |-
103 | etherType||no
104 |-
105 | nwDst (Dest IP Address)||yes
106 |-
107 | nwDstMask||yes
108 |-
109 | nwSrc (Src IP Address)||yes
110 |-
111 | nwSrcMask||yes
112 |-
113 | tpSrc (Source Port)||sourcePortStart
114 |-
115 | ||sourcePortEnd
116 |-
117 | tpDst (Destiation Port)||sourcePortStart
118 |-
119 | ||sourcePortEnd
120 |-
121 | hardTimeout||no
122 |-
123 | idleTimeout||Timeout active QoS parameters
124 |-
125 | cookie||no
126 |-
127 | ||Activation State
128 |-
129 | ||IPv6: Next Header Type, Flow Label, Flags,
130
131
132 |}
133
134 ===== Openflow Action =====
135
136 {|
137 |-
138 !| OpenFlow|
139 !|PCMM Service Flow
140 |-
141 | ||
142 |-
143 | drop||yes UDC
144 |-
145 | loopback||
146 |-
147 | flood||
148 |-
149 | floodAll||
150 |-
151 | controller||
152 |-
153 | interface||
154 |-
155 | software path||
156 |-
157 | hardware path||
158 |-
159 | output||
160 |-
161 | enqueue||
162 |-
163 | setDlSrc||
164 |-
165 | setDlDst||
166 |-
167 | setVlan||In L2VPN, but not in PCMM
168 |-
169 | setVlanPcp||
170 |-
171 | setVlanCif||
172 |-
173 | stripVlan||
174 |-
175 | pushVlan||
176 |-
177 | setDlType||
178 |-
179 | setNwSrc||
180 |-
181 | setNwDst||
182 |-
183 | setNwTos||
184 |-
185 | setTpSrc||
186 |-
187 | setTpDst||
188 |-
189 | setNextHop||
190 |-
191 | pushMpls||
192 |-
193 | popMpls||
194 |}
195
196 ==== PCMM COPS Information Model ====
197
198 The [http://www.cablelabs.com/specifications/PKT-SP-MM-I06-110629.pdf CableLabs PCMM Specification] defines the COPS PDP to PEP interface via a message set and set of object definitions. The objects carried in the COPS message set can be viewed as the PCMM COPS Information Model for the PCMM COPS interface between the Policy Manager and CMTS. The objects are represented in the table below.
199
200 {|   
201 !    | Object Name
202 !    | Description
203 !    | ODL YANG Exist?
204 |-
205 |    | TransactionID
206 |    | Transaction Identifier used by the Policy Server to match responses from the CMTS to the previous requests.
207 |    |
208 |-
209 |    | AMID
210 |    | Application Manager ID including the Application Manager Tag (Application responsible for handling the session) and Application Type (Type of application this gate is associated with).
211 |    |
212 |-
213 |    | SubscriberID
214 |    | IPv4 or IPv6 address of the Subscriber for the service request (i.e., CM or CPE of Subscriber)
215 |    |
216 |-
217 |    | GateID
218 |    | Gate Identifier referenced in the command message or referenced by the CMTS for a response message.
219 |    |
220 |-
221 |    | GateSpec
222 |    |
223 Defines the following attributes:
224
225 * Direction 
226 ** Downstream Gate
227 ** Upstream Gate
228 * DSCP/TOS
229 ** Enabled/Disabled
230 * SessionClassID
231 ** Defines the proper admission control policy or parameters to be applied for this gate. Attributes include:
232 *** Priority
233 *** Preemption
234 *** Configurable
235 * DSCP/TOS Overwrite
236 ** Used to identify particular bits within the IPv4 DSCP/TOS byte
237 * DSCP/TOS Mask
238 ** Used in conjunction with the DSCP/TOS Overwrite
239 * Timer T1
240 * Timer T2
241 * Timer T3
242 * Timer T4
243 ** Timers defined per Gate Transition Diagram
244 |    |
245 |-
246 |    | Classifiers
247 |    | Classifier, Extended Classifier or IPv6 Classifier
248 |    |
249 |-
250 |    | Classifier
251 |    |
252 * Procotol ID
253 * DSCP/TOS Field
254 * DSCP/TOS Mask
255 * Source IPv4 Address
256 * Destination IPv4 Address
257 * Source Port
258 * Destination Port
259 * Priority
260 |    |
261 |-
262 |    | Extended Classifier
263 |    |
264 * Protocol ID
265 * DSCP/TOS Field
266 * DSCP/TOS Mask
267 * IPv4 Source Address
268 * IPv4 Source Mask
269 * IPv4 Destination Address
270 * IPv4 Destination Mask
271 * Source Port Start
272 * Source Port End
273 * Destination Port Start
274 * Destination Port End
275 * ClassifierID
276 * Priority
277 * Activation State
278 * Action
279 |    |
280 |-
281 |    | IPv6 Classifier
282 |    |
283 * Flags
284 * tc-low
285 * tc-high
286 * tc-mask
287 * Flow Label
288 * Next Header Type
289 * Source Prefix Length
290 * Destination Prefix Length
291 * IPv6 Source Address
292 * IPv6 Destination Address
293 * Source Port Start
294 * Source Port End
295 * Destination Port Start
296 * Destination Port End
297 * ClassifierID
298 * Priority
299 * Activation State
300 * Action
301 |    |
302 |-
303 |    | Traffic Profiles
304 |    | FlowSpec, DOCSIS Service Class Name, DOCSIS-specific parameters or Upstream Drop
305 |    |
306 |-
307 |    | Flow Spec
308 |    |
309 * Envelope
310 * Service Number
311 * Authorized Envelope
312 ** Token Bucket Rate (r)
313 ** Token Bucket Size (b)
314 ** Peak Data Rate (p)
315 ** Minimum Policed Unit (m)
316 ** Maximum Packet Size (M)
317 ** Rate (R)
318 ** Slack Term (S)
319 * ''Optional'' Reserved Envelope
320 * ''Optional'' Committed Envelope
321 |    | No
322 |-
323 |    | DOCSIS Service Class Name
324 |    |
325 * Envelope
326 * Service Class Name
327 |    | No
328 |-
329 |    | Best Effort Service
330 |    |
331 * Envelope
332 * Authorized Envelope
333 ** Traffic Priority
334 ** Request Transmission Policy
335 ** Maximum Sustained Traffic Rate
336 ** Maximum Traffic Burst
337 ** Minimum Reserved Traffic Rate
338 ** Assumed Minimum Reserved Traffic Rate Packet Size
339 ** Maximum Concatenated Burst
340 ** Upstream Peak Traffic Rate
341 ** Required Attribute Mask
342 ** Forbidden Attribute Mask
343 ** Attribute Aggregation Rule Mask
344 ** Minimum Buffer
345 ** Target Buffer
346 ** Maximum Buffer
347 * ''Optional'' Reserved Envelope
348 * ''Optional'' Committed Envelope
349 |    | No
350 |-
351 |    | Non-Real-Time Polling Service
352 |    |
353 * Envelope
354 * Authorized Envelope
355 ** Traffic Priority
356 ** Request Transmission Policy
357 ** Maximum Sustained Traffic Rate
358 ** Maximum Traffic Burst
359 ** Minimum Reserved Traffic Rate
360 ** Assumed Minimum Reserved Traffic Rate Packet Size
361 ** Maximum Concatenated Burst
362 ** Nominal Polling Interval
363 ** Upstream Peak Traffic Rate
364 ** Required Attribute Mask
365 ** Forbidden Attribute Mask
366 ** Attribute Aggregation Rule Mask
367 ** Minimum Buffer
368 ** Target Buffer
369 ** Maximum Buffer
370 * ''Optional'' Reserved Envelope
371 * ''Optional'' Committed Envelope
372 |    | No
373 |-
374 |    | Real-Time Polling Service
375 |    |
376 * Envelope
377 * Authorized Envelope
378 ** Request Transmission Policy
379 ** Maximum Sustained Traffic Rate
380 ** Maximum Traffic Burst
381 ** Minimum Reserved Traffic Rate
382 ** Assumed Minimum Reserved Traffic Rate Packet Size
383 ** Maximum Concatenated Burst
384 ** Nominal Polling Interval
385 ** Tolerated Poll Jitter
386 ** Upstream Peak Traffic Rate
387 ** Required Attribute Mask
388 ** Forbidden Attribute Mask
389 ** Attribute Aggregation Rule Mask
390 ** Minimum Buffer
391 ** Target Buffer
392 ** Maximum Buffer
393 * ''Optional'' Reserved Envelope
394 * ''Optional'' Committed Envelope
395 |    | No
396 |-
397 |    | Unsolicited Grant Service
398 |    |
399 * Envelope
400 * Authorized Envelope
401 ** Request Transmission Policy
402 ** Unsolicited Grant Size
403 ** Grants/Interval
404 ** Nominal Grant Interval
405 ** Tolerated Grant Interval
406 ** Upstream Peak Traffic Rate
407 ** Required Attribute Mask
408 ** Forbidden Attribute Mask
409 ** Attribute Aggregation Rule Mask
410 ** Minimum Buffer
411 ** Target Buffer
412 ** Maximum Buffer
413 * ''Optional'' Reserved Envelope
414 * ''Optional'' Committed Envelope
415 |    | No
416 |-
417 |    | Unsolicited Grant Service with Activity Detection
418 |    |
419 * Envelope
420 * Authorized Envelope
421 ** Request Transmission Policy
422 ** Unsolicited Grant Size
423 ** Grants/Interval
424 ** Nominal Grant Interval
425 ** Tolerated Grant Jitter
426 ** Nominal Polling Interval
427 ** Tolerated Poll Jitter
428 ** Upstream Peak Traffic Rate
429 ** Required Attribute Mask
430 ** Forbidden Attribute Mask
431 ** Attribute Aggregation Rule Mask
432 ** Minimum Buffer
433 ** Target Buffer
434 ** Maximum Buffer
435 * ''Optional'' Reserved Envelope
436 * ''Optional'' Committed Envelope
437 |    | No
438 |-
439 |    | Downstream Service
440 |    |
441 * Envelope
442 * Authorized Envelope
443 ** Traffic Priority
444 ** Downstream Resequencing
445 ** <Maximum Sustained Traffic Rate
446 ** Maximum Traffic Burst
447 ** Minimum Reserved Traffic Rate
448 ** Assumed Minimum Reserved Traffic Rate Packet Size
449 ** Maximum Downstream Latency
450 ** Downstream Peak Traffic Rate
451 ** Required Attribute Mask
452 ** Forbidden Attribute Mask
453 ** Attribute Aggregation Rule Mask
454 ** Minimum Buffer
455 ** Target Buffer
456 ** Maximum Buffer
457 * ''Optional'' Reserved Envelope
458 * ''Optional'' Committed Envelope
459 |    | No
460 |-
461 |    | Upstream Drop
462 |    |
463 * Envelope
464 |    | No
465 |-
466 |    | IPv4 Event Generation Info
467 |    |
468 * Primary Record Keeping Server IPv4 Address
469 * Primary Record Keeping Server Port
470 * Secondary Record Keeping Server IPv4 Address
471 * Secondary Record Keeping Server Port
472 * Billing Correlation ID
473 |    | No
474 |-
475 |    | IPv6 Event Generation Info
476 |    |
477 * Primary Record Keeping Server IPv6 Address
478 * Primary Record Keeping Server Port
479 * Secondary Record Keeping Server IPv6 Address
480 * Secondary Record Keeping Server Port
481 * Billing Correlation ID
482 |    | No
483 |-
484 |    | Volume-Based Usage Limit
485 |    |
486 * Usage Limit (Kb)
487 |    | No
488 |-
489 |    | Time-Based Usage Limit
490 |    |
491 * Time Limit (Sec)
492 |    | No
493 |-
494 |    | Opaque Data
495 |    |
496 * Opaque Data
497 ** Information the Policy Server or Application Manager might store on a CMTS.
498 |    | No
499 |-
500 |    | Gate Time Info
501 |    |
502 * Time Committed (Sec)
503 |    |
504 |-
505 |    | Gate Usage Info
506 |    |
507 * Octet Count (bytes)
508 |    |
509 |-
510 |    | PacketCable Error
511 |    |
512 * Error-Code
513 ** Pre-defined error code
514 |    | No
515 |-
516 |    | Gate State
517 |    |
518 * State
519 * Reason
520 |    |
521 |-
522 |    | Version Info
523 |    |
524 * Major Version Number
525 * Minor Version Number
526 |    | No
527 |-
528 |  | PSID
529 |    |
530 * PSID which uniquely identifies the Policy Server
531 |    |
532 |-
533 |    | Synch Options
534 |    |
535 * Report Type
536 * Synch Type
537 |    |
538 |-
539 |    | Msg Receipt Key
540 |    |
541 * Msg Receipt Key
542 |    |
543 |-
544 |    | UserID
545 |    |
546 * UserID which identifies the user associated with the gate
547 |    | No
548 |-
549 |    | SharedResourceID
550 |    |
551 * SharedResourceID is assigned by the CMTS for Multicast Gate requests.
552 |    |
553 |}
554  
555
556 == Resources Committed (developers committed to working)  ==
557
558 * [mailto:xsited@yahoo.com Thomas Kee irc:xsited]
559 * [mailto:user@example.com Example irc:]
560
561 == Initial Committers  ==
562
563 * [mailto:xsited@yahoo.com Thomas Kee irc:xsited]
564 * [mailto:user@example.com Example irc:]
565
566 == Vendor Neutral  ==
567
568 * No vendor package names in code
569 * No vendor branding / trademark present in code or output of build
570 * No vendor branding / trademark present in documentation
571
572 == Meets Board Policy (including IPR)  ==
573