简单网管协议代理 SNMP PROXY系统设计

 
 信息来源于:上海电信信息网络部

简单网管协议代理 SNMP PROXY系统设计

廖文昭

摘要:简单网络管理协议(SNMP)是目前TCP/IP网络中应用最为广泛的网络管理协议,并成为了网络管理的事实上的标准。基于基础SNMP协议的网管系统中,会碰到跨用户私有网络管理的问题,本文提出的是一种利用SNMP数据绑定区加载目的端设备信息进行访问的代理机制,在此基

础上实现的SNMP PROXY系统可以完成跨私有网络的网络管理。

关键词:网管协议、SNMP 、SNMP PROXY系统

 

一、 前言

        简单网络管理协议(SNMP)是目前TCP/IP网络中应用最为广泛的网络管理协议。1990年5月,RFC 1157定义了SNMP(SIMPLE  NETWORK MANAGEMENT PROTOCOL)的第一个版本SNMPv1。RFC 1157和另一个关于管理信息的文件RFC 1155一起,提供了一种监控和管理计算机网络的系统方法。1996年发布的SNMPv2c是 SNMPv2的修改版本,功能得到了极大的增强,SNMP协议也得到了广泛应用,并成为网络管理的事实上的标准。
在基于SNMP协议的网管系统中,经常会碰到跨私有网络管理的问题。即被管理节点处于一个私有网络内,不能被外部管理站直接访问,从而无法被管理的问题。本文提出的是一种基于SNMP协议的代理访问机制,利用NAT等技术使运行SNMP PROXY进程的服务器可以与处于公网上的管理站以及私有网络中的网络设备通信。SNMP PROXY充当通信代理,这样就可以解决多个私有网络中设备管理的问题。

二、简单网络管理协议SNMP简介

       SNMP最重要的管理思想就是要尽可能简单,以便缩短研制周期。SNMP的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。在网络正常工作时,SNMP可实现统计、配置和测试等功能。当网络出故障时,可实现各种差错检测和恢复功能。虽然SNMP是在TCP/IP基础上的网络管理协议,但也可扩展到其他类型的网络设备上。
       使用SNMP进行网络管理需要下面几个重要部分:管理站Management Station,网管代理Agent,管理信息库MIB和网络管理工具。整个系统必须有一个管理站,它实际上是网控中心。在管理站上运行管理进程Manager。在每个被管对象中一定要有代理进程Agent。管理进程和代理进程利用SNMP报文进行通信,而SNMP报文一般使用UDP来传送。
       被管理节点是一种网络设备,如主机,路由器等,这些设备都必须能够接收管理站发来的信息,它们的状态也必须可以由管理站监视。被管理节点上的代理响应管理站的请求进行相应的操作,也可以在没有请求的情况下向基站发送信息。
        MIB是对象的集合,它代表网络中可以管理的资源和设备。每个对象基本上是一个数据变量,它代表被管理的对象的一方面的信息。
       注意到本文提出的SNMP的代理系统SNMP PROXY与SNMP协议内部规定的代理Agent是不同的概念。SNMP Agent是响应管理站Manager的请求,进行相应操作。而SNMP PROXY是为了Manager与Agent网络通信的代理,负责他们之间通信数据转发的作用。
三、SNMP 协议数据单元(PDU)的分析

      首先,让我们来了解一下SNMP协议报文类型,以及报文的结构。
SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
 get-request操作:从代理进程处提取一个或多个参数值
 get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值
 set-request操作:设置代理进程的一个或多个参数值
 get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。
 trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
     前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图1描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161进行接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

图1 SNMP的5种报文操作

图2是封装成UDP数据报的5种操作的SNMP报文格式。从图中可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定区Varbind区域。
(1)公共SNMP首部
共三个字段:
 版本 
写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
 共同体(community)
共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
 PDU类型
根据PDU的类型,填入0~4中的一个数字,其对应关系如表1所示意图。

 

图2 SNMP报文格式

PDU类型

名称

0

get-request

1

get-next-request

2

get-response

3

set-request

4

trap

(2)get/set首部
 请求标识符(request ID)
这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。
 差错状态(error status)
由代理进程回答时填入0~5中的一个数字。
 差错索引(error index)
