Hello dears,
Currently I'm on search of some wisdom.
I need to know via snmp to which ofdma interface a certain cable modem is connected to by providing the
mac address alone ( if that makes sense):
for example mac address A:B:C:D
1.3.6.1.2.1.10.127.1.3.3.1.5.(cm_index) = sc if_index
I thought this will do but it returns the SC upstream index only, I need the same but for ofdma.
thanks a lot in advance if any colleague has some idea to achieve this.
This is really two questions:
How do I find the CM ID given a mac address?
How do I find what OFDMA interface(s) a particular modem is connected to?
First question:
Given a mac you can find the id of the modem by querying the following oid 1.3.6.1.2.1.10.127.1.3.7.1.2 (DOCS-IF-MIB::docsIfCmtsCmPtr), you have to do it a special way though.
given the mac address 00:11:22:aa:bb:cc you would query 1.3.6.1.2.1.10.127.1.3.7.1.2.0.17.34.170.187.204 or DOCS-IF-MIB::docsIfCmtsCmPtr.0.17.34.170.187.204 if you have the proper mibs installed. the 0.17.34.170.187.204 is just the mac address encoded as decimal you convert each octet from HEX to decimal (base16 to base10)
This will give you the modem id which you will need for the second step.
The modem id retreived this way will be the index to DOCS-IF-MIB::docsIfCmtsCmStatusTable, DOCS-IF3-MIB::docsIf3CmtsCmRegStatusTable and DOCS-IF31-MIB::docsIf31CmtsCmRegStatusTable. That modem will have the same index in all 3 tables.
Second question:
For the OFDMA index we are going to want to look at the DOCS-IF31-MIB::docsIf31CmtsCmRegStatusTable.
You are going to want to query: DOCS-IF31-MIB::docsIf31CmtsCmRegStatusUsProfileIucList (1.3.6.1.4.1.4491.2.1.28.1.3.1.3) with the index from the previous query like so:
given an index of 2100 you would query:
DOCS-IF31-MIB::docsIf31CmtsCmRegStatusUsProfileIucList.2100 or 1.3.6.1.4.1.4491.2.1.28.1.3.1.3.2100
This will give you a sequence of Octets that you will have to decode.
i.e. something like this: 0x00d59f8c02050d
the way you decode this is read the first 32 bits (4 bytes) as an integer i.e. 00d59f8c which when read as an interface is 14000012 (this would be your ifIndex) the next octet (byte) 02 tells you how many IUCs you are using on this modem for that ifIndex (either 1 or 2) and the next X bytes (output of previous byte) are the IUCs encoded as a byte (0-255) so in this case IUC 5 and 13
this same sequence will be repeated for each OFDMA channel the modem is locked onto, so you have to be able to decode the whole thing to be able to determine all OFDMA channels it is locked onto using this method.
if a modem is not locked to an OFDMA channel (i.e. or it is a D3.0 modem) it returns an octets string of length 0
There is another way to determine if a modem is using an OFDMA channel without the decoding of a binary field, but believe it or not, it is actually more complex than this method and requires reading several values to determine if the modem is locked onto an OFDMA channel.
Dear kwesibrunee thanks a lot for your valuable time and help this help me me clarify!