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 priority field to all classifiers";
17 description "Modified service-flow-direction values to match the PCMM Spec";
20 description "Extended gates to support multiple classifiers.";
23 description "Corrected pluralization of containers/lists and added containers around lists where needed";
26 description "Initial revision of PCMM CCAP definitions";
31 typedef service-class-name {
32 type string { length "2..16"; }
33 description "The Service Class Name is MUST be 2-16 bytes.";
35 typedef service-flow-direction {
39 description "Downstream service flow.";
43 description "Upstream service flow.";
46 description "This value represents the service flow direction.";
49 type uint16 {range "0..257";}
50 description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP";
54 description "TOS/TC byte or mask";
57 identity ccap-context {
58 description "Identity used to mark ccap context";
61 identity app-context {
62 description "Identity used to mark app context";
69 CCAP devices are known by their network name which is any string.
70 Each CCAP device has a network address:port, a list of subscriber IP subnets,
71 and a list of available Service Class Names.
74 ext:context-instance "ccap-context";
77 description "CCAP Identity";
84 grouping ccap-connection {
87 description "IP Address of CCAP";
91 type inet:port-number;
92 description "COPS session TCP port number";
98 description "COPS session state";
104 description "Operational errors";
106 // leaf idle-detect {
108 // description "COPS connection idle timer (seconds)";
114 // description "COPS connection idle state";
120 type yang:date-and-time;
121 description "Last update timestamp";
126 grouping ccap-attributes {
128 Each CCAP device has a COPS connection address:port,
129 a list of subscriber IP subnets, and
130 a list of available Service Class Names.
132 container connection {
133 uses ccap-connection;
138 description "Application Manager Tag -- unique for this operator";
143 description "Application Manager Type -- unique for this AM tag";
147 leaf-list subscriber-subnets {
150 leaf-list upstream-scns {
151 type service-class-name;
153 leaf-list downstream-scns {
154 type service-class-name;
159 description "ccap data errors";
166 PCMM QoS Gates are organized as a tree by Application/Subscriber/Gate:
167 Each Application is known by its appId which is any string.
168 Each Subscriber is known by its subscriberId which is a CPE IP address in either IPv4 or IPv6 format.
169 Each Gate is known by its gateId which is any string.
171 The subscriber's CPE IP address is used to locate the CCAP device that is currently hosting the
172 the Cable Modem that is connected to the subscriber's device. Therefore, it is not necessary
173 for the PCMM applications to know the topology of the CCAP devices and CMs in the network path
174 to their subscriber devices.
176 Note that each CCAP entry contains a list of connected subscriber IP subnets as well as a list
177 of all Service Class Names (SCNs) available on the CCAP device.
182 grouping pcmm-qos-gates {
186 ext:context-instance "app-context";
189 description "Application Identity";
191 container subscribers {
196 description "Subscriber Identity -- must be a CM or CPE IP address";
204 description "Qos Gate Identity";
207 uses gate-operational-attributes;
208 uses pcmm-qos-gate-attributes;
217 grouping gate-operational-attributes {
221 description "FQ Gate path app/subscriber/gate";
227 description "CCAP Identity";
230 leaf cops-gate-state {
233 description "Operational COPS Gate state";
236 leaf cops-gate-time-info {
239 description "Operational COPS Gate time info";
242 leaf cops-gate-usage-info {
245 description "Operational COPS gate usage info";
251 description "Gate operational COPS Id";
257 description "Gate operational error";
261 type yang:date-and-time;
262 description "Gate operational attributes timestamp";
268 grouping classifier-attributes {
269 container classifiers {
270 list classifier-container {
274 description "Classifier ID and Gate classifier priority";
276 choice classifier-choice {
277 case qos-classifier-choice {
278 uses pcmm-qos-classifier;
280 case ext-classifier-choice {
281 uses pcmm-qos-ext-classifier;
283 case ipv6-classifier-choice {
284 uses pcmm-qos-ipv6-classifier;
291 grouping pcmm-qos-gate-attributes {
292 uses pcmm-qos-gate-spec;
293 uses pcmm-qos-traffic-profile;
294 uses classifier-attributes;
297 grouping pcmm-qos-gate-spec {
298 container gate-spec {
300 type service-flow-direction;
301 description "Gate Direction (ignored for traffic profile SCN)";
303 leaf dscp-tos-overwrite {
305 description "Optional DSCP/TOS overwrite value";
309 description "Optional DSCP/TOS overwrite AND mask";
314 grouping pcmm-qos-traffic-profile {
315 container traffic-profile {
316 leaf service-class-name {
317 type service-class-name;
318 description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP";
324 grouping tp-port-match-ranges {
326 type inet:port-number;
327 description "TCP/UDP source port range start.";
330 type inet:port-number;
331 description "TCP/UDP source port range end.";
334 type inet:port-number;
335 description "TCP/UDP destination port range start.";
338 type inet:port-number;
339 description "TCP/UDP destination port range end.";
343 grouping pcmm-qos-classifier {
344 container classifier {
346 type inet:ipv4-address;
347 description "Source IPv4 address (exact match)";
350 type inet:ipv4-address;
351 description "Destination IPv4 address (exact match)";
355 description "TOS/DSCP match";
359 description "TOS/DSCP mask";
363 description "IPv4 transport protocol";
366 type inet:port-number;
367 description "TCP/UDP source port (exact match).";
370 type inet:port-number;
371 description "TCP/UDP destination port (exact match).";
375 description "Priority";
381 grouping pcmm-qos-ext-classifier {
382 container ext-classifier {
384 type inet:ipv4-address;
385 description "Source IPv4 address match";
388 type inet:ipv4-address;
389 description "Source IPv4 mask";
392 type inet:ipv4-address;
393 description "Destination IPv4 address match";
396 type inet:ipv4-address;
397 description "Destination IPv4 mask";
401 description "TOS/DSCP match";
405 description "TOS/DSCP mask";
409 description "IPv4 transport protocol";
411 uses tp-port-match-ranges;
414 description "Priority";
420 grouping pcmm-qos-ipv6-classifier {
421 container ipv6-classifier {
423 type inet:ipv6-prefix;
424 description "Source IPv6 prefix match in 'address/len' notation";
427 type inet:ipv6-prefix;
428 description "Destination IPv6 prefix match in 'address/len' notation";
432 description "TC low range match";
436 description "TC high range match";
440 description "TC mask";
444 description "IPv6 Next Header";
448 range "0 .. 1048575";
450 description "IPv6 Flow Label (20 bits)";
452 uses tp-port-match-ranges;
455 description "Priority";
462 rpc ccap-set-connection {
465 type instance-identifier;
466 ext:context-reference ccap-context;
468 container connection {
471 description "COPS session state";
473 // leaf idle-detect {
475 // description "COPS connection idle timer";
484 container connection {
485 uses ccap-connection;
492 type yang:date-and-time;
493 description "RPC timestamp";
498 rpc ccap-poll-connection {
501 type instance-identifier;
502 ext:context-reference ccap-context;
510 container connection {
511 uses ccap-connection;
518 type yang:date-and-time;
519 description "RPC timestamp";
527 type instance-identifier;
528 ext:context-reference app-context;
532 description "Subscriber Identity -- must be a CM or CPE IP address";
536 description "Qos Gate Identity";
541 uses gate-operational-attributes;
547 type yang:date-and-time;
548 description "RPC timestamp";