网络管理&SNMP
网络管理
网络管理引论
现状、必要性、网络管理的预期目标~
- 机构网络的现状:
- 设备数量多:几百台
- 设备种类多:链路、交换机、路由器、主机、协议等
- 出现问题很正常
- 设备本身故障
- 配置问题
- 对资源(例如链路带宽)过度使用
- 网络管理的必要性
- ·协助网管定位和解决问题
- 提前发现问题,预警
- 希望网络管理达到的目标
- 监测网络(各部件)的运行状态
- 故障时异常时报警
- 允许管理人员千涉系统的运行(重启、配置参数等)
- 自动、远程(不需要去现场)!
- 网络管理的功能举例
检测主机或路由器的网卡故障(网卡发去的帧错误增加)
自动监测主机的活跃程度
监测流量:
- 某网段的流量增加,可以将服务器迁到另一个网段
- 某网段的流量超过阈值,在用户感知之前,升级带宽
路由表格的快速变化,配置问题,在网络发生问题前发现并修复
SLA监测:掉线率,延迟,吞吐量,达到下限报警
入侵检测:攻击行为,检测和报警
功能、定义
- 功能
- 性能管理:
- 性能(利用率、吞吐量)量化、测量、报告、分析和控制不同网络部件的性能
- 涉及到的部件:单独部件(网卡,协议实体),端到端的路径
- 故障管理:记录、检测和响应故障;
- 性能管理为长期监测设备性能
- 故障管理:突然发生的强度大的性能降低,强调对故障的响应
- 配置管理:跟踪设备的配置,管理设备配置信息
- 账户管理:定义、记录和控制用户和设备访问网络资源。管理用户、资源以及哪些用户可以使用哪些资源
- 限额使用、给予使用的收费,以及分配资源访问权限
- 安全管理:定义安全策略,控制对网络资源的使用
- 定义
网络管理包括了硬件、软件和人类元素的设置、综合和协调,以便监测、测试、轮询、配置、分析、评价和控制网络和网元资源,用合理的成本满足实时性、透行性和服务质量的要求
网管实质、体系结构、现有的网管协议
- 网络管理的实质
实质:远程(分布式) 监测(查询、定期上报,以及异常异步报告)和控制
实例:集团和分支机构
- 分支定期报告,产量等信息
- 分支主动报告异常
- 总部问分支:上报信息(指标)
- 总部发出指令,让分支动作
- 网络管理体系结构
管理实体:在NOC网络管理工作站上的应用程序(老板)
执行网络管理动作:收熟处理、分析、显示
被管设备:主机、路由器、交换机、打印机、modem(分支机构)
- 被管设备包括若干被管对象
硬件的一个部分(网卡)
某些硬件或软件的配置参数集合(RIP路由协议)
- 被管对象的信息收集在:本地管理信息库MIB中
- 被管设备中驻留网络管理代理agent,与管理实体通信,在被管设备上执行本地动作
- 网络管理协议
- 在管理实体和被管设备之间
- 允许实体查询设备的信息,报告异常事件
- 通过代理对设备间接地采取动作
- 目前已有的网络管理协议
- OSI:CMISE/CMIP
- 互联网:SNMP(SNMP仅仅是互联网网络管理体系中的一个组成部分)
互联网网络管理架构
- 网管需要解决的问题
- 需要监视和控制被管设备的什么信息?
- 被管设备需要管理和维护的信鼻:被管对象
- 例如:到目前为止接收到的错误分组个数,系统的描述信息等
- 需要命名标识和约定
- 相关被管对象汇聚成:模块,被管设备中的被管模块形成本地存储MIB(Management Information Base)
- 被控信息什么形式进行定义和传输?
- 数据定义语言:SMl(Structure of Managerment Intormation)
- 用整数,还是字符串还是什么表示这个被管对象
- MIB库中的所有对象和模块采用SMl(ASN.1)定义,像C语言那样
- BER:定义的被管对象和模块采用BER转换成标准码流进行数据交换
- 什么格式和时机进行管理信息的交换:SNMP协议
SNMP协议和MIB、SMI相互独立便于独立演化
SMI:管理信息结构
被管对象的三个属性:

