Let's have a look on Optical Signal Level that is reported by ONT.
First of all - ONTs receive signal @1490nm and transmit @1310nm. To be able to synchronize receiver, the signal level must be better than -28dBm. Well, I've seen situations when -30 was still ok and without errors, but it strictly depends on the particular ONT's optical receiver unit.
Each receiver is different, each laser is different - that's why calibration for each unit is done in a factory, and unique calibration parameters are written in EEPROM/flash to be used by an optical driver (LDD)... Let's say I will discuss all that optical hardware in another chapter later on – so stay tuned!
OMCI MIB - quite important to be remembered - has no relation to SNMP MIBs, so if you don't know what it is, reset your mind for a second.
OMCI (ONT Management Control Interface) is a protocol used for signaling exchange between OLT and ONT. Like - OLT may want to create a datapath that will be used for internet transmission, or OLT wants to check ONT's LAN port state or other ONT's parameters, like - RX signal level @1490nm. For all of that (and much more) - OMCI applies.
OMCI MIBs is a database, set of database objects, with entries that have some predefined meaning. MIB object can be public (defined in ITU-T like G.988 specification) or private (not defined in ITU-T, but with ID that is in a range of private IDs defined by ITU-T).
In standard OMCI implementations, to cover Optical Signal Level - public OMCI MIB is used. The name of that MIB is Ani-G (Access Network Interface, G - GPON). Its specification can be found in ITU-T G.988 document, and in real ONT it looks like that:
# omcicli mib get Anig
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Anig
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=================================
EntityID: 0x8001
SRInd: 1
NumOfTcont: 31
GemBlkLen: 48
PbDbaRpt: 0
OnuDbaRpt: 0
SFThreshold: 5
SDThreshold: 9
ARC: 0
ARCInterval: 0
OpticalSignalLevel: 0xdb3b
LowOpThreshold: 0xff
UppOpThreshold: 0xff
OntRspTime: 35000
TranOpticLevel: 0x047c
LowTranPowThreshold: 0x81
UppTranPowThreshold: 0x81
LowDflRxThreshold: 0x38
UppDflRxThreshold: 0x10
LowDflTxThreshold: 0xf8
UppDflTxThreshold: 0x06
=================================
#
Let's look at 2 bolded parameters:
- EntityID: - 0x8001 - it is shortened number of that interface. It consists of a slot (0x80) and a number (0x01). In most cases this value is 0x8001, but I have seen ONTs where Ani-G used 0x8000, and also, much worse 0x0000... that is also a story for a separate chapter;
- OpticalSigalLevel: - this is what we will focus on - 16bits (2bytes) value that magically contains RX Signal level that ONT reads from an optical module.
Currently, value read from the receiver is:
# diag
RTK.0> pon get transceiver rx-power
Rx Power: -18.827108 dBm
So we have OpticalSignalLevel: 0xdb3b and Rx Power: -18.827108 dBm
Now, let's focus on a magic formula changing floating point value to raw hex in Ani-G.
G.988 contains such description:
"Optical signal level: This attribute reports the current measurement of the total downstream optical signal level. Its value is a 2s complement integer referred to 1 mW (i.e., 1 dBm), with 0.002 dB granularity. (R) (optional) (2 bytes)."
Actually, it's quite simple. Let's say that:
rx_float = -18.827108
OpticalSignalLevel = (INT16)(rx_float * 500) = (INT16)(-9413.554) = 0xdb3b
On the other side - OLT does reversed operation:
Olt_show_value = OpticalSignalLevel / 500 = -18.826 dBm
As you can see, we are losing a bit of how precise the number is, however - this is still very accurate.
And - technically - how does this OMCI communication look?
OLT sends GET message, after which ONT responds with values. Example:
(parsed messages below)
Request:
0x00aa AnigGet(0x8001,SRInd,NumOfTcont,GemBlkLen,PbDbaRpt,OnuDbaRpt,SFThreshold,SDThreshold,ARC,ARCInterval,
OpticalSignalLevel,LowOpThreshold,UppOpThreshold,OntRspTime,TranOpticLevel,LowTranPowThreshold,UppTranPowThreshold)
Response:
0x00aa AnigGetRsp(0x8001,Result=0x0,SRInd=0x01,NumOfTcont=0x001f,GemBlkLen=0x0030,PbDbaRpt=0x00,
OnuDbaRpt=0x00,SFThreshold=0x05,SDThreshold=0x09,ARC=0x00,ARCInterval=0x00,OpticalSignalLevel=0xdb3b,
LowOpThreshold=0xff,UppOpThreshold=0xff,OntRspTime=0x88b8,TranOpticLevel=0x04c9,LowTranPowThreshold=0x81,
UppTranPowThreshold=0x81)
(raw hex message below)
Request:
80 aa 49 0a 01 07 80 01 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 5a e3 81 a3
Response:
80 aa 29 0a 01 07 80 01 00 ff ff 01 00 1f 00 30 00 00 05 09 00 00 db 3b ff ff 88 b8 04 c9 81 81 00 00 00 00 00 00 00 00 00 00 00 28 72 fc 30 50
(examples are dumps of communication between Dasan OLT and Leox ONT)
OLT output below:
DASAN-OLT-V5824G(config-gpon-olt[1])# show onu info 9
----------------------------------------------------------------------------------
OLT | ONU | STATUS | Serial No. | Distance | Rx Power | Profile
----------------------------------------------------------------------------------
1 | 9 | Active | LEOXff000002 | 193m | - 18.8 dBm | LXT-240W-F
DASAN-OLT-V5824G(config-gpon-olt[1])#
However, as Ani-G is mandatory, not all OLTs use this simple GET method. Some of them also use (and some of them ONLY) - another method of handling Ani-G - it is called TEST. Ani-G TEST method can deliver much more transceiver-related information and....
If you have any questions about reporting Optical Signal Level, or other questions related to PON in your fiber network – we will gladly help, just let us know -
contact@leolabs.pl.
.png)