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;