PySNMP中文5、文档-PySNMP的架构

6 篇文章 1 订阅

PySNMP的架构

我们可以从SNMP协议演进的角度来看待PySNMP的内部结构。
SNMP多年来一直在发展,从一种相对简单的数据结构和检索方法(SNMPv1/v2c)一直发展到强大的开箱即用加密的可扩展和模块化框架(SNMPv3)。

按照从最古老的SNMP服务到最新的SNMP服务的顺序,以下是PySNMP API的不同层次:

  • 最基本和低级的是SNMPv1/v2c协议范围。在这里,程序员应该构建/解析SNMP消息及其有效负载——协议数据单元(PDU),处理协议级错误,传输问题等等。尽管有相当复杂的处理,但只要不需要MIB访问或者SNMPv3支持,这个API可能提供了最好的性能、内存占用和灵活性。
  • SNMPv3标准提供了SNMP引擎及其组件的抽象服务接口。PySNMP的实现在很大程度上采用了这种抽象API,可以直接使用。另外,在这个级别上编程PySNMP时,可以将SNMP RFC引用到API语义。用户可以使用此API实现自己的SNMP应用程序。
  • SNMPv3(RFC 3413)引入了核心“SNMP应用程序”的概念。PySNMP实现了所有这些,因此用户可以将其应用程序建立在一个(或多个)SNMP核心应用程序之上。
  • 最后,为了简化SNMP(至少对于常用任务而言),PySNMP附带了一个高级API,用于核心SNMP应用程序和一些SNMP引擎服务。这个API的名称是pysnmp.hlapi,尽量使用它吧!

从代码角度来看,PySNMP内部的另一值得关注的点是:PySNMP由一些大型的、自包含的组件和定义良好的接口组成。下图说明了PySNMP的功能结构:
图片描述

PySNMP 内部组件:

  • SNMP引擎是控制SNMP系统的其他组件的中心伞状对象。典型的用户应用程序有一个SNMP引擎类实例,可能由各种SNMP应用程序共享。由于其他内部组件倾向于在运行时构建各种配置和管理信息,因此将SNMP引擎对象配置为可用状态的代价似乎很高。
  • 传输子系统用于向网络发送SNMP消息并从网络接收它们。I/O子系统由一个抽象调度器和一个或多个抽象传输类组成。以BSD套接字为例可知,具体的调度程序实现是特定于I/O方法的。具体的传输类是特定于传输域的。SNMP通常使用UDP传输,但也可以使用其他传输。传输调度程序接口主要用于消息和PDU调度程序。但是,当使用SNMPv1/v2c-native API(最低级别的API)时,将直接调用这些接口。
  • Message和PDU调度器时SNMP消息处理活动的中心。它的主要职责包括将来自SNMP应用程序的PDU通过各个子系统一直发送到传输Dispatcher,并将来自网络的SNMP消息传递到SNMP应用程序中。它于管理仪表控制器保持逻辑连接,管理仪表控制器对被管理对象执行操作,在这里用于LCD访问。
  • 消息处理模块处理当前和将来版本的SNMP协议的消息级协议操作。最重要的是,这些包括消息解析/构建 以及在需要时调用安全服务。
  • 消息安全模块执行消息身份验证和加密。在撰写文本时,PySNMP中 实现了基于用户(for v3)和社区或共同体(for v1/v2c)的模块。所有安全模块共享消息处理子系统使用的标准API。
  • 访问控制子系统使用LCD信息来授权对被管理对象的远程访问。这是在以agent role代理角色运行时使用的。
  • SNMP引擎用于保存其配置和操作统计信息的MIB模块和对象的集合。它们统称为本地配置数据存储Local Configuration Datastore(LCD)。

在大多数情况下,用户只需要处理所有这些PySNMP组件的高级API。然鹅,实现SNMP agent、proxies 以及管理器的一些重要特性需要使用标准应用程序API。在这些情况下,对SNMP操作和SNMP引擎组件的一般理解将很有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值