SmartMIB Small Solution:

MPLS Type Interface Statistics (Utilization & Throughput)


(SM-SmallSol0038)

Solution’s SOSL Based management process script:

 

The solution defines the following main modules:

 

MainMIBTables:

This is the main module that controls and instantiates the ‘mibTables’ module.

 

MainFilterMplsTables:

This is the main module that controls and instantiates the ‘MplsFilterTables’ module.

 

MainIfMpls:

This is the main module that controls and instantiates the ‘MplsInterfaces1’ and the ‘MplsInterfaces2’ modules.

 

MainIfHCMpls:

This is the main module that controls and instantiates the ‘HCMplsInterfaces1’ and the ‘HCMplsInterfaces2’ modules.

 

The details of the Main modules and the transient Service modules are provided below:

 


 

MODULE MainMIBTables ();

DESCRIPTION "Interface INVENTORY information";

BEGIN

            POLL-FREQ

            {

                        MODULE-CALL mibTables();

                        WAIT (12000);

            };

END

 


 

MODULE MainFilterMplsTables ();

DESCRIPTION "Interface INVENTORY information";

BEGIN

 

            POLL-FREQ

            {

                        MODULE-CALL MplsFilterTables();

                        WAIT (12000);

            };

END

 


 

MODULE MainIfMpls ();

DESCRIPTION "Normal Speed Interfaces Process";

BEGIN

            ALL-DEV BY DEV

            {

                        MODULE-CALL MplsInterfaces1 (DEV);

            };

 

            POLL-FREQ

            {

                        WAIT (3000);

 

                        ALL-DEV BY DEV

                        {

                                    MODULE-CALL MplsInterfaces2 (DEV);

                        };

            };

END

 


 

MODULE MainIfHCMpls ();

DESCRIPTION "High Speed Interfaces Process";

BEGIN

            ALL-DEV BY DEV

            {

                        MODULE-CALL HCMplsInterfaces1 (DEV);

            };

 

            POLL-FREQ

            {

                        WAIT (3000);

 

                        ALL-DEV BY DEV

                        {

                                    MODULE-CALL HCMplsInterfaces2 (DEV);

                        };

 

            };

END

 


 

MODULE mibTables ();

DESCRIPTION "Interface INVENTORY information";

BEGIN             

            ALL-DEV BY DEV

            {

                        SET-INDEX ifTable ( ifDescr [ ifIndex, INT ] );

            };

END

 


 

MODULE MplsFilterTables ();

DESCRIPTION "Interface INVENTORY information";

BEGIN

            ALL-DEV BY DEV

            {

                        WITH-INDEX ifTable

                        {

                                    POLL (   ifDescr;

                                                ifMtu;

                                                ifType;

                                                ifSpeed;

                                                ifAdminStatus;

                                                ifOperStatus );

 

                                    DEFINE ifAdminStatus  DB DISPL;        

                                    DEFINE ifType  DB DISPL;        

                                    DEFINE ifOperStatus  DB DISPL;

                                    DEFINE ifSpeed DB DISPL;        

 

                                    IF ( ifAdminStatus    == "up" AND

                                          ifOperStatus      == "up" AND

                                          ifType               == "^mpls" AND

                                          ifSpeed             <=  20000000 )

                                    THEN

                                                STORE-INDEX "IfMpls";

 

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

                                                # “IfMpls“ index list now contains the list of Ethernet

                                                # csmacd type interfaces on each of the managed

                                                # elements

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

 

                                    ELSEIF  ( ifAdminStatus    == "up" AND

                                                 ifOperStatus      == "up" AND

                                                 ifType               == "^mpls" AND

                                                 ifSpeed              >  20000000      )

                                    THEN

                                                STORE-INDEX "IfHCMpls";

 

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

                                                # “IfHCMpls“ index list now contains the list of High 

                                                # Speed Ethernet csmacd type interfaces on each

                                                # of the managed elements

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

 

                                                IF ( ifAdminStatus    == "up" AND

                                                      ifOperStatus      == "up" AND

                                                      ifType               == "^mplsTunnel" AND

                                                      ifSpeed             <=  20000000 )

                                                THEN

                                                            STORE-INDEX "IfMplsTunnel";

            

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

                                                            # “IfMplsTunnel“ index list now contains the

                                                            # list of Ethernet csmacd type interfaces on 

                                                            # each of the managed elements

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

 

                                                ELSEIF  ( ifAdminStatus    == "up" AND

                                                             ifOperStatus      == "up" AND

                                                             ifType               == "^mplsTunnel" AND

                                                             ifSpeed              >  20000000      )

                                                THEN

                                                            STORE-INDEX "IfHCMplsTunnel";

 

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

                                                            # “IfHCMplsTunnel“ index list now contains the 

                                                            # list of High Speed Ethernet csmacd type

                                                            # interfaces on each of the managed elements

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

 

                                                ENDIF;

                        };

            };

