SNMP 协议 OID的设计思路

时间:2022-05-04 10:08:53

SNMP(Simple Network Management Protocol简单网络管理)协议 是现在网络管理系统(NMS)监控网络设备状态的协议,是现在网管事实上的标准,如果网络设备不支持SNMP协议的话,那就好花费大量的精力来说服NMS厂商来支持你的设备,这样得不偿失。

 

SNMP支持的操作和操作方法很简单的(当然协议本身还是不简单的)。

SNMP的操作:GET ,GETNEXT, SET, TRAP

SNMP将被管理对象用一个树来组织,被管理对象用OID表示(看不懂的童鞋先去看看Google百度一下snmp),通过snmp操作oid即可得到网络管理的数据。

 

oid长这样“.1.3.6.1.2.1.1.2.0”  子树 1 -> 3 -> 6 -> 1 -> 2 -> 1 -> 1 -> 2 

 

oid的设计,在开发snmp agent中合理的设计OID让它发挥强大的查询功能。

(1)最简单的查找对象值 GET .1.3.6.1.4.1.123.2.1.2  从根节点到叶子节点 

(2)查找表格中对象值 [表格的表现力是非常强大的,想想数据库就是一张一张的表格],snmp协议当然要用表格来组织如此多的被管理的数据,而且通过GET GETNEXT oid可以完成各种形式完成对表格数据车查询,(当然一次只能查到一个被管理对象的数据,所以比较简单)。

      通过二维表格定位查询 GET .1.3.6.1.4.1.123.3.column-index.row-index 倒数第二位是列名的索引,最后一位是行索引

      通过某个字段索引比如ID号,可以像GET .1.3.6.1.4.1.123.3.column-index.id这样获取

                            比如IP地址,可以像 GET .1.3.6.1.4.1.123.3.column-index.192.168.1.254这样获取

                            比如 名称字符串,可以像这样GET .1.3.6.1.4.1.123.3.column-index.length.aa.aa. ... .aa 其中length为名称字符串的长度,.aa.aa. ... .aa为名称的ascii码。

       通过支持GETNEXT .1.3.6.1.4.1.123.3.column-index.0.192.168.1.254 得到值并返回OID .1.3.6.1.4.1.123.3.column-index.index.192.168.1.254 如果没有值就返回 .1.3.6.1.4.1.123.3.column-index.first-row-index(表格第一行的值和oid),常用于在表中遍历ip地址为192.168.1.254的所有的字段值。

(3) 多个查询关键字组合

   关键字的类型 :int32:直接使用即可,如123

                        ip地址:也可以直接使用,就是四个int32的组合而已,如192.168.1.254

                        字符串:使用字符串个数+字符串的ascii码。 aa 表示为“2.97.97”

 查询的规则要制定好,顺序不能变,字符串的最好放在最后一个。如我要查询ip为192.168.1.254上用户名为aa的用户的在线时间可以这样".1.3.6.1.4.1.123.3.在线时间.192.168.1.254.2.97.97"

 还可以定义一下关键词的类型,比如1=int32,2=ip地址,3=字符串,可以这样 “".1.3.6.1.4.1.123.3.在线时间.3.2.97.97.2.192.168.1.254。

 

还有没有别的oid的设计方法漏掉的,希望大家能够补充。