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

下载本文档

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

文档简介

.z.---.可修编.SNMP简介及应用设计-.z.目录1SNMP简介11.1snmp概况11.2名词解释11.3主要版本及特点21.4SNMP参考模型22CERTUSNET节点介绍32.1CertusnetOID32.2CERTUSNETMIB库43索引64Manager与Agent74.1Manager84.2Agent85GET95.1代理流程95.2接口介绍115.3数据加入到容器的过程11子代理调用container_load11数据加载过程12流程136Trap146.1Trap作用146.2Trap的工作流程146.3Trap调用过程146.4Trap数据流166.5TrapInde*17参考19-.z.-.可修编.SNMP简介snmp概况简单网络管理协议(SNMP,SimpleNetworkManagementProtocol)构成了互联网工程工作小组(IETF,InternetEngineeringTaskForce)定义的internet协议簇的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。它由一组网络管理的标准组成,包含一个应用层协议(applicationlayerprotocol)、数据库模型(databaseschema),和一组数据对象。SNMP是为网络管理服务而定义的应用协议,在1988年8月首次定义,由InternetIETF的研究小组为了解决Internet上的路由器管理问题而提出的,很快就在RFC1157中达到了正式标准。SNMP是NMS(NetworkManagementSystem)和代理之间的异步请求和相应协议。SNMP是由一系列协议组和规组成的,它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP被设计成与协议无关,所以它可以在IP,IP*,AppleTalk,OSI以及其他用到的传输协议上被使用。从被管理设备中收集数据有两种方法:一种是轮询(polling-only)方法,另一种是基于中断(interrupt-based)的方法。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。名词解释SNMP,SimpleNetworkManagementProtocol:简单网络管理协议它是一个标准的用于管理IP网络上结点的协议。此协议包括了监视和控制变量集以及用于监视设备的两个数据格式:SMI和MIB。MIB,ManagementInformationBase:管理信息库由网络管理协议访问的管理对象数据库,它包括SNMP可以通过网络设备的SNMP管理代理进行设置的变量。SMI,StructureofManagementInformation:管理信息结构用于定义通过网络管理协议可访问的对象的规则。SMI定义在MIB中使用的数据类型及网络资源在MIB中的名称或表示。PDU,ProtocolDataUnit:协议数据单元在网络中传送的数据包。SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。OID ,ObjectIdentifier:对象标识符区分MIB的成员ASN.1:

