网管系统软件是由以下部分组成的
Manager:
管理员使用的工作站,通过网管软件查看和分析网管数据。
Agent
网管代理。网管代理一般分为两个功能模块和一个公用模块MIB
库
查询/
设置模块
此模块接受来自Manager
的查询和设置指令,并根据指令处理相关数据,如将被查询的数据返回给Manager,
或使设置的数据对相关Device
生效。
对于SNMP
Agent
,此模块至少需要实现以下协议接口:
get-request
set-request
get-next-request
get-reponse
告警模块
告警模块将设备产生的告警发送给Manager
。对于SNMP Agent.
此模块至少需要实现Trap
协议接口。
MIB
库
MIB(
管理信息库)
保存被管理设备的相关管理信息。在SNMP
Agent
里, MIB
通常用文本文件格式保存。
一个MIB
描述了包含在数据库中的对象或表项。每一个对象或表项都有以下四个属性:
对象类型(Object Type
)
语法(Syntax
)
存取(Access
)
状态(Status
)
在SNMP
规范之一的管理信息结构与标识(SMI
;RFC
1155/1065
)规范中定义了这些属性。SMI
对于MIB
来说就相当于模式对于数据库。
Device
被管理设备,可以是一台一个进程,计算机,或者分布式的系统。这些设备负责产生和收集诸如配置,性能和业务数据以及告警,
是网管数据的来源,同时负责原始数据的整理和统计。Device
和Agent
之间的交互协议可以不受SNMP
协议限制,可以采用任何一种协议交换数据。
Agent设计
可见Agent
在网管系统结构的位置相当于管理器和被管设备之间的网关和协议转换器。对Agent
的功能需求的范围应该为:
协议转换。将SNMP
协议和被管设备之间的协议互相转换
转发请求。包括向被管设备转发查询,设置请求。向Manager
转发设备产生的告警
通过MIB
库维护被管设备的信息结构
对Manager
提供一个统一的网管接口,无论被管设备有多复杂,对Manager
来说只需要和Agent
交互就可以获得所有被管设备的网管信息
不需要牵涉诸如轮巡,告警策略等网管业务逻辑。也不参与被管设备本身对网管数据的处理流程。这些由被管设备的网管业务逻辑层自行处理。
不需要对数据进行统计分析
不需要保存历史或实时网管数据
可见对于网管系统来说,Agent
功能明确,结构相对简单,虽然必不可少但并非核心部件,并且SNMP
Agent
已经是事实上的工业标准,有大量的开发包帮助开发人员快速的实现Agent
,可以让开发人员将精力投入到网管业务逻辑上。
什么是 SNMP?
SNMP是一系列协议组和规范,其提供了一种从网络中的设备中收集网络管理信息的方 法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。其网络管理主 要分为四部分被管理节点(设备)、代理、网络管理工作站、网络管理协议。
SNMP主要部分
被管理节点(设备)网络管理协议 |
被监控设备 |
代理 |
用来跟踪被管理设备状态的特殊软件或固件 |
网络管理工作站 |
与在不同的被管理节点中的代理通信,并且显示这些代理状态的中心设备 |
网络管理协议 |
被网络管理工作站和代理用来交换信息的协议 |
代理的概念及所提供的服务
管理代理(agent)是一种特殊的软件(或固件),它包含了关于一个特殊设备及该设备所处环境的信息。
其提供的服务:
-
网络管理工作站可以从代理中获得相关设备的信息。
-
网络管理工作站可以修改、增加或者删除代理中的相关表项。
-
网络管理工作站可以为一个特定的自陷设置阈值。
-
代理可以向网络管理工作站发送自陷
。
MIB概念
MIB被称为管理信息库,一个MIB描述了包含在数据库中的对象或表项。
简单网络管理协议
SNMP请求/响应报文
简单网络管理协议允许网络管理工作站软件与被管理设备中的代理进行通信。这种通信可以包括来自管理工作站的询问消息、来自代理的应答消息或者来自代理给管理工作站的自陷消息。
SNMPv1实现起来很简单,其包含5个请求/响应原语:
-
get-request
-
set-request
-
get-next-request
-
get-response
-
trap
报文格式
IP首部 |
UDP首部 |
版本
|
共同体 |
PDU类型(0-3) |
请求标识 |
差错状态(0-5) |
差错索引 |
名称 |
值 |
名称 |
值 |
... |
PDU类型4 |
企业 |
代理地址 |
Trap类型(0-6) |
特定代码 |
时间戳 |
名称 |
值 |
... |
PDU类型 |
名称 |
0 |
Get-request |
1 |
Get-next-request |
2 |
Get-response |
3 |
Set-request |
4 |
Trap |
SNMP开发工具
开发工具的使用
AdventNet所提供的的开发工具包,支持多种平台。
Microsoft Virtual Studio
6.0,Windows下c++语言的开发包。MS自身提供一组称为WinSNMP的API(在MSDN中提供详细文档),而且MS提供基于Agent
Service的SNMP Extension Agent开发。
ucd-snm(net-snmp)p是Linux平台下著名的C语言SNMP开发包,公开源码,是最常用的开发Agent的软件包。
辅助工具的使用
AdventNet所提供的对mib开发一系列开发工具包,包括:
- Mib Browser
- Mib Editor
- Mib Compiler
熟悉SNMP的开发过程
SNMP开发流程
Mib的创建和源码生成
首先第一步是Mib设计,开始Mib设计的时候要确定将被管理的对象纳入管理信息库,最终实现asn.1的文档,在此可以使用AdventNet所提供的Mib
Editor来实现。通过Mib编译器将asn.1的文档编译成c文件和头文件,可以使用Mib
Compiler编译。
Agent的开发
Agent++支持多种平台,主要有solaris, hp unix,
windows等。使用方法稍有不同,但原理一致,即生成库文件,进行开发应用时使用头文件及库文件即可。
unix下直接进行make,如果有问题对makefile中的一些宏/变量进行调整。在solaris下基本没有问题。
windows下vc6编译请参考附录
Snmpapp的开发
snmp++支持多种平台,主要有solaris, hp unix,
windows等。使用方法稍有不同,但原理一致,即生成库文件,进行开发应用时使用头文件及库文件即可。
-
unix下直接进行make,如果有问题对makefile中的一些宏/变量进行调整。在solaris下基本没有问题。新版本支持snmpv3,需要用到libdes或其他加解密库。
-
windows下vc6编译请参考附录
附录:windows下vc6编译
创建项目,加入所有的源文件和头文件后。
要在PROJECT的SETTING中设置如下项:
1 在C++页,/I
项加入AGENT++的INCLUDE和SNMP++的INCLUDE 目录
2、设置成MTd 多线程DEBUG模式。
3、 编译运行。
以上用来编译AGENT++库。
对于AGENT++的例子,要在PROJECT的SETTING中设置如下项:
1、创建WIN32的控制台程序;
2、加入程序代码;
3、加入SNMP++.LIB和AGENT++.LIB;
4、 在C++页,/I
项加入AGENT++的INCLUDE和SNMP++的INCLUDE 目录
5、设置成MTd 多线程DEBUG模式。
6、在LINK页,加入Ws2_32.lib
7、加入/nodefaultlib:"libcmtd.lib"
8、编译运行。
相关参考
SNMP FAQ
ftp://rtfm.mit.edu/pub/usenet/news.answers/snmp-faq/part1
ftp://rtfm.mit.edu/pub/usenet/news.answers/snmp-faq/part2
SNMP WEB
http://netman.cit.buffalo.edu/index.html
http://snmp.cs.utwente.nl
http://www.onramp.net/~cwk/net-manage.cgi
SNMP MAIL LIST
snmp-request@psi.com
snmpv2-request@tis.com
snmpv3-request@tis.com
SNMP NEWS GROUP
comp.protocols.snmp
info.snmp
comp.dcom.net-management
相关推荐
SNMP体系结构主要包括以下几个组件: 1. **Manager**:这是管理员使用的网络管理工作站,通过安装的网管软件来查看和分析网络状态。Manager向Agent发送查询和设置请求,接收Agent的响应和陷阱(Trap)通知。 2. **...
### SNMP网络管理体系结构 #### CMIP与SNMP体系结构对比 在探讨SNMP网络管理体系之前,我们先简要回顾一下CMIP(Common Management Information Protocol)的相关背景。CMIP作为ISO提出的一种网络管理协议,它在...
SNMP 工作在应用层,是TCP/IP协议族的一部分,通过UDP(用户数据报协议)进行通信,通常使用端口号161和162。 ASN.1(Abstract Syntax Notation One,抽象语法标记一)是SNMP中的关键组成部分,它是一种标准化的...
### 电子文档:SNMP管理 #### SNMP概述 简单网络管理协议(Simple Network Management Protocol,简称SNMP)是一种广泛应用于互联网设备管理的应用层协议。它主要用于监控和管理网络中的各种设备,如路由器、...
MIB(Management Information Base)是SNMP管理的信息结构,包含设备的各种配置和状态信息。 3. **Trap发送**:snmptest可以模拟设备发送SNMP traps,这些陷阱是设备向管理站发送的异步通知,表明发生了特定事件,...
虽然`snmp.zip`不包含管理站的代码,但理解其工作原理有助于更好地使用SNMP Agent。 3. **MIB(Management Information Base)**:MIB是SNMP中的数据结构,定义了网络设备可管理对象的结构。`snmp_mib.c`文件可能...
2. 安装 SNMP:使用编译安装或二进制安装将 SNMP 软件安装到操作系统上。 3. 配置 snmpd.conf 文件:配置 snmpd.conf 文件以定义 SNMP 代理者的行为和参数。 4. 设置环境变量:设置环境变量以便 SNMP 软件能够正确地...
SNMP++是一套专注于网络管理的开放技术,是SNMP协议原理和C++结合的产物。该技术使用C++构建,处理简单网络管理协议(SNMP)的API。SNMP++提供了一套完整的C++类(Class),这些类构成了SNMP++的基础架构。该技术的...
SNMP(简单网络管理协议)是一种广泛用于网络设备管理和监控的标准协议,而MIB是SNMP中的一个重要组成部分,它定义了网络设备的管理对象和结构。 首先,我们要理解SNMP的基本概念。SNMP是Internet工程任务组(IETF...
SNMP(简单网络管理协议)是一种广泛用于网络设备管理的标准协议,它允许网络管理员远程监控和管理网络设备,如路由器、交换机、服务器等。NET-SNMP是SNMP的一个开源实现,它提供了完整的SNMP协议栈,包括代理、管理...
- **基本概念**:SNMP的基本原理和SNMP++库的设计理念。 - **教程**:逐步指导如何创建SNMP管理代理和客户端应用。 - **API参考**:详细列出SNMP++库的类和函数,解释其用途和用法。 - **实例分析**:通过实际例子...
SNMP 的体系结构主要包括四个主要部分:被管理节点(设备)、代理(Agent)、网络管理工作站(Manager)以及网络管理协议。 1. **被管理节点(设备)**:这些是网络中的硬件或软件实体,如路由器、打印机、服务器等...
这些组件共同构成了一个完整的SNMP服务安装包,确保在CentOS 8系统上能正常工作。根据描述,该包已经在本地测试环境中成功安装,并且在客户环境中部署了超过100台机器,反馈良好,这表明了其稳定性和可靠性。 要...
SNMP协议的设计目标是简化网络管理,提高效率,减少网络维护的工作量。 **SNMP协议的基本构成** 1. **管理信息库(MIB)**:MIB是网络设备配置和状态信息的结构化存储,由一系列的对象(OID,Object Identifier)...
【网络技术实验:SNMP V1/V2C基本配置】 SNMP(Simple Network Management Protocol)是一种广泛用于网络设备管理的标准协议,它允许网络管理员监控和配置网络设备,如路由器、交换机等。在这个实验中,我们将关注...
二、SNMP协议的工作流程 1. Manager向Agent发送请求,要求获取设备的状态信息。 2. Agent收到请求后,收集设备的状态信息,并将其存储在MIB中。 3. Agent将收集到的信息发送给Manager。 4. Manager接收到信息后,...
SNMP++可以在不同的操作系统和硬件平台上工作,这为跨平台的网络管理软件开发提供了便利。 1.2.4.可扩充的SNMP++: SNMP++库本身设计得易于扩展,开发者可以根据需要对其进行修改和扩展,以适应不同的应用场景。 2....
SNMP(简单网络管理协议)是Internet上广泛使用的网络管理协议,它为网络设备提供了标准化的管理和监控方式。net-snmp项目是SNMP协议的一个开源实现,版本5.9.4则是该项目的一个稳定版本,具有强大的功能和广泛的...
Perl Module Net::SNMP::Cpq 是一个专为与Compaq Insight Manager SNMP代理交互而设计的开源Perl库。这个模块允许开发人员通过Perl脚本远程监控和管理使用Compaq(现已被HP合并)硬件的系统,尤其是那些配备了Compaq...