当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。
四、SNMP  PROXY系统的设计思路

        SNMP PROXY系统是为了解决网络设备跨多个用户网络的问题。我们来看如图3 一个典型的应用场景。

 

图3  SNMP PROXY 系统典型应用场景

        用户端设备放置于用户的私有网络内,不仅存在用户端网络设备系统服务器不可直接访问,而且存在私有网络地址冲突,重复等问题。在这种情况下,利用基础的SNMP网管协议,网管系统无法管理处于私网的设备。SnmpProxy系统的解决方案是:在用户端的私有网络内部署一台系统的采集探头,使用NAT技术,使该探头能被外部网络设备访问。探头作为代理服务器,运行SNMP PROXY 代理程序,完成对用户设备SNMP信息采集的代理作用。

 

 图4  SNMP PROXY 系统结构图

        SNMP PROXY系统需要解决的关键问题有:1)如何在Manager的request(包括get request、get-next request、set request)报文中加入目的网络设备的信息(也就是处于用户私网内网络设备的IP地址、端口、共同体community等信息),以便SNMP PROXY进程能解析出需要的采集参数。2)如何在SNMP PROXY进程 中将采集的结果回传给Manager。
         如图2  SNMP 报文结构中,除了公共SNMP首部和get、set首部以外,就是变量绑定区。变量绑定区由一系列的变量名、变量值对(Varbind)构成,是SNMP报文的负载区。在系统实现中,可以根据需要在付载区添加一些变量绑定Varbind。
        这样,就为解决第一个问题提供了思路,我们可以将目的设备信息加入到snmp协议报文的变量绑定区内。为此,我们来了解一下SNMP协议的管理信息结构SMI:SNMP中,数据类型并不多。这里我们就讨论这些数据类型,而不关心这些数据类型在实际中是如何编码的。

 

 INTEGER(整形)
 OCTER STRING(0或多个8 bit字节,每个字节值在0~255之间。对于这种数据类型和下一种数据类型的BER编码)。
 DisplayString(0或多个8bit字节,每个字节必须是ASCII码)。
 OBJECT IDENTIFIER
 NULL(代表相关的变量没有值。例如,在get或get-next操作中,变量的值就是NULL)。
 IpAddress(4字节长度的OCTER STRING,以网络序表示的IP地址。每个字节代表IP地址的一个字段)。
 PhysAddress(OCTER STRING类型,代表物理地址(例如以太网物理地址为6个字节长度)。
 Counter(非负的整数,可从0递增到232—1,达到最大值后归0)。
 Gauge (非负的整数,取值范围为从0到4294976295 或增或减,达到最大值后锁定直到复位
 TimeTicks(时间计数器,以0.01秒为单位递增)
 SEQUENCE (数据类型与C语言中的structure”类似)。
 SEQUENDEOF (一个向量的定义,其所有元素具有相同的类型)。

 

     在管理站只需将目的设备的地址信息编码成IpAddress类型数据,将community信息编码成OCTER STRING类型数据,添加到数据绑定区的开始的两个Varbind区域。这样就成功的将目的设备的信息添加到了SNMP的协议数据报中。
     在代理程序 SNMP PROXY 端,将数据绑定区开始的两个Varbind取出,即可解析出采集参数。利用解析出来的采集参数,重新生成新的数据包头,进行数据的转发,也就是实施真正的数据采集。
     转发了采集请求以后,SNMP PROXY进程会等待从Agent上传回来的采集结果。收集到了结果以后,SNMP PROXY进程会重新生成SNMP数据包的包头,将结果传回管理站。这样就解决了第二个问题。
      SNMP PROXY系统中所有的通信是标准的SNMP通信。 SNMP PROXY进程既充当 Manager又充当Agent,同时扮演两个角色。它接受管理站的请求命令,以Manager的身份向远程Agent请求数据,再将应答传给管理站。

 

五、结束语

       SNMP协议已经成为了目前事实上的网络管理的标准,越来越多的网管系统都构建在SNMP协议之上,但一个大型的网管系统经常要管理多个私有网络的设备。SNMP PROXY系统设计能比较圆满地解决这一问题。在我们最近的项目中,已经成功地实现了这一设计,SNMP PROXY系统设计为跨私有网络的网络管理提供了新的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值