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 UGS and RTP traffic profiles";
17 description "Added support for flow-spec traffic profile";
20 description "Added support for activation-state, session-class-id and inactivity-timer";
23 description "Added priority field to all classifiers";
26 description "Modified service-flow-direction values to match the PCMM Spec";
29 description "Extended gates to support multiple classifiers.";
32 description "Corrected pluralization of containers/lists and added containers around lists where needed";
35 description "Initial revision of PCMM CCAP definitions";
42 description "RSVP sub-type per PCMM specification.";
45 typedef service-class-name {
46 type string { length "2..16"; }
47 description "The Service Class Name is MUST be 2-16 bytes.";
49 typedef service-flow-direction {
53 description "Downstream service flow.";
57 description "Upstream service flow.";
60 description "This value represents the service flow direction.";
63 typedef classifier-activation-state {
67 description "Inactive";
74 description "Instructs the CMTS to either activate or inactivate the classifier";
77 typedef classifier-action {
81 description "Add classifier";
85 description "Replace classifier";
89 description "Delete classifier";
93 description "No change to classifier";
96 description "Instructs the CMTS to add,replace,delete or leave the classifier";
100 type uint16 {range "0..257";}
101 description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP";
105 description "TOS/TC byte or mask";
108 identity ccap-context {
109 description "Identity used to mark ccap context";
116 CCAP devices are known by their network name which is any string.
117 Each CCAP device has a network address:port, a list of subscriber IP subnets,
118 and a list of available Service Class Names.
121 ext:context-instance "ccap-context";
124 description "CCAP Identity";
127 uses ccap-attributes;
131 identity app-context {
132 description "Identity used to mark app context";
138 ext:context-instance "app-context";
146 grouping ccap-connection {
148 type inet:ip-address;
149 description "IP Address of CCAP";
153 type inet:port-number;
154 description "COPS session TCP port number";
160 description "COPS session state";
166 description "Operational errors";
170 type yang:date-and-time;
171 description "Last update timestamp";
176 grouping ccap-attributes {
178 Each CCAP device has a COPS connection address:port,
179 a list of subscriber IP subnets, and
180 a list of available Service Class Names.
182 container connection {
183 uses ccap-connection;
188 description "Application Manager Tag -- unique for this operator";
193 description "Application Manager Type -- unique for this AM tag";
197 leaf-list subscriber-subnets {
200 leaf-list upstream-scns {
201 type service-class-name;
203 leaf-list downstream-scns {
204 type service-class-name;
209 description "ccap data errors";
216 PCMM QoS Gates are organized as a tree by Application/Subscriber/Gate:
217 Each Application is known by its appId which is any string.
218 Each Subscriber is known by its subscriberId which is a CPE IP address in either IPv4 or IPv6 format.
219 Each Gate is known by its gateId which is any string.
221 The subscriber's CPE IP address is used to locate the CCAP device that is currently hosting the
222 the Cable Modem that is connected to the subscriber's device. Therefore, it is not necessary
223 for the PCMM applications to know the topology of the CCAP devices and CMs in the network path
224 to their subscriber devices.
226 Note that each CCAP entry contains a list of connected subscriber IP subnets as well as a list
227 of all Service Class Names (SCNs) available on the CCAP device.
232 grouping pcmm-qos-gates {
236 ext:context-instance "app-context";
239 description "Application Identity";
241 container subscribers {
246 description "Subscriber Identity -- must be a CM or CPE IP address";
254 description "Qos Gate Identity";
257 uses gate-operational-attributes;
258 uses pcmm-qos-gate-attributes;
267 grouping gate-operational-attributes {
271 description "FQ Gate path app/subscriber/gate";
277 description "CCAP Identity";
280 leaf cops-gate-state {
283 description "Operational COPS Gate state";
286 leaf cops-gate-time-info {
289 description "Operational COPS Gate time info";
292 leaf cops-gate-usage-info {
295 description "Operational COPS gate usage info";
301 description "Gate operational COPS Id";
307 description "Gate operational error";
311 type yang:date-and-time;
312 description "Gate operational attributes timestamp";
318 grouping classifier-attributes {
319 container classifiers {
320 list classifier-container {
324 description "Classifier ID and Gate classifier priority";
326 choice classifier-choice {
327 case qos-classifier-choice {
328 uses pcmm-qos-classifier;
330 case ext-classifier-choice {
331 uses pcmm-qos-ext-classifier;
333 case ipv6-classifier-choice {
334 uses pcmm-qos-ipv6-classifier;
341 grouping pcmm-qos-gate-attributes {
342 uses pcmm-qos-gate-spec;
343 uses pcmm-qos-traffic-profile;
344 uses classifier-attributes;
347 grouping pcmm-qos-gate-spec {
348 container gate-spec {
350 type service-flow-direction;
351 description "Gate Direction (ignored for traffic profile SCN)";
353 leaf dscp-tos-overwrite {
355 description "Optional DSCP/TOS overwrite value";
359 description "Optional DSCP/TOS overwrite AND mask";
361 leaf inactivity-timer {
363 description "Service Flow inactivity timeout";
365 leaf session-class-id {
367 description "Identifies the proper admission control policy or parameters to be applied for this Gate";
373 grouping pcmm-qos-traffic-profile {
374 container traffic-profile {
375 choice traffic-profile-choice {
377 uses pcmm-ugs-profile;
380 uses pcmm-rtp-profile;
382 case service-class-name-choice {
383 uses pcmm-serviceclass-name-profile;
385 case flow-spec-choice {
386 uses pcmm-flow-spec-profile;
392 grouping pcmm-serviceclass-name-profile {
393 container service-class-name-profile {
394 leaf service-class-name {
395 type service-class-name;
396 description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP";
402 grouping pcmm-flow-spec-profile {
403 container flow-spec-profile {
404 leaf token-bucket-rate {
406 description "Token Bucket Rate value [r]";
409 leaf token-bucket-size {
411 description "Token Bucket Size value [b]";
414 leaf peak-data-rate {
416 description "Peak Data Rate value [p]";
419 leaf minimum-policed-unit {
421 description "Minimum Policed Unit value [m]";
424 leaf maximum-packet-size {
426 description "Maximum Packet Size value [M]";
431 description "Rate value [R]";
436 description "Slack Term value [S]";
442 grouping pcmm-ugs-profile {
443 container ugs-profile {
444 leaf request-transmission-policy {
446 description "Request Transmission Policy";
449 leaf unsolicited-grant-size {
451 description "Unsolicited Grant Size";
454 leaf grants-per-interval {
456 description "Grants per Interval";
459 leaf nominal-grant-interval {
461 description "Nominal Grant Interval";
464 leaf tolerated-grant-jitter {
466 description "Tolerated Grant Jitter";
469 leaf upstream-peak-traffic-rate {
471 description "Upstream Peak Traffic Interval";
474 leaf required-attribute-mask {
476 description "Required Attribute Mask";
479 leaf forbidden-attribute-mask {
481 description "Forbidden Attribute Mask";
484 leaf attribute-aggregation-rule-mask {
486 description "Attribute Aggregation Rule Mask";
489 leaf minimum-buffer {
491 description "Minimum Buffer";
495 description "Forbidden Attribute Mask";
497 leaf maximum-buffer {
499 description "Forbidden Attribute Mask";
504 grouping pcmm-rtp-profile {
505 container rtp-profile {
506 leaf request-transmission-policy {
508 description "Request Transmission Policy";
511 leaf maximum-sustained-traffic-rate {
513 description "Maximum Sustained Traffic Rate";
516 leaf maximum-traffic-burst {
518 description "Maximum Traffic Burst";
521 leaf minimum-reserved-traffic-rate {
523 description "Minimum Reserved Traffic Rate";
526 leaf amrtr-packet-size {
528 description "Assumed Minimum Reserved Traffic Rate Packet Size";
531 leaf maximum-concatenated-burst {
533 description "Maximum Concatenated Burst";
536 leaf nominal-polling-interval {
538 description "Nominal Polling Interval";
541 leaf tolerated-poll-jitter {
543 description "Tolerated Poll Jitter";
546 leaf upstream-peak-traffic-rate {
548 description "Upstream Peak Traffic Rate";
551 leaf required-attribute-mask {
553 description "Required Attribute Mask";
556 leaf forbidden-attribute-mask {
558 description "Forbidden Attribute Mask";
561 leaf attribute-aggregation-rule-mask {
563 description "Attribute Aggregation Rule Mask";
566 leaf minimum-buffer {
568 description "Minimum Buffer";
572 description "Forbidden Attribute Mask";
574 leaf maximum-buffer {
576 description "Forbidden Attribute Mask";
581 grouping tp-port-match-ranges {
583 type inet:port-number;
584 description "TCP/UDP source port range start.";
588 type inet:port-number;
589 description "TCP/UDP source port range end.";
593 type inet:port-number;
594 description "TCP/UDP destination port range start.";
598 type inet:port-number;
599 description "TCP/UDP destination port range end.";
604 grouping pcmm-qos-classifier {
605 container classifier {
607 type inet:ipv4-address;
608 description "Source IPv4 address (exact match)";
612 type inet:ipv4-address;
613 description "Destination IPv4 address (exact match)";
618 description "TOS/DSCP match";
623 description "TOS/DSCP mask";
628 description "IPv4 transport protocol";
632 type inet:port-number;
633 description "TCP/UDP source port (exact match).";
637 type inet:port-number;
638 description "TCP/UDP destination port (exact match).";
643 description "Priority";
649 grouping pcmm-qos-ext-classifier {
650 container ext-classifier {
652 type inet:ipv4-address;
653 description "Source IPv4 address match";
657 type inet:ipv4-address;
658 description "Source IPv4 mask";
662 type inet:ipv4-address;
663 description "Destination IPv4 address match";
667 type inet:ipv4-address;
668 description "Destination IPv4 mask";
673 description "TOS/DSCP match";
678 description "TOS/DSCP mask";
683 description "IPv4 transport protocol";
688 description "Priority";
691 uses tp-port-match-ranges;
692 leaf activation-state {
693 type classifier-activation-state;
694 description "Activation state";
698 type classifier-action;
699 description "Action";
705 grouping pcmm-qos-ipv6-classifier {
706 container ipv6-classifier {
708 type inet:ipv6-prefix;
709 description "Source IPv6 prefix match in 'address/len' notation";
713 type inet:ipv6-prefix;
714 description "Destination IPv6 prefix match in 'address/len' notation";
719 description "TC low range match";
724 description "TC high range match";
729 description "TC mask";
734 description "IPv6 Next Header";
739 range "0 .. 1048575";
741 description "IPv6 Flow Label (20 bits)";
746 description "Priority";
749 uses tp-port-match-ranges;
750 leaf activation-state {
751 type classifier-activation-state;
752 description "Activation state";
756 type classifier-action;
757 description "Action";
764 rpc ccap-set-connection {
767 type "instance-identifier";
768 ext:context-reference "ccap-context";
770 container connection {
773 description "COPS session state";
782 container connection {
783 uses ccap-connection;
790 type yang:date-and-time;
791 description "RPC timestamp";
796 rpc ccap-poll-connection {
799 type "instance-identifier";
800 ext:context-reference "ccap-context";
808 container connection {
809 uses ccap-connection;
816 type yang:date-and-time;
817 description "RPC timestamp";
825 type instance-identifier;
826 ext:context-reference app-context;
830 description "Subscriber Identity -- must be a CM or CPE IP address";
834 description "Qos Gate Identity";
839 uses gate-operational-attributes;
845 type yang:date-and-time;
846 description "RPC timestamp";