SNMP( Simple Network Management Protocol,简单网络管理协议)是网络中管理设备和被管理设备之间的通信规则,它定义了一系列消息、方法和语法,用于实现管理设备对被管理设备的访问和管理。
SNMP 具有以下优势:
・ 自动化网络管理。网络管理员可以利用 SNMP 平台在网络上的节点检索信息、修改信息、发现故障、完成故障诊断、进行容量规划和生成报告。
・ 屏蔽不同设备的物理差异,实现对不同厂商产品的自动化管理。 SNMP 只提供最基本的功能集,使得管理任务分别与被管设备的物理特性和下层的联网技术相对独立,从而实现对不同厂商设备的管理,特别适合在小型、快速和低成本的环境中使用。
SNMP 的工作机制
SNMP 网络元素分为 NMS 和 Agent 两种。
・ NMS( Network Management Station,网络管理站)是运行 SNMP 客户端程序的工作站,能够提供非常友好的人机交互界面,方便网络管理员完成绝大多数的网络管理工作。
・ Agent 是驻留在设备上的一个进程,负责接收、处理来自 NMS 的请求报文。在一些紧急情况下,如接口状态发生改变等, Agent 也会主动通知 NMS。
NMS 是 SNMP 网络的管理者, Agent 是 SNMP 网络的被管理者。 NMS 和 Agent 之间通过 SNM协议来交互管理信息。
SNMP 提供以下四种基本操作:
・ Get 操作: NMS 使用该操作查询 Agent 的某个变量的值。
・ Set 操作: NMS 使用该操作重新设置在 Agent 数据库( MIB, Management Information Base)中的一个或多个对象的值。
・ Trap 操作: Agent 使用该操作向 NMS 发送报警信息。
・Inform 操作: NMS 使用该操作向其他 NMS 发送报警信息。
SNMP 的协议版本
目前,设备的 SNMP Agent 支持 SNMP v1 、 SNMP v2c 和 SNMP v3 三种版本。
・ SNMP v1 采用团体名( Community Name)认证。 团体名用来定义 SNMP NMS 和 SNMP Agent的关系。如果 SNMP 报文携带的团体名没有得到设备的认可,该报文将被丢弃。团体名起到了类似于密码的作用,用来限制 SNMP NMS 对 SNMP Agent 的访问。
・ SNMP v2c 也采用团体名认证。它在兼容 SNMP v1 的同时又扩充了 SNMP v1 的功能:它提供了更多的操作类型( GetBulk 和 InformRequest) ; 它支持更多的数据类型( Counter64 等) ;它提供了更丰富的错误代码,能够更细致地区分错误。
・ SNMP v3 提供了基于用户的安全模型( USM, User-Based Security Model)的认证机制。用户可以设置认证和加密功能,认证用于验证报文发送方的合法性,避免非法用户的访问;加密则是对 NMS 和 Agent 之间的传输报文进行加密,以免被窃听。通过有无认证和有无加密等功能组合,可以为 SNMP NMS 对 SNMP Agent 之间的通信提供更高的安全性。
Agent 可以同时配置多个版本, 与不同的 NMS 交互采用不同的版本交互。 但是当 Agent 和某个 NMS通信时, Agent 和该 NMS 上的 SNMP 版本配置必须相同(即都配置为 SNMP v1 或者都配置为 SNMPv2c 或者都配置为 SNMP v3),才能成功互访。
MIB 简介
1. MIB
任何一个被管理的资源都表示成一个对象,称为被管理的对象。 MIB( Management InformationBase,管理信息库)是被管理对象的集合。它定义了对象之间的层次关系以及对象的一系列属性,比如对象的名字、访问权限和数据类型等。每个Agent都有自己的MIB。 NMS根据权限可以对MIB中的对象进行读/写操作。 NMS、 Agent和MIB之间的关系如 图 1-1 所示。
2. 子树 OID
MIB是以树状结构进行存储的。树的节点表示被管理对象,它可以用从根开始的一条路径唯一地标识。如 图 1-2 所示,被管理对象A可以用一串数字{1.2.1.1.5}唯一确定,这串数字是被管理对象的OID( Object Identifier,对象标识符)。
子树可以用该子树根节点的 OID 来标识。如以 B 为根节点的子树的子树 OID 为 B 的 OID――{1.2.1.1}。
3. 子树掩码
子树掩码可以和子树 OID 共同来确定一个视图的范围。子树掩码用十六进制格式表示,转换成二进制后,每个比特位对应 OID 中的一个小节,其中:
・ 1 表示精确匹配,即要访问的 MIB 对象的 OID 与子树 OID 对应小节的值必须相等;
・ 0 表示通配,即要访问的 MIB 对象的 OID 与子树 OID 对应小节的值可以不相等。
例如:子树掩码为 0xDB(二进制格式为 11011011 ),子树OID为 1.3.6.1.6.1.2.1 ,则对应关系如图 1-3 所示,所确定的视图就包括子树OID为 1.3.*.1.6.*.2.1( *表示可为任意数字)的子树下的所有节点。
说明:
・ 若子树掩码的比特位数目大于子树 OID 的小节数,则匹配时子树掩码中多出的 bit 将被忽略。
・ 若子树掩码的比特位数目小于子树 OID 的小节数,则匹配时子树掩码中不足的 bit 将自动设置为 1 。
・ 如果没有指定子树掩码,则使用缺省子树掩码(全 F)。