共计 6819 个字符,预计需要花费 18 分钟才能阅读完成。
简介
简略网络管理协定 SNMP(Simple Network Management Protocol)用于网络设备的治理。网络设备品种多种多样,不同设施厂商提供的治理接口(如命令行接口)各不相同,这使得网络管理变得愈发简单。为解决这一问题,SNMP 应运而生。SNMP 作为广泛应用于 TCP/IP 网络的网络管理标准协议,提供了对立的接口,从而实现了不同品种和厂商的网络设备之间的对立治理。
SNMP 协定分为三个版本:SNMPv1、SNMPv2c 和 SNMPv3。
- SNMPv1 是 SNMP 协定的最后版本,提供最小限度的网络管理性能。SNMPv1 基于个人名认证,安全性较差,且返回报文的错误码也较少。
- SNMPv2c 也采纳个人名认证。在 SNMPv1 版本的根底上引入了 GetBulk 和 Inform 操作,反对更多的规范错误码信息,反对更多的数据类型(Counter64、Counter32)。
- SNMPv3 次要在安全性方面进行了加强,提供了基于 USM(User Security Module)的认证加密和基于 VACM(View-based Access Control Model)的访问控制。SNMPv3 版本反对的操作和 SNMPv2c 版本反对的操作一样。
SNMP 零碎组成
SNMP 零碎由网络管理系统 NMS(Network Management System)、SNMP Agent、被管对象 Management object 和治理信息库 MIB(Management Information Base)四局部组成。NMS 作为整个网络的网管核心,对设施进行治理。
每个被治理设施中都蕴含驻留在设施上的 SNMP Agent 过程、MIB 和多个被管对象。NMS 通过与运行在被治理设施上的 SNMP Agent 交互,由 SNMP Agent 通过对设施端的 MIB 进行操作,实现 NMS 的指令。
NMS
NMS 是网络中的管理者,是一个采纳 SNMP 协定对网络设备进行治理 / 监督的零碎,运行在 NMS 服务器上。
- NMS 能够向设施上的 SNMP Agent 发出请求,查问或批改一个或多个具体的参数值。
- NMS 能够接管设施上的 SNMP Agent 被动发送的 SNMP Traps,以获知被治理设施以后的状态。
SNMP Agent
SNMP Agent 是被治理设施中的一个代理过程,用于保护被治理设施的信息数据并响应来自 NMS 的申请,把治理数据汇报给发送申请的 NMS。
- SNMP Agent 接管到 NMS 的申请信息后,通过 MIB 表实现相应指令后,并把操作后果响应给 NMS。
- 当设施产生故障或者其它事件时,设施会通过 SNMP Agent 被动发送 SNMP Traps 给 NMS,向 NMS 报告设施以后的状态变动。
Managed Object
Managed object 指被治理对象。每一个设施可能蕴含多个被治理对象,被治理对象能够是设施中的某个硬件,也能够是在硬件、软件(如路由抉择协定)上配置的参数汇合。
MIB
MIB 是一个数据库,指明了被治理设施所保护的变量。MIB 在数据库中定义了被治理设施的一系列属性:对象的名称、对象的状态、对象的拜访权限和对象的数据类型等。MIB 也能够看作是 NMS 和 SNMP Agent 之间的一个接口,通过这个接口,NMS 对被治理设施所保护的变量进行查问 / 设置操作。
MIB 是以树状构造进行存储的,如图 1 - 2 所示。树的节点示意被治理对象,它能够用从根开始的一条门路惟一地辨认,这条门路就称为 OID,如 system 的 OID 为 1.3.6.1.2.1.1,interfaces 的 OID 为 1.3.6.1.2.1.2。
子树能够用该子树根节点的 OID 来标识。如以 private 为根节点的子树的 OID 为 private 的 OID——{1.3.6.1.4}。
用户能够配置 MIB 视图来限度 NMS 可能拜访的 MIB 对象。MIB 视图是 MIB 的子集合,用户能够将 MIB 视图内的对象配置为 exclude 或 include。exclude 示意以后视图不蕴含该 MIB 子树的所有节点;include 示意以后视图蕴含该 MIB 子树的所有节点。
SNMP 查问
SNMP 查问是指 NMS 被动向 SNMP Agent 发送查问申请,如图 1 - 3 所示。SNMP Agent 接管到查问申请后,通过 MIB 表实现相应指令,并将后果反馈给 NMS。
SNMP 查问操作有三种:Get、GetNext 和 GetBulk。SNMPv1 版本不反对 GetBulk 操作。
- Get 操作:NMS 应用该操作从 SNMP Agent 中获取一个或多个参数值。
- GetNext 操作:NMS 应用该操作从 SNMP Agent 中获取一个或多个参数的下一个参数值。
- GetBulk 操作:基于 GetNext 实现,相当于间断执行屡次 GetNext 操作。在 NMS 上能够设置被治理设施在一次 GetBulk 报文交互时,执行 GetNext 操作的次数。
SNMP 查问操作的报文
SNMPv1 和 SNMPv2c 查问报文格式如图 1 - 4 所示。SNMPv1 和 SNMPv2c 的报文次要由版本、个人名、SNMP PDU 组成。各类 SNMP 操作的报文封装在 SNMP PDU 中。
报文中的次要字段如下:
- 版本:示意 SNMP 的版本,如果是 SNMPv1 报文则对应字段值为 0,SNMPv2c 则为 1。
- 个人名:用于在 SNMP Agent 与 NMS 之间实现认证,字符串模式,用户可自行定义。个人名包含“read”和“write”两种,执行 SNMP 查问操作时,采纳“read”个人名进行认证;执行 SNMP 设置操作时,则采纳“write”个人名进行认证。
- Request ID:用于匹配申请和响应,SNMP 给每个申请调配全局惟一的 ID。
- Non repeaters/Max repetitions:GetBulk 操作基于 GetNext 操作实现,相当于屡次执行 GetNext 操作,这两个参数用于设置执行 GetNext 操作次数。
- Error status:用于示意在解决申请时呈现的情况。
- Error index:过错索引。当出现异常状况时,提供变量绑定列表(Variable bindings)中导致异样的变量的信息。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的 SNMPv2c 版本 Get 申请报文如图 1 - 5 所示,SNMPv2c 版本 GetNext 申请报文如图 1 - 6 所示。SNMPv2c 版本 GetBulk 申请报文如图 1 - 7 所示。
SNMPv3 查问报文格式如图 1 - 8 所示,SNMPv3 报文次要由版本、MsgID、MaxSize、Flags、Security Model、Security Parameters、Context EngineID、Context Name 和 SNMP PDU 组成。SNMPv3 报文的 SNMP PDU 的格局与 SNMPv2c 的统一。SNMPv3 版本的报文能够应用鉴权机制,会对 Context EngineID、Context Name 和 SNMP PDU 进行加密。
报文中的次要字段定义如下:
- 版本:示意 SNMP 的版本,如果是 SNMPv3 报文则对应字段值为 3。
- MsgID:申请报文的序列号。
- MaxSize:音讯发送者所可能包容的音讯最大字节,同时也表明了发送者可能接管到的最大字节数。
- Flags:音讯标识位,占一个字节,有三个特色位:reportableFlag,privFlag 和 authFlag。
- reportableFlag=1,在可能导致 Report PDU 生成的状况下,SNMPv3 报文接管方必须向发送方发送 Report PDU;reportableFlag=0,SNMPv3 报文接管方不发送 Report PDU。只有在 SNMP PDU 局部不能被解密时(比方因为密钥谬误导致解密失败等)才会用到 Report。
- privFlag=1,对 SNMPv3 报文进行加密;privFlag=0,不对 SNMPv3 报文进行加密。
- authFlag=1,对 SNMPv3 报文进行鉴权;authFlag=0,不对 SNMPv3 报文进行鉴权。
除了 privFlag=1,authFlag= 0 的状况外,其余任意组合都能够,所以在配置 SNMPv3 的安全级别的时候须要留神:如果用户组是 privacy 级别,用户和告警主机就必须是 privacy 级别;用户组是 authentication 级别,用户和告警主机能够是 privacy 或者 authentication 级别。
- SecurityModel:音讯采纳的平安模型,发送方和接管方必须采纳雷同的平安模型。
- SecurityParameters:平安参数,蕴含 SNMP 实体引擎的相干信息、用户名、鉴权参数、加密参数等平安信息。
- Context EngineID:SNMP 惟一标识符,和 PDU 类型一起决定应该发往哪个应用程序。
- Context Name:用于确定 Context EngineID 对被治理设施的 MIB 视图。
SNMPv3 提供了鉴权机制,举荐用户应用 SNMPv3 版本。通过捕捉报文工具获取设施发送的 SNMPv3 版本加密的 Get 申请报文如图 1 - 9 所示,SNMPv3 版本不加密的 Get 申请报文如图 1 -10 所示。
SNMP 查问操作的工作原理
不同版本的 SNMP 查问操作的工作原理基本一致,惟一的区别是 SNMPv3 版本减少了身份验证和加密解决。上面以 SNMPv2c 版本的 Get 操作为例介绍 SNMP 查问操作的工作原理。
假设 NMS 想要获取被治理设施 MIB 节点 sysContact 的值,应用可读个人名为 public,过程如下所示:
- NMS:向 SNMP Agent 发送 Get 申请报文。报文中各字段的设置如下:版本号为所应用的 SNMP 版本;个人名为 public;PDU 中 PDU 类型为 Get 类型,绑定变量填入 MIB 节点名 sysContact。
- SNMP Agent:首先对报文中携带版本号和个人名进行认证,认证胜利后,SNMP Agent 依据申请查问 MIB 中的 sysContact 节点,失去 sysContact 的值并将其封装到 Response 报文中的 PDU,向 NMS 发送响应;如果查问不胜利,SNMP Agent 会向 NMS 发送出错响应。
SNMP 设置
SNMP 设置是指 NMS 被动向 SNMP Agent 发送对设施进行 Set 操作的申请,如图 1 -11 所示。SNMP Agent 接管到 Set 申请后,通过 MIB 表实现相应指令,并将后果反馈给 NMS。
SNMP 设置操作只有一种 Set,NMS 应用该操作可设置 SNMP Agent 中的一个或多个参数值。
SNMP Set 操作的报文
SNMPv1 和 SNMPv2c 的 Set 操作报文格式如图 1 -12 所示。个别状况下,SNMPv3 的 Set 操作信息是通过加密封装在 SNMP PDU 中,其格局与 SNMPv2c 的 Set 操作报文格式统一。
报文中次要字段的含意如下:
- Request ID:用于匹配申请和响应,SNMP 给每个申请调配全局惟一的 ID。
- Error status:用于示意在解决申请时呈现的情况。
- Error index:过错索引。当出现异常状况时,提供变量绑定列表(Variable bindings)中导致异样的变量的信息。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的 SNMPv2c 版本 Set 申请报文如图 1 -13 所示。
SNMP Set 操作的工作原理
不同版本的 SNMP Set 操作的工作原理基本一致,惟一的区别是 SNMPv3 版本减少了身份验证和加密解决。上面以 SNMPv3 版本的 Set 操作为例介绍 SNMP Set 操作的工作原理。
假设 NMS 想要设置被治理设施 MIB 节点 sysName 的值为 HUAWEI,过程如下所示:
- NMS:向 Agent 发送不带平安参数的 Set 申请报文,向 SNMP Agent 获取 Context EngineID、Context Name 和平安参数(SNMP 实体引擎的相干信息)。
- SNMP Agent:响应 NMS 的申请,并向 NMS 反馈申请的参数。
- NMS:再次向 SNMP Agent 发送 Set 申请,报文中各字段的设置如下:
- 版本:SNMPv3
- 报文头数据:指明采纳鉴权、加密形式。
- 平安参数:NMS 通过配置的算法计算出鉴权参数和加密参数。将这些参数和获取的平安参数填入相应字段。
- PDU:将获取的 Context EngineID 和 Context Name 填入相应字段,PDU 类型设置为 Set,绑定变量填入 MIB 节点名 sysName 和须要设置的值 HUAWEI,并应用已配置的加密算法对 PDU 进行加密。
- SNMP Agent:首先对报文中携带版本号和个人名进行认证,认证胜利后,SNMP Agent 依据申请设置治理变量在治理信息库 MIB 中对应的节点,设置胜利后向 NMS 发送响应;如果设置不胜利,Agent 会向 NMS 发送出错响应。
SNMP Traps
SNMP Traps 是指 SNMP Agent 被动将设施产生的告警或事件上报给 NMS,以便网络管理员及时理解设施以后运行的状态。
SNMP Agent 上报 SNMP Traps 有两种形式:Trap 和 Inform。SNMPv1 版本不反对 Inform。Trap 和 Inform 的区别在于,SNMP Agent 通过 Inform 向 NMS 发送告警或事件后,NMS 须要回复 InformResponse 进行确认,如图 1 -14 所示。
SNMP Traps 报文格式
SNMPv1 的 Trap 操作报文格式如图 1 -15 所示,Trap PDU 由 PDU type、enterprise、Agent addr、Generic trap、Specific trap、Time stamp 和 Variable bindings 组成。
报文中的次要字段定义如下:
- enterprise:Trap 源(生成 Trap 的设施)的类型。
- Agent addr:Trap 源的地址。
- Generic trap:通用 Trap 类型,包含 coldStart、warmStart、linkDown、linkUp、authenticationFailure、egpNeighborLoss、enterpriseSpecific。
- Specific trap:企业公有 Trap 信息。
- Time stamp:上次从新初始化网络实体和产生 Trap 之间所继续的工夫。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的 SNMPv1 版本 Trap 报文如图 1 -16 所示。
SNMPv2c 的 Trap 操作的报文格式和 Inform 操作的报文格式如图 1 -17 所示。个别状况下,SNMPv3 的 Trap 操作或 inform 操作是通过加密封装在 SNMP PDU 中,其格局与 SNMPv2c 的 Trap 操作或 inform 操作的报文格式统一。
报文中的次要字段定义如下:
- Request ID:用于匹配申请和响应,SNMP 给每个申请调配全局惟一的 ID。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的 SNMPv2 版本 Trap 报文如图 1 -18 所示,SNMPv2 版本 Inform 报文如图 1 -19 所示。
SNMP Traps 工作原理
Trap 操作工作原理
Trap 不属于 NMS 对被治理设施的基本操作,它是被治理设施的自发行为。当被治理设施达到告警的触发条件时,会通过 SNMP Agent 向 NMS 发送 Trap 音讯,告知设施侧呈现的异常情况,便于网络管理人员及时处理。例如被治理设施热启动后,SNMP Agent 会向 NMS 发送 warmStart 的 Trap。
这种 Trap 信息是受限制的。只有在设施端的模块达到模块预约义的告警触发条件时,SNMP Agent 才会向治理过程报告。这种办法的益处是仅在重大事件产生时才发送 Trap 信息,缩小报文交互产生的流量。
Inform 操作工作原理
Inform 操作也是被治理设施向 NMS 被动发送告警。与 Trap 告警不同的是,被治理设施发送 Inform 告警后,须要 NMS 进行接管确认。如果被治理设施没有收到确认信息则:
- 将告警或事件临时保留在 Inform 缓存中。
- 反复发送该告警或事件,直到 NMS 确认收到该告警或者发送次数达到最大重传次数。
- 被管设施上会生成相应的告警或事件日志。
由此可知,应用 Inform 操作会占用较多的系统资源。
SNMP 端口号
SNMP 报文是一般的 UDP 报文,协定中规定有两个默认端口号:
- 端口号 161:NMS 发送 Get、GetNext、GetBulk 和 Set 操作申请以及 SNMP Agent 响应这些申请操作时,应用该端口号。
该端口号反对用户配置,然而须要保障 NMS 发送申请报文应用的端口号与 SNMP Agent 响应申请报文应用的端口号要统一。
- 端口号 162:SNMP Agent 向 NMS 发送 Trap 或 Inform 时,应用该端口号。
该端口号反对用户配置,然而须要保障 SNMP Agent 发送 Trap 或 Inform 的端口号与 NMS 监听 Trap 或 Inform 的端口号要统一。
关注公众号:网络技术平台 ,回复“ 材料”获取视频、培训教程、试验手册、电子书。