blob: f330bbe442cce8ec620da305d3efcbfb39f29ac9 [file] [log] [blame]
Elia Battiston4750d3c2022-07-14 13:24:56 +00001submodule bbf-xpon-base {
2 yang-version 1.1;
3 belongs-to bbf-xpon {
4 prefix bbf-xpon;
5 }
6
7 import ietf-interfaces {
8 prefix if;
9 }
10 import ietf-inet-types {
11 prefix inet;
12 }
13 import bbf-xpon-types {
14 prefix bbf-xpon-types;
15 }
16 import bbf-xpon-if-type {
17 prefix bbf-xponift;
18 }
19 import bbf-yang-types {
20 prefix bbf-yang;
21 }
22
23 organization
24 "Broadband Forum <https://www.broadband-forum.org>
25 Fiber Access Networks Work Area";
26 contact
27 "Comments or questions about this Broadband Forum YANG module
28 should be directed to <mailto:help@broadband-forum.org>.
29
30 Editor: Joey Boyd, ADTRAN
31
32 Editor: Samuel Chen, Broadcom
33
34 Editor: Robert Peschi, Nokia
35
36 WA Director: Marta Seda, Calix
37
38 WA Director: Lin Wei, Huawei";
39 description
40 "This submodule contains a collection of YANG definitions and
41 augmentations to ietf-interfaces for managing the xPON
42 infrastructure.
43
44 Copyright (c) 2018, Broadband Forum
45
46 Redistribution and use in source and binary forms, with or
47 without modification, are permitted provided that the following
48 conditions are met:
49
50 1. Redistributions of source code must retain the above copyright
51 notice, this list of conditions and the following disclaimer.
52
53 2. Redistributions in binary form must reproduce the above
54 copyright notice, this list of conditions and the following
55 disclaimer in the documentation and/or other materials
56 provided with the distribution.
57
58 3. Neither the name of the copyright holder nor the names of its
59 contributors may be used to endorse or promote products
60 derived from this software without specific prior written
61 permission.
62
63 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
64 CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,
65 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
66 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
67 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
68 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
69 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
70 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
71 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
72 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
73 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
74 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
75 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
76
77 The above license is used as a license under copyright only.
78 Please reference the Forum IPR Policy for patent licensing terms
79 <https://www.broadband-forum.org/ipr-policy>.
80
81 Any moral rights which are necessary to exercise under the above
82 license grant are also deemed granted under this license.
83
84 This version of this YANG module is part of TR-385; see
85 the TR itself for full legal notices.";
86
87 revision 2019-02-25 {
88 description
89 "Initial revision.
90 * Approval Date: 2019-02-25.
91 * Publication Date: 2019-02-25.";
92 reference
93 "TR-385: ITU-T PON YANG Modules
94 <https://www.broadband-forum.org/technical/download/
95 TR-385.pdf>";
96 }
97
98 feature ictp-support {
99 description
100 "Indicates that the OLT supports ICTP.";
101 }
102
103 feature configurable-ictp-proxy-tcp-port {
104 if-feature "ictp-support";
105 description
106 "Indicates support for the configuration of the TCP port
107 used by an ICTP proxy.";
108 }
109
110 container xpon {
111 description
112 "Configuration associated with managing xPON in a system.";
113 container ictp {
114 if-feature "ictp-support";
115 description
116 "Configuration data for the support of
117 Inter-Channel-Termination Protocol (ICTP).";
118 reference
119 "BBF TR-352";
120 leaf activated {
121 type boolean;
122 default "false";
123 description
124 "This is to enable or disable support of ICTP.
125 When true, the OLT attempts to establish TCP
126 connections with all relevant peer ICTP proxies
127 and is ready to exchange ICTP messages with other
128 channel terminations through those ICTP proxies.
129 When false, the OLT does not process nor generate
130 any ICTP messages and will not establish nor maintain
131 any TCP connection to any ICTP proxy.";
132 }
133 container all-ictp-proxies-all-channel-groups {
134 description
135 "This container contains all configuration data related to
136 TR-352 ICTP transport infrastructure for all ICTP proxies,
137 whether they are in charge of 'inside-olt' channel
138 terminations or 'outside-olt' channel terminations, for all
139 channel groups.";
140 list proxy {
141 key "name";
142 description
143 "The list of all ICTP proxies, whether they are in charge
144 of 'inside-olt' channel terminations or 'outside-olt'
145 channel terminations, for all channel groups configured
146 in the OLT.";
147 leaf name {
148 type bbf-yang:string-ascii64;
149 description
150 "Name of the ICTP Proxy.";
151 }
152 leaf host {
153 type inet:host;
154 mandatory true;
155 description
156 "This is the IP address or the DNS domain name of the
157 ICTP proxy. TCP connections originating from this ICTP
158 proxy will use this IP address (or the one resolved
159 from the DNS domain name) as source IP address. Other
160 ICTP proxies will reach this Proxy using this IP
161 address (or the one resolved from the DNS domain name)
162 as destination address.";
163 }
164 leaf tcp-port {
165 if-feature "configurable-ictp-proxy-tcp-port";
166 type inet:port-number;
167 default "7202";
168 description
169 "The TCP port used by the ICTP proxy.";
170 }
171 container all-channel-terminations-proxied-by-this-proxy {
172 description
173 "In the context of a given ICTP proxy, this container
174 contains the list of all channel terminations 'inside'
175 and 'outside' the OLT, for all channel groups, for
176 which this ICTP proxy is playing proxy role.";
177 list channel-termination {
178 key "channel-termination-ref";
179 description
180 "The list of all channel terminations inside and
181 outside the OLT, for all channel groups, for which
182 this ICTP proxy is playing proxy role.";
183 leaf channel-termination-ref {
184 type if:interface-ref;
185 must "derived-from-or-self(/if:interfaces"
186 + "/if:interface[if:name=current()]/if:type,"
187 + "'bbf-xponift:channel-termination')" {
188 error-message
189 "Must reference a channel termination.";
190 }
191 description
192 "Reference to a channel termination for which this
193 ICTP proxy is responsible.";
194 }
195 leaf channel-termination-ictp-activated {
196 type boolean;
197 default "false";
198 description
199 "When true, the ICTP proxy is willing to exchange
200 ICTP messages on behalf of this
201 channel termination. When false, the ICTP
202 proxy ignores this channel termination.";
203 }
204 }
205 }
206 }
207 }
208 }
209 }
210 container xpon-state {
211 config false;
212 description
213 "State data associated with managing xPON in a system.";
214 container ictp {
215 if-feature "ictp-support";
216 description
217 "State data for the support of
218 Inter-Channel-Termination Protocol (ICTP).";
219 reference
220 "BBF TR-352";
221 container all-ictp-proxies-all-channel-groups {
222 description
223 "State data related to all ICTP proxies across all channel
224 groups.";
225 list proxy {
226 key "name";
227 description
228 "The list of all ICTP proxies for all channel-groups.";
229 leaf name {
230 type bbf-yang:string-ascii64;
231 description
232 "Name of the ICTP Proxy.";
233 }
234 leaf proxy-ip-address {
235 type bbf-xpon-types:ip-address-or-unresolved;
236 description
237 "This is the IP address (v4 or v6) of this ICTP proxy
238 as derived from its configured host and as used in the
239 TCP connection when established. It is 'unresolved' if
240 for some reason the system is unable to deduce the IP
241 address from the host name of the ICTP proxy.";
242 }
243 container known-peered-proxies {
244 description
245 "In the context of an ICTP proxy, this container
246 contains state data about peering relations involving
247 this ICTP proxy. An OLT must know at least all peering
248 relations involving the ICTP proxies in charge of one
249 or several channel terminations 'inside' the OLT.
250 An OLT may or may not know peering relations between
251 ICTP proxies exclusively involving channel terminations
252 'outside' the OLT.";
253 list proxy {
254 key "name";
255 description
256 "In the context of an ICTP proxy, the list of all
257 ICTP proxies which the OLT knows to be peered with
258 this ICTP proxy.";
259 leaf name {
260 type bbf-yang:string-ascii64;
261 description
262 "Name of this ICTP peer proxy.";
263 }
264 leaf ip-address {
265 type bbf-xpon-types:ip-address-or-unresolved;
266 description
267 "This is the IP address (v4 or v6) of the peer
268 ICTP proxy as derived from its configured
269 host and as used in the TCP connection when
270 established. It is 'unresolved' if for some
271 reason the system is unable to deduce the IP
272 address from the host name of the ICTP proxy.";
273 }
274 leaf tcp-connection-state {
275 type identityref {
276 base bbf-xpon-types:tcp-connection-state-base;
277 }
278 description
279 "This leaf reflects the state of the TCP connection
280 with this peer ICTP Proxy. When 'established' the
281 TCP connection is operational and able to transport
282 ICTP messages. When 'not-established', the TCP
283 connection is unable to exchange any ICTP message.
284 When the TCP connection state is 'unknown' the OLT
285 does not know whether the involved ICTP proxies can
286 exchange ICTP messages or not; typically, this is
287 because the OLT is not involved at all with either
288 of the two related ICTP proxies.";
289 }
290 leaf source-tcp-port {
291 type inet:port-number;
292 description
293 "This is the source port number of the TCP
294 connection with the peer ICTP proxy, when
295 established.";
296 }
297 leaf destination-tcp-port {
298 type inet:port-number;
299 description
300 "This is the destination port number of the TCP
301 connection with the peer ICTP proxy, when
302 established.";
303 }
304 }
305 }
306 }
307 }
308 }
309 }
310
311 augment '/if:interfaces/if:interface' {
312 when "if:type = 'bbf-xponift:channel-group'";
313 description
314 "Augment interface configuration with xPON channel group
315 configuration.";
316 container channel-group {
317 description
318 "Channel group configuration data for all xPON variants
319 (NG-PON2, XGS-PON, XG-PON and G-PON).";
320 }
321 }
322
323 augment '/if:interfaces/if:interface' {
324 when "derived-from-or-self"
325 + "(if:type, 'bbf-xponift:channel-partition')";
326 description
327 "Augment interface configuration with xPON channel partition
328 configuration.";
329 container channel-partition {
330 description
331 "Channel partition configuration data for all xPON variants
332 (NG-PON2, XGS-PON, XG-PON and G-PON).";
333 }
334 }
335
336 augment '/if:interfaces/if:interface' {
337 when "derived-from-or-self"
338 + "(if:type, 'bbf-xponift:channel-pair')";
339 description
340 "Augment interface configuration with xPON channel pair
341 configuration.";
342 container channel-pair {
343 description
344 "Channel pair configuration data for all xPON variants
345 (NG-PON2, XGS-PON, XG-PON and G-PON).";
346 }
347 }
348
349 augment '/if:interfaces/if:interface' {
350 when "derived-from-or-self"
351 + "(if:type, 'bbf-xponift:channel-termination')";
352 description
353 "Augment interface configuration with xPON channel termination
354 configuration.";
355 container channel-termination {
356 description
357 "channel termination configuration data for all xPON variants
358 (NG-PON2, XGS-PON, XG-PON and G-PON).";
359 }
360 }
361
362 augment '/if:interfaces-state/if:interface' {
363 when "derived-from-or-self"
364 + "(if:type, 'bbf-xponift:channel-group')";
365 description
366 "Augment interface state data with xPON channel group
367 state data.";
368 container channel-group {
369 description
370 "Channel group state data for all xPON variants
371 (NG-PON2, XGS-PON, XG-PON and G-PON).";
372 }
373 }
374
375 augment '/if:interfaces-state/if:interface' {
376 when "derived-from-or-self"
377 + "(if:type, 'bbf-xponift:channel-pair')";
378 description
379 "Augment interface state data with xPON channel pair
380 state data.";
381 container channel-pair {
382 description
383 "Channel pair state data for all xPON variants
384 (NG-PON2, XGS-PON, XG-PON and G-PON).";
385 }
386 }
387
388 augment '/if:interfaces-state/if:interface' {
389 when "derived-from-or-self"
390 + "(if:type, 'bbf-xponift:channel-termination')";
391 description
392 "Augment interface state data with xPON channel termination
393 state data.";
394 container channel-termination {
395 description
396 "Channel termination state data for all xPON variants
397 (NG-PON2, XGS-PON, XG-PON and G-PON).";
398 }
399 }
400}