mirror of
				https://github.com/Telecominfraproject/oopt-gnpy-api.git
				synced 2025-10-30 17:37:47 +00:00 
			
		
		
		
	chore: removed useless YANG models
Change-Id: Ib3ea3106341a4ae72877b6aa1628c899d19f4e87
This commit is contained in:
		 ‘Renato
					‘Renato
				
			
				
					committed by
					
						 Renato Ambrosone
						Renato Ambrosone
					
				
			
			
				
	
			
			
			 Renato Ambrosone
						Renato Ambrosone
					
				
			
						parent
						
							ce320e73d6
						
					
				
				
					commit
					ffa60d450c
				
			| @@ -1,81 +0,0 @@ | ||||
| module gnpy-api { | ||||
|   yang-version 1.1; | ||||
|   namespace "gnpy:gnpy-api"; | ||||
|   prefix gnpyapi; | ||||
|  | ||||
|   import gnpy-network-topology { | ||||
|     prefix gnpynt; | ||||
|     revision-date "2025-01-20"; | ||||
|   } | ||||
|   import gnpy-path-computation { | ||||
|     prefix gnpypc; | ||||
|     revision-date "2025-01-21"; | ||||
|   } | ||||
|   import gnpy-eqpt-config { | ||||
|     prefix gnpyeqpt; | ||||
|     revision-date "2025-01-20"; | ||||
|   } | ||||
|   import ietf-yang-types { | ||||
|     prefix ietftypes; | ||||
|   } | ||||
|  | ||||
|   organization | ||||
|     "Telecom Infra Project OOPT PSE Working Group"; | ||||
|   contact | ||||
|     "WG Web:   <https://github.com/Telecominfraproject/oopt-gnpy> | ||||
|      contact:  <mailto:ahmed.triki@orange.com> | ||||
|      contact:  <mailto:esther.lerouzic@orange.com> | ||||
|     "; | ||||
|   description | ||||
|     "YANG model for gnpy api input for path computation - TransportPCE preversion"; | ||||
|  | ||||
|   revision 2021-01-06 { | ||||
|     description | ||||
|       "draft for experimental/2020-candi. | ||||
|       Add the possibility to use a topology_id or an equipment_id | ||||
|       "; | ||||
|     reference | ||||
|       "YANG model for api input for path computation with gnpy"; | ||||
|   } | ||||
|  | ||||
|   container service { | ||||
|     description | ||||
|       "Describe the service file to connect to gnpy"; | ||||
|     uses gnpypc:service; | ||||
|   } | ||||
|   container response { | ||||
|     uses gnpypc:response; | ||||
|     description | ||||
|     "Describe the response object to gnpy"; | ||||
|   } | ||||
|   choice topo { | ||||
|     case explicit { | ||||
|       container topology { | ||||
|         description | ||||
|           "Describe the topology file to connect to gnpy"; | ||||
|         uses gnpynt:topo; | ||||
|       } | ||||
|     } | ||||
|     case id { | ||||
|       leaf topology_id { | ||||
|         type ietftypes:uuid; | ||||
|         mandatory true; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   choice eqpt { | ||||
|     case explicit { | ||||
|       container equipment { | ||||
|         description | ||||
|           "Describe the equipment library to connect to gnpy"; | ||||
|         uses gnpyeqpt:eqpt; | ||||
|       } | ||||
|     } | ||||
|     case id { | ||||
|       leaf equipment_id { | ||||
|         type ietftypes:uuid; | ||||
|         mandatory true; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -1,442 +0,0 @@ | ||||
| module gnpy-eqpt-config { | ||||
|   yang-version 1; | ||||
|   namespace "gnpy:gnpy-eqpt-config"; | ||||
|  | ||||
|   prefix "gnpyeqpt"; | ||||
|  | ||||
|   organization | ||||
|     "Telecom Infra Project OOPT PSE | ||||
|      Working Group"; | ||||
|  | ||||
|   contact | ||||
|     "WG Web:   <https://github.com/Telecominfraproject/oopt-gnpy> | ||||
|      contact:  <mailto:ahmed.triki@orange.com> | ||||
|      contact:  <mailto:esther.lerouzic@orange.com> | ||||
|    "; | ||||
|  | ||||
|   description "Base YANG model for gnpy equipment library input for path computation - 2020 - candi preversion"; | ||||
|  | ||||
|   revision "2020-10-22" { | ||||
|     description "draft for experimental/2020-candi"; | ||||
|     reference "Base YANG model for equipment library input for path computation with gnpy"; | ||||
|   } | ||||
|  | ||||
|   /* | ||||
|    * Identities | ||||
|  | ||||
|  | ||||
|   identity edfa-type-def { | ||||
|     description "base identity for variable gain and fixed gain"; | ||||
|   } | ||||
|  | ||||
|   identity variable-gain{ | ||||
|     base edfa-type-def ; | ||||
|     description "'variable_gain' is a simplified model simulating a 2-coil  | ||||
|       EDFA with internal, input and output VOAs. The NF vs gain response is calculated  | ||||
|       accordingly based on the input parameters: nf_min, nf_max, and gain_flatmax. It  | ||||
|       is not a simple interpolation but a 2-stage NF calculation."; | ||||
|   } | ||||
|  | ||||
|   identity fixed-gain{ | ||||
|     base edfa-type-def ; | ||||
|     description "'fixed_gain' is a fixed gain model. NF == Cte == nf0 if gain_min < gain < gain_flatmax"; | ||||
|   } | ||||
|  | ||||
|   identity fiber-variety { | ||||
|     description "base identity for fiber variety"; | ||||
|   } | ||||
|  | ||||
|   identity transceiver-variety { | ||||
|     description "base identity for transceiver variety"; | ||||
|   } | ||||
|  | ||||
|   */ | ||||
|   grouping variable-gain { | ||||
|     leaf nf_min { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf nf_max { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf out_voa_auto{ | ||||
|       type boolean ; | ||||
|       description "auto_design feature to optimize the amplifier output VOA. If true, output VOA is present  | ||||
|       and will be used to push amplifier gain to its maximum, within EOL power margins."; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping fixed-gain{ | ||||
|     leaf nf0 { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping no-type-def{ | ||||
|     leaf advanced_config_from_json { | ||||
|       type string ; | ||||
|       description " filename with json edfa"; | ||||
|        | ||||
|     } | ||||
|   } | ||||
|    | ||||
|  | ||||
|   grouping openroadm{ | ||||
|     leaf-list nf_coef { | ||||
|       type decimal64 { | ||||
|         fraction-digits 5; | ||||
|       } | ||||
|       //default [8.1e-4,6.142e-2,1.558,19.97] ; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping dual-stage { | ||||
|     leaf raman { | ||||
|       type boolean; | ||||
|     } | ||||
|     leaf preamp_variety { | ||||
|       type leafref { | ||||
|           path "../../Edfa/type_variety"; | ||||
|         } | ||||
|     } | ||||
|     leaf booster_variety { | ||||
|       type leafref { | ||||
|           path "../../Edfa/type_variety"; | ||||
|         } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping edfa-common { | ||||
|     leaf allowed_for_design{ | ||||
|       type boolean ; | ||||
|       description "If false, the amplifier will not be picked by auto-design but it can still be used as a  | ||||
|       manual input (from JSON or Excel template topology files.)"; | ||||
|     } | ||||
|     leaf gain_flatmax { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf gain_min { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf p_max { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dBm; | ||||
|     } | ||||
|     leaf type_def { | ||||
|       type identityref{ | ||||
|         base edfa-type-def ; | ||||
|       } | ||||
|     } | ||||
|     choice type_of_model { | ||||
|       case variable-gain { | ||||
|         when "type_def = 'variable-gain'"; | ||||
|         uses variable-gain ; | ||||
|       } | ||||
|       case fixed-gain{ | ||||
|         when "type_def = 'fixed-gain'"; | ||||
|         uses fixed-gain; | ||||
|       } | ||||
|       case no-type-def{ | ||||
|         when "type_def = 'no-type-def'"; | ||||
|         uses no-type-def; | ||||
|       } | ||||
|       case openroadm{ | ||||
|         when "type_def = 'openroadm'"; | ||||
|         uses openroadm; | ||||
|       } | ||||
|       case dual_stage { | ||||
|         when "type_def = 'dual_stage'"; | ||||
|         uses dual-stage ; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping common-fiber { | ||||
|     description "common parameters for fiber and raman fiber"; | ||||
|     leaf type_variety { | ||||
|       type string ; | ||||
|       } | ||||
|       description "a unique name to ID the fiber in the JSON or Excel template topology input file"; | ||||
|     leaf dispersion{ | ||||
|       type decimal64 { | ||||
|         fraction-digits 8; | ||||
|       } | ||||
|       units s.m-1.m-1; | ||||
|     } | ||||
|     leaf gamma{ | ||||
|       type decimal64 { | ||||
|         fraction-digits 8; | ||||
|       } | ||||
|       units w-1.m-1 ; | ||||
|       description "2pi.n2/(lambda*Aeff) (w-2.m-1)"; | ||||
|     } | ||||
|     leaf pmd_coef{ | ||||
|       type decimal64 { | ||||
|         fraction-digits 16; | ||||
|       } | ||||
|       units s.sqrt(m)-1; | ||||
|     }       | ||||
|   } | ||||
|  | ||||
|   grouping eqpt{ | ||||
|     list Edfa { | ||||
|       key type_variety; | ||||
|       leaf type_variety { | ||||
|         type string; | ||||
|         description "a unique name to ID the amplifier in the JSON/Excel template topology input file"; | ||||
|       } | ||||
|       uses edfa-common; | ||||
|     } | ||||
|  | ||||
|     list Fiber { | ||||
|       key type_variety; | ||||
|       uses common-fiber; | ||||
|     } | ||||
|  | ||||
|     list RamanFiber { | ||||
|       uses common-fiber; | ||||
|       container raman_efficiency { | ||||
|         leaf-list cr { | ||||
|           type decimal64 { | ||||
|             fraction-digits 8; | ||||
|           } | ||||
|         } | ||||
|         leaf-list frequency_offset { | ||||
|           type decimal64 { | ||||
|             fraction-digits 8; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     list Span { | ||||
|       leaf power_mode { | ||||
|         type boolean ; | ||||
|       } | ||||
|       leaf-list delta_power_range_db { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf max_length { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units km; | ||||
|         default 150.0 ; | ||||
|       } | ||||
|       leaf max_loss { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units dB; | ||||
|       } | ||||
|       leaf max_fiber_lineic_loss_for_raman { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units dB.km-1;       | ||||
|       } | ||||
|       leaf target_extended_gain { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units dB; | ||||
|       } | ||||
|       leaf length_units{ | ||||
|         type string ; | ||||
|         default "km"; | ||||
|       } | ||||
|       leaf padding{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         default 10.0 ; | ||||
|       } | ||||
|       leaf EOL{ | ||||
|          type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         default 0.0 ; | ||||
|       } | ||||
|       leaf con_in{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         default 0.0 ; | ||||
|       } | ||||
|       leaf con_out{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         }     | ||||
|         default 0.0 ; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     list Roadm { | ||||
|       leaf target_pch_out_db { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf add_drop_osnr { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf pmd { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       container restrictions { | ||||
|         leaf-list preamp_variety_list { | ||||
|           type string; | ||||
|         } | ||||
|         leaf-list booster_variety_list { | ||||
|           type string; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     list SI { | ||||
|       leaf f_min { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf f_max { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf baud_rate { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf spacing { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf power_dbm { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf-list power_range_db { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf roll_off { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf tx_osnr { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf sys_margins { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     list Transceiver { | ||||
|       leaf type_variety { | ||||
|         type string ; | ||||
|         description "a unique name to ID the transceiver in the JSON or Excel template topology input file"; | ||||
|       } | ||||
|       container frequency { | ||||
|         leaf min { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units Hz ; | ||||
|         } | ||||
|         leaf max { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units Hz ; | ||||
|         } | ||||
|         description "Min/max frequency of transponder eg 191.35e12  and 196.1e12"; | ||||
|       } | ||||
|       list mode { | ||||
|         leaf format { | ||||
|           type string ; | ||||
|           description "unique name of the mode"; | ||||
|         } | ||||
|         leaf baud_rate { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units baud ; | ||||
|           description "baud_rate"; | ||||
|         } | ||||
|         leaf OSNR { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units dB ; | ||||
|           description "min required OSNR in 0.1nm (dB)"; | ||||
|         } | ||||
|         leaf tx_osnr { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units dB ; | ||||
|           description "min required OSNR in 0.1nm (dB)"; | ||||
|         } | ||||
|         leaf min_spacing { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units GHz ; | ||||
|           description "..."; | ||||
|         }     | ||||
|         leaf bit_rate { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units bit/s ; | ||||
|           description "bit rate"; | ||||
|         } | ||||
|         leaf roll_off { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           description "..."; | ||||
|         } | ||||
|         leaf cost { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           description "arbitrary unit"; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1,770 +0,0 @@ | ||||
| module gnpy-eqpt-config { | ||||
|   yang-version 1.1; | ||||
|   namespace "urn:ns:gnpy:equipment_library"; | ||||
|  | ||||
|   prefix "gnpyeqpt"; | ||||
|  | ||||
|   import ietf-optical-impairment-topology { | ||||
|     prefix "oit"; | ||||
|     revision-date 2024-05-21; | ||||
|     reference | ||||
|       "RFC 8345: A YANG Data Model for Network Topologies"; | ||||
|   } | ||||
|   import ietf-layer0-types { | ||||
|     prefix "l0-types"; | ||||
|     revision-date 2024-03-04; | ||||
|     reference | ||||
|       "RFC 8345: A YANG Data Model for Network Topologies"; | ||||
|   } | ||||
|   organization | ||||
|     "Telecom Infra Project OOPT PSE | ||||
|      Working Group"; | ||||
|  | ||||
|   contact | ||||
|     "WG Web:   <https://github.com/Telecominfraproject/oopt-gnpy> | ||||
|      contact:  <mailto:ahmed.triki@orange.com> | ||||
|      contact:  <mailto:esther.lerouzic@orange.com> | ||||
|    "; | ||||
|  | ||||
|   description "Base YANG model for gnpy equipment library input for path computation - 2020 - candi preversion"; | ||||
|  | ||||
|   revision 2025-01-20 { | ||||
|     description | ||||
|       "Add RamanFiber, design bands, tx_power"; | ||||
|     reference | ||||
|       "Base YANG model for equipment library input for detecon, libyang validation, GNPy4Ofr API"; | ||||
|   } | ||||
|   revision "2024-02-21" { | ||||
|     description "add roadm, fix identity-ref, fix leafref"; | ||||
|     reference "Base YANG model for equipment library input for detecon, libyang validatio, GNPy4Ofr API"; | ||||
|   } | ||||
|  | ||||
|   revision "2023-02-04" { | ||||
|     description "fix pdl, pmd fraction-digit, add advanced_model type def, remove no-type-def"; | ||||
|     reference "Base YANG model for equipment library input for detecon - GNPy"; | ||||
|   } | ||||
|   revision "2022-11-21" { | ||||
|     description "draft for toaster detecon - GNPy API"; | ||||
|     reference "Base YANG model for equipment library input for detecon - GNPy"; | ||||
|   } | ||||
|   revision "2020-10-22" { | ||||
|     description "draft for experimental/2020-candi"; | ||||
|     reference "Base YANG model for equipment library input for path computation with gnpy"; | ||||
|   } | ||||
|  | ||||
|   /* | ||||
|    * Identities | ||||
|    */ | ||||
|  | ||||
|   identity edfa-type-def { | ||||
|     description "base identity for variable gain and fixed gain"; | ||||
|   } | ||||
|  | ||||
|   identity variable_gain { | ||||
|     base edfa-type-def; | ||||
|     description "'variable_gain' is a simplified model simulating a 2-coil  | ||||
|       EDFA with internal, input and output VOAs. The NF vs gain response is calculated  | ||||
|       accordingly based on the input parameters: nf_min, nf_max, and gain_flatmax. It  | ||||
|       is not a simple interpolation but a 2-stage NF calculation."; | ||||
|   } | ||||
|  | ||||
|   identity fixed_gain { | ||||
|     base edfa-type-def; | ||||
|     description "'fixed_gain' is a fixed gain model. NF == Cte == nf0 if gain_min < gain < gain_flatmax"; | ||||
|   } | ||||
|  | ||||
|   identity openroadm { | ||||
|     base edfa-type-def; | ||||
|     description "'openroadm' is an openroadm amplifier type."; | ||||
|   } | ||||
|  | ||||
|   identity multi_band { | ||||
|     base edfa-type-def; | ||||
|     description "multi_band has a combination of amp per frequency band defined with their f_min f_max range"; | ||||
|   } | ||||
|  | ||||
|   identity dual_stage { | ||||
|       base edfa-type-def; | ||||
|       description "dual-stage has two amps defined"; | ||||
|   } | ||||
|  | ||||
|   identity advanced_model { | ||||
|       base edfa-type-def; | ||||
|       description "advanced_model has a combination of amp per frequency band defined with their f_min f_max range"; | ||||
|   } | ||||
|  | ||||
|   identity fiber-variety { | ||||
|     description "base identity for fiber variety"; | ||||
|   } | ||||
|  | ||||
|   identity transceiver-variety { | ||||
|     description "base identity for transceiver variety"; | ||||
|   } | ||||
|  | ||||
|   grouping variable_gain { | ||||
|     leaf nf_min { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf nf_max { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping fixed_gain{ | ||||
|     leaf nf0 { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping openroadm{ | ||||
|     leaf-list nf_coef { | ||||
|       type decimal64 { | ||||
|         fraction-digits 8; | ||||
|       } | ||||
|       //default [8.1e-4,6.142e-2,1.558,19.97] ; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping dual-stage { | ||||
|     leaf preamp_variety { | ||||
|       type union { | ||||
|         type leafref { | ||||
|             path "../../Edfa/type_variety"; | ||||
|           } | ||||
|         type leafref { | ||||
|             path "../../Edfa/other_name"; | ||||
|           } | ||||
|       } | ||||
|     } | ||||
|     leaf booster_variety { | ||||
|       type union { | ||||
|         type leafref { | ||||
|             path "../../Edfa/type_variety"; | ||||
|           } | ||||
|         type leafref { | ||||
|             path "../../Edfa/other_name"; | ||||
|           } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping multi_band { | ||||
|     leaf-list amplifiers { | ||||
|       type string; | ||||
|       description "list of amplifier type-variety picked in other type-def"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping advanced_model { | ||||
|     leaf advanced_config_from_json { | ||||
|       type string; | ||||
|       description | ||||
|         "file name where all noise interp coef, gain ripple, dgt, nf_ripple are detailed"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping edfa-common { | ||||
|     leaf allowed_for_design{ | ||||
|       type boolean ; | ||||
|       description "If false, the amplifier will not be picked by auto-design but it can still be used as a  | ||||
|       manual input (from JSON or Excel template topology files.)"; | ||||
|     } | ||||
|     leaf gain_flatmax { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf gain_min { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf gain_extended { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dB; | ||||
|     } | ||||
|     leaf p_max { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units dBm; | ||||
|     } | ||||
|     leaf type_def { | ||||
|       type identityref{ | ||||
|         base edfa-type-def; | ||||
|       } | ||||
|     } | ||||
|     leaf raman { | ||||
|       type boolean; | ||||
|     } | ||||
|     leaf out_voa_auto{ | ||||
|       type boolean ; | ||||
|       description "auto_design feature to optimize the amplifier output VOA. If true, output VOA is present  | ||||
|       and will be used to push amplifier gain to its maximum, within EOL power margins."; | ||||
|     } | ||||
|     leaf in_voa_auto{ | ||||
|       type boolean ; | ||||
|       description "auto_design feature to optimize the amplifier input VOA. If true, input VOA is present. | ||||
|       TODO: code the function in GNPy"; | ||||
|     } | ||||
|     choice type_of_model { | ||||
|       case variable_gain { | ||||
|         when "type_def = 'gnpyeqpt:variable_gain'"; | ||||
|         uses variable_gain ; | ||||
|       } | ||||
|       case fixed_gain{ | ||||
|         when "type_def = 'gnpyeqpt:fixed_gain'"; | ||||
|         uses fixed_gain; | ||||
|       } | ||||
|       case openroadm{ | ||||
|         when "type_def = 'gnpyeqpt:openroadm'"; | ||||
|         uses openroadm; | ||||
|       } | ||||
|       case dual_stage { | ||||
|         when "type_def = 'gnpyeqpt:dual_stage'"; | ||||
|         uses dual-stage ; | ||||
|       } | ||||
|       case multi_band { | ||||
|         when "type_def = 'gnpyeqpt:multi_band'"; | ||||
|         uses multi_band ; | ||||
|       } | ||||
|       case advanced_model { | ||||
|         when "type_def = 'gnpyeqpt:advanced_model'"; | ||||
|         uses advanced_model; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping common-fiber { | ||||
|     description "common parameters for fiber and raman fiber"; | ||||
|     leaf type_variety { | ||||
|       type string ; | ||||
|       description "a unique name to ID the fiber in the JSON or Excel template topology input file"; | ||||
|       } | ||||
|     leaf dispersion{ | ||||
|       type decimal64 { | ||||
|         fraction-digits 8; | ||||
|       } | ||||
|       units s.m-1.m-1; | ||||
|     } | ||||
|     leaf gamma{ | ||||
|       type decimal64 { | ||||
|         fraction-digits 8; | ||||
|       } | ||||
|       units w-1.m-1 ; | ||||
|       description "2pi.n2/(lambda*Aeff) (w-2.m-1)"; | ||||
|     } | ||||
|     leaf pmd_coef{ | ||||
|       type decimal64 { | ||||
|         fraction-digits 18; | ||||
|       } | ||||
|       units s.sqrt(m)-1; | ||||
|     } | ||||
|     leaf effective_area{ | ||||
|       type decimal64 { | ||||
|         fraction-digits 14; | ||||
|       } | ||||
|       units m-2; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping range { | ||||
|     leaf min_value { | ||||
|       type decimal64 { | ||||
|           fraction-digits 2; | ||||
|       } | ||||
|     } | ||||
|     leaf max_value { | ||||
|       type decimal64 { | ||||
|           fraction-digits 2; | ||||
|       } | ||||
|     } | ||||
|     leaf step { | ||||
|       type decimal64 { | ||||
|           fraction-digits 2; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping eqpt{ | ||||
|     list Edfa { | ||||
|       config false ; | ||||
|       key type_variety; | ||||
|       leaf type_variety { | ||||
|         type string; | ||||
|         description "a unique name to ID the amplifier in the JSON/Excel template topology input file"; | ||||
|       } | ||||
|       leaf-list other_name { | ||||
|         type string; | ||||
|         description "a list of alternative names for the equipment"; | ||||
|       } | ||||
|       leaf f_min { | ||||
|         type decimal64 { | ||||
|           fraction-digits 1; | ||||
|         } | ||||
|       } | ||||
|      leaf f_max { | ||||
|         type decimal64 { | ||||
|           fraction-digits 1; | ||||
|         }      } | ||||
|       uses edfa-common; | ||||
|     } | ||||
|  | ||||
|   grouping frequency-range { | ||||
|     description | ||||
|       "This grouping defines the lower and upper bounds of a | ||||
|       frequency range (e.g., a band). | ||||
|          | ||||
|       This grouping SHOULD NOT be used to define a frequency slot, | ||||
|       which SHOULD be defined using the n and m values instead. | ||||
|       copied from ietf-layer0-types except for units which must be Hz"; | ||||
|     leaf lower-frequency { | ||||
|       type union { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|           range "0..max"; | ||||
|         } | ||||
|         type empty; | ||||
|       } | ||||
|       units Hz; | ||||
|       mandatory true; | ||||
|       description | ||||
|         "The lower frequency boundary of the | ||||
|         frequency range."; | ||||
|     } | ||||
|     leaf upper-frequency { | ||||
|       type union { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|           range "0..max"; | ||||
|         } | ||||
|         type empty; | ||||
|       } | ||||
|       units Hz; | ||||
|       must '. > ../lower-frequency' { | ||||
|         error-message | ||||
|           "The upper frequency must be greater than the lower | ||||
|           frequency."; | ||||
|       } | ||||
|       mandatory true; | ||||
|       description | ||||
|         "The upper frequency boundary of the | ||||
|         frequency range."; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|     list Fiber { | ||||
|       config false ; | ||||
|       key type_variety; | ||||
|       uses common-fiber; | ||||
|     } | ||||
|  | ||||
|     list RamanFiber { | ||||
|       config false ; | ||||
|       uses common-fiber; | ||||
|       container raman_efficiency { | ||||
|         leaf-list cr { | ||||
|           type decimal64 { | ||||
|             fraction-digits 9; | ||||
|           } | ||||
|         } | ||||
|         leaf-list frequency_offset { | ||||
|           type decimal64 { | ||||
|             fraction-digits 2; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     list Span { | ||||
|       config false ; | ||||
|       leaf power_mode { | ||||
|         type boolean ; | ||||
|       } | ||||
|       container delta_power_range_dict_db { | ||||
|         uses range ; | ||||
|       } | ||||
|       leaf max_length { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units km; | ||||
|         default 150.0 ; | ||||
|       } | ||||
|       leaf max_loss { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units dB; | ||||
|       } | ||||
|       leaf max_fiber_lineic_loss_for_raman { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units dB.km-1;       | ||||
|       } | ||||
|       leaf target_extended_gain { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units dB; | ||||
|       } | ||||
|       leaf length_units{ | ||||
|         type string ; | ||||
|         default "km"; | ||||
|       } | ||||
|       leaf padding{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         default 10.0 ; | ||||
|       } | ||||
|       leaf EOL{ | ||||
|          type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         default 0.0 ; | ||||
|       } | ||||
|       leaf con_in{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         default 0.0 ; | ||||
|       } | ||||
|       leaf con_out{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         }     | ||||
|         default 0.0 ; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     list Roadm { | ||||
|       config false ; | ||||
|       leaf type_variety { | ||||
|         type string; | ||||
|       } | ||||
|       leaf target_pch_out_db { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf target_psd_out_mWperGHz { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf target_out_mWperSlotWidth { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf add_drop_osnr { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf pmd { | ||||
|         type decimal64 { | ||||
|           fraction-digits 15; | ||||
|         } | ||||
|       } | ||||
|       leaf pdl { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       container restrictions { | ||||
|         leaf-list preamp_variety_list { | ||||
|           type string; | ||||
|         } | ||||
|         leaf-list booster_variety_list { | ||||
|           type string; | ||||
|         } | ||||
|       } | ||||
|  | ||||
|     list roadm-path-impairments { | ||||
|       key "roadm-path-impairments-id"; | ||||
|       config false; | ||||
|       description | ||||
|         "The set of optical impairments related to a ROADM path."; | ||||
|  | ||||
|       leaf roadm-path-impairments-id { | ||||
|         type uint32; | ||||
|         description "index of the ROADM path-impairment list"; | ||||
|       } | ||||
|       choice impairment-type { | ||||
|         description "type path impairment"; | ||||
|         case roadm-express-path { | ||||
|           list roadm-express-path { | ||||
|             description | ||||
|               "The list of optical impairments on a ROADM express | ||||
|               path for different frequency ranges. | ||||
|               Two elements in the list must not have the same range | ||||
|               or overlapping ranges."; | ||||
|             container frequency-range { | ||||
|               description | ||||
|                 "The frequency range for which these optical | ||||
|                 impairments apply."; | ||||
|               uses frequency-range; | ||||
|             } | ||||
|             // todo: augment express to allow transit OSNR// | ||||
|             uses oit:roadm-express-path; | ||||
|           } | ||||
|         } | ||||
|         case roadm-add-path { | ||||
|           list roadm-add-path { | ||||
|             description | ||||
|               "The list of optical impairments on a ROADM add | ||||
|               path for different frequency ranges. | ||||
|               Two elements in the list must not have the same range | ||||
|               or overlapping ranges."; | ||||
|             container frequency-range { | ||||
|               description | ||||
|                 "The frequency range for which these optical | ||||
|                 impairments apply."; | ||||
|               uses frequency-range; | ||||
|             } | ||||
|             uses oit:roadm-add-path; | ||||
|           } | ||||
|         } | ||||
|         case roadm-drop-path { | ||||
|           list roadm-drop-path { | ||||
|             description | ||||
|               "The list of optical impairments on a ROADM add | ||||
|               path for different frequency ranges. | ||||
|               Two elements in the list must not have the same range | ||||
|               or overlapping ranges."; | ||||
|             container frequency-range { | ||||
|               description | ||||
|                 "The frequency range for which these optical | ||||
|                 impairments apply."; | ||||
|               uses frequency-range; | ||||
|             } | ||||
|             uses oit:roadm-drop-path; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } // list path impairments | ||||
|  | ||||
|     } | ||||
|  | ||||
|     list SI { | ||||
|       config false ; | ||||
|       leaf f_min { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf f_max { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf baud_rate { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf spacing { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf power_dbm { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       container power_range_dict_db { | ||||
|         uses range; | ||||
|       } | ||||
|       leaf roll_off { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf tx_osnr { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf tx_power_dbm { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf type_variety { | ||||
|         type string ; | ||||
|         description "a unique name to ID the SI band"; | ||||
|       } | ||||
|       leaf sys_margins { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     list Transceiver { | ||||
|       config false ; | ||||
|       leaf type_variety { | ||||
|         type string ; | ||||
|         description "a unique name to ID the transceiver in the JSON or Excel template topology input file"; | ||||
|       } | ||||
|       leaf-list other_name { | ||||
|         type string; | ||||
|         description "a list of alternative names for the equipment"; | ||||
|       } | ||||
|       leaf comment { | ||||
|         type string; | ||||
|         description "free string"; | ||||
|       } | ||||
|       container frequency { | ||||
|         leaf min { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units Hz ; | ||||
|         } | ||||
|         leaf max { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units Hz ; | ||||
|         } | ||||
|         description "Min/max frequency of transponder eg 191.35e12  and 196.1e12"; | ||||
|       } | ||||
|       list mode { | ||||
|         config false ; | ||||
|         leaf format { | ||||
|           type string ; | ||||
|           description "unique name of the mode"; | ||||
|         } | ||||
|         leaf-list other_name { | ||||
|           type string; | ||||
|           description "a list of alternative names for the mode"; | ||||
|         } | ||||
|         leaf baud_rate { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units baud ; | ||||
|           description "baud_rate"; | ||||
|         } | ||||
|         leaf OSNR { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units dB ; | ||||
|           description "min required OSNR in 0.1nm (dB)"; | ||||
|         } | ||||
|         leaf tx_osnr { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units dB ; | ||||
|           description "min required OSNR in 0.1nm (dB)"; | ||||
|         } | ||||
|         leaf min_spacing { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units GHz ; | ||||
|           description "..."; | ||||
|         }     | ||||
|         leaf bit_rate { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           units bit/s ; | ||||
|           description "bit rate"; | ||||
|         } | ||||
|         leaf roll_off { | ||||
|           type union { | ||||
|             type decimal64 { | ||||
|                 fraction-digits 2; | ||||
|               } | ||||
|             type empty; | ||||
|           } | ||||
|           description "..."; | ||||
|         } | ||||
|         leaf cost { | ||||
|           type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           description "arbitrary unit"; | ||||
|         } | ||||
|         list penalties { | ||||
|           leaf chromatic_dispersion { | ||||
|             type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|             description "chromatic dispersion"; | ||||
|           } | ||||
|           leaf pmd { | ||||
|             type decimal64 { | ||||
|               fraction-digits 15; | ||||
|             } | ||||
|             description "Polarization mode dispersion"; | ||||
|           } | ||||
|           leaf pdl { | ||||
|             type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|             description "Polarization dependant loss"; | ||||
|           } | ||||
|           leaf penalty_value { | ||||
|             type decimal64 { | ||||
|               fraction-digits 2; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|         leaf equalization_offset_db { | ||||
|           type decimal64 { | ||||
|             fraction-digits 4; | ||||
|           } | ||||
|           description "Power offset for equalizing this mode in ROADM compared to reference channel";           | ||||
|         } | ||||
|         leaf equalization_slot_width { | ||||
|           type decimal64 { | ||||
|             fraction-digits 2; | ||||
|           } | ||||
|           description "slot width used for equalization instead of min_spacing in case of  | ||||
|             equalization per slot width";     | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   augment "/gnpyeqpt:equipment/gnpyeqpt:Roadm/gnpyeqpt:roadm-path-impairments/" | ||||
|     + "gnpyeqpt:impairment-type/gnpyeqpt:roadm-express-path/" | ||||
|     + "gnpyeqpt:roadm-express-path" { | ||||
|     leaf roadm-osnr { | ||||
|       type l0-types:snr-or-null; | ||||
|       description | ||||
|         "Optical Signal-to-Noise Ratio (OSNR). | ||||
|         If the express path contains an integrated amplifier, | ||||
|         this reflects its OSNR contribution."; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   container equipment { | ||||
|     description | ||||
|       "Describe the equipment library of gnpy release 2.6"; | ||||
|     uses eqpt; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1,300 +0,0 @@ | ||||
| module gnpy-network-topology { | ||||
|   yang-version 1.1; | ||||
|   namespace "gnpy:gnpy-network-topology"; | ||||
|   prefix gnpynt; | ||||
|  | ||||
|   organization | ||||
|     "Telecom Infra Project OOPT PSE Working Group"; | ||||
|   contact | ||||
|     "WG Web:   <https://github.com/Telecominfraproject/oopt-gnpy> | ||||
|      contact:  <mailto:ahmed.triki@orange.com> | ||||
|      contact:  <mailto:esther.lerouzic@orange.com> | ||||
|     "; | ||||
|   description | ||||
|     "YANG model for gnpy network input for path computation - 2020 - candi preversion"; | ||||
|  | ||||
|   revision 2020-10-22 { | ||||
|     description | ||||
|       "draft for experimental/2020-candi"; | ||||
|     reference | ||||
|       "YANG model for network input for path computation with gnpy"; | ||||
|   } | ||||
|  | ||||
|   identity type-element { | ||||
|     description | ||||
|       "Base identity for element type"; | ||||
|   } | ||||
|  | ||||
|   identity Transceiver { | ||||
|     base type-element; | ||||
|     description | ||||
|       " Transceiver element"; | ||||
|   } | ||||
|  | ||||
|   identity Fiber { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Fiber element (unidirectional)"; | ||||
|   } | ||||
|  | ||||
|   identity Roadm { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Roadm element"; | ||||
|   } | ||||
|  | ||||
|   identity Edfa { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Edfa element"; | ||||
|   } | ||||
|  | ||||
|   identity Fused { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Fused element ; non amplified connection between two fiber spans ; | ||||
|        can be used to model optical distribution frame, or losses due to | ||||
|        connectors or fused in a span"; | ||||
|   } | ||||
|  | ||||
|   identity length-unit { | ||||
|     description | ||||
|       "length unit"; | ||||
|   } | ||||
|  | ||||
|   identity km { | ||||
|     base length-unit; | ||||
|     description | ||||
|       "kilometers"; | ||||
|   } | ||||
|  | ||||
|   identity m { | ||||
|     base length-unit; | ||||
|     description | ||||
|       "meter"; | ||||
|   } | ||||
|  | ||||
|   typedef Coordinate { | ||||
|     type decimal64 { | ||||
|       fraction-digits 6; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   typedef Coef { | ||||
|     type decimal64 { | ||||
|       fraction-digits 2; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping location-attributes { | ||||
|     container location { | ||||
|       leaf city { | ||||
|         type string; | ||||
|         mandatory true; | ||||
|       } | ||||
|       leaf region { | ||||
|         type string; | ||||
|         mandatory true; | ||||
|       } | ||||
|       leaf latitude { | ||||
|         type Coordinate; | ||||
|         mandatory true; | ||||
|       } | ||||
|       leaf longitude { | ||||
|         type Coordinate; | ||||
|         mandatory true; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping fiber-params { | ||||
|     description | ||||
|       "....."; | ||||
|     leaf length { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       mandatory true; | ||||
|     } | ||||
|     leaf loss_coef { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       mandatory true; | ||||
|       units db/km; | ||||
|       description "Loss coefficient of the fiber span (dB/km)"; | ||||
|     } | ||||
|     leaf length_units { | ||||
|       type identityref { | ||||
|         base length-unit; | ||||
|       } | ||||
|       mandatory true; | ||||
|     } | ||||
|     leaf att_in { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units "dB"; | ||||
|       mandatory true; | ||||
|     } | ||||
|     leaf con_in { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units "dB"; | ||||
|       mandatory true; | ||||
|     } | ||||
|     leaf con_out { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units "dB"; | ||||
|       mandatory true; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping edfa-params { | ||||
|     container operational { | ||||
|       description | ||||
|         "Operational values for the Edfa "; | ||||
|       leaf gain_target { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units "dB"; | ||||
|         mandatory true; | ||||
|         description | ||||
|           "gain target of the amplifier (before VOA and after att_in)"; | ||||
|       } | ||||
|       leaf tilt_target { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         mandatory true; | ||||
|         description | ||||
|           ".."; | ||||
|       } | ||||
|       leaf out_voa { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units "dB"; | ||||
|         mandatory true; | ||||
|         description | ||||
|           ".."; | ||||
|       } | ||||
|       leaf delta_p { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         units "dB"; | ||||
|         mandatory true; | ||||
|         description | ||||
|           "per channel target output power delta with respect to power setting in SI"; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping roadm-params { | ||||
|     leaf target_pch_out_db { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units "dB"; | ||||
|       description | ||||
|         ".."; | ||||
|     } | ||||
|     container restrictions { | ||||
|       leaf-list preamp_variety_list { | ||||
|         type string; | ||||
|         description  | ||||
|           "List of authorized preamp type-variety"; | ||||
|       } | ||||
|       leaf-list booster_variety_list { | ||||
|         type string; | ||||
|         description  | ||||
|           "List of authorized booster type-variety"; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping transceiver-params; | ||||
|  | ||||
|   grouping fused-params{ | ||||
|     leaf loss { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units "dB"; | ||||
|       description | ||||
|         "Concentrated loss of the fused element";     | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping element-type-choice { | ||||
|     choice element-type { | ||||
|       case Edfa { | ||||
|         when "type = 'Edfa'"; | ||||
|         uses edfa-params; | ||||
|       } | ||||
|       case FiberRoadm { | ||||
|         container params { | ||||
|           choice fiberroadmfused { | ||||
|             case Fiber { | ||||
|               when "type = 'Fiber'"; | ||||
|               uses fiber-params; | ||||
|             } | ||||
|             case Roadm { | ||||
|               when "type = 'Roadm'"; | ||||
|               uses roadm-params; | ||||
|             } | ||||
|             case Fused { | ||||
|               when "type = 'Fused'"; | ||||
|               uses fused-params; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       case Transceiver { | ||||
|         when "type = 'Transceiver'"; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|   grouping topo { | ||||
|     list elements { | ||||
|       key "uid"; | ||||
|       leaf uid { | ||||
|         type string; | ||||
|       } | ||||
|       leaf type { | ||||
|         type identityref { | ||||
|           base type-element; | ||||
|         } | ||||
|         mandatory true; | ||||
|       } | ||||
|       leaf type_variety { | ||||
|         type string; | ||||
|         mandatory false; | ||||
|       } | ||||
|       container metadata { | ||||
|         uses location-attributes; | ||||
|       } | ||||
|       uses element-type-choice; | ||||
|     } | ||||
|     list connections { | ||||
|       config false; | ||||
|       leaf from_node { | ||||
|         type leafref { | ||||
|           path "../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|       leaf to_node { | ||||
|         type leafref { | ||||
|           path "../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -1,594 +0,0 @@ | ||||
| module gnpy-network-topology { | ||||
|   yang-version 1.1; | ||||
|   namespace "gnpy:gnpy-network-topology"; | ||||
|   prefix gnpynt; | ||||
|  | ||||
|   organization | ||||
|     "Telecom Infra Project OOPT PSE Working Group"; | ||||
|   contact | ||||
|     "WG Web:   <https://github.com/Telecominfraproject/oopt-gnpy> | ||||
|      contact:  <mailto:ahmed.triki@orange.com> | ||||
|      contact:  <mailto:esther.lerouzic@orange.com> | ||||
|     "; | ||||
|   description | ||||
|     "YANG model for gnpy network input for path computation - 2020 - candi preversion"; | ||||
|  | ||||
|   revision 2025-01-20 { | ||||
|     description | ||||
|       "Add RamanFiber, design bands, impairments"; | ||||
|     reference | ||||
|       "YANG model for network input for path computation with gnpy"; | ||||
|   } | ||||
|  | ||||
|   revision 2024-02-21 { | ||||
|     description | ||||
|       "fix namespaces for identity-ref, | ||||
|       add roadm impairment"; | ||||
|     reference | ||||
|       "YANG model for network input for path computation with gnpy"; | ||||
|   } | ||||
|   revision 2023-02-01 { | ||||
|     description | ||||
|       "change per-degree roadm targets | ||||
|       set 6 digits for fiber length | ||||
|       set 6 digits for loss_coef | ||||
|       add type empty for con_in and con_out"; | ||||
|     reference | ||||
|       "YANG model for network input for path computation with gnpy"; | ||||
|   } | ||||
|   revision 2022-11-21 { | ||||
|     description | ||||
|       "draft for detecon - GNPy API"; | ||||
|     reference | ||||
|       "YANG model for network input for path computation with gnpy"; | ||||
|   } | ||||
|   revision 2020-10-22 { | ||||
|     description | ||||
|       "draft for experimental/2020-candi"; | ||||
|     reference | ||||
|       "YANG model for network input for path computation with gnpy"; | ||||
|   } | ||||
|  | ||||
|   identity type-element { | ||||
|     description | ||||
|       "Base identity for element type"; | ||||
|   } | ||||
|  | ||||
|   identity Transceiver { | ||||
|     base type-element; | ||||
|     description | ||||
|       " Transceiver element"; | ||||
|   } | ||||
|  | ||||
|   identity Fiber { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Fiber element (unidirectional)"; | ||||
|   } | ||||
|  | ||||
|   identity RamanFiber { | ||||
|     base type-element; | ||||
|     description | ||||
|       "RamanFiber element (unidirectional)"; | ||||
|   } | ||||
|  | ||||
|   identity Roadm { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Roadm element"; | ||||
|   } | ||||
|  | ||||
|   identity Edfa { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Edfa element"; | ||||
|   } | ||||
|  | ||||
|   identity Fused { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Fused element ; non amplified connection between two fiber spans ; | ||||
|        can be used to model optical distribution frame, or losses due to | ||||
|        connectors or fused in a span"; | ||||
|   } | ||||
|  | ||||
|   identity  Multiband_amplifier { | ||||
|     base type-element; | ||||
|     description | ||||
|       "Multiband_amplifier element"; | ||||
|   } | ||||
|  | ||||
|   identity length-unit { | ||||
|     description | ||||
|       "length unit"; | ||||
|   } | ||||
|  | ||||
|   identity km { | ||||
|     base length-unit; | ||||
|     description | ||||
|       "kilometers"; | ||||
|   } | ||||
|  | ||||
|   identity m { | ||||
|     base length-unit; | ||||
|     description | ||||
|       "meter"; | ||||
|   } | ||||
|  | ||||
|   typedef Coordinate { | ||||
|     type decimal64 { | ||||
|       fraction-digits 6; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   identity pumping-direction { | ||||
|     description | ||||
|       "Raman pumping direction"; | ||||
|   } | ||||
|  | ||||
|   identity coprop { | ||||
|     base pumping-direction; | ||||
|     description | ||||
|       "forward pumping"; | ||||
|   } | ||||
|  | ||||
|   identity counterprop { | ||||
|     base pumping-direction; | ||||
|     description | ||||
|       "backward pumping"; | ||||
|   } | ||||
|  | ||||
|   typedef Coef { | ||||
|     type decimal64 { | ||||
|       fraction-digits 2; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|   grouping location-attributes { | ||||
|     container location { | ||||
|       leaf city { | ||||
|         type union { | ||||
|           type string; | ||||
|           type empty; | ||||
|         } | ||||
|         mandatory false; | ||||
|       } | ||||
|       leaf region { | ||||
|         type union { | ||||
|           type string; | ||||
|           type empty; | ||||
|         } | ||||
|         mandatory false; | ||||
|       } | ||||
|       leaf latitude { | ||||
|         type Coordinate; | ||||
|         mandatory false; | ||||
|       } | ||||
|       leaf longitude { | ||||
|         type Coordinate; | ||||
|         mandatory false; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping frequency_band { | ||||
|     description | ||||
|      "Used for amplifiers, for design band"; | ||||
|     leaf f_min { | ||||
|       type decimal64 { | ||||
|         fraction-digits 1; | ||||
|       } | ||||
|       units "Hz"; | ||||
|     } | ||||
|     leaf f_max { | ||||
|       type decimal64 { | ||||
|         fraction-digits 1; | ||||
|       } | ||||
|       units "Hz"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping fiber-common-params { | ||||
|     description | ||||
|       "Common attributes to fiber and raman fiber"; | ||||
|     leaf length { | ||||
|       type decimal64 { | ||||
|         fraction-digits 6; | ||||
|       } | ||||
|       mandatory true; | ||||
|     } | ||||
|     leaf loss_coef { | ||||
|       type decimal64 { | ||||
|         fraction-digits 6; | ||||
|       } | ||||
|       mandatory true; | ||||
|       units db/km; | ||||
|       description "Loss coefficient of the fiber span (dB/km)"; | ||||
|     } | ||||
|     /* case when loss_coef is a vector | ||||
|     list loss_coef { | ||||
|       leaf-list frequency { | ||||
|         type decimal64 { | ||||
|           fraction-digits 1; | ||||
|         } | ||||
|         units "Hz"; | ||||
|       } | ||||
|       leaf-list value { | ||||
|         type decimal64 { | ||||
|           fraction-digits 6; | ||||
|         } | ||||
|         units "dB/km"; | ||||
|       } | ||||
|     } | ||||
|     */ | ||||
|     leaf length_units { | ||||
|       type identityref { | ||||
|         base length-unit; | ||||
|       } | ||||
|       mandatory true; | ||||
|     } | ||||
|     leaf att_in { | ||||
|       type decimal64 { | ||||
|         fraction-digits 2; | ||||
|       } | ||||
|       units "dB"; | ||||
|     } | ||||
|     leaf con_in { | ||||
|       type union { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         type empty; | ||||
|       } | ||||
|       units "dB"; | ||||
|     } | ||||
|     leaf con_out { | ||||
|       type union { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         type empty; | ||||
|       } | ||||
|       units "dB"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping raman-fiber-operational { | ||||
|     leaf temperature { | ||||
|       type decimal64 { | ||||
|           fraction-digits 2; | ||||
|       } | ||||
|     } | ||||
|     list raman_pumps { | ||||
|       key "frequency"; | ||||
|       leaf power { | ||||
|         type decimal64 { | ||||
|           fraction-digits 9; | ||||
|         } | ||||
|       } | ||||
|       leaf frequency { | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       leaf propagation_direction { | ||||
|         type identityref { | ||||
|           base pumping-direction; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping edfa-params { | ||||
|       leaf gain_target { | ||||
|        type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 6; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|         units "dB"; | ||||
|         description | ||||
|           "gain target of the amplifier (before VOA and after att_in)"; | ||||
|       } | ||||
|       leaf tilt_target { | ||||
|         type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 6; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|         description | ||||
|           ".."; | ||||
|       } | ||||
|       leaf out_voa { | ||||
|         type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 2; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|         units "dB"; | ||||
|         description | ||||
|           ".."; | ||||
|       } | ||||
|       leaf in_voa { | ||||
|         type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 2; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|         units "dB"; | ||||
|         description | ||||
|           ".."; | ||||
|       } | ||||
|       leaf delta_p { | ||||
|         type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 6; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|         units "dB"; | ||||
|         description | ||||
|           "per channel target output power delta with respect to power setting in SI"; | ||||
|       } | ||||
|   } | ||||
|  | ||||
|   grouping multiband-params{ | ||||
|     list amplifiers { | ||||
|       key "type_variety"; | ||||
|       leaf type_variety { | ||||
|         type string; | ||||
|       } | ||||
|       container operational { | ||||
|         description | ||||
|           "Operational values for the Edfa "; | ||||
|         uses edfa-params; | ||||
|         uses frequency_band; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping  roadm-trx-params { | ||||
|     list design_bands { | ||||
|       key "f_min"; | ||||
|       uses frequency_band; | ||||
|     } | ||||
|     list per_degree_design_bands { | ||||
|       key "degree_uid"; | ||||
|       leaf degree_uid { | ||||
|         type leafref { | ||||
|           path "../../../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|       list per_degree_design_band { | ||||
|         key "f_min"; | ||||
|         uses frequency_band; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping roadm-params { | ||||
|     choice target_type { | ||||
|       case constant_power { | ||||
|         leaf target_pch_out_db { | ||||
|           type decimal64 { | ||||
|             fraction-digits 2; | ||||
|           } | ||||
|           units "dBm"; | ||||
|           description | ||||
|             "Target power applied on all channels out of all degrees of the ROADM"; | ||||
|         } | ||||
|       } | ||||
|       case constant_psd { | ||||
|         leaf target_psd_out_mWperGHz { | ||||
|           type decimal64 { | ||||
|             fraction-digits 10; | ||||
|           } | ||||
|           units "mW/GHz"; | ||||
|           description | ||||
|             "Target power spectral density applied on all channels out of all degrees of the ROADM. | ||||
|             target power is computed for each channel using this value multiplied by the baud_rate of | ||||
|             each channel in Ghz. eg target power = 0.0003125 * 32Gbauds = 0.01 mw ie -20 dBm"; | ||||
|         } | ||||
|       } | ||||
|       case constant_psw { | ||||
|         leaf target_out_mWperSlotWidth { | ||||
|           type decimal64 { | ||||
|             fraction-digits 10; | ||||
|           } | ||||
|           units "mW/GHz"; | ||||
|           description | ||||
|             "Target power spectral density applied on all channels out of all degrees of the ROADM. | ||||
|             target power is computed for each channel using this value multiplied by the slot width of | ||||
|             each channel in Ghz. eg target power = 0.0002 * 50GHz = 0.01 mw ie -20 dBm"; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     container restrictions { | ||||
|       leaf-list preamp_variety_list { | ||||
|         type string; | ||||
|         description  | ||||
|           "List of authorized preamp type-variety"; | ||||
|       } | ||||
|       leaf-list booster_variety_list { | ||||
|         type string; | ||||
|         description  | ||||
|           "List of authorized booster type-variety"; | ||||
|       } | ||||
|     } | ||||
|     list per_degree_power_targets { | ||||
|       key "degree_uid"; | ||||
|       leaf degree_uid { | ||||
|         type leafref { | ||||
|           path "../../../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|       choice per_degree_target_type { | ||||
|         case constant_power { | ||||
|           leaf per_degree_pch_out_db { | ||||
|             type decimal64 { | ||||
|                 fraction-digits 2; | ||||
|             } | ||||
|             units "dBm"; | ||||
|             description | ||||
|               "Equalization applied on all channels on this degree. | ||||
|               This target replaces the one defined for all degrees"; | ||||
|           } | ||||
|         } | ||||
|         case constant_psd { | ||||
|           leaf per_degree_psd_out_mWperGHz { | ||||
|             type decimal64 { | ||||
|               fraction-digits 10; | ||||
|             } | ||||
|             units "mW/GHz"; | ||||
|             description | ||||
|               "Equalization applied on all channels on this degree. | ||||
|               This target replaces the one defined for all degrees"; | ||||
|           } | ||||
|         } | ||||
|         case constant_psw { | ||||
|           leaf per_degree_psd_out_mWperSlotWidth { | ||||
|             type decimal64 { | ||||
|               fraction-digits 10; | ||||
|             } | ||||
|             units "mW/GHz"; | ||||
|             description | ||||
|               "Equalization applied on all channels on this degree. | ||||
|               This target replaces the one defined for all degrees"; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     list per_degree_impairments { | ||||
|       key "from_degree to_degree"; | ||||
|       leaf from_degree { | ||||
|         type leafref { | ||||
|           path "../../../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|       leaf to_degree { | ||||
|         type leafref { | ||||
|           path "../../../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|       leaf impairment_id { | ||||
|         type uint32; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping transceiver-params; | ||||
|  | ||||
|   grouping fused-params{ | ||||
|     leaf loss { | ||||
|       type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 2; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|       units "dB"; | ||||
|       description | ||||
|         "Concentrated loss of the fused element";     | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping element-type-choice { | ||||
|     container operational { | ||||
|       when "../type = 'gnpynt:Edfa' or ../type = 'gnpynt:RamanFiber'"; | ||||
|       description | ||||
|         "Operational values for the Edfa and the RamanFiber"; | ||||
|       choice ramanfiber { | ||||
|         case RamanFiber { | ||||
|           when "../type = 'gnpynt:RamanFiber'"; | ||||
|           uses raman-fiber-operational; | ||||
|         } | ||||
|         case Edfa { | ||||
|           when "../type = 'gnpynt:Edfa'"; | ||||
|           uses edfa-params; | ||||
|           uses frequency_band; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     choice element-type { | ||||
|       case FiberRoadm { | ||||
|         container params { | ||||
|           choice fiberroadmfused { | ||||
|             case Fiber { | ||||
|               when "../type = 'gnpynt:Fiber' or ../type = 'gnpynt:RamanFiber'"; | ||||
|               uses fiber-common-params; | ||||
|             } | ||||
|             case RoadmTransceiver { | ||||
|               when "../type = 'gnpynt:Roadm' or ../type = 'gnpynt:Transceiver'"; | ||||
|               uses roadm-trx-params; | ||||
|               choice roadm { | ||||
|                 case roadm { | ||||
|                   when "../type = 'gnpynt:Roadm'"; | ||||
|                   uses roadm-params; | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|             case Fused { | ||||
|               when "../type = 'gnpynt:Fused'"; | ||||
|               uses fused-params; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       case Multiband_amplifier { | ||||
|         when "type = 'gnpynt:Multiband_amplifier'"; | ||||
|         uses multiband-params; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|   grouping topo { | ||||
|     list elements { | ||||
|       key "uid"; | ||||
|       leaf uid { | ||||
|         type string; | ||||
|       } | ||||
|       leaf type { | ||||
|         type identityref { | ||||
|           base type-element; | ||||
|         } | ||||
|         mandatory true; | ||||
|       } | ||||
|       leaf type_variety { | ||||
|         type string; | ||||
|         mandatory false; | ||||
|       } | ||||
|       container metadata { | ||||
|         uses location-attributes; | ||||
|       } | ||||
|       uses element-type-choice; | ||||
|     } | ||||
|     list connections { | ||||
|       key "from_node to_node"; | ||||
|       leaf from_node { | ||||
|         type leafref { | ||||
|           path "../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|       leaf to_node { | ||||
|         type leafref { | ||||
|           path "../../elements/uid"; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   container topology { | ||||
|     description | ||||
|       "Describe the topology gnpy-formated for release 2.6 toaster (including mixed rate and multiband)"; | ||||
|     uses topo; | ||||
|     leaf network_name { | ||||
|       type string; | ||||
|       mandatory false; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -1,559 +0,0 @@ | ||||
| module gnpy-path-computation-simplified { | ||||
|   yang-version 1.1; | ||||
|   namespace "gnpy:path"; | ||||
|  | ||||
|   prefix "gnpypc"; | ||||
|  | ||||
|     organization | ||||
|     "Telecom Infra Project OOPT PSE Working Group"; | ||||
|  | ||||
|   contact | ||||
|     "WG Web:   <https://github.com/Telecominfraproject/oopt-gnpy> | ||||
|      contact:  <mailto:ahmed.triki@orange.com> | ||||
|      contact:  <mailto:esther.lerouzic@orange.com> | ||||
|    "; | ||||
|  | ||||
|   description "YANG model for gnpy path computation simplified for - 2020 - candi preversion"; | ||||
|  | ||||
|   revision "2020-10-22" { | ||||
|     description  | ||||
|       "draft for experimental/2020-candi"; | ||||
|     reference  | ||||
|       "YANG model for path computation with gnpy inputs"; | ||||
|   } | ||||
|  | ||||
|   grouping effective-freq-slot{ | ||||
|          /* content copied from ietf-flexi-grid-media-channel, because only M and N are needed | ||||
|             from the initial grouping. | ||||
|          */ | ||||
|          description "The effective frequency slot is an attribute | ||||
|             of a media channel and, being a frequency slot, it is | ||||
|             described by its nominal central frequency and slot | ||||
|             width"; | ||||
|          reference "rfc7698"; | ||||
|             leaf N { | ||||
|               type int32; | ||||
|               description | ||||
|                   "Is used to determine the Nominal Central | ||||
|                   Frequency. The set of nominal central frequencies | ||||
|                   can be built using the following expression: | ||||
|                      f = 193.1 THz + n x 0.00625 THz, | ||||
|                   where 193.1 THz is ITU-T ''anchor frequency'' for | ||||
|                   transmission over the C band, n is a positive or | ||||
|                   negative integer including 0."; | ||||
|                reference "rfc7698"; | ||||
|             } | ||||
|             leaf M { | ||||
|               type uint32; | ||||
|               description | ||||
|                   "Is used to determine the slot width. A slot width | ||||
|                   is constrained to be M x SWG (that is, M x 12.5 GHz), | ||||
|                   where M is an integer greater than or equal to 1."; | ||||
|                reference "rfc7698"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping gnpy-specific-parameters{ | ||||
|     description | ||||
|       "This grouping defines the gnpy specific parameters for requests."; | ||||
|         leaf technology { | ||||
|             type string; | ||||
|             default "flexi-grid"; | ||||
|             description | ||||
|           "Data plane technology type."; | ||||
|           } | ||||
|       leaf trx_type { | ||||
|         type string ; | ||||
|         mandatory true; | ||||
|         description "name of the transponder type (to be read from equipment library"; | ||||
|  | ||||
|       } | ||||
|       leaf trx_mode { | ||||
|         type string; | ||||
|         description "name of the transponder mode (to be read from equipment library"; | ||||
|  | ||||
|       } | ||||
|       list effective-freq-slot { | ||||
|         key "N"; | ||||
|         uses effective-freq-slot ; | ||||
|       } | ||||
|       leaf spacing { | ||||
|         mandatory true; | ||||
|         type decimal64 { | ||||
|           fraction-digits 1; | ||||
|         } | ||||
|         units Hz; | ||||
|         description | ||||
|           "It is the spacing between channels assuming full load with | ||||
|           same channels as the requested one. multiple of 12.5 GHz"; | ||||
|  | ||||
|       } | ||||
|       leaf max-nb-of-channel{ | ||||
|         type int32; | ||||
|         description "Nb of channel to take into account for the full load case. | ||||
|         "; | ||||
|  | ||||
|       } | ||||
|       leaf output-power{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 5; | ||||
|         } | ||||
|         units W; | ||||
|         description "optical power setting to be used for the propagation"; | ||||
|  | ||||
|       } | ||||
|       leaf path_bandwidth{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 5; | ||||
|         } | ||||
|         mandatory true; | ||||
|         units bit/s; | ||||
|         description "Capacity required"; | ||||
|       } | ||||
|   } | ||||
|  | ||||
|   identity SNR-bandwidth { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records SNR in signal bandwidth"; | ||||
|   } | ||||
|  | ||||
|   identity OSNR-bandwidth { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records OSNR in signal bandwidth"; | ||||
|   } | ||||
|  | ||||
|   identity SNR-0.1nm { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records SNR in 0.1nm"; | ||||
|   } | ||||
|  | ||||
|   identity OSNR-0.1nm { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records OSNR in 0.1nm"; | ||||
|   } | ||||
|  | ||||
|   identity reference_power { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "to be revised"; | ||||
|   } | ||||
|  | ||||
|   identity path_bandwidth { | ||||
|      base path-metric-type; | ||||
|      description | ||||
|        "to be revised"; | ||||
|   } | ||||
|  | ||||
|   grouping transponder{ | ||||
|         leaf transponder-type { | ||||
|         type string ; | ||||
|         description | ||||
|           "transponder type."; | ||||
|           } | ||||
|       leaf transponder-mode { | ||||
|         type string ; | ||||
|         description | ||||
|           "transponder mode."; | ||||
|           } | ||||
|   } | ||||
|  | ||||
|   grouping hop-attribute{ | ||||
|     description | ||||
|       "This grouping defines the hop attribute parameters for request or response"; | ||||
|     choice hop-type{ | ||||
|       case tsp { | ||||
|         container transponder{ | ||||
|           uses transponder ; | ||||
|         } | ||||
|       } | ||||
|       case regen { | ||||
|         container regenerator{ | ||||
|           leaf regenerator-id{ | ||||
|             type string ; | ||||
|           } | ||||
|           uses transponder ; | ||||
|         } | ||||
|       } | ||||
|       case pow { | ||||
|         container optical-power{ | ||||
|           leaf optical-power{ | ||||
|             type decimal64 { | ||||
|               fraction-digits 5; | ||||
|             } | ||||
|             units W; | ||||
|             description "not used yet. hop output (input??) power"; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|   } | ||||
|  | ||||
|   identity path-metric-type { | ||||
|     description | ||||
|       "Base identity for path metric type"; | ||||
|   } | ||||
|  | ||||
|   identity route-usage-type { | ||||
|     description | ||||
|       "Base identity for route usage"; | ||||
|   } | ||||
|  | ||||
|   identity route-include-ero { | ||||
|     base route-usage-type; | ||||
|     description | ||||
|       "Include ERO from route"; | ||||
|   } | ||||
|  | ||||
|   identity route-exclude-ero { | ||||
|     base route-usage-type; | ||||
|     description | ||||
|       "Exclude ERO from route"; | ||||
|   } | ||||
|  | ||||
|   identity route-exclude-srlg { | ||||
|     base route-usage-type; | ||||
|     description | ||||
|       "Exclude SRLG from route"; | ||||
|   } | ||||
|  | ||||
|   typedef te-hop-type { | ||||
|     type enumeration { | ||||
|       enum LOOSE { | ||||
|         description | ||||
|           "loose hop in an explicit path"; | ||||
|       } | ||||
|       enum STRICT { | ||||
|         description | ||||
|           "strict hop in an explicit path"; | ||||
|       } | ||||
|     } | ||||
|     description | ||||
|      "enumerated type for specifying loose or strict | ||||
|       paths"; | ||||
|     reference "RFC3209: section-4.3.2"; | ||||
|   } | ||||
|  | ||||
|   typedef te-path-disjointness { | ||||
|     type bits { | ||||
|       bit node { | ||||
|         position 0; | ||||
|         description "Node disjoint."; | ||||
|       } | ||||
|       bit link { | ||||
|         position 1; | ||||
|         description "Link disjoint."; | ||||
|       } | ||||
|       bit srlg { | ||||
|         position 2; | ||||
|         description "SRLG (Shared Risk Link Group) disjoint."; | ||||
|       } | ||||
|     } | ||||
|     description | ||||
|       "Type of the resource disjointness for a TE tunnel path."; | ||||
|     reference | ||||
|       "RFC4872: RSVP-TE Extensions in Support of End-to-End | ||||
|        Generalized Multi-Protocol Label Switching (GMPLS) | ||||
|        Recovery"; | ||||
|   } // te-path-disjointness | ||||
|  | ||||
|     typedef accumulated-metric-type { | ||||
|       type union { | ||||
|         type uint64; | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       description | ||||
|           "type useable for accumulative-value"; | ||||
|   } | ||||
|  | ||||
|   grouping path-route-objects { | ||||
|     description | ||||
|       "List of EROs to be included or excluded when performing | ||||
|        the path computation."; | ||||
|     container explicit-route-objects { | ||||
|       description | ||||
|         "Container for the route object list"; | ||||
|       list route-object-include-exclude { | ||||
|         description | ||||
|           "List of explicit route objects to include or | ||||
|            exclude in path computation"; | ||||
|         leaf explicit-route-usage { | ||||
|           type identityref { | ||||
|             base route-usage-type; | ||||
|           } | ||||
|           description "Explicit-route usage."; | ||||
|         } | ||||
|         key "index"; | ||||
|         uses explicit-route-hop ; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping generic-path-disjointness { | ||||
|     description "Path disjointness grouping"; | ||||
|     leaf disjointness { | ||||
|       type te-path-disjointness; | ||||
|       description | ||||
|         "The type of resource disjointness. | ||||
|          Under primary path, disjointness level applies to | ||||
|          all secondary LSPs. Under secondary, disjointness | ||||
|          level overrides the one under primary"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping common-path-constraints-attributes { | ||||
|     description | ||||
|       "Common path constraints configuration grouping"; | ||||
|     uses common-constraints_config; | ||||
|   } | ||||
|  | ||||
|   grouping generic-path-constraints { | ||||
|     description | ||||
|       "Global named path constraints configuration | ||||
|       grouping"; | ||||
|     container path-constraints { | ||||
|       description "TE named path constraints container"; | ||||
|       uses common-path-constraints-attributes; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|   grouping explicit-route-hop { | ||||
|     description | ||||
|       "The explicit route subobject grouping"; | ||||
|     leaf index { | ||||
|       type uint32; | ||||
|       description "ERO subobject index"; | ||||
|     } | ||||
|     choice type { | ||||
|       description | ||||
|         "The explicit route subobject type"; | ||||
|       case num-unnum-hop { | ||||
|         container num-unnum-hop { | ||||
|           leaf node-id { | ||||
|             //type te-node-id; | ||||
|             type string; | ||||
|             description | ||||
|               "The identifier of a node in the TE topology."; | ||||
|           } | ||||
|           leaf link-tp-id { | ||||
|             //type te-tp-id; | ||||
|             type string; | ||||
|             description | ||||
|               "TE link termination point identifier. The combination | ||||
|               of TE link ID and the TE node ID is used to identify an | ||||
|               unnumbered TE link."; | ||||
|           } | ||||
|           leaf hop-type { | ||||
|             type te-hop-type; | ||||
|             description "strict or loose hop"; | ||||
|           } | ||||
|           description | ||||
|             "Numbered and Unnumbered link/node explicit route | ||||
|             subobject"; | ||||
|         } | ||||
|       } | ||||
|       case label { | ||||
|         container label-hop { | ||||
|           description "Label hop type"; | ||||
|           uses effective-freq-slot; | ||||
|         } | ||||
|         description | ||||
|           "The Label ERO subobject"; | ||||
|       } | ||||
|       case hop-attribute{ | ||||
|         uses gnpypc:hop-attribute ; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping common-constraints_config { | ||||
|     description | ||||
|       "Common constraints grouping that can be set on | ||||
|        a constraint set or directly on the tunnel"; | ||||
|  | ||||
|     container te-bandwidth { | ||||
|       uses gnpy-specific-parameters ; | ||||
|       description | ||||
|         "A requested bandwidth to use for path computation"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping end-points { | ||||
|     description | ||||
|       "Common grouping to define the TE tunnel end-points"; | ||||
|  | ||||
|     leaf source { | ||||
|       type string; | ||||
|       description "TE tunnel source address."; | ||||
|     } | ||||
|     leaf destination { | ||||
|       type string; | ||||
|       description "P2P tunnel destination address"; | ||||
|     } | ||||
|     leaf src-tp-id { | ||||
|       type string; | ||||
|       description "TE tunnel source termination point identifier."; | ||||
|     } | ||||
|     leaf dst-tp-id { | ||||
|       type string; | ||||
|       description "TE tunnel destination termination point | ||||
|     identifier."; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping synchronization-info { | ||||
|     description "Information for sync"; | ||||
|     list synchronization { | ||||
|       key "synchronization-id"; | ||||
|       description "sync list"; | ||||
|       leaf synchronization-id { | ||||
|         type string; | ||||
|         description "index"; | ||||
|       } | ||||
|       container svec { | ||||
|         description | ||||
|          "Synchronization VECtor"; | ||||
|         leaf relaxable { | ||||
|           type boolean; | ||||
|           default true; | ||||
|           description | ||||
|             "If this leaf is true, path computation process is free | ||||
|             to ignore svec content. | ||||
|             otherwise it must take into account this svec."; | ||||
|         } | ||||
|         uses generic-path-disjointness; | ||||
|         leaf-list request-id-number { | ||||
|           type string; | ||||
|           description "This list reports the set of M path computation requests that must be synchronized."; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping path-metric { | ||||
|     description "TE path metric type"; | ||||
|     leaf metric-type { | ||||
|       type identityref { | ||||
|         base path-metric-type; | ||||
|       } | ||||
|       description "TE path metric type"; | ||||
|     } | ||||
|     leaf accumulative-value { | ||||
|       type decimal64 { | ||||
|           fraction-digits 2; | ||||
|       } | ||||
|       description "TE path metric accumulative value"; | ||||
|     } | ||||
|   } | ||||
|   grouping generic-path-properties { | ||||
|     description "TE generic path properties grouping"; | ||||
|     container path-properties { | ||||
|       config false; | ||||
|       description "The TE path properties"; | ||||
|       list path-metric { | ||||
|         key metric-type; | ||||
|         uses path-metric; | ||||
|       } | ||||
|       list z-a-path-metric { | ||||
|         key metric-type; | ||||
|         uses path-metric; | ||||
|       } | ||||
|       list path-route-objects { | ||||
|           description | ||||
|             "Container for the list of route objects either returned by | ||||
|              the computation engine or actually used by an LSP"; | ||||
|           container path-route-object { | ||||
|             description | ||||
|               "List of route objects either returned by the computation | ||||
|                engine or actually used by an LSP"; | ||||
|             uses explicit-route-hop; | ||||
|           } | ||||
|         } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping path-info { | ||||
|     uses generic-path-properties; | ||||
|     description "Path computation output information"; | ||||
|   } | ||||
|  | ||||
| // adding some blocking reasons and info on path in case of blocking | ||||
|  | ||||
|   grouping no-path-info { | ||||
|     description "no-path-info"; | ||||
|     container no-path { | ||||
|       presence "Response without path information, due to failure | ||||
|         performing the path computation"; | ||||
|       leaf no-path { | ||||
|         type string; | ||||
|         mandatory true ; | ||||
|         description | ||||
|           "returned blocking reasons: | ||||
|             NO_PATH | ||||
|             NO_COMPUTED_SNR | ||||
|             NO_FEASIBLE_BAUDRATE_WITH_SPACING | ||||
|             NO_PATH_WITH_CONSTRAINT | ||||
|             NO_FEASIBLE_MODE | ||||
|             MODE_NOT_FEASIBLE | ||||
|             NO_SPECTRUM | ||||
|           "; | ||||
|         } | ||||
|       uses generic-path-properties ; | ||||
|       description "if path computation cannot identify a path, | ||||
|         rpc returns no path."; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|    grouping service { | ||||
|      list path-request { | ||||
|        key "request-id"; | ||||
|        description "request-list"; | ||||
|        leaf request-id { | ||||
|          type string; | ||||
|          mandatory true; | ||||
|          description "Each path computation request is uniquely identified by the request-id-number."; | ||||
|        } | ||||
|        leaf bidirectional { | ||||
|          type boolean; | ||||
|          mandatory true; | ||||
|          description "Specify the bidirectionality of the path"; | ||||
|        } | ||||
|  | ||||
|        uses end-points; | ||||
|        uses path-route-objects; | ||||
|        uses generic-path-constraints; | ||||
|      } | ||||
|      uses synchronization-info; | ||||
|    } | ||||
|  | ||||
|    grouping result { | ||||
|      list response { | ||||
|        key response-id; | ||||
|        config false; | ||||
|        description "response"; | ||||
|        leaf response-id { | ||||
|          type string; | ||||
|          description | ||||
|          "The list key that has to reuse request-id-number."; | ||||
|        } | ||||
|        choice response-type { | ||||
|          config false; | ||||
|          description "response-type"; | ||||
|          case no-path-case { | ||||
|            uses no-path-info; | ||||
|          } | ||||
|          case path-case { | ||||
|            uses path-info; | ||||
|            description "Path computation service."; | ||||
|          } | ||||
|        } | ||||
|      } | ||||
|    } | ||||
| } | ||||
| @@ -1,632 +0,0 @@ | ||||
| module gnpy-path-computation { | ||||
|   yang-version 1.1; | ||||
|   namespace "gnpy:gnpy-path-computation"; | ||||
|  | ||||
|   prefix "gnpypc"; | ||||
|  | ||||
|     organization | ||||
|     "Telecom Infra Project OOPT PSE Working Group"; | ||||
|  | ||||
|   contact | ||||
|     "WG Web:   <https://github.com/Telecominfraproject/oopt-gnpy> | ||||
|      contact:  <mailto:ahmed.triki@orange.com> | ||||
|      contact:  <mailto:esther.lerouzic@orange.com> | ||||
|    "; | ||||
|  | ||||
|   description "YANG model for gnpy path computation simplified for - 2020 - candi preversion"; | ||||
|  | ||||
|   revision "2025-01-20" { | ||||
|     description  | ||||
|       "Add tx_power"; | ||||
|     reference  | ||||
|       "YANG model for path computation with gnpy inputs"; | ||||
|   } | ||||
|  | ||||
|   revision "2022-12-01" { | ||||
|     description  | ||||
|       "draft for detecon - GNPy API"; | ||||
|     reference  | ||||
|       "YANG model for path computation with gnpy inputs"; | ||||
|   } | ||||
|  | ||||
|   grouping effective-freq-slot{ | ||||
|          /* content copied from ietf-flexi-grid-media-channel, because only M and N are needed | ||||
|             from the initial grouping. | ||||
|          */ | ||||
|          description "The effective frequency slot is an attribute | ||||
|             of a media channel and, being a frequency slot, it is | ||||
|             described by its nominal central frequency and slot | ||||
|             width"; | ||||
|          reference "rfc7698"; | ||||
|             leaf N { | ||||
|               type union { | ||||
|                 type int32; | ||||
|                 type empty; | ||||
|               } | ||||
|               description | ||||
|                   "Is used to determine the Nominal Central | ||||
|                   Frequency. The set of nominal central frequencies | ||||
|                   can be built using the following expression: | ||||
|                      f = 193.1 THz + n x 0.00625 THz, | ||||
|                   where 193.1 THz is ITU-T ''anchor frequency'' for | ||||
|                   transmission over the C band, n is a positive or | ||||
|                   negative integer including 0."; | ||||
|                reference "rfc7698"; | ||||
|             } | ||||
|             leaf M { | ||||
|               type union { | ||||
|                 type uint32; | ||||
|                 type empty; | ||||
|               } | ||||
|               description | ||||
|                   "Is used to determine the slot width. A slot width | ||||
|                   is constrained to be M x SWG (that is, M x 12.5 GHz), | ||||
|                   where M is an integer greater than or equal to 1."; | ||||
|                reference "rfc7698"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping gnpy-specific-parameters{ | ||||
|     description | ||||
|       "This grouping defines the gnpy specific parameters for requests."; | ||||
|         leaf technology { | ||||
|             type string; | ||||
|             default "flexi-grid"; | ||||
|             description | ||||
|           "Data plane technology type."; | ||||
|           } | ||||
|       leaf trx_type { | ||||
|         type string ; | ||||
|         mandatory true; | ||||
|         description "name of the transceiver type (to be read from equipment library"; | ||||
|  | ||||
|       } | ||||
|       leaf trx_mode { | ||||
|         type union { | ||||
|           type string; | ||||
|           type empty; | ||||
|         } | ||||
|         description "name of the transceiver mode (to be read from equipment library"; | ||||
|  | ||||
|       } | ||||
|       list effective-freq-slot { | ||||
|         key "N"; | ||||
|         uses effective-freq-slot ; | ||||
|       } | ||||
|       leaf spacing { | ||||
|         mandatory true; | ||||
|         type decimal64 { | ||||
|           fraction-digits 1; | ||||
|         } | ||||
|         units Hz; | ||||
|         description | ||||
|           "It is the spacing between channels assuming full load with | ||||
|           same channels as the requested one. multiple of 12.5 GHz"; | ||||
|  | ||||
|       } | ||||
|       leaf max-nb-of-channel{ | ||||
|         type union { | ||||
|           type int32; | ||||
|           type empty; | ||||
|         } | ||||
|         description "Nb of channel to take into account for the full load case. | ||||
|         "; | ||||
|  | ||||
|       } | ||||
|       leaf output-power{ | ||||
|         type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 5; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|         units W; | ||||
|         description "optical power setting to be used for the propagation"; | ||||
|  | ||||
|       } | ||||
|       leaf tx_power{ | ||||
|         type union { | ||||
|           type decimal64 { | ||||
|             fraction-digits 5; | ||||
|           } | ||||
|           type empty; | ||||
|         } | ||||
|         units W; | ||||
|         description "optical power out of transceiver"; | ||||
|  | ||||
|       } | ||||
|       leaf path_bandwidth{ | ||||
|         type decimal64 { | ||||
|           fraction-digits 1; | ||||
|         } | ||||
|         mandatory true; | ||||
|         units bit/s; | ||||
|         description "Capacity required"; | ||||
|       } | ||||
|   } | ||||
|  | ||||
|   identity SNR-bandwidth { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records SNR in signal bandwidth"; | ||||
|   } | ||||
|  | ||||
|   identity OSNR-bandwidth { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records OSNR in signal bandwidth"; | ||||
|   } | ||||
|  | ||||
|   identity SNR-0.1nm { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records SNR in 0.1nm"; | ||||
|   } | ||||
|  | ||||
|   identity OSNR-0.1nm { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records OSNR in 0.1nm"; | ||||
|   } | ||||
|  | ||||
|   identity lowest_SNR-0.1nm { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records the lowest SNR in 0.1nm in spectrum"; | ||||
|   } | ||||
|  | ||||
|   identity PDL_penalty { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records the PDL penalty."; | ||||
|   } | ||||
|  | ||||
|   identity PMD_penalty { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records the PMD penalty."; | ||||
|   } | ||||
|  | ||||
|   identity CD_penalty { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "A metric that records the CD penalty."; | ||||
|   } | ||||
|  | ||||
|   identity reference_power { | ||||
|     base path-metric-type; | ||||
|     description | ||||
|       "to be revised"; | ||||
|   } | ||||
|  | ||||
|   identity path_bandwidth { | ||||
|      base path-metric-type; | ||||
|      description | ||||
|        "to be revised"; | ||||
|   } | ||||
|  | ||||
|   grouping transponder{ | ||||
|         leaf transponder-type { | ||||
|         type string ; | ||||
|         description | ||||
|           "transceiver type."; | ||||
|           } | ||||
|       leaf transponder-mode { | ||||
|         type string ; | ||||
|         description | ||||
|           "transceiver mode."; | ||||
|           } | ||||
|   } | ||||
|  | ||||
|   grouping hop-attribute{ | ||||
|     description | ||||
|       "This grouping defines the hop attribute parameters for request or response"; | ||||
|     choice hop-type{ | ||||
|       case tsp { | ||||
|         container transponder { | ||||
|           uses transponder ; | ||||
|         } | ||||
|       } | ||||
|       case regen { | ||||
|         container regenerator{ | ||||
|           leaf regenerator-id{ | ||||
|             type string ; | ||||
|           } | ||||
|           uses transponder ; | ||||
|         } | ||||
|       } | ||||
|       case pow { | ||||
|         container optical-power{ | ||||
|           leaf optical-power{ | ||||
|             type decimal64 { | ||||
|               fraction-digits 5; | ||||
|             } | ||||
|             units W; | ||||
|             description "not used yet. hop output (input??) power"; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|   } | ||||
|  | ||||
|   identity no-path-type { | ||||
|     description | ||||
|     "base for blocking reasons"; | ||||
|   } | ||||
|  | ||||
|   identity NO_PATH { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|   identity NO_PATH_WITH_CONSTRAINT { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|   identity NO_FEASIBLE_BAUDRATE_WITH_SPACING { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|   identity NO_COMPUTED_SNR { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|   identity MODE_NOT_FEASIBLE { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|   identity NO_FEASIBLE_MODE { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|   identity NO_SPECTRUM { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|   identity NOT_ENOUGH_RESERVED_SPECTRUM { | ||||
|     base no-path-type; | ||||
|   } | ||||
|  | ||||
|  | ||||
|   identity path-metric-type { | ||||
|     description | ||||
|       "Base identity for path metric type"; | ||||
|   } | ||||
|  | ||||
|   identity route-usage-type { | ||||
|     description | ||||
|       "Base identity for route usage"; | ||||
|   } | ||||
|  | ||||
|   identity route-include-ero { | ||||
|     base route-usage-type; | ||||
|     description | ||||
|       "Include ERO from route"; | ||||
|   } | ||||
|  | ||||
|   identity route-exclude-ero { | ||||
|     base route-usage-type; | ||||
|     description | ||||
|       "Exclude ERO from route"; | ||||
|   } | ||||
|  | ||||
|   identity route-exclude-srlg { | ||||
|     base route-usage-type; | ||||
|     description | ||||
|       "Exclude SRLG from route"; | ||||
|   } | ||||
|  | ||||
|   typedef te-hop-type { | ||||
|     type enumeration { | ||||
|       enum LOOSE { | ||||
|         description | ||||
|           "loose hop in an explicit path"; | ||||
|       } | ||||
|       enum STRICT { | ||||
|         description | ||||
|           "strict hop in an explicit path"; | ||||
|       } | ||||
|     } | ||||
|     description | ||||
|      "enumerated type for specifying loose or strict | ||||
|       paths"; | ||||
|     reference "RFC3209: section-4.3.2"; | ||||
|   } | ||||
|  | ||||
|   typedef te-path-disjointness { | ||||
|     type bits { | ||||
|       bit node { | ||||
|         position 0; | ||||
|         description "Node disjoint."; | ||||
|       } | ||||
|       bit link { | ||||
|         position 1; | ||||
|         description "Link disjoint."; | ||||
|       } | ||||
|       bit srlg { | ||||
|         position 2; | ||||
|         description "SRLG (Shared Risk Link Group) disjoint."; | ||||
|       } | ||||
|     } | ||||
|     description | ||||
|       "Type of the resource disjointness for a TE tunnel path."; | ||||
|     reference | ||||
|       "RFC4872: RSVP-TE Extensions in Support of End-to-End | ||||
|        Generalized Multi-Protocol Label Switching (GMPLS) | ||||
|        Recovery"; | ||||
|   } // te-path-disjointness | ||||
|  | ||||
|     typedef accumulated-metric-type { | ||||
|       type union { | ||||
|         type uint64; | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|       } | ||||
|       description | ||||
|           "type useable for accumulative-value"; | ||||
|   } | ||||
|  | ||||
|   grouping path-route-objects { | ||||
|     description | ||||
|       "List of EROs to be included or excluded when performing | ||||
|        the path computation."; | ||||
|     container explicit-route-objects { | ||||
|       description | ||||
|         "Container for the route object list"; | ||||
|       list route-object-include-exclude { | ||||
|         description | ||||
|           "List of explicit route objects to include or | ||||
|            exclude in path computation"; | ||||
|         leaf explicit-route-usage { | ||||
|           type identityref { | ||||
|             base route-usage-type; | ||||
|           } | ||||
|           description "Explicit-route usage."; | ||||
|         } | ||||
|         key "index"; | ||||
|         uses explicit-route-hop ; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping generic-path-disjointness { | ||||
|     description "Path disjointness grouping"; | ||||
|     leaf disjointness { | ||||
|       type te-path-disjointness; | ||||
|       description | ||||
|         "The type of resource disjointness. | ||||
|          Under primary path, disjointness level applies to | ||||
|          all secondary LSPs. Under secondary, disjointness | ||||
|          level overrides the one under primary"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping common-path-constraints-attributes { | ||||
|     description | ||||
|       "Common path constraints configuration grouping"; | ||||
|     uses common-constraints_config; | ||||
|   } | ||||
|  | ||||
|   grouping generic-path-constraints { | ||||
|     description | ||||
|       "Global named path constraints configuration | ||||
|       grouping"; | ||||
|     container path-constraints { | ||||
|       description "TE named path constraints container"; | ||||
|       uses common-path-constraints-attributes; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|   grouping explicit-route-hop { | ||||
|     description | ||||
|       "The explicit route subobject grouping"; | ||||
|     leaf index { | ||||
|       type uint32; | ||||
|       description "ERO subobject index"; | ||||
|     } | ||||
|     choice subobject-type { | ||||
|       description | ||||
|         "The explicit route subobject type"; | ||||
|       case num-unnum-hop { | ||||
|         container num-unnum-hop { | ||||
|           leaf node-id { | ||||
|             //type te-node-id; | ||||
|             type string; | ||||
|             description | ||||
|               "The identifier of a node in the TE topology."; | ||||
|           } | ||||
|           leaf link-tp-id { | ||||
|             //type te-tp-id; | ||||
|             type string; | ||||
|             description | ||||
|               "TE link termination point identifier. The combination | ||||
|               of TE link ID and the TE node ID is used to identify an | ||||
|               unnumbered TE link."; | ||||
|           } | ||||
|           leaf hop-type { | ||||
|             type te-hop-type; | ||||
|             description "strict or loose hop"; | ||||
|           } | ||||
|           description | ||||
|             "Numbered and Unnumbered link/node explicit route | ||||
|             subobject"; | ||||
|         } | ||||
|       } | ||||
|       case label { | ||||
|         list label-hop { | ||||
|           description "Label hop type"; | ||||
|           config false; | ||||
|           uses effective-freq-slot; | ||||
|         } | ||||
|         description | ||||
|           "The Label ERO subobject"; | ||||
|       } | ||||
|       case hop-attribute{ | ||||
|         uses gnpypc:hop-attribute ; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping common-constraints_config { | ||||
|     description | ||||
|       "Common constraints grouping that can be set on | ||||
|        a constraint set or directly on the tunnel"; | ||||
|  | ||||
|     container te-bandwidth { | ||||
|       uses gnpy-specific-parameters ; | ||||
|       description | ||||
|         "A requested bandwidth to use for path computation"; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping end-points { | ||||
|     description | ||||
|       "Common grouping to define the TE tunnel end-points"; | ||||
|  | ||||
|     leaf source { | ||||
|       type string; | ||||
|       description "TE tunnel source address."; | ||||
|     } | ||||
|     leaf destination { | ||||
|       type string; | ||||
|       description "P2P tunnel destination address"; | ||||
|     } | ||||
|     leaf src-tp-id { | ||||
|       type string; | ||||
|       description "TE tunnel source termination point identifier."; | ||||
|     } | ||||
|     leaf dst-tp-id { | ||||
|       type string; | ||||
|       description "TE tunnel destination termination point | ||||
|     identifier."; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping synchronization-info { | ||||
|     description "Information for sync"; | ||||
|     list synchronization { | ||||
|       key "synchronization-id"; | ||||
|       description "sync list"; | ||||
|       leaf synchronization-id { | ||||
|         type string; | ||||
|         description "index"; | ||||
|       } | ||||
|       container svec { | ||||
|         description | ||||
|          "Synchronization VECtor"; | ||||
|         leaf relaxable { | ||||
|           type boolean; | ||||
|           default true; | ||||
|           description | ||||
|             "If this leaf is true, path computation process is free | ||||
|             to ignore svec content. | ||||
|             otherwise it must take into account this svec."; | ||||
|         } | ||||
|         uses generic-path-disjointness; | ||||
|         leaf-list request-id-number { | ||||
|           type string; | ||||
|           description "This list reports the set of M path computation requests that must be synchronized."; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|    grouping service { | ||||
|      list path-request { | ||||
|        key "request-id"; | ||||
|        description "request-list"; | ||||
|        leaf request-id { | ||||
|          type string; | ||||
|          mandatory true; | ||||
|          description "Each path computation request is uniquely identified by the request-id-number."; | ||||
|        } | ||||
|        leaf bidirectional { | ||||
|          type boolean; | ||||
|          mandatory true; | ||||
|          description "Specify the bidirectionality of the path"; | ||||
|        } | ||||
|  | ||||
|        uses end-points; | ||||
|        uses path-route-objects; | ||||
|        uses generic-path-constraints; | ||||
|      } | ||||
|      uses synchronization-info; | ||||
|    } | ||||
|  | ||||
|   grouping accumulated-metric-object { | ||||
|     leaf metric-type { | ||||
|       type identityref { | ||||
|         base path-metric-type; | ||||
|       } | ||||
|     } | ||||
|     leaf accumulative-value { | ||||
|       type union { | ||||
|         type decimal64 { | ||||
|           fraction-digits 1; | ||||
|         } | ||||
|         type decimal64 { | ||||
|           fraction-digits 2; | ||||
|         } | ||||
|         type decimal64 { | ||||
|           fraction-digits 6; | ||||
|         } | ||||
|         type string; | ||||
|       }         | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping response-path-property { | ||||
|     list path-metric { | ||||
|       uses accumulated-metric-object; | ||||
|     } | ||||
|     list z-a-path-metric { | ||||
|       uses accumulated-metric-object; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping response-path-route-object { | ||||
|     list path-route-objects { | ||||
|       container path-route-object { | ||||
|         uses explicit-route-hop ; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|   grouping response { | ||||
|     list response { | ||||
|       config false; | ||||
|       key response-id; | ||||
|       leaf response-id { | ||||
|          type string; | ||||
|          mandatory true; | ||||
|          description "Each path computation response is uniquely identified by the response-id number."; | ||||
|       } | ||||
|       container path-properties { | ||||
|         uses response-path-property; | ||||
|         uses response-path-route-object; | ||||
|       } | ||||
|       container no-path { | ||||
|         leaf no-path { | ||||
|           type identityref { | ||||
|             base no-path-type; | ||||
|           } | ||||
|         } | ||||
|         container path-properties { | ||||
|           uses response-path-property; | ||||
|           uses response-path-route-object; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   container services { | ||||
|      uses service; | ||||
|   } | ||||
|  | ||||
|   container responses { | ||||
|     uses response; | ||||
|   } | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,771 +0,0 @@ | ||||
| module ietf-routing-types { | ||||
|   namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; | ||||
|   prefix rt-types; | ||||
|  | ||||
|   import ietf-yang-types { | ||||
|     prefix yang; | ||||
|   } | ||||
|   import ietf-inet-types { | ||||
|     prefix inet; | ||||
|   } | ||||
|  | ||||
|   organization | ||||
|     "IETF RTGWG - Routing Area Working Group"; | ||||
|   contact | ||||
|     "WG Web:   <https://datatracker.ietf.org/wg/rtgwg/> | ||||
|      WG List:  <mailto:rtgwg@ietf.org> | ||||
|  | ||||
|      Editors:  Xufeng Liu | ||||
|                <mailto:Xufeng_Liu@jabail.com> | ||||
|                Yingzhen Qu | ||||
|                <mailto:yingzhen.qu@huawei.com> | ||||
|                Acee Lindem | ||||
|                <mailto:acee@cisco.com> | ||||
|                Christian Hopps | ||||
|                <mailto:chopps@chopps.org> | ||||
|                Lou Berger | ||||
|                <mailto:lberger@labn.com>"; | ||||
|  | ||||
|   description | ||||
|     "This module contains a collection of YANG data types | ||||
|      considered generally useful for routing protocols. | ||||
|  | ||||
|      Copyright (c) 2017 IETF Trust and the persons | ||||
|      identified as authors of the code.  All rights reserved. | ||||
|  | ||||
|      Redistribution and use in source and binary forms, with or | ||||
|      without modification, is permitted pursuant to, and subject | ||||
|      to the license terms contained in, the Simplified BSD License | ||||
|      set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
|      Relating to IETF Documents | ||||
|      (https://trustee.ietf.org/license-info). | ||||
|  | ||||
|      This version of this YANG module is part of RFC 8294; see | ||||
|      the RFC itself for full legal notices."; | ||||
|    revision 2017-12-04 { | ||||
|      description "Initial revision."; | ||||
|      reference | ||||
|        "RFC 8294: Common YANG Data Types for the Routing Area. | ||||
|         Section 3."; | ||||
|   } | ||||
|  | ||||
|   /*** Identities related to MPLS/GMPLS ***/ | ||||
|  | ||||
|   identity mpls-label-special-purpose-value { | ||||
|     description | ||||
|       "Base identity for deriving identities describing | ||||
|        special-purpose Multiprotocol Label Switching (MPLS) label | ||||
|        values."; | ||||
|     reference | ||||
|       "RFC 7274: Allocating and Retiring Special-Purpose MPLS | ||||
|        Labels."; | ||||
|   } | ||||
|  | ||||
|   identity ipv4-explicit-null-label { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the IPv4 Explicit NULL Label."; | ||||
|     reference | ||||
|       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||
|   } | ||||
|  | ||||
|   identity router-alert-label { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the Router Alert Label."; | ||||
|     reference | ||||
|       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||
|   } | ||||
|  | ||||
|   identity ipv6-explicit-null-label { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the IPv6 Explicit NULL Label."; | ||||
|     reference | ||||
|       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||
|   } | ||||
|  | ||||
|   identity implicit-null-label { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the Implicit NULL Label."; | ||||
|     reference | ||||
|       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||
|   } | ||||
|  | ||||
|   identity entropy-label-indicator { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the Entropy Label Indicator."; | ||||
|     reference | ||||
|       "RFC 6790: The Use of Entropy Labels in MPLS Forwarding. | ||||
|        Sections 3 and 10.1."; | ||||
|   } | ||||
|  | ||||
|   identity gal-label { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the Generic Associated Channel | ||||
|        (G-ACh) Label (GAL)."; | ||||
|     reference | ||||
|       "RFC 5586: MPLS Generic Associated Channel. | ||||
|        Sections 4 and 10."; | ||||
|   } | ||||
|  | ||||
|   identity oam-alert-label { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the OAM Alert Label."; | ||||
|     reference | ||||
|       "RFC 3429: Assignment of the 'OAM Alert Label' for | ||||
|        Multiprotocol Label Switching Architecture (MPLS) | ||||
|        Operation and Maintenance (OAM) Functions. | ||||
|        Sections 3 and 6."; | ||||
|   } | ||||
|  | ||||
|   identity extension-label { | ||||
|     base mpls-label-special-purpose-value; | ||||
|     description | ||||
|       "This identity represents the Extension Label."; | ||||
|     reference | ||||
|       "RFC 7274: Allocating and Retiring Special-Purpose MPLS | ||||
|        Labels.  Sections 3.1 and 5."; | ||||
|   } | ||||
|  | ||||
|   /*** Collection of types related to routing ***/ | ||||
|  | ||||
|   typedef router-id { | ||||
|     type yang:dotted-quad; | ||||
|     description | ||||
|       "A 32-bit number in the dotted-quad format assigned to each | ||||
|        router.  This number uniquely identifies the router within | ||||
|        an Autonomous System."; | ||||
|   } | ||||
|  | ||||
|   /*** Collection of types related to VPNs ***/ | ||||
|  | ||||
|   typedef route-target { | ||||
|     type string { | ||||
|       pattern | ||||
|         '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|       +     '6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' | ||||
|       +     '42949672[0-8][0-9]|' | ||||
|       +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | ||||
|       +     '42949[0-5][0-9]{4}|' | ||||
|       +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | ||||
|       +     '42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
|       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' | ||||
|       + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | ||||
|       +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | ||||
|       +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | ||||
|       +     '655[0-2][0-9]|' | ||||
|       +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||
|       + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||
|       +     '4294967[01][0-9]{2}|' | ||||
|       +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||
|       +     '4294[0-8][0-9]{5}|' | ||||
|       +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
|       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' | ||||
|       +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|       +     '6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||
|       + '(6(:[a-fA-F0-9]{2}){6})|' | ||||
|       + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||
|       +     '[0-9a-fA-F]{1,12})'; | ||||
|     } | ||||
|  | ||||
|     description | ||||
|       "A Route Target is an 8-octet BGP extended community | ||||
|        initially identifying a set of sites in a BGP VPN | ||||
|        (RFC 4364).  However, it has since taken on a more general | ||||
|        role in BGP route filtering.  A Route Target consists of two | ||||
|        or three fields: a 2-octet Type field, an administrator | ||||
|        field, and, optionally, an assigned number field. | ||||
|  | ||||
|        According to the data formats for types 0, 1, 2, and 6 as | ||||
|        defined in RFC 4360, RFC 5668, and RFC 7432, the encoding | ||||
|        pattern is defined as: | ||||
|  | ||||
|        0:2-octet-asn:4-octet-number | ||||
|        1:4-octet-ipv4addr:2-octet-number | ||||
|        2:4-octet-asn:2-octet-number | ||||
|        6:6-octet-mac-address | ||||
|  | ||||
|        Additionally, a generic pattern is defined for future | ||||
|        Route Target types: | ||||
|  | ||||
|        2-octet-other-hex-number:6-octet-hex-number | ||||
|  | ||||
|        Some valid examples are 0:100:100, 1:1.1.1.1:100, | ||||
|        2:1234567890:203, and 6:26:00:08:92:78:00."; | ||||
|     reference | ||||
|       "RFC 4360: BGP Extended Communities Attribute. | ||||
|        RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||
|        RFC 5668: 4-Octet AS Specific BGP Extended Community. | ||||
|        RFC 7432: BGP MPLS-Based Ethernet VPN."; | ||||
|   } | ||||
|  | ||||
|   typedef ipv6-route-target { | ||||
|     type string { | ||||
|       pattern | ||||
|           '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | ||||
|           + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | ||||
|           + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' | ||||
|           + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' | ||||
|           + ':' | ||||
|           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|           + '6[0-4][0-9]{3}|' | ||||
|           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||
|       pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | ||||
|           + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | ||||
|           + ':' | ||||
|           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|           + '6[0-4][0-9]{3}|' | ||||
|           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||
|     } | ||||
|     description | ||||
|       "An IPv6 Route Target is a 20-octet BGP IPv6 Address | ||||
|        Specific Extended Community serving the same function | ||||
|        as a standard 8-octet Route Target, except that it only | ||||
|        allows an IPv6 address as the global administrator. | ||||
|        The format is <ipv6-address:2-octet-number>. | ||||
|  | ||||
|        Two valid examples are 2001:db8::1:6544 and | ||||
|        2001:db8::5eb1:791:6b37:17958."; | ||||
|     reference | ||||
|       "RFC 5701: IPv6 Address Specific BGP Extended Community | ||||
|        Attribute."; | ||||
|   } | ||||
|  | ||||
|   typedef route-target-type { | ||||
|     type enumeration { | ||||
|       enum import { | ||||
|         value 0; | ||||
|         description | ||||
|           "The Route Target applies to route import."; | ||||
|       } | ||||
|       enum export { | ||||
|         value 1; | ||||
|         description | ||||
|           "The Route Target applies to route export."; | ||||
|       } | ||||
|  | ||||
|       enum both { | ||||
|         value 2; | ||||
|         description | ||||
|           "The Route Target applies to both route import and | ||||
|            route export."; | ||||
|       } | ||||
|     } | ||||
|     description | ||||
|       "Indicates the role a Route Target takes in route filtering."; | ||||
|     reference | ||||
|       "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; | ||||
|   } | ||||
|  | ||||
|   typedef route-distinguisher { | ||||
|     type string { | ||||
|       pattern | ||||
|         '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|       +     '6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' | ||||
|       +     '42949672[0-8][0-9]|' | ||||
|       +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | ||||
|       +     '42949[0-5][0-9]{4}|' | ||||
|       +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | ||||
|       +     '42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
|       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' | ||||
|       + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | ||||
|       +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | ||||
|       +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | ||||
|       +     '655[0-2][0-9]|' | ||||
|       +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||
|       + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||
|       +     '4294967[01][0-9]{2}|' | ||||
|       +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||
|       +     '4294[0-8][0-9]{5}|' | ||||
|       +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
|       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' | ||||
|       +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|       +     '6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||
|       + '(6(:[a-fA-F0-9]{2}){6})|' | ||||
|       + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||
|       +     '[0-9a-fA-F]{1,12})'; | ||||
|     } | ||||
|  | ||||
|     description | ||||
|       "A Route Distinguisher is an 8-octet value used to | ||||
|        distinguish routes from different BGP VPNs (RFC 4364). | ||||
|        A Route Distinguisher will have the same format as a | ||||
|        Route Target as per RFC 4360 and will consist of | ||||
|        two or three fields: a 2-octet Type field, an administrator | ||||
|        field, and, optionally, an assigned number field. | ||||
|  | ||||
|        According to the data formats for types 0, 1, 2, and 6 as | ||||
|        defined in RFC 4360, RFC 5668, and RFC 7432, the encoding | ||||
|        pattern is defined as: | ||||
|  | ||||
|        0:2-octet-asn:4-octet-number | ||||
|        1:4-octet-ipv4addr:2-octet-number | ||||
|        2:4-octet-asn:2-octet-number | ||||
|        6:6-octet-mac-address | ||||
|  | ||||
|        Additionally, a generic pattern is defined for future | ||||
|        route discriminator types: | ||||
|  | ||||
|        2-octet-other-hex-number:6-octet-hex-number | ||||
|  | ||||
|        Some valid examples are 0:100:100, 1:1.1.1.1:100, | ||||
|        2:1234567890:203, and 6:26:00:08:92:78:00."; | ||||
|     reference | ||||
|       "RFC 4360: BGP Extended Communities Attribute. | ||||
|        RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||
|        RFC 5668: 4-Octet AS Specific BGP Extended Community. | ||||
|        RFC 7432: BGP MPLS-Based Ethernet VPN."; | ||||
|   } | ||||
|  | ||||
|   typedef route-origin { | ||||
|     type string { | ||||
|       pattern | ||||
|         '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|       +     '6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' | ||||
|       +     '42949672[0-8][0-9]|' | ||||
|       +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | ||||
|       +     '42949[0-5][0-9]{4}|' | ||||
|       +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | ||||
|       +     '42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
|       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' | ||||
|       + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | ||||
|       +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | ||||
|       +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | ||||
|       +     '655[0-2][0-9]|' | ||||
|       +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||
|       + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||
|       +     '4294967[01][0-9]{2}|' | ||||
|       +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||
|       +     '4294[0-8][0-9]{5}|' | ||||
|       +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||
|       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' | ||||
|       +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|       +     '6[0-4][0-9]{3}|' | ||||
|       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||
|       + '(6(:[a-fA-F0-9]{2}){6})|' | ||||
|       + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||
|       +    '[0-9a-fA-F]{1,12})'; | ||||
|     } | ||||
|     description | ||||
|       "A Route Origin is an 8-octet BGP extended community | ||||
|        identifying the set of sites where the BGP route | ||||
|        originated (RFC 4364).  A Route Origin will have the same | ||||
|        format as a Route Target as per RFC 4360 and will consist | ||||
|        of two or three fields: a 2-octet Type field, an | ||||
|        administrator field, and, optionally, an assigned number | ||||
|        field. | ||||
|  | ||||
|        According to the data formats for types 0, 1, 2, and 6 as | ||||
|        defined in RFC 4360, RFC 5668, and RFC 7432, the encoding | ||||
|        pattern is defined as: | ||||
|  | ||||
|        0:2-octet-asn:4-octet-number | ||||
|        1:4-octet-ipv4addr:2-octet-number | ||||
|        2:4-octet-asn:2-octet-number | ||||
|        6:6-octet-mac-address | ||||
|        Additionally, a generic pattern is defined for future | ||||
|        Route Origin types: | ||||
|  | ||||
|        2-octet-other-hex-number:6-octet-hex-number | ||||
|  | ||||
|        Some valid examples are 0:100:100, 1:1.1.1.1:100, | ||||
|        2:1234567890:203, and 6:26:00:08:92:78:00."; | ||||
|     reference | ||||
|       "RFC 4360: BGP Extended Communities Attribute. | ||||
|        RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||
|        RFC 5668: 4-Octet AS Specific BGP Extended Community. | ||||
|        RFC 7432: BGP MPLS-Based Ethernet VPN."; | ||||
|   } | ||||
|  | ||||
|   typedef ipv6-route-origin { | ||||
|     type string { | ||||
|       pattern | ||||
|           '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | ||||
|           + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | ||||
|           + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' | ||||
|           + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' | ||||
|           + ':' | ||||
|           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|           + '6[0-4][0-9]{3}|' | ||||
|           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||
|       pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | ||||
|           + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | ||||
|           + ':' | ||||
|           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||
|           + '6[0-4][0-9]{3}|' | ||||
|           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||
|     } | ||||
|     description | ||||
|       "An IPv6 Route Origin is a 20-octet BGP IPv6 Address | ||||
|        Specific Extended Community serving the same function | ||||
|        as a standard 8-octet route, except that it only allows | ||||
|        an IPv6 address as the global administrator.  The format | ||||
|        is <ipv6-address:2-octet-number>. | ||||
|  | ||||
|        Two valid examples are 2001:db8::1:6544 and | ||||
|        2001:db8::5eb1:791:6b37:17958."; | ||||
|     reference | ||||
|       "RFC 5701: IPv6 Address Specific BGP Extended Community | ||||
|        Attribute."; | ||||
|   } | ||||
|  | ||||
|   /*** Collection of types common to multicast ***/ | ||||
|  | ||||
|   typedef ipv4-multicast-group-address { | ||||
|     type inet:ipv4-address { | ||||
|       pattern '(2((2[4-9])|(3[0-9]))\.).*'; | ||||
|     } | ||||
|     description | ||||
|       "This type represents an IPv4 multicast group address, | ||||
|        which is in the range of 224.0.0.0 to 239.255.255.255."; | ||||
|     reference | ||||
|       "RFC 1112: Host Extensions for IP Multicasting."; | ||||
|   } | ||||
|  | ||||
|   typedef ipv6-multicast-group-address { | ||||
|     type inet:ipv6-address { | ||||
|       pattern '(([fF]{2}[0-9a-fA-F]{2}):).*'; | ||||
|     } | ||||
|     description | ||||
|       "This type represents an IPv6 multicast group address, | ||||
|        which is in the range of ff00::/8."; | ||||
|     reference | ||||
|       "RFC 4291: IP Version 6 Addressing Architecture.  Section 2.7. | ||||
|        RFC 7346: IPv6 Multicast Address Scopes."; | ||||
|   } | ||||
|  | ||||
|   typedef ip-multicast-group-address { | ||||
|     type union { | ||||
|       type ipv4-multicast-group-address; | ||||
|       type ipv6-multicast-group-address; | ||||
|     } | ||||
|     description | ||||
|       "This type represents a version-neutral IP multicast group | ||||
|        address.  The format of the textual representation implies | ||||
|        the IP version."; | ||||
|   } | ||||
|  | ||||
|   typedef ipv4-multicast-source-address { | ||||
|     type union { | ||||
|       type enumeration { | ||||
|         enum * { | ||||
|           description | ||||
|             "Any source address."; | ||||
|         } | ||||
|       } | ||||
|       type inet:ipv4-address; | ||||
|     } | ||||
|     description | ||||
|       "Multicast source IPv4 address type."; | ||||
|   } | ||||
|  | ||||
|   typedef ipv6-multicast-source-address { | ||||
|     type union { | ||||
|       type enumeration { | ||||
|         enum * { | ||||
|           description | ||||
|             "Any source address."; | ||||
|         } | ||||
|       } | ||||
|       type inet:ipv6-address; | ||||
|     } | ||||
|     description | ||||
|       "Multicast source IPv6 address type."; | ||||
|   } | ||||
|  | ||||
|   /*** Collection of types common to protocols ***/ | ||||
|  | ||||
|   typedef bandwidth-ieee-float32 { | ||||
|     type string { | ||||
|       pattern | ||||
|         '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' | ||||
|       + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' | ||||
|       + '1[01][0-9]|0?[0-9]?[0-9])?)'; | ||||
|     } | ||||
|     description | ||||
|       "Bandwidth in IEEE 754 floating-point 32-bit binary format: | ||||
|        (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), | ||||
|        where Exponent uses 8 bits and Fraction uses 23 bits. | ||||
|        The units are octets per second. | ||||
|        The encoding format is the external hexadecimal-significant | ||||
|        character sequences specified in IEEE 754 and ISO/IEC C99. | ||||
|        The format is restricted to be normalized, non-negative, and | ||||
|        non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0, | ||||
|        where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are | ||||
|        integers in the range of [0..127]. | ||||
|        When six hexadecimal digits are used for 'hhhhhh' or | ||||
|        'HHHHHH', the least significant digit must be an even | ||||
|        number.  'x' and 'X' indicate hexadecimal; 'p' and 'P' | ||||
|        indicate a power of two.  Some examples are 0x0p0, 0x1p10, | ||||
|        and 0x1.abcde2p+20."; | ||||
|     reference | ||||
|       "IEEE Std 754-2008: IEEE Standard for Floating-Point | ||||
|        Arithmetic. | ||||
|        ISO/IEC C99: Information technology - Programming | ||||
|        Languages - C."; | ||||
|   } | ||||
|  | ||||
|   typedef link-access-type { | ||||
|     type enumeration { | ||||
|       enum broadcast { | ||||
|         description | ||||
|           "Specify broadcast multi-access network."; | ||||
|       } | ||||
|       enum non-broadcast-multiaccess { | ||||
|         description | ||||
|           "Specify Non-Broadcast Multi-Access (NBMA) network."; | ||||
|       } | ||||
|       enum point-to-multipoint { | ||||
|         description | ||||
|           "Specify point-to-multipoint network."; | ||||
|       } | ||||
|       enum point-to-point { | ||||
|         description | ||||
|           "Specify point-to-point network."; | ||||
|       } | ||||
|     } | ||||
|     description | ||||
|       "Link access type."; | ||||
|   } | ||||
|  | ||||
|   typedef timer-multiplier { | ||||
|     type uint8; | ||||
|     description | ||||
|       "The number of timer value intervals that should be | ||||
|        interpreted as a failure."; | ||||
|   } | ||||
|  | ||||
|   typedef timer-value-seconds16 { | ||||
|     type union { | ||||
|       type uint16 { | ||||
|         range "1..65535"; | ||||
|       } | ||||
|       type enumeration { | ||||
|         enum infinity { | ||||
|           description | ||||
|             "The timer is set to infinity."; | ||||
|         } | ||||
|         enum not-set { | ||||
|           description | ||||
|             "The timer is not set."; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     units "seconds"; | ||||
|     description | ||||
|       "Timer value type, in seconds (16-bit range)."; | ||||
|   } | ||||
|  | ||||
|   typedef timer-value-seconds32 { | ||||
|     type union { | ||||
|       type uint32 { | ||||
|         range "1..4294967295"; | ||||
|       } | ||||
|       type enumeration { | ||||
|         enum infinity { | ||||
|           description | ||||
|             "The timer is set to infinity."; | ||||
|         } | ||||
|         enum not-set { | ||||
|           description | ||||
|             "The timer is not set."; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     units "seconds"; | ||||
|     description | ||||
|       "Timer value type, in seconds (32-bit range)."; | ||||
|   } | ||||
|  | ||||
|   typedef timer-value-milliseconds { | ||||
|     type union { | ||||
|       type uint32 { | ||||
|         range "1..4294967295"; | ||||
|       } | ||||
|       type enumeration { | ||||
|         enum infinity { | ||||
|           description | ||||
|             "The timer is set to infinity."; | ||||
|         } | ||||
|         enum not-set { | ||||
|           description | ||||
|             "The timer is not set."; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     units "milliseconds"; | ||||
|     description | ||||
|       "Timer value type, in milliseconds."; | ||||
|   } | ||||
|  | ||||
|   typedef percentage { | ||||
|     type uint8 { | ||||
|       range "0..100"; | ||||
|     } | ||||
|     description | ||||
|       "Integer indicating a percentage value."; | ||||
|   } | ||||
|  | ||||
|   typedef timeticks64 { | ||||
|     type uint64; | ||||
|     description | ||||
|       "This type is based on the timeticks type defined in | ||||
|        RFC 6991, but with 64-bit width.  It represents the time, | ||||
|        modulo 2^64, in hundredths of a second between two epochs."; | ||||
|     reference | ||||
|       "RFC 6991: Common YANG Data Types."; | ||||
|   } | ||||
|  | ||||
|   typedef uint24 { | ||||
|     type uint32 { | ||||
|       range "0..16777215"; | ||||
|     } | ||||
|     description | ||||
|       "24-bit unsigned integer."; | ||||
|   } | ||||
|  | ||||
|   /*** Collection of types related to MPLS/GMPLS ***/ | ||||
|  | ||||
|   typedef generalized-label { | ||||
|     type binary; | ||||
|     description | ||||
|       "Generalized Label.  Nodes sending and receiving the | ||||
|        Generalized Label are aware of the link-specific | ||||
|        label context and type."; | ||||
|     reference | ||||
|       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) | ||||
|        Signaling Functional Description.  Section 3.2."; | ||||
|   } | ||||
|  | ||||
|   typedef mpls-label-special-purpose { | ||||
|     type identityref { | ||||
|       base mpls-label-special-purpose-value; | ||||
|     } | ||||
|     description | ||||
|       "This type represents the special-purpose MPLS label values."; | ||||
|     reference | ||||
|       "RFC 3032: MPLS Label Stack Encoding. | ||||
|        RFC 7274: Allocating and Retiring Special-Purpose MPLS | ||||
|        Labels."; | ||||
|   } | ||||
|  | ||||
|   typedef mpls-label-general-use { | ||||
|     type uint32 { | ||||
|       range "16..1048575"; | ||||
|     } | ||||
|     description | ||||
|       "The 20-bit label value in an MPLS label stack as specified | ||||
|        in RFC 3032.  This label value does not include the | ||||
|        encodings of Traffic Class and TTL (Time to Live). | ||||
|        The label range specified by this type is for general use, | ||||
|        with special-purpose MPLS label values excluded."; | ||||
|     reference | ||||
|       "RFC 3032: MPLS Label Stack Encoding."; | ||||
|   } | ||||
|  | ||||
|   typedef mpls-label { | ||||
|     type union { | ||||
|       type mpls-label-special-purpose; | ||||
|       type mpls-label-general-use; | ||||
|     } | ||||
|     description | ||||
|       "The 20-bit label value in an MPLS label stack as specified | ||||
|        in RFC 3032.  This label value does not include the | ||||
|        encodings of Traffic Class and TTL."; | ||||
|     reference | ||||
|       "RFC 3032: MPLS Label Stack Encoding."; | ||||
|   } | ||||
|  | ||||
|   /*** Groupings **/ | ||||
|  | ||||
|   grouping mpls-label-stack { | ||||
|     description | ||||
|       "This grouping specifies an MPLS label stack.  The label | ||||
|        stack is encoded as a list of label stack entries.  The | ||||
|        list key is an identifier that indicates the relative | ||||
|        ordering of each entry, with the lowest-value identifier | ||||
|        corresponding to the top of the label stack."; | ||||
|     container mpls-label-stack { | ||||
|       description | ||||
|         "Container for a list of MPLS label stack entries."; | ||||
|       list entry { | ||||
|         key "id"; | ||||
|         description | ||||
|           "List of MPLS label stack entries."; | ||||
|         leaf id { | ||||
|           type uint8; | ||||
|           description | ||||
|             "Identifies the entry in a sequence of MPLS label | ||||
|              stack entries.  An entry with a smaller identifier | ||||
|              value precedes an entry with a larger identifier | ||||
|              value in the label stack.  The value of this ID has | ||||
|              no semantic meaning other than relative ordering | ||||
|              and referencing the entry."; | ||||
|         } | ||||
|         leaf label { | ||||
|           type rt-types:mpls-label; | ||||
|           description | ||||
|             "Label value."; | ||||
|         } | ||||
|  | ||||
|         leaf ttl { | ||||
|           type uint8; | ||||
|           description | ||||
|             "Time to Live (TTL)."; | ||||
|           reference | ||||
|             "RFC 3032: MPLS Label Stack Encoding."; | ||||
|         } | ||||
|         leaf traffic-class { | ||||
|           type uint8 { | ||||
|             range "0..7"; | ||||
|           } | ||||
|           description | ||||
|             "Traffic Class (TC)."; | ||||
|           reference | ||||
|             "RFC 5462: Multiprotocol Label Switching (MPLS) Label | ||||
|              Stack Entry: 'EXP' Field Renamed to 'Traffic Class' | ||||
|              Field."; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grouping vpn-route-targets { | ||||
|     description | ||||
|       "A grouping that specifies Route Target import-export rules | ||||
|        used in BGP-enabled VPNs."; | ||||
|     reference | ||||
|       "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||
|        RFC 4664: Framework for Layer 2 Virtual Private Networks | ||||
|        (L2VPNs)."; | ||||
|     list vpn-target { | ||||
|       key "route-target"; | ||||
|       description | ||||
|         "List of Route Targets."; | ||||
|       leaf route-target { | ||||
|         type rt-types:route-target; | ||||
|         description | ||||
|           "Route Target value."; | ||||
|       } | ||||
|       leaf route-target-type { | ||||
|         type rt-types:route-target-type; | ||||
|         mandatory true; | ||||
|         description | ||||
|           "Import/export type of the Route Target."; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user