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

news2024/11/26 13:40:27

文章目录

    • 什么是SNMP?
    • SNMP的组件
    • SNMP的历史版本
    • SNMP端口
    • SNMP配置案例
    • SNMP工作原理
      • SNMP的基本工作原理
      • SNMP的操作类型
      • SNMP Traps
      • SNMP Inform
    • SNMP的应用场景
    • 推荐阅读

什么是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实现远程登录和控制设备,方便技术人员进行远程维护和故障排除。

推荐阅读

  • 【TCP/IP协议】IMAP(Internet Message Access Protocol,即互联网消息访问协议)
  • 【TCP/IP协议】LDAP,轻型目录访问协议(Lightweight Directory Access Protocol)
  • 【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)
  • 局域网协议:地址解析协议(ARP,Address Resolution Protocol)
  • VRRP(虚拟路由器冗余协议)标准协议工作机制与优势介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习黑马vue

项目分析 项目下载地址:vue-admin-template-master: 学习黑马vue 项目下载后没有环境可参考我的篇文章,算是比较详细:vue安装与配置-CSDN博客 安装这两个插件可格式化代码,vscode这个软件是免费的,官网:…

2023年OceanBase开发者大会-核心PPT资料下载

一、峰会简介 2023年OceanBase开发者大会主要涵盖了OceanBase的最新技术进展、产品更新以及开发者工具的发布。大会发布了OceanBase 4.1版本,公布了两大友好工具,升级了文档的易用性,并统一了企业版和社区版的代码分支。这些举措全面呈现了O…

2017年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

从战争中学习战争最有效。前几天,六分成长分析了2023年、2022年、2020、2019、2018年的AMC8的典型考题、考点和详细答案解析。 今天继续为大家分享2017年的AMC8的五道典型考题,所有的这些试题六分成长独家制作了在线版本,适合各种终端和设备…

Android Compose Transition 动画

Transition 是一种动画效果,用于在组件的状态之间进行平滑的过渡。它可以帮助我们在状态变化时,以一种流畅的方式更新 UI。通过使用 Compose 的 Transition API,您可以在应用中创建各种各样的动画效果,从而增强用户体验并提高应用…

智能五子棋1

*一、项目需求* 五子棋是一种简单的黑白棋,历史悠久,起源于中国,后传入日本,在日本被称为“连珠”,是一种老少皆宜的益智游戏。 人工智能五子棋系统的目标用户是一切想致力于研究人机对弈算法理论的相关研究者和一切…

I2C总线(一)核心

基于linux-3.14.16 一、简介 硬件上,i2c总线由,i2c控制器、i2c总线、i2c设备组成。 驱动代码将通过设置i2c寄存器,从而在总线上产生数据信息,来和i2c设备通信(读/写)。 i2c核心,主要的功能包…

spring boot 配置多数据源 踩坑 BindingException: Invalid bound statement (not found)

在上一篇:《【已解决】Spring Boot多数据源的时候,mybatis报错提示:Invalid bound statement (not found)》 凯哥(凯哥Java) 已经接受了,在Spring Boot配置多数据源时候,因为自己马虎,导致的一个坑。下面&a…

【操作系统】实验一 熟悉LINUX环境和命令

实验名称: 实验一 熟悉LINUX环境和命令 实验目的: 1. 了解UNIX/LINUX的命令及使用格式。 2.熟悉UNIX/LINUX的常用基本命令。 3. 练习并掌握LINUX提供的vi编辑器来编译C程序 4. 学会利用gcc、gdb编译、调试C程序 实验内容: 熟悉UNIX/LINUX的…

YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv(空间深度转换卷积)技术。SPD-Conv是一种创新的空间编码技术,它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念:它是一种将图像空间信息转换为深度信息…

Java_Lambda表达式JDK8新特性(方法引用)

一、Lambda表达式 接下来,我们学习一个JDK8新增的一种语法形式,叫做Lambda表达式。作用:用于简化匿名内部类代码的书写。 1.1 Lambda表达式基本使用 怎么去简化呢?Lamdba是有特有的格式的,按照下面的格式来编写Lamd…

如何用Python向图像中加入噪声

我们在做机器视觉项目的过程中,有的时候需要向图像中加入噪声。Pytorch本身不支持类似的功能,如果自己写的话,不但麻烦,而且容易出错。好在skimage支持这个功能。代码如下: import skimage import matplotlib.pyplot …

Web安全漏洞分析—文件包含

在当今数字化时代,随着Web应用程序的广泛应用,网络安全问题愈加凸显。其中,文件包含漏洞作为一种常见但危险的安全隐患,为恶意攻击者提供了可乘之机。在这篇博客中,我们将深入探讨文件包含漏洞的本质、攻击手法以及应对…

信息收集 - 域名

1、Whois查询: Whois 是一个用来查询域名是否已经被注册以及相关详细信息的数据库(如:域名所有人、域名注册商、域名注册日期和过期日期等)。通过访问 Whois 服务器,你可以查询域名的归属者联系方式和注册时间。 你可以在 域名Whois查询 - 站长之家 上进行在线查询。 2、…

python提取图片型pdf中的文字(提取pdf扫描件文字)

前言 文字型pdf提取,python的库一大堆,但是图片型pdf和pdf扫描件提取,还是有些难度的,我们需要用到OCR(光学字符识别)功能。 一、准备 1、安装OCR(光学字符识别)支持库 首先要安…

详解git pull和git fetch的区别

git pull和git fetch的区别, 网上人云亦云胡说八道的实在是太多了,误导我很久。 今天看到一个说得好的,记录一下。 前言 在我们使用git的时候用的更新代码是git fetch,git pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢&#xff…

vue3引入Echarts图表

说明:echarts是父组件,stack是子组件,将stack引入到echarts文件中 查看echarts.vue时可看到stack.vue中的图表 # # # 引入方式 第一步 Echarts官网:快速上手 - 使用手册 - Apache ECharts 第二步 在控制台安装Echarts模块…

8.完成任务实现的SDK封装及插件式加载

1.设计 任务的实现目前完成了Modbus RTU、Modbus TCP、Virtule。任务实现应该是任意的,比如打印一段话,执行一句SQL等,所以系统内部的必然要做到可扩展。 要做到可扩展,首先第一步就是定义标准,所以我们首先需要封装…

nodejs+vue+微信小程序+python+PHP基于大数据的银行信用卡用户的数仓系统的设计与实现-计算机毕业设计推荐

银行信用卡用户的数仓系统综合网络空间开发设计要求。目的是将银行信用卡用户的数仓系统从传统管理方式转换为在网上管理,完成银行信用卡用户的数仓管理的方便快捷、安全性高、交易规范做了保障,目标明确。银行信用卡用户的数仓系统可以将功能划分为管理…

从文字下乡到人人学英语

从建国到改革开放,从恢复高考到新式教育改革,中国飞速发展,文字需求也在不断增大,在“地球村”的时代下,我们要“习文字之变,顺时代发展。” 古言道:“仓颉作书,后稷作稼”&#xff…

【Spark面试】Spark面试题答案

目录 1、spark的有几种部署模式,每种模式特点?(☆☆☆☆☆) 2、Spark为什么比MapReduce块?(☆☆☆☆☆) 3、简单说一下hadoop和spark的shuffle相同和差异?(☆☆☆☆☆…