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 are looking for FTTx/xPON experts community to join, check out our -
LinkedIn group, founded to exchange knowledge and connect people in ICT industry.
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.