【网络协议】网络运维管理神经-SNMP协议

2023-12-18 09:42:19

什么是SNMP?

SNMP(Simple Network Management Protocol,简单网络管理协议)是一种广泛应用于TCP/IP网络的网络管理标准协议。
在这里插入图片描述

它允许网络管理员收集并监控网络设备的各种状态信息,例如设备的配置、性能数据、错误状态等。

通过SNMP,网络管理员可以远程监控网络的状态,并在必要时采取相应的管理操作。它采用客户机-服务器模式进行通信,其中SNMP Manager(即客户机)负责收集和管理网络设备的信息,而SNMP Agent(即服务器)驻留在被管理的设备上,负责响应来自Manager的请求并提供所需的信息。

SNMP的组件

SNMP由如下关键组件构成,它们共同协作以实现网络设备的管理和监控:

  1. SNMP Manager(也称为网络管理系统或NMS)
    SNMP Manager是网络管理系统的主体,通常是一个运行在计算机上的软件应用程序。
    它主动发起请求,收集网络设备的状态信息,执行管理任务,如对网络设备进行配置更改和性能监控。

  2. SNMP Agent
    SNMP Agent是运行在网络设备上的软件实体,通常是操作系统的一部分。
    它被动地响应来自SNMP Manager的请求,并根据需要向Manager报告事件和状态变化。

  3. Management Information Base (MIB)
    MIB也叫管理信息库,它是一个数据库,定义了可管理对象及其属性,这些对象对应于网络设备中的各种配置和状态参数,比如CPU利用率,端口流量,电源状态等。
    MIB用ASN.1(Abstract Syntax Notation One)语言编写,并以文本文件形式提供,如.mib文件。
    MIB结构类似于目录树,提供了一种标准化的方式来组织和访问网络设备的信息。通过MIB,可以完成以下功能:
    Agent通过查询MIB,可以获知设备当前的状态信息。
    Agent通过修改MIB,可以设置设备的状态参数。

    SNMP的MIB采用树型结构,它的根在最上面,根没有名字。每个对象标识符OID(object identifier)对应于树中的一个管理对象,该树的每个分支都有一个数字和一个名称,并且每个点都以从该树的顶部到该点的完整路径命名,如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2。
    在这里插入图片描述

  4. SNMP PDU(协议数据单元)
    SNMP PDU是在SNMP Manager和Agent之间传输的消息格式。
    不同类型的PDU对应不同的SNMP操作,如GET、GETNEXT、SET、TRAP和INFORM。

  5. Community Strings(在SNMPv1和SNMPv2c中使用)
    社区字符串充当简单的身份验证机制,用于控制SNMP Manager对SNMP Agent的访问权限。
    在SNMPv3中,社区字符串被更强大的用户身份验证和授权机制所取代。

  6. SNMP Engine
    SNMP Engine是SNMP协议的核心部分,负责处理SNMP消息和与SNMP Manager和Agent之间的通信。
    引擎包含调度程序、消息处理子系统和访问控制子系统。

  7. Dispatcher
    在SNMP Engine内部,调度程序负责接收和转发SNMP消息到相应的消息处理模块。

  8. Security Subsystem(在SNMPv3中引入)
    安全子系统提供了身份验证、加密和访问控制功能,相比community strings增强了SNMP的安全性。

SNMP的历史版本

