2006-10-31

Cisco/Catalyst Vlans on Ports - final solution

With great help from Cisco NMS EMEA TAC, I have finally found solution to map tagged and untagged vlans to physical ports on the Cisco Catalyst switches, without using SNMP Community String Indexing (CSI). With CSI one can select entity/instance of multi-instanced MIBs, but it is quite awkward and not well supported on most NMSs because you have to use separate community strings for every instance. On Catalysts, BRIDGE-MIB is a multi-instanced MIB, instances of which exist separately for every VLAN. Its dot1dBaseTable is the only way to map bridge port numbers to interfaces from ifTable. Some SNMP tables use bridge port numbering to point physical ports, so to bind data from that tables to something more tangible than bridge port number (like interface from IF-MIB or physical port from ENTITY-MIB) one have to scan dot1dBaseTable 3000 times , in case of having 3000 vlans!


I came up against BRIDGE-MIB and CIS in Vlan->Port mapping case because of the port numbering used in vmMembershipSummaryTable (CISCO-VLAN-MEMBERSHIP-MIB). I have been using that table to get access ports (ports with only one untagged vlan) for given vlan. CISCO-VLAN-MEMBERSHIP-MIB has another table - vmMembershipTable - which looked promising, but due to some kind of blackout of my mind, I thought that vmMembershipTable is write only and I have to use that damn vmMembershipSummaryTable. Now I know that vmMembershipTable can be read, is indexed in the the same manner as interfaces in ifTable and has one very useful column: vmVlan.


So for tagged vlans use vlanTrunkPortTable and for untagged - vmMembershipTable. Booth contain links to interfaces in ifTable, which can be easily linked to physical ports in ENTITY-MIB, then.

2 comments:

Malte said...

I really thank your for this article, i am currently working on that issue for some kind of custom NMS. It's like many issues regarding cisco and snmp: There actually is documentation, you just have to find it ;-)

Jean said...

This article rocks! Thanks a lot.