1 /****************************************************************************
3 ** Copyright (c) 2022 SoftAtHome
5 ** Redistribution and use in source and binary forms, with or
6 ** without modification, are permitted provided that the following
9 ** 1. Redistributions of source code must retain the above copyright
10 ** notice, this list of conditions and the following disclaimer.
12 ** 2. Redistributions in binary form must reproduce the above
13 ** copyright notice, this list of conditions and the following
14 ** disclaimer in the documentation and/or other materials provided
15 ** with the distribution.
17 ** Subject to the terms and conditions of this license, each
18 ** copyright holder and contributor hereby grants to those receiving
19 ** rights under this license a perpetual, worldwide, non-exclusive,
20 ** no-charge, royalty-free, irrevocable (except for failure to
21 ** satisfy the conditions of this license) patent license to make,
22 ** have made, use, offer to sell, sell, import, and otherwise
23 ** transfer this software, where such license applies only to those
24 ** patent claims, already acquired or hereafter acquired, licensable
25 ** by such copyright holder or contributor that are necessarily
28 ** (a) their Contribution(s) (the licensed copyrights of copyright
29 ** holders and non-copyrightable additions of contributors, in
30 ** source or binary form) alone; or
32 ** (b) combination of their Contribution(s) with the work of
33 ** authorship to which such Contribution(s) was added by such
34 ** copyright holder or contributor, if, at the time the Contribution
35 ** is added, such addition causes such combination to be necessarily
36 ** infringed. The patent license shall not apply to any other
37 ** combinations which include the Contribution.
39 ** Except as expressly stated above, no rights or licenses from any
40 ** copyright holder or contributor is granted under this license,
41 ** whether expressly, by implication, estoppel or otherwise.
45 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
46 ** CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
47 ** INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
48 ** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
49 ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
50 ** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
51 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
52 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
53 ** USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
54 ** AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
55 ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
56 ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
57 ** POSSIBILITY OF SUCH DAMAGE.
59 ****************************************************************************/
63 Access Node Interface (ANI) table. An ANI models the xPON MAC/PHY as
64 defined in the ITU-T PON standards.
66 This object is not an interface object as described in [Section
67 4.2/TR-181i2], but it has many of the same core parameters as an
68 interface object, and they follow largely the same conventions. The most
69 important deviations are:
71 - This object does not have a LowerLayers parameter.
72 - The value LowerLayerDown is not a valid value for its Status parameter.
74 Because it's not an interface object, it does not occur in the
77 At most one entry in this table can exist with a given value for Alias,
78 or with a given value for Name.
81 on action destroy call interface_object_destroyed;
84 Enables or disables the interface.
86 If disabled, the device should force the ONU state of this ANI to O1
89 This parameter is based on ifAdminStatus from [RFC2863].
91 Note: forcing the state to O1 implies the device disables the TX
92 laser of the associated transceiver(s). It's not required to disable
93 the RX part of the transceivers as well.
95 This parameter is read-write. But because the plugin does not
96 handle its persistency via the odl mechanism, this parameter
97 does not have the attribute '%persistent'.
102 The current operational state of the interface. Although this object
103 is not an interface object, it follows largely the conventions of
104 [Section 4.2.2/TR-181i2]. The most important deviation is that
105 LowerLayerDown is not a valid value.
107 When Enable is false then Status SHOULD normally be Down (or
108 NotPresent or Error if there is a fault condition on the interface).
110 When Enable becomes true then Status SHOULD change to Up if and only
111 if the interface is able to transmit and receive network traffic;
112 more specifically, Status should change to Up if
113 TC.ONUActivation.ONUState becomes O5; it SHOULD change to Dormant if
114 and only if the interface is operable but is waiting for external
115 actions before it can transmit and receive network traffic (and
116 subsequently change to Up if still operable when the expected
117 actions have completed); it SHOULD remain in the Error state if
118 there is an error or other fault condition detected on the
119 interface; it SHOULD remain in the NotPresent state if the interface
120 has missing (typically hardware) components; it SHOULD change to
121 Unknown if the state of the interface can not be determined for some
124 This parameter is based on ifOperStatus from [RFC2863].
126 %read-only string Status {
128 on action validate call check_enum
129 ["NotPresent", "Down", "Dormant", "Up", "Error", "Unknown"];
133 A non-volatile handle used to reference this instance. Alias
134 provides a mechanism for an ACS to label this instance for future
137 If the CPE supports the Alias-based Addressing feature as defined in
138 [Section 3.6.1/TR-069] and described in [Appendix II/TR-069], the
139 following mandatory constraints MUST be enforced:
141 - Its value MUST NOT be empty.
142 - Its value MUST start with a letter.
143 - If its value is not assigned by the ACS, it MUST start with a "cpe-" prefix.
144 - The CPE MUST NOT change the parameter value.
146 %unique %key string Alias {
147 on action validate call check_maximum_length 64;
151 The textual name of the ANI entry as assigned by the CPE.
153 %unique %key string Name {
154 on action validate call check_maximum_length 64;
158 The accumulated time in seconds since the interface entered its
159 current operational state.
161 %read-only uint32 LastChange {
162 on action read call lastchange_on_read;
168 The object Transceiver has a parameter of the same name. For proper
169 operation, the PON mode of the transceiver(s) corresponding to this
170 ANI must be equal to the PON mode of this ANI. But a user might e.g.
171 accidentally insert a G-PON SFP while the PON mode of the ANI is
174 %read-only string PONMode {
176 on action validate call check_enum
177 ["Unknown", "G-PON", "XG-PON", "NG-PON2", "XGS-PON" ];
181 This object represents an ITU-T PON TC layer device.
186 This object shows info related to the activation of this ANI by
189 object ONUActivation {
192 ONU activation state.
195 - [Section C.12/G.9807.1]
196 - [Section 10/G.984.3]
197 - [Section 12/G.987.3]
198 - [Section 12/G.989.3]
200 %read-only string ONUState {
202 on action validate call check_enum
203 ["O1", "O2", "O3", "O2-3", "O4", "O5", "O6", "O7", "O8", "O9" ];
207 Identifies the vendor of the ONU. See [Section 9.1.1/G.988].
209 %read-only string VendorID {
210 on action validate call check_maximum_length 4;
214 Represents the combination of the Vendor-ID and the
215 Vendor-specific serial number (VSSN). The parameter shows
216 the serial number in a human readable format. Example: if
217 the vendor ID is ABCD and the VSSN encodes the number
218 1234568, the value of this parameter is ABCD12345678. See
219 [Section 9.1.1/G.988].
221 %read-only string SerialNumber {
222 on action validate call check_maximum_length 12;
226 Identifier that the OLT assigns to this ANI during the
229 - [Section C.6.1.5.6/G.9807.1]
230 - [Section 5.5.2/G.984.3]
231 - [Section 6.4.2/G.987.3]
232 - [Section 6.1.5.6/G.989.3]
234 %read-only uint32 ONUID {
235 on action validate call check_maximum 1022;
239 object Authentication {
242 All ITU based PON standards specify authentication by PLOAM
243 password or registration ID.
246 * G.9807.1 Section C.15.2.1
247 * G.984.3 Section VI.2
248 * G.987.3 Section 15.2.1
249 * G.989.3 Section 15.2.1
251 All those standards mention that a method to enter the
252 password is beyond their scope. This parameter and the
253 parameter 'HexadecimalPassword' standardize a method to
256 In case of G-PON as PON mode, the password can be up to 10
257 bytes long. See G.984.3 Section 9.2.4.2. For the other PON
258 modes, the password can be up to 36 bytes long. See:
260 * G.9807.1 Section C.11.3.4.2
261 * G.987.3 Section 11.3.4.2
262 * G.989.3 Section 11.3.4.2
264 If 'HexadecimalPassword' is false, the password is in ASCII
265 format. Then all 95 printable characters with decimal codes
266 in the range 32 to 126 inclusive are allowed. Each character
267 corresponds with 1 byte in the password.
269 If 'HexadecimalPassword' is true, the password is in
270 hexadecimal format. Then only the characters 0 to 9, a to f,
271 and A to F are allowed. Each character corresponds with 1
272 nibble in the password.
274 Depending on the value of 'HexadecimalPassword' and the PON
275 mode, a different number of characters are applicable. If
276 'HexadecimalPassword' is false:
278 * In case of G-PON as PON mode, only the 1st 10 characters are
281 * In case of another PON mode, only the 1st 36 characters are
284 If 'HexadecimalPassword' is true:
286 * In case of G-PON as PON mode, the 1st 20 characters are all
287 relevant. The other characters are not applicable.
289 * In case of another PON mode, all 72 characters are relevant.
291 This parameter is set to empty if no authentication via a
292 password is required.
294 When read, this parameter returns an empty string,
295 regardless of the actual value, unless the Controller has a
298 NOTE - For now this parameter always returns an empty string
302 on action validate call check_password;
303 on action read call hide_value;
306 If false, 'Password' is in ASCII format. If true, 'Password'
307 is in hexadecimal format.
309 See the parameter 'Password' for more info.
311 bool HexadecimalPassword;
315 Performance monitoring (PM) counters.
323 %read-only uint64 CorrectedFECBytes;
324 %read-only uint64 CorrectedFECCodewords;
325 %read-only uint64 UncorrectableFECCodewords;
326 %read-only uint64 TotalFECCodewords;
327 %read-only uint32 PSBdHECErrorCount;
328 %read-only uint32 HeaderHECErrorCount;
329 %read-only uint32 UnknownProfile;
336 %read-only uint64 FramesSent;
337 %read-only uint64 FramesReceived;
338 %read-only uint32 FrameHeaderHECErrors;
339 %read-only uint32 KeyErrors;
346 %read-only uint32 MICErrors;
347 %read-only uint64 DownstreamMessageCount;
348 %read-only uint64 RangingTime;
349 %read-only uint64 UpstreamMessageCount;
356 %read-only uint64 BaselineMessagesReceived;
357 %read-only uint64 ExtendedMessagesReceived;
358 %read-only uint32 MICErrors;
363 Info about the GEM ports of this ANI.
368 GEM port table. Each entry gives info about a(n) (X)GEM port.
370 At most one entry in this table can exist with a given value
373 %read-only object Port[] {
374 counted with PortNumberOfEntries;
377 Identifies a GEM port.
380 - [Section C.6.1.5.8/G.9807.1]
381 - [Section 5.5.5/G.984.3]
382 - [Section 6.4.4/G.987.3]
383 - [Section 6.1.5.8/G.989.3]
385 %unique %key uint32 PortID {
386 on action validate call check_maximum 65534;
390 Type of connection this GEM port is used for.
392 See: [Section 9.2.3/G.988].
394 %read-only string Direction {
395 default "UNI-to-ANI";
396 on action validate call check_enum
397 ["UNI-to-ANI", "ANI-to-UNI", "bidirectional" ];
403 %read-only string PortType {
405 on action validate call check_enum
406 ["unicast", "multicast", "broadcast" ];
410 Performance monitoring (PM) counters for this (X)GEM port.
413 %read-only uint64 FramesSent;
414 %read-only uint64 FramesReceived;
418 object PerformanceThresholds {
419 %read-only uint32 SignalFail {
421 on action validate call check_range [3, 8];
423 %read-only uint32 SignalDegrade {
425 on action validate call check_range [4, 10];
430 Alarms at TC level for this ANI.
433 // Loss of signal. See [Section 11.1.2/G.984.3].
435 // Loss of frame. See [Section 11.1.2/G.984.3].
437 // Signal failed. See [Section 11.1.2/G.984.3].
439 // Signal degraded. See [Section 11.1.2/G.984.3].
441 // Loss of GEM channel delineation. See [Section 11.1.2/G.984.3].
442 %read-only bool LCDG;
443 // Transmitter failure. See [Section 11.1.2/G.984.3].
445 // Start-up failure. See [Section 11.1.2/G.984.3].
447 // Message error message. See [Section 11.1.2/G.984.3].
449 // Deactivate ONU-ID. See [Section 11.1.2/G.984.3].
450 %read-only bool DACT;
451 // Disabled ONU. See [Section 11.1.2/G.984.3].
453 // Link mismatching. See [Section 11.1.2/G.984.3].
455 // When the ONU receives a PEE message. See [Section 11.1.2/G.984.3].
457 // Remote defect indication. See [Section 11.1.2/G.984.3].
459 // Loss of downstream synchronization. See [G.9807.1].
460 %read-only bool LODS;
463 The ANI behaves rogue: it is not transmitting in a manner
464 consistent with parameters specified in the ITU-T PON
465 standards. Hence it can threaten all upstream transmissions
466 on the PON, causing interference and disrupting
467 communications of other ONUs on the PON. An example of rogue
468 behavior is transmitting in the wrong timeslot.
471 - [Section C.19/G.9807.1]
472 - [Section 19/G.989.3]
474 %read-only bool ROGUE;
479 Transceiver table. Each entry models a PON transceiver.
481 This table MUST contain at least 0 and at most 2 entries.
483 At most one entry in this table can exist with a given value for ID.
485 %read-only object Transceiver[2] {
486 counted with TransceiverNumberOfEntries;
489 The ID as assigned by the CPE to this Transceiver entry.
491 %unique %key uint32 ID {
492 on action validate call check_maximum 1;
496 Transceiver type. Allowed values are given by [Table 4-1/SFF-8024].
498 %read-only uint32 Identifier {
499 on action validate call check_maximum 255;
503 Vendor name. See [Table 4-1/SFF-8472].
505 %read-only string VendorName {
506 on action validate call check_maximum_length 256;
509 Vendor part number. See "Vendor PN" in [Table 4-1/SFF-8472].
511 %read-only string VendorPartNumber {
512 on action validate call check_maximum_length 256;
516 Vendor revision. See "Vendor rev" in [Table 4-1/SFF-8472].
518 %read-only string VendorRevision {
519 on action validate call check_maximum_length 256;
522 %read-only string PONMode {
524 on action validate call check_enum
525 ["Unknown", "G-PON", "XG-PON", "NG-PON2", "XGS-PON" ];
529 %read-only string Connector {
531 on action validate call check_enum
532 ["Unknown", "LC", "SC", "ST", "FC", "MT-RJ"];
535 // Nominal data rate downstream in kbps.
536 %read-only uint32 NominalBitRateDownstream;
538 // Nominal data rate upstream in kbps.
539 %read-only uint32 NominalBitRateUpstream;
541 // Measured RX power in 0.1 dBm.
542 %read-only %volatile int32 RxPower {
543 on action read call read_trx_param;
546 // Measured TX power in 0.1 dBm.
547 %read-only %volatile int32 TxPower {
548 on action read call read_trx_param;
551 // Measured supply voltage in mV.
552 %read-only %volatile uint32 Voltage {
553 on action read call read_trx_param;
556 // Measured bias current in µA.
557 %read-only %volatile uint32 Bias {
558 on action read call read_trx_param;
562 Measured temperature in degrees celsius.
564 A value of -274 (which is below absolute zero) indicates a good
565 reading has not been obtained.
567 %read-only %volatile int32 Temperature {
568 on action read call read_trx_param;
569 on action validate call check_minimum -274;
573 ifdef(`CONFIG_SAH_AMX_TR181_XPON_USE_NETDEV_COUNTERS', /**
574 * Throughput statistics for this interface.
576 * The CPE MUST reset the interface's Stats parameters
577 * (unless otherwise stated in individual object or parameter descriptions) either
578 * when the interface becomes operationally down due to a previous administrative
579 * down (i.e. the interface's Status parameter transitions to a down state after
580 * the interface is disabled) or when the interface becomes administratively up
581 * (i.e. the interface's Enable parameter transitions from false to true).
582 * Administrative and operational interface status is discussed in [Section 4.2.2/TR-181i2].
587 on action read call stats_object_read;
588 on action list call stats_object_list;
589 on action describe call stats_object_describe;