forked from tsaad-dev/te
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathietf-mpls.yang
351 lines (304 loc) · 8.24 KB
/
ietf-mpls.yang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
module ietf-mpls {
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls";
prefix "mpls";
import ietf-routing {
prefix "rt";
}
import ietf-interfaces {
prefix "if";
}
import ietf-yang-types {
prefix "yang";
}
import ietf-inet-types {
prefix inet;
}
organization "IETF MPLS Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/mpls/>
WG List: <mailto:[email protected]>
WG Chair: Loa Andersson
<mailto:[email protected]>
WG Chair: Ross Callon
<mailto:[email protected]>
WG Chair: George Swallow
<mailto:[email protected]>
Editor: Tarek Saad
<mailto:[email protected]>
Editor: Kamran Raza
<mailto:[email protected]>
Editor: Rakesh Gandhi
<mailto:[email protected]>
Editor: Xufeng Liu
<mailto: [email protected]>
Editor: Vishnu Pavan Beeram
<mailto:[email protected]>
Editor: Himanshu Shah
<mailto:[email protected]>
Editor: Igor Bryskin
<mailto: [email protected]>
Editor: Xia Chen
<mailto:[email protected]>
Editor: Raqib Jones
<mailto:[email protected]>
Editor: Bin Wen
<mailto:[email protected]>";
description
"This YANG module defines the essential components for the
management of the MPLS subsystem.";
revision "2016-07-05" {
description
"Latest revision:
- Addressed MPLS-RT review comments";
reference "RFC 3031: A YANG Data Model for base MPLS";
}
typedef mpls-label {
type uint32 {
range "0..1048575";
}
description
"The MPLS label range";
}
typedef nhlfe-role {
type enumeration {
enum PRIMARY {
description
"Next-hop acts as primary traffic carrying";
}
enum BACKUP {
description
"Next-hop acts as backup";
}
enum PRIMARY_AND_BACKUP {
description
"Next-hop acts as primary and backup simultaneously";
}
}
description "The next-hop role";
}
typedef label-operation {
type enumeration {
enum impose-and-forward {
description
"Operation impose outgoing label(s) and forward to
next-hop";
}
enum pop-and-forward {
description
"Operation pop incoming label and forward to next-hop";
}
enum pop-impose-and-forward {
description
"Operation pop incoming label, impose one or more
outgoing label(s) and forward to next-hop";
}
enum swap-and-forward {
description
"Operation swap incoming label, with outgoing label and
forward to next-hop";
}
enum pop-and-lookup {
description
"Operation pop incoming label and perform a lookup";
}
}
description
"The MPLS operation to be executed on the incoming packet";
}
grouping nhlfe-contents {
description
"MPLS NHLFE contents";
leaf index {
type string;
description
"A user-specified identifier utilised to uniquely
reference the next-hop entry in the next-hop list.
The value of this index has no semantic meaning
other than for referencing the entry.";
}
leaf backup-index {
type string;
description
"A user-specified identifier utilised to uniquely
reference the backup next-hop entry in the NHLFE list.
The value of this index has no semantic meaning
other than for referencing the entry.";
}
leaf next-hop {
type inet:ip-address;
description
"The IP address of the next-hop";
}
leaf operation {
type label-operation;
description
"The MPLS label operation to be executed on the incoming packet";
}
leaf-list labels {
type mpls-label;
description "The MPLS label stack";
}
leaf outgoing-interface {
type if:interface-ref;
description
"The outgoing interface";
}
leaf loadshare {
type uint16;
description
"This value is used to compute a loadshare to perform un-equal
load balancing when multiple outgoing next-hop(s) are specified. A
share is computed as a ratio of this number to the total under
all next-hops(s).";
}
leaf role {
type nhlfe-role;
description "NHLFE role";
}
}
grouping ilm-contents {
description "ILM entry contents grouping";
leaf label {
type mpls-label;
description "The ILM label";
}
leaf incoming-interface {
type if:interface-ref;
description
"Optional incoming interface if restricted to traffic incoming
on a specific interface";
}
leaf-list nhlfes {
type leafref {
path "../../nhlfe-table/index";
}
min-elements "1";
description "The list of referenced NHLFE(s)";
}
}
grouping ilm-table {
description "The Incoming Label Map table grouping";
list ilm-table {
key "label";
description "The Incoming Label Map table";
uses ilm-contents;
uses route-metadata;
}
}
grouping fec-contents {
description "The FEC entry contents";
leaf ip-prefix {
type inet:ip-prefix;
description "An IP prefix";
}
leaf incoming-interface {
type if:interface-ref;
description
"Optional incoming interface if FEC is restricted
to traffic incoming on a specific interface";
}
}
grouping nhlfe-table {
description "NHLFE table grouping";
list nhlfe-table {
key index;
description "NHLFE table";
uses nhlfe-contents;
}
}
grouping ftn-contents {
description "The FEC-to-NHLFE entry contents";
uses fec-contents;
leaf-list nhlfes {
type leafref {
path "../../nhlfe-table/index";
}
min-elements "1";
description "The list of referenced NHLFE(s)";
}
}
grouping ftn-table {
description "FTN table grouping";
list ftn-table {
key "ip-prefix";
description
"The MPLS Next-hop Label Forwarding Entries table";
uses ftn-contents;
uses route-metadata;
}
}
grouping route-metadata {
description
"Common route metadata.";
leaf source-protocol {
type string;
description
"Type of the routing protocol from which the route
originated.";
}
leaf active {
type empty;
description
"Presence of this leaf indicates that the route is preferred
among all routes for the same FEC";
}
leaf last-updated {
type yang:date-and-time;
description
"Time stamp of the last modification of the route. If the
route was never modified, it is the time when the route was
added";
}
}
grouping interface-mpls {
description "MPLS interface contents grouping";
leaf enabled {
type boolean;
description
"'true' if mpls encapsulation is enabled on the
interface. 'false' if mpls encapsulation is enabled
on the interface.";
}
leaf mtu {
type uint32;
description
"MPLS Maximum Transmission Unit (MTU)";
}
}
grouping interfaces-mpls {
description "List of MPLS interfaces";
list interface {
key "name";
description "List of MPLS interfaces";
leaf name {
type if:interface-ref;
description
"The name of a configured MPLS interface";
}
uses interface-mpls;
}
}
augment "/rt:routing" {
description "MPLS augmentation.";
container mpls {
description
"MPLS container, to be used as an augmentation target node
other MPLS sub-features config, e.g. MPLS static LSP, MPLS
LDP LSPs, and Trafic Engineering MPLS LSP Tunnels, etc.";
uses interfaces-mpls;
}
}
augment "/rt:routing-state" {
description "MPLS augmentation.";
container mpls {
config false;
description
"MPLS container, to be used as an augmentation target node
other MPLS sub-features state";
uses interfaces-mpls;
uses nhlfe-table;
uses ilm-table;
uses ftn-table;
}
}
}