Canopy & SNMP

Ok, so i have been playing with Canopy and SNMP for about a week now. I Started with basic communication to and from the subscriber modules using SNMP which turned out to be a success.

Then after some time i realized that i wanted to extract data such as session count, and rssi for us to monitor the quality of the network. In theory you would have to extract the info from the Access Point, by selecting the LUID, then the info that you want. But after many hours of playing around with the snmp of the AP, i have not yet archived anything.

any suggestions would be greatly appreciated :wink:

Cheers.

Use CactiEZ (http://www.cactiusers.org/)

Frothingdog.ca wrote:
Use CactiEZ (http://www.cactiusers.org/)


I’m sorry I forgot to mention that I am a Programmer, and am writing a program that will communicate with the module / ap via SNMP, and write the collected data (info about rssi, Jitter, etc etc) into a database. I have it all working, it is just when trying to communicate with an access point that I get problems, selecting the next LUID using SNMP.

I have looked into Cacti, and used the MRTG as well as the PRTG, but they both did not do what is required which is why I am writing the server side application.

I’ve run into the same problem, but I have not had time to resolve it. The metric that I really want to track is reregs. I was hoping that with Prizm and v8 that may be put together for us, but it does not appear so as of yet. Having had no luck with SNMP, my next option was to do a screen scrape from the AP. The problem with that, of course, is that it will have to be recoded for the different versions of firmware. At least V7 vs V8. I’ll try to look into it and see if I have any other bright ideas…

What language are you writing in?

I know that what you are doing can be done. I will ask the guy doing it to post here.

Just out of curiosity, what do you need that Cacti can’t provide? With the Canopy modules provided on the Cactiusers.org forum there isn’t much info you can’t get from a system that can be set up in an hour.

Monitor and graph AP:
- Registered SM Count
- GPS Status
- Ethernet Link Status
- Temperature
- Traffic
- Ping Times

and SM
- Traffic
- Jitter
- dBm
- Ethernet Stats
- RSSI
- Session Status
- Temperature
- Ping

Cacti supports thresholds so for example and alarm is triggered if:
- SM Session status goes below 1
- dBm drops below X
- Ping times go above Y
- etc

Supports monitoring so if a node goes down, you get an alarm.

Has MacTrack built in so you can look at and search for IP to MAC relationships

Has NTOP so you can look at the traffic on your network from a protocol and packet perspective.

The cool thing about Cacti is that it’s all PHP so you can write your own modules to do other things as well. I know that there is a guy who wrote some custom stuff to run on Cacti - search this forum for “Look what I did with Cacti” or something like that.

It has been ridiculously stable running on an old Compaq DL380 800MHz machine. I wish everything ran as well.

Cacti is great, but we can’t get reregs for the SMs charted with straight SNMP.

I’d love to see when and how often the SMs are reregging, it seems to me that it would be a very good indicator of how stable the link was. When the reregs happen could also help pinpoint interference issues. A rereg may not even be detected by the client or by the 5 minute poll of SNMP values, but a graph of the rereg count from the AP could be illuminating in a number of ways…

My goal is to get a plugin written for cacti that would pull the rereg stats from the AP for each connected SM, and put that chart with the SMs other charts. I’m just not sure how soon I’m going to be able to get to it with my current workload.

Check it out:
http://motorola.canopywireless.com/supp … index.html

Another:
http://www.oidview.com/mibs/161/WHISP-APS-MIB.html

Thanks for the links, Jerry. I’m remembering the problem I had before as I first attempted to do this. It’s just complex to figure out the correct LUID on the fly, it will have to be computed each poll so that a reboot won’t corrupt the statistics, and I just didn’t take the time. Certainly doable, just haven’t gotten to it yet.

The reason that cacti won’t cut it, is because we are writing out collected data into a database, so our customers / support staff can see their results such as jitter, rssi, session count etc on the fly, via our web administration, that is accessible on all staff terminals.
That is why cacti will not do the job, it will not write the raw collected data directly into a SQL Database for later processing.

Cvs, you may want to load the mibs into a mib viewer, and process the OID’s that way, I find that it is easier than using the mibs on the canopy website.

@edit:
Cvs, the program is fully functional; it is in visual basic 6.0, using ado to talk to the sql2000 database. We are using a component written by ‘nsoftware’ that will read/write in snmp v2c & 3.

why not just set the SM to public access that way you can directly get to it without going through the LUID?

otherwise, for each poll why not extract the raw Site Name of the SM, and for loop your way through a pre-populated string array which contains the names of all your SM’s. once you find a match, take appropriate action.

i guess the efficiency of that depends on how many SM’s you have on your network.

just a suggestion.

Got it Neddy,
Sounds like it will be a solid system. Let us know how it works out.

msmith wrote:
why not just set the SM to public access that way you can directly get to it without going through the LUID?

otherwise, for each poll why not extract the raw Site Name of the SM, and for loop your way through a pre-populated string array which contains the names of all your SM's. once you find a match, take appropriate action.

i guess the efficiency of that depends on how many SM's you have on your network.

just a suggestion.



Yep that is exactly what I have done, it works like a charm… but the problem is I can not pull out the data such as session count, as that needs to come from the ap it is connected to. (Selecting a LUID) I have only run the function on about 30 modules to start, and it takes under a second per sm, to pull the data into the database via snmp. So I don’t think the network efficiency will be that much of a problem, more just the info that is not contained in the ap.

Correct me if I am wrong, but what I have being trying to do is select the “linkLUID” (.1.3.6.1.4.1.161.19.3.1.4.1.1) and set it to say.. the value “5”, then pull the data “sessionCount” (.1.3.6.1.4.1.161.19.3.1.4.1.29) this all has to be done through the ap, as there is no OID for session count in the SM’s MIB.

Neddy,

What about this:

Instead of grabbing the stats you need by accessing the SM through an AP LUID, why not set everything to public visibility, grab the raw SM MAC address, poll the AP, search the AP session page for the corresponding MAC Address, and getting your Re-Regs from there? You will know which AP to search by grabbing the “Registered AP” value from the SM. Then just make sure you have an array (two-dimensional maybe) that maps your MAC addresses to AP IP addresses. Or maybe just a Select Case statement. VB right?

All this is doing is eliminating the need to grab your data via a LUID. Everything you need is available through the AP Session Page. I’m just not sure if there are SNMP GETs available for the data you want by the method I just suggested.

Hope this helps. Keep me updated.

msmith wrote:
Neddy,

What about this:

Instead of grabbing the stats you need by accessing the SM through an AP LUID, why not set everything to public visibility, grab the raw SM MAC address, poll the AP, search the AP session page for the corresponding MAC Address, and getting your Re-Regs from there? You will know which AP to search by grabbing the "Registered AP" value from the SM. Then just make sure you have an array (two-dimensional maybe) that maps your MAC addresses to AP IP addresses. Or maybe just a Select Case statement. VB right?

All this is doing is eliminating the need to grab your data via a LUID. Everything you need is available through the AP Session Page. I'm just not sure if there are SNMP GETs available for the data you want by the method I just suggested.

Hope this helps. Keep me updated.


Ok, I will give that a go, I hadn't thought of it.. if anyone is interested I might post the source / application online… I am not sure at this stage.

If i remember right we had alot of problems using publics causing Gui lockups you would have to telnet in and reset to get gui backup.

The in-between solution that we use for the GUI lockup issue is we have our whole canopy network on a private IP range that I route from our border router so that all of our internal machines can get on , but no one outside our network has access. That solves both problems.

The screen scrape is the method I’m planning on using. Most of what I’m doing these days is PHP/MySQL based. I’m waiting on v8 to stabilize to finish the screen scrape version of tracking sessions and reregs. Don’t want to have to write it twice… 8)

I wouldn’t post the source if I were you. I would just post the application once its up and running.

I have made the mistake of distributing source before with applications that I could have mad top dollar on.

I’m not implying that anyone here would rip you off, just letting you know from my experience.

Let me know how you make out as your development progresses. It’s nice to know there are other programmers here.

Just a question, if anyone else here has written data into the SNMP of a ap / module successfully, please let me know, as I am having great difficulties when trying to write any data into an ap or sm using snmp. Read Only is disabled on canopy, and when I try to write data into a device I just get nothing.

This is the code I am using…



SNMPMgr1.RemoteHost = “10.11.11.10”
SNMPMgr1.ObjCount = 1
SNMPMgr1.ObjId(1) = “1.3.6.1.4.1.161.19.3.1.4.1.1”
SNMPMgr1.ObjType(1) = otInteger
SNMPMgr1.ObjValue(1) = 4
SNMPMgr1.DoEvents
SNMPMgr1.SendSetRequest




SNMPMgr1.DoEvents
SNMPMgr1.ObjCount = 1
SNMPMgr1.DoEvents
SNMPMgr1.ObjId(1) = “1.3.6.1.4.1.161.19.3.1.4.1.1”
SNMPMgr1.DoEvents
SNMPMgr1.SendGetNextRequest
SNMPMgr1.DoEvents
Debug.Print SNMPMgr1.ObjValue(1)



In theory that should work.
P.S. Using the nsoftware active x to do all the dirty snmp work.

neddy,

Canopy will not respond to SNMP version 1 messages. Make sure that you are sending V2c requests.

Try this…

SNMPMgr1.SNMPVersion = snmpverV2c