3 namespace "urn:packetcable";
6 import ietf-yang-types { prefix yang; revision-date "2013-07-15"; }
7 import ietf-inet-types { prefix inet; revision-date "2013-07-15"; }
8 import yang-ext { prefix ext; revision-date "2013-07-09"; }
10 description "This module contains the PCMM Converged Cable Access Platform (CCAP) definitions";
11 organization "OpenDaylight Project";
14 description "Added support for flow-spec traffic profile";
17 description "Added support for activation-state, session-class-id and inactivity-timer";
20 description "Added priority field to all classifiers";
23 description "Modified service-flow-direction values to match the PCMM Spec";
26 description "Extended gates to support multiple classifiers.";
29 description "Corrected pluralization of containers/lists and added containers around lists where needed";
32 description "Initial revision of PCMM CCAP definitions";
37 typedef service-class-name {
38 type string { length "2..16"; }
39 description "The Service Class Name is MUST be 2-16 bytes.";
41 typedef service-flow-direction {
45 description "Downstream service flow.";
49 description "Upstream service flow.";
52 description "This value represents the service flow direction.";
55 typedef classifier-activation-state {
59 description "Inactive";
66 description "Instructs the CMTS to either activate or inactivate the classifier";
71 type uint16 {range "0..257";}
72 description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP";
76 description "TOS/TC byte or mask";
79 identity ccap-context {
80 description "Identity used to mark ccap context";
83 identity app-context {
84 description "Identity used to mark app context";
91 CCAP devices are known by their network name which is any string.
92 Each CCAP device has a network address:port, a list of subscriber IP subnets,
93 and a list of available Service Class Names.
96 ext:context-instance "ccap-context";
99 description "CCAP Identity";
102 uses ccap-attributes;
106 grouping ccap-connection {
108 type inet:ip-address;
109 description "IP Address of CCAP";
113 type inet:port-number;
114 description "COPS session TCP port number";
120 description "COPS session state";
126 description "Operational errors";
128 // leaf idle-detect {
130 // description "COPS connection idle timer (seconds)";
136 // description "COPS connection idle state";
142 type yang:date-and-time;
143 description "Last update timestamp";
148 grouping ccap-attributes {
150 Each CCAP device has a COPS connection address:port,
151 a list of subscriber IP subnets, and
152 a list of available Service Class Names.
154 container connection {
155 uses ccap-connection;
160 description "Application Manager Tag -- unique for this operator";
165 description "Application Manager Type -- unique for this AM tag";
169 leaf-list subscriber-subnets {
172 leaf-list upstream-scns {
173 type service-class-name;
175 leaf-list downstream-scns {
176 type service-class-name;
181 description "ccap data errors";
188 PCMM QoS Gates are organized as a tree by Application/Subscriber/Gate:
189 Each Application is known by its appId which is any string.
190 Each Subscriber is known by its subscriberId which is a CPE IP address in either IPv4 or IPv6 format.
191 Each Gate is known by its gateId which is any string.
193 The subscriber's CPE IP address is used to locate the CCAP device that is currently hosting the
194 the Cable Modem that is connected to the subscriber's device. Therefore, it is not necessary
195 for the PCMM applications to know the topology of the CCAP devices and CMs in the network path
196 to their subscriber devices.
198 Note that each CCAP entry contains a list of connected subscriber IP subnets as well as a list
199 of all Service Class Names (SCNs) available on the CCAP device.
204 grouping pcmm-qos-gates {
208 ext:context-instance "app-context";
211 description "Application Identity";
213 container subscribers {
218 description "Subscriber Identity -- must be a CM or CPE IP address";
226 description "Qos Gate Identity";
229 uses gate-operational-attributes;
230 uses pcmm-qos-gate-attributes;
239 grouping gate-operational-attributes {
243 description "FQ Gate path app/subscriber/gate";
249 description "CCAP Identity";
252 leaf cops-gate-state {
255 description "Operational COPS Gate state";
258 leaf cops-gate-time-info {
261 description "Operational COPS Gate time info";
264 leaf cops-gate-usage-info {
267 description "Operational COPS gate usage info";
273 description "Gate operational COPS Id";
279 description "Gate operational error";
283 type yang:date-and-time;
284 description "Gate operational attributes timestamp";
290 grouping classifier-attributes {
291 container classifiers {
292 list classifier-container {
296 description "Classifier ID and Gate classifier priority";
298 choice classifier-choice {
299 case qos-classifier-choice {
300 uses pcmm-qos-classifier;
302 case ext-classifier-choice {
303 uses pcmm-qos-ext-classifier;
305 case ipv6-classifier-choice {
306 uses pcmm-qos-ipv6-classifier;
313 grouping pcmm-qos-gate-attributes {
314 uses pcmm-qos-gate-spec;
315 uses pcmm-qos-traffic-profile;
316 uses classifier-attributes;
319 grouping pcmm-qos-gate-spec {
320 container gate-spec {
322 type service-flow-direction;
323 description "Gate Direction (ignored for traffic profile SCN)";
325 leaf dscp-tos-overwrite {
327 description "Optional DSCP/TOS overwrite value";
331 description "Optional DSCP/TOS overwrite AND mask";
333 leaf inactivity-timer {
335 description "Service Flow inactivity timeout";
337 leaf session-class-id {
339 description "Identifies the proper admission control policy or parameters to be applied for this Gate";
345 grouping pcmm-qos-traffic-profile {
346 container traffic-profile {
347 choice traffic-profile-choice {
348 case service-class-name-choice {
349 uses pcmm-serviceclass-name-profile;
351 case flow-spec-choice {
352 uses pcmm-flow-spec-profile;
358 grouping pcmm-serviceclass-name-profile {
359 container service-class-name-profile {
360 leaf service-class-name {
361 type service-class-name;
362 description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP";
368 grouping pcmm-flow-spec-profile {
369 container flow-spec-profile {
370 leaf token-bucket-rate {
372 description "Token Bucket Rate value [r]";
375 leaf token-bucket-size {
377 description "Token Bucket Size value [b]";
380 leaf peak-data-rate {
382 description "Peak Data Rate value [p]";
385 leaf minimum-policed-unit {
387 description "Minimum Policed Unit value [m]";
390 leaf maximum-packet-size {
392 description "Maximum Packet Size value [M]";
397 description "Rate value [R]";
402 description "Slack Term value [S]";
408 grouping tp-port-match-ranges {
410 type inet:port-number;
411 description "TCP/UDP source port range start.";
414 type inet:port-number;
415 description "TCP/UDP source port range end.";
418 type inet:port-number;
419 description "TCP/UDP destination port range start.";
422 type inet:port-number;
423 description "TCP/UDP destination port range end.";
427 grouping pcmm-qos-classifier {
428 container classifier {
430 type inet:ipv4-address;
431 description "Source IPv4 address (exact match)";
434 type inet:ipv4-address;
435 description "Destination IPv4 address (exact match)";
439 description "TOS/DSCP match";
443 description "TOS/DSCP mask";
447 description "IPv4 transport protocol";
450 type inet:port-number;
451 description "TCP/UDP source port (exact match).";
454 type inet:port-number;
455 description "TCP/UDP destination port (exact match).";
459 description "Priority";
465 grouping pcmm-qos-ext-classifier {
466 container ext-classifier {
468 type inet:ipv4-address;
469 description "Source IPv4 address match";
472 type inet:ipv4-address;
473 description "Source IPv4 mask";
476 type inet:ipv4-address;
477 description "Destination IPv4 address match";
480 type inet:ipv4-address;
481 description "Destination IPv4 mask";
485 description "TOS/DSCP match";
489 description "TOS/DSCP mask";
493 description "IPv4 transport protocol";
495 uses tp-port-match-ranges;
498 description "Priority";
501 leaf activation-state {
502 type classifier-activation-state;
503 description "Activation state";
510 grouping pcmm-qos-ipv6-classifier {
511 container ipv6-classifier {
513 type inet:ipv6-prefix;
514 description "Source IPv6 prefix match in 'address/len' notation";
517 type inet:ipv6-prefix;
518 description "Destination IPv6 prefix match in 'address/len' notation";
522 description "TC low range match";
526 description "TC high range match";
530 description "TC mask";
534 description "IPv6 Next Header";
538 range "0 .. 1048575";
540 description "IPv6 Flow Label (20 bits)";
542 uses tp-port-match-ranges;
545 description "Priority";
548 leaf activation-state {
549 type classifier-activation-state;
550 description "Activation state";
557 rpc ccap-set-connection {
560 type instance-identifier;
561 ext:context-reference ccap-context;
563 container connection {
566 description "COPS session state";
568 // leaf idle-detect {
570 // description "COPS connection idle timer";
579 container connection {
580 uses ccap-connection;
587 type yang:date-and-time;
588 description "RPC timestamp";
593 rpc ccap-poll-connection {
596 type instance-identifier;
597 ext:context-reference ccap-context;
605 container connection {
606 uses ccap-connection;
613 type yang:date-and-time;
614 description "RPC timestamp";
622 type instance-identifier;
623 ext:context-reference app-context;
627 description "Subscriber Identity -- must be a CM or CPE IP address";
631 description "Qos Gate Identity";
636 uses gate-operational-attributes;
642 type yang:date-and-time;
643 description "RPC timestamp";