END


 

MODULE  MplsInterfaces1 (DEV  DEVICE);

DESCRIPTION "";

BEGIN

 

            WITH-INDEX IfEthernet

            {

                        POLL (   ifInOctets;

                                    ifOutOctets;

                                    ifInUcastPkts;

                                    ifInMulticastPkts;

                                    ifOutUcastPkts;

                                    ifInBroadcastPkts;

                                    ifOutMulticastPkts;

                                    ifOutBroadcastPkts;

                                    ifSpeed;

                                    sysUpTime;

                                    ifCounterDiscontinuityTime );

            };

END

 


 

MODULE  HCMplsInterfaces1 (DEV      DEVICE);

DESCRIPTION "";

BEGIN

 

            WITH-INDEX IfHCEthernet

            {

                        POLL (   ifHCInOctets;

                                    ifHCOutOctets;

                                    ifHCInUcastPkts;

                                    ifHCInMulticastPkts;

                                    ifHCOutUcastPkts;

                                    ifHCInBroadcastPkts;

                                    ifHCOutMulticastPkts;

                                    ifHCOutBroadcastPkts;

                                    ifSpeed;

                                    sysUpTime;

                                    ifCounterDiscontinuityTime );

            };

END

 


 

MODULE  MplsInterfaces2 (DEV  DEVICE);

DESCRIPTION "";

