930 likes | 1.39k Views
SNMP 简单网络管理协议. 本节内容提要. SNMP 的发展史 SNMP 的基础概念 互动演示和练习. SNMP 的 发 展 史. 20 世纪 70 年代, ICMP 大行其道. 1979 年, ISO 开始了网络管理标准化工作, 诞生了 OSI 网管标准 CMIS & CMIP. 1987 年 11 月发布了简单网关监视协议( SGMP ), 用以提供一种直接监控网关的方法, 成为提供专用网络管理工具的起点. SNMP 的 发 展 史. 接上页.
E N D
本节内容提要 • SNMP 的发展史 • SNMP 的基础概念 • 互动演示和练习
SNMP 的 发 展 史 20 世纪 70 年代,ICMP 大行其道 1979 年,ISO 开始了网络管理标准化工作, 诞生了OSI 网管标准 CMIS & CMIP 1987 年 11 月发布了简单网关监视协议(SGMP), 用以提供一种直接监控网关的方法, 成为提供专用网络管理工具的起点
SNMP 的 发 展 史 接上页 IETF 为应对 Internet 的几何增长,将 CMIP 修改后取名为 CMOT 然而,CMOT 却迟迟未出台 …… 1988 年,IAB 决定将在已有 SGMP 的基础上,开发SNMP 作为临时的解决方案,而把 CMOT 作为远期解决方案的策略 1990 年 5 月,IETF 发布了现在被称为 SNMPv1 的系列协议 (完全标准)
SNMP 的 发 展 史 接上页 为了强化这一策略,IAB 要求 SNMP 和 CMOT 使用相同的被管 对象数据库,但人们很快发现要这两个协议在对象级兼容是不现 实的,因此 IAB 最终放松了公共 SMI/MIB 的条件,SNMP 摆脱了 过渡者的角色及与CMOT 相兼容的束缚并取得了迅速的发展 1991 年 11 月发布的远程网络监视协议(RMON) 为网络管理者提供了监控整个子网而不仅是单独设备的能力
SNMP 的 发 展 史 接上页 1992 年 7 月,四名 SNMP 的关键人物提出了称为 SNMPsec 的安全 SNMP 版本,与 SNMPv1 不兼容,并最终成为 SNMPv2 的基础 1993年,IETF发布了SNMPv2系列(建议标准) 1996年IETF发布了一组新的RFC,在这组新的文档中,取消了SNMPv2的安全特性,消息格式也重新采用SNMPv1的基于 “共同体(community)” 概念的格式(草案标准)
SNMP 的 发 展 史 接上页 1999年4月IETF SNMPv3工作组提出了 RFC2571~RFC2576,形成了SNMPv3的建议
SNMPv1 管理信息的定义 ( MIB 文档 ) RFC 2578-80 Format RFC 1155 Format RFC 1212/1215 Format RFC 1442-4 Format RFC 1902-4 Format SNMP 协议版本概览图 Simple-Based Management SNMPv3 Party-based SNMPv2 SNMPv2* Common SNMPv2 SNMPv2c SNMPv2u
基于 SNMP 的管理框架 以 SNMP 协议为基础的一个完整的基础框架。 1、一种数据定义语言 • The Internet-standard Structure of Management Information (SMI) 2、管理信息的定义 • [Internet-standard] Management Information Base (MIB) 3、协议定义 • Simple Network Management Protocol
革新中的 SNMP 基于 SNMP 的 Management Framework 一直在历经技术革新,许多有价值的革新已被标准化、并得以实施和部署。 IETF 目前在从事的一些 SNMP 相关的工作内容: • 基于 SNMP 的配置管理(Policy MIB 模块) • EOS 工作组 (Evolution of SNMP) • SMIng 工作组(Structure of Management Information) • 分布式管理工作组(DISMAN) • MIB 定义
SMI 的革新 • 第一代 (1988-1991): RFC 1155 • 第二代 (1991-1993): RFC 1212 和 1215 • 第三代 (1993~至今): SMIv2 RFCs 2578-2580 • 第四代: SMIng: 正在进行时……
MIB 的革新 • 从 1988 年首次定义至今,一直在经历改版 • 1988 年,MIB-I 诞生:所有管理系统的基础 • 90 年代早期,MIB-2 的出现:MIB-I 的超集 • 91 年 3 月,MIB-2 进入完全标准状态,MIB-I 成为历史 • 随着 Internet-Standard Management Framework 上应用的扩展,MIB 的范围也在拓展(传统网管、系统管理、应用管理、服务管理、遗留设备的管理)
MIB 文档 – 网络管理 • ADSL RFC 2662 • ATM Multiple • AppleTalk RFC 1742 • BGPv4 RFC 1657 • Bridge RFC 1493 • Character Stream RFC 1658 • CLNS RFC 1238 • DECnet Phase IV RFC 1559 • DOCSIS Cable Modem Multiple
MIB 文档 – 网络管理(续) DS0, DS1/E1, DS3/E3 Interfaces Multiple Entity RFC 2737 FDDI Multiple Frame Relay Multiple IEEE 802.3 Multiple IEEE 802.5 Multiple IEEE 802.12 Multiple Integrated Services Multiple ISDN Multiple
MIB 文档 – 网络管理(续) MIB-2 RFC 1213 Modem RFC 1696 PPP Multiple RMON Multiple Routing Multiple RS-232-Like RFC 1659 SNA technology Multiple Sonet/SDH RFC 1595 X.25 technology Multiple
MIB 文档 – 服务管理 Frame Relay Service RFC 1604 Meter RFC 2720 SMDS SIP RFC 1694
MIB 文档 – 系统和应用管理 Application RFC 2564 Diffie-Helman USM Key Management RFC 2786 DISMAN Scheduling RFC 2591 DISMAN Scripting RFC 2592 Domain Name System Multiple Host Resources RFC 2790 Identification RFC 1414 Mail Monitoring RFC 2249 Network Services Monitoring RFC 2788
MIB 文档 – 系统和应用管理(续) Parallel Printer RFC 1660 Printer RFC 1759 Radius Multiple Relational Database Server RFC 1697 System Application RFC 2287 TN3270 Multiple UPS RFC 1628 WWW Server RFC 2594 X.500 Directory Services Monitoring RFC 2605
SNMP 协议的革新 协议定义 • 独立于 MIB • SNMP 协议 • 协议操作 • 传输映射 • 安全和管理 • 在 RFC 1157 中得以首次定义(SNMPv1) • 在 SNMPv2 时开始出现许多分离的文档 • 在 SNMPv3 中实现了安全和管理
本节内容提要 • SNMP 的发展史 • SNMP 的基础概念 • 互动演示和练习
SNMP 的基本概念 SNMPv1
SNMPv1 架构模型 Network Elements MANAGER AGENT SNMP 消息 MIB Any 161 162 Any UDP UDP IP IP LINK LINK
SNMP 涉及的四个概念 • Manager • Agent • 网络管理协议 • 管理信息库 MIB
SNMP 涉及的四个概念 • 管理站(Manager) • 网络管理应用软件 • 提供一个网管人员监视和控制网络的接口 • Agent • 网元设备中应该装备代理软件,以便接受管理站的管理 • 响应来自于 Manager 的“获取信息”的请求 • 响应来自于 Manager 的“执行动作”的请求 • 可以主动提交重要信息给 Manager
SNMP 涉及的四个概念 • 网络管理协议 • Manager 与 Agents 之间的通信协议 • 提供了一种用以在 Manager 和 Agents 之间交换信息的标准方式 • 管理信息库 MIB • Managed Objects 的一个结构化的集合,层次型组织 • Managed Objects 就是需要管理的资源,本质上,每个MO就是一个数据变量 • 所谓 Monitor,就是读取 MIB 中 MO 的值 • 所谓 Control,就是修改 MIB 中 MO 的值
Object Identifier(OID) • 一种特定的对象类型具有唯一的全局ID • 一个 OID 由一串整数组成,它指明了该对象在全局对象 ID 树中所处的位置 root 0 2 1 iso ccitt joint-iso-ccitt 3 0 2 1 1.3.6.1.2.1 org reg authority std member body 6 dod 1 1.3.6.1.2.1.2 1.3.6.1.4.1 internet 1 4 3 2 mgmt directory private experimental 1 1 MIB II MIB II enterprises enterprises interface system 1 interface 2 at 3 Trans. 10 SNMP 11 IP 4 ICMP 5 TCP 6 UDP 7 EGP 8
私有 MIB 的注册 • 如果企业需要在全局 MIB 树中注册他们的私有 MIB 扩 展部分,就需要联系 Internet Assigned Numbers Authority(IANA) • 欲知当前已经分配的企业子树,请访问 • ftp://ftp.isi.edu/in-notes/iana/assignments/enterprise-numbers
SNMPv1 认证 • Community • Managers 和 Agents 之间的关系 • Community Name • 用于验证 SNMP 消息 • SNMP “密码” • 缺省的只读 community name 是 public • 认证失败 • 代理将向 Manager 发送 “认证失败 Trap”
Get 请求获得一个或多个变量的值 可能遇到的错误: • noSuchName对象不存在 / 并非叶对象(leaf object) • tooBig待返结果无法承载于response PDU内 • genErr所有其它原因
Get 示例 get(1.1.0) response(1.1.0 => 130.89.16.2) get(1.2.0) response(error-status = noSuchName) get(1.1) response(error-status = noSuchName) get(1.1.0; 1.2.2.0) response(1.1.0 => 130.89.16.2; 1.2.2.0 => 123456) get(1.3.1.3.5.1) response(1.3.1.3.5.1 => 2) get(1.3.1.1.5.1) response(1.3.1.1.5.1 => 2) get(1.3.1.1.5.1, 1.3.1.2.5.1, 1.3.1.3.5.1) response(1.3.1.1.5.1 => 2, 1.3.1.2.5.1 => 1, 1.3.1.3.5.1 => 2)
Set 给一个已存在的对象实例赋值(包括创建新的实例,比如在 table 中增加 rows) Set 请求只能作用于最小的单元 可能遇到的错误: • noSuchName、badValue、tooBig、genErr
Set 示例 set(1.2.1.0 => my-printer) response(noError; 1.2.1.0 => my-printer) set(1.2.1.0 => my-printer, 1.2.3.0 => 0) response(error-status = noSuchName; error-index = 2)
Get-Next 获取下一个 MIB 单元的实例名和值; 发现 MIB 的结构 取回 table 中的 rows 可能遇到的错误: • noSuchName(=End of MIB) • tooBig • genErr
Get-Next示例 getNext(1.1.0) response(1.2.1.0 => printer-1) getNext(1.2.1.0) response(1.2.2.0 => 123456) getNext(1) response(1.1.0 => 130.89.16.2) getNext(1.3.1.3.5.1) response(1.3.1.3.5.2 => 3) getNext(1.3.1.1; 1.3.1.2; 1.3.1.3) response(1.3.1.1.2.1 => 2; 1.3.1.2.2.1 => 1; 1.3.1.3.2.1 => 2) getNext(1.3.1.1.2.1; 1.3.1.2.2.1; 1.3.1.3.2.1) response(1.3.1.1.3.1 => 3; 1.3.1.2.3.1 => 1; 1.3.1.3.3.1 => 3)
访 问 顺 序 MIB 可以看做是一个有序列表
Trap 以信号的形式通知一个事件 Trap 的接收结果无需被确认,因此是“ 不可靠的 ” 所以仍然需要 “轮询” 机制 可以对 Agents 进行配置,以实现: • 不发送 Traps • Traps 只发送给指定的 Managers
已定义的 Traps • ColdStart • WarmStart • LinkDown • LinkUp • Authentication Failure • EGPNeighbourLoss • EnterpriseSpecificTrap
ENTERPRISE AGENT-ADDRESS GENERIC-TRAP SPECIFIC-TRAP TIME-STAMP VARIABLE-BINDINGS Trap – PDU 的格式 Trap-PDU ::= [4] IMPLICIT SEQUENCE { enterprise OBJECT IDENTIFIER, agent-addr NetworkAddress, generic-trap INTEGER { coldStart(0), warmStart(1), linkDown(2), linkUp(3), authenticationFailure(4), egpNeighborLoss(5), enterpriseSpecific(6)}, specific-trap INTEGER, time-stamp TimeTicks, variable-bindings VarBindList } 生成 Trap 的对象的类型 生成 Trap 的对象地址 一般 Trap 类型 企业特定的 Trap 该网络实体最近一次初始化与trap产生点之间的时间 真正感兴趣的信息 generic-trap time-stamp specific-trap PDU type agent-addr enterprise variable-bindings
Proxy 管理 传统上,该术语用于指代执行以下功能的设备: • 在不同的传输域之间进行数据转换 • 在不同的 SNMP 版本之间进行转换 • 在 SNMP 和其它管理协议之间进行转换 • 将低端管理信息聚合成高端信息 • … … 如今,该术语用于表示那些能转发 SNMP 消息,而不进行消息解析的设备
SNMP 消息编码 MIBs 和消息格式的描述是基于ASN.1 语法的。 一条 Abstract 语法和一条 Transfer 语法的间的映射是通过 BER(Basic Encoding Rules)来定义的
Abstract Syntax Notation One ASN.1是一种描述网络消息的标准方法。 ASN.1由两部分组成: • 语法规则,描述消息的内容(以数据类型来表示)及其顺序或结构 • 将每个数据项编码到一条消息中去所采用的的实际方法 ASN.1由两个标准定义(适用于 OSI 框架中的应用): • ISO 8824/ITU X.208(规定了语法) • ISO 8825/ITU X.209(规定了 ASN.1 的 BER)
用 ASN.1 定义消息 - 示例 Report ::= SEQUENCE { author OCTET STRING, title OCTET STRING, body OCTET STRING, biblio Bibliography } 其中: Bibliography ::= SEQUENCE { author OCTET STRING title OCTET STRING publisher OCTET STRING year OCTET STRING }
用 ASN.1 定义消息 - 示例 • 其它可指定的数据类型包括: • INTEGER • BOOLEAN • REAL • BIT STRING • ENUMERATED 是枚举类型的数据 • 数据项也可指定为 OPTIONAL (不一定需要提供数值)
Basic Encoding Rules 每个 ASN.1 的值被编码为一个 8 位的字串 这种编码规则定义了一个 TAG、LENGTH、VALUE 序列