高级数据描述语言,描述数据类型、结构、组织及编码方法。包含语法符号和编码规则两大部分。SNMP使用ASN.1描述协议数据单元(PDU)和管理对象信息库(MIB)主要版本及特点目前snmp有三个版本,v1,v2,v3。v2,v1的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。v3提供了验证机制、加密机制、时间同步机制等,安全性大大提高。SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站关于MIB定义信息的各种查询。SNMP参考模型由以下4个主要部分构成:互联网络,网络协议,网络管理进程和被管网络资源图1-1snmp参考模型包含三种消息类型:get,set,trapget消息:Get-Request,Get-Ne*t-Request,Get-ResponseSNMP管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Ne*t-Request用于和Get-Request组合起来查询特定的表对象中的列元素Set消息:Set-Request,SetResponseSNMP管理站用Set-Request可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使*一个设备属性有效/无效等)Trap消息:SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述*一事件的发生。MIBCERTUSNET节点介绍CertusnetOID管理信息库(ManagementInformationBase)MIB指明了网络元素所维持的变量(即能够被管理进程查询和设置的信息)。MIB给出了一个网络中所有可能的被管理对象的集合的数据结构。SNMP的管理信息库和域名DNS相似的树型结构,根在最上面,根没有名字,也没有标号。图2-1画出了MIB的一部分,它又被称为对象命名(objectnamingtree)。图2-SEQ图2-\*ARABIC1MIB对象命名树的顶级对象三个,在iso的下面有四个节点,每个节点有标号。标号一般是从0,1,2,3….分配的,对于*一个节点就可以用一串标号来标识,例如internet节点可以标识为:{.},system可以标识为{..2.1.1}。enterprises节点标识为{..4.1}。Enterprises节点比较特殊,其所属节点数量比较大。Certusnet从IANA组织获取的标号为33620,certusnet完整OID为{...4.1.33620},图中红色字体显示部分。CERTUSNETMIB库Certusnet主要有两个mib库文件:分别为CERTUSNET-IPTV-WATCHER-MIB.t*tIPTV-WATCH-NOTIF-MIB.t*tCERTUSNET-IPTV-WATCHER-MIB.t*t中定义iptvWatcher模块(如图2-2),这个模块主要负责处理来自Manager端的get消息,set消息。IPTV-WATCH-NOTIF-MIB.t*t中定义channelAlarmNotif模块(如图2-3),这个模块与iptvWatcher不同,主要负责发送trap消息到Manager端。图2-SEQ图2-\*ARABIC2iptvWatcher模块图2-SEQ图2-\*ARABIC3channelAlarmNotif模块关于这些MIB节点的OID以及所获取数据的对应数据库的表大概介绍,如表2-1是iptv-watcher模块的节点介绍,表2-2是channelAlarmNotif的介绍。表2-1certusnet子节点域名数据库iptv-watcherOID描述audiostreambwTableaudiostreambw带宽信息audiostreamdescTableaudiostreamdesc..4.1.33620.1.2audiostreamintervalTableaudiostreaminterval..4.1.33620.1.3传输的数据包信息audiostreamqualTableaudiostreamqual..4.1.33620.1.4MOS值channelinfoTablechannelinfo..4.1.33620.1.5频道信息audiostreampkttransTablestreampkttrans..4.1.33620.1.6音频流数据包信息videostreampkttransTablestreampkttrans..4.1.33620.1.7视频流数据包信息audiostreampkttranssumTablestreampkttranssum..4.1.33620.1.8videostreampkttranssumTablestreampkttranssum..4.1.33620.1.9audiostreamstatusTablestreamstatus..4.1.33620.1.10音频流状态信息videostreamstatusTablestreamstatus1视频流状态信息audiostreamtr101290p1Tablestreamtr101290p12videostreamtr101290p1Tablestreamtr101290p13audiostreamtr101290p2Tablestreamtr101290p24videostreamtr101290p2Tablestreamtr101290p25audiostreamtransprotocolTablestreamtransprotocol6videostreamtransprotocolTablestreamtransprotocol7videostreamdescTablevideostreamdesc8videostreamframeTablevideostreamframe9videostreamframebwTablevideostreamframebw..4.1.33620.1.20videostreamframejitterTablevideostreamframejitter..4.1.33620.1.21videostreamintervalTablevideostreaminterval..4.1.33620.1.22videostreamintervale*tTablevideostreamintervale*t..4.1.33620.1.23videostreamqualTablevideostreamqual..4.1.33620.1.24videostreamsceneTablevideostreamscene..4.1.33620.1.25lastupdateintervalTablelastupdateinterval..4.1.33620.1.26baseip2inde*Table channelinfo..4.1.33620.1.27索引表lastqualifiedhistTablelastqualifiedhist..4.1.33620.1.28streammdiqualTablestreammdiqual..4.1.33620.1.29表2-2channelAlarmNotif域名Channelalarm表OID描述channelAddresschannel_address频道地址mosValuemosvalue..4.1.33620.2.2MOS值vstqvstq..4.1.33620.2.3codecQuant.codecquant..4.1.33620.2.4alarmTimealarmtime..4.1.33620.2.5告警时间causeTypetype..4.1.33620.2.6mediaRatemedia_rate..4.1.33620.2.7lossRatelossrate..4.1.33620.2.8channelPortchannel_port..4.1.33620.2.9频道端口mdiDfmdi_df0DFmdiMlrmdi_mlr1MLR索引对MIB变量进行操作,必须对MIB的每个变量进行标识。只有叶子节点是可操作的,SNMP没法处理表格的一整行或一整列.简单变量对于简单变量的处理是通过在其对象标识后面添加".0"处理。例如对象标识是.,则实例标识是..0。对于简单变量,".0"就是表示索引。例如:UDP-MIB::udpInDatagrams.0=Counter32:179表格每个MIB中的索引都包含一个以上的索引。对于audiostreambw表来说,MIB定义了包含channeladdr和channelport对应的索引。在表格中,一个给定变量的所有实例都在下个变量的所有实例之前显示。这意味表格的操作顺序是先行后列的。表格中对行的排序和表格中索引的值有关。关于索引查询的主要是在baseip2inde*Table节点。由表2-1可以看出节点数据来自数据库iptv-watcher的channelinfo表,baseip2inde*Table加载ip和port两项数据。container_load接口里用的sql语句:SELECTchanneladdr,channelportFROMchannelinfoWHEREmonitored='t'。channeladdr和channelport主要作用是来生成表索引。如3-184就是一个索引,是表audiostreambwTable的一条索引。图3-1索引的获取过程 Manager端在进行snmpget,snmpgetne*t操作获取数据,必须知道要获取数据的完整OID,否则无法获得数据。如图3-1显示Inde*获取过程。Manager端通过查询baseip2inde*Table获取IP和Port对应的唯一索引,索引加上表名,列名合成完整OID。如下图所示。图3-2OID解释*运行获取数据:CERTUSNET-IPTV-WATCHER-MIB::adsmbwpeakaudiobandwidth.84=Counter64:188018Manager与AgentSnmpd是一个守护进程,它是作为后台进程启动简单网络管理协议(SNMP)代理程序。接受客户端的请求并回应。当*些事件发生,代理进程主动发出的报文(trap操作),通知管理进程特定事件发生。在进行第三方扩展代理,用mib2c生成MIB表节点对应的代码。调用第三方接口。Manager如图4-1描述Manager端的请求与接收回应过程图4-SEQ图4-\*ARABIC1Manager端与Agent交互AgentAgent代理端要进行PDU数据包解析,查询MIB,将操作结果封装成PDU发送回请求端。如图4-2图4-SEQ图4-\*ARABIC2Agent处理过程MainLoopofAgent:代理在默认161端口等待数据到来读取UDP数据报,标记传输地址并发送实体.跟踪被代理处理逻辑请求ID序列化数据报成为ASN.1格式转换成snmp消息检测版本号检测团体名(相当于密码),如果是未知的,则代理通过162端口发送AUTHENTICATIONtrap到管理端并丢弃数据包。代理遍历请求的变量列表,代理调用访问程序执行所需的操作。GET代理流程以adudiostreambwTable为例,运行代理:./audiostreambwTable–f–L–DaudiostreambwTable–MSnmpwalk测试:[rooticechulk]*snmpwalk-v2c-cpublicaudiostreambwTable一个子代理的大概运行流程如图5-1图5-SEQ图5-\*ARABIC1子代理运行过程接口介绍公共接口:initialize_interface、shutdown_interface、registration_get、registration_setcontainer_get、container_size、allocate_rowreq_ct*、release_rowreq_ct*、inde*_to_oidinde*_from_oid、_row_find_by_mib_inde*、_container_init、_container_shutdown、_container_load、_container_free。initialize_interface:初始化表定义,定义一表的容和它的结构化shutdown_interface:关闭表并关闭容器registration_get:表的get方法注册,处理get消息registration_set:表的set方法注册,处理set消息container_get:返回一个容器container_size:容器大小allocate_rowreq_ct*:为一表数据的分配存,***Table_rowreq_ct*结构存放表的索引以及表数据。release_rowreq_ct*:为表结构释放存inde*_to_oid:转换索引为OIDinde*_from_oid:从OID获取索引_row_find_by_mib_inde*:这个接口用来查询get指定的索引数据_container_init:容器的初始化_container_shutdown:容器的关闭_container_load:loadinitialdata_container_free:containercleanup这些接口的具体实现及最终调用是在***Table_data_access.c文件中,而我们要更改的具体实现数据加载在***Table_container_load接口。数据加入到容器的过程子代理调用container_load以audiostreambwTable表为例,介绍子代理程序将数据加入容器的过程,在audiostreambwTable_subagent的main函数中调用init_audiostreambwTable初始化mib代码,一直到调用audiostreambwTable_container_load加载数据。init_audiostreambwTable->initialize_table_audiostreambwTable->_audiostreambwTable_initialize_interface->_audiostreambwTable_container_init–>netsnmp_cache_create(_cache_load)->audiostreambwTable_container_load数据加载过程图5-SEQ图5-\*ARABIC2数据封装到容器从数据库获取数据,对应一表的数据,相对于MIB中的表节点的值,将从数据库获取的数据进行操作放入容器中,如图5-2。.图5-SEQ图5-\*ARABIC3加载过程如上图,从数据库iptv-watcher中将audiostreambw这表的数据取出来,通过类型转换加入rowreq_ct*的data结构中,每次载入一行记录,表以channel_address和channel_port建立索引,图中audiostreambwInde*为audiostreambwTable的索引,最后调用CONTAINER_INSERT载入容器,再进行查询获取对应的数据,反馈给发起get的Manager端。container_load流程TrapTrap作用在SNMP管理站中,运行着一个后台进程snmpd,负责接收和确认SNMP请求及Trap信号、处理请求并返回结果、向配置文件中的所有主机发送Trap信号。TRAP是提供从代理进程到管理站的异步报告机制。为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要时向管理站报告异常事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析。Trap的工作流程如图6-1Agent发送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-SEQ图6-\*ARABIC1Trap模型Trap调用过程图6-SEQ图6-\*ARABIC2Trap过程如上图代理启动,进行必要的参数处理,然后初始化库,再初始化ChannelAlarmmib代码,调用trapInde*Init初始化索引trapInde*为表channelAlar

温馨提示

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

评论

0/150

提交评论