SNMP Traps

1. Introduction

HORISEN SMS Platform supports notifications using SNMP Traps.
Implemented protocol versions are:

  • SNMPv2c
  • SNMPv3

2. Configuring SNMP Traps in the Platform

In order to receive SNMP Traps, platform owner needs to provide IP address and port where SNMP notifications will be sent, and depending on the selected version of the protocol:

  • For SNMPv2c – community name (example: public),
  • For SNMPv3 set of parameters:

    • enterpriseid: "8000000001020304"
    • username: "traptest"
    • authalgorithm: "sha"
    • authpassword: "mypassword"
    • privalgorithm: "aes"
    • privpassword: "mypassword"

The above parameters must be sent to the HORISEN IT Team because currently, GUI does not support SNMP configuration.

3. Configuring the SNMP Trap Receiver to Accept the Traps

The typical configuration for the snmptrapd, the standard Linux server for receiving SNMP Traps, for v2c protocol is:

# SNMP v2 configuration
authCommunity log public

and for v3 protocol:

createUser -e 0x8000000001020304 traptest SHA mypassword AES
authuser log traptest

Traps are sent using UDP packets to provided IP:Port pair.

4. Structure of SNMP Traps

SNMP Traps are described in MIB provided as an addition to this document, in sections:

gateStateNotification NOTIFICATION-TYPE
   OBJECTS { gtID, gtName, gtCName, gtOperStatus, gtBindsUp, gtBindsMax, gtStatusDescription }
   STATUS current
   DESCRIPTION
      “Notification about state change on one gate”
   ::= { gtTraps 1 }

gateSystemNotification NOTIFICATION-TYPE
   OBJECTS { gtID, gtName, gtCName, gtStatusDescription }
   STATUS current
   DESCRIPTION
      “Notification about system problem on one gate”
   ::= { gtTraps 2 }

accountStateNotification NOTIFICATION-TYPE
   OBJECTS { acID, acName, acCName, acOperStatus, acBindsUp, acBindsMax, acStatusDescription }
   STATUS current
   DESCRIPTION
      “Notification about state change on one account”
   ::= { acTraps 1 }

accountSystemNotification NOTIFICATION-TYPE
   OBJECTS { acID, acName, acCName, acStatusDescription }
   STATUS current
   DESCRIPTION
      “Notification about system problem on one account”
   ::= { acTraps 2 }

5. Events That Trigger SNMP Trap

SNMP Trap notification module in the SMS Platform monitors:

  • Number of binds established for each SMPP account
  • Number of binds established for each SMPP gate

These counters are checked every 15 seconds, and whenever change is detected on any of them, SNMP Trap is generated.

6. Examples

All the examples are recorded using SNMPv3 protocol, snmptrapd, and its log. When the SNMPv2c protocol is used, available fields are the same – but the log for each query looks different.

6.1 Customer Connection Established

2023-03-15 20:42:36 registry.local [UDP: [192.168.0.202]:52186->[0.0.0.0]:0]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1678909356) 194 days, 7:38:13.56  
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.52601.1.2.0.1  
SNMPv2-SMI::enterprises.52601.1.2.2.1.2 = INTEGER: 12306
SNMPv2-SMI::enterprises.52601.1.2.2.1.4 = STRING: "SMPP Test"
SNMPv2-SMI::enterprises.52601.1.2.2.1.5 = STRING: "11482_SMPP_Test" 
SNMPv2-SMI::enterprises.52601.1.2.2.1.6 = INTEGER: 1    
SNMPv2-SMI::enterprises.52601.1.2.2.1.13 = INTEGER: 1   
SNMPv2-SMI::enterprises.52601.1.2.2.1.14 = INTEGER: 100 
SNMPv2-SMI::enterprises.52601.1.2.2.1.12 = STRING: "Status change, was 0/100 now 1/100"

6.2 Customer Connection Stopped

2023-03-15 20:44:21 registry.local [UDP: [192.168.0.202]:57322->[0.0.0.0]:0]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1678909461) 194 days, 7:38:14.61
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.52601.1.2.0.1
SNMPv2-SMI::enterprises.52601.1.2.2.1.2 = INTEGER: 12306    
SNMPv2-SMI::enterprises.52601.1.2.2.1.4 = STRING: "SMPP Test"   
SNMPv2-SMI::enterprises.52601.1.2.2.1.5 = STRING: "11482_SMPP_Test" 
SNMPv2-SMI::enterprises.52601.1.2.2.1.6 = INTEGER: 2    
SNMPv2-SMI::enterprises.52601.1.2.2.1.13 = INTEGER: 0
SNMPv2-SMI::enterprises.52601.1.2.2.1.14 = INTEGER: 100 
SNMPv2-SMI::enterprises.52601.1.2.2.1.12 = STRING: "Status change, was 1/100 now 0/100"

6.3 Supplier Connection Established

2023-03-15 20:46:21 registry.local [UDP: [192.168.0.202]:54170->[0.0.0.0]:0]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1678909581) 194 days, 7:38:15.81  
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.52601.1.1.0.1  
SNMPv2-SMI::enterprises.52601.1.1.2.1.2 = INTEGER: 12573    
SNMPv2-SMI::enterprises.52601.1.1.2.1.4 = STRING: "10236_HORMESSSUN"    
SNMPv2-SMI::enterprises.52601.1.1.2.1.5 = STRING: "10236_HORMESSSUN"    
SNMPv2-SMI::enterprises.52601.1.1.2.1.6 = INTEGER: 1    
SNMPv2-SMI::enterprises.52601.1.1.2.1.18 = INTEGER: 1   
SNMPv2-SMI::enterprises.52601.1.1.2.1.19 = INTEGER: 1   
SNMPv2-SMI::enterprises.52601.1.1.2.1.17 = STRING: "Status change, was 0/1 now 1/1"

6.4 Supplier Connection Stopped

2023-03-15 20:45:06 registry.local [UDP: [192.168.0.202]:50528->[0.0.0.0]:0]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1678909506) 194 days, 7:38:15.06  
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.52601.1.1.0.1  
SNMPv2-SMI::enterprises.52601.1.1.2.1.2 = INTEGER: 12573    
SNMPv2-SMI::enterprises.52601.1.1.2.1.4 = STRING: "10236_HORMESSSUN"    
SNMPv2-SMI::enterprises.52601.1.1.2.1.5 = STRING: "10236_HORMESSSUN"    
SNMPv2-SMI::enterprises.52601.1.1.2.1.6 = INTEGER: 2    
SNMPv2-SMI::enterprises.52601.1.1.2.1.18 = INTEGER: 0   
SNMPv2-SMI::enterprises.52601.1.1.2.1.19 = INTEGER: 1   
SNMPv2-SMI::enterprises.52601.1.1.2.1.17 = STRING: "Status change, was 1/1 now 0/1"

7. Status of the Connections

Both account and gate connections have the field OperStatus (gtOperStatus for the gates and acOperStatus for the accounts). This field has two possible values:

  • up(1)
  • down(2)

Both statuses are up if at least one bind is active. Otherwise, the status becomes down.

8. Severity Qualification

The reason why SNMP Traps do not add severity level is that level to identify is the severity of normal, minor, major, and critical, may differ from one to another gate or account. This way, notifications provide the current count of binds and the maximum configured count of binds, so that the SNMP Traps receiver can decide on the severity and take appropriate action.