背景
尽管被称作简单网络管理协议,SNMP确是在2021年的今天,仍然被使用的最为广泛的TCP/IP 应用协议,几乎所有的数据中心网络设备,以及支撑数据中心运作的基础架构设备,均使用SNMP协议与集中管理站进行通信。SNMP协议的完善,是Rust生态完善必不可少的一部分。
基础
SNMP数据用于SNMP管理站和SNMP代理之间,基于UDP协议
SNMP协议定义了4种核心协议数据单元(PDU):
- GET,用来得到一条管理信息
- GETNEXT,用来反复得到管理信息的串行
- SET,用来给一个被管理的子系统制造一个变化
- TRAP,用来报告一个关于被管理子系统的警告或其他异步事件
广为使用的协议有3个版本:
-
第一版 SNMP V1 SNMP的第一个RFC系列出现在1988年:
- RFC 1065:基于TCP/IP网络的管理信息的结构和认定
- RFC 1066:以基于TCP/IP网络的网络管理为基础的管理信息
- RFC 1067:一个简单网络管理协议
-
第二版 SNMP V2C SNMP v2c(基于社区的SNMP第二版 RFC 1441–RFC 1452)定义于RFC 1901–RFC 1908,一开始也非正式的被称为SNMP第1.5版。SNMPv2c包含SNMP第二版除了受争议的新SNMP第二版安全模型以外的部份,并以SNMP第一版的简单的基于社区的安全性方案取而代之。
-
第三版 Internet工程工作小组(IETF)把在RFC3411-RFC3418(STD0062)中定义的SNMP第三版作为2004年的标准版本。IETF将先前的版本定为“Obsolete”或“Historical”。
实际上,SNMP实现通常支持多个版本:典型的SNMPv1、SNMPv2c以及SNMPv3。
SNMP Agent 可以使用的数据被一个成为 mib 文件的树状描述数据结构定义,一般厂商都会把自己生产的设备的mib文件放在网上给集成商下载,例如: https://docs.paloaltonetworks.com/resources/snmp-mib-files.html
现状
目前rust已经很好的支持SNMP协议的数据解析,项目地址:https://github.com/rusticata/snmp-parser
该项目支持全部3个版本的SNMP协议解析,目前仍然是活动状态
SNMP Agent端
https://github.com/Svedrin/sunt 项目是活动状态,但是成熟度远远达不到可以使用的程度
SNNP Manager
https://docs.rs/snmp/0.2.2/snmp/ 这个项目仍然有很多限制,无法达到可以使用的级别
其它
一个SNMP v3客户端 https://github.com/davedufresne/modern_snmp
目标
使用 pure snmp 开发一个包含 Agent Side,和Manager Side(client), 支持SNMP v1/2c V3的 crate, 同时发布相关的工具,包括
- Mib文件GUI编辑 工具
- snmp 测试工具
项目将以 https://github.com/Svedrin/sunt 为基准,避免从零开始开发
团队
团队需要如下成员
- Rust开发人员
- 产品管理人员
- 文档管理人员
- 测试管理人员
开源项目全部为志愿者,没有报酬,需要每周至少4小时的时间来支持项目,无其他任何要求。项目团队将提供免费的vpn账号用于访问github, 并建立团队共有的.org展示网站
有兴趣的朋友请发邮件到efancier@hotmail.com, 让我们为Rust和开源开创一片小天地
盈利考虑
开源项目的盈利是一直被探索,永远没有被很好的解决的问题,这个项目也是一样,不过我们仍然有如下考虑:
- SNMP代码开源免费,但是相关的工具收费
- 提供付费技术支持,项目成员共享
- 寻求企业支持
- 团队成员将在项目网站上推广
Ext Link: https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol
评论区
写评论do call.