SNMPv3原理-SNMPv3协议框架

1、SNMPv3的体系结构

SNMPv3定义了新的体系结构,并在其中包含了对SNMPv1和SNMPv2c的兼容,即这个新的体系结构也适用于SNMPv1及SNMPv2c,弥补了SNMP没有完整体系结构的缺点。

在SNMPv3中,管理进程与代理统称为SNMP实体(entity)。SNMP实体由SNMP协议引擎(engine)和应用程序(application)组成。SNMP实体包含一系列模块,模块之间相互作用来提供服务。

1、SNMP协议引擎

SNMP协议引擎负责执行SNMP协议操作,为各类SNMP应用程序提供服务。每个SNMP协议引擎由一个SNMP协议引擎ID来标识。在整体上执行两种功能:

1)从SNMP应用中接收流出的PDU执行必要的处理,包括插入鉴别代码和加密,然后把PDU封装到用于传输的消息中去。

2)从传输层接收流进的PDU,执行必要的处理,包括鉴别和解密,然后从消息取出PDU,并把PDU传送到适当的SNMP应用中去。

2、SNMP协议引擎包括如下模块

(1)调度器

调度器是同应用程序及消息处理模型进行交互,负责SNMP消息的分发、传输和接收。每个SNMPv3协议引擎含有一个调度器,它可以对多种版本的SNMP消息提供支持。其主要功能如下:

---- 接收和发送SNMP消息;

---- 根据消息的版本号,将其交给相应的消息处理模型处理;

---- 从消息中得到SNMP PDU,传给应用程序;

---- 从应用程序接收需发送的SNMP PDU。

(2)消息处理子系统

消息处理子系统由一个或多个消息处理模型组成,主要负责完成以下功能:

---- 准备要发送的消息;

---- 从接收到的消息中提取数据。

消息处理子系统包括SNMPv1、SNMPv2c、SNMPv3等消息处理模型,分别处理不同版本的消息。消息处理模型定义了特定版本的SNMP消息的格式,以及如何对该版本的SNMP消息进行解析、从中提取数据和如何构造该版本的SNMP消息。

(3)安全子系统

安全子系统提供SNMP消息的认证和加密服务。它可以包含多个安全模型,标准协议使用的安全模型为RFC3414定义的基于用户的安全模型(USM)。用户也可以定义自己的安全模型。

安全模型要指出它所防范的安全威胁、服务的目标和为提供安全服务所采用的安全协议。安全协议的内容包括一系列安全机制和为实现安全服务所定义的MIB对象等。

(4)访问控制子系统

访问控制子系统通过一个或多个访问控制模型提供确认对被管理对象的访问是否合法的服务。SNMPv3默认的访问控制模型为RFC3415所描述的基于视图的访问控制模型(VACM)。

访问控制模型还可以定义访问控制处理过程中使用的MIB模块,以实现对访问控制策略的远程配置。

3、应用程序

SNMP应用程序利用SNMP协议引擎提供的服务完成特定的网络管理任务。不同SNMP实体的应用程序相互间通过SNMP消息进行通信。应用程序主要包括以下几类:

(1)命令产生器:产生SNMP请求消息,并处理对这些请求的响应。

(2)命令响应器:提供对SNMP请求消息的应答。

(3)通知产生器:产生和发送异步的通知消息。

(4)通知接收器:接收并处理异步的通知消息。当通知消息需要确认时,通知接收器应用程序还需生成相应的应答消息。

(5)委托转发器:用于在网管实体之间转发网管消息。

2、SNMPv3协议操作

SNMPv3协议

SNMP目前有v1、v2c、v3三个版本

报头由下列部分组成:

---- msgVersion:表示消息的版本号,在SNMPv3中它的值是3

---- msgID:消息标识符,用来标识PDU。取值范围是0~2^31-1

---- msgMaxSize:表示消息发送器支持的最大消息尺寸,取值范围是484~2^31-1

---- msgFlags:包含若干标志的8位位组字符串,有3个特征位:reportableFlag、privFlag、authFlag。

如果reportable = 1,那么在能够导致Report PDU生成的情况下,消息接收方必须向发送方发送Report PDU;

当reportable = 0时,消息接收方则不必发送ReportPDU;

只有在消息的PDU部分不能被解码时(例如由于密钥错误而解密失败)才会用到。

后两个标志priFlag和authFlag被发送发用来指示消息的安全级别:

如果privFlag = 1,则应用了加密,

如果authFlag = 1, 则应用了鉴别。

除了privFlag = 1,authFlag = 0的情况外,其它任意组合都是可以接受的,也就是说没有鉴别的加密是无意义的。

---- msgSecurityModel:消息安全模型,用于标识发送方用于生成该消息的安全模型,发送方和接收方必须采用相同的安全模型。

---- msgSecurityParamters:安全参数,由发送方的安全子系统生成的安全参数,例如用户名、消息鉴别码(MAC)、加密参数等,用于保护消息传输的安全,并由接收方安全子系统来对消息进行解密和鉴别等安全处理。

---- contextEngineID:唯一识别SNMP实体的标识符。对于流入消息,该字段用于确定将PDU递交给哪个应用进行处理;对于流出消息,该值由上层应用提供,并代表那个应用程序。

---- contextName:携带的管理对象所在的上下文的名称。

---- PDU:带有对象绑定列表的PDU。

其中最后三个字段(contextEngineID、contextName 和 PDU)合起来称为scoped PDU。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页