十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇文章给大家分享的是有关SNMP相关基本概念是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了随州免费建站欢迎大家使用!
一、网络管理的概念
狭义的网络管理仅仅指网络的通信量管理,而广义的网络管理指网络的系统管理。网络管理功能可概括为OAM﹠P,即网络的运行(Operation)、处理(Administration)、维护(Maintenance)、服务提供(Provisioning)等所需要的各种活动。有时也考虑前三种,即把网络管理功能归结为OAM。
网络管理通常用到以下术语:
l网络元素(network element)
网络中具体的通信设备或逻辑实体,又称网元。
l对象(object)
通信和信息处理范畴里可标识的切拥有一定信息特性的资源。但应注意,这里所用的“对象”与面向对象系统中所定义的对象并不完全一样。
l被管理对象(managed object)
被管理对象指可使用管理协议进行管理和控制的网络资源的抽象表示。例如,一个层的实体或一个连接。
l管理信息库MIB
MIB是网络管理系统中的重要构件,它有一个系统内的许多被管对象及其属性组成。MIB这个概念实际上就是一个虚拟数据库。这个数据库提供有关被管理网络元素的信息,而这些信息由管理进程和各个代理进程共享。MIB由管理进程和各个代理进程共同使用。
l综合网络管理INM
用统一的方法在一个异构网络中管理多厂商生产的计算机硬件和软件资源。这也称为一体化网络管理。
二、SNMP相关概念
SNMP的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。在网络正常工作时,SNMP可实现统计、配置和测试等功能。当网络出故障时,可实现各种差错检测和恢复功能。
SNMP中的几个重要概念:
l管理进程(NMS)
管理进程可以向代理进程询问某些参数值以外,它还可以按要求改变代理进程的参数值。负责发送请求和接收代理进程发过来的trap信息。
l委托代理(proxy agent)
为没有SNMP服务的设备提供资源信息,委托代理能提供如协议转换和过滤操作的汇集功能。然后委托代理来对管理对象进行管理。
l代理进程(Agent)
被管设备端和管理相关的软件叫做代理程序(agent)或代理进程。管理进程和代理进程之间的通信可以有两种方式。一种是管理进程向代理进程发出请求,询问一个具体的参数值。另外一种方式是代理进程主动向管理进程报告有某些重要的事件发生。
lcommunity (共同体)
共同体实际上就是用来实现管理应用实体之间身份鉴别的,可以把它理解为一个带有权限的登陆账户,这是访问网络设备的重要凭据。假如community是public,其权限是只读的,那你一以此用户登陆就可以查看有关记录的数据。如果其权限是读写的,你就有权修改其中的一些设置,如封锁某一个交换机的端口。大部分默认情况下,以public作为只读community,以private作为读写community。
lMIB(Management Information Base)
称为管理信息库,包含所有代理进程的所有可被查询和修改的参数。
lSMI(Structure of Management Information)
叫做管理信息结构,是MIB的一套公用的结构和表示符号。SMI定义了一个设备维护的规则集,用于对被管理对象进行命名和编码。
lOID(对象标志符)
是以SMI(Structure of Management Information)管理信息结构为基础的一系列点分符号,这些点分符号在任何网络设备中都唯一标识某一个数据参数。他们的集合我们称为MIB(Management Information Base)管理信息库。
三、SNMP通讯方式
SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。 SNMP规定了5种协议消息(也就是SNMP报文),用来在管理进程和代理之间的交换。
整个系统必须有一个管理站(management station),它实际上是网控中心。在管理站内运行管理进程。在每个被管对象中一定要有代理进程。管理进程和代理进程利用SNMP报文进行通信,而SNMP报文又使用UDP来传送。管理进程和代理进程之间的通信可以有两种方式。一种是管理进程向代理进程发出请求,询问或设置一个具体的参数值,称为Polling;而另一种则是代理进程主动向管理进程报告某些重要事件发生,成为Trap。SNMP中默认的agent接听端口是161,而接收trap的端口为162。
图中有两个主机和一个路由器。这些协议栈中带有阴影的部分是原来这些主机和路由器所具有的,而没有阴影的部分是为实现网络管理而增加的。
有时网络管理协议无法控制某些网络元素,例如该网络元素使用的是另一种网络管理协议。这时可使用委托代理(proxy agent)。
四、SNMP安全性
SNMPv1采用了“共同体”的字段作为管理进程和代理进程的鉴别密码,只有具有相应的“共同体名”,才有访问权限,这种方式只是简单的明文交换方式;SNMPv2的安全机制没有本质的改进;SNMPv3提出了新的安全机制,同时还有一套专门的网络安全和访问控制规则。
有三种共同体名称:read-only, read-write,和trap。在默认情况下,public获取只读,private获得读写权限。
五、SNMP操作
SNMP协议主要有五种报文get、get-next、set、get-response,trap。
lget-request操作:从代理进程处提取一个或多个参数值
lget-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值
lset-request操作:设置代理进程的一个或多个参数值
lget-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。
ltrap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
其中前三种报文是管理进程发出的;后两种是代理进程发出的。在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
下面具体讲解5种SNMP操作。
(1)get-request操作
管理站需要主动向agent读取管理对象的值,以获得设备或网络的运行数据和管理信息,进而规划网络管理。SNMP不支持一次读取一张表或表中一行数据。但是当需要读取多个数据,如果分多次读取则会提高网络负担,所以,Get-Request支持一次提交多个对象标识(OID),以便一次获取他们的值,提高网络利用率。
(2)get-next-request操作
SNMP不支持一次读取一张表或表中一行数据的读取,Get-Next-Request提供了一种简单的方法。对一个OID进行Get-Next-Request操作,将会收到一个下一个可读取的对象的实例标识,接着对他Get-Next-Request将会得到再下一个实例标识,不断执行下去,将可以读取完整张表。一方面Get-Next-Request实现很简单,但是在读取表中数据的时候却不可避免地有一个大麻烦。表中的数据是以行为单位,每一行又由若干列组成,如果读取一行数据,应该读取这一行的每一列,但是SNMP的Get-Next-Request表时是先列后行,就是说先把第一列中所有行数据读取完,再读取下一列所有行。这样,客户端就需要做很多工作。另一方面,这样显然传递了很多不必要的数据,浪费了带宽。跟Get-Request一样,Get-Next-Request可以在PDU里绑定多个OID或实例标识,以提高效率。同样的,绑定多个OID情况下,相应的Get-Response的PDU同样会返回每一个OID的下一个可用实例标识标识符或相应错误。利用绑定多个OID可以比单个执行Get-Next-Request有效率。
(3)set-request操作
网络管理中,有时需要对设备的一些参数、配置、状态进行重新配置。需要一种远程的管理机制,Set-Request就是这样的操作。set操作可以对MIB中权限为:write-only、read-write的对象进行set操作。
尽管set操作为改变配置提供了一种比较方便的方法,但是SNMP并没有直接提供操作远程设备的操作。但这不代表SNMP没有这种能力,我们可以借助于Set-Request操作间接地实现这一性能。设备通过MIB定义一个操作的对象,类型为write-only或read-write,约定操作取值,NMS可以对这个对象进行设置,设备以自己的方式得知此对象的值改变后,可以按照对象取值的含义执行操作,从而实现远程控制。
set操作也允许一次提供几个set的对象和值,以便在一个PDU里操作多个对象。set操作的成功应答包里包含设置的对象的最新取值(也就是设置的值)。
(4)get-response操作
GetResponse对get、set、getNext进行应答,由agent被动地产生并发出。当操作成功地被执行时,GetResponsePDU里包含操作中请求操作的对象oid和他们的值。前面提到,前三种操作都支持在一个PDU里绑定多个对象,相应的GetResponse应答也包含相应变量的值。对于失败的操作,GetResponse需要在PDU里标注相应的错误代码。GetResponse对请求数据包里的request-id域不操作,原数返回,以使请求端能将应答包和请求包准确匹配,同时也可以作为请求和接收方校验重复数据包的依据。
当操作成功时,error-status值为noError,error-index为0。variablebindings中的变量的value域填上相应值。
当操作失败时,error-status为相应的错误代码,如果错误由variablebindings组中某个对象引起,则error-index为该对象在variablebindings中的索引。
(5)trap操作
SNMP的前三种操作是NMS主动发起的操作,网络中存在大量的设备,NMS轮循一次需要一段时间,如果设备发生了重要的状态改变,等到下一次轮循到来,可能已经失去实时性,NMS不能及时掌握设备数据或状态的变化。另一方面,考虑到对网络的占用,又不可能以很小的间隔去轮循设备。所以,需要一种机制让设备能够自主地发出警报,通知状态或配置的改变和其它一些重要事件。Trap就是由agent主动发出的警报PDU,通知NMS重要的改变。
RFC 1157中定义了5种常见类型的Trap,用于这些常见网络状态的报警。另外提供了一个自定义的类型,并提供一个PDU单元提供自定义Trap的子代码,用于SNMP的实现者定义和发送自己的Trap。
另一方面,但Trap也有一些问题,因为SNMP使用的是UDP,无连接的数据报,Trap有可能不能传递到NMS,另一方面agent不知道NMS是否收到Trap。另外,发送Trap一般都是由重要的状态引起的,某些情况下,系统发生了灾难性的故障,导致Trap也无法发出,比如系统崩溃、网络故障等。所以,一个网络管理系统要综合使用这些操作,互为补充,才能建立一个可靠的管理系统。单独依靠每一种操作都有片面性。
RFC里没有提到如何判断SNMP是否丢失,但按照TCP/IP协议特征可以做常识性的判断,比如GetRequest和GetNextRequest,如果在设定的时间内没有收到agent的GetResponse应答包,就可以认为GetRequest、GetNextRequest或GetResponse丢失,可以尝试下一次请求,直至有结果或无应答放弃。对SetRequest而言,执行SetRequest以后,可以发送一个GetRequest查询是否set成功。Trap由于是单向的数据报,没有应答,没有办法判断是否成功发送到目的地,需要由NMS的主动轮循来检测。
在v2和v3版本中,对SNMP的操作做了一些修改,加入了别的操作,增强了安全性。如:SNMP v2-Trap的PDU结构跟GetRequest、GetNextRequest、SetRequest、InformRequest相同,而不是v1中拥有自己特殊的格式。InformRequest:管理站向另一个管理站报告通报的消息。InformRequest是SNMP v2引入的新的操作,由管理站发起,向另一个管理站报告状态或数据,与Trap不同,InformRequest需要得到接收方的应答。GetBulkRequest:管理站向代理读取表中若干行的操作。六、SNMP中的报文格式
5种操作的SNMP报文是封装成UDP数据报格式。可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。
(1)公共SNMP首部
共三个字段:
l版本
整型,写入版本字段的是版本号减1,故:第1版取值为0,第二版取值为1,第三版取值为2。默认取值为0,即第一版。
l共同体(community)
共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
lPDU类型
根据PDU的类型,填入0~4中的一个数字,其对应关系如表2所示意图。
表2 PDU类型
PDU类型 | 名称 |
0 | get-request |
1 | get-next-request |
2 | get-response |
3 | set-request |
4 | trap |
(2)get/set首部
l请求标识符(request ID)
这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。
l差错状态(error status)
由代理进程回答时填入0~5中的一个数字,见表3的描述。
表3 差错状态描述
差错状态 | 名字 | 说明 |
0 | noError | 一切正常 |
1 | tooBig | 代理无法将回答装入到一个SNMP报文之中 |
2 | noSuchName | 操作指明了一个不存在的变量 |
3 | badValue | 一个set操作指明了一个无效值或无效语法 |
4 | readOnly | 管理进程试图修改一个只读变量 |
5 | genErr | 某些其他的差错 |
l差错索引(error index)
当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。
(3)trap首部
l企业(enterprise)
填入trap报文的网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子树上。
ltrap类型
此字段正式的名称是generic-trap,共分为表4中的7种。
表4trap类型描述
trap类型
名字
说明
0
coldStart
代理进行了初始化
1
warmStart
代理进行了重新初始化
2
linkDown
一个接口从工作状态变为故障状态
3
linkUp
一个接口从故障状态变为工作状态
4
authenticationFailure
从SNMP管理进程接收到具有一个无效共同体的报文
5
以上就是SNMP相关基本概念是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。