SNMP有多个版本,成为标准的版本包括SNMPv1、SNMPv2c和SNMPv3,每个版本都在前一版本的基础上进行了一些增强和改进,主要是在安全性和隐私方面。

  1. SNMPv1
  • 第一个发布的版本,也是最基础的一个。
  • 提供基本的网络管理功能,如读取设备状态和修改配置。
  • 使用基于明文的社区字符串进行简单的身份验证。
  • 没有加密能力,因此安全性较低。现在基本不再使用。
  • 使用Trap报文来通知网络管理者有关异常情况的发生。
  1. SNMPv2c
  • 对SNMPv1进行了改进,但没有解决其安全问题。
  • 增加了一些新的PDU类型(如GetBulk),提高了效率。
  • 同样依赖明文社区字符串进行身份验证。
  • 继续沿用了Trap报文的概念。
  1. SNMPv2u
    这是一个实验性的版本,尝试解决一些安全问题,最后未得到广泛应用和支持。
  2. SNMPv2
    这也是一个为了解决安全性问题的实验版本。增加了包括SNMPv2p(基于视图)、SNMPv2t(基于模板)、SNMPv2m(基于架构)等变体。最后这些版本也没有能够成为正式的标准。
  3. SNMPv3
  • 当前最新且最安全的SNMP版本。
  • 引入了用户安全模型(USM),提供更强的身份验证和加密。
  • 支持基于用户的访问控制策略。
  • 替换了Trap报文,引入Inform报文,确保报文能够到达目的地。
  • 允许同时运行多个安全模型和视图,以便更好地适应不同的环境需求。

目前,大多数现代网络设备都支持SNMPv2c和SNMPv3,SNMPv1由于其安全性问题虽然很多设备支持,但是实际上已经很少被单独使用。

大多数场景还是会选择使用SNMPv2c,具备一定的安全性,又简单易用,而对于需要更高安全级别的网络环境,通常建议使用SNMPv3。

SNMP端口

SNMP端口是SNMP通信端点,SNMP消息传输通过UDP进行,通常使用UDP端口号161/162。有时也使用传输层安全性(TLS)或数据报传输层安全性(DTLS)协议,端口使用情况如下表所示。

过程协议端口号
代理进程接收请求信息UDP协议161
NMS与代理进程之间的通信UDP协议161
NMS接收通知信息UDP协议162
代理进程生成通知信息-任何可用的端口
接收请求信息TLS/DTLS10161
接收通知信息TLS/DTLS10162

SNMP配置案例

我们以monitor一台网络设备的流量作为SNMP配置案例:

  1. 网络设备配置启用SNMP
    以下是以Cisco 设备配置参考:
snmp-server community string@123 RO
snmp-server host 192.168.1.1 informs version 2c string@123 
snmp-server host 192.168.1.1 version 2c string@123 
  1. NMS添加被监控设备
    NMS增加sensor,选择方式为SNMP
    在这里插入图片描述
    在选项中,我们选择SNMP Traffic
    在这里插入图片描述
    在basic sensor settings中,我们可以看到Tags为bandwidthsensor和snmptrafficsensor
    在这里插入图片描述
    在base sensor settings配置中,我们也可以增加其他sensor类型,在NMS管理软件中,会集成主流的一些厂商设备的sensor集。
    在这里插入图片描述

我们可以针对traffic的方向,接口数据的包类型进行monitor。也可以监控错误包、单播、组播包的统计等等。
在这里插入图片描述
因为SNMP轮询模式,还可以配置轮询时间。默认是60 seconds,可以根据设备负载和网络负载,以及实际监控需求调整轮询的时间间隔。最短时间可以设定到30 seconds,最长可以设定为24hours。
在这里插入图片描述
完成sensor的添加后,就可以通过SNMP形成一个可视化的监控,实现对网络设备的健康、流量、是否在线等状态进行监控。
在这里插入图片描述
接口流量监控截图:
在这里插入图片描述
网络监控还可以根据监控对象,配置基于各种状态、阈值的告警通知。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SNMP工作原理

SNMP(Simple Network Management Protocol)是一种应用层协议,用于在网络上监视和控制设备。

它采用客户机-服务器模式进行通信,其中SNMP Manager(即客户机)负责收集和管理网络设备的信息,而SNMP Agent(即服务器)驻留在被管理的设备上,负责响应来自Manager的请求并提供所需的信息。
在这里插入图片描述

