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 RPC operations for set/delete/info on gates";
17 description "Added support for UGS and RTP traffic profiles";
20 description "Added support for flow-spec traffic profile";
23 description "Added support for activation-state, session-class-id and inactivity-timer";
26 description "Added priority field to all classifiers";
29 description "Modified service-flow-direction values to match the PCMM Spec";
32 description "Extended gates to support multiple classifiers.";
35 description "Corrected pluralization of containers/lists and added containers around lists where needed";
38 description "Initial revision of PCMM CCAP definitions";
45 description "RSVP sub-type per PCMM specification.";
48 typedef service-class-name {
49 type string { length "2..16"; }
50 description "The Service Class Name is MUST be 2-16 bytes.";
52 typedef service-flow-direction {
56 description "Downstream service flow.";
60 description "Upstream service flow.";
63 description "This value represents the service flow direction.";
66 typedef classifier-activation-state {
70 description "Inactive";
77 description "Instructs the CMTS to either activate or inactivate the classifier";
80 typedef classifier-action {
84 description "Add classifier";
88 description "Replace classifier";
92 description "Delete classifier";
96 description "No change to classifier";
99 description "Instructs the CMTS to add,replace,delete or leave the classifier";
102 typedef tp-protocol {
103 type uint16 {range "0..257";}
104 description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP";
108 description "TOS/TC byte or mask";
111 identity ccap-context {
112 description "Identity used to mark ccap context";
119 CCAP devices are known by their network name which is any string.
120 Each CCAP device has a network address:port, a list of subscriber IP subnets,
121 and a list of available Service Class Names.
124 ext:context-instance "ccap-context";
127 description "CCAP Identity";
130 uses ccap-attributes;
134 identity app-context {
135 description "Identity used to mark app context";
141 ext:context-instance "app-context";
149 grouping ccap-connection {
151 type inet:ip-address;
152 description "IP Address of CCAP";
156 type inet:port-number;
157 description "COPS session TCP port number";
163 description "COPS session state";
169 description "Operational errors";
173 type yang:date-and-time;
174 description "Last update timestamp";
179 grouping ccap-attributes {
181 Each CCAP device has a COPS connection address:port,
182 a list of subscriber IP subnets, and
183 a list of available Service Class Names.
185 container connection {
186 uses ccap-connection;
191 description "Application Manager Tag -- unique for this operator";
196 description "Application Manager Type -- unique for this AM tag";
200 leaf-list subscriber-subnets {
203 leaf-list upstream-scns {
204 type service-class-name;
206 leaf-list downstream-scns {
207 type service-class-name;
212 description "ccap data errors";
219 PCMM QoS Gates are organized as a tree by Application/Subscriber/Gate:
220 Each Application is known by its appId which is any string.
221 Each Subscriber is known by its subscriberId which is a CPE IP address in either IPv4 or IPv6 format.
222 Each Gate is known by its gateId which is any string.
224 The subscriber's CPE IP address is used to locate the CCAP device that is currently hosting the
225 the Cable Modem that is connected to the subscriber's device. Therefore, it is not necessary
226 for the PCMM applications to know the topology of the CCAP devices and CMs in the network path
227 to their subscriber devices.
229 Note that each CCAP entry contains a list of connected subscriber IP subnets as well as a list
230 of all Service Class Names (SCNs) available on the CCAP device.
235 grouping pcmm-qos-gates {
239 ext:context-instance "app-context";
242 description "Application Identity";
244 container subscribers {
249 description "Subscriber Identity -- must be a CM or CPE IP address";
257 description "Qos Gate Identity";
260 uses gate-operational-attributes;
261 uses pcmm-qos-gate-attributes;
270 grouping gate-operational-attributes {
274 description "FQ Gate path app/subscriber/gate";
280 description "CCAP Identity";
283 leaf cops-gate-state {
286 description "Operational COPS Gate state";
289 leaf cops-gate-time-info {
292 description "Operational COPS Gate time info";
295 leaf cops-gate-usage-info {
298 description "Operational COPS gate usage info";
304 description "Gate operational COPS Id";
310 description "Gate operational error";
314 type yang:date-and-time;
315 description "Gate operational attributes timestamp";
321 grouping classifier-attributes {
322 container classifiers {
323 list classifier-container {
327 description "Classifier ID and Gate classifier priority";
329 choice classifier-choice {
330 case qos-classifier-choice {
331 uses pcmm-qos-classifier;
333 case ext-classifier-choice {
334 uses pcmm-qos-ext-classifier;
336 case ipv6-classifier-choice {
337 uses pcmm-qos-ipv6-classifier;
344 grouping pcmm-qos-gate-attributes {
345 uses pcmm-qos-gate-spec;
346 uses pcmm-qos-traffic-profile;
347 uses classifier-attributes;
350 grouping pcmm-qos-gate-spec {
351 container gate-spec {
353 type service-flow-direction;
354 description "Gate Direction (ignored for traffic profile SCN)";
356 leaf dscp-tos-overwrite {
358 description "Optional DSCP/TOS overwrite value";
362 description "Optional DSCP/TOS overwrite AND mask";
364 leaf inactivity-timer {
366 description "Service Flow inactivity timeout";
368 leaf session-class-id {
370 description "Identifies the proper admission control policy or parameters to be applied for this Gate";
376 grouping pcmm-qos-traffic-profile {
377 container traffic-profile {
378 choice traffic-profile-choice {
380 uses pcmm-ugs-profile;
383 uses pcmm-rtp-profile;
385 case service-class-name-choice {
386 uses pcmm-serviceclass-name-profile;
388 case flow-spec-choice {
389 uses pcmm-flow-spec-profile;
395 grouping pcmm-serviceclass-name-profile {
396 container service-class-name-profile {
397 leaf service-class-name {
398 type service-class-name;
399 description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP";
405 grouping pcmm-flow-spec-profile {
406 container flow-spec-profile {
407 leaf token-bucket-rate {
409 description "Token Bucket Rate value [r]";
412 leaf token-bucket-size {
414 description "Token Bucket Size value [b]";
417 leaf peak-data-rate {
419 description "Peak Data Rate value [p]";
422 leaf minimum-policed-unit {
424 description "Minimum Policed Unit value [m]";
427 leaf maximum-packet-size {
429 description "Maximum Packet Size value [M]";
434 description "Rate value [R]";
439 description "Slack Term value [S]";
445 grouping pcmm-ugs-profile {
446 container ugs-profile {
447 leaf request-transmission-policy {
449 description "Request Transmission Policy";
452 leaf unsolicited-grant-size {
454 description "Unsolicited Grant Size";
457 leaf grants-per-interval {
459 description "Grants per Interval";
462 leaf nominal-grant-interval {
464 description "Nominal Grant Interval";
467 leaf tolerated-grant-jitter {
469 description "Tolerated Grant Jitter";
472 leaf upstream-peak-traffic-rate {
474 description "Upstream Peak Traffic Interval";
477 leaf required-attribute-mask {
479 description "Required Attribute Mask";
482 leaf forbidden-attribute-mask {
484 description "Forbidden Attribute Mask";
487 leaf attribute-aggregation-rule-mask {
489 description "Attribute Aggregation Rule Mask";
492 leaf minimum-buffer {
494 description "Minimum Buffer";
498 description "Forbidden Attribute Mask";
500 leaf maximum-buffer {
502 description "Forbidden Attribute Mask";
507 grouping pcmm-rtp-profile {
508 container rtp-profile {
509 leaf request-transmission-policy {
511 description "Request Transmission Policy";
514 leaf maximum-sustained-traffic-rate {
516 description "Maximum Sustained Traffic Rate";
519 leaf maximum-traffic-burst {
521 description "Maximum Traffic Burst";
524 leaf minimum-reserved-traffic-rate {
526 description "Minimum Reserved Traffic Rate";
529 leaf amrtr-packet-size {
531 description "Assumed Minimum Reserved Traffic Rate Packet Size";
534 leaf maximum-concatenated-burst {
536 description "Maximum Concatenated Burst";
539 leaf nominal-polling-interval {
541 description "Nominal Polling Interval";
544 leaf tolerated-poll-jitter {
546 description "Tolerated Poll Jitter";
549 leaf upstream-peak-traffic-rate {
551 description "Upstream Peak Traffic Rate";
554 leaf required-attribute-mask {
556 description "Required Attribute Mask";
559 leaf forbidden-attribute-mask {
561 description "Forbidden Attribute Mask";
564 leaf attribute-aggregation-rule-mask {
566 description "Attribute Aggregation Rule Mask";
569 leaf minimum-buffer {
571 description "Minimum Buffer";
575 description "Forbidden Attribute Mask";
577 leaf maximum-buffer {
579 description "Forbidden Attribute Mask";
584 grouping tp-port-match-ranges {
586 type inet:port-number;
587 description "TCP/UDP source port range start.";
591 type inet:port-number;
592 description "TCP/UDP source port range end.";
596 type inet:port-number;
597 description "TCP/UDP destination port range start.";
601 type inet:port-number;
602 description "TCP/UDP destination port range end.";
607 grouping pcmm-qos-classifier {
608 container classifier {
610 type inet:ipv4-address;
611 description "Source IPv4 address (exact match)";
615 type inet:ipv4-address;
616 description "Destination IPv4 address (exact match)";
621 description "TOS/DSCP match";
626 description "TOS/DSCP mask";
631 description "IPv4 transport protocol";
635 type inet:port-number;
636 description "TCP/UDP source port (exact match).";
640 type inet:port-number;
641 description "TCP/UDP destination port (exact match).";
646 description "Priority";
652 grouping pcmm-qos-ext-classifier {
653 container ext-classifier {
655 type inet:ipv4-address;
656 description "Source IPv4 address match";
660 type inet:ipv4-address;
661 description "Source IPv4 mask";
665 type inet:ipv4-address;
666 description "Destination IPv4 address match";
670 type inet:ipv4-address;
671 description "Destination IPv4 mask";
676 description "TOS/DSCP match";
681 description "TOS/DSCP mask";
686 description "IPv4 transport protocol";
691 description "Priority";
694 uses tp-port-match-ranges;
695 leaf activation-state {
696 type classifier-activation-state;
697 description "Activation state";
701 type classifier-action;
702 description "Action";
708 grouping pcmm-qos-ipv6-classifier {
709 container ipv6-classifier {
711 type inet:ipv6-prefix;
712 description "Source IPv6 prefix match in 'address/len' notation";
716 type inet:ipv6-prefix;
717 description "Destination IPv6 prefix match in 'address/len' notation";
722 description "TC low range match";
727 description "TC high range match";
732 description "TC mask";
737 description "IPv6 Next Header";
742 range "0 .. 1048575";
744 description "IPv6 Flow Label (20 bits)";
749 description "Priority";
752 uses tp-port-match-ranges;
753 leaf activation-state {
754 type classifier-activation-state;
755 description "Activation state";
759 type classifier-action;
760 description "Action";
766 typedef failure-type {
767 description "Enumeration of the distinct types of operational failure modes
768 that can occur while servicing a southbound PCMM request";
771 description "The request failed before it was sent to the CMTS.";
774 description "The request was not acknowledged by the CMTS.";
777 description "The request was sent to the CMTS and an error response was returned";
783 grouping failure-response {
784 description "The structure of a failure response from a PCMM request";
793 grouping qos-set-gate-response {
794 choice set-response-type {
796 uses failure-response;
798 case set-successful {
801 description "Unique identifier assigned by CMTS for the requested gate";
807 grouping qos-delete-gate-response {
808 choice delete-response-type {
809 case delete-failure {
810 uses failure-response;
812 case delete-successful {
815 description "Unique identifier assigned by CMTS for the requested gate";
822 rpc ccap-set-connection {
825 type "instance-identifier";
826 ext:context-reference "ccap-context";
828 container connection {
831 description "COPS session state";
840 container connection {
841 uses ccap-connection;
848 type yang:date-and-time;
849 description "RPC timestamp";
854 rpc ccap-poll-connection {
857 type "instance-identifier";
858 ext:context-reference "ccap-context";
866 container connection {
867 uses ccap-connection;
874 type yang:date-and-time;
875 description "RPC timestamp";
883 type instance-identifier;
884 ext:context-reference app-context;
888 description "Subscriber Identity -- must be a CM or CPE IP address";
892 description "Qos Gate Identity";
897 uses gate-operational-attributes;
903 type yang:date-and-time;
904 description "RPC timestamp";
913 description "Application Identity";
918 description "Subscriber Identity -- must be a CM or CPE IP address";
926 description "Qos Gate Identity";
929 uses gate-operational-attributes;
930 uses pcmm-qos-gate-attributes;
935 uses qos-set-gate-response;
939 rpc qos-delete-gate {
943 description "Application Identity";
948 description "Subscriber Identity -- must be a CM or CPE IP address";
953 description "Qos Gate Identity";
958 uses qos-delete-gate-response;
966 description "Application Identity";
971 description "Subscriber Identity -- must be a CM or CPE IP address";
976 description "Qos Gate Identity";
981 uses qos-gate-info-response;
985 grouping qos-gate-info-response {
986 choice info-response-type {
988 uses failure-response;
990 case info-successful {
996 description "Qos Gate Identity";
998 uses gate-operational-attributes;
999 uses pcmm-qos-gate-attributes;