命名(标识):0ID
- 一个唯一的标示
- MB库由一堆对象构成,每个对象需要一个唯一标示
- 需要一个标示方法,SMI的内容之一
- 如:用什么ID标识某个P上网卡收到的数据包个数
- 对象的命名:0ID和01D树
- 平面命名:重名(命名或者编号),不便于管理,也不携带对象之间的关系
所以我们转用层次命名:像域名空间(好用)
一个对象的标示符(对象ID)唯一确定了在MIB层次结构中的一个被管对象
层次:一棵树,根不命名,一层层分配命名(有对应标号)
0ID:一个对象可以用从树根到树叶的节点名字(或者数字)来标示
iso.org.dod.internet.mgmt.mib<=>1.3.6.1.2.1

MIB库就是一个按照层次组织起来的0ID(对象ID)集合
- 对象构成组
- (组+对象)构成模块
- 一些标准模块形成:MIB库
语法(定义):ASN.1
- 用来定义对象的数据类型(整数,字符串…),类似c语言可以自定义数据结构
- 如:数据包个数用什么类型的数据结构表示
- MIB库中的所有对象和模块采用SMl(ASN.1)定义,像C语言那样
- 对象的第2个属性:数据类型
- SMI采用ASN.1的一些基本内容,另外增加了一些定义
- Abstract Syntax Notation One(ASN.1)是一个数据定义语言,用于定义MIB中被管对象,可以使其在获得机器无关的表示一致性
- ASN.1采用变量和声明,类似于编程语言。而后面讲到的传输编码EBR像机器语言
- 提供供应商中立、跨平台、标准的语言,用于开发者来描述协议,系统和机器
- 像ASN.1的一致性语言允许不同类型的计算机能够更有效的分享信息
- ASN.1介绍
ASN.1是SNMP用于创建实际MIB对象的数据表示格式
ASN.1在SNMP之前很早就存在
MIB的定义充分利用了ASN.1的优势
ASN.1是0SI的标准:IS08824
SNMP采用了ASN.1定义了交换报文的格式以及管理的对象
这意味着这种数据定义语言,不仅可以定义对象,也可以定义报文交换格式
注:SNMP报文和被管对象(模块)都采用ASN.I定义;BER进行编码
- SMI中的基本数据类型
3种在ASN.1中定义的简单数据类型+4种SM|中定义的数据类型
- Integers -有符号整数,范围:-2,147,483,648 to 2,147,483,647.
- Octet strings -字符串(每位字符编码在0到65535)
- Object IDs -These values are from the set of all object identifiers allocated according to the rules specified inASN.1.实际上就是之前将的OID,OID也是应该数据结构
- Network addresses -网络地址代表一个特性协议族的地址.SNMPv1支持32为1P地址
- Counters -计数器值非负,可以增加一直到一个最大值,再增加到0. SNMPv1中,指定为32位计数器
- Gauges -Gauges非负,可以增加或者减少,但是保持一个它曾经到达过的最大值
- Time ticks -time tick代表从某个时间开始多少时间,以10ms为单位.
- 被管理对象的类型(对象!!不同于基本数据类型)
简单类型:标量对象(注意这是一个对象)
- 定义一个单个对象实例(类似于:C中的变量)
- SMI的基本数据类型
- Integer(4 bytes),来自ANS.1
- String(var iable),来自ANS.1
- Objectldentifier (variable)来自ANS.1
- IPAddress(4 bytes),SMI增加
- Counter(4 bytes),SMl增加
- Gauge(4 bytes),SMl增加
- TimeTicks(4 bytes),SMl增加
结构类型:
- 简单类型和某些结构类型的组合
- SMI定义了2种类型:sequence和sequence of
- Sequence:1个sequence:数据类型是一些简单数据类型的组合(c.f.C中的结构体)(不同类型组合成结构体)
- Sequence of:1个sequence of数据类型是简单类型的序列(c.f.C中的数组)(相同类型组合成数组)
传输编码:BER
SMI采用BER(Basic Encoding Rules)将SMI定义的被管对象值编码成传输的位串。定义编码从而在网络上进行传输的方法,形成什么样的码流以至于机器无关,语义相同
使得不同机器获得语义上的一致性
- 仅仅内存拷贝解决不了通信问题
- 大端小端问题
每个被传输的数据(对象值和SNMP字段)都有:TLV
- Type(1byte) - 3子字段
class (2 bit) + format (1 bit) + number (5 bit)
- Length:1个或多个字节
- Value:根据BER定义的规则编码数据的值


