当前位置:范文大全 > 公文范文 > 针对开发SNMPTrap总结

针对开发SNMPTrap总结

发布时间:2021-10-13 10:19:36

针对开发SNMPTrap的总结 本文关键词:开发,SNMPTrap

针对开发SNMPTrap的总结 本文简介:浅谈Linux中开发SNMPTrapSNMPTrap是一种标准的报告机制,广泛应用在各种网络管理软件中。本文详细介绍了SNMPTrap的基本概念,以及Linux下面net-snmp对SNMPTrap的开发与应用。1.SNMPTrap简介SNMP简单网络管理协议(SimpleNetworkManage

针对开发SNMPTrap的总结 本文内容:

浅谈Linux中开发SNMP

Trap

SNMP

Trap

是一种标准的报告机制,广泛应用在各种网络管理软件中。本文详细介绍了

SNMP

Trap

的基本概念,以及

Linux

下面

net-snmp

对SNMP

Trap的开发与应用。

1.

SNMP

Trap简介

SNMP简单网络管理协议(Simple

Network

Management

Protocol)是一种应用层协议,是TCP/IP协议族的一部分。它使网络设备之间能够方便地交换管理信息。能够让网络管理员管理网络的性能,发现和解决网络问题及进行网络的扩充。

SNMP

Trap

SNMP

的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。假如在特定事件出现的时刻,不是由

Agent

主动通知

NMS(Network

Management

Station

),那么

NMS

必须不断地对

Agent

进行轮询。这是非常浪费计算资源的方法,正如人们用中断通知

CPU

数据的到达,而不是让

CPU

进行轮询一样。Trap

通知是更加合理的选择。

总的来说,SNMP

Trap

就是被管理设备主动发送消息给

NMS

的一种机制。

2.

SNMP

Trap报文

Trap

PDU不同于其他类型的PDU格式,Trap

PDU包含的部分都是为描述事件而定义的,见下图所示:

PDU

enterprise

agent-addr

generic-trap

specific-trap

time-

stamp

var-list

各部分的解释如下:

enterprise:企业标识、对象标识。

agent-addr:产生Trap的被管理设备的地址。

generic-trap:用于识别Trap的类型,取值0-6,6代表特殊代码的扩展。

specific-trap:与generic-trap一起标识扩展Trap类型。

time-stamp:时间戳,系统从上次启动到产生该Trap的系统时间。

var-list:绑定的对象标识-值等数据。

3.

设计一个

Trap

消息

Trap

消息也是用

MIB

来定义的。在下面的例子中,我们定义了一个

Trap

消息:fxPortReset、fxPortResetOK。

树型结构如下:

fxBMDevTrap

.

1.3.6.1.4.1.33619.10.3.1.52

+----fxBMDevAlarm

.

1.3.6.1.4.1.33619.10.3.1.52.1

+----fxBMPortAlarm

.

1.3.6.1.4.1.33619.10.3.1.52.1.1

|----fxPortReset

.

1.3.6.1.4.1.33619.10.3.1.52.1.1.1

|----fxPortResetOK

.

1.3.6.1.4.1.33619.10.3.1.52.1.1.2

fxPortReset、fxPortResetOK被定义为

NOTIFICATION类型,即

SNMPv2

类型的

Trap。

4.

SNMP

Trap的实现

把定义的MIB命名为fxBMDevTrap.txt,利用mib2c.notify.conf配置文件,生成fxBMDevTrap.c和fxBMDevTrap.h。此生成方法参照mib2c工具的使用。

由模版生成的文件,不论哪种对象,都会有固定模式的整体结构。在模版文件中对节点进行定义,函数定义。处理函数,用来处理代理端所要发送的数据,数据的添加就是我们要手工实现的。我们所要做的工作就是把所需上报的数据导入到其中。

模版是针对单个变量来处理的:

1)

Trap处理函数

int

send_fxPortReset_trap(

void

)

其实现主要为:

snmp_varlist_add_variable(

首先添加trap对象,指定告警的对象为fxPortReset。

如果trap需要根据情况绑定数据,以提供更多事件信息,可继续添加数据到链表,也可指定绑定数据的对象标识符。

snmp_varlist_add_variable(

如果有多组数据绑定,就要简单重复调用snmp_varlist_add_variable

函数,因此链表var_list包含了指定类型的数据。

一个

SNMP

Trap创建成功后,调用相应的API将其发送出去即可:

send_v2trap(

var_list

);

最后需要做清理工作,代码如下:

snmp_free_varbind(

var_list

);

具体可参考源代码包~/agent/mibgroup/examples下的notification.c和notification.h文件。

2)

Trap的触发

SNMP

Trap是由Agent主动发出,NMS不对Trap做响应。当某个事件发生时,就会发送Trap消息。因此在事件触发时,可以调用上面的Trap处理函数发送。相应地事件调用相应的事件处理函数,例如:在端口重启时就可以调用send_fxPortReset_trap(),来发送PortReset的Trap。

3)

SNMP_TRAP_API

关于SNMP

Trap的发送,NET-SNMP给出了三个api函数:send_easy_trap,send_trap_vars,send_v2trap。

send_easy_trap:

发送SNMPv1和SNMPv2标准的Trap消息;

send_trap_vars:

发送可添加绑定数据的Trap消息;

send_v2trap:

支持绑定数据的SNMPv2扩展Trap。

参照源码,send_easy_trap和send_v2trap最终都是调用send_trap_vars,只是传递参数不同而已。

5.

NET-SNMP

Trap实现

1)

NET-SNMP

Trap配置

我们将生成的XXX.c和XXX.h静态编译到snmpd进程中,Trap的发送还需指定管理端地址和端口。在配置文件中,添加下面关键字:

authtrapenable

1

//打开trap自动告警的开关,1代表开启、2代表关闭

trapsink

host

[community]

[port]

//指定trap发送的地址、共同体和端口

共同体和端口可以不指定,默认为public和162。

SNMPv2的Trap关键字为trap2sink。

2)

SNMP

Trap查看

MG-SOFT管理软件可以接收Trap消息,启动MIB

Browser->Tools->Trap

Ringer

Console。在显示面板上可以查看接收到Trap的发送端、接收端、时间、共同体、协议版本、对象以及绑定的数据等信息。

SNMP

Trap分两大类:标准Trap、扩展Trap。

标准Trap:

generic字段标示Trap类型,specific字段为0,Time字段表示从snmpd启动到Trap发生所经历的时间,enterprise标示对象sysObjectID的值。

扩展Trap:

generic字段均为6,enterprise和specific在Trap定义中给出,扩展的

Trap

通常是由以下几个部分连接而成:enterprise

+

0

+

specific

trap。可由enterprise和specific一起来判断该Trap对象,其他与标准Trap相同。

3)

其他问题

当开启MG-SOFT软件的Trap

Ringer

Console工具时,往往出现绑定162端口出错,可能原因是162端口已经被占用。解决方法有两种:

a)

禁用服务,打开Windows下的本地服务,禁用windows自己的SNMP

Trap功能,开启MG-SOFT

SNMP

Trap

Service。

b)

修改端口,打开MIB

Browser->View->MIB

Browser

Preferences,设置Trap

Ringer下的Ports,这里默认用的是162,我们也可以改成其他未使用的端口。同样地,snmpd的配置文件中trapsink也要指定相同地端口。

总结

本文只关注SNMP

Trap

的相关概念和开发方法。虽然

SNMP

Trap能简单地创建而且轻松地发送到指定管理端,但似乎这并不是重点,关键地事件什么时候发生,以及事件发生后如何通知snmpd进程发送Trap,都可以说是十分复杂的问题。对此,作为一个有理想的程序员,还需要坚定不移地继续深入地了解更多

SNMP

的知识。

版权所有:蓬勃范文网 2010-2024 未经授权禁止复制或建立镜像[蓬勃范文网]所有资源完全免费共享

Powered by 蓬勃范文网 © All Rights Reserved.。蜀ICP备20021444号