SNMP,MIB及CACTI
一 SNMP协议介绍
网络设备的访问方式一般有3种:串口、Telnet(及加密的telnet协议SSH)、SNMP。串口是使用串口线连接PC的串口和网络设备的串口来访问设备,这是最原始的访问方
式,通常也是最后一种访问方式(比如设备Telnet和SNMP都无法访问时),如果连串口都无法访问设备,基本上就没有什么办法操作设备了。
Telnet方式大家都比较熟悉,这是建立在TCP传输层协议上的远程操作方法,Telnet协议占用的TCP端口号是23。Telnet应用分为Telnet服务器端和Telnet客户端,通常我们的PC是Telnet客户端。如果一个设备启用了Telnet服务,那么它就是telnet服务器端,在OLT上可以使用service telnet [enable|disable]控制telnet服务的打开和关闭。 另外一个有趣的现象是,如果我们telnet登陆一个PC的IP地址,会得到一个端口未打开的提示,这是因为PC一般不提供Telnet服务,当然我们也可以尝试在PC上打开Telnet服务,具体效果可以自己看看。
与Telnet相似的一个服务是FTP服务(文件传输协议),同样是建立在TCP协议上,同样分客
户端和服务器端,不同的是占用的TCP端口号是21。需要注意的是有些PC(如安装Server操作系统)默认是打开FTP服务器程序的,我们可以通过FTP协议访问这些PC上的文件。注意在这种情况下,在这个PC上就不能运行我们熟悉的FTP服务器软件(如WFTPD),如果运行,系统会提示FTP端口号已经被占用。
最后说一下SNMP协议,这个协议有些人不太熟悉,因为一般只用在需要SNMP网管的场合。SNMP的全称是简单网络管理协议,目前有V1,V2,V3三个版本,其中最常用的是V2版本。SNMP协议是建立在UDP协议之上的,而不是TCP协议。和Telnet及FTP协议类似,SNMP也有客户端和服务器端的概念,但要注意这里说的客户端和服务器端并不是我们的DA网管中的客户端和服务器端,而是DA服务器软件作为SNMP客户端,那什么是SNMP服务器端呢?是需要用SNMP协议访问的网络设备。至于DA 客户端,这是我们公司内的称呼,和SNMP协议没有关系。
关于SNMP协议的端口号,需要着重说一下,SNMP协议的知名端口号是UDP 161和162, 161端口时作为信息查询用的,162端口是作为告警信息上报用的。具体描述为:当SNMP客户端(DA Server)要查询SNMP服务器端(网络设备)上的信息时,会向SNMP服务器端发送
一个UDP查询数据包,这个数据包的目的端口号是161,源端口是随机选择的(假设是2001),取决于DA服务器软件的选择策略。也就是说,网络设备要打开UDP 161端口,来接收SNMP客户端发送过来的查询包。网络设备收到查询包后,会给客户端发送一个应答数据包,这个应答数据包的源端口号是161,目的端口号则是收到的查询包中的源端口号(如上例中的2001)。
至于162端口,则是用于主动告警上报的。上面讲的SNMP查询是SNMP客户端发起的,而告警上报是由网络设备(SNMP服务器端)主动发起的,也就是说,当网络设备有告警信息要上报给某个告警服务器(注意这个告警服务器是SNMP的客户端)时,会主动向这个服务器发送一个trap报文,这个报文是UDP报文,目的端口号是162,源端口号则是由网络设备来决定的。 另一个问题是:网络设备如何知道该向哪些告警服务器发送trap告警信息? 这个就是由我们在OLT上配置的trap server地址决定的。
二 MIB简介
SNMP协议的介绍见本文的第一部分。SNMP协议使用UDP161端口来对设备进行访问或控
制。对于被管理设备来说,如果要支持SNMP方式的访问,除了要支持SNMP协议外,更重要的是要支持多个MIB(管理信息库)文件,通过SNMP方式访问设备,实际上就是对这些MIB文件进行读取或设置。
相对来说,SNMP方式操作的设备信息和串口及Telnet方式是相互独立的,后两种方式是直接操作设备中的各种计数器或寄存器(通过串口或Telnet命令行)。而SNMP方式访问的是多个MIB文件。MIB文件使用一种树形的数据结构来保存设备中相关的信息,这种树形结构的外在表现形式就是一个点分的数字串,比如1.3.1.3.6……这种结构表示的是一种层次关系,比如说1.3.1.1表示的是端口1/1,那么1.3.1.2telnet协议全称表示的就是端口1/2,而1.3.2.1就可能表示是VLAN 1等等。每个数字串都表示MIB文件中的一个叶子节点,这个叶子节点用来表示设备中一个可以读写(或只读)的属性值。
从上面的描述中,我们就可以知道:MIB文件和设备的寄存器或计数器值是两套数据,支持SNMP访问方式的设备必须要负责维护这两套数据的一致性,即修改其中一套数据时,同时更新另外一套数据,否则就会出现数据矛盾或错误的现象。对于我们的设备来说,经常会出现的情况是:通过命令行设置了一个属性值,但是没有同步修改MIB文件中的值,或者没有提供这样的MIB文件,这时SNMP访问就会出现问题。
三 关于团体字的说明
1. 团体字的作用:
我们知道,通过Telnet方式访问设备时,需要输入用户名和密码,这是最基本的安全保证方式,同样通过SNMP方式访问设备时,也有一套基本的安全保证方式,这就是团体字(community string),通过SNMP方式访问设备时,必须附带上正确的团体字才能访问设备。和Telnet输入的用户名密码不同的是,SNMP的团体字初始时通常是public和private,而且经常会出现忘记修改SNMP团体字的情况(保持为默认团体字,这是很大的风险)。
2. 团体字的分类:
团体字分为两类:只读团体字和读写团体字。
使用只读团体字访问设备时,只能读取数值,不能进行设置;使用读写团体字访问时,既可以读,也可以写。
需要注意的是,有些MIB值本身是只读的,不能进行修改(如设备端口数目)。
四 MIB浏览器软件
由于MIB文件中的各个值都表示为一个点分数字串,所以读取和设置起来都不方便,为了便于对这些值进行读取,就需要使用专门的MIB浏览器软件。这些软件大多都是收费软件,但也有少数是可以免费使用的。
五 关于CACTI及MRTG
CACTI(仙人掌)软件是用来检测设备端口的流量的,这个软件实际上就是用SNMP协议来周期性地读取设备某个端口的收发包或收发字节统计值,根据这些值来描绘端口的流量图。
CACTI软件最大的特点是可以很直观地看到每天/每周/每月时间段内,端口流量图的变化,可以从这些统计中看到流量变化的规律,或者检测到流量异常现象。并且这些流量图可以方便地进行保存或打印。
CACTI软件可以方便地运行在装有Windows或Unix操作系统的主机上,支持图形设置界面。MRTG软件则是CACTI的早期版本,不能运行在Windowns主机上,并且只能用Unix命令行
进行设置。
六 关于SNMP的常见问题
1. 使用MRTG不能监控ONU的端口流量:
MRTG及CACTI上添加监控设备时,需要指定访问团体字和设备IP地址,组成一个联合字符串,形式为community-string@A.B.C.D。但是在我们的EPON设备上,对ONU的SNMP访问是通过OLT来实现的,具体来说通过SNMP访问ONU时,使用的设备IP地址是OLT的IP地址,依靠团体字来区分要访问哪个ONU,假设要访问ONU 5/1/3,那么访问团体字就是51003@public,在这样的情况下,在MRTG上添加ONU设备时输入的字符串中就有2个@符号:51003@public@A.B.C.D,MRTG是不支持2个@符号的形式的(会错误分解为51003和public@A.B.C.D),所以就无法正确检测ONU流量。
CACTI则消除了这个限制,可以支持2个@符号的字符串,所以用CACTI软件可以正确监控ONU流量。
2. 使用CACTI软件无法监控到OLT的端口流量,设备状态为down:
CACTI软件添加监控设备时,会先读取设备的一些基本信息,如果这些信息无法获取,CACTI会认为设备不能访问,就不会进行下面的操作。而我们的OLT设备早期版本中,有些MIB信息默认是空字符串,如syscontact,所以会导致CACTI认为OLT设备不可访问。
解决办法是给OLT配置上这些信息。
3. DA网管收不到OLT设备的告警:
检查一下OLT上的SNMP trap设置:trap服务是否打开?Trap server(DA服务器PC)的IP地址是否正确添加?
特别要提到的一种错误是:trap服务器设置命令中的团体字(community)应该是默认的public,目前还不支持修改成其它字符。很多客户将trap团体字(相关的UDP端口是162)和访问OLT的团体字(相关的UDP端口号是161)混淆了,在应该修改访问团体字的时候错误地修改了trap 团体字,造成DA服务器收到trap告警信息后因为团体字不对而丢弃了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论