SNMP的基本工作原理

  1. 网络设备初始化
    网络设备启动时加载SNMP Agent软件。
    Agent从本地存储或默认值加载其配置参数。
  2. MIB注册
    SNMP Agent将管理信息库(MIB)注册到本地系统。
    MIB定义了一系列可管理的对象及其属性,这些对象代表了设备的配置、统计和其他相关信息。
  3. NMS初始化
    网络管理系统(NMS)启动并加载SNMP Manager软件。
    Manager具有一个或多个已知设备列表,或者它可以主动搜索网络以发现新的可管理设备。
  4. Manager-Agent通信
    SNMP Manager向SNMP Agent发送请求,要求获取或修改特定MIB对象的值。
    请求封装在一个称为Protocol Data Unit (PDU) 的消息中,并由Agent处理。
  5. 数据采集
    SNMP Agent从本地系统检索请求的信息,并将其封装在一个回应PDU中。
    如果请求涉及写操作(如设置一个新的配置值),Agent会更新本地系统中的相应值。
  6. 响应
    SNMP Agent将回应PDU发送回SNMP Manager。
    Manager解析PDU的内容,并将结果显示给网络管理员或其他应用程序。
  7. Trap与Notification
    当设备发生重要状态变更或遇到异常情况时,SNMP Agent可以主动发送Trap PDU到预先配置的NMS。
    Trap PDU包含了关于触发事件的相关信息,使网络管理员能够及时得知并处理这些问题。
  8. 定期轮询
    SNMP Manager可以定期轮询SNMP Agent,获取设备的状态更新。
    轮询间隔可以根据实际需求进行调整,以平衡网络负载和实时性要求。

SNMP的操作类型

SNMP规定了几个操作类型来完成各组件之间的信息交换,如下表所示:

操作类型描述备注
GetGet操作可以从Agent中提取一个或多个参数值。-
GetNextGetNext操作可以从Agent中按照字典序提取下一个参数值。-
SetSet操作可以设置Agent的一个或多个参数值。-
ResponseResponse操作可以返回一个或多个参数值。这个操作是由Agent发出的,它是GetRequest、GetNextRequest、SetRequest和GetBulkRequest四种操作的响应操作。Agent接收到来自NMS的Get/Set指令后,通过MIB完成相应的查询/修改操作,然后利用Response操作将信息回应给NMS。-
TrapTrap信息是Agent主动向NMS发出的信息,告知管理进程设备端出现的情况。-
GetBulkGetBulk操作实现了NMS对被管理设备的信息群查询。SNMPv1版本不支持GetBulk操作
InformInformRequest也是被管理设备向NMS主动发送告警。与Trap告警不同的是,被管理设备发送Inform告警后,需要NMS回复InformResponse来进行确认。SNMPv1版本不支持Inform操作

在这里插入图片描述

SNMP Traps

SNMP Traps是指SNMP Agent主动将设备产生的告警或事件上报给NMS,以便网络管理员及时了解设备当前运行的状态。

SNMP Agent上报SNMP Traps有两种方式:Trap和Inform。Trap和Inform的区别在于,SNMP Agent通过Inform向NMS发送告警或事件后,NMS需要回复InformResponse进行确认。

Trap操作的工作原理如下:

  1. Trap消息生成
    当网络设备遇到某些预定义的条件或事件时,SNMP Agent会生成一个Trap消息。
    Trap消息包含有关引发该事件的设备、时间戳以及事件的具体描述等信息。
  2. Trap消息封装
    生成的Trap消息会被封装成SNMP协议数据单元(PDU),其中包含了Trap类型、源IP地址、Trap OID以及其他相关参数。
    在SNMPv1和SNMPv2c中,Trap消息使用固定的“默认”端口162进行传输。而在SNMPv3中,Trap消息可以使用任意端口进行传输。
  3. Trap消息发送
    SNMP Agent将封装好的Trap消息发送到预先配置的SNMP Manager的IP地址。
    这个过程不需要Manager先发送请求,因为Trap是Agent主动发出的通知。
  4. Trap消息接收
    SNMP Manager接收到Trap消息后,会检查消息中的源IP地址和Trap OID以确定事件的来源和性质。
    Manager可能会根据Trap内容执行一些自动化操作,如记录日志、发送电子邮件警报、更新显示界面等。
  5. 响应处理
    根据具体的Trap内容和配置,SNMP Manager可以选择忽略某些Trap消息或采取适当的措施来应对。
    在某些情况下,Manager可能会向Agent发送一个Get或Set请求以获取更多信息或更新设备配置。

