1、第16章 网络管理标准SNMP,要求:1.了解网络管理的需求2.掌握SNMP标准的框架及组成部分3.理解ASN.1在SNMP中的使用4.掌握MIB对象的命名方式5.掌握SNMP协议报文格式及SNMP协议中的五种交互报文6.了解用WinSNMP进行程序设计的方法 参考书:简单网络管理协议教程(第2版)(Total SNMP(Second Edition),SEAN HARNEDY著,胡春雨、张巍等译,谢希仁校,电子工业出版社,RRENTICE HALL出版公司。,16.1 概述,一. 网络管理需求FCAPS F故障管理:检测、定位和排除网络硬件和软件中的故障。 C配置管理:掌握和控制互连网络的状
2、态,包括互连网络内各设备的状态及其连接关系。 A帐务管理:度量各个端用户和应用程序对网络资源的使用情况。 P性能管理:监测网络运行的关键参数,并指出网络中哪里的性能可以改善以及如何改善。 S安全管理:对网络资源及其重要信息访问的约束和控制。,二. SNMP简介 SSimple:简单 NNetwork:网络 MManagement:管理 PProtocol:协议 1. 特点简单性 灵活性 可扩充性 2. SNMP vs CMIP vs TMNSNMP:TCP/IP下的网络管理框架。CMIP:OSI下的网络管理框架(http:/www.iso.ch)TMN: 电信网络管理标准(http:/www.
3、itu.ch) 说明:网络管理论坛(http:/www.nmf.org),3. 应用SNMPv1:获得了广泛应用。SNMPv2:基本没有应用。SNMPv3:新兴的标准,期待成为新一代安全的网络管理标准。 4. 现有的知名网络管理产品 HP :OpenViewhttp:/ SunSoft:Solstice Domain Mangerhttp:/ Cabletron:Spectrumhttp:/ IBM TME 10/NetViewhttp:/ Network Managers:NMC 3000http:/mgrs.co.uk,5. SNMP参考模型,6. 在TCP/IP协议簇中的位置 应用层协议
4、,使用UDP传输 端口号: 161:被管网络实体开放的端口,接收管理站的读写信息; 162:管理站开放的端口,接收被管实体的Trap信息。 7. SNMP的主要组成部分 MIB:管理信息库,定义了可以通过网络管理协议进行访问的管理对象的集合; SMI:管理信息结构,语法描述; SNMP协议:定义了管理站和被管网络实体之间的交互过程。,16.2 MIB II第二版的管理信息库,一. 概述,定义了可以由SNMP管理的对象的集合。包括: 由IETF工作组定义的标准对象 各大学和研究机构为实验建立的对象 各厂商和其他团体所定义的专用对象 MIB-II前缀:1.3.6.1.2.1,二. MIB-II对象
5、组 1. 系统组(system)用来描述被管网络设备的特性和通用配置信息。 2. 接口组(interface)对网络接口层的管理控制。 3. 地址转换组 (address translation)提供IP地址到物理地址之间的映射。 4. 网际协议组(ip)提供IP层的相关信息。 5. Internet控制报文协议组(icmp)包括ICMP报文的输入和输出统计量。,6. 传输控制协议组(tcp)用于搜集TCP连接的统计量。 7. 用户数据报协议组(udp)包括UDP的统计量和运行信息。 8. 外部网关协议组(egp)包括外部网关协议所需的管理对象。 9. 传输组(transmission)各种物
6、理网络相关的管理信息。 10. SNMP组(snmp)用于SNMP协议自身的管理。,2. 对象 sysDescr:结点的完整描述字符串 sysObjectID:结点的ASN.1对象标识符 sysUpTime:设备已经运行的时间 sysContact:设备的责任人的名字 sysName:结点的名字 sysLocation:结点的位置 sysService:结点支持的系统服务定义,三. 系统组 1. 子树示意,四. IP组 ipRouteTable1.3.6.1.2.1.4.21:路由表,16.3 SNMPv1第一版的SNMP协议,功能:网络管理站与被管网络实体之间的通信协议 一. 授权与鉴别 鉴
7、别:检查、验证报文发送者身份的过程。 授权:代理进程对收到并经过鉴别的报文的访问权限进行的检查。 1. 基于共同体名的简单鉴别机制 关键部件:共同体名,标识网络管理站与被管网络实体处于同一个组。默认“public”。 鉴别步骤: 代理进程接收到命令,检查共同体字段,并将这个字段与存储在自己配置中的共同体名字与接收到的报文中的共同体名字进行字符串比较; 若比较一致,则认为报文可信,进行下一步处理; 若比较结果不一致,则接收到的报文被丢弃。,2. 基于视图的授权机制 视图:每个共同体成员保存的可供其它成员访问的对象组。 对视图的两种访问方式: 只读方式 读-写方式 MIB中给对象定义的访问方式:
8、只读 读写 只写 不可访问,二. SNMP报文 1. 报文格式, 版本号 为SNMP的兼容性设置,SNMPv1时取0。若接收到的报文版本号不正确就丢弃报文。 共同体名字符串,包含了鉴别所用的共同体名字。 2.报文分类 GetRequest-PDU GetNextRequest-PDU GetResponse-PDU SetRequest-PDU Trap-PDU, GetRequest-PDU 功能:对被管对象的某个实例值进行写操作。 回应:GetResponse-PDU。, GetNextRequest-PDU 作用:网络管理站从目标代理进程的MIB中提取已知表格管理对象实例的值。 响应:G
9、etResponse-PDU,说明:在返回的GetResponse PDU中包含了指定对象的后继对象的名字和值。,示例:, GetResponse-PDU 功能:被管网络实体对网络管理站的回应。 SetRequest-PDU 功能:对被管对象的某个实例值进行写操作。 回应:GetResponse-PDU(发生错误时)。, Trap-PDU 功能:代理进程向网络管理站报告异常事件。 步骤:,3. PDU格式, Request ID请求标识 整数。 作用:匹配查询数据和回应数据;防止重复和乱序。 Error Status错误状态 只在GetResponse-PDU中使用,指出上个命令的执行情况。若
10、不为0,则表示发生差错。 Error Index错误索引指向在变量绑定表中第一个导致错误的变量。, VarBindList变量绑定表 请求操作的管理对象实例列表。,对象标识字段:请求操作时写入。 值字段:若是SetRequest-PDU,则请求操作时写入;否则是在回应时写入。,16.4管理信息结构,作用:定义了SNMP框架所用信息的组织、组成和标识,还为描述MIB对象和描述协议怎样交换信息奠定了基础。 一. 使用SMI定义SNMP管理对象 对象的三个属性 名字 每一个对象都有一个唯一的标识符作为其名字。 语法 每一个管理对象的抽象数据结构用ASN.1来定义。 编码管理对象的实例也用ASN.1编
11、码,发送和接收的包含管理对象值的协议报文用BER表示。,二. 抽象标记语法(ASN.1) 说明:不是SNMP特有的东西,是SNMP采用的现有的标准。 1. 缩写Abstract Syntax Notation One。 (ISO 8824) 2. 功能表示数据的标准方法。描述SNMP报文描述对象本身,3. 组件: 定义管理对象数据类型的类型符号 定义实例的值符号 发送和接收用ASN.1编码的信息的传送语法(BER),三. ASN.1数据类型 1. 简单数据类型 所有实现中都共有和必须具有的基本数据类型。,2. 简单结构类型: 列表(list)+ 表格(table),3. 应用数据类型 (专门为
12、SNMP定义),四. 基本编规则(BER)ISO 8825 功能:说明了数据如何编码成字节并在互连网上传输。 TLV3元组:标签-长度-内容 1.标签(8比特), 族类比特:(7-6),决定了数据的类型。,通用:简单和简单结构类型。 应用:应用数据类型。 具体上下文:用于定义SNMP中的PDU 专用:因特殊需要而根据约定定义的类型。, 格式比特: (5),决定数据格式, 标签码(4-0) 定义和取值与族类有关。 通用族类标签 注:C-结构格式类型;S-简单格式类型, 应用族类标签, 具体上下文类标签,2. 长度标识符,F比特:短/长指示位。 F = 0,短限定格式。低7位是长度。 F = 1,
13、长限定格式,低7位是后面紧接的长度字节的数目。,五. MIB对象定义格式 1. 顶级管理对象模板,OBJECT:对象描述符 对象标识符 SYNTAX:对象抽象数据结构的ASN.1语法 ACCESS:对象的访问方式 STATUS:该对象是必备的、可选的或者废弃的 DEFINITION:对象的描述,2. 示例,sysName OBJECT-TYPESYNTAX DisplayString(size(0255))ACCESS read-writeSTATUS mandatoryDESCRIPTION“An administratively-assigned name for this managed
14、 node. By convention, this is the nodes fully-qualified domain name.” :=system 5,4. 使用ASN.1编码的SNMP报文格式,16.5 SNMP 程序开发WinSNMP,1. 在Windows下实现SNMP程序的方法使用Winsock2编程接口,使用161和162端口,在161和162端口使用UDP实现; 利用WinSNMP API 2. WinSNMP简介WinSNMP以函数的形式封装了SNMP协议的各部分,提供了一套可供在Windows下开发基于SNMP的网络管理程序的接口,简化了SNMP程序开发过程。目前支持SNMPv1和SNMPv2。,