3 namespace "urn:packetcable";
6 import ietf-yang-types { prefix yang; revision-date "2010-09-24"; }
7 import ietf-inet-types { prefix inet; revision-date "2010-09-24"; }
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 "Extended gates to support multiple classifiers.";
17 description "Corrected pluralization of containers/lists and added containers around lists where needed";
20 description "Initial revision of PCMM CCAP definitions";
25 typedef service-class-name {
26 type string { length "2..16"; }
27 description "The Service Class Name is MUST be 2-16 bytes.";
29 typedef service-flow-direction {
33 description "Upstream service flow.";
37 description "Downstream service flow.";
40 description "This value represents the service flow direction.";
43 type uint16 {range "0..257";}
44 description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP";
48 description "TOS/TC byte or mask";
51 identity ccap-context {
52 description "Identity used to mark ccap context";
55 identity app-context {
56 description "Identity used to mark app context";
63 CCAP devices are known by their network name which is any string.
64 Each CCAP device has a network address:port, a list of subscriber IP subnets,
65 and a list of available Service Class Names.
68 ext:context-instance "ccap-context";
71 description "CCAP Identity";
78 grouping ccap-connection {
81 description "IP Address of CCAP";
85 type inet:port-number;
86 description "COPS session TCP port number";
92 description "COPS session state";
98 description "Operational errors";
100 // leaf idle-detect {
102 // description "COPS connection idle timer (seconds)";
108 // description "COPS connection idle state";
114 type yang:date-and-time;
115 description "Last update timestamp";
120 grouping ccap-attributes {
122 Each CCAP device has a COPS connection address:port,
123 a list of subscriber IP subnets, and
124 a list of available Service Class Names.
126 container connection {
127 uses ccap-connection;
132 description "Application Manager Tag -- unique for this operator";
137 description "Application Manager Type -- unique for this AM tag";
141 leaf-list subscriber-subnets {
144 leaf-list upstream-scns {
145 type service-class-name;
147 leaf-list downstream-scns {
148 type service-class-name;
153 description "ccap data errors";
160 PCMM QoS Gates are organized as a tree by Application/Subscriber/Gate:
161 Each Application is known by its appId which is any string.
162 Each Subscriber is known by its subscriberId which is a CPE IP address in either IPv4 or IPv6 format.
163 Each Gate is known by its gateId which is any string.
165 The subscriber's CPE IP address is used to locate the CCAP device that is currently hosting the
166 the Cable Modem that is connected to the subscriber's device. Therefore, it is not necessary
167 for the PCMM applications to know the topology of the CCAP devices and CMs in the network path
168 to their subscriber devices.
170 Note that each CCAP entry contains a list of connected subscriber IP subnets as well as a list
171 of all Service Class Names (SCNs) available on the CCAP device.
176 grouping pcmm-qos-gates {
180 ext:context-instance "app-context";
183 description "Application Identity";
185 container subscribers {
190 description "Subscriber Identity -- must be a CM or CPE IP address";
198 description "Qos Gate Identity";
201 uses gate-operational-attributes;
202 uses pcmm-qos-gate-attributes;
211 grouping gate-operational-attributes {
215 description "FQ Gate path app/subscriber/gate";
221 description "CCAP Identity";
224 leaf cops-gate-state {
227 description "Operational COPS Gate state";
230 leaf cops-gate-time-info {
233 description "Operational COPS Gate time info";
236 leaf cops-gate-usage-info {
239 description "Operational COPS gate usage info";
245 description "Gate operational COPS Id";
251 description "Gate operational error";
255 type yang:date-and-time;
256 description "Gate operational attributes timestamp";
262 grouping classifier-attributes {
263 container classifiers {
264 list classifier-container {
268 description "Classifier ID and Gate classifier priority";
270 choice classifier-choice {
271 case qos-classifier-choice {
272 uses pcmm-qos-classifier;
274 case ext-classifier-choice {
275 uses pcmm-qos-ext-classifier;
277 case ipv6-classifier-choice {
278 uses pcmm-qos-ipv6-classifier;
285 grouping pcmm-qos-gate-attributes {
286 uses pcmm-qos-gate-spec;
287 uses pcmm-qos-traffic-profile;
288 uses classifier-attributes;
291 grouping pcmm-qos-gate-spec {
292 container gate-spec {
294 type service-flow-direction;
295 description "Gate Direction (ignored for traffic profile SCN)";
297 leaf dscp-tos-overwrite {
299 description "Optional DSCP/TOS overwrite value";
303 description "Optional DSCP/TOS overwrite AND mask";
308 grouping pcmm-qos-traffic-profile {
309 container traffic-profile {
310 leaf service-class-name {
311 type service-class-name;
312 description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP";
318 grouping tp-port-match-ranges {
320 type inet:port-number;
321 description "TCP/UDP source port range start.";
324 type inet:port-number;
325 description "TCP/UDP source port range end.";
328 type inet:port-number;
329 description "TCP/UDP destination port range start.";
332 type inet:port-number;
333 description "TCP/UDP destination port range end.";
337 grouping pcmm-qos-classifier {
338 container classifier {
340 type inet:ipv4-address;
341 description "Source IPv4 address (exact match)";
344 type inet:ipv4-address;
345 description "Destination IPv4 address (exact match)";
349 description "TOS/DSCP match";
353 description "TOS/DSCP mask";
357 description "IPv4 transport protocol";
360 type inet:port-number;
361 description "TCP/UDP source port (exact match).";
364 type inet:port-number;
365 description "TCP/UDP destination port (exact match).";
370 grouping pcmm-qos-ext-classifier {
371 container ext-classifier {
373 type inet:ipv4-address;
374 description "Source IPv4 address match";
377 type inet:ipv4-address;
378 description "Source IPv4 mask";
381 type inet:ipv4-address;
382 description "Destination IPv4 address match";
385 type inet:ipv4-address;
386 description "Destination IPv4 mask";
390 description "TOS/DSCP match";
394 description "TOS/DSCP mask";
398 description "IPv4 transport protocol";
400 uses tp-port-match-ranges;
404 grouping pcmm-qos-ipv6-classifier {
405 container ipv6-classifier {
407 type inet:ipv6-prefix;
408 description "Source IPv6 prefix match in 'address/len' notation";
411 type inet:ipv6-prefix;
412 description "Destination IPv6 prefix match in 'address/len' notation";
416 description "TC low range match";
420 description "TC high range match";
424 description "TC mask";
428 description "IPv6 Next Header";
432 range "0 .. 1048575";
434 description "IPv6 Flow Label (20 bits)";
436 uses tp-port-match-ranges;
441 rpc ccap-set-connection {
444 type instance-identifier;
445 ext:context-reference ccap-context;
447 container connection {
450 description "COPS session state";
452 // leaf idle-detect {
454 // description "COPS connection idle timer";
463 container connection {
464 uses ccap-connection;
471 type yang:date-and-time;
472 description "RPC timestamp";
477 rpc ccap-poll-connection {
480 type instance-identifier;
481 ext:context-reference ccap-context;
489 container connection {
490 uses ccap-connection;
497 type yang:date-and-time;
498 description "RPC timestamp";
506 type instance-identifier;
507 ext:context-reference app-context;
511 description "Subscriber Identity -- must be a CM or CPE IP address";
515 description "Qos Gate Identity";
520 uses gate-operational-attributes;
526 type yang:date-and-time;
527 description "RPC timestamp";