神州龙芯GSC3280开发板下Net-Snmp服务的移植

1 篇文章 0 订阅
1 篇文章 0 订阅

一、SNMP协议介绍

1.1 网络管理模型

网络管理分为四部分:

(1)被管设备:即你想要监视的设备。

(2)网关代理:它运行在被管理设备上,用来跟踪被管理设备状态,读写被管理设备参数的特殊软件。

(3)网管工作站:它与在不同的被管理设备中的网管代理通信,通过网管代理来管理被管设备。

(4)网络管理协议:网管工作站和网管代理用来交换信息的一套规则。

1.2 通信协议

        简单网络管理协议(Simple Network Manngement Protocal,SNMP)是一种应用层协议,它被设计与下层协议无关,因此,SNMP可以在IP、IPX、AppleTalk、OSI以及其它的传输协议上被使用。SNMP是无连接协议,这种机制减轻了网络管理的负担,它不必为了建立和维护可靠连接而耗费资源。而尽量少给被管理网络怎加负担符合了网络管理的原则。

SNMP是一系列组和规,它主要由三个部分组成。
        (1)管理信息结构(Structure of Management Information,SMI)

        (2)管理信息库(Management Information Base,MIB)

        (3)简单网络管理协议(SNMP)

        SNMP的定义与协议的运行方式被详细的描写在RFC1155、RFC1212、RFC1157、RFC1213四份文件中,其中RFC1155和RFC1212是关于SMI的,RFC1213定义了MIB,而SNMP协议则被定义在RFC1157中。

管理信息结构SMI:

        管理信息结构SMI定义了被管对象的规则说明。SMI中没有任何对象的实例,它只关心抽象的对象类型。每个对象都有自己的名字、语法和编码模式。名字是用来标识对象的,它在系统中必须唯一。对象类型的语法通过ASN.1定义。编码则是通过基本编码规则(Basic Encoding Rule ,BER )来完成,它用来标记、长度和值(TLV)对在SNMP协议间传递的信息进行编码。

管理信息库:

        若管理信息结构SMI是一套规则,那么管理信息库MIB则是根据这套规则定义出来的一组对象。网络中的被管对象就是通过MIB被访问。Internet管理机构定义了Inetrnet管理信息库,它有俩个版本,一个是MIB-I,另一个是MIB-II.

        MIB中的对象是以树状分层结构进行组织的,如下图所示:

         MIB树的分支实际上就是数据对象的逻辑分组。而树叶就是被管对象。为了便于使用,MIB树的每个分支都有一个专用的名字和一个数字形式的对象标识符(Object Identifier,OID)例如:system组的sysDescr对象,他的OID是1.3.6.1.2.1.1.1,也可以用iso.org.dod.internet.mdmt.mib-2.system.syeDescr来表示。MIB中对象的定义,尽可能涵盖所有的网络设备功能,不足的部分又厂商自定义,及私有MIB。私有MIB属于MIB中对象{1.3.6.1.4.1},即enterprises(企业)。MIB与数据库的区别为:数据库存放的是静态的数据,而MIB是不会存储数据的,MIB中定义的对象只是提供了一条访问被管对象的路径。当通过iso.org.dod.internet.mdmt.mib-2.system.sysName去读取设备的系统名称的时候,MIB并不会给你结果,而是网管代理根据你提供的“路径”去拿sysName的数据给你。具体数据是什么存放在哪里,MIB是不知道的。

SNMPv1通信模型:

Snmpv1消息格式:

        SNMPvl采用基于共同体(Community)的访问策略,同时它的安全性也是由共同体来管理的。SNMP管理站(SNMP Manager), SNMP代理(SNMP Agent)和共同体名称(Community Name)构成了一个共同体。只有在同一个共同体里面的SNMP管理站和SNMP代理才能相互通信。这种通信可以包括来自SNMP管理站的询问消息、来自SNMP代理的应答消息或者来自代理给管理站的告警(Trap)消息。一条SNMP消息由三个部分组成:版本(Version)、共同体名称(CommunityName)和SNMP协议数据单元(SNMP Protocol Data Unit, SNMP PDU),其结构如

(1)版本:用于说明现在使用的是哪个版本的SNMP协议。"0”表示SNMPvl。

(2)共同体名称:当前使用的共同体名称,通信双方必需事先知道这个名称才能进行通信。

(3)SNMP PDU: SNMPv1 的PDU 有五种类型,它们是: GetRequest-PDU,GetNextRequest-PDU , GetResponse-PDU , SetRequest-PDU 和Trap-PDU。

