摘要:想象你走进一座巨型图书馆(这个图书馆就是一台网络设备,比如路由器),里面存放着海量书籍(这些书籍就是设备的各种数据,如CPU温度、内存使用量、端口状态等)。但如果没有分类规则,你根本无法找到想要的书。
想象你走进一座巨型图书馆(这个图书馆就是一台网络设备,比如路由器),里面存放着海量书籍(这些书籍就是设备的各种数据,如CPU温度、内存使用量、端口状态等)。但如果没有分类规则,你根本无法找到想要的书。
OID(Object Identifier) 就是这座图书馆的全球唯一图书编码系统,比如:1.3.6.1.2.1.1.5.0 代表“设备名称”1.3.6.1.2.1.25.3.3.1.2.1 代表“CPU温度”SNMP协议 则是图书管理员(Agent),当你用SNMP查询时,管理员会按照OID编码找到对应的书并交给你。你(管理端) 问图书管理员(SNMP Agent):“请问编号 1.3.6.1.2.1.1.5.0 的书在哪里?”管理员 根据OID编号,在书架上精确找到《设备名称》这本书,回答:“这本书的内容是Router-A。”如果编号不存在,管理员会回答:“抱歉,没有这本书。”(SNMP返回错误)示例OID:1.3.6.1.2.1.1.5.0(设备名称)OID描述示例返回值1.3.6.1.2.1.1.5.0设备名称“Router-A”1.3.6.1.2.1.1.1.0设备描述“华为AR2200…”1.3.6.1.2.1.2.2.1.10.1端口1的入向流量1024(字节)国家 → 省 → 市 → 区 → 街道 → 门牌号 这种层级结构就是OID的灵感来源。例如:现实地址:中国.广东省.深圳市.南山区.科技园.腾讯大厦SNMP OID:.1.3.6.1.2.1.1.5.0(设备名称)每一级数字代表一个明确的分类,最终指向唯一数据点。
由国际标准化组织(ISO)和互联网工程任务组(IETF)统一分配,确保无冲突。示例:所有网络设备的CPU温度OID都是 .1.3.6.1.2.1.25.3.3.1.2(来自标准MIB库)。OID的每一层数字都有明确含义(类似域名解析):
根(root)├── 1 (ISO) │ ├── 3 (ISO-identified-orgs)│ │ └── 6 (US DoD → 互联网的起源)│ │ └── 1 (internet)│ │ ├── 2 (mgmt → IETF管理的设备)│ │ │ └── 1 (mib-2 → 最常用标准库)│ │ │ ├── 1 (system组)│ │ │ │ └── 5 (sysName → 设备名称)│ │ │ └── 25 (hrDevice组 → 硬件信息)厂商可申请私有分支添加自定义OID。华为私有OID示例:.1.3.6.1.4.1.2011(华为企业编号为2011)。末尾数字区分同类对象的不同实例。例如:.1.3.6.1.2.1.2.2.1.10.1 → 端口1的入向流量.1.3.6.1.2.1.2.2.1.10.2 → 端口2的入向流量SNMP操作OID作用类比GET精确查询单个OID的数据问:“深圳市南山区人口是多少?”OID描述数据类型示例值1.3.6.1.2.1.1.1.0设备描述STRING“Huawei AR2200”1.3.6.1.2.1.1.3.0设备运行时间Timeticks123456 (秒)1.3.6.1.2.1.2.2.1.10.1端口1接收字节数Counter3210240001.3.6.1.2.1.25.3.3.1.2.1CPU1温度INTEGER45 (℃)snmptranslate -On -IR sysName# 输出:1.3.6.1.2.1.1.5使用snmpwalk自动发现设备所有OID:snmpwalk -v 2c -c public 192.168.1.1不会:ISO严格分配顶级分支(如华为固定使用.1.3.6.1.4.1.2011)。查厂商MIB文档,或使用工具如MIB Browser。关键总结:OIDs是SNMP的基石,理解它就能精准控制任何支持SNMP的设备。
以Linux的snmpwalk命令为例:
# 查询设备的所有系统信息(OID从1.3.6.1.2.1.1开始)snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.1输出示例:
1.3.6.1.2.1.1.5.0 = STRING: "Router-A"1.3.6.1.2.1.1.6.0 = STRING: "机房A-3F"来源:小宇科技每日一讲