BEGIN

 

            WITH-INDEX IfEthernet

            {

                        DEFINE ifInOctetsT1 INT;

                        DEFINE ifOutOctetsT1 INT;

                        DEFINE ifInUcastPktsT1 INT;

                        DEFINE ifInMulticastPktsT1 INT;

                        DEFINE ifInBroadcastPktsT1 INT;

                        DEFINE ifOutUcastPktsT1 INT;

                        DEFINE ifOutMulticastPktsT1 INT;

                        DEFINE ifOutBroadcastPktsT1 INT;

                        DEFINE nTime1 INT;

                        DEFINE ifDisconTime1 INT;

 

                        DEFINE ifInOctets DB INT;

                        DEFINE ifOutOctets DB INT;

                        DEFINE ifInUcastPkts DB INT;

                        DEFINE ifInMulticastPkts   DB INT;

                        DEFINE ifInBroadcastPkts DB INT;

                        DEFINE ifOutUcastPkts DB INT;

                        DEFINE ifOutMulticastPkts DB INT;

                        DEFINE ifOutBroadcastPkts DB INT;

                        DEFINE sysUpTime DB INT;

                        DEFINE ifCounterDiscontinuityTime DB INT;

 

                        ifInOctetsT1 = ifInOctets;

                        ifOutOctetsT1 = ifOutOctets;

                        ifInUcastPktsT1 = ifInUcastPkts;

                        ifInMulticastPktsT1 = ifInMulticastPkts;

                        ifInBroadcastPktsT1 = ifInBroadcastPkts;

                        ifOutUcastPktsT1 = ifOutUcastPkts;

                        ifOutMulticastPktsT1 = ifOutMulticastPkts;

                        ifOutBroadcastPktsT1 = ifOutBroadcastPkts;

                        nTime1 = sysUpTime /100;

                        ifDisconTime1 = ifCounterDiscontinuityTime;

 

                        RMV (    ifInOctets;

                                    ifOutOctets;

                                    ifInUcastPkts;

                                    ifInMulticastPkts;

                                    ifOutUcastPkts;

                                    ifInBroadcastPkts;

                                    ifOutMulticastPkts;

                                    ifOutBroadcastPkts;

                                    ifSpeed;

                                    ifCounterDiscontinuityTime);

 

                        POLL (   ifDescr;

                                    ifInOctets;

                                    ifOutOctets;

                                    ifInUcastPkts;

                                    ifInMulticastPkts;

                                    ifOutUcastPkts;

                                    ifInBroadcastPkts;

                                    ifOutMulticastPkts;

                                    ifOutBroadcastPkts;

                                    ifSpeed;

                                    sysUpTime;

                                    ifCounterDiscontinuityTime);

 

                        DEFINE ifInOctetsT2 INT;

                        DEFINE ifOutOctetsT2 INT;

                        DEFINE ifInUcastPktsT2 INT;

                        DEFINE ifInMulticastPktsT2 INT;

                        DEFINE ifInBroadcastPktsT2 INT;

                        DEFINE ifOutUcastPktsT2 INT;

                        DEFINE ifOutMulticastPktsT2 INT;

                        DEFINE ifOutBroadcastPktsT2 INT;

 

                        ifInOctetsT2 = ifInOctets;     

                        ifOutOctetsT2 = ifOutOctets;

                        ifInUcastPktsT2 = ifInUcastPkts;

                        ifInMulticastPktsT2 = ifInMulticastPkts;

                        ifInBroadcastPktsT2 = ifInBroadcastPkts;

                        ifOutUcastPktsT2 = ifOutUcastPkts;

                        ifOutMulticastPktsT2 = ifOutMulticastPkts;

                        ifOutBroadcastPktsT2 = ifOutBroadcastPkts;

 

                        DEFINE nTime2 INT;

                        DEFINE ifDisconTime2 INT;

 

                        nTime2 = sysUpTime /100;

                        ifDisconTime2 = ifCounterDiscontinuityTime;

 

                        IF (ifDisconTime2 == ifDisconTime1)

                        THEN                

           

                                CounterData(     DeltaifInOctets, 

                                                        ifInOctetsT1,     

                                                        ifInOctetsT2);

 

                                CounterData(     DeltaifOutOctets,           

                                                        ifOutOctetsT1,   

                                                        ifOutOctetsT2);

 

                                CounterData(     DeltaifInUcastPkts ,                   

                                                        ifInUcastPktsT1,            

                                                        ifInUcastPktsT2);

 

                                CounterData(     DeltaifInBroadcastPkts,              

                                                        ifInBroadcastPktsT1,      

                                                        ifInBroadcastPktsT2);

 

                                CounterData(     DeltaifInMulticastPkts ,               

                                                        ifInMulticastPktsT1,        

                                                        ifInMulticastPktsT2);

 

                                CounterData(     DeltaifOutUcastPkts,                  

                                                        ifOutUcastPktsT1,                      

                                                        ifOutUcastPktsT2);

 

                                CounterData(     DeltaifOutBroadcastPkts,

                                                        ifOutBroadcastPktsT1,    

                                                        ifOutBroadcastPktsT2);

 

                                CounterData(     DeltaifOutMulticastPkts,

                                                        ifOutMulticastPktsT1,      

                                                        ifOutMulticastPktsT2);

 

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

                                    ## Calculating the time difference between the first and second

                                    ## run polls as reported by each managed element

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

 

                                    DEFINE DeltaT   INT;                             

                                    DeltaT = nTime2 - nTime1;

 

                                    DEFINE ifSpeed DB INT;

 

                                    IF (ifSpeed != 0 AND DeltaT > 0)

                                    THEN

 

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

                                            ## The following formulas calculates the In/OutUtilization

                                            ## values for all traffic passing for the particular interface

                                            ## type

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

 

                                            DEFINE InTrafficUtilization DB INT;

                                            DEFINE OutTrafficUtilization DB INT;

 

                                      InTrafficUtilization = (DeltaifInOctets * 8) * 100 / (DeltaT * ifSpeed);

                                      OutTrafficUtilization = (DeltaifOutOctets * 8) * 100/ (DeltaT * ifSpeed);

 

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

                                            ## The following formulas calculates the In/Out

                                            ## Throughput values for the particular interface type

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

 

                                            DEFINE InThroughput     DB INT;

                                            DEFINE OutThroughput   DB INT;                        

 

                                            InThroughput     = (DeltaifInOctets * 8) *1000      / DeltaT;

                                            OutThroughput   = (DeltaifOutOctets * 8) *1000    / DeltaT;

 

                                    ENDIF;

                        ENDIF;

            };

END

 


 

