1 module gnpy-path-computation-simplified {
6 import ietf-inet-types {
11 "Telecom Infra Project OOPT PSE Working Group";
13 "WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
14 contact: <mailto:ahmed.triki@orange.com>
15 contact: <mailto:esther.lerouzic@orange.com>
18 "YANG model for gnpy path computation simplified for transportPCE";
22 "remove key from route-object-include-exclude";
26 "second draft with detailed blocking reasons";
28 "YANG model for path computation with gnpy inputs";
31 identity SNR-bandwidth {
32 base path-metric-type;
34 "A metric that records SNR in signal bandwidth";
37 identity OSNR-bandwidth {
38 base path-metric-type;
40 "A metric that records OSNR in signal bandwidth";
44 base path-metric-type;
46 "A metric that records SNR in 0.1nm";
50 base path-metric-type;
52 "A metric that records OSNR in 0.1nm";
55 identity reference_power {
56 base path-metric-type;
61 identity path_bandwidth {
62 base path-metric-type;
67 identity path-metric-type {
69 "Base identity for path metric type";
72 identity route-usage-type {
74 "Base identity for route usage";
77 identity route-include-ero {
78 base route-usage-type;
80 "Include ERO from route";
83 identity route-exclude-ero {
84 base route-usage-type;
86 "Exclude ERO from route";
89 identity route-exclude-srlg {
90 base route-usage-type;
92 "Exclude SRLG from route";
99 "loose hop in an explicit path";
103 "strict hop in an explicit path";
107 "enumerated type for specifying loose or strict
110 "RFC3209: section-4.3.2";
113 typedef te-path-disjointness {
128 "SRLG (Shared Risk Link Group) disjoint.";
132 "Type of the resource disjointness for a TE tunnel path.";
134 "RFC4872: RSVP-TE Extensions in Support of End-to-End
135 Generalized Multi-Protocol Label Switching (GMPLS)
137 } // te-path-disjointness
140 type inet:ip-address;
142 "An identifier for a node in a topology.
143 The identifier is represented as 32-bit unsigned integer in
144 the dotted-quad notation.
145 This attribute is mapped to Router ID in
146 RFC3630, RFC5329, RFC5305, and RFC6119.";
151 type uint32; // Unnumbered
152 type inet:ip-address; // IPv4 or IPv6 address
155 "An identifier for a TE link endpoint on a node.
156 This attribute is mapped to local or remote link identifier in
157 RFC3630 and RFC5305.";
160 typedef accumulated-metric-type {
168 "type useable for accumulative-value";
171 grouping effective-freq-slot {
172 /* content copied from ietf-flexi-grid-media-channel, because only M and N are needed
173 from the initial grouping.
176 "The effective frequency slot is an attribute
177 of a media channel and, being a frequency slot, it is
178 described by its nominal central frequency and slot
185 "Is used to determine the Nominal Central
186 Frequency. The set of nominal central frequencies
187 can be built using the following expression:
188 f = 193.1 THz + n x 0.00625 THz,
189 where 193.1 THz is ITU-T ''anchor frequency'' for
190 transmission over the C band, n is a positive or
191 negative integer including 0.";
198 "Is used to determine the slot width. A slot width
199 is constrained to be M x SWG (that is, M x 12.5 GHz),
200 where M is an integer greater than or equal to 1.";
206 grouping gnpy-specific-parameters {
208 "This grouping defines the gnpy specific parameters for requests.";
211 default "flexi-grid";
213 "Data plane technology type.";
219 "name of the transponder type (to be read from equipment library";
224 "name of the transponder mode (to be read from equipment library";
226 list effective-freq-slot {
228 uses effective-freq-slot;
237 "It is the spacing between channels assuming full load with
238 same channels as the requested one. multiple of 12.5 GHz";
240 leaf max-nb-of-channel {
243 "Nb of channel to take into account for the full load case.\n";
251 "optical power setting to be used for the propagation";
253 leaf path_bandwidth {
264 grouping transponder {
265 leaf transponder-type {
270 leaf transponder-mode {
277 grouping hop-attribute {
279 "This grouping defines the hop attribute parameters for request or response";
282 container transponder {
287 container regenerator {
288 leaf regenerator-id {
295 container optical-power {
302 "hop output (input??) power";
309 grouping path-route-objects {
311 "List of EROs to be included or excluded when performing
312 the path computation.";
313 container explicit-route-objects {
315 "Container for the route object list";
316 list route-object-include-exclude {
318 "List of explicit route objects to include or
319 exclude in path computation";
320 leaf explicit-route-usage {
322 base route-usage-type;
325 "Explicit-route usage.";
327 uses explicit-route-hop;
332 grouping generic-path-disjointness {
334 "Path disjointness grouping";
336 type te-path-disjointness;
338 "The type of resource disjointness.
339 Under primary path, disjointness level applies to
340 all secondary LSPs. Under secondary, disjointness
341 level overrides the one under primary";
345 grouping common-path-constraints-attributes {
347 "Common path constraints configuration grouping";
348 uses common-constraints_config;
351 grouping generic-path-constraints {
353 "Global named path constraints configuration
355 container path-constraints {
357 "TE named path constraints container";
358 uses common-path-constraints-attributes;
362 grouping explicit-route-hop {
364 "The explicit route subobject grouping";
368 "ERO subobject index";
372 "The explicit route subobject type";
374 container num-unnum-hop {
376 "Numbered and Unnumbered link/node explicit route
382 "The identifier of a node in the TE topology.";
388 "TE link termination point identifier. The combination
389 of TE link ID and the TE node ID is used to identify an
390 unnumbered TE link.";
395 "strict or loose hop";
401 "The Label ERO subobject";
402 container label-hop {
405 uses effective-freq-slot;
409 uses gnpypc:hop-attribute;
414 grouping common-constraints_config {
416 "Common constraints grouping that can be set on
417 a constraint set or directly on the tunnel";
418 container te-bandwidth {
420 "A requested bandwidth to use for path computation";
421 uses gnpy-specific-parameters;
425 grouping end-points {
427 "Common grouping to define the TE tunnel end-points";
429 type inet:ip-address;
431 "TE tunnel source address.";
434 type inet:ip-address;
436 "P2P tunnel destination address";
441 "TE tunnel source termination point identifier.";
446 "TE tunnel destination termination point
451 grouping synchronization-info {
453 "Information for sync";
454 list synchronization {
455 key "synchronization-id";
458 leaf synchronization-id {
465 "Synchronization VECtor";
470 "If this leaf is true, path computation process is free
471 to ignore svec content.
472 otherwise it must take into account this svec.";
474 uses generic-path-disjointness;
475 leaf-list request-id-number {
478 "This list reports the set of M path computation requests that must be synchronized.";
484 grouping generic-path-properties {
486 "TE generic path properties grouping";
487 container path-properties {
490 "The TE path properties";
494 "TE path metric type";
497 base path-metric-type;
500 "TE path metric type";
502 leaf accumulative-value {
507 "TE path metric accumulative value";
510 // container path-route-objects {
512 // "Container for the list of route objects either returned by
513 // the computation engine or actually used by an LSP";
514 // list path-route-object {
517 // "List of route objects either returned by the computation
518 // engine or actually used by an LSP";
519 // uses explicit-route-hop;
522 list path-route-objects {
524 "Container for the list of route objects either returned by
525 the computation engine or actually used by an LSP";
526 container path-route-object {
528 "List of route objects either returned by the computation
529 engine or actually used by an LSP";
530 uses explicit-route-hop;
538 "Path computation output information";
539 uses generic-path-properties;
542 // adding some blocking reasons and info on path in case of blocking
544 grouping no-path-info {
548 presence "Response without path information, due to failure
549 performing the path computation";
551 "if path computation cannot identify a path,
552 rpc returns no path.";
557 "returned blocking reasons:
560 NO_FEASIBLE_BAUDRATE_WITH_SPACING
561 NO_PATH_WITH_CONSTRAINT
567 uses generic-path-properties;
571 /* TODO : correct the following with good trees:
572 * te:tunnels-rpc/te:input/te:tunnel-info
573 * te:tunnels-rpc/te:output/te:result
585 "Each path computation request is uniquely identified by the request-id-number.";
591 "Specify the bidirectionality of the path";
594 uses path-route-objects;
595 uses generic-path-constraints;
597 uses synchronization-info;
609 "The list key that has to reuse request-id-number.";
611 choice response-type {
620 "Path computation service.";
629 "Describe the service file to connect to gnpy";