Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cisco Catalyst 9800-CL Wireless Controller but netdisco say l2 device #532

Open
mrfrtr opened this issue Oct 4, 2024 · 4 comments
Open

Comments

@mrfrtr
Copy link

mrfrtr commented Oct 4, 2024

Hi when this device discovery netdisco not see ap because netdisco try add l3 device but this is wirellas lan controller need be update SNMP::Info::Layer2::Airespace for Cisco Catalyst 9800-CL

[1667] 2024-10-04 18:17:20 info App::Netdisco version 2.079001 loaded.
[1667] 2024-10-04 18:17:20 info discover: [10.1.10.247] started at Fri Oct 4 18:17:20 2024
[1667] 2024-10-04 18:17:21 debug discover: running with timeout 600s
[1667] 2024-10-04 18:17:21 debug //// CHECK \\ phase
[1667] 2024-10-04 18:17:21 debug ⮕ worker Internal::BackendFQDN p1000000
[1667] 2024-10-04 18:17:21 debug ⮕ worker Internal::SNMPFastDiscover p1000000
[1667] 2024-10-04 18:17:21 debug running with configured SNMP timeouts
[1667] 2024-10-04 18:17:21 debug ⮕ worker Discover p0
[1667] 2024-10-04 18:17:21 debug ⬅ (done) Discover is able to run.
[1667] 2024-10-04 18:17:21 debug //// EARLY \\ phase
[1667] 2024-10-04 18:17:21 debug ⮕ worker Discover::Properties p100
[1667] 2024-10-04 18:17:21 debug snmp reader cache warm: [10.1.10.247]
[1667] 2024-10-04 18:17:21 debug [10.1.10.247:161] try_connect with v: 2, t: 0.2, r: 0, class: SNMP::Info, comm:
[1667] 2024-10-04 18:17:21 debug [10.1.10.247:161] try_connect with v: 2, new class: SNMP::Info::Layer3::CiscoSwitch, comm:

how can i update or fix

@rc9000
Copy link
Member

rc9000 commented Oct 4, 2024

Hi! There are apparently two ways of identifying this class, either by sysDescr or sysObjectId:

$ grep -n -i -C 1 airespace  perl5/lib/perl5/SNMP/Info.pm  

--
1811-        13191 => 'SNMP::Info::Layer3::OneAccess',
1812:        14179 => 'SNMP::Info::Layer2::Airespace',
1813-        14525 => 'SNMP::Info::Layer2::Trapeze',
--
1864-        13458 => 'SNMP::Info::Layer2::Atmedia',
1865:        14179 => 'SNMP::Info::Layer2::Airespace',
1866-        14525 => 'SNMP::Info::Layer2::Trapeze',
--
2022-
2023:        # Airespace (WLC) Module
2024:        $objtype = 'SNMP::Info::Layer2::Airespace'
2025-            if ( $desc =~ /^Cisco Controller$/ );
--
2174-
2175:        # Airespace (WLC) Module
2176:        $objtype = 'SNMP::Info::Layer2::Airespace'
2177-            if ( $desc =~ /^Cisco Controller$/ );

You can check what you get with netdisco-do show (example from a random switch):

netdisco-do show -d 10.10.167.65 -e sysDescr
[26668] 2024-10-04 18:42:17  info App::Netdisco version 2.077005 loaded.
[26668] 2024-10-04 18:42:17  info show: [10.10.167.65]/sysDescr started at Fri Oct  4 20:42:17 2024
"Cisco IOS Software [Gibraltar], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.12.5b, RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2021 by Cisco Systems, Inc.
Compiled Thu 25-Mar-21 13"

netdisco-do show -d 10.10.167.65 -e sysObjectID
[26945] 2024-10-04 18:42:31  info App::Netdisco version 2.077005 loaded.
[26945] 2024-10-04 18:42:31  info show: [10.10.167.65]/sysObjectID started at Fri Oct  4 20:42:31 2024
".1.3.6.1.4.1.9.1.1745" (dualvar: 0.1)

