blob: 85e2917836a4cd4976ff3ff335c2af0679deb415 [file] [log] [blame]
jdelacruz27797532018-09-18 19:16:16 +02001//INFORMATION
2//organization "CTTC";
3//contact "Pol Alemany, Ricard Vilalta, Juan Luis de la Cruz";
4//description "Network Slice components definition";
5
6// MODULE STRUCTURE
7module nst {
8 //header information
9 yang-version 1;
10 namespace "urn:ietf:params:xml:ns:yang:nfvo:nst";
11 prefix "nst";
12
13 import nsd-base{
14 prefix "nsd-base";
15 }
16
17 import nsd {
18 prefix "nsd";
19 }
20
21 import instantiation-parameters {
22 prefix "instantiation-parameters";
23 }
24
25 import ietf-inet-types {
26 prefix "inet";
27 }
28
29 //revision history
30 revision 2018-08-20 {
31 description "Initial version";
32 }
33
34 //typedef definitions
35 typedef connection-points {
36 description "";
37 type string;
38 }
39
40 typedef network-slice-type {
41 type enumeration {
42 enum eMBB {
43 description "enhanced Mobile Broadband slice";
44 }
45 enum URLLC {
46 description "Ultra Reliable Low Latency Communications slice";
47 }
48 enum mMTC {
49 description "massive Machine Type Communications slice";
50 }
51 }
52 }
53
54 typedef resource-type {
55 type enumeration {
56 enum delay-critical-GBR {
57 description "delay critical guaranted bit rate";
58 }
59 enum GBR {
60 description "guaranted bit rate";
61 }
62 enum non-GBR {
63 description "NON guaranted bit rate";
64 }
65 }
66 }
67
68 grouping nsvld {
69 description "List of NetSlice Subnet Virtual Link Descriptors.";
70
71 uses nsd-base:vld-common;
72
73 list nsd-connection-point-ref {
74 description
75 "A list of references to connection points.";
76 key "nsd-ref nsd-connection-point-ref";
77
78 leaf nsd-ref {
79 description "Reference to nsd";
80 type leafref {
81 path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
82 }
83 }
84
85 leaf nsd-connection-point-ref {
86 description "A reference to a connection point name";
87 type leafref {
88 path "/nsd:nsd-catalog/nsd:nsd/nsd:connection-point/nsd:name";
89 }
90 }
91
92 leaf ip-address {
93 description "IP address of the connection point";
94 type inet:ip-address;
95 }
96
97 }
98 } // nsvld
99
100 grouping snssai {
101 description "";
102 leaf slice-service-type {
103 description "Network slice service type ";
104 type network-slice-type;
105 mandatory true;
106 }
107 leaf slice-differentiator {
108 description "Network slice differentiator";
109 type string;
110 }
111 } // snssai
112
113 grouping five-qi {
114 leaf id{
115 description "Quality of service identifier";
116 type uint16;
117 mandatory true;
118 }
119 leaf resource-type {
120 description "Quality of service resource type";
121 type resource-type;
122 }
123 leaf priority-level {
124 description "Priority level of the service";
125 type uint16;
126 }
127 leaf packet-delay-budget {
128 description "Packet delay budget in miliseconds (ms)";
129 type uint16;
130 }
131 leaf packet-error-rate {
132 description "Packet error rate (PER) given in powers of ten";
133 type uint16;
134 }
135 leaf default-max-data-burst {
136 description "Maximum data burst given in bytes (B)";
137 type uint16;
138 }
139 }
140
141 grouping netslice-subnet {
142 leaf id {
garciadeblasff4b9262018-10-19 14:31:56 +0200143 description "Identifier or name for the netslice-subnet in NST scope.";
jdelacruz27797532018-09-18 19:16:16 +0200144 mandatory true;
145 type string {
146 length 1..63;
147 }
148 }
garciadeblasff4b9262018-10-19 14:31:56 +0200149 leaf description {
150 description "Description of the NSD.";
jdelacruz27797532018-09-18 19:16:16 +0200151 type string;
152 }
153 leaf is-shared-nss {
154 description "NSS is shared between NS";
jdelacruz27797532018-09-18 19:16:16 +0200155 type boolean;
garciadeblasff4b9262018-10-19 14:31:56 +0200156 default false;
jdelacruz27797532018-09-18 19:16:16 +0200157 }
158 leaf nsd-ref {
159 description "Reference to catalog NSD";
160 mandatory true;
161 type leafref{
162 path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
163 }
164 }
165 container instantiation-parameters {
garciadeblasff4b9262018-10-19 14:31:56 +0200166 uses instantiation-parameters:ns_params;
jdelacruz27797532018-09-18 19:16:16 +0200167 }
168
169 }
170
171 grouping slice-connection-points {
172 description "List for external connection points. Each NS has one or more external connection
173 points. As the name implies that external connection points are used for connecting
174 the NS to other NS or to external networks. Each NS exposes these connection points
175 to the orchestrator. The orchestrator can construct network service chains by
176 connecting the connection points between different NS.";
177
178 uses nsd-base:nsd-connection-point-common;
179
180 choice connection {
181 description "Logical connection of the CP to a NSVLD or to a NSD CP";
182 case netslice-vld-ref {
183 leaf netslice-vld-id-ref {
184 description "ID reference to a NSVLD in the NS";
185 type leafref {
186 path "../../netslice-vld/id";
187 }
188
189 }
190 }
191 case nsd-connection-point-ref {
192 leaf nsd-id-ref {
193 description "A reference to a nsd.";
194 type leafref {
195 path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
196 }
197 }
198 leaf nsd-connection-point-ref {
199 description "";
200 type leafref {
201 path "/nsd:nsd-catalog/nsd:nsd/nsd:connection-point/nsd:name";
202 }
203 }
204 }
205 }
206 }
207
208 grouping rsp {
209
210 uses nsd-base:rsp-common;
211
212 list nsd-connection-point-ref {
213 description
214 "A list of references to connection points.";
215 key "nsd-ref";
216
217 leaf nsd-ref {
218 description "Reference to member-vnf within constituent-vnfds";
219 type leafref {
220 path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
221 }
222 }
223 leaf order {
224 type uint8;
225 description
226 "A number that denotes the order of a NSD in a chain";
227 }
228 leaf nsd-connection-point-ref {
229 type leafref {
230 path "/nsd:nsd-catalog/nsd:nsd/nsd:connection-point/nsd:name";
231 }
232 }
233 }
234 }
235
236 grouping classifier {
237 uses nsd-base:classifier-common;
238
239 leaf nsd-ref {
240 type leafref {
241 path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
242 }
243 }
244
245 leaf nsd-connection-point-ref {
246
247 type leafref {
248 path "/nsd:nsd-catalog/nsd:nsd/nsd:connection-point/nsd:name";
249 }
250 }
251 }
252
253 grouping netslicefgd {
254
255 uses nsd-base:fgd-common;
256
257 list rsp {
258 description
259 "List of Rendered Service Paths (RSP).";
260 key "id";
261 uses rsp;
262 }
263
264 list classifier {
265 description
266 "List of classifier rules.";
267 key "id";
268 uses classifier;
269 }
270 }
271 grouping network-slice{
272 leaf id {
273 mandatory true;
274 type string;
275 }
276
277 leaf name {
278 type string;
garciadeblasff4b9262018-10-19 14:31:56 +0200279 mandatory true;
jdelacruz27797532018-09-18 19:16:16 +0200280 }
281
282 container SNSSAI-identifier {
283 uses snssai;
284 }
285 container quality-of-service {
286 uses five-qi;
287 }
288 list netslice-subnet {//list with multiple network service elements
289 key "id";
290 uses netslice-subnet;
291 }
292 list netslice-connection-point {
293 key "name";
294 uses slice-connection-points;
295 }
296 list netslice-vld {
297 key "id";
298 uses nsvld;
299 }
garciadeblasff4b9262018-10-19 14:31:56 +0200300 list netslicefgd {
jdelacruz27797532018-09-18 19:16:16 +0200301 key "id";
302 uses netslicefgd;
303 }
304 }
305
306 //containers definitions
307 list nst {
308 key "id";
309 uses network-slice;
310 }
311}