首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 针对开发SNMPTrap总结

    时间:2021-02-13 06:02:59 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:开发 SNMPTrap

    针对开发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

    的知识。

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识