SNMP:互联网网络管理协议
网络管理协议
网络管理,是指网络管理员通过网络管理程序对网络上的资源进行集中化管理的操作。网络管理系统中最重要的部分就是网络管理协议,它定义了网络管理器与被管代理间的通信方法。
在网络管理协议产生以前的相当长的时间里,管理者要学习各种从不同网络设备获取数据的方法。因为各个生产厂家使用专用的方法收集数据,相同功能的设备,不同的生产厂商提供的数据采集方法可能大相径庭。在这种情况下,制定一个行业标准的紧迫性越来越明显。
SNMP
简单网络管理协议(SNMP)已经成为事实上的标准网络管理协议。由于SNMP首先是IETF的研究小组为了解决在Internet上的路由器管理问题提出的,因此许多人认为SNMP在IP上运行的原因是Internet运行的是TCP/IP协议,但事实上,SNMP是被设计成与协议无关的,所以它可以在IP、IPX、AppleTalk、OSI以及其他用到的传输协议上使用。
SNMP是由一系列协议组和规范组成的,它们提供了一种从网络上的设备中收集网络管理信息的方法。
从被管理设备中收集数据有两种方法:一种是轮询(polling-only)方法,另一种是基于中断(interrupt-based)的方法。
轮询(polling-only)
SNMP使用嵌入到网络设施中的代理软件来收集网络的通信信息和有关网络设备的统计数据。代理软件不断地收集统计数据,并把这些数据记录到一个管理信息库(MIB)中。网管员通过向代理的MIB发出查询信号可以得到这些信息,这个过程就叫轮询(polling)。为了能全面地查看一天的通信流量和变化率,管理人员必须不断地轮询SNMP代理,每分钟就轮询一次。这样,网管员可以使用SNMP来评价网络的运行状况,并揭示出通信的趋势,如哪一个网段接近通信负载的最大能力或正使通信出错等。先进的SNMP网管站甚至可以通过编程来自动关闭端口或采取其它矫正措施来处理历史的网络数据。
如果只是用轮询的方法,那么网络管理工作站总是在控制之下。但这种方法的缺陷在于信息的实时性,尤其是错误的实时性。多久轮询一次、轮询时选择什么样的设备顺序都会对轮询的结果产生影响。轮询的间隔太小,会产生太多不必要的通信量;间隔太大,而且轮询时顺序不对,那么关于一些大的灾难性事件的通知又会太慢,就违背了积极主动的网络管理目的。
中断(interrupt-based)
与之相比,当有异常事件发生时,基于中断的方法可以立即通知网络管理工作站,实时性很强。但这种方法也有缺陷。产生错误或自陷需要系统资源。如果自陷必须转发大量的信息,那么被管理设备可能不得不消耗更多的事件和系统资源来产生自陷,这将会影响到网络管理的主要功能。
结果,以上两种方法的结合:面向自陷的轮询方法(trap-directed polling)可能是执行网络管理最有效的方法了。一般来说,网络管理工作站轮询在被管理设备中的代理来收集数据,并且在控制台上用数字或图形的表示方法来显示这些数据。被管理设备中的代理可以在任何时候向网络管理工作站报告错误情况,而并不需要等到管理工作站为获得这些错误情况而轮询它的时候才会报告。
结构
SNMP的体系结构分为SNMP管理者(SNMP Manager)和SNMP代理者(SNMP Agent),每一个支持SNMP的网络设备中都包含一个代理,此代理随时纪录网络设备的各种情况,网络管理程序再通过SNMP通信协议查询或修改代理所纪录的信息。
SNMP报文类型
SNMP工作方式
两者之间是松耦合的关系,使用UDP协议进行通讯,默认端口是UDP161(也会用到162端口接收trap数据)
SNMP管理站通过向SNMP代理发送请求命令(GetRequest, GetNextRequest, GetBulkRequest或InformRequest),当SNMP代理收到命令后返回响应(Response)
SNMP管理站向SNMP代理发送SetRequest,代理设备执行设置操作。
SNMP代理发生特定重要状况改变时主动向SNMP管理站发送Trap消息。
SNMP报文格式
![]()
![]()
注意:SNMP协议没有给出每个字段的长度,因为使用了TLV方式~,所以不需要给出。TLV自解释
SNMP编码
实例

在第三节的第26分钟解释,豁然开朗~~!

安全性
在SNMPv3中增加了以下安全特性:
- 报文完整性:保证报文在传输中不被修改
- 可认证性:能够判断报文是不是一个有效的源发送的
- 加密:保证私密性,即使被截获无法得知发送的到底是什么
- 基于视图的访肉控制:
- SNMP实体维护着不同用户的访问权限,策略的数据库
- 是否可访问的LCD数据库可以作为被管对象访问


















