snmp简介及应用设计_第1页
snmp简介及应用设计_第2页
snmp简介及应用设计_第3页
snmp简介及应用设计_第4页
snmp简介及应用设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SNMP简介及应用设计目 录1SNMP简介11.1snmp概况11.2名词解释11.3主要版本及特点21.4SNMP参考模型22CERTUSNET节点介绍32.1Certusnet OID32.2CERTUSNET MIB库43索引64Manager与Agent74.1Manager84.2Agent85GET95.1代理流程95.2接口介绍115.3数据加入到容器的过程11子代理调用container_load11数据加载过程12container_load流程136Trap146.1Trap作用146.2Trap的工作流程146.3Trap调用过程146.4Trap数据流166.5Trap

2、Index17参考191 SNMP简介1.1 snmp概况简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的internet协议簇的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。它由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema),和一组数据对象。(1) SNMP是为网络管理服务而定义的应用协议,在1

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

4、errupt-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,Structure of Management I

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

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

7、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代理使用Trap向SNMP管理站发送非请求消

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

9、某一个节点就可以用一串标号来标识,例如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-WATCH-NOTIF-MIB.t

10、xtCERTUSNET-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模块的节点介绍,表2-2是channelAl

11、armNotif的介绍。表2-1certusnet子节点域名数据库iptv-watcherOID描述audiostreambwTableaudiostreambw带宽信息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.1.33620.1.4MOS值channelinfoTablechanneli

12、nfo.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.8videostreampkttranssumTablestreampkttranssum.1.3.6.1.4.1.33620.1.9aud

13、iostreamstatusTablestreamstatus.1.3.6.1.4.1.33620.1.10音频流状态信息videostreamstatusTablestreamstatus.11视频流状态信息audiostreamtr101290p1Tablestreamtr101290p12videostreamtr101290p1Tablestreamtr101290p13audiostreamtr101290p2Tablestreamtr101290p24videostreamtr101290p2Tablestreamtr101290p25audiostreamtransprotoco

14、lTablestreamtransprotocol6videostreamtransprotocolTablestreamtransprotocol7videostreamdescTablevideostreamdesc8videostreamframeTablevideostreamframe9videostreamframebwTablevideostreamframebw.1.3.6.1.4.1.33620.1.20videostreamframejitterTablevideostreamframejitter.1.3.6.1.4.1.33620.1.21videostreaminte

15、rvalTablevideostreaminterval.1.3.6.1.4.1.33620.1.22videostreamintervalextTablevideostreamintervalext.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

16、.1.26baseip2indexTablechannelinfo.1.3.6.1.4.1.33620.1.27索引表lastqualifiedhistTablelastqualifiedhist.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频道地址mosValuemosvalue.1.3.6.1.4.1.33620.2.2MOS值vstqvstq

17、.1.3.6.1.4.1.33620.2.3codecQuant.codecquant.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_df0DFmdiMlrmdi_mlr1

18、MLR3 索引对MIB变量进行操作,必须对MIB的每个变量进行标识。只有叶子节点是可操作的, SNMP没法处理表格的一整行或一整列. l 简单变量 。对于简单变量,".0"就是表示索引。例如:UDP-MIB:udpInDatagrams.0 = Counter32: 179l 表格 每个MIB中的索引都包含一个以上的索引。对于audiostreambw表来说,MIB定义了包含channeladdr和channelport对应的索引。在表格中,一个给定变量的所有实例都在下个变量的所有实例之前显示。这意味表格的操作顺序是先行后列的。表格中对行的排序和表格中索引的值有关。关于索引

19、查询的主要是在baseip2indexTable节点。由表2-1可以看出节点数据来自数据库iptv-watcher的channelinfo表,baseip2indexTable加载ip和port两项数据。container_load接口里用的sql语句:SELECT channeladdr ,channelport FROM channelinfo WHERE monitored = 't'。channeladdr和channelport主要作用是来生成表索引。如3-1 84就是一个索引,是表audiostreambwTable的一条索引。图3-1索引的获取过程Manager端