SNMP Trap并不保证消息一定能送达Manager,因为它们是不可靠的单播消息。

为了提高可靠性,可以使用SNMP Inform消息代替Trap消息,因为Inform消息采用了确认机制,可以确保消息被正确接收。然而,Inform消息比Trap消息稍微复杂一些,并且需要更多的网络资源。

SNMP Inform

SNMP Inform是一种可靠的异步通信机制,它结合了Trap操作的优点(Agent主动发送事件通知)和Get/Response操作的优点(确认机制)。

Inform操作的工作原理如下:

  1. Inform消息生成
    当网络设备遇到某些预定义的条件或事件时,SNMP Agent会生成一个Inform消息。
    Inform消息包含有关引发该事件的设备、时间戳以及事件的具体描述等信息。
  2. Inform消息封装
    生成的Inform消息会被封装成SNMP协议数据单元(PDU),其中包含了Inform类型、源IP地址、Inform OID以及其他相关参数。
    在SNMPv1和SNMPv2c中,Inform消息不支持;而在SNMPv3中,Inform消息使用任意端口进行传输。
  3. Inform消息发送
    SNMP Agent将封装好的Inform消息发送到预先配置的SNMP Manager的IP地址。
    这个过程不需要Manager先发送请求,因为Inform是Agent主动发出的通知。
  4. Inform消息接收
    SNMP Manager接收到Inform消息后,会检查消息中的源IP地址和Inform OID以确定事件的来源和性质。
    Manager会对Inform消息做出响应,发送一个带有确认码的Response消息给Agent。
  5. 响应等待
    SNMP Agent接收到Response消息后,检查确认码是否正确。如果确认码正确,则说明Manager成功接收到并处理了Inform消息。
    如果在指定时间内没有收到正确的Response消息,则Agent可能会重新发送Inform消息。
  6. 响应处理
    根据具体的Inform内容和配置,SNMP Manager会选择忽略某些Inform消息或采取适当的措施来应对。
    在某些情况下,Manager可能会向Agent发送一个Get或Set请求以获取更多信息或更新设备配置。

由于Inform消息具有确认机制,因此相比于Trap消息,它更加可靠,可以确保Manager接收到并且处理了消息。然而,这也意味着Inform消息的处理开销更大,并可能导致更高的网络延迟。因此,在选择使用Inform还是Trap时,需要权衡可靠性和性能的需求。

SNMP的应用场景

SNMP的应用场景很多、很广,但是常见和应用最多的是如下几种:

  1. 网络设备监控
    监控路由器、交换机、防火墙等网络设备的运行状态,包括CPU利用率、内存使用率、接口流量、错误计数等。
    通过自动发现机制,发现并跟踪网络中的新增设备。

  2. 故障告警
    接收来自网络设备的Trap或Inform消息,以便及时发现和诊断故障。
    设置阈值报警,当达到某个预设条件时自动触发告警。

  3. 性能分析与优化
    收集历史性能数据,分析网络趋势和瓶颈,帮助识别潜在问题。
    通过调整设备配置参数优化网络性能。

  4. 资产管理
    记录网络设备的详细信息,包括型号、序列号、软件版本等。
    管理资产生命周期,包括购买、部署、升级和退役等阶段。

  5. 服务质量(QoS)管理
    监控网络服务质量,确保关键业务应用获得足够的带宽和优先级。根据监控到的服务质量,调整QoS设置,满足不断变化的业务需求。

  6. 自动化运维
    自动化日常运维任务,减少人工干预的时间和成本。通过脚本或工具集成,实现跨多个系统的联动操作。

  7. 报表生成与数据分析
    从多个设备收集数据,汇总形成详细的网络报表。使用数据分析工具对大量数据进行挖掘,提取有价值的信息。

  8. 远程维护与故障排除
    利用SNMP实现远程登录和控制设备,方便技术人员进行远程维护和故障排除。

推荐阅读

文章来源:https://blog.csdn.net/weixin_37813152/article/details/134987050
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。