1 Star 2 Fork 0

ssp / snmpv3-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

snmpV3-sdk——snmpV3协议sdk

1、实现功能
  • SnmpV3 priv-auth双重账户验证模式
  • SnmpV3协议消息收发模块
    • SnmpSession
    • SnmpSender(NIO)
2、采用的线程模型及IO模型

snmp协议采用UDP通信,UDP是TCP/IP协议栈传输层无连接协议,基于socket,可实行多路复用

基于udp的snmp协议IO模型设计

  • 一对一:SnmpSession,创建时绑定本地udp端和接收端,一个session就是一个逻辑链路,连接两端.
  • 多对多: upd-channel NIO模式,SnmpSender + NioTransportMapping,本地起用多个多路复用器,并分别分配一个独立线程来轮询其选择器, 每个channel创建时会选择一个selector选择器来注册,这样就可同时监听大批量channel的IO事件,设计参考Netty#NioEventLoop.

线程模型

一个特定协议的网络通信服务主要功能可分3部分:(1)网络IO;(2)协议数据编解码;(3)对解码后的协议数据进行业务处理。 从I与O两个视角看线程模型:

  • Output——发送
  • 同步模型:协议数据编码封装与发送动作由send操作调用者完成。缺点:发送动作是耗时阻塞任务,会阻塞调用线程直到write发送动作完成
  • 纯异步模型:send操作调用者只管将发送信息(包括:数据内容、接收方信息)封装为发送任务提交到后置任务队列即可, 协议数据编码封装与发送动作的完成由后置线程接管,调用者立即返回
  • 半异步模型:send操作调用者负责协议数据编码封装和发送任务提交,发送动作的执行由后置线程完成, 从而避免将调用者阻塞在耗时较高的实际发送操作上
  • Input——接收
  • 同步模型:网络数据读操作与数据解码及解码后的协议数据处理在同一根线程内相继完成
  • 一对多——读操作线程-解码操作线程池隔离:1根IO线程 + 1个编解码线程池
  • 多对多——读操作线程池-解码线程池:1个IO线程池 + 1个编解码线程池
3、使用示例

详见测试用例(SnmpSenderTest)

SnmpSender snmpSender = SnmpSender.builder()
                .ioStrategy(IoStrategy.NIO)             //NIO策略
                .multi(1)                               //IO线程组线程个数(决定起多少selector选择器)
                .workerPool("snmp-msg-process-pool",   //后置异步解码线程池
                        1, 3,
                        Duration.ofSeconds(60),
                        1024
                )
                .retry(0)                               //失败重试次数
                .reqTimeoutMills(800)                   //请求超时时长
                .nonRepeaters(0)                        //PDU#nonRepeaters,保持默认0
                .maxRepetitions(24)                     //PDU#maxRepetitions
                .usmUser(Arrays.asList(                 //snmpV3 USM认证账户信息注册
                        new UsmUserEntry("udp:192.168.1.1/161",
                                "user0",
                                UsmEncryptionEnum.SHA, "123456789",
                                UsmEncryptionEnum.AES128, "123456789"
                        ))
                )
                .build();

空文件

简介

1、封装实现snmpV3 priv-auth双重账户验证模式。 2、封装协议消息收发模块 3、基于开源依赖`snmp4j`. 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/ssp198/snmpv3-sdk.git
git@gitee.com:ssp198/snmpv3-sdk.git
ssp198
snmpv3-sdk
snmpv3-sdk
master

搜索帮助