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 "Modified service-flow-direction values to match the PCMM Spec";
17 description "Extended gates to support multiple classifiers.";
20 description "Corrected pluralization of containers/lists and added containers around lists where needed";
23 description "Initial revision of PCMM CCAP definitions";
28 typedef service-class-name {
29 type string { length "2..16"; }
30 description "The Service Class Name is MUST be 2-16 bytes.";
32 typedef service-flow-direction {
36 description "Downstream service flow.";
40 description "Upstream service flow.";
43 description "This value represents the service flow direction.";
46 type uint16 {range "0..257";}
47 description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP";
51 description "TOS/TC byte or mask";
54 identity ccap-context {
55 description "Identity used to mark ccap context";
58 identity app-context {
59 description "Identity used to mark app context";
66 CCAP devices are known by their network name which is any string.
67 Each CCAP device has a network address:port, a list of subscriber IP subnets,
68 and a list of available Service Class Names.
71 ext:context-instance "ccap-context";
74 description "CCAP Identity";
81 grouping ccap-connection {
84 description "IP Address of CCAP";
88 type inet:port-number;
89 description "COPS session TCP port number";
95 description "COPS session state";
101 description "Operational errors";
103 // leaf idle-detect {
105 // description "COPS connection idle timer (seconds)";
111 // description "COPS connection idle state";
117 type yang:date-and-time;
118 description "Last update timestamp";
123 grouping ccap-attributes {
125 Each CCAP device has a COPS connection address:port,
126 a list of subscriber IP subnets, and
127 a list of available Service Class Names.
129 container connection {
130 uses ccap-connection;
135 description "Application Manager Tag -- unique for this operator";
140 description "Application Manager Type -- unique for this AM tag";
144 leaf-list subscriber-subnets {
147 leaf-list upstream-scns {
148 type service-class-name;
150 leaf-list downstream-scns {
151 type service-class-name;
156 description "ccap data errors";
163 PCMM QoS Gates are organized as a tree by Application/Subscriber/Gate:
164 Each Application is known by its appId which is any string.
165 Each Subscriber is known by its subscriberId which is a CPE IP address in either IPv4 or IPv6 format.
166 Each Gate is known by its gateId which is any string.
168 The subscriber's CPE IP address is used to locate the CCAP device that is currently hosting the
169 the Cable Modem that is connected to the subscriber's device. Therefore, it is not necessary
170 for the PCMM applications to know the topology of the CCAP devices and CMs in the network path
171 to their subscriber devices.
173 Note that each CCAP entry contains a list of connected subscriber IP subnets as well as a list
174 of all Service Class Names (SCNs) available on the CCAP device.
179 grouping pcmm-qos-gates {
183 ext:context-instance "app-context";
186 description "Application Identity";
188 container subscribers {
193 description "Subscriber Identity -- must be a CM or CPE IP address";
201 description "Qos Gate Identity";
204 uses gate-operational-attributes;
205 uses pcmm-qos-gate-attributes;
214 grouping gate-operational-attributes {
218 description "FQ Gate path app/subscriber/gate";
224 description "CCAP Identity";
227 leaf cops-gate-state {
230 description "Operational COPS Gate state";
233 leaf cops-gate-time-info {
236 description "Operational COPS Gate time info";
239 leaf cops-gate-usage-info {
242 description "Operational COPS gate usage info";
248 description "Gate operational COPS Id";
254 description "Gate operational error";
258 type yang:date-and-time;
259 description "Gate operational attributes timestamp";
265 grouping classifier-attributes {
266 container classifiers {
267 list classifier-container {
271 description "Classifier ID and Gate classifier priority";
273 choice classifier-choice {
274 case qos-classifier-choice {
275 uses pcmm-qos-classifier;
277 case ext-classifier-choice {
278 uses pcmm-qos-ext-classifier;
280 case ipv6-classifier-choice {
281 uses pcmm-qos-ipv6-classifier;
288 grouping pcmm-qos-gate-attributes {
289 uses pcmm-qos-gate-spec;
290 uses pcmm-qos-traffic-profile;
291 uses classifier-attributes;
294 grouping pcmm-qos-gate-spec {
295 container gate-spec {
297 type service-flow-direction;
298 description "Gate Direction (ignored for traffic profile SCN)";
300 leaf dscp-tos-overwrite {
302 description "Optional DSCP/TOS overwrite value";
306 description "Optional DSCP/TOS overwrite AND mask";
311 grouping pcmm-qos-traffic-profile {
312 container traffic-profile {
313 leaf service-class-name {
314 type service-class-name;
315 description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP";
321 grouping tp-port-match-ranges {
323 type inet:port-number;
324 description "TCP/UDP source port range start.";
327 type inet:port-number;
328 description "TCP/UDP source port range end.";
331 type inet:port-number;
332 description "TCP/UDP destination port range start.";
335 type inet:port-number;
336 description "TCP/UDP destination port range end.";
340 grouping pcmm-qos-classifier {
341 container classifier {
343 type inet:ipv4-address;
344 description "Source IPv4 address (exact match)";
347 type inet:ipv4-address;
348 description "Destination IPv4 address (exact match)";
352 description "TOS/DSCP match";
356 description "TOS/DSCP mask";
360 description "IPv4 transport protocol";
363 type inet:port-number;
364 description "TCP/UDP source port (exact match).";
367 type inet:port-number;
368 description "TCP/UDP destination port (exact match).";
373 grouping pcmm-qos-ext-classifier {
374 container ext-classifier {
376 type inet:ipv4-address;
377 description "Source IPv4 address match";
380 type inet:ipv4-address;
381 description "Source IPv4 mask";
384 type inet:ipv4-address;
385 description "Destination IPv4 address match";
388 type inet:ipv4-address;
389 description "Destination IPv4 mask";
393 description "TOS/DSCP match";
397 description "TOS/DSCP mask";
401 description "IPv4 transport protocol";
403 uses tp-port-match-ranges;
407 grouping pcmm-qos-ipv6-classifier {
408 container ipv6-classifier {
410 type inet:ipv6-prefix;
411 description "Source IPv6 prefix match in 'address/len' notation";
414 type inet:ipv6-prefix;
415 description "Destination IPv6 prefix match in 'address/len' notation";
419 description "TC low range match";
423 description "TC high range match";
427 description "TC mask";
431 description "IPv6 Next Header";
435 range "0 .. 1048575";
437 description "IPv6 Flow Label (20 bits)";
439 uses tp-port-match-ranges;
444 rpc ccap-set-connection {
447 type instance-identifier;
448 ext:context-reference ccap-context;
450 container connection {
453 description "COPS session state";
455 // leaf idle-detect {
457 // description "COPS connection idle timer";
466 container connection {
467 uses ccap-connection;
474 type yang:date-and-time;
475 description "RPC timestamp";
480 rpc ccap-poll-connection {
483 type instance-identifier;
484 ext:context-reference ccap-context;
492 container connection {
493 uses ccap-connection;
500 type yang:date-and-time;
501 description "RPC timestamp";
509 type instance-identifier;
510 ext:context-reference app-context;
514 description "Subscriber Identity -- must be a CM or CPE IP address";
518 description "Qos Gate Identity";
523 uses gate-operational-attributes;
529 type yang:date-and-time;
530 description "RPC timestamp";