20、在进行snmpget,snmpgetnext操作获取数据,必须知道要获取数据的完整OID,否则无法获得数据。如图3-1显示Index获取过程。Manager端通过查询baseip2indexTable获取IP 和Port对应的唯一索引,索引加上表名,列名合成完整OID。如下图所示。图3-2 OID解释# 运行获取数据:CERTUSNET-IPTV-WATCHER-MIB:adsmbwpeakaudiobandwidth.84 = Counter64: 1880184 Manager与AgentSnmpd是一个守护进程,它是作为后台进程启动简单网络管理协议(SNMP)代理程序。接受客户端的请求并

21、回应。当某些事件发生,代理进程主动发出的报文(trap操作),通知管理进程特定事件发生。在进行第三方扩展代理,用mib2c生成MIB表节点对应的代码。调用第三方接口。4.1 Manager如图4-1描述Manager端的请求与接收回应过程图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. 序列

22、化数据报成为ASN.1格式 5. 转换成snmp消息6. 检测版本号 7. 检测团体名(相当于密码),如果是未知的,则代理通过162端口发送AUTHENTICATION trap 到管理端并丢弃数据包。8. 代理遍历请求的变量列表,代理调用访问程序执行所需的操作。5 GET 5.1 代理流程以adudiostreambwTable为例,运行代理:./audiostreambwTable f L D audiostreambwTable MSnmpwalk测试:rootice chulk# snmpwalk -v2c -c public 127.0.0.1 audiostreambwTable一

23、个子代理的大概运行流程如图5-1 图5- 1子代理运行过程5.2 接口介绍公共接口:initialize_interface、shutdown_interface、registration_get、registration_set container_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_fr

24、ee。initialize_interface:初始化表定义,定义一张表的内容和它的结构化shutdown_interface:关闭表并关闭容器registration_get:表的get方法注册,处理get消息registration_set:表的set方法注册,处理set消息container_get:返回一个容器container_size:容器大小allocate_rowreq_ctx:为一张表数据的分配内存,xxxTable_rowreq_ctx结构存放表的索引以及表数据。release_rowreq_ctx:为表结构释放内存index_to_oid:转换 索引为OIDindex_f

25、rom_oid:从OID获取索引_row_find_by_mib_index:这个接口用来查询get指定的索引数据_container_init:容器的初始化_container_shutdown:容器的关闭_container_load:load initial data_container_free:container clean up这些接口的具体实现及最终调用是在xxxTable_data_access.c文件中,而我们要更改的具体实现数据加载在xxxTable_container_load接口。5.3 数据加入到容器的过程5.3.1 子代理调用container_load以audio

26、streambwTable表为例,介绍子代理程序将数据加入容器的过程,在audiostreambwTable_subagent的main函数中调用init_audiostreambwTable初始化mib代码,一直到调用audiostreambwTable_container_load加载数据。init_audiostreambwTable->initialize_table_audiostreambwTable->_audiostreambwTable_initialize_interface->_audiostreambwTable_container_init >

27、netsnmp_cache_create(_cache_load)->audiostreambwTable_container_load5.3.2 数据加载过程图5- 2数据封装到容器从数据库获取数据,对应一张表的数据,相对于MIB中的表节点的值,将从数据库获取的数据进行操作放入容器中,如图5-2。. 图5- 3加载过程如上图,从数据库iptv-watcher中将audiostreambw这张表的数据取出来,通过类型转换加入rowreq_ctx的data结构中,每次载入一行记录,表以channel_address和channel_port建立索引,图中audiostreambwIndex

28、为audiostreambwTable的索引,最后调用CONTAINER_INSERT载入容器,再进行查询获取对应的数据,反馈给发起get的Manager端。5.3.3 container_load流程6 Trap6.1 Trap作用在SNMP 管理站中,运行着一个后台进程snmpd,负责接收和确认SNMP 请求及Trap信号、处理请求并返回结果、向配置文件中的所有主机发送Trap 信号。TRAP是提供从代理进程到管理站的异步报告机制。为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要时向管理站报告异常

29、事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析。6.2 Trap的工作流程如图6-1 Agent发送trap消息给Manager端agent端:编写mib文件,确定好trap名称等信息。命令方式:发送各种trap命令(manager地址后面一定要加端口号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调用过程图6- 2 Trap过程 如上图代理启动,进行必要的参数处理,然后初始化库,再初始化ChannelAlarm mib 代码,调用trapIndexInit初始化索引trapIndex 为表channelAlarm ID最小的值,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论