1、第16章 简单网络管理协议,SNMP:Simple Network Management ProtocolSNMP的位置:是应用层协议,基于传输层的UDP。服务器进程使用UDP 161端口,客户进程使用UDP 162端口。SNMP的作用:故障管理配置管理计费管理性能管理 安全管理,第16章 简单网络管理协议,现在网络规模不断扩大,复杂性不断增加,网络的异构程度越来越高,因此需要统一的网络管理体系结构和协议对网络进行管理。网络管理包括五个方面的内容。,(1)故障管理 对网络中被管对象故障的检测、定位和排除。(2)配置管理 用来定义、识别、初始化、监控网络中的被管对象,改变被管对象的操作特性,报告
2、被管对象状态的变化。(3)计费管理 记录用户使用网络资源的情况并核收费用,同时也统计网络的利用率。(4)性能管理 以网络性能为准则,保证在使用最少网络资源和具有最小时延的前提下,网络能提供可靠、连续的通信能力。(5)安全管理 保证网络不被非法使用。 这五个管理功能域简称为FCAPS。,简单网络管理协议SNMP(Simple Network Management Protocol)是TCP/IP网络中进行网络管理的主要协议。 SNMP是应用层协议,基于传输层的UDP协议。服务器(代理)进程使用UDP 161端口,客户(管理站)进程使用UDP 162端口。,第16章 简单网络管理协议,16.1 简
3、单网络管理模型16.2 简单网络管理协议SNMP16.3 SNMP报文格式16.4 管理信息结构SMI16.5 管理信息库MIB16.6 MIB组,网络管理由三个要素组成:一个或多个被管理的设备(代理),每个都含有一个代理(Agent)软件,代理随时记录被管设备的各种变量参数(被管对象) 。一个或多个网络管理站,每个都含有网络管理站软件。如SNMPc,Quidview等。网络管理协议,用于交换管理信息。网络管理站通过网络管理协议查询或修改代理所记录的被管对象信息。如用于TCP/IP网络的SNMP, 用于OSI网络的CMIP,用于电信网络的TMN等。,图16-2 SNMP配置,整个系统必须至少有
4、一个管理站。在管理站内运行管理进程。在每个被管设备中一定要有代理进程。,管理进程和代理进程利用SNMP报文进行通信,SNMP报文使用UDP来传送。,SNMP工作过程:SNMP管理站的管理工作是通过轮询各个代理来完成的;管理站也可以直接与代理通信,获得即时的设备信息。SNMP代理是用于监测被管理设备的特殊软件或硬件。SNMP的管理任务最终是交给代理来执行的: 代理翻译来自管理站的操作请求,验证操作的合法性后,直接对相应的被管对象执行相应的操作,然后向管理站返回响应结果。所以代理充当的是服务器的角色。,16.1 简单网络管理模型,基于TCP/IP的网络管理包含三个部分:(1)管理信息库MIB(Ma
5、nagement Information Base)管理信息库由代理中所有可被查询或修改的参数(被管对象)组成。,(2)管理信息结构SMI(Structure of Management Information)SMI定义了对象命名规则,数据类型(包括取值范围和长度)以及网络传输前如何对信息进行编码。(3)SNMPSNMP是管理站和代理之间的通信协议。,下图表示SNMPv1的实现模型。图中,1、2、3、4、5分别表示获得请求get-request 、获得下一个信息的请求get-next-request 、设置请求set-request 、响应get-response 、陷阱trap等操作。,S
6、NMP管理站与代理有两种通信方式:轮询(polling)和中断(interrupt-based)。轮询方式:代理不断地收集被管设备的统计数据,并把这些数据记录到一个MIB中,管理站以一定时间间隔询问各代理当前的状态或统计信息。缺点:所获得信息的实时性差,尤其是被管设备出现错误时。另外,轮询时间间隔不好控制,轮询间隔时间太长,则管理站无法及时了解到一些重大事件,如果轮询间隔时间太短,则容易造成网络拥塞。,16.2 简单网络管理协议,中断方式:当被管设备出现异常时,代理主动发送消息通知管理站,这种方式实时性很强。,16.3 SNMP报文格式,一个 SNMP 报文由三部分组成: 公共 SNMP 首部
7、 get/set首部或 trap 首部 变量绑定,图16-3 SNMPv1报文封装格式,1、公共SNMP首部 共有三个字段:(1)版本,值为版本号减 1。对于 SNMPv1应写入0。 (2)共同体(community),共同体是一个字符串,作为管理站进程和代理进程之间的明文口令。 (3)PDU 类型,即SNMP报文类型。其对应关系如表16-1所示。,版本,值为版本号减 1。对于 SNMPv1应写入0。,共同体(community),是一个字符串,作为管理站进程和代理进程之间的明文口令。,PDU 类型,即SNMP报文类型。,SNMPv1定义了5种SNMP报文:get-request:管理站进程请
8、求从代理进程处获取一个或多个参数值。get-next-request:管理站进程请求从代理进程处获取当前参数的下一个参数值。set-request:管理站进程请求设置代理进程的一个或多个参数值。get-response:返回的一个或多个参数值。它是前面3种操作的响应操作。由代理进程发出。trap:由代理进程在某些时刻主动发出,将代理进程中发生某些事情告诉管理站进程。,前3个操作由管理站进程向代理进程发出,后两个是代理进程发给管理站进程的。代理进程用UDP 161端口被动打开来接收 get 或 set 报文,管理进程端使用UDP 162端口被动打开来接收 trap 报文。,SNMPv3含8类PD
9、U:,get/set首部或trap首部,(1)get/set 首部请求标识,由管理站进程设置的一个整数值。代理进程在发送 get-response 报文时也要返回此标识,用于匹配请求与响应。 差错状态,由代理进程回答时填入。差错索引,当出现 noSuchName、badValue、或 readOnly 差错时,由代理进程在回答时填写此字段,它指明出错变量在变量列表中的偏移位置。,get/set首部或trap首部,(2)trap 首部企业,用于标识发出 trap 报文的网络设备,值为该设备的对象标识符。设备的对象标识符是在对象命名树上的 enterprises 结点 1.3.6.1.4.1 下面
10、的一棵子树上。 trap 类型,共分为7 种类型 :,当trap类型为 2、3 和 5 时,报文的变量绑定部分的第一个变量指出相应的接口。,特定代码,若trap类型为6,该字段才有效,用来指明代理自定义的事件,否则为0。 时间戳,指明从代理进程初始化到trap所报告的事件发生所经历的时间。,3、变量绑定:指明一个或多个变量的名称和对应的值。在 get 或get-next 请求报文中,变量的值为空。,16.4 管理信息结构(SMI),管理信息结构SMI定义了SNMP框架所用信息的组织、组成和标识。SMI定义了:数据类型 +对象命名规则 +数据编码规则 一. 数据类型:被管设备中的MIB由一系列被
11、管对象组成,被管对象的数据类型是用抽象语法记法1(abstract syntax notation one,ASN.1)描述的。ASN.1 类似于C 语言中的 struct 结构。SNMP为了简单性,仅用到ASN.1中的一个子集。SNMP中定义的数据类型包括通用类型和应用类型等。,1. 通用类型SNMP中常用的通用类型分为简单类型和构造类型。(1)简单类型INTEGER 整型类型,有些整型类型的变量会定义一个取值的范围,例如,UDP和TCP的端口号从0到65535。OCTER STRING 字节串类型,表示0个或多个8bit字节。,NULL 空类型,代表相关的变量没有值。例如,在get或get
12、-next请求操作中,变量的值就是NULL,因为这些值需要到代理那去获取。OBJECT IDENTIFIER 对象标识符类型,表示被管对象的标识,用点分十进制表示,反映了被管对象在全局命名树中的位置。(2)构造类型SEQUENCE 序列类型。一个SEQUENCE包括0个或多个元素,每一个元素是一个ASN.1数据类型。SEQUENCE OF 用于表格,每一个元素具有相同的0个或多个数据类型。,2. 应用类型ASN.1应用类型用于特定应用,常见的有:IpAddress:IpAddress是4字节长度的OCTER STRING,表示IP地址。每个字节代表IP地址的一个字段。PhysAddress:P
13、hysAddress是OCTER STRING类型,代表物理地址,例如以太网物理地址为6个字节的字节串。,Counter:Counter是非负的整数,可从0递增到232-1(4 294 976 295),达到最大值后归0。Gauge:Gauge是非负的整数,取值范围为从0到232-1 。达到最大值后锁定, 直到复位。TimeTicks:时间计数器,默认以0.01秒为单位递增,可以指定不同的递增幅度。,二. 数据编码规则SMI使用基本编码规则(BER),把SNMP管理信息编码后在网络上传输。BER把每一块数据都编码成三元组格式:标记、长度和值。,标记字段为一个字节,内含三个字段:类、格式和编号。
14、下表给出了不同数据类型所对应的标记。,长度字段:为一个或多个字节,定义数据值的长度。分两种情况:数据长度小于等于127和大于127的情况。,2,260,例1.整数14,例2.字符串”HI”,例3.对象标识符 1.3.6.1,例3.IP地址 131.21.14.8,三. 对象命名规则SMI要求每一个被管对象(如一个路由器、路由器中的一个变量、一个值,等等)具有唯一的名字。为了以全局方式给对象命名,SMI使用对象标识符,它是基于树结构的分层次的标识符。如图16-5所示。树结构以未命名的根开始。每个对象的对象标识符用点号隔开的整数序列定义,也可用点号隔开的文本序列来定义。例如,对于Internet这
15、个对象,其对象标识符为: iso(1) . Org(3) . Dod(6) . Internet(1),也可以用一种简单的格式(例如1.3.6.1)来表示。,图16-5 对象标识符示意图,16.5 管理信息库MIB,每个被管设备均维护一个MIB,MIB中包含被管设备中各种被管对象的信息。MIB-1创建于1988年,其表中包含114项。MIB-2于1990年提出。它包含171项共分为10组。除了扩展了原有的组外,又新增加了组。除了MIB-1和MIB-2外,某些公司还开发MIB以供自己使用。,MIB指明了网络元素所维持的变量(即能够被管理进程查询和设置信息)。下图给出了一个网络中所有可能的被管理对
16、象集合的数据结构。,顶级对象有三个,如果只讨论因特网中的对象,可只画出internet以下的子树,并在internet结点旁边标注上1.3.6.1即可。 在internet结点下面的第二个结点是mgmt(管理),标号是2。它下面是管理信息库mib-2,标号是1,因此MIB-2的对象标识符为1.3.6.1.2.1,或internet.2.1 。,MIB中的对象1.3.6.1.4.1,即enterprises(企业),其所属结点数已超过3000。例如IBM为1.3.6.1.4.1.2,Cisco为1.3.6.1.4.1.9,Novell为1.3.6.1.4.1.23等。世界上任何一个公司、学校只要
17、用电子邮件发往iana-mibisi.edu进行申请即可获得一个结点名。这样,各厂商就可以定义自己产品的被管对象标识符,使它能用SNMP进行管理。,最初的mib将其所管理的对象分为8个组,见下表。现在的mib-2中的对象分成11个组,增加了transmission, cmot和snmp。,16.6 MIB组,1. system组system组提供被管系统的总体信息,一共包含7个简单变量。表16-5列出了system组的变量名称、数据类型和含义。,表中sysDescr、sysContact、sysName和sysLocation用于配置管理,sysObjectID和sysUpTime用于故障管理
18、。,2. interface组interface组提供网络设备的物理层接口信息,由变量ifNumber和表ifTable组成。 ifNumber记录设备的接口数目。 ifTable表则包含了关于每个接口的信息。下表列出了ifTable包含的对象。,3. ip组 ip组提供了与IP协议有关的信息,表16-7显示了所有的简单变量。,表16-7 ip组的简单变量,4. tcp组tcp组包含了与TCP协议相关的信息,由一些变量和记录当前所以TCP连接的表格构成。每个TCP连接,对应于表格中的一条记录。表16-8表示tcp组中的简单变量。,表16-8 tcp组中的简单变量,5. udp组的结构。,图16
19、-7 UDP组的结构,在该组中,包含udpInDatagrams、udpNoPorts、udpInErrors、udpOutDatagrams 等4个简单变量和一个udpTable。,表16-9 简单变量的含义,表16-10描述了在udpTable中的两个简单变量。,报文,版本,共同体,PDU,请求ID,差错素引,变量绑定表,差错状态,变量名,值,变量名,值,1.3.6.1.2.1.7.1是udpInDatagram的对象标识符, 表示变量udpInDatagram,Quidview网络管理软件,Quidview网络管理软件,Quidview网络管理软件,Quidview网络管理软件,TCP表显示设备当前有哪些TCP连接,显示了这些连接发起者的IP地址、端口号及连接状态。,Quidview网络管理软件,将接口的某些重要参数定期采样后,将统计数据绘制成折线图,它可为网络管理员发现、定位和解决网络问题提供参考。,