3 namespace "urn:packetcable";
6 import ietf-yang-types { prefix yang; }
7 import ietf-inet-types { prefix inet; }
9 description "This module contains the PCMM Converged Cable Access Platform (CCAP) definitions";
10 organization "OpenDaylight Project";
13 description "Initial revision of PCMM CCAP definitions";
18 typedef service-class-name {
19 type string { length "2..16"; }
20 description "The Service Class Name is MUST be 2-16 bytes.";
22 typedef service-flow-direction {
26 description "Upstream service flow.";
30 description "Downstream service flow.";
33 description "This value represents the service flow direction.";
36 type uint16 {range "0..257";}
37 description "This value represents the IP transport protocol (or Next Header) where 256 is any protocol and 257 is TCP or UDP";
41 description "TOS/TC byte or mask";
49 CCAP devices are known by their network name which is any string.
50 Each CCAP device has a network address:port, a list of subscriber IP subnets,
51 and a list of available Service Class Names.
56 description "CCAP Identity";
62 grouping ccap-attributes {
64 Each CCAP device has a COPS connection address:port,
65 a list of subscriber IP subnets, and
66 a list of available Service Class Names.
68 container connection {
71 description "IP Address of CCAP";
74 type inet:port-number;
75 description "COPS session TCP port number";
82 description "Application Manager Tag -- unique for this operator";
86 description "Application Manager Type -- unique for this AM tag";
89 leaf-list subscriber-subnets {
92 leaf-list upstream-scns {
93 type service-class-name;
95 leaf-list downstream-scns {
96 type service-class-name;
103 PCMM QoS Gates are organized as a tree by Application/Subscriber/Gate:
104 Each Application is known by its appId which is any string.
105 Each Subscriber is known by its subId which is a CPE IP address in either IPv4 or IPv6 format.
106 Each Gate is known by its gateId which is any string.
108 The subscriber's CPE IP address is used to locate the CCAP device that is currently hosting the
109 the Cable Modem that is connected to the subscriber's device. Therefore, it is not necessary
110 for the PCMM applications to know the topology of the CCAP devices and CMs in the network path
111 to their subscriber devices.
113 Note that each CCAP entry contains a list of connected subscriber IP subnets as well as a list
114 of all Service Class Names (SCNs) available on the CCAP device.
119 grouping pcmm-qos-gates {
124 description "Application Identity";
130 description "Subscriber Identity -- must be a CM or CPE IP address";
136 description "Qos Gate Identity";
138 uses pcmm-qos-gate-attributes;
144 grouping pcmm-qos-gate-attributes {
145 uses pcmm-qos-gate-spec;
146 uses pcmm-qos-traffic-profile;
147 uses pcmm-qos-classifier;
148 uses pcmm-qos-ext-classifier;
149 uses pcmm-qos-ipv6-classifier;
152 grouping pcmm-qos-gate-spec {
153 container gate-spec {
155 type service-flow-direction;
156 description "Gate Direction (ignored for traffic profile SCN)";
158 leaf dscp-tos-overwrite {
160 description "Optional DSCP/TOS overwrite value";
164 description "Optional DSCP/TOS overwrite AND mask";
169 grouping pcmm-qos-traffic-profile {
170 container traffic-profile {
171 leaf service-class-name {
172 type service-class-name;
173 description "The Service Class Name (SCN). This SCN must be pre-provisioned on the target CCAP";
178 grouping tp-port-match-ranges {
180 type inet:port-number;
181 description "TCP/UDP source port range start.";
184 type inet:port-number;
185 description "TCP/UDP source port range end.";
188 type inet:port-number;
189 description "TCP/UDP destination port range start.";
192 type inet:port-number;
193 description "TCP/UDP destination port range end.";
197 grouping pcmm-qos-classifier {
198 container classifier {
200 type inet:ipv4-address;
201 description "Source IPv4 address (exact match)";
204 type inet:ipv4-address;
205 description "Destination IPv4 address (exact match)";
209 description "TOS/DSCP match";
213 description "TOS/DSCP mask";
217 description "IPv4 transport protocol";
220 type inet:port-number;
221 description "TCP/UDP source port (exact match).";
224 type inet:port-number;
225 description "TCP/UDP destination port (exact match).";
230 grouping pcmm-qos-ext-classifier {
231 container ext-classifier {
233 type inet:ipv4-address;
234 description "Source IPv4 address match";
237 type inet:ipv4-address;
238 description "Source IPv4 mask";
241 type inet:ipv4-address;
242 description "Destination IPv4 address match";
245 type inet:ipv4-address;
246 description "Destination IPv4 mask";
250 description "TOS/DSCP match";
254 description "TOS/DSCP mask";
258 description "IPv4 transport protocol";
260 uses tp-port-match-ranges;
264 grouping pcmm-qos-ipv6-classifier {
265 container ipv6-classifier {
267 type inet:ipv6-prefix;
268 description "Source IPv6 prefix match in <address/len> notation";
271 type inet:ipv6-prefix;
272 description "Destination IPv6 prefix match in <address/len> notation";
276 description "TC low range match";
280 description "TC high range match";
284 description "TC mask";
288 description "IPv6 Next Header";
292 range "0 .. 1048575";
294 description "IPv6 Flow Label (20 bits)";
296 uses tp-port-match-ranges;