Snmpv1的5钟协议数据单元(PDU):

        SNMPv1规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理进程之间进行信息交换。下图描述了SNMP的这5种报文操作。

        一般情况下,在代理进程端是用161端口来接收get或set报文,而在管理进程端是用162端口来接收trap报文。下面介绍封装成UDP数据报的5种操作的SNMP报文格式。

 Get/set PDU:

Trap PDU:

 PDU类型:五种PDU类型在RFC1157中被定义成如下形式。

 

(1)Request ID:  用于跟踪消息,确定它是否被成功收到。这是因为SNMP协议是无连接的,不保证数据的可靠传输,对于消息的可靠性要系统自己来完成。

(2)错误状态:  用一个不为零的数来指示是否有错误发生。

(3)错误索引:  对错误状态的补充说明。

(4)变量绑定列表: 由多个变量绑定组成,每个变量绑定由对象标识符和它的值组成。

(5)时间截:  从上一次初始化以来经历的时长。

 SNMPv2和SNMPv3:

        SNMPv2 最大的改动在于提供了SNMPv1所没有的安全功能。但是并没有得到实施,它的最终版本SNMPv2c还是基于共同体的。另外, SNMPv2c对SNMPv1不向后兼容。

        SNMPv3主要改动在安全方面。SNMPv3采用基于用户的安全模型(USM)和基于视图的访问控制模型(VACM)。

二、Net-Snmp-5.7.1源码包下载编译配置

2.1 下载

wget https://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.1/net-snmp-5.7.1.tar.gz

2.2 安装

tar zxvf net-snmp-5.7.1.tar.gz

2.3 配置

查看配置:./configure --help

创建snmp.sh脚本进行编译配置:

--host=mipsed-linux                                         指定编译好的程序在什么类型的机器上运行

--target=mipsel-linux                                        指定目标系统

CC=mipsel-linux-gcc                                        确定交叉编译工具

--disable-ipv6                                                   禁止ipv6

--with-endianness=little                                    指定目标机为小端模式

--enable-mini-agent                                          编译最小snmp代理

--perfix=/usr/snmp                                            安装路径

LDFLAGS="-static"                                           静态编译                                      

--with-default-snmp-version="2"                       默认snmp版本  

--disable-embeddedpp-perl                              禁用SNMP代理和snmptrapd中的嵌入式Perl

--without-perl-modules                                     不编译perl模块

./snmp.sh  (修改权限:chmod 777 snmp.sh) 

脚本执行后按回车选择默认配置跳过:

(1)default version of-snmp-version(3):

(2)System Contact Information (@@no.where)(配置该设备的联系信息):

(3)System Location (Unknown)(该系统设备的地理位置):

(4)Location to write logfile (日志文件位置):

(5)Location to Write persistent(数据存储目录):
 

修改EXAMPLE.CONF文件,并修改其配置文件名为snmpd.conf 修改内容如下:

mv EXAMPLE.CONF   snmpd.conf

修改访问控制,所有用户都可访问

 指定代理端板卡的IP

 选择snmp协议版本

2.4 移植

由于snmpd、snmpwalk过大,所以对其进行压缩处理:

mipsel-linux-strip    /usr/snmp/snmpd

mipsel-linux-strip    /usr/snmp/snmpwalk

将处理后的snmpd、snmpwalk拷贝移植到gsc3280板子所对应的文件系统下:

注意:snmp编译安装的路径应该与移植后的系统路径移植(板子这端的文件系统),否则可能会报警告错误。

 cp   /usr/snmp/sbin/snmpd    /home/whh/WORK/ROOTFS/all_rootfs/usr/snmp/sbin/    -frd

 cp   /usr/snmp/bin/snmpwalk    /home/whh/WORK/ROOTFS/all_rootfs/usr/snmp/sbin/    -frd

 cp   snmd.conf         /home/whh/WORK/ROOTFS/all_rootfs/usr/snmp/     -frd

 cp   /usr/snmp/share/snmp/mibs         /home/whh/WORK/ROOTFS/all_rootfs/usr/snmp/     -frd 

2.5 SNMP测试

启动snmpd服务:

/usr/snmp/sbin/snmpd  -c  /usr/snmp/snmpd.conf  -M   /usr/snmp/share/snmp/mibs   & 

板子端测试:

/usr/snmp/sbin/snmpwalk -v 2c -c public 192.168.123.155

若需要在PC端测试,则需要重新GCC编译net-snmp即可,之后更改PC端IP与板子端IP同一网段即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值