使用MIB builder自定义物联网网关的MIB结构
警告信息在分组下引入相符的gruop组件,然后将该分组下的子叶加入分组即可解决!
文章目录
- 物联网网关初识(了解即可)
- IoT的通用MIB库结构
- MIB Builder开发流程指导
- 问题总结
- 子叶没所属分组
- 值范围不为0
物联网网关初识(了解即可)
- 网关又称网间连接器、协议转换器。简单说,物联网网关是一台智能计算机,作为管理所有连接物联网设备、传感器和执行器的中央集线器。
- 它充当入口,聚合、处理和过滤各种物联网设备发送的所有数据和信息,然后再发送到云端。更先进的物联网网关能够执行复杂的边缘计算应用程序,例如人工智能。在这种情况下,物联网网关在边缘处理大部分数据,并且能够在边缘运行实时决策,而无需云的任何帮助。
- 物联网网关特点
- 工业级设计,选用高清触摸屏
- 物联网网关存储量大,数据不会丢失
- 支持多种通讯协议,通讯效率高和方便
- 物联网网关功能
- 协议转换能力:从不同的感知网络到接入网络的协议转换、将下层的标准格式的数据统一封装、保证不同的感知网络的协议能够变成统一的数据和信令;将上层下发的数据包解析成感知层协议可以识别的信令和控制指令。
- 可管理能力:首先要对网关进行管理,如注册管理、权限管理、状态监管等。网关实现子网内的节点的管理,如获取节点的标识、状态、属性、能量等,以及远程实现唤醒、控制、诊断、升级和维护等。由于子网的技术标准不同,协议的复杂性不同,所以网关具有的管理性能力不同。
- 广泛的接入能力:物联网网关进行标准化工作,如传感器工作组,实现各种通信技术标准的互联互通。
IoT的通用MIB库结构
通用物联网(IoT)网关设备管理的MIB库设计,应当涵盖设备的基本配置、状态信息、性能指标和安全管理等方面。以下是一个设计示例及其设计原因:
-
设备基本信息(deviceInfoGroup)
- 设备型号(deviceModel)
- 序列号(serialNumber)
- 固件版本(firmwareVersion)
- 启动时间(uptime)
**设计原因:**这些信息为网络管理员提供了设备的基本身份信息,便于跟踪和管理设备。
-
网络配置信息(networkConfigGroup)
- IP地址(ipAddress)
- 子网掩码(subnetMask)
- 默认网关(defaultGateway)
- DNS服务器(dnsServers)
**设计原因:**网络配置是设备通信的基础,这些信息是进行故障诊断和网络设置的关键信息。
-
设备状态信息(deviceStatusGroup)
- CPU使用率(cpuUtilization)
- 内存使用率(memoryUtilization)
- 存储空间使用率(storageUtilization)
- 网络接口状态(interfaceStatus)
**设计原因:**这些状态信息可以帮助网络管理员监控设备性能,并及时发现和解决问题。
-
设备性能指标(devicePerformanceGroup)
- 数据吞吐量(dataThroughput)
- 数据包丢失率(packetLossRate)
- 响应时间(responseTime)
- 设备温度(deviceTemperature)
**设计原因:**这些性能指标对于确保设备能够高效稳定运行至关重要,同时有助于规划网络资源和容量。
-
连接的设备信息(connectedDevicesGroup)
- 连接设备的数量(connectedDevicesCount)
- 每个设备的标识信息(deviceId)
- 每个设备的状态信息(deviceStatus)
- 每个设备的网络统计信息(deviceNetStats)
**设计原因:**IoT网关通常连接多个设备,管理这些设备的信息对于整个网络的健康至关重要。
-
安全管理(securityManagementGroup)
- 认证错误计数(authErrorCount)
- 密码强度设置(passwordStrengthOption)
- 加密标准使用情况(encryptionStandardsUsed)
- 安全事件日志(securityEventLog)
**设计原因:**安全性是物联网环境中的一个重要话题,这些指标可以帮助网络管理员维护网络的安全状态。
-
远程管理(remoteManagementGroup)
- 支持的远程管理协议(supportedRemoteProtocols)
- 远程管理状态(remoteManagementStatus)
- 远程更新能力(remoteUpdateCapability)
**设计原因:**远程管理能力对于分散布置的物联网设备而言非常重要,它允许管理员从远端配置和更新设备。
-
事件和告警(eventsAndAlarmsGroup)
- 事件日志(eventLog)
- 当前活动告警(currentActiveAlarms)
- 历史告警记录(historicalAlarmsRecord)
**设计原因:**事件和告警记录对于及时响应设备和网络问题是必需的,它们可以帮助快速定位问题并采取相应行动。
注意:每个组都应该定义为一个独立的MIB模块,使用Object Identifiers(OIDs)进行组织,确保与其他MIB库的唯一性和互操作性。这样设计的目的是为了提供一个全面的视图来管理和监控IoT网关设备的运行状况。
MIB Builder开发流程指导
- 使用MIB Builder定义物联网网关设备的MIB数据结构,需要遵循结构化的定义语法(通常是SMIv2, Structure of Management Information Version 2)。
- MIB定义是用asn.1(Abstract Syntax Notation One)语言书写的,它定义了如何管理网络对象及其层次结构。
设计一个MIB包括以下几个步骤:
-
确定OID树结构: 。通常,私有企业会从
1.3.6.1.4.1
(iso.org.dod.internet.private.enterprise
)后附加一个为企业分配的特定数字,作为他们私有分支的起点。使用文档参考MG-SOFT MIB builder and compile- 注意导入系统SNMPv2-SMI.my的enterprise进行开发
yourCompany OBJECT IDENTIFIER ::= { enterprise 9999 } iotGatewayMIB OBJECT IDENTIFIER ::= { yourCompany 1 }
-
定义SMI结构: 使用结构化管理信息(SMI)标准定义数据类型、模块结构和命名规则。
-
定义MIB模块: 包括MIB的版本、导入的依赖项、命名空间等。
IoT-GATEWAY-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, ... FROM SNMPv2-SMI ...;
-
定义模块身份(Module Identity)和更新修订记录: 这为整个MIB模块提供了身份和版本历史。
iotGateway MODULE-IDENTITY LAST-UPDATED "202303150000Z" ORGANIZATION "Your Company Name" CONTACT-INFO "Your Contact Information" DESCRIPTION "MIB for managing IoT Gateway devices." REVISION "202303150000Z" DESCRIPTION "Initial version." ::= { iotGatewayMIB 1 }
-
定义主要对象组: 按照功能对对象进行分组,如之前所述的各个分组。
-
定义具体的管理对象: 这些是具体的OIDs,代表了网关设备的各种属性和可管理的数据点。
deviceModel OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "A textual description of the device model." ::= { deviceInfoGroup 1 }
-
定义主要功能描述:
- 设备管理(如配置、状态)
- 性能监控(如CPU、内存使用)
- 网络管理(如连接状态、IP配置)
- 安全特性(如访问控制、加密)
- 告警和事件处理
-
定义Trap事件: Trap是SNMP中用于异步通知管理工具的机制。您需要定义特定情况下将触发的Trap事件。
iotGatewayHighCpuUsage NOTIFICATION-TYPE OBJECTS { cpuUtilization } STATUS current DESCRIPTION "This trap is sent when the CPU usage exceeds a predefined threshold." ::= { iotGatewayTraps 1 } -- Define 'iotGatewayTraps' as a separate identifier within the iotGateway MIB
-
结束MIB定义:
END
下面是各个组的一些定义示例和指导:
- 设备基本信息 (deviceInfoGroup)
deviceInfoGroup OBJECT IDENTIFIER ::= { yourMIBroot 1 }
deviceModel OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The model identifier for the IoT Gateway."
::= { deviceInfoGroup 1 }
serialNumber OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The serial number of the IoT Gateway."
::= { deviceInfoGroup 2 }
firmwareVersion OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The firmware version running on the IoT Gateway."
::= { deviceInfoGroup 3 }
uptime OBJECT-TYPE
SYNTAX Timeticks
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The time since the IoT Gateway last restarted."
::= { deviceInfoGroup 4 }
- 网络配置信息 (networkConfigGroup)
networkConfigGroup OBJECT IDENTIFIER ::= { yourMIBroot 2 }
-- Define objects such as ipAddress, subnetMask, etc., in a similar manner.
- 设备状态信息 (deviceStatusGroup)
deviceStatusGroup OBJECT IDENTIFIER ::= { yourMIBroot 3 }
-- Define objects such as cpuUtilization, memoryUtilization, etc., in a similar manner.
- 设备性能指标 (devicePerformanceGroup)
devicePerformanceGroup OBJECT IDENTIFIER ::= { yourMIBroot 4 }
-- Define objects such as dataThroughput, packetLossRate, etc., in a similar manner.
- 连接的设备信息 (connectedDevicesGroup)
connectedDevicesGroup OBJECT IDENTIFIER ::= { yourMIBroot 5 }
-- Define objects such as connectedDevicesCount, deviceId, etc., in a similar manner.
- 安全管理 (securityManagementGroup)
securityManagementGroup OBJECT IDENTIFIER ::= { yourMIBroot 6 }
-- Define objects such as authErrorCount, passwordStrengthOption, etc., in a similar manner.
- 远程管理 (remoteManagementGroup)
remoteManagementGroup OBJECT IDENTIFIER ::= { yourMIBroot 7 }
-- Define objects such as supportedRemoteProtocols, remoteManagementStatus, etc., in a similar manner.
- 事件和告警 (eventsAndAlarmsGroup)
eventsAndAlarmsGroup OBJECT IDENTIFIER ::= { yourMIBroot 8 }
-- Define objects such as eventLog, currentActiveAlarms, etc., in a similar manner.
问题总结
子叶没所属分组
-
警告信息
WARNING: OBJECT-TYPE "historicalAlarmsRecord" is not included in any group defined in the current module.
-
在分组下引入相符的gruop组件,然后将该分组下的子叶加入分组即可解决!
值范围不为0
- 注意自定义范围时,将起始值设置为非0即可!
更多推荐
所有评论(0)