blob: cad763fa8875b0ebc630a462f3c666fce187e7f9 [file] [log] [blame]
Scott Bakerfdbad762022-01-03 16:00:45 -08001// SPDX-FileCopyrightText: 2021 Open Networking Foundation
2//
Sean Condon160ec1d2022-02-08 12:58:25 +00003// SPDX-License-Identifier: Apache-2.0
Scott Bakerfdbad762022-01-03 16:00:45 -08004
Sean Condon24297da2022-01-27 09:50:34 +00005submodule onf-slice {
Sean Condon11d6f422022-01-14 13:02:03 +00006 belongs-to onf-enterprise { prefix ent; }
Scott Bakerfdbad762022-01-03 16:00:45 -08007
Scott Bakerfdbad762022-01-03 16:00:45 -08008 import onf-aether-types{ prefix at; }
Sean Condon11d6f422022-01-14 13:02:03 +00009
10 include onf-upf;
11 include onf-device-group;
12 include onf-application;
Sean Condon9f7966e2022-02-03 10:55:06 +000013 include onf-priority-traffic-rule;
Scott Bakerfdbad762022-01-03 16:00:45 -080014
15 organization "Open Networking Foundation.";
16 contact "Scott Baker";
17 description
Sean Condon24297da2022-01-27 09:50:34 +000018 "An Aether Slice is
Scott Bakerfdbad762022-01-03 16:00:45 -080019 used to connect devices with applications";
20
Sean Condon11d6f422022-01-14 13:02:03 +000021 revision "2022-01-14" {
22 description "Refactored as submodule";
23 reference "RFC 6020";
24 }
25
Scott Bakerfdbad762022-01-03 16:00:45 -080026 revision "2021-09-10" {
Sean Condon24297da2022-01-27 09:50:34 +000027 description "An Aether Slice";
Scott Bakerfdbad762022-01-03 16:00:45 -080028 reference "RFC 6087";
29 }
30
Sean Condon24297da2022-01-27 09:50:34 +000031 typedef slice-id {
Scott Baker40a79562022-02-16 15:04:50 -080032 type at:aether-identifier;
Sean Condon24297da2022-01-27 09:50:34 +000033 description "The typedef for slice-id";
Scott Bakerfdbad762022-01-03 16:00:45 -080034 }
35
Sean Condon24297da2022-01-27 09:50:34 +000036 grouping slice {
37 description "The slice grouping";
Scott Bakerfdbad762022-01-03 16:00:45 -080038
Sean Condon24297da2022-01-27 09:50:34 +000039 list slice {
40 key "slice-id";
Scott Bakerfdbad762022-01-03 16:00:45 -080041 description
Sean Condon24297da2022-01-27 09:50:34 +000042 "List of Slices";
Scott Bakerfdbad762022-01-03 16:00:45 -080043
Sean Condon24297da2022-01-27 09:50:34 +000044 leaf slice-id {
45 type slice-id;
46 description "ID for this slice.";
Scott Bakerfdbad762022-01-03 16:00:45 -080047 }
48
Sean Condon9f7966e2022-02-03 10:55:06 +000049 uses at:desc-display-name;
Scott Bakerfdbad762022-01-03 16:00:45 -080050
51 list device-group {
52 key "device-group";
53 leaf device-group {
54 type leafref {
Sean Condon9f7966e2022-02-03 10:55:06 +000055 path "../../../device-group/device-group-id";
Scott Bakerfdbad762022-01-03 16:00:45 -080056 }
57 description
58 "Link to device group";
59 }
60 leaf enable {
61 type boolean;
62 default true;
63 description
64 "Enable this device group";
65 }
66 description
67 "A list of device groups. Groups will only participate in
Sean Condon24297da2022-01-27 09:50:34 +000068 the Slice if the enable field is set to True";
Scott Bakerfdbad762022-01-03 16:00:45 -080069 }
70
71 leaf default-behavior {
72 type at:behavior;
73 mandatory true;
74 description
75 "Default behavior if no filter rules match";
76 }
77
78 list filter {
79 key "application";
80 leaf application {
81 type leafref {
Sean Condon9f7966e2022-02-03 10:55:06 +000082 path "../../../../application/application-id";
Scott Bakerfdbad762022-01-03 16:00:45 -080083 }
84 mandatory true;
85 description
86 "Link to application";
87 }
88 leaf priority {
89 type at:priority;
90 default 0;
91 description
92 "Priority of this application";
93 }
94 leaf allow {
95 type boolean;
96 default true;
97 description
98 "Allow or deny this application";
99 }
100 description
101 "A list of applications to allow and/or deny. Rules are executed in
102 priority order. The first rule to match will determine the fate
103 of the packet.";
104 }
105
106 leaf upf {
107 type leafref {
Sean Condon11d6f422022-01-14 13:02:03 +0000108 path "../../upf/upf-id";
Scott Bakerfdbad762022-01-03 16:00:45 -0800109 }
110 description
111 "Link to user plane that implements this vcf";
112 }
113
Scott Bakerfdbad762022-01-03 16:00:45 -0800114 // the following are populated from the template
115 leaf sst {
116 type at:sst;
117 mandatory true;
118 description "Slice/Service type. Immutable.";
119 }
120
121 leaf sd {
122 type at:sd;
123 mandatory true;
124 description "Slice differentiator. Immutable.";
125 }
126
Sean Condon24297da2022-01-27 09:50:34 +0000127 container mbr {
128 description "Per slice Maximum Bit Rate";
129 leaf uplink {
130 type at:bitrate;
131 units bps;
132 description "Per-Slice MBR uplink data rate in bps";
133 }
Scott Bakerfdbad762022-01-03 16:00:45 -0800134
Sean Condon24297da2022-01-27 09:50:34 +0000135 leaf downlink {
136 type at:bitrate;
137 units bps;
138 description "Per-Slice MBR downlink data rate in bps";
139 }
Scott Bakerfdbad762022-01-03 16:00:45 -0800140
Sean Condon24297da2022-01-27 09:50:34 +0000141 leaf uplink-burst-size {
142 type at:burst;
143 units bytes;
144 description "Per-Slice Uplink burst size";
145 }
Scott Bakerfdbad762022-01-03 16:00:45 -0800146
Sean Condon24297da2022-01-27 09:50:34 +0000147 leaf downlink-burst-size {
148 type at:burst;
149 units bytes;
150 description "Per-Slice Downlink burst size";
Scott Bakerfdbad762022-01-03 16:00:45 -0800151 }
152 }
153
154 // end of items populated from the template
Sean Condon9f7966e2022-02-03 10:55:06 +0000155 uses priority-traffic-rule;
156
Scott Bakerfdbad762022-01-03 16:00:45 -0800157 }
158 }
159}