天天看點

snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點

最近在完善物聯網邊緣裝置的總線彙聚層的工作,我把其中常用的幾類協定開發的技術做一個總結,會陸續的寫幾篇系列文章。:)

SNMP在IT營運、網絡裝置管理、通信網元管理、物聯網上應用廣泛。以下章節将分析Linux/pSos等嵌入式環境下SNMP Agent流程特點及使用嵌入式設計SNMP Agent的技術細節(其中涉及到資訊模型設計、C/C++語言等内容請各位看官提前學習哈)。本章也可以作為嵌入式下SNMP Agent的軟體開發開發指導書。

(一)SNMP協定體系及技術要點

(二)SNMP Agent的設計

(三)SNMP Agent的實作

snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點

前言

SNMP Agent的開發,為了便于大家從基本原理上了解SNMP開發要素,我們從SNMP體系、MIB的組織以及MIB生成等基本技術點來講解。當然你也可以直接使用現成的商用控件庫和工具鍊來簡化你的設計和實作。

1 SNMP協定體系及技術要點

1.1 SNMP管理模型:

SNMP定義的管理模型是C/S結構,client (稱為 network manager)與遠端網絡裝置上執行的server(稱為SNMP agent)建立虛連接配接,擷取裝置狀态。裝置狀态資料庫由SNMP agent控制,被稱為SNMP Management Information Base (MIB),它是一些統計和控制變量的标準集。

Network manager向SNMP agent發起管理請求,請求包含SNMP變量(稱為MIB對象ID或MIB變量)及操作動作(取MIB變量值或為MIB變量設定一個新值)。

1.1.1 SNMP協定棧中的位置和它的協定架構圖:

snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點
snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點

1.1.2 SNMP的管理模型:

snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點
snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點

1.2 了解ASN.1和BER:

正式的SNMP規範中都使用ASN.1(Abstract Syntax Notion 1)的文法進行描述,使用BER(Basic Encode Rule)進行編碼。ASN.1的較長的描述在RFC1902。

1.2.1 ASN.1抽象記法描述語言

ASN.1用于描述抽象記法的語言,它可以用于任何協定層,在這種記法的基礎上通過一定的編碼規則,就可以确定資料的8比特組值。

ASN.1記法可以分為以下三主要标記方法:

· Branch Object Identifiers

描述MIB對象的包含關系,用OBJECT IDENTIFIER定義,搭建MIB的樹型結構。

Example:

myBranch OBJECT IDENTIFIER ::= { parentBranch 100 }

根據ASN.1檔案可回溯parentBranch,直到根internet。parentBranch下可定義多個分支對象,對應唯一的名稱和辨別數。

· Scalar Object Definitions

snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點

· Table Type Definitions

snmp 擷取裝置類型_SNMP開發系列(一)SNMP協定體系及技術要點前言1 SNMP協定體系及技術要點

1.2.2 BER編碼規則

ASN.1的描述可以通過各種方法轉換為比特流,SNMP中使用BER進行編碼。

BER的基本規則就是:用“類型”、“長度”、“值”來标記一個流化對象。

例如:一個簡單整數,在BER中需要用3個位元組進行描述:第一個描述類型,第二個描述長度,第三個描述值。

1.3 SNMP SMI(Struct of Management Imformation)

SMI是MIB中的對象定義和編碼(以便通過協定來傳輸)的基礎,常被比作資料庫中的模式。它描述如何用ASN.1的子集定義MIB。例如MIB中的資源如何命名和表示,包括一個MIB對象的資料類型,索引方式,通路權限,預設值,MIB涵義,宏定義,以及該MIB在MIB樹中的位置(父子節點關系等)。SNMPv2-SMI由三部分組成(RFC1902):

  • 子產品定義
  • 對象定義
  • Trap定義

子產品定義--辨別宏文法:

MODULE-IDENTITY MACRO ::=BEGIN TYPE NOTATION ::= "LAST-UPDATED" value(Update UTCTime) "ORGANIZATION" Text "CONTACT-INFO" Text "DESCRIPTION" Text RevisionPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER)  RevisionPart ::= Revisions | empty Revisions ::= Revision | Revisions Revision Revision ::= "REVISION" value(Update UTCTime) "DESCRIPTION" Text  -- uses the NVT ASCII character set Text ::= """" string """"END           

子產品定義—example:

ASB-MIB DEFINITIONS ::= BEGINIMPORTS MODULE-IDENTITY, enterprises FROM SNMPv2-SMI;asbRoot MODULE-IDENTITY LAST-UPDATED "9406072245Z" --"20020322" ORGANIZATION  "ASB, Inc." CONTACT-INFO  "ASB in ChenDu. Created by Yangyutong  email: [email protected] phone: 028-11111111"DESCRIPTION  "This MIB is the root MIB for ASB, Inc. enterprise."::= { enterprises 5555 } asbTndTeam OBJECT IDENTIFIER ::= { asbRoot 1 }asbExtend OBJECT IDENTIFIER ::= { asbRoot 2 } END           

對象定義--辨別宏文法:

OBJECT-IDENTITY MACRO ::=BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty  Text ::= """" string """"END           

對象定義--OBJECT-IDENTITY example:

dwdmProduction OBJECT IDENTIFIER ::= { asbTndTeam 1 }-- ochPort OBJECT IDENTIFIER ::= { dwdmProduction 1 }-- omsPort OBJECT IDENTIFIER ::= { dwdmProduction 2 }--           

對象定義--類型文法:

OBJECT-TYPE MACRO ::=BEGIN TYPE NOTATION ::= "SYNTAX" Syntax UnitsPart "MAX-ACCESS" Access "STATUS" Status "DESCRIPTION" Text ReferPart IndexPart DefValPart  VALUE NOTATION ::= value(VALUE ObjectName)  Syntax ::= type(ObjectSyntax) | "BITS" "{" Kibbles "}" Kibbles ::= Kibble | Kibbles            

繼續閱讀