Then edit the SNMP/Info.pm on the lines show to match the 9800L description or last number of the sysObjectID.
Not quite sure if this device will be well supported otherwise, but getting it identified is certainly the first step.

Let us know if it works or putting the modified file into a PR is highly appreciated.

@mrfrtr
Copy link
Author

mrfrtr commented Oct 5, 2024

Hi i did i can share response but i cant edit perl5/lib/perl5/SNMP/Info.pm because i use docker i edit and try but still same problem i put here output

netdisco-do show -d 10.1.10.247 -e sysObjectID
[1029] 2024-10-05 08:27:06 info App::Netdisco version 2.079001 loaded.
[1029] 2024-10-05 08:27:06 info show: [10.1.10.247]/sysObjectID started at Sat Oct 5 08:27:06 2024
".1.3.6.1.4.1.9.1.2391" (dualvar: 0.1)
[1029] 2024-10-05 08:27:07 info show: finished at Sat Oct 5 08:27:07 2024
[1029] 2024-10-05 08:27:07 info show: status done: Showed sysObjectID response from 10.1.10.247

then i aded info pm i am not sure docker use i copied Info.pm

~ $ cat perl5/lib/perl5/SNMP/Info.pm | grep 2391
2391 => 'SNMP::Info::Layer2::Airespace',

~ $ netdisco-do show -d 10.1.10.247 -e sysDescr
[1068] 2024-10-05 08:30:04 info App::Netdisco version 2.079001 loaded.
[1068] 2024-10-05 08:30:04 info show: [10.1.10.247]/sysDescr started at Sat Oct 5 08:30:04 2024
"Cisco IOS Software [Cupertino], C9800-CL Software (C9800-CL-K9_IOSXE), Version 17.9.4a, RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2023 by Cisco Systems, Inc.
Compiled Fri 20-Oct-23 10:29 by mcpre"
[1068] 2024-10-05 08:30:05 info show: finished at Sat Oct 5 08:30:05 2024
[1068] 2024-10-05 08:30:05 info show: status done: Showed sysDescr response from 10.1.10.247

then i aded desc in Info.pm

2024: # Airespace (WLC) Module
2025: $objtype = 'SNMP::Info::Layer2::Airespace'
2026- if ( $desc =~ /^Cisco Controller$/ );
2027: $objtype = 'SNMP::Info::Layer2::Airespace'
2028- if ( $desc =~ /^Cisco IOS Software [Cupertino], C9800-CL$/ );

but when ı try discover again not working output this

