Higher Level OSPF Area Metrics


 

Introduction

 

One of the principal objectives of the IMMS model is to build and maintain a higher level of management information to introduce new umbrella style metrics that could serve to enhance and maintain the network administrators knowledge of their own networks and giving them a clearer picture of how well behaved the particular running service/resource is within its environment.

 

Management solutions and applications available in the market today tends to overlook or at least under-utilised the real value to network management of the IMMS model in building and maintaining this higher level of management information.

 

One such example of building a higher level metric(s)  is by mapping the IP Datagram Routing Process to the OSPF Areas detected on each OSPF participating network device. This high level metric provides a general view of the routing health of each of the connected OSPF Areas.

 

Solution Overview

 

This management solution focuses on detecting ONLY those devices that are designated as OSPF routing participants. The solution defines a module name and description, then initiates the polling process under which the Devices (or in a specified AMZ) are fed into the polling SNMP engine, where the OSPF status of the device is determined through polling the value of the ospfAdminStat MIB Object. A variable handler is then defined to store the value which is then tested with an IF conditional statement; if the status for the particular device is ‘OSPF enabled’ then the counters for each of configured OSPF Areas are collected.

 

There are several data items that are not actually in the OSPF area MIB data that are included in this section and when combined with the OSPF data and across the OSPF topology would achieve this higher level OSPF Area metric. The ipInAddrErrors, IpRoutingDiscards, and ipOutNoRoute objects are in the MIB-2 definition, but are not associated with an OSPF area. These objects are associated with a router. Therefore, these counters are used as an area metric by adding the values for each node in an area to an area counter. For example, in the OSPF area report, the number of packets discarded due to no route found is actually the sum of the packets discarded by all of the routers in that area.

 

SOSL Based Management Process Script Configuration

 

MODULE OspfAreaLsaChecksum1 ();

DESCRIPTION "OSPF LSA DB Checksum Process";

BEGIN

            ALL-DEV BY DEV                  

            {

                        DEFINE ospfAdminStat    DB INT;

 

                        ospfAdminStat = POLL (ospfAdminStat);

 

                        IF         (ospfAdminStat == 1)

                        THEN    

                                    POLL ( ospfRouterId );

 

                                    SET-INDEX ospfAreaTable

                                    (ospfAreaId [ospfAreaId, IP] );

 

                                    WITH-INDEX ospfAreaTable

                                    {

                                                POLL (ospfSpfRuns; ospfAreaLSACksumSum);

                                    };

                                    POLL (ipOutNoRoutes; ipRoutingDiscards; ipInAddrErrors);                                   

                        ENDIF;

            };

END

 

 

#################

 

MODULE OspfAreaLsaChecksum2 ();

DESCRIPTION "OSPF LSA DB Checksum Process";

BEGIN

 

            DEFINE DevAreaCKSUM_COUNT  INT;

            DEFINE DevAreaCKSUM_COUNTdb          DB INT;

 

            DevAreaCKSUM_COUNT = 0;

 

            ALL-DEV BY DEV                  

            {

                        DEFINE ospfAdminStat    DB INT;

 

                        ospfAdminStat = POLL (ospfAdminStat);

 

                        IF         (ospfAdminStat == 1)

                        THEN    

                                    POLL (   ospfRouterId );

 

                                    SET-INDEX ospfAreaTable

                                    (ospfAreaId [ospfAreaId, IP] );

 

                                    WITH-INDEX ospfAreaTable

                                    {

                                                DEFINE ospfSpfRunsT1              MAP INT;

                                                DEFINE AreaLSACksumSumT1    MAP INT;

 

                                                DEFINE ospfSpfRuns                  DB INT;

                                                DEFINE AreaLSACksumSum        DB INT;

                                               

                                                ospfSpfRunsT1              = ospfSpfRuns;

                                                AreaLSACksumSumT1    = AreaLSACksumSum;                                      

 

                                                RMV (ospfSpfRuns; ospfAreaLSACksumSum);

 

                                                POLL (ospfSpfRuns; ospfAreaLSACksumSum);

 

                                                AreaLSACksumSumT2    = AreaLSACksumSum;

 

                                                IF (AreaLSACksumSumT1 != AreaLSACksumSumT2)

                                                THEN

                                                            MSG ("OSPF Area LSA DB Changed on Area @1 on device                                                                         @2" , ospfAreaTable, DEV);

 

                                                            DevAreaCKSUM_COUNT = DevAreaCKSUM_COUNT          +1;

                                                            DevAreaCKSUM_COUNTdb          = DevAreaCKSUM_COUNT;

 

                                                            ospfSpfRunsT2   = ospfSpfRuns;

 

                                                            CounterData (    ospfSpfRuns,

                                                                                    ospfSpfRunsT1, ospfSpfRunsT2    );

 

                                                            DEFINE ipOutNoRoutesT1 MAP INT;

                                                            DEFINE ipRoutingDiscardsT1 MAP INT;

                                                            DEFINE ipInAddrErrorsT1 MAP INT;

 

                                                            DEFINE ipOutNoRoutes DB INT;

                                                            DEFINE ipRoutingDiscards DB INT;

                                                            DEFINE ipInAddrErrors DB INT;

 

                                                            ipOutNoRoutesT2            = ipOutNoRoutes;

                                                            ipRoutingDiscardsT2       = ipRoutingDiscards;                 

                                                            ipInAddrErrorsT2            = ipInAddrErrors;

                       

                                                            RMV (ipOutNoRoutes; ipRoutingDiscards; ipInAddrErrors);

                                                            POLL (ipOutNoRoutes; ipRoutingDiscards; ipInAddrErrors);

 

                                                            DEFINE ipOutNoRoutesT2 MAP INT;

                                                            DEFINE ipRoutingDiscardsT2 MAP INT;

                                                            DEFINE ipInAddrErrorsT2 MAP INT;

 

                                                            ipOutNoRoutesT2           = ipOutNoRoutes;

                                                            ipRoutingDiscardsT2       = ipRoutingDiscards;                 

                                                            ipInAddrErrorsT2            = ipInAddrErrors;

 

                                                            CounterData (    ipOutNoRoutes,

                                                                                    ipOutNoRoutesT1,

                                                                                    ipOutNoRoutesT2                        );

                                                            CounterData (    ipRoutingDiscards,

                                                                                    ipRoutingDiscardsT1,                                                                                                      ipRoutingDiscardsT2       );

                                                            CounterData (    ipInAddrErrors,

                                                                                    ipInAddrErrorsT1,

                                                                                    ipInAddrErrorsT2                        );

 

                                                ENDIF;

                                    };

                        ENDIF;

            };

END

 


[SOSL Case Studies], [Management Concepts], [NMS Technology R&D]

[Home], [About], [Solutions Center], [NMS Market], [Products & Services],
[Management Technology], [Technical Support], [Contact us], [Site Map]