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。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章