SNMP_MIB功能开发步骤_liujun
- 格式:docx
- 大小:22.91 KB
- 文档页数:4
snmp使用哪几种操作_snmp怎么使用_snmp的使用教程一、SNMP概述SNMP 的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。
随后,人们对SGMP 进行了很大的修改,特别是加入了符合Internet 定义的SMI 和MIB 体系结构,改进后的协议就是著名的SNMP。
SNMP 的目标是管理互联网Internet 上众多厂家生产的软硬件平台,因此SNMP 受Internet 标准网络管理框架的影响也很大。
现在SNMP 已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。
SNMP 的体系结构是围绕着以下四个概念和目标进行设计的:(1)保持管理代理(Agent)的软件成本尽可能低;(2)最大限度地保持远程管理的功能,以便充分利用Internet 的网络资源;(3)体系结构必须有扩充的余地;(4)保持SNMP 的独立性,不依赖于具体的计算机、网关和网络传输协议。
在最近的改进中,又加入了保证SNMP 体系本身安全性的目标。
二、snmp使用哪几种操作1)get-request操作:从代理进程处提取一个或多个参数值。
2)get-next-request操作:从代理进程处提取一个或多个参数的下一个参数值。
3)set-request操作:设置代理进程的一个或多个参数值。
4)response操作:返回的一个或多个参数值。
这个操作是由代理进程发出的。
它是前面3中操作的响应操作。
5)trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
请求标识符字段,是为了和Response报文对应起来的;用于确定Response是针对哪个Get 操作的。
三、snmp怎么使用_snmp的使用教程1、安装SNMP 服务1)打开Windows 组件向导。
2)在组件中,单击管理和监视工具(但是请不要选中或清除其复选框),然后单击详细信息。
3)选中简单网络管理协议复选框,然后单击确定。
转基于SNMP/MIB的网络数据获取系统设计与实现(一)一,简单网络管理协议SNMP及相关理论介绍1,简单网络管理协议SNMP(1),什么是网络管理网络管理分为两类。
第一类是网络应用程序、用户帐号(例如文件的使用)和存取权限(许可)的管理。
它们都是与软件有关的网络管理问题。
这里不作讨论。
网络管理的第二类是由构成网络的硬件所组成。
这一类包括工作站、服务器、网卡、路由器、网桥和集线器等等。
通常情况下这些设备都离你所在的地方很远。
正是由于这个原因,如果当设备有问题发生时网络管理员可以自动地被通知的话,那么一切事情都好办。
但是你的路由器不会象你的用户那样,当有一个应用程序问题发生时就可以打电话通知你,而当路由器拥挤时它并不能够通知你。
为了解决这个问题,厂商们已经在一些设备中设立了网络管理的功能,这样你就可以远程地询问它们的状态,同样能够让它们在有一种特定类型的事件发生时能够向你发出警告。
这些设备通常被称为"智能"设备。
网络管理通常被分为四类:被管理节点(或设备):即你想要监视的设备代理:用来跟踪被管理设备状态的特殊软件或固件(firware)网络管理工作站:与在不同的被管理节点中的代理通信,并且显示这些代理状态的中心设备网络管理协议:被网络管理工作站和大理用来交换信息的协议当设计和构造网络管理的基础结构时,你需要记住下列两条网络管理的原则:1.由于管理信息而带来的通信量不应明显的增加网络的通信量。
2.被管理设备上的协议代理不应明显得增加系统处理的额外开销,以致于该设备的主要功能都被削弱了。
(2),SNMP的背景美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事。
在80年代未和90年代初,网络迅速发展,许多子网数目的增多使监视网络活动成为一种必须。
在网络管理的初期,对网络的管理停留在使用ICMP和PING的基础上,但是随着网络内主机数据的不断增多,这种简单的工具已经不可能完成网络管理的工作了。
SNMP MIB完整手册/art/201007/209214.htmSNMP MIB是SNMP协议软件中主要的一个模块。那么MIB的主要功能就是管理信息库。那么一些常用的代码编辑,我们在前面的文章也有一些涉及。但是不少朋友还是对于SNMP MIB不理解。为此,我们整理了下面的文章帮助大家来学习这部分内容。最近要做一些服务器和设备的监控, 自带的cacti模板已不能满足需求, 经过一天调试, 目前已实现了bind9 mysql bind等数据流量的分析(其实也就是用脚本取数据,最后用rrdtool 画图出来), 但学习的过程中, 发现不大了解SNMP MIB概念, google了一下,下面的文章应该能解答一部分与我有同样问题的朋友们(我简单进行了排版整理)SNMP协议详解简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。虽然SNMP开始是面向基于IP的网络管理,但作为一个工业标准也被成功用于电话网络管理。1. SNMP基本原理SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于SNMP MIB定义信息的各种查询。下图是NMS公司网络产品中SNMP 协议的实现模型。SNMP协议的实现模型SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。数据报结构如下图:数据报结构版本识别符(version identifier):确保SNMP代理使用相同的协议,每个SNMP代理都直接抛弃与自己协议版本不同的数据报。团体名(Community Name):用于SNMP从代理对SNMP 管理站进行认证;如果网络配置成要求验证时,SNMP从代理将对团体名和管理站的IP地址进行认证,如果失败,SNMP从代理将向管理站发送一个认证失败的Trap消息。协议数据单元(PDU):其中PDU指明了SNMP的消息类型及其相关参数。2. 管理信息库MIBIETF规定的管理信息库MIB(由中定义了可访问的网络设备及其属性,由对象识别符(OID:Object Identifier)唯一指定。MIB是一个树形结构,SNMP协议消息通过遍历SNMP MIB 树形目录中的节点来访问网络中的设备。下图给出了NMS系统中SNMP可访问网络设备的对象识别树(OID:Object Identifier)结构。给出了对一个DS1线路状态进行查询的OID设置例子。SNMP可访问网络设备的对象识别树(OID:Object Identifier)结构3. SNMP的五种消息类型SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request 、Trap(1)Get-Request 、Get-Next-Request与Get-ResponseSNMP管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP 代理则用Get-Response消息响应。Get-Next-Request用于和Get-Request组合起来查询特定的表对象中的列元素。如:首先通过下面的原语获得所要查询的设备的接口数:{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifNumber(2)}后再通过下面的原语,进行查询(其中第一次用Get-Request,其后用Get-Next-Request):{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifTable(2)}(2)Set-RequestSNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。(3)TrapSNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生。SNMP管理信息库MIB管理信息库SNMP MIB指明了网络元素所维持的变量(即能够被管理进程查询和设置的信息)。MIB给出了一个网络中所有可能的被管理对象的集合的数据结构。SNMP的管理信息库采用和域名系统DNS相似的树型结构,它的根在最上面,根没有名字。下图画的是管理信息库的一部分,它又称为对象命名(objectnamingtree)。对象命名(objectnamingtree)SNMP MIB管理信息库的对象命名举例对象命名树的顶级对象有三个,即ISO、ITU-T和这两个组织的联合体。在ISO的下面有4个结点,其中的饿一个(标号3)是被标识的组织。在其下面有一个美国国防部(Department of Defense)的子树(标号是6),再下面就是Internet(标号是1)。在只讨论Internet中的对象时,可只画出Internet以下的子树(图中带阴影的虚线方框),并在Internet结点旁边标注上{1.3.6.1}即可。在Internet结点下面的第二个结点是mgmt(管理),标号是2。再下面是管理信息库,原先的结点名是mib。1991年定义了新的版本MIB-II,故结点名现改为mib-2,其标识为{1.3.6.1.2.1},或{Internet(1) .2.1}。这种标识为对象标识符。最初的结点mib将其所管理的信息分为8个类别,见表1。现在de mib-2所包含的信息类别已超过40个。表1 最初的结点mib管理的信息类别应当指出,SNMP MIB的定义与具体的网络管理协议无关,这对于厂商和用户都有利。厂商可以在产品(如路由器)中包含SNMP代理软件,并保证在定义新的MIB项目后该软件仍遵守标准。用户可以使用同一网络管理客户软件来管理具有不同版本的MIB的多个路由器。当然,一个没有新的MIB项目的路由器不能提供这些项目的信息。这里要提一下SNMP MIB中的对象{1.3.6.1.4.1},即enterprises(企业),其所属结点数已超过3000。例如IBM为11.3.6.1.4.1.2},Cisco为{1.3.6.1.4.1.9},Novell为{1.3.6.1.4.1.23}等。世界上任何一个公司、学校只要用电子邮件发往iana-mib@进行申请即可获得一个结点名。这样各厂家就可以定义自己的产品的被管理对象名,使它能用SNMP进行管理。。
snmp mib的用法SNMP(Simple Network Management Protocol)MIB (Management Information Base)是用于管理网络设备的一种标准协议。
MIB是一种数据库,其中包含了关于网络设备的信息,例如设备的配置、性能统计和状态信息等。
SNMP协议通过MIB来管理网络设备,允许网络管理员监控和控制网络设备。
首先,让我们来看一下SNMP MIB的结构。
SNMP MIB由一组层次结构的对象标识符(OID)组成,每个OID对应一个特定的管理信息。
这些OID按照树状结构进行组织,类似于文件系统中的目录结构,使得管理者可以轻松地定位到所需的信息。
SNMP MIB的用法主要包括以下几个方面:1. 监控,通过SNMP MIB,网络管理员可以监控网络设备的性能和状态信息。
例如,可以使用MIB中的OID来查询设备的CPU利用率、内存使用情况、接口流量等信息。
2. 配置,SNMP MIB也可以用于配置网络设备。
管理员可以使用MIB中的OID来修改设备的配置参数,例如修改路由器的路由表、配置交换机的VLAN等。
3. 告警,通过监控MIB中的特定OID,管理员可以设置告警规则,当设备的某些指标超出预设的阈值时,系统可以自动发送告警通知,以便及时采取措施。
4. 故障诊断,当网络设备出现故障时,管理员可以通过查询MIB中的信息来进行故障诊断,找出故障的原因和位置。
5. 性能优化,通过分析MIB中的性能数据,管理员可以对网络设备进行性能优化,提高网络的稳定性和性能。
总之,SNMP MIB是管理网络设备的重要工具,通过合理利用MIB中的信息,可以帮助管理员更好地监控、配置和优化网络设备,保障网络的正常运行。
MIB浏览与SNMP操作MIB浏览与SNMP操作是指使用管理信息库(MIB)和简单网络管理协议(SNMP)来监控和管理网络设备的过程。
MIB是一种描述网络设备的数据结构和属性的标准格式,SNMP是一种网络协议,用于收集和管理网络设备的信息。
一旦了解了MIB树的结构,就可以使用SNMP操作来监控和管理网络设备。
SNMP操作包括读取、写入和修改网络设备的属性值,以及重启设备、收集性能数据等操作。
具体来说,使用SNMP操作可以实现以下功能:1.获取设备的属性值:通过SNMP操作可以获取设备的各种属性值,如接口状态、CPU利用率、内存使用情况等。
这些属性值可以帮助管理员了解设备当前的状态和性能。
2.配置设备:通过SNMP操作可以修改设备的配置,比如设置网络接口的IP地址、启用或禁用一些功能等。
这使得管理员可以远程管理设备,而无需直接访问设备。
3.重启设备:通过SNMP操作可以重启设备。
这在一些情况下非常有用,比如设备出现故障或需要应用配置更改时。
4.收集性能数据:通过SNMP操作可以定期收集设备的性能数据,比如带宽利用率、丢包率等。
这些数据可以用于性能监控和故障诊断。
5.发送警报信息:通过SNMP操作可以设置警报规则,当设备达到一些预设的阈值时,可以向管理员发送警报信息。
这使得管理员可以及时采取措施,防止设备故障或网络中断。
总之,MIB浏览与SNMP操作是网络管理中的重要工具,它们可以帮助管理员了解和管理网络设备。
通过浏览MIB树和使用SNMP操作,管理员可以获得设备的详细信息,并对设备进行配置和监控,以确保网络的正常运行。
实验二SNMP MIB信息的访问一、实验目的本实验的主要目的是学习SNMP服务在主机上的启动与配置,以及用MIB浏览器访问SNMP MIB对象的值,并通过直观的MIB-2树图加深对MIB被管对象的了解。
二、实验内容1、SNMP服务在主机上的启动和配置;2、分析MIB-2树的结构;3、通过get、getNext、set、trap几种操作访问MIB对象的值。
三、实验工具AdventNet MIB浏览器、或iReasoning MIBBroswer或基于UNIX、LINUX/FreeBSD 平台的SNMP命令行工具、或HP Openview自带的MIB浏览工具。
四、实验步骤1、在本地主机上启动SNMP服务并配置共同体。
1)控制面板-〉打开或关闭Windows功能启动(右键列表中或双击打开的对话框中);在SNMP service属性对话框中配置共同体(默认为public);2、启动MIB浏览器,在host框设置被监测主机的IP地址(默认为localhost)、在community框设置被检测主机所配置的SNMP服务的共同体(如public);3、观察左侧结构面板中MIB树图结构;4、访问MIB对象。
在左侧结构面板中选择要访问的MIB对象,单击使其凸显,然后用鼠标单击工具栏中的get按钮和getNext按钮(或菜单栏中Operations下的Get和GetNext,或快捷键Ctrl+G和Ctrl+N)。
5、观察右侧面板中的显示信息。
6、访问MIB书的叶子节点{iso(1)org(3)internet(1)mgmt(2)mib-2(1)ip(4)ipRouteTable(21)}。
单击该叶子节点,使其反白显示。
右键,选择“Table View ”可以获得路由表信息。
五、实验报告1、根据软件左侧MIB导航图画出MIB-2树图(到组),并画出UDP子树(到基本被管对象)。
2、获取基本信息:2.1System组,获取设备基本信息1. 获取设备描述对象名:对象标识符:实例标识符:R1的值:主机的值:2. 获取设备的名称对象名:对象标识符:实例标识符:R1的值:主机的值:3. 获取设备的联系人信息对象名:对象标识符:实例标识符:R1的值:主机的值:4. 获取设备的位置信息对象名:对象标识符:实例标识符:R1的值:主机的值:6. 获取设备的服务信息对象名:对象标识符:实例标识符:R1的值:提供的服务层次:主机的值:提供的服务层次:2.2 interfaces组,读取接口信息1. 获取各设备的接口数目:对象名:对象标识符:实例标识符:R1的值:R2的值:主机的值:2. 获取设备各接口的基本信息:3. 获取设备各接口的性能参数:使用“ping –t R2的远端接口的IP ”命令测试与R2的连通性,制造接口的通信数据,分别在两个时间点对以下数据进行读取。
SNMP MIB 介紹對MIB檔中一些常見的巨集定義的描述1.DEFINITIONS ::= BEGINSNMP始終使用ASN.1概念中的描述塊(module)來組織ASN.1對象的,ASN.1的描述塊是一些相關描述語句的集合,module的結構如下<<module>> DEFINITIONS ::= BEGIN<<linkage>><<declarations>>END2.<<basetype>> ::= TEXTUAL-CONVENTION定義了對標準資料類型的進行擴展的語法很多MIB定義中都會先定義一些基於標準類型的擴展類型,如:CiFlowDirection ::= TEXTUAL-CONVENTIONSTATUS currentDESCRIPTION"The direction of data flow thru a circuit.transmit(1) - Only transmitted datareceive(2) - Only received databoth(3) - Both transmitted and received data."SYNTAX INTEGER {transmit(1),receive(2),both(3)}CiFlowDirection 是基於INTEGER的枚舉類型3.<<mibname>> MODULE-IDENTITY該定義添加了一個公共的標示段來對整個資訊描述塊進行頂層的文字描述,以加強對管理MIB描述塊的文檔管理和控制,每個MIB定義中都會有該定義。
如:circuitIfMIB MODULE-IDENTITY4.OBJECT-IDENTIFIFIER聲明一個節點如:atmClpTaggingNoScr OBJECT-IDENTITY5.OBJECT-TYPE如:ciCircuitTable OBJECT-TYPESYNTAX SEQUENCE OF CiCircuitEntryMAX-ACCESS not-accessibleSTATUS currentDESCRIPTION"The Circuit Interface Circuit Table."::= { ciObjects 1 }包括了SNMP定義該管理物件的全部資訊,相當於一個範本。
实验一MIB浏览和SNMP的操作MIB(Management Information Base)浏览和SNMP(SimpleNetwork Management Protocol)的操作是网络管理中非常重要的一部分。
MIB是一种数据库,用于存储网络设备的管理信息,而SNMP是一种协议,用于在网络上管理和监控设备。
在本实验中,我们将学习如何浏览MIB和执行SNMP操作。
首先,我们需要了解MIB是什么以及它的结构。
MIB由一系列的对象标识符(OID)组成,每个OID对应一个特定类型的信息。
这些OID可以以层次结构的方式组织,以便更好地组织和管理信息。
MIB通常使用基于文本的格式(如MIB文件)进行表示。
要浏览MIB,我们需要使用一种称为MIB浏览器的工具。
MIB浏览器可以让我们浏览和MIB中的对象,并查看其属性和值。
它还提供了一些可选的操作,如设置属性值、触发事件等。
常见的MIB浏览器工具包括SnmpB、iReasoning MIB Browser等。
在使用MIB浏览器时,我们可以通过在工具中输入设备的IP地址和SNMP团体字符串来连接到设备。
一旦连接成功,我们就可以浏览设备的MIB,并查看和管理各个对象。
在浏览MIB时,我们可以根据需要特定的OID,以找到我们感兴趣的对象。
当我们找到一个感兴趣的对象时,我们可以查看该对象的属性和值。
这些属性描述了该对象的状态和性能信息。
我们可以通过这些属性来监控和管理设备。
除了浏览MIB,我们还可以使用SNMP协议执行一些操作。
SNMP定义了一组操作,如GET、SET、GETNEXT、GETBULK等,用于读取和修改设备的管理信息。
使用SNMP协议执行操作时,我们需要指定要操作的目标设备的IP地址、SNMP团体字符串以及要执行的操作类型。
例如,GET操作用于获取设备的管理信息,SET操作用于设置设备的一些属性等。
当我们执行GET操作时,我们会获得一个或多个管理信息的值。
【snmp】MIB浏览器安装使⽤,编译MIB⽂件 MIB Browser下载链接: 提取码: pgfb⼀、安装过程双击setup.exe开始安装将LICENSE.KEY放在⾮中⽂的⽬录下,安装过程中需要选择LICENSE.KEY。
这⼀步需要选择only for me后⾯⼀直下⼀步即可⼆、MIB Browser浏览器使⽤⼀、连接snmp服务1、打开Mib Browser⼯具,如果打不开,⽤管理员⾝份打开2、选择协议版本,输⼊团体名称和端⼝号,点击ok3、点击ok之后,右下⾓的圆如果为绿⾊说明连接snmp服务成功4、连接成功后就可以操作了,例:选择sysName节点右键get就可以在输出台输出系统名称⼆、编译新增的mib⽂件新增的⾃定义的mib⽂件,需要编译完成后才能导⼊到MIB Browser中对节点进⾏操作前提:snmp代理服务已成功导⼊⾃定义mib编译步骤如下1、关闭MIB Browser⼯具2、将要编译的⽂件(我的⽂件名是EMS-MON-MIB.my)复制MIB浏览器安装⽬录下的SMI⽬录下3、以管理员⾝份打开MIB compiler⼯具 (⼀定要以管理员⾝份打开,否则编译的时候会卡住)4、file—>open—>从MIB浏览器下的SMI⽬录下选中要编译的⽂件—>打开5、点击这个按钮,开始编译6、编译完成后会输出如下信息及弹出如下的框7、点击Save All按钮,选择MIB浏览器安装⽬录下的SMIDB⽬录,点击确定。
8、点击确定后,会将编译⽣成的EMS-MON-MIB.smidb⽂件存在MIB浏览器安装⽬录下的SMIDB⽬录下9、打开MIB Browser⼯具,发现多了EMS-MON-MIB10、选中EMS-MON-MIB按钮,点击红⾊向上箭头,将EMS-MON-MIB加载到上⾯的load Modules中11、切回query页⾯,点击这个按钮弹窗点击确定重新连接⼀次snmp服务12、展开MIB Tree,发现节点下⾯多了EMS-MON-MIB.my⽂件新增的mon节点13、操作snmp标量,表格 1、查看标量对象onlineNum:选中onlineNum右键点击get按钮。
零专业级的SNMP框架---SNMP4J∙SNMP4J简介相比SNMP PACKAGE API 比较低的门槛和简单的功能,SNMP4J则是完全专业级的框架.他的SNMP-TARGET-PDU的三点结构更科学更严谨,完善的PDU数据引擎也是业界的一种潮流.SNMP4J的强大体现在他对SNMPV3标准下基于用户安全(USM)方式的认证,加密,和对Agent功能的强大支持.∙SNMP4J基本GET和GETNEXT功能一基于SNMP的MIB库访问实现的研究蔡国森(北京工商大学计算机学院)摘要 SNMP是用于网络管理/代理之间的请求/应答协议。
管理信息库(MIB)定义了由代理者维护的各种变量,它们由管理者来进行存取操作,从而实现具体的网络管理。
本文在对MIB的分析之后,给出了对MIB库变量访问的C语言程序实例.关键词简单网络管理协议,模型,信息库,访问实现1引言简单网络管理协议(SNMP)是Internet组织用来管理Internet的网络协议,随着Internet所使用的TCP/IP协议族成为事实上的网间网互连协议标准,SNMP也成为计算机网络管理方面大家实际遵循的标准。
几乎所有的Internet网络设备的生产厂家都在开发与SNMP有关的产品并投放市场。
2SNMP 的管理模型在SNMP管理模型中有三个基本组成部分:管理者(Manager),被管代理(Agent)和管理信息库(MIB)。
管理站一般是一个单机设备或一个共享网络中的一员,它是网络管理员和网络管理系统的接口,能将网络管理员的命令转换成对远程网络元素的监视和控制,同时从网上所有被管实体的MIB (管理信息库) 中提取出信息数据。
作为管理站,它还必须拥有能进行数据分析、故障发现等管理应用软件。
整个管理站的管理工作是通过轮询代理来完成的。
管理者可以通过SNMP 操作直接与管理代理通信,获得即时的设备信息,对网络设备进行远程配置管理或者操作;也可以通过对数据库的访问获得网络设备的历史信息,以决定网络配置变化等操作。
第22卷 第6期2007年12月郑州轻工业学院学报(自然科学版)JOURNAL OF ZHENGZHOU UN I V ERSITYOF L IGHT I N DUSTRY (Natural Science )Vol .22 No .6Dec .2007 收稿日期:2007-01-10 基金项目:河南省教育厅自然科学计划项目(200510475030) 作者简介:刘杰(1974—),男,河南省开封市人,河南大学硕士研究生,主要研究方向:网络管理;汪国安(1957—),男,河南省新蔡县人,河南大学副教授,硕士研究生导师,主要研究方向:计算机网络及应用.文章编号:1004-1478(2007)06-0062-04基于S N MP 的M I B 编译器的实现刘 杰, 汪国安(河南大学计算机与信息工程学院,河南开封475004)摘要:基于简单网络管理协议S NMP,给出了用C#语言实现M I B 编译器的方法.通过词法分析器产生器和词法脚本文档来实现词法分析器,通过语法分析器产生器和语法脚本文档来实现语法分析器,就可以完成编译器预期的功能;此基础上抽象出一个通用框架予以扩展,则可改造成通用的编译器来使用.关键词:简单网络管理协议;管理信息库;编译器;正规表达式;C#语言中图分类号:TP393.07文献标识码:AI m ple m en t a ti on of M I B com p iler ba sed on SN M PL IU J ie, WANG Guo 2an(College of Co m p .and Infor .Eng .,Henan U niv .,Kaifeng 475004,China )Abstract :A method ofM I B comp iler realizati on based on S NMP by using C#language was p resented .The parser was i m p le mented by using the generat or of parser and the scri p t document of syntax,and the lexer was i m p le mented by using the generat or of lexer and the scri p t document of mor phe me .Therefore the com 2p iler ’s expected functi ons were fulfiled .Upon these,a common structure could be abstracted and extend 2ed,s o a co mmon comp iler could be rebuilt t o use .Key words :S NMP;M I B ;co mp iler;regular exp ressi on;C#language0 引言目前,网络管理[1]标准主要有2大体系:公共管理信息服务/公共管理信息协议(C M I S/C M I P )和简单网络管理协议S NMP (si m p le net w ork manage 2ment p r ot ocol ).所谓协议,是指进程之间通信的规则[2].建立在T CP /I P 协议基础上的S NMP 在资源、技术、成本等方面的开销远远小于C M I P,在实用性方面也具有明显优势.简单的操作性、强大的功能性、易于实现性等使S NMP 受到了广泛的关注,已成为计算机网络管理领域中事实上的协议标准.为了减少网络运行的成本,同时兼顾网络自身的特点,需编制自己的基于S NMP 的网络管理软件.作为网管软件的一个重要组成部分,开发M I B 编译器成为必然.考虑到网管软件的整体一致性,选择C#语言作为最终实现的语言,因为它完全面向对象,易用且高效.本文拟探讨C#语言作为载体实现M I B 编译器的方法.刘 杰等:基于S NM P的M I B编译器的实现1 简单网络管理协议简单网络管理协议S NMP是一种基于T CP/I P 协议的互联网络的管理协议标准.互联网工程任务组I ETF(internet engineering task f orce)以简单网关监视协议(SG MP)为基准,并对其改造,于1988年发布了S NMP.在目前广泛使用的基于S NMP的网络管理模型中,网络管理系统NMS(net w ork manage2 ment syste m)通过轮询方式或事件报告获得被管对象的管理信息库M I B(manage ment infor mati on base),据此判断网络设备及网络的运行状况,对各种异常作出快速反应,从而保证系统的稳定运行. 1.1 S NMP版本截至目前,S NMP从S NMPv1版发展到S NMPv3版,共经历了3个版本.与S NMPv1版相比,S NMPv2版有较大改进,功能显著增强;S NMPv3版则重点解决了安全性问题.1.2 S NMP组成S NMP可分为管理信息结构S M I(structure of manage ment inf or mati on)、简单网络管理协议S NMP 和管理信息库M I B这3部分.其中S M I说明了定义和构造M I B的总体框架以及数据类型的命名和表示方法;S NMP是管理进程和代理进程之间的通信协议,属于应用层协议,依赖UDP数据包服务;M I B 对应于网络中实际的被管资源,是被管资源的抽象.由于被管资源是以对象的形式来表示的,因此,对象的集合构成管理信息库.特别要强调的是,其语法由OSI AS N.1(abstract syntax notati on one)的一个子集来描述.1.3 S NMP模型在S NMP网络管理中,一般采用管理-代理的管理模型,包括网络管理站、管理代理、管理信息库和网络管理协议4个关键元素.网络管理站发出管理操作的指令,并接收来自管理代理的信息.管理代理位于被管理的设备内部,把来自管理站的命令和信息请求转换为本设备特有的指令,完成管理站的指示,或返回它所在设备的信息.S NMP管理信息的收集主要由管理站以轮询方式访问代理的M I B库和代理以陷阱方式向管理站发送设备信息.S NMP网络管理进程在UDP 端口161发送和接收S NMP消息,在UDP端口162接收陷阱.2 M I B和M I B编译器2.1 M I B在S NMP中的作用管理信息库M I B是一个网络中所有可能的被管对象集合的数据结构[3].所有对象都存放在管理信息库的数据结构中,每一个对象反映被管资源的某一方面属性.通过将所需管理信息进行量化,组织成M I B的树形结构,提供给管理站进行访问,使得NMS可以实时监控网络的性能和运行状况,更加准确、高效地管理和维护网络.因此M I B作为网络管理信息的主要提供方,在网络管理中起着重要作用.2.2 M I B编译器M I B编译器属于S NMP的基本工具集,传统方法一般直接将I B编译成编程语言相关数据结构,具有应用的关联性.M I B编译器读入用AS N.1语法编写的M I B文档进行编译,以生成本地数据结构与程序框架,供应用程序调用和编程.为了使程序更具衔接性,用C#实现M I B编译器.这个编译器要完成以下功能:1)利用词法分析器读入M I B文档,提取出合法的对象的定义,剔除不符合文法的符号.2)根据AS N.1语法,翻译出对应的产生式,并依据产生式,利用递归下降的方法,产生出针对AS N.1语法的分析器.3)如果没有错误,该编译器会产生一个C#类的实例,它的每个变量值即代表M I B库中对象的值.4)如果出现错误,该错误处理能定位于出错的位置,并提示出错的类型.3 M I B编译器的具体实现传统的M I B编译器由词法分析、语法分析和语义分析3部分组成.考虑到AS N.1语法的特点(语义相对简单),可以将后2个阶段合并,即由语法分析器完成语义分析的功能.这样,M I B编译器可定义为词法分析器和语法分析器.3.1 词法分析器正规表达式和有限自动机具有等价性[4],即对应于有穷字母表上的每个正规表达式总存在一个确定有限自动机DF A,它恰好能识别正规表达式所表示的正规集.由此,为了使编译器更具一般性(定义不同的正规式,产生针对不同情况的DF A),将此阶段又细分为2部分,即词法分析器产生器和词法脚本文档.3.1.1 词法分析器产生器 词法分析器产生器具・36・ 第6期郑州轻工业学院学报(自然科学版)有通用性,最终会产生出一个词法分析器.首先,产生器会读取词法脚本文档,提取给出的正规表达式;然后,给出处理正规表达式的方法,将正规表达式转化为非确定有限自动机NF A;最后将得到的NF A 化简为确定有限自动机DF A,并输出包含DF A的C#源程序,该C #源程序就是针对词法脚本文档中定义的正规表达式的词法分析器.3.1.2 词法脚本文档 词法脚本文档给出最终要处理文档(如M I B 文档)中出现的字符或字符串的对应的正规表达式.如果词法分析器产生器具有通用性,那么词法脚本文档就具有专用性,其专用性体现在它只能处理确定类型的文档.在这部分要注意2点,首先要符合词法分析器产生器定义的格式,否则不能被准确读入,也就不能产生准确的DF A 用来识别最终文档;其次要根据最终文档中可能出现的字符及字符串定义正确的正规表达式,否则会出现正确的字符不能被识别的情况.3.1.3 词法分析器举例 由编译原理可知,任何符号都由值、文字表述及类别3部分组成.如n =1,可以定义它的类别是整形,它的值是1,它的文字表述是n .因此在实际处理中,首先定义一个C #类,T O 2KEN,它有2个变量,分别表示值yylval 和表示文字表述yytext,任何词法脚本文档中出现的正规表达式最终都被处理成T OKE N 的实例或是T OKEN 的子类的实例.在M I B 文档中出现的关键字BEGI N ,在词法脚本文档中定义为:“BEGI N %BEGI N ”,含义是BEGI N 是合法字符,词法分析器产生器会为BEGI N 构造1个DF A ,在该DF A 的终态节点中会存储1个动作,当匹配该DF A 的字符串出现时,自动构造1个类,该类的名字是BEGI N ,它继承自基类T OKEN,并返回该类的1个实例,该实例的yytext 变量有意义,即yytext =BEGI N .由正规表达式转化为NF A 的过程如图1,图2所示.图1 任何NF A 都可以简化为初态和终态及一系列中间状态图2 读入BEGI N 正规表达式时形成的NF A 状态图最终,还要将NF A 化简为DF A ,这样对应于BEGI N 就会有一个确定有限自动机DF A ,它仅能识别BEGI N 这个字符串.通过构造一系列DF A,词法分析器就可以有效识别M I B 文档中出现的字符,如果不能为DF A 所识别,即为非法字符.这里要特别强调的是,在由NF A 转化为DF A 的过程中,会遇到这样的情况,即DF A 的终态集中不只包含1个NF A 的终态.处理该问题的方法是:规定在词法脚本文档中出现的正规表达式的顺序代表优先级,即在构造NF A 时对产生的每个NF A 节点进行相应编号,编号小的,优先级高,并确定在同一个DF A 的终态集中,NF A 终态节点编号小的即是DF A 识别出的那类正规表达式.3.2 语法分析器类似词法分析器的处理,把语法分析器分为2部分,即语法分析器产生器和语法脚本文档.3.2.1 语法分析器产生器 语法分析器产生器利用语法脚本文档中定义的产生式,转化处理后生成对应的语法分析表,最终输出包含语法分析表的C#源程序,该C#源程序就是针对语法脚本文档中定义的产生式的语法分析器.应用得到的语法分析器,将由词法分析器识别的合法字符(或字符串)与语法分析器中的语法分析表的相应入口对照,进而执行入口规定的动作,以完成对最终文档(M I B 文档)的语法分析.3.2.2 语法脚本文档 语法脚本文档中要定义产生式.产生式是定义语法范畴的一种书写规则,其一般的形式是A →α,其中A 称作产生式的左部符号,α称作产生式的右部符号,箭头读作“是”或者“定义为”.此处应当注意的是书写时要符合语法分析器产生器的格式并且要将最终文档中可能出现的文法翻译成正确的产生式.定义被管理资源的对象时,用AS N.1语法描述如下:(objectna me )OBJECT -TYPE SY NT AX (syntax )ACCESS (access )ST AT US (status )DESCR I PTI O N (descri p ti on )∷={(parent )(nu mber )} 将其中的属性字段提取出来,对应的产生式为(这里将箭头简化为冒号,并用|来表示同一个产生式左部符号对应于不同的右部符号,这样处理,易于编程).A ttrib: DESCR I PTI O N STR I N G:s%A ttrib (s .yytext )・46・2007 刘 杰等:基于S NM P 的M I B 编译器的实现|SY NT AX Type |ST AT US I D |ACCESS I D ; 这里,将属性A ttrib 定义为一个C #类,分别对应于M I B 语法树的对象的属性,即4种属性均可作为A ttrib 的一个实例出现.例如在M I B 文档中出现ST AT US I D 时(其中I D 为在词法脚本文档中定义的类,表示由字符开头,可包含字符数字的串),就会生成产生式左边的A ttrib 的一个新实例,该类实例仅仅是如实记录字符串(ST AT US I D )的内容,以便将来由应用程序读取.具体实现流程如图3所示.图3 M I B 编译器实现流程图4 结论运用上述M I B 编译器,成功地编译了大量M I B 文件,该编译器可以完成预期的功能.但仍然存在需要改进的地方,如错误提示不够具体,不便于查找具体出错的位置和修正语法脚本文档定义的错误语法.对于此类问题,可将错误抽象形成类,用相应的错误代码和错误类型共同构成提示信息,并逐步丰富错误类型,形成专门文档以供查阅.在该编译器能够完成具体功能的基础上,抽象出了一个通用的框架,将来可以进行扩展,以将其改造成为通用的编译器来使用.参考文献:[1] 谢希仁.计算机网络[M ].4版.大连:大连理工大学出版社,2004:294-295.[2] Andre w S Tanenbau m.计算机网络[M ].4版.潘爱民译.北京:清华大学出版,2004:67.[3] RFC1212.Concise M I B definiti ons [S].[4] 陈火旺.程序设计语言编译原理[M ].3版.北京:国防工业出版社,2000:51-53.(上接第61页)修改企业的基本信息、新增企业的基本信息以及企业信息更新的操作.管理员除了具有一般用户的权限外,还有对系统用户进行管理和维护的权限.同样能够实现用户注册、用户修改密码等功能.系统维护功能是从信息管理系统的动态化及易于维护性出发,建立原始数据库备份、统计数据库备份定期保存,以利于数据资源的保存.同时也可以将外部存储设备中的数据添加到系统数据库中,这样就能实现数据的动态管理.4 结语通过采用K DD 模糊查询技术,创建了危化企业安全信息的数据库系统,实现了及时反映、快速查询各个危化企业安全状况的功能,为加强政府安全生产监督管理部门对危险化学品生产和经营企业的安全管理提供了方便实用的应用软件.该软件经过了相关管理部门的实际应用,效果良好.参考文献:[1] 陈国华,张文海,狄建华.危险化学品安全管理现状及对策[J ].化工环保,2003,23(6):333.[2] 刘艳萍,李运才.我国危险化学品安全管理现状[J ].安全、环境和健康,2002,2(1):21.[3] 高建明,曾明荣.我国危险化学品安全生产现状与对策[J ].中国安全生产科学技术,2005,3(1):52.[4] 李鑫,陆海东.危险化学品查询系统的设计与实现[J ].吉林化工学院学报,2005(8):50.[5] 谷震离.基于S QL 查询语句的查询优化方法[J ].计算机时代,2005(2):39.[6] 张颖超,叶小岭,吴士芬,等.基于S QL 的模糊查询技术研究与实现[J ].微电子学与计算机,2005,12(1):113.・56・ 第6期。
Linux系统设备配置SNMP操作手册
若各系统负责人需要将linux系统设备监控迁移到Solarwinds监控上,需要将原linux系统内/etc/snmp下的snmpd.conf文件替换为我们提供的snmpd.conf 文件,然后重启snmpd服务即可;下面介绍一种较为快捷的替换方式:在操作设备上安装XmanagerEnterprise软件,软件安装包见附件,安装软件按照正常步骤完成即可,在此不再叙述,完成安装后操作步骤如下:
1)打开软件,点击Xshell打开程序,如下图所示:
2)点击新建连接,然后填写上需要配置的IP地址,
、3)点OK后,点击connect连接,如下图所示
4)然后输入用户名,点击OK ,
5)提示输入密码,
6)完成后就可登录该设备
7)点击软件界面上的按钮,如下图所示
8)出现界面如下:左边为本机文件目录,右边为远程设备文件目录,
9)在右边远程设备上找到/etc/snmp下的文件snmpd.conf,
10)在左边本机上找到我们提供的snmpd.conf文件,拖动到右边远程设备上,
点OK确认覆盖,最后检查文件的更新日期,如下图所示:
11)完成后回到操作界面重启snmp服务,重启命令为service snmpdrestrat
12)完成以上步骤即可,本手册只介绍一种linux系统下文件替换方法,使
用其他方法也是可以的,最后重启下snmpd的服务即可。
一.SNMP工作过程①被管设备上的AGENT从UDP端口161接收来自网管站的串行报文;②经过解码、团体名验证、分析得到管理变量在mib树中对应的节点,从相应的模块中得到变量的值,再形成响应报文,编码发送回网管站;③网管站得到响应报文后,再经同样的处理,最终显示结果。
二、网络管理网络管理,是指网络管理员通过网络管理程序对网络的运行状态进行监测和控制,从而是网络有效、可靠、安全、经济运行的技术体系。
网络管理的目标是尽量满足网络管理者和网络用户对计算机网络的有效性、可靠性、开放性、综合性、安全性和经济性的要求。
常规的网络管理的五大功能:故障管理、配置管理、性能管理、安全管理、计费管理网络管理发展趋势1.网管系统(NMS)2. 应用性能管理(APM)3.桌面管理系统(DMI)4.员工行为管理(EAM) 5.安全管理(SM)计算机网络的主要性能指标(1)业务量——业务量强度(2)时延:一个报文从网络的一个端到另一个段所需要的时间。
网络的时延主要包括传输时间、服务时间和等待时间。
传输时间是很小的,在性能分析中所说的时延主要指服务时间和等待时间。
(3)呼损(6)信道有效传输率(4)吞吐量(7)系统效率(5)信息传输速率(8)平均报文延迟时间时延主要由两部份构成,一是信息在信道上传输产生的延迟,二是存储转发延迟;排队论研究的是一种排队现象。
对计算机网络系统性能的分析和研究与对其他系统一样,常常采用模拟方法。
一是数学模拟;二是物理模拟。
常用的程序设计方法有两种:面向过程的设计方法和面向对象的设计方法。
在现代网络管理模型中,数据库是管理系统的心脏。
在OSI标准中这个数据库被称为管理信息库(MIB)。
网络MIB中的数据可大体分为三类:感测数据:测量到的网络状态结构数据:网络的物理和逻辑构成控制数据:网络的操作设置数据库按其采用的数据模型分为层次数据库、网状数据库和关系数据库三种。
1.集中式数据库特点:系统中的各用户在其终端上共用中心计算机的集中数据库。
SNMP MIB 功能开发详细步骤一、定义MIB库文件:可使用adventnet 工具包下的mibedit工具来定义私有MIB库文件。
二、在linux环境下安装net-snmp 。
安装过程如下:1、解压源码包:tar –zxvf net-snmp-5.6.1.1.tar.gz2、进入解压后的文件目录:cd net-snmp-5.6.1.13、执行文件目录下的configure可执行文件,如果想指定程序包的安装路径,那么您首先建立相应的文件夹来存放安装信息,您可以写成./configure –prefix=/您指定的路径名。
参数—prefix用来告诉系统安装信息存放的路径,如果您没有指定路径,直接执行./configure,那么程序包都会安装在系统默认的目录下,通常为:/usr/local下。
例如:./configure --prefix=/usr/local/snmp //配置指定安装目录,安装过程会询问您以下的信息:注意:以下问题似乎不怎么重要,那好像仅仅是官方想了解使用本软件方的信息,可以直接回车而不用回答,系统会采用默认信息,其中日志文件默认安装在/var/log/snmpd.log.数据存贮目录默认存放在/var/net-snmp下。
default version of-snmp-version(3): 3(在这里版本通常有三种形式:1,2c,3)Systemcontact information(配置该设备的联系信息): heaven(也可以是邮箱地址)System location (该系统设备的地理位置):BEIJING P.R ChinaLocation to write logfile (日志文件位置): /var/log/snmpd.logLocation to Write persistent(数据存储目录): /var/net-snmp4、#make编译源码包文件,通常只需要执行make命令,系统会根据Makefile层层进行编译,第一次编译需要的时间比较长. 如果make 成功的话,那么紧接着安装程序了,这一步一般不会出现错误.#make install5、完成以上步骤后net-snmp的开发环境就搭建好了。
如果不在PC上使用SNMP服务的话是不需要再进一步配置的。
三、生成MIB 源文件(C格式):1、首先需要介绍一下MIB库和C源文件的转换工具命令:Net-snmp安装包提供了mib2c工具,用户可使用该工具将MIB库文件转换成C源码格式。
命令:MIBS=”+param1” mib2c param2 其中param1代表需要被转换的MIB库文件,param2代表希望转换该MIB库文件下的哪一个节点相关数据。
下面以AERODEV-MIB.txt中的portTrunk功能节点为例来介绍整个转换过程。
2、将编辑好的MIB库文件拷贝到linux下net-snmp安装目录中的mibs目录。
在终端下cd 到该目录,然后执行MIBS=”+AERODEV-MIB.txt” mib2cportTrunk命令即可生成portTrunk子树下的非表节点处理源码,再执行MIBS=”+AERODEV-MIB.txt” mib2c portTrkGroupTable即可生成portTrunk子树下的表portTrkGroupTable对应的C源码。
对于非表节点按照提示输入1即可生成该功能对应的源文件portTrunk.c 和portTrunk.h,对于表节点需要按照提示分别输入 2,2,1,2。
3、将生成的源码拷贝到我们的开发源码树下的user/net-snmp/agent/mibgroups/switch/private 目录下。
四、修改相应的C源文件1、修改portTrunk.c和portTrunk.h源文件以实现portTrkEna和trunkType两个读写节点的功能:1)首先介绍一下非表节点C源码中的数据定义和函数功能:oidportTrunk_variables_oid为portTrunk子树根节点的OID值。
Struct variable4 portTrunk_variables[]结构体数组为portTrunk下的节点定义(包括非表节点和表节点的定义)。
因为表节点我们稍后将会采用另外一种方式来处理,所以在此处我们将表节点相应的几个定义删去。
其中包括TRKGRPINDEX、PORTTRUNKGROUPNUMBER、PORTTRUNKGROUPENABLE、PORTTRUNKGROUPMEMBER。
Void init_portTrunk(void)函数为初始化函数,会将相应节点的定义信息注册到agent的OID信息树里。
Unsigned char * var_portTrunk(struct variable *vp,oid*name,size_t *length, int exact, size_t *var_len, WriteMethod** write_method); 函数为模块处理函数。
Vp为请求的结构体指针,name为相应OID的指针,length为OID长度,var_len为参数长度,write_method为节点写函数指针。
该函数中switch(vp->magic)为查询需要操作的节点,对于PORTTRKENA 这个读写节点来说,*write_method = write_portTrkEna为操作函数指针赋值,VAR = VALUE 中的VAR为接收返回值的变量,VALUE为返回值,这两个变量需要自己定义和处理。
Var_portTrkGroupTable 函数为表portTrkGroupTable的处理函数,这里直接删去。
Int write_portTrkEna(…)为节点portTrkEna 的写操作处理函数。
其中RESERVE2 状态中,value接收到的值即为agent收到的write request的修改值。
ACTION状态中需要填入对该节点修改的具体代码,UNDO状态中需要填入对该节点恢复的具体代码。
在ACTION状态中进行操作的时候,需要注意保存该节点的当前值,便于UNDO进行恢复Int write_trunkType(…)为节点trunkType节点的写处理函数。
与portTrkEna节点类似。
2)修改后的代码可参照broadcom/uClinuxv12/user/net-snmp/agent/mibgroup/switch/private下的portTrunk.c和portTrunk.h文件。
其中使用的结构体和函数均可在broadcom/uClinuxv12/user/bcmcfg 下相应功能的源文件中找到。
要使用user/bcmcfg下的函数和数据结构,需要将bcmcfg下的相应C文件生成的.o文件链接成.a库并在net-snmp编译参数中加入相应的头文件引用和库文件引用,目前这个步骤已经完成,具体可参照user/bcmcfg下的makefile文件。
3)代码修改完成后,需要修改user/net-snmp/agent/mibgroup/下的default_modules.h文件,如要加入上面新修改的功能,则需要在default_modules.h文件中添加config_require(switch/private/portTrunk);4)以上步骤均完成后可重新编译源码树,编译完成后的snmpd即可实现对新节点操作功能。
2、修改portTrkGroupTable.c和portTrkGroupTable.h文件以实现端口汇聚表的监控功能。
1)数据结构和函数介绍:Void init_portTrkGroupTable(void)为模块初始化函数,其中调用的initialize_table_portTrkGroupTable(void)为表初始化函数。
表的数据初始化工作应该在这里完成。
struct portTrkGroupTable_entry 为表的链表结构定义。
其中包含了表索引定义和表内容及内容长度定义。
相应的字符串数据的长度需要用户自己调整。
Struct portTrkGroupTable_entry * portTrkGroupTable_head;定义了该表的链表。
整个表的操作实际上就是针对该链表的。
Struct portTrkGroupTable_entry * portTrkGroupTable_createEntry(…)为表的行创建函数。
其中具体的传入参数和数据处理需要用户自己实现。
Void portTrkGroupTable_removeEntry(…)为行删除函数。
在行数确定的情况下无需使用。
Int portTrkGroupTable_handler(…)函数未表的操作函数。
表中数据的读取需要在MODE_GET下实现。
数据的修改需要在MODE_SET_ACTION下实现。
另外MODE_SET_UNDO的处理方式同非表节点。
修改后的代码可参照broadcom/uClinuxv12/user/net-snmp/agent/mibgroup/switch/private下的portTrkGroupTable.c和portTrkGroupTable.h文件。
2)源文件修改完成后,其他的操作同portTrunk.c。
五、已开发的相关私有MIB功能源文件位置均在开发源码树中user/net-snmp/agent/mibgroups/switch/private目录下user/net-snmp/agent/mibgroups/switch/dealport/目录下为不同型号的交换机的OID定义。
六、已开发的公有MIB功能源文件均在源码树user/net-snmp/agent/mibgroups/mibII目录下。
具体可参考user/net-snmp/agent/mibgroups/default_modules.h中相应的内容。
七、RMON对应的MIB源文件均在user/net-snmp/agent/mibgroups/RMON 目录下。