Sync: md-sal augmentation re-model with broker. Traffic profile: Best Effort hooked up.
[packetcable.git] / packetcable-model / src / main / yang / packetcable-traffic-profile.yang
1 module packetcable-traffic-profile
2 {
3     namespace "urn:opendaylight:flow:traffic-profile";
4     prefix traffic;
5     
6     import flow-node-inventory {prefix fni; revision-date 2013-08-19; }
7     import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
8     import sal-flow {prefix sal-flow;revision-date "2013-08-19";}
9     import sal-group {prefix sal-group;revision-date "2013-09-18";}
10     import packet-processing {prefix sal-packet;revision-date "2013-07-09";}
11     import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";}
12     import opendaylight-group-statistics {prefix odl-group-stats;revision-date "2013-11-11";}
13
14     organization "OpenDaylight Project";
15     contact "TBD";
16     
17     description
18          "This module contains a collection of groupings and
19          data definition statements related to the configuration
20          of Traffic Profiles.";
21
22     revision "2014-08-08" {
23         description "Initial revision of packetcable traffic profile";
24     }        
25
26
27     typedef tp-reference {
28     type instance-identifier;
29     }
30
31
32     typedef float {
33        type binary {
34          length "0..4";
35        }
36     description
37     "32-bit IEEE floating point number" ;
38     }
39
40     typedef traffic-profile-type {
41         description
42             "
43         There are four different ways to express a traffic profile. The traffic profile can be expressed via a FlowSpec, a DOCSIS Service Class Name, DOCSIS-specific parameters or Upstream Drop. The four methods are distinguished via a different S-Type value in the Traffic Profile (S-Num = 7) object. S-Type of 1 indicates the object contains a traffic profile specified in RSVP FlowSpec format. S-Type of 2 indicates the object contains a traffic profile specified in DOCSIS Service Class Name format. S-Type of 3 - 8 indicates the object contains a traffic profile that is specified via DOCSIS-specific parameters. S-Type of 9 indicates the object contains a traffic profile specified in an Upstream Drop format.
44
45         All Traffic Profiles utilize 'replace' semantics, meaning that the envelopes present in this Traffic Profile replace all existing envelopes associated with the Gate and corresponding Service Flow. Thus, all traffic parameters associated with a given Gate MUST be included in every message that includes a Traffic Profile. The traffic profile format (RSVP FlowSpec, DOCSIS Service Class Name, DOCSIS-specific parameters, Upstream Drop) for a specific envelope MUST remain constant and unchanged throughout the life of the gate.
46
47         All Traffic Profiles share a common field known as the Envelope Field. This field is a bit field that signals the envelope types (i.e., Authorized, Reserved, and Committed) that are present in the object. A value of 1 in a given bit field indicates that the envelope type is present in the Traffic Profile.
48
49     • Bit 0: Authorized Envelope
50
51     • Bit 1: Reserved Envelope
52
53     • Bit 2: Committed Envelope
54
55         Thus a bit pattern of 001 (or 0x01) indicates the presence of only the Authorized Envelope, while a value of 111 (or 0x7) indicates the presence of all three envelopes. Only the following values are legal: 001, 011 and 111; the Envelope Field MUST be set to one of these three legal values. Further limitations on the value of the Envelope Field may be a function of the current state of the Gate. Refer to Section 6.2 for more information.
56
57         For the Traffic Profile formats that allow multiple sets of envelope parameters, the mapping of envelope parameter sets follows one of the following methods:
58
59         • If all of the envelope types that are indicated in the envelope field share a common set of envelope parameters, then the PDP SHOULD ensure that exactly one set of envelope parameters are present in the traffic profile. This allows for the most efficient transmission and processing of the Traffic Profile throughout the system.
60
61         • Otherwise, the PDP MUST ensure that exactly one set of envelope parameters is included for each of the envelope types that are indicated in the envelope field. The proper order of the envelope parameter sets is shown in the appropriate message diagram in Sections 6.4.2.1 and 6.4.2.3 thru 6.4.2.7.8.
62
63         While all Traffic Profiles end up providing QoS on the access network, it is important to note several subtle differences between the signaling mechanisms. As noted previously, the conversion of a FlowSpec (S-Type 1) to DOCSIS parameters by the CMTS is generally less efficient than specifying the DOCSIS parameters themselves. That said, specifying DOCSIS parameters explicitly (S-Types 3-7) is not a panacea either, the QoS MIB only logs QoS information about named Service Flows in its ServiceFlowLogTable. Thus, only flows created via S-Type 2 will have logged QoS information in this table. For some this may not be a major issue, but for debugging and just general operational tracking this subtlety should be taken into account by operators and Application Manager vendors evaluating the Traffic Profile signaling alternatives provided by this specification.
64     ";
65
66     type enumeration {
67         enum flowspec { value 0; }
68         enum docsis-service-class-name { value 1; }
69         enum docsis-specific-parameterization { value 2; }
70         enum upstream-drop { value 3; }
71
72         enum best-effort { value 4; }
73         enum unsolicited-grant-service { value 5; }
74         enum unsolicited-grant-service-with-activity-detection { value 6; }
75         enum non-real-time-polling-service { value 7; }
76         enum real-time-polling-service { value 8; }
77         enum downstream-service { value 9; }
78     }
79
80     }
81
82     grouping flowspec-envelope-attributes {
83     description "
84 The values r, b, p, m, M, R, and s are defined and described 
85
86 TSpec Parameters:
87 • Bucket Depth (b), bytes
88 • Bucket Rate (r), bytes/second
89 • Maximum Datagram Size (M), bytes
90 • Minimum Policed Unit (m), bytes
91 • Peak Rate (p), bytes/second RSpec Parameters:
92 • Reserved Rate (R), bytes/second
93 • Slack Term (S), microseconds
94 The parameter mapping, roughly approximated, involves the following associations for DOCSIS upstream BE (Best-Effort) and downstream Controlled Load Service Flows. The actual mapping procedure would involve normalizing these parameters to account for Layer 2 and Layer 3 header considerations.
95 • TSpec Bucket Depth (b) ~= DOCSIS Maximum Traffic Burst
96 • TSpec Maximum Datagram Size (M) ~= <not required by DOCSIS >
97 • TSpec Minimum Policed Unit (m) ~= DOCSIS Assumed Minimum Reserved Rate Packet Size
98 • TSpec Bucket Rate (r) ~= DOCSIS Minimum Reserved Rate
99 • TSpec Peak Rate (p) ~= DOCSIS Maximum Sustained Rate and, for DOCSIS 3.0 only, DOCSIS Downstream Peak Traffic Rate
100 For downstream Guaranteed service flows, the RSpec parameters are added to provide latency and reservation guarantees.
101 • TSpec Bucket Depth (b) ~= DOCSIS Maximum Traffic Burst
102 • TSpec Maximum Datagram Size (M) ~= <not required by DOCSIS >
103 • TSpec Minimum Policed Unit (m) ~= DOCSIS Assumed Minimum Reserved Rate Packet Size
104 • TSpec Bucket Rate (r) ~= DOCSIS Minimum Reserved Rate and DOCSIS Maximum Sustained Rate
105 • TSpec Peak Rate (p) ~= For DOCSIS 3.0 only, DOCSIS Downstream Peak Traffic Rate
106 • RSpec Reserved Rate (R) ~= <not required by DOCSIS>
107 • RSpec Slack Term ~= DOCSIS Downstream Latency
108 The parameter mapping, roughly approximated, involves the following associations for DOCSIS UGS Service Flows.
109 • TSpec Bucket Depth (b) = TSpec Maximum Datagram Size (M) = TSpec Minimum Policed Unit (m) ~= DOCSIS Unsolicited Grant Size
110 • TSpec Bucket Rate (r) = TSpec Peak Rate (p) = RSpec Reserved Rate (R) ~= used to calculate Nominal Grant Interval
111 • RSpec Slack Term ~= DOCSIS Tolerated Grant Jitter
112 Similarly, the following associations apply for DOCSIS Real-Time Polling Service Flows.
113 • TSpec Bucket Depth (b) ~= DOCSIS Maximum Traffic Burst
114 • TSpec Maximum Datagram Size (M) ~= <not required by DOCSIS >
115 • TSpec Bucket Rate (r) ~= DOCSIS Maximum Sustained Rate and DOCSIS Minimum Reserved Traffic Rate
116 • RSpec Reserved Rate (R) ~= used to calculate the Polling Interval
117 • RSpec Slack Term ~= Tolerated Polling Jitter
118
119 Token Bucket Rate [r] (encoded as IEEE floating point) 
120 0x461C4000 (10,000 Bps) 
121 Token Bucket Size [b] (encoded as IEEE floating point) 
122 0x43480000 (200 bytes) 
123 Peak Data Rate [p] (encoded as IEEE floating point) 
124 0x461C4000 (10,000 Bps) 
125 Minimum Policed Unit [m] 
126 0x000000C8 (200 bytes) 
127 Maximum Packet Size [M] 
128 0x000000C8 (200 bytes) 
129 Rate [R] (encoded as IEEE floating point) 
130 0x461C4000 (10,000 Bps) 
131 Slack Term [S] 
132 0x00000320 (800 μs) 
133     ";
134
135
136     leaf token-bucket-rate {
137         type float;
138         description "[r] (IEEE floating point number 
139         
140         default 10000.0;
141         ";
142     }
143     leaf token-bucket-size {
144         type float;
145         description "[p] IEEE floating point number";
146         default 200;
147     }
148     leaf peak-data-rate {
149         type float;
150         description "[m] IEEE floating point number
151
152         default 10000.0;
153
154         ";
155     }
156     leaf minimum-policed-unit {
157         type uint32;
158         description "[m] (integer)";
159         default 200;
160     }
161
162     leaf maximum-packet-size {
163         type uint32;
164         description "[M] (integer)";
165         default 200;
166     }
167     leaf rate {
168         type uint32;
169         description "[R] (IEEE floating point number)";
170         default 10000;
171     }
172     leaf slack-term {
173         type uint32;
174         description "[S] (integer)";
175         default 800;
176     }
177     }
178
179     grouping default-envelope-attributes {
180     leaf traffic-priority {
181         type uint8;
182         description 
183             "   
184             Traffic Priority is a 1-byte unsigned integer field specifying the relative priority assigned to the Service Flow in comparison with other flows. This field is fully defined in section C.2.2.5.1 of [1]. A default Traffic Priority of 0 SHOULD be used if a specific Traffic Priority value is not required.
185         ";
186         default 0;
187     }
188     leaf reserved0 {
189         type uint8;
190         default 0;
191     }
192     leaf reserved1 {
193         type uint16;
194         default 0;
195     }
196     leaf request-transmission-policy {
197         type uint32;
198         description "
199             Request/Transmission Policy is a 4-byte bit field as defined in section C.2.2.6.3 of [1]. A default Request/Transmission policy of 0 SHOULD be used if a specific Request/Transmission Policy value is not required.
200         ";
201         default 0;
202     }
203     leaf maximum-sustained-traffic-rate {
204         type uint32;
205         description "
206             Maximum Sustained Traffic Rate is a 4-byte unsigned integer field specifying the rate parameter, in bits/sec, for [1]. A value of 0 indicates that no explicitly-enforced Maximum Sustained Rate is requested. A default Maximum Sustained Traffic Rate of 0 SHOULD be used if a specific Maximum Sustained Traffic Rate is not required.
207
208         ";
209         default 0;
210     }
211     leaf maximum-traffic-burst {
212         type uint32;
213         description "
214             Maximum Traffic Burst is a 4-byte unsigned integer field specifying the token bucket size, in bytes, for a token- bucket-based rate limit for this Service Flow. This field is fully defined in section C.2.2.5.3 of [1]. A default Maximum Traffic Burst of 3044 bytes SHOULD be used if a specific Maximum Traffic Burst is not required. The value of this parameter has no effect unless a non-zero value has been provided for the Maximum Sustained Traffic Rate parameter.
215         ";
216         default 3044;
217     }
218     leaf minimum-reserved-traffic-rate {
219         type uint16;
220         description 
221             "
222             Minimum Reserved Traffic Rate is a 4-byte unsigned integer field specifying the minimum rate, in bits/sec, reserved for this Service Flow. This field is fully defined in section C.2.2.5.4 of [1]. A default Minimum Reserved Traffic Rate of 0 SHOULD be used if a specific Minimum Reserved Traffic Rate is not required.        
223
224 ";
225         default 0;
226     }
227     leaf assumed-minimum-reserved-traffic-rate-packet-size {
228         type uint16;
229         description 
230         "
231             Assumed Minimum Reserved Traffic Rate Packet Size is a 2-byte unsigned integer field specifying an assumed minimum packet size, in bytes, for which the Minimum Reserved Traffic Rate will be provided for this flow. This field is fully defined in section C.2.2.5.5 of [1]. A default Assumed Minimum Reserved Traffic Rate Packet Size of 0 SHOULD be used if a specific Assumed Minimum Reserved Traffic Rate Packet size is not required. Upon receipt of a value of 0 the CMTS MUST utilize its implementation-specific default size for this parameter, not 0 bytes.        
232     
233 ";
234         default 0;
235     }
236     leaf maximum-concatenated-burst {
237         type uint16;
238         description 
239         "
240             Maximum Concatenated Burst is a 2-byte unsigned integer specifying the maximum concatenated burst (in bytes) which a Service Flow is allowed. This field is fully defined in section C.2.2.6.1 of [1]. A value of 0 means there is no limit. A default Maximum Concatenated Burst of 1522 bytes SHOULD be used if a specific Maximum Concatenated Burst is not required.
241 ";
242         default 1522;
243     }
244
245     leaf upstream-peak-traffic-rate {
246         type uint32;
247         description 
248         "
249 Upstream Peak Traffic Rate is a 4-byte unsigned integer specifying the Peak traffic rate (in bits per second) which a 
250 Service Flow is allowed. This field is fully defined in section C.2.2.5.10.1 of [1]. 
251         ";
252         default 0;
253     }
254
255     leaf required-attribute-mask {
256         type uint32;
257         description 
258         "
259             Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
260
261 ";
262         default 0;
263     }
264     leaf forbidden-attribute-mask {
265         type uint32;
266         description 
267         "
268             Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
269 ";
270         default 0;
271     }
272     leaf attribute-aggregation-rule-mask {
273         type uint32;
274         description 
275         "
276             Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
277 ";
278         default 0;
279     }
280     leaf minimum-buffer {
281         type uint32;
282         description 
283         "
284 Minimum Buffer is a 4-byte unsigned integer parameter that defines a lower limit for the size of the buffer that is to be provided for a service flow. This field is fully defined in section C.2.2.5.11.3 of [1]. If this parameter is omitted, the Minimum Buffer defaults to a value of 0, which indicates that there is no lower limit.
285         ";
286         default 0;
287     }
288     leaf target-buffer {
289         type uint32;
290         description 
291         "
292 Target Buffer is a 4-byte unsigned integer parameter that defines a desired value for the size of the buffer that is to be provided for a service flow. This field is fully defined in section C.2.2.5.11.4 of [1]. If this parameter is omitted or set to a value of 0, the device selects any buffer size within the range of the Minimum and Maximum Buffers, via a vendor-specific algorithm.
293
294         ";
295         default 0;
296     }
297     leaf maximum-buffer {
298         type uint32;
299         description 
300         "
301 Maximum Buffer is a 4-byte unsigned integer parameter that defines an upper limit for the size of the buffer that is to be provided for a service flow. This field is fully defined in section C.2.2.5.11.5 of [1]. If this parameter is omitted, the Maximum Buffer defaults to a value of no limit.
302         ";
303         default 0;
304     }
305     }
306
307
308     grouping ugs-envelope-attributes {
309     leaf request-transmission-policy {
310         type uint32;
311         description "
312         Request/Transmission Policy is a 4-byte bit field as defined in section C.2.2.6.3 of [1]. Note: for this Service Flow Scheduling Type there is no default value for Request/Transmission Policy and all values (including 0) have meaning in DOCSIS. Bit 9 in the Request/Transmission Policy enables/disables the use of segment headers. A segment header is 8 bytes in length. It MUST be accounted for in the Unsolicited Grant Size parameter when segment header usage is enabled. The CMTS MUST ignore Bit 9 in the Request/Transmission Policy if the cable modem associated with the service flow is operating in DOCSIS 1.1 or 2.0 mode. For more information on segment headers and their use please see section 6.3 of [1].
313         ";
314         default 0;
315     }
316     leaf unsolicited-grant-size {
317         type uint16;
318         description "
319         Unsolicited Grant Size is a 2-byte unsigned integer field specifying the grant size (in bytes) as defined in section C.2.2.6.6 of [1]. There is no default value of Unsolicited Grant Size.
320         ";
321         default 0;
322     }
323     leaf grants-interval {
324         type uint8;
325         description "
326     Grants per Interval is a 1-byte unsigned integer field specifying the number of grants per Nominal Grant Interval as defined in section C.2.2.6.9 of [1]. There is no default value of Grants per Interval, but a value of 1 is recommended.    
327         ";
328         default 1;
329     }
330     leaf reserved {
331         type uint8;
332         description "
333         ";
334         default 0;
335     }
336     leaf nominal-grant-interval {
337         type uint32;
338         description "
339             Nominal Grant Interval is a 4-byte unsigned integer field specifying the nominal time between successive data grant opportunities for this Service Flow (in units of microseconds) as defined in section C.2.2.6.7 of [1].
340         
341         ";
342         default 0;
343     }
344     leaf tolerated-grant-jitter {
345         type uint32;
346         description "
347 Tolerated Grant Jitter is a 4-byte unsigned integer field specifying the maximum amount of time that transmission opportunities may be delayed from the nominal periodic schedule (in units of microseconds) as defined in section C.2.2.6.8 of [1]. The minimum allowed value is 800. If the CMTS receives a Gate-Set message with Tolerated Grant Jitter less than 800, the CMTS MUST reply with a Gate-Set-Err message with a PacketCable Error-Code of 'Invalid Field Value in Object'. There is no default value of Nominal Grant Interval. There is no default value for Tolerated Grant Jitter.
348         ";
349         default 0;
350     }
351     leaf required-attribute-mask {
352         type uint32;
353         description "
354 Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section, a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
355         ";
356         default 0;
357     }
358     leaf forbidden-attribute-mask {
359         type uint32;
360         description "
361 Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section, a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
362         ";
363         default 0;
364     }
365     leaf attribute-aggregation-rule-mask {
366         type uint32;
367         description "
368 Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section, a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
369         ";
370         default 0;
371     }
372     
373     }
374
375
376     grouping us-envelope-attributes {
377     leaf us-traffic-priority {
378         type uint8;
379         description "
380 Traffic Priority is a 1-byte unsigned integer field specifying the relative priority assigned to the Service Flow in comparison with other flows. This field is fully defined in section C.2.2.5.1 of [1]. A default Traffic Priority of 0 SHOULD be used if a specific Traffic Priority value is not required.
381
382         ";
383         default 0;
384     }
385     leaf downstream-resequencing {
386         type uint32;
387         description "
388 DOCSIS 3.0 service flows. This field is fully defined in section C.2.2.7.3 of [1]. The CMTS MUST honor the requested Downstream Resequencing operation for all Gate requests. It is possible that the CMTS may receive conflicting downstream resequencing direction by the AM for Multicast Gate requests (e.g., multiple Multicast Gate requests for the same Multicast destination but with different downstream resequencing operation). In such a case the CMTS MUST either honor the Multicast Gate request or reject it with error code 35 (Multicast Gate Downstream Resequencing mismatch). For a Multicast Gate, the CMTS MUST ignore the Downstream Resequencing object if the cable modem associated with the service flow is operating in MDF disabled mode. The CMTS MUST ignore the Downstream Resequencing object if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. DOCSIS 3.0 introduced the concept of downstream channel bonding where the CMTS can simultaneously transmit on multiple channels. Downstream channels may not all have the same amount of latency such that two packets scheduled simultaneously by the CMTS may not arrive simultaneously at the cable modem. The CMTS can insert sequence numbers in each DOCSIS packet header to allow the cable modem to re- order out of sequence packets. The cable modem will hold higher numbered packets while waiting for lower numbered packets to arrive. The maximum wait time is 18ms. Applications that can tolerate lost packets or applications that cannot tolerate packet latency of up to 18ms can disable the use of sequence numbers by setting the Downstream Resequencing value to 1.
389         ";
390         default 0;
391     }
392     leaf reserved0{
393         type uint32;
394         description "
395
396         ";
397         default 0;
398     }
399     leaf maximum-sustained-traffic-rate {
400         type uint32;
401         description "
402 Maximum Sustained Traffic Rate is a 4-byte unsigned integer field specifying the rate parameter, in bits/sec, for a token-bucket-based rate limit for this Service Flow. This field is fully defined in section C.2.2.5.2 of [1]. A value of 0 indicates that no explicitly-enforced Maximum Sustained Rate is requested. A default Maximum Sustained Traffic Rate of 0 SHOULD be used if a specific Maximum Sustained Traffic Rate is not required.
403
404         ";
405         default 0;
406     }
407     leaf maximum-traffic-burst {
408         type uint32;
409         description "
410 Maximum Traffic Burst is a 4-byte unsigned integer field specifying the token bucket size, in bytes, for a token- bucket-based rate limit for this Service Flow. This field is fully defined in section C.2.2.5.3 of [1]. A default Maximum Traffic Burst of 3044 bytes SHOULD be used if a specific Maximum Traffic Burst is not required. The value of this parameter has no effect unless a non-zero value has been provided for the Maximum Sustained Traffic Rate parameter.
411
412         ";
413         default 3044;
414     }
415     leaf minimum-reserved-traffic-rate {
416         type uint32;
417         description "
418 Minimum Reserved Traffic Rate is a 4-byte unsigned integer field specifying the minimum rate, in bits/sec, reserved for this Service Flow. This field is fully defined in section C.2.2.5.4 of [1]. A default Minimum Reserved Traffic Rate of 0 SHOULD be used if a specific Minimum Reserved Traffic Rate is not required.
419
420         ";
421         default 0;
422     }
423     leaf assumed-minimum-reserved-traffic-rate-packet-size {
424         type uint32;
425         description "
426 Assumed Minimum Reserved Traffic Rate Packet Size is a 2-byte unsigned integer field specifying an assumed minimum packet size, in bytes, for which the Minimum Reserved Traffic Rate will be provided for this flow. This field is fully defined in section C.2.2.5.5 of [1]. A default Assumed Minimum Reserved Traffic Rate Packet Size of 0 SHOULD be used if a specific Assumed Minimum Reserved Traffic Rate Packet size is not required. Upon receipt of a value of 0 the CMTS MUST utilize its implementation-specific default size for this parameter, not 0 bytes.
427
428
429         ";
430         default 0;
431     }
432     leaf reserved1{
433         type uint32;
434         description "
435
436         ";
437         default 0;
438     }
439     leaf maximum-downstream-latency {
440         type uint32;
441         description "
442 Maximum Downstream Latency is a 4-byte unsigned integer field specifying the maximum latency between reception of a packet on the CMTS's NSI and the forwarding of the packet on its RF interface as defined in section C.2.2.7.1 of [1]. A default Maximum Downstream Latency of 0 SHOULD be used if a specific Maximum Downstream Latency is not required. Upon receipt of a value of 0, the CMTS MUST NOT include this parameter in its DOCSIS signaling for this Service Flow.
443
444
445         ";
446         default 0;
447     }
448     leaf downstream-peak-traffic-rate {
449         type uint32;
450         description "
451 Downstream Peak Traffic Rate is a 4-byte unsigned integer field, specifying the rate parameter P of a token-bucket- based peak rate limiter for packets of a downstream service flow. Configuring this peak rate parameter permits an operator to define a Maximum Burst value for the Downstream Maximum Sustained Rate much larger than a maximum packet size, but still limit the burst of packets consecutively transmitted for a service flow. The Downstream Peak Traffic Rate parameter is fully defined in section C.2.2.7.2 of [1]. The CMTS MUST NOT include this parameter in its DOCSIS signaling for this service flow if a value of 0 is supplied, if the cable modem for which the Gate applies is not provisioned in DOCSIS 3.0 mode, or if the CMTS does not support the enforcement of this value.
452
453         ";
454         default 0;
455     }
456     leaf required-attribute-mask {
457         type uint32;
458         description "
459 Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
460
461         ";
462         default 0;
463     }
464     leaf forbidden-attribute-mask {
465         type uint32;
466         description "
467 Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
468
469         ";
470         default 0;
471     }
472     leaf attribute-aggregation-rule-mask {
473         type uint32;
474         description "
475 Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
476
477         ";
478         default 0;
479     }
480     }
481
482
483     grouping traffic-profile-flowspec-attributes {
484     container f-authorized-envelope {
485         uses flowspec-envelope-attributes;
486                 description "mandatory";
487     }
488     container f-reserved-envelope {
489         uses flowspec-envelope-attributes;
490                 description "optional";
491     }
492     container f-committed-envelope {
493         uses flowspec-envelope-attributes;
494                 description "optional";
495     }
496     }
497
498
499     grouping traffic-profile-docsis-service-class-name-attributes {
500     leaf service-class-name {
501         type string;
502                 description 
503         "
504         xxx - length 2 to 128?
505
506         The Service Class Name is MUST be 2-16 bytes of null-terminated ASCII string. 
507         (Refer to section C.2.2.3.4 of [1]).  This name MUST be padded with null bytes 
508         to align on a 4-byte boundary.
509         ";
510     }
511     }
512
513
514     grouping traffic-profile-best-effort-attributes {
515     container be-authorized-envelope {
516         uses default-envelope-attributes;
517                 description "mandatory";
518     }
519     container bereserved-envelope {
520         uses default-envelope-attributes;
521                 description "optional";
522     }
523     container be-committed-envelope {
524         uses default-envelope-attributes;
525                 description "optional";
526     }
527     }
528
529     grouping traffic-profile-non-real-time-polling-service-attributes {
530     container nrtp-authorized-envelope {
531         uses default-envelope-attributes;
532                 description "mandatory";
533     }
534     container nrtp-reserved-envelope {
535         uses default-envelope-attributes;
536                 description "optional";
537     }
538     container nrtp-committed-envelope {
539         uses default-envelope-attributes;
540                 description "optional";
541     }
542     }
543
544
545     grouping traffic-profile-real-time-polling-service-attributes {
546     container rtp-authorized-envelope {
547         uses default-envelope-attributes;
548                 description "mandatory";
549     }
550     container rtp-reserved-envelope {
551         uses default-envelope-attributes;
552                 description "optional";
553     }
554     container rtp-committed-envelope {
555         uses default-envelope-attributes;
556                 description "optional";
557     }
558     }
559
560     grouping traffic-profile-unsolicited-grant-service-attributes {
561     container ugs-authorized-envelope {
562         uses ugs-envelope-attributes;
563                 description "mandatory";
564     }
565     container ugs-reserved-envelope {
566         uses ugs-envelope-attributes;
567                 description "optional";
568     }
569     container ugs-committed-envelope {
570         uses ugs-envelope-attributes;
571                 description "optional";
572     }
573     }
574
575     grouping traffic-profile-unsolicited-grant-service-with-activity-detection-attributes {
576     container usga-authorized-envelope {
577         uses ugs-envelope-attributes;
578                 description "mandatory";
579     }
580     container usga-reserved-envelope {
581         uses ugs-envelope-attributes;
582                 description "optional";
583     }
584     container usga-committed-envelope {
585         uses ugs-envelope-attributes;
586                 description "optional";
587     }
588     }
589
590
591     grouping traffic-profile-downstream-service-attributes {
592     container ds-authorized-envelope {
593         uses us-envelope-attributes;
594                 description "mandatory";
595     }
596     container ds-reserved-envelope {
597         uses us-envelope-attributes;
598                 description "optional";
599     }
600     container ds-committed-envelope {
601         uses us-envelope-attributes;
602                 description "optional";
603     }
604     }
605
606
607     grouping traffic-profile-upstream-drop-attributes {
608     }
609
610     grouping traffic-profile-docsis-specific-parameterization-attributes {
611     }
612
613
614     
615     grouping traffic-profile-grouping-attributes {
616         leaf tp-type {
617                 type traffic-profile-type;
618                 default  best-effort;
619                 description "This attribute contains the type of upstream flow scheduling type.";
620         }
621     }
622
623 //  ACTION augmentations
624
625     augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
626         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
627         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
628         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
629         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
630         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
631         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
632         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
633         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
634         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
635         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
636     }
637
638     augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
639         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
640         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
641         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
642         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
643         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
644         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
645         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
646         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
647         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
648         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
649     }
650     augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
651         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
652         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
653         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
654         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
655         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
656         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
657         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
658         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
659         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
660         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
661     }
662     augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
663         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
664         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
665         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
666         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
667         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
668         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
669         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
670         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
671         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
672         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
673     }
674     augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
675         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
676         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
677         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
678         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
679         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
680         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
681         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
682         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
683         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
684         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
685     }
686
687     augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
688         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
689         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
690         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
691         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
692         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
693         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
694         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
695         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
696         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
697         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
698     }
699
700     augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
701         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
702         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
703         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
704         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
705         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
706         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
707         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
708         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
709         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
710         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
711     }
712     augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
713         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
714         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
715         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
716         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
717         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
718         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
719         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
720         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
721         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
722         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
723     }
724     augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
725         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
726         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
727         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
728         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
729         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
730         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
731         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
732         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
733         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
734         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
735     }
736     augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
737         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
738         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
739         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
740         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
741         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
742         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
743         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
744         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
745         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
746         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
747     }
748     augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
749         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
750         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
751         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
752         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
753         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
754         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
755         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
756         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
757         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
758         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
759     }
760     augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
761         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
762         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
763         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
764         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
765         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
766         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
767         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
768         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
769         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
770         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
771     }
772     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
773         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
774         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
775         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
776         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
777         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
778         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
779         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
780         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
781         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
782         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
783     }
784     augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
785         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
786         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
787         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
788         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
789         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
790         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
791         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
792         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
793         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
794         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
795     }
796     augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
797         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
798         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
799         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
800         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
801         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
802         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
803         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
804         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
805         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
806         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
807     }
808     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
809         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
810         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
811         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
812         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
813         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
814         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
815         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
816         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
817         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
818         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
819     }
820     augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
821         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
822         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
823         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
824         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
825         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
826         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
827         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
828         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
829         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
830         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
831     }
832     augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
833         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
834         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
835         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
836         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
837         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
838         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
839         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
840         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
841         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
842         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
843     }
844     augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
845         case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
846         case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
847         case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
848         case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
849         case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
850         case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
851         case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
852         case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
853         case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
854         case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
855     }
856
857 //    grouping taffic-profile-default-singleton-grouping {
858 //        grouping flowspec { uses traffic-profile-flowspec; }
859 //        grouping docsis-service-class-name { uses traffic-profile-docsis-service-class-name; }
860 //        grouping docsis-specific-parameterization { uses traffic-profile-docsis-specific-parameterization; }
861 //        grouping upstream-drop { uses traffic-profile-upstream-drop; }
862 //        grouping best-effort { uses traffic-profile-best-effort; }
863 //        grouping unsolicited-grant-service { uses traffic-profile-unsolicited-grant-service; }
864 //        grouping unsolicited-grant-service-with-activity-detection { uses traffic-profile-unsolicited-grant-service-with-activity-detection; }
865 //        grouping non-real-time-polling-service { uses traffic-profile-non-real-time-polling-service; }
866 //        grouping real-time-polling-service { uses traffic-profile-real-time-polling-service; }
867 //        grouping downstream-service { uses traffic-profile-downstream-service; }
868 //    }
869 }