[1075] 2024-10-05 08:32:28 info App::Netdisco version 2.079001 loaded.
[1075] 2024-10-05 08:32:28 info discover: [10.1.10.247] started at Sat Oct 5 08:32:28 2024
[1075] 2024-10-05 08:32:28 debug discover: running with timeout 600s
[1075] 2024-10-05 08:32:28 debug //// CHECK \\ phase
[1075] 2024-10-05 08:32:28 debug ⮕ worker Internal::BackendFQDN p1000000
[1075] 2024-10-05 08:32:28 debug ⮕ worker Internal::SNMPFastDiscover p1000000
[1075] 2024-10-05 08:32:28 debug running with configured SNMP timeouts
[1075] 2024-10-05 08:32:28 debug ⮕ worker Discover p0
[1075] 2024-10-05 08:32:28 debug ⬅ (done) Discover is able to run.
[1075] 2024-10-05 08:32:28 debug //// EARLY \\ phase
[1075] 2024-10-05 08:32:28 debug ⮕ worker Discover::Properties p100
[1075] 2024-10-05 08:32:28 debug snmp reader cache warm: [10.1.10.247]
[1075] 2024-10-05 08:32:28 debug [10.1.10.247:161] try_connect with v: 2, t: 0.2, r: 0, class: SNMP::Info::Layer3::CiscoSwitch, comm:
[1075] 2024-10-05 08:32:29 debug ⬅ (done) Ended discover for 10.1.10.247
[1075] 2024-10-05 08:32:29 debug ⮕ worker Discover::Properties p100
[1075] 2024-10-05 08:32:29 debug ⬅ (info) [10.1.10.247] device - OK to continue discover (not a duplicate)
[1075] 2024-10-05 08:32:29 debug ⮕ worker Discover::Properties p100
[1075] 2024-10-05 08:32:29 debug ⬅ (info) [10.1.10.247] device - OK to continue discover (valid interfaces)
[1075] 2024-10-05 08:32:29 debug ⮕ worker Discover::Properties p100
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] device - aliased as 10.1.10.247
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] device - aliased as 10.9.33.248
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] device - aliased as 10.9.64.2
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] device - aliased as 10.1.10.248
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] device - aliased as 10.9.7.248
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] device - aliased as 10.9.15.248
[1075] 2024-10-05 08:32:29 debug resolving 6 aliases with max 50 outstanding requests
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] device - removed 6 aliases
[1075] 2024-10-05 08:32:29 debug ⬅ (info) [10.1.10.247] aliases - added 6 new aliases and 5 subnets
[1075] 2024-10-05 08:32:29 debug ⮕ worker Discover::Properties p100
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] db/ports - removed 0 port entries from DevicePortPower
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] db/ports - removed 9 port entries from DevicePortProperties
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] db/ports - removed 0 port entries from DevicePortSsid
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] db/ports - removed 20 port entries from DevicePortVlan
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] db/ports - removed 0 port entries from DevicePortWireless
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] interfaces - removed 9 interfaces
[1075] 2024-10-05 08:32:29 debug ⬅ (info) [10.1.10.247] interfaces - added 9 new interfaces
[1075] 2024-10-05 08:32:29 debug //// MAIN \\ phase
[1075] 2024-10-05 08:32:29 debug ⮕ worker Discover::CanonicalIP p100
[1075] 2024-10-05 08:32:29 debug ⮕ worker Discover::Entities p100
[1075] 2024-10-05 08:32:29 debug [10.1.10.247] modules - removed 7 chassis modules

@rc9000
Copy link
Member

rc9000 commented Oct 5, 2024

I found one of these devices on our network and gave it a try, the change in Info.pm would need to be e.g.

# ./perl5/lib/perl5/SNMP/Info.pm (in two places)
        # Airespace (WLC) Module
        $objtype = 'SNMP::Info::Layer2::Airespace' if ( $desc =~ /^Cisco Controller$/ );
        $objtype = 'SNMP::Info::Layer2::Airespace' if ( $desc =~ /Cisco IOS Software .Cupertino., C9800-CL/ );

but then it will immediately crash the discovery since the serial is no longer found, for a quick fix I had to insert this dummy string:

# ./perl5/lib/perl5/SNMP/Info/Airespace.pm
sub serial {
    my $airespace = shift;
    my $sn        = $airespace->airespace_serial() || "fixme_serial";
    return unless defined $sn;

    return $sn;
}

Then it somewhat works, e.g. the APs are shown in the Ports list. But a lot of stuff stops working, besides the serial also the model, os and os version. So presumably we would need to stitch together the stuff that works from both classes into a new devicetype like Layer?::C9800CL / CiscoWLC.

I'm not really a wireless person, there seems to be some Airespace stuff still left since e.g. .iso.org.dod.internet.private.enterprises.airespace.bsnWireless.bsnAP.bsnAPTable.bsnAPEntry.bsnAPName is there, but what is the relationship really? Cisco bought Airespace a long time ago and the C9800-CL is an ios-xe appliance which you can run in VMWare with some "former Airespace" features for WLC? Sounds like the OO multiple inheritance will come in handy for once :)

PS to experiment with these files in docker, you can mount them into the container - just add volume: lines in docker-compose.yml like then one for "./netdisco/config:/home/netdisco/environments".

@mrfrtr
Copy link
Author

mrfrtr commented Oct 6, 2024

i did what you say now ı can discover ap come but clients and ssid not come

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants