snmp简介及应用设计.doc

上传人:小飞机 文档编号:2762905 上传时间:2023-02-24 格式:DOC 页数:21 大小:2.06MB
返回 下载 相关 举报
snmp简介及应用设计.doc_第1页
第1页 / 共21页
snmp简介及应用设计.doc_第2页
第2页 / 共21页
snmp简介及应用设计.doc_第3页
第3页 / 共21页
snmp简介及应用设计.doc_第4页
第4页 / 共21页
snmp简介及应用设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《snmp简介及应用设计.doc》由会员分享,可在线阅读,更多相关《snmp简介及应用设计.doc(21页珍藏版)》请在三一办公上搜索。

1、精选优质文档-倾情为你奉上SNMP简介及应用设计专心-专注-专业目 录1 SNMP简介1.1 snmp概况简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的internet协议簇的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。它由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema),和一组数据对象。(1)

2、 SNMP是为网络管理服务而定义的应用协议,在1988年8月首次定义,由Internet IETF的研究小组为了解决Internet上的路由器管理问题而提出的,很快就在RFC1157中达到了正式标准。 (2) SNMP是NMS(Network Management System)和代理之间的异步请求和相应协议。 (3) SNMP是由一系列协议组和规范组成的,它们提供了一种从网络上的设备中收集网络管理信息的方法。 (4) SNMP被设计成与协议无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。 (5) 从被管理设备中收集数据有两种方法:一种是轮询(poll

3、ing-only)方法,另一种是基于中断(interrupt-based)的方法。 (6) SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。 1.2 名词解释SNMP,Simple Network Management Protocol:简单网络管理协议 它是一个标准的用于管理IP网络上结点的协议。此协议包括了监视和控制变量集以及用于监视设备的两个数据格式:SMI和MIB。 MIB, Management Information Base:管理信息库 由网络管理协议访问的管理对象数据库,它包括SNMP可以通过网络设备的SNMP管理代理进行设置的变量。 SMI,S

4、tructure of Management Information:管理信息结构 用于定义通过网络管理协议可访问的对象的规则。SMI定义在MIB中使用的数据类型及网络资源在MIB中的名称或表示。 PDU,Protocol Data Unit:协议数据单元 在网络中传送的数据包。 SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。OID,Object Identifier:对象标识符区分MIB的成员ASN.1:高级数据描述语言,描述数据类型、结构、组织及编码方法。包含语法符号和编码规则两大部分。SNMP使用ASN.1描述协议数据单元(PDU)和管理对象

5、信息库(MIB)1.3 主要版本及特点(1) 目前snmp有三个版本,v1,v2,v3。(2) v2, v1 的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。(3) v3提供了验证机制、加密机制、时间同步机制等,安全性大大提高。(4) SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站关于MIB定义信息的各种查询。1.4 SNMP参考模型由以下4个主要部分构成:互联网络,网络协议,网络管理进程和被管网络资源图1-1snmp参考模型包含三种

6、消息类型:get,set,trap(1) get消息:Get-Request ,Get-Next-Request,Get-ResponseSNMP管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next-Request用于和Get-Request组合起来查询特定的表对象中的列元素(2) Set消息:Set-Request,SetResponseSNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)(3) Trap消息:SNMP代理使用

7、Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生。MIB2 CERTUSNET节点介绍2.1 Certusnet OID管理信息库(Management Information Base)MIB指明了网络元素所维持的变量(即能够被管理进程查询和设置的信息)。MIB给出了一个网络中所有可能的被管理对象的集合的数据结构。SNMP的管理信息库和域名DNS相似的树型结构,根在最上面,根没有名字,也没有标号。图2-1画出了MIB的一部分,它又被称为对象命名(object naming tree)。图2- 1 MIB对象命名树的顶级对象三个,在iso的下面有四个节点,每个节点有标号。标号

8、一般是从0,1,2,3.分配的,对于某一个节点就可以用一串标号来标识,例如internet节点可以标识为:.1.3.6.1,system可以标识为.1.3.6.1.2.1.1。enterprises节点标识为.1.3.6.1.4.1 。Enterprises节点比较特殊,其所属节点数量比较大。Certusnet从IANA组织获取的标号为33620,certusnet完整OID为.1.3.6.1.4.1.33620,图中红色字体显示部分。2.2 CERTUSNET MIB库Certusnet主要有两个mib库文件:分别为l CERTUSNET-IPTV-WATCHER-MIB.txtl IPTV

9、-WATCH-NOTIF-MIB.txtCERTUSNET-IPTV-WATCHER-MIB.txt中定义iptvWatcher模块(如图2-2),这个模块主要负责处理来自Manager端的get消息,set消息。IPTV-WATCH-NOTIF-MIB.txt中定义channelAlarmNotif模块(如图2-3),这个模块与iptvWatcher不同,主要负责发送trap消息到Manager端。图2- 2 iptvWatcher模块图2- 3channelAlarmNotif模块关于这些MIB节点的OID以及所获取数据的对应数据库的表大概介绍,如表2-1是iptv-watcher模块的节

10、点介绍,表2-2是channelAlarmNotif的介绍。表2-1certusnet子节点域名数据库iptv-watcherOID描述audiostreambwTableaudiostreambw.1.3.6.1.4.1.33620.1.1带宽信息audiostreamdescTableaudiostreamdesc.1.3.6.1.4.1.33620.1.2audiostreamintervalTableaudiostreaminterval.1.3.6.1.4.1.33620.1.3传输的数据包信息audiostreamqualTableaudiostreamqual.1.3.6.1.4

11、.1.33620.1.4MOS值channelinfoTablechannelinfo.1.3.6.1.4.1.33620.1.5频道信息audiostreampkttransTablestreampkttrans.1.3.6.1.4.1.33620.1.6音频流数据包信息videostreampkttransTablestreampkttrans.1.3.6.1.4.1.33620.1.7视频流数据包信息audiostreampkttranssumTablestreampkttranssum.1.3.6.1.4.1.33620.1.8videostreampkttranssumTablest

12、reampkttranssum.1.3.6.1.4.1.33620.1.9audiostreamstatusTablestreamstatus.1.3.6.1.4.1.33620.1.10音频流状态信息videostreamstatusTablestreamstatus.1.3.6.1.4.1.33620.1.11视频流状态信息audiostreamtr101290p1Tablestreamtr101290p1.1.3.6.1.4.1.33620.1.12videostreamtr101290p1Tablestreamtr101290p1.1.3.6.1.4.1.33620.1.13audio

13、streamtr101290p2Tablestreamtr101290p2.1.3.6.1.4.1.33620.1.14videostreamtr101290p2Tablestreamtr101290p2.1.3.6.1.4.1.33620.1.15audiostreamtransprotocolTablestreamtransprotocol.1.3.6.1.4.1.33620.1.16videostreamtransprotocolTablestreamtransprotocol.1.3.6.1.4.1.33620.1.17videostreamdescTablevideostreamde

14、sc.1.3.6.1.4.1.33620.1.18videostreamframeTablevideostreamframe.1.3.6.1.4.1.33620.1.19videostreamframebwTablevideostreamframebw.1.3.6.1.4.1.33620.1.20videostreamframejitterTablevideostreamframejitter.1.3.6.1.4.1.33620.1.21videostreamintervalTablevideostreaminterval.1.3.6.1.4.1.33620.1.22videostreamin

15、tervalextTablevideostreamintervalext.1.3.6.1.4.1.33620.1.23videostreamqualTablevideostreamqual.1.3.6.1.4.1.33620.1.24videostreamsceneTablevideostreamscene.1.3.6.1.4.1.33620.1.25lastupdateintervalTablelastupdateinterval.1.3.6.1.4.1.33620.1.26baseip2indexTablechannelinfo.1.3.6.1.4.1.33620.1.27索引表lastq

16、ualifiedhistTablelastqualifiedhist.1.3.6.1.4.1.33620.1.28streammdiqualTablestreammdiqual.1.3.6.1.4.1.33620.1.29表2-2 channelAlarmNotif域名Channelalarm表OID描述channelAddresschannel_address.1.3.6.1.4.1.33620.2.1频道地址mosValuemosvalue.1.3.6.1.4.1.33620.2.2MOS值vstqvstq.1.3.6.1.4.1.33620.2.3codecQuant.codecquan

17、t.1.3.6.1.4.1.33620.2.4alarmTimealarmtime.1.3.6.1.4.1.33620.2.5告警时间causeTypetype.1.3.6.1.4.1.33620.2.6mediaRatemedia_rate.1.3.6.1.4.1.33620.2.7lossRatelossrate.1.3.6.1.4.1.33620.2.8channelPortchannel_port.1.3.6.1.4.1.33620.2.9频道端口mdiDfmdi_df.1.3.6.1.4.1.33620.2.10DFmdiMlrmdi_mlr.1.3.6.1.4.1.33620.2.

18、11MLR3 索引对MIB变量进行操作,必须对MIB的每个变量进行标识。只有叶子节点是可操作的, SNMP没法处理表格的一整行或一整列. l 简单变量 对于简单变量的处理是通过在其对象标识后面添加.0处理。例如对象标识是1.3.6.1.2.1.7.1,则实例标识是1.3.6.1.2.1.7.1.0。对于简单变量,.0就是表示索引。例如:rootice chulk# snmpget -v2c -c certus 127.0.0.1 .1.3.6.1.2.1.7.1.0UDP-MIB:udpInDatagrams.0 = Counter32: 179l 表格 每个MIB中的索引都包含一个以上的索引

19、。对于audiostreambw表来说,MIB定义了包含channeladdr和channelport对应的索引。在表格中,一个给定变量的所有实例都在下个变量的所有实例之前显示。这意味表格的操作顺序是先行后列的。表格中对行的排序和表格中索引的值有关。关于索引查询的主要是在baseip2indexTable节点。由表2-1可以看出节点数据来自数据库iptv-watcher的channelinfo表,baseip2indexTable加载ip和port两项数据。container_load接口里用的sql语句:SELECT channeladdr ,channelport FROM channel

20、info WHERE monitored = t。channeladdr和channelport主要作用是来生成表索引。如3-1 84就是一个索引,是表audiostreambwTable的一条索引。图3-1索引的获取过程Manager端在进行snmpget,snmpgetnext操作获取数据,必须知道要获取数据的完整OID,否则无法获得数据。如图3-1显示Index获取过程。Manager端通过查询baseip2indexTable获取IP 和Port对应的唯一索引,索引加上表名,列名合成完整OID。如下图所示。图3-2 OID解释#snmpget -v2c -c certus 127.0.

21、0.1 .1.3.6.1.4.1.33620.1.1.1.4.84 运行获取数据:CERTUSNET-IPTV-WATCHER-MIB:adsmbwpeakaudiobandwidth.84 = Counter64: 1880184 Manager与AgentSnmpd是一个守护进程,它是作为后台进程启动简单网络管理协议(SNMP)代理程序。接受客户端的请求并回应。当某些事件发生,代理进程主动发出的报文(trap操作),通知管理进程特定事件发生。在进行第三方扩展代理,用mib2c生成MIB表节点对应的代码。调用第三方接口。4.1 Manager如图4-1描述Manager端的请求与接收回应过程

22、图4- 1 Manager端与Agent交互4.2 AgentAgent代理端要进行PDU数据包解析,查询MIB,将操作结果封装成PDU发送回请求端。如图4-2图4- 2 Agent处理过程Main Loop of Agent: 1. 代理在默认161端口等待数据到来2. 读取UDP数据报,标记传输地址并发送实体. 3. 跟踪被代理处理逻辑请求ID 4. 序列化数据报成为ASN.1格式 5. 转换成snmp消息6. 检测版本号 7. 检测团体名(相当于密码),如果是未知的,则代理通过162端口发送AUTHENTICATION trap 到管理端并丢弃数据包。8. 代理遍历请求的变量列表,代理调

23、用访问程序执行所需的操作。5 GET 5.1 代理流程以adudiostreambwTable为例,运行代理:./audiostreambwTable f L D audiostreambwTable MSnmpwalk测试:rootice chulk# snmpwalk -v2c -c public 127.0.0.1 audiostreambwTable一个子代理的大概运行流程如图5-1 图5- 1子代理运行过程5.2 接口介绍公共接口:initialize_interface、shutdown_interface、registration_get、registration_set con

24、tainer_get、container_size、allocate_rowreq_ctx、release_rowreq_ctx、index_to_oid index_from_oid、_row_find_by_mib_index、_container_init、_container_shutdown、_container_load、_container_free。initialize_interface:初始化表定义,定义一张表的内容和它的结构化shutdown_interface:关闭表并关闭容器registration_get:表的get方法注册,处理get消息registration_

25、set:表的set方法注册,处理set消息container_get:返回一个容器container_size:容器大小allocate_rowreq_ctx:为一张表数据的分配内存,xxxTable_rowreq_ctx结构存放表的索引以及表数据。release_rowreq_ctx:为表结构释放内存index_to_oid:转换 索引为OIDindex_from_oid:从OID获取索引_row_find_by_mib_index:这个接口用来查询get指定的索引数据_container_init:容器的初始化_container_shutdown:容器的关闭_container_load

26、:load initial data_container_free:container clean up这些接口的具体实现及最终调用是在xxxTable_data_access.c文件中,而我们要更改的具体实现数据加载在xxxTable_container_load接口。5.3 数据加入到容器的过程5.3.1 子代理调用container_load以audiostreambwTable表为例,介绍子代理程序将数据加入容器的过程,在audiostreambwTable_subagent的main函数中调用init_audiostreambwTable初始化mib代码,一直到调用audiostre

27、ambwTable_container_load加载数据。init_audiostreambwTable-initialize_table_audiostreambwTable-_audiostreambwTable_initialize_interface-_audiostreambwTable_container_init netsnmp_cache_create(_cache_load)-audiostreambwTable_container_load5.3.2 数据加载过程图5- 2数据封装到容器从数据库获取数据,对应一张表的数据,相对于MIB中的表节点的值,将从数据库获取的数据进行

28、操作放入容器中,如图5-2。. 图5- 3加载过程如上图,从数据库iptv-watcher中将audiostreambw这张表的数据取出来,通过类型转换加入rowreq_ctx的data结构中,每次载入一行记录,表以channel_address和channel_port建立索引,图中audiostreambwIndex为audiostreambwTable的索引,最后调用CONTAINER_INSERT载入容器,再进行查询获取对应的数据,反馈给发起get的Manager端。5.3.3 container_load流程6 Trap6.1 Trap作用在SNMP 管理站中,运行着一个后台进程sn

29、mpd,负责接收和确认SNMP 请求及Trap信号、处理请求并返回结果、向配置文件中的所有主机发送Trap 信号。TRAP是提供从代理进程到管理站的异步报告机制。为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要时向管理站报告异常事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析。6.2 Trap的工作流程如图6-1 Agent发送trap消息给Manager端agent端:编写mib文件,确定好trap名称等信息。命令方式:发送各种trap命令(ma

30、nager地址后面一定要加端口号162),在manager端看反应结果,在agent端无反应以下都未实现。自动触发:配置snmpd.conf设置触发trap,系统发生某类错误时会自动触发相应类型的trap,发送给manager。程序方式:一部份trap需要写c语言程序,用相应的api(send_v2trap)发送。manager端:配置snmptrapd.conf文件,设置访问权限。将mib导入到mibs文件夹中。编写处理trap的程序。配置snmptrapd.conf文件,添加traphandler项,将不同的trap对应到不同的处理程序上。图6- 1 Trap模型6.3 Trap调用过程图

31、6- 2 Trap过程 如上图代理启动,进行必要的参数处理,然后初始化库,再初始化ChannelAlarm mib 代码,调用trapIndexInit初始化索引trapIndex 为表channelAlarm ID最小的值,snmp_larm_register注册回调函数,每隔30秒回调一次send_channelAlarm_trap, 接着getTrap将要Trap的数据从数据库查询出来并处理载入channelAlarm_rec结构数组中。再把数据载入netsnmp_variable_list中,最后发送trap。6.4 Trap数据流图6- 3Trap数据过程Trap代理启动后,从ipt

32、v-watch数据库取出数据,以现在的时间为准查询出过去30s时间内的数据,这个查询时间可以在snmpconf表中配置,载入ChannelAlarm_rec数组中,再把数据以及对应mib OID载入netsnmp_variable_list中,最后调用send_v2trap发送trap。每发送20次休眠1s,防止发送太快出现丢包。如图6-36.5 TrapIndex图6- 4 TrapIndex在Trap的发送过程中,trapIndex很重要,它是一个全局的静态变量,代理程序启动时,由trapIndexInit函数初始化trapIndex,因为是第一次启动,所以将trapIndex值设置为在过

33、去30s内数据库channelalarm表中数据id 最小的记录id。然后注册自己的回调函数send_channelAlarm_trap,每隔30s会调用一次。在send_channelAlarm_trap中会调用getTrap从数据库中获取数据,当插入一条记录时,就比较一下当前的currIndex和trapIndex,如果currIndex大于trapIndex,跟新索引值为currIndex的值,这样不停的更新trapIndex。当下次再进行回调时,直接可以查询id比trapIndex大的记录,因为比trapIndex小的记录都已经发送完毕,保证了数据库channelAlarm告警信息能全部发送,不会造成数据遗漏或者重复发送。TrapIndex指示着告警信息在数据库所要取出来继续发送的位置。trapIndex与currIndex都是指数据库channelAlarm中自增的id。如图6-4所示。参考certusnet-iptv-watcher-snmp.doc数据库定义.doc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号