MODULE  HCMplsInterfaces2 (DEV      DEVICE);

DESCRIPTION "";

BEGIN

 

            WITH-INDEX IfHCEthernet

            {

                        DEFINE ifHCInOctetsT1 INT;

                        DEFINE ifHCOutOctetsT1 INT;

                        DEFINE ifHCInUcastPktsT1 INT;

                        DEFINE ifHCOutUcastPktsT1 INT;

                        DEFINE ifHCInMulticastPktsT1 INT;

                        DEFINE ifHCInBroadcastPktsT1  INT;

                        DEFINE ifHCOutMulticastPktsT1 INT;

                        DEFINE ifHCOutBroadcastPktsT1 INT;

                        DEFINE nTime1 INT;

                        DEFINE ifDisconTime1 INT;

 

                        DEFINE ifInOctets DB INT;

                        DEFINE ifOutOctets DB INT;

                        DEFINE ifInUcastPkts DB INT;

                        DEFINE ifOutUcastPkts DB INT;

                        DEFINE ifHCInMulticastPkts DB INT;

                        DEFINE ifHCInBroadcastPkts  DB INT;

                        DEFINE ifHCOutMulticastPkts DB INT;

                        DEFINE ifHCOutInBroadcastPkts  DB INT;

                        DEFINE sysUpTime DB INT;

                        DEFINE ifCounterDiscontinuityTime DB INT;

 

                        ifHCInOctetsT1 = ifHCInOctets; 

                        ifHCOutOctetsT1 = ifHCOutOctets;

                        ifHCInUcastPktsT1 = ifHCInUcastPkts;

                        ifHCOutUcastPktsT1 = ifHCOutUcastPkts;

                        ifHCInMulticastPktsT1 = ifHCInMulticastPkts;

                        ifHCInBroadcastPktsT1 = ifHCInBroadcastPkts;

                        ifHCOutMulticastPktsT1 = ifHCOutMulticastPkts;

                        ifHCOutBroadcastPktsT1  = ifHCOutBroadcastPkts;

                        nTime1 = sysUpTime /100;

                        ifDisconTime1 = ifCounterDiscontinuityTime;

 

                        RMV (    ifHCInOctets;

                                    ifHCOutOctets;

                                    ifHCInUcastPkts;

                                    ifHCInMulticastPkts;

                                    ifHCOutUcastPkts;

                                    ifHCInBroadcastPkts;

                                    ifHCOutMulticastPkts;

                                    ifHCOutBroadcastPkts;

                                    ifSpeed;

                                    sysUpTime;

                                    ifCounterDiscontinuityTime);

 

                        POLL (   ifDescr; ifHCInOctets;

                                    ifHCOutOctets;

                                    ifHCInUcastPkts;

                                    ifHCInMulticastPkts;

                                    ifHCOutUcastPkts;

                                    ifHCInBroadcastPkts;

                                    ifHCOutMulticastPkts;

                                    ifHCOutBroadcastPkts;

                                    ifSpeed;

                                    sysUpTime;

                                    ifPhysAddress;

                                    ifCounterDiscontinuityTime

                                    ifLinkUpDownTrapEnable );

 

                        DEFINE ifHCInOctetsT2 INT;

                        DEFINE ifHCOutOctetsT2 INT;

                        DEFINE ifHCInUcastPktsT2 INT;

                        DEFINE ifHCOutUcastPktsT2 INT;

                        DEFINE ifHCInMulticastPktsT2 INT;

                        DEFINE ifHCInBroadcastPktsT2 INT;

                        DEFINE ifHCOutMulticastPktsT2 INT;

                        DEFINE ifHCOutBroadcastPktsT2 INT;

 

                        ifHCInOctetsT2 = ifHCInOctets; 

                        ifHCOutOctetsT2 = ifHCOutOctets;

                        ifHCInUcastPktsT2 = ifHCInUcastPkts;

                        ifHCOutUcastPktsT2 = ifHCOutUcastPkts;

                        ifHCInMulticastPktsT2 = ifHCInMulticastPkts;

                        ifHCInBroadcastPktsT2  = ifHCInBroadcastPkts;

                        ifHCOutMulticastPktsT2 = ifHCOutMulticastPkts;

                        ifHCOutBroadcastPktsT2  = ifHCOutBroadcastPkts;

 

                        DEFINE nTime2 INT;