互联网应用笔记(十)
10 SNMP
一、网络管理简介
1. 什么是网络管理
- 对不同人来说是不一样的:
- 使用协议分析器/小的工具去监视网络活动
- eg.ping检查;wireshark抓包分析、监控网络;都算在网络管理范围内
- 基于分布式数据库,放网络管理相关数据,通过网络管理自动对网络中各个网络设备进行轮询autopolling,产生网络拓扑变化和网络交通的实时情况的展示(状态、行为的视图)
- eg. 监视大的网络情况,搭建专有分布式数据库,建立轮询功能
- 使用协议分析器/小的工具去监视网络活动
- 定义
- 网络管理是一种可以使用不同工具、应用和设备来帮助管理人员对网络进行管理和维护
2. 网络管理的目的
- 目的:辅助网络管理人员对网络状况进行管理,保证数据能够以最大效率、对用户透明地穿过网络。
- 主要作用:能够对网络中出现的干扰disturbance进行监视和控制
- 希望:效率高、操作透明(用户无感知)保证网络正常运行
3. ISO定义网络管理功能 - FCAPS
由ISO网络管理论坛定义
FCAPS【为以下的缩写】:故障管理、配置管理、计费管理、性能管理、安全管理
3.1 故障管理 Fault Management
用来定位问题
解决步骤:
- 发现问题
- 隔离问题
- 解决问题
3.2 配置管理 Configuration Management
某些网络设备的配置控制着数据网络的行为
配置管理是发现和设置(配置)这些关键设备的过程
- 网络设备的配置控制着数据网络的行为
- 配置管理是找到核心设备的配置信息以及对其进行配置
3.3 计费管理 Accounting management
审计和计费,统计分析
- 对所有网络用户个体行为【tracking individual‘s】、网络资源管理行为进行跟踪,基于跟踪过程进行保证,保证每位用户得到足够的资源
- 包括对用户的接纳和认证,根据用户对网络的使用策略保证他们能够接入、使用一定的网络资源
3.4 性能管理 Performance management
- 包括对网络硬件、软件和介质性能的测量
- 衡量活动:吞吐率、利用率、错误率、响应时间
3.5 安全管理 Secrity management
- 控制用户对网络资源的访问,区分可信与否
- 提供对用户访问接入行为记录的方法
- 基于审计的记录判断有无安全事件发生,有的话对应报警
3.6 Functional Areas之间的关系
- 配置管理C是中间的,与其他四个管理都有关系,可以为其他网络功能提供管理细节信息,同时其他四个相关功能也要将相关情况反馈给C,为了将来更好的对网络进行配置
- F——C:实际状态 actual status
- P——C:一些网络性能参数的信息 Performance Indicator Status
- 相互之间也有信息的交互,共同完成网络管理的功能
5. 网络管理协议
- 管理实体和被管理实体之间交互的协议
- 两种:SNMP(目前使用更多)和CMIS/CMIP,分别来自于不同的网络标准化组织IETF和ISO
- 一开始想在CMIS和CMIP上扩展,迟迟没有出台
- 于是IETF以SG(gateway)MP为基础,扩展定义了SNMP
二、SNMP简介
1. 什么是SNMP
Simple Network Management Protocol:提供一种监视和管理异构计算机网络的方法
应用层
TCP/IP协议套件的一部分
基于UDP
主要使用的端口:
- 161: SNMP GET/SET messages
- 162: SNMP Trap messages
2. SNMP与网络管理
- SNMP实现了网络管理的F-C-P功能【F: Fault】【C: Configuration】【P: Performance】
- SNMP不能覆盖网络管理的所有功能领域
- 网络管理是一项系统的工作,SNMP是其中的一个重要工具和协议
4. SNMP模型
一个被管理网络的SNMP模型由四个部分组成:
Manage Nodes (==Agent==) 被管
Management Stations (==NMS==) 管理
Management Information (==MIB==)
Management Protocol (==SNMP==)
蓝色线是网络管理协议
5. SNMP架构
GetRequest
GetResponse & Trap
manager向agent发消息
三、SNMP网络管理框架
- MIB【管理信息库】 网络管理数据的信息分布式存储
- SMI【管理信息结构】 使用定义语言针对数据库中对象MIB object进行描述
- SNMP协议 manager和被管对象之间通信协议
SNMPv1主要包括4个RFC,分别对SMIv1、MIB、MIB2和SNMPv1本身进行了定义
1. SMI - Structure of Management Information
SMI定义了描述管理信息的规则
管理数据的语法、语义、定义良好、无歧义
使用了特殊定义的语言ASN.1实现对被管信息明确的描述,不会产生歧义和不连续性的问题
只是用了ASN.1的一个子集
1.1 什么是ASN.1
- 定义数据结构的标准化语言,也是国际性标准
- 定义了数据在通信系统中如何传输,相应的传输规则
- 广泛应用于通信系统中(邮件系统等)
- 语法简单例子,age 0到120的整型;user类似于编程语言中结构体,有序集合,包括属性name age address
1.2 SMI 语法
一般都是ASN.1
数据类型【整型、二进制数据、标识符、空、有序集合等】
- Interger
- Octet String
- Object Identifier
- NULL
- Sequence
SMI-specific数据类型
- IP Address:描述32位IP地址的数据类型
- counter计数器
- timeticks 定义定时器,涉及定时器使用可以用
- PhysAddress 定义Mac地址
MIBs【Management Information Base】是使用ASN.1规范语言编写,必须遵守SMI规范中指定的语法
2. MIB - Management Information Base
MIB是按层次结构组织的信息集合
- 管理信息库:由多个managed object组成,每个managed object都有唯一的标识符OID
- MIB完成了不同managed object的组织
- 被管对象:
- 标量对象(指定单一对象)【Scalar Object】
- 组对象(多个相关对象组合在一起,以列表的形式进行展示)【Tabular Objects】
- 所有的MIB object都是用SMI(语法)来定义的
2.1 MIB-ISO Object Identifier Tree
- 为了更好的管理MIB中的object,使用了树形结构,将MIB中被管理对象组织成树形架构identify tree,以文字化的结构组织起来,形成MIB
- 最上方root,其他节点label+十进制的描述位置的标识值。每个节点的object identifier从上到下连起来到本身,将所经历的节点值串起来,每个节点的object identifier都是唯一标识
- Internet节点往下就是所有跟互联网相关的object
2.2 SIM MIB示例
- 向下分支产生
udpInDatagrams
表示收到udpDatagram个数,既有scalar object(可以用单一数字描述清楚),也有tabular object 比如udpTable(以列表形式存在)
2.3 MIB 命名
每个object都有唯一OID,十进制值表示,也可以加上label串起来一起传递,更容易读出的命名方式
OID使用过程:当manager想要得到具体的对象的值的时候,会发送包含该对象OID的getRequest消息。agent收到了request之后会去查找MIB,获得OID对应的值。找到了返回response,将想要的值加上;没找到返回错误信息
2.4 MIB 定义
RFC1212中对MIB定义分为两部分:一部分是文本描述部分,将object分成很多组,还有MIB module 对应具体模块,包含很多object,使用ASN.1的object-type具体类型,对object进行描述,用SMI定义的
例子 描述UDP Module
类型;权限;状态;描述(给用户读);标识符(此处表示在udp节点下,自己的值是1)
UDP module里面的object列表:
3. SNMP 协议
3.1 Traps/Polling
SNMP两种工作模式 traps/polling
==SNMP的两种工作模式呈现互补关系==【两个工作模式是共同存在的】
- polling mode:管理站轮询——NMS不断向被管对象agent发送request,查询管理信息,收到查询MIB,将数据发送过来
- trap mode:不是基于request和response进行查询,而是主动上报,用于某些特定的情况下
- polling
- manager是client端,agent是server端,agent在161端口监听
- NMS周期性轮询网络设备进行查询
- 好处是NMS可以获得全网整体性的视图 big picture,好控制
- 缺点:造成较大delay,遇到具体时间会进行很多查询工作,轮询会造成大的时延
- traps
- 异常事件的提醒:异常事件发生,告诉NMS错误类型、网络设备名字、如果下一步查询的话要查询哪个object
- 为了效率,message通常比较短,比较简单
- NMS收到后进一步与agent进行交互以获得更多信息
- NMS作为server端,agent作为client端,NMS会一直监听TRAP信息(端口162)
3.2 SNMP 命令
- getRequest 管理实体发给ME以获取相应的数据,指定OID instance 的值,获得instance信息
- getNextRequest,对MIB数据实现遍历。指定OID,反馈列表中的下一个object instance的值
- getBulkRequest 对第一条命令的改进。NMS发给agent 获取一块/批量数据,效率得到提升
- informRequest 定义了两个manager之间的通信,相当于两个manager之间MIB信息的交换,提高了通信能力
- setResponse 设置MIB中的value
- Trap 当agent中有异常发生的时候,主动上报
getRequest
getRequest携带OID agent针对回复getresponse 回复
getNextRequest
- 实现了强大的功能:做一个OID子树的遍历(traverse)
- OID树形结构 指定起点就可以按照某种顺序进行访问
- 按虚线顺序访问
- 字典序lexicographic order、深度优先遍历(√)、广度优先遍历
- 每一个分支遍历完再去查找下一个分支
GetNext使用例子
- 树形结构,起点T.E,agent反馈T.E的下一个节点object T.E.1.1 的值,再然后下一个节点是T.E.1.2
- 其实是对指定子树的遍历
- 直到返回noSuchName表示遍历结束
工具 snmpwalk:给出具体起点,完成某部分的遍历,会返回所以他下面出现的object。查询直到MIB没有更多剩余变量,就退出来了
命令组合使用例子
抓包查看通信过程 snmp161——polling状态
3.3 SNMPv3 安全和管理
- 加密
- 验证
- 反指重放(playback)攻击(模拟真实节点通信)
- 访问控制
六、总结
思考题
缩写