Brocade/Ruckus ICX64xx SNMP Configuration

LibreNMS: Docker Image (jarischaefer/docker-librenms) 1.43
Brocade/Ruckus ICX6450 Firmware: Newest: 08030

Hey guys,

Our companies central switch is a Brocade ICX6450. The SNMP configuration and connection with librenms works but LibreNMS does not provide any relevant information about ports etc. . All I get is a “Generic device” with no information at all.

For all the other switches and devices in our network it works perfectly

After I read a while in the forum I guess the problem could be different interpretation of the MIBs?!?

The MIB reference of the switch firmware can be found here:
https://support.ruckuswireless.com/documents/1473-fastiron-08-0-30-mib-reference

Can someone give me a hint what I can try to do to make the switch and librenms speak with each other correctly?

Thanks in advance!

Hi @niklasdahlheimer

Seems like brocade is not a supported OS (?!?!) or it is but under other name than brocade.

Take a look to https://docs.librenms.org/#Developing/Support-New-OS/

For basic/standard mibs, only creating the basic definition yaml will do the job.
For more info/sensors/etc you’ll need to do some more work

Hi! Thanks for the quick response!

I did a few investigations about this.

  1. The corresponding MIB-file is allready there under mibs/borcade/FOUNDRY-SN-ROOT-MIB

  2. The sysObjectID should for all devices in this MIB-file should be 1.3.6.1.4.1.1991.

  3. the sysObjectID of the specific device should be .1.3.6.1.4.1.1991.1.3.48.5.1

  4. After the “add-device” snmp-request there is no entry in the device-table, column “sysObjectID”. Is that normal?

  5. I tried to add a new OS via the new-os.php script, but I’m not really sure what the OS is. Is it “fastiron”,“brocade”(but thats the vendor?!?),“ruckus”,“brocadeos”,…?!? Is this even important for detection?

    php new-os.php -h 26 -o fastiron -t network -v brocade
    

    The resulted in a new file unter

    includes/definitions/fastiron.yaml
    

    But “rediscover device” in the UI did not change anything, it’s still listed as a generic device without any information Maybe because the switch is not communicating it’s sysObjectID correctly?

I guess the next step would be to use wireshark and examine the get-response of the switch and find out what sysObjectID and sysDescr it’s reporting, right?

You see, I’m really puzzeling right now because I’m new to snmp-messages. But I’m willing to get this forward, if you could provide me some tipps how to :slight_smile:

Hi,

No wireshark needed. You can get those with snmpget -v2c -cCOMMUNITY hostname sysObjectID.0

The ALPHA new-os.php script should have created for you the file includes/discovery/fastiron.yaml.

Can you pastebin that file?

Hey!

snmpget -v 2c -c COMPANY_COMMUNITY 192.168.1.202 1.3.6.1.4.1.1991.1.3.48.5.1.0
iso.3.6.1.4.1.1991.1.3.48.5.1.0 = No Such Object available on this agent at this OID

I got the sample response by shorten the UID to eliminate error in the vendor-specific UID:

snmpget -v 2c -c COMPANY_COMMUNITY 192.168.1.202 1.3.6.1.4.1
iso.3.6.1.4.1 = No Such Object available on this agent at this OID

Trying SNMP Version 1 responded also nothing helpful:

snmpget -v 1 -c COMPANY_COMMUNITY 192.168.1.202 1.3.6.1.4.1.1991.1.3.48.5
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.3.6.1.4.1.1991.1.3.48.5

snmpget -v 1 -c COMPANY_COMMUNITY 192.168.1.202 1.3.6.1.4.1.1991.1.3.48
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.3.6.1.4.1.1991.1.3.48

snmpget -v 1 -c COMPANY_COMMUNITY 192.168.1.202 1.3.6.1.4.1
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.3.6.1.4.1

snmpget -v 1 -c COMPANY_COMMUNITY 192.168.1.202 1
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: ccitt.1

The UIDs are valid. I checked that against oid-info.com

Seems like the MIB of the switch is …empty?!?.. Streng thing is, that adding it in librenms works, so it reponds to the snmp-message while adding the device.

This Is how I added the OS:

root@librenms_web:/opt/librenms/scripts# php new-os.php -h 192.168.1.202 -o fastiron -t network -v brocade

sysDescr:
sysObjectID: ..

Enter the description for this OS, i.e Cisco IOS: Brocade/Ruckus FastIron Os
Enter the logo to use, this can be the name of an existing one (i.e: cisco) or the url to retrieve one:
Base discovery file created,ctrl+c to exit now otherwise please enter the MIB name including path (url is also fine) for us to check for sensors: /opt/librenms/mibs/brocade/FOUNDRY-SN-ROOT-MIB
Unable to find a matching object identifier for ".*Table$"
Failed to create new discovery file /opt/librenms/includes/definitions/discovery/fastiron.yamlroot@librenms_web:/opt/librenms/scripts#

So there is no file like includes/DEFINITIONS/discovery/fastiron.yaml
This is whats in the inlcudes/definitions/fastiron.yaml-file after adding

os: fastiron
text: 'Brocade/Ruckus FastIron Os'
type: network
icon:
group: brocade
over:
    - { graph: device_bits, text: 'Device Traffic' }
    - { graph: device_processor, text: 'CPU Usage' }
    - { graph: device_mempool, text: 'Memory Usage' }
discovery:
    - sysObjectID:
        - .

Seems also not to work because of the missing sysObjectID.
Am I missing something? Is there a way to query the whole MIB of the device?

Just type:

snmpget -vYOURVERSION -cYOURCOMMUNITY hostname sysObjectID.0

That is in the standard mib. If there is no response (oid doesnt exists) thats the reason is not supported.

LibreNMS works on that oid. If that oid doesnt exists, there is no way (at this moment) to support a device without that oid

ICX 64xx? Works for me. Note - does sometimes mysteriously revert to “Generic” but is rare.

Okay, this is strange because here it’s definitly not working.

The reponse for sysObjectID.0 is

root@librenms_web:/# snmpget -v2c -cpublic 192.168.1.202 sysObjectID.0                                                                              
sysObjectID.0: Unknown Object Identifier (Sub-id not found: (top) -> sysObjectID) 

(assuming public is our community-name)

And SNMP is definitly working on the ICX6450

telnet@ICX6450>show snmp
SNMP Statistics
  10884 received, 10878 sent

  Receive Statistics
  0 bad versions, 6 bad community names
  0 bad community uses, 0 asn parse errors, 0 memory errors
  0 too bigs, 0 no such names, 0 bad values
  0 read onlys, 0 general errors, 0 total request variables
  0 total set variables, 5856 get requests, 17 get next requests
  5005 get bulk requests, 0 set requests, 0 get responses, 0 traps

  Transmit Statistics
  0 too bigs, 4 no such names, 0 bad values
  0 general errors, 0 get requests, 0 get next requests
  0 set requests, 10878 get responses, 0 traps, 0 reports

I will write a mail to brocade/ruckus to clarify that.

I’m happy for all tipps what else could be wrong/could I try.
It’s kind of frustrating because the switch is the main-node of the whole company network, so without tracking this one the overview over the network is kind of falling apart.

Works for me. Can you walk it?

$ snmpget -v 3 -u things_and_stuff_omitted 192.168.2.100 sysObjectID.0
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.1991.1.3.56.1.3.1.1

Hey guys!
I found the solution. I accidentally had set up a “view group” in the switch configuration für the snmp-get-requests, which was not existent.
Setting the parameter to “all” solved the problem, the ICX6450 is now listed correctly with all information about ports,…

Thanks for the help anyway!